Changeset 271238 in webkit
- Timestamp:
- Jan 7, 2021, 9:13:03 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/UIProcess/WebProcessProxy.cpp (modified) (1 diff)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r271237 r271238 1 2021-01-07 Sihui Liu <sihui_liu@appe.com> 2 3 ASSERTION FAILED: !m_messageReceiverMapCount under WebKit::SpeechRecognitionServer::~SpeechRecognitionServer() 4 https://bugs.webkit.org/show_bug.cgi?id=220404 5 6 Reviewed by Youenn Fablet. 7 8 API test: WebKit2.SpeechRecognitionPageIsDestroyed 9 10 * UIProcess/WebProcessProxy.cpp: 11 (WebKit::WebProcessProxy::destroySpeechRecognitionServer): 12 1 13 2021-01-07 Kimmo Kinnunen <kkinnunen@apple.com> 2 14 -
trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp
r271205 r271238 1749 1749 void WebProcessProxy::destroySpeechRecognitionServer(SpeechRecognitionServerIdentifier identifier) 1750 1750 { 1751 if ( m_speechRecognitionServerMap.remove(identifier))1751 if (auto server = m_speechRecognitionServerMap.take(identifier)) 1752 1752 removeMessageReceiver(Messages::SpeechRecognitionServer::messageReceiverName(), identifier); 1753 1753 } -
trunk/Tools/ChangeLog
r271231 r271238 1 2021-01-07 Sihui Liu <sihui_liu@appe.com> 2 3 ASSERTION FAILED: !m_messageReceiverMapCount under WebKit::SpeechRecognitionServer::~SpeechRecognitionServer() 4 https://bugs.webkit.org/show_bug.cgi?id=220404 5 6 Reviewed by Youenn Fablet. 7 8 * TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm: 9 (-[SpeechRecognitionPermissionUIDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]): 10 (-[SpeechRecognitionNavigationDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]): 11 (-[SpeechRecognitionNavigationDelegate webView:didFinishNavigation:]): 12 (TestWebKitAPI::TEST): 13 1 14 2021-01-07 Carlos Garcia Campos <cgarcia@igalia.com> 2 15 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm
r271205 r271238 29 29 #import "TestWKWebView.h" 30 30 #import <WebKit/WKPreferencesPrivate.h> 31 #import <WebKit/WKProcessPoolPrivate.h> 31 32 #import <WebKit/WKUIDelegatePrivate.h> 32 33 #import <WebKit/WKWebView.h> … … 37 38 static bool permissionRequested = false; 38 39 static bool receivedScriptMessage; 40 static bool didFinishNavigation; 39 41 static RetainPtr<WKScriptMessage> lastScriptMessage; 42 static RetainPtr<WKWebView> createdWebView; 40 43 41 44 @interface SpeechRecognitionPermissionUIDelegate : NSObject<WKUIDelegatePrivate> … … 43 46 - (void)_webView:(WKWebView *)webView requestMediaCaptureAuthorization: (_WKCaptureDevices)devices decisionHandler:(void (^)(BOOL))decisionHandler; 44 47 - (void)_webView:(WKWebView *)webView checkUserMediaPermissionForURL:(NSURL *)url mainFrameURL:(NSURL *)mainFrameURL frameIdentifier:(NSUInteger)frameIdentifier decisionHandler:(void (^)(NSString *salt, BOOL authorized))decisionHandler; 48 - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures; 45 49 @end 46 50 … … 61 65 decisionHandler(@"0x9876543210", YES); 62 66 } 67 68 - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures 69 { 70 createdWebView = adoptNS([[WKWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600) configuration:configuration]); 71 return createdWebView.get(); 72 } 63 73 @end 64 74 … … 71 81 receivedScriptMessage = true; 72 82 lastScriptMessage = message; 83 } 84 @end 85 86 @interface SpeechRecognitionNavigationDelegate : NSObject <WKNavigationDelegate> 87 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler; 88 - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation; 89 @end 90 91 @implementation SpeechRecognitionNavigationDelegate 92 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction preferences:(WKWebpagePreferences *)preferences decisionHandler:(void (^)(WKNavigationActionPolicy, WKWebpagePreferences *))decisionHandler 93 { 94 decisionHandler(WKNavigationActionPolicyAllow, preferences); 95 } 96 97 - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation 98 { 99 didFinishNavigation = true; 73 100 } 74 101 @end … … 208 235 } 209 236 237 TEST(WebKit2, SpeechRecognitionPageIsDestroyed) 238 { 239 auto configuration = adoptNS([[WKWebViewConfiguration alloc] init]); 240 auto preferences = [configuration preferences]; 241 preferences._mockCaptureDevicesEnabled = YES; 242 preferences._speechRecognitionEnabled = YES; 243 preferences.javaScriptCanOpenWindowsAutomatically = YES; 244 auto delegate = adoptNS([[SpeechRecognitionPermissionUIDelegate alloc] init]); 245 auto navigationDelegate = adoptNS([[SpeechRecognitionNavigationDelegate alloc] init]); 246 shouldGrantPermissionRequest = true; 247 createdWebView = nullptr; 248 249 @autoreleasepool { 250 auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:configuration.get()]); 251 [webView setUIDelegate:delegate.get()]; 252 [webView setNavigationDelegate:navigationDelegate.get()]; 253 254 didFinishNavigation = false; 255 [webView loadHTMLString:@"<script>speechRecognition = new webkitSpeechRecognition(); speechRecognition.start(); speechRecognition = null;</script>" baseURL:[NSURL URLWithString:@"http://webkit.org"]]; 256 TestWebKitAPI::Util::run(&didFinishNavigation); 257 [configuration.get().processPool _garbageCollectJavaScriptObjectsForTesting]; 258 259 bool finishedRunningScript = false; 260 [webView evaluateJavaScript:@"open('http://webkit.org')" completionHandler: [&] (id result, NSError *error) { 261 finishedRunningScript = true; 262 }]; 263 TestWebKitAPI::Util::run(&finishedRunningScript); 264 } 265 266 TestWebKitAPI::Util::sleep(0.5); 267 268 EXPECT_TRUE(!!createdWebView); 269 } 270 210 271 #endif 211 272
Note:
See TracChangeset
for help on using the changeset viewer.