Diff
Modified: branches/safari-600.3-branch/Source/WebKit2/ChangeLog (177473 => 177474)
--- branches/safari-600.3-branch/Source/WebKit2/ChangeLog 2014-12-18 00:15:19 UTC (rev 177473)
+++ branches/safari-600.3-branch/Source/WebKit2/ChangeLog 2014-12-18 00:25:14 UTC (rev 177474)
@@ -1,3 +1,35 @@
+2014-12-17 Matthew Hanson <[email protected]>
+
+ Merge r177402. rdar://problem/19266297
+
+ 2014-12-16 Conrad Shultz <[email protected]>
+
+ Add a progress indicator to the preview popover
+ https://bugs.webkit.org/show_bug.cgi?id=139699
+
+ Reviewed by Tim Horton.
+
+ * UIProcess/API/Cocoa/WKViewPrivate.h:
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView _setPreviewLoading:]):
+ Wrap -[WKImmediateActionController setPreviewLoading:].
+
+ * UIProcess/mac/WKImmediateActionController.h:
+ * UIProcess/mac/WKImmediateActionController.mm:
+ (-[WKImmediateActionController _createPreviewPopoverIfNeededForURL:]):
+ Flag the preview view controller as loading before beginning the load.
+ (-[WKImmediateActionController setPreviewLoading:]):
+ Wrap -[WKPagePreviewViewController setLoading:].
+
+ * UIProcess/mac/WKPagePreviewViewController.h:
+ * UIProcess/mac/WKPagePreviewViewController.mm:
+ (-[WKPagePreviewViewController setLoading:]):
+ Toggle the progress indicator animation state.
+ (-[WKPagePreviewViewController isLoading]):
+ Accessor.
+ (-[WKPagePreviewViewController loadView]):
+ Create and center an indeterminate progress indicator that won't scale with the preview content.
+
2014-12-16 Matthew Hanson <[email protected]>
Merge r177406. rdar://problem/19270279
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h (177473 => 177474)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2014-12-18 00:15:19 UTC (rev 177473)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2014-12-18 00:25:14 UTC (rev 177474)
@@ -131,6 +131,7 @@
- (NSView *)_viewForPreviewingURL:(NSURL *)url initialFrameSize:(NSSize)initialFrameSize;
- (NSString *)_titleForPreviewOfURL:(NSURL *)url;
- (void)_setPreviewTitle:(NSString *)previewTitle;
+- (void)_setPreviewLoading:(BOOL)loading;
- (void)_finishPreviewingURL:(NSURL *)url withPreviewView:(NSView *)previewView;
- (void)_handleClickInPreviewView:(NSView *)previewView URL:(NSURL *)url;
- (BOOL)_shouldUseStandardQuickLookPreview;
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/mac/WKView.mm (177473 => 177474)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/mac/WKView.mm 2014-12-18 00:15:19 UTC (rev 177473)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/API/mac/WKView.mm 2014-12-18 00:25:14 UTC (rev 177474)
@@ -4349,6 +4349,13 @@
#endif
}
+- (void)_setPreviewLoading:(BOOL)loading
+{
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000 && WK_API_ENABLED
+ [_data->_immediateActionController setPreviewLoading:loading];
+#endif
+}
+
- (void)_finishPreviewingURL:(NSURL *)url withPreviewView:(NSView *)previewView
{
}
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKImmediateActionController.h (177473 => 177474)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKImmediateActionController.h 2014-12-18 00:15:19 UTC (rev 177473)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKImmediateActionController.h 2014-12-18 00:25:14 UTC (rev 177474)
@@ -80,6 +80,7 @@
#if WK_API_ENABLED
- (void)hidePreview;
- (void)setPreviewTitle:(NSString *)previewTitle;
+- (void)setPreviewLoading:(BOOL)loading;
#endif // WK_API_ENABLED
@end
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm (177473 => 177474)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm 2014-12-18 00:15:19 UTC (rev 177473)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKImmediateActionController.mm 2014-12-18 00:25:14 UTC (rev 177474)
@@ -287,6 +287,7 @@
_previewViewController = adoptNS([[WKPagePreviewViewController alloc] initWithPageURL:url mainViewSize:_wkView.bounds.size popoverToViewScale:actualPopoverToViewScale]);
_previewViewController->_delegate = self;
+ [_previewViewController setLoading:YES];
[_previewViewController loadView];
_previewPopover = adoptNS([[NSPopover alloc] init]);
@@ -315,6 +316,11 @@
[_previewViewController setPreviewTitle:previewTitle];
}
+- (void)setPreviewLoading:(BOOL)loading
+{
+ [_previewViewController setLoading:loading];
+}
+
- (void)popoverWillClose:(NSNotification *)notification
{
[self hidePreview];
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKPagePreviewViewController.h (177473 => 177474)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKPagePreviewViewController.h 2014-12-18 00:15:19 UTC (rev 177473)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKPagePreviewViewController.h 2014-12-18 00:25:14 UTC (rev 177474)
@@ -49,11 +49,14 @@
RetainPtr<NSView> _previewView;
RetainPtr<NSTextField> _titleTextField;
RetainPtr<NSString> _previewTitle;
+ RetainPtr<NSProgressIndicator> _spinner;
+ BOOL _loading;
id <WKPagePreviewViewControllerDelegate> _delegate;
CGFloat _popoverToViewScale;
}
@property (nonatomic, copy) NSString *previewTitle;
+@property (nonatomic, getter=isLoading) BOOL loading;
- (instancetype)initWithPageURL:(NSURL *)URL mainViewSize:(NSSize)size popoverToViewScale:(CGFloat)scale;
Modified: branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKPagePreviewViewController.mm (177473 => 177474)
--- branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKPagePreviewViewController.mm 2014-12-18 00:15:19 UTC (rev 177473)
+++ branches/safari-600.3-branch/Source/WebKit2/UIProcess/mac/WKPagePreviewViewController.mm 2014-12-18 00:25:14 UTC (rev 177474)
@@ -67,6 +67,24 @@
return NSMakeSize(2 * previewViewInset, previewViewTitleHeight + 2 * previewViewInset);
}
+- (void)setLoading:(BOOL)loading
+{
+ if (_loading == loading)
+ return;
+
+ _loading = loading;
+
+ if (_loading)
+ [_spinner startAnimation:nil];
+ else
+ [_spinner stopAnimation:nil];
+}
+
+- (BOOL)isLoading
+{
+ return _loading;
+}
+
- (void)loadView
{
NSRect defaultFrame = NSMakeRect(0, 0, _mainViewSize.width, _mainViewSize.height);
@@ -126,6 +144,22 @@
[_titleTextField setFrame:titleFrame];
[containerView addSubview:_titleTextField.get()];
+ NSSize spinnerSize = NSMakeSize(48, 48);
+ NSRect spinnerFrame = NSMakeRect(NSMidX(containerFrame), NSMidY(containerFrame), 0, 0);
+ spinnerFrame = NSInsetRect(spinnerFrame, -spinnerSize.width * 0.5, -spinnerSize.height * 0.5);
+ spinnerFrame.origin.x = floor(spinnerFrame.origin.x);
+ spinnerFrame.origin.y = floor(spinnerFrame.origin.y);
+
+ _spinner = adoptNS([[NSProgressIndicator alloc] initWithFrame:spinnerFrame]);
+ [_spinner setStyle:NSProgressIndicatorSpinningStyle];
+ [_spinner setDisplayedWhenStopped:NO];
+ [_spinner setAutoresizingMask:NSViewMinXMargin | NSViewMaxXMargin | NSViewMinYMargin | NSViewMaxYMargin];
+ [_spinner setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameAqua]];
+ if (_loading)
+ [_spinner startAnimation:nil];
+
+ [containerView addSubview:_spinner.get()];
+
// Setting the webView bounds will scale it to 75% of the _mainViewSize.
[_previewView setBounds:NSMakeRect(0, 0, _mainViewSize.width / _popoverToViewScale, _mainViewSize.height / _popoverToViewScale)];