Commit 7ce70f8a authored by rbpotter's avatar rbpotter Committed by Commit Bot

OS Settings: Set up optimized build for Polymer 3

Reland of
https://chromium-review.googlesource.com/c/chromium/src/+/2233827

Instead of relying on the v2 unpak folder structure to work around
the paths for generated files being mapped incorrectly, create an
independent v3 unpak folder and add an argument to unpack_pak.py that
allows generated paths to be rebased without assuming the root path
is the location of the pak file.

Bug: 1045266
Change-Id: I0b6c72ff91682b2ca8e74d6e6c7eba5aa950241c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2242654Reviewed-by: default avatardpapad <dpapad@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#779007}
parent 250eb019
...@@ -289,7 +289,10 @@ if (is_chromeos) { ...@@ -289,7 +289,10 @@ if (is_chromeos) {
enable_input_discovery_for_gn_analyze = false enable_input_discovery_for_gn_analyze = false
source = "settings/os_settings_resources_vulcanized.grd" source = "settings/os_settings_resources_vulcanized.grd"
deps += [ "//chrome/browser/resources/settings/chromeos:build" ] deps += [
"//chrome/browser/resources/settings/chromeos:build",
"//chrome/browser/resources/settings/chromeos:build_polymer3",
]
} else { } else {
source = "settings/os_settings_resources.grd" source = "settings/os_settings_resources.grd"
deps += [ deps += [
......
...@@ -103,5 +103,12 @@ template("unpak") { ...@@ -103,5 +103,12 @@ template("unpak") {
"--pak_file", "--pak_file",
rebase_path("$target_gen_dir/${invoker.pak_file}", root_build_dir), rebase_path("$target_gen_dir/${invoker.pak_file}", root_build_dir),
] ]
if (defined(invoker.pak_base_dir)) {
args += [
"--pak_base_dir",
rebase_path("$target_gen_dir/${invoker.pak_base_dir}", root_build_dir),
]
}
} }
} }
...@@ -210,9 +210,10 @@ def _bundle_v3(tmp_out_dir, in_path, out_path, manifest_out_path, args, ...@@ -210,9 +210,10 @@ def _bundle_v3(tmp_out_dir, in_path, out_path, manifest_out_path, args,
# arbitrary names? # arbitrary names?
bundled_paths = [] bundled_paths = []
for index, js_file in enumerate(args.js_module_in_files): for index, js_file in enumerate(args.js_module_in_files):
expected_name = '%s.rollup.js' % js_file[:-len('.js')] base_file_name = os.path.basename(js_file)
expected_name = '%s.rollup.js' % base_file_name[:-len('.js')]
assert args.js_out_files[index] == expected_name, \ assert args.js_out_files[index] == expected_name, \
'Output file corresponding to %s should be named %s.rollup.js' % \ 'Output file corresponding to %s should be named %s' % \
(js_file, expected_name) (js_file, expected_name)
bundled_paths.append(os.path.join(tmp_out_dir, expected_name)) bundled_paths.append(os.path.join(tmp_out_dir, expected_name))
......
...@@ -14,6 +14,10 @@ if (optimize_webui) { ...@@ -14,6 +14,10 @@ if (optimize_webui) {
settings_pak_file = "os_settings_resources.pak" settings_pak_file = "os_settings_resources.pak"
unpak_folder = "os_settings_resources.unpak" unpak_folder = "os_settings_resources.unpak"
# Put v3 unpacked files in a separate folder, to avoid a possible race
# between v2 and v3 build targets writing files to the same location.
unpak_folder_v3 = "os_settings_resources_v3.unpak"
optimize_webui("build") { optimize_webui("build") {
host = "os-settings" host = "os-settings"
html_in_files = [ html_in_files = [
...@@ -53,6 +57,45 @@ if (optimize_webui) { ...@@ -53,6 +57,45 @@ if (optimize_webui) {
deps = [ ":unpak" ] deps = [ ":unpak" ]
} }
optimize_webui("build_polymer3") {
host = "os-settings"
input = rebase_path("$target_gen_dir/$unpak_folder_v3", root_build_dir)
js_out_files = [ "os_settings.rollup.js" ]
js_module_in_files = [ "chromeos/os_settings.js" ]
deps = [
":unpak_v3",
"../../../../../ui/webui/resources:modulize",
]
excludes = [
"chrome://resources/js/cr.m.js",
"chrome://resources/css/cros_colors.generated.css",
# TODO: Determine how to move the mojo files into the expected directories
# in the unpak folder, so that they can be included in the bundle.
"chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js",
"app-management/app_management.mojom-lite.js",
"app-management/bitmap.mojom-lite.js",
"app-management/file_path.mojom-lite.js",
"app-management/image_info.mojom-lite.js",
"app-management/image.mojom-lite.js",
"app-management/types.mojom-lite.js",
"constants/routes.mojom-lite.js",
"constants/setting.mojom-lite.js",
"search/search.mojom-lite.js",
"search/search_result_icon.mojom-lite.js",
"search/user_action_recorder.mojom-lite.js",
]
}
unpak("unpak_v3") {
pak_file = settings_pak_file
out_folder = unpak_folder_v3
pak_base_dir = "../"
deps = [ ":flattened_resources" ]
}
unpak("unpak") { unpak("unpak") {
pak_file = settings_pak_file pak_file = settings_pak_file
out_folder = unpak_folder out_folder = unpak_folder
......
...@@ -6,5 +6,5 @@ import './os_reset_page/os_powerwash_dialog.m.js'; ...@@ -6,5 +6,5 @@ import './os_reset_page/os_powerwash_dialog.m.js';
import './os_reset_page/os_reset_page.m.js'; import './os_reset_page/os_reset_page.m.js';
import './localized_link/localized_link.m.js'; import './localized_link/localized_link.m.js';
export {OsResetBrowserProxyImpl} from './os_reset_page/os_reset_browser_proxy.m.js'; export {LifetimeBrowserProxy, LifetimeBrowserProxyImpl} from '../lifetime_browser_proxy.m.js';
export {LifetimeBrowserProxy, LifetimeBrowserProxyImpl} from '../../lifetime_browser_proxy.m.js'; export {OsResetBrowserProxyImpl} from './os_reset_page/os_reset_browser_proxy.m.js';
\ No newline at end of file \ No newline at end of file
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
file="${root_gen_dir}/chrome/browser/resources/settings/lifetime_browser_proxy.m.js" file="${root_gen_dir}/chrome/browser/resources/settings/lifetime_browser_proxy.m.js"
use_base_dir="false" use_base_dir="false"
compress="false" compress="false"
preprocess="true"
type="BINDATA"/> type="BINDATA"/>
<include name="IDR_OS_SETTINGS_SETTINGS_SHARED_CSS_M_JS" <include name="IDR_OS_SETTINGS_SETTINGS_SHARED_CSS_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/settings_shared_css.m.js" file="${root_gen_dir}/chrome/browser/resources/settings/settings_shared_css.m.js"
......
...@@ -88,6 +88,17 @@ ...@@ -88,6 +88,17 @@
file="${root_gen_dir}\chrome\browser\ui\webui\settings\chromeos\search\user_action_recorder.mojom-lite.js" file="${root_gen_dir}\chrome\browser\ui\webui\settings\chromeos\search\user_action_recorder.mojom-lite.js"
use_base_dir="false" use_base_dir="false"
type="BINDATA" /> type="BINDATA" />
<!-- Polymer3 related files-->
<include name="IDR_OS_SETTINGS_SETTINGS_ROLLUP_JS"
file="${root_gen_dir}\chrome\browser\resources\settings\chromeos\os_settings.rollup.js"
use_base_dir="false"
preprocess="true"
type="BINDATA" />
<include name="IDR_OS_SETTINGS_OS_SETTINGS_V3_HTML"
file="chromeos/os_settings_v3.html"
compress="false"
type="BINDATA" />
</includes> </includes>
</release> </release>
</grit> </grit>
...@@ -35,7 +35,7 @@ def GetFileAndDirName(out_path, pak_dir, resource_path): ...@@ -35,7 +35,7 @@ def GetFileAndDirName(out_path, pak_dir, resource_path):
dirname = os.path.join(out_path, dirname) dirname = os.path.join(out_path, dirname)
return (filename, dirname) return (filename, dirname)
def Unpack(pak_path, out_path): def Unpack(pak_path, out_path, pak_base_dir):
pak_dir = os.path.dirname(pak_path) pak_dir = os.path.dirname(pak_path)
pak_id = os.path.splitext(os.path.basename(pak_path))[0] pak_id = os.path.splitext(os.path.basename(pak_path))[0]
...@@ -62,10 +62,11 @@ def Unpack(pak_path, out_path): ...@@ -62,10 +62,11 @@ def Unpack(pak_path, out_path):
resource_filenames[res.group(2)] = res.group(1) resource_filenames[res.group(2)] = res.group(1)
assert resource_filenames assert resource_filenames
root_dir = pak_base_dir if pak_base_dir else pak_dir
# Extract packed files, while preserving directory structure. # Extract packed files, while preserving directory structure.
for (resource_id, text) in data.resources.iteritems(): for (resource_id, text) in data.resources.iteritems():
(filename, dirname) = GetFileAndDirName( (filename, dirname) = GetFileAndDirName(
out_path, pak_dir, resource_filenames[resource_ids[resource_id]]) out_path, root_dir, resource_filenames[resource_ids[resource_id]])
if not os.path.exists(dirname): if not os.path.exists(dirname):
os.makedirs(dirname) os.makedirs(dirname)
with open(os.path.join(dirname, filename), 'w') as file: with open(os.path.join(dirname, filename), 'w') as file:
...@@ -75,10 +76,14 @@ def Unpack(pak_path, out_path): ...@@ -75,10 +76,14 @@ def Unpack(pak_path, out_path):
def main(): def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--pak_file') parser.add_argument('--pak_file')
# The expected reference point/root path for files appearing in the pak file.
# If this argument is not provided, the location of the pak file will be used
# by default.
parser.add_argument('--pak_base_dir')
parser.add_argument('--out_folder') parser.add_argument('--out_folder')
args = parser.parse_args() args = parser.parse_args()
Unpack(args.pak_file, args.out_folder) Unpack(args.pak_file, args.out_folder, args.pak_base_dir)
timestamp_file_path = os.path.join(args.out_folder, _TIMESTAMP_FILENAME) timestamp_file_path = os.path.join(args.out_folder, _TIMESTAMP_FILENAME)
with open(timestamp_file_path, 'a'): with open(timestamp_file_path, 'a'):
......
...@@ -68,6 +68,10 @@ OSSettingsUI::OSSettingsUI(content::WebUI* web_ui) ...@@ -68,6 +68,10 @@ OSSettingsUI::OSSettingsUI(content::WebUI* web_ui)
html_source->AddResourcePath("chromeos/lazy_load.html", html_source->AddResourcePath("chromeos/lazy_load.html",
IDR_OS_SETTINGS_LAZY_LOAD_VULCANIZED_HTML); IDR_OS_SETTINGS_LAZY_LOAD_VULCANIZED_HTML);
html_source->SetDefaultResource(IDR_OS_SETTINGS_VULCANIZED_HTML); html_source->SetDefaultResource(IDR_OS_SETTINGS_VULCANIZED_HTML);
html_source->AddResourcePath("chromeos/os_settings_v3.html",
IDR_OS_SETTINGS_OS_SETTINGS_V3_HTML);
html_source->AddResourcePath("chromeos/os_settings.js",
IDR_OS_SETTINGS_SETTINGS_ROLLUP_JS);
#else #else
webui::SetupWebUIDataSource( webui::SetupWebUIDataSource(
html_source, html_source,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment