Title: [122628] trunk
Revision
122628
Author
[email protected]
Date
2012-07-13 13:45:55 -0700 (Fri, 13 Jul 2012)

Log Message

Restructure V8Utilities::extractTransferables() with help of toV8Sequence()
https://bugs.webkit.org/show_bug.cgi?id=91208

Patch by Vineet Chaudhary <[email protected]> on 2012-07-13
Reviewed by Kentaro Hara.

Source/WebCore:

We can remove the specialised check for MessagePort from V8Utilities::extractTransferables()
using toV8Sequence() as it validates the passed object for sequence type per WebIDL spec.

No new test as just refactoring.
Existing tests under fast/dom/Window/window-* fast/dom/events/*
covers tests.

* bindings/v8/V8Utilities.cpp:
(WebCore::extractTransferables):

LayoutTests:

We can remove the specialised check for MessagePort from V8Utilities::extractTransferables()
using toV8Sequence() as it validates the passed object for sequence type per WebIDL spec.
Removing port specific expected results.

* platform/chromium-win/fast/workers/worker-context-multi-port-expected.txt: Removed.
* platform/chromium-win/fast/workers/worker-multi-port-expected.txt: Removed.
* platform/chromium/fast/dom/Window/window-postmessage-args-expected.txt: Removed.
* platform/chromium/fast/events/constructors/message-event-constructor-expected.txt: Removed.
* platform/chromium/fast/events/message-port-multi-expected.txt: Rebaselined.

Modified Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (122627 => 122628)


--- trunk/LayoutTests/ChangeLog	2012-07-13 20:40:56 UTC (rev 122627)
+++ trunk/LayoutTests/ChangeLog	2012-07-13 20:45:55 UTC (rev 122628)
@@ -1,3 +1,20 @@
+2012-07-13  Vineet Chaudhary  <[email protected]>
+
+        Restructure V8Utilities::extractTransferables() with help of toV8Sequence()
+        https://bugs.webkit.org/show_bug.cgi?id=91208
+
+        Reviewed by Kentaro Hara.
+
+        We can remove the specialised check for MessagePort from V8Utilities::extractTransferables()
+        using toV8Sequence() as it validates the passed object for sequence type per WebIDL spec.
+        Removing port specific expected results.
+
+        * platform/chromium-win/fast/workers/worker-context-multi-port-expected.txt: Removed.
+        * platform/chromium-win/fast/workers/worker-multi-port-expected.txt: Removed.
+        * platform/chromium/fast/dom/Window/window-postmessage-args-expected.txt: Removed.
+        * platform/chromium/fast/events/constructors/message-event-constructor-expected.txt: Removed.
+        * platform/chromium/fast/events/message-port-multi-expected.txt: Rebaselined.
+
 2012-07-13  Vincent Scheib  <[email protected]>
 
         Pointer Lock handles disconnected DOM elements

Deleted: trunk/LayoutTests/platform/chromium/fast/dom/Window/window-postmessage-args-expected.txt (122627 => 122628)


--- trunk/LayoutTests/platform/chromium/fast/dom/Window/window-postmessage-args-expected.txt	2012-07-13 20:40:56 UTC (rev 122627)
+++ trunk/LayoutTests/platform/chromium/fast/dom/Window/window-postmessage-args-expected.txt	2012-07-13 20:45:55 UTC (rev 122628)
@@ -1,47 +0,0 @@
-Test that the second argument of window.postMessage is ignored or triggers an error if it is not a message port. You should see PASS message '1' through '7', followed by 'done', with messages 4-7 received below.
-
-PASS: Posting message ('1', 1): threw exception TypeError: TransferArray argument must be an object
-PASS: Posting message ('1', 1): threw exception TypeError: TransferArray argument must be an object
-PASS: Posting message ('2', c): threw exception TypeError: TransferArray argument must be an object
-PASS: Posting message ('2', c): threw exception TypeError: TransferArray argument must be an object
-PASS: Posting message ('3', [object Object]): threw exception TypeError: TransferArray argument has no length attribute
-PASS: Posting message ('3', [object Object]): threw exception TypeError: TransferArray argument has no length attribute
-PASS: Posting message ('4', [object Window]) did not throw an exception
-PASS: Posting message ('4', [object Window]) did not throw an exception
-PASS: Posting message ('4a', *) did not throw an exception
-PASS: Posting message ('4a', *) did not throw an exception
-PASS: Posting message ('5', null) did not throw an exception
-PASS: Posting message ('5', null) did not throw an exception
-PASS: Posting message ('6', undefined) did not throw an exception
-PASS: Posting message ('6', undefined) did not throw an exception
-PASS: Posting message ('7', [object MessagePort],[object MessagePort]) did not throw an exception
-PASS: Posting message ('7a', *) did not throw an exception
-PASS: Posting message ('7', [object MessagePort],[object MessagePort]) did not throw an exception
-PASS: Posting message ('2147483648', null) did not throw an exception
-PASS: Posting message ('2147483648', null) did not throw an exception
-PASS: Posting message ('[object MessagePort]', [object MessagePort],[object MessagePort]) did not throw an exception
-PASS: Posting message ('[object MessagePort]', [object MessagePort],[object MessagePort]) did not throw an exception
-PASS: Posting message ('[object MessagePort],[object MessagePort]', [object MessagePort],[object MessagePort]) did not throw an exception
-PASS: Posting message ('[object ArrayBuffer]', [object ArrayBuffer]) did not throw an exception
-PASS: arrayBuffer neutered
-PASS: view neutered
-PASS: Posting message ('done', undefined) did not throw an exception
-Received message '4' with 0 ports.
-Received message '4' with 0 ports.
-Received message '4a' with 0 ports.
-Received message '4a' with 0 ports.
-Received message '5' with 0 ports.
-Received message '5' with 0 ports.
-Received message '6' with 0 ports.
-Received message '6' with 0 ports.
-Received message '7' with 2 ports.
-Received message '7a' with 2 ports.
-Received message '7' with 2 ports.
-Received message '2147483648' with 0 ports.
-Received message '2147483648' with 0 ports.
-Received message '[object MessagePort]' with 2 ports.
-Received message '[object MessagePort]' with 2 ports.
-Received message '[object MessagePort],[object MessagePort]' with 2 ports.
-Received message '[object ArrayBuffer]' with 0 ports.
-Received message 'done' with 0 ports.
-

Deleted: trunk/LayoutTests/platform/chromium/fast/events/constructors/message-event-constructor-expected.txt (122627 => 122628)


--- trunk/LayoutTests/platform/chromium/fast/events/constructors/message-event-constructor-expected.txt	2012-07-13 20:40:56 UTC (rev 122627)
+++ trunk/LayoutTests/platform/chromium/fast/events/constructors/message-event-constructor-expected.txt	2012-07-13 20:45:55 UTC (rev 122628)
@@ -1,108 +0,0 @@
-This tests the constructor for the MessageEvent DOM class.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS new MessageEvent('eventType').bubbles is false
-PASS new MessageEvent('eventType').cancelable is false
-PASS new MessageEvent('eventType').data is null
-PASS new MessageEvent('eventType').origin is ""
-PASS new MessageEvent('eventType').lastEventId is ""
-PASS new MessageEvent('eventType').source is null
-PASS new MessageEvent('eventType').ports is []
-PASS new MessageEvent('eventType', { bubbles: false }).bubbles is false
-PASS new MessageEvent('eventType', { bubbles: true }).bubbles is true
-PASS new MessageEvent('eventType', { cancelable: false }).cancelable is false
-PASS new MessageEvent('eventType', { cancelable: true }).cancelable is true
-PASS new MessageEvent('eventType', { data: test_object }).data is test_object
-PASS new MessageEvent('eventType', { data: document }).data is document
-PASS new MessageEvent('eventType', { data: undefined }).data is undefined
-PASS new MessageEvent('eventType', { data: null }).data is null
-PASS new MessageEvent('eventType', { data: false }).data is false
-PASS new MessageEvent('eventType', { data: true }).data is true
-PASS new MessageEvent('eventType', { data: '' }).data is ""
-PASS new MessageEvent('eventType', { data: 'chocolate' }).data is "chocolate"
-PASS new MessageEvent('eventType', { data: 12345 }).data is 12345
-PASS new MessageEvent('eventType', { data: 18446744073709551615 }).data is 18446744073709552000
-PASS new MessageEvent('eventType', { data: NaN }).data is NaN
-PASS new MessageEvent('eventType', { data: {valueOf: function () { return test_object; } } }).data == test_object is false
-PASS new MessageEvent('eventType', { get data() { return 123; } }).data is 123
-PASS new MessageEvent('eventType', { get data() { throw 'MessageEvent Error'; } }) threw exception MessageEvent Error.
-PASS new MessageEvent('eventType', { origin: 'melancholy' }).origin is "melancholy"
-PASS new MessageEvent('eventType', { origin: '' }).origin is ""
-PASS new MessageEvent('eventType', { origin: undefined }).origin is "undefined"
-PASS new MessageEvent('eventType', { origin: null }).origin is "null"
-PASS new MessageEvent('eventType', { origin: false }).origin is "false"
-PASS new MessageEvent('eventType', { origin: true }).origin is "true"
-PASS new MessageEvent('eventType', { origin: 12345 }).origin is "12345"
-PASS new MessageEvent('eventType', { origin: 18446744073709551615 }).origin is "18446744073709552000"
-PASS new MessageEvent('eventType', { origin: NaN }).origin is "NaN"
-PASS new MessageEvent('eventType', { origin: [] }).origin is ""
-PASS new MessageEvent('eventType', { origin: [1, 2, 3] }).origin is "1,2,3"
-PASS new MessageEvent('eventType', { origin: {melancholy: 12345} }).origin is "[object Object]"
-PASS new MessageEvent('eventType', { origin: {valueOf: function () { return 'melancholy'; } } }).origin is "[object Object]"
-PASS new MessageEvent('eventType', { get origin() { return 123; } }).origin is "123"
-PASS new MessageEvent('eventType', { get origin() { throw 'MessageEvent Error'; } }) threw exception MessageEvent Error.
-PASS new MessageEvent('eventType', { lastEventId: 'melancholy' }).lastEventId is "melancholy"
-PASS new MessageEvent('eventType', { lastEventId: '' }).lastEventId is ""
-PASS new MessageEvent('eventType', { lastEventId: undefined }).lastEventId is "undefined"
-PASS new MessageEvent('eventType', { lastEventId: null }).lastEventId is "null"
-PASS new MessageEvent('eventType', { lastEventId: false }).lastEventId is "false"
-PASS new MessageEvent('eventType', { lastEventId: true }).lastEventId is "true"
-PASS new MessageEvent('eventType', { lastEventId: 12345 }).lastEventId is "12345"
-PASS new MessageEvent('eventType', { lastEventId: 18446744073709551615 }).lastEventId is "18446744073709552000"
-PASS new MessageEvent('eventType', { lastEventId: NaN }).lastEventId is "NaN"
-PASS new MessageEvent('eventType', { lastEventId: [] }).lastEventId is ""
-PASS new MessageEvent('eventType', { lastEventId: [1, 2, 3] }).lastEventId is "1,2,3"
-PASS new MessageEvent('eventType', { lastEventId: {melancholy: 12345} }).lastEventId is "[object Object]"
-PASS new MessageEvent('eventType', { lastEventId: {valueOf: function () { return 'melancholy'; } } }).lastEventId is "[object Object]"
-PASS new MessageEvent('eventType', { get lastEventId() { return 123; } }).lastEventId is "123"
-PASS new MessageEvent('eventType', { get lastEventId() { throw 'MessageEvent Error'; } }) threw exception MessageEvent Error.
-PASS new MessageEvent('eventType', { source: window }).source is window
-PASS new MessageEvent('eventType', { source: this }).source is this
-PASS new MessageEvent('eventType', { source: test_object }).source is null
-PASS new MessageEvent('eventType', { source: document }).source is null
-PASS new MessageEvent('eventType', { source: undefined }).source is null
-PASS new MessageEvent('eventType', { source: null }).source is null
-PASS new MessageEvent('eventType', { source: false }).source is null
-PASS new MessageEvent('eventType', { source: true }).source is null
-PASS new MessageEvent('eventType', { source: '' }).source is null
-PASS new MessageEvent('eventType', { source: 'chocolate' }).source is null
-PASS new MessageEvent('eventType', { source: 12345 }).source is null
-PASS new MessageEvent('eventType', { source: 18446744073709551615 }).source is null
-PASS new MessageEvent('eventType', { source: NaN }).source is null
-PASS new MessageEvent('eventType', { source: {valueOf: function () { return window; } } }).source == window is false
-PASS new MessageEvent('eventType', { get source() { return 123; } }).source is null
-PASS new MessageEvent('eventType', { get source() { throw 'MessageEvent Error'; } }) threw exception MessageEvent Error.
-PASS new MessageEvent('eventType', { ports: [channel.port1, channel.port2, channel.port2] }).ports[0] is channel.port1
-PASS new MessageEvent('eventType', { ports: [channel.port1, channel.port2, channel.port2] }).ports[1] is channel.port2
-PASS new MessageEvent('eventType', { ports: [channel.port1, channel.port2, channel.port2] }).ports[2] is channel.port2
-PASS new MessageEvent('eventType', { ports: [] }).ports is []
-PASS new MessageEvent('eventType', { ports: undefined }).ports is []
-PASS new MessageEvent('eventType', { ports: null }).ports is []
-PASS new MessageEvent('eventType', { ports: [1, 2, 3] }).ports[2] threw exception TypeError: TransferArray argument must contain only Transferables.
-PASS new MessageEvent('eventType', { ports: test_object }).ports threw exception TypeError: TransferArray argument has no length attribute.
-PASS new MessageEvent('eventType', { ports: document }).ports threw exception TypeError: TransferArray argument has no length attribute.
-PASS new MessageEvent('eventType', { ports: false }).ports threw exception TypeError: TransferArray argument must be an object.
-PASS new MessageEvent('eventType', { ports: true }).ports threw exception TypeError: TransferArray argument must be an object.
-PASS new MessageEvent('eventType', { ports: '' }).ports threw exception TypeError: TransferArray argument must be an object.
-PASS new MessageEvent('eventType', { ports: 'chocolate' }).ports threw exception TypeError: TransferArray argument must be an object.
-PASS new MessageEvent('eventType', { ports: 12345 }).ports threw exception TypeError: TransferArray argument must be an object.
-PASS new MessageEvent('eventType', { ports: 18446744073709551615 }).ports threw exception TypeError: TransferArray argument must be an object.
-PASS new MessageEvent('eventType', { ports: NaN }).ports threw exception TypeError: TransferArray argument must be an object.
-PASS new MessageEvent('eventType', { get ports() { return 123; } }).ports threw exception TypeError: TransferArray argument must be an object.
-PASS new MessageEvent('eventType', { get ports() { throw 'MessageEvent Error'; } }) threw exception MessageEvent Error.
-PASS new MessageEvent('eventType', { ports: {valueOf: function () { return [channel.port1, channel.port2, channel.port2]; } } }).ports[0] threw exception TypeError: TransferArray argument has no length attribute.
-PASS new MessageEvent('eventType', { bubbles: true, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source: window, ports: [channel.port1, channel.port2, channel.port2] }).bubbles is true
-PASS new MessageEvent('eventType', { bubbles: true, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source: window, ports: [channel.port1, channel.port2, channel.port2] }).cancelable is true
-PASS new MessageEvent('eventType', { bubbles: true, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source: window, ports: [channel.port1, channel.port2, channel.port2] }).data is test_object
-PASS new MessageEvent('eventType', { bubbles: true, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source: window, ports: [channel.port1, channel.port2, channel.port2] }).origin is "wonderful"
-PASS new MessageEvent('eventType', { bubbles: true, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source: window, ports: [channel.port1, channel.port2, channel.port2] }).lastEventId is "excellent"
-PASS new MessageEvent('eventType', { bubbles: true, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source: window, ports: [channel.port1, channel.port2, channel.port2] }).source is window
-PASS new MessageEvent('eventType', { bubbles: true, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source: window, ports: [channel.port1, channel.port2, channel.port2] }).ports[0] is channel.port1
-PASS new MessageEvent('eventType', { bubbles: true, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source: window, ports: [channel.port1, channel.port2, channel.port2] }).ports[1] is channel.port2
-PASS new MessageEvent('eventType', { bubbles: true, cancelable: true, data: test_object, origin: 'wonderful', lastEventId: 'excellent', source: window, ports: [channel.port1, channel.port2, channel.port2] }).ports[2] is channel.port2
-PASS successfullyParsed is true
-
-TEST COMPLETE
-

Modified: trunk/LayoutTests/platform/chromium/fast/events/message-port-multi-expected.txt (122627 => 122628)


--- trunk/LayoutTests/platform/chromium/fast/events/message-port-multi-expected.txt	2012-07-13 20:40:56 UTC (rev 122627)
+++ trunk/LayoutTests/platform/chromium/fast/events/message-port-multi-expected.txt	2012-07-13 20:45:55 UTC (rev 122628)
@@ -6,9 +6,9 @@
 PASS channel.port1.postMessage("same port", [channel.port1]) threw exception Error: DATA_CLONE_ERR: DOM Exception 25.
 PASS channel.port1.postMessage("entangled port", [channel.port2]) threw exception Error: DATA_CLONE_ERR: DOM Exception 25.
 PASS channel.port1.postMessage("null port", [channel3.port1, null, channel3.port2]) threw exception Error: DATA_CLONE_ERR: DOM Exception 25.
-PASS channel.port1.postMessage("notAPort", [channel3.port1, {}, channel3.port2]) threw exception TypeError: TransferArray argument must contain only Transferables.
-PASS channel.port1.postMessage("notAnArray", channel3.port1) threw exception TypeError: TransferArray argument has no length attribute.
-PASS channel.port1.postMessage("notASequence", [{length: 3}]) threw exception TypeError: TransferArray argument must contain only Transferables.
+PASS channel.port1.postMessage("notAPort", [channel3.port1, {}, channel3.port2]) threw exception TypeError: Type error.
+PASS channel.port1.postMessage("notAnArray", channel3.port1) threw exception TypeError: Type error.
+PASS channel.port1.postMessage("notASequence", [{length: 3}]) threw exception TypeError: Type error.
 PASS channel.port1.postMessage("largeSequence", largePortArray) threw exception Error: DATA_CLONE_ERR: DOM Exception 25.
 PASS event.ports is non-null and zero length when no port sent
 PASS event.ports is non-null and zero length when empty array sent

Deleted: trunk/LayoutTests/platform/chromium-win/fast/workers/worker-context-multi-port-expected.txt (122627 => 122628)


--- trunk/LayoutTests/platform/chromium-win/fast/workers/worker-context-multi-port-expected.txt	2012-07-13 20:40:56 UTC (rev 122627)
+++ trunk/LayoutTests/platform/chromium-win/fast/workers/worker-context-multi-port-expected.txt	2012-07-13 20:45:55 UTC (rev 122628)
@@ -1,16 +0,0 @@
-This test checks the various use cases around sending multiple ports through WorkerGlobalScope.postMessage
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS event.ports is non-null and zero length when no port sent
-PASS event.ports is non-null and zero length when empty array sent
-PASS event.ports contains two ports when two ports sent
-PASS posting a null port did throw: Error: DATA_CLONE_ERR: DOM Exception 25
-PASS posting a non-port did throw: TypeError: TransferArray argument must contain only Transferables
-PASS event.ports contains two ports when two ports re-sent after error
-PASS posting a non-array did throw: TypeError: TransferArray argument has no length attribute
-PASS posting a non-sequence did throw: TypeError: TransferArray argument must contain only Transferables
-
-TEST COMPLETE
-

Deleted: trunk/LayoutTests/platform/chromium-win/fast/workers/worker-multi-port-expected.txt (122627 => 122628)


--- trunk/LayoutTests/platform/chromium-win/fast/workers/worker-multi-port-expected.txt	2012-07-13 20:40:56 UTC (rev 122627)
+++ trunk/LayoutTests/platform/chromium-win/fast/workers/worker-multi-port-expected.txt	2012-07-13 20:45:55 UTC (rev 122628)
@@ -1,16 +0,0 @@
-This test checks the various use cases around sending multiple ports through Worker.postMessage
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS worker.postMessage("null port", [channel3.port1, null, channel3.port2]) threw exception Error: DATA_CLONE_ERR: DOM Exception 25.
-PASS worker.postMessage("notAPort", [channel3.port1, {}, channel3.port2]) threw exception TypeError: TransferArray argument must contain only Transferables.
-PASS worker.postMessage("notAnArray", channel3.port1) threw exception TypeError: TransferArray argument has no length attribute.
-PASS worker.postMessage("notASequence", [{length: 3}]) threw exception TypeError: TransferArray argument must contain only Transferables.
-PASS event.ports is non-null and zero length when no port sent
-PASS event.ports is non-null and zero length when empty array sent
-PASS event.ports contains two ports when two ports sent
-PASS event.ports contains two ports when two ports re-sent after error
-
-TEST COMPLETE
-

Modified: trunk/Source/WebCore/ChangeLog (122627 => 122628)


--- trunk/Source/WebCore/ChangeLog	2012-07-13 20:40:56 UTC (rev 122627)
+++ trunk/Source/WebCore/ChangeLog	2012-07-13 20:45:55 UTC (rev 122628)
@@ -1,3 +1,20 @@
+2012-07-13  Vineet Chaudhary  <[email protected]>
+
+        Restructure V8Utilities::extractTransferables() with help of toV8Sequence()
+        https://bugs.webkit.org/show_bug.cgi?id=91208
+
+        Reviewed by Kentaro Hara.
+
+        We can remove the specialised check for MessagePort from V8Utilities::extractTransferables()
+        using toV8Sequence() as it validates the passed object for sequence type per WebIDL spec.
+
+        No new test as just refactoring.
+        Existing tests under fast/dom/Window/window-* fast/dom/events/*
+        covers tests.
+
+        * bindings/v8/V8Utilities.cpp:
+        (WebCore::extractTransferables):
+
 2012-07-13  Vincent Scheib  <[email protected]>
 
         Pointer Lock handles disconnected DOM elements

Modified: trunk/Source/WebCore/bindings/v8/V8Utilities.cpp (122627 => 122628)


--- trunk/Source/WebCore/bindings/v8/V8Utilities.cpp	2012-07-13 20:40:56 UTC (rev 122627)
+++ trunk/Source/WebCore/bindings/v8/V8Utilities.cpp	2012-07-13 20:45:55 UTC (rev 122628)
@@ -92,26 +92,17 @@
         return true;
     }
 
-    if (!value->IsObject()) {
-        V8Proxy::throwTypeError("TransferArray argument must be an object");
-        return false;
-    }
     uint32_t length = 0;
-    v8::Local<v8::Object> transferrables = v8::Local<v8::Object>::Cast(value);
-
     if (value->IsArray()) {
         v8::Local<v8::Array> array = v8::Local<v8::Array>::Cast(value);
         length = array->Length();
     } else {
-        // Sequence-type object - get the length attribute
-        v8::Local<v8::Value> sequenceLength = transferrables->Get(v8::String::New("length"));
-        if (!sequenceLength->IsNumber()) {
-            V8Proxy::throwTypeError("TransferArray argument has no length attribute");
+        if (toV8Sequence(value, length).IsEmpty())
             return false;
-        }
-        length = sequenceLength->Uint32Value();
     }
 
+    v8::Local<v8::Object> transferrables = v8::Local<v8::Object>::Cast(value);
+
     // Validate the passed array of transferrables.
     for (unsigned int i = 0; i < length; ++i) {
         v8::Local<v8::Value> transferrable = transferrables->Get(i);
@@ -126,7 +117,7 @@
         else if (V8ArrayBuffer::HasInstance(transferrable))
             arrayBuffers.append(V8ArrayBuffer::toNative(v8::Handle<v8::Object>::Cast(transferrable)));
         else {
-            V8Proxy::throwTypeError("TransferArray argument must contain only Transferables");
+            V8Proxy::throwTypeError();
             return false;
         }
     }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to