123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
- "use strict";
- function test() {
- waitForExplicitFinish();
- gBrowser.selectedTab = gBrowser.addTab();
- gBrowser.selectedBrowser.addEventListener("load", function onLoad() {
- gBrowser.selectedBrowser.removeEventListener("load", onLoad, true);
- openScratchpad(runTests);
- }, true);
- content.location = "data:text/html,test context switch in Scratchpad";
- }
- function runTests() {
- let sp = gScratchpadWindow.Scratchpad;
- let contentMenu = gScratchpadWindow.document.getElementById("sp-menu-content");
- let chromeMenu = gScratchpadWindow.document.getElementById("sp-menu-browser");
- let notificationBox = sp.notificationBox;
- ok(contentMenu, "found #sp-menu-content");
- ok(chromeMenu, "found #sp-menu-browser");
- ok(notificationBox, "found Scratchpad.notificationBox");
- let tests = [{
- method: "run",
- prepare: function* () {
- sp.setContentContext();
- is(sp.executionContext, gScratchpadWindow.SCRATCHPAD_CONTEXT_CONTENT,
- "executionContext is content");
- is(contentMenu.getAttribute("checked"), "true",
- "content menuitem is checked");
- isnot(chromeMenu.getAttribute("checked"), "true",
- "chrome menuitem is not checked");
- ok(!notificationBox.currentNotification,
- "there is no notification in content context");
- sp.editor.setText("window.foobarBug636725 = 'aloha';");
- let pageResult = yield inContent(function* () {
- return content.wrappedJSObject.foobarBug636725;
- });
- ok(!pageResult, "no content.foobarBug636725");
- },
- then: function* () {
- is(content.wrappedJSObject.foobarBug636725, "aloha",
- "content.foobarBug636725 has been set");
- }
- }, {
- method: "run",
- prepare: function* () {
- sp.setBrowserContext();
- is(sp.executionContext, gScratchpadWindow.SCRATCHPAD_CONTEXT_BROWSER,
- "executionContext is chrome");
- is(chromeMenu.getAttribute("checked"), "true",
- "chrome menuitem is checked");
- isnot(contentMenu.getAttribute("checked"), "true",
- "content menuitem is not checked");
- ok(notificationBox.currentNotification,
- "there is a notification in browser context");
- let [ from, to ] = sp.editor.getPosition(31, 32);
- sp.editor.replaceText("2'", from, to);
- is(sp.getText(), "window.foobarBug636725 = 'aloha2';",
- "setText() worked");
- },
- then: function* () {
- is(window.foobarBug636725, "aloha2",
- "window.foobarBug636725 has been set");
- delete window.foobarBug636725;
- ok(!window.foobarBug636725, "no window.foobarBug636725");
- }
- }, {
- method: "run",
- prepare: function* () {
- sp.editor.replaceText("gBrowser", sp.editor.getPosition(7));
- is(sp.getText(), "window.gBrowser",
- "setText() worked with no end for the replace range");
- },
- then: function* ([, , result]) {
- is(result.class, "XULElement",
- "chrome context has access to chrome objects");
- }
- }, {
- method: "run",
- prepare: function* () {
- // Check that the sandbox is cached.
- sp.editor.setText("typeof foobarBug636725cache;");
- },
- then: function* ([, , result]) {
- is(result, "undefined", "global variable does not exist");
- }
- }, {
- method: "run",
- prepare: function* () {
- sp.editor.setText("window.foobarBug636725cache = 'foo';" +
- "typeof foobarBug636725cache;");
- },
- then: function* ([, , result]) {
- is(result, "string",
- "global variable exists across two different executions");
- }
- }, {
- method: "run",
- prepare: function* () {
- sp.editor.setText("window.foobarBug636725cache2 = 'foo';" +
- "typeof foobarBug636725cache2;");
- },
- then: function* ([, , result]) {
- is(result, "string",
- "global variable exists across two different executions");
- }
- }, {
- method: "run",
- prepare: function* () {
- sp.setContentContext();
- is(sp.executionContext, gScratchpadWindow.SCRATCHPAD_CONTEXT_CONTENT,
- "executionContext is content");
- sp.editor.setText("typeof foobarBug636725cache2;");
- },
- then: function* ([, , result]) {
- is(result, "undefined",
- "global variable no longer exists after changing the context");
- }
- }];
- runAsyncCallbackTests(sp, tests).then(() => {
- sp.setBrowserContext();
- sp.editor.setText("delete foobarBug636725cache;" +
- "delete foobarBug636725cache2;");
- sp.run().then(finish);
- });
- }
|