mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
ports/cef: Implement accelerated compositing for the CEF port.
This commit is contained in:
parent
315e166cf7
commit
8b2aadc30b
35 changed files with 1746 additions and 642 deletions
|
@ -189,6 +189,7 @@ pub trait DocumentHelpers<'a> {
|
|||
fn begin_focus_transaction(self);
|
||||
fn request_focus(self, elem: JSRef<Element>);
|
||||
fn commit_focus_transaction(self);
|
||||
fn send_title_to_compositor(self);
|
||||
}
|
||||
|
||||
impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
|
||||
|
@ -369,6 +370,12 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
|
|||
//TODO: dispatch blur, focus, focusout, and focusin events
|
||||
self.focused.assign(self.possibly_focused.get());
|
||||
}
|
||||
|
||||
/// Sends this document's title to the compositor.
|
||||
fn send_title_to_compositor(self) {
|
||||
let window = self.window().root();
|
||||
window.page().send_title_to_compositor();
|
||||
}
|
||||
}
|
||||
|
||||
#[deriving(PartialEq)]
|
||||
|
@ -985,3 +992,4 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
|
|||
global_event_handlers!()
|
||||
event_handler!(readystatechange, GetOnreadystatechange, SetOnreadystatechange)
|
||||
}
|
||||
|
||||
|
|
|
@ -5,15 +5,17 @@
|
|||
use dom::bindings::codegen::Bindings::HTMLTitleElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLTitleElementBinding::HTMLTitleElementMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::codegen::InheritTypes::{HTMLTitleElementDerived, NodeCast, TextCast};
|
||||
use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLTitleElementDerived, NodeCast};
|
||||
use dom::bindings::codegen::InheritTypes::{TextCast};
|
||||
use dom::bindings::js::{JSRef, Temporary};
|
||||
use dom::bindings::utils::{Reflectable, Reflector};
|
||||
use dom::document::Document;
|
||||
use dom::document::{Document, DocumentHelpers};
|
||||
use dom::element::HTMLTitleElementTypeId;
|
||||
use dom::eventtarget::{EventTarget, NodeTargetTypeId};
|
||||
use dom::htmlelement::HTMLElement;
|
||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId};
|
||||
use dom::text::Text;
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use servo_util::str::DOMString;
|
||||
|
||||
#[dom_struct]
|
||||
|
@ -68,3 +70,19 @@ impl Reflectable for HTMLTitleElement {
|
|||
self.htmlelement.reflector()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> VirtualMethods for JSRef<'a, HTMLTitleElement> {
|
||||
fn super_type<'a>(&'a self) -> Option<&'a VirtualMethods> {
|
||||
let htmlelement: &JSRef<HTMLElement> = HTMLElementCast::from_borrowed_ref(self);
|
||||
Some(htmlelement as &VirtualMethods)
|
||||
}
|
||||
|
||||
fn bind_to_tree(&self, is_in_doc: bool) {
|
||||
let node: JSRef<Node> = NodeCast::from_ref(*self);
|
||||
if is_in_doc {
|
||||
let document = node.owner_doc().root();
|
||||
document.send_title_to_compositor()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ use dom::bindings::codegen::InheritTypes::HTMLSelectElementCast;
|
|||
use dom::bindings::codegen::InheritTypes::HTMLStyleElementCast;
|
||||
use dom::bindings::codegen::InheritTypes::HTMLTableCellElementCast;
|
||||
use dom::bindings::codegen::InheritTypes::HTMLTextAreaElementCast;
|
||||
use dom::bindings::codegen::InheritTypes::HTMLTitleElementCast;
|
||||
use dom::bindings::js::JSRef;
|
||||
use dom::document::Document;
|
||||
use dom::element::Element;
|
||||
|
@ -47,6 +48,7 @@ use dom::element::HTMLStyleElementTypeId;
|
|||
use dom::element::HTMLTableDataCellElementTypeId;
|
||||
use dom::element::HTMLTableHeaderCellElementTypeId;
|
||||
use dom::element::HTMLTextAreaElementTypeId;
|
||||
use dom::element::HTMLTitleElementTypeId;
|
||||
use dom::event::Event;
|
||||
use dom::htmlanchorelement::HTMLAnchorElement;
|
||||
use dom::htmlareaelement::HTMLAreaElement;
|
||||
|
@ -67,6 +69,7 @@ use dom::htmlselectelement::HTMLSelectElement;
|
|||
use dom::htmlstyleelement::HTMLStyleElement;
|
||||
use dom::htmltablecellelement::HTMLTableCellElement;
|
||||
use dom::htmltextareaelement::HTMLTextAreaElement;
|
||||
use dom::htmltitleelement::HTMLTitleElement;
|
||||
use dom::node::{Node, NodeHelpers, ElementNodeTypeId, CloneChildrenFlag};
|
||||
|
||||
use servo_util::str::DOMString;
|
||||
|
@ -232,6 +235,11 @@ pub fn vtable_for<'a>(node: &'a JSRef<'a, Node>) -> &'a VirtualMethods + 'a {
|
|||
let element: &'a JSRef<'a, HTMLTextAreaElement> = HTMLTextAreaElementCast::to_borrowed_ref(node).unwrap();
|
||||
element as &'a VirtualMethods + 'a
|
||||
}
|
||||
ElementNodeTypeId(HTMLTitleElementTypeId) => {
|
||||
let element: &'a JSRef<'a, HTMLTitleElement> =
|
||||
HTMLTitleElementCast::to_borrowed_ref(node).unwrap();
|
||||
element as &'a VirtualMethods + 'a
|
||||
}
|
||||
ElementNodeTypeId(ElementTypeId_) => {
|
||||
let element: &'a JSRef<'a, Element> = ElementCast::to_borrowed_ref(node).unwrap();
|
||||
element as &'a VirtualMethods + 'a
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue