aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/servohtmlparser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/servohtmlparser.rs')
-rw-r--r--components/script/dom/servohtmlparser.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/components/script/dom/servohtmlparser.rs b/components/script/dom/servohtmlparser.rs
index 884ac6c8653..a28612416fc 100644
--- a/components/script/dom/servohtmlparser.rs
+++ b/components/script/dom/servohtmlparser.rs
@@ -171,13 +171,24 @@ impl AsyncResponseListener for ParserContext {
Some(parser) => parser.root(),
None => return,
};
- parser.r().document().finish_load(LoadType::PageSource(self.url.clone()));
- if let Err(err) = status {
- debug!("Failed to load page URL {}, error: {:?}", self.url, err);
+ if let Err(NetworkError::Internal(ref reason)) = status {
+ // Show an error page for network errors,
+ // certificate errors are handled earlier.
+ self.is_synthesized_document = true;
+ let parser = parser.r();
+ let page_bytes = read_resource_file("neterror.html").unwrap();
+ let page = String::from_utf8(page_bytes).unwrap();
+ let page = page.replace("${reason}", reason);
+ parser.pending_input().borrow_mut().push(page);
+ parser.parse_sync();
+ } else if let Err(err) = status {
// TODO(Savago): we should send a notification to callers #5463.
+ debug!("Failed to load page URL {}, error: {:?}", self.url, err);
}
+ parser.r().document().finish_load(LoadType::PageSource(self.url.clone()));
+
parser.r().last_chunk_received().set(true);
if !parser.r().is_suspended() {
parser.r().parse_sync();