Title: [223439] trunk/Source/WebKit
Revision
223439
Author
[email protected]
Date
2017-10-16 14:33:11 -0700 (Mon, 16 Oct 2017)

Log Message

Add a _WKThumbnailView initializer with a WKWebView
https://bugs.webkit.org/show_bug.cgi?id=178351
<rdar://problem/34979453>

Reviewed by Tim Horton.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _page]):
(-[WKWebView _setThumbnailView:]):
(-[WKWebView _thumbnailView]):
(-[WKWebView _setIgnoresAllEvents:]):
(-[WKWebView _ignoresAllEvents]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/_WKThumbnailView.h:
* UIProcess/API/Cocoa/_WKThumbnailView.mm:
(-[_WKThumbnailView initWithFrame:fromWKWebView:]):
(-[_WKThumbnailView _viewWasUnparented]):
(-[_WKThumbnailView _viewWasParented]):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (223438 => 223439)


--- trunk/Source/WebKit/ChangeLog	2017-10-16 21:33:10 UTC (rev 223438)
+++ trunk/Source/WebKit/ChangeLog	2017-10-16 21:33:11 UTC (rev 223439)
@@ -1,5 +1,27 @@
 2017-10-16  Alex Christensen  <[email protected]>
 
+        Add a _WKThumbnailView initializer with a WKWebView
+        https://bugs.webkit.org/show_bug.cgi?id=178351
+        <rdar://problem/34979453>
+
+        Reviewed by Tim Horton.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _page]):
+        (-[WKWebView _setThumbnailView:]):
+        (-[WKWebView _thumbnailView]):
+        (-[WKWebView _setIgnoresAllEvents:]):
+        (-[WKWebView _ignoresAllEvents]):
+        * UIProcess/API/Cocoa/WKWebViewInternal.h:
+        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+        * UIProcess/API/Cocoa/_WKThumbnailView.h:
+        * UIProcess/API/Cocoa/_WKThumbnailView.mm:
+        (-[_WKThumbnailView initWithFrame:fromWKWebView:]):
+        (-[_WKThumbnailView _viewWasUnparented]):
+        (-[_WKThumbnailView _viewWasParented]):
+
+2017-10-16  Alex Christensen  <[email protected]>
+
         Expose more WKView properties as WKWebViewPrivate SPI
         https://bugs.webkit.org/show_bug.cgi?id=178349
         <rdar://problem/34980919>

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (223438 => 223439)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2017-10-16 21:33:10 UTC (rev 223438)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm	2017-10-16 21:33:11 UTC (rev 223439)
@@ -1079,6 +1079,11 @@
     return toAPI(_page.get());
 }
 
+- (WebKit::WebPageProxy *)_page
+{
+    return _page.get();
+}
+
 - (BOOL)allowsLinkPreview
 {
 #if PLATFORM(MAC)
@@ -5458,6 +5463,28 @@
     });
 }
 
+- (void)_setThumbnailView:(_WKThumbnailView *)thumbnailView
+{
+    _impl->setThumbnailView(thumbnailView);
+}
+
+- (_WKThumbnailView *)_thumbnailView
+{
+    if (!_impl)
+        return nil;
+    return _impl->thumbnailView();
+}
+
+- (void)_setIgnoresAllEvents:(BOOL)ignoresAllEvents
+{
+    _impl->setIgnoresAllEvents(ignoresAllEvents);
+}
+
+- (BOOL)_ignoresAllEvents
+{
+    return _impl->ignoresAllEvents();
+}
+
 #endif
 
 @end

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h (223438 => 223439)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h	2017-10-16 21:33:10 UTC (rev 223438)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h	2017-10-16 21:33:11 UTC (rev 223439)
@@ -147,6 +147,7 @@
 #endif
 
 - (WKPageRef)_pageForTesting;
+- (WebKit::WebPageProxy*)_page;
 
 @end
 

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h (223438 => 223439)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h	2017-10-16 21:33:10 UTC (rev 223438)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h	2017-10-16 21:33:11 UTC (rev 223439)
@@ -100,6 +100,7 @@
 @class _WKIconLoadingDelegate;
 @class _WKRemoteObjectRegistry;
 @class _WKSessionState;
+@class _WKThumbnailView;
 @class _WKWebsitePolicies;
 @class _WKWebViewPrintFormatter;
 
@@ -289,6 +290,9 @@
 @property (nonatomic, setter=_setOverlayScrollbarStyle:) _WKOverlayScrollbarStyle _overlayScrollbarStyle WK_API_AVAILABLE(macosx(WK_MAC_TBA));
 @property (strong, nonatomic, setter=_setInspectorAttachmentView:) NSView *_inspectorAttachmentView WK_API_AVAILABLE(macosx(WK_MAC_TBA));
 
+@property (nonatomic, setter=_setThumbnailView:) _WKThumbnailView *_thumbnailView WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+@property (nonatomic, setter=_setIgnoresAllEvents:) BOOL _ignoresAllEvents WK_API_AVAILABLE(macosx(WK_MAC_TBA));
+
 #endif
 
 - (WKNavigation *)_reloadWithoutContentBlockers WK_API_AVAILABLE(macosx(10.12), ios(10.0));

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKThumbnailView.h (223438 => 223439)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKThumbnailView.h	2017-10-16 21:33:10 UTC (rev 223438)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKThumbnailView.h	2017-10-16 21:33:11 UTC (rev 223439)
@@ -32,11 +32,13 @@
 #import <AppKit/AppKit.h>
 
 @class WKView;
+@class WKWebView;
 
 WK_CLASS_AVAILABLE(macosx(10.10), ios(8.0))
 @interface _WKThumbnailView : NSView
 
 - (instancetype)initWithFrame:(NSRect)frame fromWKView:(WKView *)wkView;
+- (instancetype)initWithFrame:(NSRect)frame fromWKWebView:(WKWebView *)webView;
 
 @property (nonatomic) CGFloat scale;
 @property (nonatomic, readonly) CGSize snapshotSize;

Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/_WKThumbnailView.mm (223438 => 223439)


--- trunk/Source/WebKit/UIProcess/API/Cocoa/_WKThumbnailView.mm	2017-10-16 21:33:10 UTC (rev 223438)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/_WKThumbnailView.mm	2017-10-16 21:33:11 UTC (rev 223439)
@@ -34,6 +34,7 @@
 #import "WKAPICast.h"
 #import "WKView.h"
 #import "WKViewInternal.h"
+#import "WKWebViewInternal.h"
 #import "WebPageProxy.h"
 
 // FIXME: Make it possible to leave a snapshot of the content presented in the WKView while the thumbnail is live.
@@ -47,6 +48,7 @@
 
 @implementation _WKThumbnailView {
     RetainPtr<WKView> _wkView;
+    RetainPtr<WKWebView> _wkWebView;
     WebPageProxy* _webPageProxy;
 
     BOOL _originalMayStartMediaWhenInWindow;
@@ -62,7 +64,7 @@
 @synthesize exclusivelyUsesSnapshot=_exclusivelyUsesSnapshot;
 @synthesize shouldKeepSnapshotWhenRemovedFromSuperview=_shouldKeepSnapshotWhenRemovedFromSuperview;
 
-- (instancetype)initWithFrame:(NSRect)frame fromWKView:(WKView *)wkView
+- (instancetype)initWithFrame:(NSRect)frame
 {
     if (!(self = [super initWithFrame:frame]))
         return nil;
@@ -69,12 +71,19 @@
 
     self.wantsLayer = YES;
     self.layer.backgroundColor = [NSColor whiteColor].CGColor;
+    _scale = 1;
+    _lastSnapshotScale = NAN;
+    
+    return self;
+}
 
+- (instancetype)initWithFrame:(NSRect)frame fromWKView:(WKView *)wkView
+{
+    if (!(self = [self initWithFrame:frame]))
+        return nil;
+
     _wkView = wkView;
     _webPageProxy = toImpl([_wkView pageRef]);
-    _scale = 1;
-    _lastSnapshotScale = NAN;
-
     _originalMayStartMediaWhenInWindow = _webPageProxy->mayStartMediaWhenInWindow();
     _originalSourceViewIsInWindow = !![_wkView window];
 
@@ -81,6 +90,19 @@
     return self;
 }
 
+- (instancetype)initWithFrame:(NSRect)frame fromWKWebView:(WKWebView *)webView
+{
+    if (!(self = [super initWithFrame:frame]))
+        return nil;
+    
+    _wkWebView = webView;
+    _webPageProxy = [_wkWebView _page];
+    _originalMayStartMediaWhenInWindow = _webPageProxy->mayStartMediaWhenInWindow();
+    _originalSourceViewIsInWindow = !![_wkWebView window];
+    
+    return self;
+}
+
 - (void)requestSnapshot
 {
     if (_waitingForSnapshot) {
@@ -117,8 +139,14 @@
 - (void)_viewWasUnparented
 {
     if (!_exclusivelyUsesSnapshot) {
-        [_wkView _setThumbnailView:nil];
-        [_wkView _setIgnoresAllEvents:NO];
+        if (_wkView) {
+            [_wkView _setThumbnailView:nil];
+            [_wkView _setIgnoresAllEvents:NO];
+        } else {
+            ASSERT(_wkWebView);
+            [_wkWebView _setThumbnailView:nil];
+            [_wkWebView _setIgnoresAllEvents:NO];
+        }
         _webPageProxy->setMayStartMediaWhenInWindow(_originalMayStartMediaWhenInWindow);
     }
 
@@ -131,8 +159,10 @@
 
 - (void)_viewWasParented
 {
-    if ([_wkView _thumbnailView])
+    if (_wkView && [_wkView _thumbnailView])
         return;
+    if (_wkWebView && [_wkWebView _thumbnailView])
+        return;
 
     if (!_exclusivelyUsesSnapshot && !_originalSourceViewIsInWindow)
         _webPageProxy->setMayStartMediaWhenInWindow(false);
@@ -140,8 +170,14 @@
     [self _requestSnapshotIfNeeded];
 
     if (!_exclusivelyUsesSnapshot) {
-        [_wkView _setThumbnailView:self];
-        [_wkView _setIgnoresAllEvents:YES];
+        if (_wkView) {
+            [_wkView _setThumbnailView:self];
+            [_wkView _setIgnoresAllEvents:YES];
+        } else {
+            ASSERT(_wkWebView);
+            [_wkWebView _setThumbnailView:self];
+            [_wkWebView _setIgnoresAllEvents:YES];
+        }
     }
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to