Skip to content

Commit f0275a9

Browse files
Add regression test for r203392
https://bugs.webkit.org/show_bug.cgi?id=159949 Reviewed by Brady Eidson. * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WebKit2Cocoa/ApplicationCache.db: Added. * TestWebKitAPI/Tests/WebKit2Cocoa/ApplicationCache.db-shm: Added. * TestWebKitAPI/Tests/WebKit2Cocoa/ApplicationCache.db-wal: Added. * TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageClear.mm: (TEST): (fileSize): (swizzledBundleIdentifierMobileSafari): (swizzledBundleIdentifierWebBookmarksD): (defaultApplicationCacheDirectory): * TestWebKitAPI/cocoa/InstanceMethodSwizzler.h: Copied from TestWebKitAPI/mac/InstanceMethodSwizzler.h. * TestWebKitAPI/cocoa/InstanceMethodSwizzler.mm: Copied from TestWebKitAPI/mac/InstanceMethodSwizzler.mm. * TestWebKitAPI/mac/InstanceMethodSwizzler.h: Removed. * TestWebKitAPI/mac/InstanceMethodSwizzler.mm: Removed. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@203426 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 2ee2cac commit f0275a9

File tree

8 files changed

+121
-6
lines changed

8 files changed

+121
-6
lines changed

Tools/ChangeLog

+22
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
1+
2016-07-19 Alex Christensen <[email protected]>
2+
3+
Add regression test for r203392
4+
https://bugs.webkit.org/show_bug.cgi?id=159949
5+
6+
Reviewed by Brady Eidson.
7+
8+
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
9+
* TestWebKitAPI/Tests/WebKit2Cocoa/ApplicationCache.db: Added.
10+
* TestWebKitAPI/Tests/WebKit2Cocoa/ApplicationCache.db-shm: Added.
11+
* TestWebKitAPI/Tests/WebKit2Cocoa/ApplicationCache.db-wal: Added.
12+
* TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageClear.mm:
13+
(TEST):
14+
(fileSize):
15+
(swizzledBundleIdentifierMobileSafari):
16+
(swizzledBundleIdentifierWebBookmarksD):
17+
(defaultApplicationCacheDirectory):
18+
* TestWebKitAPI/cocoa/InstanceMethodSwizzler.h: Copied from TestWebKitAPI/mac/InstanceMethodSwizzler.h.
19+
* TestWebKitAPI/cocoa/InstanceMethodSwizzler.mm: Copied from TestWebKitAPI/mac/InstanceMethodSwizzler.mm.
20+
* TestWebKitAPI/mac/InstanceMethodSwizzler.h: Removed.
21+
* TestWebKitAPI/mac/InstanceMethodSwizzler.mm: Removed.
22+
123
2016-07-19 Keith Miller <[email protected]>
224

325
Test262 should have a file with the revision and url

Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

+18-6
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@
107107
5714ECBD1CA8C22A00051AC8 /* DownloadRequestOriginalURL2.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 5714ECBC1CA8C21800051AC8 /* DownloadRequestOriginalURL2.html */; };
108108
57901FB11CAF142D00ED64F9 /* LoadInvalidURLRequest.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 57901FB01CAF141C00ED64F9 /* LoadInvalidURLRequest.html */; };
109109
57F56A5C1C7F8CC100F31D7E /* IsNavigationActionTrusted.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 57F56A5B1C7F8A4000F31D7E /* IsNavigationActionTrusted.html */; };
110+
5C726D6F1D3EE06E00C5E1A1 /* InstanceMethodSwizzler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C726D6E1D3EE06800C5E1A1 /* InstanceMethodSwizzler.mm */; };
111+
5C9E59411D3EB5AC00E3C62E /* ApplicationCache.db in Copy Resources */ = {isa = PBXBuildFile; fileRef = 5C9E593E1D3EB1DE00E3C62E /* ApplicationCache.db */; };
112+
5C9E59421D3EB5AC00E3C62E /* ApplicationCache.db-shm in Copy Resources */ = {isa = PBXBuildFile; fileRef = 5C9E593F1D3EB1DE00E3C62E /* ApplicationCache.db-shm */; };
113+
5C9E59431D3EB5AC00E3C62E /* ApplicationCache.db-wal in Copy Resources */ = {isa = PBXBuildFile; fileRef = 5C9E59401D3EB1DE00E3C62E /* ApplicationCache.db-wal */; };
110114
764322D71B61CCC30024F801 /* WordBoundaryTypingAttributes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 764322D51B61CCA40024F801 /* WordBoundaryTypingAttributes.mm */; };
111115
7673499D1930C5BB00E44DF9 /* StopLoadingDuringDidFailProvisionalLoad_bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7673499A1930182E00E44DF9 /* StopLoadingDuringDidFailProvisionalLoad_bundle.cpp */; };
112116
76E182DD1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76E182DC1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp */; };
@@ -203,7 +207,6 @@
203207
7CCB4DA91C83AE7300CC6918 /* PageGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CCB4DA71C83AE7300CC6918 /* PageGroup.cpp */; };
204208
7CCB99211D3B41F6003922F6 /* UserInitiatedActionInNavigationAction.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7CCB99201D3B41F6003922F6 /* UserInitiatedActionInNavigationAction.mm */; };
205209
7CCB99231D3B4A46003922F6 /* open-multiple-external-url.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 7CCB99221D3B44E7003922F6 /* open-multiple-external-url.html */; };
206-
7CCE7EA41A4119F300447C4C /* InstanceMethodSwizzler.mm in Sources */ = {isa = PBXBuildFile; fileRef = C08587FF13FEC3A6001EF4E5 /* InstanceMethodSwizzler.mm */; };
207210
7CCE7EA51A411A0800447C4C /* JavaScriptTestMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = C081224013FC172400DC39AE /* JavaScriptTestMac.mm */; };
208211
7CCE7EA61A411A0F00447C4C /* PlatformUtilitiesMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC131884117114B600B69727 /* PlatformUtilitiesMac.mm */; };
209212
7CCE7EA71A411A1300447C4C /* PlatformWebViewMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC90955C125548AA00083756 /* PlatformWebViewMac.mm */; };
@@ -488,6 +491,9 @@
488491
dstPath = TestWebKitAPI.resources;
489492
dstSubfolderSpec = 7;
490493
files = (
494+
5C9E59411D3EB5AC00E3C62E /* ApplicationCache.db in Copy Resources */,
495+
5C9E59421D3EB5AC00E3C62E /* ApplicationCache.db-shm in Copy Resources */,
496+
5C9E59431D3EB5AC00E3C62E /* ApplicationCache.db-wal in Copy Resources */,
491497
7CCB99231D3B4A46003922F6 /* open-multiple-external-url.html in Copy Resources */,
492498
932AE53D1D371047005DFFAF /* focus-inputs.html in Copy Resources */,
493499
46C519E61D3563FD00DAA51A /* LocalStorageNullEntries.html in Copy Resources */,
@@ -783,6 +789,11 @@
783789
57F10D921C7E7B3800ECDF30 /* IsNavigationActionTrusted.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = IsNavigationActionTrusted.mm; sourceTree = "<group>"; };
784790
57F56A5B1C7F8A4000F31D7E /* IsNavigationActionTrusted.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = IsNavigationActionTrusted.html; sourceTree = "<group>"; };
785791
5C5E633D1D0B67940085A025 /* UniqueRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UniqueRef.cpp; sourceTree = "<group>"; };
792+
5C726D6D1D3EE06800C5E1A1 /* InstanceMethodSwizzler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InstanceMethodSwizzler.h; path = cocoa/InstanceMethodSwizzler.h; sourceTree = "<group>"; };
793+
5C726D6E1D3EE06800C5E1A1 /* InstanceMethodSwizzler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InstanceMethodSwizzler.mm; path = cocoa/InstanceMethodSwizzler.mm; sourceTree = "<group>"; };
794+
5C9E593E1D3EB1DE00E3C62E /* ApplicationCache.db */ = {isa = PBXFileReference; lastKnownFileType = file; path = ApplicationCache.db; sourceTree = "<group>"; };
795+
5C9E593F1D3EB1DE00E3C62E /* ApplicationCache.db-shm */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ApplicationCache.db-shm"; sourceTree = "<group>"; };
796+
5C9E59401D3EB1DE00E3C62E /* ApplicationCache.db-wal */ = {isa = PBXFileReference; lastKnownFileType = file; path = "ApplicationCache.db-wal"; sourceTree = "<group>"; };
786797
7560917719259C59009EF06E /* MemoryCacheAddImageToCacheIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MemoryCacheAddImageToCacheIOS.mm; sourceTree = "<group>"; };
787798
75F3133F18C171B70041CAEC /* EphemeralSessionPushStateNoHistoryCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EphemeralSessionPushStateNoHistoryCallback.cpp; sourceTree = "<group>"; };
788799
764322D51B61CCA40024F801 /* WordBoundaryTypingAttributes.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WordBoundaryTypingAttributes.mm; sourceTree = "<group>"; };
@@ -974,8 +985,6 @@
974985
C08587BD13FE956C001EF4E5 /* WebKitAgnosticTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebKitAgnosticTest.mm; sourceTree = "<group>"; };
975986
C08587BE13FE956C001EF4E5 /* WebKitAgnosticTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitAgnosticTest.h; sourceTree = "<group>"; };
976987
C08587FB13FEC39B001EF4E5 /* InstanceMethodSwizzler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InstanceMethodSwizzler.mm; sourceTree = "<group>"; };
977-
C08587FE13FEC3A6001EF4E5 /* InstanceMethodSwizzler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstanceMethodSwizzler.h; sourceTree = "<group>"; };
978-
C08587FF13FEC3A6001EF4E5 /* InstanceMethodSwizzler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InstanceMethodSwizzler.mm; sourceTree = "<group>"; };
979988
C0991C50143C7D68007998F2 /* RetainPtrHashing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RetainPtrHashing.cpp; sourceTree = "<group>"; };
980989
C0ADBE7A12FCA4D000D2C129 /* JavaScriptTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JavaScriptTest.cpp; sourceTree = "<group>"; };
981990
C0ADBE7B12FCA4D000D2C129 /* JavaScriptTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptTest.h; sourceTree = "<group>"; };
@@ -1146,6 +1155,8 @@
11461155
0F139E711A423A1D00F590F5 /* cocoa */ = {
11471156
isa = PBXGroup;
11481157
children = (
1158+
5C726D6D1D3EE06800C5E1A1 /* InstanceMethodSwizzler.h */,
1159+
5C726D6E1D3EE06800C5E1A1 /* InstanceMethodSwizzler.mm */,
11491160
A13EBB441B87332B00097110 /* WebProcessPlugIn */,
11501161
0F139E721A423A2B00F590F5 /* PlatformUtilitiesCocoa.mm */,
11511162
A14FC58D1B8AE36500D107EB /* TestProtocol.h */,
@@ -1304,6 +1315,9 @@
13041315
A16F66B81C40E9E100BD4D24 /* Resources */ = {
13051316
isa = PBXGroup;
13061317
children = (
1318+
5C9E593E1D3EB1DE00E3C62E /* ApplicationCache.db */,
1319+
5C9E593F1D3EB1DE00E3C62E /* ApplicationCache.db-shm */,
1320+
5C9E59401D3EB1DE00E3C62E /* ApplicationCache.db-wal */,
13071321
93CFA8661CEB9DE1000565A8 /* autofocused-text-input.html */,
13081322
A16F66B91C40EA2000BD4D24 /* ContentFiltering.html */,
13091323
5714ECB81CA8B58800051AC8 /* DownloadRequestOriginalURL.html */,
@@ -1618,8 +1632,6 @@
16181632
isa = PBXGroup;
16191633
children = (
16201634
1AEDE22413E5E7A000E62FE8 /* InjectedBundleControllerMac.mm */,
1621-
C08587FE13FEC3A6001EF4E5 /* InstanceMethodSwizzler.h */,
1622-
C08587FF13FEC3A6001EF4E5 /* InstanceMethodSwizzler.mm */,
16231635
C081224013FC172400DC39AE /* JavaScriptTestMac.mm */,
16241636
2E7765CE16C4D81100BA2BB1 /* mainMac.mm */,
16251637
BC131884117114B600B69727 /* PlatformUtilitiesMac.mm */,
@@ -2137,7 +2149,6 @@
21372149
7CCE7EFC1A411AE600447C4C /* InjectedBundleFrameHitTest.cpp in Sources */,
21382150
7CCE7EFD1A411AE600447C4C /* InjectedBundleInitializationUserDataCallbackWins.cpp in Sources */,
21392151
7CCE7EC31A411A7E00447C4C /* InspectorBar.mm in Sources */,
2140-
7CCE7EA41A4119F300447C4C /* InstanceMethodSwizzler.mm in Sources */,
21412152
7CCE7EDA1A411A8700447C4C /* InstanceMethodSwizzler.mm in Sources */,
21422153
7C54A4BE1AA11CCA00380F78 /* WKBundleFileHandle.cpp in Sources */,
21432154
CDC8E48D1BC5CB4500594FEC /* AudioSessionCategoryIOS.mm in Sources */,
@@ -2177,6 +2188,7 @@
21772188
7CCE7F091A411AE600447C4C /* ParentFrame.cpp in Sources */,
21782189
7CCE7F0A1A411AE600447C4C /* PasteboardNotifications.mm in Sources */,
21792190
7C83E0BB1D0A650000FEBCF3 /* FindInPage.mm in Sources */,
2191+
5C726D6F1D3EE06E00C5E1A1 /* InstanceMethodSwizzler.mm in Sources */,
21802192
7CCE7EAF1A411A3800447C4C /* PlatformUtilities.cpp in Sources */,
21812193
0F139E781A423A6B00F590F5 /* PlatformUtilitiesCocoa.mm in Sources */,
21822194
7C417F331D19E14800B8EF53 /* WKWebViewDefaultNavigationDelegate.mm in Sources */,
Binary file not shown.
Binary file not shown.
Binary file not shown.

Tools/TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageClear.mm

+81
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
#import "config.h"
2727

28+
#import "InstanceMethodSwizzler.h"
2829
#import "PlatformUtilities.h"
2930
#import "Test.h"
3031
#import <WebKit/WKProcessPoolPrivate.h>
@@ -89,4 +90,84 @@ - (void)userContentController:(WKUserContentController *)userContentController d
8990
TestWebKitAPI::Util::run(&readyToContinue);
9091
}
9192

93+
static long long fileSize(NSURL* url)
94+
{
95+
NSError *error = nil;
96+
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:url.path error:&error];
97+
if (error)
98+
return -1;
99+
return [[fileAttributes objectForKey:NSFileSize] longLongValue];
100+
}
101+
102+
NSString *swizzledBundleIdentifierMobileSafari()
103+
{
104+
return @"com.apple.mobilesafari";
105+
}
106+
107+
NSString *swizzledBundleIdentifierWebBookmarksD()
108+
{
109+
return @"com.apple.webbookmarksd";
110+
}
111+
112+
NSString *defaultApplicationCacheDirectory()
113+
{
114+
return @"~/Library/Caches/TestWebKitAPI/WebKit/OfflineWebApplicationCache";
115+
}
116+
117+
TEST(WKWebView, ClearAppCache)
118+
{
119+
{
120+
NSURL *dbResourceURL = [[NSBundle mainBundle] URLForResource:@"ApplicationCache" withExtension:@"db" subdirectory:@"TestWebKitAPI.resources"];
121+
NSURL *shmResourceURL = [[NSBundle mainBundle] URLForResource:@"ApplicationCache" withExtension:@"db-shm" subdirectory:@"TestWebKitAPI.resources"];
122+
NSURL *walResourceURL = [[NSBundle mainBundle] URLForResource:@"ApplicationCache" withExtension:@"db-wal" subdirectory:@"TestWebKitAPI.resources"];
123+
124+
NSURL *targetURL = [NSURL fileURLWithPath:[defaultApplicationCacheDirectory() stringByExpandingTildeInPath]];
125+
[[NSFileManager defaultManager] createDirectoryAtURL:targetURL withIntermediateDirectories:YES attributes:nil error:nil];
126+
127+
NSURL *dbTargetURL = [targetURL URLByAppendingPathComponent:@"ApplicationCache.db"];
128+
NSURL *walTargetURL = [targetURL URLByAppendingPathComponent:@"ApplicationCache.db-wal"];
129+
NSURL *shmTargetURL = [targetURL URLByAppendingPathComponent:@"ApplicationCache.db-shm"];
130+
131+
// Clean up any files that may have been left from this test failing before.
132+
[[NSFileManager defaultManager] removeItemAtURL:dbTargetURL error:nil];
133+
[[NSFileManager defaultManager] removeItemAtURL:walTargetURL error:nil];
134+
[[NSFileManager defaultManager] removeItemAtURL:shmTargetURL error:nil];
135+
EXPECT_EQ(fileSize(dbTargetURL), -1);
136+
EXPECT_EQ(fileSize(walTargetURL), -1);
137+
EXPECT_EQ(fileSize(shmTargetURL), -1);
138+
139+
// Copy the resources from the bundle to ~/Library/...
140+
[[NSFileManager defaultManager] copyItemAtURL:dbResourceURL toURL:dbTargetURL error:nil];
141+
[[NSFileManager defaultManager] copyItemAtURL:shmResourceURL toURL:shmTargetURL error:nil];
142+
[[NSFileManager defaultManager] copyItemAtURL:walResourceURL toURL:walTargetURL error:nil];
143+
EXPECT_GT(fileSize(dbTargetURL), 0);
144+
EXPECT_GT(fileSize(shmTargetURL), 0);
145+
EXPECT_GT(fileSize(walTargetURL), 0);
146+
147+
// Make sure there is a record in the WKWebsiteDataStore.
148+
readyToContinue = false;
149+
[[WKWebsiteDataStore defaultDataStore] fetchDataRecordsOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] completionHandler:^(NSArray<WKWebsiteDataRecord *> *websiteDataRecords)
150+
{
151+
EXPECT_EQ(websiteDataRecords.count, 1ul);
152+
readyToContinue = true;
153+
}];
154+
TestWebKitAPI::Util::run(&readyToContinue);
155+
}
156+
157+
readyToContinue = false;
158+
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] modifiedSince:[NSDate distantPast] completionHandler:^()
159+
{
160+
NSURL *targetURL = [NSURL fileURLWithPath:[defaultApplicationCacheDirectory() stringByExpandingTildeInPath]];
161+
NSURL *walTargetURL = [targetURL URLByAppendingPathComponent:@"ApplicationCache.db-wal"];
162+
163+
// Make sure there is no record in the WKWebsiteDataStore.
164+
EXPECT_EQ(fileSize(walTargetURL), 0);
165+
[[WKWebsiteDataStore defaultDataStore] fetchDataRecordsOfTypes:[WKWebsiteDataStore allWebsiteDataTypes] completionHandler:^(NSArray<WKWebsiteDataRecord *> *websiteDataRecords)
166+
{
167+
EXPECT_EQ(websiteDataRecords.count, 0ul);
168+
readyToContinue = true;
169+
}];
170+
}];
171+
TestWebKitAPI::Util::run(&readyToContinue);
172+
}
92173
#endif

0 commit comments

Comments
 (0)