| Index: ios/chrome/browser/snapshots/snapshot_cache_unittest.mm
|
| diff --git a/ios/chrome/browser/snapshots/snapshot_cache_unittest.mm b/ios/chrome/browser/snapshots/snapshot_cache_unittest.mm
|
| index 4243130e7a701767a95048ca2a4e3e5f23197054..44d3ad86440f134f2b7ce74731f7a58af1716e4e 100644
|
| --- a/ios/chrome/browser/snapshots/snapshot_cache_unittest.mm
|
| +++ b/ios/chrome/browser/snapshots/snapshot_cache_unittest.mm
|
| @@ -9,15 +9,13 @@
|
| #include "base/files/file_path.h"
|
| #include "base/files/file_util.h"
|
| #include "base/format_macros.h"
|
| -#include "base/ios/ios_util.h"
|
| #include "base/location.h"
|
| #include "base/mac/bind_objc_block.h"
|
| #include "base/mac/scoped_nsautorelease_pool.h"
|
| #include "base/run_loop.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| #include "base/time/time.h"
|
| -#include "ios/chrome/browser/experimental_flags.h"
|
| -#include "ios/chrome/browser/ui/ui_util.h"
|
| +#import "ios/chrome/browser/snapshots/snapshot_cache_internal.h"
|
| #include "ios/web/public/test/test_web_thread_bundle.h"
|
| #include "ios/web/public/web_thread.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -27,13 +25,6 @@
|
| static const NSUInteger kSessionCount = 10;
|
| static const NSUInteger kSnapshotPixelSize = 8;
|
|
|
| -// Promote some implementation methods to public.
|
| -@interface SnapshotCache (Testing)
|
| -+ (base::FilePath)imagePathForSessionID:(NSString*)sessionID;
|
| -+ (base::FilePath)greyImagePathForSessionID:(NSString*)sessionID;
|
| -- (void)handleLowMemory;
|
| -@end
|
| -
|
| namespace {
|
|
|
| class SnapshotCacheTest : public PlatformTest {
|
| @@ -204,6 +195,13 @@ class SnapshotCacheTest : public PlatformTest {
|
| return reinterpret_cast<const char*>(CFDataGetBytePtr(data));
|
| }
|
|
|
| + void TriggerMemoryWarning() {
|
| + // _performMemoryWarning is a private API and must not be compiled into
|
| + // official builds.
|
| + [[UIApplication sharedApplication]
|
| + performSelector:@selector(_performMemoryWarning)];
|
| + }
|
| +
|
| web::TestWebThreadBundle thread_bundle_;
|
| base::scoped_nsobject<SnapshotCache> snapshotCache_;
|
| base::scoped_nsobject<NSMutableArray> testSessions_;
|
| @@ -214,16 +212,13 @@ class SnapshotCacheTest : public PlatformTest {
|
| // As the snapshots are kept in memory, the same pointer can be retrieved.
|
| // This test also checks that images are correctly removed from the disk.
|
| TEST_F(SnapshotCacheTest, Cache) {
|
| - // Don't run on tablets because color snapshots are not cached so this test
|
| - // can't compare the UIImage pointers directly.
|
| - if (IsIPadIdiom() && !experimental_flags::IsTabSwitcherEnabled()) {
|
| - return;
|
| - }
|
| -
|
| SnapshotCache* cache = GetSnapshotCache();
|
|
|
| + if (![cache inMemoryCacheIsEnabled])
|
| + return;
|
| +
|
| NSUInteger expectedCacheSize = kSessionCount;
|
| - if (experimental_flags::IsLRUSnapshotCacheEnabled())
|
| + if ([cache usesLRUCache])
|
| expectedCacheSize = MIN(kSessionCount, [cache lruCacheMaxSize]);
|
|
|
| // Put all images in the cache.
|
| @@ -347,17 +342,8 @@ TEST_F(SnapshotCacheTest, Purge) {
|
| }
|
|
|
| // Loads the color images into the cache, and pins two of them. Ensures that
|
| -// only the two pinned IDs remain in memory after a call to -handleLowMemory.
|
| -TEST_F(SnapshotCacheTest, HandleLowMemory) {
|
| -// TODO(crbug.com/455209): This test failed on iPad iOS8 device, but may no
|
| -// longer be failing on iOS 9 and up. Should test by re-enabling and monitor.
|
| -#if !TARGET_IPHONE_SIMULATOR
|
| - if (IsIPadIdiom()) {
|
| - LOG(WARNING) << "Test disabled on iPad device.";
|
| - return;
|
| - }
|
| -#endif
|
| -
|
| +// only the two pinned IDs remain in memory after a memory warning.
|
| +TEST_F(SnapshotCacheTest, HandleMemoryWarning) {
|
| LoadAllColorImagesIntoCache(true);
|
|
|
| SnapshotCache* cache = GetSnapshotCache();
|
| @@ -369,15 +355,15 @@ TEST_F(SnapshotCacheTest, HandleLowMemory) {
|
| [set addObject:secondPinnedID];
|
| cache.pinnedIDs = set;
|
|
|
| - if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
|
| - [cache handleLowMemory];
|
| -
|
| - BOOL expectedValue = YES;
|
| - if (IsIPadIdiom() && !experimental_flags::IsTabSwitcherEnabled())
|
| - expectedValue = NO;
|
| + TriggerMemoryWarning();
|
|
|
| - EXPECT_EQ(expectedValue, [cache hasImageInMemory:firstPinnedID]);
|
| - EXPECT_EQ(expectedValue, [cache hasImageInMemory:secondPinnedID]);
|
| + if ([cache inMemoryCacheIsEnabled]) {
|
| + EXPECT_EQ(YES, [cache hasImageInMemory:firstPinnedID]);
|
| + EXPECT_EQ(YES, [cache hasImageInMemory:secondPinnedID]);
|
| + } else {
|
| + EXPECT_EQ(NO, [cache hasImageInMemory:firstPinnedID]);
|
| + EXPECT_EQ(NO, [cache hasImageInMemory:secondPinnedID]);
|
| + }
|
|
|
| NSString* notPinnedID = [testSessions_ objectAtIndex:2];
|
| EXPECT_FALSE([cache hasImageInMemory:notPinnedID]);
|
| @@ -424,8 +410,7 @@ TEST_F(SnapshotCacheTest, CreateGreyCacheFromDisk) {
|
| // Remove color images from in-memory cache.
|
| SnapshotCache* cache = GetSnapshotCache();
|
|
|
| - if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
|
| - [cache handleLowMemory];
|
| + TriggerMemoryWarning();
|
|
|
| // Request the creation of a grey image cache for all images.
|
| [cache createGreyCache:testSessions_];
|
| @@ -466,8 +451,7 @@ TEST_F(SnapshotCacheTest, MostRecentGreyBlock) {
|
| LoadColorImagesIntoCache(kNumImages, true);
|
| // Make sure the color images are only on disk, to ensure the background
|
| // thread is slow enough to queue up the requests.
|
| - if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
|
| - [cache handleLowMemory];
|
| + TriggerMemoryWarning();
|
|
|
| // Enable the grey image cache.
|
| [cache createGreyCache:sessionIDs];
|
| @@ -538,8 +522,7 @@ TEST_F(SnapshotCacheTest, SizeAndScalePreservation) {
|
| NSString* const kSession = @"foo";
|
| [cache setImage:image withSessionID:kSession];
|
| FlushRunLoops(); // ensure the file is written to disk.
|
| - if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
|
| - [cache handleLowMemory];
|
| + TriggerMemoryWarning();
|
|
|
| // Retrive the image and have the callback verify the size and scale.
|
| __block BOOL callbackComplete = NO;
|
| @@ -575,8 +558,7 @@ TEST_F(SnapshotCacheTest, DeleteRetinaImages) {
|
| NSString* const kSession = @"foo";
|
| [cache setImage:image withSessionID:kSession];
|
| FlushRunLoops(); // ensure the file is written to disk.
|
| - if (!IsIPadIdiom() || experimental_flags::IsTabSwitcherEnabled())
|
| - [cache handleLowMemory];
|
| + TriggerMemoryWarning();
|
|
|
| // Verify the file was writted with @2x in the file name.
|
| base::FilePath retinaFile = [SnapshotCache imagePathForSessionID:kSession];
|
|
|