aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/script_thread.rs
diff options
context:
space:
mode:
authorBastien Orivel <eijebong@bananium.fr>2018-08-27 18:36:52 +0200
committerBastien Orivel <eijebong@bananium.fr>2018-11-01 19:17:36 +0100
commit024b40b39d3848f1a1f7020bd7ed8c901817f09c (patch)
tree27508f102b0973cbae3dca22143ea4aedd349f4b /components/script/script_thread.rs
parent95bfaa0a770479fb3bf6bf0b1f85c9ae343e66ff (diff)
downloadservo-024b40b39d3848f1a1f7020bd7ed8c901817f09c.tar.gz
servo-024b40b39d3848f1a1f7020bd7ed8c901817f09c.zip
Update hyper to 0.12
Diffstat (limited to 'components/script/script_thread.rs')
-rw-r--r--components/script/script_thread.rs92
1 files changed, 42 insertions, 50 deletions
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index 8795a65cd13..e1d9fd4c0e4 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -65,9 +65,9 @@ use dom::workletglobalscope::WorkletGlobalScopeInit;
use embedder_traits::EmbedderMsg;
use euclid::{Point2D, Vector2D, Rect};
use fetch::FetchCanceller;
-use hyper::header::{ContentType, HttpDate, Headers, LastModified};
-use hyper::header::ReferrerPolicy as ReferrerPolicyHeader;
-use hyper::mime::{Mime, SubLevel, TopLevel};
+use headers_core::HeaderMapExt;
+use headers_ext::LastModified;
+use headers_ext::ReferrerPolicy as ReferrerPolicyHeader;
use hyper_serde::Serde;
use ipc_channel::ipc::{self, IpcSender};
use js::glue::GetWindowProxyClass;
@@ -76,6 +76,7 @@ use js::jsapi::{JSTracer, SetWindowProxyClass};
use js::jsval::UndefinedValue;
use metrics::{MAX_TASK_NS, PaintTimeMetrics};
use microtask::{MicrotaskQueue, Microtask};
+use mime::{self, Mime};
use msg::constellation_msg::{BrowsingContextId, HistoryStateId, PipelineId};
use msg::constellation_msg::{PipelineNamespace, TopLevelBrowsingContextId};
use net_traits::{FetchMetadata, FetchResponseListener, FetchResponseMsg};
@@ -115,6 +116,7 @@ use std::rc::Rc;
use std::result::Result;
use std::sync::Arc;
use std::thread;
+use std::time::SystemTime;
use style::thread_state::{self, ThreadState};
use task_queue::{QueuedTask, QueuedTaskConversion, TaskQueue};
use task_source::TaskSourceName;
@@ -127,7 +129,7 @@ use task_source::performance_timeline::PerformanceTimelineTaskSource;
use task_source::remote_event::RemoteEventTaskSource;
use task_source::user_interaction::UserInteractionTaskSource;
use task_source::websocket::WebsocketTaskSource;
-use time::{get_time, precise_time_ns, Tm};
+use time::{at_utc, get_time, precise_time_ns, Timespec};
use url::Position;
use url::percent_encoding::percent_decode;
use webdriver_handlers;
@@ -2611,37 +2613,27 @@ impl ScriptThread {
window.init_window_proxy(&window_proxy);
let last_modified = metadata.headers.as_ref().and_then(|headers| {
- headers
- .get()
- .map(|&LastModified(HttpDate(ref tm))| dom_last_modified(tm))
+ headers.typed_get::<LastModified>()
+ .map(|tm| dom_last_modified(&tm.into()))
});
- let content_type = metadata
- .content_type
- .as_ref()
- .map(|&Serde(ContentType(ref mimetype))| mimetype.clone());
-
let loader = DocumentLoader::new_with_threads(
self.resource_threads.clone(),
Some(final_url.clone()),
);
- let is_html_document = match metadata.content_type {
- Some(Serde(ContentType(Mime(
- TopLevel::Application,
- SubLevel::Ext(ref sub_level),
- _,
- ))))
- if sub_level.ends_with("+xml") =>
- {
- IsHTMLDocument::NonHTMLDocument
- },
+ let content_type: Option<Mime> = metadata.content_type
+ .map(Serde::into_inner)
+ .map(Into::into);
- Some(Serde(ContentType(Mime(TopLevel::Application, SubLevel::Xml, _)))) |
- Some(Serde(ContentType(Mime(TopLevel::Text, SubLevel::Xml, _)))) => {
- IsHTMLDocument::NonHTMLDocument
- },
+ let is_html_document = match content_type {
+ Some(ref mime) if mime.type_() == mime::APPLICATION &&
+ mime.suffix() == Some(mime::XML) => IsHTMLDocument::NonHTMLDocument,
+ Some(ref mime) if
+ (mime.type_() == mime::TEXT && mime.subtype() == mime::XML) ||
+ (mime.type_() == mime::APPLICATION && mime.subtype() == mime::XML)
+ => IsHTMLDocument::NonHTMLDocument,
_ => IsHTMLDocument::HTMLDocument,
};
@@ -2650,28 +2642,25 @@ impl ScriptThread {
None => None,
};
- let referrer_policy = metadata
- .headers
- .as_ref()
- .map(Serde::deref)
- .and_then(Headers::get::<ReferrerPolicyHeader>)
- .map(ReferrerPolicy::from);
-
- let document = Document::new(
- &window,
- HasBrowsingContext::Yes,
- Some(final_url.clone()),
- incomplete.origin,
- is_html_document,
- content_type,
- last_modified,
- incomplete.activity,
- DocumentSource::FromParser,
- loader,
- referrer,
- referrer_policy,
- incomplete.canceller,
- );
+ let referrer_policy = metadata.headers
+ .as_ref()
+ .map(Serde::deref)
+ .and_then(|h| h.typed_get::<ReferrerPolicyHeader>())
+ .map(ReferrerPolicy::from);
+
+ let document = Document::new(&window,
+ HasBrowsingContext::Yes,
+ Some(final_url.clone()),
+ incomplete.origin,
+ is_html_document,
+ content_type,
+ last_modified,
+ incomplete.activity,
+ DocumentSource::FromParser,
+ loader,
+ referrer,
+ referrer_policy,
+ incomplete.canceller);
document.set_ready_state(DocumentReadyState::Loading);
self.documents
@@ -3112,7 +3101,7 @@ impl ScriptThread {
let mut context = ParserContext::new(id, url.clone());
let mut meta = Metadata::default(url);
- meta.set_content_type(Some(&mime!(Text / Html)));
+ meta.set_content_type(Some(&mime::TEXT_HTML));
// If this page load is the result of a javascript scheme url, map
// the evaluation result into a response.
@@ -3221,7 +3210,10 @@ impl Drop for ScriptThread {
}
}
-fn dom_last_modified(tm: &Tm) -> String {
+fn dom_last_modified(tm: &SystemTime) -> String {
+ let tm = tm.duration_since(SystemTime::UNIX_EPOCH).unwrap();
+ let tm = Timespec::new(tm.as_secs() as i64, 0);
+ let tm = at_utc(tm);
tm.to_local()
.strftime("%m/%d/%Y %H:%M:%S")
.unwrap()