forked from mirrors/gecko-dev
		
	 7d68aad107
			
		
	
	
		7d68aad107
		
	
	
	
	
		
			
			This fixes a bug where partially loaded content is displayed to the user before it should be, usually before stylesheets have loaded. This commit supresses reflows until either FirstLoad or RefreshTick, whichever comes first. Source-Repo: https://github.com/servo/servo Source-Revision: 37bcc161fe45bf8c1cb1172b8e0d12c7d03371b6
		
			
				
	
	
		
			92 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| /* 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 document_loader::DocumentLoader;
 | |
| use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
 | |
| use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
 | |
| use dom::bindings::codegen::Bindings::XMLDocumentBinding::{self, XMLDocumentMethods};
 | |
| use dom::bindings::global::GlobalRef;
 | |
| use dom::bindings::inheritance::Castable;
 | |
| use dom::bindings::js::{Root, RootedReference};
 | |
| use dom::bindings::reflector::{Reflectable, reflect_dom_object};
 | |
| use dom::browsingcontext::BrowsingContext;
 | |
| use dom::document::{Document, DocumentSource, IsHTMLDocument};
 | |
| use dom::location::Location;
 | |
| use dom::node::Node;
 | |
| use dom::window::Window;
 | |
| use js::jsapi::{JSContext, JSObject};
 | |
| use url::Url;
 | |
| use util::str::DOMString;
 | |
| 
 | |
| // https://dom.spec.whatwg.org/#xmldocument
 | |
| #[dom_struct]
 | |
| pub struct XMLDocument {
 | |
|     document: Document,
 | |
| }
 | |
| 
 | |
| impl XMLDocument {
 | |
|     fn new_inherited(window: &Window,
 | |
|                      browsing_context: Option<&BrowsingContext>,
 | |
|                      url: Option<Url>,
 | |
|                      is_html_document: IsHTMLDocument,
 | |
|                      content_type: Option<DOMString>,
 | |
|                      last_modified: Option<String>,
 | |
|                      source: DocumentSource,
 | |
|                      doc_loader: DocumentLoader) -> XMLDocument {
 | |
|         XMLDocument {
 | |
|             document: Document::new_inherited(window,
 | |
|                                               browsing_context,
 | |
|                                               url,
 | |
|                                               is_html_document,
 | |
|                                               content_type,
 | |
|                                               last_modified,
 | |
|                                               source,
 | |
|                                               doc_loader),
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     pub fn new(window: &Window,
 | |
|                browsing_context: Option<&BrowsingContext>,
 | |
|                url: Option<Url>,
 | |
|                doctype: IsHTMLDocument,
 | |
|                content_type: Option<DOMString>,
 | |
|                last_modified: Option<String>,
 | |
|                source: DocumentSource,
 | |
|                doc_loader: DocumentLoader)
 | |
|                -> Root<XMLDocument> {
 | |
|         let doc = reflect_dom_object(
 | |
|             box XMLDocument::new_inherited(window,
 | |
|                                            browsing_context,
 | |
|                                            url,
 | |
|                                            doctype,
 | |
|                                            content_type,
 | |
|                                            last_modified,
 | |
|                                            source,
 | |
|                                            doc_loader),
 | |
|             GlobalRef::Window(window),
 | |
|             XMLDocumentBinding::Wrap);
 | |
|         {
 | |
|             let node = doc.upcast::<Node>();
 | |
|             node.set_owner_doc(&doc.r().document);
 | |
|         }
 | |
|         doc
 | |
|     }
 | |
| }
 | |
| 
 | |
| impl XMLDocumentMethods for XMLDocument {
 | |
|     // https://html.spec.whatwg.org/multipage/#dom-document-location
 | |
|     fn Location(&self) -> Root<Location> {
 | |
|         self.document.Location()
 | |
|     }
 | |
| 
 | |
|     // https://html.spec.whatwg.org/multipage/#dom-tree-accessors:supported-property-names
 | |
|     fn SupportedPropertyNames(&self) -> Vec<DOMString> {
 | |
|         self.document.SupportedPropertyNames()
 | |
|     }
 | |
| 
 | |
|     // https://html.spec.whatwg.org/multipage/#dom-tree-accessors:dom-document-nameditem-filter
 | |
|     fn NamedGetter(&self, _cx: *mut JSContext, name: DOMString, found: &mut bool) -> *mut JSObject {
 | |
|         self.document.NamedGetter(_cx, name, found)
 | |
|     }
 | |
| }
 |