https://bugs.webkit.org/show_bug.cgi?id=68584
Patch by Sergey Glazunov <serg.glazunov@gmail.com> on 2011-09-21
Reviewed by Adam Barth.
Source/WebCore:
Test: fast/dom/message-port-deleted-by-accessor.html
* bindings/v8/custom/V8MessageEventCustom.cpp:
(WebCore::V8MessageEvent::portsAccessorGetter):
LayoutTests:
* fast/dom/message-port-deleted-by-accessor-expected.txt: Added.
* fast/dom/message-port-deleted-by-accessor.html: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95689
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-09-21 Sergey Glazunov <serg.glazunov@gmail.com>
+
+ [Chromium] Protect message ports from being deleted in V8MessageEvent::portsAccessorGetter
+ https://bugs.webkit.org/show_bug.cgi?id=68584
+
+ Reviewed by Adam Barth.
+
+ * fast/dom/message-port-deleted-by-accessor-expected.txt: Added.
+ * fast/dom/message-port-deleted-by-accessor.html: Added.
+
2011-09-21 David Levin <levin@chromium.org>
[chromium] Rebaselines for passing tests and expectation updates/narrowing.
--- /dev/null
+This test passes if it doesn't crash.
--- /dev/null
+<html>
+<head>
+<script>
+if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+
+window.onload = function()
+{
+ channel = new MessageChannel;
+ event = document.createEvent("MessageEvent");
+
+ event.initMessageEvent(0, 0, 0, 0, 0, 0, 0, [channel.port1, channel.port2]);
+
+ Array.prototype.__defineSetter__(0, function() {
+ event.initMessageEvent(0, 0, 0, 0, 0, 0, 0, [ ]);
+ });
+
+ event.ports;
+}
+</script>
+</head>
+<body>
+This test passes if it doesn't crash.
+</body>
+</html>
+2011-09-21 Sergey Glazunov <serg.glazunov@gmail.com>
+
+ [Chromium] Protect message ports from being deleted in V8MessageEvent::portsAccessorGetter
+ https://bugs.webkit.org/show_bug.cgi?id=68584
+
+ Reviewed by Adam Barth.
+
+ Test: fast/dom/message-port-deleted-by-accessor.html
+
+ * bindings/v8/custom/V8MessageEventCustom.cpp:
+ (WebCore::V8MessageEvent::portsAccessorGetter):
+
2011-09-21 Anders Carlsson <andersca@apple.com>
Add back protection against the NSView going away while handling mouseDown
MessagePortArray* ports = event->ports();
if (!ports)
return v8::Array::New(0);
+
+ MessagePortArray portsCopy(*ports);
- v8::Local<v8::Array> portArray = v8::Array::New(ports->size());
- for (size_t i = 0; i < ports->size(); ++i)
- portArray->Set(v8::Integer::New(i), toV8((*ports)[i].get()));
+ v8::Local<v8::Array> portArray = v8::Array::New(portsCopy.size());
+ for (size_t i = 0; i < portsCopy.size(); ++i)
+ portArray->Set(v8::Integer::New(i), toV8(portsCopy[i].get()));
return portArray;
}