summaryrefslogtreecommitdiffstats
path: root/browser/components/tests/browser/browser_contentpermissionprompt.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/tests/browser/browser_contentpermissionprompt.js')
-rw-r--r--browser/components/tests/browser/browser_contentpermissionprompt.js166
1 files changed, 0 insertions, 166 deletions
diff --git a/browser/components/tests/browser/browser_contentpermissionprompt.js b/browser/components/tests/browser/browser_contentpermissionprompt.js
deleted file mode 100644
index 054aa22e8..000000000
--- a/browser/components/tests/browser/browser_contentpermissionprompt.js
+++ /dev/null
@@ -1,166 +0,0 @@
-/**
- * These tests test nsBrowserGlue's nsIContentPermissionPrompt
- * implementation behaviour with various types of
- * nsIContentPermissionRequests.
- */
-
-"use strict";
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Integration.jsm", this);
-
-XPCOMUtils.defineLazyServiceGetter(this, "ContentPermissionPrompt",
- "@mozilla.org/content-permission/prompt;1",
- "nsIContentPermissionPrompt");
-
-/**
- * This is a partial implementation of nsIContentPermissionType.
- *
- * @param {string} type
- * The string defining what type of permission is being requested.
- * Example: "geo", "desktop-notification".
- * @return nsIContentPermissionType implementation.
- */
-function MockContentPermissionType(type) {
- this.type = type;
-}
-
-MockContentPermissionType.prototype = {
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPermissionType]),
- // We expose the wrappedJSObject so that we can be sure
- // in some of our tests that we're passing the right
- // nsIContentPermissionType around.
- wrappedJSObject: this,
-};
-
-/**
- * This is a partial implementation of nsIContentPermissionRequest.
- *
- * @param {Array<nsIContentPermissionType>} typesArray
- * The types to assign to this nsIContentPermissionRequest,
- * in order. You probably want to use MockContentPermissionType.
- * @return nsIContentPermissionRequest implementation.
- */
-function MockContentPermissionRequest(typesArray) {
- this.types = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
- for (let type of typesArray) {
- this.types.appendElement(type, false);
- }
-}
-
-MockContentPermissionRequest.prototype = {
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPermissionRequest]),
- // We expose the wrappedJSObject so that we can be sure
- // in some of our tests that we're passing the right
- // nsIContentPermissionRequest around.
- wrappedJSObject: this,
- // For some of our tests, we want to make sure that the
- // request is cancelled, so we add some instrumentation here
- // to check that cancel() is called.
- cancel() {
- this.cancelled = true;
- },
- cancelled: false,
-};
-
-/**
- * Tests that if the nsIContentPermissionRequest has an empty
- * types array, that NS_ERROR_UNEXPECTED is thrown, and the
- * request is cancelled.
- */
-add_task(function* test_empty_types() {
- let mockRequest = new MockContentPermissionRequest([]);
- Assert.throws(() => { ContentPermissionPrompt.prompt(mockRequest); },
- /NS_ERROR_UNEXPECTED/,
- "Should have thrown NS_ERROR_UNEXPECTED.");
- Assert.ok(mockRequest.cancelled, "Should have cancelled the request.");
-});
-
-/**
- * Tests that if the nsIContentPermissionRequest has more than
- * one type, that NS_ERROR_UNEXPECTED is thrown, and the request
- * is cancelled.
- */
-add_task(function* test_multiple_types() {
- let mockRequest = new MockContentPermissionRequest([
- new MockContentPermissionType("test1"),
- new MockContentPermissionType("test2"),
- ]);
-
- Assert.throws(() => { ContentPermissionPrompt.prompt(mockRequest); },
- /NS_ERROR_UNEXPECTED/);
- Assert.ok(mockRequest.cancelled, "Should have cancelled the request.");
-});
-
-/**
- * Tests that if the nsIContentPermissionRequest has a type that
- * does not implement nsIContentPermissionType that NS_NOINTERFACE
- * is thrown, and the request is cancelled.
- */
-add_task(function* test_not_permission_type() {
- let mockRequest = new MockContentPermissionRequest([
- { QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports]) },
- ]);
-
- Assert.throws(() => { ContentPermissionPrompt.prompt(mockRequest); },
- /NS_NOINTERFACE/);
- Assert.ok(mockRequest.cancelled, "Should have cancelled the request.");
-});
-
-/**
- * Tests that if the nsIContentPermissionRequest is for a type
- * that is not recognized, that NS_ERROR_FAILURE is thrown and
- * the request is cancelled.
- */
-add_task(function* test_unrecognized_type() {
- let mockRequest = new MockContentPermissionRequest([
- new MockContentPermissionType("test1"),
- ]);
-
- Assert.throws(() => { ContentPermissionPrompt.prompt(mockRequest); },
- /NS_ERROR_FAILURE/);
- Assert.ok(mockRequest.cancelled, "Should have cancelled the request.");
-});
-
-/**
- * Tests that if we meet the minimal requirements for a
- * nsIContentPermissionRequest, that it will be passed to
- * ContentPermissionIntegration's createPermissionPrompt
- * method.
- */
-add_task(function* test_working_request() {
- let mockType = new MockContentPermissionType("test-permission-type");
- let mockRequest = new MockContentPermissionRequest([mockType]);
-
- // mockPermissionPrompt is what createPermissionPrompt
- // will return. Returning some kind of object should be
- // enough to convince nsBrowserGlue that everything went
- // okay.
- let didPrompt = false;
- let mockPermissionPrompt = {
- prompt() {
- didPrompt = true;
- }
- };
-
- let integration = (base) => ({
- createPermissionPrompt(type, request) {
- Assert.equal(type, "test-permission-type");
- Assert.ok(Object.is(request.wrappedJSObject, mockRequest.wrappedJSObject));
- return mockPermissionPrompt;
- },
- });
-
- // Register an integration so that we can capture the
- // calls into ContentPermissionIntegration.
- try {
- Integration.contentPermission.register(integration);
-
- ContentPermissionPrompt.prompt(mockRequest);
- Assert.ok(!mockRequest.cancelled,
- "Should not have cancelled the request.");
- Assert.ok(didPrompt, "Should have tried to show the prompt");
- } finally {
- Integration.contentPermission.unregister(integration);
- }
-});