File: browser_scratchpad_contexts.js

package info (click to toggle)
wine-gecko-2.21 2.21%2Bdfsg2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 646,272 kB
  • ctags: 630,086
  • sloc: cpp: 2,895,786; ansic: 1,502,970; python: 156,675; asm: 115,373; java: 111,421; sh: 63,309; xml: 62,872; makefile: 58,685; perl: 19,182; objc: 3,461; yacc: 2,051; lex: 979; pascal: 929; exp: 449; php: 244; lisp: 228; awk: 211; sed: 26; csh: 21; ada: 16; ruby: 3
file content (135 lines) | stat: -rw-r--r-- 3,898 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* vim: set ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

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");

  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");

  let dsp = sp.contentSandbox.__SCRATCHPAD__;

  ok(sp.contentSandbox.__SCRATCHPAD__,
      "there is a variable named __SCRATCHPAD__");

  ok(sp.contentSandbox.__SCRATCHPAD__.editor,
      "scratchpad is actually an instance of Scratchpad");

  sp.setText("window.foobarBug636725 = 'aloha';");

  ok(!content.wrappedJSObject.foobarBug636725,
     "no content.foobarBug636725");

  sp.run();

  is(content.wrappedJSObject.foobarBug636725, "aloha",
     "content.foobarBug636725 has been set");

  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(sp.chromeSandbox.__SCRATCHPAD__,
    "there is a variable named __SCRATCHPAD__");

  ok(sp.chromeSandbox.__SCRATCHPAD__.editor,
      "scratchpad is actually an instance of Scratchpad");

  ok(notificationBox.currentNotification,
     "there is a notification in browser context");

  sp.setText("2'", 31, 33);

  ok(sp.getText(), "window.foobarBug636725 = 'aloha2';",
     "setText() worked");

  ok(!window.foobarBug636725, "no window.foobarBug636725");

  sp.run();

  is(window.foobarBug636725, "aloha2", "window.foobarBug636725 has been set");
  delete window.foobarBug636725;

  sp.setText("gBrowser", 7);

  ok(sp.getText(), "window.gBrowser",
     "setText() worked with no end for the replace range");

  is(typeof sp.run()[2].addTab, "function",
     "chrome context has access to chrome objects");

  // Check that the sandbox is cached.

  sp.setText("typeof foobarBug636725cache;");
  is(sp.run()[2], "undefined", "global variable does not exist");

  sp.setText("var foobarBug636725cache = 'foo';");
  sp.run();

  sp.setText("typeof foobarBug636725cache;");
  is(sp.run()[2], "string",
     "global variable exists across two different executions");

  sp.resetContext();

  is(sp.run()[2], "undefined",
     "global variable no longer exists after calling resetContext()");

  sp.setText("var foobarBug636725cache2 = 'foo';");
  sp.run();

  sp.setText("typeof foobarBug636725cache2;");
  is(sp.run()[2], "string",
     "global variable exists across two different executions");

  sp.setContentContext();

  is(sp.executionContext, gScratchpadWindow.SCRATCHPAD_CONTEXT_CONTENT,
     "executionContext is content");

  is(sp.run()[2], "undefined",
     "global variable no longer exists after changing the context");

  finish();
}