Commit 53a19740 authored by dgozman's avatar dgozman Committed by Commit bot

[DevTools] Remove workspace-test.js part3.

Extracted the meaningful part of the test which checks
multiple scripts in the same html file.

BUG=none

Review-Url: https://codereview.chromium.org/2537023002
Cr-Commit-Position: refs/heads/master@{#434913}
parent 97c594d8
Tests ResourceScriptMapping class. Tests ResourceScriptMapping class.
Running: testScriptWithPendingResource Waiting for scripts
Adding script for pending request. Script arrived
UISourceCode: debugger:///VM1 foo.js Script arrived
UISourceCode is content script: false Script arrived
Highlighter type: text/javascript Waiting for UISourceCode
UISourceCode content: <content script source> UISourceCode arrived
Adding uiSourceCode for finished resource. Checking script at (3, 8)
UISourceCode: foo.js Checking script at (11, 12)
UISourceCode is content script: false Checking script at (16, 8)
Highlighter type: text/javascript
UISourceCode content: <content script resource content>
Running: testScriptWithFinishedResource
Adding uiSourceCode for finished resource.
UISourceCode: foo.js
UISourceCode is content script: false
Highlighter type: text/javascript
UISourceCode content: <script resource content>
Adding script for finished request.
UISourceCode: foo.js
UISourceCode is content script: false
Highlighter type: text/javascript
UISourceCode content: <script resource content>
Running: testHTMLWithPendingResource
Adding first script for pending request.
UISourceCode: debugger:///VM3 index.html
UISourceCode is content script: false
Highlighter type: text/html
UISourceCode content: <script source 1>
Adding second script for pending request.
UISourceCode: debugger:///VM4 index.html
UISourceCode is content script: false
Highlighter type: text/html
UISourceCode content: <script source 2>
Adding uiSourceCode for finished resource.
UISourceCode: index.html
UISourceCode is content script: false
Highlighter type: text/html
UISourceCode content: <resource content>
Running: testHTMLWithFinishedResource
Adding uiSourceCode for finished resource.
UISourceCode: index.html
UISourceCode is content script: false
Highlighter type: text/html
UISourceCode content: <resource content>
Adding first script for finished request.
UISourceCode: index.html
UISourceCode is content script: false
Highlighter type: text/html
UISourceCode content: <resource content>
Adding second script for finished request.
UISourceCode: index.html
UISourceCode is content script: false
Highlighter type: text/html
UISourceCode content: <resource content>
...@@ -2,220 +2,54 @@ ...@@ -2,220 +2,54 @@
<head> <head>
<script src="../../../http/tests/inspector/inspector-test.js"></script> <script src="../../../http/tests/inspector/inspector-test.js"></script>
<script src="../../../http/tests/inspector/debugger-test.js"></script> <script src="../../../http/tests/inspector/debugger-test.js"></script>
<script src="../../../http/tests/inspector/workspace-test.js"></script>
<script> <script>
function loadIframe()
{
var iframe = document.createElement("iframe");
iframe.setAttribute("src", "resources/multiple-scripts.html");
document.body.appendChild(iframe);
}
function test() function test()
{ {
var defaultScriptMapping; var url = InspectorTest.mainTarget.inspectedURL().replace("resource-script-mapping.html", "resources/multiple-scripts.html");
var target = InspectorTest.debuggerModel.target(); var scripts = [];
var count = 3;
function createResourceScriptMapping() InspectorTest.addResult("Waiting for scripts");
{ InspectorTest.debuggerModel.addEventListener(SDK.DebuggerModel.Events.ParsedScriptSource, onScriptParsed);
InspectorTest.createWorkspace(); InspectorTest.evaluateInPage("loadIframe()");
InspectorTest.testTargetManager.addTarget(target);
defaultScriptMapping = InspectorTest.testDebuggerWorkspaceBinding._targetToData.get(target)._defaultMapping;
var resourceScriptMapping = new Bindings.ResourceScriptMapping(InspectorTest.debuggerModel, InspectorTest.testWorkspace, InspectorTest.testDebuggerWorkspaceBinding);
return resourceScriptMapping;
}
function uiLocation(script, lineNumber, columnNumber) function onScriptParsed(event)
{ {
var location = script.debuggerModel.createRawLocation(script, lineNumber, columnNumber); var script = event.data;
return InspectorTest.testDebuggerWorkspaceBinding.rawLocationToUILocation(location); if (script.sourceURL !== url)
return;
InspectorTest.addResult("Script arrived");
scripts.push(script);
if (!--count) {
InspectorTest.debuggerModel.removeEventListener(SDK.DebuggerModel.Events.ParsedScriptSource, onScriptParsed);
InspectorTest.addResult("Waiting for UISourceCode");
InspectorTest.waitForUISourceCode(onUISourceCode, url);
}
} }
function resetModels() function onUISourceCode(uiSourceCode)
{ {
InspectorTest.debuggerModel._reset(); InspectorTest.addResult("UISourceCode arrived");
} scripts.sort((s1, s2) => { return s1.lineOffset - s2.lineOffset; });
for (var script of scripts) {
InspectorTest.runTestSuite([ InspectorTest.addResult(`Checking script at (${script.lineOffset}, ${script.columnOffset})`);
function testScriptWithPendingResource(next) var line = script.lineOffset;
{ var column = script.columnOffset + 2;
var script; var rawLocation = InspectorTest.debuggerModel.createRawLocation(script, line, column);
resetModels(); var uiLocation = Bindings.debuggerWorkspaceBinding.rawLocationToUILocation(rawLocation);
var resourceScriptMapping = createResourceScriptMapping(); InspectorTest.checkUILocation(uiSourceCode, line, column, uiLocation);
var url = "foo.js"; var reverseLocation = Bindings.debuggerWorkspaceBinding.uiLocationToRawLocation(InspectorTest.mainTarget, uiSourceCode, line, column);
step1(); InspectorTest.checkRawLocation(script, line, column, reverseLocation);
function step1()
{
InspectorTest.addResult("Adding script for pending request.");
script = InspectorTest.createScriptMock(url, 0, 0, true, "<content script source>");
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(originalUISourceCodeAdded);
defaultScriptMapping.addScript(script);
resourceScriptMapping.addScript(script);
var originalUISourceCode;
uiLocation(script, 0, 5);
function originalUISourceCodeAdded(uiSourceCode)
{
originalUISourceCode = uiSourceCode;
}
InspectorTest.checkUILocation(originalUISourceCode, 0, 5, uiLocation(script, 0, 5));
InspectorTest.checkRawLocation(script, 10, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, originalUISourceCode, 10, 0));
InspectorTest.dumpUISourceCode(originalUISourceCode, step2);
}
function step2()
{
InspectorTest.addResult("Adding uiSourceCode for finished resource.");
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(uiSourceCodeAdded);
InspectorTest.addMockUISourceCodeToWorkspace(url, Common.resourceTypes.Script, "<content script resource content>");
function uiSourceCodeAdded(uiSourceCode)
{
InspectorTest.checkUILocation(uiSourceCode, 0, 5, uiLocation(script, 0, 5));
InspectorTest.checkRawLocation(script, 10, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, uiSourceCode, 10, 0));
InspectorTest.dumpUISourceCode(uiSourceCode, next);
}
}
},
function testScriptWithFinishedResource(next)
{
var script;
resetModels();
var mockUISourceCode;
var resourceScriptMapping = createResourceScriptMapping();
var url = "foo.js";
step1();
function step1()
{
InspectorTest.addResult("Adding uiSourceCode for finished resource.");
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(uiSourceCodeForResourceAdded);
InspectorTest.addMockUISourceCodeToWorkspace(url, Common.resourceTypes.Script, "<script resource content>");
}
function uiSourceCodeForResourceAdded(uiSourceCode)
{
mockUISourceCode = uiSourceCode;
InspectorTest.dumpUISourceCode(uiSourceCode, step2);
}
function step2()
{
InspectorTest.addResult("Adding script for finished request.");
script = InspectorTest.createScriptMock(url, 0, 0, false, "<script source>");
resourceScriptMapping.addScript(script);
InspectorTest.checkUILocation(mockUISourceCode, 0, 5, uiLocation(script, 0, 5));
InspectorTest.checkRawLocation(script, 10, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, mockUISourceCode, 10, 0));
InspectorTest.dumpUISourceCode(mockUISourceCode, next);
}
},
function testHTMLWithPendingResource(next)
{
var script1;
var script2;
resetModels();
var resourceScriptMapping = createResourceScriptMapping();
var originalUISourceCode1;
var originalUISourceCode2;
var url = "index.html";
step1();
function step1()
{
InspectorTest.addResult("Adding first script for pending request.");
script1 = InspectorTest.createScriptMock(url, 0, 10, false, "<script source 1>");
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(originalUISourceCodeAdded);
defaultScriptMapping.addScript(script1);
resourceScriptMapping.addScript(script1);
uiLocation(script1, 0, 5);
function originalUISourceCodeAdded(uiSourceCode)
{
originalUISourceCode1 = uiSourceCode;
}
InspectorTest.checkUILocation(originalUISourceCode1, 0, 5, uiLocation(script1, 0, 5));
InspectorTest.checkRawLocation(script1, 10, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, originalUISourceCode1, 10, 0));
InspectorTest.dumpUISourceCode(originalUISourceCode1, step2);
}
function step2()
{
InspectorTest.addResult("Adding second script for pending request.");
script2 = InspectorTest.createScriptMock(url, 0, 45, false, "<script source 2>");
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(originalUISourceCodeAdded);
defaultScriptMapping.addScript(script2);
resourceScriptMapping.addScript(script2);
function originalUISourceCodeAdded(uiSourceCode)
{
originalUISourceCode2 = uiSourceCode;
}
InspectorTest.checkUILocation(originalUISourceCode2, 0, 45, uiLocation(script2, 0, 45));
InspectorTest.checkRawLocation(script1, 10, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, originalUISourceCode1, 10, 0));
InspectorTest.dumpUISourceCode(originalUISourceCode2, step3);
}
function step3()
{
InspectorTest.addResult("Adding uiSourceCode for finished resource.");
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(uiSourceCodeAdded);
InspectorTest.addMockUISourceCodeToWorkspace(url, Common.resourceTypes.Document, "<resource content>");
function uiSourceCodeAdded(uiSourceCode)
{
InspectorTest.checkUILocation(uiSourceCode, 0, 5, uiLocation(script1, 0, 5));
InspectorTest.checkRawLocation(script1, 10, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, uiSourceCode, 10, 0));
InspectorTest.dumpUISourceCode(uiSourceCode, next);
}
}
},
function testHTMLWithFinishedResource(next)
{
var script1;
var script2;
resetModels();
var mockUISourceCode;
var resourceScriptMapping = createResourceScriptMapping();
var url = "index.html";
step1();
function step1()
{
InspectorTest.addResult("Adding uiSourceCode for finished resource.");
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(uiSourceCodeForResourceAdded);
InspectorTest.addMockUISourceCodeToWorkspace(url, Common.resourceTypes.Document, "<resource content>");
}
function uiSourceCodeForResourceAdded(uiSourceCode)
{
mockUISourceCode = uiSourceCode;
InspectorTest.dumpUISourceCode(uiSourceCode, step2);
}
function step2()
{
InspectorTest.addResult("Adding first script for finished request.");
script1 = InspectorTest.createScriptMock(url, 1, 10, false, "<script source 1>");
resourceScriptMapping.addScript(script1);
InspectorTest.checkUILocation(mockUISourceCode, 1, 20, uiLocation(script1, 1, 20));
InspectorTest.checkRawLocation(script1, 1, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, mockUISourceCode, 1, 0));
InspectorTest.checkRawLocation(script1, 6, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, mockUISourceCode, 6, 0));
InspectorTest.dumpUISourceCode(mockUISourceCode, step3);
}
function step3()
{
InspectorTest.addResult("Adding second script for finished request.");
script2 = InspectorTest.createScriptMock(url, 5, 45, false, "<script\nsource\n2>");
resourceScriptMapping.addScript(script2);
InspectorTest.checkUILocation(mockUISourceCode, 1, 20, uiLocation(script1, 1, 20));
InspectorTest.checkRawLocation(script1, 1, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, mockUISourceCode, 1, 0));
InspectorTest.checkRawLocation(script2, 6, 0, InspectorTest.testDebuggerWorkspaceBinding.uiLocationToRawLocation(target, mockUISourceCode, 6, 0));
InspectorTest.dumpUISourceCode(mockUISourceCode, next);
}
} }
]); InspectorTest.completeTest();
}
}; };
</script> </script>
</head> </head>
......
<body>
<script>
window.x = 1;
var foo = 1;
foo = 2;
</script>
<script>
var bar = 1;
bar = 2;
// If we put next two tags on the same line, script ranges overlap and frontend gets wrong uiLocationToRawLocation.
</script>
<script>var baz = 3;baz = 2;</script>
</body>
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment