Chromium Code Reviews| Index: chrome/browser/ui/webui/extension_icon_source.cc |
| =================================================================== |
| --- chrome/browser/ui/webui/extension_icon_source.cc (revision 98624) |
| +++ chrome/browser/ui/webui/extension_icon_source.cc (working copy) |
| @@ -19,6 +19,7 @@ |
| #include "chrome/common/extensions/extension.h" |
| #include "chrome/common/extensions/extension_resource.h" |
| #include "chrome/common/url_constants.h" |
| +#include "grit/component_extension_resources_map.h" |
| #include "grit/theme_resources.h" |
| #include "googleurl/src/gurl.h" |
| #include "skia/ext/image_operations.h" |
| @@ -126,10 +127,15 @@ |
| ExtensionResource icon = |
| request->extension->GetIconResource(request->size, request->match); |
| - if (icon.relative_path().empty()) |
| + if (icon.relative_path().empty()) { |
| LoadIconFailed(request_id); |
| - else |
| + } else { |
| + if (request->extension->location() == Extension::COMPONENT && |
| + TryLoadingComponentExtensionImage(icon, request_id)) { |
| + return; |
| + } |
| LoadExtensionImage(icon, request_id); |
| + } |
| } |
| void ExtensionIconSource::LoadIconFailed(int request_id) { |
| @@ -183,6 +189,28 @@ |
| FinalizeImage(decoded, request_id); |
| } |
| +bool ExtensionIconSource::TryLoadingComponentExtensionImage( |
| + const ExtensionResource& icon, int request_id) { |
| + ExtensionIconRequest* request = GetData(request_id); |
| + FilePath directory_path = request->extension->path(); |
| + FilePath relative_path = directory_path.BaseName().Append( |
| + icon.relative_path()); |
| + for (size_t i = 0; i < kComponentExtensionResourcesSize; ++i) { |
| + FilePath bm_resource_path = |
| + FilePath().AppendASCII(kComponentExtensionResources[i].name); |
| +#if defined(OS_WIN) |
| + bm_resource_path = bm_resource_path.NormalizeWindowsPathSeparators(); |
| +#endif |
| + if (relative_path == bm_resource_path) { |
|
dgozman
2011/08/30 10:45:32
Shouldn't you also normalize |relative_path| befor
zel
2011/08/30 22:16:27
i don't think we need to do that that with relativ
|
| + scoped_ptr<SkBitmap> decoded(LoadImageByResourceId( |
| + kComponentExtensionResources[i].value)); |
| + FinalizeImage(decoded.get(), request_id); |
| + return true; |
| + } |
| + } |
| + return false; |
| +} |
| + |
| void ExtensionIconSource::LoadExtensionImage(const ExtensionResource& icon, |
| int request_id) { |
| ExtensionIconRequest* request = GetData(request_id); |