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]; |