summaryrefslogtreecommitdiffstats
path: root/remote/marionette/reftest-content.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--remote/marionette/reftest-content.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/remote/marionette/reftest-content.js b/remote/marionette/reftest-content.js
new file mode 100644
index 0000000000..3c0712f232
--- /dev/null
+++ b/remote/marionette/reftest-content.js
@@ -0,0 +1,65 @@
+/* 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/. */
+
+/* eslint-env mozilla/frame-script */
+
+"use strict";
+
+const { XPCOMUtils } = ChromeUtils.importESModule(
+ "resource://gre/modules/XPCOMUtils.sys.mjs"
+);
+
+XPCOMUtils.defineLazyScriptGetter(
+ this,
+ "PrintUtils",
+ "chrome://global/content/printUtils.js"
+);
+
+// This is an implementation of nsIBrowserDOMWindow that handles only opening
+// print browsers, because the "open a new window fallback" is just too slow
+// in some cases and causes timeouts.
+function BrowserDOMWindow() {}
+BrowserDOMWindow.prototype = {
+ QueryInterface: ChromeUtils.generateQI(["nsIBrowserDOMWindow"]),
+
+ _maybeOpen(aOpenWindowInfo, aWhere) {
+ if (aWhere == Ci.nsIBrowserDOMWindow.OPEN_PRINT_BROWSER) {
+ return PrintUtils.handleStaticCloneCreatedForPrint(aOpenWindowInfo);
+ }
+ return null;
+ },
+
+ createContentWindow(
+ aURI,
+ aOpenWindowInfo,
+ aWhere,
+ aFlags,
+ aTriggeringPrincipal,
+ aCsp
+ ) {
+ return this._maybeOpen(aOpenWindowInfo, aWhere)?.browsingContext;
+ },
+
+ openURI(aURI, aOpenWindowInfo, aWhere, aFlags, aTriggeringPrincipal, aCsp) {
+ return this._maybeOpen(aOpenWindowInfo, aWhere)?.browsingContext;
+ },
+
+ createContentWindowInFrame(aURI, aParams, aWhere, aFlags, aName) {
+ return this._maybeOpen(aParams.openWindowInfo, aWhere);
+ },
+
+ openURIInFrame(aURI, aParams, aWhere, aFlags, aName) {
+ return this._maybeOpen(aParams.openWindowInfo, aWhere);
+ },
+
+ canClose() {
+ return true;
+ },
+
+ get tabCount() {
+ return 1;
+ },
+};
+
+window.browserDOMWindow = new BrowserDOMWindow();