| 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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 #endif | 346 #endif |
| 347 } | 347 } |
| 348 | 348 |
| 349 bool BrowserThemeProvider::HasCustomImage(int id) { | 349 bool BrowserThemeProvider::HasCustomImage(int id) { |
| 350 if (!themeable_images_[id]) | 350 if (!themeable_images_[id]) |
| 351 return false; | 351 return false; |
| 352 | 352 |
| 353 return (images_.find(id) != images_.end()); | 353 return (images_.find(id) != images_.end()); |
| 354 } | 354 } |
| 355 | 355 |
| 356 bool BrowserThemeProvider::GetRawData(int id, |
| 357 std::vector<unsigned char>* raw_data) { |
| 358 if (raw_data_.find(id) != raw_data_.end()) { |
| 359 *raw_data = raw_data_[id]; |
| 360 return true; |
| 361 } |
| 362 |
| 363 if (!ReadThemeFileData(id, raw_data)) { |
| 364 if (!rb_.LoadImageResourceBytes(id, raw_data)) |
| 365 return false; |
| 366 } |
| 367 |
| 368 raw_data_[id] = *raw_data; |
| 369 return true; |
| 370 } |
| 371 |
| 356 void BrowserThemeProvider::SetTheme(Extension* extension) { | 372 void BrowserThemeProvider::SetTheme(Extension* extension) { |
| 357 // Clear our image cache. | 373 // Clear our image cache. |
| 358 ClearCaches(); | 374 ClearCaches(); |
| 359 | 375 |
| 360 DCHECK(extension); | 376 DCHECK(extension); |
| 361 DCHECK(extension->IsTheme()); | 377 DCHECK(extension->IsTheme()); |
| 362 SetImageData(extension->GetThemeImages(), | 378 SetImageData(extension->GetThemeImages(), |
| 363 extension->path()); | 379 extension->path()); |
| 364 SetColorData(extension->GetThemeColors()); | 380 SetColorData(extension->GetThemeColors()); |
| 365 SetTintData(extension->GetThemeTints()); | 381 SetTintData(extension->GetThemeTints()); |
| 366 SetDisplayPropertyData(extension->GetThemeDisplayProperties()); | 382 SetDisplayPropertyData(extension->GetThemeDisplayProperties()); |
| 383 raw_data_.clear(); |
| 367 GenerateFrameColors(); | 384 GenerateFrameColors(); |
| 368 GenerateFrameImages(); | 385 GenerateFrameImages(); |
| 369 GenerateTabImages(); | 386 GenerateTabImages(); |
| 370 | 387 |
| 371 SaveImageData(extension->GetThemeImages()); | 388 SaveImageData(extension->GetThemeImages()); |
| 372 SaveColorData(); | 389 SaveColorData(); |
| 373 SaveTintData(); | 390 SaveTintData(); |
| 374 SaveDisplayPropertyData(); | 391 SaveDisplayPropertyData(); |
| 375 SaveThemeID(extension->id()); | 392 SaveThemeID(extension->id()); |
| 376 | 393 |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 773 } | 790 } |
| 774 | 791 |
| 775 void BrowserThemeProvider::ClearAllThemeData() { | 792 void BrowserThemeProvider::ClearAllThemeData() { |
| 776 // Clear our image cache. | 793 // Clear our image cache. |
| 777 ClearCaches(); | 794 ClearCaches(); |
| 778 | 795 |
| 779 images_.clear(); | 796 images_.clear(); |
| 780 colors_.clear(); | 797 colors_.clear(); |
| 781 tints_.clear(); | 798 tints_.clear(); |
| 782 display_properties_.clear(); | 799 display_properties_.clear(); |
| 800 raw_data_.clear(); |
| 783 | 801 |
| 784 SaveImageData(NULL); | 802 SaveImageData(NULL); |
| 785 SaveColorData(); | 803 SaveColorData(); |
| 786 SaveTintData(); | 804 SaveTintData(); |
| 787 SaveDisplayPropertyData(); | 805 SaveDisplayPropertyData(); |
| 788 SaveThemeID(kDefaultThemeID); | 806 SaveThemeID(kDefaultThemeID); |
| 789 } | 807 } |
| 790 | 808 |
| 791 SkBitmap* BrowserThemeProvider::GenerateBitmap(int id) { | 809 SkBitmap* BrowserThemeProvider::GenerateBitmap(int id) { |
| 792 if (id == IDR_THEME_TAB_BACKGROUND || | 810 if (id == IDR_THEME_TAB_BACKGROUND || |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 962 delete i->second; | 980 delete i->second; |
| 963 } | 981 } |
| 964 image_cache_.clear(); | 982 image_cache_.clear(); |
| 965 } | 983 } |
| 966 | 984 |
| 967 #if defined(TOOLKIT_VIEWS) | 985 #if defined(TOOLKIT_VIEWS) |
| 968 void BrowserThemeProvider::FreePlatformCaches() { | 986 void BrowserThemeProvider::FreePlatformCaches() { |
| 969 // Views (Skia) has no platform image cache to clear. | 987 // Views (Skia) has no platform image cache to clear. |
| 970 } | 988 } |
| 971 #endif | 989 #endif |
| OLD | NEW |