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

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

Issue 10928231: Fix ResourceBundleImageSource (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 8 years, 3 months 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
« no previous file with comments | « ui/base/resource/resource_bundle.cc ('k') | ui/base/ui_base_switches.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/resource/resource_bundle_unittest.cc
diff --git a/ui/base/resource/resource_bundle_unittest.cc b/ui/base/resource/resource_bundle_unittest.cc
index 6c4f953dcaae50a3e16e481ab20479159ad9cc53..df3a369b645860c9cdc2ae6ad466cf0b4195ba4f 100644
--- a/ui/base/resource/resource_bundle_unittest.cc
+++ b/ui/base/resource/resource_bundle_unittest.cc
@@ -15,6 +15,9 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/layout.h"
+#include "ui/base/resource/data_pack.h"
+#include "ui/gfx/codec/png_codec.h"
+#include "ui/gfx/image/image_skia.h"
using ::testing::_;
using ::testing::Between;
@@ -73,6 +76,22 @@ class MockResourceBundleDelegate : public ui::ResourceBundle::Delegate {
}
};
+// Creates datapack at |path| with a single bitmap at resource ID 3
+// which is |edge_size|x|edge_size| pixels.
+void CreateDataPackWithSingleBitmap(const FilePath& path,
+ int edge_size) {
+ SkBitmap bitmap;
+ bitmap.setConfig(SkBitmap::kARGB_8888_Config, edge_size, edge_size);
+ bitmap.allocPixels();
+ std::vector<unsigned char> bitmap_data;
+ EXPECT_TRUE(gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &bitmap_data));
+
+ std::map<uint16, base::StringPiece> resources;
+ resources[3u] = base::StringPiece(
+ reinterpret_cast<const char*>(&bitmap_data[0]), bitmap_data.size());
+ DataPack::WritePack(path, resources, ui::DataPack::BINARY);
+}
+
} // namespace
TEST(ResourceBundle, DelegateGetPathForResourcePack) {
@@ -307,4 +326,46 @@ TEST(ResourceBundle, LocaleDataPakExists) {
EXPECT_FALSE(resource_bundle.LocaleDataPakExists("not_a_real_locale"));
}
+// Test requesting image reps at various scale factors from the image returned
+// via ResourceBundle::GetImageNamed().
+TEST(ResourceBundle, GetImageNamed) {
+ // On Windows, the default data is compiled into the binary so this does
+ // nothing.
+ ScopedTempDir dir;
+ ASSERT_TRUE(dir.CreateUniqueTempDir());
+
+ FilePath locale_path = dir.path().Append(FILE_PATH_LITERAL("empty.pak"));
+ FilePath data_path = dir.path().Append(FILE_PATH_LITERAL("sample.pak"));
+ FilePath data_2x_path = dir.path().Append(FILE_PATH_LITERAL("sample_2x.pak"));
+
+ {
+ // Create the pak files.
+ ASSERT_EQ(file_util::WriteFile(locale_path, kEmptyPakContents,
+ kEmptyPakSize), static_cast<int>(kEmptyPakSize));
+ CreateDataPackWithSingleBitmap(data_path, 10);
+ CreateDataPackWithSingleBitmap(data_2x_path, 20);
+
+ // Load the regular and 2x pak files.
+ ResourceBundle resource_bundle(NULL);
+ resource_bundle.LoadTestResources(data_path, locale_path);
+ resource_bundle.AddDataPackFromPath(data_2x_path, SCALE_FACTOR_200P);
+
+ gfx::ImageSkia* image_skia = resource_bundle.GetImageSkiaNamed(3);
+
+ // Resource ID 3 exists in both 1x and 2x paks. Image reps should be
+ // available for both scale factors in |image_skia|.
+ gfx::ImageSkiaRep image_rep =
+ image_skia->GetRepresentation(ui::SCALE_FACTOR_100P);
+ EXPECT_EQ(ui::SCALE_FACTOR_100P, image_rep.scale_factor());
+ image_rep = image_skia->GetRepresentation(ui::SCALE_FACTOR_200P);
+ EXPECT_EQ(ui::SCALE_FACTOR_200P, image_rep.scale_factor());
+
+ // The 1.4x pack was not loaded. Requesting the 1.4x resource should return
+ // either the 1x or the 2x resource.
+ image_rep = image_skia->GetRepresentation(ui::SCALE_FACTOR_140P);
+ EXPECT_TRUE(image_rep.scale_factor() == ui::SCALE_FACTOR_100P ||
+ image_rep.scale_factor() == ui::SCALE_FACTOR_200P);
+ }
+}
+
} // namespace ui
« no previous file with comments | « ui/base/resource/resource_bundle.cc ('k') | ui/base/ui_base_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698