Changeset 162710 in webkit


Ignore:
Timestamp:
Jan 24, 2014 10:56:23 AM (10 years ago)
Author:
timothy_horton@apple.com
Message:

WebKit2 View Gestures (Swipe): Add a simple cache of view snapshots
https://bugs.webkit.org/show_bug.cgi?id=127438

Reviewed by Sam Weinig.

Add a cache of bitmap snapshots of the WKView, taken via OS X's window server
snapshotting mechanism. For now, we store all snapshots; refinements to the
caching strategy (or really having one at all) will come in future patches.

Snapshots are stored in a side map, with a UUID that allows references
to be stored inside WebBackForwardListItem (and serialized along with
the back-forward list when it is copied).

  • Shared/WebBackForwardListItem.h:

(WebKit::WebBackForwardListItem::setSnapshotUUID):
(WebKit::WebBackForwardListItem::snapshotUUID):

  • UIProcess/cf/WebBackForwardListCF.cpp:

(WebKit::WebBackForwardList::createCFDictionaryRepresentation):
(WebKit::extractBackForwardListEntriesFromArray):
Store and serialize a UUID along with each back-forward list item which
identifies that item's view snapshot in the ViewSnapshotStore.

  • UIProcess/cf/WebPageProxyCF.cpp:

Bump the session state data version, as we changed the WebBackForwardList format.

  • UIProcess/API/Cocoa/WKViewPrivate.h:
  • UIProcess/API/mac/PageClientImpl.h:
  • UIProcess/API/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::takeViewSnapshot):

  • UIProcess/API/mac/WKView.mm:

(-[WKView _takeViewSnapshot]):
Add _takeViewSnapshot IPI, which is used by ViewSnapshotStore via the PageClient
to take a snapshot of the view.

(-[WKView saveBackForwardSnapshotForCurrentItem]):
Add saveBackForwardSnapshotForCurrentItem SPI, which clients could potentially
use when they know they're about to manipulate the view hierarchy in such a way
that they want the current back-forward item's snapshot to be up to date.

  • UIProcess/API/mac/WKViewInternal.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::recordNavigationSnapshot):
(WebKit::WebPageProxy::goForward):
(WebKit::WebPageProxy::goBack):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
Update the current back-forward item's snapshot immediately before navigating.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::shouldRecordNavigationSnapshots):
(WebKit::WebPageProxy::setShouldRecordNavigationSnapshots):
Expose the ability to enable taking view snapshots on every navigation.
This is off by default, so we won't be taking any snapshots yet.

  • UIProcess/mac/ViewSnapshotStore.h: Added.

(WebKit::ViewSnapshotStore::disableSnapshotting):
(WebKit::ViewSnapshotStore::enableSnapshotting):

  • UIProcess/mac/ViewSnapshotStore.mm: Added.

(WebKit::ViewSnapshotStore::ViewSnapshotStore):
(WebKit::ViewSnapshotStore::~ViewSnapshotStore):
(WebKit::ViewSnapshotStore::shared):
(WebKit::ViewSnapshotStore::recordSnapshot):
(WebKit::ViewSnapshotStore::snapshotAndRenderTreeSize):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::takeViewSnapshot):

  • WebKit2.xcodeproj/project.pbxproj:
Location:
trunk/Source/WebKit2
Files:
2 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r162709 r162710  
     12014-01-24  Tim Horton  <timothy_horton@apple.com>
     2
     3        WebKit2 View Gestures (Swipe): Add a simple cache of view snapshots
     4        https://bugs.webkit.org/show_bug.cgi?id=127438
     5
     6        Reviewed by Sam Weinig.
     7
     8        Add a cache of bitmap snapshots of the WKView, taken via OS X's window server
     9        snapshotting mechanism. For now, we store all snapshots; refinements to the
     10        caching strategy (or really having one at all) will come in future patches.
     11
     12        Snapshots are stored in a side map, with a UUID that allows references
     13        to be stored inside WebBackForwardListItem (and serialized along with
     14        the back-forward list when it is copied).
     15
     16        * Shared/WebBackForwardListItem.h:
     17        (WebKit::WebBackForwardListItem::setSnapshotUUID):
     18        (WebKit::WebBackForwardListItem::snapshotUUID):
     19        * UIProcess/cf/WebBackForwardListCF.cpp:
     20        (WebKit::WebBackForwardList::createCFDictionaryRepresentation):
     21        (WebKit::extractBackForwardListEntriesFromArray):
     22        Store and serialize a UUID along with each back-forward list item which
     23        identifies that item's view snapshot in the ViewSnapshotStore.
     24
     25        * UIProcess/cf/WebPageProxyCF.cpp:
     26        Bump the session state data version, as we changed the WebBackForwardList format.
     27
     28        * UIProcess/API/Cocoa/WKViewPrivate.h:
     29        * UIProcess/API/mac/PageClientImpl.h:
     30        * UIProcess/API/mac/PageClientImpl.mm:
     31        (WebKit::PageClientImpl::takeViewSnapshot):
     32
     33        * UIProcess/API/mac/WKView.mm:
     34        (-[WKView _takeViewSnapshot]):
     35        Add _takeViewSnapshot IPI, which is used by ViewSnapshotStore via the PageClient
     36        to take a snapshot of the view.
     37
     38        (-[WKView saveBackForwardSnapshotForCurrentItem]):
     39        Add saveBackForwardSnapshotForCurrentItem SPI, which clients could potentially
     40        use when they know they're about to manipulate the view hierarchy in such a way
     41        that they want the current back-forward item's snapshot to be up to date.
     42
     43        * UIProcess/API/mac/WKViewInternal.h:
     44        * UIProcess/PageClient.h:
     45        * UIProcess/WebPageProxy.cpp:
     46        (WebKit::WebPageProxy::WebPageProxy):
     47        (WebKit::WebPageProxy::recordNavigationSnapshot):
     48        (WebKit::WebPageProxy::goForward):
     49        (WebKit::WebPageProxy::goBack):
     50        (WebKit::WebPageProxy::goToBackForwardItem):
     51        (WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
     52        Update the current back-forward item's snapshot immediately before navigating.
     53
     54        * UIProcess/WebPageProxy.h:
     55        (WebKit::WebPageProxy::shouldRecordNavigationSnapshots):
     56        (WebKit::WebPageProxy::setShouldRecordNavigationSnapshots):
     57        Expose the ability to enable taking view snapshots on every navigation.
     58        This is off by default, so we won't be taking any snapshots yet.
     59
     60        * UIProcess/mac/ViewSnapshotStore.h: Added.
     61        (WebKit::ViewSnapshotStore::disableSnapshotting):
     62        (WebKit::ViewSnapshotStore::enableSnapshotting):
     63        * UIProcess/mac/ViewSnapshotStore.mm: Added.
     64        (WebKit::ViewSnapshotStore::ViewSnapshotStore):
     65        (WebKit::ViewSnapshotStore::~ViewSnapshotStore):
     66        (WebKit::ViewSnapshotStore::shared):
     67        (WebKit::ViewSnapshotStore::recordSnapshot):
     68        (WebKit::ViewSnapshotStore::snapshotAndRenderTreeSize):
     69        * UIProcess/mac/WebPageProxyMac.mm:
     70        (WebKit::WebPageProxy::takeViewSnapshot):
     71        * WebKit2.xcodeproj/project.pbxproj:
     72
    1732014-01-24  Brady Eidson  <beidson@apple.com>
    274
  • trunk/Source/WebKit2/Shared/WebBackForwardListItem.h

    r161148 r162710  
    6161    const Vector<uint8_t>& backForwardData() const { return m_backForwardData; }
    6262
     63    void setSnapshotUUID(const String& uuid) { m_snapshotUUID = uuid; }
     64    const String& snapshotUUID() const { return m_snapshotUUID; }
     65
    6366    void encode(IPC::ArgumentEncoder&) const;
    6467    static PassRefPtr<WebBackForwardListItem> decode(IPC::ArgumentDecoder&);
     
    7477    uint64_t m_itemID;
    7578    Vector<uint8_t> m_backForwardData;
     79    String m_snapshotUUID;
    7680};
    7781
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h

    r162590 r162710  
    9090- (void)setMagnification:(double)magnification centeredAtPoint:(NSPoint)point;
    9191
     92- (void)saveBackForwardSnapshotForCurrentItem;
     93
    9294#endif
    9395
  • trunk/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h

    r162158 r162710  
    114114    virtual void updateAcceleratedCompositingMode(const LayerTreeContext&);
    115115
     116    virtual RetainPtr<CGImageRef> takeViewSnapshot() override;
     117
    116118    virtual void accessibilityWebProcessTokenReceived(const IPC::DataReference&);
    117119
  • trunk/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm

    r161357 r162710  
    435435}
    436436
     437RetainPtr<CGImageRef> PageClientImpl::takeViewSnapshot()
     438{
     439    return [m_wkView _takeViewSnapshot];
     440}
     441
    437442void PageClientImpl::pluginFocusOrWindowFocusChanged(uint64_t pluginComplexTextInputIdentifier, bool pluginHasFocusAndWindowHasFocus)
    438443{
  • trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm

    r162657 r162710  
    5151#import "TiledCoreAnimationDrawingAreaProxy.h"
    5252#import "ViewGestureController.h"
     53#import "ViewSnapshotStore.h"
    5354#import "WKAPICast.h"
    5455#import "WKFullScreenWindowController.h"
     
    5859#import "WKViewInternal.h"
    5960#import "WKViewPrivate.h"
     61#import "WebBackForwardList.h"
    6062#import "WebContext.h"
    6163#import "WebEventFactory.h"
     
    113115- (void)_maskRoundedBottomCorners:(NSRect)clipRect;
    114116@end
     117
     118#if defined(__has_include) && __has_include(<CoreGraphics/CoreGraphicsPrivate.h>)
     119#import <CoreGraphics/CoreGraphicsPrivate.h>
     120#endif
     121
     122extern "C" {
     123typedef uint32_t CGSConnectionID;
     124typedef uint32_t CGSWindowID;
     125CGSConnectionID CGSMainConnectionID(void);
     126CGError CGSGetScreenRectForWindow(CGSConnectionID cid, CGSWindowID wid, CGRect *rect);
     127};
    115128
    116129using namespace WebKit;
     
    24982511}
    24992512
     2513- (RetainPtr<CGImageRef>)_takeViewSnapshot
     2514{
     2515    NSWindow *window = self.window;
     2516
     2517    if (![window windowNumber])
     2518        return nullptr;
     2519
     2520    RetainPtr<CGImageRef> windowSnapshotImage = adoptCF(CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, [window windowNumber], kCGWindowImageBoundsIgnoreFraming | kCGWindowImageShouldBeOpaque));
     2521
     2522    NSRect windowCaptureRect = [self convertRect:self.bounds toView:nil];
     2523    NSRect windowCaptureScreenRect = [window convertRectToScreen:windowCaptureRect];
     2524    CGRect windowScreenRect;
     2525    CGSGetScreenRectForWindow(CGSMainConnectionID(), (CGSWindowID)[window windowNumber], &windowScreenRect);
     2526
     2527    NSRect croppedImageRect = windowCaptureRect;
     2528    croppedImageRect.origin.y = windowScreenRect.size.height - windowCaptureScreenRect.size.height - NSMinY(windowCaptureRect);
     2529
     2530    return adoptCF(CGImageCreateWithImageInRect(windowSnapshotImage.get(), NSRectToCGRect([window convertRectToBacking:croppedImageRect])));
     2531}
     2532
    25002533- (void)_setAccessibilityWebProcessToken:(NSData *)data
    25012534{
     
    28142847@implementation WKView (Private)
    28152848
     2849- (void)saveBackForwardSnapshotForCurrentItem
     2850{
     2851    _data->_page->recordNavigationSnapshot();
     2852}
     2853
    28162854- (void)_registerDraggedTypes
    28172855{
  • trunk/Source/WebKit2/UIProcess/API/mac/WKViewInternal.h

    r161148 r162710  
    7171- (void)_setAcceleratedCompositingModeRootLayer:(CALayer *)rootLayer;
    7272
     73- (RetainPtr<CGImageRef>)_takeViewSnapshot;
     74
    7375- (void)_setAccessibilityWebProcessToken:(NSData *)data;
    7476
  • trunk/Source/WebKit2/UIProcess/PageClient.h

    r162103 r162710  
    173173    virtual void makeFirstResponder() = 0;
    174174    virtual void setAcceleratedCompositingRootLayer(CALayer *) = 0;
     175    virtual RetainPtr<CGImageRef> takeViewSnapshot() = 0;
    175176#endif
    176177
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r162689 r162710  
    125125#endif
    126126
     127#if PLATFORM(MAC)
     128#include "ViewSnapshotStore.h"
     129#endif
     130
    127131// This controls what strategy we use for mouse wheel coalescing.
    128132#define MERGE_WHEEL_EVENTS 1
     
    310314    , m_backgroundExtendsBeyondPage(false)
    311315    , m_mainFrameInViewSourceMode(false)
     316    , m_shouldRecordNavigationSnapshots(false)
    312317    , m_pageCount(0)
    313318    , m_renderTreeSize(0)
     
    751756}
    752757
     758void WebPageProxy::recordNavigationSnapshot()
     759{
     760    if (!m_shouldRecordNavigationSnapshots)
     761        return;
     762
     763#if PLATFORM(MAC)
     764    ViewSnapshotStore::shared().recordSnapshot(*this);
     765#endif
     766}
     767
    753768void WebPageProxy::goForward()
    754769{
     
    760775        return;
    761776
     777    recordNavigationSnapshot();
     778
    762779    auto transaction = m_pageLoadState.transaction();
    763780
     
    787804        return;
    788805
     806    recordNavigationSnapshot();
     807
    789808    auto transaction = m_pageLoadState.transaction();
    790809
     
    811830        return;
    812831    }
     832
     833    recordNavigationSnapshot();
    813834   
    814835    auto transaction = m_pageLoadState.transaction();
     
    21082129    MESSAGE_CHECK_URL(url);
    21092130
    2110     if (frame->isMainFrame())
     2131    if (frame->isMainFrame()) {
     2132        recordNavigationSnapshot();
    21112133        m_pageLoadState.didStartProvisionalLoad(transaction, url, unreachableURL);
     2134    }
    21122135
    21132136    frame->setUnreachableURL(unreachableURL);
     
    43604383#endif
    43614384
     4385RetainPtr<CGImageRef> WebPageProxy::takeViewSnapshot()
     4386{
     4387    return m_pageClient.takeViewSnapshot();
     4388}
     4389
    43624390#endif // PLATFORM(MAC)
    43634391
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r162670 r162710  
    859859    void setScrollPinningBehavior(WebCore::ScrollPinningBehavior);
    860860    WebCore::ScrollPinningBehavior scrollPinningBehavior() { return m_scrollPinningBehavior; }
    861        
     861
     862    bool shouldRecordNavigationSnapshots() const { return m_shouldRecordNavigationSnapshots; }
     863    void setShouldRecordNavigationSnapshots(bool shouldRecordSnapshots) { m_shouldRecordNavigationSnapshots = shouldRecordSnapshots; }
     864    void recordNavigationSnapshot();
     865
     866#if PLATFORM(MAC)
     867    RetainPtr<CGImageRef> takeViewSnapshot();
     868#endif
     869
    862870private:
    863871    WebPageProxy(PageClient&, WebProcessProxy&, WebPageGroup&, API::Session&, uint64_t pageID);
     
    13601368
    13611369    bool m_mainFrameInViewSourceMode;
    1362        
     1370
     1371    bool m_shouldRecordNavigationSnapshots;
     1372
    13631373    unsigned m_pageCount;
    13641374
  • trunk/Source/WebKit2/UIProcess/cf/WebBackForwardListCF.cpp

    r161148 r162710  
    11/*
    2  * Copyright (C) 2010, 2011, 2012 Apple Inc. All rights reserved.
     2 * Copyright (C) 2010, 2011, 2012, 2014 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    5959static CFStringRef sessionHistoryEntryOriginalURLKey = CFSTR("SessionHistoryEntryOriginalURL");
    6060static CFStringRef sessionHistoryEntryDataKey = CFSTR("SessionHistoryEntryData");
     61static CFStringRef sessionHistoryEntrySnapshotUUIDKey = CFSTR("SessionHistoryEntrySnapshotUUID");
    6162
    6263static bool extractBackForwardListEntriesFromArray(CFArrayRef, BackForwardListItemVector&);
     
    105106        RetainPtr<CFStringRef> title = m_entries[i]->title().createCFString();
    106107        RetainPtr<CFStringRef> originalURL = m_entries[i]->originalURL().createCFString();
     108        RetainPtr<CFStringRef> uuid = m_entries[i]->snapshotUUID().createCFString();
    107109
    108110        // FIXME: This uses the IPC data encoding format, which means that whenever we change the IPC encoding we need to bump the CurrentSessionStateDataVersion
    109111        // constant in WebPageProxyCF.cpp. The IPC data format is meant to be an implementation detail, and not something that should be written to disk.
    110112        RetainPtr<CFDataRef> entryData = adoptCF(CFDataCreate(kCFAllocatorDefault, m_entries[i]->backForwardData().data(), m_entries[i]->backForwardData().size()));
    111        
    112         const void* keys[4] = { sessionHistoryEntryURLKey, sessionHistoryEntryTitleKey, sessionHistoryEntryOriginalURLKey, sessionHistoryEntryDataKey };
    113         const void* values[4] = { url.get(), title.get(), originalURL.get(), entryData.get() };
    114 
    115         RetainPtr<CFDictionaryRef> entryDictionary = adoptCF(CFDictionaryCreate(0, keys, values, 4, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
     113
     114        const void* keys[5] = { sessionHistoryEntryURLKey, sessionHistoryEntryTitleKey, sessionHistoryEntryOriginalURLKey, sessionHistoryEntryDataKey, sessionHistoryEntrySnapshotUUIDKey };
     115        const void* values[5] = { url.get(), title.get(), originalURL.get(), entryData.get(), uuid.get() };
     116
     117        RetainPtr<CFDictionaryRef> entryDictionary = adoptCF(CFDictionaryCreate(0, keys, values, 5, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
    116118        CFArrayAppendValue(entries.get(), entryDictionary.get());
    117119    }
     
    310312        }
    311313
     314        CFStringRef snapshotUUID = (CFStringRef)CFDictionaryGetValue(entryDictionary, sessionHistoryEntrySnapshotUUIDKey);
     315        if (!snapshotUUID || CFGetTypeID(snapshotUUID) != CFStringGetTypeID()) {
     316            LOG(SessionState, "WebBackForwardList entry at index %i does not have a valid snapshot UUID", (int)i);
     317            return false;
     318        }
     319
    312320        CFDataRef backForwardData = (CFDataRef)CFDictionaryGetValue(entryDictionary, sessionHistoryEntryDataKey);
    313321        if (!backForwardData || CFGetTypeID(backForwardData) != CFDataGetTypeID()) {
     
    315323            return false;
    316324        }
    317        
    318         entries.append(WebBackForwardListItem::create(originalURL, entryURL, entryTitle, CFDataGetBytePtr(backForwardData), CFDataGetLength(backForwardData), generateWebBackForwardItemID()));
     325
     326        auto item = WebBackForwardListItem::create(originalURL, entryURL, entryTitle, CFDataGetBytePtr(backForwardData), CFDataGetLength(backForwardData), generateWebBackForwardItemID());
     327        item->setSnapshotUUID(snapshotUUID);
     328        entries.append(item);
    319329    }
    320330
  • trunk/Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp

    r161045 r162710  
    4545static CFStringRef provisionalURLKey = CFSTR("ProvisionalURL");
    4646
    47 static const UInt32 CurrentSessionStateDataVersion = 2;
     47static const UInt32 CurrentSessionStateDataVersion = 3;
    4848
    4949PassRefPtr<API::Data> WebPageProxy::sessionStateData(WebPageProxySessionStateFilterCallback filter, void* context) const
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r162678 r162710  
    417417                2D47B56C1810714E003A3AEE /* RemoteLayerBackingStore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D47B56A1810714E003A3AEE /* RemoteLayerBackingStore.mm */; };
    418418                2D47B56D1810714E003A3AEE /* RemoteLayerBackingStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D47B56B1810714E003A3AEE /* RemoteLayerBackingStore.h */; };
     419                2D6CD119189058A500E5A4A0 /* ViewSnapshotStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D6CD117189058A500E5A4A0 /* ViewSnapshotStore.h */; };
     420                2D6CD11A189058A500E5A4A0 /* ViewSnapshotStore.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2D6CD118189058A500E5A4A0 /* ViewSnapshotStore.mm */; };
    419421                2D819B9E18627EE9001F03D1 /* ViewGestureGeometryCollector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D819B99186275B3001F03D1 /* ViewGestureGeometryCollector.cpp */; };
    420422                2D819BA11862800E001F03D1 /* ViewGestureGeometryCollectorMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D819B9F1862800E001F03D1 /* ViewGestureGeometryCollectorMessageReceiver.cpp */; };
     
    20712073                2D47B56A1810714E003A3AEE /* RemoteLayerBackingStore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RemoteLayerBackingStore.mm; sourceTree = "<group>"; };
    20722074                2D47B56B1810714E003A3AEE /* RemoteLayerBackingStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteLayerBackingStore.h; sourceTree = "<group>"; };
     2075                2D6CD117189058A500E5A4A0 /* ViewSnapshotStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewSnapshotStore.h; sourceTree = "<group>"; };
     2076                2D6CD118189058A500E5A4A0 /* ViewSnapshotStore.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewSnapshotStore.mm; sourceTree = "<group>"; };
    20732077                2D819B99186275B3001F03D1 /* ViewGestureGeometryCollector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ViewGestureGeometryCollector.cpp; sourceTree = "<group>"; };
    20742078                2D819B9A186275B3001F03D1 /* ViewGestureGeometryCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewGestureGeometryCollector.h; sourceTree = "<group>"; };
     
    56945698                                2D125C5D1857EA05003BA3CB /* ViewGestureController.mm */,
    56955699                                2D1B5D5A18586599006C6596 /* ViewGestureController.messages.in */,
     5700                                2D6CD117189058A500E5A4A0 /* ViewSnapshotStore.h */,
     5701                                2D6CD118189058A500E5A4A0 /* ViewSnapshotStore.mm */,
    56965702                                728E86EF1795188C0087879E /* WebColorPickerMac.h */,
    56975703                                728E86F01795188C0087879E /* WebColorPickerMac.mm */,
     
    66686674                                BC1DFE8F12B31CA8005DF730 /* WKOpenPanelResultListener.h in Headers */,
    66696675                                BCD597D7112B56DC00EC8C23 /* WKPage.h in Headers */,
     6676                                2D6CD119189058A500E5A4A0 /* ViewSnapshotStore.h in Headers */,
    66706677                                BC7B633712A45ABA00D174A4 /* WKPageGroup.h in Headers */,
    66716678                                BC2D021912AC426C00E732A3 /* WKPageLoadTypes.h in Headers */,
     
    74987505                                5167EEA1170377BF007681CA /* DiskCacheMonitor.mm in Sources */,
    74997506                                2DA9448F1884E3B500ED86DB /* WKGeolocationProviderIOS.mm in Sources */,
     7507                                2D6CD11A189058A500E5A4A0 /* ViewSnapshotStore.mm in Sources */,
    75007508                                518E8F0716B2093700E91429 /* Download.cpp in Sources */,
    75017509                                2D47B56C1810714E003A3AEE /* RemoteLayerBackingStore.mm in Sources */,
Note: See TracChangeset for help on using the changeset viewer.