From 3162c06f49137e74d9b7e9b7b649e9cf1655f323 Mon Sep 17 00:00:00 2001 From: Yury Semikhatsky Date: Fri, 24 Jul 2020 14:10:32 -0700 Subject: [PATCH] browser(webkit): outerWidth/Height on Windows (#3154) --- browser_patches/webkit/BUILD_NUMBER | 4 ++-- .../Playwright/win/WebKitBrowserWindow.cpp | 14 ++++++++++++++ .../embedder/Playwright/win/WebKitBrowserWindow.h | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/browser_patches/webkit/BUILD_NUMBER b/browser_patches/webkit/BUILD_NUMBER index 43599a6861..4d4839c2ae 100644 --- a/browser_patches/webkit/BUILD_NUMBER +++ b/browser_patches/webkit/BUILD_NUMBER @@ -1,2 +1,2 @@ -1317 -Changed: lushnikov@chromium.org Thu Jul 23 17:44:30 PDT 2020 +1318 +Changed: yurys@chromium.org Fri Jul 24 20:46:33 GMTST 2020 diff --git a/browser_patches/webkit/embedder/Playwright/win/WebKitBrowserWindow.cpp b/browser_patches/webkit/embedder/Playwright/win/WebKitBrowserWindow.cpp index 60932f3a1a..23d99e5b13 100644 --- a/browser_patches/webkit/embedder/Playwright/win/WebKitBrowserWindow.cpp +++ b/browser_patches/webkit/embedder/Playwright/win/WebKitBrowserWindow.cpp @@ -85,6 +85,7 @@ WebKitBrowserWindow::WebKitBrowserWindow(BrowserWindowClient& client, HWND mainW uiClient.runJavaScriptPrompt = runJavaScriptPrompt; uiClient.runBeforeUnloadConfirmPanel = runBeforeUnloadConfirmPanel; uiClient.handleJavaScriptDialog = handleJavaScriptDialog; + uiClient.getWindowFrame = getWindowFrame; WKPageSetPageUIClient(page, &uiClient.base); WKPageStateClientV0 stateClient = { }; @@ -338,6 +339,19 @@ void WebKitBrowserWindow::handleJavaScriptDialog(WKPageRef page, bool accept, WK } } +WKRect WebKitBrowserWindow::getWindowFrame(WKPageRef page, const void *clientInfo) { + auto& thisWindow = toWebKitBrowserWindow(clientInfo); + WKRect wkFrame { }; + RECT r; + if (::GetWindowRect(thisWindow.m_hMainWnd, &r)) { + wkFrame.origin.x = r.left; + wkFrame.origin.y = r.top; + wkFrame.size.width = r.right - r.left; + wkFrame.size.height = r.bottom - r.top; + } + return wkFrame; +} + WKPageRef WebKitBrowserWindow::createPageCallback(WKPageConfigurationRef configuration) { // This comes from the Playwright agent, configuration is a pool+data pair. diff --git a/browser_patches/webkit/embedder/Playwright/win/WebKitBrowserWindow.h b/browser_patches/webkit/embedder/Playwright/win/WebKitBrowserWindow.h index 135ceac40a..ce9270608a 100644 --- a/browser_patches/webkit/embedder/Playwright/win/WebKitBrowserWindow.h +++ b/browser_patches/webkit/embedder/Playwright/win/WebKitBrowserWindow.h @@ -70,6 +70,7 @@ private: static void runJavaScriptPrompt(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptPromptResultListenerRef listener, const void *clientInfo); static void runBeforeUnloadConfirmPanel(WKPageRef page, WKStringRef message, WKFrameRef frame, WKPageRunBeforeUnloadConfirmPanelResultListenerRef listener, const void *clientInfo); static void handleJavaScriptDialog(WKPageRef page, bool accept, WKStringRef value, const void *clientInfo); + static WKRect getWindowFrame(WKPageRef page, const void *clientInfo); static void didNotHandleKeyEvent(WKPageRef, WKNativeEventPtr, const void*); static void decidePolicyForResponse(WKPageRef, WKFrameRef, WKURLResponseRef, WKURLRequestRef, WKFramePolicyListenerRef, WKTypeRef, const void*);