fix(webkit): implement headless popups (#220)
This commit is contained in:
Родитель
19cac9a0c1
Коммит
6b57f67bda
|
@ -1 +1 @@
|
|||
1027
|
||||
1028
|
||||
|
|
|
@ -7265,7 +7265,7 @@ index 45ef1a6424e..6e015fcb8bc 100644
|
|||
|
||||
IBOutlet NSMenuItem *_newWebKit1WindowItem;
|
||||
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
|
||||
+++ b/Tools/MiniBrowser/mac/AppDelegate.m
|
||||
@@ -33,7 +33,9 @@
|
||||
|
@ -7428,7 +7428,7 @@ index b6af4ef724f..365582e402d 100644
|
|||
[_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];
|
||||
+}
|
||||
+
|
||||
+- (WKWebView *)createHeadlessPage:(uint64_t)sessionID
|
||||
+- (WKWebView *)createHeadlessWebView:(WKWebViewConfiguration *)configuration
|
||||
+{
|
||||
+ NSRect rect = NSMakeRect(0, 0, 1024, 768);
|
||||
+ NSScreen *firstScreen = [[NSScreen screens] objectAtIndex:0];
|
||||
+ 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];
|
||||
+
|
||||
+ WKWebViewConfiguration *configuration = [self sessionConfiguration:sessionID];
|
||||
+ WKWebView* webView = [[WKWebView alloc] initWithFrame:[window.contentView bounds] configuration:configuration];
|
||||
+ webView._windowOcclusionDetectionEnabled = NO;
|
||||
+ if (!webView)
|
||||
|
@ -7484,6 +7483,12 @@ index b6af4ef724f..365582e402d 100644
|
|||
+ return [webView autorelease];
|
||||
+}
|
||||
+
|
||||
+- (WKWebView *)createHeadlessPage:(uint64_t)sessionID
|
||||
+{
|
||||
+ WKWebViewConfiguration *configuration = [self sessionConfiguration:sessionID];
|
||||
+ return [self createHeadlessWebView:configuration];
|
||||
+}
|
||||
+
|
||||
+- (_WKBrowserContext *)createBrowserContext
|
||||
+{
|
||||
+ _WKBrowserContext *browserContext = [[_WKBrowserContext alloc] init];
|
||||
|
@ -7509,6 +7514,8 @@ index b6af4ef724f..365582e402d 100644
|
|||
+ [NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
|
||||
+}
|
||||
+
|
||||
+#pragma mark WKUIDelegate
|
||||
+
|
||||
+- (void)webViewDidClose:(WKWebView *)webView {
|
||||
+ for (NSWindow *window in _headlessWindows) {
|
||||
+ if (webView.window != window)
|
||||
|
@ -7562,6 +7569,11 @@ index b6af4ef724f..365582e402d 100644
|
|||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+- (nullable WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
|
||||
+{
|
||||
+ return [self createHeadlessWebView:configuration];
|
||||
+}
|
||||
+
|
||||
@end
|
||||
diff --git a/Tools/MiniBrowser/mac/SettingsController.m b/Tools/MiniBrowser/mac/SettingsController.m
|
||||
|
|
Загрузка…
Ссылка в новой задаче