diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /b2g/chrome/content/ErrorPage.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'b2g/chrome/content/ErrorPage.js')
-rw-r--r-- | b2g/chrome/content/ErrorPage.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/b2g/chrome/content/ErrorPage.js b/b2g/chrome/content/ErrorPage.js new file mode 100644 index 000000000..d51782466 --- /dev/null +++ b/b2g/chrome/content/ErrorPage.js @@ -0,0 +1,73 @@ +/* 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 strict'; + +var Cu = Components.utils; +var Cc = Components.classes; +var Ci = Components.interfaces; + +dump("############ ErrorPage.js\n"); + +var ErrorPageHandler = { + _reload: function() { + docShell.QueryInterface(Ci.nsIWebNavigation).reload(Ci.nsIWebNavigation.LOAD_FLAGS_NONE); + }, + + _certErrorPageEventHandler: function(e) { + let target = e.originalTarget; + let errorDoc = target.ownerDocument; + + // If the event came from an ssl error page, it is one of the "Add + // Exception…" buttons. + if (/^about:certerror\?e=nssBadCert/.test(errorDoc.documentURI)) { + let permanent = errorDoc.getElementById("permanentExceptionButton"); + let temp = errorDoc.getElementById("temporaryExceptionButton"); + if (target == temp || target == permanent) { + sendAsyncMessage("ErrorPage:AddCertException", { + url: errorDoc.location.href, + isPermanent: target == permanent + }); + } + } + }, + + _bindPageEvent: function(target) { + if (!target) { + return; + } + + if (/^about:certerror/.test(target.documentURI)) { + let errorPageEventHandler = this._certErrorPageEventHandler.bind(this); + addEventListener("click", errorPageEventHandler, true, false); + let listener = function() { + removeEventListener("click", errorPageEventHandler, true); + removeEventListener("pagehide", listener, true); + }.bind(this); + + addEventListener("pagehide", listener, true); + } + }, + + domContentLoadedHandler: function(e) { + let target = e.originalTarget; + let targetDocShell = target.defaultView + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation); + if (targetDocShell != docShell) { + return; + } + this._bindPageEvent(target); + }, + + init: function() { + addMessageListener("ErrorPage:ReloadPage", this._reload.bind(this)); + addEventListener('DOMContentLoaded', + this.domContentLoadedHandler.bind(this), + true); + this._bindPageEvent(content.document); + } +}; + +ErrorPageHandler.init(); |