blob: 03f4c2dd3508a1dd5149311185d1874d0f839e9e [file] [log] [blame]
<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/debugger-test.js"></script>
<script src="../../http/tests/inspector/workspace-test.js"></script>
<script>
function test()
{
var workspace;
function createResourceScriptMapping()
{
InspectorTest.createWorkspace();
var resourceScriptMapping = new WebInspector.ResourceScriptMapping(InspectorTest.testWorkspace);
return resourceScriptMapping;
}
InspectorTest.runTestSuite([
function testScriptWithPendingResource(next)
{
var script;
WebInspector.debuggerModel._reset();
var resourceScriptMapping = createResourceScriptMapping();
var url = "foo.js";
step1();
function step1()
{
InspectorTest.addResult("Adding script for pending request.");
script = InspectorTest.createScriptMock(url, 0, 0, true, "<content script source>");
resourceScriptMapping.addScript(script);
InspectorTest.waitForWorkspaceTemporaryUISourceCodeAddedEvent(temporaryUISourceCodeAdded);
script.rawLocationToUILocation(0, 5);
function temporaryUISourceCodeAdded(uiSourceCode)
{
InspectorTest.checkUILocation(uiSourceCode, 0, 5, script.rawLocationToUILocation(0, 5));
InspectorTest.checkRawLocation(script, 10, 0, uiSourceCode.uiLocationToRawLocation(10, 0));
InspectorTest.dumpUISourceCode(uiSourceCode, step2);
}
}
function step2()
{
InspectorTest.addResult("Adding uiSourceCode for finished resource.");
InspectorTest.waitForWorkspaceTemporaryUISourceCodeRemovedEvent(function() { });
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(uiSourceCodeAdded);
InspectorTest.addMockUISourceCodeToWorkspace(url, WebInspector.resourceTypes.Script, "<content script resource content>");
function uiSourceCodeAdded(uiSourceCode)
{
InspectorTest.checkUILocation(uiSourceCode, 0, 5, script.rawLocationToUILocation(0, 5));
InspectorTest.checkRawLocation(script, 10, 0, uiSourceCode.uiLocationToRawLocation(10, 0));
InspectorTest.dumpUISourceCode(uiSourceCode, next);
}
}
},
function testScriptWithFinishedResource(next)
{
var script;
WebInspector.debuggerModel._reset();
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, WebInspector.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, script.rawLocationToUILocation(0, 5));
InspectorTest.checkRawLocation(script, 10, 0, mockUISourceCode.uiLocationToRawLocation(10, 0));
InspectorTest.dumpUISourceCode(mockUISourceCode, next);
}
},
function testHTMLWithPendingResource(next)
{
var script1;
var script2;
WebInspector.debuggerModel._reset();
var resourceScriptMapping = createResourceScriptMapping();
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>");
resourceScriptMapping.addScript(script1);
InspectorTest.waitForWorkspaceTemporaryUISourceCodeAddedEvent(temporaryUISourceCodeAdded);
script1.rawLocationToUILocation(0, 5);
function temporaryUISourceCodeAdded(uiSourceCode)
{
InspectorTest.checkUILocation(uiSourceCode, 0, 5, script1.rawLocationToUILocation(0, 5));
InspectorTest.checkRawLocation(script1, 10, 0, uiSourceCode.uiLocationToRawLocation(10, 0));
InspectorTest.dumpUISourceCode(uiSourceCode, step2);
}
}
function step2()
{
InspectorTest.addResult("Adding second script for pending request.");
script2 = InspectorTest.createScriptMock(url, 0, 45, false, "<script source 2>");
InspectorTest.waitForWorkspaceTemporaryUISourceCodeRemovedEvent(function() { });
InspectorTest.waitForWorkspaceTemporaryUISourceCodeAddedEvent(temporaryUISourceCodeAdded);
resourceScriptMapping.addScript(script2);
function temporaryUISourceCodeAdded(uiSourceCode)
{
InspectorTest.checkUILocation(uiSourceCode, 0, 5, script2.rawLocationToUILocation(0, 5));
InspectorTest.checkRawLocation(script1, 10, 0, uiSourceCode.uiLocationToRawLocation(10, 0));
InspectorTest.dumpUISourceCode(uiSourceCode, step3);
}
}
function step3()
{
InspectorTest.addResult("Adding uiSourceCode for finished resource.");
InspectorTest.waitForWorkspaceTemporaryUISourceCodeRemovedEvent(function() { });
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(uiSourceCodeAdded);
InspectorTest.addMockUISourceCodeToWorkspace(url, WebInspector.resourceTypes.Document, "<resource content>");
function uiSourceCodeAdded(uiSourceCode)
{
InspectorTest.checkUILocation(uiSourceCode, 0, 5, script1.rawLocationToUILocation(0, 5));
InspectorTest.checkRawLocation(script1, 10, 0, uiSourceCode.uiLocationToRawLocation(10, 0));
InspectorTest.dumpUISourceCode(uiSourceCode, next);
}
}
},
function testHTMLWithFinishedResource(next)
{
var script1;
var script2;
WebInspector.debuggerModel._reset();
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, WebInspector.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, script1.rawLocationToUILocation(1, 20));
InspectorTest.checkRawLocation(script1, 1, 0, mockUISourceCode.uiLocationToRawLocation(1, 0));
InspectorTest.checkRawLocation(script1, 6, 0, mockUISourceCode.uiLocationToRawLocation(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, script1.rawLocationToUILocation(1, 20));
InspectorTest.checkRawLocation(script1, 1, 0, mockUISourceCode.uiLocationToRawLocation(1, 0));
InspectorTest.checkRawLocation(script2, 6, 0, mockUISourceCode.uiLocationToRawLocation(6, 0));
InspectorTest.dumpUISourceCode(mockUISourceCode, next);
}
}
]);
};
</script>
</head>
<body onload="runTest()">
<p>Tests ResourceScriptMapping class.</p>
</body>
</html>