Encapsulate PlatformMessagePortChannel a little better yet
authorap@apple.com <ap@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Mar 2013 02:21:26 +0000 (02:21 +0000)
committerap@apple.com <ap@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Mar 2013 02:21:26 +0000 (02:21 +0000)
https://bugs.webkit.org/show_bug.cgi?id=112479

Reviewed by Sam Weinig.

* dom/MessagePortChannel.h: We no longer expose PlatformMessagePortChannel in
public functions in cross-platform code.

* dom/default/PlatformMessagePortChannel.cpp:
(WebCore::MessagePortChannel::createChannel): Tweaked the factory method to avoid
using the old create() function.
(WebCore::MessagePortChannel::~MessagePortChannel): Removed an unhelpful comment.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@146030 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/dom/MessagePortChannel.h
Source/WebCore/dom/default/PlatformMessagePortChannel.cpp

index 761a591..47d87e0 100644 (file)
@@ -1,3 +1,18 @@
+2013-03-17  Alexey Proskuryakov  <ap@apple.com>
+
+        Encapsulate PlatformMessagePortChannel a little better yet
+        https://bugs.webkit.org/show_bug.cgi?id=112479
+
+        Reviewed by Sam Weinig.
+
+        * dom/MessagePortChannel.h: We no longer expose PlatformMessagePortChannel in
+        public functions in cross-platform code.
+
+        * dom/default/PlatformMessagePortChannel.cpp:
+        (WebCore::MessagePortChannel::createChannel): Tweaked the factory method to avoid
+        using the old create() function.
+        (WebCore::MessagePortChannel::~MessagePortChannel): Removed an unhelpful comment.
+
 2013-03-17  Kent Tamura  <tkent@chromium.org>
 
         INPUT_MULTIPLE_FIELDS_UI: Don't update shadow tree by updating any attribute
index 44f577e..3f70e63 100644 (file)
@@ -58,9 +58,6 @@ namespace WebCore {
     public:
         static void createChannel(PassRefPtr<MessagePort>, PassRefPtr<MessagePort>);
 
-        // Creates a new wrapper for the passed channel.
-        static PassOwnPtr<MessagePortChannel> create(PassRefPtr<PlatformMessagePortChannel>);
-
         // Entangles the channel with a port (called when a port has been cloned, after the clone has been marshaled to its new owning thread and is ready to receive messages).
         // Returns false if the entanglement failed because the port was closed.
         bool entangleIfOpen(MessagePort*);
@@ -103,6 +100,9 @@ namespace WebCore {
         ~MessagePortChannel();
 
 #if PLATFORM(CHROMIUM)
+        // Creates a new wrapper for the passed channel.
+        static PassOwnPtr<MessagePortChannel> create(PassRefPtr<PlatformMessagePortChannel>);
+
         // FIXME: PlatformMessagePortChannel is an implementation detail, and should not be exposed via a public function.
         PlatformMessagePortChannel* channel() const { return m_channel.get(); }
 #endif
index fd065fc..b0a332e 100644 (file)
@@ -42,22 +42,14 @@ void MessagePortChannel::createChannel(PassRefPtr<MessagePort> port1, PassRefPtr
     RefPtr<PlatformMessagePortChannel::MessagePortQueue> queue1 = PlatformMessagePortChannel::MessagePortQueue::create();
     RefPtr<PlatformMessagePortChannel::MessagePortQueue> queue2 = PlatformMessagePortChannel::MessagePortQueue::create();
 
-    // Create proxies for each endpoint.
-    RefPtr<PlatformMessagePortChannel> channel1 = PlatformMessagePortChannel::create(queue1, queue2);
-    RefPtr<PlatformMessagePortChannel> channel2 = PlatformMessagePortChannel::create(queue2, queue1);
+    OwnPtr<MessagePortChannel> channel1 = adoptPtr(new MessagePortChannel(PlatformMessagePortChannel::create(queue1, queue2)));
+    OwnPtr<MessagePortChannel> channel2 = adoptPtr(new MessagePortChannel(PlatformMessagePortChannel::create(queue2, queue1)));
 
-    // Entangle the two endpoints.
-    channel1->m_entangledChannel = channel2;
-    channel2->m_entangledChannel = channel1;
+    channel1->m_channel->m_entangledChannel = channel2->m_channel;
+    channel2->m_channel->m_entangledChannel = channel1->m_channel;
 
-    // Now entangle the proxies with the appropriate local ports.
-    port1->entangle(MessagePortChannel::create(channel2));
-    port2->entangle(MessagePortChannel::create(channel1));
-}
-
-PassOwnPtr<MessagePortChannel> MessagePortChannel::create(PassRefPtr<PlatformMessagePortChannel> channel)
-{
-    return adoptPtr(new MessagePortChannel(channel));
+    port1->entangle(channel2.release());
+    port2->entangle(channel1.release());
 }
 
 MessagePortChannel::MessagePortChannel(PassRefPtr<PlatformMessagePortChannel> channel)
@@ -67,7 +59,6 @@ MessagePortChannel::MessagePortChannel(PassRefPtr<PlatformMessagePortChannel> ch
 
 MessagePortChannel::~MessagePortChannel()
 {
-    // Make sure we close our platform channel when the base is freed, to keep the channel objects from leaking.
     close();
 }