Title: [196848] trunk/Source/WebKit2
Revision
196848
Author
[email protected]
Date
2016-02-19 17:37:55 -0800 (Fri, 19 Feb 2016)

Log Message

WebAutomationSession should tell its delegate when its remote end disconnects
https://bugs.webkit.org/show_bug.cgi?id=154426
<rdar://problem/24732382>

Reviewed by Timothy Hatcher.

The client might want to free up resources or close spawned windows
if the remote end has disconnected from the automation session.

* UIProcess/API/APIAutomationSessionClient.h:
(API::AutomationSessionClient::didDisconnectFromRemote): Added.
(API::AutomationSessionClient::didRequestNewWindow):
Remove WebProcessPool* argument as it is never used.

* UIProcess/API/Cocoa/_WKAutomationSession.h:
* UIProcess/API/Cocoa/_WKAutomationSession.mm:
(-[_WKAutomationSession isPaired]):
Expose whether the session is paired with a remote end.

* UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h: Add method.
* UIProcess/Cocoa/AutomationSessionClient.h: Add method.
Remove WebProcessPool* argument as it is never used.

* UIProcess/Cocoa/AutomationSessionClient.mm:
(WebKit::AutomationSessionClient::AutomationSessionClient):
(WebKit::AutomationSessionClient::didRequestNewWindow):
(WebKit::AutomationSessionClient::didDisconnectFromRemote):
Add necessary forwarding boilerplate.

* UIProcess/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::disconnect): Inform the client.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (196847 => 196848)


--- trunk/Source/WebKit2/ChangeLog	2016-02-20 01:06:49 UTC (rev 196847)
+++ trunk/Source/WebKit2/ChangeLog	2016-02-20 01:37:55 UTC (rev 196848)
@@ -1,3 +1,37 @@
+2016-02-19  Brian Burg  <[email protected]>
+
+        WebAutomationSession should tell its delegate when its remote end disconnects
+        https://bugs.webkit.org/show_bug.cgi?id=154426
+        <rdar://problem/24732382>
+
+        Reviewed by Timothy Hatcher.
+
+        The client might want to free up resources or close spawned windows
+        if the remote end has disconnected from the automation session.
+
+        * UIProcess/API/APIAutomationSessionClient.h:
+        (API::AutomationSessionClient::didDisconnectFromRemote): Added.
+        (API::AutomationSessionClient::didRequestNewWindow):
+        Remove WebProcessPool* argument as it is never used.
+
+        * UIProcess/API/Cocoa/_WKAutomationSession.h:
+        * UIProcess/API/Cocoa/_WKAutomationSession.mm:
+        (-[_WKAutomationSession isPaired]):
+        Expose whether the session is paired with a remote end.
+
+        * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h: Add method.
+        * UIProcess/Cocoa/AutomationSessionClient.h: Add method.
+        Remove WebProcessPool* argument as it is never used.
+
+        * UIProcess/Cocoa/AutomationSessionClient.mm:
+        (WebKit::AutomationSessionClient::AutomationSessionClient):
+        (WebKit::AutomationSessionClient::didRequestNewWindow):
+        (WebKit::AutomationSessionClient::didDisconnectFromRemote):
+        Add necessary forwarding boilerplate.
+
+        * UIProcess/WebAutomationSession.cpp:
+        (WebKit::WebAutomationSession::disconnect): Inform the client.
+
 2016-02-19  Beth Dakin  <[email protected]>
 
         Enhance EditorState to include TypingAttributes, alignment, and color

Modified: trunk/Source/WebKit2/UIProcess/API/APIAutomationSessionClient.h (196847 => 196848)


--- trunk/Source/WebKit2/UIProcess/API/APIAutomationSessionClient.h	2016-02-20 01:06:49 UTC (rev 196847)
+++ trunk/Source/WebKit2/UIProcess/API/APIAutomationSessionClient.h	2016-02-20 01:37:55 UTC (rev 196848)
@@ -30,7 +30,6 @@
 
 namespace WebKit {
 class WebAutomationSession;
-class WebProcessPool;
 }
 
 namespace API {
@@ -40,7 +39,8 @@
     virtual ~AutomationSessionClient() { }
 
     virtual String sessionIdentifier() const { return String(); }
-    virtual void didRequestNewWindow(WebKit::WebProcessPool*, WebKit::WebAutomationSession*) { }
+    virtual void didDisconnectFromRemote(WebKit::WebAutomationSession*) { }
+    virtual void didRequestNewWindow(WebKit::WebAutomationSession*) { }
 };
 
 } // namespace API

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.h (196847 => 196848)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.h	2016-02-20 01:06:49 UTC (rev 196847)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.h	2016-02-20 01:37:55 UTC (rev 196848)
@@ -38,6 +38,7 @@
 
 @property (nonatomic, copy) NSString *sessionIdentifier;
 @property (nonatomic, weak) id <_WKAutomationSessionDelegate> delegate;
+@property (nonatomic, readonly, getter=isPaired) BOOL paired;
 
 @end
 

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.mm (196847 => 196848)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.mm	2016-02-20 01:06:49 UTC (rev 196847)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSession.mm	2016-02-20 01:37:55 UTC (rev 196848)
@@ -78,6 +78,11 @@
     _session->setSessionIdentifier(sessionIdentifier);
 }
 
+- (BOOL)isPaired
+{
+    return _session->isPaired();
+}
+
 #pragma mark WKObject protocol implementation
 
 - (API::Object&)_apiObject

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h (196847 => 196848)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h	2016-02-20 01:06:49 UTC (rev 196847)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h	2016-02-20 01:37:55 UTC (rev 196848)
@@ -34,6 +34,7 @@
 @protocol _WKAutomationSessionDelegate <NSObject>
 @optional
 - (void)_automationSessionDidRequestNewWindow:(_WKAutomationSession *)automationSession;
+- (void)_automationSessionDidDisconnectFromRemote:(_WKAutomationSession *)automationSession;
 @end
 
 #endif // WK_API_ENABLED

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.h (196847 => 196848)


--- trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.h	2016-02-20 01:06:49 UTC (rev 196847)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.h	2016-02-20 01:37:55 UTC (rev 196848)
@@ -43,12 +43,14 @@
 
 private:
     // From API::AutomationSessionClient
-    virtual void didRequestNewWindow(WebKit::WebProcessPool*, WebKit::WebAutomationSession*) override;
+    virtual void didRequestNewWindow(WebKit::WebAutomationSession*) override;
+    virtual void didDisconnectFromRemote(WebKit::WebAutomationSession *) override;
 
     WeakObjCPtr<id <_WKAutomationSessionDelegate>> m_delegate;
 
     struct {
         bool didRequestNewWindow : 1;
+        bool didDisconnectFromRemote : 1;
     } m_delegateMethods;
 };
 

Modified: trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.mm (196847 => 196848)


--- trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.mm	2016-02-20 01:06:49 UTC (rev 196847)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/AutomationSessionClient.mm	2016-02-20 01:37:55 UTC (rev 196848)
@@ -38,14 +38,21 @@
     : m_delegate(delegate)
 {
     m_delegateMethods.didRequestNewWindow = [delegate respondsToSelector:@selector(_automationSessionDidRequestNewWindow:)];
+    m_delegateMethods.didDisconnectFromRemote = [delegate respondsToSelector:@selector(_automationSessionDidDisconnectFromRemote:)];
 }
 
-void AutomationSessionClient::didRequestNewWindow(WebProcessPool*, WebAutomationSession* session)
+void AutomationSessionClient::didRequestNewWindow(WebAutomationSession* session)
 {
     if (m_delegateMethods.didRequestNewWindow)
         [m_delegate.get() _automationSessionDidRequestNewWindow:wrapper(*session)];
 }
 
+void AutomationSessionClient::didDisconnectFromRemote(WebAutomationSession* session)
+{
+    if (m_delegateMethods.didDisconnectFromRemote)
+        [m_delegate.get() _automationSessionDidDisconnectFromRemote:wrapper(*session)];
+}
+
 } // namespace WebKit
 
 #endif // WK_API_ENABLED

Modified: trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp (196847 => 196848)


--- trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp	2016-02-20 01:06:49 UTC (rev 196847)
+++ trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp	2016-02-20 01:37:55 UTC (rev 196848)
@@ -69,6 +69,9 @@
 {
     m_remoteChannel = nullptr;
     setIsPaired(false);
+    
+    if (m_client)
+        m_client->didDisconnectFromRemote(this);
 }
 
 #endif // ENABLE(REMOTE_INSPECTOR)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to