From 9c88649c6b198a206dabf951f0ea4b58b889966e Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Thu, 16 Jan 2020 16:38:00 -0800 Subject: [PATCH] browser(webkit): pass dialog tests on windows (#515) --- browser_patches/webkit/BUILD_NUMBER | 2 +- browser_patches/webkit/patches/bootstrap.diff | 201 +++++++++++++++--- 2 files changed, 174 insertions(+), 29 deletions(-) diff --git a/browser_patches/webkit/BUILD_NUMBER b/browser_patches/webkit/BUILD_NUMBER index cf23797bc2..fc15416f4e 100644 --- a/browser_patches/webkit/BUILD_NUMBER +++ b/browser_patches/webkit/BUILD_NUMBER @@ -1 +1 @@ -1094 +1095 diff --git a/browser_patches/webkit/patches/bootstrap.diff b/browser_patches/webkit/patches/bootstrap.diff index f8cbf11482..a026999b66 100644 --- a/browser_patches/webkit/patches/bootstrap.diff +++ b/browser_patches/webkit/patches/bootstrap.diff @@ -5133,19 +5133,24 @@ index 026121d114c5fcad84c1396be8d692625beaa3bd..1f707641766b51e3bddcdde0c49ee8cf } #endif diff --git a/Source/WebKit/UIProcess/API/C/WKPage.cpp b/Source/WebKit/UIProcess/API/C/WKPage.cpp -index dd796b8332359e1c3b1e5575fd7a03353cb1fac2..283682a495e5bd114beec3e8351817465d39caab 100644 +index dd796b8332359e1c3b1e5575fd7a03353cb1fac2..08a3d67c2a2abba978ef597dbc7a8d3b72fdfb88 100644 --- a/Source/WebKit/UIProcess/API/C/WKPage.cpp +++ b/Source/WebKit/UIProcess/API/C/WKPage.cpp -@@ -1675,6 +1675,8 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient +@@ -1675,6 +1675,13 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient completionHandler(String()); } -+ void handleJavaScriptDialog(WebPageProxy&, bool, const String&) final { } ++ void handleJavaScriptDialog(WebPageProxy& page, bool accept, const String& value) final { ++ if (m_client.handleJavaScriptDialog) { ++ m_client.handleJavaScriptDialog(toAPI(&page), accept, toAPI(value.impl()), m_client.base.clientInfo); ++ return; ++ } ++ } + void setStatusText(WebPageProxy* page, const String& text) final { if (!m_client.setStatusText) -@@ -1735,6 +1737,8 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient +@@ -1735,6 +1742,8 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient { if (!m_client.didNotHandleKeyEvent) return; @@ -5154,6 +5159,26 @@ index dd796b8332359e1c3b1e5575fd7a03353cb1fac2..283682a495e5bd114beec3e835181746 m_client.didNotHandleKeyEvent(toAPI(page), event.nativeEvent(), m_client.base.clientInfo); } +diff --git a/Source/WebKit/UIProcess/API/C/WKPageUIClient.h b/Source/WebKit/UIProcess/API/C/WKPageUIClient.h +index 1d2febfba8833912f72216aa53c8c20090ee2d8b..1b2c3d84b15b12f1a187c0b7622db43cbbcd5996 100644 +--- a/Source/WebKit/UIProcess/API/C/WKPageUIClient.h ++++ b/Source/WebKit/UIProcess/API/C/WKPageUIClient.h +@@ -90,6 +90,7 @@ typedef void (*WKPageRunBeforeUnloadConfirmPanelCallback)(WKPageRef page, WKStri + typedef void (*WKPageRunJavaScriptAlertCallback)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptAlertResultListenerRef listener, const void *clientInfo); + typedef void (*WKPageRunJavaScriptConfirmCallback)(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptConfirmResultListenerRef listener, const void *clientInfo); + typedef void (*WKPageRunJavaScriptPromptCallback)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptPromptResultListenerRef listener, const void *clientInfo); ++typedef void (*WKPageHandleJavaScriptDialogCallback)(WKPageRef page, bool accept, WKStringRef value, const void *clientInfo); + typedef void (*WKPageRequestStorageAccessConfirmCallback)(WKPageRef page, WKFrameRef frame, WKStringRef requestingDomain, WKStringRef currentDomain, WKPageRequestStorageAccessConfirmResultListenerRef listener, const void *clientInfo); + typedef void (*WKPageTakeFocusCallback)(WKPageRef page, WKFocusDirection direction, const void *clientInfo); + typedef void (*WKPageFocusCallback)(WKPageRef page, const void *clientInfo); +@@ -1352,6 +1353,7 @@ typedef struct WKPageUIClientV14 { + + // Version 14. + WKPageRunWebAuthenticationPanelCallback runWebAuthenticationPanel; ++ WKPageHandleJavaScriptDialogCallback handleJavaScriptDialog; + } WKPageUIClientV14; + + #ifdef __cplusplus diff --git a/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h b/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h index cad87f3ef2ab93d93a74cec0c34b47c695de6bc6..66145a384638b97ee08516e56e1e86a83713c634 100644 --- a/Source/WebKit/UIProcess/API/Cocoa/WKUIDelegate.h @@ -6556,7 +6581,7 @@ index 4896c404bc8b25d69360de7d1c509383282b2317..14bdebf732e929ea367c961f9d0bec85 static constexpr Seconds didUpdateBackingStoreStateTimeout() { return Seconds::fromMilliseconds(500); } diff --git a/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp new file mode 100644 -index 0000000000000000000000000000000000000000..cd718da46713a8414b90e6768f65d7c90e5207dd +index 0000000000000000000000000000000000000000..7e60481e8a85d3b4a18f95970dd86577b851bcda --- /dev/null +++ b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp @@ -0,0 +1,482 @@ @@ -6990,10 +7015,10 @@ index 0000000000000000000000000000000000000000..cd718da46713a8414b90e6768f65d7c9 + return; + } + if (geolocation) { -+ double timestamp; -+ double latitude; -+ double longitude; -+ double accuracy; ++ double timestamp = 0; ++ double latitude = 0; ++ double longitude = 0; ++ double accuracy = 0; + if (!geolocation->getDouble("timestamp", timestamp) || + !geolocation->getDouble("latitude", latitude) || + !geolocation->getDouble("longitude", longitude) || @@ -11161,28 +11186,30 @@ index 1570d65effb5d601ee3c44a2a7461436f4691c2c..456f96cf589320efa70a76f76e230b67 typedef struct _BrowserWindow BrowserWindow; diff --git a/Tools/MiniBrowser/gtk/main.c b/Tools/MiniBrowser/gtk/main.c -index 4c5147dcd38a53e2feaeaae0fce38f92dc60eba6..85d98782b2beef897221659631384ef379dfe87f 100644 +index 4c5147dcd38a53e2feaeaae0fce38f92dc60eba6..17854dbfb1a3223e091ab90c0ca1bfc1e1f13d44 100644 --- a/Tools/MiniBrowser/gtk/main.c +++ b/Tools/MiniBrowser/gtk/main.c -@@ -53,6 +53,8 @@ static const char *cookiesFile; +@@ -53,6 +53,9 @@ static const char *cookiesFile; static const char *cookiesPolicy; static const char *proxy; static gboolean darkMode; +static gboolean inspectorPipe; +static gboolean headless; ++static const char *userDataDir; static gboolean printVersion; typedef enum { -@@ -121,6 +123,8 @@ static const GOptionEntry commandLineOptions[] = +@@ -121,6 +124,9 @@ static const GOptionEntry commandLineOptions[] = { "ignore-tls-errors", 0, 0, G_OPTION_ARG_NONE, &ignoreTLSErrors, "Ignore TLS errors", NULL }, { "content-filter", 0, 0, G_OPTION_ARG_FILENAME, &contentFilter, "JSON with content filtering rules", "FILE" }, { "version", 'v', 0, G_OPTION_ARG_NONE, &printVersion, "Print the WebKitGTK version", NULL }, + { "inspector-pipe", 0, 0, G_OPTION_ARG_NONE, &inspectorPipe, "Open pipe connection to the remote inspector", NULL }, ++ { "user-data-dir", 0, 0, G_OPTION_ARG_STRING, &userDataDir, "Default profile persistence folder location", NULL }, + { "headless", 0, 0, G_OPTION_ARG_NONE, &headless, "Noop headless operation", NULL }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &uriArguments, 0, "[URL…]" }, { 0, 0, 0, 0, 0, 0, 0 } }; -@@ -498,6 +502,29 @@ static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResul +@@ -498,6 +504,29 @@ static void filterSavedCallback(WebKitUserContentFilterStore *store, GAsyncResul g_main_loop_quit(data->mainLoop); } @@ -11212,7 +11239,7 @@ index 4c5147dcd38a53e2feaeaae0fce38f92dc60eba6..85d98782b2beef897221659631384ef3 int main(int argc, char *argv[]) { #if ENABLE_DEVELOPER_MODE -@@ -541,10 +568,22 @@ int main(int argc, char *argv[]) +@@ -541,10 +570,22 @@ int main(int argc, char *argv[]) return 0; } @@ -11800,7 +11827,7 @@ index d996feb64e02d7399f2ed0b34d3d0dd03133f824..474caddaafa1fd464acd9117e3260fe3 _bstr_t requestedURL; diff --git a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp -index 71c43e6691395b787140ca0603550aac1c8513d5..82fd4b084931a87ba34f390ccd26737e0c787ebb 100644 +index 71c43e6691395b787140ca0603550aac1c8513d5..fbcf0036e3778fb7c2eb6edd8ada08bd49d8b643 100644 --- a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp +++ b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp @@ -39,6 +39,8 @@ @@ -11812,15 +11839,57 @@ index 71c43e6691395b787140ca0603550aac1c8513d5..82fd4b084931a87ba34f390ccd26737e std::wstring createString(WKStringRef wkString) { size_t maxSize = WKStringGetLength(wkString); -@@ -148,6 +150,7 @@ WebKitBrowserWindow::WebKitBrowserWindow(BrowserWindowClient& client, WKPageConf +@@ -143,11 +145,17 @@ WebKitBrowserWindow::WebKitBrowserWindow(BrowserWindowClient& client, WKPageConf + navigationClient.didReceiveAuthenticationChallenge = didReceiveAuthenticationChallenge; + WKPageSetPageNavigationClient(page, &navigationClient.base); + +- WKPageUIClientV13 uiClient = { }; +- uiClient.base.version = 13; ++ WKPageUIClientV14 uiClient = { }; ++ uiClient.base.version = 14; uiClient.base.clientInfo = this; uiClient.createNewPage = createNewPage; uiClient.didNotHandleKeyEvent = didNotHandleKeyEvent; + uiClient.close = closeWindow; ++ uiClient.runJavaScriptAlert = runJavaScriptAlert; ++ uiClient.runJavaScriptConfirm = runJavaScriptConfirm; ++ uiClient.runJavaScriptPrompt = runJavaScriptPrompt; ++ uiClient.runBeforeUnloadConfirmPanel = runBeforeUnloadConfirmPanel; ++ uiClient.handleJavaScriptDialog = handleJavaScriptDialog; WKPageSetPageUIClient(page, &uiClient.base); WKPageStateClientV0 stateClient = { }; -@@ -381,21 +384,41 @@ bool WebKitBrowserWindow::canTrustServerCertificate(WKProtectionSpaceRef protect +@@ -163,6 +171,29 @@ WebKitBrowserWindow::WebKitBrowserWindow(BrowserWindowClient& client, WKPageConf + resetZoom(); + } + ++WebKitBrowserWindow::~WebKitBrowserWindow() ++{ ++ if (m_alertDialog) { ++ WKRelease(m_alertDialog); ++ m_alertDialog = NULL; ++ } ++ ++ if (m_confirmDialog) { ++ WKRelease(m_confirmDialog); ++ m_confirmDialog = NULL; ++ } ++ ++ if (m_promptDialog) { ++ WKRelease(m_promptDialog); ++ m_promptDialog = NULL; ++ } ++ ++ if (m_beforeUnloadDialog) { ++ WKRelease(m_beforeUnloadDialog); ++ m_beforeUnloadDialog = NULL; ++ } ++} ++ + void WebKitBrowserWindow::updateProxySettings() + { + auto context = WKPageGetContext(WKViewGetPage(m_view.get())); +@@ -381,21 +412,97 @@ bool WebKitBrowserWindow::canTrustServerCertificate(WKProtectionSpaceRef protect return false; } @@ -11837,6 +11906,62 @@ index 71c43e6691395b787140ca0603550aac1c8513d5..82fd4b084931a87ba34f390ccd26737e + PostMessage(thisWindow.m_hMainWnd, WM_CLOSE, 0, 0); +} + ++void WebKitBrowserWindow::runJavaScriptAlert(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptAlertResultListenerRef listener, const void *clientInfo) ++{ ++ auto& thisWindow = toWebKitBrowserWindow(clientInfo); ++ WKRetain(listener); ++ thisWindow.m_alertDialog = listener; ++} ++ ++void WebKitBrowserWindow::runJavaScriptConfirm(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptConfirmResultListenerRef listener, const void *clientInfo) ++{ ++ auto& thisWindow = toWebKitBrowserWindow(clientInfo); ++ WKRetain(listener); ++ thisWindow.m_confirmDialog = listener; ++} ++ ++void WebKitBrowserWindow::runJavaScriptPrompt(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptPromptResultListenerRef listener, const void *clientInfo) ++{ ++ auto& thisWindow = toWebKitBrowserWindow(clientInfo); ++ WKRetain(listener); ++ thisWindow.m_promptDialog = listener; ++} ++ ++void WebKitBrowserWindow::runBeforeUnloadConfirmPanel(WKPageRef page, WKStringRef message, WKFrameRef frame, WKPageRunBeforeUnloadConfirmPanelResultListenerRef listener, const void *clientInfo) ++{ ++ auto& thisWindow = toWebKitBrowserWindow(clientInfo); ++ WKRetain(listener); ++ thisWindow.m_beforeUnloadDialog = listener; ++} ++ ++void WebKitBrowserWindow::handleJavaScriptDialog(WKPageRef page, bool accept, WKStringRef value, const void *clientInfo) ++{ ++ auto& thisWindow = toWebKitBrowserWindow(clientInfo); ++ if (thisWindow.m_alertDialog) { ++ WKPageRunJavaScriptAlertResultListenerCall(thisWindow.m_alertDialog); ++ WKRelease(thisWindow.m_alertDialog); ++ thisWindow.m_alertDialog = NULL; ++ } ++ ++ if (thisWindow.m_confirmDialog) { ++ WKPageRunJavaScriptConfirmResultListenerCall(thisWindow.m_confirmDialog, accept); ++ WKRelease(thisWindow.m_confirmDialog); ++ thisWindow.m_confirmDialog = NULL; ++ } ++ ++ if (thisWindow.m_promptDialog) { ++ WKPageRunJavaScriptPromptResultListenerCall(thisWindow.m_promptDialog, accept ? value : NULL); ++ WKRelease(thisWindow.m_promptDialog); ++ thisWindow.m_promptDialog = NULL; ++ } ++ ++ if (thisWindow.m_beforeUnloadDialog) { ++ WKPageRunBeforeUnloadConfirmPanelResultListenerCall(thisWindow.m_beforeUnloadDialog, accept); ++ WKRelease(thisWindow.m_beforeUnloadDialog); ++ thisWindow.m_beforeUnloadDialog = NULL; ++ } ++} ++ +WKPageRef WebKitBrowserWindow::createPageCallback(WKPageConfigurationRef configuration) { auto& newWindow = MainWindow::create().leakRef(); @@ -11867,10 +11992,10 @@ index 71c43e6691395b787140ca0603550aac1c8513d5..82fd4b084931a87ba34f390ccd26737e { auto& thisWindow = toWebKitBrowserWindow(clientInfo); diff --git a/Tools/MiniBrowser/win/WebKitBrowserWindow.h b/Tools/MiniBrowser/win/WebKitBrowserWindow.h -index e8efe3c2838a9bb553a1c59ff6c1fb25d2f96500..67f629637fad2da465025248af328f80e6ee7068 100644 +index e8efe3c2838a9bb553a1c59ff6c1fb25d2f96500..adebbe537e72d3e3708c9fb66a408a1e400e9ff5 100644 --- a/Tools/MiniBrowser/win/WebKitBrowserWindow.h +++ b/Tools/MiniBrowser/win/WebKitBrowserWindow.h -@@ -34,6 +34,8 @@ +@@ -34,9 +34,12 @@ class WebKitBrowserWindow : public BrowserWindow { public: static Ref create(BrowserWindowClient&, HWND mainWnd, bool useLayeredWebView = false); @@ -11879,14 +12004,32 @@ index e8efe3c2838a9bb553a1c59ff6c1fb25d2f96500..67f629637fad2da465025248af328f80 private: WebKitBrowserWindow(BrowserWindowClient&, WKPageConfigurationRef, HWND mainWnd); -@@ -71,6 +73,7 @@ private: ++ ~WebKitBrowserWindow() override; + + HRESULT init() override; + HWND hwnd() override; +@@ -71,6 +74,12 @@ private: static void didChangeActiveURL(const void*); static void didReceiveAuthenticationChallenge(WKPageRef, WKAuthenticationChallengeRef, const void*); static WKPageRef createNewPage(WKPageRef, WKPageConfigurationRef, WKNavigationActionRef, WKWindowFeaturesRef, const void *); + static void closeWindow(WKPageRef, const void*); ++ static void runJavaScriptAlert(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptAlertResultListenerRef listener, const void *clientInfo); ++ static void runJavaScriptConfirm(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptConfirmResultListenerRef listener, const void *clientInfo); ++ 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 void didNotHandleKeyEvent(WKPageRef, WKNativeEventPtr, const void*); BrowserWindowClient& m_client; +@@ -78,4 +87,8 @@ private: + HWND m_hMainWnd { nullptr }; + ProxySettings m_proxy { }; + std::unordered_map m_acceptedServerTrustCerts; ++ WKPageRunJavaScriptAlertResultListenerRef m_alertDialog = { }; ++ WKPageRunJavaScriptConfirmResultListenerRef m_confirmDialog = { }; ++ WKPageRunJavaScriptPromptResultListenerRef m_promptDialog = { }; ++ WKPageRunBeforeUnloadConfirmPanelResultListenerRef m_beforeUnloadDialog = { }; + }; diff --git a/Tools/MiniBrowser/win/WinMain.cpp b/Tools/MiniBrowser/win/WinMain.cpp index b1d17e88de61a6f196830f62604e4174564506bd..eb5b63e75be20ffbe390c0b084314c3542b6b5b2 100644 --- a/Tools/MiniBrowser/win/WinMain.cpp @@ -11956,7 +12099,7 @@ index 245f319abf2595e154d03e1ee8b3250d7f46aafd..9cae87b23deade7c163f34aade2b2aed ${WPEBACKEND_FDO_INCLUDE_DIRS} ) diff --git a/Tools/MiniBrowser/wpe/main.cpp b/Tools/MiniBrowser/wpe/main.cpp -index 2d183d394123bd84545dc51f53eb9be796fb8873..359c0f3275f5a22560349c445f086958b8edc356 100644 +index 2d183d394123bd84545dc51f53eb9be796fb8873..867e7d08fd5f922e32e09550ac19a21d0c8fb7d1 100644 --- a/Tools/MiniBrowser/wpe/main.cpp +++ b/Tools/MiniBrowser/wpe/main.cpp @@ -25,7 +25,7 @@ @@ -11968,23 +12111,25 @@ index 2d183d394123bd84545dc51f53eb9be796fb8873..359c0f3275f5a22560349c445f086958 #include "WindowViewBackend.h" #if ENABLE_WEB_AUDIO || ENABLE_VIDEO #include -@@ -43,6 +43,7 @@ static gboolean headlessMode; +@@ -43,6 +43,8 @@ static gboolean headlessMode; static gboolean privateMode; static gboolean automationMode; static gboolean ignoreTLSErrors; +static gboolean inspectorPipe; ++static const char* userDataDir; static const char* contentFilter; static const char* cookiesFile; static const char* cookiesPolicy; -@@ -63,6 +64,7 @@ static const GOptionEntry commandLineOptions[] = +@@ -63,6 +65,8 @@ static const GOptionEntry commandLineOptions[] = { "content-filter", 0, 0, G_OPTION_ARG_FILENAME, &contentFilter, "JSON with content filtering rules", "FILE" }, { "bg-color", 0, 0, G_OPTION_ARG_STRING, &bgColor, "Window background color. Default: white", "COLOR" }, { "version", 'v', 0, G_OPTION_ARG_NONE, &printVersion, "Print the WPE version", nullptr }, + { "inspector-pipe", 'v', 0, G_OPTION_ARG_NONE, &inspectorPipe, "Expose remote debugging protocol over pipe", nullptr }, ++ { "user-data-dir", 0, 0, G_OPTION_ARG_STRING, &userDataDir, "Default profile persistence folder location", "FILE" }, { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &uriArguments, nullptr, "[URL]" }, { nullptr, 0, 0, G_OPTION_ARG_NONE, nullptr, nullptr, nullptr } }; -@@ -131,7 +133,7 @@ static gboolean decidePermissionRequest(WebKitWebView *, WebKitPermissionRequest +@@ -131,7 +135,7 @@ static gboolean decidePermissionRequest(WebKitWebView *, WebKitPermissionRequest static std::unique_ptr createViewBackend(uint32_t width, uint32_t height) { if (headlessMode) @@ -11993,7 +12138,7 @@ index 2d183d394123bd84545dc51f53eb9be796fb8873..359c0f3275f5a22560349c445f086958 return std::make_unique(width, height); } -@@ -152,7 +154,23 @@ static void webViewClose(WebKitWebView* webView, gpointer) +@@ -152,7 +156,23 @@ static void webViewClose(WebKitWebView* webView, gpointer) g_object_unref(webView); } @@ -12018,7 +12163,7 @@ index 2d183d394123bd84545dc51f53eb9be796fb8873..359c0f3275f5a22560349c445f086958 { auto backend = createViewBackend(1280, 720); struct wpe_view_backend* wpeBackend = backend->backend(); -@@ -164,14 +182,48 @@ static WebKitWebView* createWebView(WebKitWebView* webView, WebKitNavigationActi +@@ -164,14 +184,48 @@ static WebKitWebView* createWebView(WebKitWebView* webView, WebKitNavigationActi delete static_cast(data); }, backend.release()); @@ -12070,7 +12215,7 @@ index 2d183d394123bd84545dc51f53eb9be796fb8873..359c0f3275f5a22560349c445f086958 int main(int argc, char *argv[]) { #if ENABLE_DEVELOPER_MODE -@@ -280,6 +332,9 @@ int main(int argc, char *argv[]) +@@ -280,6 +334,9 @@ int main(int argc, char *argv[]) delete static_cast(data); }, backend.release()); @@ -12080,7 +12225,7 @@ index 2d183d394123bd84545dc51f53eb9be796fb8873..359c0f3275f5a22560349c445f086958 auto* webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, "backend", viewBackend, "web-context", webContext, -@@ -318,7 +373,7 @@ int main(int argc, char *argv[]) +@@ -318,7 +375,7 @@ int main(int argc, char *argv[]) g_object_unref(file); webkit_web_view_load_uri(webView, url); g_free(url);