Index: chrome/browser/browser_theme_provider.cc |
diff --git a/chrome/browser/browser_theme_provider.cc b/chrome/browser/browser_theme_provider.cc |
index 96f1d298bb8e419a5287758415660bdbd90f0901..de0acb7cad2aa10ae19724bc8eb2a07a573c5b29 100644 |
--- a/chrome/browser/browser_theme_provider.cc |
+++ b/chrome/browser/browser_theme_provider.cc |
@@ -332,11 +332,6 @@ SkBitmap* BrowserThemeProvider::GetBitmapNamed(int id) { |
// Try to load the image from the extension. |
result.reset(LoadThemeBitmap(id)); |
- // If the extension doesn't provide the requested image, but has provided |
- // a custom frame, then we may be able to generate the image required. |
- if (!result.get()) |
- result.reset(GenerateTabBackgroundBitmap(id)); |
- |
// If we still don't have an image, load it from resourcebundle. |
if (!result.get()) |
result.reset(new SkBitmap(*rb_.GetBitmapNamed(id))); |
@@ -1072,31 +1067,14 @@ SkBitmap* BrowserThemeProvider::GenerateTabBackgroundBitmap(int id) { |
if (frame.get()) |
themed_image_cache_[id] = new SkBitmap(*frame.get()); |
} else { |
- int base_id; |
- std::string resource_name; |
- if (id == IDR_THEME_TAB_BACKGROUND) { |
- base_id = IDR_THEME_FRAME; |
- resource_name = "theme_tab_background"; |
- } else { |
- base_id = IDR_THEME_FRAME_INCOGNITO; |
- resource_name = "theme_tab_background_incognito"; |
- } |
- std::map<int, SkBitmap*>::iterator it = themed_image_cache_.find(base_id); |
- if (it != themed_image_cache_.end()) { |
- SkBitmap bg_tint = TintBitmap(*(it->second), TINT_BACKGROUND_TAB); |
- int vertical_offset = HasCustomImage(id) ? |
- kRestoredTabVerticalOffset : 0; |
- SkBitmap* bg_tab = new SkBitmap(SkBitmapOperations::CreateTiledBitmap( |
- bg_tint, 0, vertical_offset, bg_tint.width(), bg_tint.height())); |
- |
- // If they've provided a custom image, overlay it. |
- if (HasCustomImage(id)) { |
- SkBitmap* overlay = LoadThemeBitmap(id); |
- if (overlay) { |
- SkCanvas canvas(*bg_tab); |
- for (int x = 0; x < bg_tab->width(); x += overlay->width()) |
- canvas.drawBitmap(*overlay, static_cast<SkScalar>(x), 0, NULL); |
- } |
+ SkBitmap* bg_tab = GenerateTabBackgroundBitmapImpl(id); |
+ |
+ if (bg_tab) { |
+ std::string resource_name; |
+ if (id == IDR_THEME_TAB_BACKGROUND) { |
+ resource_name = "theme_tab_background"; |
+ } else { |
+ resource_name = "theme_tab_background_incognito"; |
} |
themed_image_cache_[id] = bg_tab; |
@@ -1108,6 +1086,37 @@ SkBitmap* BrowserThemeProvider::GenerateTabBackgroundBitmap(int id) { |
return NULL; |
} |
+SkBitmap* BrowserThemeProvider::GenerateTabBackgroundBitmapImpl(int id) { |
+ int base_id; |
+ if (id == IDR_THEME_TAB_BACKGROUND) { |
+ base_id = IDR_THEME_FRAME; |
+ } else { |
+ base_id = IDR_THEME_FRAME_INCOGNITO; |
+ } |
+ std::map<int, SkBitmap*>::iterator it = themed_image_cache_.find(base_id); |
+ if (it != themed_image_cache_.end()) { |
+ SkBitmap bg_tint = TintBitmap(*(it->second), TINT_BACKGROUND_TAB); |
+ int vertical_offset = HasCustomImage(id) ? |
+ kRestoredTabVerticalOffset : 0; |
+ SkBitmap* bg_tab = new SkBitmap(SkBitmapOperations::CreateTiledBitmap( |
+ bg_tint, 0, vertical_offset, bg_tint.width(), bg_tint.height())); |
+ |
+ // If they've provided a custom image, overlay it. |
+ if (HasCustomImage(id)) { |
+ SkBitmap* overlay = LoadThemeBitmap(id); |
+ if (overlay) { |
+ SkCanvas canvas(*bg_tab); |
+ for (int x = 0; x < bg_tab->width(); x += overlay->width()) |
+ canvas.drawBitmap(*overlay, static_cast<SkScalar>(x), 0, NULL); |
+ } |
+ } |
+ |
+ return bg_tab; |
+ } |
+ |
+ return NULL; |
+} |
+ |
void BrowserThemeProvider::SaveCachedImageData() { |
DictionaryValue* pref_images = |
profile_->GetPrefs()->GetMutableDictionary(prefs::kCurrentThemeImages); |