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