summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-20 04:53:37 +0000
committermukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-20 04:53:37 +0000
commit326e6f0abee2401bc1676b600653a851283d8b06 (patch)
treebaf666c929ee22517f4c7750369ce4b2bd03f8ae
parent6cb17c0190e848b0af0e618520f5e9429ac0dca3 (diff)
downloadchromium_src-326e6f0abee2401bc1676b600653a851283d8b06.zip
chromium_src-326e6f0abee2401bc1676b600653a851283d8b06.tar.gz
chromium_src-326e6f0abee2401bc1676b600653a851283d8b06.tar.bz2
Moves extension_icon_image and image_loader to extensions/browser
Now extension_icon_image and image_loader are safe to be used outside of Chrome, like AppShell/Athena. BUG=159265, 380421 R=yoz@chromium.org, jamescook@chromium.org TBR=sky@chromium.org, fmalita@chromium.org TEST=unit_tests, compile succeeds Review URL: https://codereview.chromium.org/334053003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278601 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--apps/DEPS1
-rw-r--r--apps/app_window.h2
-rw-r--r--apps/shell/browser/shell_extensions_browser_client.cc5
-rw-r--r--apps/shell/browser/shell_extensions_browser_client.h2
-rw-r--r--chrome/browser/background/background_application_list_model.cc2
-rw-r--r--chrome/browser/background/background_contents_service.cc2
-rw-r--r--chrome/browser/chromeos/app_mode/kiosk_app_data.cc2
-rw-r--r--chrome/browser/extensions/api/execute_code_function.cc6
-rw-r--r--chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc2
-rw-r--r--chrome/browser/extensions/app_icon_loader_impl.h2
-rw-r--r--chrome/browser/extensions/bookmark_app_helper.cc2
-rw-r--r--chrome/browser/extensions/chrome_component_extension_resource_manager.cc101
-rw-r--r--chrome/browser/extensions/chrome_component_extension_resource_manager.h42
-rw-r--r--chrome/browser/extensions/chrome_extensions_browser_client.cc10
-rw-r--r--chrome/browser/extensions/chrome_extensions_browser_client.h7
-rw-r--r--chrome/browser/extensions/extension_action_icon_factory.h2
-rw-r--r--chrome/browser/extensions/extension_disabled_ui.cc2
-rw-r--r--chrome/browser/extensions/extension_icon_manager.cc2
-rw-r--r--chrome/browser/extensions/extension_install_prompt.cc2
-rw-r--r--chrome/browser/extensions/extension_storage_monitor.cc2
-rw-r--r--chrome/browser/extensions/extension_uninstall_dialog.cc2
-rw-r--r--chrome/browser/extensions/extension_web_ui.cc2
-rw-r--r--chrome/browser/extensions/tab_helper.cc2
-rw-r--r--chrome/browser/extensions/url_request_util.cc7
-rw-r--r--chrome/browser/extensions/user_script_master.cc7
-rw-r--r--chrome/browser/ui/app_list/extension_app_item.h2
-rw-r--r--chrome/browser/ui/app_list/search/app_result.h2
-rw-r--r--chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm2
-rw-r--r--chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.h2
-rw-r--r--chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.mm2
-rw-r--r--chrome/browser/ui/panels/panel.cc2
-rw-r--r--chrome/browser/ui/toolbar/origin_chip_info.cc2
-rw-r--r--chrome/browser/ui/toolbar/origin_chip_info.h2
-rw-r--r--chrome/browser/ui/views/apps/app_info_dialog/app_info_header_panel.cc2
-rw-r--r--chrome/browser/ui/views/infobars/extension_infobar.cc2
-rw-r--r--chrome/browser/ui/views/location_bar/origin_chip_view.cc2
-rw-r--r--chrome/browser/ui/webui/extensions/extension_icon_source.cc2
-rw-r--r--chrome/browser/web_applications/web_app.cc2
-rw-r--r--chrome/chrome_browser_extensions.gypi8
-rw-r--r--chrome/chrome_tests_unit.gypi4
-rw-r--r--extensions/browser/DEPS1
-rw-r--r--extensions/browser/component_extension_resource_manager.h32
-rw-r--r--extensions/browser/extension_icon_image.cc (renamed from chrome/browser/extensions/extension_icon_image.cc)6
-rw-r--r--extensions/browser/extension_icon_image.h (renamed from chrome/browser/extensions/extension_icon_image.h)8
-rw-r--r--extensions/browser/extension_icon_image_unittest.cc (renamed from chrome/browser/extensions/extension_icon_image_unittest.cc)27
-rw-r--r--extensions/browser/extensions_browser_client.h6
-rw-r--r--extensions/browser/image_loader.cc (renamed from chrome/browser/extensions/image_loader.cc)121
-rw-r--r--extensions/browser/image_loader.h (renamed from chrome/browser/extensions/image_loader.h)17
-rw-r--r--extensions/browser/image_loader_factory.cc (renamed from chrome/browser/extensions/image_loader_factory.cc)6
-rw-r--r--extensions/browser/image_loader_factory.h (renamed from chrome/browser/extensions/image_loader_factory.h)8
-rw-r--r--extensions/browser/image_loader_unittest.cc (renamed from chrome/browser/extensions/image_loader_unittest.cc)28
-rw-r--r--extensions/browser/test_extensions_browser_client.cc5
-rw-r--r--extensions/browser/test_extensions_browser_client.h2
-rw-r--r--extensions/extensions.gyp7
54 files changed, 331 insertions, 199 deletions
diff --git a/apps/DEPS b/apps/DEPS
index 94bb110..02d16c3 100644
--- a/apps/DEPS
+++ b/apps/DEPS
@@ -32,7 +32,6 @@ include_rules = [
"+chrome/browser/extensions/api/file_handlers/app_file_handler_util.h",
"+chrome/browser/extensions/api/file_system/file_system_api.h",
"+chrome/browser/extensions/chrome_extension_web_contents_observer.h",
- "+chrome/browser/extensions/extension_icon_image.h",
"+chrome/browser/extensions/suggest_permission_util.h",
"+chrome/browser/extensions/unpacked_installer.h",
"+chrome/common/extensions/api/app_window.h",
diff --git a/apps/app_window.h b/apps/app_window.h
index c8efcb5..f2e0e98 100644
--- a/apps/app_window.h
+++ b/apps/app_window.h
@@ -7,7 +7,6 @@
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
#include "chrome/browser/sessions/session_id.h"
#include "components/web_modal/web_contents_modal_dialog_manager_delegate.h"
#include "content/public/browser/notification_observer.h"
@@ -15,6 +14,7 @@
#include "content/public/browser/web_contents_delegate.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/common/console_message_level.h"
+#include "extensions/browser/extension_icon_image.h"
#include "ui/base/ui_base_types.h" // WindowShowState
#include "ui/gfx/image/image.h"
#include "ui/gfx/rect.h"
diff --git a/apps/shell/browser/shell_extensions_browser_client.cc b/apps/shell/browser/shell_extensions_browser_client.cc
index 6e8f3ef..76f4a83 100644
--- a/apps/shell/browser/shell_extensions_browser_client.cc
+++ b/apps/shell/browser/shell_extensions_browser_client.cc
@@ -237,4 +237,9 @@ ShellExtensionsBrowserClient::CreateRuntimeAPIDelegate(
return scoped_ptr<RuntimeAPIDelegate>(new apps::ShellRuntimeAPIDelegate());
}
+ComponentExtensionResourceManager*
+ShellExtensionsBrowserClient::GetComponentExtensionResourceManager() {
+ return NULL;
+}
+
} // namespace extensions
diff --git a/apps/shell/browser/shell_extensions_browser_client.h b/apps/shell/browser/shell_extensions_browser_client.h
index 67e937d..2013c6d 100644
--- a/apps/shell/browser/shell_extensions_browser_client.h
+++ b/apps/shell/browser/shell_extensions_browser_client.h
@@ -75,6 +75,8 @@ class ShellExtensionsBrowserClient : public ExtensionsBrowserClient {
ExtensionFunctionRegistry* registry) const OVERRIDE;
virtual scoped_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
content::BrowserContext* context) const OVERRIDE;
+ virtual ComponentExtensionResourceManager*
+ GetComponentExtensionResourceManager() OVERRIDE;
private:
// The single BrowserContext for app_shell. Not owned.
diff --git a/chrome/browser/background/background_application_list_model.cc b/chrome/browser/background/background_application_list_model.cc
index 1c65a31..712a2c1 100644
--- a/chrome/browser/background/background_application_list_model.cc
+++ b/chrome/browser/background/background_application_list_model.cc
@@ -18,7 +18,6 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/extension_constants.h"
#include "content/public/browser/notification_details.h"
@@ -26,6 +25,7 @@
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
#include "extensions/common/extension_resource.h"
diff --git a/chrome/browser/background/background_contents_service.cc b/chrome/browser/background/background_contents_service.cc
index a714014..687d87a 100644
--- a/chrome/browser/background/background_contents_service.cc
+++ b/chrome/browser/background/background_contents_service.cc
@@ -20,7 +20,6 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/notifications/desktop_notification_service.h"
#include "chrome/browser/notifications/notification.h"
#include "chrome/browser/notifications/notification_delegate.h"
@@ -39,6 +38,7 @@
#include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc
index a161e78..955a91d 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc
@@ -19,7 +19,6 @@
#include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/webstore_data_fetcher.h"
#include "chrome/browser/extensions/webstore_install_helper.h"
#include "chrome/browser/image_decoder.h"
@@ -27,6 +26,7 @@
#include "chrome/common/extensions/extension_constants.h"
#include "content/public/browser/browser_thread.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
diff --git a/chrome/browser/extensions/api/execute_code_function.cc b/chrome/browser/extensions/api/execute_code_function.cc
index ae38082..848b862 100644
--- a/chrome/browser/extensions/api/execute_code_function.cc
+++ b/chrome/browser/extensions/api/execute_code_function.cc
@@ -5,9 +5,10 @@
#include "chrome/browser/extensions/api/execute_code_function.h"
#include "chrome/browser/extensions/api/tabs/tabs_constants.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/script_executor.h"
#include "chrome/common/extensions/api/i18n/default_locale_handler.h"
+#include "extensions/browser/component_extension_resource_manager.h"
+#include "extensions/browser/extensions_browser_client.h"
#include "extensions/browser/file_reader.h"
#include "extensions/common/error_utils.h"
#include "extensions/common/extension_messages.h"
@@ -196,7 +197,8 @@ bool ExecuteCodeFunction::RunAsync() {
}
int resource_id;
- if (ImageLoader::IsComponentExtensionResource(
+ if (ExtensionsBrowserClient::Get()->GetComponentExtensionResourceManager()->
+ IsComponentExtensionResource(
resource_.extension_root(), resource_.relative_path(),
&resource_id)) {
const ResourceBundle& rb = ResourceBundle::GetSharedInstance();
diff --git a/chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc b/chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc
index 35bf48e..b6dfdbd 100644
--- a/chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc
+++ b/chrome/browser/extensions/api/screenlock_private/screenlock_private_api.cc
@@ -8,10 +8,10 @@
#include "base/lazy_instance.h"
#include "base/values.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/api/screenlock_private.h"
#include "extensions/browser/event_router.h"
+#include "extensions/browser/image_loader.h"
#include "ui/gfx/image/image.h"
namespace screenlock = extensions::api::screenlock_private;
diff --git a/chrome/browser/extensions/app_icon_loader_impl.h b/chrome/browser/extensions/app_icon_loader_impl.h
index d68962e..c0b68ae 100644
--- a/chrome/browser/extensions/app_icon_loader_impl.h
+++ b/chrome/browser/extensions/app_icon_loader_impl.h
@@ -9,7 +9,7 @@
#include <string>
#include "chrome/browser/extensions/app_icon_loader.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
+#include "extensions/browser/extension_icon_image.h"
class Profile;
diff --git a/chrome/browser/extensions/bookmark_app_helper.cc b/chrome/browser/extensions/bookmark_app_helper.cc
index bd5e2df..1403470 100644
--- a/chrome/browser/extensions/bookmark_app_helper.cc
+++ b/chrome/browser/extensions/bookmark_app_helper.cc
@@ -11,13 +11,13 @@
#include "chrome/browser/extensions/crx_installer.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/favicon_downloader.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/web_contents.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
diff --git a/chrome/browser/extensions/chrome_component_extension_resource_manager.cc b/chrome/browser/extensions/chrome_component_extension_resource_manager.cc
new file mode 100644
index 0000000..b531556
--- /dev/null
+++ b/chrome/browser/extensions/chrome_component_extension_resource_manager.cc
@@ -0,0 +1,101 @@
+// Copyright 2014 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.
+
+#include "chrome/browser/extensions/chrome_component_extension_resource_manager.h"
+
+#include "base/logging.h"
+#include "base/path_service.h"
+#include "chrome/common/chrome_paths.h"
+#include "grit/chrome_unscaled_resources.h"
+#include "grit/component_extension_resources_map.h"
+#include "grit/theme_resources.h"
+
+#if defined(OS_CHROMEOS)
+#include "ui/file_manager/file_manager_resource_util.h"
+#endif
+
+#if defined(USE_AURA)
+#include "ui/keyboard/keyboard_util.h"
+#endif
+
+namespace extensions {
+
+ChromeComponentExtensionResourceManager::
+ChromeComponentExtensionResourceManager() {
+ static const GritResourceMap kExtraComponentExtensionResources[] = {
+ {"web_store/webstore_icon_128.png", IDR_WEBSTORE_ICON},
+ {"web_store/webstore_icon_16.png", IDR_WEBSTORE_ICON_16},
+ {"chrome_app/product_logo_128.png", IDR_PRODUCT_LOGO_128},
+ {"chrome_app/product_logo_16.png", IDR_PRODUCT_LOGO_16},
+#if defined(ENABLE_SETTINGS_APP)
+ {"settings_app/settings_app_icon_128.png", IDR_SETTINGS_APP_ICON_128},
+ {"settings_app/settings_app_icon_16.png", IDR_SETTINGS_APP_ICON_16},
+ {"settings_app/settings_app_icon_32.png", IDR_SETTINGS_APP_ICON_32},
+ {"settings_app/settings_app_icon_48.png", IDR_SETTINGS_APP_ICON_48},
+#endif
+ };
+
+ AddComponentResourceEntries(
+ kComponentExtensionResources,
+ kComponentExtensionResourcesSize);
+ AddComponentResourceEntries(
+ kExtraComponentExtensionResources,
+ arraysize(kExtraComponentExtensionResources));
+#if defined(OS_CHROMEOS)
+ size_t file_manager_resource_size;
+ const GritResourceMap* file_manager_resources =
+ file_manager::GetFileManagerResources(&file_manager_resource_size);
+ AddComponentResourceEntries(
+ file_manager_resources,
+ file_manager_resource_size);
+
+ size_t keyboard_resource_size;
+ const GritResourceMap* keyboard_resources =
+ keyboard::GetKeyboardExtensionResources(&keyboard_resource_size);
+ AddComponentResourceEntries(
+ keyboard_resources,
+ keyboard_resource_size);
+#endif
+}
+
+ChromeComponentExtensionResourceManager::
+~ChromeComponentExtensionResourceManager() {}
+
+bool ChromeComponentExtensionResourceManager::IsComponentExtensionResource(
+ const base::FilePath& extension_path,
+ const base::FilePath& resource_path,
+ int* resource_id) {
+ base::FilePath directory_path = extension_path;
+ base::FilePath resources_dir;
+ base::FilePath relative_path;
+ if (!PathService::Get(chrome::DIR_RESOURCES, &resources_dir) ||
+ !resources_dir.AppendRelativePath(directory_path, &relative_path)) {
+ return false;
+ }
+ relative_path = relative_path.Append(resource_path);
+ relative_path = relative_path.NormalizePathSeparators();
+
+ std::map<base::FilePath, int>::const_iterator entry =
+ path_to_resource_id_.find(relative_path);
+ if (entry != path_to_resource_id_.end())
+ *resource_id = entry->second;
+
+ return entry != path_to_resource_id_.end();
+}
+
+void ChromeComponentExtensionResourceManager::AddComponentResourceEntries(
+ const GritResourceMap* entries,
+ size_t size) {
+ for (size_t i = 0; i < size; ++i) {
+ base::FilePath resource_path = base::FilePath().AppendASCII(
+ entries[i].name);
+ resource_path = resource_path.NormalizePathSeparators();
+
+ DCHECK(path_to_resource_id_.find(resource_path) ==
+ path_to_resource_id_.end());
+ path_to_resource_id_[resource_path] = entries[i].value;
+ }
+}
+
+} // namespace extensions
diff --git a/chrome/browser/extensions/chrome_component_extension_resource_manager.h b/chrome/browser/extensions/chrome_component_extension_resource_manager.h
new file mode 100644
index 0000000..6c6448f
--- /dev/null
+++ b/chrome/browser/extensions/chrome_component_extension_resource_manager.h
@@ -0,0 +1,42 @@
+// Copyright 2014 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.
+
+#ifndef CHROME_BROWSER_EXTENSIONS_CHROME_COMPONENT_EXTENSION_RESOURCE_MANAGER_H_
+#define CHROME_BROWSER_EXTENSIONS_CHROME_COMPONENT_EXTENSION_RESOURCE_MANAGER_H_
+
+#include <map>
+
+#include "base/basictypes.h"
+#include "base/files/file_path.h"
+#include "extensions/browser/component_extension_resource_manager.h"
+
+struct GritResourceMap;
+
+namespace extensions {
+
+class ChromeComponentExtensionResourceManager
+ : public ComponentExtensionResourceManager {
+ public:
+ ChromeComponentExtensionResourceManager();
+ virtual ~ChromeComponentExtensionResourceManager();
+
+ // Overridden from ComponentExtensionResourceManager:
+ virtual bool IsComponentExtensionResource(
+ const base::FilePath& extension_path,
+ const base::FilePath& resource_path,
+ int* resource_id) OVERRIDE;
+
+ private:
+ void AddComponentResourceEntries(const GritResourceMap* entries, size_t size);
+
+ // A map from a resource path to the resource ID. Used by
+ // IsComponentExtensionResource.
+ std::map<base::FilePath, int> path_to_resource_id_;
+
+ DISALLOW_COPY_AND_ASSIGN(ChromeComponentExtensionResourceManager);
+};
+
+} // namespace extensions
+
+#endif // CHROME_BROWSER_EXTENSIONS_CHROME_COMPONENT_EXTENSION_RESOURCE_MANAGER_H_
diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.cc b/chrome/browser/extensions/chrome_extensions_browser_client.cc
index ad73fb1..938ca29 100644
--- a/chrome/browser/extensions/chrome_extensions_browser_client.cc
+++ b/chrome/browser/extensions/chrome_extensions_browser_client.cc
@@ -6,6 +6,7 @@
#include "apps/common/api/generated_api.h"
#include "base/command_line.h"
+#include "base/path_service.h"
#include "base/version.h"
#include "chrome/browser/app_mode/app_mode_utils.h"
#include "chrome/browser/browser_process.h"
@@ -14,6 +15,7 @@
#include "chrome/browser/extensions/api/preference/preference_api.h"
#include "chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.h"
#include "chrome/browser/extensions/chrome_app_sorting.h"
+#include "chrome/browser/extensions/chrome_component_extension_resource_manager.h"
#include "chrome/browser/extensions/chrome_extension_host_delegate.h"
#include "chrome/browser/extensions/extension_system_factory.h"
#include "chrome/browser/extensions/extension_util.h"
@@ -22,6 +24,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/chrome_version_info.h"
#include "chrome/common/extensions/api/generated_api.h"
@@ -269,6 +272,13 @@ void ChromeExtensionsBrowserClient::RegisterExtensionFunctions(
#endif
}
+ComponentExtensionResourceManager*
+ChromeExtensionsBrowserClient::GetComponentExtensionResourceManager() {
+ if (!resource_manager_)
+ resource_manager_.reset(new ChromeComponentExtensionResourceManager());
+ return resource_manager_.get();
+}
+
scoped_ptr<extensions::RuntimeAPIDelegate>
ChromeExtensionsBrowserClient::CreateRuntimeAPIDelegate(
content::BrowserContext* context) const {
diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.h b/chrome/browser/extensions/chrome_extensions_browser_client.h
index 0c5d160..3c4a2c6 100644
--- a/chrome/browser/extensions/chrome_extensions_browser_client.h
+++ b/chrome/browser/extensions/chrome_extensions_browser_client.h
@@ -5,6 +5,8 @@
#ifndef CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSIONS_BROWSER_CLIENT_H_
#define CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSIONS_BROWSER_CLIENT_H_
+#include <map>
+
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/lazy_instance.h"
@@ -22,6 +24,7 @@ class BrowserContext;
namespace extensions {
+class ChromeComponentExtensionResourceManager;
class ChromeExtensionsAPIClient;
class ContentSettingsPrefsObserver;
@@ -89,6 +92,8 @@ class ChromeExtensionsBrowserClient : public ExtensionsBrowserClient {
ExtensionFunctionRegistry* registry) const OVERRIDE;
virtual scoped_ptr<extensions::RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
content::BrowserContext* context) const OVERRIDE;
+ virtual ComponentExtensionResourceManager*
+ GetComponentExtensionResourceManager() OVERRIDE;
private:
friend struct base::DefaultLazyInstanceTraits<ChromeExtensionsBrowserClient>;
@@ -101,6 +106,8 @@ class ChromeExtensionsBrowserClient : public ExtensionsBrowserClient {
scoped_ptr<ChromeExtensionsAPIClient> api_client_;
#endif
+ scoped_ptr<ChromeComponentExtensionResourceManager> resource_manager_;
+
DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsBrowserClient);
};
diff --git a/chrome/browser/extensions/extension_action_icon_factory.h b/chrome/browser/extensions/extension_action_icon_factory.h
index 3d6142a..bf3461e 100644
--- a/chrome/browser/extensions/extension_action_icon_factory.h
+++ b/chrome/browser/extensions/extension_action_icon_factory.h
@@ -6,7 +6,7 @@
#define CHROME_BROWSER_EXTENSIONS_EXTENSION_ACTION_ICON_FACTORY_H_
#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
+#include "extensions/browser/extension_icon_image.h"
class ExtensionAction;
class ExtensionIconSet;
diff --git a/chrome/browser/extensions/extension_disabled_ui.cc b/chrome/browser/extensions/extension_disabled_ui.cc
index ade5dfb..b2c8a51 100644
--- a/chrome/browser/extensions/extension_disabled_ui.cc
+++ b/chrome/browser/extensions/extension_disabled_ui.cc
@@ -21,7 +21,6 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_uninstall_dialog.h"
#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/global_error/global_error.h"
@@ -33,6 +32,7 @@
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_source.h"
#include "extensions/browser/extension_util.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
diff --git a/chrome/browser/extensions/extension_icon_manager.cc b/chrome/browser/extensions/extension_icon_manager.cc
index 82c48281..a1e62e2 100644
--- a/chrome/browser/extensions/extension_icon_manager.cc
+++ b/chrome/browser/extensions/extension_icon_manager.cc
@@ -7,7 +7,7 @@
#include "base/bind.h"
#include "base/logging.h"
#include "base/stl_util.h"
-#include "chrome/browser/extensions/image_loader.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index 87ecb02..074b046 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -16,7 +16,6 @@
#include "chrome/browser/extensions/bundle_installer.h"
#include "chrome/browser/extensions/extension_install_ui.h"
#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
@@ -25,6 +24,7 @@
#include "content/public/browser/web_contents.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_util.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
diff --git a/chrome/browser/extensions/extension_storage_monitor.cc b/chrome/browser/extensions/extension_storage_monitor.cc
index 88b5013..750caaa 100644
--- a/chrome/browser/extensions/extension_storage_monitor.cc
+++ b/chrome/browser/extensions/extension_storage_monitor.cc
@@ -13,7 +13,6 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_storage_monitor_factory.h"
#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
#include "content/public/browser/browser_context.h"
@@ -24,6 +23,7 @@
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "extensions/common/permissions/permissions_data.h"
diff --git a/chrome/browser/extensions/extension_uninstall_dialog.cc b/chrome/browser/extensions/extension_uninstall_dialog.cc
index 82c44a7..467a352 100644
--- a/chrome/browser/extensions/extension_uninstall_dialog.cc
+++ b/chrome/browser/extensions/extension_uninstall_dialog.cc
@@ -10,12 +10,12 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
#include "extensions/browser/extension_registry.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
diff --git a/chrome/browser/extensions/extension_web_ui.cc b/chrome/browser/extensions/extension_web_ui.cc
index 6e054bb..21b2b10 100644
--- a/chrome/browser/extensions/extension_web_ui.cc
+++ b/chrome/browser/extensions/extension_web_ui.cc
@@ -16,7 +16,6 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/favicon/favicon_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_switches.h"
@@ -30,6 +29,7 @@
#include "content/public/common/bindings_policy.h"
#include "content/public/common/page_transition_types.h"
#include "extensions/browser/extension_registry.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
#include "extensions/common/extension_resource.h"
diff --git a/chrome/browser/extensions/tab_helper.cc b/chrome/browser/extensions/tab_helper.cc
index bc51f17..e6ad1bc 100644
--- a/chrome/browser/extensions/tab_helper.cc
+++ b/chrome/browser/extensions/tab_helper.cc
@@ -20,7 +20,6 @@
#include "chrome/browser/extensions/extension_action_manager.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/location_bar_controller.h"
#include "chrome/browser/extensions/script_executor.h"
#include "chrome/browser/extensions/webstore_inline_installer.h"
@@ -56,6 +55,7 @@
#include "extensions/browser/extension_error.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
diff --git a/chrome/browser/extensions/url_request_util.cc b/chrome/browser/extensions/url_request_util.cc
index acf836b..24e0375 100644
--- a/chrome/browser/extensions/url_request_util.cc
+++ b/chrome/browser/extensions/url_request_util.cc
@@ -14,12 +14,13 @@
#include "base/strings/stringprintf.h"
#include "base/task_runner_util.h"
#include "chrome/browser/extensions/extension_renderer_state.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/extensions/manifest_url_handler.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/resource_request_info.h"
+#include "extensions/browser/component_extension_resource_manager.h"
#include "extensions/browser/extension_protocols.h"
+#include "extensions/browser/extensions_browser_client.h"
#include "extensions/browser/info_map.h"
#include "extensions/common/file_util.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
@@ -35,6 +36,7 @@
#include "ui/base/resource/resource_bundle.h"
using content::BrowserThread;
+using extensions::ExtensionsBrowserClient;
namespace {
@@ -224,7 +226,8 @@ net::URLRequestJob* MaybeCreateURLRequestResourceBundleJob(
base::FilePath request_path =
extensions::file_util::ExtensionURLToRelativeFilePath(request->url());
int resource_id = 0;
- if (extensions::ImageLoader::IsComponentExtensionResource(
+ if (ExtensionsBrowserClient::Get()->GetComponentExtensionResourceManager()->
+ IsComponentExtensionResource(
directory_path, request_path, &resource_id)) {
relative_path = relative_path.Append(request_path);
relative_path = relative_path.NormalizePathSeparators();
diff --git a/chrome/browser/extensions/user_script_master.cc b/chrome/browser/extensions/user_script_master.cc
index 565bdcb..c24dd6c 100644
--- a/chrome/browser/extensions/user_script_master.cc
+++ b/chrome/browser/extensions/user_script_master.cc
@@ -14,20 +14,22 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/api/i18n/default_locale_handler.h"
#include "chrome/common/extensions/manifest_handlers/content_scripts_handler.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/render_process_host.h"
+#include "extensions/browser/component_extension_resource_manager.h"
#include "extensions/browser/content_verifier.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/extensions_browser_client.h"
#include "extensions/common/file_util.h"
#include "extensions/common/message_bundle.h"
#include "ui/base/resource/resource_bundle.h"
using content::BrowserThread;
+using extensions::ExtensionsBrowserClient;
namespace extensions {
@@ -201,7 +203,8 @@ static bool LoadScriptContent(const std::string& extension_id,
ExtensionResource::SYMLINKS_MUST_RESOLVE_WITHIN_ROOT);
if (path.empty()) {
int resource_id;
- if (extensions::ImageLoader::IsComponentExtensionResource(
+ if (ExtensionsBrowserClient::Get()->GetComponentExtensionResourceManager()->
+ IsComponentExtensionResource(
script_file->extension_root(), script_file->relative_path(),
&resource_id)) {
const ResourceBundle& rb = ResourceBundle::GetSharedInstance();
diff --git a/chrome/browser/ui/app_list/extension_app_item.h b/chrome/browser/ui/app_list/extension_app_item.h
index f52e127..4ac0719 100644
--- a/chrome/browser/ui/app_list/extension_app_item.h
+++ b/chrome/browser/ui/app_list/extension_app_item.h
@@ -8,10 +8,10 @@
#include <string>
#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
#include "chrome/browser/ui/app_list/app_context_menu_delegate.h"
#include "chrome/browser/ui/app_list/app_list_syncable_service.h"
#include "chrome/browser/ui/extensions/extension_enable_flow_delegate.h"
+#include "extensions/browser/extension_icon_image.h"
#include "ui/app_list/app_list_item.h"
#include "ui/gfx/image/image_skia.h"
diff --git a/chrome/browser/ui/app_list/search/app_result.h b/chrome/browser/ui/app_list/search/app_result.h
index a5aaa21..7771433 100644
--- a/chrome/browser/ui/app_list/search/app_result.h
+++ b/chrome/browser/ui/app_list/search/app_result.h
@@ -8,10 +8,10 @@
#include <string>
#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
#include "chrome/browser/ui/app_list/app_context_menu_delegate.h"
#include "chrome/browser/ui/app_list/search/chrome_search_result.h"
#include "chrome/browser/ui/extensions/extension_enable_flow_delegate.h"
+#include "extensions/browser/extension_icon_image.h"
#include "extensions/browser/extension_registry_observer.h"
class AppListControllerDelegate;
diff --git a/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm b/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm
index 2c46ba3..7097ec8 100644
--- a/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm
+++ b/chrome/browser/ui/cocoa/infobars/extension_infobar_controller.mm
@@ -8,7 +8,6 @@
#include "chrome/browser/extensions/extension_infobar_delegate.h"
#include "chrome/browser/extensions/extension_view_host.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -17,6 +16,7 @@
#include "chrome/browser/ui/cocoa/infobars/infobar_cocoa.h"
#import "chrome/browser/ui/cocoa/menu_button.h"
#include "content/public/browser/web_contents.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
diff --git a/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.h b/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.h
index e3c70fd..8686c72 100644
--- a/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.h
+++ b/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.h
@@ -8,10 +8,10 @@
#import <Cocoa/Cocoa.h>
#include "base/mac/scoped_nsobject.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
#include "chrome/browser/safe_browsing/ui_manager.h"
#include "chrome/browser/ui/cocoa/location_bar/button_decoration.h"
#include "chrome/browser/ui/toolbar/origin_chip_info.h"
+#include "extensions/browser/extension_icon_image.h"
class LocationBarViewMac;
class LocationIconDecoration;
diff --git a/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.mm b/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.mm
index f04b5ed..521eb37 100644
--- a/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.mm
+++ b/chrome/browser/ui/cocoa/location_bar/origin_chip_decoration.mm
@@ -9,7 +9,6 @@
#include "base/strings/sys_string_conversions.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/search/search.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
#include "chrome/browser/safe_browsing/ui_manager.h"
#import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h"
@@ -19,6 +18,7 @@
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/toolbar/origin_chip_info.h"
#include "content/public/browser/user_metrics.h"
+#include "extensions/browser/extension_icon_image.h"
#include "grit/theme_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
diff --git a/chrome/browser/ui/panels/panel.cc b/chrome/browser/ui/panels/panel.cc
index 93ebd68..725cccf 100644
--- a/chrome/browser/ui/panels/panel.cc
+++ b/chrome/browser/ui/panels/panel.cc
@@ -15,7 +15,6 @@
#include "chrome/browser/extensions/api/tabs/windows_event_router.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/window_controller.h"
#include "chrome/browser/extensions/window_controller_list.h"
#include "chrome/browser/lifetime/application_lifetime.h"
@@ -35,6 +34,7 @@
#include "content/public/browser/user_metrics.h"
#include "content/public/browser/web_contents.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
diff --git a/chrome/browser/ui/toolbar/origin_chip_info.cc b/chrome/browser/ui/toolbar/origin_chip_info.cc
index 24b36f9..c2cf752 100644
--- a/chrome/browser/ui/toolbar/origin_chip_info.cc
+++ b/chrome/browser/ui/toolbar/origin_chip_info.cc
@@ -7,7 +7,6 @@
#include "base/prefs/pref_service.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/profiles/profile.h"
@@ -18,6 +17,7 @@
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/web_contents.h"
+#include "extensions/browser/extension_icon_image.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/constants.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
diff --git a/chrome/browser/ui/toolbar/origin_chip_info.h b/chrome/browser/ui/toolbar/origin_chip_info.h
index d50f48b..5ac5264 100644
--- a/chrome/browser/ui/toolbar/origin_chip_info.h
+++ b/chrome/browser/ui/toolbar/origin_chip_info.h
@@ -6,8 +6,8 @@
#define CHROME_BROWSER_UI_TOOLBAR_ORIGIN_CHIP_INFO_H_
#include "base/strings/string16.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
#include "chrome/browser/ui/toolbar/toolbar_model.h"
+#include "extensions/browser/extension_icon_image.h"
class GURL;
class Profile;
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_header_panel.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_header_panel.cc
index d586acc..a4dea10 100644
--- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_header_panel.cc
+++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_header_panel.cc
@@ -8,12 +8,12 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/manifest_url_handler.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
diff --git a/chrome/browser/ui/views/infobars/extension_infobar.cc b/chrome/browser/ui/views/infobars/extension_infobar.cc
index a7ff5ba..720d8b9 100644
--- a/chrome/browser/ui/views/infobars/extension_infobar.cc
+++ b/chrome/browser/ui/views/infobars/extension_infobar.cc
@@ -7,9 +7,9 @@
#include "chrome/browser/extensions/extension_context_menu_model.h"
#include "chrome/browser/extensions/extension_infobar_delegate.h"
#include "chrome/browser/extensions/extension_view_host.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/platform_util.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
diff --git a/chrome/browser/ui/views/location_bar/origin_chip_view.cc b/chrome/browser/ui/views/location_bar/origin_chip_view.cc
index aa1502d..5a7c267 100644
--- a/chrome/browser/ui/views/location_bar/origin_chip_view.cc
+++ b/chrome/browser/ui/views/location_bar/origin_chip_view.cc
@@ -9,7 +9,6 @@
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/extensions/extension_icon_image.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
@@ -28,6 +27,7 @@
#include "content/public/browser/user_metrics.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/url_constants.h"
+#include "extensions/browser/extension_icon_image.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/constants.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
diff --git a/chrome/browser/ui/webui/extensions/extension_icon_source.cc b/chrome/browser/ui/webui/extensions/extension_icon_source.cc
index c6ba0c6..a460a12 100644
--- a/chrome/browser/ui/webui/extensions/extension_icon_source.cc
+++ b/chrome/browser/ui/webui/extensions/extension_icon_source.cc
@@ -14,7 +14,6 @@
#include "base/strings/stringprintf.h"
#include "base/threading/thread.h"
#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/favicon/favicon_service_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/extension_constants.h"
@@ -22,6 +21,7 @@
#include "chrome/common/url_constants.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_system.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_resource.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
diff --git a/chrome/browser/web_applications/web_app.cc b/chrome/browser/web_applications/web_app.cc
index 67d3fbe..118492e 100644
--- a/chrome/browser/web_applications/web_app.cc
+++ b/chrome/browser/web_applications/web_app.cc
@@ -13,7 +13,6 @@
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread.h"
#include "chrome/browser/extensions/extension_ui_util.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/tab_helper.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
#include "chrome/browser/profiles/profile.h"
@@ -23,6 +22,7 @@
#include "chrome/common/pref_names.h"
#include "content/public/browser/browser_thread.h"
#include "extensions/browser/extension_registry.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_set.h"
diff --git a/chrome/chrome_browser_extensions.gypi b/chrome/chrome_browser_extensions.gypi
index 394366d..de47841 100644
--- a/chrome/chrome_browser_extensions.gypi
+++ b/chrome/chrome_browser_extensions.gypi
@@ -667,6 +667,8 @@
'browser/extensions/bundle_installer.h',
'browser/extensions/chrome_app_sorting.cc',
'browser/extensions/chrome_app_sorting.h',
+ 'browser/extensions/chrome_component_extension_resource_manager.cc',
+ 'browser/extensions/chrome_component_extension_resource_manager.h',
'browser/extensions/chrome_extension_function.cc',
'browser/extensions/chrome_extension_function.h',
'browser/extensions/chrome_extension_host_delegate.cc',
@@ -738,8 +740,6 @@
'browser/extensions/extension_garbage_collector_factory.h',
'browser/extensions/extension_gcm_app_handler.cc',
'browser/extensions/extension_gcm_app_handler.h',
- 'browser/extensions/extension_icon_image.cc',
- 'browser/extensions/extension_icon_image.h',
'browser/extensions/extension_icon_manager.cc',
'browser/extensions/extension_icon_manager.h',
'browser/extensions/extension_infobar_delegate.cc',
@@ -840,10 +840,6 @@
'browser/extensions/global_shortcut_listener_win.h',
'browser/extensions/global_shortcut_listener_x11.cc',
'browser/extensions/global_shortcut_listener_x11.h',
- 'browser/extensions/image_loader.cc',
- 'browser/extensions/image_loader.h',
- 'browser/extensions/image_loader_factory.cc',
- 'browser/extensions/image_loader_factory.h',
'browser/extensions/installed_loader.cc',
'browser/extensions/installed_loader.h',
'browser/extensions/install_observer.cc',
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 594c419..15dd4aa7 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -544,11 +544,13 @@
'../extensions/browser/event_router_unittest.cc',
'../extensions/browser/extension_error_test_util.cc',
'../extensions/browser/extension_error_test_util.h',
+ '../extensions/browser/extension_icon_image_unittest.cc',
'../extensions/browser/extension_pref_value_map_unittest.cc',
'../extensions/browser/extension_protocols_unittest.cc',
'../extensions/browser/extension_registry_unittest.cc',
'../extensions/browser/file_highlighter_unittest.cc',
'../extensions/browser/file_reader_unittest.cc',
+ '../extensions/browser/image_loader_unittest.cc',
'../extensions/browser/image_util_unittest.cc',
'../extensions/browser/info_map_unittest.cc',
'../extensions/browser/lazy_background_task_queue_unittest.cc',
@@ -963,7 +965,6 @@
'browser/extensions/extension_garbage_collector_unittest.cc',
'browser/extensions/extension_garbage_collector_chromeos_unittest.cc',
'browser/extensions/extension_gcm_app_handler_unittest.cc',
- 'browser/extensions/extension_icon_image_unittest.cc',
'browser/extensions/extension_icon_manager_unittest.cc',
'browser/extensions/extension_message_bubble_controller_unittest.cc',
'browser/extensions/extension_prefs_unittest.cc',
@@ -982,7 +983,6 @@
'browser/extensions/external_provider_impl_unittest.cc',
'browser/extensions/external_provider_impl_chromeos_unittest.cc',
'browser/extensions/favicon_downloader_unittest.cc',
- 'browser/extensions/image_loader_unittest.cc',
'browser/extensions/menu_manager_unittest.cc',
'browser/extensions/pack_extension_unittest.cc',
'browser/extensions/page_action_controller_unittest.cc',
diff --git a/extensions/browser/DEPS b/extensions/browser/DEPS
index 15dca56..9b4dd6f 100644
--- a/extensions/browser/DEPS
+++ b/extensions/browser/DEPS
@@ -4,6 +4,7 @@ include_rules = [
"+content/public/browser",
"+grit/extensions_strings.h",
"+net",
+ "+skia/ext/image_operations.h",
"+sync",
"+third_party/leveldatabase",
"+third_party/skia/include",
diff --git a/extensions/browser/component_extension_resource_manager.h b/extensions/browser/component_extension_resource_manager.h
new file mode 100644
index 0000000..1f82381
--- /dev/null
+++ b/extensions/browser/component_extension_resource_manager.h
@@ -0,0 +1,32 @@
+// Copyright 2014 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.
+
+#ifndef EXTENSIONS_BROWSER_COMPONENT_EXTENSION_RESOURCE_MANAGER_H_
+#define EXTENSIONS_BROWSER_COMPONENT_EXTENSION_RESOURCE_MANAGER_H_
+
+namespace base {
+class FilePath;
+}
+
+namespace extensions {
+
+// This class manages which extension resources actually come from
+// the resource bundle.
+class ComponentExtensionResourceManager {
+ public:
+ virtual ~ComponentExtensionResourceManager() {}
+
+ // Checks whether image is a component extension resource. Returns false
+ // if a given |resource| does not have a corresponding image in bundled
+ // resources. Otherwise fills |resource_id|. This doesn't check if the
+ // extension the resource is in is actually a component extension.
+ virtual bool IsComponentExtensionResource(
+ const base::FilePath& extension_path,
+ const base::FilePath& resource_path,
+ int* resource_id) = 0;
+};
+
+} // namespace extensions
+
+#endif // EXTENSIONS_BROWSER_COMPONENT_EXTENSION_RESOURCE_MANAGER_H_
diff --git a/chrome/browser/extensions/extension_icon_image.cc b/extensions/browser/extension_icon_image.cc
index 595a11f..99473b1 100644
--- a/chrome/browser/extensions/extension_icon_image.cc
+++ b/extensions/browser/extension_icon_image.cc
@@ -1,15 +1,15 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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.
-#include "chrome/browser/extensions/extension_icon_image.h"
+#include "extensions/browser/extension_icon_image.h"
#include <vector>
#include "base/bind.h"
#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "content/public/browser/notification_service.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/extension.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/image/canvas_image_source.h"
diff --git a/chrome/browser/extensions/extension_icon_image.h b/extensions/browser/extension_icon_image.h
index 5397895..3f76ed3 100644
--- a/chrome/browser/extensions/extension_icon_image.h
+++ b/extensions/browser/extension_icon_image.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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.
-#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_ICON_IMAGE_H_
-#define CHROME_BROWSER_EXTENSIONS_EXTENSION_ICON_IMAGE_H_
+#ifndef EXTENSIONS_BROWSER_EXTENSION_ICON_IMAGE_H_
+#define EXTENSIONS_BROWSER_EXTENSION_ICON_IMAGE_H_
#include <map>
#include <string>
@@ -113,4 +113,4 @@ class IconImage : public content::NotificationObserver {
} // namespace extensions
-#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_ICON_IMAGE_H_
+#endif // EXTENSIONS_BROWSER_EXTENSION_ICON_IMAGE_H_
diff --git a/chrome/browser/extensions/extension_icon_image_unittest.cc b/extensions/browser/extension_icon_image_unittest.cc
index 1e4cd56..d931043 100644
--- a/chrome/browser/extensions/extension_icon_image_unittest.cc
+++ b/extensions/browser/extension_icon_image_unittest.cc
@@ -1,21 +1,19 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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.
-#include "chrome/browser/extensions/extension_icon_image.h"
+#include "extensions/browser/extension_icon_image.h"
#include "base/json/json_file_value_serializer.h"
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "chrome/common/chrome_paths.h"
-#include "chrome/common/extensions/extension_constants.h"
#include "chrome/test/base/testing_profile.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/browser/image_loader.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
-#include "grit/theme_resources.h"
#include "skia/ext/image_operations.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/resource/resource_bundle.h"
@@ -182,8 +180,7 @@ class ExtensionIconImageTest : public testing::Test,
}
gfx::ImageSkia GetDefaultIcon() {
- return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
- IDR_EXTENSIONS_FAVICON);
+ return gfx::ImageSkia(gfx::ImageSkiaRep(gfx::Size(16, 16), 1.0f));
}
// Loads an image to be used in test from the extension.
@@ -213,7 +210,7 @@ TEST_F(ExtensionIconImageTest, Basic) {
supported_factors.push_back(ui::SCALE_FACTOR_100P);
supported_factors.push_back(ui::SCALE_FACTOR_200P);
ui::test::ScopedSetSupportedScaleFactors scoped_supported(supported_factors);
- scoped_ptr<Profile> profile(new TestingProfile());
+ scoped_ptr<content::BrowserContext> profile(new TestingProfile());
scoped_refptr<Extension> extension(CreateExtension(
"extension_icon_image", Manifest::INVALID_LOCATION));
ASSERT_TRUE(extension.get() != NULL);
@@ -287,7 +284,7 @@ TEST_F(ExtensionIconImageTest, FallbackToSmallerWhenNoBigger) {
supported_factors.push_back(ui::SCALE_FACTOR_100P);
supported_factors.push_back(ui::SCALE_FACTOR_200P);
ui::test::ScopedSetSupportedScaleFactors scoped_supported(supported_factors);
- scoped_ptr<Profile> profile(new TestingProfile());
+ scoped_ptr<content::BrowserContext> profile(new TestingProfile());
scoped_refptr<Extension> extension(CreateExtension(
"extension_icon_image", Manifest::INVALID_LOCATION));
ASSERT_TRUE(extension.get() != NULL);
@@ -326,7 +323,7 @@ TEST_F(ExtensionIconImageTest, FallbackToSmallerWhenNoBigger) {
// one. Requested size is smaller than 32 though, so the smaller resource should
// be loaded.
TEST_F(ExtensionIconImageTest, FallbackToSmaller) {
- scoped_ptr<Profile> profile(new TestingProfile());
+ scoped_ptr<content::BrowserContext> profile(new TestingProfile());
scoped_refptr<Extension> extension(CreateExtension(
"extension_icon_image", Manifest::INVALID_LOCATION));
ASSERT_TRUE(extension.get() != NULL);
@@ -363,7 +360,7 @@ TEST_F(ExtensionIconImageTest, FallbackToSmaller) {
// If resource set is empty, |GetRepresentation| should synchronously return
// default icon, without notifying observer of image change.
TEST_F(ExtensionIconImageTest, NoResources) {
- scoped_ptr<Profile> profile(new TestingProfile());
+ scoped_ptr<content::BrowserContext> profile(new TestingProfile());
scoped_refptr<Extension> extension(CreateExtension(
"extension_icon_image", Manifest::INVALID_LOCATION));
ASSERT_TRUE(extension.get() != NULL);
@@ -402,7 +399,7 @@ TEST_F(ExtensionIconImageTest, NoResources) {
// the observer should be notified when it's done. |GetRepresentation| should
// return the default icon representation once image load is done.
TEST_F(ExtensionIconImageTest, InvalidResource) {
- scoped_ptr<Profile> profile(new TestingProfile());
+ scoped_ptr<content::BrowserContext> profile(new TestingProfile());
scoped_refptr<Extension> extension(CreateExtension(
"extension_icon_image", Manifest::INVALID_LOCATION));
ASSERT_TRUE(extension.get() != NULL);
@@ -441,7 +438,7 @@ TEST_F(ExtensionIconImageTest, InvalidResource) {
// Test that IconImage works with lazily (but synchronously) created default
// icon when IconImage returns synchronously.
TEST_F(ExtensionIconImageTest, LazyDefaultIcon) {
- scoped_ptr<Profile> profile(new TestingProfile());
+ scoped_ptr<content::BrowserContext> profile(new TestingProfile());
scoped_refptr<Extension> extension(CreateExtension(
"extension_icon_image", Manifest::INVALID_LOCATION));
ASSERT_TRUE(extension.get() != NULL);
@@ -479,7 +476,7 @@ TEST_F(ExtensionIconImageTest, LazyDefaultIcon) {
// Test that IconImage works with lazily (but synchronously) created default
// icon when IconImage returns asynchronously.
TEST_F(ExtensionIconImageTest, LazyDefaultIcon_AsyncIconImage) {
- scoped_ptr<Profile> profile(new TestingProfile());
+ scoped_ptr<content::BrowserContext> profile(new TestingProfile());
scoped_refptr<Extension> extension(CreateExtension(
"extension_icon_image", Manifest::INVALID_LOCATION));
ASSERT_TRUE(extension.get() != NULL);
@@ -523,7 +520,7 @@ TEST_F(ExtensionIconImageTest, LazyDefaultIcon_AsyncIconImage) {
// representation was not loaded while IconImage host was around, transparent
// representations should be returned.
TEST_F(ExtensionIconImageTest, IconImageDestruction) {
- scoped_ptr<Profile> profile(new TestingProfile());
+ scoped_ptr<content::BrowserContext> profile(new TestingProfile());
scoped_refptr<Extension> extension(CreateExtension(
"extension_icon_image", Manifest::INVALID_LOCATION));
ASSERT_TRUE(extension.get() != NULL);
diff --git a/extensions/browser/extensions_browser_client.h b/extensions/browser/extensions_browser_client.h
index 9356aa6..293b2af 100644
--- a/extensions/browser/extensions_browser_client.h
+++ b/extensions/browser/extensions_browser_client.h
@@ -34,6 +34,7 @@ namespace extensions {
class ApiActivityMonitor;
class AppSorting;
+class ComponentExtensionResourceManager;
class Extension;
class ExtensionHostDelegate;
class ExtensionPrefsObserver;
@@ -173,6 +174,11 @@ class ExtensionsBrowserClient {
virtual scoped_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
content::BrowserContext* context) const = 0;
+ // Returns the manager of resource bundles used in extensions. Returns NULL if
+ // the manager doesn't exist.
+ virtual ComponentExtensionResourceManager*
+ GetComponentExtensionResourceManager() = 0;
+
// Returns the single instance of |this|.
static ExtensionsBrowserClient* Get();
diff --git a/chrome/browser/extensions/image_loader.cc b/extensions/browser/image_loader.cc
index 7c76c4d..2c19a73 100644
--- a/chrome/browser/extensions/image_loader.cc
+++ b/extensions/browser/image_loader.cc
@@ -1,8 +1,8 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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.
-#include "chrome/browser/extensions/image_loader.h"
+#include "extensions/browser/image_loader.h"
#include <map>
#include <vector>
@@ -10,33 +10,22 @@
#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/file_util.h"
-#include "base/lazy_instance.h"
-#include "base/path_service.h"
#include "base/strings/string_number_conversions.h"
#include "base/threading/sequenced_worker_pool.h"
-#include "chrome/browser/extensions/image_loader_factory.h"
-#include "chrome/common/chrome_paths.h"
#include "content/public/browser/browser_thread.h"
+#include "extensions/browser/component_extension_resource_manager.h"
+#include "extensions/browser/extensions_browser_client.h"
+#include "extensions/browser/image_loader_factory.h"
#include "extensions/common/extension.h"
-#include "grit/chrome_unscaled_resources.h"
-#include "grit/component_extension_resources_map.h"
-#include "grit/theme_resources.h"
#include "skia/ext/image_operations.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/codec/png_codec.h"
#include "ui/gfx/image/image_family.h"
#include "ui/gfx/image/image_skia.h"
-#if defined(OS_CHROMEOS)
-#include "ui/file_manager/file_manager_resource_util.h"
-#endif
-
-#if defined(USE_AURA)
-#include "ui/keyboard/keyboard_util.h"
-#endif
-
using content::BrowserThread;
using extensions::Extension;
+using extensions::ExtensionsBrowserClient;
using extensions::ImageLoader;
using extensions::Manifest;
@@ -105,23 +94,6 @@ void LoadImageOnBlockingPool(const ImageLoader::ImageRepresentation& image_info,
gfx::PNGCodec::Decode(data, file_contents.length(), bitmap);
}
-// Add the resources from |entries| (there are |size| of them) to
-// |path_to_resource_id| after normalizing separators.
-void AddComponentResourceEntries(
- std::map<base::FilePath, int>* path_to_resource_id,
- const GritResourceMap* entries,
- size_t size) {
- for (size_t i = 0; i < size; ++i) {
- base::FilePath resource_path = base::FilePath().AppendASCII(
- entries[i].name);
- resource_path = resource_path.NormalizePathSeparators();
-
- DCHECK(path_to_resource_id->find(resource_path) ==
- path_to_resource_id->end());
- (*path_to_resource_id)[resource_path] = entries[i].value;
- }
-}
-
std::vector<SkBitmap> LoadResourceBitmaps(
const Extension* extension,
const std::vector<ImageLoader::ImageRepresentation>& info_list) {
@@ -139,10 +111,14 @@ std::vector<SkBitmap> LoadResourceBitmaps(
extension->path() == it->resource.extension_root());
int resource_id;
- if (extension->location() == Manifest::COMPONENT &&
- ImageLoader::IsComponentExtensionResource(
- extension->path(), it->resource.relative_path(), &resource_id)) {
- LoadResourceOnUIThread(resource_id, &bitmaps[i]);
+ if (extension->location() == Manifest::COMPONENT) {
+ extensions::ComponentExtensionResourceManager* manager =
+ extensions::ExtensionsBrowserClient::Get()->
+ GetComponentExtensionResourceManager();
+ if (manager && manager->IsComponentExtensionResource(
+ extension->path(), it->resource.relative_path(), &resource_id)) {
+ LoadResourceOnUIThread(resource_id, &bitmaps[i]);
+ }
}
}
return bitmaps;
@@ -248,75 +224,6 @@ ImageLoader* ImageLoader::Get(content::BrowserContext* context) {
return ImageLoaderFactory::GetForBrowserContext(context);
}
-// A map from a resource path to the resource ID. Used only by
-// IsComponentExtensionResource below.
-static base::LazyInstance<std::map<base::FilePath, int> > path_to_resource_id =
- LAZY_INSTANCE_INITIALIZER;
-
-// static
-bool ImageLoader::IsComponentExtensionResource(
- const base::FilePath& extension_path,
- const base::FilePath& resource_path,
- int* resource_id) {
- static const GritResourceMap kExtraComponentExtensionResources[] = {
- {"web_store/webstore_icon_128.png", IDR_WEBSTORE_ICON},
- {"web_store/webstore_icon_16.png", IDR_WEBSTORE_ICON_16},
- {"chrome_app/product_logo_128.png", IDR_PRODUCT_LOGO_128},
- {"chrome_app/product_logo_16.png", IDR_PRODUCT_LOGO_16},
-#if defined(ENABLE_SETTINGS_APP)
- {"settings_app/settings_app_icon_128.png", IDR_SETTINGS_APP_ICON_128},
- {"settings_app/settings_app_icon_16.png", IDR_SETTINGS_APP_ICON_16},
- {"settings_app/settings_app_icon_32.png", IDR_SETTINGS_APP_ICON_32},
- {"settings_app/settings_app_icon_48.png", IDR_SETTINGS_APP_ICON_48},
-#endif
- };
-
- if (path_to_resource_id.Get().empty()) {
- AddComponentResourceEntries(
- path_to_resource_id.Pointer(),
- kComponentExtensionResources,
- kComponentExtensionResourcesSize);
- AddComponentResourceEntries(
- path_to_resource_id.Pointer(),
- kExtraComponentExtensionResources,
- arraysize(kExtraComponentExtensionResources));
-#if defined(OS_CHROMEOS)
- size_t file_manager_resource_size;
- const GritResourceMap* file_manager_resources =
- file_manager::GetFileManagerResources(&file_manager_resource_size);
- AddComponentResourceEntries(
- path_to_resource_id.Pointer(),
- file_manager_resources,
- file_manager_resource_size);
-
- size_t keyboard_resource_size;
- const GritResourceMap* keyboard_resources =
- keyboard::GetKeyboardExtensionResources(&keyboard_resource_size);
- AddComponentResourceEntries(
- path_to_resource_id.Pointer(),
- keyboard_resources,
- keyboard_resource_size);
-#endif
- }
-
- base::FilePath directory_path = extension_path;
- base::FilePath resources_dir;
- base::FilePath relative_path;
- if (!PathService::Get(chrome::DIR_RESOURCES, &resources_dir) ||
- !resources_dir.AppendRelativePath(directory_path, &relative_path)) {
- return false;
- }
- relative_path = relative_path.Append(resource_path);
- relative_path = relative_path.NormalizePathSeparators();
-
- std::map<base::FilePath, int>::const_iterator entry =
- path_to_resource_id.Get().find(relative_path);
- if (entry != path_to_resource_id.Get().end())
- *resource_id = entry->second;
-
- return entry != path_to_resource_id.Get().end();
-}
-
void ImageLoader::LoadImageAsync(const Extension* extension,
const ExtensionResource& resource,
const gfx::Size& max_size,
diff --git a/chrome/browser/extensions/image_loader.h b/extensions/browser/image_loader.h
index ae36295..a0504e2 100644
--- a/chrome/browser/extensions/image_loader.h
+++ b/extensions/browser/image_loader.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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.
-#ifndef CHROME_BROWSER_EXTENSIONS_IMAGE_LOADER_H_
-#define CHROME_BROWSER_EXTENSIONS_IMAGE_LOADER_H_
+#ifndef EXTENSIONS_BROWSER_IMAGE_LOADER_H_
+#define EXTENSIONS_BROWSER_IMAGE_LOADER_H_
#include <set>
@@ -75,15 +75,6 @@ class ImageLoader : public KeyedService {
ImageLoader();
virtual ~ImageLoader();
- // Checks whether image is a component extension resource. Returns false
- // if a given |resource| does not have a corresponding image in bundled
- // resources. Otherwise fills |resource_id|. This doesn't check if the
- // extension the resource is in is actually a component extension.
- static bool IsComponentExtensionResource(
- const base::FilePath& extension_path,
- const base::FilePath& resource_path,
- int* resource_id);
-
// Specify image resource to load. If the loaded image is larger than
// |max_size| it will be resized to those dimensions. IMPORTANT NOTE: this
// function may call back your callback synchronously (ie before it returns)
@@ -127,4 +118,4 @@ class ImageLoader : public KeyedService {
} // namespace extensions
-#endif // CHROME_BROWSER_EXTENSIONS_IMAGE_LOADER_H_
+#endif // EXTENSIONS_BROWSER_IMAGE_LOADER_H_
diff --git a/chrome/browser/extensions/image_loader_factory.cc b/extensions/browser/image_loader_factory.cc
index 5ccb75e..60c0b92 100644
--- a/chrome/browser/extensions/image_loader_factory.cc
+++ b/extensions/browser/image_loader_factory.cc
@@ -1,12 +1,12 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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.
-#include "chrome/browser/extensions/image_loader_factory.h"
+#include "extensions/browser/image_loader_factory.h"
-#include "chrome/browser/extensions/image_loader.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "extensions/browser/extensions_browser_client.h"
+#include "extensions/browser/image_loader.h"
namespace extensions {
diff --git a/chrome/browser/extensions/image_loader_factory.h b/extensions/browser/image_loader_factory.h
index 41d62dd..dab71f5 100644
--- a/chrome/browser/extensions/image_loader_factory.h
+++ b/extensions/browser/image_loader_factory.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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.
-#ifndef CHROME_BROWSER_EXTENSIONS_IMAGE_LOADER_FACTORY_H_
-#define CHROME_BROWSER_EXTENSIONS_IMAGE_LOADER_FACTORY_H_
+#ifndef EXTENSIONS_BROWSER_IMAGE_LOADER_FACTORY_H_
+#define EXTENSIONS_BROWSER_IMAGE_LOADER_FACTORY_H_
#include "base/memory/singleton.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
@@ -42,4 +42,4 @@ class ImageLoaderFactory : public BrowserContextKeyedServiceFactory {
} // namespace extensions
-#endif // CHROME_BROWSER_EXTENSIONS_IMAGE_LOADER_FACTORY_H_
+#endif // EXTENSIONS_BROWSER_IMAGE_LOADER_FACTORY_H_
diff --git a/chrome/browser/extensions/image_loader_unittest.cc b/extensions/browser/image_loader_unittest.cc
index 45cff827..68b93b0 100644
--- a/chrome/browser/extensions/image_loader_unittest.cc
+++ b/extensions/browser/image_loader_unittest.cc
@@ -1,16 +1,20 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2014 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.
-#include "chrome/browser/extensions/image_loader.h"
+#include "extensions/browser/image_loader.h"
+#include "base/files/file_path.h"
#include "base/json/json_file_value_serializer.h"
#include "base/message_loop/message_loop.h"
#include "base/path_service.h"
+#include "base/strings/string_util.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/common/chrome_paths.h"
#include "content/public/browser/notification_service.h"
#include "content/public/test/test_browser_thread.h"
+#include "extensions/browser/component_extension_resource_manager.h"
+#include "extensions/browser/extensions_browser_client.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_icon_set.h"
@@ -19,12 +23,15 @@
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkBitmap.h"
-#include "ui/file_manager/grit/file_manager_resources.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_family.h"
#include "ui/gfx/image/image_skia.h"
#include "ui/gfx/size.h"
+#if defined(OS_CHROMEOS)
+#include "ui/file_manager/grit/file_manager_resources.h"
+#endif
+
using content::BrowserThread;
using extensions::Extension;
using extensions::ExtensionResource;
@@ -316,7 +323,14 @@ TEST_F(ImageLoaderTest, LoadImageFamily) {
}
// Tests IsComponentExtensionResource function.
+// TODO(mukai): move this to ChromeComponentExtensionResourceManager's test.
TEST_F(ImageLoaderTest, IsComponentExtensionResource) {
+ extensions::ComponentExtensionResourceManager* resource_manager =
+ extensions::ExtensionsBrowserClient::Get()->
+ GetComponentExtensionResourceManager();
+ if (!resource_manager)
+ return;
+
scoped_refptr<Extension> extension(CreateExtension(
"file_manager", Manifest::COMPONENT));
ASSERT_TRUE(extension.get() != NULL);
@@ -328,10 +342,10 @@ TEST_F(ImageLoaderTest, IsComponentExtensionResource) {
#if defined(OS_CHROMEOS)
int resource_id;
- ASSERT_EQ(true,
- ImageLoader::IsComponentExtensionResource(extension->path(),
- resource.relative_path(),
- &resource_id));
+ ASSERT_TRUE(resource_manager->IsComponentExtensionResource(
+ extension->path(),
+ resource.relative_path(),
+ &resource_id));
ASSERT_EQ(IDR_FILE_MANAGER_ICON_16, resource_id);
#endif
}
diff --git a/extensions/browser/test_extensions_browser_client.cc b/extensions/browser/test_extensions_browser_client.cc
index 7708ca7..dcd467f 100644
--- a/extensions/browser/test_extensions_browser_client.cc
+++ b/extensions/browser/test_extensions_browser_client.cc
@@ -162,4 +162,9 @@ TestExtensionsBrowserClient::CreateRuntimeAPIDelegate(
return scoped_ptr<RuntimeAPIDelegate>(new TestRuntimeAPIDelegate());
}
+ComponentExtensionResourceManager*
+TestExtensionsBrowserClient::GetComponentExtensionResourceManager() {
+ return NULL;
+}
+
} // namespace extensions
diff --git a/extensions/browser/test_extensions_browser_client.h b/extensions/browser/test_extensions_browser_client.h
index 6fb88044..b793259 100644
--- a/extensions/browser/test_extensions_browser_client.h
+++ b/extensions/browser/test_extensions_browser_client.h
@@ -75,6 +75,8 @@ class TestExtensionsBrowserClient : public ExtensionsBrowserClient {
ExtensionFunctionRegistry* registry) const OVERRIDE;
virtual scoped_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate(
content::BrowserContext* context) const OVERRIDE;
+ virtual ComponentExtensionResourceManager*
+ GetComponentExtensionResourceManager() OVERRIDE;
private:
content::BrowserContext* main_context_; // Not owned.
diff --git a/extensions/extensions.gyp b/extensions/extensions.gyp
index d262e989..9d195fa 100644
--- a/extensions/extensions.gyp
+++ b/extensions/extensions.gyp
@@ -319,6 +319,7 @@
'browser/browser_context_keyed_api_factory.h',
'browser/browser_context_keyed_service_factories.cc',
'browser/browser_context_keyed_service_factories.h',
+ 'browser/component_extension_resource_manager.h',
'browser/computed_hashes.cc',
'browser/computed_hashes.h',
'browser/content_hash_fetcher.cc',
@@ -351,6 +352,8 @@
'browser/extension_function_registry.h',
'browser/extension_function_util.cc',
'browser/extension_function_util.h',
+ 'browser/extension_icon_image.cc',
+ 'browser/extension_icon_image.h',
'browser/extension_message_filter.cc',
'browser/extension_message_filter.h',
'browser/extension_pref_store.cc',
@@ -384,6 +387,10 @@
'browser/extensions_browser_client.cc',
'browser/extensions_browser_client.h',
'browser/external_provider_interface.h',
+ 'browser/image_loader.cc',
+ 'browser/image_loader.h',
+ 'browser/image_loader_factory.cc',
+ 'browser/image_loader_factory.h',
'browser/image_util.cc',
'browser/image_util.h',
'browser/info_map.cc',