browser(webkit): fix default context on windows (#504)

This commit is contained in:
Pavel Feldman 2020-01-16 12:49:17 -08:00 committed by GitHub
parent 7785fd8191
commit 6b0b7500bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 73 additions and 66 deletions

View File

@ -1 +1 @@
1093 1094

View File

@ -6556,10 +6556,10 @@ index 4896c404bc8b25d69360de7d1c509383282b2317..14bdebf732e929ea367c961f9d0bec85
static constexpr Seconds didUpdateBackingStoreStateTimeout() { return Seconds::fromMilliseconds(500); } static constexpr Seconds didUpdateBackingStoreStateTimeout() { return Seconds::fromMilliseconds(500); }
diff --git a/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp diff --git a/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..1d27f8ffb425522b536c48ad460aac8a68f6c07c index 0000000000000000000000000000000000000000..cd718da46713a8414b90e6768f65d7c90e5207dd
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp +++ b/Source/WebKit/UIProcess/InspectorBrowserAgent.cpp
@@ -0,0 +1,483 @@ @@ -0,0 +1,482 @@
+/* +/*
+ * Copyright (C) 2019 Microsoft Corporation. + * Copyright (C) 2019 Microsoft Corporation.
+ * + *
@ -6707,7 +6707,7 @@ index 0000000000000000000000000000000000000000..1d27f8ffb425522b536c48ad460aac8a
+ if (m_client == nullptr) { + if (m_client == nullptr) {
+ errorString = "no platform delegate to close browser"; + errorString = "no platform delegate to close browser";
+ } else { + } else {
+ m_client->closeAllWindows(); + m_client->closeBrowser();
+ } + }
+} +}
+ +
@ -6748,8 +6748,7 @@ index 0000000000000000000000000000000000000000..1d27f8ffb425522b536c48ad460aac8a
+ BrowserContext browserContext = lookupBrowserContext(errorString, browserContextID); + BrowserContext browserContext = lookupBrowserContext(errorString, browserContextID);
+ if (!errorString.isEmpty()) + if (!errorString.isEmpty())
+ return; + return;
+ PAL::SessionID sessionID = browserContext.dataStore->sessionID(); + RefPtr<WebPageProxy> page = m_client->createPage(errorString, browserContext);
+ RefPtr<WebPageProxy> page = m_client->createPage(errorString, sessionID);
+ if (!page) + if (!page)
+ return; + return;
+ page->setPermissionsForAutomation(m_permissions.get(browserContextID ? *browserContextID : "")); + page->setPermissionsForAutomation(m_permissions.get(browserContextID ? *browserContextID : ""));
@ -7164,7 +7163,7 @@ index 0000000000000000000000000000000000000000..71a26862762e695015ca27aac2e4645d
+#endif // ENABLE(REMOTE_INSPECTOR) +#endif // ENABLE(REMOTE_INSPECTOR)
diff --git a/Source/WebKit/UIProcess/InspectorBrowserAgentClient.h b/Source/WebKit/UIProcess/InspectorBrowserAgentClient.h diff --git a/Source/WebKit/UIProcess/InspectorBrowserAgentClient.h b/Source/WebKit/UIProcess/InspectorBrowserAgentClient.h
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..0e18ecd59f6f493da1f9ac8505c5088c163271bb index 0000000000000000000000000000000000000000..21f8cc9bffd8f2d4a88764a4eafa13f367aa1e7c
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/InspectorBrowserAgentClient.h +++ b/Source/WebKit/UIProcess/InspectorBrowserAgentClient.h
@@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
@ -7214,8 +7213,8 @@ index 0000000000000000000000000000000000000000..0e18ecd59f6f493da1f9ac8505c5088c
+class InspectorBrowserAgentClient { +class InspectorBrowserAgentClient {
+public: +public:
+ virtual ~InspectorBrowserAgentClient() = default; + virtual ~InspectorBrowserAgentClient() = default;
+ virtual RefPtr<WebKit::WebPageProxy> createPage(WTF::String& error, PAL::SessionID) = 0; + virtual RefPtr<WebKit::WebPageProxy> createPage(WTF::String& error, const BrowserContext& context) = 0;
+ virtual void closeAllWindows() = 0; + virtual void closeBrowser() = 0;
+ virtual BrowserContext createBrowserContext(WTF::String& error) = 0; + virtual BrowserContext createBrowserContext(WTF::String& error) = 0;
+ virtual void deleteBrowserContext(WTF::String& error, PAL::SessionID) = 0; + virtual void deleteBrowserContext(WTF::String& error, PAL::SessionID) = 0;
+}; +};
@ -9113,10 +9112,10 @@ index 31d29091985f34a65134a2b0e7cb3ace1dae441d..571ceac8a4b291fa6e91eb8b17065c0a
}; };
diff --git a/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp diff --git a/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..50a643a0ecab27b736ab49d3984384f45b038524 index 0000000000000000000000000000000000000000..d3f969edbd888c4f9265c04e07814d0a3e337802
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp +++ b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.cpp
@@ -0,0 +1,131 @@ @@ -0,0 +1,132 @@
+/* +/*
+ * Copyright (C) 2019 Microsoft Corporation. + * Copyright (C) 2019 Microsoft Corporation.
+ * + *
@ -9186,8 +9185,9 @@ index 0000000000000000000000000000000000000000..50a643a0ecab27b736ab49d3984384f4
+{ +{
+} +}
+ +
+RefPtr<WebPageProxy> InspectorBrowserAgentClientGlib::createPage(WTF::String& error, PAL::SessionID sessionID) +RefPtr<WebPageProxy> InspectorBrowserAgentClientGlib::createPage(WTF::String& error, const BrowserContext& browserContext)
+{ +{
+ auto sessionID = browserContext.dataStore->sessionID();
+ WebKitWebContext* context; + WebKitWebContext* context;
+ if (!sessionID || webkitWebContextGetProcessPool(webkit_web_context_get_default()).websiteDataStore()->sessionID() == sessionID) + if (!sessionID || webkitWebContextGetProcessPool(webkit_web_context_get_default()).websiteDataStore()->sessionID() == sessionID)
+ context = webkit_web_context_get_default(); + context = webkit_web_context_get_default();
@ -9205,7 +9205,7 @@ index 0000000000000000000000000000000000000000..50a643a0ecab27b736ab49d3984384f4
+ return page; + return page;
+} +}
+ +
+void InspectorBrowserAgentClientGlib::closeAllWindows() +void InspectorBrowserAgentClientGlib::closeBrowser()
+{ +{
+ closeAllPages(Optional<PAL::SessionID>()); + closeAllPages(Optional<PAL::SessionID>());
+ m_idToContext.clear(); + m_idToContext.clear();
@ -9250,7 +9250,7 @@ index 0000000000000000000000000000000000000000..50a643a0ecab27b736ab49d3984384f4
+#endif // ENABLE(REMOTE_INSPECTOR) +#endif // ENABLE(REMOTE_INSPECTOR)
diff --git a/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h diff --git a/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..6fcadb97ebe89699f29afc4dcac6065dbade9a3b index 0000000000000000000000000000000000000000..9e27fe017ffdef1e8aafce69344fd688c732c3b4
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h +++ b/Source/WebKit/UIProcess/glib/InspectorBrowserAgentClientGLib.h
@@ -0,0 +1,59 @@ @@ -0,0 +1,59 @@
@ -9298,8 +9298,8 @@ index 0000000000000000000000000000000000000000..6fcadb97ebe89699f29afc4dcac6065d
+ InspectorBrowserAgentClientGlib(GMainLoop* mainLoop); + InspectorBrowserAgentClientGlib(GMainLoop* mainLoop);
+ ~InspectorBrowserAgentClientGlib() override = default; + ~InspectorBrowserAgentClientGlib() override = default;
+ +
+ RefPtr<WebPageProxy> createPage(WTF::String& error, PAL::SessionID) override; + RefPtr<WebPageProxy> createPage(WTF::String& error, const BrowserContext&) override;
+ void closeAllWindows() override; + void closeBrowser() override;
+ BrowserContext createBrowserContext(WTF::String& error) override; + BrowserContext createBrowserContext(WTF::String& error) override;
+ void deleteBrowserContext(WTF::String& error, PAL::SessionID) override; + void deleteBrowserContext(WTF::String& error, PAL::SessionID) override;
+ +
@ -9566,7 +9566,7 @@ index dbfb34900ad983a8f2267a29ccca9adbb89de2d6..bcf76c1f8df1bb307074393a62fa8b2e
diff --git a/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.h b/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.h diff --git a/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.h b/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.h
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..5de915edebd76599a71e2556516f5442ac7ed9b4 index 0000000000000000000000000000000000000000..f9e7e5906301bb7add100bba3f88c0c0aef04fd1
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.h +++ b/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.h
@@ -0,0 +1,51 @@ @@ -0,0 +1,51 @@
@ -9610,12 +9610,12 @@ index 0000000000000000000000000000000000000000..5de915edebd76599a71e2556516f5442
+ InspectorBrowserAgentClientMac(_WKBrowserInspectorDelegate* delegate); + InspectorBrowserAgentClientMac(_WKBrowserInspectorDelegate* delegate);
+ ~InspectorBrowserAgentClientMac() override = default; + ~InspectorBrowserAgentClientMac() override = default;
+ +
+ RefPtr<WebPageProxy> createPage(WTF::String& error, PAL::SessionID) override; + RefPtr<WebPageProxy> createPage(WTF::String& error, const BrowserContext&) override;
+ void closeAllWindows() override; + void closeBrowser() override;
+ BrowserContext createBrowserContext(WTF::String& error) override; + BrowserContext createBrowserContext(WTF::String& error) override;
+ void deleteBrowserContext(WTF::String& error, PAL::SessionID) override; + void deleteBrowserContext(WTF::String& error, PAL::SessionID) override;
+ private:
+ +
+private:
+ _WKBrowserInspectorDelegate* delegate_; + _WKBrowserInspectorDelegate* delegate_;
+}; +};
+ +
@ -9623,10 +9623,10 @@ index 0000000000000000000000000000000000000000..5de915edebd76599a71e2556516f5442
+} // namespace API +} // namespace API
diff --git a/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.mm b/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.mm diff --git a/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.mm b/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.mm
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..af371a4a71a1facdaa9f67881e998bf5fe23201e index 0000000000000000000000000000000000000000..c5d7c51bff0e0865a49a49c8df19ef9677a03998
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.mm +++ b/Source/WebKit/UIProcess/mac/InspectorBrowserAgentClientMac.mm
@@ -0,0 +1,76 @@ @@ -0,0 +1,77 @@
+/* +/*
+ * Copyright (C) 2019 Microsoft Corporation. + * Copyright (C) 2019 Microsoft Corporation.
+ * + *
@ -9673,8 +9673,9 @@ index 0000000000000000000000000000000000000000..af371a4a71a1facdaa9f67881e998bf5
+{ +{
+} +}
+ +
+RefPtr<WebPageProxy> InspectorBrowserAgentClientMac::createPage(WTF::String& error, PAL::SessionID sessionID) +RefPtr<WebPageProxy> InspectorBrowserAgentClientMac::createPage(WTF::String& error, const BrowserContext& browserContext)
+{ +{
+ auto sessionID = browserContext.dataStore->sessionID();
+ WKWebView *webView = [delegate_ createNewPage:sessionID.toUInt64()]; + WKWebView *webView = [delegate_ createNewPage:sessionID.toUInt64()];
+ if (!webView) { + if (!webView) {
+ error = "Internal error: can't create page in given context"_s; + error = "Internal error: can't create page in given context"_s;
@ -9683,7 +9684,7 @@ index 0000000000000000000000000000000000000000..af371a4a71a1facdaa9f67881e998bf5
+ return [webView _page]; + return [webView _page];
+} +}
+ +
+void InspectorBrowserAgentClientMac::closeAllWindows() +void InspectorBrowserAgentClientMac::closeBrowser()
+{ +{
+ [delegate_ quit]; + [delegate_ quit];
+} +}
@ -10046,10 +10047,10 @@ index 0000000000000000000000000000000000000000..30e6ae3bdc8c1695189885afae949071
+} // namespace WebKit +} // namespace WebKit
diff --git a/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.cpp b/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.cpp diff --git a/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.cpp b/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.cpp
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..b48550079b63975e6e35e11574db4982bba37cf2 index 0000000000000000000000000000000000000000..d33b1bb189d561754e5f44cc1fa87f2760a2f424
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.cpp +++ b/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.cpp
@@ -0,0 +1,88 @@ @@ -0,0 +1,83 @@
+/* +/*
+ * Copyright (C) 2020 Microsoft Corporation. + * Copyright (C) 2020 Microsoft Corporation.
+ * + *
@ -10102,19 +10103,16 @@ index 0000000000000000000000000000000000000000..b48550079b63975e6e35e11574db4982
+{ +{
+} +}
+ +
+RefPtr<WebPageProxy> InspectorBrowserAgentClientWin::createPage(WTF::String& error, PAL::SessionID sessionID) +RefPtr<WebPageProxy> InspectorBrowserAgentClientWin::createPage(WTF::String& error, const BrowserContext& context)
+{ +{
+ auto conf = &API::PageConfiguration::create().leakRef(); + auto conf = &API::PageConfiguration::create().leakRef();
+ auto prefs = &WebPreferences::create(String(), "WebKit2Automation.", "WebKit2Automation.").leakRef(); + auto prefs = &WebPreferences::create(String(), "WebKit2Automation.", "WebKit2Automation.").leakRef();
+ auto context = m_idToContext.find(sessionID); + conf->setProcessPool(context.processPool.get());
+ if (context != m_idToContext.end()) { + conf->setWebsiteDataStore(context.dataStore.get());
+ conf->setProcessPool(context->value.processPool.get());
+ conf->setWebsiteDataStore(context->value.dataStore.get());
+ }
+ return toImpl(m_createPage(toAPI(conf))); + return toImpl(m_createPage(toAPI(conf)));
+} +}
+ +
+void InspectorBrowserAgentClientWin::closeAllWindows() +void InspectorBrowserAgentClientWin::closeBrowser()
+{ +{
+ m_quit(); + m_quit();
+} +}
@ -10126,13 +10124,11 @@ index 0000000000000000000000000000000000000000..b48550079b63975e6e35e11574db4982
+ browserContext.processPool = WebKit::WebProcessPool::create(config); + browserContext.processPool = WebKit::WebProcessPool::create(config);
+ browserContext.dataStore = WebKit::WebsiteDataStore::createNonPersistent(); + browserContext.dataStore = WebKit::WebsiteDataStore::createNonPersistent();
+ PAL::SessionID sessionID = browserContext.dataStore->sessionID(); + PAL::SessionID sessionID = browserContext.dataStore->sessionID();
+ m_idToContext.set(sessionID, browserContext);
+ return browserContext; + return browserContext;
+} +}
+ +
+void InspectorBrowserAgentClientWin::deleteBrowserContext(WTF::String& error, PAL::SessionID sessionID) +void InspectorBrowserAgentClientWin::deleteBrowserContext(WTF::String& error, PAL::SessionID sessionID)
+{ +{
+ m_idToContext.remove(sessionID);
+} +}
+ +
+} // namespace WebKit +} // namespace WebKit
@ -10140,10 +10136,10 @@ index 0000000000000000000000000000000000000000..b48550079b63975e6e35e11574db4982
+#endif // ENABLE(REMOTE_INSPECTOR) +#endif // ENABLE(REMOTE_INSPECTOR)
diff --git a/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.h b/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.h diff --git a/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.h b/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.h
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..561a70fdcf2c0fa192872fdc050bc717555012a8 index 0000000000000000000000000000000000000000..2311841478469154473c259a4e0c669daf4644f9
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.h +++ b/Source/WebKit/UIProcess/win/InspectorBrowserAgentClientWin.h
@@ -0,0 +1,60 @@ @@ -0,0 +1,58 @@
+/* +/*
+ * Copyright (C) 2020 Microsoft Corporation. + * Copyright (C) 2020 Microsoft Corporation.
+ * + *
@ -10176,7 +10172,6 @@ index 0000000000000000000000000000000000000000..561a70fdcf2c0fa192872fdc050bc717
+#include "InspectorBrowserAgentClient.h" +#include "InspectorBrowserAgentClient.h"
+#include <WebKit/WKInspector.h> +#include <WebKit/WKInspector.h>
+#include <wtf/Forward.h> +#include <wtf/Forward.h>
+#include <wtf/HashMap.h>
+#include <wtf/text/StringHash.h> +#include <wtf/text/StringHash.h>
+ +
+typedef WKPageRef (*CreatePageCallback)(WKPageConfigurationRef configuration); +typedef WKPageRef (*CreatePageCallback)(WKPageConfigurationRef configuration);
@ -10190,13 +10185,12 @@ index 0000000000000000000000000000000000000000..561a70fdcf2c0fa192872fdc050bc717
+ InspectorBrowserAgentClientWin(CreatePageCallback, QuitCallback); + InspectorBrowserAgentClientWin(CreatePageCallback, QuitCallback);
+ ~InspectorBrowserAgentClientWin() override = default; + ~InspectorBrowserAgentClientWin() override = default;
+ +
+ RefPtr<WebPageProxy> createPage(WTF::String& error, PAL::SessionID) override; + RefPtr<WebPageProxy> createPage(WTF::String& error, const BrowserContext&) override;
+ void closeAllWindows() override; + void closeBrowser() override;
+ BrowserContext createBrowserContext(WTF::String& error) override; + BrowserContext createBrowserContext(WTF::String& error) override;
+ void deleteBrowserContext(WTF::String& error, PAL::SessionID) override; + void deleteBrowserContext(WTF::String& error, PAL::SessionID) override;
+ +
+private: +private:
+ HashMap<PAL::SessionID, BrowserContext> m_idToContext;
+ CreatePageCallback m_createPage; + CreatePageCallback m_createPage;
+ QuitCallback m_quit; + QuitCallback m_quit;
+}; +};
@ -11806,7 +11800,7 @@ index d996feb64e02d7399f2ed0b34d3d0dd03133f824..474caddaafa1fd464acd9117e3260fe3
_bstr_t requestedURL; _bstr_t requestedURL;
diff --git a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp diff --git a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp
index 71c43e6691395b787140ca0603550aac1c8513d5..a0ed17bdfd5743f0e49de88313eaac5f2b7c8a12 100644 index 71c43e6691395b787140ca0603550aac1c8513d5..82fd4b084931a87ba34f390ccd26737e0c787ebb 100644
--- a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp --- a/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp
+++ b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp +++ b/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp
@@ -39,6 +39,8 @@ @@ -39,6 +39,8 @@
@ -11826,10 +11820,11 @@ index 71c43e6691395b787140ca0603550aac1c8513d5..a0ed17bdfd5743f0e49de88313eaac5f
WKPageSetPageUIClient(page, &uiClient.base); WKPageSetPageUIClient(page, &uiClient.base);
WKPageStateClientV0 stateClient = { }; WKPageStateClientV0 stateClient = { };
@@ -381,6 +384,34 @@ bool WebKitBrowserWindow::canTrustServerCertificate(WKProtectionSpaceRef protect @@ -381,21 +384,41 @@ bool WebKitBrowserWindow::canTrustServerCertificate(WKProtectionSpaceRef protect
return false; return false;
} }
-WKPageRef WebKitBrowserWindow::createNewPage(WKPageRef page, WKPageConfigurationRef configuration, WKNavigationActionRef navigationAction, WKWindowFeaturesRef windowFeatures, const void *clientInfo)
+// static +// static
+void WebKitBrowserWindow::setHeadless(bool headless) +void WebKitBrowserWindow::setHeadless(bool headless)
+{ +{
@ -11842,27 +11837,37 @@ index 71c43e6691395b787140ca0603550aac1c8513d5..a0ed17bdfd5743f0e49de88313eaac5f
+ PostMessage(thisWindow.m_hMainWnd, WM_CLOSE, 0, 0); + PostMessage(thisWindow.m_hMainWnd, WM_CLOSE, 0, 0);
+} +}
+ +
+WKPageRef WebKitBrowserWindow::createPageForAutomation(WKPageConfigurationRef configuration) +WKPageRef WebKitBrowserWindow::createPageCallback(WKPageConfigurationRef configuration)
+{ {
+ auto& newWindow = MainWindow::create().leakRef(); auto& newWindow = MainWindow::create().leakRef();
+ auto factory = [configuration](BrowserWindowClient& client, HWND mainWnd, bool) -> auto { auto factory = [configuration](BrowserWindowClient& client, HWND mainWnd, bool) -> auto {
+ return adoptRef(*new WebKitBrowserWindow(client, configuration, mainWnd)); return adoptRef(*new WebKitBrowserWindow(client, configuration, mainWnd));
+ }; };
+ bool ok = newWindow.init(factory, hInst); bool ok = newWindow.init(factory, hInst);
+ if (!s_headless) - if (!ok)
- return nullptr;
- ShowWindow(newWindow.hwnd(), SW_SHOW);
+ if (s_headless)
+ SetMenu(newWindow.hwnd(), NULL);
+ else
+ ShowWindow(newWindow.hwnd(), SW_SHOW); + ShowWindow(newWindow.hwnd(), SW_SHOW);
+ newWindow.browserWindow()->loadURL(_bstr_t("about:blank").GetBSTR()); + newWindow.browserWindow()->loadURL(_bstr_t("about:blank").GetBSTR());
+ +
+ auto& newBrowserWindow = *static_cast<WebKitBrowserWindow*>(newWindow.browserWindow()); auto& newBrowserWindow = *static_cast<WebKitBrowserWindow*>(newWindow.browserWindow());
+ WKRetainPtr<WKPageRef> newPage = WKViewGetPage(newBrowserWindow.m_view.get()); WKRetainPtr<WKPageRef> newPage = WKViewGetPage(newBrowserWindow.m_view.get());
+ return newPage.leakRef(); return newPage.leakRef();
}
+WKPageRef WebKitBrowserWindow::createNewPage(WKPageRef, WKPageConfigurationRef configuration, WKNavigationActionRef, WKWindowFeaturesRef, const void*)
+{
+ return createPageCallback(configuration);
+} +}
+ +
WKPageRef WebKitBrowserWindow::createNewPage(WKPageRef page, WKPageConfigurationRef configuration, WKNavigationActionRef navigationAction, WKWindowFeaturesRef windowFeatures, const void *clientInfo) void WebKitBrowserWindow::didNotHandleKeyEvent(WKPageRef, WKNativeEventPtr event, const void* clientInfo)
{ {
auto& newWindow = MainWindow::create().leakRef(); auto& thisWindow = toWebKitBrowserWindow(clientInfo);
diff --git a/Tools/MiniBrowser/win/WebKitBrowserWindow.h b/Tools/MiniBrowser/win/WebKitBrowserWindow.h diff --git a/Tools/MiniBrowser/win/WebKitBrowserWindow.h b/Tools/MiniBrowser/win/WebKitBrowserWindow.h
index e8efe3c2838a9bb553a1c59ff6c1fb25d2f96500..f37211c18a831893354c106ed11d3b2c7f6f69a0 100644 index e8efe3c2838a9bb553a1c59ff6c1fb25d2f96500..67f629637fad2da465025248af328f80e6ee7068 100644
--- a/Tools/MiniBrowser/win/WebKitBrowserWindow.h --- a/Tools/MiniBrowser/win/WebKitBrowserWindow.h
+++ b/Tools/MiniBrowser/win/WebKitBrowserWindow.h +++ b/Tools/MiniBrowser/win/WebKitBrowserWindow.h
@@ -34,6 +34,8 @@ @@ -34,6 +34,8 @@
@ -11870,7 +11875,7 @@ index e8efe3c2838a9bb553a1c59ff6c1fb25d2f96500..f37211c18a831893354c106ed11d3b2c
public: public:
static Ref<BrowserWindow> create(BrowserWindowClient&, HWND mainWnd, bool useLayeredWebView = false); static Ref<BrowserWindow> create(BrowserWindowClient&, HWND mainWnd, bool useLayeredWebView = false);
+ static void setHeadless(bool headless); + static void setHeadless(bool headless);
+ static WKPageRef createPageForAutomation(WKPageConfigurationRef configuration); + static WKPageRef createPageCallback(WKPageConfigurationRef configuration);
private: private:
WebKitBrowserWindow(BrowserWindowClient&, WKPageConfigurationRef, HWND mainWnd); WebKitBrowserWindow(BrowserWindowClient&, WKPageConfigurationRef, HWND mainWnd);
@ -11883,7 +11888,7 @@ index e8efe3c2838a9bb553a1c59ff6c1fb25d2f96500..f37211c18a831893354c106ed11d3b2c
BrowserWindowClient& m_client; BrowserWindowClient& m_client;
diff --git a/Tools/MiniBrowser/win/WinMain.cpp b/Tools/MiniBrowser/win/WinMain.cpp diff --git a/Tools/MiniBrowser/win/WinMain.cpp b/Tools/MiniBrowser/win/WinMain.cpp
index b1d17e88de61a6f196830f62604e4174564506bd..ce9a603b120b8d11c93e35c63006a8b5d97145c8 100644 index b1d17e88de61a6f196830f62604e4174564506bd..eb5b63e75be20ffbe390c0b084314c3542b6b5b2 100644
--- a/Tools/MiniBrowser/win/WinMain.cpp --- a/Tools/MiniBrowser/win/WinMain.cpp
+++ b/Tools/MiniBrowser/win/WinMain.cpp +++ b/Tools/MiniBrowser/win/WinMain.cpp
@@ -47,11 +47,18 @@ @@ -47,11 +47,18 @@
@ -11912,27 +11917,29 @@ index b1d17e88de61a6f196830f62604e4174564506bd..ce9a603b120b8d11c93e35c63006a8b5
+ if (options.inspectorPipe) { + if (options.inspectorPipe) {
+ WebKitBrowserWindow::setHeadless(options.headless); + WebKitBrowserWindow::setHeadless(options.headless);
+ WKInspectorInitializeRemoteInspectorPipe( + WKInspectorInitializeRemoteInspectorPipe(
+ WebKitBrowserWindow::createPageForAutomation, + WebKitBrowserWindow::createPageCallback,
+ []() { PostQuitMessage(0); }); + []() { PostQuitMessage(0); });
+ } + }
if (options.useFullDesktop) if (options.useFullDesktop)
computeFullDesktopFrame(); computeFullDesktopFrame();
@@ -91,14 +104,12 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, @@ -91,14 +104,17 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
if (FAILED(hr)) if (FAILED(hr))
goto exit; goto exit;
- ShowWindow(mainWindow.hwnd(), nCmdShow); - ShowWindow(mainWindow.hwnd(), nCmdShow);
+ if (!options.headless) + if (options.headless)
+ SetMenu(mainWindow.hwnd(), NULL);
+ else
+ ShowWindow(mainWindow.hwnd(), nCmdShow); + ShowWindow(mainWindow.hwnd(), nCmdShow);
hAccelTable = LoadAccelerators(hInst, MAKEINTRESOURCE(IDC_MINIBROWSER)); hAccelTable = LoadAccelerators(hInst, MAKEINTRESOURCE(IDC_MINIBROWSER));
- if (options.requestedURL.length()) if (options.requestedURL.length())
- mainWindow.loadURL(options.requestedURL.GetBSTR()); mainWindow.loadURL(options.requestedURL.GetBSTR());
- else else
- mainWindow.browserWindow()->loadURL(_bstr_t(defaultURL).GetBSTR()); - mainWindow.browserWindow()->loadURL(_bstr_t(defaultURL).GetBSTR());
+ mainWindow.loadURL(_bstr_t("about:blank").GetBSTR()); + mainWindow.loadURL(_bstr_t("about:blank").GetBSTR());
#pragma warning(disable:4509) #pragma warning(disable:4509)