Changeset 160602 in webkit


Ignore:
Timestamp:
Dec 14, 2013 3:24:47 PM (10 years ago)
Author:
mitz@apple.com
Message:

[Cocoa] Expose some layout milestones
https://bugs.webkit.org/show_bug.cgi?id=125721

Reviewed by Sam Weinig.

  • UIProcess/API/Cocoa/WKBrowsingContextController.h:

(WKRenderingProgressEvents): Declared new enum.
(@interface WKBrowsingContextController): Declared new observedRenderingProgressEvents
property.

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(layoutMilestones): Added helper to translate rendering progress events into layout
milestones.
(-[WKBrowsingContextController setObservedRenderingProgressEvents:]): Added this setter.
Sets the ivar and calls WebPageProxy::listenForLayoutMilestones.
(renderingProgressEvents): Added helper to translate layout milestones into rendering
progress events.
(didLayout): Implemented this WKPageLoaderClient callback by calling the load delegate.
(setUpPageLoaderClient): Set the above callback in the client structure.

  • UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h: Declared new delegate method.
Location:
trunk/Source/WebKit2
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r160601 r160602  
     12013-12-14  Dan Bernstein  <mitz@apple.com>
     2
     3        [Cocoa] Expose some layout milestones
     4        https://bugs.webkit.org/show_bug.cgi?id=125721
     5
     6        Reviewed by Sam Weinig.
     7
     8        * UIProcess/API/Cocoa/WKBrowsingContextController.h:
     9        (WKRenderingProgressEvents): Declared new enum.
     10        (@interface WKBrowsingContextController): Declared new observedRenderingProgressEvents
     11        property.
     12        * UIProcess/API/Cocoa/WKBrowsingContextController.mm:
     13        (layoutMilestones): Added helper to translate rendering progress events into layout
     14        milestones.
     15        (-[WKBrowsingContextController setObservedRenderingProgressEvents:]): Added this setter.
     16        Sets the ivar and calls WebPageProxy::listenForLayoutMilestones.
     17        (renderingProgressEvents): Added helper to translate layout milestones into rendering
     18        progress events.
     19        (didLayout): Implemented this WKPageLoaderClient callback by calling the load delegate.
     20        (setUpPageLoaderClient): Set the above callback in the client structure.
     21        * UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h: Declared new delegate method.
     22
    1232013-12-14  Dan Bernstein  <mitz@apple.com>
    224
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.h

    r160191 r160602  
    3636@protocol WKBrowsingContextLoadDelegate;
    3737@protocol WKBrowsingContextPolicyDelegate;
     38
     39typedef NS_OPTIONS(NSUInteger, WKRenderingProgressEvents) {
     40    WKRenderingProgressEventFirstLayout = 1 << 0,
     41    WKRenderingProgressEventFirstPaintWithSignificantArea = 1 << 2,
     42};
    3843
    3944WK_API_CLASS
     
    122127@property(readonly) double estimatedProgress;
    123128
     129@property WKRenderingProgressEvents observedRenderingProgressEvents;
     130
    124131#pragma mark Active Document Introspection
    125132
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextController.mm

    r160512 r160602  
    334334}
    335335
     336static inline LayoutMilestones layoutMilestones(WKRenderingProgressEvents events)
     337{
     338    LayoutMilestones milestones = 0;
     339
     340    if (events & WKRenderingProgressEventFirstLayout)
     341        milestones |= DidFirstLayout;
     342
     343    if (events & WKRenderingProgressEventFirstPaintWithSignificantArea)
     344        milestones |= DidHitRelevantRepaintedObjectsAreaThreshold;
     345
     346    return milestones;
     347}
     348
     349- (void)setObservedRenderingProgressEvents:(WKRenderingProgressEvents)events
     350{
     351    _observedRenderingProgressEvents = events;
     352    _page->listenForLayoutMilestones(layoutMilestones(events));
     353}
     354
    336355#pragma mark Active Document Introspection
    337356
     
    520539    if ([loadDelegate respondsToSelector:@selector(browsingContextControllerWebProcessDidCrash:)])
    521540        [(id <WKBrowsingContextLoadDelegatePrivate>)loadDelegate browsingContextControllerWebProcessDidCrash:browsingContext];
     541}
     542
     543static inline WKRenderingProgressEvents renderingProgressEvents(WKLayoutMilestones milestones)
     544{
     545    WKRenderingProgressEvents events = 0;
     546
     547    if (milestones & kWKDidFirstLayout)
     548        events |= WKRenderingProgressEventFirstLayout;
     549
     550    if (milestones & kWKDidHitRelevantRepaintedObjectsAreaThreshold)
     551        events |= WKRenderingProgressEventFirstPaintWithSignificantArea;
     552
     553    return events;
     554}
     555
     556static void didLayout(WKPageRef page, WKLayoutMilestones milestones, WKTypeRef userData, const void* clientInfo)
     557{
     558    WKBrowsingContextController *browsingContext = (WKBrowsingContextController *)clientInfo;
     559    auto loadDelegate = browsingContext->_loadDelegate.get();
     560
     561    if ([loadDelegate respondsToSelector:@selector(browsingContextController:renderingProgressDidChange:)])
     562        [loadDelegate browsingContextController:browsingContext renderingProgressDidChange:renderingProgressEvents(milestones)];
    522563}
    523564
     
    545586
    546587    loaderClient.processDidCrash = processDidCrash;
     588
     589    loaderClient.didLayout = didLayout;
    547590
    548591    page.initializeLoaderClient(&loaderClient.base);
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h

    r160040 r160602  
    2626#import <Foundation/Foundation.h>
    2727
    28 @class WKBrowsingContextController;
     28#import <WebKit2/WKBrowsingContextController.h>
     29
    2930@class WKBackForwardListItem;
    3031
     
    5657- (void)browsingContextControllerDidChangeBackForwardList:(WKBrowsingContextController *)sender addedItem:(WKBackForwardListItem *)addedItem removedItems:(NSArray *)removedItems;
    5758
     59- (void)browsingContextController:(WKBrowsingContextController *)sender renderingProgressDidChange:(WKRenderingProgressEvents)progressEvent;
     60
    5861@end
Note: See TracChangeset for help on using the changeset viewer.