@@ -104,6 +104,59 @@ test_blob(function() {
104104 desc : "A Uint8Array object should be treated as a sequence for the blobParts argument."
105105} ) ;
106106
107+ test ( function ( ) {
108+ assert_throws_js ( TypeError , function ( ) { new Blob ( true ) } ) ;
109+ } , "blobParts not an object: boolean" ) ;
110+
111+ test ( function ( ) {
112+ Boolean . prototype [ Symbol . iterator ] = ( ) => [ "FAIL" ] [ Symbol . iterator ] ( )
113+ this . add_cleanup ( function ( ) { delete Boolean . prototype [ Symbol . iterator ] } ) ;
114+ assert_throws_js ( TypeError , function ( ) { new Blob ( true ) } ) ;
115+ } , "blobParts not an object: boolean with Boolean.prototype[Symbol.iterator]" ) ;
116+
117+ test ( function ( ) {
118+ assert_throws_js ( TypeError , function ( ) { new Blob ( "fail" ) } ) ;
119+ } , "blobParts not an object: string" ) ;
120+
121+ test ( function ( ) {
122+ const original = String . prototype [ Symbol . iterator ] ;
123+ String . prototype [ Symbol . iterator ] = ( ) => [ "FAIL" ] [ Symbol . iterator ] ( )
124+ this . add_cleanup ( function ( ) { String . prototype [ Symbol . iterator ] = original } ) ;
125+ assert_throws_js ( TypeError , function ( ) { new Blob ( "fail" ) } ) ;
126+ } , "blobParts not an object: string with String.prototype[Symbol.iterator]" ) ;
127+
128+ test ( function ( ) {
129+ assert_throws_js ( TypeError , function ( ) { new Blob ( 7 ) } ) ;
130+ } , "blobParts not an object: number" ) ;
131+
132+ test ( function ( ) {
133+ Number . prototype [ Symbol . iterator ] = ( ) => [ "FAIL" ] [ Symbol . iterator ] ( )
134+ this . add_cleanup ( function ( ) { delete Number . prototype [ Symbol . iterator ] } ) ;
135+ assert_throws_js ( TypeError , function ( ) { new Blob ( 7 ) } ) ;
136+ } , "blobParts not an object: number with Number.prototype[Symbol.iterator]" ) ;
137+
138+ test ( function ( ) {
139+ assert_throws_js ( TypeError , function ( ) { new Blob ( 7n ) } ) ;
140+ } , "blobParts not an object: BigInt" ) ;
141+
142+ test ( function ( ) {
143+ BigInt . prototype [ Symbol . iterator ] = ( ) => [ "FAIL" ] [ Symbol . iterator ] ( )
144+ this . add_cleanup ( function ( ) { delete BigInt . prototype [ Symbol . iterator ] } ) ;
145+ assert_throws_js ( TypeError , function ( ) { new Blob ( 7n ) } ) ;
146+ } , "blobParts not an object: BigInt with BigInt.prototype[Symbol.iterator]" ) ;
147+
148+ test ( function ( ) {
149+ const symbol = Symbol ( ) ;
150+ assert_throws_js ( TypeError , function ( ) { new Blob ( symbol ) } ) ;
151+ } , "blobParts not an object: Symbol" ) ;
152+
153+ test ( function ( ) {
154+ const symbol = Symbol ( ) ;
155+ Symbol . prototype [ Symbol . iterator ] = ( ) => [ "FAIL" ] [ Symbol . iterator ] ( )
156+ this . add_cleanup ( function ( ) { delete Symbol . prototype [ Symbol . iterator ] } ) ;
157+ assert_throws_js ( TypeError , function ( ) { new Blob ( symbol ) } ) ;
158+ } , "blobParts not an object: Symbol with Symbol.prototype[Symbol.iterator]" ) ;
159+
107160var test_error = {
108161 name : "test" ,
109162 message : "test error" ,
0 commit comments