WebKit Bugzilla
Attachment 347968 Details for
Bug 188907
: Add new _webViewRequestPointerLock SPI with a completionHandler
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188907-20180823161239.patch (text/plain), 6.75 KB, created by
Alex Christensen
on 2018-08-23 16:12:40 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2018-08-23 16:12:40 PDT
Size:
6.75 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 235157) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,17 @@ >+2018-08-23 Alex Christensen <achristensen@webkit.org> >+ >+ Add new _webViewRequestPointerLock SPI with a completionHandler >+ https://bugs.webkit.org/show_bug.cgi?id=188907 >+ <rdar://problem/35871109> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: >+ * UIProcess/Cocoa/UIDelegate.h: >+ * UIProcess/Cocoa/UIDelegate.mm: >+ (WebKit::UIDelegate::setDelegate): >+ (WebKit::UIDelegate::UIClient::requestPointerLock): >+ > 2018-08-21 Alex Christensen <achristensen@webkit.org> > > Roll out r235139 and r235146 >Index: Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h >=================================================================== >--- Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (revision 235156) >+++ Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (working copy) >@@ -98,6 +98,7 @@ struct UIEdgeInsets; > - (void)_webViewDidEnterFullscreen:(WKWebView *)webView WK_API_AVAILABLE(macosx(10.11), ios(8.3)); > - (void)_webViewDidExitFullscreen:(WKWebView *)webView WK_API_AVAILABLE(macosx(10.11), ios(8.3)); > - (void)_webViewRequestPointerLock:(WKWebView *)webView WK_API_AVAILABLE(macosx(10.12.3)); >+- (void)_webViewRequestPointerLock:(WKWebView *)webView completionHandler:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA)); > - (void)_webViewDidLosePointerLock:(WKWebView *)webView WK_API_AVAILABLE(macosx(10.12.3)); > - (void)_webView:(WKWebView *)webView hasVideoInPictureInPictureDidChange:(BOOL)hasVideoInPictureInPicture WK_API_AVAILABLE(macosx(10.13), ios(11.0)); > >Index: Source/WebKit/UIProcess/Cocoa/UIDelegate.h >=================================================================== >--- Source/WebKit/UIProcess/Cocoa/UIDelegate.h (revision 235156) >+++ Source/WebKit/UIProcess/Cocoa/UIDelegate.h (working copy) >@@ -210,6 +210,7 @@ private: > bool webViewImageOrMediaDocumentSizeChanged : 1; > #if ENABLE(POINTER_LOCK) > bool webViewRequestPointerLock : 1; >+ bool webViewRequestPointerLockCompletionHandler : 1; > bool webViewDidLosePointerLock : 1; > #endif > #if ENABLE(CONTEXT_MENUS) >Index: Source/WebKit/UIProcess/Cocoa/UIDelegate.mm >=================================================================== >--- Source/WebKit/UIProcess/Cocoa/UIDelegate.mm (revision 235156) >+++ Source/WebKit/UIProcess/Cocoa/UIDelegate.mm (working copy) >@@ -157,6 +157,7 @@ void UIDelegate::setDelegate(id <WKUIDel > > #if ENABLE(POINTER_LOCK) > m_delegateMethods.webViewRequestPointerLock = [delegate respondsToSelector:@selector(_webViewRequestPointerLock:)]; >+ m_delegateMethods.webViewRequestPointerLockCompletionHandler = [delegate respondsToSelector:@selector(_webViewRequestPointerLock:completionHandler:)]; > m_delegateMethods.webViewDidLosePointerLock = [delegate respondsToSelector:@selector(_webViewDidLosePointerLock:)]; > #endif > #if ENABLE(CONTEXT_MENUS) >@@ -1165,16 +1166,30 @@ NSDictionary *UIDelegate::UIClient::data > > #if ENABLE(POINTER_LOCK) > >-void UIDelegate::UIClient::requestPointerLock(WebPageProxy*) >+void UIDelegate::UIClient::requestPointerLock(WebPageProxy* page) > { >- if (!m_uiDelegate.m_delegateMethods.webViewRequestPointerLock) >+ if (!m_uiDelegate.m_delegateMethods.webViewRequestPointerLock && !m_uiDelegate.m_delegateMethods.webViewRequestPointerLockCompletionHandler) > return; > > auto delegate = m_uiDelegate.m_delegate.get(); > if (!delegate) > return; > >- [static_cast<id <WKUIDelegatePrivate>>(delegate) _webViewRequestPointerLock:m_uiDelegate.m_webView]; >+ if (m_uiDelegate.m_delegateMethods.webViewRequestPointerLock) >+ [static_cast<id <WKUIDelegatePrivate>>(delegate) _webViewRequestPointerLock:m_uiDelegate.m_webView]; >+ else { >+ auto checker = CompletionHandlerCallChecker::create(delegate.get(), @selector(_webViewRequestPointerLock:completionHandler:)); >+ [static_cast<id <WKUIDelegatePrivate>>(delegate) _webViewRequestPointerLock:m_uiDelegate.m_webView completionHandler:BlockPtr<void(BOOL)>::fromCallable([checker = WTFMove(checker), page = makeRefPtr(page)] (BOOL allow) { >+ if (checker->completionHandlerHasBeenCalled()) >+ return; >+ checker->didCallCompletionHandler(); >+ >+ if (allow) >+ page->didAllowPointerLock(); >+ else >+ page->didDenyPointerLock(); >+ }).get()]; >+ } > } > > void UIDelegate::UIClient::didLosePointerLock(WebPageProxy*) >Index: Tools/ChangeLog >=================================================================== >--- Tools/ChangeLog (revision 235254) >+++ Tools/ChangeLog (working copy) >@@ -1,3 +1,16 @@ >+2018-08-23 Alex Christensen <achristensen@webkit.org> >+ >+ Add new _webViewRequestPointerLock SPI with a completionHandler >+ https://bugs.webkit.org/show_bug.cgi?id=188907 >+ <rdar://problem/35871109> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm: >+ (-[PointerLockDelegate _webViewRequestPointerLock:completionHandler:]): >+ (-[PointerLockDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]): >+ (TEST): >+ > 2018-08-23 Jonathan Bedard <jbedard@apple.com> > > API tests should output json results >Index: Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm >=================================================================== >--- Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm (revision 235156) >+++ Tools/TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm (working copy) >@@ -226,6 +226,34 @@ TEST(WebKit, ShowWebView) > ASSERT_EQ(webViewFromDelegateCallback, createdWebView); > } > >+@interface PointerLockDelegate : NSObject <WKUIDelegatePrivate> >+@end >+ >+@implementation PointerLockDelegate >+ >+- (void)_webViewRequestPointerLock:(WKWebView *)webView completionHandler:(void (^)(BOOL))completionHandler >+{ >+ completionHandler(YES); >+ done = true; >+} >+ >+@end >+ >+TEST(WebKit, PointerLock) >+{ >+ auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600)]); >+ auto delegate = adoptNS([[PointerLockDelegate alloc] init]); >+ [webView setUIDelegate:delegate.get()]; >+ [webView synchronouslyLoadHTMLString: >+ @"<canvas width='800' height='600'></canvas><script>" >+ @"var canvas = document.querySelector('canvas');" >+ @"canvas.onclick = ()=>{canvas.requestPointerLock()};" >+ @"</script>" >+ ]; >+ [webView sendClicksAtPoint:NSMakePoint(200, 200) numberOfClicks:1]; >+ TestWebKitAPI::Util::run(&done); >+} >+ > static bool resizableSet; > > @interface ModalDelegate : NSObject <WKUIDelegatePrivate>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
aestes
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188907
: 347968