Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(885)

Unified Diff: ui/base/resource/resource_bundle.cc

Issue 11301007: Load the resources for max scale factor first. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/base/resource/resource_bundle.cc
diff --git a/ui/base/resource/resource_bundle.cc b/ui/base/resource/resource_bundle.cc
index 420330af497ae4b21ac944646247dde0cc210868..7b53c132c1d76b2613c71eca7048631e45bfc581 100644
--- a/ui/base/resource/resource_bundle.cc
+++ b/ui/base/resource/resource_bundle.cc
@@ -109,7 +109,7 @@ class ResourceBundle::ResourceBundleImageSource : public gfx::ImageSkiaSource {
ui::ScaleFactor scale_factor) OVERRIDE {
SkBitmap image;
bool fell_back_to_1x = false;
- bool found = rb_->LoadBitmap(resource_id_, scale_factor,
+ bool found = rb_->LoadBitmap(resource_id_, &scale_factor,
&image, &fell_back_to_1x);
if (!found)
return gfx::ImageSkiaRep();
@@ -361,14 +361,11 @@ gfx::Image& ResourceBundle::GetImageNamed(int resource_id) {
DCHECK(!delegate_ && !data_packs_.empty()) <<
"Missing call to SetResourcesDataDLL?";
- // TODO(oshima): This should be GetPrimaryDisplay().device_scale_factor(),
- // but GetPrimaryDisplay() crashes at startup.
- ScaleFactor primary_scale_factor = SCALE_FACTOR_100P;
// ResourceBundle::GetSharedInstance() is destroyed after the
// BrowserMainLoop has finished running. |image_skia| is guaranteed to be
// destroyed before the resource bundle is destroyed.
gfx::ImageSkia image_skia(new ResourceBundleImageSource(this, resource_id),
- primary_scale_factor);
+ max_scale_factor());
if (image_skia.isNull()) {
LOG(WARNING) << "Unable to load image with id " << resource_id;
NOTREACHED(); // Want to assert in debug mode.
@@ -438,7 +435,8 @@ base::StringPiece ResourceBundle::GetRawDataResourceForScale(
}
}
for (size_t i = 0; i < data_packs_.size(); i++) {
- if (data_packs_[i]->GetScaleFactor() == ui::SCALE_FACTOR_100P &&
+ if ((data_packs_[i]->GetScaleFactor() == ui::SCALE_FACTOR_100P ||
+ data_packs_[i]->GetScaleFactor() == ui::SCALE_FACTOR_NONE) &&
data_packs_[i]->GetStringPiece(resource_id, &data))
return data;
}
@@ -660,14 +658,23 @@ bool ResourceBundle::LoadBitmap(const ResourceHandle& data_handle,
}
bool ResourceBundle::LoadBitmap(int resource_id,
- ScaleFactor scale_factor,
+ ScaleFactor* scale_factor,
SkBitmap* bitmap,
bool* fell_back_to_1x) const {
DCHECK(fell_back_to_1x);
for (size_t i = 0; i < data_packs_.size(); ++i) {
- if (data_packs_[i]->GetScaleFactor() == scale_factor) {
- if (LoadBitmap(*data_packs_[i], resource_id, bitmap, fell_back_to_1x))
- return true;
+ // If the resource is in the package with SCALE_FACTOR_NONE, it
+ // can be used in any scale factor, but set 100P in ImageSkia so
+ // that it will be scaled property.
+ if (data_packs_[i]->GetScaleFactor() == ui::SCALE_FACTOR_NONE &&
+ LoadBitmap(*data_packs_[i], resource_id, bitmap, fell_back_to_1x)) {
+ *scale_factor = ui::SCALE_FACTOR_100P;
+ DCHECK(!*fell_back_to_1x);
+ return true;
+ }
+ if (data_packs_[i]->GetScaleFactor() == *scale_factor &&
+ LoadBitmap(*data_packs_[i], resource_id, bitmap, fell_back_to_1x)) {
+ return true;
}
}
return false;

Powered by Google App Engine
This is Rietveld 408576698