| 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;
|
|
|