Changeset 235259 in webkit
- Timestamp:
- Aug 23, 2018, 4:37:01 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r235251 r235259 1 2018-08-23 Alex Christensen <achristensen@webkit.org> 2 3 Add new _webViewRequestPointerLock SPI with a completionHandler 4 https://bugs.webkit.org/show_bug.cgi?id=188907 5 <rdar://problem/35871109> 6 7 Reviewed by Andy Estes. 8 9 * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: 10 * UIProcess/Cocoa/UIDelegate.h: 11 * UIProcess/Cocoa/UIDelegate.mm: 12 (WebKit::UIDelegate::setDelegate): 13 (WebKit::UIDelegate::UIClient::requestPointerLock): 14 1 15 2018-08-23 Andy Estes <aestes@apple.com> 2 16 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h
r235137 r235259 99 99 - (void)_webViewDidExitFullscreen:(WKWebView *)webView WK_API_AVAILABLE(macosx(10.11), ios(8.3)); 100 100 - (void)_webViewRequestPointerLock:(WKWebView *)webView WK_API_AVAILABLE(macosx(10.12.3)); 101 - (void)_webViewDidRequestPointerLock:(WKWebView *)webView completionHandler:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); 101 102 - (void)_webViewDidLosePointerLock:(WKWebView *)webView WK_API_AVAILABLE(macosx(10.12.3)); 102 103 - (void)_webView:(WKWebView *)webView hasVideoInPictureInPictureDidChange:(BOOL)hasVideoInPictureInPicture WK_API_AVAILABLE(macosx(10.13), ios(11.0)); -
trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.h
r234157 r235259 211 211 #if ENABLE(POINTER_LOCK) 212 212 bool webViewRequestPointerLock : 1; 213 bool webViewDidRequestPointerLockCompletionHandler : 1; 213 214 bool webViewDidLosePointerLock : 1; 214 215 #endif -
trunk/Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
r234964 r235259 158 158 #if ENABLE(POINTER_LOCK) 159 159 m_delegateMethods.webViewRequestPointerLock = [delegate respondsToSelector:@selector(_webViewRequestPointerLock:)]; 160 m_delegateMethods.webViewDidRequestPointerLockCompletionHandler = [delegate respondsToSelector:@selector(_webViewDidRequestPointerLock:completionHandler:)]; 160 161 m_delegateMethods.webViewDidLosePointerLock = [delegate respondsToSelector:@selector(_webViewDidLosePointerLock:)]; 161 162 #endif … … 1166 1167 #if ENABLE(POINTER_LOCK) 1167 1168 1168 void UIDelegate::UIClient::requestPointerLock(WebPageProxy*) 1169 { 1170 if (!m_uiDelegate.m_delegateMethods.webViewRequestPointerLock) 1171 return; 1172 1173 auto delegate = m_uiDelegate.m_delegate.get(); 1174 if (!delegate) 1175 return; 1176 1177 [static_cast<id <WKUIDelegatePrivate>>(delegate) _webViewRequestPointerLock:m_uiDelegate.m_webView]; 1169 void UIDelegate::UIClient::requestPointerLock(WebPageProxy* page) 1170 { 1171 if (!m_uiDelegate.m_delegateMethods.webViewRequestPointerLock && !m_uiDelegate.m_delegateMethods.webViewDidRequestPointerLockCompletionHandler) 1172 return; 1173 1174 auto delegate = m_uiDelegate.m_delegate.get(); 1175 if (!delegate) 1176 return; 1177 1178 if (m_uiDelegate.m_delegateMethods.webViewRequestPointerLock) { 1179 [static_cast<id <WKUIDelegatePrivate>>(delegate) _webViewRequestPointerLock:m_uiDelegate.m_webView]; 1180 return; 1181 } 1182 1183 auto checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webViewDidRequestPointerLock:completionHandler:)); 1184 [static_cast<id <WKUIDelegatePrivate>>(delegate) _webViewDidRequestPointerLock:m_uiDelegate.m_webView completionHandler:BlockPtr<void(BOOL)>::fromCallable([checker = WTFMove(checker), page = makeRefPtr(page)] (BOOL allow) { 1185 if (checker->completionHandlerHasBeenCalled()) 1186 return; 1187 checker->didCallCompletionHandler(); 1188 1189 if (allow) 1190 page->didAllowPointerLock(); 1191 else 1192 page->didDenyPointerLock(); 1193 }).get()]; 1178 1194 } 1179 1195 -
trunk/Tools/ChangeLog
r235258 r235259 1 2018-08-23 Alex Christensen <achristensen@webkit.org> 2 3 Add new _webViewRequestPointerLock SPI with a completionHandler 4 https://bugs.webkit.org/show_bug.cgi?id=188907 5 <rdar://problem/35871109> 6 7 Reviewed by Andy Estes. 8 9 * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm: 10 (-[PointerLockDelegate _webViewRequestPointerLock:completionHandler:]): 11 (-[PointerLockDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]): 12 (TEST): 13 1 14 2018-08-23 David Fenton <david_fenton@apple.com> 2 15 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm
r232549 r235259 227 227 } 228 228 229 @interface PointerLockDelegate : NSObject <WKUIDelegatePrivate> 230 @end 231 232 @implementation PointerLockDelegate 233 234 - (void)_webViewDidRequestPointerLock:(WKWebView *)webView completionHandler:(void (^)(BOOL))completionHandler 235 { 236 completionHandler(YES); 237 done = true; 238 } 239 240 @end 241 242 TEST(WebKit, PointerLock) 243 { 244 auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600)]); 245 auto delegate = adoptNS([[PointerLockDelegate alloc] init]); 246 [webView setUIDelegate:delegate.get()]; 247 [webView synchronouslyLoadHTMLString: 248 @"<canvas width='800' height='600'></canvas><script>" 249 @"var canvas = document.querySelector('canvas');" 250 @"canvas.onclick = ()=>{canvas.requestPointerLock()};" 251 @"</script>" 252 ]; 253 [webView sendClicksAtPoint:NSMakePoint(200, 200) numberOfClicks:1]; 254 TestWebKitAPI::Util::run(&done); 255 } 256 229 257 static bool resizableSet; 230 258
Note:
See TracChangeset
for help on using the changeset viewer.