[go: nahoru, domu]

Files app: Stop generating the HTML for JS modules

Change the main.html to be based on the JS modules.

Remove the unnecessary GRD entries and remove the main_script.js that
isn't in use anymore.

Bug: 1199015
Change-Id: I2b7867a518b1a50e1e306840f0dec5471b31749f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2928117
Auto-Submit: Luciano Pacheco <lucmult@chromium.org>
Reviewed-by: Jeremie Boulic <jboulic@chromium.org>
Commit-Queue: Luciano Pacheco <lucmult@chromium.org>
Cr-Commit-Position: refs/heads/master@{#887658}
diff --git a/ash/content/file_manager/resources/gen_main_html.py b/ash/content/file_manager/resources/gen_main_html.py
index 3f38b13..731a95a 100755
--- a/ash/content/file_manager/resources/gen_main_html.py
+++ b/ash/content/file_manager/resources/gen_main_html.py
@@ -36,7 +36,7 @@
       continue
     # Remove files app foreground/js <script> tags: SWA app must load
     # them after the SWA app has initialized needed resources.
-    elif line.find('<script src="foreground/js/') == -1:
+    elif line.find('src="foreground/js/main.') == -1:
       sys.stdout.write(line)
 
   # Create a BUILD time stamp for the target file.
diff --git a/chrome/browser/chromeos/file_manager/url_util.cc b/chrome/browser/chromeos/file_manager/url_util.cc
index 78a6938..d2e883c 100644
--- a/chrome/browser/chromeos/file_manager/url_util.cc
+++ b/chrome/browser/chromeos/file_manager/url_util.cc
@@ -65,7 +65,7 @@
 }  // namespace
 
 GURL GetFileManagerMainPageUrl() {
-  return GetFileManagerUrl("/main_modules.html");
+  return GetFileManagerUrl("/main.html");
 }
 
 GURL GetFileManagerMainPageUrlWithParams(
diff --git a/chrome/browser/chromeos/file_manager/url_util_unittest.cc b/chrome/browser/chromeos/file_manager/url_util_unittest.cc
index 70fa2a7..597031a 100644
--- a/chrome/browser/chromeos/file_manager/url_util_unittest.cc
+++ b/chrome/browser/chromeos/file_manager/url_util_unittest.cc
@@ -37,9 +37,8 @@
 }
 
 TEST(FileManagerUrlUtilTest, GetFileManagerMainPageUrl) {
-  EXPECT_EQ(
-      "chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj/main_modules.html",
-      GetFileManagerMainPageUrl().spec());
+  EXPECT_EQ("chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj/main.html",
+            GetFileManagerMainPageUrl().spec());
 }
 
 TEST(FileManagerUrlUtilTest, GetFileManagerMainPageUrlWithParams_NoFileTypes) {
@@ -54,7 +53,7 @@
   );
   EXPECT_EQ(extensions::kExtensionScheme, url.scheme());
   EXPECT_EQ("hhaomjibdihmijegdhdafkllkbggdgoj", url.host());
-  EXPECT_EQ("/main_modules.html", url.path());
+  EXPECT_EQ("/main.html", url.path());
   // Confirm that "%20" is used instead of "+" in the query.
   EXPECT_TRUE(url.query().find("+") == std::string::npos);
   EXPECT_TRUE(url.query().find("%20") != std::string::npos);
@@ -102,7 +101,7 @@
   );
   EXPECT_EQ(extensions::kExtensionScheme, url.scheme());
   EXPECT_EQ("hhaomjibdihmijegdhdafkllkbggdgoj", url.host());
-  EXPECT_EQ("/main_modules.html", url.path());
+  EXPECT_EQ("/main.html", url.path());
   // Confirm that "%20" is used instead of "+" in the query.
   EXPECT_TRUE(url.query().find("+") == std::string::npos);
   EXPECT_TRUE(url.query().find("%20") != std::string::npos);
diff --git a/ui/file_manager/BUILD.gn b/ui/file_manager/BUILD.gn
index b0d094f..8ca668c 100644
--- a/ui/file_manager/BUILD.gn
+++ b/ui/file_manager/BUILD.gn
@@ -370,7 +370,6 @@
 
   deps = [
     "//ui/file_manager/audio_player/elements:web_components",
-    "//ui/file_manager/file_manager:gen_main_html",
     "//ui/file_manager/file_manager/background/js:modulize",
     "//ui/file_manager/file_manager/common/js:modulize",
     "//ui/file_manager/file_manager/externs:modulize",
@@ -417,8 +416,6 @@
     # Fix broken images:
     "file_manager/images/files/ui/arrow_right.svg",
     "file_manager/images/files/ui/menu_ng.svg",
-
-    "file_manager/main_modules.html",
   ]
 
   resource_path_rewrites = [
diff --git a/ui/file_manager/base/gn/gen_main_html.py b/ui/file_manager/base/gn/gen_main_html.py
deleted file mode 100644
index 9c3e180..0000000
--- a/ui/file_manager/base/gn/gen_main_html.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2021 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-#
-# Lint as: python3
-
-"""Generate Files app main_modules.html based on the main.html"""
-
-from __future__ import print_function
-
-import fileinput
-import optparse
-import os
-import shutil
-import sys
-
-_MAIN = '  <script type="module" src="foreground/js/main.m.js"></script>\n'
-
-def GenerateHtml(source, target):
-  """Copy source file to target with edits, then add BUILD time stamp."""
-
-  # Copy source (main.html) file to the target (main.html) file.
-  shutil.copyfile(source, target)
-
-  # Edit the target file.
-  main_included = False
-  for line in fileinput.input(target, inplace=True):
-    # Ignore all <script> and <link rel="import">.
-    if '<script' in line or 'rel="import"' in line:
-      if main_included:
-        continue
-      else:
-        line = ''
-        sys.stdout.write(_MAIN)
-        main_included = True
-
-    sys.stdout.write(line)
-
-  # Create a BUILD time stamp for the target file.
-  open(target + '.stamp', 'a').close()
-
-def main(args):
-  parser = optparse.OptionParser()
-
-  parser.add_option('--source', help='Files app main.html source file.')
-  parser.add_option('--target', help='Target fianl main.html for output.')
-
-  options, _ = parser.parse_args(args)
-
-  if options.source and options.target:
-    GenerateHtml(options.source, options.target)
-    return
-
-  raise ValueError('Usage: all arguments are required.')
-
-if __name__ == '__main__':
-  sys.exit(main(sys.argv[1:]))
-
diff --git a/ui/file_manager/file_manager/BUILD.gn b/ui/file_manager/file_manager/BUILD.gn
index d2e3a59..1c9b8506 100644
--- a/ui/file_manager/file_manager/BUILD.gn
+++ b/ui/file_manager/file_manager/BUILD.gn
@@ -4,24 +4,6 @@
 
 import("//ui/webui/resources/tools/generate_grd.gni")
 
-action("gen_main_html") {
-  inputs = [ "main.html" ]
-
-  script = "//ui/file_manager/base/gn/gen_main_html.py"
-
-  args = [
-    "--source",
-    rebase_path("//ui/file_manager/file_manager/main.html", root_build_dir),
-    "--target",
-    rebase_path("$target_gen_dir/main_modules.html", root_build_dir),
-  ]
-
-  outputs = [
-    "$target_gen_dir/main_modules.html",
-    "$target_gen_dir/main_modules.html.stamp",
-  ]
-}
-
 # TODO: Remove this file copy when breadcrumb.js supports only JS modules.
 copy("fix_broken_images") {
   sources = [
@@ -42,6 +24,8 @@
   input_files_base_dir = rebase_path(".", "//")
 
   input_files = [
+    "main.html",
+
     # CSS:
     "foreground/css/combobutton.css",
     "foreground/css/common.css",
diff --git a/ui/file_manager/file_manager/background/js/launcher.js b/ui/file_manager/file_manager/background/js/launcher.js
index 9f41cc4..ab1c5ac 100644
--- a/ui/file_manager/file_manager/background/js/launcher.js
+++ b/ui/file_manager/file_manager/background/js/launcher.js
@@ -168,9 +168,8 @@
   nextFileManagerWindowID = Math.max(nextFileManagerWindowID, id + 1);
   const appId = FILES_ID_PREFIX + id;
 
-  const htmlFile = 'main_modules.html';
-  const appWindow =
-      new AppWindowWrapper(htmlFile, appId, FILE_MANAGER_WINDOW_CREATE_OPTIONS);
+  const appWindow = new AppWindowWrapper(
+      'main.html', appId, FILE_MANAGER_WINDOW_CREATE_OPTIONS);
 
   await appWindow.launch(opt_appState || {}, false);
   if (!appWindow.rawAppWindow) {
diff --git a/ui/file_manager/file_manager/foreground/js/main_scripts.js b/ui/file_manager/file_manager/foreground/js/main_scripts.js
deleted file mode 100644
index 6b81207..0000000
--- a/ui/file_manager/file_manager/foreground/js/main_scripts.js
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// The include directives are put into Javascript-style comments to prevent
-// parsing errors in non-flattened mode. The flattener still sees them.
-// Note that this makes the flattener to comment out the first line of the
-// included file but that's all right since any javascript file should start
-// with a copyright comment anyway.
-
-// If you add a new dependency, you should update build files by rerunning
-// gyp. Otherwise, you'll be bitten by a dependency issue like:
-//
-// 1) You add a new dependency to "whatever.js"
-// 2) You make changes in "whatever.js"
-// 3) Rebuild "resources.pak" and open the Files app
-// 4) You don't see the changes in "whatever.js". Why is that?
-//
-// Because the dependencies are computed at gyp time, the existing build
-// files don't know that "resources.pak" now has a dependency to
-// "whatever.js". You should rerun gyp to let the build files know.
-//
-// error_counter.js must be loaded before all other scripts of the Files app.
-// <include src="../../../file_manager/common/js/error_counter.js">
-//
-// metrics_base.js and metrics.js initiates load performance tracking
-// so we want to parse it as early as possible.
-// <include src="../../common/js/metrics_base.js">
-// <include src="../../common/js/metrics.js">
-// <include src="metrics_start.js">
-//
-// <include src="../../common/js/lru_cache.js">
-// <include src="../../../image_loader/load_image_request.js">
-// <include src="../../../image_loader/image_loader_client.js">
-//
-// <include src="../../../../webui/resources/js/assert.js">
-// <include src="../../../../webui/resources/js/action_link.js">
-// <include src="../../../../webui/resources/js/cr.js">
-// <include src="../../../../webui/resources/js/util.js">
-//
-// <include src="../../../../webui/resources/js/event_tracker.js">
-// <include src="../../../../webui/resources/js/cr/ui.js">
-// <include src="../../../../webui/resources/js/cr/event_target.js">
-// <include src="../../../../webui/resources/js/cr/ui/array_data_model.js">
-// <include src="../../../../webui/resources/js/cr/ui/dialogs.js">
-// <include src="../../../../webui/resources/js/cr/ui/list_item.js">
-// <include src="../../../../webui/resources/js/cr/ui/list_selection_model.js">
-// <include
-// src="../../../../webui/resources/js/cr/ui/list_single_selection_model.js">
-// <include
-// src="../../../../webui/resources/js/cr/ui/list_selection_controller.js">
-// <include src="../../../../webui/resources/js/cr/ui/list.js">
-// <include src="../../../../webui/resources/js/cr/ui/tree.js">
-// <include src="ui/autocomplete_list.js">
-
-// <include src="../../../../webui/resources/js/cr/ui/splitter.js">
-// <include src="ui/table/table_splitter.js">
-//
-// <include src="ui/table/table_column.js">
-// <include src="ui/table/table_column_model.js">
-// <include src="ui/table/table_header.js">
-// <include src="ui/table/table_list.js">
-// <include src="ui/table/table.js">
-//
-// <include src="../../../../webui/resources/js/cr/ui/grid.js">
-//
-// <include
-// src="../../../../webui/resources/js/cr/ui/keyboard_shortcut_list.js">
-// <include src="../../../../webui/resources/js/cr/ui/command.js">
-// <include src="../../../../webui/resources/js/cr/ui/position_util.js">
-// <include src="../../../../webui/resources/js/cr/ui/menu_item.js">
-// <include src="../../../../webui/resources/js/cr/ui/menu.js">
-// <include src="../../../../webui/resources/js/cr/ui/menu_button.js">
-// <include src="../../../../webui/resources/js/cr/ui/context_menu_handler.js">
-
-(() => {
-// 'strict mode' is invoked for this scope.
-'use strict';
-
-//
-// <include src="../../common/js/async_util.js">
-// <include src="../../common/js/file_type.js">
-// <include src="../../common/js/files_app_entry_types.js">
-// <include src="../../../file_manager/common/js/volume_manager_types.js">
-// <include src="../../../file_manager/common/js/app_util.js">
-// <include src="../../common/js/util.js">
-// <include src="../../common/js/power.js">
-// <include src="../../common/js/progress_center_common.js">
-// <include src="../../common/js/storage_adapter.js">
-// <include src="../../common/js/importer_common.js">
-// <include src="../../common/js/trash.js">
-// <include src="../../common/js/xfm.js">
-//
-// <include src="constants.js">
-// <include src="crossover_search_utils.js">
-// <include src="ui/multi_menu.js">
-// <include src="ui/multi_menu_button.js">
-// <include src="ui/combobutton.js">
-// <include src="ui/commandbutton.js">
-// <include src="ui/file_manager_dialog_base.js">
-// <include src="metadata/metadata_cache_set.js">
-// <include src="metadata/metadata_provider.js">
-// <include src="metadata/metadata_request.js">
-//
-// <include src="actions_controller.js">
-// <include src="actions_model.js">
-// <include src="android_app_list_model.js">
-// <include src="app_state_controller.js">
-// <include src="column_visibility_controller.js">
-// <include src="crostini_controller.js">
-// <include src="dialog_action_controller.js">
-// <include src="dialog_type.js">
-// <include src="directory_contents.js">
-// <include src="directory_model.js">
-// <include src="directory_tree_naming_controller.js">
-// <include src="drive_dialog_controller.js">
-// <include src="drop_effect_and_label.js">
-// <include src="empty_folder_controller.js">
-// <include src="file_manager.js">
-// <include src="file_manager_commands.js">
-// <include src="file_list_model.js">
-// <include src="file_selection.js">
-// <include src="file_tasks.js">
-// <include src="file_transfer_controller.js">
-// <include src="file_type_filters_controller.js">
-// <include src="file_watcher.js">
-// <include src="folder_shortcuts_data_model.js">
-// <include src="sort_menu_controller.js">
-// <include src="gear_menu_controller.js">
-// <include src="holding_space_util.js">
-// <include src="import_controller.js">
-// <include src="last_modified_controller.js">
-// <include src="launch_param.js">
-// <include src="metadata/content_metadata_provider.js">
-// <include src="metadata/external_metadata_provider.js">
-// <include src="metadata/file_system_metadata_provider.js">
-// <include src="metadata/metadata_cache_item.js">
-// <include src="metadata/metadata_item.js">
-// <include src="metadata/metadata_model.js">
-// <include src="metadata/multi_metadata_provider.js">
-// <include src="metadata/thumbnail_model.js">
-// <include src="metadata_box_controller.js">
-// <include src="metadata_update_controller.js">
-// <include src="naming_controller.js">
-// <include src="navigation_list_model.js">
-// <include src="navigation_uma.js">
-// <include src="path_component.js">
-// <include src="quick_view_controller.js">
-// <include src="quick_view_model.js">
-// <include src="quick_view_uma.js">
-// <include src="scan_controller.js">
-// <include src="search_controller.js">
-// <include src="selection_menu_controller.js">
-// <include src="spinner_controller.js">
-// <include src="task_controller.js">
-// <include src="task_history.js">
-// <include src="toolbar_controller.js">
-// <include src="thumbnail_loader.js">
-// <include src="list_thumbnail_loader.js">
-// <include src="providers_model.js">
-// <include src="ui/actions_submenu.js">
-// <include src="ui/banners.js">
-// <include src="ui/breadcrumb.js">
-// <include src="ui/default_task_dialog.js">
-// <include src="ui/dialog_footer.js">
-// <include src="ui/directory_tree.js">
-// <include src="ui/drag_selector.js">
-// <include src="ui/empty_folder.js">
-// <include src="ui/file_grid.js">
-// <include src="ui/file_manager_ui.js">
-// <include src="ui/file_metadata_formatter.js">
-// <include src="ui/file_list_selection_model.js">
-// <include src="ui/file_table.js">
-// <include src="ui/file_table_list.js">
-// <include src="ui/file_tap_handler.js">
-// <include src="ui/files_alert_dialog.js">
-// <include src="ui/files_confirm_dialog.js">
-// <include src="ui/files_menu.js">
-// <include src="ui/gear_menu.js">
-// <include src="ui/install_linux_package_dialog.js">
-// <include src="ui/import_crostini_image_dialog.js">
-// <include src="ui/list_container.js">
-// <include src="ui/location_line.js">
-// <include src="ui/progress_center_panel.js">
-// <include src="ui/providers_menu.js">
-// <include src="ui/search_box.js">
-// <include src="main_window_component.js">
-// <include src="../../../file_manager/common/js/filtered_volume_manager.js">
-// <include src="webui_command_extender.js">
-
-// // For accurate load performance tracking place main.js should be
-// // the last include to include.
-// <include src="main.js">
-
-// Global fileManager reference useful for poking at from the console.
-window.fileManager = fileManager;
-
-// Exports
-window.util = util;
-// TODO(crbug.com/1115792) remove this export.
-window.AsyncUtil = AsyncUtil;
-})();
diff --git a/ui/file_manager/file_manager/main.html b/ui/file_manager/file_manager/main.html
index 3fa8bc076..bfb9608f 100644
--- a/ui/file_manager/file_manager/main.html
+++ b/ui/file_manager/file_manager/main.html
@@ -9,9 +9,7 @@
     <title>$i18n{FILEMANAGER_APP_NAME}</title>
 
     <meta name="google" value="notranslate">
-    <script src="chrome://resources/polymer/v1_0/html-imports/html-imports.min.js"></script>
 
-    <link rel="import" href="chrome://resources/html/polymer.html">
     <link rel="stylesheet" href="chrome://resources/css/action_link.css">
     <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
     <link rel="stylesheet" href="chrome://resources/chromeos/colors/cros_colors.generated.css">
@@ -25,9 +23,7 @@
     <link rel="stylesheet" href="foreground/css/file_types.css">
     <link rel="stylesheet" href="foreground/css/common.css">
 
-    <script src="chrome://resources/js/load_time_data.js"></script>
-    <script src="foreground/js/elements_importer.js"></script>
-    <script src="foreground/js/main_scripts.js" defer></script>
+    <script type="module" src="foreground/js/main.m.js" defer></script>
   </head>
 
   <body aria-label="$i18n{FILEMANAGER_APP_NAME}" tabindex="-1" class="files-ng">
diff --git a/ui/file_manager/file_manager_resources.grd b/ui/file_manager/file_manager_resources.grd
index 9de47b1..0fd7213 100644
--- a/ui/file_manager/file_manager_resources.grd
+++ b/ui/file_manager/file_manager_resources.grd
@@ -13,10 +13,6 @@
     <includes>
       <include name="IDR_FILEMANAGER_MANIFEST" file="file_manager/manifest.json" type="BINDATA" />
       <!-- The Files app pages and scripts. -->
-      <include name="IDR_FILE_MANAGER_MAIN" file="file_manager/main.html" type="BINDATA" />
-      <include name="IDR_FILE_MANAGER_MAIN_JS" file="file_manager/foreground/js/main_scripts.js" flattenhtml="true" type="BINDATA" />
-      <include name="IDR_FILE_MANAGER_ELEMENTS_IMPORTER_JS" file="file_manager/foreground/js/elements_importer.js" type="BINDATA" />
-      <include name="IDR_FILE_MANAGER_BACKGROUND_JS" file="file_manager/background/js/background_scripts.js" flattenhtml="true" type="BINDATA" />
       <include name="IDR_FILE_MANAGER_BACKGROUND_HTML" file="file_manager/background.html" type="BINDATA" />
 
       <!-- Common Scripts. -->