Diff
Modified: trunk/Source/WebKit2/ChangeLog (196487 => 196488)
--- trunk/Source/WebKit2/ChangeLog 2016-02-12 19:18:01 UTC (rev 196487)
+++ trunk/Source/WebKit2/ChangeLog 2016-02-12 19:28:29 UTC (rev 196488)
@@ -1,3 +1,83 @@
+2016-02-12 Brian Burg <[email protected]>
+
+ Add a WebKit SPI for creating an automation session and advertise the active session via RemoteInspector
+ https://bugs.webkit.org/show_bug.cgi?id=153934
+
+ Reviewed by Dan Bernstein and Joseph Pecoraro.
+
+ An automation session is the main place where WebKit support for user agent automation is implemented.
+ A session encapsulates the state (default timeouts, page identifier mappings), objects (active automation
+ WebPages) and logic (how to open a window, run JS, send user input, etc.) used to implement automation
+ commands.
+
+ A process pool can only have one session at a time. The session is created by the WebKit client in
+ response to a request that comes through _WKAutomationDelegate. When a session is set on the process pool,
+ it is advertised to remote drivers and debuggers as a RemoteControllableTarget. A remote driver can use
+ the existing RemoteInspector API to connect to the session and send it automation commands.
+
+ The session has a delegate so that WebKit clients can perform actions that are outside the scope of WebKit,
+ such as creating new tabs, enumerating windows, or sending native user inputs.
+
+ This patch adds AutomationSession classes at the API and implementation level in WebKit2. The
+ implementation class contains RemoteInspector support, which cannot be used directly by WebKit clients.
+ AutomationSessionDelegate classes exist at both the API and implementation level to bridge between
+ Objective-C delegates and C++ clients. All code related to RemoteInspector and RemoteAutomationTarget
+ must be guarded by ENABLE(REMOTE_INSPECTOR).
+
+ * Shared/API/APIObject.h: Add new API type 'AutomationSession'.
+ * Shared/Cocoa/APIObject.mm:
+ (API::Object::newObject): Allocate in the wrapper.
+ * UIProcess/API/APIAutomationSessionClient.h: Added.
+ (API::AutomationSessionClient::~AutomationSessionClient):
+ (API::AutomationSessionClient::didRequestNewWindow): Delegate window creation to the client.
+ * UIProcess/API/Cocoa/WKProcessPool.mm:
+ (-[WKProcessPool _setAutomationSession:]): Keep at most one WebAutomationSession at a time.
+ * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
+ * UIProcess/API/Cocoa/_WKAutomationSession.h: Added.
+ * UIProcess/API/Cocoa/_WKAutomationSession.mm: Added.
+ (-[_WKAutomationSession init]): Construct the API object in the implementation wrapper.
+ (-[_WKAutomationSession dealloc]): Clear the client before calling the implementation destructor.
+
+ (-[_WKAutomationSession sessionIdentifier]):
+ (-[_WKAutomationSession setSessionIdentifier:]):
+ Store the session identifier string in the implementation.
+
+ (-[_WKAutomationSession delegate]):
+ (-[_WKAutomationSession setDelegate:]):
+ Create an Objective-C adapter for the delegate if not nil and set it as the implementation's client.
+
+ (-[_WKAutomationSession _apiObject]):
+ * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h: Added.
+ * UIProcess/API/Cocoa/_WKAutomationSessionInternal.h: Added.
+ (wrapper):
+ * UIProcess/Cocoa/AutomationSessionClient.h: Added.
+ Set up the boilerplate for caching delegate method availability. It will include more methods later.
+
+ * UIProcess/Cocoa/AutomationSessionClient.mm: Added. Forward requests to the SPI delegate.
+ (WebKit::AutomationSessionClient::AutomationSessionClient):
+ (WebKit::AutomationSessionClient::didRequestNewWindow): Delegate window creation to the client.
+
+ * UIProcess/WebAutomationSession.cpp: Added.
+ (WebKit::WebAutomationSession::WebAutomationSession):
+ By default, a session should be available and not paired to any particular remote driver.
+
+ (WebKit::WebAutomationSession::~WebAutomationSession): Require callers to clear the client first.
+ (WebKit::WebAutomationSession::setClient):
+ (WebKit::WebAutomationSession::dispatchMessageFromRemote): Stub this out for now.
+
+ (WebKit::WebAutomationSession::connect):
+ (WebKit::WebAutomationSession::disconnect):
+ To prevent multiple connection attempts, mark the target as paired when a remote client has connected.
+
+ * UIProcess/WebAutomationSession.h: Added.
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::setAutomationSession):
+ Store the session object and tell it to register itself. Unregistering happens automatically
+ in RemoteControllableTarget::~RemoteControllableTarget.
+
+ * UIProcess/WebProcessPool.h:
+ * WebKit2.xcodeproj/project.pbxproj: Add files and headers.
+
2016-02-12 Anders Carlsson <[email protected]>
Get rid of NetscapePluginModule::createPluginMIMETypesPreferences
Modified: trunk/Source/WebKit2/Shared/API/APIObject.h (196487 => 196488)
--- trunk/Source/WebKit2/Shared/API/APIObject.h 2016-02-12 19:18:01 UTC (rev 196487)
+++ trunk/Source/WebKit2/Shared/API/APIObject.h 2016-02-12 19:28:29 UTC (rev 196488)
@@ -98,6 +98,7 @@
// UIProcess types
ApplicationCacheManager,
+ AutomationSession,
BackForwardList,
BackForwardListItem,
BatteryManager,
Modified: trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm (196487 => 196488)
--- trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm 2016-02-12 19:18:01 UTC (rev 196487)
+++ trunk/Source/WebKit2/Shared/Cocoa/APIObject.mm 2016-02-12 19:28:29 UTC (rev 196488)
@@ -61,6 +61,7 @@
#import "WKWebsiteDataRecordInternal.h"
#import "WKWebsiteDataStoreInternal.h"
#import "WKWindowFeaturesInternal.h"
+#import "_WKAutomationSessionInternal.h"
#import "_WKDownloadInternal.h"
#import "_WKFrameHandleInternal.h"
#import "_WKHitTestResultInternal.h"
@@ -99,6 +100,10 @@
wrapper = NSAllocateObject([WKNSURLAuthenticationChallenge self], size, nullptr);
break;
+ case Type::AutomationSession:
+ wrapper = [_WKAutomationSession alloc];
+ break;
+
case Type::BackForwardList:
wrapper = [WKBackForwardList alloc];
break;
Added: trunk/Source/WebKit2/UIProcess/API/APIAutomationSessionClient.h (0 => 196488)
--- trunk/Source/WebKit2/UIProcess/API/APIAutomationSessionClient.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/APIAutomationSessionClient.h 2016-02-12 19:28:29 UTC (rev 196488)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef APIAutomationSessionClient_h
+#define APIAutomationSessionClient_h
+
+#include <wtf/text/WTFString.h>
+
+namespace WebKit {
+class WebAutomationSession;
+class WebProcessPool;
+}
+
+namespace API {
+
+class AutomationSessionClient {
+public:
+ virtual ~AutomationSessionClient() { }
+
+ virtual String sessionIdentifier() const { return String(); }
+ virtual void didRequestNewWindow(WebKit::WebProcessPool*, WebKit::WebAutomationSession*) { }
+};
+
+} // namespace API
+
+#endif // APIAutomationSessionClient_h
Property changes on: trunk/Source/WebKit2/UIProcess/API/APIAutomationSessionClient.h
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm (196487 => 196488)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm 2016-02-12 19:18:01 UTC (rev 196487)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPool.mm 2016-02-12 19:28:29 UTC (rev 196488)
@@ -39,6 +39,7 @@
#import "WebProcessMessages.h"
#import "WebProcessPool.h"
#import "_WKAutomationDelegate.h"
+#import "_WKAutomationSessionInternal.h"
#import "_WKDownloadDelegate.h"
#import "_WKProcessPoolConfigurationInternal.h"
#import <WebCore/CFNetworkSPI.h>
@@ -54,6 +55,7 @@
WebKit::WeakObjCPtr<id <_WKAutomationDelegate>> _automationDelegate;
WebKit::WeakObjCPtr<id <_WKDownloadDelegate>> _downloadDelegate;
+ RetainPtr<_WKAutomationSession> _automationSession;
#if PLATFORM(IOS)
RetainPtr<WKGeolocationProviderIOS> _geolocationProvider;
#endif // PLATFORM(IOS)
@@ -243,6 +245,12 @@
_processPool->updateAutomationCapabilities();
}
+- (void)_setAutomationSession:(_WKAutomationSession *)automationSession
+{
+ _automationSession = automationSession;
+ _processPool->setAutomationSession(automationSession ? automationSession->_session.get() : nullptr);
+}
+
@end
#endif // WK_API_ENABLED
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h (196487 => 196488)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2016-02-12 19:18:01 UTC (rev 196487)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h 2016-02-12 19:28:29 UTC (rev 196488)
@@ -27,6 +27,7 @@
#if WK_API_ENABLED
+@class _WKAutomationSession;
@class _WKProcessPoolConfiguration;
@protocol _WKAutomationDelegate;
@protocol _WKDownloadDelegate;
@@ -56,6 +57,7 @@
- (void)_warmInitialProcess WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
- (void)_automationCapabilitiesDidChange WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+- (void)_setAutomationSession:(_WKAutomationSession *)automationSession WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
@end
Added: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.h (0 => 196488)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.h 2016-02-12 19:28:29 UTC (rev 196488)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <WebKit/WKFoundation.h>
+
+#if WK_API_ENABLED
+
+#import <Foundation/Foundation.h>
+
+@protocol _WKAutomationSessionDelegate;
+
+NS_ASSUME_NONNULL_BEGIN
+
+WK_CLASS_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA)
+@interface _WKAutomationSession : NSObject
+
+@property (nonatomic, copy) NSString *sessionIdentifier;
+@property (nonatomic, weak) id <_WKAutomationSessionDelegate> delegate;
+
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // WK_API_ENABLED
Property changes on: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.h
___________________________________________________________________
Added: svn:eol-style
Added: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.mm (0 => 196488)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.mm (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.mm 2016-02-12 19:28:29 UTC (rev 196488)
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import "_WKAutomationSessionInternal.h"
+
+#if WK_API_ENABLED
+
+#import "AutomationSessionClient.h"
+#import "WKAPICast.h"
+#import "WKProcessPool.h"
+#import "WeakObjCPtr.h"
+#import "WebAutomationSession.h"
+#import "_WKAutomationSessionDelegate.h"
+
+@implementation _WKAutomationSession {
+ WebKit::WeakObjCPtr<id <_WKAutomationSessionDelegate>> _delegate;
+}
+
+- (instancetype)init
+{
+ if (!(self = [super init]))
+ return nil;
+
+ API::Object::constructInWrapper<WebKit::WebAutomationSession>(self);
+
+ return self;
+}
+
+- (void)dealloc
+{
+ _session->setClient(nullptr);
+ _session->~WebAutomationSession();
+
+ [super dealloc];
+}
+
+- (id <_WKAutomationSessionDelegate>)delegate
+{
+ return _delegate.getAutoreleased();
+}
+
+- (void)setDelegate:(id <_WKAutomationSessionDelegate>)delegate
+{
+ _delegate = delegate;
+ _session->setClient(delegate ? std::make_unique<WebKit::AutomationSessionClient>(delegate) : nullptr);
+}
+
+- (NSString *)sessionIdentifier
+{
+ return _session->sessionIdentifier();
+}
+
+- (void)setSessionIdentifier:(NSString *)sessionIdentifier
+{
+ _session->setSessionIdentifier(sessionIdentifier);
+}
+
+#pragma mark WKObject protocol implementation
+
+- (API::Object&)_apiObject
+{
+ return *_session;
+}
+
+@end
+
+#endif // WK_API_ENABLED
Property changes on: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.mm
___________________________________________________________________
Added: svn:eol-style
Added: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h (0 => 196488)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h 2016-02-12 19:28:29 UTC (rev 196488)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <WebKit/WKFoundation.h>
+
+#if WK_API_ENABLED
+
+#import <Foundation/Foundation.h>
+
+@class _WKAutomationSession;
+
+@protocol _WKAutomationSessionDelegate <NSObject>
+@optional
+- (void)_automationSessionDidRequestNewWindow:(_WKAutomationSession *)automationSession;
+@end
+
+#endif // WK_API_ENABLED
Property changes on: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h
___________________________________________________________________
Added: svn:eol-style
Added: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionInternal.h (0 => 196488)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionInternal.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionInternal.h 2016-02-12 19:28:29 UTC (rev 196488)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "_WKAutomationSession.h"
+
+#if WK_API_ENABLED
+
+#import "WKObject.h"
+#import "WebAutomationSession.h"
+
+inline _WKAutomationSession *wrapper(WebKit::WebAutomationSession& session)
+{
+ ASSERT([session.wrapper() isKindOfClass:[_WKAutomationSession class]]);
+ return (_WKAutomationSession *)session.wrapper();
+}
+
+@interface _WKAutomationSession () <WKObject> {
+@package
+ API::ObjectStorage<WebKit::WebAutomationSession> _session;
+}
+@end
+
+#endif // WK_API_ENABLED
Property changes on: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionInternal.h
___________________________________________________________________
Added: svn:eol-style
Added: trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.h (0 => 196488)
--- trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.h 2016-02-12 19:28:29 UTC (rev 196488)
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AutomationSessionClient_h
+#define AutomationSessionClient_h
+
+#import "WKFoundation.h"
+
+#if WK_API_ENABLED
+
+#import "APIAutomationSessionClient.h"
+#import "WeakObjCPtr.h"
+
+@protocol _WKAutomationSessionDelegate;
+
+namespace WebKit {
+
+class AutomationSessionClient final : public API::AutomationSessionClient {
+public:
+ explicit AutomationSessionClient(id <_WKAutomationSessionDelegate>);
+
+private:
+ // From API::AutomationSessionClient
+ virtual void didRequestNewWindow(WebKit::WebProcessPool*, WebKit::WebAutomationSession*) override;
+
+ WeakObjCPtr<id <_WKAutomationSessionDelegate>> m_delegate;
+
+ struct {
+ bool didRequestNewWindow : 1;
+ } m_delegateMethods;
+};
+
+} // namespace WebKit
+
+#endif
+
+#endif // AutomationSessionClient_h
Property changes on: trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.h
___________________________________________________________________
Added: svn:eol-style
Added: trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.mm (0 => 196488)
--- trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.mm (rev 0)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.mm 2016-02-12 19:28:29 UTC (rev 196488)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import "AutomationSessionClient.h"
+
+#if WK_API_ENABLED
+
+#import "WebAutomationSession.h"
+#import "_WKAutomationSessionDelegate.h"
+#import "_WKAutomationSessionInternal.h"
+
+namespace WebKit {
+
+AutomationSessionClient::AutomationSessionClient(id <_WKAutomationSessionDelegate> delegate)
+ : m_delegate(delegate)
+{
+ m_delegateMethods.didRequestNewWindow = [delegate respondsToSelector:@selector(_automationSessionDidRequestNewWindow:)];
+}
+
+void AutomationSessionClient::didRequestNewWindow(WebProcessPool*, WebAutomationSession* session)
+{
+ if (m_delegateMethods.didRequestNewWindow)
+ [m_delegate.get() _automationSessionDidRequestNewWindow:wrapper(*session)];
+}
+
+} // namespace WebKit
+
+#endif // WK_API_ENABLED
Property changes on: trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.mm
___________________________________________________________________
Added: svn:eol-style
Added: trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp (0 => 196488)
--- trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp (rev 0)
+++ trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp 2016-02-12 19:28:29 UTC (rev 196488)
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WebAutomationSession.h"
+
+#include "APIAutomationSessionClient.h"
+
+namespace WebKit {
+
+WebAutomationSession::WebAutomationSession()
+ : m_client(std::make_unique<API::AutomationSessionClient>())
+{
+}
+
+WebAutomationSession::~WebAutomationSession()
+{
+ ASSERT(!m_client);
+}
+
+void WebAutomationSession::setClient(std::unique_ptr<API::AutomationSessionClient> client)
+{
+ m_client = WTFMove(client);
+}
+
+// NOTE: this class could be split at some point to support local and remote automation sessions.
+// For now, it only works with a remote automation driver over a RemoteInspector connection.
+
+#if ENABLE(REMOTE_INSPECTOR)
+
+// Inspector::RemoteAutomationTarget API
+
+void WebAutomationSession::dispatchMessageFromRemote(const String&)
+{
+ // FIXME: to be implemented.
+}
+
+void WebAutomationSession::connect(Inspector::FrontendChannel* channel, bool isAutomaticConnection)
+{
+ UNUSED_PARAM(isAutomaticConnection);
+
+ m_remoteChannel = channel;
+ setIsPaired(true);
+}
+
+void WebAutomationSession::disconnect(Inspector::FrontendChannel* channel)
+{
+ m_remoteChannel = nullptr;
+ setIsPaired(false);
+}
+
+#endif // ENABLE(REMOTE_INSPECTOR)
+
+} // namespace WebKit
Property changes on: trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp
___________________________________________________________________
Added: svn:eol-style
Added: trunk/Source/WebKit2/UIProcess/WebAutomationSession.h (0 => 196488)
--- trunk/Source/WebKit2/UIProcess/WebAutomationSession.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/WebAutomationSession.h 2016-02-12 19:28:29 UTC (rev 196488)
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebAutomationSession_h
+#define WebAutomationSession_h
+
+#include "APIObject.h"
+#include <wtf/Forward.h>
+
+#if ENABLE(REMOTE_INSPECTOR)
+#include <_javascript_Core/RemoteAutomationTarget.h>
+#endif
+
+namespace API {
+class AutomationSessionClient;
+}
+
+namespace WebKit {
+
+class WebAutomationSessionClient;
+
+class WebAutomationSession final : public API::ObjectImpl<API::Object::Type::AutomationSession>
+#if ENABLE(REMOTE_INSPECTOR)
+ , public Inspector::RemoteAutomationTarget
+#endif
+{
+public:
+ WebAutomationSession();
+ ~WebAutomationSession();
+
+ void setClient(std::unique_ptr<API::AutomationSessionClient>);
+
+ void setSessionIdentifier(const String& sessionIdentifier) { m_sessionIdentifier = sessionIdentifier; }
+ String sessionIdentifier() const { return m_sessionIdentifier; }
+
+#if ENABLE(REMOTE_INSPECTOR)
+ // Inspector::RemoteAutomationTarget API
+ virtual String name() const override { return m_sessionIdentifier; }
+ virtual void dispatchMessageFromRemote(const String& message) override;
+ virtual void connect(Inspector::FrontendChannel*, bool isAutomaticConnection = false) override;
+ virtual void disconnect(Inspector::FrontendChannel*) override;
+#endif
+
+private:
+ std::unique_ptr<API::AutomationSessionClient> m_client;
+ String m_sessionIdentifier { ASCIILiteral("Untitled Session") };
+
+#if ENABLE(REMOTE_INSPECTOR)
+ Inspector::FrontendChannel* m_remoteChannel { nullptr };
+#endif
+};
+
+} // namespace WebKit
+
+#endif // WebAutomationSession_h
Property changes on: trunk/Source/WebKit2/UIProcess/WebAutomationSession.h
___________________________________________________________________
Added: svn:eol-style
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (196487 => 196488)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2016-02-12 19:18:01 UTC (rev 196487)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2016-02-12 19:28:29 UTC (rev 196488)
@@ -43,6 +43,7 @@
#include "StatisticsData.h"
#include "TextChecker.h"
#include "WKContextPrivate.h"
+#include "WebAutomationSession.h"
#include "WebCertificateInfo.h"
#include "WebContextSupplement.h"
#include "WebCookieManagerProxy.h"
@@ -1091,6 +1092,16 @@
#endif
}
+void WebProcessPool::setAutomationSession(RefPtr<WebAutomationSession>&& automationSession)
+{
+ m_automationSession = WTFMove(automationSession);
+
+#if ENABLE(REMOTE_INSPECTOR)
+ if (m_automationSession)
+ m_automationSession->init();
+#endif
+}
+
void WebProcessPool::setHTTPPipeliningEnabled(bool enabled)
{
#if PLATFORM(COCOA)
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (196487 => 196488)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2016-02-12 19:18:01 UTC (rev 196487)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2016-02-12 19:28:29 UTC (rev 196488)
@@ -79,6 +79,7 @@
namespace WebKit {
class DownloadProxy;
+class WebAutomationSession;
class WebContextSupplement;
class WebIconDatabase;
class WebPageGroup;
@@ -254,6 +255,7 @@
void enableProcessTermination();
void updateAutomationCapabilities() const;
+ void setAutomationSession(RefPtr<WebAutomationSession>&&);
// Defaults to false.
void setHTTPPipeliningEnabled(bool);
@@ -426,6 +428,8 @@
std::unique_ptr<API::DownloadClient> m_downloadClient;
std::unique_ptr<API::LegacyContextHistoryClient> m_historyClient;
+ RefPtr<WebAutomationSession> m_automationSession;
+
#if ENABLE(NETSCAPE_PLUGIN_API)
PluginInfoStore m_pluginInfoStore;
#endif
Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (196487 => 196488)
--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2016-02-12 19:18:01 UTC (rev 196487)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2016-02-12 19:28:29 UTC (rev 196488)
@@ -1233,6 +1233,15 @@
93A88B471BC8829700ABA5C2 /* APIHitTestResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93A88B421BC8828C00ABA5C2 /* APIHitTestResult.cpp */; };
93BDEB01171DD7AF00BFEE1B /* WKPageLoadTypesPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 93BDEB00171DD7AF00BFEE1B /* WKPageLoadTypesPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
93E6A4EE1BC5DD3900F8A0E7 /* _WKHitTestResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 93E6A4ED1BC5DD3900F8A0E7 /* _WKHitTestResult.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 990D28AB1C6420C600986977 /* _WKAutomationSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 990D28A71C6404B000986977 /* _WKAutomationSession.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 990D28AC1C6420CF00986977 /* _WKAutomationSessionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 990D28A81C6404B000986977 /* _WKAutomationSessionDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 990D28B11C65208D00986977 /* _WKAutomationSessionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 990D28AF1C65203900986977 /* _WKAutomationSessionInternal.h */; };
+ 990D28B21C65209400986977 /* _WKAutomationSession.mm in Sources */ = {isa = PBXBuildFile; fileRef = 990D28AD1C65190400986977 /* _WKAutomationSession.mm */; };
+ 990D28BB1C6539D300986977 /* AutomationSessionClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 990D28B71C6539A000986977 /* AutomationSessionClient.h */; };
+ 990D28BC1C6539DA00986977 /* AutomationSessionClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 990D28B81C6539A000986977 /* AutomationSessionClient.mm */; };
+ 990D28BF1C654D3900986977 /* WebAutomationSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 990D28BD1C65490A00986977 /* WebAutomationSession.cpp */; };
+ 990D28C01C6553F100986977 /* APIAutomationSessionClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 990D28B31C6526D400986977 /* APIAutomationSessionClient.h */; };
+ 990D28C11C65626500986977 /* WebAutomationSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 990D28B51C6526F500986977 /* WebAutomationSession.h */; };
99C81D591C20E1E5005C4C82 /* AutomationClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 99C81D561C20DFBE005C4C82 /* AutomationClient.mm */; };
99C81D5A1C20E7E2005C4C82 /* AutomationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 99C81D551C20DFBE005C4C82 /* AutomationClient.h */; };
99C81D5D1C21F38B005C4C82 /* APIAutomationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 99C81D5B1C20E817005C4C82 /* APIAutomationClient.h */; };
@@ -3265,6 +3274,15 @@
93A88B431BC8828C00ABA5C2 /* APIHitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIHitTestResult.h; sourceTree = "<group>"; };
93BDEB00171DD7AF00BFEE1B /* WKPageLoadTypesPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageLoadTypesPrivate.h; sourceTree = "<group>"; };
93E6A4ED1BC5DD3900F8A0E7 /* _WKHitTestResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKHitTestResult.h; sourceTree = "<group>"; };
+ 990D28A71C6404B000986977 /* _WKAutomationSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKAutomationSession.h; sourceTree = "<group>"; };
+ 990D28AD1C65190400986977 /* _WKAutomationSession.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = _WKAutomationSession.mm; sourceTree = "<group>"; };
+ 990D28A81C6404B000986977 /* _WKAutomationSessionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKAutomationSessionDelegate.h; sourceTree = "<group>"; };
+ 990D28AF1C65203900986977 /* _WKAutomationSessionInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKAutomationSessionInternal.h; sourceTree = "<group>"; };
+ 990D28B31C6526D400986977 /* APIAutomationSessionClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIAutomationSessionClient.h; sourceTree = "<group>"; };
+ 990D28B51C6526F500986977 /* WebAutomationSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAutomationSession.h; sourceTree = "<group>"; };
+ 990D28B71C6539A000986977 /* AutomationSessionClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutomationSessionClient.h; sourceTree = "<group>"; };
+ 990D28B81C6539A000986977 /* AutomationSessionClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AutomationSessionClient.mm; sourceTree = "<group>"; };
+ 990D28BD1C65490A00986977 /* WebAutomationSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebAutomationSession.cpp; sourceTree = "<group>"; };
99C81D551C20DFBE005C4C82 /* AutomationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutomationClient.h; sourceTree = "<group>"; };
99C81D561C20DFBE005C4C82 /* AutomationClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AutomationClient.mm; sourceTree = "<group>"; };
99C81D5B1C20E817005C4C82 /* APIAutomationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIAutomationClient.h; sourceTree = "<group>"; };
@@ -4623,6 +4641,8 @@
517DD5BB180DA7C40081660B /* Databases */,
99C81D551C20DFBE005C4C82 /* AutomationClient.h */,
99C81D561C20DFBE005C4C82 /* AutomationClient.mm */,
+ 990D28B71C6539A000986977 /* AutomationSessionClient.h */,
+ 990D28B81C6539A000986977 /* AutomationSessionClient.mm */,
83891B6A1A68C30B0030F386 /* DiagnosticLoggingClient.h */,
83891B6B1A68C30B0030F386 /* DiagnosticLoggingClient.mm */,
A1DF631118E0B7C8003A3E2A /* DownloadClient.h */,
@@ -4987,6 +5007,10 @@
37A5E01118BBF937000A081E /* _WKActivatedElementInfo.mm */,
379A873518BBFA4300588AF2 /* _WKActivatedElementInfoInternal.h */,
99E714C11C1249E600665B3A /* _WKAutomationDelegate.h */,
+ 990D28A71C6404B000986977 /* _WKAutomationSession.h */,
+ 990D28AD1C65190400986977 /* _WKAutomationSession.mm */,
+ 990D28A81C6404B000986977 /* _WKAutomationSessionDelegate.h */,
+ 990D28AF1C65203900986977 /* _WKAutomationSessionInternal.h */,
1A5704F61BE01FF400874AF1 /* _WKContextMenuElementInfo.h */,
1A5704F51BE01FF400874AF1 /* _WKContextMenuElementInfo.mm */,
83891B681A68BEBC0030F386 /* _WKDiagnosticLoggingDelegate.h */,
@@ -5872,6 +5896,8 @@
1A0F29E1120B44420053D1B9 /* VisitedLinkStore.cpp */,
1A0F29E2120B44420053D1B9 /* VisitedLinkStore.h */,
1A60224918C16B0800C3E8C9 /* VisitedLinkStore.messages.in */,
+ 990D28BD1C65490A00986977 /* WebAutomationSession.cpp */,
+ 990D28B51C6526F500986977 /* WebAutomationSession.h */,
BC72BA1B11E64907001EB4EA /* WebBackForwardList.cpp */,
BC72BA1C11E64907001EB4EA /* WebBackForwardList.h */,
F036978715F4BF0500C3A80E /* WebColorPicker.cpp */,
@@ -5970,6 +5996,7 @@
BC8A501311765F4500757573 /* cpp */,
BC111B47112F616900337BAB /* mac */,
99C81D5B1C20E817005C4C82 /* APIAutomationClient.h */,
+ 990D28B31C6526D400986977 /* APIAutomationSessionClient.h */,
076E884D1A13CADF005E90FC /* APIContextMenuClient.h */,
83891B621A68B3420030F386 /* APIDiagnosticLoggingClient.h */,
1F7D36C018DA513F00D9D659 /* APIDownloadClient.h */,
@@ -7181,6 +7208,7 @@
A1A4FE5C18DCE9FA00B5EA8A /* _WKDownloadInternal.h in Headers */,
379A873A18BBFE0F00588AF2 /* _WKElementAction.h in Headers */,
379A873C18BBFF0700588AF2 /* _WKElementActionInternal.h in Headers */,
+ 990D28BB1C6539D300986977 /* AutomationSessionClient.h in Headers */,
1A5704F21BE0174000874AF1 /* _WKElementInfo.h in Headers */,
1AD01BC91905D37E00C9C45F /* _WKErrorRecoveryAttempting.h in Headers */,
005D158F18E4C4EB00734619 /* _WKFindDelegate.h in Headers */,
@@ -7257,6 +7285,7 @@
1AC1336C18565C7A00F3EC05 /* APIPageHandle.h in Headers */,
1AFDD3151891B54000153970 /* APIPolicyClient.h in Headers */,
7CE4D2201A4914CA00C7F152 /* APIProcessPoolConfiguration.h in Headers */,
+ 990D28AC1C6420CF00986977 /* _WKAutomationSessionDelegate.h in Headers */,
F634445612A885C8000612D8 /* APISecurityOrigin.h in Headers */,
75A8D2E1187DEC1A00C39C9E /* APISession.h in Headers */,
1AFDE6621954E9B100C48FFA /* APISessionState.h in Headers */,
@@ -7373,6 +7402,7 @@
512935E41288D97800A4B695 /* InjectedBundlePageContextMenuClient.h in Headers */,
E1EE53E311F8CFC000CCBEE4 /* InjectedBundlePageEditorClient.h in Headers */,
BC14E10A120B905E00826C0C /* InjectedBundlePageFormClient.h in Headers */,
+ 990D28C11C65626500986977 /* WebAutomationSession.h in Headers */,
CD5C66A1134B9D38004FE2A8 /* InjectedBundlePageFullScreenClient.h in Headers */,
BCA8C6A911E3BA5F00812FB7 /* InjectedBundlePageLoaderClient.h in Headers */,
BC8147A912F64CDA007B2C32 /* InjectedBundlePagePolicyClient.h in Headers */,
@@ -7406,6 +7436,7 @@
1ADCB86B189831B30022EE5A /* NavigationActionData.h in Headers */,
1ABC3DF61899E437004F0626 /* NavigationState.h in Headers */,
1A6FBA2A11E6862700DB1371 /* NetscapeBrowserFuncs.h in Headers */,
+ 990D28AB1C6420C600986977 /* _WKAutomationSession.h in Headers */,
1A6FBD2811E69BC200DB1371 /* NetscapePlugin.h in Headers */,
1A4A9C5612B816CF008FE984 /* NetscapePluginModule.h in Headers */,
1AA5889211EE70400061B882 /* NetscapePluginStream.h in Headers */,
@@ -7632,6 +7663,7 @@
BC032DB910F4380F0058C15A /* WebEvent.h in Headers */,
BC032DBB10F4380F0058C15A /* WebEventConversion.h in Headers */,
BC111B5D112F629800337BAB /* WebEventFactory.h in Headers */,
+ 990D28C01C6553F100986977 /* APIAutomationSessionClient.h in Headers */,
1A90C1EE1264FD50003E44D4 /* WebFindOptions.h in Headers */,
BCE469541214E6CB000B98EB /* WebFormClient.h in Headers */,
BCE469561214E6CB000B98EB /* WebFormSubmissionListenerProxy.h in Headers */,
@@ -7684,6 +7716,7 @@
2D3EF4431917646300034184 /* WebMemoryPressureHandlerIOS.h in Headers */,
909854ED12BC4E18000AD080 /* WebMemorySampler.h in Headers */,
BCF69F9A1176CED600471A52 /* WebNavigationDataStore.h in Headers */,
+ 990D28B11C65208D00986977 /* _WKAutomationSessionInternal.h in Headers */,
7CCCC8FB1A5F50FD008FB0DA /* WebNavigationState.h in Headers */,
31A2EC49148997C200810D71 /* WebNotification.h in Headers */,
310999C7146C9E3D0029DEB9 /* WebNotificationClient.h in Headers */,
@@ -8871,6 +8904,7 @@
E489D28F1A0A2DB80078C06A /* NetworkCacheEncoder.cpp in Sources */,
E413F59F1AC1AF9D00345360 /* NetworkCacheEntry.cpp in Sources */,
E4697CCD1B25EB8F001B0A6C /* NetworkCacheFileSystem.cpp in Sources */,
+ 990D28BC1C6539DA00986977 /* AutomationSessionClient.mm in Sources */,
E42E060F1AA7523400B11699 /* NetworkCacheIOChannelCocoa.mm in Sources */,
E4436ECD1A0D040B00EAD204 /* NetworkCacheKey.cpp in Sources */,
831EEBBE1BD85C4300BB64C3 /* NetworkCacheSpeculativeLoad.cpp in Sources */,
@@ -9341,6 +9375,7 @@
1A4D664B18A3030E00D82E21 /* WKFrameInfo.mm in Sources */,
2D3A65E61A7C3AA700CAC637 /* WKFrameInfoRef.cpp in Sources */,
BCB9F6A61123DD0D00A137E0 /* WKFramePolicyListener.cpp in Sources */,
+ 990D28B21C65209400986977 /* _WKAutomationSession.mm in Sources */,
E1AEA23014687BDB00804569 /* WKFullKeyboardAccessWatcher.mm in Sources */,
CDCA85C8132ABA4E00E961DF /* WKFullScreenWindowController.mm in Sources */,
BC54CC1312D674EE005C67B0 /* WKGeolocationManager.cpp in Sources */,
@@ -9366,6 +9401,7 @@
C98C48A91B6FD5B500145103 /* WKMediaSessionFocusManager.cpp in Sources */,
C9CD439E1B4B025300239E33 /* WKMediaSessionMetadata.cpp in Sources */,
BC4075FD124FF0270068F20A /* WKMutableArray.cpp in Sources */,
+ 990D28BF1C654D3900986977 /* WebAutomationSession.cpp in Sources */,
BC4075FF124FF0270068F20A /* WKMutableDictionary.cpp in Sources */,
1A5B1C501898606F004FCF9B /* WKNavigation.mm in Sources */,
1A256E3718A1A788006FB922 /* WKNavigationAction.mm in Sources */,