diff --git a/ash/webui/BUILD.gn b/ash/webui/BUILD.gn index 995ff71ec7d15c..65f66cb3b9328f 100644 --- a/ash/webui/BUILD.gn +++ b/ash/webui/BUILD.gn @@ -50,6 +50,7 @@ group("closure_compile") { deps = [ "//ash/webui/diagnostics_ui:closure_compile", "//ash/webui/file_manager/resources:closure_compile", + "//ash/webui/file_manager/untrusted_resources:closure_compile", "//ash/webui/help_app_ui:closure_compile", "//ash/webui/media_app_ui:closure_compile", "//ash/webui/os_feedback_ui:closure_compile", diff --git a/ash/webui/file_manager/BUILD.gn b/ash/webui/file_manager/BUILD.gn index 8a774667b356ea..a062bf4203a423 100644 --- a/ash/webui/file_manager/BUILD.gn +++ b/ash/webui/file_manager/BUILD.gn @@ -19,7 +19,7 @@ static_library("file_manager_untrusted_ui") { "url_constants.h", ] deps = [ - "//ash/webui/file_manager/resources:file_manager_untrusted_resources", + "//ash/webui/file_manager/untrusted_resources:file_manager_untrusted_resources", "//base", "//content/public/browser", "//content/public/common", diff --git a/ash/webui/file_manager/resource_loader.cc b/ash/webui/file_manager/resource_loader.cc index 3633a3f3364563..d4693172877db1 100644 --- a/ash/webui/file_manager/resource_loader.cc +++ b/ash/webui/file_manager/resource_loader.cc @@ -16,7 +16,7 @@ void AddFilesAppResources(content::WebUIDataSource* source, std::string path(entries[i].path); // Only load resources for Files app. if (base::StartsWith(path, "file_manager/") && - path.find("sandboxed/") == std::string::npos) { + path.find("untrusted_resources/") == std::string::npos) { // Files app UI has all paths relative to //ui/file_manager/file_manager/ // so we remove the leading file_manager/ to match the existing paths. base::ReplaceFirstSubstringAfterOffset(&path, 0, "file_manager/", ""); diff --git a/ash/webui/file_manager/resource_loader_unittest.cc b/ash/webui/file_manager/resource_loader_unittest.cc index e1ae2895098448..99d709b44c12cc 100644 --- a/ash/webui/file_manager/resource_loader_unittest.cc +++ b/ash/webui/file_manager/resource_loader_unittest.cc @@ -32,8 +32,8 @@ TEST_F(ResourceLoaderTest, AddFilesAppResources) { const webui::ResourcePath kTestResources[] = { {"file_manager/images/icon192.png", 8}, {"file_manager_fakes.js", 9}, - {"file_manager/sandboxed_files_img_content.css", 10}, - {"file_manager/sandboxed/files_img_content.css", 11}, + {"file_manager/untrusted_resources_files_img_content.css", 10}, + {"file_manager/untrusted_resources/files_img_content.css", 11}, }; const size_t kTestResourcesSize = base::size(kTestResources); @@ -43,10 +43,10 @@ TEST_F(ResourceLoaderTest, AddFilesAppResources) { EXPECT_EQ(8, source()->PathToIdrOrDefault("images/icon192.png")); EXPECT_EQ(-1, source()->PathToIdrOrDefault("file_manager_fakes.js")); - EXPECT_EQ(10, - source()->PathToIdrOrDefault("sandboxed_files_img_content.css")); - EXPECT_EQ(-1, - source()->PathToIdrOrDefault("sandboxed/files_img_content.css")); + EXPECT_EQ(10, source()->PathToIdrOrDefault( + "untrusted_resources_files_img_content.css")); + EXPECT_EQ(-1, source()->PathToIdrOrDefault( + "untrusted_resources/files_img_content.css")); } } // namespace file_manager diff --git a/ash/webui/file_manager/resources/BUILD.gn b/ash/webui/file_manager/resources/BUILD.gn index bdbc37d5120778..8eac4953ea3b0a 100644 --- a/ash/webui/file_manager/resources/BUILD.gn +++ b/ash/webui/file_manager/resources/BUILD.gn @@ -203,53 +203,3 @@ grit("file_manager_swa_resources") { ] output_dir = target_gen_dir } - -generated_untrusted_grd = "$target_gen_dir/file_manager_untrusted_resources.grd" - -generate_grd("build_file_manager_untrusted_grd") { - grd_prefix = "file_manager_untrusted" - out_grd = generated_untrusted_grd - - input_files_base_dir = - rebase_path("//ui/file_manager/file_manager/foreground/elements/", "//") - input_files = [ - "files_quick_view.css", - "sandboxed/files_audio_content.css", - "sandboxed/files_audio_content.html", - "sandboxed/files_text_content.css", - "sandboxed/files_text_content.html", - "sandboxed/files_img_content.css", - "sandboxed/files_img_content.html", - "sandboxed/files_media_content.js", - "sandboxed/files_video_content.css", - "sandboxed/files_video_content.html", - ] - resource_path_rewrites = [ - "sandboxed/files_audio_content.css|files_audio_content.css", - "sandboxed/files_audio_content.html|files_audio_content.html", - "sandboxed/files_text_content.css|files_text_content.css", - "sandboxed/files_text_content.html|files_text_content.html", - "sandboxed/files_img_content.css|files_img_content.css", - "sandboxed/files_img_content.html|files_img_content.html", - "sandboxed/files_media_content.js|files_media_content.js", - "sandboxed/files_video_content.css|files_video_content.css", - "sandboxed/files_video_content.html|files_video_content.html", - ] -} - -# Resources used by chrome-untrusted://file-manager. -grit("file_manager_untrusted_resources") { - # These arguments are needed since the grd is generated at build time. - enable_input_discovery_for_gn_analyze = false - - source = generated_untrusted_grd - deps = [ ":build_file_manager_untrusted_grd" ] - - outputs = [ - "grit/file_manager_untrusted_resources.h", - "grit/file_manager_untrusted_resources_map.cc", - "grit/file_manager_untrusted_resources_map.h", - "file_manager_untrusted_resources.pak", - ] - output_dir = target_gen_dir -} diff --git a/ash/webui/file_manager/untrusted_resources/BUILD.gn b/ash/webui/file_manager/untrusted_resources/BUILD.gn new file mode 100644 index 00000000000000..bf571df6a33a01 --- /dev/null +++ b/ash/webui/file_manager/untrusted_resources/BUILD.gn @@ -0,0 +1,63 @@ +# 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. + +import("//third_party/closure_compiler/compile_js.gni") +import("//tools/grit/grit_rule.gni") +import("//ui/webui/resources/tools/generate_grd.gni") + +js_library("files_media_content") { + externs_list = [ "//ui/file_manager/file_manager/externs/quick_view.js" ] +} + +js_type_check("closure_compile") { + deps = [ ":files_media_content" ] +} + +generated_untrusted_grd = "$target_gen_dir/file_manager_untrusted_resources.grd" + +generate_grd("build_file_manager_untrusted_grd") { + grd_prefix = "file_manager_untrusted" + out_grd = generated_untrusted_grd + + input_files_base_dir = rebase_path(".", "//") + input_files = [ + "files_audio_content.css", + "files_audio_content.html", + "files_text_content.css", + "files_text_content.html", + "files_img_content.css", + "files_img_content.html", + "files_media_content.js", + "files_video_content.css", + "files_video_content.html", + ] + resource_path_rewrites = [ + "files_audio_content.css|untrusted_resources/files_audio_content.css", + "files_audio_content.html|untrusted_resources/files_audio_content.html", + "files_text_content.css|untrusted_resources/files_text_content.css", + "files_text_content.html|untrusted_resources/files_text_content.html", + "files_img_content.css|untrusted_resources/files_img_content.css", + "files_img_content.html|untrusted_resources/files_img_content.html", + "files_media_content.js|untrusted_resources/files_media_content.js", + "files_video_content.css|untrusted_resources/files_video_content.css", + "files_video_content.html|untrusted_resources/files_video_content.html", + ] +} + +# Resources used by chrome-untrusted://file-manager. +grit("file_manager_untrusted_resources") { + # These arguments are needed since the grd is generated at build time. + enable_input_discovery_for_gn_analyze = false + + source = generated_untrusted_grd + deps = [ ":build_file_manager_untrusted_grd" ] + + outputs = [ + "grit/file_manager_untrusted_resources.h", + "grit/file_manager_untrusted_resources_map.cc", + "grit/file_manager_untrusted_resources_map.h", + "file_manager_untrusted_resources.pak", + ] + output_dir = target_gen_dir +} diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_audio_content.css b/ash/webui/file_manager/untrusted_resources/files_audio_content.css similarity index 100% rename from ui/file_manager/file_manager/foreground/elements/sandboxed/files_audio_content.css rename to ash/webui/file_manager/untrusted_resources/files_audio_content.css diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_audio_content.html b/ash/webui/file_manager/untrusted_resources/files_audio_content.html similarity index 100% rename from ui/file_manager/file_manager/foreground/elements/sandboxed/files_audio_content.html rename to ash/webui/file_manager/untrusted_resources/files_audio_content.html diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_img_content.css b/ash/webui/file_manager/untrusted_resources/files_img_content.css similarity index 100% rename from ui/file_manager/file_manager/foreground/elements/sandboxed/files_img_content.css rename to ash/webui/file_manager/untrusted_resources/files_img_content.css diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_img_content.html b/ash/webui/file_manager/untrusted_resources/files_img_content.html similarity index 100% rename from ui/file_manager/file_manager/foreground/elements/sandboxed/files_img_content.html rename to ash/webui/file_manager/untrusted_resources/files_img_content.html diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_media_content.js b/ash/webui/file_manager/untrusted_resources/files_media_content.js similarity index 97% rename from ui/file_manager/file_manager/foreground/elements/sandboxed/files_media_content.js rename to ash/webui/file_manager/untrusted_resources/files_media_content.js index 45c95b2d964508..0e1179928d4ec4 100644 --- a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_media_content.js +++ b/ash/webui/file_manager/untrusted_resources/files_media_content.js @@ -121,4 +121,4 @@ window.onload = () => { }; // clang-format off -//# sourceURL=//ui/file_manager/file_manager/foreground/elements/sandboxed/files_media_content.js +//# sourceURL=//ash/webui/file_manager/untrusted_resources/files_media_content.js diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_text_content.css b/ash/webui/file_manager/untrusted_resources/files_text_content.css similarity index 100% rename from ui/file_manager/file_manager/foreground/elements/sandboxed/files_text_content.css rename to ash/webui/file_manager/untrusted_resources/files_text_content.css diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_text_content.html b/ash/webui/file_manager/untrusted_resources/files_text_content.html similarity index 100% rename from ui/file_manager/file_manager/foreground/elements/sandboxed/files_text_content.html rename to ash/webui/file_manager/untrusted_resources/files_text_content.html diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_video_content.css b/ash/webui/file_manager/untrusted_resources/files_video_content.css similarity index 100% rename from ui/file_manager/file_manager/foreground/elements/sandboxed/files_video_content.css rename to ash/webui/file_manager/untrusted_resources/files_video_content.css diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/files_video_content.html b/ash/webui/file_manager/untrusted_resources/files_video_content.html similarity index 100% rename from ui/file_manager/file_manager/foreground/elements/sandboxed/files_video_content.html rename to ash/webui/file_manager/untrusted_resources/files_video_content.html diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index f6617b1aea3f57..55076ffb1579ba 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn @@ -101,7 +101,7 @@ source_set("chromeos") { "//ash/webui/file_manager:file_manager_ui", "//ash/webui/file_manager:file_manager_untrusted_ui", "//ash/webui/file_manager/resources:file_manager_swa_resources_grit", - "//ash/webui/file_manager/resources:file_manager_untrusted_resources_grit", + "//ash/webui/file_manager/untrusted_resources:file_manager_untrusted_resources_grit", "//ash/webui/help_app_ui", "//ash/webui/media_app_ui", "//ash/webui/os_feedback_ui", diff --git a/chrome/browser/extensions/chrome_component_extension_resource_manager.cc b/chrome/browser/extensions/chrome_component_extension_resource_manager.cc index 3d017d7c0f86e3..b4dbd50d21d20c 100644 --- a/chrome/browser/extensions/chrome_component_extension_resource_manager.cc +++ b/chrome/browser/extensions/chrome_component_extension_resource_manager.cc @@ -26,6 +26,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) #include "ash/keyboard/ui/resources/keyboard_resource_util.h" +#include "ash/webui/file_manager/resources/grit/file_manager_untrusted_resources_map.h" #include "base/command_line.h" #include "chrome/browser/ash/file_manager/file_manager_string_util.h" #include "chrome/browser/browser_process.h" @@ -111,6 +112,19 @@ ChromeComponentExtensionResourceManager::Data::Data() { AddComponentResourceEntries(kFileManagerGenResources, kFileManagerGenResourcesSize); + // Add Files app resources to display untrusted content in frames. + // Files app extension's resource paths need to be prefixed by + // "file_manager/". + for (size_t i = 0; i < kFileManagerUntrustedResourcesSize; ++i) { + base::FilePath resource_path = + base::FilePath("file_manager") + .AppendASCII(kFileManagerUntrustedResources[i].path); + resource_path = resource_path.NormalizePathSeparators(); + + DCHECK(!base::Contains(path_to_resource_id_, resource_path)); + path_to_resource_id_[resource_path] = kFileManagerUntrustedResources[i].id; + } + // ResourceBundle and g_browser_process are not always initialized in unit // tests. if (ui::ResourceBundle::HasSharedInstance() && g_browser_process) { diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni index 317cb0e205f612..41dd58869a7b3a 100644 --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni @@ -207,7 +207,7 @@ template("chrome_extra_paks") { "$root_gen_dir/ash/ash_shortcut_customization_app_resources.pak", "$root_gen_dir/ash/public/cpp/resources/ash_public_unscaled_resources.pak", "$root_gen_dir/ash/webui/file_manager/resources/file_manager_swa_resources.pak", - "$root_gen_dir/ash/webui/file_manager/resources/file_manager_untrusted_resources.pak", + "$root_gen_dir/ash/webui/file_manager/untrusted_resources/file_manager_untrusted_resources.pak", "$root_gen_dir/chrome/audio_resources.pak", "$root_gen_dir/chrome/bluetooth_pairing_dialog_resources.pak", "$root_gen_dir/chrome/browser/supervised_user/supervised_user_unscaled_resources.pak", @@ -243,7 +243,7 @@ template("chrome_extra_paks") { deps += [ "//ash/public/cpp/resources:ash_public_unscaled_resources", "//ash/webui/file_manager/resources:file_manager_swa_resources", - "//ash/webui/file_manager/resources:file_manager_untrusted_resources", + "//ash/webui/file_manager/untrusted_resources:file_manager_untrusted_resources", "//ash/webui/resources:diagnostics_app_resources", "//ash/webui/resources:help_app_bundle_resources", "//ash/webui/resources:help_app_kids_magazine_bundle_resources", diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec index 26a258b812059e..f4da52e2226a61 100644 --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec @@ -428,7 +428,7 @@ "META": {"sizes": {"includes": [100]}}, "includes": [3000], }, - "<(SHARED_INTERMEDIATE_DIR)/ash/webui/file_manager/resources/file_manager_untrusted_resources.grd": { + "<(SHARED_INTERMEDIATE_DIR)/ash/webui/file_manager/untrusted_resources/file_manager_untrusted_resources.grd": { "META": {"sizes": {"includes": [10]}}, "includes": [3020], }, diff --git a/ui/file_manager/BUILD.gn b/ui/file_manager/BUILD.gn index 7926fb02e1337b..caae18ea4472fb 100644 --- a/ui/file_manager/BUILD.gn +++ b/ui/file_manager/BUILD.gn @@ -41,7 +41,6 @@ group("closure_compile") { "file_manager/background/js:closure_compile", "file_manager/common/js:closure_compile", "file_manager/foreground/elements:closure_compile", - "file_manager/foreground/elements/sandboxed:closure_compile", "file_manager/foreground/js:closure_compile", "file_manager/foreground/js/metadata:closure_compile", "file_manager/foreground/js/ui:closure_compile", diff --git a/ui/file_manager/file_manager/foreground/elements/files_quick_view.js b/ui/file_manager/file_manager/foreground/elements/files_quick_view.js index 0894f749faa235..47b21f658efdd3 100644 --- a/ui/file_manager/file_manager/foreground/elements/files_quick_view.js +++ b/ui/file_manager/file_manager/foreground/elements/files_quick_view.js @@ -109,7 +109,7 @@ export const FilesQuickView = Polymer({ const webview = /** @type {WebView} */ (e.target); webview.insertCSS({ - 'file': 'foreground/elements/sandboxed/files_text_content.css', + 'file': 'untrusted_resources/files_text_content.css', }); }, diff --git a/ui/file_manager/file_manager/foreground/elements/files_safe_media.js b/ui/file_manager/file_manager/foreground/elements/files_safe_media.js index 5e2a294e854703..14b153ccb7783f 100644 --- a/ui/file_manager/file_manager/foreground/elements/files_safe_media.js +++ b/ui/file_manager/file_manager/foreground/elements/files_safe_media.js @@ -38,16 +38,15 @@ const FilesSafeMedia = Polymer({ * @return {string} */ sourceFile_: function() { - const sandboxedRelativePath = 'foreground/elements/sandboxed/'; switch (this.type) { case 'image': - return sandboxedRelativePath + 'files_img_content.html'; + return 'untrusted_resources/files_img_content.html'; case 'audio': - return sandboxedRelativePath + 'files_audio_content.html'; + return 'untrusted_resources/files_audio_content.html'; case 'video': - return sandboxedRelativePath + 'files_video_content.html'; + return 'untrusted_resources/files_video_content.html'; case 'html': - return sandboxedRelativePath + 'files_text_content.html'; + return 'untrusted_resources/files_text_content.html'; default: console.error('Unsupported type: ' + this.type); return ''; diff --git a/ui/file_manager/file_manager/foreground/elements/sandboxed/BUILD.gn b/ui/file_manager/file_manager/foreground/elements/sandboxed/BUILD.gn deleted file mode 100644 index df91ca3e76afb1..00000000000000 --- a/ui/file_manager/file_manager/foreground/elements/sandboxed/BUILD.gn +++ /dev/null @@ -1,13 +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. - -import("//third_party/closure_compiler/compile_js.gni") - -js_library("files_media_content") { - externs_list = [ "//ui/file_manager/file_manager/externs/quick_view.js" ] -} - -js_type_check("closure_compile") { - deps = [ ":files_media_content" ] -} diff --git a/ui/file_manager/file_manager/manifest.json b/ui/file_manager/file_manager/manifest.json index 5a233b0179f1b4..8fa9ade3ec5d8e 100644 --- a/ui/file_manager/file_manager/manifest.json +++ b/ui/file_manager/file_manager/manifest.json @@ -48,11 +48,11 @@ "partitions": [{ "name": "trusted", "accessible_resources": [ - "foreground/elements/sandboxed/files_audio_content.*", - "foreground/elements/sandboxed/files_img_content.*", - "foreground/elements/sandboxed/files_media_content.js", - "foreground/elements/sandboxed/files_text_content.*", - "foreground/elements/sandboxed/files_video_content.*" + "untrusted_resources/files_audio_content.*", + "untrusted_resources/files_img_content.*", + "untrusted_resources/files_media_content.js", + "untrusted_resources/files_text_content.*", + "untrusted_resources/files_video_content.*" ] }] }, diff --git a/ui/file_manager/file_manager_resources.grd b/ui/file_manager/file_manager_resources.grd index d95868aea06209..f2a18d8abdfa70 100644 --- a/ui/file_manager/file_manager_resources.grd +++ b/ui/file_manager/file_manager_resources.grd @@ -16,15 +16,6 @@ - - - - - - - - -