Changeset 194646 in webkit


Ignore:
Timestamp:
Jan 6, 2016, 10:49:17 AM (10 years ago)
Author:
BJ Burg
Message:

Add a WebKit SPI for registering an automation controller with RemoteInspector
https://bugs.webkit.org/show_bug.cgi?id=151576

Reviewed by Dan Bernstein and Joseph Pecoraro.

Source/JavaScriptCore:

Given a RemoteInspector endpoint that is instantiated in UIProcess, there
should be a way to delegate automation-related functionality and policy to
clients of WebKit.

This class adds a RemoteInspector::Client interface that serves a delegate.
This is ultimately delegated via _WKAutomationDelegate, which is an SPI
that allows clients to install an Objective-C delegate for automation.

The setting for whether remote automation is allowed is included in the
listing that RemoteInspector sends out. It is updated when RemoteInspector::Client
is assigned, or when the client signals that its capabilities have changed.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/RemoteInspector.mm:

(Inspector::RemoteInspector::setRemoteInspectorClient): Added.
(Inspector::RemoteInspector::pushListingsNow):

In the listing, include whether the application supports remote automation.

  • inspector/remote/RemoteInspectorConstants.h: Add a constant.

Source/WebKit2:

_WKAutomationDelegate is a new SPI that allows WKProcessPool clients to decide
policy and implement actions for remote automation.

The SPI's implementation connects the client's delegate to RemoteInspector::Client.
This allows the delegate to handle some commands, such as requestAutomationSession,
that come over XPC from an external test runner but are not associated with a specific
automation target.

  • PlatformMac.cmake:
  • UIProcess/API/APIAutomationClient.h: Added. Boilerplate for WebKit::AutomationClient.

(API::AutomationClient::~AutomationClient):
(API::AutomationClient::allowsRemoteAutomation):
(API::AutomationClient::requestAutomationSession):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _automationDelegate]): Added.
(-[WKProcessPool _setAutomationDelegate:]): Added.
(-[WKProcessPool _automationCapabilitiesDidChange]): Added.

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h: Add delegate.
  • UIProcess/API/Cocoa/_WKAutomationDelegate.h: Added.

This is a new delegate SPI of WKProcessPool; it corresponds to AutomationClient.

  • UIProcess/Cocoa/AutomationClient.h: Added.
  • UIProcess/Cocoa/AutomationClient.mm: Added.

This implements a bridge between RemoteInspector::Client and _WKAutomationDelegate.
Since the delegate can be called from JavaScriptCore, save the delegating
WKProcessPool and pass it as the self parameter to delegate methods.

(WebKit::AutomationClient::AutomationClient):
(WebKit::AutomationClient::~AutomationClient):

This client automatically registers and unregisters as a RemoteInspector::Client.

(WebKit::AutomationClient::remoteAutomationAllowed):
(WebKit::AutomationClient::requestAutomationSession):

Forward requests from RemoteInspector to the automation delegate.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::setAutomationClient): Added.
(WebKit::WebProcessPool::updateAutomationCapabilities): Added, it notifies RemoteInspector.

  • UIProcess/WebProcessPool.h:
  • WebKit2.xcodeproj/project.pbxproj:
Location:
trunk/Source
Files:
4 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r194643 r194646  
     12016-01-06  Brian Burg  <bburg@apple.com>
     2
     3        Add a WebKit SPI for registering an automation controller with RemoteInspector
     4        https://bugs.webkit.org/show_bug.cgi?id=151576
     5
     6        Reviewed by Dan Bernstein and Joseph Pecoraro.
     7
     8        Given a RemoteInspector endpoint that is instantiated in UIProcess, there
     9        should be a way to delegate automation-related functionality and policy to
     10        clients of WebKit.
     11
     12        This class adds a RemoteInspector::Client interface that serves a delegate.
     13        This is ultimately delegated via _WKAutomationDelegate, which is an SPI
     14        that allows clients to install an Objective-C delegate for automation.
     15
     16        The setting for whether remote automation is allowed is included in the
     17        listing that RemoteInspector sends out. It is updated when RemoteInspector::Client
     18        is assigned, or when the client signals that its capabilities have changed.
     19
     20        * inspector/remote/RemoteInspector.h:
     21        * inspector/remote/RemoteInspector.mm:
     22        (Inspector::RemoteInspector::setRemoteInspectorClient): Added.
     23        (Inspector::RemoteInspector::pushListingsNow):
     24
     25            In the listing, include whether the application supports remote automation.
     26
     27        * inspector/remote/RemoteInspectorConstants.h: Add a constant.
     28
    1292016-01-05  Keith Miller  <keith_miller@apple.com>
    230
  • trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.h

    r192753 r194646  
    11/*
    2  * Copyright (C) 2013, 2015 Apple Inc. All Rights Reserved.
     2 * Copyright (C) 2013, 2015, 2016 Apple Inc. All Rights Reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    4949class JS_EXPORT_PRIVATE RemoteInspector final : public RemoteInspectorXPCConnection::Client {
    5050public:
     51    class Client {
     52    public:
     53        virtual ~Client() { }
     54        virtual bool remoteAutomationAllowed() const = 0;
     55        virtual void requestAutomationSession() = 0;
     56    };
     57
    5158    static void startDisabled();
    5259    static RemoteInspector& singleton();
     
    5966
    6067    void updateAutomaticInspectionCandidate(RemoteInspectionTarget*);
     68    void setRemoteInspectorClient(RemoteInspector::Client*);
    6169
    6270    void setupFailed(unsigned identifier);
    6371    void setupCompleted(unsigned identifier);
    6472    bool waitingForAutomaticInspection(unsigned identifier);
     73    void clientCapabilitiesDidChange() { pushListingsSoon(); }
    6574
    6675    bool enabled() const { return m_enabled; }
     
    124133    RefPtr<RemoteInspectorXPCConnection> m_xpcConnection;
    125134
     135    RemoteInspector::Client* m_client { nullptr };
     136
    126137    dispatch_queue_t m_xpcQueue;
    127138    unsigned m_nextAvailableIdentifier { 1 };
  • trunk/Source/JavaScriptCore/inspector/remote/RemoteInspector.mm

    r193783 r194646  
    11/*
    2  * Copyright (C) 2013-2015 Apple Inc. All Rights Reserved.
     2 * Copyright (C) 2013-2016 Apple Inc. All Rights Reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    239239}
    240240
     241void RemoteInspector::setRemoteInspectorClient(RemoteInspector::Client* client)
     242{
     243    ASSERT_ARG(client, client);
     244    ASSERT(!m_client);
     245
     246    std::lock_guard<Lock> lock(m_mutex);
     247    m_client = client;
     248
     249    // Send an updated listing that includes whether the client allows remote automation.
     250    pushListingsSoon();
     251}
     252
    241253void RemoteInspector::sendAutomaticInspectionCandidateMessage()
    242254{
     
    545557    [message setObject:listings.get() forKey:WIRListingKey];
    546558
     559    BOOL isAllowed = m_client && m_client->remoteAutomationAllowed();
     560    [message setObject:@(isAllowed) forKey:WIRRemoteAutomationEnabledKey];
     561
    547562    m_xpcConnection->sendMessage(WIRListingMessage, message.get());
    548563}
  • trunk/Source/JavaScriptCore/inspector/remote/RemoteInspectorConstants.h

    r192753 r194646  
    11/*
    2  * Copyright (C) 2011 Apple Inc. All Rights Reserved.
     2 * Copyright (C) 2011, 2016 Apple Inc. All Rights Reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    6868#define WIRListingMessage                       @"WIRListingMessage"
    6969#define WIRListingKey                           @"WIRListingKey"
     70#define WIRRemoteAutomationEnabledKey           @"WIRRemoteAutomationEnabledKey"
    7071#define WIRDestinationKey                       @"WIRDestinationKey"
    7172#define WIRConnectionDiedMessage                @"WIRConnectionDiedMessage"
  • trunk/Source/WebKit2/ChangeLog

    r194637 r194646  
     12016-01-06  Brian Burg  <bburg@apple.com>
     2
     3        Add a WebKit SPI for registering an automation controller with RemoteInspector
     4        https://bugs.webkit.org/show_bug.cgi?id=151576
     5
     6        Reviewed by Dan Bernstein and Joseph Pecoraro.
     7
     8        _WKAutomationDelegate is a new SPI that allows WKProcessPool clients to decide
     9        policy and implement actions for remote automation.
     10
     11        The SPI's implementation connects the client's delegate to RemoteInspector::Client.
     12        This allows the delegate to handle some commands, such as requestAutomationSession,
     13        that come over XPC from an external test runner but are not associated with a specific
     14        automation target.
     15
     16        * PlatformMac.cmake:
     17        * UIProcess/API/APIAutomationClient.h: Added. Boilerplate for WebKit::AutomationClient.
     18        (API::AutomationClient::~AutomationClient):
     19        (API::AutomationClient::allowsRemoteAutomation):
     20        (API::AutomationClient::requestAutomationSession):
     21        * UIProcess/API/Cocoa/WKProcessPool.mm:
     22        (-[WKProcessPool _automationDelegate]): Added.
     23        (-[WKProcessPool _setAutomationDelegate:]): Added.
     24        (-[WKProcessPool _automationCapabilitiesDidChange]): Added.
     25        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: Add delegate.
     26        * UIProcess/API/Cocoa/_WKAutomationDelegate.h: Added.
     27
     28            This is a new delegate SPI of WKProcessPool; it corresponds to AutomationClient.
     29
     30        * UIProcess/Cocoa/AutomationClient.h: Added.
     31        * UIProcess/Cocoa/AutomationClient.mm: Added.
     32
     33            This implements a bridge between RemoteInspector::Client and _WKAutomationDelegate.
     34            Since the delegate can be called from JavaScriptCore, save the delegating
     35            WKProcessPool and pass it as the self parameter to delegate methods.
     36
     37        (WebKit::AutomationClient::AutomationClient):
     38        (WebKit::AutomationClient::~AutomationClient):
     39
     40            This client automatically registers and unregisters as a RemoteInspector::Client.
     41
     42        (WebKit::AutomationClient::remoteAutomationAllowed):
     43        (WebKit::AutomationClient::requestAutomationSession):
     44
     45            Forward requests from RemoteInspector to the automation delegate.
     46
     47        * UIProcess/WebProcessPool.cpp:
     48        (WebKit::WebProcessPool::WebProcessPool):
     49        (WebKit::WebProcessPool::setAutomationClient): Added.
     50        (WebKit::WebProcessPool::updateAutomationCapabilities): Added, it notifies RemoteInspector.
     51        * UIProcess/WebProcessPool.h:
     52        * WebKit2.xcodeproj/project.pbxproj:
     53
    1542016-01-06  Gyuyoung Kim  <gyuyoung.kim@webkit.org>
    255
  • trunk/Source/WebKit2/PlatformMac.cmake

    r194272 r194646  
    190190    UIProcess/API/mac/WKView.mm
    191191
     192    UIProcess/Cocoa/AutomationClient.mm
    192193    UIProcess/Cocoa/DiagnosticLoggingClient.mm
    193194    UIProcess/Cocoa/DownloadClient.mm
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm

    r192808 r194646  
    11/*
    2  * Copyright (C) 2014 Apple Inc. All rights reserved.
     2 * Copyright (C) 2014, 2016 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2929#if WK_API_ENABLED
    3030
     31#import "AutomationClient.h"
    3132#import "CacheModel.h"
    3233#import "DownloadClient.h"
     
    3839#import "WebProcessMessages.h"
    3940#import "WebProcessPool.h"
     41#import "_WKAutomationDelegate.h"
    4042#import "_WKDownloadDelegate.h"
    4143#import "_WKProcessPoolConfigurationInternal.h"
     
    5052
    5153@implementation WKProcessPool {
     54    WebKit::WeakObjCPtr<id <_WKAutomationDelegate>> _automationDelegate;
    5255    WebKit::WeakObjCPtr<id <_WKDownloadDelegate>> _downloadDelegate;
    5356
     
    220223}
    221224
     225- (id <_WKAutomationDelegate>)_automationDelegate
     226{
     227    return _automationDelegate.getAutoreleased();
     228}
     229
     230- (void)_setAutomationDelegate:(id <_WKAutomationDelegate>)automationDelegate
     231{
     232    _automationDelegate = automationDelegate;
     233    _processPool->setAutomationClient(std::make_unique<WebKit::AutomationClient>(self, automationDelegate));
     234}
     235
    222236- (void)_warmInitialProcess
    223237{
     
    225239}
    226240
     241- (void)_automationCapabilitiesDidChange
     242{
     243    _processPool->updateAutomationCapabilities();
     244}
     245
    227246@end
    228247
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h

    r192015 r194646  
    2929
    3030@class _WKProcessPoolConfiguration;
     31@protocol _WKAutomationDelegate;
    3132@protocol _WKDownloadDelegate;
    3233
     
    4950
    5051@property (nonatomic, weak, setter=_setDownloadDelegate:) id <_WKDownloadDelegate> _downloadDelegate;
     52@property (nonatomic, weak, setter=_setAutomationDelegate:) id <_WKAutomationDelegate> _automationDelegate WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
    5153
    5254+ (NSURL *)_websiteDataURLForContainerWithURL:(NSURL *)containerURL;
     
    5456
    5557- (void)_warmInitialProcess WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
     58- (void)_automationCapabilitiesDidChange WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
    5659
    5760@end
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp

    r194496 r194646  
    2828
    2929#include "APIArray.h"
     30#include "APIAutomationClient.h"
    3031#include "APIDownloadClient.h"
    3132#include "APILegacyContextHistoryClient.h"
     
    139140    , m_processWithPageCache(0)
    140141    , m_defaultPageGroup(WebPageGroup::createNonNull())
     142    , m_automationClient(std::make_unique<API::AutomationClient>())
    141143    , m_downloadClient(std::make_unique<API::DownloadClient>())
    142144    , m_historyClient(std::make_unique<API::LegacyContextHistoryClient>())
     
    278280}
    279281
     282void WebProcessPool::setAutomationClient(std::unique_ptr<API::AutomationClient> automationClient)
     283{
     284    if (!automationClient)
     285        m_automationClient = std::make_unique<API::AutomationClient>();
     286    else
     287        m_automationClient = WTFMove(automationClient);
     288}
     289
    280290void WebProcessPool::setMaximumNumberOfProcesses(unsigned maximumNumberOfProcesses)
    281291{
     
    10661076}
    10671077
     1078void WebProcessPool::updateAutomationCapabilities() const
     1079{
     1080#if ENABLE(REMOTE_INSPECTOR)
     1081    Inspector::RemoteInspector::singleton().clientCapabilitiesDidChange();
     1082#endif
     1083}
     1084
    10681085void WebProcessPool::setHTTPPipeliningEnabled(bool enabled)
    10691086{
  • trunk/Source/WebKit2/UIProcess/WebProcessPool.h

    r194211 r194646  
    7171
    7272namespace API {
     73class AutomationClient;
    7374class DownloadClient;
    7475class LegacyContextHistoryClient;
     
    135136    void setHistoryClient(std::unique_ptr<API::LegacyContextHistoryClient>);
    136137    void setDownloadClient(std::unique_ptr<API::DownloadClient>);
     138    void setAutomationClient(std::unique_ptr<API::AutomationClient>);
    137139
    138140    void setMaximumNumberOfProcesses(unsigned); // Can only be called when there are no processes running.
     
    250252    void enableProcessTermination();
    251253
     254    void updateAutomationCapabilities() const;
     255
    252256    // Defaults to false.
    253257    void setHTTPPipeliningEnabled(bool);
     
    417421    WebContextClient m_client;
    418422    WebContextConnectionClient m_connectionClient;
     423    std::unique_ptr<API::AutomationClient> m_automationClient;
    419424    std::unique_ptr<API::DownloadClient> m_downloadClient;
    420425    std::unique_ptr<API::LegacyContextHistoryClient> m_historyClient;
  • trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj

    r194318 r194646  
    12481248                93BDEB01171DD7AF00BFEE1B /* WKPageLoadTypesPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 93BDEB00171DD7AF00BFEE1B /* WKPageLoadTypesPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    12491249                93E6A4EE1BC5DD3900F8A0E7 /* _WKHitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E6A4ED1BC5DD3900F8A0E7 /* _WKHitTestResult.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1250                99C81D591C20E1E5005C4C82 /* AutomationClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 99C81D561C20DFBE005C4C82 /* AutomationClient.mm */; };
     1251                99C81D5A1C20E7E2005C4C82 /* AutomationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 99C81D551C20DFBE005C4C82 /* AutomationClient.h */; };
     1252                99C81D5D1C21F38B005C4C82 /* APIAutomationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 99C81D5B1C20E817005C4C82 /* APIAutomationClient.h */; };
     1253                99E714C51C124A0400665B3A /* _WKAutomationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 99E714C11C1249E600665B3A /* _WKAutomationDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    12501254                9F54F88F16488E87007DF81A /* ChildProcessMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9F54F88E16488E87007DF81A /* ChildProcessMac.mm */; };
    12511255                9F54F8951648AE0F007DF81A /* PluginProcessManagerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9F54F8941648AE0E007DF81A /* PluginProcessManagerMac.mm */; };
     
    34433447                93BDEB00171DD7AF00BFEE1B /* WKPageLoadTypesPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageLoadTypesPrivate.h; sourceTree = "<group>"; };
    34443448                93E6A4ED1BC5DD3900F8A0E7 /* _WKHitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKHitTestResult.h; sourceTree = "<group>"; };
     3449                99C81D551C20DFBE005C4C82 /* AutomationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutomationClient.h; sourceTree = "<group>"; };
     3450                99C81D561C20DFBE005C4C82 /* AutomationClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AutomationClient.mm; sourceTree = "<group>"; };
     3451                99C81D5B1C20E817005C4C82 /* APIAutomationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIAutomationClient.h; sourceTree = "<group>"; };
     3452                99E714C11C1249E600665B3A /* _WKAutomationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKAutomationDelegate.h; sourceTree = "<group>"; };
    34453453                9F54F88E16488E87007DF81A /* ChildProcessMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ChildProcessMac.mm; sourceTree = "<group>"; };
    34463454                9F54F8941648AE0E007DF81A /* PluginProcessManagerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PluginProcessManagerMac.mm; sourceTree = "<group>"; };
     
    49074915                        children = (
    49084916                                517DD5BB180DA7C40081660B /* Databases */,
     4917                                99C81D551C20DFBE005C4C82 /* AutomationClient.h */,
     4918                                99C81D561C20DFBE005C4C82 /* AutomationClient.mm */,
    49094919                                83891B6A1A68C30B0030F386 /* DiagnosticLoggingClient.h */,
    49104920                                83891B6B1A68C30B0030F386 /* DiagnosticLoggingClient.mm */,
     
    52775287                                37A5E01118BBF937000A081E /* _WKActivatedElementInfo.mm */,
    52785288                                379A873518BBFA4300588AF2 /* _WKActivatedElementInfoInternal.h */,
     5289                                99E714C11C1249E600665B3A /* _WKAutomationDelegate.h */,
    52795290                                1A5704F61BE01FF400874AF1 /* _WKContextMenuElementInfo.h */,
    52805291                                1A5704F51BE01FF400874AF1 /* _WKContextMenuElementInfo.mm */,
     
    62686279                                BC8A501311765F4500757573 /* cpp */,
    62696280                                BC111B47112F616900337BAB /* mac */,
     6281                                99C81D5B1C20E817005C4C82 /* APIAutomationClient.h */,
    62706282                                076E884D1A13CADF005E90FC /* APIContextMenuClient.h */,
    62716283                                83891B621A68B3420030F386 /* APIDiagnosticLoggingClient.h */,
     
    77957807                                834B250F1A831A8D00CFB150 /* NetworkCacheFileSystem.h in Headers */,
    77967808                                E42E06101AA7523B00B11699 /* NetworkCacheIOChannel.h in Headers */,
     7809                                99E714C51C124A0400665B3A /* _WKAutomationDelegate.h in Headers */,
    77977810                                E4436ECE1A0D040B00EAD204 /* NetworkCacheKey.h in Headers */,
    77987811                                831EEBBD1BD85C4300BB64C3 /* NetworkCacheSpeculativeLoad.h in Headers */,
     
    79167929                                1A002D49196B345D00B9AD44 /* SessionStateCoding.h in Headers */,
    79177930                                753E3E0E1887398900188496 /* SessionTracker.h in Headers */,
     7931                                99C81D5A1C20E7E2005C4C82 /* AutomationClient.h in Headers */,
    79187932                                1A6420E512DCE2FF00CAAE2C /* ShareableBitmap.h in Headers */,
    79197933                                51217461164C20E30037A5C1 /* ShareableResource.h in Headers */,
     
    83488362                                7C8EB11718DB6A19007917C2 /* WKPreferencesPrivate.h in Headers */,
    83498363                                BCD597D0112B56AC00EC8C23 /* WKPreferencesRef.h in Headers */,
     8364                                99C81D5D1C21F38B005C4C82 /* APIAutomationClient.h in Headers */,
    83508365                                762B748D120BC75C00819339 /* WKPreferencesRefPrivate.h in Headers */,
    83518366                                0FCB4E6618BBE3D9000FCFC9 /* WKPrintingView.h in Headers */,
     
    1006710082                                0FCB4E5518BBE044000FCFC9 /* WKScrollView.mm in Sources */,
    1006810083                                51CD1C661B34B9DC00142CA5 /* WKSecurityOrigin.mm in Sources */,
     10084                                99C81D591C20E1E5005C4C82 /* AutomationClient.mm in Sources */,
    1006910085                                51CD1C5D1B3493AF00142CA5 /* WKSecurityOriginRef.cpp in Sources */,
    1007010086                                BC407603124FF0270068F20A /* WKSerializedScriptValue.cpp in Sources */,
Note: See TracChangeset for help on using the changeset viewer.