browser(webkit): do not activate headless window on browser start (#900)
This commit is contained in:
Родитель
36344dee27
Коммит
e2710dec29
|
@ -1 +1 @@
|
||||||
1139
|
1140
|
||||||
|
|
|
@ -11951,60 +11951,133 @@ index d996feb64e02d7399f2ed0b34d3d0dd03133f824..4ab1fa69437ed5a11a5357a331cb7e1c
|
||||||
CommandLineOptions()
|
CommandLineOptions()
|
||||||
#if ENABLE(WEBKIT)
|
#if ENABLE(WEBKIT)
|
||||||
diff --git a/Tools/MiniBrowser/win/MainWindow.cpp b/Tools/MiniBrowser/win/MainWindow.cpp
|
diff --git a/Tools/MiniBrowser/win/MainWindow.cpp b/Tools/MiniBrowser/win/MainWindow.cpp
|
||||||
index 82d28bbd4282c2b6b3d1441e822b4fa41e699e78..9fef117e2bc39ade8df4d0bba3b1f10483b37e51 100644
|
index 82d28bbd4282c2b6b3d1441e822b4fa41e699e78..180c0d7f9eaed1e48951c660cb3c6a184f7a6ef3 100644
|
||||||
--- a/Tools/MiniBrowser/win/MainWindow.cpp
|
--- a/Tools/MiniBrowser/win/MainWindow.cpp
|
||||||
+++ b/Tools/MiniBrowser/win/MainWindow.cpp
|
+++ b/Tools/MiniBrowser/win/MainWindow.cpp
|
||||||
@@ -91,7 +91,9 @@ void MainWindow::registerClass(HINSTANCE hInstance)
|
@@ -91,7 +91,10 @@ void MainWindow::registerClass(HINSTANCE hInstance)
|
||||||
RegisterClassEx(&wcex);
|
RegisterClassEx(&wcex);
|
||||||
}
|
}
|
||||||
|
|
||||||
-MainWindow::MainWindow()
|
-MainWindow::MainWindow()
|
||||||
+MainWindow::MainWindow(WKContextRef context, WKWebsiteDataStoreRef dataStore)
|
+MainWindow::MainWindow(WKContextRef context, WKWebsiteDataStoreRef dataStore, bool headless)
|
||||||
+ : m_context(context)
|
+ : m_context(context)
|
||||||
+ , m_dataStore(dataStore)
|
+ , m_dataStore(dataStore)
|
||||||
|
+ , m_headless(headless)
|
||||||
{
|
{
|
||||||
s_numInstances++;
|
s_numInstances++;
|
||||||
}
|
}
|
||||||
@@ -101,9 +103,9 @@ MainWindow::~MainWindow()
|
@@ -101,9 +104,9 @@ MainWindow::~MainWindow()
|
||||||
s_numInstances--;
|
s_numInstances--;
|
||||||
}
|
}
|
||||||
|
|
||||||
-Ref<MainWindow> MainWindow::create()
|
-Ref<MainWindow> MainWindow::create()
|
||||||
+Ref<MainWindow> MainWindow::create(WKContextRef context, WKWebsiteDataStoreRef dataStore)
|
+Ref<MainWindow> MainWindow::create(WKContextRef context, WKWebsiteDataStoreRef dataStore, bool headless)
|
||||||
{
|
{
|
||||||
- return adoptRef(*new MainWindow());
|
- return adoptRef(*new MainWindow());
|
||||||
+ return adoptRef(*new MainWindow(context, dataStore));
|
+ return adoptRef(*new MainWindow(context, dataStore, headless));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MainWindow::init(BrowserWindowFactory factory, HINSTANCE hInstance, bool usesLayeredWebView)
|
bool MainWindow::init(BrowserWindowFactory factory, HINSTANCE hInstance, bool usesLayeredWebView)
|
||||||
@@ -134,7 +136,7 @@ bool MainWindow::init(BrowserWindowFactory factory, HINSTANCE hInstance, bool us
|
@@ -112,29 +115,31 @@ bool MainWindow::init(BrowserWindowFactory factory, HINSTANCE hInstance, bool us
|
||||||
DefEditProc = reinterpret_cast<WNDPROC>(GetWindowLongPtr(m_hURLBarWnd, GWLP_WNDPROC));
|
|
||||||
SetWindowLongPtr(m_hURLBarWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(EditProc));
|
auto title = loadString(IDS_APP_TITLE);
|
||||||
|
|
||||||
|
- m_hMainWnd = CreateWindow(s_windowClass.c_str(), title.c_str(), WS_OVERLAPPEDWINDOW,
|
||||||
|
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, hInstance, this);
|
||||||
|
+ m_hMainWnd = CreateWindowExW(m_headless ? WS_EX_NOACTIVATE : 0, s_windowClass.c_str(), title.c_str(),
|
||||||
|
+ WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, hInstance, this);
|
||||||
|
|
||||||
|
if (!m_hMainWnd)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
+ if (!m_headless) {
|
||||||
|
#if !ENABLE(WEBKIT)
|
||||||
|
- EnableMenuItem(GetMenu(m_hMainWnd), IDM_NEW_WEBKIT_WINDOW, MF_GRAYED);
|
||||||
|
+ EnableMenuItem(GetMenu(m_hMainWnd), IDM_NEW_WEBKIT_WINDOW, MF_GRAYED);
|
||||||
|
#endif
|
||||||
|
#if !ENABLE(WEBKIT_LEGACY)
|
||||||
|
- EnableMenuItem(GetMenu(m_hMainWnd), IDM_NEW_WEBKITLEGACY_WINDOW, MF_GRAYED);
|
||||||
|
+ EnableMenuItem(GetMenu(m_hMainWnd), IDM_NEW_WEBKITLEGACY_WINDOW, MF_GRAYED);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
- m_hBackButtonWnd = CreateWindow(L"BUTTON", L"<", WS_CHILD | WS_VISIBLE | BS_TEXT, 0, 0, 0, 0, m_hMainWnd, reinterpret_cast<HMENU>(IDM_HISTORY_BACKWARD), hInstance, 0);
|
||||||
|
- m_hForwardButtonWnd = CreateWindow(L"BUTTON", L">", WS_CHILD | WS_VISIBLE | BS_TEXT, 0, 0, 0, 0, m_hMainWnd, reinterpret_cast<HMENU>(IDM_HISTORY_FORWARD), hInstance, 0);
|
||||||
|
- m_hReloadButtonWnd = CreateWindow(L"BUTTON", L"↺", WS_CHILD | WS_VISIBLE | BS_TEXT, 0, 0, 0, 0, m_hMainWnd, reinterpret_cast<HMENU>(IDM_RELOAD), hInstance, 0);
|
||||||
|
- m_hURLBarWnd = CreateWindow(L"EDIT", 0, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOVSCROLL, 0, 0, 0, 0, m_hMainWnd, 0, hInstance, 0);
|
||||||
|
- m_hProgressIndicator = CreateWindow(L"STATIC", 0, WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER | SS_CENTERIMAGE, 0, 0, 0, 0, m_hMainWnd, 0, hInstance, 0);
|
||||||
|
+ m_hBackButtonWnd = CreateWindow(L"BUTTON", L"<", WS_CHILD | WS_VISIBLE | BS_TEXT, 0, 0, 0, 0, m_hMainWnd, reinterpret_cast<HMENU>(IDM_HISTORY_BACKWARD), hInstance, 0);
|
||||||
|
+ m_hForwardButtonWnd = CreateWindow(L"BUTTON", L">", WS_CHILD | WS_VISIBLE | BS_TEXT, 0, 0, 0, 0, m_hMainWnd, reinterpret_cast<HMENU>(IDM_HISTORY_FORWARD), hInstance, 0);
|
||||||
|
+ m_hReloadButtonWnd = CreateWindow(L"BUTTON", L"↺", WS_CHILD | WS_VISIBLE | BS_TEXT, 0, 0, 0, 0, m_hMainWnd, reinterpret_cast<HMENU>(IDM_RELOAD), hInstance, 0);
|
||||||
|
+ m_hURLBarWnd = CreateWindow(L"EDIT", 0, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOVSCROLL, 0, 0, 0, 0, m_hMainWnd, 0, hInstance, 0);
|
||||||
|
+ m_hProgressIndicator = CreateWindow(L"STATIC", 0, WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER | SS_CENTERIMAGE, 0, 0, 0, 0, m_hMainWnd, 0, hInstance, 0);
|
||||||
|
|
||||||
|
- DefEditProc = reinterpret_cast<WNDPROC>(GetWindowLongPtr(m_hURLBarWnd, GWLP_WNDPROC));
|
||||||
|
- SetWindowLongPtr(m_hURLBarWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(EditProc));
|
||||||
|
+ DefEditProc = reinterpret_cast<WNDPROC>(GetWindowLongPtr(m_hURLBarWnd, GWLP_WNDPROC));
|
||||||
|
+ SetWindowLongPtr(m_hURLBarWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(EditProc));
|
||||||
|
+ }
|
||||||
|
|
||||||
- m_browserWindow = factory(*this, m_hMainWnd, usesLayeredWebView);
|
- m_browserWindow = factory(*this, m_hMainWnd, usesLayeredWebView);
|
||||||
+ m_browserWindow = factory(*this, m_hMainWnd, m_context.get(), m_dataStore.get(), usesLayeredWebView);
|
+ m_browserWindow = factory(*this, m_hMainWnd, m_context.get(), m_dataStore.get(), usesLayeredWebView);
|
||||||
if (!m_browserWindow)
|
if (!m_browserWindow)
|
||||||
return false;
|
return false;
|
||||||
HRESULT hr = m_browserWindow->init();
|
HRESULT hr = m_browserWindow->init();
|
||||||
@@ -196,7 +198,7 @@ LRESULT CALLBACK MainWindow::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
|
@@ -143,7 +148,13 @@ bool MainWindow::init(BrowserWindowFactory factory, HINSTANCE hInstance, bool us
|
||||||
|
|
||||||
|
updateDeviceScaleFactor();
|
||||||
|
resizeSubViews();
|
||||||
|
- SetFocus(m_hURLBarWnd);
|
||||||
|
+
|
||||||
|
+ if (m_headless) {
|
||||||
|
+ SetMenu(m_hMainWnd, NULL);
|
||||||
|
+ } else {
|
||||||
|
+ SetFocus(m_hURLBarWnd);
|
||||||
|
+ ShowWindow(m_hMainWnd, SW_SHOW);
|
||||||
|
+ }
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -157,12 +168,13 @@ void MainWindow::resizeSubViews()
|
||||||
|
int height = scaleFactor * urlBarHeight;
|
||||||
|
int width = scaleFactor * controlButtonWidth;
|
||||||
|
|
||||||
|
- MoveWindow(m_hBackButtonWnd, 0, 0, width, height, TRUE);
|
||||||
|
- MoveWindow(m_hForwardButtonWnd, width, 0, width, height, TRUE);
|
||||||
|
- MoveWindow(m_hReloadButtonWnd, width * 2, 0, width, height, TRUE);
|
||||||
|
- MoveWindow(m_hURLBarWnd, width * 3, 0, rcClient.right - width * 5, height, TRUE);
|
||||||
|
- MoveWindow(m_hProgressIndicator, rcClient.right - width * 2, 0, width * 2, height, TRUE);
|
||||||
|
-
|
||||||
|
+ if (!m_headless) {
|
||||||
|
+ MoveWindow(m_hBackButtonWnd, 0, 0, width, height, TRUE);
|
||||||
|
+ MoveWindow(m_hForwardButtonWnd, width, 0, width, height, TRUE);
|
||||||
|
+ MoveWindow(m_hReloadButtonWnd, width * 2, 0, width, height, TRUE);
|
||||||
|
+ MoveWindow(m_hURLBarWnd, width * 3, 0, rcClient.right - width * 5, height, TRUE);
|
||||||
|
+ MoveWindow(m_hProgressIndicator, rcClient.right - width * 2, 0, width * 2, height, TRUE);
|
||||||
|
+ }
|
||||||
|
if (m_browserWindow->usesLayeredWebView() || !m_browserWindow->hwnd())
|
||||||
|
return;
|
||||||
|
MoveWindow(m_browserWindow->hwnd(), 0, height, rcClient.right, rcClient.bottom - height, TRUE);
|
||||||
|
@@ -196,17 +208,15 @@ LRESULT CALLBACK MainWindow::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
|
||||||
break;
|
break;
|
||||||
#if ENABLE(WEBKIT)
|
#if ENABLE(WEBKIT)
|
||||||
case IDM_NEW_WEBKIT_WINDOW: {
|
case IDM_NEW_WEBKIT_WINDOW: {
|
||||||
- auto& newWindow = MainWindow::create().leakRef();
|
- auto& newWindow = MainWindow::create().leakRef();
|
||||||
+ auto& newWindow = MainWindow::create(thisWindow->m_context.get(), thisWindow->m_dataStore.get()).leakRef();
|
+ auto& newWindow = MainWindow::create(thisWindow->m_context.get(), thisWindow->m_dataStore.get(), false).leakRef();
|
||||||
newWindow.init(WebKitBrowserWindow::create, hInst);
|
newWindow.init(WebKitBrowserWindow::create, hInst);
|
||||||
ShowWindow(newWindow.hwnd(), SW_SHOW);
|
- ShowWindow(newWindow.hwnd(), SW_SHOW);
|
||||||
break;
|
break;
|
||||||
@@ -204,7 +206,7 @@ LRESULT CALLBACK MainWindow::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
|
}
|
||||||
#endif
|
#endif
|
||||||
#if ENABLE(WEBKIT_LEGACY)
|
#if ENABLE(WEBKIT_LEGACY)
|
||||||
case IDM_NEW_WEBKITLEGACY_WINDOW: {
|
case IDM_NEW_WEBKITLEGACY_WINDOW: {
|
||||||
- auto& newWindow = MainWindow::create().leakRef();
|
- auto& newWindow = MainWindow::create().leakRef();
|
||||||
+ auto& newWindow = MainWindow::create(thisWindow->m_context.get(), thisWindow->m_dataStore.get()).leakRef();
|
+ auto& newWindow = MainWindow::create(thisWindow->m_context.get(), thisWindow->m_dataStore.get(), false).leakRef();
|
||||||
newWindow.init(WebKitLegacyBrowserWindow::create, hInst);
|
newWindow.init(WebKitLegacyBrowserWindow::create, hInst);
|
||||||
ShowWindow(newWindow.hwnd(), SW_SHOW);
|
- ShowWindow(newWindow.hwnd(), SW_SHOW);
|
||||||
break;
|
break;
|
||||||
@@ -225,9 +227,6 @@ LRESULT CALLBACK MainWindow::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
|
}
|
||||||
|
#endif
|
||||||
|
@@ -225,9 +235,6 @@ LRESULT CALLBACK MainWindow::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPA
|
||||||
case IDM_WEB_INSPECTOR:
|
case IDM_WEB_INSPECTOR:
|
||||||
thisWindow->browserWindow()->launchInspector();
|
thisWindow->browserWindow()->launchInspector();
|
||||||
break;
|
break;
|
||||||
|
@ -12014,8 +12087,92 @@ index 82d28bbd4282c2b6b3d1441e822b4fa41e699e78..9fef117e2bc39ade8df4d0bba3b1f104
|
||||||
case IDM_CACHES:
|
case IDM_CACHES:
|
||||||
if (!::IsWindow(thisWindow->m_hCacheWnd)) {
|
if (!::IsWindow(thisWindow->m_hCacheWnd)) {
|
||||||
thisWindow->m_hCacheWnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_CACHES), hWnd, cachesDialogProc, reinterpret_cast<LPARAM>(thisWindow.get()));
|
thisWindow->m_hCacheWnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_CACHES), hWnd, cachesDialogProc, reinterpret_cast<LPARAM>(thisWindow.get()));
|
||||||
|
@@ -314,6 +321,9 @@ static void turnOffOtherUserAgents(HMENU menu)
|
||||||
|
|
||||||
|
bool MainWindow::toggleMenuItem(UINT menuID)
|
||||||
|
{
|
||||||
|
+ if (m_headless)
|
||||||
|
+ return (INT_PTR)FALSE;
|
||||||
|
+
|
||||||
|
HMENU menu = ::GetMenu(hwnd());
|
||||||
|
|
||||||
|
switch (menuID) {
|
||||||
|
@@ -390,6 +400,8 @@ INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
INT_PTR CALLBACK MainWindow::cachesDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
MainWindow& thisWindow = *reinterpret_cast<MainWindow*>(GetWindowLongPtr(hDlg, DWLP_USER));
|
||||||
|
+ if (thisWindow.m_headless)
|
||||||
|
+ return (INT_PTR)FALSE;
|
||||||
|
switch (message) {
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
SetWindowLongPtr(hDlg, DWLP_USER, lParam);
|
||||||
|
@@ -420,6 +432,8 @@ INT_PTR CALLBACK MainWindow::cachesDialogProc(HWND hDlg, UINT message, WPARAM wP
|
||||||
|
INT_PTR CALLBACK MainWindow::customUserAgentDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
MainWindow& thisWindow = *reinterpret_cast<MainWindow*>(GetWindowLongPtr(hDlg, DWLP_USER));
|
||||||
|
+ if (thisWindow.m_headless)
|
||||||
|
+ return (INT_PTR)FALSE;
|
||||||
|
switch (message) {
|
||||||
|
case WM_INITDIALOG: {
|
||||||
|
MainWindow& thisWindow = *reinterpret_cast<MainWindow*>(lParam);
|
||||||
|
@@ -465,17 +479,20 @@ void MainWindow::loadURL(std::wstring url)
|
||||||
|
if (SUCCEEDED(::UrlCreateFromPath(url.c_str(), fileURL, &fileURLLength, 0)))
|
||||||
|
url = fileURL;
|
||||||
|
}
|
||||||
|
- if (url.find(L"://") == url.npos)
|
||||||
|
+ if (url.find(L"://") == url.npos && url.find(L"about:blank") == url.npos)
|
||||||
|
url = L"http://" + url;
|
||||||
|
|
||||||
|
if (FAILED(m_browserWindow->loadURL(_bstr_t(url.c_str()))))
|
||||||
|
return;
|
||||||
|
|
||||||
|
- SetFocus(m_browserWindow->hwnd());
|
||||||
|
+ if (!m_headless)
|
||||||
|
+ SetFocus(m_browserWindow->hwnd());
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::onURLBarEnter()
|
||||||
|
{
|
||||||
|
+ if (m_headless)
|
||||||
|
+ return;
|
||||||
|
wchar_t strPtr[INTERNET_MAX_URL_LENGTH];
|
||||||
|
GetWindowText(m_hURLBarWnd, strPtr, INTERNET_MAX_URL_LENGTH);
|
||||||
|
strPtr[INTERNET_MAX_URL_LENGTH - 1] = 0;
|
||||||
|
@@ -484,6 +501,8 @@ void MainWindow::onURLBarEnter()
|
||||||
|
|
||||||
|
void MainWindow::updateDeviceScaleFactor()
|
||||||
|
{
|
||||||
|
+ if (m_headless)
|
||||||
|
+ return;
|
||||||
|
if (m_hURLBarFont)
|
||||||
|
::DeleteObject(m_hURLBarFont);
|
||||||
|
auto scaleFactor = WebCore::deviceScaleFactorForWindow(m_hMainWnd);
|
||||||
|
@@ -495,6 +514,8 @@ void MainWindow::updateDeviceScaleFactor()
|
||||||
|
|
||||||
|
void MainWindow::progressChanged(double progress)
|
||||||
|
{
|
||||||
|
+ if (m_headless)
|
||||||
|
+ return;
|
||||||
|
std::wostringstream text;
|
||||||
|
text << static_cast<int>(progress * 100) << L'%';
|
||||||
|
SetWindowText(m_hProgressIndicator, text.str().c_str());
|
||||||
|
@@ -502,10 +523,14 @@ void MainWindow::progressChanged(double progress)
|
||||||
|
|
||||||
|
void MainWindow::progressFinished()
|
||||||
|
{
|
||||||
|
+ if (m_headless)
|
||||||
|
+ return;
|
||||||
|
SetWindowText(m_hProgressIndicator, L"");
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::activeURLChanged(std::wstring url)
|
||||||
|
{
|
||||||
|
+ if (m_headless)
|
||||||
|
+ return;
|
||||||
|
SetWindowText(m_hURLBarWnd, url.c_str());
|
||||||
|
}
|
||||||
diff --git a/Tools/MiniBrowser/win/MainWindow.h b/Tools/MiniBrowser/win/MainWindow.h
|
diff --git a/Tools/MiniBrowser/win/MainWindow.h b/Tools/MiniBrowser/win/MainWindow.h
|
||||||
index fba7f670f8953563d8d0d2b8d42a636c653f9d5f..2514c7d942384af1f3114c9008af499c78051298 100644
|
index fba7f670f8953563d8d0d2b8d42a636c653f9d5f..660c34408eb181ddbdb8e52395b56b3d7f9ae7e5 100644
|
||||||
--- a/Tools/MiniBrowser/win/MainWindow.h
|
--- a/Tools/MiniBrowser/win/MainWindow.h
|
||||||
+++ b/Tools/MiniBrowser/win/MainWindow.h
|
+++ b/Tools/MiniBrowser/win/MainWindow.h
|
||||||
@@ -26,6 +26,8 @@
|
@@ -26,6 +26,8 @@
|
||||||
|
@ -12035,7 +12192,7 @@ index fba7f670f8953563d8d0d2b8d42a636c653f9d5f..2514c7d942384af1f3114c9008af499c
|
||||||
+ using BrowserWindowFactory = std::function<Ref<BrowserWindow>(BrowserWindowClient&, HWND mainWnd, WKContextRef, WKWebsiteDataStoreRef, bool usesLayeredWebView)>;
|
+ using BrowserWindowFactory = std::function<Ref<BrowserWindow>(BrowserWindowClient&, HWND mainWnd, WKContextRef, WKWebsiteDataStoreRef, bool usesLayeredWebView)>;
|
||||||
|
|
||||||
- static Ref<MainWindow> create();
|
- static Ref<MainWindow> create();
|
||||||
+ static Ref<MainWindow> create(WKContextRef context, WKWebsiteDataStoreRef dataStore);
|
+ static Ref<MainWindow> create(WKContextRef context, WKWebsiteDataStoreRef dataStore, bool headless);
|
||||||
|
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
bool init(BrowserWindowFactory, HINSTANCE hInstance, bool usesLayeredWebView = false);
|
bool init(BrowserWindowFactory, HINSTANCE hInstance, bool usesLayeredWebView = false);
|
||||||
|
@ -12044,20 +12201,21 @@ index fba7f670f8953563d8d0d2b8d42a636c653f9d5f..2514c7d942384af1f3114c9008af499c
|
||||||
static size_t s_numInstances;
|
static size_t s_numInstances;
|
||||||
|
|
||||||
- MainWindow();
|
- MainWindow();
|
||||||
+ MainWindow(WKContextRef context, WKWebsiteDataStoreRef dataStore);
|
+ MainWindow(WKContextRef context, WKWebsiteDataStoreRef dataStore, bool headless);
|
||||||
bool toggleMenuItem(UINT menuID);
|
bool toggleMenuItem(UINT menuID);
|
||||||
void onURLBarEnter();
|
void onURLBarEnter();
|
||||||
void updateDeviceScaleFactor();
|
void updateDeviceScaleFactor();
|
||||||
@@ -72,5 +74,7 @@ private:
|
@@ -72,5 +74,8 @@ private:
|
||||||
HWND m_hProgressIndicator { nullptr };
|
HWND m_hProgressIndicator { nullptr };
|
||||||
HWND m_hCacheWnd { nullptr };
|
HWND m_hCacheWnd { nullptr };
|
||||||
HGDIOBJ m_hURLBarFont { nullptr };
|
HGDIOBJ m_hURLBarFont { nullptr };
|
||||||
+ WKRetainPtr<WKContextRef> m_context;
|
+ WKRetainPtr<WKContextRef> m_context;
|
||||||
+ WKRetainPtr<WKWebsiteDataStoreRef> m_dataStore;
|
+ WKRetainPtr<WKWebsiteDataStoreRef> m_dataStore;
|
||||||
RefPtr<BrowserWindow> m_browserWindow;
|
RefPtr<BrowserWindow> m_browserWindow;
|
||||||
|
+ bool m_headless;
|
||||||
};
|
};
|
||||||
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..1de905c3227315d6099c19fcd25880124b220610 100644
|
index 71c43e6691395b787140ca0603550aac1c8513d5..289795e88d893e4b85fb663bf924e68383579d85 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 @@
|
||||||
|
@ -12167,16 +12325,14 @@ index 71c43e6691395b787140ca0603550aac1c8513d5..1de905c3227315d6099c19fcd2588012
|
||||||
void WebKitBrowserWindow::setUserAgent(_bstr_t& customUAString)
|
void WebKitBrowserWindow::setUserAgent(_bstr_t& customUAString)
|
||||||
{
|
{
|
||||||
auto page = WKViewGetPage(m_view.get());
|
auto page = WKViewGetPage(m_view.get());
|
||||||
@@ -381,21 +384,106 @@ bool WebKitBrowserWindow::canTrustServerCertificate(WKProtectionSpaceRef protect
|
@@ -381,21 +384,102 @@ bool WebKitBrowserWindow::canTrustServerCertificate(WKProtectionSpaceRef protect
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
-WKPageRef WebKitBrowserWindow::createNewPage(WKPageRef page, WKPageConfigurationRef configuration, WKNavigationActionRef navigationAction, WKWindowFeaturesRef windowFeatures, const void *clientInfo)
|
-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)
|
||||||
{
|
+{
|
||||||
- auto& newWindow = MainWindow::create().leakRef();
|
|
||||||
- auto factory = [configuration](BrowserWindowClient& client, HWND mainWnd, bool) -> auto {
|
|
||||||
+ s_headless = headless;
|
+ s_headless = headless;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
@ -12248,10 +12404,12 @@ index 71c43e6691395b787140ca0603550aac1c8513d5..1de905c3227315d6099c19fcd2588012
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+WKPageRef WebKitBrowserWindow::createViewCallback(WKPageConfigurationRef configuration, bool navigate)
|
+WKPageRef WebKitBrowserWindow::createViewCallback(WKPageConfigurationRef configuration, bool navigate)
|
||||||
+{
|
{
|
||||||
|
- auto& newWindow = MainWindow::create().leakRef();
|
||||||
|
- auto factory = [configuration](BrowserWindowClient& client, HWND mainWnd, bool) -> auto {
|
||||||
+ auto context = WKPageConfigurationGetContext(configuration);
|
+ auto context = WKPageConfigurationGetContext(configuration);
|
||||||
+ auto dataStore = WKPageConfigurationGetWebsiteDataStore(configuration);
|
+ auto dataStore = WKPageConfigurationGetWebsiteDataStore(configuration);
|
||||||
+ auto& newWindow = MainWindow::create(context, dataStore).leakRef();
|
+ auto& newWindow = MainWindow::create(context, dataStore, s_headless).leakRef();
|
||||||
+ auto factory = [configuration](BrowserWindowClient& client, HWND mainWnd, WKContextRef, WKWebsiteDataStoreRef, bool) -> auto {
|
+ auto factory = [configuration](BrowserWindowClient& client, HWND mainWnd, WKContextRef, WKWebsiteDataStoreRef, bool) -> auto {
|
||||||
return adoptRef(*new WebKitBrowserWindow(client, configuration, mainWnd));
|
return adoptRef(*new WebKitBrowserWindow(client, configuration, mainWnd));
|
||||||
};
|
};
|
||||||
|
@ -12259,10 +12417,6 @@ index 71c43e6691395b787140ca0603550aac1c8513d5..1de905c3227315d6099c19fcd2588012
|
||||||
- if (!ok)
|
- if (!ok)
|
||||||
- return nullptr;
|
- return nullptr;
|
||||||
- ShowWindow(newWindow.hwnd(), SW_SHOW);
|
- ShowWindow(newWindow.hwnd(), SW_SHOW);
|
||||||
+ if (s_headless)
|
|
||||||
+ SetMenu(newWindow.hwnd(), NULL);
|
|
||||||
+ else
|
|
||||||
+ ShowWindow(newWindow.hwnd(), SW_SHOW);
|
|
||||||
+ if (navigate)
|
+ if (navigate)
|
||||||
+ newWindow.browserWindow()->loadURL(_bstr_t("about:blank").GetBSTR());
|
+ newWindow.browserWindow()->loadURL(_bstr_t("about:blank").GetBSTR());
|
||||||
+
|
+
|
||||||
|
@ -12375,7 +12529,7 @@ index f84e5cde0baaa08dab1fc77771e4a62a08a5df78..dac73d3d9db04c5d502432cea8adfa89
|
||||||
void navigateToHistory(UINT menuID);
|
void navigateToHistory(UINT menuID);
|
||||||
bool seedInitialDefaultPreferences();
|
bool seedInitialDefaultPreferences();
|
||||||
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..6a939ce02295ab6fa24c620f2c5b4f1f5165f666 100644
|
index b1d17e88de61a6f196830f62604e4174564506bd..0cc40ce5a5f0a3331275fcdaf7ea95cd0dc5031f 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
|
||||||
@@ -32,6 +32,9 @@
|
@@ -32,6 +32,9 @@
|
||||||
|
@ -12433,7 +12587,7 @@ index b1d17e88de61a6f196830f62604e4174564506bd..6a939ce02295ab6fa24c620f2c5b4f1f
|
||||||
|
|
||||||
if (options.useFullDesktop)
|
if (options.useFullDesktop)
|
||||||
computeFullDesktopFrame();
|
computeFullDesktopFrame();
|
||||||
@@ -86,19 +115,40 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
|
@@ -86,19 +115,35 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
|
||||||
#else
|
#else
|
||||||
auto factory = options.windowType == BrowserWindowType::WebKit ? WebKitBrowserWindow::create : WebKitLegacyBrowserWindow::create;
|
auto factory = options.windowType == BrowserWindowType::WebKit ? WebKitBrowserWindow::create : WebKitLegacyBrowserWindow::create;
|
||||||
#endif
|
#endif
|
||||||
|
@ -12456,17 +12610,13 @@ index b1d17e88de61a6f196830f62604e4174564506bd..6a939ce02295ab6fa24c620f2c5b4f1f
|
||||||
+ auto dataStore = adoptWK(WKWebsiteDataStoreCreateWithConfiguration(configuration.get()));
|
+ auto dataStore = adoptWK(WKWebsiteDataStoreCreateWithConfiguration(configuration.get()));
|
||||||
+ WKContextSetPrimaryDataStore(context.get(), dataStore.get());
|
+ WKContextSetPrimaryDataStore(context.get(), dataStore.get());
|
||||||
+
|
+
|
||||||
+ auto& mainWindow = MainWindow::create(context.get(), dataStore.get()).leakRef();
|
+ auto& mainWindow = MainWindow::create(context.get(), dataStore.get(), options.headless).leakRef();
|
||||||
HRESULT hr = mainWindow.init(factory, hInst, options.usesLayeredWebView);
|
HRESULT hr = mainWindow.init(factory, hInst, options.usesLayeredWebView);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
- ShowWindow(mainWindow.hwnd(), nCmdShow);
|
- ShowWindow(mainWindow.hwnd(), nCmdShow);
|
||||||
+ if (options.headless)
|
-
|
||||||
+ SetMenu(mainWindow.hwnd(), NULL);
|
|
||||||
+ else
|
|
||||||
+ ShowWindow(mainWindow.hwnd(), nCmdShow);
|
|
||||||
|
|
||||||
hAccelTable = LoadAccelerators(hInst, MAKEINTRESOURCE(IDC_MINIBROWSER));
|
hAccelTable = LoadAccelerators(hInst, MAKEINTRESOURCE(IDC_MINIBROWSER));
|
||||||
|
|
||||||
if (options.requestedURL.length())
|
if (options.requestedURL.length())
|
||||||
|
|
Загрузка…
Ссылка в новой задаче