Chromium Code Reviews| Index: chrome/browser/extensions/chrome_extensions_browser_client.cc |
| diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.cc b/chrome/browser/extensions/chrome_extensions_browser_client.cc |
| index fe53a0750dd61c75133aa8d25a66999ac6ead6b1..defb1fb55cb17806cc07ffdbe10ec97af7060604 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" |
| @@ -23,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" |
| @@ -32,9 +34,13 @@ |
| #include "extensions/browser/extension_prefs.h" |
| #include "extensions/browser/pref_names.h" |
| #include "extensions/common/api/generated_api.h" |
| +#include "grit/chrome_unscaled_resources.h" |
| +#include "grit/component_extension_resources_map.h" |
| +#include "grit/theme_resources.h" |
| #if defined(OS_CHROMEOS) |
| #include "chromeos/chromeos_switches.h" |
| +#include "ui/file_manager/file_manager_resource_util.h" |
| #endif |
| #if defined(ENABLE_EXTENSIONS) |
| @@ -42,8 +48,33 @@ |
| #include "chrome/browser/extensions/api/content_settings/content_settings_service.h" |
| #endif |
| +#if defined(USE_AURA) |
| +#include "ui/keyboard/keyboard_util.h" |
| +#endif |
| + |
| namespace extensions { |
| +namespace { |
| + |
| +// 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; |
| + } |
| +} |
| + |
| +} // namespace |
| + |
| ChromeExtensionsBrowserClient::ChromeExtensionsBrowserClient() { |
| #if defined(ENABLE_EXTENSIONS) |
| api_client_.reset(new ChromeExtensionsAPIClient); |
| @@ -51,6 +82,45 @@ ChromeExtensionsBrowserClient::ChromeExtensionsBrowserClient() { |
| // Only set if it hasn't already been set (e.g. by a test). |
| if (GetCurrentChannel() == GetDefaultChannel()) |
| SetCurrentChannel(chrome::VersionInfo::GetChannel()); |
| + |
| + static const GritResourceMap kExtraComponentExtensionResources[] = { |
|
James Cook
2014/06/18 16:29:07
I would prefer that all the ComponentExtensions co
Jun Mukai
2014/06/18 18:38:48
Done.
|
| + {"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( |
| + &path_to_resource_id_, |
| + kComponentExtensionResources, |
| + kComponentExtensionResourcesSize); |
| + AddComponentResourceEntries( |
| + &path_to_resource_id_, |
| + 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_, |
| + 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_, |
| + keyboard_resources, |
| + keyboard_resource_size); |
| +#endif |
| } |
| ChromeExtensionsBrowserClient::~ChromeExtensionsBrowserClient() {} |
| @@ -270,6 +340,28 @@ void ChromeExtensionsBrowserClient::RegisterExtensionFunctions( |
| #endif |
| } |
| +bool ChromeExtensionsBrowserClient::IsComponentExtensionResource( |
| + const base::FilePath& extension_path, |
| + const base::FilePath& resource_path, |
| + int* resource_id) const { |
| + 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(); |
| +} |
| + |
| scoped_ptr<extensions::RuntimeAPIDelegate> |
| ChromeExtensionsBrowserClient::CreateRuntimeAPIDelegate( |
| content::BrowserContext* context) const { |