diff options
author | nkdalmia <nkdalmia@users.noreply.github.com> | 2014-11-19 16:34:58 -0500 |
---|---|---|
committer | nkdalmia <nkdalmia@users.noreply.github.com> | 2014-12-03 18:31:50 -0500 |
commit | f6fb9f862d59828e83b888da8cab242b38572319 (patch) | |
tree | 6290f9323dbf72dc7b037cf8b44de0d00a738258 /components/script/dom/window.rs | |
parent | 68c90e27970808bddcb8c8a4e782bd4405e67a5c (diff) | |
download | servo-f6fb9f862d59828e83b888da8cab242b38572319.tar.gz servo-f6fb9f862d59828e83b888da8cab242b38572319.zip |
Implement Window.sessionStorage: Storage Task, Storage Methods (excluding Storage event, QuotaExceededError)
Diffstat (limited to 'components/script/dom/window.rs')
-rw-r--r-- | components/script/dom/window.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index faa4dfffdfd..a6df60e92f0 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -20,6 +20,7 @@ use dom::location::Location; use dom::navigator::Navigator; use dom::performance::Performance; use dom::screen::Screen; +use dom::storage::Storage; use layout_interface::NoQuery; use page::Page; use script_task::{ExitWindowMsg, ScriptChan, TriggerLoadMsg, TriggerFragmentMsg}; @@ -30,6 +31,7 @@ use timers::{Interval, NonInterval, TimerId, TimerManager}; use servo_msg::compositor_msg::ScriptListener; use servo_msg::constellation_msg::LoadData; use servo_net::image_cache_task::ImageCacheTask; +use servo_net::storage_task::StorageTask; use servo_util::str::{DOMString,HTML_SPACE_CHARACTERS}; use js::jsapi::JS_EvaluateUCScript; @@ -62,6 +64,7 @@ pub struct Window { navigation_start: u64, navigation_start_precise: f64, screen: MutNullableJS<Screen>, + session_storage: MutNullableJS<Storage>, timers: TimerManager } @@ -106,6 +109,10 @@ impl Window { pub fn get_url(&self) -> Url { self.page().get_url() } + + pub fn storage_task(&self) -> StorageTask { + self.page().storage_task.clone() + } } // http://www.whatwg.org/html/#atob @@ -208,6 +215,14 @@ impl<'a> WindowMethods for JSRef<'a, Window> { self.location.get().unwrap() } + fn SessionStorage(self) -> Temporary<Storage> { + if self.session_storage.get().is_none() { + let session_storage = Storage::new(&global::Window(self)); + self.session_storage.assign(Some(session_storage)); + } + self.session_storage.get().unwrap() + } + fn Console(self) -> Temporary<Console> { if self.console.get().is_none() { let console = Console::new(global::Window(self)); @@ -412,6 +427,7 @@ impl Window { navigation_start: time::get_time().sec as u64, navigation_start_precise: time::precise_time_s(), screen: Default::default(), + session_storage: Default::default(), timers: TimerManager::new() }; |