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

Side by Side Diff: ios/chrome/browser/snapshots/snapshot_cache_unittest.mm

Issue 1587663002: Enable the snapshot cache on iPad when the tab switcher is enabled. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed tests. Created 4 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
« no previous file with comments | « ios/chrome/browser/snapshots/snapshot_cache.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 #import "ios/chrome/browser/snapshots/snapshot_cache.h" 5 #import "ios/chrome/browser/snapshots/snapshot_cache.h"
6 6
7 #import <Foundation/Foundation.h> 7 #import <Foundation/Foundation.h>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 base::scoped_nsobject<NSMutableArray> testSessions_; 209 base::scoped_nsobject<NSMutableArray> testSessions_;
210 base::scoped_nsobject<NSMutableArray> testImages_; 210 base::scoped_nsobject<NSMutableArray> testImages_;
211 }; 211 };
212 212
213 // This test simply put all the snapshots in the cache and then gets them back 213 // This test simply put all the snapshots in the cache and then gets them back
214 // As the snapshots are kept in memory, the same pointer can be retrieved. 214 // As the snapshots are kept in memory, the same pointer can be retrieved.
215 // This test also checks that images are correctly removed from the disk. 215 // This test also checks that images are correctly removed from the disk.
216 TEST_F(SnapshotCacheTest, Cache) { 216 TEST_F(SnapshotCacheTest, Cache) {
217 // Don't run on tablets because color snapshots are not cached so this test 217 // Don't run on tablets because color snapshots are not cached so this test
218 // can't compare the UIImage pointers directly. 218 // can't compare the UIImage pointers directly.
219 if (IsIPadIdiom()) { 219 if (IsIPadIdiom() && !experimental_flags::IsTabSwitcherEnabled()) {
220 return; 220 return;
221 } 221 }
222 222
223 SnapshotCache* cache = GetSnapshotCache(); 223 SnapshotCache* cache = GetSnapshotCache();
224 224
225 NSUInteger expectedCacheSize = kSessionCount; 225 NSUInteger expectedCacheSize = kSessionCount;
226 if (experimental_flags::IsLRUSnapshotCacheEnabled()) 226 if (experimental_flags::IsLRUSnapshotCacheEnabled())
227 expectedCacheSize = MIN(kSessionCount, [cache lruCacheMaxSize]); 227 expectedCacheSize = MIN(kSessionCount, [cache lruCacheMaxSize]);
228 228
229 // Put all images in the cache. 229 // Put all images in the cache.
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 361
362 SnapshotCache* cache = GetSnapshotCache(); 362 SnapshotCache* cache = GetSnapshotCache();
363 363
364 NSString* firstPinnedID = [testSessions_ objectAtIndex:4]; 364 NSString* firstPinnedID = [testSessions_ objectAtIndex:4];
365 NSString* secondPinnedID = [testSessions_ objectAtIndex:6]; 365 NSString* secondPinnedID = [testSessions_ objectAtIndex:6];
366 NSMutableSet* set = [NSMutableSet set]; 366 NSMutableSet* set = [NSMutableSet set];
367 [set addObject:firstPinnedID]; 367 [set addObject:firstPinnedID];
368 [set addObject:secondPinnedID]; 368 [set addObject:secondPinnedID];
369 cache.pinnedIDs = set; 369 cache.pinnedIDs = set;
370 370
371 if (!IsIPadIdiom()) 371 if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
372 [cache handleLowMemory]; 372 [cache handleLowMemory];
373 373
374 BOOL expectedValue = YES; 374 BOOL expectedValue = YES;
375 if (IsIPadIdiom()) { 375 if (IsIPadIdiom() && !experimental_flags::IsTabSwitcherEnabled())
376 expectedValue = NO; 376 expectedValue = NO;
377 } 377
378 EXPECT_EQ(expectedValue, [cache hasImageInMemory:firstPinnedID]); 378 EXPECT_EQ(expectedValue, [cache hasImageInMemory:firstPinnedID]);
379 EXPECT_EQ(expectedValue, [cache hasImageInMemory:secondPinnedID]); 379 EXPECT_EQ(expectedValue, [cache hasImageInMemory:secondPinnedID]);
380 380
381 NSString* notPinnedID = [testSessions_ objectAtIndex:2]; 381 NSString* notPinnedID = [testSessions_ objectAtIndex:2];
382 EXPECT_FALSE([cache hasImageInMemory:notPinnedID]); 382 EXPECT_FALSE([cache hasImageInMemory:notPinnedID]);
383 383
384 // Wait for the final image to be pulled off disk. 384 // Wait for the final image to be pulled off disk.
385 FlushRunLoops(); 385 FlushRunLoops();
386 } 386 }
387 387
(...skipping 28 matching lines...) Expand all
416 416
417 // Same as previous test, except that all the color images are on disk, 417 // Same as previous test, except that all the color images are on disk,
418 // rather than in memory. 418 // rather than in memory.
419 // Disabled due to the greyImage crash. b/8048597 419 // Disabled due to the greyImage crash. b/8048597
420 TEST_F(SnapshotCacheTest, CreateGreyCacheFromDisk) { 420 TEST_F(SnapshotCacheTest, CreateGreyCacheFromDisk) {
421 LoadAllColorImagesIntoCache(true); 421 LoadAllColorImagesIntoCache(true);
422 422
423 // Remove color images from in-memory cache. 423 // Remove color images from in-memory cache.
424 SnapshotCache* cache = GetSnapshotCache(); 424 SnapshotCache* cache = GetSnapshotCache();
425 425
426 if (!IsIPadIdiom()) 426 if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
427 [cache handleLowMemory]; 427 [cache handleLowMemory];
428 428
429 // Request the creation of a grey image cache for all images. 429 // Request the creation of a grey image cache for all images.
430 [cache createGreyCache:testSessions_]; 430 [cache createGreyCache:testSessions_];
431 431
432 // Wait for them to be put into the grey image cache. 432 // Wait for them to be put into the grey image cache.
433 WaitForGreyImagesInCache(kSessionCount); 433 WaitForGreyImagesInCache(kSessionCount);
434 434
435 __block NSUInteger numberOfCallbacks = 0; 435 __block NSUInteger numberOfCallbacks = 0;
436 for (NSUInteger i = 0; i < kSessionCount; ++i) { 436 for (NSUInteger i = 0; i < kSessionCount; ++i) {
(...skipping 21 matching lines...) Expand all
458 [sessionIDs addObject:[testSessions_ objectAtIndex:0]]; 458 [sessionIDs addObject:[testSessions_ objectAtIndex:0]];
459 [sessionIDs addObject:[testSessions_ objectAtIndex:1]]; 459 [sessionIDs addObject:[testSessions_ objectAtIndex:1]];
460 [sessionIDs addObject:[testSessions_ objectAtIndex:2]]; 460 [sessionIDs addObject:[testSessions_ objectAtIndex:2]];
461 461
462 SnapshotCache* cache = GetSnapshotCache(); 462 SnapshotCache* cache = GetSnapshotCache();
463 463
464 // Put 3 images in the cache. 464 // Put 3 images in the cache.
465 LoadColorImagesIntoCache(kNumImages, true); 465 LoadColorImagesIntoCache(kNumImages, true);
466 // Make sure the color images are only on disk, to ensure the background 466 // Make sure the color images are only on disk, to ensure the background
467 // thread is slow enough to queue up the requests. 467 // thread is slow enough to queue up the requests.
468 if (!IsIPadIdiom()) 468 if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
469 [cache handleLowMemory]; 469 [cache handleLowMemory];
470 470
471 // Enable the grey image cache. 471 // Enable the grey image cache.
472 [cache createGreyCache:sessionIDs]; 472 [cache createGreyCache:sessionIDs];
473 473
474 // Request the grey versions 474 // Request the grey versions
475 __block BOOL firstCallbackCalled = NO; 475 __block BOOL firstCallbackCalled = NO;
476 __block BOOL secondCallbackCalled = NO; 476 __block BOOL secondCallbackCalled = NO;
477 __block BOOL thirdCallbackCalled = NO; 477 __block BOOL thirdCallbackCalled = NO;
478 [cache greyImageForSessionID:[testSessions_ objectAtIndex:0] 478 [cache greyImageForSessionID:[testSessions_ objectAtIndex:0]
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 CGContextRef context = UIGraphicsGetCurrentContext(); 530 CGContextRef context = UIGraphicsGetCurrentContext();
531 UIImage* image = GenerateRandomImage(context); 531 UIImage* image = GenerateRandomImage(context);
532 UIGraphicsEndImageContext(); 532 UIGraphicsEndImageContext();
533 533
534 // Add the image to the cache then call handle low memory to ensure the image 534 // Add the image to the cache then call handle low memory to ensure the image
535 // is read from disk instead of the in-memory cache. 535 // is read from disk instead of the in-memory cache.
536 SnapshotCache* cache = GetSnapshotCache(); 536 SnapshotCache* cache = GetSnapshotCache();
537 NSString* const kSession = @"foo"; 537 NSString* const kSession = @"foo";
538 [cache setImage:image withSessionID:kSession]; 538 [cache setImage:image withSessionID:kSession];
539 FlushRunLoops(); // ensure the file is written to disk. 539 FlushRunLoops(); // ensure the file is written to disk.
540 if (!IsIPadIdiom()) 540 if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
541 [cache handleLowMemory]; 541 [cache handleLowMemory];
542 542
543 // Retrive the image and have the callback verify the size and scale. 543 // Retrive the image and have the callback verify the size and scale.
544 __block BOOL callbackComplete = NO; 544 __block BOOL callbackComplete = NO;
545 [cache retrieveImageForSessionID:kSession 545 [cache retrieveImageForSessionID:kSession
546 callback:^(UIImage* imageFromDisk) { 546 callback:^(UIImage* imageFromDisk) {
547 EXPECT_EQ(image.size.width, 547 EXPECT_EQ(image.size.width,
548 imageFromDisk.size.width); 548 imageFromDisk.size.width);
549 EXPECT_EQ(image.size.height, 549 EXPECT_EQ(image.size.height,
550 imageFromDisk.size.height); 550 imageFromDisk.size.height);
(...skipping 16 matching lines...) Expand all
567 CGContextRef context = UIGraphicsGetCurrentContext(); 567 CGContextRef context = UIGraphicsGetCurrentContext();
568 UIImage* image = GenerateRandomImage(context); 568 UIImage* image = GenerateRandomImage(context);
569 UIGraphicsEndImageContext(); 569 UIGraphicsEndImageContext();
570 570
571 // Add the image to the cache then call handle low memory to ensure the image 571 // Add the image to the cache then call handle low memory to ensure the image
572 // is read from disk instead of the in-memory cache. 572 // is read from disk instead of the in-memory cache.
573 SnapshotCache* cache = GetSnapshotCache(); 573 SnapshotCache* cache = GetSnapshotCache();
574 NSString* const kSession = @"foo"; 574 NSString* const kSession = @"foo";
575 [cache setImage:image withSessionID:kSession]; 575 [cache setImage:image withSessionID:kSession];
576 FlushRunLoops(); // ensure the file is written to disk. 576 FlushRunLoops(); // ensure the file is written to disk.
577 if (!IsIPadIdiom()) 577 if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
578 [cache handleLowMemory]; 578 [cache handleLowMemory];
579 579
580 // Verify the file was writted with @2x in the file name. 580 // Verify the file was writted with @2x in the file name.
581 base::FilePath retinaFile = [SnapshotCache imagePathForSessionID:kSession]; 581 base::FilePath retinaFile = [SnapshotCache imagePathForSessionID:kSession];
582 EXPECT_TRUE(base::PathExists(retinaFile)); 582 EXPECT_TRUE(base::PathExists(retinaFile));
583 583
584 // Delete the image. 584 // Delete the image.
585 [cache removeImageWithSessionID:kSession]; 585 [cache removeImageWithSessionID:kSession];
586 FlushRunLoops(); // ensure the file is removed. 586 FlushRunLoops(); // ensure the file is removed.
587 587
588 EXPECT_FALSE(base::PathExists(retinaFile)); 588 EXPECT_FALSE(base::PathExists(retinaFile));
589 } 589 }
590 590
591 } // namespace 591 } // namespace
OLDNEW
« no previous file with comments | « ios/chrome/browser/snapshots/snapshot_cache.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698