diff options
author | Yoav Alon <yoava333@gmail.com> | 2016-04-21 22:26:08 +0300 |
---|---|---|
committer | Yoav Alon <yoava333@gmail.com> | 2016-04-22 01:28:35 +0300 |
commit | 711c23ae3939263eef6b5ec41253432be9d0104d (patch) | |
tree | feda020431ce64d458c56c88f0b91fcca416b636 | |
parent | 98ae238adf8a5fa84ac60efbabf137b70804f09e (diff) | |
download | servo-711c23ae3939263eef6b5ec41253432be9d0104d.tar.gz servo-711c23ae3939263eef6b5ec41253432be9d0104d.zip |
updated Blob constructor to use optional, fixes https://github.com/servo/servo/issues/10779
-rw-r--r-- | components/script/dom/blob.rs | 41 | ||||
-rw-r--r-- | components/script/dom/webidls/Blob.webidl | 3 | ||||
-rw-r--r-- | tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini | 4 |
3 files changed, 21 insertions, 27 deletions
diff --git a/components/script/dom/blob.rs b/components/script/dom/blob.rs index de7a7b8c35a..49fc47e8a68 100644 --- a/components/script/dom/blob.rs +++ b/components/script/dom/blob.rs @@ -117,29 +117,28 @@ impl Blob { } // https://w3c.github.io/FileAPI/#constructorBlob - pub fn Constructor(global: GlobalRef) -> Fallible<Root<Blob>> { - Ok(Blob::new(global, Vec::new(), "")) - } - - // https://w3c.github.io/FileAPI/#constructorBlob - pub fn Constructor_(global: GlobalRef, - blobParts: Vec<BlobOrString>, - blobPropertyBag: &BlobBinding::BlobPropertyBag) - -> Fallible<Root<Blob>> { + pub fn Constructor(global: GlobalRef, + blobParts: Option<Vec<BlobOrString>>, + blobPropertyBag: &BlobBinding::BlobPropertyBag) + -> Fallible<Root<Blob>> { // TODO: accept other blobParts types - ArrayBuffer or ArrayBufferView - let bytes: Vec<u8> = blobParts.iter() - .flat_map(|bPart| { - match bPart { - &BlobOrString::String(ref s) => { - UTF_8.encode(s, EncoderTrap::Replace).unwrap() - }, - &BlobOrString::Blob(ref b) => { - b.get_data().get_bytes().to_vec() - }, - } - }) - .collect(); + let bytes: Vec<u8> = match blobParts { + None => Vec::new(), + Some(blobs) => { + blobs.iter().flat_map(|bPart| { + match bPart { + &BlobOrString::String(ref s) => { + UTF_8.encode(s, EncoderTrap::Replace).unwrap() + }, + &BlobOrString::Blob(ref b) => { + b.get_data().get_bytes().to_vec() + }, + } + }) + .collect() + } + }; let typeString = if is_ascii_printable(&blobPropertyBag.type_) { &*blobPropertyBag.type_ } else { diff --git a/components/script/dom/webidls/Blob.webidl b/components/script/dom/webidls/Blob.webidl index bad890fafdc..f5ef8d035e0 100644 --- a/components/script/dom/webidls/Blob.webidl +++ b/components/script/dom/webidls/Blob.webidl @@ -4,8 +4,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ // http://dev.w3.org/2006/webapi/FileAPI/#dfn-Blob -[Constructor, - Constructor(sequence<(/*ArrayBuffer or ArrayBufferView or */Blob or DOMString)> blobParts, +[Constructor(optional sequence<(/*ArrayBuffer or ArrayBufferView or */Blob or DOMString)> blobParts, optional BlobPropertyBag options), Exposed=Window/*,Worker*/] interface Blob { diff --git a/tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini b/tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini index 5f4c6aaa244..233ecbce3d6 100644 --- a/tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini +++ b/tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini @@ -46,7 +46,3 @@ bug: https://github.com/servo/servo/issues/10744 expected: FAIL - [Blob constructor with undefined as first argument] - bug: https://github.com/servo/servo/issues/10779 - expected: FAIL - |