diff options
Diffstat (limited to 'base/content/content.js')
-rw-r--r-- | base/content/content.js | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/base/content/content.js b/base/content/content.js deleted file mode 100644 index 211a24a..0000000 --- a/base/content/content.js +++ /dev/null @@ -1,177 +0,0 @@ -/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 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/. */ - -var Cc = Components.classes; -var Ci = Components.interfaces; -var Cu = Components.utils; - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -XPCOMUtils.defineLazyModuleGetter(this, "BrowserUtils", - "resource://gre/modules/BrowserUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "LoginManagerContent", - "resource://gre/modules/LoginManagerContent.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "LoginFormFactory", - "resource://gre/modules/LoginManagerContent.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "InsecurePasswordUtils", - "resource://gre/modules/InsecurePasswordUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "FormSubmitObserver", - "resource:///modules/FormSubmitObserver.jsm"); - -// Bug 671101 - directly using webNavigation in this context -// causes docshells to leak -this.__defineGetter__("webNavigation", function () { - return docShell.QueryInterface(Ci.nsIWebNavigation); -}); - -addMessageListener("WebNavigation:LoadURI", function (message) { - let flags = message.json.flags || webNavigation.LOAD_FLAGS_NONE; - - webNavigation.loadURI(message.json.uri, flags, null, null, null); -}); - -// TabChildGlobal -var global = this; - -// Load the form validation popup handler -var formSubmitObserver = new FormSubmitObserver(content, this); - -addMessageListener("Browser:HideSessionRestoreButton", function (message) { - // Hide session restore button on about:home - let doc = content.document; - let container; - if (doc.documentURI.toLowerCase() == "about:home" && - (container = doc.getElementById("sessionRestoreContainer"))){ - container.hidden = true; - } -}); - -addEventListener("DOMFormHasPassword", function(event) { - LoginManagerContent.onDOMFormHasPassword(event, content); - let formLike = LoginFormFactory.createFromForm(event.target); - InsecurePasswordUtils.reportInsecurePasswords(formLike); -}); -addEventListener("DOMAutoComplete", function(event) { - LoginManagerContent.onUsernameInput(event); -}); -addEventListener("blur", function(event) { - LoginManagerContent.onUsernameInput(event); -}); - -// Provide gContextMenuContentData for 'sdk/context-menu' -var handleContentContextMenu = function (event) { - let defaultPrevented = event.defaultPrevented; - if (!Services.prefs.getBoolPref("dom.event.contextmenu.enabled")) { - let plugin = null; - try { - plugin = event.target.QueryInterface(Ci.nsIObjectLoadingContent); - } catch (e) {} - if (plugin && plugin.displayedType == Ci.nsIObjectLoadingContent.TYPE_PLUGIN) { - // Don't open a context menu for plugins. - return; - } - - defaultPrevented = false; - } - - if (defaultPrevented) - return; - - let addonInfo = {}; - let subject = { - event: event, - addonInfo: addonInfo, - }; - subject.wrappedJSObject = subject; - Services.obs.notifyObservers(subject, "content-contextmenu", null); - - let doc = event.target.ownerDocument; - let docLocation = doc.mozDocumentURIIfNotForErrorPages; - docLocation = docLocation && docLocation.spec; - let charSet = doc.characterSet; - let baseURI = doc.baseURI; - let referrer = doc.referrer; - let referrerPolicy = doc.referrerPolicy; - let frameOuterWindowID = doc.defaultView.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIDOMWindowUtils) - .outerWindowID; - let loginFillInfo = LoginManagerContent.getFieldContext(event.target); - - // The same-origin check will be done in nsContextMenu.openLinkInTab. - let parentAllowsMixedContent = !!docShell.mixedContentChannel; - - // get referrer attribute from clicked link and parse it - // if per element referrer is enabled, the element referrer overrules - // the document wide referrer - if (Services.prefs.getBoolPref("network.http.enablePerElementReferrer")) { - let referrerAttrValue = Services.netUtils.parseAttributePolicyString(event.target. - getAttribute("referrerpolicy")); - if (referrerAttrValue !== Ci.nsIHttpChannel.REFERRER_POLICY_UNSET) { - referrerPolicy = referrerAttrValue; - } - } - - // Media related cache info parent needs for saving - let contentType = null; - let contentDisposition = null; - if (event.target.nodeType == Ci.nsIDOMNode.ELEMENT_NODE && - event.target instanceof Ci.nsIImageLoadingContent && - event.target.currentURI) { - - try { - let imageCache = - Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools) - .getImgCacheForDocument(doc); - let props = - imageCache.findEntryProperties(event.target.currentURI, doc); - try { - contentType = props.get("type", Ci.nsISupportsCString).data; - } catch (e) {} - try { - contentDisposition = - props.get("content-disposition", Ci.nsISupportsCString).data; - } catch (e) {} - } catch (e) {} - } - - let selectionInfo = BrowserUtils.getSelectionDetails(content); - - let loadContext = docShell.QueryInterface(Ci.nsILoadContext); - - let browser = docShell.chromeEventHandler; - let mainWin = browser.ownerGlobal; - - mainWin.gContextMenuContentData = { - isRemote: false, - event: event, - popupNode: event.target, - browser: browser, - addonInfo: addonInfo, - documentURIObject: doc.documentURIObject, - docLocation: docLocation, - charSet: charSet, - referrer: referrer, - referrerPolicy: referrerPolicy, - contentType: contentType, - contentDisposition: contentDisposition, - selectionInfo: selectionInfo, - loginFillInfo, - parentAllowsMixedContent, - }; -} - -Cc["@mozilla.org/eventlistenerservice;1"] - .getService(Ci.nsIEventListenerService) - .addSystemEventListener(global, "contextmenu", handleContentContextMenu, false); - -// Lazily load the finder code -addMessageListener("Finder:Initialize", function () { - let {RemoteFinderListener} = Cu.import("resource://gre/modules/RemoteFinder.jsm", {}); - new RemoteFinderListener(global); -}); - -addEventListener("DOMWebNotificationClicked", function(event) { - sendAsyncMessage("DOMWebNotificationClicked", {}); -}, false); |