Index: chrome/browser/browser_theme_provider.cc |
=================================================================== |
--- chrome/browser/browser_theme_provider.cc (revision 19724) |
+++ chrome/browser/browser_theme_provider.cc (working copy) |
@@ -137,7 +137,7 @@ |
} |
BrowserThemeProvider::~BrowserThemeProvider() { |
- FreeImages(); |
+ ClearCaches(); |
} |
void BrowserThemeProvider::Init(Profile* profile) { |
@@ -266,7 +266,7 @@ |
void BrowserThemeProvider::SetTheme(Extension* extension) { |
// Clear our image cache. |
- FreeImages(); |
+ ClearCaches(); |
DCHECK(extension); |
DCHECK(extension->IsTheme()); |
@@ -289,7 +289,7 @@ |
void BrowserThemeProvider::UseDefaultTheme() { |
// Clear our image cache. |
- FreeImages(); |
+ ClearCaches(); |
images_.clear(); |
colors_.clear(); |
@@ -361,37 +361,56 @@ |
} |
} |
-skia::HSL BrowserThemeProvider::GetTint(int id) { |
- DCHECK(CalledOnValidThread()); |
+const std::string BrowserThemeProvider::GetTintKey(int id) { |
switch (id) { |
case TINT_FRAME: |
- return (tints_.find(kTintFrame) != tints_.end()) ? |
- tints_[kTintFrame] : kDefaultTintFrame; |
+ return kTintFrame; |
case TINT_FRAME_INACTIVE: |
- return (tints_.find(kTintFrameInactive) != tints_.end()) ? |
- tints_[kTintFrameInactive] : kDefaultTintFrameInactive; |
+ return kTintFrameInactive; |
case TINT_FRAME_INCOGNITO: |
- return (tints_.count(kTintFrameIncognito)) ? |
- tints_[kTintFrameIncognito] : kDefaultTintFrameIncognito; |
+ return kTintFrameIncognito; |
case TINT_FRAME_INCOGNITO_INACTIVE: |
- return (tints_.count(kTintFrameIncognitoInactive)) ? |
- tints_[kTintFrameIncognitoInactive] : |
- kDefaultTintFrameIncognitoInactive; |
+ return kTintFrameIncognitoInactive; |
case TINT_BUTTONS: |
- return (tints_.find(kTintButtons) != tints_.end()) ? |
- tints_[kTintButtons] : |
- kDefaultTintButtons; |
+ return kTintButtons; |
case TINT_BACKGROUND_TAB: |
- return (tints_.find(kTintBackgroundTab) != tints_.end()) ? |
- tints_[kTintBackgroundTab] : |
- kDefaultTintBackgroundTab; |
+ return kTintBackgroundTab; |
default: |
NOTREACHED() << "Unknown tint requested"; |
+ return ""; |
} |
- skia::HSL result = {-1, -1, -1}; |
- return result; |
} |
+skia::HSL BrowserThemeProvider::GetDefaultTint(int id) { |
+ switch (id) { |
+ case TINT_FRAME: |
+ return kDefaultTintFrame; |
+ case TINT_FRAME_INACTIVE: |
+ return kDefaultTintFrameInactive; |
+ case TINT_FRAME_INCOGNITO: |
+ return kDefaultTintFrameIncognito; |
+ case TINT_FRAME_INCOGNITO_INACTIVE: |
+ return kDefaultTintFrameIncognitoInactive; |
+ case TINT_BUTTONS: |
+ return kDefaultTintButtons; |
+ case TINT_BACKGROUND_TAB: |
+ return kDefaultTintBackgroundTab; |
+ default: |
+ skia::HSL result = {-1, -1, -1}; |
+ return result; |
+ } |
+} |
+ |
+skia::HSL BrowserThemeProvider::GetTint(int id) { |
+ DCHECK(CalledOnValidThread()); |
+ |
+ TintMap::iterator tint_iter = tints_.find(GetTintKey(id)); |
+ if (tint_iter != tints_.end()) |
+ return tint_iter->second; |
+ else |
+ return GetDefaultTint(id); |
+} |
+ |
SkBitmap BrowserThemeProvider::TintBitmap(const SkBitmap& bitmap, int hsl_id) { |
return skia::ImageOperations::CreateHSLShiftedBitmap(bitmap, GetTint(hsl_id)); |
} |
@@ -730,8 +749,8 @@ |
return (colors_.find(id) != colors_.end()) ? colors_[id] : default_color; |
} |
-void BrowserThemeProvider::FreeImages() { |
- FreePlatformImages(); |
+void BrowserThemeProvider::ClearCaches() { |
+ FreePlatformCaches(); |
for (ImageCache::iterator i = image_cache_.begin(); |
i != image_cache_.end(); i++) { |
delete i->second; |
@@ -740,7 +759,7 @@ |
} |
#if defined(OS_WIN) |
-void BrowserThemeProvider::FreePlatformImages() { |
+void BrowserThemeProvider::FreePlatformCaches() { |
// Windows has no platform image cache to clear. |
} |
#endif |