| <html> |
| <head> |
| <script src="../../http/tests/inspector/inspector-test.js"></script> |
| <script src="../../http/tests/inspector/debugger-test.js"></script> |
| <script> |
| function test() |
| { |
| function resetSnippetsSettings() |
| { |
| WebInspector.scriptSnippetModel._snippetStorage.reset(); |
| WebInspector.scriptSnippetModel._lastSnippetEvaluationIndexSetting.set(0); |
| } |
| |
| // FIXME: Remove once snippets are taken out of experiments. |
| WebInspector.experimentsSettings.snippetsSupport = {}; |
| WebInspector.experimentsSettings.snippetsSupport.isEnabled = function() { return true; }; |
| var workspace = new WebInspector.Workspace(); |
| var snippetWorkspaceProvider = new WebInspector.SimpleWorkspaceProvider(workspace, WebInspector.projectTypes.Snippets); |
| var workspaceController = new WebInspector.WorkspaceController(workspace); |
| WebInspector.scriptSnippetModel = new WebInspector.ScriptSnippetModel(workspace, snippetWorkspaceProvider); |
| InspectorTest.runDebuggerTestSuite([ |
| function testCreateAndRename(next) |
| { |
| resetSnippetsSettings(); |
| var uiSourceCode = WebInspector.scriptSnippetModel.createScriptSnippet(); |
| var snippetName = "TestSnippet" + Math.random(); |
| InspectorTest.addResult("Snippet created."); |
| WebInspector.scriptSnippetModel.renameScriptSnippet(uiSourceCode, snippetName); |
| uiSourceCode.rename(snippetName); |
| InspectorTest.assertEquals(1, workspace.uiSourceCodes().length, "Only one snippet uiSourceCode should be present."); |
| var uiSourceCode = workspace.uiSourceCodes()[0]; |
| if (uiSourceCode.originURL().indexOf(snippetName) === -1) |
| return; |
| InspectorTest.addResult("Snippet uiSourceCode url is correct."); |
| next(); |
| }, |
| |
| function testEvaluate(next) |
| { |
| resetSnippetsSettings(); |
| |
| var uiSourceCode1 = WebInspector.scriptSnippetModel.createScriptSnippet(); |
| WebInspector.scriptSnippetModel.renameScriptSnippet(uiSourceCode1, "Snippet1"); |
| uiSourceCode1.rename("Snippet1"); |
| var content = ""; |
| content += "// This snippet does nothing.\n"; |
| content += "var i = 2+2;\n"; |
| uiSourceCode1.setWorkingCopy(content); |
| |
| var uiSourceCode2 = WebInspector.scriptSnippetModel.createScriptSnippet(); |
| WebInspector.scriptSnippetModel.renameScriptSnippet(uiSourceCode2, "Snippet2"); |
| uiSourceCode2.rename("Snippet2"); |
| content = ""; |
| content += "// This snippet creates a function that does nothing and returns it.\n"; |
| content += "function doesNothing() {\n"; |
| content += " var i = 2+2;\n"; |
| content += "};\n"; |
| content += "doesNothing;\n"; |
| uiSourceCode2.setWorkingCopy(content); |
| |
| function evaluateSnippetAndDumpEvaluationDetails(uiSourceCode, callback) |
| { |
| InspectorTest.addSniffer(WebInspector.SnippetScriptMapping.prototype, "addScript", dumpScript); |
| // JSC does not support compile-and-run for snippet evaluation, so different platforms have slightly different codeflow here, hence two sniffers. |
| InspectorTest.addSniffer(WebInspector.ConsoleView.prototype, "_printResult", dumpResult); |
| InspectorTest.addSniffer(WebInspector.ScriptSnippetModel.prototype, "_printRunScriptResult", dumpResult); |
| WebInspector.scriptSnippetModel.evaluateScriptSnippet(uiSourceCode); |
| var evaluationSourceURL = WebInspector.scriptSnippetModel._evaluationSourceURL(uiSourceCode); |
| var snippetId = WebInspector.scriptSnippetModel._snippetIdForUISourceCode.get(uiSourceCode); |
| InspectorTest.addResult("Last evaluation source url for snippet: " + evaluationSourceURL); |
| InspectorTest.assertEquals(snippetId, WebInspector.scriptSnippetModel._snippetIdForSourceURL(evaluationSourceURL), "Snippet can not be identified by its evaluation sourceURL."); |
| |
| function dumpScript(script) |
| { |
| InspectorTest.addResult("Snippet script added, sourceURL = " + script.sourceURL); |
| } |
| |
| function dumpResult(result, wasThrown) |
| { |
| InspectorTest.addResult("Snippet execution result: " + result.description); |
| callback(); |
| } |
| } |
| |
| evaluateSnippetAndDumpEvaluationDetails(uiSourceCode1, step2); |
| |
| function step2() |
| { |
| evaluateSnippetAndDumpEvaluationDetails(uiSourceCode2, step3); |
| } |
| |
| function step3() |
| { |
| evaluateSnippetAndDumpEvaluationDetails(uiSourceCode1, next); |
| } |
| } |
| ]); |
| }; |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests script snippet model.</p> |
| </body> |
| </html> |