diff options
Diffstat (limited to 'components/script/dom/textencoder.rs')
-rw-r--r-- | components/script/dom/textencoder.rs | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/components/script/dom/textencoder.rs b/components/script/dom/textencoder.rs index 765c95ade0b..4df1143531f 100644 --- a/components/script/dom/textencoder.rs +++ b/components/script/dom/textencoder.rs @@ -1,22 +1,19 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -use core::nonzero::NonZero; -use dom::bindings::codegen::Bindings::TextEncoderBinding; -use dom::bindings::codegen::Bindings::TextEncoderBinding::TextEncoderMethods; -use dom::bindings::error::Fallible; -use dom::bindings::js::Root; -use dom::bindings::reflector::{Reflector, reflect_dom_object}; -use dom::bindings::str::{DOMString, USVString}; -use dom::globalscope::GlobalScope; + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +use crate::dom::bindings::codegen::Bindings::TextEncoderBinding::TextEncoderMethods; +use crate::dom::bindings::error::Fallible; +use crate::dom::bindings::reflector::{reflect_dom_object, Reflector}; +use crate::dom::bindings::root::DomRoot; +use crate::dom::bindings::str::{DOMString, USVString}; +use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::JSContext; use dom_struct::dom_struct; -use encoding::EncoderTrap; -use encoding::Encoding; -use encoding::all::UTF_8; -use js::jsapi::{JSContext, JSObject}; -use js::typedarray::{Uint8Array, CreateWith}; +use js::jsapi::JSObject; +use js::typedarray::{CreateWith, Uint8Array}; use std::ptr; +use std::ptr::NonNull; #[dom_struct] pub struct TextEncoder { @@ -30,14 +27,13 @@ impl TextEncoder { } } - pub fn new(global: &GlobalScope) -> Root<TextEncoder> { - reflect_dom_object(box TextEncoder::new_inherited(), - global, - TextEncoderBinding::Wrap) + pub fn new(global: &GlobalScope) -> DomRoot<TextEncoder> { + reflect_dom_object(Box::new(TextEncoder::new_inherited()), global) } // https://encoding.spec.whatwg.org/#dom-textencoder - pub fn Constructor(global: &GlobalScope) -> Fallible<Root<TextEncoder>> { + #[allow(non_snake_case)] + pub fn Constructor(global: &GlobalScope) -> Fallible<DomRoot<TextEncoder>> { Ok(TextEncoder::new(global)) } } @@ -45,17 +41,22 @@ impl TextEncoder { impl TextEncoderMethods for TextEncoder { // https://encoding.spec.whatwg.org/#dom-textencoder-encoding fn Encoding(&self) -> DOMString { - DOMString::from(UTF_8.name()) + DOMString::from("utf-8") } #[allow(unsafe_code)] // https://encoding.spec.whatwg.org/#dom-textencoder-encode - unsafe fn Encode(&self, cx: *mut JSContext, input: USVString) -> NonZero<*mut JSObject> { - let encoded = UTF_8.encode(&input.0, EncoderTrap::Strict).unwrap(); + fn Encode(&self, cx: JSContext, input: USVString) -> NonNull<JSObject> { + let encoded = input.0.as_bytes(); - rooted!(in(cx) let mut js_object = ptr::null_mut()); - assert!(Uint8Array::create(cx, CreateWith::Slice(&encoded), js_object.handle_mut()).is_ok()); + unsafe { + rooted!(in(*cx) let mut js_object = ptr::null_mut::<JSObject>()); + assert!( + Uint8Array::create(*cx, CreateWith::Slice(&encoded), js_object.handle_mut()) + .is_ok() + ); - NonZero::new(js_object.get()) + NonNull::new_unchecked(js_object.get()) + } } } |