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

Side by Side Diff: webkit/browser/fileapi/quota/quota_reservation_manager_unittest.cc

Issue 140833003: [Pepper][FileAPI] Interface clean up (3/6) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "webkit/browser/fileapi/quota/quota_reservation_manager.h" 5 #include "webkit/browser/fileapi/quota/quota_reservation_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 // For each open file for write, the client should create OpenFileHandle 172 // For each open file for write, the client should create OpenFileHandle
173 // object. 173 // object.
174 // It's OK to create multiple OpenFileHandle for single file. 174 // It's OK to create multiple OpenFileHandle for single file.
175 scoped_ptr<OpenFileHandle> open_file = 175 scoped_ptr<OpenFileHandle> open_file =
176 reservation->GetOpenFileHandle(file_path()); 176 reservation->GetOpenFileHandle(file_path());
177 177
178 // Before reserved quota ran out, the client can perform any number of 178 // Before reserved quota ran out, the client can perform any number of
179 // operation for the file. 179 // operation for the file.
180 // The client should calculate how much quota is consumed by itself. 180 // The client should calculate how much quota is consumed by itself.
181 int64 remaining_quota = reservation->remaining_quota(); 181 int64 remaining_quota = reservation->remaining_quota();
182 int64 base_file_size = open_file->base_file_size(); 182 int64 base_file_size = open_file->GetEstimatedFileSize();
183 int64 max_written_offset = base_file_size; 183 int64 max_written_offset = base_file_size;
184 ExtendFileTo(90); 184 ExtendFileTo(90);
185 max_written_offset = 90; 185 max_written_offset = 90;
186 remaining_quota -= max_written_offset - base_file_size; 186 remaining_quota -= max_written_offset - base_file_size;
187 187
188 // When the reserved quota ran out, the client can request quota refresh 188 // When the reserved quota ran out, the client can request quota refresh
189 // through Reservation. Before requesting another portion of quota, the 189 // through Reservation. Before requesting another portion of quota, the
190 // client should report maximum written offset for each modified files. 190 // client should report maximum written offset for each modified files.
191 open_file->UpdateMaxWrittenOffset(max_written_offset); 191 open_file->UpdateMaxWrittenOffset(max_written_offset);
192 EXPECT_EQ(remaining_quota, reservation->remaining_quota()); 192 EXPECT_EQ(remaining_quota, reservation->remaining_quota());
(...skipping 25 matching lines...) Expand all
218 EXPECT_EQ(100, reservation->remaining_quota()); 218 EXPECT_EQ(100, reservation->remaining_quota());
219 219
220 { 220 {
221 scoped_ptr<OpenFileHandle> open_file1 = 221 scoped_ptr<OpenFileHandle> open_file1 =
222 reservation->GetOpenFileHandle(file_path()); 222 reservation->GetOpenFileHandle(file_path());
223 scoped_ptr<OpenFileHandle> open_file2 = 223 scoped_ptr<OpenFileHandle> open_file2 =
224 reservation->GetOpenFileHandle(file_path()); 224 reservation->GetOpenFileHandle(file_path());
225 225
226 int64 remaining_quota = reservation->remaining_quota(); 226 int64 remaining_quota = reservation->remaining_quota();
227 227
228 int64 base_file_size_for_file1 = open_file1->base_file_size(); 228 int64 base_file_size_for_file1 = open_file1->GetEstimatedFileSize();
229 int64 max_written_offset_for_file1 = base_file_size_for_file1; 229 int64 max_written_offset_for_file1 = base_file_size_for_file1;
230 230
231 int64 base_file_size_for_file2 = open_file2->base_file_size(); 231 int64 base_file_size_for_file2 = open_file2->GetEstimatedFileSize();
232 int64 max_written_offset_for_file2 = base_file_size_for_file2; 232 int64 max_written_offset_for_file2 = base_file_size_for_file2;
233 233
234 // Each writer should maintain max_written_offset and base_file_size 234 // Each writer should maintain max_written_offset and base_file_size
235 // independently even if there are multiple writers for the same file. 235 // independently even if there are multiple writers for the same file.
236 max_written_offset_for_file1 = 50; 236 max_written_offset_for_file1 = 50;
237 ExtendFileTo(max_written_offset_for_file1); 237 ExtendFileTo(max_written_offset_for_file1);
238 remaining_quota -= max_written_offset_for_file1 - base_file_size_for_file1; 238 remaining_quota -= max_written_offset_for_file1 - base_file_size_for_file1;
239 base_file_size_for_file1 = max_written_offset_for_file1; 239 base_file_size_for_file1 = max_written_offset_for_file1;
240 240
241 max_written_offset_for_file2 = 90; 241 max_written_offset_for_file2 = 90;
242 ExtendFileTo(max_written_offset_for_file2); 242 ExtendFileTo(max_written_offset_for_file2);
243 remaining_quota -= max_written_offset_for_file2 - base_file_size_for_file2; 243 remaining_quota -= max_written_offset_for_file2 - base_file_size_for_file2;
244 base_file_size_for_file2 = max_written_offset_for_file2; 244 base_file_size_for_file2 = max_written_offset_for_file2;
245 245
246 // Before requesting quota refresh, each writer should report their 246 // Before requesting quota refresh, each writer should report their
247 // maximum_written_offset. UpdateMaxWrittenOffset returns updated 247 // maximum_written_offset. UpdateMaxWrittenOffset returns updated
248 // base_file_size that the writer should calculate quota consumption based 248 // base_file_size that the writer should calculate quota consumption based
249 // on that. 249 // on that.
250 base_file_size_for_file1 = 250 open_file1->UpdateMaxWrittenOffset(max_written_offset_for_file1);
251 open_file1->UpdateMaxWrittenOffset(max_written_offset_for_file1); 251 base_file_size_for_file1 = open_file1->GetEstimatedFileSize();
252 max_written_offset_for_file1 = base_file_size_for_file1; 252 max_written_offset_for_file1 = base_file_size_for_file1;
253 EXPECT_EQ(100 - (50 - kInitialFileSize), reservation->remaining_quota()); 253 EXPECT_EQ(100 - (50 - kInitialFileSize), reservation->remaining_quota());
254 254
255 base_file_size_for_file2 = 255 open_file2->UpdateMaxWrittenOffset(max_written_offset_for_file2);
256 open_file2->UpdateMaxWrittenOffset(max_written_offset_for_file2); 256 base_file_size_for_file2 = open_file2->GetEstimatedFileSize();
257 max_written_offset_for_file2 = base_file_size_for_file2; 257 max_written_offset_for_file2 = base_file_size_for_file2;
258 EXPECT_EQ(100 - (50 - kInitialFileSize) - (90 - 50), 258 EXPECT_EQ(100 - (50 - kInitialFileSize) - (90 - 50),
259 reservation->remaining_quota()); 259 reservation->remaining_quota());
260 260
261 RefreshQuota(reservation, 100); 261 RefreshQuota(reservation, 100);
262 EXPECT_EQ(100, reservation->remaining_quota()); 262 EXPECT_EQ(100, reservation->remaining_quota());
263 } 263 }
264 264
265 EXPECT_EQ(90, GetFileSize()); 265 EXPECT_EQ(90, GetFileSize());
266 EXPECT_EQ(100, fake_backend()->on_memory_usage()); 266 EXPECT_EQ(100, fake_backend()->on_memory_usage());
(...skipping 23 matching lines...) Expand all
290 EXPECT_EQ(500, reservation2->remaining_quota()); 290 EXPECT_EQ(500, reservation2->remaining_quota());
291 291
292 // Attach a file to both of two reservations. 292 // Attach a file to both of two reservations.
293 scoped_ptr<OpenFileHandle> open_file1 = 293 scoped_ptr<OpenFileHandle> open_file1 =
294 reservation1->GetOpenFileHandle(file_path()); 294 reservation1->GetOpenFileHandle(file_path());
295 scoped_ptr<OpenFileHandle> open_file2 = 295 scoped_ptr<OpenFileHandle> open_file2 =
296 reservation2->GetOpenFileHandle(file_path()); 296 reservation2->GetOpenFileHandle(file_path());
297 297
298 // Each client should manage reserved quota and its consumption separately. 298 // Each client should manage reserved quota and its consumption separately.
299 int64 remaining_quota1 = reservation1->remaining_quota(); 299 int64 remaining_quota1 = reservation1->remaining_quota();
300 int64 base_file_size1 = open_file1->base_file_size(); 300 int64 base_file_size1 = open_file1->GetEstimatedFileSize();
301 int64 max_written_offset1 = base_file_size1; 301 int64 max_written_offset1 = base_file_size1;
302 302
303 int64 remaining_quota2 = reservation2->remaining_quota(); 303 int64 remaining_quota2 = reservation2->remaining_quota();
304 int64 base_file_size2 = open_file2->base_file_size(); 304 int64 base_file_size2 = open_file2->GetEstimatedFileSize();
305 int64 max_written_offset2 = base_file_size2; 305 int64 max_written_offset2 = base_file_size2;
306 306
307 max_written_offset1 = 50; 307 max_written_offset1 = 50;
308 remaining_quota1 -= max_written_offset1 - base_file_size1; 308 remaining_quota1 -= max_written_offset1 - base_file_size1;
309 base_file_size1 = max_written_offset1; 309 base_file_size1 = max_written_offset1;
310 ExtendFileTo(max_written_offset1); 310 ExtendFileTo(max_written_offset1);
311 311
312 max_written_offset2 = 400; 312 max_written_offset2 = 400;
313 remaining_quota2 -= max_written_offset2 - base_file_size2; 313 remaining_quota2 -= max_written_offset2 - base_file_size2;
314 base_file_size2 = max_written_offset2; 314 base_file_size2 = max_written_offset2;
315 ExtendFileTo(max_written_offset2); 315 ExtendFileTo(max_written_offset2);
316 316
317 // For multiple Reservation case, RefreshQuota needs usage report only from 317 // For multiple Reservation case, RefreshQuota needs usage report only from
318 // associated OpenFile's. 318 // associated OpenFile's.
319 base_file_size1 = 319 open_file1->UpdateMaxWrittenOffset(max_written_offset1);
320 open_file1->UpdateMaxWrittenOffset(max_written_offset1); 320 base_file_size1 = open_file1->GetEstimatedFileSize();
321 max_written_offset1 = base_file_size1; 321 max_written_offset1 = base_file_size1;
322 EXPECT_EQ(100 - (50 - kInitialFileSize), reservation1->remaining_quota()); 322 EXPECT_EQ(100 - (50 - kInitialFileSize), reservation1->remaining_quota());
323 323
324 RefreshQuota(reservation1, 200); 324 RefreshQuota(reservation1, 200);
325 EXPECT_EQ(200, reservation1->remaining_quota()); 325 EXPECT_EQ(200, reservation1->remaining_quota());
326 326
327 base_file_size2 = 327 open_file2->UpdateMaxWrittenOffset(max_written_offset2);
328 open_file2->UpdateMaxWrittenOffset(max_written_offset2); 328 base_file_size2 = open_file2->GetEstimatedFileSize();
329 max_written_offset2 = base_file_size2; 329 max_written_offset2 = base_file_size2;
330 EXPECT_EQ(500 - (400 - 50), reservation2->remaining_quota()); 330 EXPECT_EQ(500 - (400 - 50), reservation2->remaining_quota());
331 331
332 RefreshQuota(reservation2, 150); 332 RefreshQuota(reservation2, 150);
333 EXPECT_EQ(150, reservation2->remaining_quota()); 333 EXPECT_EQ(150, reservation2->remaining_quota());
334 334
335 open_file1.reset(); 335 open_file1.reset();
336 open_file2.reset(); 336 open_file2.reset();
337 337
338 EXPECT_EQ(400, GetFileSize()); 338 EXPECT_EQ(400, GetFileSize());
(...skipping 10 matching lines...) Expand all
349 349
350 EXPECT_EQ(400, GetFileSize()); 350 EXPECT_EQ(400, GetFileSize());
351 EXPECT_EQ(0, fake_backend()->on_memory_usage()); 351 EXPECT_EQ(0, fake_backend()->on_memory_usage());
352 EXPECT_EQ(400 - kInitialFileSize, fake_backend()->on_disk_usage()); 352 EXPECT_EQ(400 - kInitialFileSize, fake_backend()->on_disk_usage());
353 } 353 }
354 354
355 // TODO(tzik): Add Truncate test. 355 // TODO(tzik): Add Truncate test.
356 // TODO(tzik): Add PluginCrash test and DropReservationManager test. 356 // TODO(tzik): Add PluginCrash test and DropReservationManager test.
357 357
358 } // namespace fileapi 358 } // namespace fileapi
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698