mirror of
https://github.com/microsoft/playwright.git
synced 2024-12-14 21:53:35 +03:00
fix(webkit): make headless webview active and focused at all times (#178)
This commit is contained in:
parent
51c975b098
commit
ba4cfe908c
@ -76,7 +76,6 @@ cd $CHECKOUT_PATH
|
|||||||
if git remote get-url $REMOTE_BROWSER_UPSTREAM >/dev/null; then
|
if git remote get-url $REMOTE_BROWSER_UPSTREAM >/dev/null; then
|
||||||
if ! [[ $(git remote get-url $REMOTE_BROWSER_UPSTREAM) == "$REMOTE_URL" ]]; then
|
if ! [[ $(git remote get-url $REMOTE_BROWSER_UPSTREAM) == "$REMOTE_URL" ]]; then
|
||||||
echo "ERROR: remote $REMOTE_BROWSER_UPSTREAM is not pointng to '$REMOTE_URL'! run `prepare_checkout.sh` first"
|
echo "ERROR: remote $REMOTE_BROWSER_UPSTREAM is not pointng to '$REMOTE_URL'! run `prepare_checkout.sh` first"
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "ERROR: checkout does not have $REMOTE_BROWSER_UPSTREAM; run `prepare_checkout.sh` first"
|
echo "ERROR: checkout does not have $REMOTE_BROWSER_UPSTREAM; run `prepare_checkout.sh` first"
|
||||||
|
@ -1 +1 @@
|
|||||||
1018
|
1019
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From 65db639b474e4ee15df8f8297a4843b47316567a Mon Sep 17 00:00:00 2001
|
From 2dfca1d3f0bb8b6291436c8118c979ad5a626d91 Mon Sep 17 00:00:00 2001
|
||||||
From: Yury Semikhatsky <yurys@chromium.org>
|
From: Pavel Feldman <pavel.feldman@gmail.com>
|
||||||
Date: Sat, 7 Dec 2019 17:13:09 -0800
|
Date: Sun, 8 Dec 2019 13:10:50 -0800
|
||||||
Subject: [PATCH xserver] chore: bootstrap
|
Subject: [PATCH] chore: bootstrap
|
||||||
|
|
||||||
---
|
---
|
||||||
Source/JavaScriptCore/CMakeLists.txt | 4 +
|
Source/JavaScriptCore/CMakeLists.txt | 4 +
|
||||||
@ -53,7 +53,7 @@ Subject: [PATCH xserver] chore: bootstrap
|
|||||||
.../UIProcess/API/Cocoa/WKWebsiteDataStore.h | 3 +-
|
.../UIProcess/API/Cocoa/WKWebsiteDataStore.h | 3 +-
|
||||||
.../UIProcess/API/Cocoa/WKWebsiteDataStore.mm | 6 +
|
.../UIProcess/API/Cocoa/WKWebsiteDataStore.mm | 6 +
|
||||||
.../UIProcess/API/Cocoa/_WKBrowserInspector.h | 33 ++
|
.../UIProcess/API/Cocoa/_WKBrowserInspector.h | 33 ++
|
||||||
.../API/Cocoa/_WKBrowserInspector.mm | 28 +
|
.../API/Cocoa/_WKBrowserInspector.mm | 30 +
|
||||||
.../API/glib/WebKitBrowserInspector.cpp | 114 ++++
|
.../API/glib/WebKitBrowserInspector.cpp | 114 ++++
|
||||||
.../API/glib/WebKitBrowserInspectorPrivate.h | 9 +
|
.../API/glib/WebKitBrowserInspectorPrivate.h | 9 +
|
||||||
.../UIProcess/API/glib/WebKitUIClient.cpp | 4 +
|
.../UIProcess/API/glib/WebKitUIClient.cpp | 4 +
|
||||||
@ -104,7 +104,8 @@ Subject: [PATCH xserver] chore: bootstrap
|
|||||||
.../WebKit/UIProcess/ios/PageClientImplIOS.mm | 2 +
|
.../WebKit/UIProcess/ios/PageClientImplIOS.mm | 2 +
|
||||||
.../mac/InspectorBrowserAgentClientMac.h | 29 +
|
.../mac/InspectorBrowserAgentClientMac.h | 29 +
|
||||||
.../mac/InspectorBrowserAgentClientMac.mm | 54 ++
|
.../mac/InspectorBrowserAgentClientMac.mm | 54 ++
|
||||||
.../WebKit/UIProcess/mac/PageClientImplMac.mm | 9 +-
|
.../WebKit/UIProcess/mac/PageClientImplMac.h | 2 +
|
||||||
|
.../WebKit/UIProcess/mac/PageClientImplMac.mm | 21 +
|
||||||
.../mac/WebPageInspectorEmulationAgentMac.mm | 21 +
|
.../mac/WebPageInspectorEmulationAgentMac.mm | 21 +
|
||||||
.../mac/WebPageInspectorInputAgentMac.mm | 14 +
|
.../mac/WebPageInspectorInputAgentMac.mm | 14 +
|
||||||
.../mac/WebPageInspectorTargetProxyMac.mm | 20 +
|
.../mac/WebPageInspectorTargetProxyMac.mm | 20 +
|
||||||
@ -122,7 +123,7 @@ Subject: [PATCH xserver] chore: bootstrap
|
|||||||
.../mac/WK2BrowserWindowController.h | 3 +
|
.../mac/WK2BrowserWindowController.h | 3 +
|
||||||
.../mac/WK2BrowserWindowController.m | 38 +-
|
.../mac/WK2BrowserWindowController.m | 38 +-
|
||||||
Tools/MiniBrowser/wpe/main.cpp | 37 ++
|
Tools/MiniBrowser/wpe/main.cpp | 37 ++
|
||||||
118 files changed, 4777 insertions(+), 94 deletions(-)
|
119 files changed, 4795 insertions(+), 92 deletions(-)
|
||||||
create mode 100644 Source/JavaScriptCore/inspector/protocol/Browser.json
|
create mode 100644 Source/JavaScriptCore/inspector/protocol/Browser.json
|
||||||
create mode 100644 Source/JavaScriptCore/inspector/protocol/Dialog.json
|
create mode 100644 Source/JavaScriptCore/inspector/protocol/Dialog.json
|
||||||
create mode 100644 Source/JavaScriptCore/inspector/protocol/Emulation.json
|
create mode 100644 Source/JavaScriptCore/inspector/protocol/Emulation.json
|
||||||
@ -3225,7 +3226,7 @@ index 48467b7a833..eaca62adb3c 100644
|
|||||||
Vector<WebKit::WebsiteDataRecord> result;
|
Vector<WebKit::WebsiteDataRecord> result;
|
||||||
diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.h b/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.h
|
diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.h b/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.h
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 00000000000..aebcbc62682
|
index 00000000000..7ed58e57553
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.h
|
+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.h
|
||||||
@@ -0,0 +1,33 @@
|
@@ -0,0 +1,33 @@
|
||||||
@ -3256,7 +3257,7 @@ index 00000000000..aebcbc62682
|
|||||||
+
|
+
|
||||||
+WK_CLASS_AVAILABLE(macos(10.14.0))
|
+WK_CLASS_AVAILABLE(macos(10.14.0))
|
||||||
+@interface _WKBrowserInspector : NSObject
|
+@interface _WKBrowserInspector : NSObject
|
||||||
++ (void)initializeRemoteInspectorPipe:(id<_WKBrowserInspectorDelegate>)delegate;
|
++ (void)initializeRemoteInspectorPipe:(id<_WKBrowserInspectorDelegate>)delegate headless:(BOOL)headless;
|
||||||
+@end
|
+@end
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
@ -3264,10 +3265,10 @@ index 00000000000..aebcbc62682
|
|||||||
+
|
+
|
||||||
diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.mm b/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.mm
|
diff --git a/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.mm b/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.mm
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 00000000000..d9497d2c862
|
index 00000000000..b0bdfb97e28
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.mm
|
+++ b/Source/WebKit/UIProcess/API/Cocoa/_WKBrowserInspector.mm
|
||||||
@@ -0,0 +1,28 @@
|
@@ -0,0 +1,30 @@
|
||||||
+// Copyright (c) Microsoft Corporation.
|
+// Copyright (c) Microsoft Corporation.
|
||||||
+// Licensed under the MIT license.
|
+// Licensed under the MIT license.
|
||||||
+
|
+
|
||||||
@ -3276,6 +3277,7 @@ index 00000000000..d9497d2c862
|
|||||||
+
|
+
|
||||||
+#include "BrowserInspectorPipe.h"
|
+#include "BrowserInspectorPipe.h"
|
||||||
+#include "InspectorBrowserAgentClientMac.h"
|
+#include "InspectorBrowserAgentClientMac.h"
|
||||||
|
+#include "PageClientImplMac.h"
|
||||||
+#include "WebsiteDataStore.h"
|
+#include "WebsiteDataStore.h"
|
||||||
+
|
+
|
||||||
+#import "WKWebView.h"
|
+#import "WKWebView.h"
|
||||||
@ -3284,10 +3286,11 @@ index 00000000000..d9497d2c862
|
|||||||
+
|
+
|
||||||
+@implementation _WKBrowserInspector
|
+@implementation _WKBrowserInspector
|
||||||
+
|
+
|
||||||
++ (void)initializeRemoteInspectorPipe:(id<_WKBrowserInspectorDelegate>)delegate
|
++ (void)initializeRemoteInspectorPipe:(id<_WKBrowserInspectorDelegate>)delegate headless:(BOOL)headless
|
||||||
+{
|
+{
|
||||||
+#if ENABLE(REMOTE_INSPECTOR)
|
+#if ENABLE(REMOTE_INSPECTOR)
|
||||||
+ WebsiteDataStore::defaultDataStore();
|
+ WebsiteDataStore::defaultDataStore();
|
||||||
|
+ PageClientImpl::setHeadless(headless);
|
||||||
+ initializeBrowserInspectorPipe(makeUnique<InspectorBrowserAgentClientMac>(delegate));
|
+ initializeBrowserInspectorPipe(makeUnique<InspectorBrowserAgentClientMac>(delegate));
|
||||||
+#endif
|
+#endif
|
||||||
+}
|
+}
|
||||||
@ -6238,22 +6241,68 @@ index 00000000000..e3062b3651f
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+} // namespace WebKit
|
+} // namespace WebKit
|
||||||
|
diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.h b/Source/WebKit/UIProcess/mac/PageClientImplMac.h
|
||||||
|
index 8016b56c160..bf5422a3a63 100644
|
||||||
|
--- a/Source/WebKit/UIProcess/mac/PageClientImplMac.h
|
||||||
|
+++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.h
|
||||||
|
@@ -53,6 +53,8 @@ class PageClientImpl final : public PageClientImplCocoa
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
+ static void setHeadless(bool headless);
|
||||||
|
+
|
||||||
|
PageClientImpl(NSView *, WKWebView *);
|
||||||
|
virtual ~PageClientImpl();
|
||||||
|
|
||||||
diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm
|
diff --git a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm
|
||||||
index 22653d74398..15b24ee8197 100644
|
index 22653d74398..5086bc7375f 100644
|
||||||
--- a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm
|
--- a/Source/WebKit/UIProcess/mac/PageClientImplMac.mm
|
||||||
+++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm
|
+++ b/Source/WebKit/UIProcess/mac/PageClientImplMac.mm
|
||||||
@@ -205,8 +205,8 @@ bool PageClientImpl::isViewVisible()
|
@@ -104,6 +104,13 @@ static NSString * const kAXLoadCompleteNotification = @"AXLoadComplete";
|
||||||
if (!activeViewWindow)
|
namespace WebKit {
|
||||||
return false;
|
using namespace WebCore;
|
||||||
|
|
||||||
- if (!activeViewWindow.isVisible)
|
+static bool _headless = false;
|
||||||
- return false;
|
+
|
||||||
+ // if (!activeViewWindow.isVisible)
|
+// static
|
||||||
+ // return false;
|
+void PageClientImpl::setHeadless(bool headless) {
|
||||||
|
+ _headless = true;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
PageClientImpl::PageClientImpl(NSView* view, WKWebView *webView)
|
||||||
|
: PageClientImplCocoa(webView)
|
||||||
|
, m_view(view)
|
||||||
|
@@ -162,6 +169,9 @@ NSWindow *PageClientImpl::activeWindow() const
|
||||||
|
|
||||||
if (activeView.isHiddenOrHasHiddenAncestor)
|
bool PageClientImpl::isViewWindowActive()
|
||||||
return false;
|
{
|
||||||
@@ -455,6 +455,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect)
|
+ if (_headless)
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
ASSERT(hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer));
|
||||||
|
NSWindow *activeViewWindow = activeWindow();
|
||||||
|
return activeViewWindow.isKeyWindow || [NSApp keyWindow] == activeViewWindow;
|
||||||
|
@@ -169,6 +179,9 @@ bool PageClientImpl::isViewWindowActive()
|
||||||
|
|
||||||
|
bool PageClientImpl::isViewFocused()
|
||||||
|
{
|
||||||
|
+ if (_headless)
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
// FIXME: This is called from the WebPageProxy constructor before we have a WebViewImpl.
|
||||||
|
// Once WebViewImpl and PageClient merge, this won't be a problem.
|
||||||
|
if (!m_impl)
|
||||||
|
@@ -192,6 +205,9 @@ void PageClientImpl::makeFirstResponder()
|
||||||
|
|
||||||
|
bool PageClientImpl::isViewVisible()
|
||||||
|
{
|
||||||
|
+ if (_headless)
|
||||||
|
+ return true;
|
||||||
|
+
|
||||||
|
NSView *activeView = this->activeView();
|
||||||
|
NSWindow *activeViewWindow = activeWindow();
|
||||||
|
|
||||||
|
@@ -455,6 +471,8 @@ IntRect PageClientImpl::rootViewToAccessibilityScreen(const IntRect& rect)
|
||||||
|
|
||||||
void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool eventWasHandled)
|
void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool eventWasHandled)
|
||||||
{
|
{
|
||||||
@ -6262,7 +6311,7 @@ index 22653d74398..15b24ee8197 100644
|
|||||||
m_impl->doneWithKeyEvent(event.nativeEvent(), eventWasHandled);
|
m_impl->doneWithKeyEvent(event.nativeEvent(), eventWasHandled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -930,6 +932,9 @@ void PageClientImpl::didRestoreScrollPosition()
|
@@ -930,6 +948,9 @@ void PageClientImpl::didRestoreScrollPosition()
|
||||||
|
|
||||||
bool PageClientImpl::windowIsFrontWindowUnderMouse(const NativeWebMouseEvent& event)
|
bool PageClientImpl::windowIsFrontWindowUnderMouse(const NativeWebMouseEvent& event)
|
||||||
{
|
{
|
||||||
@ -6809,7 +6858,7 @@ index 45ef1a6424e..6e015fcb8bc 100644
|
|||||||
|
|
||||||
IBOutlet NSMenuItem *_newWebKit1WindowItem;
|
IBOutlet NSMenuItem *_newWebKit1WindowItem;
|
||||||
diff --git a/Tools/MiniBrowser/mac/AppDelegate.m b/Tools/MiniBrowser/mac/AppDelegate.m
|
diff --git a/Tools/MiniBrowser/mac/AppDelegate.m b/Tools/MiniBrowser/mac/AppDelegate.m
|
||||||
index b6af4ef724f..c63c8d354cf 100644
|
index b6af4ef724f..365582e402d 100644
|
||||||
--- a/Tools/MiniBrowser/mac/AppDelegate.m
|
--- a/Tools/MiniBrowser/mac/AppDelegate.m
|
||||||
+++ b/Tools/MiniBrowser/mac/AppDelegate.m
|
+++ b/Tools/MiniBrowser/mac/AppDelegate.m
|
||||||
@@ -33,7 +33,9 @@
|
@@ -33,7 +33,9 @@
|
||||||
@ -6866,7 +6915,7 @@ index b6af4ef724f..c63c8d354cf 100644
|
|||||||
}
|
}
|
||||||
-
|
-
|
||||||
+ if ([arguments containsObject: @"--inspector-pipe"])
|
+ if ([arguments containsObject: @"--inspector-pipe"])
|
||||||
+ [_WKBrowserInspector initializeRemoteInspectorPipe:self];
|
+ [_WKBrowserInspector initializeRemoteInspectorPipe:self headless:_headless];
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7324,5 +7373,5 @@ index 2d183d39412..d94d4f06fc5 100644
|
|||||||
webkit_web_context_set_tls_errors_policy(webContext, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
|
webkit_web_context_set_tls_errors_policy(webContext, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
|
||||||
|
|
||||||
--
|
--
|
||||||
2.17.1
|
2.24.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user