Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/script-snippet-model.html

Issue 2493373002: DevTools: rename WebInspector into modules. (Closed)
Patch Set: for bots Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <html> 1 <html>
2 <head> 2 <head>
3 <script src="../../../http/tests/inspector/inspector-test.js"></script> 3 <script src="../../../http/tests/inspector/inspector-test.js"></script>
4 <script src="../../../http/tests/inspector/debugger-test.js"></script> 4 <script src="../../../http/tests/inspector/debugger-test.js"></script>
5 <script> 5 <script>
6 function startWorker() 6 function startWorker()
7 { 7 {
8 var workerScript = "postMessage('Done.');"; 8 var workerScript = "postMessage('Done.');";
9 var blob = new Blob([workerScript], { type: "text/javascript" }); 9 var blob = new Blob([workerScript], { type: "text/javascript" });
10 var worker = new Worker(URL.createObjectURL(blob)); 10 var worker = new Worker(URL.createObjectURL(blob));
11 } 11 }
12 12
13 function test() 13 function test()
14 { 14 {
15 function evaluateSnippetAndDumpEvaluationDetails(uiSourceCode, context, call back) 15 function evaluateSnippetAndDumpEvaluationDetails(uiSourceCode, context, call back)
16 { 16 {
17 InspectorTest.addSniffer(WebInspector.ScriptSnippetModel.prototype, "_pr intRunScriptResult", dumpResult); 17 InspectorTest.addSniffer(Snippets.ScriptSnippetModel.prototype, "_printR unScriptResult", dumpResult);
18 WebInspector.scriptSnippetModel.evaluateScriptSnippet(context, uiSourceC ode); 18 Snippets.scriptSnippetModel.evaluateScriptSnippet(context, uiSourceCode) ;
19 var target = context.target(); 19 var target = context.target();
20 var mapping = WebInspector.scriptSnippetModel._mappingForTarget.get(targ et); 20 var mapping = Snippets.scriptSnippetModel._mappingForTarget.get(target);
21 var evaluationSourceURL = mapping._evaluationSourceURL(uiSourceCode); 21 var evaluationSourceURL = mapping._evaluationSourceURL(uiSourceCode);
22 var snippetId = WebInspector.scriptSnippetModel._snippetIdForUISourceCod e.get(uiSourceCode); 22 var snippetId = Snippets.scriptSnippetModel._snippetIdForUISourceCode.ge t(uiSourceCode);
23 InspectorTest.addResult("Last evaluation source url for snippet: " + eva luationSourceURL); 23 InspectorTest.addResult("Last evaluation source url for snippet: " + eva luationSourceURL);
24 InspectorTest.assertEquals(snippetId, WebInspector.scriptSnippetModel._s nippetIdForSourceURL(evaluationSourceURL), "Snippet can not be identified by its evaluation sourceURL."); 24 InspectorTest.assertEquals(snippetId, Snippets.scriptSnippetModel._snipp etIdForSourceURL(evaluationSourceURL), "Snippet can not be identified by its eva luation sourceURL.");
25 25
26 26
27 function dumpResult(target, result) 27 function dumpResult(target, result)
28 { 28 {
29 InspectorTest.addResult("Snippet execution result: " + result.descri ption); 29 InspectorTest.addResult("Snippet execution result: " + result.descri ption);
30 callback(); 30 callback();
31 } 31 }
32 } 32 }
33 33
34 function resetSnippetsSettings() 34 function resetSnippetsSettings()
35 { 35 {
36 WebInspector.scriptSnippetModel._snippetStorage._lastSnippetIdentifierSe tting.set(0); 36 Snippets.scriptSnippetModel._snippetStorage._lastSnippetIdentifierSettin g.set(0);
37 WebInspector.scriptSnippetModel._snippetStorage._snippetsSetting.set([]) ; 37 Snippets.scriptSnippetModel._snippetStorage._snippetsSetting.set([]);
38 WebInspector.scriptSnippetModel._lastSnippetEvaluationIndexSetting.set(0 ); 38 Snippets.scriptSnippetModel._lastSnippetEvaluationIndexSetting.set(0);
39 WebInspector.scriptSnippetModel._project.removeProject(); 39 Snippets.scriptSnippetModel._project.removeProject();
40 WebInspector.scriptSnippetModel = new WebInspector.ScriptSnippetModel(We bInspector.workspace); 40 Snippets.scriptSnippetModel = new Snippets.ScriptSnippetModel(Workspace. workspace);
41 } 41 }
42 42
43 var workspace = WebInspector.workspace; 43 var workspace = Workspace.workspace;
44 InspectorTest.runDebuggerTestSuite([ 44 InspectorTest.runDebuggerTestSuite([
45 function testCreateEditRenameRemove(next) 45 function testCreateEditRenameRemove(next)
46 { 46 {
47 var uiSourceCode1; 47 var uiSourceCode1;
48 48
49 function filterSnippet(uiSourceCode) 49 function filterSnippet(uiSourceCode)
50 { 50 {
51 return uiSourceCode.project().type() === WebInspector.projectTyp es.Snippets; 51 return uiSourceCode.project().type() === Workspace.projectTypes. Snippets;
52 } 52 }
53 53
54 function uiSourceCodeAdded(event) 54 function uiSourceCodeAdded(event)
55 { 55 {
56 var uiSourceCode = event.data; 56 var uiSourceCode = event.data;
57 InspectorTest.addResult("UISourceCodeAdded: " + uiSourceCode.nam e()); 57 InspectorTest.addResult("UISourceCodeAdded: " + uiSourceCode.nam e());
58 } 58 }
59 59
60 function uiSourceCodeRemoved(event) 60 function uiSourceCodeRemoved(event)
61 { 61 {
62 var uiSourceCode = event.data; 62 var uiSourceCode = event.data;
63 InspectorTest.addResult("UISourceCodeRemoved: " + uiSourceCode.n ame()); 63 InspectorTest.addResult("UISourceCodeRemoved: " + uiSourceCode.n ame());
64 } 64 }
65 65
66 workspace.addEventListener(WebInspector.Workspace.Events.UISourceCod eAdded, uiSourceCodeAdded); 66 workspace.addEventListener(Workspace.Workspace.Events.UISourceCodeAd ded, uiSourceCodeAdded);
67 workspace.addEventListener(WebInspector.Workspace.Events.UISourceCod eRemoved, uiSourceCodeRemoved); 67 workspace.addEventListener(Workspace.Workspace.Events.UISourceCodeRe moved, uiSourceCodeRemoved);
68 68
69 function renameSnippetAndCheckWorkspace(uiSourceCode, snippetName) 69 function renameSnippetAndCheckWorkspace(uiSourceCode, snippetName)
70 { 70 {
71 InspectorTest.addResult("Renaming snippet to '" + snippetName + "' ..."); 71 InspectorTest.addResult("Renaming snippet to '" + snippetName + "' ...");
72 uiSourceCode.rename(snippetName, renameCallback); 72 uiSourceCode.rename(snippetName, renameCallback);
73 73
74 function renameCallback(success) 74 function renameCallback(success)
75 { 75 {
76 if (success) 76 if (success)
77 InspectorTest.addResult("Snippet renamed successfully.") ; 77 InspectorTest.addResult("Snippet renamed successfully.") ;
78 else 78 else
79 InspectorTest.addResult("Snippet was not renamed."); 79 InspectorTest.addResult("Snippet was not renamed.");
80 } 80 }
81 InspectorTest.addResult("UISourceCode name is '" + uiSourceCode. name() + "' now."); 81 InspectorTest.addResult("UISourceCode name is '" + uiSourceCode. name() + "' now.");
82 InspectorTest.addResult("Number of uiSourceCodes in workspace: " + workspace.uiSourceCodes().filter(filterSnippet).length); 82 InspectorTest.addResult("Number of uiSourceCodes in workspace: " + workspace.uiSourceCodes().filter(filterSnippet).length);
83 var storageSnippetsCount = WebInspector.scriptSnippetModel._snip petStorage.snippets().length; 83 var storageSnippetsCount = Snippets.scriptSnippetModel._snippetS torage.snippets().length;
84 InspectorTest.addResult("Number of snippets in the storage: " + storageSnippetsCount); 84 InspectorTest.addResult("Number of snippets in the storage: " + storageSnippetsCount);
85 } 85 }
86 86
87 function contentCallback(content) 87 function contentCallback(content)
88 { 88 {
89 InspectorTest.addResult("Snippet content: " + content); 89 InspectorTest.addResult("Snippet content: " + content);
90 } 90 }
91 91
92 resetSnippetsSettings(); 92 resetSnippetsSettings();
93 93
94 WebInspector.scriptSnippetModel.project().createFile("", null, "", s tep2.bind(this)); 94 Snippets.scriptSnippetModel.project().createFile("", null, "", step2 .bind(this));
95 95
96 function step2(uiSourceCode) 96 function step2(uiSourceCode)
97 { 97 {
98 uiSourceCode1 = uiSourceCode; 98 uiSourceCode1 = uiSourceCode;
99 99
100 uiSourceCode1.requestContent().then(contentCallback) 100 uiSourceCode1.requestContent().then(contentCallback)
101 .then(contentDumped1); 101 .then(contentDumped1);
102 102
103 function contentDumped1() 103 function contentDumped1()
104 { 104 {
105 uiSourceCode1.addRevision("<snippet content>"); 105 uiSourceCode1.addRevision("<snippet content>");
106 InspectorTest.addResult("Snippet content set."); 106 InspectorTest.addResult("Snippet content set.");
107 delete uiSourceCode1._content; 107 delete uiSourceCode1._content;
108 delete uiSourceCode1._contentLoaded; 108 delete uiSourceCode1._contentLoaded;
109 uiSourceCode1.requestContent() 109 uiSourceCode1.requestContent()
110 .then(contentCallback) 110 .then(contentCallback)
111 .then(contentDumped2) 111 .then(contentDumped2)
112 } 112 }
113 113
114 function contentDumped2() 114 function contentDumped2()
115 { 115 {
116 InspectorTest.addResult("Snippet1 created."); 116 InspectorTest.addResult("Snippet1 created.");
117 WebInspector.scriptSnippetModel.project().createFile("", nul l, "", step3.bind(this)); 117 Snippets.scriptSnippetModel.project().createFile("", null, " ", step3.bind(this));
118 } 118 }
119 } 119 }
120 120
121 function step3(uiSourceCode) 121 function step3(uiSourceCode)
122 { 122 {
123 var uiSourceCode2 = uiSourceCode; 123 var uiSourceCode2 = uiSourceCode;
124 InspectorTest.addResult("Snippet2 created."); 124 InspectorTest.addResult("Snippet2 created.");
125 renameSnippetAndCheckWorkspace(uiSourceCode1, "foo"); 125 renameSnippetAndCheckWorkspace(uiSourceCode1, "foo");
126 renameSnippetAndCheckWorkspace(uiSourceCode1, " "); 126 renameSnippetAndCheckWorkspace(uiSourceCode1, " ");
127 renameSnippetAndCheckWorkspace(uiSourceCode1, " bar "); 127 renameSnippetAndCheckWorkspace(uiSourceCode1, " bar ");
128 renameSnippetAndCheckWorkspace(uiSourceCode1, "foo"); 128 renameSnippetAndCheckWorkspace(uiSourceCode1, "foo");
129 renameSnippetAndCheckWorkspace(uiSourceCode2, "bar"); 129 renameSnippetAndCheckWorkspace(uiSourceCode2, "bar");
130 renameSnippetAndCheckWorkspace(uiSourceCode2, "foo"); 130 renameSnippetAndCheckWorkspace(uiSourceCode2, "foo");
131 delete uiSourceCode1._content; 131 delete uiSourceCode1._content;
132 delete uiSourceCode1._contentLoaded; 132 delete uiSourceCode1._contentLoaded;
133 uiSourceCode1.requestContent() 133 uiSourceCode1.requestContent()
134 .then(contentCallback) 134 .then(contentCallback)
135 .then(onContentDumped); 135 .then(onContentDumped);
136 136
137 function onContentDumped() 137 function onContentDumped()
138 { 138 {
139 WebInspector.scriptSnippetModel.project().deleteFile(uiSourc eCode1.url()); 139 Snippets.scriptSnippetModel.project().deleteFile(uiSourceCod e1.url());
140 WebInspector.scriptSnippetModel.project().deleteFile(uiSourc eCode2.url()); 140 Snippets.scriptSnippetModel.project().deleteFile(uiSourceCod e2.url());
141 WebInspector.scriptSnippetModel.project().createFile("", nul l, "", step4.bind(this)); 141 Snippets.scriptSnippetModel.project().createFile("", null, " ", step4.bind(this));
142 } 142 }
143 } 143 }
144 144
145 function step4(uiSourceCode) 145 function step4(uiSourceCode)
146 { 146 {
147 var uiSourceCode3 = uiSourceCode; 147 var uiSourceCode3 = uiSourceCode;
148 InspectorTest.addResult("Snippet3 created."); 148 InspectorTest.addResult("Snippet3 created.");
149 WebInspector.scriptSnippetModel.project().deleteFile(uiSourceCod e3.url()); 149 Snippets.scriptSnippetModel.project().deleteFile(uiSourceCode3.u rl());
150 InspectorTest.addResult("Snippet3 deleted."); 150 InspectorTest.addResult("Snippet3 deleted.");
151 151
152 InspectorTest.addResult("Number of uiSourceCodes in workspace: " + workspace.uiSourceCodes().filter(filterSnippet).length); 152 InspectorTest.addResult("Number of uiSourceCodes in workspace: " + workspace.uiSourceCodes().filter(filterSnippet).length);
153 var storageSnippetsCount = WebInspector.scriptSnippetModel._snip petStorage.snippets().length; 153 var storageSnippetsCount = Snippets.scriptSnippetModel._snippetS torage.snippets().length;
154 InspectorTest.addResult("Number of snippets in the storage: " + storageSnippetsCount); 154 InspectorTest.addResult("Number of snippets in the storage: " + storageSnippetsCount);
155 155
156 workspace.removeEventListener(WebInspector.Workspace.Events.UISo urceCodeAdded, uiSourceCodeAdded); 156 workspace.removeEventListener(Workspace.Workspace.Events.UISourc eCodeAdded, uiSourceCodeAdded);
157 workspace.removeEventListener(WebInspector.Workspace.Events.UISo urceCodeRemoved, uiSourceCodeRemoved); 157 workspace.removeEventListener(Workspace.Workspace.Events.UISourc eCodeRemoved, uiSourceCodeRemoved);
158 158
159 next(); 159 next();
160 } 160 }
161 }, 161 },
162 162
163 function testEvaluate(next) 163 function testEvaluate(next)
164 { 164 {
165 var uiSourceCode1; 165 var uiSourceCode1;
166 var uiSourceCode2; 166 var uiSourceCode2;
167 var uiSourceCode3; 167 var uiSourceCode3;
168 var context = WebInspector.context.flavor(WebInspector.ExecutionCont ext); 168 var context = UI.context.flavor(SDK.ExecutionContext);
169 169
170 resetSnippetsSettings(); 170 resetSnippetsSettings();
171 var snippetScriptMapping = WebInspector.scriptSnippetModel.snippetSc riptMapping(WebInspector.targetManager.targets()[0]); 171 var snippetScriptMapping = Snippets.scriptSnippetModel.snippetScript Mapping(SDK.targetManager.targets()[0]);
172 172
173 WebInspector.scriptSnippetModel.project().createFile("", null, "", s tep2.bind(this)); 173 Snippets.scriptSnippetModel.project().createFile("", null, "", step2 .bind(this));
174 174
175 function step2(uiSourceCode) 175 function step2(uiSourceCode)
176 { 176 {
177 uiSourceCode1 = uiSourceCode; 177 uiSourceCode1 = uiSourceCode;
178 uiSourceCode1.rename("Snippet1", function() { }); 178 uiSourceCode1.rename("Snippet1", function() { });
179 var content = ""; 179 var content = "";
180 content += "// This snippet does nothing.\n"; 180 content += "// This snippet does nothing.\n";
181 content += "var i = 2+2;\n"; 181 content += "var i = 2+2;\n";
182 uiSourceCode1.setWorkingCopy(content); 182 uiSourceCode1.setWorkingCopy(content);
183 WebInspector.scriptSnippetModel.project().createFile("", null, " ", step3.bind(this)); 183 Snippets.scriptSnippetModel.project().createFile("", null, "", s tep3.bind(this));
184 } 184 }
185 185
186 function step3(uiSourceCode) 186 function step3(uiSourceCode)
187 { 187 {
188 uiSourceCode2 = uiSourceCode; 188 uiSourceCode2 = uiSourceCode;
189 uiSourceCode2.rename("Snippet2", function() { }); 189 uiSourceCode2.rename("Snippet2", function() { });
190 content = ""; 190 content = "";
191 content += "// This snippet creates a function that does nothing and returns it.\n"; 191 content += "// This snippet creates a function that does nothing and returns it.\n";
192 content += "function doesNothing() {\n"; 192 content += "function doesNothing() {\n";
193 content += " var i = 2+2;\n"; 193 content += " var i = 2+2;\n";
194 content += "};\n"; 194 content += "};\n";
195 content += "doesNothing;\n"; 195 content += "doesNothing;\n";
196 uiSourceCode2.setWorkingCopy(content); 196 uiSourceCode2.setWorkingCopy(content);
197 WebInspector.scriptSnippetModel.project().createFile("", null, " ", step4.bind(this)); 197 Snippets.scriptSnippetModel.project().createFile("", null, "", s tep4.bind(this));
198 } 198 }
199 199
200 function step4(uiSourceCode) 200 function step4(uiSourceCode)
201 { 201 {
202 uiSourceCode3 = uiSourceCode; 202 uiSourceCode3 = uiSourceCode;
203 uiSourceCode3.rename("Snippet3", function() { }); 203 uiSourceCode3.rename("Snippet3", function() { });
204 content = ""; 204 content = "";
205 content += "// This snippet uses Command Line API.\n"; 205 content += "// This snippet uses Command Line API.\n";
206 content += "$$(\"p\").length"; 206 content += "$$(\"p\").length";
207 uiSourceCode3.setWorkingCopy(content); 207 uiSourceCode3.setWorkingCopy(content);
(...skipping 13 matching lines...) Expand all
221 function step7() 221 function step7()
222 { 222 {
223 evaluateSnippetAndDumpEvaluationDetails(uiSourceCode3, context, next); 223 evaluateSnippetAndDumpEvaluationDetails(uiSourceCode3, context, next);
224 } 224 }
225 }, 225 },
226 226
227 function testEvaluateEditReload(next) 227 function testEvaluateEditReload(next)
228 { 228 {
229 function evaluateSnippetAndReloadPage(uiSourceCode, callback) 229 function evaluateSnippetAndReloadPage(uiSourceCode, callback)
230 { 230 {
231 InspectorTest.addSniffer(WebInspector.ScriptSnippetModel.prototy pe, "_printRunScriptResult", snippetFinished); 231 InspectorTest.addSniffer(Snippets.ScriptSnippetModel.prototype, "_printRunScriptResult", snippetFinished);
232 WebInspector.scriptSnippetModel.evaluateScriptSnippet(WebInspect or.context.flavor(WebInspector.ExecutionContext), uiSourceCode); 232 Snippets.scriptSnippetModel.evaluateScriptSnippet(UI.context.fla vor(SDK.ExecutionContext), uiSourceCode);
233 233
234 function snippetFinished(result) 234 function snippetFinished(result)
235 { 235 {
236 var script = snippetScriptMapping._scriptForUISourceCode.get (uiSourceCode); 236 var script = snippetScriptMapping._scriptForUISourceCode.get (uiSourceCode);
237 InspectorTest.addResult("Snippet execution result: " + resul t.description); 237 InspectorTest.addResult("Snippet execution result: " + resul t.description);
238 238
239 InspectorTest.reloadPage(callback) 239 InspectorTest.reloadPage(callback)
240 } 240 }
241 } 241 }
242 242
243 resetSnippetsSettings(); 243 resetSnippetsSettings();
244 var snippetScriptMapping = WebInspector.scriptSnippetModel.snippetSc riptMapping(WebInspector.targetManager.targets()[0]); 244 var snippetScriptMapping = Snippets.scriptSnippetModel.snippetScript Mapping(SDK.targetManager.targets()[0]);
245 245
246 WebInspector.scriptSnippetModel.project().createFile("", null, "", s tep3.bind(this)); 246 Snippets.scriptSnippetModel.project().createFile("", null, "", step3 .bind(this));
247 247
248 function step3(uiSourceCode) 248 function step3(uiSourceCode)
249 { 249 {
250 var uiSourceCode1 = uiSourceCode; 250 var uiSourceCode1 = uiSourceCode;
251 uiSourceCode1.rename("Snippet1", function() { }); 251 uiSourceCode1.rename("Snippet1", function() { });
252 var content = ""; 252 var content = "";
253 content += "// This snippet does nothing.\n"; 253 content += "// This snippet does nothing.\n";
254 content += "var i = 2+2;\n"; 254 content += "var i = 2+2;\n";
255 uiSourceCode1.setWorkingCopy(content); 255 uiSourceCode1.setWorkingCopy(content);
256 256
257 evaluateSnippetAndReloadPage(uiSourceCode1, next); 257 evaluateSnippetAndReloadPage(uiSourceCode1, next);
258 } 258 }
259 }, 259 },
260 260
261 function testEvaluateInWorker(next) 261 function testEvaluateInWorker(next)
262 { 262 {
263 var context; 263 var context;
264 264
265 InspectorTest.addSniffer(WebInspector.RuntimeModel.prototype, "_exec utionContextCreated", contextCreated); 265 InspectorTest.addSniffer(SDK.RuntimeModel.prototype, "_executionCont extCreated", contextCreated);
266 InspectorTest.evaluateInPage("startWorker()"); 266 InspectorTest.evaluateInPage("startWorker()");
267 267
268 function contextCreated() 268 function contextCreated()
269 { 269 {
270 // Take the only execution context from the worker's RuntimeMode l. 270 // Take the only execution context from the worker's RuntimeMode l.
271 context = this.executionContexts()[0]; 271 context = this.executionContexts()[0];
272 272
273 resetSnippetsSettings(); 273 resetSnippetsSettings();
274 WebInspector.scriptSnippetModel.project().createFile("", null, " ", step2.bind(this)); 274 Snippets.scriptSnippetModel.project().createFile("", null, "", s tep2.bind(this));
275 } 275 }
276 276
277 function step2(uiSourceCode) 277 function step2(uiSourceCode)
278 { 278 {
279 uiSourceCode.rename("Snippet1", function() { }); 279 uiSourceCode.rename("Snippet1", function() { });
280 var content = "2+2;\n"; 280 var content = "2+2;\n";
281 uiSourceCode.setWorkingCopy(content); 281 uiSourceCode.setWorkingCopy(content);
282 evaluateSnippetAndDumpEvaluationDetails(uiSourceCode, context, n ext); 282 evaluateSnippetAndDumpEvaluationDetails(uiSourceCode, context, n ext);
283 } 283 }
284 }, 284 },
285 285
286 function testDangerousNames(next) 286 function testDangerousNames(next)
287 { 287 {
288 resetSnippetsSettings(); 288 resetSnippetsSettings();
289 289
290 WebInspector.scriptSnippetModel.project().createFile("", null, "", s tep2.bind(this)); 290 Snippets.scriptSnippetModel.project().createFile("", null, "", step2 .bind(this));
291 291
292 function step2(uiSourceCode) 292 function step2(uiSourceCode)
293 { 293 {
294 uiSourceCode.rename("toString", function() { }); 294 uiSourceCode.rename("toString", function() { });
295 InspectorTest.showUISourceCode(uiSourceCode,step3.bind(this)); 295 InspectorTest.showUISourceCode(uiSourceCode,step3.bind(this));
296 } 296 }
297 297
298 function step3() 298 function step3()
299 { 299 {
300 WebInspector.scriptSnippetModel.project().createFile("", null, " ", step4.bind(this)); 300 Snippets.scriptSnippetModel.project().createFile("", null, "", s tep4.bind(this));
301 } 301 }
302 302
303 function step4(uiSourceCode) 303 function step4(uiSourceCode)
304 { 304 {
305 uiSourceCode.rename("myfile.toString", function() { }); 305 uiSourceCode.rename("myfile.toString", function() { });
306 InspectorTest.showUISourceCode(uiSourceCode,next); 306 InspectorTest.showUISourceCode(uiSourceCode,next);
307 } 307 }
308 } 308 }
309 ]); 309 ]);
310 }; 310 };
311 </script> 311 </script>
312 </head> 312 </head>
313 <body onload="runTest()"> 313 <body onload="runTest()">
314 <p>Tests script snippet model.</p> 314 <p>Tests script snippet model.</p>
315 </body> 315 </body>
316 </html> 316 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698