aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/Cargo.toml1
-rw-r--r--components/script/dom/bindings/trace.rs4
-rw-r--r--components/script/dom/document.rs35
-rw-r--r--components/script/dom/htmlanchorelement.rs11
-rw-r--r--components/script/dom/htmliframeelement.rs267
-rw-r--r--components/script/dom/htmllinkelement.rs10
-rw-r--r--components/script/dom/webidls/BrowserElement.webidl227
-rw-r--r--components/script/dom/webidls/HTMLIFrameElement.webidl10
-rw-r--r--components/script/dom/webidls/Window.webidl2
-rw-r--r--components/script/dom/window.rs55
-rw-r--r--components/script/dom/xmlhttprequest.rs19
-rw-r--r--components/script/lib.rs1
-rw-r--r--components/script/script_thread.rs64
13 files changed, 39 insertions, 667 deletions
diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml
index 4aae00f551b..cd33e982e7c 100644
--- a/components/script/Cargo.toml
+++ b/components/script/Cargo.toml
@@ -67,7 +67,6 @@ msg = {path = "../msg"}
net_traits = {path = "../net_traits"}
num-traits = "0.1.32"
offscreen_gl_context = { version = "0.14", features = ["serde"] }
-open = "1.1.1"
parking_lot = "0.4"
phf = "0.7.18"
profile_traits = {path = "../profile_traits"}
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs
index a22765395b9..5153b70e72f 100644
--- a/components/script/dom/bindings/trace.rs
+++ b/components/script/dom/bindings/trace.rs
@@ -63,7 +63,7 @@ use js::jsapi::{GCTraceKindToAscii, Heap, JSObject, JSTracer, TraceKind};
use js::jsval::JSVal;
use js::rust::Runtime;
use metrics::{InteractiveMetrics, InteractiveWindow};
-use msg::constellation_msg::{BrowsingContextId, FrameType, PipelineId, TopLevelBrowsingContextId};
+use msg::constellation_msg::{BrowsingContextId, PipelineId, TopLevelBrowsingContextId};
use net_traits::{Metadata, NetworkError, ReferrerPolicy, ResourceThreads};
use net_traits::filemanager_thread::RelativePos;
use net_traits::image::base::{Image, ImageMetadata};
@@ -351,7 +351,7 @@ unsafe_no_jsmanaged_fields!(PropertyDeclarationBlock);
// These three are interdependent, if you plan to put jsmanaged data
// in one of these make sure it is propagated properly to containing structs
unsafe_no_jsmanaged_fields!(DocumentActivity, WindowSizeData, WindowSizeType);
-unsafe_no_jsmanaged_fields!(BrowsingContextId, FrameType, PipelineId, TopLevelBrowsingContextId);
+unsafe_no_jsmanaged_fields!(BrowsingContextId, PipelineId, TopLevelBrowsingContextId);
unsafe_no_jsmanaged_fields!(TimerEventId, TimerSource);
unsafe_no_jsmanaged_fields!(TimelineMarkerType);
unsafe_no_jsmanaged_fields!(WorkerId);
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index e148b939afc..47ba21c8e4d 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -98,7 +98,7 @@ use js::jsapi::{JSContext, JSObject, JSRuntime};
use js::jsapi::JS_GetRuntime;
use metrics::{InteractiveFlag, InteractiveMetrics, InteractiveWindow, ProfilerMetadataFactory, ProgressiveWebMetric};
use mime::{Mime, TopLevel, SubLevel};
-use msg::constellation_msg::{BrowsingContextId, Key, KeyModifiers, KeyState, TopLevelBrowsingContextId};
+use msg::constellation_msg::{BrowsingContextId, Key, KeyModifiers, KeyState};
use net_traits::{FetchResponseMsg, IpcSend, ReferrerPolicy};
use net_traits::CookieSource::NonHTTP;
use net_traits::CoreResourceMsg::{GetCookiesForUrl, SetCookiesForUrl};
@@ -111,7 +111,7 @@ use script_layout_interface::message::{Msg, NodesFromPointQueryType, ReflowGoal}
use script_runtime::{CommonScriptMsg, ScriptThreadEventCategory};
use script_thread::{MainThreadScriptMsg, ScriptThread};
use script_traits::{AnimationState, DocumentActivity, MouseButton, MouseEventType};
-use script_traits::{MozBrowserEvent, MsDuration, ScriptMsg, TouchEventType, TouchId, UntrustedNodeAddress};
+use script_traits::{MsDuration, ScriptMsg, TouchEventType, TouchId, UntrustedNodeAddress};
use servo_arc::Arc;
use servo_atoms::Atom;
use servo_config::prefs::PREFS;
@@ -451,7 +451,6 @@ impl Document {
pub fn set_https_state(&self, https_state: HttpsState) {
self.https_state.set(https_state);
- self.trigger_mozbrowser_event(MozBrowserEvent::SecurityChange(https_state));
}
pub fn is_fully_active(&self) -> bool {
@@ -754,13 +753,9 @@ impl Document {
pub fn set_ready_state(&self, state: DocumentReadyState) {
match state {
DocumentReadyState::Loading => {
- // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserconnected
- self.trigger_mozbrowser_event(MozBrowserEvent::Connected);
update_with_current_time_ms(&self.dom_loading);
},
DocumentReadyState::Complete => {
- // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserloadend
- self.trigger_mozbrowser_event(MozBrowserEvent::LoadEnd);
update_with_current_time_ms(&self.dom_complete);
},
DocumentReadyState::Interactive => update_with_current_time_ms(&self.dom_interactive),
@@ -826,9 +821,6 @@ impl Document {
/// Handles any updates when the document's title has changed.
pub fn title_changed(&self) {
if self.browsing_context().is_some() {
- // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsertitlechange
- self.trigger_mozbrowser_event(MozBrowserEvent::TitleChange(String::from(self.Title())));
-
self.send_title_to_constellation();
}
}
@@ -1410,15 +1402,6 @@ impl Document {
}
}
- pub fn trigger_mozbrowser_event(&self, event: MozBrowserEvent) {
- if PREFS.is_mozbrowser_enabled() {
- if let Some((parent_pipeline_id, _)) = self.window.parent_info() {
- let event = ScriptMsg::MozBrowserEvent(parent_pipeline_id, event);
- self.send_to_constellation(event);
- }
- }
- }
-
/// <https://html.spec.whatwg.org/multipage/#dom-window-requestanimationframe>
pub fn request_animation_frame(&self, callback: AnimationFrameCallback) -> u32 {
let ident = self.animation_frame_ident.get() + 1;
@@ -1857,20 +1840,6 @@ impl Document {
.find(|node| node.browsing_context_id() == Some(browsing_context_id))
}
- /// Find a mozbrowser iframe element in the document.
- pub fn find_mozbrowser_iframe(&self,
- top_level_browsing_context_id: TopLevelBrowsingContextId)
- -> Option<DomRoot<HTMLIFrameElement>>
- {
- match self.find_iframe(BrowsingContextId::from(top_level_browsing_context_id)) {
- None => None,
- Some(iframe) => {
- assert!(iframe.Mozbrowser());
- Some(iframe)
- },
- }
- }
-
pub fn get_dom_loading(&self) -> u64 {
self.dom_loading.get()
}
diff --git a/components/script/dom/htmlanchorelement.rs b/components/script/dom/htmlanchorelement.rs
index 37949572ccc..e48385ed692 100644
--- a/components/script/dom/htmlanchorelement.rs
+++ b/components/script/dom/htmlanchorelement.rs
@@ -28,8 +28,6 @@ use dom_struct::dom_struct;
use html5ever::{LocalName, Prefix};
use net_traits::ReferrerPolicy;
use num_traits::ToPrimitive;
-use script_traits::MozBrowserEvent;
-use servo_config::prefs::PREFS;
use servo_url::ServoUrl;
use std::default::Default;
use style::attr::AttrValue;
@@ -608,13 +606,8 @@ pub fn follow_hyperlink(subject: &Element, hyperlink_suffix: Option<String>, ref
// Step 8: navigate to the URL.
if let Some(target) = target {
- if PREFS.is_mozbrowser_enabled() && !is_current_browsing_context(target.Value()) {
- // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowseropenwindow
- // TODO: referrer and opener
- // TODO: should we send the normalized url or the non-normalized href?
- let event = MozBrowserEvent::OpenWindow(url.into_string(), Some(String::from(target.Value())), None);
- document.trigger_mozbrowser_event(event);
- return
+ if !is_current_browsing_context(target.Value()) {
+ // https://github.com/servo/servo/issues/13241
}
}
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index c1ec4a7435b..b03cfdce07e 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -5,51 +5,34 @@
use document_loader::{LoadBlocker, LoadType};
use dom::attr::Attr;
use dom::bindings::cell::DomRefCell;
-use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementErrorEventDetail;
-use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementIconChangeEventDetail;
-use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementLocationChangeEventDetail;
-use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementOpenTabEventDetail;
-use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementOpenWindowEventDetail;
-use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementSecurityChangeDetail;
-use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementVisibilityChangeEventDetail;
-use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserShowModalPromptEventDetail;
use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding;
use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding::HTMLIFrameElementMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowBinding::WindowMethods;
-use dom::bindings::conversions::ToJSValConvertible;
-use dom::bindings::error::{Error, ErrorResult, Fallible};
use dom::bindings::inheritance::Castable;
use dom::bindings::refcounted::Trusted;
use dom::bindings::reflector::DomObject;
use dom::bindings::root::{LayoutDom, DomRoot, MutNullableDom};
use dom::bindings::str::DOMString;
-use dom::customevent::CustomEvent;
use dom::document::Document;
use dom::domtokenlist::DOMTokenList;
use dom::element::{AttributeMutation, Element, RawLayoutElementHelpers};
-use dom::event::Event;
use dom::eventtarget::EventTarget;
use dom::globalscope::GlobalScope;
use dom::htmlelement::HTMLElement;
use dom::node::{Node, NodeDamage, UnbindContext, document_from_node, window_from_node};
use dom::virtualmethods::VirtualMethods;
-use dom::window::{ReflowReason, Window};
+use dom::window::ReflowReason;
use dom::windowproxy::WindowProxy;
use dom_struct::dom_struct;
use html5ever::{LocalName, Prefix};
use ipc_channel::ipc;
-use js::jsapi::{JSAutoCompartment, JSContext, MutableHandleValue};
-use js::jsval::{NullValue, UndefinedValue};
-use msg::constellation_msg::{FrameType, BrowsingContextId, PipelineId, TopLevelBrowsingContextId, TraversalDirection};
-use net_traits::response::HttpsState;
+use msg::constellation_msg::{BrowsingContextId, PipelineId, TopLevelBrowsingContextId};
use script_layout_interface::message::ReflowGoal;
use script_thread::ScriptThread;
use script_traits::{IFrameLoadInfo, IFrameLoadInfoWithData, JsEvalResult, LoadData, UpdatePipelineIdReason};
-use script_traits::{MozBrowserEvent, NewLayoutInfo, ScriptMsg};
+use script_traits::{NewLayoutInfo, ScriptMsg};
use script_traits::IFrameSandboxState::{IFrameSandboxed, IFrameUnsandboxed};
-use servo_atoms::Atom;
use servo_config::prefs::PREFS;
-use servo_config::servo_version;
use servo_url::ServoUrl;
use std::cell::Cell;
use style::attr::{AttrValue, LengthOrPercentageOrAuto};
@@ -165,8 +148,6 @@ impl HTMLIFrameElement {
let old_pipeline_id = self.pipeline_id();
let new_pipeline_id = PipelineId::new();
self.pending_pipeline_id.set(Some(new_pipeline_id));
- let private_iframe = self.privatebrowsing();
- let frame_type = if self.Mozbrowser() { FrameType::MozBrowserIFrame } else { FrameType::IFrame };
let global_scope = window.upcast::<GlobalScope>();
let load_info = IFrameLoadInfo {
@@ -174,8 +155,7 @@ impl HTMLIFrameElement {
browsing_context_id: browsing_context_id,
top_level_browsing_context_id: top_level_browsing_context_id,
new_pipeline_id: new_pipeline_id,
- is_private: private_iframe,
- frame_type: frame_type,
+ is_private: false, // FIXME
replace: replace,
};
@@ -189,7 +169,7 @@ impl HTMLIFrameElement {
.unwrap();
let new_layout_info = NewLayoutInfo {
- parent_info: Some((global_scope.pipeline_id(), frame_type)),
+ parent_info: Some(global_scope.pipeline_id()),
new_pipeline_id: new_pipeline_id,
browsing_context_id: browsing_context_id,
top_level_browsing_context_id: top_level_browsing_context_id,
@@ -216,11 +196,6 @@ impl HTMLIFrameElement {
.unwrap();
}
}
-
- if PREFS.is_mozbrowser_enabled() {
- // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserloadstart
- self.dispatch_mozbrowser_event(MozBrowserEvent::LoadStart);
- }
}
/// <https://html.spec.whatwg.org/multipage/#process-the-iframe-attributes>
@@ -258,17 +233,6 @@ impl HTMLIFrameElement {
self.navigate_or_reload_child_browsing_context(Some(load_data), NavigationType::Regular, false);
}
- #[allow(unsafe_code)]
- pub fn dispatch_mozbrowser_event(&self, event: MozBrowserEvent) {
- assert!(PREFS.is_mozbrowser_enabled());
-
- if self.Mozbrowser() {
- let window = window_from_node(self);
- let custom_event = build_mozbrowser_custom_event(&window, event);
- custom_event.upcast::<Event>().fire(self.upcast());
- }
- }
-
fn create_nested_browsing_context(&self) {
// Synchronously create a new context and navigate it to about:blank.
let url = ServoUrl::parse("about:blank").unwrap();
@@ -276,12 +240,8 @@ impl HTMLIFrameElement {
let window = window_from_node(self);
let pipeline_id = Some(window.upcast::<GlobalScope>().pipeline_id());
let load_data = LoadData::new(url, pipeline_id, document.get_referrer_policy(), Some(document.url().clone()));
- let (browsing_context_id, top_level_browsing_context_id) = if self.Mozbrowser() {
- let top_level_browsing_context_id = TopLevelBrowsingContextId::new();
- (BrowsingContextId::from(top_level_browsing_context_id), top_level_browsing_context_id)
- } else {
- (BrowsingContextId::new(), window.window_proxy().top_level_browsing_context_id())
- };
+ let browsing_context_id = BrowsingContextId::new();
+ let top_level_browsing_context_id = window.window_proxy().top_level_browsing_context_id();
self.pipeline_id.set(None);
self.pending_pipeline_id.set(None);
self.top_level_browsing_context_id.set(Some(top_level_browsing_context_id));
@@ -358,11 +318,6 @@ impl HTMLIFrameElement {
pub fn change_visibility_status(&self, visibility: bool) {
if self.visibility.get() != visibility {
self.visibility.set(visibility);
-
- // Visibility changes are only exposed to Mozbrowser iframes
- if self.Mozbrowser() {
- self.dispatch_mozbrowser_event(MozBrowserEvent::VisibilityChange(visibility));
- }
}
}
@@ -395,16 +350,6 @@ impl HTMLIFrameElement {
let window = window_from_node(self);
window.reflow(ReflowGoal::Full, ReflowReason::IFrameLoadEvent);
}
-
- /// Check whether the iframe has the mozprivatebrowsing attribute set
- pub fn privatebrowsing(&self) -> bool {
- if self.Mozbrowser() {
- let element = self.upcast::<Element>();
- element.has_attribute(&LocalName::from("mozprivatebrowsing"))
- } else {
- false
- }
- }
}
pub trait HTMLIFrameElementLayoutMethods {
@@ -455,117 +400,6 @@ impl HTMLIFrameElementLayoutMethods for LayoutDom<HTMLIFrameElement> {
}
}
-#[allow(unsafe_code)]
-pub fn build_mozbrowser_custom_event(window: &Window, event: MozBrowserEvent) -> DomRoot<CustomEvent> {
- // TODO(gw): Support mozbrowser event types that have detail which is not a string.
- // See https://developer.mozilla.org/en-US/docs/Web/API/Using_the_Browser_API
- // for a list of mozbrowser events.
- let cx = window.get_cx();
- let _ac = JSAutoCompartment::new(cx, window.reflector().get_jsobject().get());
- rooted!(in(cx) let mut detail = UndefinedValue());
- let event_name = Atom::from(event.name());
- unsafe { build_mozbrowser_event_detail(event, cx, detail.handle_mut()); }
- CustomEvent::new(window.upcast(),
- event_name,
- true,
- true,
- detail.handle())
-}
-
-#[allow(unsafe_code)]
-unsafe fn build_mozbrowser_event_detail(event: MozBrowserEvent,
- cx: *mut JSContext,
- rval: MutableHandleValue) {
- match event {
- MozBrowserEvent::AsyncScroll | MozBrowserEvent::Close | MozBrowserEvent::ContextMenu |
- MozBrowserEvent::LoadEnd | MozBrowserEvent::LoadStart |
- MozBrowserEvent::Connected | MozBrowserEvent::OpenSearch |
- MozBrowserEvent::UsernameAndPasswordRequired => {
- rval.set(NullValue());
- }
- MozBrowserEvent::Error(error_type, description, report) => {
- BrowserElementErrorEventDetail {
- type_: Some(DOMString::from(error_type.name())),
- description: Some(DOMString::from(description)),
- report: Some(DOMString::from(report)),
- version: Some(DOMString::from_string(servo_version())),
- }.to_jsval(cx, rval);
- },
- MozBrowserEvent::SecurityChange(https_state) => {
- BrowserElementSecurityChangeDetail {
- // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsersecuritychange
- state: Some(DOMString::from(match https_state {
- HttpsState::Modern => "secure",
- HttpsState::Deprecated => "broken",
- HttpsState::None => "insecure",
- }.to_owned())),
- // FIXME - Not supported yet:
- trackingContent: None,
- mixedContent: None,
- trackingState: None,
- extendedValidation: None,
- mixedState: None,
- }.to_jsval(cx, rval);
- }
- MozBrowserEvent::TitleChange(ref string) => {
- string.to_jsval(cx, rval);
- }
- MozBrowserEvent::LocationChange(url, can_go_back, can_go_forward) => {
- BrowserElementLocationChangeEventDetail {
- url: Some(DOMString::from(url)),
- canGoBack: Some(can_go_back),
- canGoForward: Some(can_go_forward),
- }.to_jsval(cx, rval);
- }
- MozBrowserEvent::OpenTab(url) => {
- BrowserElementOpenTabEventDetail {
- url: Some(DOMString::from(url)),
- }.to_jsval(cx, rval);
- }
- MozBrowserEvent::OpenWindow(url, target, features) => {
- BrowserElementOpenWindowEventDetail {
- url: Some(DOMString::from(url)),
- target: target.map(DOMString::from),
- features: features.map(DOMString::from),
- }.to_jsval(cx, rval);
- }
- MozBrowserEvent::IconChange(rel, href, sizes) => {
- BrowserElementIconChangeEventDetail {
- rel: Some(DOMString::from(rel)),
- href: Some(DOMString::from(href)),
- sizes: Some(DOMString::from(sizes)),
- }.to_jsval(cx, rval);
- }
- MozBrowserEvent::ShowModalPrompt(prompt_type, title, message, return_value) => {
- BrowserShowModalPromptEventDetail {
- promptType: Some(DOMString::from(prompt_type)),
- title: Some(DOMString::from(title)),
- message: Some(DOMString::from(message)),
- returnValue: Some(DOMString::from(return_value)),
- }.to_jsval(cx, rval)
- }
- MozBrowserEvent::VisibilityChange(visibility) => {
- BrowserElementVisibilityChangeEventDetail {
- visible: Some(visibility),
- }.to_jsval(cx, rval);
- }
- }
-}
-
-pub fn Navigate(iframe: &HTMLIFrameElement, direction: TraversalDirection) -> ErrorResult {
- if iframe.Mozbrowser() {
- if let Some(_) = iframe.top_level_browsing_context_id() {
- let window = window_from_node(iframe);
- let msg = ScriptMsg::TraverseHistory(direction);
- window.upcast::<GlobalScope>().script_to_constellation_chan().send(msg).unwrap();
- return Ok(());
- }
- }
- debug!(concat!("this frame is not mozbrowser: mozbrowser attribute missing, or not a top",
- "level window, or mozbrowser preference not set (use --pref dom.mozbrowser.enabled)"));
- Err(Error::NotSupported)
-}
-
impl HTMLIFrameElementMethods for HTMLIFrameElement {
// https://html.spec.whatwg.org/multipage/#dom-iframe-src
make_url_getter!(Src, "src");
@@ -604,83 +438,11 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement {
Some(document)
}
- // Experimental mozbrowser implementation is based on the webidl
- // present in the gecko source tree, and the documentation here:
- // https://developer.mozilla.org/en-US/docs/Web/API/Using_the_Browser_API
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-mozbrowser
- fn Mozbrowser(&self) -> bool {
- if window_from_node(self).is_mozbrowser() {
- let element = self.upcast::<Element>();
- element.has_attribute(&local_name!("mozbrowser"))
- } else {
- false
- }
- }
-
- // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-mozbrowser
- fn SetMozbrowser(&self, value: bool) {
- let element = self.upcast::<Element>();
- element.set_bool_attribute(&local_name!("mozbrowser"), value);
- }
-
// https://html.spec.whatwg.org/multipage/#attr-iframe-allowfullscreen
make_bool_getter!(AllowFullscreen, "allowfullscreen");
// https://html.spec.whatwg.org/multipage/#attr-iframe-allowfullscreen
make_bool_setter!(SetAllowFullscreen, "allowfullscreen");
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/goBack
- fn GoBack(&self) -> ErrorResult {
- Navigate(self, TraversalDirection::Back(1))
- }
-
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/goForward
- fn GoForward(&self) -> ErrorResult {
- Navigate(self, TraversalDirection::Forward(1))
- }
-
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/reload
- fn Reload(&self, _hard_reload: bool) -> ErrorResult {
- if self.Mozbrowser() {
- if self.upcast::<Node>().is_in_doc_with_browsing_context() {
- self.navigate_or_reload_child_browsing_context(None, NavigationType::Regular, true);
- }
- Ok(())
- } else {
- debug!(concat!("this frame is not mozbrowser: mozbrowser attribute missing, or not a top",
- "level window, or mozbrowser preference not set (use --pref dom.mozbrowser.enabled)"));
- Err(Error::NotSupported)
- }
- }
-
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/setVisible
- fn SetVisible(&self, visible: bool) -> ErrorResult {
- if self.Mozbrowser() {
- self.set_visible(visible);
- Ok(())
- } else {
- debug!(concat!("this frame is not mozbrowser: mozbrowser attribute missing, or not a top",
- "level window, or mozbrowser preference not set (use --pref dom.mozbrowser.enabled)"));
- Err(Error::NotSupported)
- }
- }
-
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/getVisible
- fn GetVisible(&self) -> Fallible<bool> {
- if self.Mozbrowser() {
- Ok(self.visibility.get())
- } else {
- debug!(concat!("this frame is not mozbrowser: mozbrowser attribute missing, or not a top",
- "level window, or mozbrowser preference not set (use --pref dom.mozbrowser.enabled)"));
- Err(Error::NotSupported)
- }
- }
-
-
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/stop
- fn Stop(&self) -> ErrorResult {
- Err(Error::NotSupported)
- }
-
// https://html.spec.whatwg.org/multipage/#dom-dim-width
make_getter!(Width, "width");
// https://html.spec.whatwg.org/multipage/#dom-dim-width
@@ -695,21 +457,6 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement {
make_getter!(FrameBorder, "frameborder");
// https://html.spec.whatwg.org/multipage/#other-elements,-attributes-and-apis:attr-iframe-frameborder
make_setter!(SetFrameBorder, "frameborder");
-
- // check-tidy: no specs after this line
- fn SetMozprivatebrowsing(&self, value: bool) {
- let element = self.upcast::<Element>();
- element.set_bool_attribute(&LocalName::from("mozprivatebrowsing"), value);
- }
-
- fn Mozprivatebrowsing(&self) -> bool {
- if window_from_node(self).is_mozbrowser() {
- let element = self.upcast::<Element>();
- element.has_attribute(&LocalName::from("mozprivatebrowsing"))
- } else {
- false
- }
- }
}
impl VirtualMethods for HTMLIFrameElement {
diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs
index 597a6e2e96f..be4c974bf67 100644
--- a/components/script/dom/htmllinkelement.rs
+++ b/components/script/dom/htmllinkelement.rs
@@ -24,7 +24,7 @@ use dom::virtualmethods::VirtualMethods;
use dom_struct::dom_struct;
use html5ever::{LocalName, Prefix};
use net_traits::ReferrerPolicy;
-use script_traits::{MozBrowserEvent, ScriptMsg};
+use script_traits::ScriptMsg;
use servo_arc::Arc;
use std::borrow::ToOwned;
use std::cell::Cell;
@@ -309,18 +309,12 @@ impl HTMLLinkElement {
}, link_url, cors_setting, integrity_metadata.to_owned());
}
- fn handle_favicon_url(&self, rel: &str, href: &str, sizes: &Option<String>) {
+ fn handle_favicon_url(&self, _rel: &str, href: &str, _sizes: &Option<String>) {
let document = document_from_node(self);
match document.base_url().join(href) {
Ok(url) => {
let event = ScriptMsg::NewFavicon(url.clone());
document.window().upcast::<GlobalScope>().script_to_constellation_chan().send(event).unwrap();
-
- let mozbrowser_event = match *sizes {
- Some(ref sizes) => MozBrowserEvent::IconChange(rel.to_owned(), url.to_string(), sizes.to_owned()),
- None => MozBrowserEvent::IconChange(rel.to_owned(), url.to_string(), "".to_owned())
- };
- document.trigger_mozbrowser_event(mozbrowser_event);
}
Err(e) => debug!("Parsing url {} failed: {}", href, e)
}
diff --git a/components/script/dom/webidls/BrowserElement.webidl b/components/script/dom/webidls/BrowserElement.webidl
deleted file mode 100644
index 4c6273a1cef..00000000000
--- a/components/script/dom/webidls/BrowserElement.webidl
+++ /dev/null
@@ -1,227 +0,0 @@
-/* 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/. */
-
-// https://developer.mozilla.org/en-US/docs/Web/API/Using_the_Browser_API
-
-callback BrowserElementNextPaintEventCallback = void ();
-
-//enum BrowserFindCaseSensitivity { "case-sensitive", "case-insensitive" };
-//enum BrowserFindDirection { "forward", "backward" };
-
-//dictionary BrowserElementDownloadOptions {
-// DOMString? filename;
-// DOMString? referrer;
-//};
-
-//dictionary BrowserElementExecuteScriptOptions {
-// DOMString? url;
-// DOMString? origin;
-//};
-
-[NoInterfaceObject, Exposed=(Window,Worker)]
-interface BrowserElement {
-};
-
-dictionary BrowserElementSecurityChangeDetail {
-
- // state:
- // "insecure" indicates that the data corresponding to
- // the request was received over an insecure channel.
- //
- // "broken" indicates an unknown security state. This
- // may mean that the request is being loaded as part
- // of a page in which some content was received over
- // an insecure channel.
- //
- // "secure" indicates that the data corresponding to the
- // request was received over a secure channel.
- DOMString state;
-
- // trackingState:
- // "loaded_tracking_content": tracking content has been loaded.
- // "blocked_tracking_content": tracking content has been blocked from loading.
- DOMString trackingState;
-
- // mixedState:
- // "blocked_mixed_active_content": Mixed active content has been blocked from loading.
- // "loaded_mixed_active_content": Mixed active content has been loaded.
- DOMString mixedState;
-
- boolean extendedValidation;
- boolean trackingContent;
- boolean mixedContent;
-};
-
-dictionary BrowserElementErrorEventDetail {
- // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsererror
- // just requires a "type" field, but we also provide
- // an optional human-readable description, and
- // an optional machine-readable report (e.g. a backtrace for panics)
- DOMString type;
- DOMString description;
- DOMString report;
- DOMString version;
-};
-
-dictionary BrowserElementLocationChangeEventDetail {
- DOMString url;
- boolean canGoBack;
- boolean canGoForward;
-};
-
-dictionary BrowserElementIconChangeEventDetail {
- DOMString rel;
- DOMString href;
- DOMString sizes;
-};
-
-dictionary BrowserShowModalPromptEventDetail {
- DOMString promptType;
- DOMString title;
- DOMString message;
- DOMString returnValue;
- // TODO(simartin) unblock() callback
-};
-
-dictionary BrowserElementOpenTabEventDetail {
- // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowseropentab
- DOMString url;
-};
-
-dictionary BrowserElementOpenWindowEventDetail {
- // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowseropenwindow
- DOMString url;
- DOMString target;
- DOMString features;
- // Element frameElement;
-};
-
-dictionary BrowserElementVisibilityChangeEventDetail {
- boolean visible;
-};
-
-BrowserElement implements BrowserElementCommon;
-BrowserElement implements BrowserElementPrivileged;
-
-[NoInterfaceObject, Exposed=(Window,Worker)]
-interface BrowserElementCommon {
- [Throws,
- Pref="dom.mozbrowser.enabled"]
- void setVisible(boolean visible);
-
- [Throws,
- Pref="dom.mozbrowser.enabled"]
- boolean getVisible();
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //void setActive(boolean active);
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //boolean getActive();
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //void addNextPaintListener(BrowserElementNextPaintEventCallback listener);
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //void removeNextPaintListener(BrowserElementNextPaintEventCallback listener);
-};
-
-[NoInterfaceObject, Exposed=(Window,Worker)]
-interface BrowserElementPrivileged {
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //void sendMouseEvent(DOMString type,
- // unsigned long x,
- // unsigned long y,
- // unsigned long button,
- // unsigned long clickCount,
- // unsigned long modifiers);
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled",
- // Func="TouchEvent::PrefEnabled"]
- //void sendTouchEvent(DOMString type,
- // sequence<unsigned long> identifiers,
- // sequence<long> x,
- // sequence<long> y,
- // sequence<unsigned long> rx,
- // sequence<unsigned long> ry,
- // sequence<float> rotationAngles,
- // sequence<float> forces,
- // unsigned long count,
- // unsigned long modifiers);
-
- [Func="::dom::window::Window::global_is_mozbrowser", Throws]
- void goBack();
-
- [Func="::dom::window::Window::global_is_mozbrowser", Throws]
- void goForward();
-
- [Func="::dom::window::Window::global_is_mozbrowser", Throws]
- void reload(optional boolean hardReload = false);
-
- [Func="::dom::window::Window::global_is_mozbrowser", Throws]
- void stop();
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //DOMRequest download(DOMString url,
- // optional BrowserElementDownloadOptions options);
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //DOMRequest purgeHistory();
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //DOMRequest getScreenshot([EnforceRange] unsigned long width,
- // [EnforceRange] unsigned long height,
- // optional DOMString mimeType="");
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //void zoom(float zoom);
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //DOMRequest getCanGoBack();
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //DOMRequest getCanGoForward();
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //DOMRequest getContentDimensions();
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //DOMRequest setInputMethodActive(boolean isActive);
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //void setNFCFocus(boolean isFocus);
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //void findAll(DOMString searchString, BrowserFindCaseSensitivity caseSensitivity);
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //void findNext(BrowserFindDirection direction);
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //void clearMatch();
-
- //[Throws,
- // Pref="dom.mozBrowserFramesEnabled"]
- //DOMRequest executeScript(DOMString script,
- // optional BrowserElementExecuteScriptOptions options);
-
-};
diff --git a/components/script/dom/webidls/HTMLIFrameElement.webidl b/components/script/dom/webidls/HTMLIFrameElement.webidl
index bcccb34cb0a..fec8768e8e8 100644
--- a/components/script/dom/webidls/HTMLIFrameElement.webidl
+++ b/components/script/dom/webidls/HTMLIFrameElement.webidl
@@ -46,13 +46,3 @@ partial interface HTMLIFrameElement {
// [CEReactions, TreatNullAs=EmptyString]
// attribute DOMString marginWidth;
};
-
-partial interface HTMLIFrameElement {
- [CEReactions, Func="::dom::window::Window::global_is_mozbrowser"]
- attribute boolean mozbrowser;
-
- [CEReactions, Func="::dom::window::Window::global_is_mozbrowser"]
- attribute boolean mozprivatebrowsing;
-};
-
-HTMLIFrameElement implements BrowserElement;
diff --git a/components/script/dom/webidls/Window.webidl b/components/script/dom/webidls/Window.webidl
index 0ec0489937b..d6da05480cf 100644
--- a/components/script/dom/webidls/Window.webidl
+++ b/components/script/dom/webidls/Window.webidl
@@ -164,8 +164,6 @@ partial interface Window {
void debug(DOMString arg);
void gc();
void trap();
- [Func="Window::global_is_mozbrowser", Throws]
- void openURLInDefaultBrowser(DOMString href);
};
// WebDriver extensions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index c92a04c7cd4..96b19784280 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -32,10 +32,8 @@ use dom::cssstyledeclaration::{CSSModificationAccess, CSSStyleDeclaration, CSSSt
use dom::customelementregistry::CustomElementRegistry;
use dom::document::{AnimationFrameCallback, Document};
use dom::element::Element;
-use dom::event::Event;
use dom::globalscope::GlobalScope;
use dom::history::History;
-use dom::htmliframeelement::build_mozbrowser_custom_event;
use dom::location::Location;
use dom::mediaquerylist::{MediaQueryList, WeakMediaQueryListVec};
use dom::messageevent::MessageEvent;
@@ -54,18 +52,17 @@ use euclid::{Point2D, Vector2D, Rect, Size2D};
use fetch;
use ipc_channel::ipc::{self, IpcSender};
use ipc_channel::router::ROUTER;
-use js::jsapi::{HandleObject, HandleValue, JSAutoCompartment, JSContext};
+use js::jsapi::{HandleValue, JSAutoCompartment, JSContext};
use js::jsapi::{JS_GC, JS_GetRuntime};
use js::jsval::UndefinedValue;
use layout_image::fetch_image_for_layout;
use microtask::MicrotaskQueue;
-use msg::constellation_msg::{FrameType, PipelineId};
+use msg::constellation_msg::PipelineId;
use net_traits::{ResourceThreads, ReferrerPolicy};
use net_traits::image_cache::{ImageCache, ImageResponder, ImageResponse};
use net_traits::image_cache::{PendingImageId, PendingImageResponse};
use net_traits::storage_thread::StorageType;
use num_traits::ToPrimitive;
-use open;
use profile_traits::mem::ProfilerChan as MemProfilerChan;
use profile_traits::time::ProfilerChan as TimeProfilerChan;
use script_layout_interface::{TrustedNodeAddress, PendingImageState};
@@ -76,14 +73,13 @@ use script_layout_interface::rpc::{NodeScrollIdResponse, ResolvedStyleResponse,
use script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort, ScriptThreadEventCategory, Runtime};
use script_thread::{ImageCacheMsg, MainThreadScriptChan, MainThreadScriptMsg};
use script_thread::{ScriptThread, SendableMainThreadScriptChan};
-use script_traits::{ConstellationControlMsg, DocumentState, LoadData, MozBrowserEvent};
+use script_traits::{ConstellationControlMsg, DocumentState, LoadData};
use script_traits::{ScriptToConstellationChan, ScriptMsg, ScrollState, TimerEvent, TimerEventId};
use script_traits::{TimerSchedulerMsg, UntrustedNodeAddress, WindowSizeData, WindowSizeType};
use script_traits::webdriver_msg::{WebDriverJSError, WebDriverJSResult};
use selectors::attr::CaseSensitivity;
use servo_arc;
use servo_config::opts;
-use servo_config::prefs::PREFS;
use servo_geometry::{f32_rect_to_au_rect, MaxRect};
use servo_url::{Host, MutableOrigin, ImmutableOrigin, ServoUrl};
use std::borrow::ToOwned;
@@ -200,7 +196,7 @@ pub struct Window {
resize_event: Cell<Option<(WindowSizeData, WindowSizeType)>>,
/// Parent id associated with this page, if any.
- parent_info: Option<(PipelineId, FrameType)>,
+ parent_info: Option<PipelineId>,
/// Global static data related to the DOM.
dom_static: GlobalStaticData,
@@ -343,7 +339,7 @@ impl Window {
&self.script_chan.0
}
- pub fn parent_info(&self) -> Option<(PipelineId, FrameType)> {
+ pub fn parent_info(&self) -> Option<PipelineId> {
self.parent_info
}
@@ -520,7 +516,7 @@ impl WindowMethods for Window {
// https://html.spec.whatwg.org/multipage/#dom-alert
fn Alert(&self, s: DOMString) {
- // Right now, just print to the console
+ // Print to the console.
// Ensure that stderr doesn't trample through the alert() we use to
// communicate test results (see executorservo.py in wptrunner).
{
@@ -992,17 +988,6 @@ impl WindowMethods for Window {
*self.status.borrow_mut() = status
}
- // check-tidy: no specs after this line
- fn OpenURLInDefaultBrowser(&self, href: DOMString) -> ErrorResult {
- let url = ServoUrl::parse(&href).map_err(|e| {
- Error::Type(format!("Couldn't parse URL: {}", e))
- })?;
- match open::that(url.as_str()) {
- Ok(_) => Ok(()),
- Err(e) => Err(Error::Type(format!("Couldn't open URL: {}", e))),
- }
- }
-
// https://drafts.csswg.org/cssom-view/#dom-window-matchmedia
fn MatchMedia(&self, query: DOMString) -> DomRoot<MediaQueryList> {
let mut input = ParserInput::new(&query);
@@ -1682,31 +1667,7 @@ impl Window {
// https://html.spec.whatwg.org/multipage/#top-level-browsing-context
pub fn is_top_level(&self) -> bool {
- match self.parent_info {
- Some((_, FrameType::IFrame)) => false,
- _ => true,
- }
- }
-
- /// Returns whether this window is mozbrowser.
- pub fn is_mozbrowser(&self) -> bool {
- PREFS.is_mozbrowser_enabled() && self.parent_info().is_none()
- }
-
- /// Returns whether mozbrowser is enabled and `obj` has been created
- /// in a top-level `Window` global.
- #[allow(unsafe_code)]
- pub unsafe fn global_is_mozbrowser(_: *mut JSContext, obj: HandleObject) -> bool {
- GlobalScope::from_object(obj.get())
- .downcast::<Window>()
- .map_or(false, |window| window.is_mozbrowser())
- }
-
- #[allow(unsafe_code)]
- pub fn dispatch_mozbrowser_event(&self, event: MozBrowserEvent) {
- assert!(PREFS.is_mozbrowser_enabled());
- let custom_event = build_mozbrowser_custom_event(&self, event);
- custom_event.upcast::<Event>().fire(self.upcast());
+ self.parent_info.is_none()
}
pub fn evaluate_media_queries_and_report_changes(&self) {
@@ -1769,7 +1730,7 @@ impl Window {
timer_event_chan: IpcSender<TimerEvent>,
layout_chan: Sender<Msg>,
pipelineid: PipelineId,
- parent_info: Option<(PipelineId, FrameType)>,
+ parent_info: Option<PipelineId>,
window_size: Option<WindowSizeData>,
origin: MutableOrigin,
navigation_start: u64,
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 33c62a38cd5..b7b652a6f91 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -60,7 +60,6 @@ use net_traits::trim_http_whitespace;
use network_listener::{NetworkListener, PreInvoke};
use script_traits::DocumentActivity;
use servo_atoms::Atom;
-use servo_config::prefs::PREFS;
use servo_url::ServoUrl;
use std::borrow::ToOwned;
use std::cell::Cell;
@@ -572,20 +571,6 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
unreachable!()
};
- let bypass_cross_origin_check = {
- // We want to be able to do cross-origin requests in browser.html.
- // If the XHR happens in a top level window and the mozbrowser
- // preference is enabled, we allow bypassing the CORS check.
- // This is a temporary measure until we figure out Servo privilege
- // story. See https://github.com/servo/servo/issues/9582
- if let Some(win) = DomRoot::downcast::<Window>(self.global()) {
- let is_root_pipeline = win.parent_info().is_none();
- is_root_pipeline && PREFS.is_mozbrowser_enabled()
- } else {
- false
- }
- };
-
let mut request = RequestInit {
method: self.request_method.borrow().clone(),
url: self.request_url.borrow().clone().unwrap(),
@@ -608,10 +593,6 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
.. RequestInit::default()
};
- if bypass_cross_origin_check {
- request.mode = RequestMode::Navigate;
- }
-
// step 4 (second half)
match extracted_or_serialized {
Some((_, ref content_type)) => {
diff --git a/components/script/lib.rs b/components/script/lib.rs
index a871b320758..e28bf016e55 100644
--- a/components/script/lib.rs
+++ b/components/script/lib.rs
@@ -70,7 +70,6 @@ extern crate msg;
extern crate net_traits;
extern crate num_traits;
extern crate offscreen_gl_context;
-extern crate open;
extern crate parking_lot;
extern crate phf;
#[macro_use]
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index 5cfa02d2974..3a51c812dce 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -77,7 +77,7 @@ use malloc_size_of::MallocSizeOfOps;
use mem::malloc_size_of_including_self;
use metrics::{MAX_TASK_NS, PaintTimeMetrics};
use microtask::{MicrotaskQueue, Microtask};
-use msg::constellation_msg::{BrowsingContextId, FrameType, PipelineId, PipelineNamespace, TopLevelBrowsingContextId};
+use msg::constellation_msg::{BrowsingContextId, PipelineId, PipelineNamespace, TopLevelBrowsingContextId};
use net_traits::{FetchMetadata, FetchResponseListener, FetchResponseMsg};
use net_traits::{Metadata, NetworkError, ReferrerPolicy, ResourceThreads};
use net_traits::image_cache::{ImageCache, PendingImageResponse};
@@ -91,7 +91,7 @@ use script_runtime::{ScriptPort, get_reports, new_rt_and_cx, Runtime};
use script_traits::{CompositorEvent, ConstellationControlMsg};
use script_traits::{DiscardBrowsingContext, DocumentActivity, EventResult};
use script_traits::{InitialScriptState, JsEvalResult, LayoutMsg, LoadData};
-use script_traits::{MouseButton, MouseEventType, MozBrowserEvent, NewLayoutInfo};
+use script_traits::{MouseButton, MouseEventType, NewLayoutInfo};
use script_traits::{ProgressiveWebMetricType, Painter, ScriptMsg, ScriptThreadFactory};
use script_traits::{ScriptToConstellationChan, TimerEvent, TimerSchedulerMsg};
use script_traits::{TimerSource, TouchEventType, TouchId, UntrustedNodeAddress};
@@ -153,7 +153,7 @@ struct InProgressLoad {
/// The top level ancestor browsing context.
top_level_browsing_context_id: TopLevelBrowsingContextId,
/// The parent pipeline and frame type associated with this load, if any.
- parent_info: Option<(PipelineId, FrameType)>,
+ parent_info: Option<PipelineId>,
/// The current window size associated with this pipeline.
window_size: Option<WindowSizeData>,
/// Channel to the layout thread associated with this pipeline.
@@ -179,7 +179,7 @@ impl InProgressLoad {
fn new(id: PipelineId,
browsing_context_id: BrowsingContextId,
top_level_browsing_context_id: TopLevelBrowsingContextId,
- parent_info: Option<(PipelineId, FrameType)>,
+ parent_info: Option<PipelineId>,
layout_chan: Sender<message::Msg>,
window_size: Option<WindowSizeData>,
url: ServoUrl,
@@ -980,7 +980,7 @@ impl ScriptThread {
let origin = if new_layout_info.load_data.url.as_str() != "about:blank" {
MutableOrigin::new(new_layout_info.load_data.url.origin())
} else if let Some(parent) = new_layout_info.parent_info
- .and_then(|(pipeline_id, _)| self.documents.borrow()
+ .and_then(|pipeline_id| self.documents.borrow()
.find_document(pipeline_id)) {
parent.origin().clone()
} else if let Some(creator) = new_layout_info.load_data.creator_pipeline_id
@@ -1168,7 +1168,6 @@ impl ScriptThread {
NotifyVisibilityChange(id, ..) => Some(id),
Navigate(id, ..) => Some(id),
PostMessage(id, ..) => Some(id),
- MozBrowserEvent(id, ..) => Some(id),
UpdatePipelineId(_, _, id, _) => Some(id),
FocusIFrame(id, ..) => Some(id),
WebDriverScriptCommand(id, ..) => Some(id),
@@ -1288,12 +1287,6 @@ impl ScriptThread {
self.handle_visibility_change_complete_msg(parent_pipeline_id, browsing_context_id, visible),
ConstellationControlMsg::PostMessage(pipeline_id, origin, data) =>
self.handle_post_message_msg(pipeline_id, origin, data),
- ConstellationControlMsg::MozBrowserEvent(parent_pipeline_id,
- top_level_browsing_context_id,
- event) =>
- self.handle_mozbrowser_event_msg(parent_pipeline_id,
- top_level_browsing_context_id,
- event),
ConstellationControlMsg::UpdatePipelineId(parent_pipeline_id,
browsing_context_id,
new_pipeline_id,
@@ -1692,27 +1685,6 @@ impl ScriptThread {
}
}
- /// Handles a mozbrowser event, for example see:
- /// <https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowserloadstart>
- fn handle_mozbrowser_event_msg(&self,
- parent_pipeline_id: PipelineId,
- top_level_browsing_context_id: Option<TopLevelBrowsingContextId>,
- event: MozBrowserEvent) {
- let doc = match { self.documents.borrow().find_document(parent_pipeline_id) } {
- None => return warn!("Mozbrowser event after pipeline {} closed.", parent_pipeline_id),
- Some(doc) => doc,
- };
-
- match top_level_browsing_context_id {
- None => doc.window().dispatch_mozbrowser_event(event),
- Some(top_level_browsing_context_id) => match doc.find_mozbrowser_iframe(top_level_browsing_context_id) {
- None => warn!("Mozbrowser event after iframe {}/{} closed.",
- parent_pipeline_id, top_level_browsing_context_id),
- Some(frame_element) => frame_element.dispatch_mozbrowser_event(event),
- },
- }
- }
-
fn handle_update_pipeline_id(&self,
parent_pipeline_id: PipelineId,
browsing_context_id: BrowsingContextId,
@@ -2026,7 +1998,7 @@ impl ScriptThread {
result_receiver.recv().expect("Failed to get frame id from constellation.")
}
- fn ask_constellation_for_parent_info(&self, pipeline_id: PipelineId) -> Option<(PipelineId, FrameType)> {
+ fn ask_constellation_for_parent_info(&self, pipeline_id: PipelineId) -> Option<PipelineId> {
let (result_sender, result_receiver) = ipc::channel().unwrap();
let msg = ScriptMsg::GetParentInfo(pipeline_id, result_sender);
self.script_sender.send((pipeline_id, msg)).expect("Failed to send to constellation.");
@@ -2049,12 +2021,9 @@ impl ScriptThread {
if let Some(window_proxy) = self.window_proxies.borrow().get(&browsing_context_id) {
return Some(DomRoot::from_ref(window_proxy));
}
- let parent = match self.ask_constellation_for_parent_info(pipeline_id) {
- Some((parent_id, FrameType::IFrame)) => self.remote_window_proxy(global_to_clone,
- top_level_browsing_context_id,
- parent_id),
- _ => None,
- };
+ let parent = self.ask_constellation_for_parent_info(pipeline_id).and_then(|parent_id| {
+ self.remote_window_proxy(global_to_clone, top_level_browsing_context_id, parent_id)
+ });
let window_proxy = WindowProxy::new_dissimilar_origin(global_to_clone,
browsing_context_id,
top_level_browsing_context_id,
@@ -2073,22 +2042,21 @@ impl ScriptThread {
window: &Window,
browsing_context_id: BrowsingContextId,
top_level_browsing_context_id: TopLevelBrowsingContextId,
- parent_info: Option<(PipelineId, FrameType)>)
+ parent_info: Option<PipelineId>)
-> DomRoot<WindowProxy>
{
if let Some(window_proxy) = self.window_proxies.borrow().get(&browsing_context_id) {
window_proxy.set_currently_active(&*window);
return DomRoot::from_ref(window_proxy);
}
- let iframe = match parent_info {
- Some((parent_id, FrameType::IFrame)) => self.documents.borrow().find_iframe(parent_id, browsing_context_id),
- _ => None,
- };
+ let iframe = parent_info.and_then(|parent_id| {
+ self.documents.borrow().find_iframe(parent_id, browsing_context_id)
+ });
let parent = match (parent_info, iframe.as_ref()) {
(_, Some(iframe)) => Some(window_from_node(&**iframe).window_proxy()),
- (Some((parent_id, FrameType::IFrame)), _) => self.remote_window_proxy(window.upcast(),
- top_level_browsing_context_id,
- parent_id),
+ (Some(parent_id), _) => self.remote_window_proxy(window.upcast(),
+ top_level_browsing_context_id,
+ parent_id),
_ => None,
};
let window_proxy = WindowProxy::new(&window,