Changeset 164049 in webkit


Ignore:
Timestamp:
Feb 13, 2014 1:14:05 PM (10 years ago)
Author:
andersca@apple.com
Message:

Add rendering progress events SPI
https://bugs.webkit.org/show_bug.cgi?id=128752

Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _observedRenderingProgressEvents]):
(layoutMilestones):
(-[WKWebView _setObservedRenderingProgressEvents:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

(NS_OPTIONS):

  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::renderingProgressEvents):
(WebKit::NavigationState::LoaderClient::didLayout):

  • WebKit2.xcodeproj/project.pbxproj:
Location:
trunk/Source/WebKit2
Files:
6 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r164031 r164049  
     12014-02-13  Anders Carlsson  <andersca@apple.com>
     2
     3        Add rendering progress events SPI
     4        https://bugs.webkit.org/show_bug.cgi?id=128752
     5
     6        Reviewed by Dan Bernstein.
     7
     8        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h.
     9        * UIProcess/API/Cocoa/WKWebView.mm:
     10        (-[WKWebView _observedRenderingProgressEvents]):
     11        (layoutMilestones):
     12        (-[WKWebView _setObservedRenderingProgressEvents:]):
     13        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
     14        (NS_OPTIONS):
     15        * UIProcess/Cocoa/NavigationState.h:
     16        * UIProcess/Cocoa/NavigationState.mm:
     17        (WebKit::NavigationState::setNavigationDelegate):
     18        (WebKit::renderingProgressEvents):
     19        (WebKit::NavigationState::LoaderClient::didLayout):
     20        * WebKit2.xcodeproj/project.pbxproj:
     21
    1222014-02-13  Anders Carlsson  <andersca@apple.com>
    223
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h

    r164035 r164049  
    2424 */
    2525
    26 #import <WebKit2/WKWebView.h>
     26#import <WebKit2/WKNavigationDelegate.h>
     27#import <WebKit2/WKWebViewPrivate.h>
    2728
    2829#if WK_API_ENABLED
    2930
    30 @class WKRemoteObjectRegistry;
     31@protocol WKNavigationDelegatePrivate <WKNavigationDelegate>
    3132
    32 @interface WKWebView (WKPrivate)
     33@optional
    3334
    34 @property (nonatomic, readonly) WKRemoteObjectRegistry *_remoteObjectRegistry;
    35 
    36 #if TARGET_OS_IPHONE
    37 @property (nonatomic, setter=_setMinimumLayoutSizeOverride:) CGSize _minimumLayoutSizeOverride;
    38 
    39 // Define the inset of the scrollview unusable by the web page.
    40 @property (nonatomic, setter=_setObscuredInsets:) UIEdgeInsets _obscuredInsets;
    41 
    42 - (void)_beginInteractiveObscuredInsetsChange;
    43 - (void)_endInteractiveObscuredInsetsChange;
    44 #endif
     35- (void)_webView:(WKWebView *)webView renderingProgressDidChange:(_WKRenderingProgressEvents)progressEvents;
    4536
    4637@end
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r164010 r164049  
    5959
    6060    RetainPtr<WKRemoteObjectRegistry> _remoteObjectRegistry;
     61    _WKRenderingProgressEvents _observedRenderingProgressEvents;
    6162
    6263#if PLATFORM(IOS)
     
    373374}
    374375
     376- (_WKRenderingProgressEvents)_observedRenderingProgressEvents
     377{
     378    return _observedRenderingProgressEvents;
     379}
     380
     381static inline WebCore::LayoutMilestones layoutMilestones(_WKRenderingProgressEvents events)
     382{
     383    WebCore::LayoutMilestones milestones = 0;
     384
     385    if (events & _WKRenderingProgressEventFirstLayout)
     386        milestones |= WebCore::DidFirstLayout;
     387
     388    if (events & WKRenderingProgressEventFirstPaintWithSignificantArea)
     389        milestones |= WebCore::DidHitRelevantRepaintedObjectsAreaThreshold;
     390
     391    return milestones;
     392}
     393
     394- (void)_setObservedRenderingProgressEvents:(_WKRenderingProgressEvents)observedRenderingProgressEvents
     395{
     396    _observedRenderingProgressEvents = observedRenderingProgressEvents;
     397    _page->listenForLayoutMilestones(layoutMilestones(observedRenderingProgressEvents));
     398}
     399
    375400#pragma mark iOS-specific methods
    376401
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r163814 r164049  
    2828#if WK_API_ENABLED
    2929
     30typedef NS_OPTIONS(NSUInteger, _WKRenderingProgressEvents) {
     31    _WKRenderingProgressEventFirstLayout = 1 << 0,
     32    _WKRenderingProgressEventFirstPaintWithSignificantArea = 1 << 2,
     33};
     34
    3035@class WKRemoteObjectRegistry;
    3136
     
    3338
    3439@property (nonatomic, readonly) WKRemoteObjectRegistry *_remoteObjectRegistry;
     40@property (nonatomic, setter=_setObservedRenderingProgressEvents:) _WKRenderingProgressEvents _observedRenderingProgressEvents;
    3541
    3642#if TARGET_OS_IPHONE
  • trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h

    r163332 r164049  
    8383        virtual void didCommitLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
    8484        virtual void didFinishLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
    85         virtual void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object* userData) override;
     85        virtual void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) override;
     86        virtual void didLayout(WebKit::WebPageProxy*, WebCore::LayoutMilestones, API::Object*) override;
    8687
    8788        NavigationState& m_navigationState;
     
    113114        bool webViewDidFinishLoadingNavigation : 1;
    114115        bool webViewDidFailNavigationWithError : 1;
     116
     117        bool webViewRenderingProgressDidChange : 1;
    115118    } m_navigationDelegateMethods;
    116119
  • trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm

    r163997 r164049  
    3333#import "WKFrameInfoInternal.h"
    3434#import "WKNavigationActionInternal.h"
    35 #import "WKNavigationDelegate.h"
     35#import "WKNavigationDelegatePrivate.h"
    3636#import "WKNavigationInternal.h"
    3737#import "WKNavigationResponseInternal.h"
     
    8484    m_navigationDelegateMethods.webViewDidFinishLoadingNavigation = [delegate respondsToSelector:@selector(webView:didFinishLoadingNavigation:)];
    8585    m_navigationDelegateMethods.webViewDidFailNavigationWithError = [delegate respondsToSelector:@selector(webView:didFailNavigation:withError:)];
     86
     87    m_navigationDelegateMethods.webViewRenderingProgressDidChange = [delegate respondsToSelector:@selector(_webView:renderingProgressDidChange:)];
    8688}
    8789
     
    346348}
    347349
     350static _WKRenderingProgressEvents renderingProgressEvents(WebCore::LayoutMilestones milestones)
     351{
     352    _WKRenderingProgressEvents events = 0;
     353
     354    if (milestones & WebCore::DidFirstLayout)
     355        events |= _WKRenderingProgressEventFirstLayout;
     356
     357    if (milestones & WebCore::DidHitRelevantRepaintedObjectsAreaThreshold)
     358        events |= _WKRenderingProgressEventFirstPaintWithSignificantArea;
     359
     360    return events;
     361}
     362
     363void NavigationState::LoaderClient::didLayout(WebKit::WebPageProxy*, WebCore::LayoutMilestones layoutMilestones, API::Object*)
     364{
     365    if (!m_navigationState.m_navigationDelegateMethods.webViewRenderingProgressDidChange)
     366        return;
     367
     368    auto navigationDelegate = m_navigationState.m_navigationDelegate.get();
     369    if (!navigationDelegate)
     370        return;
     371
     372    [static_cast<id <WKNavigationDelegatePrivate>>(navigationDelegate.get()) _webView:m_navigationState.m_webView renderingProgressDidChange:renderingProgressEvents(layoutMilestones)];
     373}
     374
    348375void NavigationState::willChangeIsLoading()
    349376{
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r164004 r164049  
    244244                1A9E32A11823018900F5D04C /* WKRemoteObjectRegistryInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A9E32A01823018900F5D04C /* WKRemoteObjectRegistryInternal.h */; };
    245245                1A9FBA8D13FF04E600DEED67 /* PluginComplexTextInputState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A9FBA8C13FF04E600DEED67 /* PluginComplexTextInputState.h */; };
     246                1AA20D5118AD50E0005D1ED4 /* WKNavigationDelegatePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA20D5018AD50E0005D1ED4 /* WKNavigationDelegatePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    246247                1AA2E51D12E4C05E00BC4966 /* CGUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AA2E51B12E4C05E00BC4966 /* CGUtilities.h */; };
    247248                1AA2E51E12E4C05E00BC4966 /* CGUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AA2E51C12E4C05E00BC4966 /* CGUtilities.cpp */; };
     
    19211922                1AA1CC5C100FA1A10078DEBC /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = "<absolute>"; };
    19221923                1AA1CD06100FA1BA0078DEBC /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
     1924                1AA20D5018AD50E0005D1ED4 /* WKNavigationDelegatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNavigationDelegatePrivate.h; sourceTree = "<group>"; };
    19231925                1AA2E51B12E4C05E00BC4966 /* CGUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CGUtilities.h; sourceTree = "<group>"; };
    19241926                1AA2E51C12E4C05E00BC4966 /* CGUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CGUtilities.cpp; sourceTree = "<group>"; };
     
    43744376                                1A256E3918A1A7DF006FB922 /* WKNavigationActionInternal.h */,
    43754377                                1ABC3DFB1899F51C004F0626 /* WKNavigationDelegate.h */,
     4378                                1AA20D5018AD50E0005D1ED4 /* WKNavigationDelegatePrivate.h */,
    43764379                                1ABC3DF01899C6B6004F0626 /* WKNavigationInternal.h */,
    43774380                                1A1B0EB418A424950038481A /* WKNavigationResponse.h */,
     
    65126515                                33152976130D0CB200ED2483 /* SecurityOriginData.h in Headers */,
    65136516                                518D2CCB12D51DFB003BB93B /* SessionState.h in Headers */,
     6517                                1AA20D5118AD50E0005D1ED4 /* WKNavigationDelegatePrivate.h in Headers */,
    65146518                                1A6420E512DCE2FF00CAAE2C /* ShareableBitmap.h in Headers */,
    65156519                                51217461164C20E30037A5C1 /* ShareableResource.h in Headers */,
Note: See TracChangeset for help on using the changeset viewer.