fix(webkit): implement headless popups (#220)
This commit is contained in:
parent
19cac9a0c1
commit
6b57f67bda
|
|
@ -1 +1 @@
|
||||||
1027
|
1028
|
||||||
|
|
|
||||||
|
|
@ -7265,7 +7265,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..365582e402d 100644
|
index b6af4ef724f..7a3c798da52 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 @@
|
||||||
|
|
@ -7428,7 +7428,7 @@ index b6af4ef724f..365582e402d 100644
|
||||||
[_extensionManagerWindowController showWindow:sender];
|
[_extensionManagerWindowController showWindow:sender];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -345,4 +399,135 @@ - (IBAction)clearDefaultStoreWebsiteData:(id)sender
|
@@ -345,4 +399,147 @@ - (IBAction)clearDefaultStoreWebsiteData:(id)sender
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -7462,14 +7462,13 @@ index b6af4ef724f..365582e402d 100644
|
||||||
+ return [controller webView];
|
+ return [controller webView];
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+- (WKWebView *)createHeadlessPage:(uint64_t)sessionID
|
+- (WKWebView *)createHeadlessWebView:(WKWebViewConfiguration *)configuration
|
||||||
+{
|
+{
|
||||||
+ NSRect rect = NSMakeRect(0, 0, 1024, 768);
|
+ NSRect rect = NSMakeRect(0, 0, 1024, 768);
|
||||||
+ NSScreen *firstScreen = [[NSScreen screens] objectAtIndex:0];
|
+ NSScreen *firstScreen = [[NSScreen screens] objectAtIndex:0];
|
||||||
+ NSRect windowRect = NSOffsetRect(rect, -10000, [firstScreen frame].size.height - rect.size.height + 10000);
|
+ NSRect windowRect = NSOffsetRect(rect, -10000, [firstScreen frame].size.height - rect.size.height + 10000);
|
||||||
+ NSWindow* window = [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSWindowStyleMaskBorderless backing:(NSBackingStoreType)_NSBackingStoreUnbuffered defer:YES];
|
+ NSWindow* window = [[NSWindow alloc] initWithContentRect:windowRect styleMask:NSWindowStyleMaskBorderless backing:(NSBackingStoreType)_NSBackingStoreUnbuffered defer:YES];
|
||||||
+
|
+
|
||||||
+ WKWebViewConfiguration *configuration = [self sessionConfiguration:sessionID];
|
|
||||||
+ WKWebView* webView = [[WKWebView alloc] initWithFrame:[window.contentView bounds] configuration:configuration];
|
+ WKWebView* webView = [[WKWebView alloc] initWithFrame:[window.contentView bounds] configuration:configuration];
|
||||||
+ webView._windowOcclusionDetectionEnabled = NO;
|
+ webView._windowOcclusionDetectionEnabled = NO;
|
||||||
+ if (!webView)
|
+ if (!webView)
|
||||||
|
|
@ -7484,6 +7483,12 @@ index b6af4ef724f..365582e402d 100644
|
||||||
+ return [webView autorelease];
|
+ return [webView autorelease];
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
+- (WKWebView *)createHeadlessPage:(uint64_t)sessionID
|
||||||
|
+{
|
||||||
|
+ WKWebViewConfiguration *configuration = [self sessionConfiguration:sessionID];
|
||||||
|
+ return [self createHeadlessWebView:configuration];
|
||||||
|
+}
|
||||||
|
+
|
||||||
+- (_WKBrowserContext *)createBrowserContext
|
+- (_WKBrowserContext *)createBrowserContext
|
||||||
+{
|
+{
|
||||||
+ _WKBrowserContext *browserContext = [[_WKBrowserContext alloc] init];
|
+ _WKBrowserContext *browserContext = [[_WKBrowserContext alloc] init];
|
||||||
|
|
@ -7509,6 +7514,8 @@ index b6af4ef724f..365582e402d 100644
|
||||||
+ [NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
|
+ [NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
+#pragma mark WKUIDelegate
|
||||||
|
+
|
||||||
+- (void)webViewDidClose:(WKWebView *)webView {
|
+- (void)webViewDidClose:(WKWebView *)webView {
|
||||||
+ for (NSWindow *window in _headlessWindows) {
|
+ for (NSWindow *window in _headlessWindows) {
|
||||||
+ if (webView.window != window)
|
+ if (webView.window != window)
|
||||||
|
|
@ -7562,6 +7569,11 @@ index b6af4ef724f..365582e402d 100644
|
||||||
+ break;
|
+ break;
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
|
+
|
||||||
|
+- (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
|
||||||
|
+{
|
||||||
|
+ return [self createHeadlessWebView:configuration];
|
||||||
|
+}
|
||||||
+
|
+
|
||||||
@end
|
@end
|
||||||
diff --git a/Tools/MiniBrowser/mac/SettingsController.m b/Tools/MiniBrowser/mac/SettingsController.m
|
diff --git a/Tools/MiniBrowser/mac/SettingsController.m b/Tools/MiniBrowser/mac/SettingsController.m
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue