зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #11656 - Reduce the amount of dom code used outside the script crate (from Ms2ger:reduce-dom-exposure); r=nox
Source-Repo: https://github.com/servo/servo Source-Revision: 1e3edf3ca454b91dfdc267c5b2f4347eda9b7cb6
This commit is contained in:
Родитель
b5c0573c3d
Коммит
bd92d57c35
|
@ -34,9 +34,9 @@ use inline::{InlineFragmentNodeInfo, LAST_FRAGMENT_OF_ELEMENT};
|
|||
use list_item::{ListItemFlow, ListStyleTypeContent};
|
||||
use multicol::{MulticolFlow, MulticolColumnFlow};
|
||||
use parallel;
|
||||
use script::dom::bindings::inheritance::{CharacterDataTypeId, ElementTypeId};
|
||||
use script::dom::bindings::inheritance::{HTMLElementTypeId, NodeTypeId};
|
||||
use script::dom::htmlobjectelement::is_image_data;
|
||||
use script::layout_interface::is_image_data;
|
||||
use script::layout_interface::{CharacterDataTypeId, ElementTypeId};
|
||||
use script::layout_interface::{HTMLElementTypeId, NodeTypeId};
|
||||
use std::borrow::ToOwned;
|
||||
use std::collections::LinkedList;
|
||||
use std::marker::PhantomData;
|
||||
|
|
|
@ -30,7 +30,7 @@ use net_traits::image::base::{Image, ImageMetadata};
|
|||
use net_traits::image_cache_thread::{ImageOrMetadataAvailable, UsePlaceholder};
|
||||
use range::*;
|
||||
use rustc_serialize::{Encodable, Encoder};
|
||||
use script::dom::htmlcanvaselement::HTMLCanvasData;
|
||||
use script::layout_interface::HTMLCanvasData;
|
||||
use std::borrow::ToOwned;
|
||||
use std::cmp::{max, min};
|
||||
use std::collections::LinkedList;
|
||||
|
|
|
@ -47,7 +47,7 @@ use query::process_offset_parent_query;
|
|||
use query::{LayoutRPCImpl, process_content_box_request, process_content_boxes_request};
|
||||
use query::{process_node_geometry_request, process_node_layer_id_request, process_node_scroll_area_request};
|
||||
use query::{process_node_overflow_request, process_resolved_style_request, process_margin_style_query};
|
||||
use script::dom::node::OpaqueStyleAndLayoutData;
|
||||
use script::layout_interface::OpaqueStyleAndLayoutData;
|
||||
use script::layout_interface::{LayoutRPC, OffsetParentResponse, NodeOverflowResponse, MarginStyleResponse};
|
||||
use script::layout_interface::{Msg, NewLayoutThreadInfo, Reflow, ReflowQueryType, ScriptReflow};
|
||||
use script::reporter::CSSErrorReporter;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
|
||||
use gfx::display_list::OpaqueNode;
|
||||
use libc::{c_void, uintptr_t};
|
||||
use script::dom::bindings::js::LayoutJS;
|
||||
use script::dom::node::Node;
|
||||
use script::layout_interface::LayoutJS;
|
||||
use script::layout_interface::Node;
|
||||
use script::layout_interface::TrustedNodeAddress;
|
||||
use script_traits::UntrustedNodeAddress;
|
||||
|
||||
|
|
|
@ -39,22 +39,12 @@ use incremental::RestyleDamage;
|
|||
use msg::constellation_msg::PipelineId;
|
||||
use opaque_node::OpaqueNodeMethods;
|
||||
use range::Range;
|
||||
use script::dom::attr::AttrValue;
|
||||
use script::dom::bindings::inheritance::{CharacterDataTypeId, ElementTypeId};
|
||||
use script::dom::bindings::inheritance::{HTMLElementTypeId, NodeTypeId};
|
||||
use script::dom::bindings::js::LayoutJS;
|
||||
use script::dom::characterdata::LayoutCharacterDataHelpers;
|
||||
use script::dom::document::{Document, LayoutDocumentHelpers};
|
||||
use script::dom::element::{Element, LayoutElementHelpers, RawLayoutElementHelpers};
|
||||
use script::dom::htmlcanvaselement::{LayoutHTMLCanvasElementHelpers, HTMLCanvasData};
|
||||
use script::dom::htmliframeelement::HTMLIFrameElement;
|
||||
use script::dom::htmlimageelement::LayoutHTMLImageElementHelpers;
|
||||
use script::dom::htmlinputelement::{HTMLInputElement, LayoutHTMLInputElementHelpers};
|
||||
use script::dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHelpers};
|
||||
use script::dom::node::{CAN_BE_FRAGMENTED, HAS_CHANGED, HAS_DIRTY_DESCENDANTS, IS_DIRTY};
|
||||
use script::dom::node::{LayoutNodeHelpers, Node, OpaqueStyleAndLayoutData};
|
||||
use script::dom::text::Text;
|
||||
use script::layout_interface::TrustedNodeAddress;
|
||||
use script::layout_interface::{CAN_BE_FRAGMENTED, HAS_CHANGED, HAS_DIRTY_DESCENDANTS, IS_DIRTY};
|
||||
use script::layout_interface::{CharacterDataTypeId, Document, Element, ElementTypeId};
|
||||
use script::layout_interface::{HTMLCanvasData, HTMLElementTypeId, LayoutCharacterDataHelpers};
|
||||
use script::layout_interface::{LayoutDocumentHelpers, LayoutElementHelpers, LayoutJS};
|
||||
use script::layout_interface::{LayoutNodeHelpers, Node, NodeTypeId, OpaqueStyleAndLayoutData};
|
||||
use script::layout_interface::{RawLayoutElementHelpers, Text, TrustedNodeAddress};
|
||||
use selectors::matching::{DeclarationBlock, ElementFlags};
|
||||
use selectors::parser::{AttrSelector, NamespaceConstraint};
|
||||
use smallvec::VecLike;
|
||||
|
@ -63,6 +53,7 @@ use std::marker::PhantomData;
|
|||
use std::mem::{transmute, transmute_copy};
|
||||
use std::sync::Arc;
|
||||
use string_cache::{Atom, BorrowedAtom, BorrowedNamespace, Namespace};
|
||||
use style::attr::AttrValue;
|
||||
use style::computed_values::content::ContentItem;
|
||||
use style::computed_values::{content, display};
|
||||
use style::dom::{PresentationalHintsSynthetizer, TDocument, TElement, TNode, UnsafeNode};
|
||||
|
@ -1142,39 +1133,25 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
|
|||
fn selection(&self) -> Option<Range<ByteIndex>> {
|
||||
let this = unsafe { self.get_jsmanaged() };
|
||||
|
||||
let selection = if let Some(area) = this.downcast::<HTMLTextAreaElement>() {
|
||||
unsafe { area.selection_for_layout() }
|
||||
} else if let Some(input) = this.downcast::<HTMLInputElement>() {
|
||||
unsafe { input.selection_for_layout() }
|
||||
} else {
|
||||
return None;
|
||||
};
|
||||
selection.map(|range| Range::new(ByteIndex(range.start as isize),
|
||||
ByteIndex(range.len() as isize)))
|
||||
this.selection().map(|range| {
|
||||
Range::new(ByteIndex(range.start as isize),
|
||||
ByteIndex(range.len() as isize))
|
||||
})
|
||||
}
|
||||
|
||||
fn image_url(&self) -> Option<Url> {
|
||||
unsafe {
|
||||
self.get_jsmanaged().downcast()
|
||||
.expect("not an image!")
|
||||
.image_url()
|
||||
}
|
||||
let this = unsafe { self.get_jsmanaged() };
|
||||
this.image_url()
|
||||
}
|
||||
|
||||
fn canvas_data(&self) -> Option<HTMLCanvasData> {
|
||||
unsafe {
|
||||
let canvas_element = self.get_jsmanaged().downcast();
|
||||
canvas_element.map(|canvas| canvas.data())
|
||||
}
|
||||
let this = unsafe { self.get_jsmanaged() };
|
||||
this.canvas_data()
|
||||
}
|
||||
|
||||
fn iframe_pipeline_id(&self) -> PipelineId {
|
||||
use script::dom::htmliframeelement::HTMLIFrameElementLayoutMethods;
|
||||
unsafe {
|
||||
let iframe_element = self.get_jsmanaged().downcast::<HTMLIFrameElement>()
|
||||
.expect("not an iframe element!");
|
||||
iframe_element.pipeline_id().unwrap()
|
||||
}
|
||||
let this = unsafe { self.get_jsmanaged() };
|
||||
this.iframe_pipeline_id()
|
||||
}
|
||||
|
||||
fn get_colspan(&self) -> u32 {
|
||||
|
|
|
@ -573,3 +573,27 @@ pub enum NetworkError {
|
|||
/// SSL validation error that has to be handled in the HTML parser
|
||||
SslValidation(Url),
|
||||
}
|
||||
|
||||
/// Normalize `slice`, as defined by
|
||||
/// [the Fetch Spec](https://fetch.spec.whatwg.org/#concept-header-value-normalize).
|
||||
pub fn trim_http_whitespace(mut slice: &[u8]) -> &[u8] {
|
||||
const HTTP_WS_BYTES: &'static [u8] = b"\x09\x0A\x0D\x20";
|
||||
|
||||
loop {
|
||||
match slice.split_first() {
|
||||
Some((first, remainder)) if HTTP_WS_BYTES.contains(first) =>
|
||||
slice = remainder,
|
||||
_ => break,
|
||||
}
|
||||
}
|
||||
|
||||
loop {
|
||||
match slice.split_last() {
|
||||
Some((last, remainder)) if HTTP_WS_BYTES.contains(last) =>
|
||||
slice = remainder,
|
||||
_ => break,
|
||||
}
|
||||
}
|
||||
|
||||
slice
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ use std::borrow::ToOwned;
|
|||
use std::cell::Ref;
|
||||
use std::mem;
|
||||
use string_cache::{Atom, Namespace};
|
||||
pub use style::attr::{AttrIdentifier, AttrValue};
|
||||
use style::attr::{AttrIdentifier, AttrValue};
|
||||
|
||||
// https://dom.spec.whatwg.org/#interface-attr
|
||||
#[dom_struct]
|
||||
|
|
|
@ -8,7 +8,6 @@ use std::ascii::AsciiExt;
|
|||
use std::borrow::ToOwned;
|
||||
use std::fmt;
|
||||
use std::hash::{Hash, Hasher};
|
||||
use std::mem;
|
||||
use std::ops;
|
||||
use std::ops::{Deref, DerefMut};
|
||||
use std::str;
|
||||
|
@ -31,12 +30,6 @@ impl ByteString {
|
|||
str::from_utf8(&self.0).ok()
|
||||
}
|
||||
|
||||
/// Returns ownership of the underlying Vec<u8> and copies an empty
|
||||
/// vec in its place
|
||||
pub fn bytes(&mut self) -> Vec<u8> {
|
||||
mem::replace(&mut self.0, Vec::new())
|
||||
}
|
||||
|
||||
/// Returns the length.
|
||||
pub fn len(&self) -> usize {
|
||||
self.0.len()
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use document_loader::{DocumentLoader, LoadType};
|
||||
use dom::activation::{ActivationSource, synthetic_click_activation};
|
||||
use dom::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::DOMRectBinding::DOMRectMethods;
|
||||
use dom::bindings::codegen::Bindings::DocumentBinding;
|
||||
|
@ -120,6 +120,7 @@ use std::ptr;
|
|||
use std::rc::Rc;
|
||||
use std::sync::Arc;
|
||||
use string_cache::{Atom, QualName};
|
||||
use style::attr::AttrValue;
|
||||
use style::context::ReflowGoal;
|
||||
use style::restyle_hints::ElementSnapshot;
|
||||
use style::servo::Stylesheet;
|
||||
|
|
|
@ -8,7 +8,6 @@ use app_units::Au;
|
|||
use cssparser::{Color, ToCss};
|
||||
use devtools_traits::AttrInfo;
|
||||
use dom::activation::Activatable;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::attr::{Attr, AttrHelpersForLayout};
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::AttrBinding::AttrMethods;
|
||||
|
@ -85,7 +84,7 @@ use std::mem;
|
|||
use std::sync::Arc;
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
use string_cache::{Atom, BorrowedAtom, BorrowedNamespace, Namespace, QualName};
|
||||
use style::attr::LengthOrPercentageOrAuto;
|
||||
use style::attr::{AttrValue, LengthOrPercentageOrAuto};
|
||||
use style::element_state::*;
|
||||
use style::parser::ParserContextExtraData;
|
||||
use style::properties::DeclaredValue;
|
||||
|
|
|
@ -2,9 +2,7 @@
|
|||
* 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::activation::Activatable;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::AttrBinding::AttrMethods;
|
||||
use dom::bindings::codegen::Bindings::HTMLAnchorElementBinding;
|
||||
|
@ -29,6 +27,7 @@ use num_traits::ToPrimitive;
|
|||
use script_traits::MozBrowserEvent;
|
||||
use std::default::Default;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use url::Url;
|
||||
use util::prefs::mozbrowser_enabled;
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
* 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::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::HTMLAppletElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLAppletElementBinding::HTMLAppletElementMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
|
@ -13,6 +12,7 @@ use dom::htmlelement::HTMLElement;
|
|||
use dom::node::Node;
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
|
||||
#[dom_struct]
|
||||
pub struct HTMLAppletElement {
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
* 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::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::HTMLAreaElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLAreaElementBinding::HTMLAreaElementMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
|
@ -15,6 +14,7 @@ use dom::node::Node;
|
|||
use dom::virtualmethods::VirtualMethods;
|
||||
use std::default::Default;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
|
||||
#[dom_struct]
|
||||
pub struct HTMLAreaElement {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* 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::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::codegen::Bindings::HTMLBaseElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLBaseElementBinding::HTMLBaseElementMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
|
@ -14,6 +14,7 @@ use dom::htmlelement::HTMLElement;
|
|||
use dom::node::{Node, UnbindContext, document_from_node};
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use url::Url;
|
||||
|
||||
#[dom_struct]
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use cssparser::RGBA;
|
||||
use dom::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::codegen::Bindings::EventHandlerBinding::{EventHandlerNonNull, OnBeforeUnloadEventHandlerNonNull};
|
||||
use dom::bindings::codegen::Bindings::HTMLBodyElementBinding::{self, HTMLBodyElementMethods};
|
||||
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
||||
|
@ -18,6 +18,7 @@ use dom::node::{Node, document_from_node, window_from_node};
|
|||
use dom::virtualmethods::VirtualMethods;
|
||||
use script_traits::ScriptMsg as ConstellationMsg;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use time;
|
||||
use url::Url;
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
use canvas_traits::{CanvasMsg, FromLayoutMsg, CanvasData};
|
||||
use dom::attr::Attr;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::CanvasRenderingContext2DBinding::CanvasRenderingContext2DMethods;
|
||||
use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding;
|
||||
|
@ -33,6 +32,7 @@ use offscreen_gl_context::GLContextAttributes;
|
|||
use rustc_serialize::base64::{STANDARD, ToBase64};
|
||||
use std::iter::repeat;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
|
||||
const DEFAULT_WIDTH: u32 = 300;
|
||||
const DEFAULT_HEIGHT: u32 = 150;
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
use dom::activation::{ActivationSource, synthetic_click_activation};
|
||||
use dom::attr::Attr;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::ElementBinding::ElementMethods;
|
||||
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
|
||||
use dom::bindings::codegen::Bindings::EventHandlerBinding::OnErrorEventHandlerNonNull;
|
||||
|
@ -35,6 +34,7 @@ use std::borrow::ToOwned;
|
|||
use std::default::Default;
|
||||
use std::rc::Rc;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use style::element_state::*;
|
||||
|
||||
#[dom_struct]
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use cssparser::RGBA;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::HTMLFontElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLFontElementBinding::HTMLFontElementMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
|
@ -15,6 +14,7 @@ use dom::htmlelement::HTMLElement;
|
|||
use dom::node::Node;
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use style::values::specified;
|
||||
use util::str::{HTML_SPACE_CHARACTERS, read_numbers};
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
* 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::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::BlobBinding::BlobMethods;
|
||||
use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
|
||||
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
|
||||
|
@ -50,6 +49,7 @@ use std::borrow::ToOwned;
|
|||
use std::cell::Cell;
|
||||
use std::sync::mpsc::Sender;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use task_source::TaskSource;
|
||||
use task_source::dom_manipulation::DOMManipulationTask;
|
||||
use url::form_urlencoded;
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use cssparser::RGBA;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::HTMLHRElementBinding::{self, HTMLHRElementMethods};
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::{LayoutJS, Root};
|
||||
|
@ -14,7 +13,7 @@ use dom::htmlelement::HTMLElement;
|
|||
use dom::node::Node;
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use string_cache::Atom;
|
||||
use style::attr::LengthOrPercentageOrAuto;
|
||||
use style::attr::{AttrValue, LengthOrPercentageOrAuto};
|
||||
|
||||
#[dom_struct]
|
||||
pub struct HTMLHRElement {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use document_loader::{LoadType, LoadBlocker};
|
||||
use dom::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementErrorEventDetail;
|
||||
use dom::bindings::codegen::Bindings::BrowserElementBinding::BrowserElementIconChangeEventDetail;
|
||||
|
@ -42,7 +42,7 @@ use script_traits::IFrameSandboxState::{IFrameSandboxed, IFrameUnsandboxed};
|
|||
use script_traits::{IFrameLoadInfo, MozBrowserEvent, ScriptMsg as ConstellationMsg};
|
||||
use std::cell::Cell;
|
||||
use string_cache::Atom;
|
||||
use style::attr::LengthOrPercentageOrAuto;
|
||||
use style::attr::{AttrValue, LengthOrPercentageOrAuto};
|
||||
use style::context::ReflowGoal;
|
||||
use url::Url;
|
||||
use util::prefs::mozbrowser_enabled;
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
use app_units::Au;
|
||||
use dom::attr::Attr;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::HTMLImageElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementMethods;
|
||||
|
@ -31,7 +30,7 @@ use script_runtime::ScriptThreadEventCategory::UpdateReplacedElement;
|
|||
use script_thread::Runnable;
|
||||
use std::sync::Arc;
|
||||
use string_cache::Atom;
|
||||
use style::attr::LengthOrPercentageOrAuto;
|
||||
use style::attr::{AttrValue, LengthOrPercentageOrAuto};
|
||||
use url::Url;
|
||||
|
||||
#[derive(JSTraceable, HeapSizeOf)]
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use caseless::compatibility_caseless_match_str;
|
||||
use dom::activation::{Activatable, ActivationSource, synthetic_click_activation};
|
||||
use dom::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
|
||||
use dom::bindings::codegen::Bindings::FileListBinding::FileListMethods;
|
||||
|
@ -39,6 +39,7 @@ use std::borrow::ToOwned;
|
|||
use std::cell::Cell;
|
||||
use std::ops::Range;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use style::element_state::*;
|
||||
use textinput::KeyReaction::{DispatchInput, Nothing, RedrawSelection, TriggerDefaultAction};
|
||||
use textinput::Lines::Single;
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use dom::activation::{Activatable, ActivationSource, synthetic_click_activation};
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::HTMLLabelElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLLabelElementBinding::HTMLLabelElementMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
|
@ -18,6 +17,7 @@ use dom::htmlformelement::{FormControl, HTMLFormElement};
|
|||
use dom::node::{document_from_node, Node};
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
|
||||
#[dom_struct]
|
||||
pub struct HTMLLabelElement {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
use cssparser::Parser as CssParser;
|
||||
use document_loader::LoadType;
|
||||
use dom::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::HTMLLinkElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLLinkElementBinding::HTMLLinkElementMethods;
|
||||
|
@ -36,6 +36,7 @@ use std::default::Default;
|
|||
use std::mem;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use style::media_queries::{MediaQueryList, parse_media_query_list};
|
||||
use style::parser::ParserContextExtraData;
|
||||
use style::servo::Stylesheet;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* 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::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::HTMLMetaElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLMetaElementBinding::HTMLMetaElementMethods;
|
||||
|
@ -19,6 +19,7 @@ use dom::virtualmethods::VirtualMethods;
|
|||
use std::ascii::AsciiExt;
|
||||
use std::sync::Arc;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use style::servo::Stylesheet;
|
||||
use style::stylesheets::{CSSRule, Origin};
|
||||
use style::viewport::ViewportRule;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* 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::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::codegen::Bindings::HTMLOptionElementBinding::HTMLOptionElementMethods;
|
||||
use dom::bindings::codegen::Bindings::HTMLSelectElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLSelectElementBinding::HTMLSelectElementMethods;
|
||||
|
@ -23,6 +23,7 @@ use dom::validation::Validatable;
|
|||
use dom::validitystate::ValidityState;
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use style::element_state::*;
|
||||
|
||||
#[dom_struct]
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use cssparser::RGBA;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::HTMLTableCellElementBinding::HTMLTableCellElementMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
|
@ -16,7 +15,7 @@ use dom::htmltablerowelement::HTMLTableRowElement;
|
|||
use dom::node::Node;
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use string_cache::Atom;
|
||||
use style::attr::LengthOrPercentageOrAuto;
|
||||
use style::attr::{AttrValue, LengthOrPercentageOrAuto};
|
||||
|
||||
const DEFAULT_COLSPAN: u32 = 1;
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use cssparser::RGBA;
|
||||
use dom::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::codegen::Bindings::HTMLCollectionBinding::HTMLCollectionMethods;
|
||||
use dom::bindings::codegen::Bindings::HTMLTableElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLTableElementBinding::HTMLTableElementMethods;
|
||||
|
@ -24,7 +24,7 @@ use dom::node::{Node, document_from_node, window_from_node};
|
|||
use dom::virtualmethods::VirtualMethods;
|
||||
use std::cell::Cell;
|
||||
use string_cache::Atom;
|
||||
use style::attr::{LengthOrPercentageOrAuto, parse_unsigned_integer};
|
||||
use style::attr::{AttrValue, LengthOrPercentageOrAuto, parse_unsigned_integer};
|
||||
|
||||
#[dom_struct]
|
||||
pub struct HTMLTableElement {
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use cssparser::RGBA;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::HTMLTableElementBinding::HTMLTableElementMethods;
|
||||
use dom::bindings::codegen::Bindings::HTMLTableRowElementBinding::{self, HTMLTableRowElementMethods};
|
||||
use dom::bindings::codegen::Bindings::HTMLTableSectionElementBinding::HTMLTableSectionElementMethods;
|
||||
|
@ -23,7 +22,7 @@ use dom::htmltablesectionelement::HTMLTableSectionElement;
|
|||
use dom::node::{Node, window_from_node};
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use string_cache::Atom;
|
||||
|
||||
use style::attr::AttrValue;
|
||||
|
||||
#[derive(JSTraceable)]
|
||||
struct CellsFilter;
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use cssparser::RGBA;
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::codegen::Bindings::HTMLTableSectionElementBinding::{self, HTMLTableSectionElementMethods};
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::error::{ErrorResult, Fallible};
|
||||
|
@ -18,6 +17,7 @@ use dom::htmltablerowelement::HTMLTableRowElement;
|
|||
use dom::node::{Node, window_from_node};
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
|
||||
#[dom_struct]
|
||||
pub struct HTMLTableSectionElement {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* 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::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
|
||||
use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding;
|
||||
|
@ -29,6 +29,7 @@ use script_traits::ScriptMsg as ConstellationMsg;
|
|||
use std::cell::Cell;
|
||||
use std::ops::Range;
|
||||
use string_cache::Atom;
|
||||
use style::attr::AttrValue;
|
||||
use style::element_state::*;
|
||||
use textinput::{KeyReaction, Lines, TextInput, SelectionDirection};
|
||||
|
||||
|
|
|
@ -228,9 +228,9 @@ macro_rules! make_atomic_setter(
|
|||
macro_rules! make_legacy_color_setter(
|
||||
( $attr:ident, $htmlname:tt ) => (
|
||||
fn $attr(&self, value: DOMString) {
|
||||
use dom::attr::AttrValue;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::element::Element;
|
||||
use style::attr::AttrValue;
|
||||
let element = self.upcast::<Element>();
|
||||
let value = AttrValue::from_legacy_color(value.into());
|
||||
element.set_attribute(&atom!($htmlname), value)
|
||||
|
|
|
@ -38,8 +38,11 @@ use dom::documenttype::DocumentType;
|
|||
use dom::element::{Element, ElementCreator};
|
||||
use dom::eventtarget::EventTarget;
|
||||
use dom::htmlbodyelement::HTMLBodyElement;
|
||||
use dom::htmlcanvaselement::{LayoutHTMLCanvasElementHelpers, HTMLCanvasData};
|
||||
use dom::htmlcollection::HTMLCollection;
|
||||
use dom::htmlelement::HTMLElement;
|
||||
use dom::htmliframeelement::{HTMLIFrameElement, HTMLIFrameElementLayoutMethods};
|
||||
use dom::htmlimageelement::{HTMLImageElement, LayoutHTMLImageElementHelpers};
|
||||
use dom::htmlinputelement::{HTMLInputElement, LayoutHTMLInputElementHelpers};
|
||||
use dom::htmltextareaelement::{HTMLTextAreaElement, LayoutHTMLTextAreaElementHelpers};
|
||||
use dom::nodelist::NodeList;
|
||||
|
@ -56,6 +59,7 @@ use html5ever::tree_builder::QuirksMode;
|
|||
use js::jsapi::{JSContext, JSObject, JSRuntime};
|
||||
use layout_interface::Msg;
|
||||
use libc::{self, c_void, uintptr_t};
|
||||
use msg::constellation_msg::PipelineId;
|
||||
use parse::html::parse_html_fragment;
|
||||
use ref_slice::ref_slice;
|
||||
use script_traits::UntrustedNodeAddress;
|
||||
|
@ -68,8 +72,10 @@ use std::cmp::max;
|
|||
use std::default::Default;
|
||||
use std::iter::{self, FilterMap, Peekable};
|
||||
use std::mem;
|
||||
use std::ops::Range;
|
||||
use string_cache::{Atom, Namespace, QualName};
|
||||
use style::selector_impl::ServoSelectorImpl;
|
||||
use url::Url;
|
||||
use util::thread_state;
|
||||
use uuid::Uuid;
|
||||
|
||||
|
@ -960,6 +966,10 @@ pub trait LayoutNodeHelpers {
|
|||
unsafe fn init_style_and_layout_data(&self, OpaqueStyleAndLayoutData);
|
||||
|
||||
fn text_content(&self) -> String;
|
||||
fn selection(&self) -> Option<Range<usize>>;
|
||||
fn image_url(&self) -> Option<Url>;
|
||||
fn canvas_data(&self) -> Option<HTMLCanvasData>;
|
||||
fn iframe_pipeline_id(&self) -> PipelineId;
|
||||
}
|
||||
|
||||
impl LayoutNodeHelpers for LayoutJS<Node> {
|
||||
|
@ -1067,6 +1077,39 @@ impl LayoutNodeHelpers for LayoutJS<Node> {
|
|||
|
||||
panic!("not text!")
|
||||
}
|
||||
|
||||
#[allow(unsafe_code)]
|
||||
fn selection(&self) -> Option<Range<usize>> {
|
||||
if let Some(area) = self.downcast::<HTMLTextAreaElement>() {
|
||||
return unsafe { area.selection_for_layout() };
|
||||
}
|
||||
|
||||
if let Some(input) = self.downcast::<HTMLInputElement>() {
|
||||
return unsafe { input.selection_for_layout() };
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
|
||||
#[allow(unsafe_code)]
|
||||
fn image_url(&self) -> Option<Url> {
|
||||
unsafe {
|
||||
self.downcast::<HTMLImageElement>()
|
||||
.expect("not an image!")
|
||||
.image_url()
|
||||
}
|
||||
}
|
||||
|
||||
fn canvas_data(&self) -> Option<HTMLCanvasData> {
|
||||
self.downcast()
|
||||
.map(|canvas| canvas.data())
|
||||
}
|
||||
|
||||
fn iframe_pipeline_id(&self) -> PipelineId {
|
||||
let iframe_element = self.downcast::<HTMLIFrameElement>()
|
||||
.expect("not an iframe element!");
|
||||
iframe_element.pipeline_id().unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* 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::attr::{Attr, AttrValue};
|
||||
use dom::attr::Attr;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::inheritance::ElementTypeId;
|
||||
use dom::bindings::inheritance::HTMLElementTypeId;
|
||||
|
@ -47,7 +47,7 @@ use dom::htmltextareaelement::HTMLTextAreaElement;
|
|||
use dom::htmltitleelement::HTMLTitleElement;
|
||||
use dom::node::{ChildrenMutation, CloneChildrenFlag, Node, UnbindContext};
|
||||
use string_cache::Atom;
|
||||
|
||||
use style::attr::AttrValue;
|
||||
|
||||
/// Trait to allow DOM nodes to opt-in to overriding (or adding to) common
|
||||
/// behaviours. Replicates the effect of C++ virtual methods.
|
||||
|
|
|
@ -46,6 +46,7 @@ use js::jsapi::{JSContext, JS_ParseJSON, RootedValue};
|
|||
use js::jsval::{JSVal, NullValue, UndefinedValue};
|
||||
use msg::constellation_msg::{PipelineId, ReferrerPolicy};
|
||||
use net_traits::CoreResourceMsg::Load;
|
||||
use net_traits::trim_http_whitespace;
|
||||
use net_traits::{AsyncResponseListener, AsyncResponseTarget, Metadata, NetworkError, RequestSource};
|
||||
use net_traits::{LoadConsumer, LoadContext, LoadData, ResourceCORSData, CoreResourceThread, LoadOrigin};
|
||||
use network_listener::{NetworkListener, PreInvoke};
|
||||
|
@ -1506,27 +1507,3 @@ pub fn is_field_value(slice: &[u8]) -> bool {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
/// Normalize `self`, as defined by
|
||||
/// [the Fetch Spec](https://fetch.spec.whatwg.org/#concept-header-value-normalize).
|
||||
pub fn trim_http_whitespace(mut slice: &[u8]) -> &[u8] {
|
||||
const HTTP_WS_BYTES: &'static [u8] = b"\x09\x0A\x0D\x20";
|
||||
|
||||
loop {
|
||||
match slice.split_first() {
|
||||
Some((first, remainder)) if HTTP_WS_BYTES.contains(first) =>
|
||||
slice = remainder,
|
||||
_ => break,
|
||||
}
|
||||
}
|
||||
|
||||
loop {
|
||||
match slice.split_last() {
|
||||
Some((last, remainder)) if HTTP_WS_BYTES.contains(last) =>
|
||||
slice = remainder,
|
||||
_ => break,
|
||||
}
|
||||
}
|
||||
|
||||
slice
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
//! the DOM to be placed in a separate crate from layout.
|
||||
|
||||
use app_units::Au;
|
||||
use dom::node::OpaqueStyleAndLayoutData;
|
||||
use euclid::point::Point2D;
|
||||
use euclid::rect::Rect;
|
||||
use gfx_traits::{Epoch, LayerId};
|
||||
|
@ -27,7 +26,21 @@ use style::servo::Stylesheet;
|
|||
use url::Url;
|
||||
use util::ipc::OptionalOpaqueIpcSender;
|
||||
|
||||
pub use dom::bindings::inheritance::{CharacterDataTypeId, ElementTypeId};
|
||||
pub use dom::bindings::inheritance::{HTMLElementTypeId, NodeTypeId};
|
||||
pub use dom::bindings::js::LayoutJS;
|
||||
pub use dom::characterdata::LayoutCharacterDataHelpers;
|
||||
pub use dom::document::{Document, LayoutDocumentHelpers};
|
||||
pub use dom::element::{Element, LayoutElementHelpers, RawLayoutElementHelpers};
|
||||
pub use dom::htmlcanvaselement::HTMLCanvasData;
|
||||
pub use dom::htmlobjectelement::is_image_data;
|
||||
pub use dom::node::{CAN_BE_FRAGMENTED, HAS_CHANGED, HAS_DIRTY_DESCENDANTS, IS_DIRTY};
|
||||
pub use dom::node::LayoutNodeHelpers;
|
||||
pub use dom::node::Node;
|
||||
pub use dom::node::OpaqueStyleAndLayoutData;
|
||||
pub use dom::node::TrustedNodeAddress;
|
||||
pub use dom::text::Text;
|
||||
|
||||
|
||||
/// Asynchronous messages that script can send to layout.
|
||||
pub enum Msg {
|
||||
|
|
|
@ -5,3 +5,25 @@
|
|||
extern crate net_traits;
|
||||
|
||||
#[cfg(test)] mod image;
|
||||
|
||||
#[test]
|
||||
fn test_trim_http_whitespace() {
|
||||
fn test_trim(in_: &[u8], out: &[u8]) {
|
||||
let b = net_traits::trim_http_whitespace(in_);
|
||||
assert_eq!(b, out);
|
||||
}
|
||||
|
||||
test_trim(b"", b"");
|
||||
|
||||
test_trim(b" ", b"");
|
||||
test_trim(b"a", b"a");
|
||||
test_trim(b" a", b"a");
|
||||
test_trim(b"a ", b"a");
|
||||
test_trim(b" a ", b"a");
|
||||
|
||||
test_trim(b"\t", b"");
|
||||
test_trim(b"a", b"a");
|
||||
test_trim(b"\ta", b"a");
|
||||
test_trim(b"a\t", b"a");
|
||||
test_trim(b"\ta\t", b"a");
|
||||
}
|
||||
|
|
|
@ -1,17 +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/. */
|
||||
|
||||
use script::dom::bindings::str::ByteString;
|
||||
|
||||
#[test]
|
||||
fn test_byte_string_move() {
|
||||
let mut byte_str = ByteString::new(vec![0x73, 0x65, 0x72, 0x76, 0x6f]);
|
||||
let mut byte_vec = byte_str.bytes();
|
||||
|
||||
assert_eq!(byte_vec, "servo".as_bytes());
|
||||
assert_eq!(&*byte_str, &*Vec::<u8>::new());
|
||||
|
||||
byte_vec = byte_str.into();
|
||||
assert_eq!(byte_vec, Vec::<u8>::new());
|
||||
}
|
|
@ -1,27 +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/. */
|
||||
|
||||
use script::dom::xmlhttprequest::trim_http_whitespace;
|
||||
|
||||
#[test]
|
||||
fn test_trim_http_whitespace() {
|
||||
fn test_trim(in_: &[u8], out: &[u8]) {
|
||||
let b = trim_http_whitespace(in_);
|
||||
assert_eq!(b, out);
|
||||
}
|
||||
|
||||
test_trim(b"", b"");
|
||||
|
||||
test_trim(b" ", b"");
|
||||
test_trim(b"a", b"a");
|
||||
test_trim(b" a", b"a");
|
||||
test_trim(b"a ", b"a");
|
||||
test_trim(b" a ", b"a");
|
||||
|
||||
test_trim(b"\t", b"");
|
||||
test_trim(b"a", b"a");
|
||||
test_trim(b"\ta", b"a");
|
||||
test_trim(b"a\t", b"a");
|
||||
test_trim(b"\ta\t", b"a");
|
||||
}
|
|
@ -13,7 +13,5 @@ extern crate url;
|
|||
#[cfg(all(test, target_pointer_width = "64"))] mod size_of;
|
||||
#[cfg(test)] mod textinput;
|
||||
#[cfg(test)] mod dom {
|
||||
mod bindings;
|
||||
mod blob;
|
||||
mod xmlhttprequest;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче