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

Side by Side Diff: ui/base/resource/data_pack_unittest.cc

Issue 2989443002: Revert of Add deduplication logic to .pak files (Closed)
Patch Set: Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « ui/base/resource/data_pack_literal.cc ('k') | ui/base/resource/resource_bundle_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/base/resource/data_pack.h" 5 #include "ui/base/resource/data_pack.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/files/file.h" 12 #include "base/files/file.h"
13 #include "base/files/file_path.h" 13 #include "base/files/file_path.h"
14 #include "base/files/file_util.h" 14 #include "base/files/file_util.h"
15 #include "base/files/scoped_temp_dir.h" 15 #include "base/files/scoped_temp_dir.h"
16 #include "base/path_service.h" 16 #include "base/path_service.h"
17 #include "base/strings/string_piece.h" 17 #include "base/strings/string_piece.h"
18 #include "build/build_config.h" 18 #include "build/build_config.h"
19 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 #include "ui/base/resource/data_pack_literal.h"
21 #include "ui/base/ui_base_paths.h" 20 #include "ui/base/ui_base_paths.h"
22 21
23 namespace ui { 22 namespace ui {
24 23
25 class DataPackTest 24 class DataPackTest
26 : public testing::TestWithParam<DataPack::TextEncodingType> { 25 : public testing::TestWithParam<DataPack::TextEncodingType> {
27 public: 26 public:
28 DataPackTest() {} 27 DataPackTest() {}
29 }; 28 };
30 29
30 extern const char kSamplePakContents[];
31 extern const char kSampleCorruptPakContents[];
32 extern const size_t kSamplePakSize;
33 extern const size_t kSampleCorruptPakSize;
34
31 TEST(DataPackTest, LoadFromPath) { 35 TEST(DataPackTest, LoadFromPath) {
32 base::ScopedTempDir dir; 36 base::ScopedTempDir dir;
33 ASSERT_TRUE(dir.CreateUniqueTempDir()); 37 ASSERT_TRUE(dir.CreateUniqueTempDir());
34 base::FilePath data_path = 38 base::FilePath data_path =
35 dir.GetPath().Append(FILE_PATH_LITERAL("sample.pak")); 39 dir.GetPath().Append(FILE_PATH_LITERAL("sample.pak"));
36 40
37 // Dump contents into the pak file. 41 // Dump contents into the pak file.
38 ASSERT_EQ(base::WriteFile(data_path, kSamplePakContentsV4, kSamplePakSizeV4), 42 ASSERT_EQ(base::WriteFile(data_path, kSamplePakContents, kSamplePakSize),
39 static_cast<int>(kSamplePakSizeV4)); 43 static_cast<int>(kSamplePakSize));
40 44
41 // Load the file through the data pack API. 45 // Load the file through the data pack API.
42 DataPack pack(SCALE_FACTOR_100P); 46 DataPack pack(SCALE_FACTOR_100P);
43 ASSERT_TRUE(pack.LoadFromPath(data_path)); 47 ASSERT_TRUE(pack.LoadFromPath(data_path));
44 48
45 base::StringPiece data; 49 base::StringPiece data;
46 ASSERT_TRUE(pack.HasResource(4)); 50 ASSERT_TRUE(pack.HasResource(4));
47 ASSERT_TRUE(pack.GetStringPiece(4, &data)); 51 ASSERT_TRUE(pack.GetStringPiece(4, &data));
48 EXPECT_EQ("this is id 4", data); 52 EXPECT_EQ("this is id 4", data);
49 ASSERT_TRUE(pack.HasResource(6)); 53 ASSERT_TRUE(pack.HasResource(6));
(...skipping 11 matching lines...) Expand all
61 ASSERT_FALSE(pack.GetStringPiece(140, &data)); 65 ASSERT_FALSE(pack.GetStringPiece(140, &data));
62 } 66 }
63 67
64 TEST(DataPackTest, LoadFromFile) { 68 TEST(DataPackTest, LoadFromFile) {
65 base::ScopedTempDir dir; 69 base::ScopedTempDir dir;
66 ASSERT_TRUE(dir.CreateUniqueTempDir()); 70 ASSERT_TRUE(dir.CreateUniqueTempDir());
67 base::FilePath data_path = 71 base::FilePath data_path =
68 dir.GetPath().Append(FILE_PATH_LITERAL("sample.pak")); 72 dir.GetPath().Append(FILE_PATH_LITERAL("sample.pak"));
69 73
70 // Dump contents into the pak file. 74 // Dump contents into the pak file.
71 ASSERT_EQ(base::WriteFile(data_path, kSamplePakContentsV4, kSamplePakSizeV4), 75 ASSERT_EQ(base::WriteFile(data_path, kSamplePakContents, kSamplePakSize),
72 static_cast<int>(kSamplePakSizeV4)); 76 static_cast<int>(kSamplePakSize));
73 77
74 base::File file(data_path, base::File::FLAG_OPEN | base::File::FLAG_READ); 78 base::File file(data_path, base::File::FLAG_OPEN | base::File::FLAG_READ);
75 ASSERT_TRUE(file.IsValid()); 79 ASSERT_TRUE(file.IsValid());
76 80
77 // Load the file through the data pack API. 81 // Load the file through the data pack API.
78 DataPack pack(SCALE_FACTOR_100P); 82 DataPack pack(SCALE_FACTOR_100P);
79 ASSERT_TRUE(pack.LoadFromFile(std::move(file))); 83 ASSERT_TRUE(pack.LoadFromFile(std::move(file)));
80 84
81 base::StringPiece data; 85 base::StringPiece data;
82 ASSERT_TRUE(pack.HasResource(4)); 86 ASSERT_TRUE(pack.HasResource(4));
(...skipping 18 matching lines...) Expand all
101 base::ScopedTempDir dir; 105 base::ScopedTempDir dir;
102 ASSERT_TRUE(dir.CreateUniqueTempDir()); 106 ASSERT_TRUE(dir.CreateUniqueTempDir());
103 base::FilePath data_path = 107 base::FilePath data_path =
104 dir.GetPath().Append(FILE_PATH_LITERAL("sample.pak")); 108 dir.GetPath().Append(FILE_PATH_LITERAL("sample.pak"));
105 109
106 // Construct a file which has a non page-aligned zero-filled header followed 110 // Construct a file which has a non page-aligned zero-filled header followed
107 // by the actual pak file content. 111 // by the actual pak file content.
108 const char kPadding[5678] = {0}; 112 const char kPadding[5678] = {0};
109 ASSERT_EQ(static_cast<int>(sizeof(kPadding)), 113 ASSERT_EQ(static_cast<int>(sizeof(kPadding)),
110 base::WriteFile(data_path, kPadding, sizeof(kPadding))); 114 base::WriteFile(data_path, kPadding, sizeof(kPadding)));
111 ASSERT_TRUE( 115 ASSERT_TRUE(base::AppendToFile(
112 base::AppendToFile(data_path, kSamplePakContentsV4, kSamplePakSizeV4)); 116 data_path, kSamplePakContents, kSamplePakSize));
113 117
114 base::File file(data_path, base::File::FLAG_OPEN | base::File::FLAG_READ); 118 base::File file(data_path, base::File::FLAG_OPEN | base::File::FLAG_READ);
115 ASSERT_TRUE(file.IsValid()); 119 ASSERT_TRUE(file.IsValid());
116 120
117 // Load the file through the data pack API. 121 // Load the file through the data pack API.
118 DataPack pack(SCALE_FACTOR_100P); 122 DataPack pack(SCALE_FACTOR_100P);
119 base::MemoryMappedFile::Region region = {sizeof(kPadding), kSamplePakSizeV4}; 123 base::MemoryMappedFile::Region region = {sizeof(kPadding), kSamplePakSize};
120 ASSERT_TRUE(pack.LoadFromFileRegion(std::move(file), region)); 124 ASSERT_TRUE(pack.LoadFromFileRegion(std::move(file), region));
121 125
122 base::StringPiece data; 126 base::StringPiece data;
123 ASSERT_TRUE(pack.HasResource(4)); 127 ASSERT_TRUE(pack.HasResource(4));
124 ASSERT_TRUE(pack.GetStringPiece(4, &data)); 128 ASSERT_TRUE(pack.GetStringPiece(4, &data));
125 EXPECT_EQ("this is id 4", data); 129 EXPECT_EQ("this is id 4", data);
126 ASSERT_TRUE(pack.HasResource(6)); 130 ASSERT_TRUE(pack.HasResource(6));
127 ASSERT_TRUE(pack.GetStringPiece(6, &data)); 131 ASSERT_TRUE(pack.GetStringPiece(6, &data));
128 EXPECT_EQ("this is id 6", data); 132 EXPECT_EQ("this is id 6", data);
129 133
130 // Try reading zero-length data blobs, just in case. 134 // Try reading zero-length data blobs, just in case.
131 ASSERT_TRUE(pack.GetStringPiece(1, &data)); 135 ASSERT_TRUE(pack.GetStringPiece(1, &data));
132 EXPECT_EQ(0U, data.length()); 136 EXPECT_EQ(0U, data.length());
133 ASSERT_TRUE(pack.GetStringPiece(10, &data)); 137 ASSERT_TRUE(pack.GetStringPiece(10, &data));
134 EXPECT_EQ(0U, data.length()); 138 EXPECT_EQ(0U, data.length());
135 139
136 // Try looking up an invalid key. 140 // Try looking up an invalid key.
137 ASSERT_FALSE(pack.HasResource(140)); 141 ASSERT_FALSE(pack.HasResource(140));
138 ASSERT_FALSE(pack.GetStringPiece(140, &data)); 142 ASSERT_FALSE(pack.GetStringPiece(140, &data));
139 } 143 }
140 144
141 TEST(DataPackTest, LoadFromBufferV4) { 145 TEST(DataPackTest, LoadFromBuffer) {
142 DataPack pack(SCALE_FACTOR_100P); 146 DataPack pack(SCALE_FACTOR_100P);
143 147
144 ASSERT_TRUE(pack.LoadFromBuffer( 148 ASSERT_TRUE(pack.LoadFromBuffer(
145 base::StringPiece(kSamplePakContentsV4, kSamplePakSizeV4))); 149 base::StringPiece(kSamplePakContents, kSamplePakSize)));
146 150
147 base::StringPiece data; 151 base::StringPiece data;
148 ASSERT_TRUE(pack.HasResource(4)); 152 ASSERT_TRUE(pack.HasResource(4));
149 ASSERT_TRUE(pack.GetStringPiece(4, &data)); 153 ASSERT_TRUE(pack.GetStringPiece(4, &data));
150 EXPECT_EQ("this is id 4", data); 154 EXPECT_EQ("this is id 4", data);
151 ASSERT_TRUE(pack.HasResource(6)); 155 ASSERT_TRUE(pack.HasResource(6));
152 ASSERT_TRUE(pack.GetStringPiece(6, &data)); 156 ASSERT_TRUE(pack.GetStringPiece(6, &data));
153 EXPECT_EQ("this is id 6", data); 157 EXPECT_EQ("this is id 6", data);
154 158
155 // Try reading zero-length data blobs, just in case. 159 // Try reading zero-length data blobs, just in case.
156 ASSERT_TRUE(pack.GetStringPiece(1, &data)); 160 ASSERT_TRUE(pack.GetStringPiece(1, &data));
157 EXPECT_EQ(0U, data.length()); 161 EXPECT_EQ(0U, data.length());
158 ASSERT_TRUE(pack.GetStringPiece(10, &data)); 162 ASSERT_TRUE(pack.GetStringPiece(10, &data));
159 EXPECT_EQ(0U, data.length()); 163 EXPECT_EQ(0U, data.length());
160 164
161 // Try looking up an invalid key. 165 // Try looking up an invalid key.
162 ASSERT_FALSE(pack.HasResource(140)); 166 ASSERT_FALSE(pack.HasResource(140));
163 ASSERT_FALSE(pack.GetStringPiece(140, &data));
164 }
165
166 TEST(DataPackTest, LoadFromBufferV5) {
167 DataPack pack(SCALE_FACTOR_100P);
168
169 ASSERT_TRUE(pack.LoadFromBuffer(
170 base::StringPiece(kSamplePakContentsV5, kSamplePakSizeV5)));
171
172 base::StringPiece data;
173 ASSERT_TRUE(pack.HasResource(4));
174 ASSERT_TRUE(pack.GetStringPiece(4, &data));
175 EXPECT_EQ("this is id 4", data);
176 ASSERT_TRUE(pack.HasResource(6));
177 ASSERT_TRUE(pack.GetStringPiece(6, &data));
178 EXPECT_EQ("this is id 6", data);
179
180 // Try reading zero-length data blobs, just in case.
181 ASSERT_TRUE(pack.GetStringPiece(1, &data));
182 EXPECT_EQ(0U, data.length());
183 ASSERT_TRUE(pack.GetStringPiece(10, &data));
184 EXPECT_EQ("this is id 4", data);
185
186 // Try looking up an invalid key.
187 ASSERT_FALSE(pack.HasResource(140));
188 ASSERT_FALSE(pack.GetStringPiece(140, &data)); 167 ASSERT_FALSE(pack.GetStringPiece(140, &data));
189 } 168 }
190 169
191 INSTANTIATE_TEST_CASE_P(WriteBINARY, DataPackTest, ::testing::Values( 170 INSTANTIATE_TEST_CASE_P(WriteBINARY, DataPackTest, ::testing::Values(
192 DataPack::BINARY)); 171 DataPack::BINARY));
193 INSTANTIATE_TEST_CASE_P(WriteUTF8, DataPackTest, ::testing::Values( 172 INSTANTIATE_TEST_CASE_P(WriteUTF8, DataPackTest, ::testing::Values(
194 DataPack::UTF8)); 173 DataPack::UTF8));
195 INSTANTIATE_TEST_CASE_P(WriteUTF16, DataPackTest, ::testing::Values( 174 INSTANTIATE_TEST_CASE_P(WriteUTF16, DataPackTest, ::testing::Values(
196 DataPack::UTF16)); 175 DataPack::UTF16));
197 176
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 } 221 }
243 222
244 #if defined(OS_POSIX) 223 #if defined(OS_POSIX)
245 TEST(DataPackTest, ModifiedWhileUsed) { 224 TEST(DataPackTest, ModifiedWhileUsed) {
246 base::ScopedTempDir dir; 225 base::ScopedTempDir dir;
247 ASSERT_TRUE(dir.CreateUniqueTempDir()); 226 ASSERT_TRUE(dir.CreateUniqueTempDir());
248 base::FilePath data_path = 227 base::FilePath data_path =
249 dir.GetPath().Append(FILE_PATH_LITERAL("sample.pak")); 228 dir.GetPath().Append(FILE_PATH_LITERAL("sample.pak"));
250 229
251 // Dump contents into the pak file. 230 // Dump contents into the pak file.
252 ASSERT_EQ(base::WriteFile(data_path, kSamplePakContentsV4, kSamplePakSizeV4), 231 ASSERT_EQ(base::WriteFile(data_path, kSamplePakContents, kSamplePakSize),
253 static_cast<int>(kSamplePakSizeV4)); 232 static_cast<int>(kSamplePakSize));
254 233
255 base::File file(data_path, base::File::FLAG_OPEN | base::File::FLAG_READ); 234 base::File file(data_path, base::File::FLAG_OPEN | base::File::FLAG_READ);
256 ASSERT_TRUE(file.IsValid()); 235 ASSERT_TRUE(file.IsValid());
257 236
258 // Load the file through the data pack API. 237 // Load the file through the data pack API.
259 DataPack pack(SCALE_FACTOR_100P); 238 DataPack pack(SCALE_FACTOR_100P);
260 ASSERT_TRUE(pack.LoadFromFile(std::move(file))); 239 ASSERT_TRUE(pack.LoadFromFile(std::move(file)));
261 240
262 base::StringPiece data; 241 base::StringPiece data;
263 ASSERT_TRUE(pack.HasResource(10)); 242 ASSERT_TRUE(pack.HasResource(10));
264 ASSERT_TRUE(pack.GetStringPiece(10, &data)); 243 ASSERT_TRUE(pack.GetStringPiece(10, &data));
265 244
266 ASSERT_EQ(base::WriteFile(data_path, kSampleCorruptPakContents, 245 ASSERT_EQ(base::WriteFile(data_path, kSampleCorruptPakContents,
267 kSampleCorruptPakSize), 246 kSampleCorruptPakSize),
268 static_cast<int>(kSampleCorruptPakSize)); 247 static_cast<int>(kSampleCorruptPakSize));
269 248
270 // Reading asset #10 should now fail as it extends past the end of the file. 249 // Reading asset #10 should now fail as it extends past the end of the file.
271 ASSERT_TRUE(pack.HasResource(10)); 250 ASSERT_TRUE(pack.HasResource(10));
272 ASSERT_FALSE(pack.GetStringPiece(10, &data)); 251 ASSERT_FALSE(pack.GetStringPiece(10, &data));
273 } 252 }
274 #endif 253 #endif
275 254
276 } // namespace ui 255 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/resource/data_pack_literal.cc ('k') | ui/base/resource/resource_bundle_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698