summaryrefslogtreecommitdiffstats
path: root/comm/suite/mailnews/content/browserRequest.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/suite/mailnews/content/browserRequest.js')
-rw-r--r--comm/suite/mailnews/content/browserRequest.js107
1 files changed, 107 insertions, 0 deletions
diff --git a/comm/suite/mailnews/content/browserRequest.js b/comm/suite/mailnews/content/browserRequest.js
new file mode 100644
index 0000000000..56ff0f8b9e
--- /dev/null
+++ b/comm/suite/mailnews/content/browserRequest.js
@@ -0,0 +1,107 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* 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/. */
+
+const wpl = Ci.nsIWebProgressListener;
+
+var reporterListener = {
+ _isBusy: false,
+ get securityButton() {
+ delete this.securityButton;
+ return this.securityButton = document.getElementById("security-button");
+ },
+
+ QueryInterface: function(aIID) {
+ if (aIID.equals(Ci.nsIWebProgressListener) ||
+ aIID.equals(Ci.nsISupportsWeakReference) ||
+ aIID.equals(Ci.nsISupports))
+ return this;
+ throw Cr.NS_NOINTERFACE;
+ },
+
+ onStateChange: function(/*in nsIWebProgress*/ aWebProgress,
+ /*in nsIRequest*/ aRequest,
+ /*in unsigned long*/ aStateFlags,
+ /*in nsresult*/ aStatus) {
+ },
+
+ onProgressChange: function(/*in nsIWebProgress*/ aWebProgress,
+ /*in nsIRequest*/ aRequest,
+ /*in long*/ aCurSelfProgress,
+ /*in long */aMaxSelfProgress,
+ /*in long */aCurTotalProgress,
+ /*in long */aMaxTotalProgress) {
+ },
+
+ onLocationChange: function(/*in nsIWebProgress*/ aWebProgress,
+ /*in nsIRequest*/ aRequest,
+ /*in nsIURI*/ aLocation) {
+ document.getElementById("headerMessage").textContent = aLocation.spec;
+ },
+
+ onStatusChange: function(/*in nsIWebProgress*/ aWebProgress,
+ /*in nsIRequest*/ aRequest,
+ /*in nsresult*/ aStatus,
+ /*in wstring*/ aMessage) {
+ },
+
+ onSecurityChange: function(/*in nsIWebProgress*/ aWebProgress,
+ /*in nsIRequest*/ aRequest,
+ /*in unsigned long*/ aState) {
+ const wpl_security_bits = wpl.STATE_IS_SECURE |
+ wpl.STATE_IS_BROKEN |
+ wpl.STATE_IS_INSECURE;
+ var browser = document.getElementById("requestFrame");
+ var level;
+
+ switch (aState & wpl_security_bits) {
+ case wpl.STATE_IS_SECURE:
+ level = "high";
+ break;
+ case wpl.STATE_IS_BROKEN:
+ level = "broken";
+ break;
+ }
+ if (level) {
+ this.securityButton.setAttribute("level", level);
+ this.securityButton.hidden = false;
+ } else {
+ this.securityButton.hidden = true;
+ this.securityButton.removeAttribute("level");
+ }
+ this.securityButton.setAttribute("tooltiptext",
+ browser.securityUI.tooltipText);
+ }
+}
+
+function cancelRequest()
+{
+ reportUserClosed();
+ window.close();
+}
+
+function reportUserClosed()
+{
+ let request = window.arguments[0].wrappedJSObject;
+ request.cancelled();
+}
+
+function loadRequestedUrl()
+{
+ let request = window.arguments[0].wrappedJSObject;
+ document.getElementById("headerMessage").textContent = request.promptText;
+ let account = request.account;
+ if (request.iconURI != "")
+ document.getElementById("headerImage").src = request.iconURI;
+
+ var browser = document.getElementById("requestFrame");
+ browser.addProgressListener(reporterListener,
+ Ci.nsIWebProgress.NOTIFY_ALL);
+ var url = request.url;
+ if (url != "") {
+ browser.setAttribute("src", url);
+ document.getElementById("headerMessage").textContent = url;
+ }
+ request.loaded(window, browser.webProgress);
+}