| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/browser_theme_provider.h" | 5 #include "chrome/browser/browser_theme_provider.h" |
| 6 | 6 |
| 7 #include "base/gfx/png_decoder.h" | 7 #include "base/gfx/png_decoder.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/browser_list.h" | 10 #include "chrome/browser/browser_list.h" |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 | 249 |
| 250 // We loaded successfully. Cache the bitmap. | 250 // We loaded successfully. Cache the bitmap. |
| 251 image_cache_[id] = result.get(); | 251 image_cache_[id] = result.get(); |
| 252 return result.release(); | 252 return result.release(); |
| 253 } else { | 253 } else { |
| 254 NOTREACHED() << "Failed to load a requested image"; | 254 NOTREACHED() << "Failed to load a requested image"; |
| 255 return NULL; | 255 return NULL; |
| 256 } | 256 } |
| 257 } | 257 } |
| 258 | 258 |
| 259 const std::string BrowserThemeProvider::GetColorKey(int id) { |
| 260 switch (id) { |
| 261 case COLOR_FRAME: |
| 262 return kColorFrame; |
| 263 case COLOR_FRAME_INACTIVE: |
| 264 return kColorFrameInactive; |
| 265 case COLOR_FRAME_INCOGNITO: |
| 266 return kColorFrameIncognito; |
| 267 case COLOR_FRAME_INCOGNITO_INACTIVE: |
| 268 return kColorFrameIncognitoInactive; |
| 269 case COLOR_TOOLBAR: |
| 270 return kColorToolbar; |
| 271 case COLOR_TAB_TEXT: |
| 272 return kColorTabText; |
| 273 case COLOR_BACKGROUND_TAB_TEXT: |
| 274 return kColorBackgroundTabText; |
| 275 case COLOR_BOOKMARK_TEXT: |
| 276 return kColorBookmarkText; |
| 277 case COLOR_NTP_BACKGROUND: |
| 278 return kColorNTPBackground; |
| 279 case COLOR_NTP_TEXT: |
| 280 return kColorNTPText; |
| 281 case COLOR_NTP_LINK: |
| 282 return kColorNTPLink; |
| 283 case COLOR_NTP_SECTION: |
| 284 return kColorNTPSection; |
| 285 case COLOR_NTP_SECTION_TEXT: |
| 286 return kColorNTPSectionText; |
| 287 case COLOR_NTP_SECTION_LINK: |
| 288 return kColorNTPSectionLink; |
| 289 case COLOR_CONTROL_BACKGROUND: |
| 290 return kColorControlBackground; |
| 291 case COLOR_BUTTON_BACKGROUND: |
| 292 return kColorButtonBackground; |
| 293 default: |
| 294 NOTREACHED() << "Unknown color requested"; |
| 295 return ""; |
| 296 } |
| 297 } |
| 298 |
| 299 SkColor BrowserThemeProvider::GetDefaultColor(int id) { |
| 300 switch (id) { |
| 301 case COLOR_FRAME: |
| 302 return kDefaultColorFrame; |
| 303 case COLOR_FRAME_INACTIVE: |
| 304 return kDefaultColorFrameInactive; |
| 305 case COLOR_FRAME_INCOGNITO: |
| 306 return kDefaultColorFrameIncognito; |
| 307 case COLOR_FRAME_INCOGNITO_INACTIVE: |
| 308 return kDefaultColorFrameIncognitoInactive; |
| 309 case COLOR_TOOLBAR: |
| 310 return kDefaultColorToolbar; |
| 311 case COLOR_TAB_TEXT: |
| 312 return kDefaultColorTabText; |
| 313 case COLOR_BACKGROUND_TAB_TEXT: |
| 314 return kDefaultColorBackgroundTabText; |
| 315 case COLOR_BOOKMARK_TEXT: |
| 316 return kDefaultColorBookmarkText; |
| 317 case COLOR_NTP_BACKGROUND: |
| 318 return kDefaultColorNTPBackground; |
| 319 case COLOR_NTP_TEXT: |
| 320 return kDefaultColorNTPText; |
| 321 case COLOR_NTP_LINK: |
| 322 return kDefaultColorNTPLink; |
| 323 case COLOR_NTP_SECTION: |
| 324 return kDefaultColorNTPSection; |
| 325 case COLOR_NTP_SECTION_TEXT: |
| 326 return kDefaultColorNTPSectionText; |
| 327 case COLOR_NTP_SECTION_LINK: |
| 328 return kDefaultColorNTPSectionLink; |
| 329 case COLOR_CONTROL_BACKGROUND: |
| 330 return kDefaultColorControlBackground; |
| 331 case COLOR_BUTTON_BACKGROUND: |
| 332 return kDefaultColorButtonBackground; |
| 333 default: |
| 334 // Return a debugging red color. |
| 335 return 0xffff0000; |
| 336 } |
| 337 } |
| 338 |
| 259 SkColor BrowserThemeProvider::GetColor(int id) { | 339 SkColor BrowserThemeProvider::GetColor(int id) { |
| 260 DCHECK(CalledOnValidThread()); | 340 DCHECK(CalledOnValidThread()); |
| 261 | 341 |
| 262 // TODO(glen): Figure out if we need to tint these. http://crbug.com/11578 | 342 // TODO(glen): Figure out if we need to tint these. http://crbug.com/11578 |
| 263 switch (id) { | 343 ColorMap::iterator color_iter = colors_.find(GetColorKey(id)); |
| 264 case COLOR_FRAME: | 344 if (color_iter != colors_.end()) |
| 265 return FindColor(kColorFrame, kDefaultColorFrame); | 345 return color_iter->second; |
| 266 case COLOR_FRAME_INACTIVE: | 346 else |
| 267 return FindColor(kColorFrameInactive, kDefaultColorFrameInactive); | 347 return GetDefaultColor(id); |
| 268 case COLOR_FRAME_INCOGNITO: | |
| 269 return FindColor(kColorFrameIncognito, kDefaultColorFrameIncognito); | |
| 270 case COLOR_FRAME_INCOGNITO_INACTIVE: | |
| 271 return FindColor(kColorFrameIncognitoInactive, | |
| 272 kDefaultColorFrameIncognitoInactive); | |
| 273 case COLOR_TOOLBAR: | |
| 274 return FindColor(kColorToolbar, kDefaultColorToolbar); | |
| 275 case COLOR_TAB_TEXT: | |
| 276 return FindColor(kColorTabText, kDefaultColorTabText); | |
| 277 case COLOR_BACKGROUND_TAB_TEXT: | |
| 278 return FindColor(kColorBackgroundTabText, kDefaultColorBackgroundTabText); | |
| 279 case COLOR_BOOKMARK_TEXT: | |
| 280 return FindColor(kColorBookmarkText, kDefaultColorBookmarkText); | |
| 281 case COLOR_NTP_BACKGROUND: | |
| 282 return (colors_.find(kColorNTPBackground) != colors_.end()) ? | |
| 283 colors_[kColorNTPBackground] : | |
| 284 kDefaultColorNTPBackground; | |
| 285 case COLOR_NTP_TEXT: | |
| 286 return FindColor(kColorNTPText, kDefaultColorNTPText); | |
| 287 case COLOR_NTP_LINK: | |
| 288 return FindColor(kColorNTPLink, kDefaultColorNTPLink); | |
| 289 case COLOR_NTP_SECTION: | |
| 290 return FindColor(kColorNTPSection, kDefaultColorNTPSection); | |
| 291 case COLOR_NTP_SECTION_TEXT: | |
| 292 return FindColor(kColorNTPSectionText, kDefaultColorNTPSectionText); | |
| 293 case COLOR_NTP_SECTION_LINK: | |
| 294 return FindColor(kColorNTPSectionLink, kDefaultColorNTPSectionLink); | |
| 295 case COLOR_CONTROL_BACKGROUND: | |
| 296 return FindColor(kColorControlBackground, kDefaultColorControlBackground); | |
| 297 case COLOR_BUTTON_BACKGROUND: | |
| 298 return FindColor(kColorButtonBackground, kDefaultColorButtonBackground); | |
| 299 default: | |
| 300 NOTREACHED() << "Unknown color requested"; | |
| 301 } | |
| 302 | |
| 303 // Return a debugging red color. | |
| 304 return 0xffff0000; | |
| 305 } | 348 } |
| 306 | 349 |
| 307 bool BrowserThemeProvider::GetDisplayProperty(int id, int* result) { | 350 bool BrowserThemeProvider::GetDisplayProperty(int id, int* result) { |
| 308 switch (id) { | 351 switch (id) { |
| 309 case NTP_BACKGROUND_ALIGNMENT: | 352 case NTP_BACKGROUND_ALIGNMENT: |
| 310 if (display_properties_.find(kDisplayPropertyNTPAlignment) != | 353 if (display_properties_.find(kDisplayPropertyNTPAlignment) != |
| 311 display_properties_.end()) { | 354 display_properties_.end()) { |
| 312 *result = display_properties_[kDisplayPropertyNTPAlignment]; | 355 *result = display_properties_[kDisplayPropertyNTPAlignment]; |
| 313 } else { | 356 } else { |
| 314 *result = kDefaultDisplayPropertyNTPAlignment; | 357 *result = kDefaultDisplayPropertyNTPAlignment; |
| (...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 961 SetTintData(prefs->GetMutableDictionary(prefs::kCurrentThemeTints)); | 1004 SetTintData(prefs->GetMutableDictionary(prefs::kCurrentThemeTints)); |
| 962 SetDisplayPropertyData( | 1005 SetDisplayPropertyData( |
| 963 prefs->GetMutableDictionary(prefs::kCurrentThemeDisplayProperties)); | 1006 prefs->GetMutableDictionary(prefs::kCurrentThemeDisplayProperties)); |
| 964 GenerateFrameColors(); | 1007 GenerateFrameColors(); |
| 965 GenerateFrameImages(); | 1008 GenerateFrameImages(); |
| 966 GenerateTabImages(); | 1009 GenerateTabImages(); |
| 967 UserMetrics::RecordAction(L"Themes_loaded", profile_); | 1010 UserMetrics::RecordAction(L"Themes_loaded", profile_); |
| 968 } | 1011 } |
| 969 } | 1012 } |
| 970 | 1013 |
| 971 SkColor BrowserThemeProvider::FindColor(const char* id, | |
| 972 SkColor default_color) { | |
| 973 return (colors_.find(id) != colors_.end()) ? colors_[id] : default_color; | |
| 974 } | |
| 975 | |
| 976 void BrowserThemeProvider::ClearCaches() { | 1014 void BrowserThemeProvider::ClearCaches() { |
| 977 FreePlatformCaches(); | 1015 FreePlatformCaches(); |
| 978 for (ImageCache::iterator i = image_cache_.begin(); | 1016 for (ImageCache::iterator i = image_cache_.begin(); |
| 979 i != image_cache_.end(); i++) { | 1017 i != image_cache_.end(); i++) { |
| 980 delete i->second; | 1018 delete i->second; |
| 981 } | 1019 } |
| 982 image_cache_.clear(); | 1020 image_cache_.clear(); |
| 983 } | 1021 } |
| 984 | 1022 |
| 985 #if defined(TOOLKIT_VIEWS) | 1023 #if defined(TOOLKIT_VIEWS) |
| 986 void BrowserThemeProvider::FreePlatformCaches() { | 1024 void BrowserThemeProvider::FreePlatformCaches() { |
| 987 // Views (Skia) has no platform image cache to clear. | 1025 // Views (Skia) has no platform image cache to clear. |
| 988 } | 1026 } |
| 989 #endif | 1027 #endif |
| OLD | NEW |