blob: 8a87718ee0a19ba3eede060feac85e6a0dd74b95 [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 defaultScriptMapping;
function createResourceScriptMapping()
{
InspectorTest.createWorkspace();
defaultScriptMapping = new WebInspector.DefaultScriptMapping(InspectorTest.testWorkspace);
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>");
InspectorTest.waitForWorkspaceUISourceCodeAddedEvent(originalUISourceCodeAdded);
defaultScriptMapping.addScript(script);
resourceScriptMapping.addScript(script);
var originalUISourceCode;
script.rawLocationToUILocation(0, 5);
function originalUISourceCodeAdded(uiSourceCode)
{
originalUISourceCode = uiSourceCode;
}
InspectorTest.checkUILocation(originalUISourceCode, 0, 5, script.rawLocationToUILocation(0, 5));
InspectorTest.checkRawLocation(script, 10, 0, originalUISourceCode.uiLocationToRawLocation(10, 0));
InspectorTest.dumpUISourceCode(originalUISourceCode, step2);
}
function step2()
{
InspectorTest.addResult("Adding uiSourceCode for finished resource.");
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 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);
script1.rawLocationToUILocation(0, 5);
function originalUISourceCodeAdded(uiSourceCode)
{
originalUISourceCode1 = uiSourceCode;
}
InspectorTest.checkUILocation(originalUISourceCode1, 0, 5, script1.rawLocationToUILocation(0, 5));
InspectorTest.checkRawLocation(script1, 10, 0, originalUISourceCode1.uiLocationToRawLocation(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, 5, script2.rawLocationToUILocation(0, 5));
InspectorTest.checkRawLocation(script1, 10, 0, originalUISourceCode1.uiLocationToRawLocation(10, 0));
InspectorTest.dumpUISourceCode(originalUISourceCode2, step3);
}
function step3()
{
InspectorTest.addResult("Adding uiSourceCode for finished resource.");
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>