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)