Title: [196515] trunk/Source/_javascript_Core
Revision
196515
Author
[email protected]
Date
2016-02-12 14:35:45 -0800 (Fri, 12 Feb 2016)

Log Message

Web Inspector: disambiguate the various identifier and connection types in RemoteInspector
https://bugs.webkit.org/show_bug.cgi?id=154130

Reviewed by Joseph Pecoraro.

There are multiple identifier types:
    - connection identifier, a string UUID for a remote debugger process.
    - session identifier, a string UUID for a remote driver/debugger instance.
    - page/target identifier, a number unique within a single process.

There are multiple connection types:
    - RemoteInspectorXPCConnection, a connection from RemoteInspectorXPCConnectionor to a relay.
    - RemoteConnectionToTarget, a class that bridges to targets' dispatch queues.

Use consistent variable and getter names so that these don't get confused and
so that the code is easier to read. This is especially an improvement when working
with multiple target types or connection types within the same function.

* inspector/remote/RemoteConnectionToTarget.h:
* inspector/remote/RemoteConnectionToTarget.mm:
Remove the member for m_identifier since we can ask the target for its target identifier
or use a default value via WTF::Optional. There's no reason to cache the value.

(Inspector::RemoteTargetHandleRunSourceWithInfo):
(Inspector::RemoteConnectionToTarget::targetIdentifier):
(Inspector::RemoteConnectionToTarget::destination):
(Inspector::RemoteConnectionToTarget::setup):
(Inspector::RemoteConnectionToTarget::sendMessageToFrontend):
Bail out if the target pointer was somehow cleared and we can't get a useful target identifier.

(Inspector::RemoteConnectionToTarget::RemoteConnectionToTarget): Deleted.
* inspector/remote/RemoteControllableTarget.h:
* inspector/remote/RemoteInspectionTarget.cpp:
(Inspector::RemoteInspectionTarget::pauseWaitingForAutomaticInspection):
(Inspector::RemoteInspectionTarget::unpauseForInitializedInspector):
* inspector/remote/RemoteInspector.h:
* inspector/remote/RemoteInspector.mm:
(Inspector::RemoteInspector::nextAvailableTargetIdentifier):
(Inspector::RemoteInspector::registerTarget):
(Inspector::RemoteInspector::unregisterTarget):
(Inspector::RemoteInspector::updateTarget):
(Inspector::RemoteInspector::updateAutomaticInspectionCandidate):
(Inspector::RemoteInspector::sendAutomaticInspectionCandidateMessage):
(Inspector::RemoteInspector::sendMessageToRemote):
(Inspector::RemoteInspector::setupFailed):
(Inspector::RemoteInspector::setupCompleted):
(Inspector::RemoteInspector::stopInternal):
(Inspector::RemoteInspector::setupXPCConnectionIfNeeded):
(Inspector::RemoteInspector::xpcConnectionFailed):
(Inspector::RemoteInspector::listingForInspectionTarget):
(Inspector::RemoteInspector::listingForAutomationTarget):
(Inspector::RemoteInspector::pushListingsNow):
(Inspector::RemoteInspector::pushListingsSoon):
(Inspector::RemoteInspector::updateHasActiveDebugSession):
(Inspector::RemoteInspector::receivedSetupMessage):
(Inspector::RemoteInspector::receivedDataMessage):
(Inspector::RemoteInspector::receivedDidCloseMessage):
(Inspector::RemoteInspector::receivedIndicateMessage):
(Inspector::RemoteInspector::receivedProxyApplicationSetupMessage):
(Inspector::RemoteInspector::receivedConnectionDiedMessage):
(Inspector::RemoteInspector::receivedAutomaticInspectionRejectMessage):
(Inspector::RemoteInspector::nextAvailableIdentifier): Deleted.
* inspector/remote/RemoteInspectorConstants.h:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (196514 => 196515)


--- trunk/Source/_javascript_Core/ChangeLog	2016-02-12 22:34:42 UTC (rev 196514)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-02-12 22:35:45 UTC (rev 196515)
@@ -1,3 +1,69 @@
+2016-02-12  Brian Burg  <[email protected]>
+
+        Web Inspector: disambiguate the various identifier and connection types in RemoteInspector
+        https://bugs.webkit.org/show_bug.cgi?id=154130
+
+        Reviewed by Joseph Pecoraro.
+
+        There are multiple identifier types:
+            - connection identifier, a string UUID for a remote debugger process.
+            - session identifier, a string UUID for a remote driver/debugger instance.
+            - page/target identifier, a number unique within a single process.
+
+        There are multiple connection types:
+            - RemoteInspectorXPCConnection, a connection from RemoteInspectorXPCConnectionor to a relay.
+            - RemoteConnectionToTarget, a class that bridges to targets' dispatch queues.
+
+        Use consistent variable and getter names so that these don't get confused and
+        so that the code is easier to read. This is especially an improvement when working
+        with multiple target types or connection types within the same function.
+
+        * inspector/remote/RemoteConnectionToTarget.h:
+        * inspector/remote/RemoteConnectionToTarget.mm:
+        Remove the member for m_identifier since we can ask the target for its target identifier
+        or use a default value via WTF::Optional. There's no reason to cache the value.
+
+        (Inspector::RemoteTargetHandleRunSourceWithInfo):
+        (Inspector::RemoteConnectionToTarget::targetIdentifier):
+        (Inspector::RemoteConnectionToTarget::destination):
+        (Inspector::RemoteConnectionToTarget::setup):
+        (Inspector::RemoteConnectionToTarget::sendMessageToFrontend):
+        Bail out if the target pointer was somehow cleared and we can't get a useful target identifier.
+
+        (Inspector::RemoteConnectionToTarget::RemoteConnectionToTarget): Deleted.
+        * inspector/remote/RemoteControllableTarget.h:
+        * inspector/remote/RemoteInspectionTarget.cpp:
+        (Inspector::RemoteInspectionTarget::pauseWaitingForAutomaticInspection):
+        (Inspector::RemoteInspectionTarget::unpauseForInitializedInspector):
+        * inspector/remote/RemoteInspector.h:
+        * inspector/remote/RemoteInspector.mm:
+        (Inspector::RemoteInspector::nextAvailableTargetIdentifier):
+        (Inspector::RemoteInspector::registerTarget):
+        (Inspector::RemoteInspector::unregisterTarget):
+        (Inspector::RemoteInspector::updateTarget):
+        (Inspector::RemoteInspector::updateAutomaticInspectionCandidate):
+        (Inspector::RemoteInspector::sendAutomaticInspectionCandidateMessage):
+        (Inspector::RemoteInspector::sendMessageToRemote):
+        (Inspector::RemoteInspector::setupFailed):
+        (Inspector::RemoteInspector::setupCompleted):
+        (Inspector::RemoteInspector::stopInternal):
+        (Inspector::RemoteInspector::setupXPCConnectionIfNeeded):
+        (Inspector::RemoteInspector::xpcConnectionFailed):
+        (Inspector::RemoteInspector::listingForInspectionTarget):
+        (Inspector::RemoteInspector::listingForAutomationTarget):
+        (Inspector::RemoteInspector::pushListingsNow):
+        (Inspector::RemoteInspector::pushListingsSoon):
+        (Inspector::RemoteInspector::updateHasActiveDebugSession):
+        (Inspector::RemoteInspector::receivedSetupMessage):
+        (Inspector::RemoteInspector::receivedDataMessage):
+        (Inspector::RemoteInspector::receivedDidCloseMessage):
+        (Inspector::RemoteInspector::receivedIndicateMessage):
+        (Inspector::RemoteInspector::receivedProxyApplicationSetupMessage):
+        (Inspector::RemoteInspector::receivedConnectionDiedMessage):
+        (Inspector::RemoteInspector::receivedAutomaticInspectionRejectMessage):
+        (Inspector::RemoteInspector::nextAvailableIdentifier): Deleted.
+        * inspector/remote/RemoteInspectorConstants.h:
+
 2016-02-12  Benjamin Poulain  <[email protected]>
 
         [JSC] On x86, improve the selection of which value are selected for the UseDef part of commutative operations

Modified: trunk/Source/_javascript_Core/inspector/remote/RemoteConnectionToTarget.h (196514 => 196515)


--- trunk/Source/_javascript_Core/inspector/remote/RemoteConnectionToTarget.h	2016-02-12 22:34:42 UTC (rev 196514)
+++ trunk/Source/_javascript_Core/inspector/remote/RemoteConnectionToTarget.h	2016-02-12 22:35:45 UTC (rev 196515)
@@ -54,7 +54,7 @@
     virtual void close();
     virtual void targetClosed();
 
-    unsigned identifier() const { return m_identifier; }
+    Optional<unsigned> targetIdentifier() const;
     NSString *connectionIdentifier() const;
     NSString *destination() const;
 
@@ -86,7 +86,6 @@
     Lock m_queueMutex;
 
     RemoteControllableTarget* m_target { nullptr };
-    unsigned m_identifier { 0 };
     RetainPtr<NSString> m_connectionIdentifier;
     RetainPtr<NSString> m_destination;
     bool m_connected { false };

Modified: trunk/Source/_javascript_Core/inspector/remote/RemoteConnectionToTarget.mm (196514 => 196515)


--- trunk/Source/_javascript_Core/inspector/remote/RemoteConnectionToTarget.mm	2016-02-12 22:34:42 UTC (rev 196514)
+++ trunk/Source/_javascript_Core/inspector/remote/RemoteConnectionToTarget.mm	2016-02-12 22:35:45 UTC (rev 196515)
@@ -32,6 +32,7 @@
 #import "RemoteAutomationTarget.h"
 #import "RemoteInspectionTarget.h"
 #import <dispatch/dispatch.h>
+#import <wtf/Optional.h>
 #import <wtf/Vector.h>
 
 #if PLATFORM(IOS)
@@ -92,13 +93,13 @@
 
 static void RemoteTargetHandleRunSourceWithInfo(void* info)
 {
-    RemoteConnectionToTarget *connection = static_cast<RemoteConnectionToTarget*>(info);
+    RemoteConnectionToTarget *connectionToTarget = static_cast<RemoteConnectionToTarget*>(info);
 
     RemoteTargetQueue queueCopy;
     {
-        std::lock_guard<Lock> lock(connection->queueMutex());
-        queueCopy = connection->queue();
-        connection->clearQueue();
+        std::lock_guard<Lock> lock(connectionToTarget->queueMutex());
+        queueCopy = connectionToTarget->queue();
+        connectionToTarget->clearQueue();
     }
 
     for (const auto& block : queueCopy)
@@ -108,7 +109,6 @@
 
 RemoteConnectionToTarget::RemoteConnectionToTarget(RemoteControllableTarget* target, NSString *connectionIdentifier, NSString *destination)
     : m_target(target)
-    , m_identifier(target->identifier())
     , m_connectionIdentifier(connectionIdentifier)
     , m_destination(destination)
 {
@@ -120,9 +120,9 @@
     teardownRunLoop();
 }
 
-NSString *RemoteConnectionToTarget::destination() const
+Optional<unsigned> RemoteConnectionToTarget::targetIdentifier() const
 {
-    return [[m_destination copy] autorelease];
+    return m_target ? Optional<unsigned>(m_target->targetIdentifier()) : Nullopt;
 }
 
 NSString *RemoteConnectionToTarget::connectionIdentifier() const
@@ -130,6 +130,11 @@
     return [[m_connectionIdentifier copy] autorelease];
 }
 
+NSString *RemoteConnectionToTarget::destination() const
+{
+    return [[m_destination copy] autorelease];
+}
+
 void RemoteConnectionToTarget::dispatchAsyncOnTarget(void (^block)())
 {
     if (m_runLoop) {
@@ -159,7 +164,7 @@
         {
             std::lock_guard<Lock> lock(m_targetMutex);
             if (!m_target || !m_target->remoteControlAllowed()) {
-                RemoteInspector::singleton().setupFailed(m_identifier);
+                RemoteInspector::singleton().setupFailed(targetIdentifier().valueOr(0));
                 m_target = nullptr;
             } else if (is<RemoteInspectionTarget>(m_target)) {
                 auto castedTarget = downcast<RemoteInspectionTarget>(m_target);
@@ -226,8 +231,10 @@
 
 bool RemoteConnectionToTarget::sendMessageToFrontend(const String& message)
 {
-    RemoteInspector::singleton().sendMessageToRemote(identifier(), message);
+    if (!m_target)
+        return false;
 
+    RemoteInspector::singleton().sendMessageToRemote(targetIdentifier().value(), message);
     return true;
 }
 

Modified: trunk/Source/_javascript_Core/inspector/remote/RemoteControllableTarget.h (196514 => 196515)


--- trunk/Source/_javascript_Core/inspector/remote/RemoteControllableTarget.h	2016-02-12 22:34:42 UTC (rev 196514)
+++ trunk/Source/_javascript_Core/inspector/remote/RemoteControllableTarget.h	2016-02-12 22:35:45 UTC (rev 196515)
@@ -46,8 +46,8 @@
     virtual void connect(FrontendChannel*, bool isAutomaticConnection = false) = 0;
     virtual void disconnect(FrontendChannel*) = 0;
 
-    unsigned identifier() const { return m_identifier; }
-    void setIdentifier(unsigned identifier) { m_identifier = identifier; }
+    unsigned targetIdentifier() const { return m_identifier; }
+    void setTargetIdentifier(unsigned identifier) { m_identifier = identifier; }
 
     enum class Type { _javascript_, Web, Automation };
     virtual Type type() const = 0;

Modified: trunk/Source/_javascript_Core/inspector/remote/RemoteInspectionTarget.cpp (196514 => 196515)


--- trunk/Source/_javascript_Core/inspector/remote/RemoteInspectionTarget.cpp	2016-02-12 22:34:42 UTC (rev 196514)
+++ trunk/Source/_javascript_Core/inspector/remote/RemoteInspectionTarget.cpp	2016-02-12 22:35:45 UTC (rev 196515)
@@ -53,18 +53,18 @@
 
 void RemoteInspectionTarget::pauseWaitingForAutomaticInspection()
 {
-    ASSERT(identifier());
+    ASSERT(targetIdentifier());
     ASSERT(m_allowed);
     ASSERT(automaticInspectionAllowed());
 
     EventLoop loop;
-    while (RemoteInspector::singleton().waitingForAutomaticInspection(identifier()) && !loop.ended())
+    while (RemoteInspector::singleton().waitingForAutomaticInspection(targetIdentifier()) && !loop.ended())
         loop.cycle();
 }
 
 void RemoteInspectionTarget::unpauseForInitializedInspector()
 {
-    RemoteInspector::singleton().setupCompleted(identifier());
+    RemoteInspector::singleton().setupCompleted(targetIdentifier());
 }
 
 } // namespace Inspector

Modified: trunk/Source/_javascript_Core/inspector/remote/RemoteInspector.h (196514 => 196515)


--- trunk/Source/_javascript_Core/inspector/remote/RemoteInspector.h	2016-02-12 22:34:42 UTC (rev 196514)
+++ trunk/Source/_javascript_Core/inspector/remote/RemoteInspector.h	2016-02-12 22:35:45 UTC (rev 196515)
@@ -62,14 +62,14 @@
     void registerTarget(RemoteControllableTarget*);
     void unregisterTarget(RemoteControllableTarget*);
     void updateTarget(RemoteControllableTarget*);
-    void sendMessageToRemote(unsigned identifier, const String& message);
+    void sendMessageToRemote(unsigned targetIdentifier, const String& message);
 
     void updateAutomaticInspectionCandidate(RemoteInspectionTarget*);
     void setRemoteInspectorClient(RemoteInspector::Client*);
 
-    void setupFailed(unsigned identifier);
-    void setupCompleted(unsigned identifier);
-    bool waitingForAutomaticInspection(unsigned identifier);
+    void setupFailed(unsigned targetIdentifier);
+    void setupCompleted(unsigned targetIdentifier);
+    bool waitingForAutomaticInspection(unsigned targetIdentifier);
     void clientCapabilitiesDidChange() { pushListingsSoon(); }
 
     bool enabled() const { return m_enabled; }
@@ -87,7 +87,7 @@
 private:
     RemoteInspector();
 
-    unsigned nextAvailableIdentifier();
+    unsigned nextAvailableTargetIdentifier();
 
     enum class StopSource { API, XPCMessage };
     void stopInternal(StopSource);
@@ -127,15 +127,15 @@
     Lock m_mutex;
 
     HashMap<unsigned, RemoteControllableTarget*> m_targetMap;
-    HashMap<unsigned, RetainPtr<NSDictionary>> m_listingMap;
-    HashMap<unsigned, RefPtr<RemoteConnectionToTarget>> m_connectionMap;
+    HashMap<unsigned, RetainPtr<NSDictionary>> m_targetListingMap;
+    HashMap<unsigned, RefPtr<RemoteConnectionToTarget>> m_targetConnectionMap;
 
-    RefPtr<RemoteInspectorXPCConnection> m_xpcConnection;
+    RefPtr<RemoteInspectorXPCConnection> m_relayConnection;
 
     RemoteInspector::Client* m_client { nullptr };
 
     dispatch_queue_t m_xpcQueue;
-    unsigned m_nextAvailableIdentifier { 1 };
+    unsigned m_nextAvailableTargetIdentifier { 1 };
     int m_notifyToken { 0 };
     bool m_enabled { false };
     bool m_hasActiveDebugSession { false };
@@ -146,7 +146,7 @@
     bool m_shouldSendParentProcessInformation { false };
     bool m_automaticInspectionEnabled { false };
     bool m_automaticInspectionPaused { false };
-    unsigned m_automaticInspectionCandidateIdentifier { 0 };
+    unsigned m_automaticInspectionCandidateTargetIdentifier { 0 };
 };
 
 } // namespace Inspector

Modified: trunk/Source/_javascript_Core/inspector/remote/RemoteInspector.mm (196514 => 196515)


--- trunk/Source/_javascript_Core/inspector/remote/RemoteInspector.mm	2016-02-12 22:34:42 UTC (rev 196514)
+++ trunk/Source/_javascript_Core/inspector/remote/RemoteInspector.mm	2016-02-12 22:35:45 UTC (rev 196515)
@@ -101,13 +101,13 @@
 {
 }
 
-unsigned RemoteInspector::nextAvailableIdentifier()
+unsigned RemoteInspector::nextAvailableTargetIdentifier()
 {
-    unsigned nextValidIdentifier;
+    unsigned nextValidTargetIdentifier;
     do {
-        nextValidIdentifier = m_nextAvailableIdentifier++;
-    } while (!nextValidIdentifier || nextValidIdentifier == std::numeric_limits<unsigned>::max() || m_targetMap.contains(nextValidIdentifier));
-    return nextValidIdentifier;
+        nextValidTargetIdentifier = m_nextAvailableTargetIdentifier++;
+    } while (!nextValidTargetIdentifier || nextValidTargetIdentifier == std::numeric_limits<unsigned>::max() || m_targetMap.contains(nextValidTargetIdentifier));
+    return nextValidTargetIdentifier;
 }
 
 void RemoteInspector::registerTarget(RemoteControllableTarget* target)
@@ -116,17 +116,17 @@
 
     std::lock_guard<Lock> lock(m_mutex);
 
-    unsigned identifier = nextAvailableIdentifier();
-    target->setIdentifier(identifier);
+    unsigned targetIdentifier = nextAvailableTargetIdentifier();
+    target->setTargetIdentifier(targetIdentifier);
 
     {
-        auto result = m_targetMap.set(identifier, target);
+        auto result = m_targetMap.set(targetIdentifier, target);
         ASSERT_UNUSED(result, result.isNewEntry);
     }
-    
+
     // If remote control is not allowed, a null listing is returned.
-    if (RetainPtr<NSDictionary> listing = listingForTarget(*target)) {
-        auto result = m_listingMap.set(identifier, listing);
+    if (RetainPtr<NSDictionary> targetListing = listingForTarget(*target)) {
+        auto result = m_targetListingMap.set(targetIdentifier, targetListing);
         ASSERT_UNUSED(result, result.isNewEntry);
     }
 
@@ -139,18 +139,18 @@
 
     std::lock_guard<Lock> lock(m_mutex);
 
-    unsigned identifier = target->identifier();
-    if (!identifier)
+    unsigned targetIdentifier = target->targetIdentifier();
+    if (!targetIdentifier)
         return;
 
-    bool wasRemoved = m_targetMap.remove(identifier);
+    bool wasRemoved = m_targetMap.remove(targetIdentifier);
     ASSERT_UNUSED(wasRemoved, wasRemoved);
 
     // The listing may never have been added if remote control isn't allowed.
-    m_listingMap.remove(identifier);
+    m_targetListingMap.remove(targetIdentifier);
 
-    if (auto connection = m_connectionMap.take(identifier))
-        connection->targetClosed();
+    if (auto connectionToTarget = m_targetConnectionMap.take(targetIdentifier))
+        connectionToTarget->targetClosed();
 
     pushListingsSoon();
 }
@@ -161,18 +161,18 @@
 
     std::lock_guard<Lock> lock(m_mutex);
 
-    unsigned identifier = target->identifier();
-    if (!identifier)
+    unsigned targetIdentifier = target->targetIdentifier();
+    if (!targetIdentifier)
         return;
 
     {
-        auto result = m_targetMap.set(identifier, target);
+        auto result = m_targetMap.set(targetIdentifier, target);
         ASSERT_UNUSED(result, !result.isNewEntry);
     }
 
     // If the target has just allowed remote control, then the listing won't exist yet.
-    if (RetainPtr<NSDictionary> listing = listingForTarget(*target))
-        m_listingMap.set(identifier, listing);
+    if (RetainPtr<NSDictionary> targetListing = listingForTarget(*target))
+        m_targetListingMap.set(targetIdentifier, targetListing);
 
     pushListingsSoon();
 }
@@ -183,16 +183,16 @@
     {
         std::lock_guard<Lock> lock(m_mutex);
 
-        unsigned identifier = target->identifier();
-        if (!identifier)
+        unsigned targetIdentifier = target->targetIdentifier();
+        if (!targetIdentifier)
             return;
 
-        auto result = m_targetMap.set(identifier, target);
+        auto result = m_targetMap.set(targetIdentifier, target);
         ASSERT_UNUSED(result, !result.isNewEntry);
 
         // If the target has just allowed remote control, then the listing won't exist yet.
-        if (RetainPtr<NSDictionary> listing = listingForTarget(*target))
-            m_listingMap.set(identifier, listing);
+        if (RetainPtr<NSDictionary> targetListing = listingForTarget(*target))
+            m_targetListingMap.set(targetIdentifier, targetListing);
 
         // Don't allow automatic inspection unless it is allowed or we are stopped.
         if (!m_automaticInspectionEnabled || !m_enabled) {
@@ -201,19 +201,19 @@
         }
 
         // FIXME: We should handle multiple debuggables trying to pause at the same time on different threads.
-        // To make this work we will need to change m_automaticInspectionCandidateIdentifier to be a per-thread value.
+        // To make this work we will need to change m_automaticInspectionCandidateTargetIdentifier to be a per-thread value.
         // Multiple attempts on the same thread should not be possible because our nested run loop is in a special RWI mode.
         if (m_automaticInspectionPaused) {
-            LOG_ERROR("Skipping Automatic Inspection Candidate with pageId(%u) because we are already paused waiting for pageId(%u)", identifier, m_automaticInspectionCandidateIdentifier);
+            LOG_ERROR("Skipping Automatic Inspection Candidate with pageId(%u) because we are already paused waiting for pageId(%u)", targetIdentifier, m_automaticInspectionCandidateTargetIdentifier);
             pushListingsSoon();
             return;
         }
 
         m_automaticInspectionPaused = true;
-        m_automaticInspectionCandidateIdentifier = identifier;
+        m_automaticInspectionCandidateTargetIdentifier = targetIdentifier;
 
         // If we are pausing before we have connected to webinspectord the candidate message will be sent as soon as the connection is established.
-        if (m_xpcConnection) {
+        if (m_relayConnection) {
             pushListingsNow();
             sendAutomaticInspectionCandidateMessage();
         }
@@ -221,8 +221,8 @@
         // In case debuggers fail to respond, or we cannot connect to webinspectord, automatically continue after a short period of time.
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.8 * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
             std::lock_guard<Lock> lock(m_mutex);
-            if (m_automaticInspectionCandidateIdentifier == identifier) {
-                LOG_ERROR("Skipping Automatic Inspection Candidate with pageId(%u) because we failed to receive a response in time.", m_automaticInspectionCandidateIdentifier);
+            if (m_automaticInspectionCandidateTargetIdentifier == targetIdentifier) {
+                LOG_ERROR("Skipping Automatic Inspection Candidate with pageId(%u) because we failed to receive a response in time.", m_automaticInspectionCandidateTargetIdentifier);
                 m_automaticInspectionPaused = false;
             }
         });
@@ -233,8 +233,8 @@
     {
         std::lock_guard<Lock> lock(m_mutex);
 
-        ASSERT(m_automaticInspectionCandidateIdentifier);
-        m_automaticInspectionCandidateIdentifier = 0;
+        ASSERT(m_automaticInspectionCandidateTargetIdentifier);
+        m_automaticInspectionCandidateTargetIdentifier = 0;
     }
 }
 
@@ -255,52 +255,52 @@
     ASSERT(m_enabled);
     ASSERT(m_automaticInspectionEnabled);
     ASSERT(m_automaticInspectionPaused);
-    ASSERT(m_automaticInspectionCandidateIdentifier);
-    ASSERT(m_xpcConnection);
+    ASSERT(m_automaticInspectionCandidateTargetIdentifier);
+    ASSERT(m_relayConnection);
 
-    NSDictionary *details = @{WIRPageIdentifierKey: @(m_automaticInspectionCandidateIdentifier)};
-    m_xpcConnection->sendMessage(WIRAutomaticInspectionCandidateMessage, details);
+    NSDictionary *details = @{WIRTargetIdentifierKey: @(m_automaticInspectionCandidateTargetIdentifier)};
+    m_relayConnection->sendMessage(WIRAutomaticInspectionCandidateMessage, details);
 }
 
-void RemoteInspector::sendMessageToRemote(unsigned identifier, const String& message)
+void RemoteInspector::sendMessageToRemote(unsigned targetIdentifier, const String& message)
 {
     std::lock_guard<Lock> lock(m_mutex);
 
-    if (!m_xpcConnection)
+    if (!m_relayConnection)
         return;
 
-    auto connection = m_connectionMap.get(identifier);
-    if (!connection)
+    auto targetConnection = m_targetConnectionMap.get(targetIdentifier);
+    if (!targetConnection)
         return;
 
     NSDictionary *userInfo = @{
         WIRRawDataKey: [static_cast<NSString *>(message) dataUsingEncoding:NSUTF8StringEncoding],
-        WIRConnectionIdentifierKey: connection->connectionIdentifier(),
-        WIRDestinationKey: connection->destination()
+        WIRConnectionIdentifierKey: targetConnection->connectionIdentifier(),
+        WIRDestinationKey: targetConnection->destination()
     };
 
-    m_xpcConnection->sendMessage(WIRRawDataMessage, userInfo);
+    m_relayConnection->sendMessage(WIRRawDataMessage, userInfo);
 }
 
-void RemoteInspector::setupFailed(unsigned identifier)
+void RemoteInspector::setupFailed(unsigned targetIdentifier)
 {
     std::lock_guard<Lock> lock(m_mutex);
 
-    m_connectionMap.remove(identifier);
+    m_targetConnectionMap.remove(targetIdentifier);
 
     updateHasActiveDebugSession();
 
-    if (identifier == m_automaticInspectionCandidateIdentifier)
+    if (targetIdentifier == m_automaticInspectionCandidateTargetIdentifier)
         m_automaticInspectionPaused = false;
 
     pushListingsSoon();
 }
 
-void RemoteInspector::setupCompleted(unsigned identifier)
+void RemoteInspector::setupCompleted(unsigned targetIdentifier)
 {
     std::lock_guard<Lock> lock(m_mutex);
 
-    if (identifier == m_automaticInspectionCandidateIdentifier)
+    if (targetIdentifier == m_automaticInspectionCandidateTargetIdentifier)
         m_automaticInspectionPaused = false;
 }
 
@@ -348,25 +348,25 @@
 
     m_pushScheduled = false;
 
-    for (auto connection : m_connectionMap.values())
-        connection->close();
-    m_connectionMap.clear();
+    for (auto targetConnection : m_targetConnectionMap.values())
+        targetConnection->close();
+    m_targetConnectionMap.clear();
 
     updateHasActiveDebugSession();
 
     m_automaticInspectionPaused = false;
 
-    if (m_xpcConnection) {
+    if (m_relayConnection) {
         switch (source) {
         case StopSource::API:
-            m_xpcConnection->close();
+            m_relayConnection->close();
             break;
         case StopSource::XPCMessage:
-            m_xpcConnection->closeFromMessage();
+            m_relayConnection->closeFromMessage();
             break;
         }
 
-        m_xpcConnection = nullptr;
+        m_relayConnection = nullptr;
     }
 
     notify_cancel(m_notifyToken);
@@ -376,18 +376,18 @@
 {
     std::lock_guard<Lock> lock(m_mutex);
 
-    if (m_xpcConnection)
+    if (m_relayConnection)
         return;
 
     xpc_connection_t connection = xpc_connection_create_mach_service(WIRXPCMachPortName, m_xpcQueue, 0);
     if (!connection)
         return;
 
-    m_xpcConnection = adoptRef(new RemoteInspectorXPCConnection(connection, m_xpcQueue, this));
-    m_xpcConnection->sendMessage(@"syn", nil); // Send a simple message to initialize the XPC connection.
+    m_relayConnection = adoptRef(new RemoteInspectorXPCConnection(connection, m_xpcQueue, this));
+    m_relayConnection->sendMessage(@"syn", nil); // Send a simple message to initialize the XPC connection.
     xpc_release(connection);
 
-    if (m_automaticInspectionCandidateIdentifier) {
+    if (m_automaticInspectionCandidateTargetIdentifier) {
         // We already have a debuggable waiting to be automatically inspected.
         pushListingsNow();
         sendAutomaticInspectionCandidateMessage();
@@ -444,26 +444,26 @@
         NSLog(@"Unrecognized RemoteInspector XPC Message: %@", messageName);
 }
 
-void RemoteInspector::xpcConnectionFailed(RemoteInspectorXPCConnection* connection)
+void RemoteInspector::xpcConnectionFailed(RemoteInspectorXPCConnection* relayConnection)
 {
     std::lock_guard<Lock> lock(m_mutex);
 
-    ASSERT(connection == m_xpcConnection);
-    if (connection != m_xpcConnection)
+    ASSERT(relayConnection == m_relayConnection);
+    if (relayConnection != m_relayConnection)
         return;
 
     m_pushScheduled = false;
 
-    for (auto connection : m_connectionMap.values())
-        connection->close();
-    m_connectionMap.clear();
+    for (auto targetConnection : m_targetConnectionMap.values())
+        targetConnection->close();
+    m_targetConnectionMap.clear();
 
     updateHasActiveDebugSession();
 
     m_automaticInspectionPaused = false;
 
-    // The connection will close itself.
-    m_xpcConnection = nullptr;
+    // The XPC connection will close itself.
+    m_relayConnection = nullptr;
 }
 
 void RemoteInspector::xpcConnectionUnhandledMessage(RemoteInspectorXPCConnection*, xpc_object_t)
@@ -493,7 +493,7 @@
         return nil;
 
     RetainPtr<NSMutableDictionary> listing = adoptNS([[NSMutableDictionary alloc] init]);
-    [listing setObject:@(target.identifier()) forKey:WIRPageIdentifierKey];
+    [listing setObject:@(target.targetIdentifier()) forKey:WIRTargetIdentifierKey];
 
     switch (target.type()) {
     case RemoteInspectionTarget::Type::_javascript_:
@@ -510,8 +510,8 @@
         break;
     }
 
-    if (auto* connection = m_connectionMap.get(target.identifier()))
-        [listing setObject:connection->connectionIdentifier() forKey:WIRConnectionIdentifierKey];
+    if (auto* connectionToTarget = m_targetConnectionMap.get(target.targetIdentifier()))
+        [listing setObject:connectionToTarget->connectionIdentifier() forKey:WIRConnectionIdentifierKey];
 
     if (target.hasLocalDebugger())
         [listing setObject:@YES forKey:WIRHasLocalDebuggerKey];
@@ -526,29 +526,29 @@
     ASSERT(isMainThread());
 
     RetainPtr<NSMutableDictionary> listing = adoptNS([[NSMutableDictionary alloc] init]);
-    [listing setObject:@(target.identifier()) forKey:WIRPageIdentifierKey];
+    [listing setObject:@(target.targetIdentifier()) forKey:WIRTargetIdentifierKey];
     [listing setObject:target.name() forKey:WIRTitleKey];
     [listing setObject:WIRTypeAutomation forKey:WIRTypeKey];
     [listing setObject:@(target.isPaired()) forKey:WIRAutomationTargetIsPairedKey];
 
-    if (auto connection = m_connectionMap.get(target.identifier()))
-        [listing setObject:connection->connectionIdentifier() forKey:WIRConnectionIdentifierKey];
+    if (auto connectionToTarget = m_targetConnectionMap.get(target.targetIdentifier()))
+        [listing setObject:connectionToTarget->connectionIdentifier() forKey:WIRConnectionIdentifierKey];
 
     return listing;
 }
 
 void RemoteInspector::pushListingsNow()
 {
-    ASSERT(m_xpcConnection);
-    if (!m_xpcConnection)
+    ASSERT(m_relayConnection);
+    if (!m_relayConnection)
         return;
 
     m_pushScheduled = false;
 
     RetainPtr<NSMutableDictionary> listings = adoptNS([[NSMutableDictionary alloc] init]);
-    for (RetainPtr<NSDictionary> listing : m_listingMap.values()) {
-        NSString *identifier = [[listing.get() objectForKey:WIRPageIdentifierKey] stringValue];
-        [listings setObject:listing.get() forKey:identifier];
+    for (RetainPtr<NSDictionary> listing : m_targetListingMap.values()) {
+        NSString *targetIdentifierString = [[listing.get() objectForKey:WIRTargetIdentifierKey] stringValue];
+        [listings setObject:listing.get() forKey:targetIdentifierString];
     }
 
     RetainPtr<NSMutableDictionary> message = adoptNS([[NSMutableDictionary alloc] init]);
@@ -557,12 +557,12 @@
     BOOL isAllowed = m_client && m_client->remoteAutomationAllowed();
     [message setObject:@(isAllowed) forKey:WIRRemoteAutomationEnabledKey];
 
-    m_xpcConnection->sendMessage(WIRListingMessage, message.get());
+    m_relayConnection->sendMessage(WIRListingMessage, message.get());
 }
 
 void RemoteInspector::pushListingsSoon()
 {
-    if (!m_xpcConnection)
+    if (!m_relayConnection)
         return;
 
     if (m_pushScheduled)
@@ -580,7 +580,7 @@
 
 void RemoteInspector::updateHasActiveDebugSession()
 {
-    bool hasActiveDebuggerSession = !m_connectionMap.isEmpty();
+    bool hasActiveDebuggerSession = !m_targetConnectionMap.isEmpty();
     if (hasActiveDebuggerSession == m_hasActiveDebugSession)
         return;
 
@@ -595,8 +595,8 @@
 
 void RemoteInspector::receivedSetupMessage(NSDictionary *userInfo)
 {
-    unsigned identifier = [[userInfo objectForKey:WIRPageIdentifierKey] unsignedIntegerValue];
-    if (!identifier)
+    unsigned targetIdentifier = [[userInfo objectForKey:WIRTargetIdentifierKey] unsignedIntegerValue];
+    if (!targetIdentifier)
         return;
 
     NSString *connectionIdentifier = [userInfo objectForKey:WIRConnectionIdentifierKey];
@@ -607,33 +607,33 @@
     if (!sender)
         return;
 
-    if (m_connectionMap.contains(identifier))
+    if (m_targetConnectionMap.contains(targetIdentifier))
         return;
 
-    auto findResult = m_targetMap.find(identifier);
+    auto findResult = m_targetMap.find(targetIdentifier);
     if (findResult == m_targetMap.end())
         return;
 
     // Attempt to create a connection. This may fail if the page already has an inspector or if it disallows inspection.
     RemoteControllableTarget* target = findResult->value;
-    RefPtr<RemoteConnectionToTarget> connection = adoptRef(new RemoteConnectionToTarget(downcast<RemoteInspectionTarget>(target), connectionIdentifier, sender));
+    RefPtr<RemoteConnectionToTarget> connectionToTarget = adoptRef(new RemoteConnectionToTarget(downcast<RemoteInspectionTarget>(target), connectionIdentifier, sender));
 
     if (is<RemoteInspectionTarget>(target)) {
-        bool isAutomaticInspection = m_automaticInspectionCandidateIdentifier == target->identifier();
+        bool isAutomaticInspection = m_automaticInspectionCandidateTargetIdentifier == target->targetIdentifier();
         bool automaticallyPause = [[userInfo objectForKey:WIRAutomaticallyPause] boolValue];
 
-        if (!connection->setup(isAutomaticInspection, automaticallyPause)) {
-            connection->close();
+        if (!connectionToTarget->setup(isAutomaticInspection, automaticallyPause)) {
+            connectionToTarget->close();
             return;
         }
-        m_connectionMap.set(identifier, connection.release());
+        m_targetConnectionMap.set(targetIdentifier, connectionToTarget.release());
         updateHasActiveDebugSession();
     } else if (is<RemoteAutomationTarget>(target)) {
-        if (!connection->setup()) {
-            connection->close();
+        if (!connectionToTarget->setup()) {
+            connectionToTarget->close();
             return;
         }
-        m_connectionMap.set(identifier, connection.release());
+        m_targetConnectionMap.set(targetIdentifier, connectionToTarget.release());
         updateHasActiveDebugSession();
     } else
         ASSERT_NOT_REACHED();
@@ -643,38 +643,38 @@
 
 void RemoteInspector::receivedDataMessage(NSDictionary *userInfo)
 {
-    unsigned identifier = [[userInfo objectForKey:WIRPageIdentifierKey] unsignedIntegerValue];
-    if (!identifier)
+    unsigned targetIdentifier = [[userInfo objectForKey:WIRTargetIdentifierKey] unsignedIntegerValue];
+    if (!targetIdentifier)
         return;
 
-    auto connection = m_connectionMap.get(identifier);
-    if (!connection)
+    auto connectionToTarget = m_targetConnectionMap.get(targetIdentifier);
+    if (!connectionToTarget)
         return;
 
     NSData *data = "" objectForKey:WIRSocketDataKey];
     RetainPtr<NSString> message = adoptNS([[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
-    connection->sendMessageToTarget(message.get());
+    connectionToTarget->sendMessageToTarget(message.get());
 }
 
 void RemoteInspector::receivedDidCloseMessage(NSDictionary *userInfo)
 {
-    unsigned identifier = [[userInfo objectForKey:WIRPageIdentifierKey] unsignedIntegerValue];
-    if (!identifier)
+    unsigned targetIdentifier = [[userInfo objectForKey:WIRTargetIdentifierKey] unsignedIntegerValue];
+    if (!targetIdentifier)
         return;
 
     NSString *connectionIdentifier = [userInfo objectForKey:WIRConnectionIdentifierKey];
     if (!connectionIdentifier)
         return;
 
-    auto connection = m_connectionMap.get(identifier);
-    if (!connection)
+    auto connectionToTarget = m_targetConnectionMap.get(targetIdentifier);
+    if (!connectionToTarget)
         return;
 
-    if (![connectionIdentifier isEqualToString:connection->connectionIdentifier()])
+    if (![connectionIdentifier isEqualToString:connectionToTarget->connectionIdentifier()])
         return;
 
-    connection->close();
-    m_connectionMap.remove(identifier);
+    connectionToTarget->close();
+    m_targetConnectionMap.remove(targetIdentifier);
 
     updateHasActiveDebugSession();
 
@@ -688,7 +688,7 @@
 
 void RemoteInspector::receivedIndicateMessage(NSDictionary *userInfo)
 {
-    unsigned identifier = [[userInfo objectForKey:WIRPageIdentifierKey] unsignedIntegerValue];
+    unsigned identifier = [[userInfo objectForKey:WIRTargetIdentifierKey] unsignedIntegerValue];
     if (!identifier)
         return;
 
@@ -712,8 +712,8 @@
 
 void RemoteInspector::receivedProxyApplicationSetupMessage(NSDictionary *)
 {
-    ASSERT(m_xpcConnection);
-    if (!m_xpcConnection)
+    ASSERT(m_relayConnection);
+    if (!m_relayConnection)
         return;
 
     if (!m_parentProcessIdentifier || !m_parentProcessAuditData) {
@@ -730,7 +730,7 @@
 
     m_shouldSendParentProcessInformation = false;
 
-    m_xpcConnection->sendMessage(WIRProxyApplicationSetupResponseMessage, @{
+    m_relayConnection->sendMessage(WIRProxyApplicationSetupResponseMessage, @{
         WIRProxyApplicationParentPIDKey: @(m_parentProcessIdentifier),
         WIRProxyApplicationParentAuditDataKey: (NSData *)m_parentProcessAuditData.get(),
     });
@@ -742,8 +742,8 @@
     if (!connectionIdentifier)
         return;
 
-    auto it = m_connectionMap.begin();
-    auto end = m_connectionMap.end();
+    auto it = m_targetConnectionMap.begin();
+    auto end = m_targetConnectionMap.end();
     for (; it != end; ++it) {
         if ([connectionIdentifier isEqualToString:it->value->connectionIdentifier()])
             break;
@@ -754,7 +754,7 @@
 
     auto connection = it->value;
     connection->close();
-    m_connectionMap.remove(it);
+    m_targetConnectionMap.remove(it);
 
     updateHasActiveDebugSession();
 }
@@ -769,10 +769,10 @@
 
 void RemoteInspector::receivedAutomaticInspectionRejectMessage(NSDictionary *userInfo)
 {
-    unsigned rejectionIdentifier = [[userInfo objectForKey:WIRPageIdentifierKey] unsignedIntValue];
+    unsigned rejectionIdentifier = [[userInfo objectForKey:WIRTargetIdentifierKey] unsignedIntValue];
 
-    ASSERT(rejectionIdentifier == m_automaticInspectionCandidateIdentifier);
-    if (rejectionIdentifier == m_automaticInspectionCandidateIdentifier)
+    ASSERT(rejectionIdentifier == m_automaticInspectionCandidateTargetIdentifier);
+    if (rejectionIdentifier == m_automaticInspectionCandidateTargetIdentifier)
         m_automaticInspectionPaused = false;
 }
 

Modified: trunk/Source/_javascript_Core/inspector/remote/RemoteInspectorConstants.h (196514 => 196515)


--- trunk/Source/_javascript_Core/inspector/remote/RemoteInspectorConstants.h	2016-02-12 22:34:42 UTC (rev 196514)
+++ trunk/Source/_javascript_Core/inspector/remote/RemoteInspectorConstants.h	2016-02-12 22:35:45 UTC (rev 196515)
@@ -48,7 +48,8 @@
 #define WIRHostApplicationIdentifierKey         @"WIRHostApplicationIdentifierKey"
 #define WIRHostApplicationNameKey               @"WIRHostApplicationNameKey"
 #define WIRConnectionIdentifierKey              @"WIRConnectionIdentifierKey"
-#define WIRPageIdentifierKey                    @"WIRPageIdentifierKey"
+// COMPATABILITY(iOS 9): The key string is intentionally mismatched to support old relays.
+#define WIRTargetIdentifierKey                  @"WIRPageIdentifierKey"
 #define WIRHasLocalDebuggerKey                  @"WIRHasLocalDebuggerKey"
 #define WIRTitleKey                             @"WIRTitleKey"
 #define WIRURLKey                               @"WIRURLKey"
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to