diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2016-09-27 13:26:21 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2016-10-06 20:59:09 +0200 |
commit | 38273fe7a83313649384a6f265ee9ab816287b18 (patch) | |
tree | 7e66f7d4e4a1aa177e6d1df9d36d502ecbb7f9b5 /components | |
parent | fcb59d305742a18daa083352a9b6e9a45896c9f6 (diff) | |
download | servo-38273fe7a83313649384a6f265ee9ab816287b18.tar.gz servo-38273fe7a83313649384a6f265ee9ab816287b18.zip |
Introduce GlobalScope::crypto
Diffstat (limited to 'components')
-rw-r--r-- | components/script/dom/globalscope.rs | 8 | ||||
-rw-r--r-- | components/script/dom/window.rs | 4 | ||||
-rw-r--r-- | components/script/dom/workerglobalscope.rs | 4 |
3 files changed, 10 insertions, 6 deletions
diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs index de9ee3773d2..0eaf631f0e1 100644 --- a/components/script/dom/globalscope.rs +++ b/components/script/dom/globalscope.rs @@ -2,19 +2,23 @@ * 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 dom::bindings::js::{JS, MutNullableHeap, Root}; use dom::bindings::reflector::Reflectable; +use dom::crypto::Crypto; use dom::eventtarget::EventTarget; use js::jsapi::{JS_GetContext, JS_GetObjectRuntime, JSContext}; #[dom_struct] pub struct GlobalScope { eventtarget: EventTarget, + crypto: MutNullableHeap<JS<Crypto>>, } impl GlobalScope { pub fn new_inherited() -> GlobalScope { GlobalScope { eventtarget: EventTarget::new_inherited(), + crypto: Default::default(), } } @@ -29,4 +33,8 @@ impl GlobalScope { context } } + + pub fn crypto(&self) -> Root<Crypto> { + self.crypto.or_init(|| Crypto::new(self)) + } } diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 0b764f6fa05..148ee2f5eed 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -157,7 +157,6 @@ pub struct Window { history_traversal_task_source: HistoryTraversalTaskSource, #[ignore_heap_size_of = "task sources are hard"] file_reading_task_source: FileReadingTaskSource, - crypto: MutNullableHeap<JS<Crypto>>, navigator: MutNullableHeap<JS<Navigator>>, #[ignore_heap_size_of = "channels are hard"] image_cache_thread: ImageCacheThread, @@ -505,7 +504,7 @@ impl WindowMethods for Window { // https://dvcs.w3.org/hg/webcrypto-api/raw-file/tip/spec/Overview.html#dfn-GlobalCrypto fn Crypto(&self) -> Root<Crypto> { - self.crypto.or_init(|| Crypto::new(self.upcast())) + self.upcast::<GlobalScope>().crypto() } // https://html.spec.whatwg.org/multipage/#dom-frameelement @@ -1638,7 +1637,6 @@ impl Window { history_traversal_task_source: history_task_source, file_reading_task_source: file_task_source, image_cache_chan: image_cache_chan, - crypto: Default::default(), navigator: Default::default(), image_cache_thread: image_cache_thread, mem_profiler_chan: mem_profiler_chan, diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index 83cef1d994f..739e81c87ac 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -89,7 +89,6 @@ pub struct WorkerGlobalScope { resource_threads: ResourceThreads, location: MutNullableHeap<JS<WorkerLocation>>, navigator: MutNullableHeap<JS<WorkerNavigator>>, - crypto: MutNullableHeap<JS<Crypto>>, timers: OneshotTimers, #[ignore_heap_size_of = "Defined in std"] @@ -147,7 +146,6 @@ impl WorkerGlobalScope { resource_threads: init.resource_threads, location: Default::default(), navigator: Default::default(), - crypto: Default::default(), timers: OneshotTimers::new(timer_event_chan, init.scheduler_chan.clone()), mem_profiler_chan: init.mem_profiler_chan, time_profiler_chan: init.time_profiler_chan, @@ -343,7 +341,7 @@ impl WorkerGlobalScopeMethods for WorkerGlobalScope { // https://html.spec.whatwg.org/multipage/#dfn-Crypto fn Crypto(&self) -> Root<Crypto> { - self.crypto.or_init(|| Crypto::new(self.upcast())) + self.upcast::<GlobalScope>().crypto() } // https://html.spec.whatwg.org/multipage/#dom-windowbase64-btoa |