diff options
Diffstat (limited to 'chrome/browser/browser_theme_provider_mac.mm')
-rw-r--r-- | chrome/browser/browser_theme_provider_mac.mm | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/chrome/browser/browser_theme_provider_mac.mm b/chrome/browser/browser_theme_provider_mac.mm index f455d70..805952d 100644 --- a/chrome/browser/browser_theme_provider_mac.mm +++ b/chrome/browser/browser_theme_provider_mac.mm @@ -73,6 +73,32 @@ NSImage* BrowserThemeProvider::GetNSImageNamed(int id, return empty_image; } +NSColor* BrowserThemeProvider::GetNSImageColorNamed(int id, + bool allow_default) const { + DCHECK(CalledOnValidThread()); + + // Check to see if we already have the color in the cache. + NSColorMap::const_iterator nscolor_iter = nscolor_cache_.find(id); + if (nscolor_iter != nscolor_cache_.end()) { + bool cached_is_default = nscolor_iter->second.second; + if (!cached_is_default || allow_default) + return nscolor_iter->second.first; + } + + NSImage* image = GetNSImageNamed(id, allow_default); + if (!image) + return nil; + NSColor* image_color = [NSColor colorWithPatternImage:image]; + + // We loaded successfully. Cache the color. + if (image_color) { + nscolor_cache_[id] = std::make_pair([image_color retain], + !HasCustomImage(id)); + } + + return imageColor; +} + NSColor* BrowserThemeProvider::GetNSColor(int id, bool allow_default) const { DCHECK(CalledOnValidThread()); |