Index: chrome/browser/themes/browser_theme_pack.cc |
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc |
index 4f3da00892f7a834b1cd3985999ea460ed09c584..a352c67826141a741a3250a9ad50002f8f22b15d 100644 |
--- a/chrome/browser/themes/browser_theme_pack.cc |
+++ b/chrome/browser/themes/browser_theme_pack.cc |
@@ -546,13 +546,13 @@ |
} |
// static |
-void BrowserThemePack::BuildFromExtension( |
- const extensions::Extension* extension, |
- scoped_refptr<BrowserThemePack> pack) { |
+scoped_refptr<BrowserThemePack> BrowserThemePack::BuildFromExtension( |
+ const Extension* extension) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
DCHECK(extension); |
DCHECK(extension->is_theme()); |
- DCHECK(!pack->is_valid()); |
- |
+ |
+ scoped_refptr<BrowserThemePack> pack(new BrowserThemePack); |
pack->BuildHeader(extension); |
pack->BuildTintsFromJSON(extensions::ThemeInfo::GetTints(extension)); |
pack->BuildColorsFromJSON(extensions::ThemeInfo::GetColors(extension)); |
@@ -567,14 +567,14 @@ |
&file_paths); |
pack->BuildSourceImagesArray(file_paths); |
- if (!pack->LoadRawBitmapsTo(file_paths, &pack->images_)) |
- return; |
- |
- pack->CreateImages(&pack->images_); |
+ if (!pack->LoadRawBitmapsTo(file_paths, &pack->images_on_ui_thread_)) |
+ return NULL; |
+ |
+ pack->CreateImages(&pack->images_on_ui_thread_); |
// Make sure the |images_on_file_thread_| has bitmaps for supported |
// scale factors before passing to FILE thread. |
- pack->images_on_file_thread_ = pack->images_; |
+ pack->images_on_file_thread_ = pack->images_on_ui_thread_; |
for (ImageCache::iterator it = pack->images_on_file_thread_.begin(); |
it != pack->images_on_file_thread_.end(); ++it) { |
gfx::ImageSkia* image_skia = |
@@ -582,13 +582,13 @@ |
image_skia->MakeThreadSafe(); |
} |
- // Set ThemeImageSource on |images_| to resample the source |
+ // Set ThemeImageSource on |images_on_ui_thread_| to resample the source |
// image if a caller of BrowserThemePack::GetImageNamed() requests an |
// ImageSkiaRep for a scale factor not specified by the theme author. |
// Callers of BrowserThemePack::GetImageNamed() to be able to retrieve |
// ImageSkiaReps for all supported scale factors. |
- for (ImageCache::iterator it = pack->images_.begin(); |
- it != pack->images_.end(); ++it) { |
+ for (ImageCache::iterator it = pack->images_on_ui_thread_.begin(); |
+ it != pack->images_on_ui_thread_.end(); ++it) { |
const gfx::ImageSkia source_image_skia = it->second.AsImageSkia(); |
ThemeImageSource* source = new ThemeImageSource(source_image_skia); |
// image_skia takes ownership of source. |
@@ -603,7 +603,7 @@ |
} |
// The BrowserThemePack is now in a consistent state. |
- pack->is_valid_ = true; |
+ return pack; |
} |
// static |
@@ -671,7 +671,6 @@ |
<< "from those supported by platform."; |
return NULL; |
} |
- pack->is_valid_ = true; |
return pack; |
} |
@@ -682,13 +681,6 @@ |
return true; |
return false; |
-} |
- |
-BrowserThemePack::BrowserThemePack() : CustomThemeSupplier(EXTENSION) { |
- scale_factors_ = ui::GetSupportedScaleFactors(); |
- // On Windows HiDPI SCALE_FACTOR_100P may not be supported by default. |
- if (!base::ContainsValue(scale_factors_, ui::SCALE_FACTOR_100P)) |
- scale_factors_.push_back(ui::SCALE_FACTOR_100P); |
} |
bool BrowserThemePack::WriteToDisk(const base::FilePath& path) const { |
@@ -779,8 +771,8 @@ |
return gfx::Image(); |
// Check if the image is cached. |
- ImageCache::const_iterator image_iter = images_.find(prs_id); |
- if (image_iter != images_.end()) |
+ ImageCache::const_iterator image_iter = images_on_ui_thread_.find(prs_id); |
+ if (image_iter != images_on_ui_thread_.end()) |
return image_iter->second; |
ThemeImagePngSource::PngMap png_map; |
@@ -794,7 +786,7 @@ |
gfx::ImageSkia image_skia(new ThemeImagePngSource(png_map), 1.0f); |
// |image_skia| takes ownership of ThemeImagePngSource. |
gfx::Image ret = gfx::Image(image_skia); |
- images_[prs_id] = ret; |
+ images_on_ui_thread_[prs_id] = ret; |
return ret; |
} |
@@ -837,6 +829,19 @@ |
} |
// private: |
+ |
+BrowserThemePack::BrowserThemePack() |
+ : CustomThemeSupplier(EXTENSION), |
+ header_(NULL), |
+ tints_(NULL), |
+ colors_(NULL), |
+ display_properties_(NULL), |
+ source_images_(NULL) { |
+ scale_factors_ = ui::GetSupportedScaleFactors(); |
+ // On Windows HiDPI SCALE_FACTOR_100P may not be supported by default. |
+ if (!base::ContainsValue(scale_factors_, ui::SCALE_FACTOR_100P)) |
+ scale_factors_.push_back(ui::SCALE_FACTOR_100P); |
+} |
void BrowserThemePack::BuildHeader(const Extension* extension) { |
header_ = new BrowserThemePackHeader; |