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