From 80fd18676fe611879c9f0a9ca8eeebb40f533d89 Mon Sep 17 00:00:00 2001 From: askeing Date: Wed, 27 Apr 2016 01:15:48 +0900 Subject: [PATCH] Dispatch error event when link elements get invalid response --- components/script/dom/htmllinkelement.rs | 17 +++++++++++++++++ .../link-style-error-01.html.ini | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index a971a90ecbf..c27944cc306 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -15,11 +15,14 @@ use dom::bindings::refcounted::Trusted; use dom::document::Document; use dom::domtokenlist::DOMTokenList; use dom::element::{AttributeMutation, Element, ElementCreator}; +use dom::eventtarget::EventTarget; use dom::htmlelement::HTMLElement; use dom::node::{Node, document_from_node, window_from_node}; use dom::virtualmethods::VirtualMethods; use encoding::EncodingRef; use encoding::all::UTF_8; +use hyper::header::ContentType; +use hyper::mime::{Mime, TopLevel, SubLevel}; use ipc_channel::ipc; use ipc_channel::router::ROUTER; use layout_interface::{LayoutChan, Msg}; @@ -273,6 +276,13 @@ impl PreInvoke for StylesheetContext {} impl AsyncResponseListener for StylesheetContext { fn headers_available(&mut self, metadata: Result) { self.metadata = metadata.ok(); + let content_type = self.metadata.clone().and_then(|meta| meta.content_type); + match content_type { + Some(ContentType(Mime(TopLevel::Text, SubLevel::Css, _))) => {}, + _ => { + self.elem.root().upcast::().fire_simple_event("error"); + } + } } fn data_available(&mut self, payload: Vec) { @@ -281,6 +291,13 @@ impl AsyncResponseListener for StylesheetContext { } fn response_complete(&mut self, _status: Result<(), NetworkError>) { + match _status { + Err(_) => { + self.elem.root().upcast::().fire_simple_event("error"); + return; + }, + _ => {} + }; let data = mem::replace(&mut self.data, vec!()); let metadata = match self.metadata.take() { Some(meta) => meta, diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/link-style-error-01.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/link-style-error-01.html.ini index 1ab57decdcb..1e00f042b8b 100644 --- a/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/link-style-error-01.html.ini +++ b/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/link-style-error-01.html.ini @@ -1,6 +1,6 @@ [link-style-error-01.html] type: testharness - expected: TIMEOUT + expected: OK [Should get an error event for a text/plain response.] - expected: TIMEOUT + expected: PASS