summaryrefslogtreecommitdiffstats
path: root/browser/base/content/tab-content.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/tab-content.js')
-rw-r--r--browser/base/content/tab-content.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/browser/base/content/tab-content.js b/browser/base/content/tab-content.js
new file mode 100644
index 0000000000..e45449d080
--- /dev/null
+++ b/browser/base/content/tab-content.js
@@ -0,0 +1,58 @@
+/* -*- 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/. */
+
+/* This content script contains code that requires a tab browser. */
+
+/* eslint-env mozilla/frame-script */
+
+var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "BrowserUtils",
+ "resource://gre/modules/BrowserUtils.jsm"
+);
+
+// BrowserChildGlobal
+var global = this;
+
+var WebBrowserChrome = {
+ onBeforeLinkTraversal(originalTarget, linkURI, linkNode, isAppTab) {
+ return BrowserUtils.onBeforeLinkTraversal(
+ originalTarget,
+ linkURI,
+ linkNode,
+ isAppTab
+ );
+ },
+
+ // Check whether this URI should load in the current process
+ shouldLoadURI(
+ aDocShell,
+ aURI,
+ aReferrerInfo,
+ aHasPostData,
+ aTriggeringPrincipal,
+ aCsp
+ ) {
+ return true;
+ },
+
+ shouldLoadURIInThisProcess(aURI) {
+ return true;
+ },
+};
+
+if (Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT) {
+ let tabchild = docShell
+ .QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIBrowserChild);
+ tabchild.webBrowserChrome = WebBrowserChrome;
+}
+
+Services.obs.notifyObservers(this, "tab-content-frameloader-created");
+
+// This is a temporary hack to prevent regressions (bug 1471327).
+void content;