aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYoav Alon <yoava333@gmail.com>2016-04-21 22:26:08 +0300
committerYoav Alon <yoava333@gmail.com>2016-04-22 01:28:35 +0300
commit711c23ae3939263eef6b5ec41253432be9d0104d (patch)
treefeda020431ce64d458c56c88f0b91fcca416b636
parent98ae238adf8a5fa84ac60efbabf137b70804f09e (diff)
downloadservo-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.rs41
-rw-r--r--components/script/dom/webidls/Blob.webidl3
-rw-r--r--tests/wpt/metadata/FileAPI/blob/Blob-constructor.html.ini4
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
-