diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-09-26 22:19:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-26 22:19:40 -0500 |
commit | d03f0a20cc0f98ee55fbca65d71ff59026bee323 (patch) | |
tree | d24986eb87d9a4cd885368eea4fae0e673376ba0 | |
parent | cbe54582727e3d756aa084e94520f2f29f9d7c86 (diff) | |
parent | 67a94d81d1e4d553c87e474b66bfebe8d520f175 (diff) | |
download | servo-d03f0a20cc0f98ee55fbca65d71ff59026bee323.tar.gz servo-d03f0a20cc0f98ee55fbca65d71ff59026bee323.zip |
Auto merge of #13405 - ashrko619:textencoder-encoding, r=Ms2ger
Removed support for UTF-16 in TextEncoder
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #13231 (github issue number if applicable).
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13405)
<!-- Reviewable:end -->
-rw-r--r-- | components/script/dom/textencoder.rs | 41 | ||||
-rw-r--r-- | components/script/dom/webidls/TextEncoder.webidl | 2 | ||||
-rw-r--r-- | tests/wpt/metadata/encoding/textencoder-constructor-non-utf.html.ini | 120 |
3 files changed, 11 insertions, 152 deletions
diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs index 674243dded8..996e5d28e98 100644 --- a/components/script/dom/textencoder.rs +++ b/components/script/dom/textencoder.rs @@ -5,75 +5,54 @@ use core::nonzero::NonZero; use dom::bindings::codegen::Bindings::TextEncoderBinding; use dom::bindings::codegen::Bindings::TextEncoderBinding::TextEncoderMethods; -use dom::bindings::error::{Error, Fallible}; +use dom::bindings::error::Fallible; use dom::bindings::global::GlobalRef; use dom::bindings::js::Root; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use dom::bindings::str::{DOMString, USVString}; use encoding::EncoderTrap; -use encoding::label::encoding_from_whatwg_label; -use encoding::types::EncodingRef; +use encoding::Encoding; +use encoding::all::UTF_8; use js::jsapi::{JSContext, JSObject}; use js::jsapi::{JS_GetUint8ArrayData, JS_NewUint8Array}; use libc::uint8_t; -use std::borrow::ToOwned; use std::ptr; #[dom_struct] pub struct TextEncoder { reflector_: Reflector, - #[ignore_heap_size_of = "Defined in rust-encoding"] - encoder: EncodingRef, } impl TextEncoder { - fn new_inherited(encoder: EncodingRef) -> TextEncoder { + fn new_inherited() -> TextEncoder { TextEncoder { reflector_: Reflector::new(), - encoder: encoder, } } - pub fn new(global: GlobalRef, encoder: EncodingRef) -> Root<TextEncoder> { - reflect_dom_object(box TextEncoder::new_inherited(encoder), + pub fn new(global: GlobalRef) -> Root<TextEncoder> { + reflect_dom_object(box TextEncoder::new_inherited(), global, TextEncoderBinding::Wrap) } // https://encoding.spec.whatwg.org/#dom-textencoder - pub fn Constructor(global: GlobalRef, - label: DOMString) -> Fallible<Root<TextEncoder>> { - let encoding = match encoding_from_whatwg_label(&label) { - Some(enc) => enc, - None => { - debug!("Encoding Label Not Supported"); - return Err(Error::Range("The given encoding is not supported.".to_owned())) - } - }; - - match encoding.name() { - "utf-8" | "utf-16be" | "utf-16le" => { - Ok(TextEncoder::new(global, encoding)) - } - _ => { - debug!("Encoding Not UTF"); - Err(Error::Range("The encoding must be utf-8, utf-16le, or utf-16be.".to_owned())) - } - } + pub fn Constructor(global: GlobalRef) -> Fallible<Root<TextEncoder>> { + Ok(TextEncoder::new(global)) } } impl TextEncoderMethods for TextEncoder { // https://encoding.spec.whatwg.org/#dom-textencoder-encoding fn Encoding(&self) -> DOMString { - DOMString::from(self.encoder.name()) + DOMString::from(UTF_8.name()) } #[allow(unsafe_code)] // https://encoding.spec.whatwg.org/#dom-textencoder-encode fn Encode(&self, cx: *mut JSContext, input: USVString) -> NonZero<*mut JSObject> { unsafe { - let encoded = self.encoder.encode(&input.0, EncoderTrap::Strict).unwrap(); + let encoded = UTF_8.encode(&input.0, EncoderTrap::Strict).unwrap(); let length = encoded.len() as u32; rooted!(in(cx) let js_object = JS_NewUint8Array(cx, length)); assert!(!js_object.is_null()); diff --git a/components/script/dom/webidls/TextEncoder.webidl b/components/script/dom/webidls/TextEncoder.webidl index a9eb8a95463..eef46f68edf 100644 --- a/components/script/dom/webidls/TextEncoder.webidl +++ b/components/script/dom/webidls/TextEncoder.webidl @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* https://encoding.spec.whatwg.org/#interface-textencoder */ -[Constructor(optional DOMString utfLabel = "utf-8"), Exposed=(Window,Worker)] +[Constructor, Exposed=(Window,Worker)] interface TextEncoder { readonly attribute DOMString encoding; [NewObject] diff --git a/tests/wpt/metadata/encoding/textencoder-constructor-non-utf.html.ini b/tests/wpt/metadata/encoding/textencoder-constructor-non-utf.html.ini deleted file mode 100644 index 1005a7d11de..00000000000 --- a/tests/wpt/metadata/encoding/textencoder-constructor-non-utf.html.ini +++ /dev/null @@ -1,120 +0,0 @@ -[textencoder-constructor-non-utf.html] - type: testharness - bug: https://github.com/servo/servo/issues/13231 - [Encoding argument not considered for encode: ibm866] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-2] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-3] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-4] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-5] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-6] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-7] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-8] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-8-i] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-10] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-13] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-14] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-15] - expected: FAIL - - [Encoding argument not considered for encode: iso-8859-16] - expected: FAIL - - [Encoding argument not considered for encode: koi8-r] - expected: FAIL - - [Encoding argument not considered for encode: koi8-u] - expected: FAIL - - [Encoding argument not considered for encode: macintosh] - expected: FAIL - - [Encoding argument not considered for encode: windows-874] - expected: FAIL - - [Encoding argument not considered for encode: windows-1250] - expected: FAIL - - [Encoding argument not considered for encode: windows-1251] - expected: FAIL - - [Encoding argument not considered for encode: windows-1252] - expected: FAIL - - [Encoding argument not considered for encode: windows-1253] - expected: FAIL - - [Encoding argument not considered for encode: windows-1254] - expected: FAIL - - [Encoding argument not considered for encode: windows-1255] - expected: FAIL - - [Encoding argument not considered for encode: windows-1256] - expected: FAIL - - [Encoding argument not considered for encode: windows-1257] - expected: FAIL - - [Encoding argument not considered for encode: windows-1258] - expected: FAIL - - [Encoding argument not considered for encode: x-mac-cyrillic] - expected: FAIL - - [Encoding argument not considered for encode: gbk] - expected: FAIL - - [Encoding argument not considered for encode: gb18030] - expected: FAIL - - [Encoding argument not considered for encode: big5] - expected: FAIL - - [Encoding argument not considered for encode: euc-jp] - expected: FAIL - - [Encoding argument not considered for encode: iso-2022-jp] - expected: FAIL - - [Encoding argument not considered for encode: shift_jis] - expected: FAIL - - [Encoding argument not considered for encode: euc-kr] - expected: FAIL - - [Encoding argument not considered for encode: replacement] - expected: FAIL - - [Encoding argument not considered for encode: utf-16be] - expected: FAIL - - [Encoding argument not considered for encode: utf-16le] - expected: FAIL - - [Encoding argument not considered for encode: x-user-defined] - expected: FAIL - |