Changeset 277392 in webkit
- Timestamp:
- May 12, 2021, 2:56:12 PM (5 years ago)
- Location:
- trunk/Tools
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
TestWebKitAPI/Tests/WebKitCocoa/KillWebProcessWithOpenConnection-1.html (modified) (1 diff)
-
TestWebKitAPI/Tests/WebKitCocoa/KillWebProcessWithOpenConnection-2.html (modified) (1 diff)
-
TestWebKitAPI/Tests/WebKitCocoa/WebProcessKillIDBCleanup.mm (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r277387 r277392 1 2021-05-12 Sihui Liu <sihui_liu@apple.com> 2 3 [ BigSur Release ] TestWebKitAPI.IndexedDB.KillWebProcessWithOpenConnection is a constant failure 4 https://bugs.webkit.org/show_bug.cgi?id=225372 5 <rdar://problem/77532291> 6 7 Reviewed by Chris Dumez. 8 9 Ensure IDB data is cleared before test and make error logging more detailed. 10 11 * TestWebKitAPI/Tests/WebKitCocoa/KillWebProcessWithOpenConnection-1.html: 12 * TestWebKitAPI/Tests/WebKitCocoa/KillWebProcessWithOpenConnection-2.html: 13 * TestWebKitAPI/Tests/WebKitCocoa/WebProcessKillIDBCleanup.mm: Listen to version change event because it 14 indicates that server starts handling second open request in KillWebProcessWithOpenConnection-2.html. 15 (-[IndexedDBWebProcessKillMessageHandler userContentController:didReceiveScriptMessage:]): 16 (getNextMessage): 17 (TEST): 18 1 19 2021-05-12 Jonathan Bedard <jbedard@apple.com> 2 20 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/KillWebProcessWithOpenConnection-1.html
r259461 r277392 4 4 request.onsuccess = () => { 5 5 window.webkit.messageHandlers.testHandler.postMessage("Open Succeeded"); 6 var db = event.target.result; 7 db.onversionchange = () => { 8 window.webkit.messageHandlers.testHandler.postMessage("Version Change"); 9 } 6 10 } 7 11 request.onerror = () => { 8 window.webkit.messageHandlers.testHandler.postMessage("Open Failed ");12 window.webkit.messageHandlers.testHandler.postMessage("Open Failed: " + request.error); 9 13 } 10 14 </script> -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/KillWebProcessWithOpenConnection-2.html
r259461 r277392 6 6 var secondRequest = window.indexedDB.open("TestIndexedDB", db.version + 1); 7 7 secondRequest.onsuccess = (event) => { 8 window.webkit.messageHandlers.testHandler.postMessage("Second Open Succeeded Unexpectedly");8 window.webkit.messageHandlers.testHandler.postMessage("Second Open Succeeded"); 9 9 } 10 secondRequest.onerror = ( event) => {11 window.webkit.messageHandlers.testHandler.postMessage("Second Open Failed Unexpectedly");10 secondRequest.onerror = () => { 11 window.webkit.messageHandlers.testHandler.postMessage("Second Open Failed: " + secondRequest.error); 12 12 } 13 window.webkit.messageHandlers.testHandler.postMessage("First Open Succeeded");14 13 } 15 14 request.onerror = () => { 16 window.webkit.messageHandlers.testHandler.postMessage("First Open Failed ");15 window.webkit.messageHandlers.testHandler.postMessage("First Open Failed: " + request.error); 17 16 } 18 17 </script> -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebProcessKillIDBCleanup.mm
r273062 r277392 40 40 41 41 static bool receivedScriptMessage; 42 static Deque<RetainPtr< WKScriptMessage>> scriptMessages;42 static Deque<RetainPtr<NSString>> scriptMessages; 43 43 44 44 @interface IndexedDBWebProcessKillMessageHandler : NSObject <WKScriptMessageHandler> … … 50 50 { 51 51 receivedScriptMessage = true; 52 scriptMessages.append( message);52 scriptMessages.append([message body]); 53 53 } 54 54 55 55 @end 56 56 57 static WKScriptMessage *getNextMessage()57 static RetainPtr<NSString> getNextMessage() 58 58 { 59 59 if (scriptMessages.isEmpty()) { … … 62 62 } 63 63 64 return scriptMessages.takeFirst() .autorelease();64 return scriptMessages.takeFirst(); 65 65 } 66 66 … … 76 76 [webView loadRequest:request]; 77 77 78 RetainPtr<NSString> string1 = (NSString *)[getNextMessage() body];79 RetainPtr<NSString> string2 = (NSString *)[getNextMessage() body];80 RetainPtr<NSString> string3 = (NSString *)[getNextMessage() body];81 RetainPtr<NSString> string4 = (NSString *)[getNextMessage() body];78 auto string1 = getNextMessage(); 79 auto string2 = getNextMessage(); 80 auto string3 = getNextMessage(); 81 auto string4 = getNextMessage(); 82 82 83 83 // Make a new web view with a new web process to finish the test … … 87 87 [webView2 loadRequest:request]; 88 88 89 RetainPtr<NSString> string5 = (NSString *)[getNextMessage() body];89 auto string5 = getNextMessage(); 90 90 91 91 // Kill the first web process to unblock the second web processes transaction from starting. 92 92 [webView _killWebContentProcessAndResetState]; 93 93 94 RetainPtr<NSString> string6 = (NSString *)[getNextMessage() body];94 auto string6 = getNextMessage(); 95 95 96 96 EXPECT_WK_STREQ(@"UpgradeNeeded", string1.get()); … … 108 108 [[configuration userContentController] addScriptMessageHandler:handler.get() name:@"testHandler"]; 109 109 110 __block bool readyToContinue = false; 111 [configuration.get().websiteDataStore removeDataOfTypes:[NSSet setWithObjects:WKWebsiteDataTypeIndexedDBDatabases, nil] modifiedSince:[NSDate distantPast] completionHandler:^() { 112 readyToContinue = true; 113 }]; 114 TestWebKitAPI::Util::run(&readyToContinue); 115 110 116 auto webView1 = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]); 111 117 NSURLRequest *request1 = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"KillWebProcessWithOpenConnection-1" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]; 112 118 [webView1 loadRequest:request1]; 113 RetainPtr<NSString> string1 = (NSString *)[getNextMessage() body];119 auto string1 = getNextMessage(); 114 120 EXPECT_WK_STREQ(@"Open Succeeded", string1.get()); 115 121 … … 117 123 NSURLRequest *request2 = [NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"KillWebProcessWithOpenConnection-2" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]; 118 124 [webView2 loadRequest:request2]; 119 RetainPtr<NSString> string2 = (NSString *)[getNextMessage() body];120 EXPECT_WK_STREQ(@" First Open Succeeded", string2.get());125 auto string2 = getNextMessage(); 126 EXPECT_WK_STREQ(@"Version Change", string2.get()); 121 127 128 // Second database request in webView2 should not be processed. 122 129 [webView2 _killWebContentProcessAndResetState]; 123 130 [webView1 _killWebContentProcessAndResetState]; 124 131 125 TestWebKitAPI::Util::spinRunLoop(10);126 127 132 [webView1 reload]; 128 RetainPtr<NSString> string3 = (NSString *)[getNextMessage() body];133 auto string3 = getNextMessage(); 129 134 EXPECT_WK_STREQ(@"Open Succeeded", string3.get()); 130 135 }
Note:
See TracChangeset
for help on using the changeset viewer.