| 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 26 matching lines...) Expand all Loading... |
| 37 const char* BrowserThemeProvider::kColorFrameIncognitoInactive = | 37 const char* BrowserThemeProvider::kColorFrameIncognitoInactive = |
| 38 "frame_incognito_inactive"; | 38 "frame_incognito_inactive"; |
| 39 const char* BrowserThemeProvider::kColorToolbar = "toolbar"; | 39 const char* BrowserThemeProvider::kColorToolbar = "toolbar"; |
| 40 const char* BrowserThemeProvider::kColorTabText = "tab_text"; | 40 const char* BrowserThemeProvider::kColorTabText = "tab_text"; |
| 41 const char* BrowserThemeProvider::kColorBackgroundTabText = | 41 const char* BrowserThemeProvider::kColorBackgroundTabText = |
| 42 "tab_background_text"; | 42 "tab_background_text"; |
| 43 const char* BrowserThemeProvider::kColorBookmarkText = "bookmark_text"; | 43 const char* BrowserThemeProvider::kColorBookmarkText = "bookmark_text"; |
| 44 const char* BrowserThemeProvider::kColorNTPBackground = "ntp_background"; | 44 const char* BrowserThemeProvider::kColorNTPBackground = "ntp_background"; |
| 45 const char* BrowserThemeProvider::kColorNTPText = "ntp_text"; | 45 const char* BrowserThemeProvider::kColorNTPText = "ntp_text"; |
| 46 const char* BrowserThemeProvider::kColorNTPLink = "ntp_link"; | 46 const char* BrowserThemeProvider::kColorNTPLink = "ntp_link"; |
| 47 const char* BrowserThemeProvider::kColorNTPHeader = "ntp_header"; |
| 47 const char* BrowserThemeProvider::kColorNTPSection = "ntp_section"; | 48 const char* BrowserThemeProvider::kColorNTPSection = "ntp_section"; |
| 48 const char* BrowserThemeProvider::kColorNTPSectionText = "ntp_section_text"; | 49 const char* BrowserThemeProvider::kColorNTPSectionText = "ntp_section_text"; |
| 49 const char* BrowserThemeProvider::kColorNTPSectionLink = "ntp_section_link"; | 50 const char* BrowserThemeProvider::kColorNTPSectionLink = "ntp_section_link"; |
| 50 const char* BrowserThemeProvider::kColorControlBackground = | 51 const char* BrowserThemeProvider::kColorControlBackground = |
| 51 "control_background"; | 52 "control_background"; |
| 52 const char* BrowserThemeProvider::kColorButtonBackground = "button_background"; | 53 const char* BrowserThemeProvider::kColorButtonBackground = "button_background"; |
| 53 | 54 |
| 54 // Strings used by themes to identify tints to apply to different parts of | 55 // Strings used by themes to identify tints to apply to different parts of |
| 55 // our UI. The frame tints apply to the frame color and produce the | 56 // our UI. The frame tints apply to the frame color and produce the |
| 56 // COLOR_FRAME* colors. | 57 // COLOR_FRAME* colors. |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 const SkColor BrowserThemeProvider::kDefaultColorBackgroundTabText = | 99 const SkColor BrowserThemeProvider::kDefaultColorBackgroundTabText = |
| 99 SkColorSetRGB(64, 64, 64); | 100 SkColorSetRGB(64, 64, 64); |
| 100 const SkColor BrowserThemeProvider::kDefaultColorBookmarkText = | 101 const SkColor BrowserThemeProvider::kDefaultColorBookmarkText = |
| 101 SkColorSetRGB(18, 50, 114); | 102 SkColorSetRGB(18, 50, 114); |
| 102 const SkColor BrowserThemeProvider::kDefaultColorNTPBackground = | 103 const SkColor BrowserThemeProvider::kDefaultColorNTPBackground = |
| 103 SkColorSetRGB(255, 255, 255); | 104 SkColorSetRGB(255, 255, 255); |
| 104 const SkColor BrowserThemeProvider::kDefaultColorNTPText = | 105 const SkColor BrowserThemeProvider::kDefaultColorNTPText = |
| 105 SkColorSetRGB(0, 0, 0); | 106 SkColorSetRGB(0, 0, 0); |
| 106 const SkColor BrowserThemeProvider::kDefaultColorNTPLink = | 107 const SkColor BrowserThemeProvider::kDefaultColorNTPLink = |
| 107 SkColorSetRGB(0, 0, 0); | 108 SkColorSetRGB(0, 0, 0); |
| 109 const SkColor BrowserThemeProvider::kDefaultColorNTPHeader = |
| 110 SkColorSetRGB(75, 140, 220); |
| 108 const SkColor BrowserThemeProvider::kDefaultColorNTPSection = | 111 const SkColor BrowserThemeProvider::kDefaultColorNTPSection = |
| 109 SkColorSetRGB(75, 140, 220); | 112 SkColorSetRGB(229, 239, 254); |
| 110 const SkColor BrowserThemeProvider::kDefaultColorNTPSectionText = | 113 const SkColor BrowserThemeProvider::kDefaultColorNTPSectionText = |
| 111 SkColorSetRGB(255, 255, 255); | 114 SkColorSetRGB(0, 0, 0); |
| 112 const SkColor BrowserThemeProvider::kDefaultColorNTPSectionLink = | 115 const SkColor BrowserThemeProvider::kDefaultColorNTPSectionLink = |
| 113 SkColorSetRGB(127, 148, 173); | 116 SkColorSetRGB(16, 50, 105); |
| 114 const SkColor BrowserThemeProvider::kDefaultColorControlBackground = NULL; | 117 const SkColor BrowserThemeProvider::kDefaultColorControlBackground = NULL; |
| 115 const SkColor BrowserThemeProvider::kDefaultColorButtonBackground = NULL; | 118 const SkColor BrowserThemeProvider::kDefaultColorButtonBackground = NULL; |
| 116 | 119 |
| 117 // Default tints. | 120 // Default tints. |
| 118 const skia::HSL BrowserThemeProvider::kDefaultTintButtons = { -1, -1, -1 }; | 121 const skia::HSL BrowserThemeProvider::kDefaultTintButtons = { -1, -1, -1 }; |
| 119 const skia::HSL BrowserThemeProvider::kDefaultTintFrame = { -1, -1, -1 }; | 122 const skia::HSL BrowserThemeProvider::kDefaultTintFrame = { -1, -1, -1 }; |
| 120 const skia::HSL BrowserThemeProvider::kDefaultTintFrameInactive = | 123 const skia::HSL BrowserThemeProvider::kDefaultTintFrameInactive = |
| 121 { -1, -1, 0.75f }; | 124 { -1, -1, 0.75f }; |
| 122 const skia::HSL BrowserThemeProvider::kDefaultTintFrameIncognito = | 125 const skia::HSL BrowserThemeProvider::kDefaultTintFrameIncognito = |
| 123 { -1, 0.2f, 0.35f }; | 126 { -1, 0.2f, 0.35f }; |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 case COLOR_BACKGROUND_TAB_TEXT: | 278 case COLOR_BACKGROUND_TAB_TEXT: |
| 276 return kColorBackgroundTabText; | 279 return kColorBackgroundTabText; |
| 277 case COLOR_BOOKMARK_TEXT: | 280 case COLOR_BOOKMARK_TEXT: |
| 278 return kColorBookmarkText; | 281 return kColorBookmarkText; |
| 279 case COLOR_NTP_BACKGROUND: | 282 case COLOR_NTP_BACKGROUND: |
| 280 return kColorNTPBackground; | 283 return kColorNTPBackground; |
| 281 case COLOR_NTP_TEXT: | 284 case COLOR_NTP_TEXT: |
| 282 return kColorNTPText; | 285 return kColorNTPText; |
| 283 case COLOR_NTP_LINK: | 286 case COLOR_NTP_LINK: |
| 284 return kColorNTPLink; | 287 return kColorNTPLink; |
| 288 case COLOR_NTP_HEADER: |
| 289 return kColorNTPHeader; |
| 285 case COLOR_NTP_SECTION: | 290 case COLOR_NTP_SECTION: |
| 286 return kColorNTPSection; | 291 return kColorNTPSection; |
| 287 case COLOR_NTP_SECTION_TEXT: | 292 case COLOR_NTP_SECTION_TEXT: |
| 288 return kColorNTPSectionText; | 293 return kColorNTPSectionText; |
| 289 case COLOR_NTP_SECTION_LINK: | 294 case COLOR_NTP_SECTION_LINK: |
| 290 return kColorNTPSectionLink; | 295 return kColorNTPSectionLink; |
| 291 case COLOR_CONTROL_BACKGROUND: | 296 case COLOR_CONTROL_BACKGROUND: |
| 292 return kColorControlBackground; | 297 return kColorControlBackground; |
| 293 case COLOR_BUTTON_BACKGROUND: | 298 case COLOR_BUTTON_BACKGROUND: |
| 294 return kColorButtonBackground; | 299 return kColorButtonBackground; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 315 case COLOR_BACKGROUND_TAB_TEXT: | 320 case COLOR_BACKGROUND_TAB_TEXT: |
| 316 return kDefaultColorBackgroundTabText; | 321 return kDefaultColorBackgroundTabText; |
| 317 case COLOR_BOOKMARK_TEXT: | 322 case COLOR_BOOKMARK_TEXT: |
| 318 return kDefaultColorBookmarkText; | 323 return kDefaultColorBookmarkText; |
| 319 case COLOR_NTP_BACKGROUND: | 324 case COLOR_NTP_BACKGROUND: |
| 320 return kDefaultColorNTPBackground; | 325 return kDefaultColorNTPBackground; |
| 321 case COLOR_NTP_TEXT: | 326 case COLOR_NTP_TEXT: |
| 322 return kDefaultColorNTPText; | 327 return kDefaultColorNTPText; |
| 323 case COLOR_NTP_LINK: | 328 case COLOR_NTP_LINK: |
| 324 return kDefaultColorNTPLink; | 329 return kDefaultColorNTPLink; |
| 330 case COLOR_NTP_HEADER: |
| 331 return kDefaultColorNTPHeader; |
| 325 case COLOR_NTP_SECTION: | 332 case COLOR_NTP_SECTION: |
| 326 return kDefaultColorNTPSection; | 333 return kDefaultColorNTPSection; |
| 327 case COLOR_NTP_SECTION_TEXT: | 334 case COLOR_NTP_SECTION_TEXT: |
| 328 return kDefaultColorNTPSectionText; | 335 return kDefaultColorNTPSectionText; |
| 329 case COLOR_NTP_SECTION_LINK: | 336 case COLOR_NTP_SECTION_LINK: |
| 330 return kDefaultColorNTPSectionLink; | 337 return kDefaultColorNTPSectionLink; |
| 331 case COLOR_CONTROL_BACKGROUND: | 338 case COLOR_CONTROL_BACKGROUND: |
| 332 return kDefaultColorControlBackground; | 339 return kDefaultColorControlBackground; |
| 333 case COLOR_BUTTON_BACKGROUND: | 340 case COLOR_BUTTON_BACKGROUND: |
| 334 return kDefaultColorButtonBackground; | 341 return kDefaultColorButtonBackground; |
| 335 default: | 342 default: |
| 336 // Return a debugging red color. | 343 // Return a debugging red color. |
| 337 return 0xffff0000; | 344 return 0xffff0000; |
| 338 } | 345 } |
| 339 } | 346 } |
| 340 | 347 |
| 341 SkColor BrowserThemeProvider::GetColor(int id) { | 348 SkColor BrowserThemeProvider::GetColor(int id) { |
| 342 DCHECK(CalledOnValidThread()); | 349 DCHECK(CalledOnValidThread()); |
| 343 | 350 |
| 351 // Special-case NTP header - if the color isn't provided, we fall back to |
| 352 // the section color. |
| 353 if (id == COLOR_NTP_HEADER) { |
| 354 if (colors_.find(kColorNTPHeader) != colors_.end()) |
| 355 return colors_[kColorNTPHeader]; |
| 356 else if (colors_.find(kColorNTPSection) != colors_.end()) |
| 357 return colors_[kColorNTPSection]; |
| 358 return GetDefaultColor(id); |
| 359 } |
| 360 |
| 344 // TODO(glen): Figure out if we need to tint these. http://crbug.com/11578 | 361 // TODO(glen): Figure out if we need to tint these. http://crbug.com/11578 |
| 345 ColorMap::iterator color_iter = colors_.find(GetColorKey(id)); | 362 ColorMap::iterator color_iter = colors_.find(GetColorKey(id)); |
| 346 if (color_iter != colors_.end()) | 363 if (color_iter != colors_.end()) |
| 347 return color_iter->second; | 364 return color_iter->second; |
| 348 else | 365 else |
| 349 return GetDefaultColor(id); | 366 return GetDefaultColor(id); |
| 350 } | 367 } |
| 351 | 368 |
| 352 bool BrowserThemeProvider::GetDisplayProperty(int id, int* result) { | 369 bool BrowserThemeProvider::GetDisplayProperty(int id, int* result) { |
| 353 switch (id) { | 370 switch (id) { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 ClearCaches(); | 436 ClearCaches(); |
| 420 | 437 |
| 421 DCHECK(extension); | 438 DCHECK(extension); |
| 422 DCHECK(extension->IsTheme()); | 439 DCHECK(extension->IsTheme()); |
| 423 SetImageData(extension->GetThemeImages(), | 440 SetImageData(extension->GetThemeImages(), |
| 424 extension->path()); | 441 extension->path()); |
| 425 SetColorData(extension->GetThemeColors()); | 442 SetColorData(extension->GetThemeColors()); |
| 426 SetTintData(extension->GetThemeTints()); | 443 SetTintData(extension->GetThemeTints()); |
| 427 SetDisplayPropertyData(extension->GetThemeDisplayProperties()); | 444 SetDisplayPropertyData(extension->GetThemeDisplayProperties()); |
| 428 raw_data_.clear(); | 445 raw_data_.clear(); |
| 429 GenerateFrameColors(); | |
| 430 GenerateFrameImages(); | |
| 431 GenerateTabImages(); | |
| 432 | 446 |
| 433 SaveImageData(extension->GetThemeImages()); | 447 SaveImageData(extension->GetThemeImages()); |
| 434 SaveColorData(); | 448 SaveColorData(); |
| 435 SaveTintData(); | 449 SaveTintData(); |
| 436 SaveDisplayPropertyData(); | 450 SaveDisplayPropertyData(); |
| 437 SaveThemeID(extension->id()); | 451 SaveThemeID(extension->id()); |
| 438 | 452 |
| 453 GenerateFrameColors(); |
| 454 GenerateFrameImages(); |
| 455 GenerateTabImages(); |
| 456 |
| 439 NotifyThemeChanged(); | 457 NotifyThemeChanged(); |
| 440 UserMetrics::RecordAction(L"Themes_Installed", profile_); | 458 UserMetrics::RecordAction(L"Themes_Installed", profile_); |
| 441 } | 459 } |
| 442 | 460 |
| 443 void BrowserThemeProvider::UseDefaultTheme() { | 461 void BrowserThemeProvider::UseDefaultTheme() { |
| 444 ClearAllThemeData(); | 462 ClearAllThemeData(); |
| 445 NotifyThemeChanged(); | 463 NotifyThemeChanged(); |
| 446 UserMetrics::RecordAction(L"Themes_Reset", profile_); | 464 UserMetrics::RecordAction(L"Themes_Reset", profile_); |
| 447 } | 465 } |
| 448 | 466 |
| (...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1020 delete i->second; | 1038 delete i->second; |
| 1021 } | 1039 } |
| 1022 image_cache_.clear(); | 1040 image_cache_.clear(); |
| 1023 } | 1041 } |
| 1024 | 1042 |
| 1025 #if defined(TOOLKIT_VIEWS) | 1043 #if defined(TOOLKIT_VIEWS) |
| 1026 void BrowserThemeProvider::FreePlatformCaches() { | 1044 void BrowserThemeProvider::FreePlatformCaches() { |
| 1027 // Views (Skia) has no platform image cache to clear. | 1045 // Views (Skia) has no platform image cache to clear. |
| 1028 } | 1046 } |
| 1029 #endif | 1047 #endif |
| OLD | NEW |