From a1ffb37b607c33e8fa3ca92466fef5f793a7d306 Mon Sep 17 00:00:00 2001 From: Albirew Date: Mon, 14 Mar 2016 18:42:00 +0100 Subject: [PATCH] Multi-process Firefox compatibility merged https://github.com/arantius/resurrect-pages/commit/ee564ee0216c3646f21c20eed1574c0a5c6b6b35 --- content/netError.xhtml | 59 +++++++++++++++++++++--------------------- content/resurrect.js | 49 ++++++++++++++--------------------- skin/netError.css | 4 +++ 3 files changed, 52 insertions(+), 60 deletions(-) diff --git a/content/netError.xhtml b/content/netError.xhtml index a131372..47cd857 100644 --- a/content/netError.xhtml +++ b/content/netError.xhtml @@ -3,11 +3,9 @@
- @@ -15,34 +13,35 @@ &resurrect.thispage; - - - - - - - + + + + + + + +
diff --git a/content/resurrect.js b/content/resurrect.js index 1d4a0eb..69ea8d5 100644 --- a/content/resurrect.js +++ b/content/resurrect.js @@ -1,21 +1,18 @@ var resurrect={ - originalDoc:null, + contextUrl:null, // // // // // // // // // // // // // // // // // // // // // // // // // // // onLoad:function() { window.removeEventListener('load', resurrect.onLoad, false); - document.getElementById('contentAreaContextMenu') .addEventListener('popupshowing', resurrect.toggleContextItems, false); - - window.document.getElementById('appcontent').addEventListener( - 'DOMContentLoaded', resurrect.contentDomLoad, false); + addEventListener('DOMContentLoaded', resurrect.contentDomLoad, false); }, toggleContextItems:function(event) { - resurrect.clickTarget=event.target; + resurrect.contextUrl = gContextMenu.linkURL; var onDocument=!( gContextMenu.isContentSelected || gContextMenu.onTextInput || @@ -30,17 +27,18 @@ var resurrect={ contentDomLoad:function(event) { var contentDoc=event.target; - if (contentDoc.documentURI.match(/^about:neterror/)) { - // Inject our content... - var xhr = new XMLHttpRequest(); - // next must be synchronous, else, panel wont show in neterror page (TypeError: xhr.responseXML is null) - xhr.open('GET', 'chrome://resurrect/content/netError.xhtml', false); - xhr.send(null); - var resurrectFieldset = xhr.responseXML.getElementById('resurrect'); - var newFieldset = contentDoc.adoptNode(resurrectFieldset); + if (contentDoc.documentURI.indexOf('about:neterror') != 0) return; + + // Inject our content... + var xhr = new XMLHttpRequest(); + xhr.open('GET', 'chrome://resurrect/content/netError.xhtml', true); + xhr.onload = function() { + var fieldset = xhr.responseXML.getElementById('resurrect'); + var xhtml = new XMLSerializer().serializeToString(fieldset); var container = contentDoc.getElementById('errorPageContainer'); - container.appendChild(newFieldset); - // ...including the CSS. + container.innerHTML += xhtml; + + // ...plus the CSS. var link = contentDoc.createElement('link'); link.setAttribute('rel', 'stylesheet'); link.setAttribute('href', 'chrome://resurrect/skin/netError.css'); @@ -50,16 +48,17 @@ var resurrect={ // Add the className that enables it, only when appropriate. contentDoc.location.href = - 'javascript:if ("nssBadCert" != getErrorCode()) {' + 'javascript:if ("nssBadCert" != getErrorCode()) {' + 'document.body.className += " resurrect";' - + '}; void(0)'; + + '}; void(0)'; // Add event listener. contentDoc.getElementById('resurrect').addEventListener( 'click', resurrect.clickedHtml, false); contentDoc.getElementById('resurrect').addEventListener( 'keypress', resurrect.clickedHtml, false); - } + }; + xhr.send(null); }, disableButtons:function(doc) { @@ -78,15 +77,7 @@ var resurrect={ }, link:function(event) { - var el=document.popupNode; - - try { - while (el && el.tagName && 'A'!=el.tagName.toUpperCase()) { - el=el.parentNode; - } - resurrect.showDialog(el.href); - } catch (e) { } - return null; + resurrect.showDialog(resurrect.contextUrl); }, // // // // // // // // // // // // // // // // // // // // // // // // // // // @@ -111,8 +102,6 @@ var resurrect={ // // // // // // // // // // // // // // // // // // // // // // // // // // // showDialog:function(url) { - resurrect.originalDoc=getBrowser().contentWindow.document; - window.openDialog( 'chrome://resurrect/content/resurrect-select-mirror.xul', '_blank', diff --git a/skin/netError.css b/skin/netError.css index 0cb1793..d7e983b 100644 --- a/skin/netError.css +++ b/skin/netError.css @@ -32,6 +32,10 @@ body.resurrect fieldset#resurrect legend img { body.resurrect fieldset#resurrect button { width: 14em; } +body.resurrect fieldset#resurrect button img { + vertical-align: middle; + margin-top: -6px; +} /* Issue #6: Display below this popup. */ body.resurrect fieldset#resurrect {