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 1dcee7a17d9f82ac4b3cb5dad2d6df046f24c37e..71a5d395001a98517d752552d8be0a8a02fdb812 100644 |
--- a/ui/base/resource/resource_bundle_unittest.cc |
+++ b/ui/base/resource/resource_bundle_unittest.cc |
@@ -270,6 +270,40 @@ TEST_F(ResourceBundleTest, DelegateLoadDataResourceBytes) { |
EXPECT_EQ(static_memory, result); |
} |
+TEST_F(ResourceBundleTest, LoadDataResourceBytesGzip) { |
+ base::ScopedTempDir dir; |
+ ASSERT_TRUE(dir.CreateUniqueTempDir()); |
+ base::FilePath data_path = dir.path().Append(FILE_PATH_LITERAL("sample.pak")); |
+ |
+ char compressedEntryPakContents[] = { |
+ 0x04, 0x00, 0x00, 0x00, // header(version |
+ 0x01, 0x00, 0x00, 0x00, // no. entries |
+ 0x01, // encoding) |
+ 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, // index entry 4 |
+ 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, // extra entry for the size of last |
+ // Entry 4 is a compressed gzip file (with custom leading byte) saying: |
+ // "This is compressed\n" |
+ ResourceBundle::CUSTOM_GZIP_HEADER[0], 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, |
+ 0x00, 0x00, 0x00, 0x03, 0x0b, 0xc9, 0xc8, 0x2c, 0x56, 0x00, 0xa2, 0xe4, |
+ 0xfc, 0xdc, 0x82, 0xa2, 0xd4, 0xe2, 0xe2, 0xd4, 0x14, 0x2e, 0x00, 0xd9, |
+ 0xf8, 0xc4, 0x6f, 0x13, 0x00, 0x00, 0x00}; |
+ |
+ size_t compressedEntryPakSize = sizeof(compressedEntryPakContents); |
+ |
+ // Dump contents into the pak file. |
+ ASSERT_EQ(base::WriteFile(data_path, compressedEntryPakContents, |
+ compressedEntryPakSize), static_cast<int>(compressedEntryPakSize)); |
+ |
+ ResourceBundle* resource_bundle = CreateResourceBundle(nullptr); |
+ resource_bundle->AddDataPackFromPath(data_path, SCALE_FACTOR_NONE); |
+ |
+ // Load the compressed resource. |
+ scoped_refptr<base::RefCountedMemory> result = |
+ resource_bundle->LoadDataResourceBytes(4); |
+ EXPECT_STREQ("This is compressed\n", |
+ reinterpret_cast<const char*>(result->front())); |
+} |
+ |
TEST_F(ResourceBundleTest, DelegateGetRawDataResource) { |
MockResourceBundleDelegate delegate; |
ResourceBundle* resource_bundle = CreateResourceBundle(&delegate); |