Title: [138671] branches/chromium/1364
Revision
138671
Author
k...@google.com
Date
2013-01-02 15:56:13 -0800 (Wed, 02 Jan 2013)

Log Message

Merge 138393
> Expose ArrayBufferView constructor on DOMWindow
> https://bugs.webkit.org/show_bug.cgi?id=105605
> 
> Reviewed by Sam Weinig.
> 
> Source/WebCore:
> 
> Update IDL to track recent spec change exposing ArrayBufferView
> constructor on DOMWindow for instanceof checks. There are no
> constructors exposed in the Web IDL, however, so calling it via
> operator new throws TypeError.
> 
> Test (updated): fast/canvas/webgl/array-unit-tests.html
> 
> * html/canvas/ArrayBufferView.idl:
>     Removed OmitConstructor attribute.
> * page/DOMWindow.idl:
>     Exposed ArrayBufferView constructor function attribute.
> 
> LayoutTests:
> 
> Updated test from Khronos repository.
> 
> * fast/canvas/webgl/array-unit-tests-expected.txt:
> * fast/canvas/webgl/array-unit-tests.html:
> 

TBR=k...@google.com
Review URL: https://codereview.chromium.org/11747006

Modified Paths

Diff

Modified: branches/chromium/1364/LayoutTests/fast/canvas/webgl/array-unit-tests-expected.txt (138670 => 138671)


--- branches/chromium/1364/LayoutTests/fast/canvas/webgl/array-unit-tests-expected.txt	2013-01-02 23:55:40 UTC (rev 138670)
+++ branches/chromium/1364/LayoutTests/fast/canvas/webgl/array-unit-tests-expected.txt	2013-01-02 23:56:13 UTC (rev 138671)
@@ -2,6 +2,21 @@
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
+PASS testSlice
+test inheritance hierarchy of typed array views
+PASS ArrayBufferView does not have [NoInterfaceObject] extended attribute and should be defined
+PASS new Int8Array(1) instanceof ArrayBufferView is true
+PASS new Uint8Array(1) instanceof ArrayBufferView is true
+PASS new Uint8ClampedArray(1) instanceof ArrayBufferView is true
+PASS new Int16Array(1) instanceof ArrayBufferView is true
+PASS new Uint16Array(1) instanceof ArrayBufferView is true
+PASS new Int32Array(1) instanceof ArrayBufferView is true
+PASS new Uint32Array(1) instanceof ArrayBufferView is true
+PASS new Float32Array(1) instanceof ArrayBufferView is true
+PASS new Float64Array(1) instanceof ArrayBufferView is true
+PASS new DataView(new ArrayBuffer(8)) instanceof ArrayBufferView is true
+PASS new ArrayBufferView() threw TypeError
+PASS new Uint8ClampedArray(1) instanceof Uint8Array is true
 PASS test Float32Array SetAndGetPos10ToNeg10
 PASS test Float32Array ConstructWithArrayOfSignedValues
 PASS test Float32Array ConstructWithTypedArrayOfSignedValues

Modified: branches/chromium/1364/LayoutTests/fast/canvas/webgl/array-unit-tests.html (138670 => 138671)


--- branches/chromium/1364/LayoutTests/fast/canvas/webgl/array-unit-tests.html	2013-01-02 23:55:40 UTC (rev 138670)
+++ branches/chromium/1364/LayoutTests/fast/canvas/webgl/array-unit-tests.html	2013-01-02 23:56:13 UTC (rev 138671)
@@ -70,6 +70,7 @@
   }
 
   try {
+    running('testSlice');
     var buffer = new ArrayBuffer(32);
     var array = new Int8Array(buffer);
     for (var i = 0; i < 32; ++i)
@@ -102,6 +103,7 @@
     test("buffer.slice(-20, -8)", 12, 12);
     test("buffer.slice(-40, 16)", 0, 16);
     test("buffer.slice(-40, 40)", 0, 32);
+    pass();
   } catch (e) {
     fail(e);
   }
@@ -218,11 +220,11 @@
   var expectedResults;
 
   if (unsigned) {
-    sourceData = [0.6, 10.6];
+    sourceData = [0.6, 10.6, 0.2, 10.2, 10.5, 11.5];
     if (type === Uint8ClampedArray) {
-      expectedResults = [1, 11];
+      expectedResults = [1, 11, 0, 10, 10, 12];
     } else {
-      expectedResults = [0, 10];
+      expectedResults = [0, 10, 0, 10, 10, 11];
     }
   } else {
     sourceData = [0.6, 10.6, -0.6, -10.6];
@@ -552,6 +554,22 @@
     }
 }
 
+function shouldThrowTypeError(func, text) {
+    var ok = false;
+    try {
+        func();
+    } catch (e) {
+        if (e instanceof TypeError) {
+            ok = true;
+        }
+    }
+    if (ok) {
+        testPassed(text + " threw TypeError");
+    } else {
+        testFailed(text + " should throw TypeError");
+    }
+}
+
 function testConstructionWithOutOfRangeValues(type, name) {
     shouldThrowIndexSizeErr(function() {
         var buffer = new ArrayBuffer(4);
@@ -901,6 +919,34 @@
   }
 }
 
+function testInheritanceHierarchy() {
+  debug('test inheritance hierarchy of typed array views');
+
+  try {
+    var foo = ArrayBufferView;
+    testPassed('ArrayBufferView does not have [NoInterfaceObject] extended attribute and should be defined');
+
+    shouldBe('new Int8Array(1) instanceof ArrayBufferView', 'true');
+    shouldBe('new Uint8Array(1) instanceof ArrayBufferView', 'true');
+    shouldBe('new Uint8ClampedArray(1) instanceof ArrayBufferView', 'true');
+    shouldBe('new Int16Array(1) instanceof ArrayBufferView', 'true');
+    shouldBe('new Uint16Array(1) instanceof ArrayBufferView', 'true');
+    shouldBe('new Int32Array(1) instanceof ArrayBufferView', 'true');
+    shouldBe('new Uint32Array(1) instanceof ArrayBufferView', 'true');
+    shouldBe('new Float32Array(1) instanceof ArrayBufferView', 'true');
+    shouldBe('new Float64Array(1) instanceof ArrayBufferView', 'true');
+    shouldBe('new DataView(new ArrayBuffer(8)) instanceof ArrayBufferView', 'true');
+
+    shouldThrowTypeError(function() { new ArrayBufferView() }, "new ArrayBufferView()");
+  } catch (e) {
+    testFailed('ArrayBufferView does not have [NoInterfaceObject] extended attribute but was not defined');
+  }
+
+  // There is currently only one kind of view that inherits from another
+  shouldBe('new Uint8ClampedArray(1) instanceof Uint8Array', 'true');
+}
+
+
 //
 // Test driver
 //
@@ -909,6 +955,7 @@
   allPassed = true;
 
   testSlice();
+  testInheritanceHierarchy();
 
   // The "name" attribute is a concession to browsers which don't
   // implement the "name" property on function objects

Modified: branches/chromium/1364/Source/WebCore/html/canvas/ArrayBufferView.idl (138670 => 138671)


--- branches/chromium/1364/Source/WebCore/html/canvas/ArrayBufferView.idl	2013-01-02 23:55:40 UTC (rev 138670)
+++ branches/chromium/1364/Source/WebCore/html/canvas/ArrayBufferView.idl	2013-01-02 23:56:13 UTC (rev 138671)
@@ -25,8 +25,7 @@
 
 [
     CustomToJSObject,
-    JSNoStaticTables,
-    OmitConstructor
+    JSNoStaticTables
 ] interface ArrayBufferView {
     readonly attribute ArrayBuffer buffer;
     readonly attribute unsigned long byteOffset;

Modified: branches/chromium/1364/Source/WebCore/page/DOMWindow.idl (138670 => 138671)


--- branches/chromium/1364/Source/WebCore/page/DOMWindow.idl	2013-01-02 23:55:40 UTC (rev 138670)
+++ branches/chromium/1364/Source/WebCore/page/DOMWindow.idl	2013-01-02 23:56:13 UTC (rev 138671)
@@ -528,6 +528,7 @@
     attribute DOMStringMapConstructor DOMStringMap;
 
     attribute ArrayBufferConstructor ArrayBuffer; // Usable with new operator
+    attribute ArrayBufferViewConstructor ArrayBufferView;
     attribute Int8ArrayConstructor Int8Array; // Usable with new operator
     attribute Uint8ArrayConstructor Uint8Array; // Usable with new operator
     attribute Uint8ClampedArrayConstructor Uint8ClampedArray; // Usable with new operator
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to