summaryrefslogtreecommitdiffstats
path: root/webkit/port
diff options
context:
space:
mode:
authorlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-22 00:11:31 +0000
committerlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-22 00:11:31 +0000
commit1653f88fbb35f91b8492e88c7a24ccc88f332148 (patch)
treeb3bf874fa42803a76a4a407cd51640ca263d4e20 /webkit/port
parent8390e3da34c4e21348c58cbb9d1269c3beec1cf3 (diff)
downloadchromium_src-1653f88fbb35f91b8492e88c7a24ccc88f332148.zip
chromium_src-1653f88fbb35f91b8492e88c7a24ccc88f332148.tar.gz
chromium_src-1653f88fbb35f91b8492e88c7a24ccc88f332148.tar.bz2
Update WebKit r44872:44922
Compensate for atwilson@'s change to MessagePorts and add new added layout tests which failure. The deleted *expected files were due to a conversion of a test to dump as text. atwilson's code review was done in http://codereview.chromium.org/131047 BUG=None TEST=None TBR=paulg Review URL: http://codereview.chromium.org/140052 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18898 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/port')
-rw-r--r--webkit/port/bindings/v8/v8_proxy.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/webkit/port/bindings/v8/v8_proxy.cpp b/webkit/port/bindings/v8/v8_proxy.cpp
index 46bff01..1f2a669 100644
--- a/webkit/port/bindings/v8/v8_proxy.cpp
+++ b/webkit/port/bindings/v8/v8_proxy.cpp
@@ -361,11 +361,18 @@ ACTIVE_DOM_OBJECT_TYPES(MAKE_CASE)
// ports are actually entangled in MessagePort::entangle, but to avoid
// forking MessagePort.* this is postponed to GC time. Having this postponed
// has the drawback that the wrappers are "entangled/unentangled" for each
- // GC even though their entnaglement most likely is still the same.
+ // GC even though their entanglement most likely is still the same.
if (type == V8ClassIndex::MESSAGEPORT) {
// Get the port and its entangled port.
MessagePort* port1 = static_cast<MessagePort*>(obj);
- MessagePortProxy* port2 = port1->entangledPort();
+ MessagePort* port2 = port1->locallyEntangledPort();
+
+ // If we are remotely entangled, then mark this object as reachable
+ // (we can't determine reachability directly as the remote object is
+ // out-of-proc).
+ if (port1->isEntangled() && !port2)
+ wrapper.ClearWeak();
+
if (port2 != NULL) {
// As ports are always entangled in pairs only perform the entanglement
// once for each pair (see ASSERT in MessagePort::unentangle()).