browser(webkit): keep browser process running when all windows closed (#6131)

This commit is contained in:
Yury Semikhatsky 2021-04-07 19:13:20 -07:00 committed by GitHub
parent d0db4f6737
commit bd0043b8cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 11 additions and 17 deletions

View file

@ -1,2 +1,2 @@
1460 1461
Changed: yurys@chromium.org Tue 06 Apr 2021 10:21:52 PM PDT Changed: yurys@chromium.org Thu, Apr 8, 2021 2:02:23 AM

View file

@ -48,11 +48,11 @@ std::wstring MainWindow::s_windowClass;
size_t MainWindow::s_numInstances; size_t MainWindow::s_numInstances;
bool MainWindow::s_headless = false; bool MainWindow::s_headless = false;
bool MainWindow::s_noStartupWindow = false; bool MainWindow::s_controlledRemotely = false;
void MainWindow::configure(bool headless, bool noStartupWindow) { void MainWindow::configure(bool headless, bool controlledRemotely) {
s_headless = headless; s_headless = headless;
s_noStartupWindow = noStartupWindow; s_controlledRemotely = controlledRemotely;
} }
static std::wstring loadString(int id) static std::wstring loadString(int id)
@ -324,7 +324,7 @@ LRESULT CALLBACK MainWindow::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
case WM_NCDESTROY: case WM_NCDESTROY:
SetWindowLongPtr(hWnd, GWLP_USERDATA, 0); SetWindowLongPtr(hWnd, GWLP_USERDATA, 0);
delete thisWindow; delete thisWindow;
if (s_noStartupWindow || s_numInstances > 0) if (s_controlledRemotely || s_numInstances > 0)
return 0; return 0;
PostQuitMessage(0); PostQuitMessage(0);
break; break;

View file

@ -35,7 +35,7 @@
class MainWindow : public BrowserWindowClient { class MainWindow : public BrowserWindowClient {
public: public:
static void configure(bool headless, bool noStartupWindow); static void configure(bool headless, bool controlledRemotely);
MainWindow(); MainWindow();
@ -56,7 +56,7 @@ private:
static std::wstring s_windowClass; static std::wstring s_windowClass;
static size_t s_numInstances; static size_t s_numInstances;
static bool s_headless; static bool s_headless;
static bool s_noStartupWindow; static bool s_controlledRemotely;
bool toggleMenuItem(UINT menuID); bool toggleMenuItem(UINT menuID);
void onURLBarEnter(); void onURLBarEnter();

View file

@ -101,7 +101,7 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
if (SetProcessDpiAwarenessContextPtr()) if (SetProcessDpiAwarenessContextPtr())
SetProcessDpiAwarenessContextPtr()(DPI_AWARENESS_CONTEXT_UNAWARE); SetProcessDpiAwarenessContextPtr()(DPI_AWARENESS_CONTEXT_UNAWARE);
MainWindow::configure(g_options.headless, g_options.noStartupWindow); MainWindow::configure(g_options.headless, g_options.inspectorPipe);
if (!g_options.noStartupWindow) { if (!g_options.noStartupWindow) {
auto configuration = adoptWK(WKWebsiteDataStoreConfigurationCreate()); auto configuration = adoptWK(WKWebsiteDataStoreConfigurationCreate());

View file

@ -13057,10 +13057,10 @@ index 0000000000000000000000000000000000000000..d0e11ed81a6257c011df23d5870da740
+} // namespace WebKit +} // namespace WebKit
diff --git a/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp diff --git a/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..4463301d7cbe4831ee35f91664fe0ec2e8288fe6 index 0000000000000000000000000000000000000000..f55fb6443a7478fb8532c73e3ec7ae8f0f3e8380
--- /dev/null --- /dev/null
+++ b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp +++ b/Source/WebKit/UIProcess/InspectorPlaywrightAgent.cpp
@@ -0,0 +1,894 @@ @@ -0,0 +1,888 @@
+/* +/*
+ * Copyright (C) 2019 Microsoft Corporation. + * Copyright (C) 2019 Microsoft Corporation.
+ * + *
@ -13559,12 +13559,6 @@ index 0000000000000000000000000000000000000000..4463301d7cbe4831ee35f91664fe0ec2
+ for (auto* page : pages) + for (auto* page : pages)
+ page->closePage(); + page->closePage();
+ +
+ if (!WebProcessPool::allProcessPools().size()) {
+ m_client->closeBrowser();
+ callback(String());
+ return;
+ }
+
+ if (!m_defaultContext) { + if (!m_defaultContext) {
+ m_client->closeBrowser(); + m_client->closeBrowser();
+ callback(String()); + callback(String());