Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Side by Side Diff: LayoutTests/fast/files/blob-constructor.html

Issue 1235213004: Blob/File constructors/slice method shouldn't throw on invalid types (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Remove debugging spew Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | LayoutTests/fast/files/blob-constructor-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 2
3 <script src="../../resources/js-test.js"></script> 3 <script src="../../resources/js-test.js"></script>
4 <script> 4 <script>
5 description("Test the Blob constructor."); 5 description("Test the Blob constructor.");
6 6
7 // Test the different ways you can construct a Blob. 7 // Test the different ways you can construct a Blob.
8 shouldBeTrue("(new Blob()) instanceof window.Blob"); 8 shouldBeTrue("(new Blob()) instanceof window.Blob");
9 shouldBeTrue("(new Blob([])) instanceof window.Blob"); 9 shouldBeTrue("(new Blob([])) instanceof window.Blob");
10 shouldBeTrue("(new Blob(['hello'])) instanceof window.Blob"); 10 shouldBeTrue("(new Blob(['hello'])) instanceof window.Blob");
(...skipping 24 matching lines...) Expand all
35 shouldBe("(new Blob([toStringingObj])).size", "8"); 35 shouldBe("(new Blob([toStringingObj])).size", "8");
36 36
37 var throwingObj = { toString: function() { throw "Error"; } }; 37 var throwingObj = { toString: function() { throw "Error"; } };
38 shouldThrow("new Blob([throwingObj])", "'Error'"); 38 shouldThrow("new Blob([throwingObj])", "'Error'");
39 39
40 // Test some invalid property bags. 40 // Test some invalid property bags.
41 shouldBeTrue("(new Blob([], {unknownKey:'value'})) instanceof window.Blob"); // Ignore invalid keys 41 shouldBeTrue("(new Blob([], {unknownKey:'value'})) instanceof window.Blob"); // Ignore invalid keys
42 shouldThrow("new Blob([], {endings:'illegalValue'})", "'TypeError: Failed to con struct \\'Blob\\': The provided value \\'illegalValue\\' is not a valid enum val ue of type NormalizeLineEndings.'"); 42 shouldThrow("new Blob([], {endings:'illegalValue'})", "'TypeError: Failed to con struct \\'Blob\\': The provided value \\'illegalValue\\' is not a valid enum val ue of type NormalizeLineEndings.'");
43 shouldThrow("new Blob([], {endings:throwingObj})", "'Error'"); 43 shouldThrow("new Blob([], {endings:throwingObj})", "'Error'");
44 shouldThrow("new Blob([], {type:throwingObj})", "'Error'"); 44 shouldThrow("new Blob([], {type:throwingObj})", "'Error'");
45 shouldThrow("new Blob([], {type:'hello\u00EE'})", "'SyntaxError: Failed to const ruct \\'Blob\\': The \\'type\\' property must consist of ASCII characters.'");
46 45
47 // Test that order of property bag evaluation is lexigraphical 46 // Test that order of property bag evaluation is lexigraphical
48 var throwingObj1 = { toString: function() { throw "Error 1"; } }; 47 var throwingObj1 = { toString: function() { throw "Error 1"; } };
49 var throwingObj2 = { toString: function() { throw "Error 2"; } }; 48 var throwingObj2 = { toString: function() { throw "Error 2"; } };
50 shouldThrow("new Blob([], {endings:throwingObj1, type:throwingObj2})", "'Error 1 '"); 49 shouldThrow("new Blob([], {endings:throwingObj1, type:throwingObj2})", "'Error 1 '");
51 shouldThrow("new Blob([], {type:throwingObj2, endings:throwingObj1})", "'Error 1 '"); 50 shouldThrow("new Blob([], {type:throwingObj2, endings:throwingObj1})", "'Error 1 '");
52 shouldThrow("new Blob([], {type:throwingObj2, endings:'illegal'})", "'TypeError: Failed to construct \\'Blob\\': The provided value \\'illegal\\' is not a valid enum value of type NormalizeLineEndings.'"); 51 shouldThrow("new Blob([], {type:throwingObj2, endings:'illegal'})", "'TypeError: Failed to construct \\'Blob\\': The provided value \\'illegal\\' is not a valid enum value of type NormalizeLineEndings.'");
53 52
53 // Test non-ASCII type handling
54 shouldBeEqualToString("new Blob([], {type:'hello\u00EE'}).type", "");
55
56 // Test lowercasing of type
57 shouldBeEqualToString("new Blob([], {type:'123ABCabc'}).type", "123abcabc");
58
54 // Test various non-object literals being used as property bags. 59 // Test various non-object literals being used as property bags.
55 shouldBeTrue("(new Blob([], null)) instanceof window.Blob"); 60 shouldBeTrue("(new Blob([], null)) instanceof window.Blob");
56 shouldBeTrue("(new Blob([], undefined)) instanceof window.Blob"); 61 shouldBeTrue("(new Blob([], undefined)) instanceof window.Blob");
57 shouldThrow("(new Blob([], 123)) instanceof window.Blob", "'TypeError: Failed to construct \\'Blob\\': parameter 2 (\\'options\\') is not an object.'"); 62 shouldThrow("(new Blob([], 123)) instanceof window.Blob", "'TypeError: Failed to construct \\'Blob\\': parameter 2 (\\'options\\') is not an object.'");
58 shouldThrow("(new Blob([], 123.4)) instanceof window.Blob", "'TypeError: Failed to construct \\'Blob\\': parameter 2 (\\'options\\') is not an object.'"); 63 shouldThrow("(new Blob([], 123.4)) instanceof window.Blob", "'TypeError: Failed to construct \\'Blob\\': parameter 2 (\\'options\\') is not an object.'");
59 shouldThrow("(new Blob([], true)) instanceof window.Blob", "'TypeError: Failed t o construct \\'Blob\\': parameter 2 (\\'options\\') is not an object.'"); 64 shouldThrow("(new Blob([], true)) instanceof window.Blob", "'TypeError: Failed t o construct \\'Blob\\': parameter 2 (\\'options\\') is not an object.'");
60 shouldThrow("(new Blob([], 'abc')) instanceof window.Blob", "'TypeError: Failed to construct \\'Blob\\': parameter 2 (\\'options\\') is not an object.'"); 65 shouldThrow("(new Blob([], 'abc')) instanceof window.Blob", "'TypeError: Failed to construct \\'Blob\\': parameter 2 (\\'options\\') is not an object.'");
61 shouldBeTrue("(new Blob([], [])) instanceof window.Blob"); 66 shouldBeTrue("(new Blob([], [])) instanceof window.Blob");
62 shouldBeTrue("(new Blob([], /abc/)) instanceof window.Blob"); 67 shouldBeTrue("(new Blob([], /abc/)) instanceof window.Blob");
63 shouldBeTrue("(new Blob([], function () {})) instanceof window.Blob"); 68 shouldBeTrue("(new Blob([], function () {})) instanceof window.Blob");
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 shouldBe("new Blob([(new Float32Array(100)).buffer]).size", "400"); 106 shouldBe("new Blob([(new Float32Array(100)).buffer]).size", "400");
102 shouldBe("new Blob([(new Float64Array(100)).buffer]).size", "800"); 107 shouldBe("new Blob([(new Float64Array(100)).buffer]).size", "800");
103 shouldBe("new Blob([(new Float64Array(100)).buffer, (new Int32Array(100)).buffer , (new Uint8Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer]).si ze", "1400"); 108 shouldBe("new Blob([(new Float64Array(100)).buffer, (new Int32Array(100)).buffer , (new Uint8Array(100)).buffer, (new DataView(new ArrayBuffer(100))).buffer]).si ze", "1400");
104 shouldBe("new Blob([new Blob([(new Int32Array(100)).buffer]), (new Uint8Array(10 0)).buffer, (new Float32Array(100)).buffer, (new DataView(new ArrayBuffer(100))) .buffer]).size", "1000"); 109 shouldBe("new Blob([new Blob([(new Int32Array(100)).buffer]), (new Uint8Array(10 0)).buffer, (new Float32Array(100)).buffer, (new DataView(new ArrayBuffer(100))) .buffer]).size", "1000");
105 110
106 // Test passing blob parts in objects with indexed properties. 111 // Test passing blob parts in objects with indexed properties.
107 // (This depends on the bindings code handling of sequence<T>) 112 // (This depends on the bindings code handling of sequence<T>)
108 shouldBe("new Blob({length: 0}).size", "0"); 113 shouldBe("new Blob({length: 0}).size", "0");
109 shouldBe("new Blob({length: 1, 0: 'string'}).size", "6"); 114 shouldBe("new Blob({length: 1, 0: 'string'}).size", "6");
110 </script> 115 </script>
OLDNEW
« no previous file with comments | « no previous file | LayoutTests/fast/files/blob-constructor-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698