blob: ec7eabee005d7ae0ae25d2ec9398db0cdedd3497 [file] [log] [blame]
<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>