<html>
<head>
<script src="../http/tests/inspector/inspector-test.js"></script>
<script>
function test()
{
    WebInspector.showPanel("scripts");

    function createMockProject()
    {
        var workspace = new WebInspector.Workspace();
        var projectDelegate = new WebInspector.SimpleProjectDelegate("", WebInspector.projectTypes.Network);
        var project = workspace.addProject(projectDelegate);
        project.requestFileContent = function(uri, callback)
        {
            callback("<script content>", false, "text/javascript");
        }
        project.setFileContent = function(uri, newContent, callback)
        {
        }

        return project;
    }
 
    function dumpUISourceCodeWithRevisions(uiSourceCode)
    {
        var content = uiSourceCode._content;
        var revisionsString = "";
        for (var i = 0; i < uiSourceCode.history.length; ++i) {
            var revision = uiSourceCode.history[i];
            if (i !== 0)
                revisionsString += ", ";
            revisionsString += "'" + revision.content + "'";
        }
        InspectorTest.addResult("UISourceCode content: " + content);
        InspectorTest.addResult("    revisions: " + revisionsString);
    }

    InspectorTest.runTestSuite([
        function testAddRevisionsRevertToOriginal(next)
        {
            var uiSourceCode = new WebInspector.UISourceCode(createMockProject(), "uri", "originURL", "url", WebInspector.resourceTypes.Script);
            uiSourceCode.setWorkingCopy("content1");
            uiSourceCode.setWorkingCopy("content2");
            uiSourceCode.commitWorkingCopy(function() { });

            InspectorTest.addResult("First revision added.");
            dumpUISourceCodeWithRevisions(uiSourceCode);
            uiSourceCode.setWorkingCopy("content3");
            uiSourceCode.setWorkingCopy("content4");
            uiSourceCode.commitWorkingCopy(function() { });

            InspectorTest.addResult("Second revision added.");
            dumpUISourceCodeWithRevisions(uiSourceCode);
            uiSourceCode.revertToOriginal();
            InspectorTest.addResult("Reverted to original.");
            dumpUISourceCodeWithRevisions(uiSourceCode);
            next();
        },

        function testAddRevisionsRevertAndClearHistory(next)
        {
            var uiSourceCode = new WebInspector.UISourceCode(createMockProject(), "uri2", "originURL2", "url2", WebInspector.resourceTypes.Script);

            uiSourceCode.setWorkingCopy("content1");
            uiSourceCode.setWorkingCopy("content2");
            uiSourceCode.commitWorkingCopy(function() { });

            InspectorTest.addResult("First revision added.");
            dumpUISourceCodeWithRevisions(uiSourceCode);
            uiSourceCode.setWorkingCopy("content3");
            uiSourceCode.setWorkingCopy("content4");
            uiSourceCode.commitWorkingCopy(function() { });

            InspectorTest.addResult("Second revision added.");
            dumpUISourceCodeWithRevisions(uiSourceCode);
            uiSourceCode.revertAndClearHistory(revertedAndClearedHistory);

            function revertedAndClearedHistory()
            {
                InspectorTest.addResult("Reverted and cleared history.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                next();
            }
        },

        function testAddRevisionsRevertToPrevious(next)
        {
            var uiSourceCode = new WebInspector.UISourceCode(createMockProject(), "uri3", "originURL3", "url3", WebInspector.resourceTypes.Script);

            uiSourceCode.setWorkingCopy("content1");
            uiSourceCode.setWorkingCopy("content2");
            uiSourceCode.commitWorkingCopy(function() { });

            InspectorTest.addResult("First revision added.");
            dumpUISourceCodeWithRevisions(uiSourceCode);
            uiSourceCode.setWorkingCopy("content3");
            uiSourceCode.setWorkingCopy("content4");
            uiSourceCode.commitWorkingCopy(function() { });

            InspectorTest.addResult("Second revision added.");
            dumpUISourceCodeWithRevisions(uiSourceCode);
            uiSourceCode.history[0].revertToThis();
            InspectorTest.addResult("Reverted to previous revision.");
            dumpUISourceCodeWithRevisions(uiSourceCode);
            next();
        },

        function testRequestContentAddRevisionsRevertToOriginal(next)
        {
            var uiSourceCode = new WebInspector.UISourceCode(createMockProject(), "uri4", "originURL4", "url4", WebInspector.resourceTypes.Script);
            uiSourceCode.requestContent(contentReceived);

            function contentReceived()
            {
                InspectorTest.addResult("Content requested.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                uiSourceCode.setWorkingCopy("content1");
                uiSourceCode.setWorkingCopy("content2");
                uiSourceCode.commitWorkingCopy(function() { });

                InspectorTest.addResult("First revision added.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                uiSourceCode.setWorkingCopy("content3");
                uiSourceCode.setWorkingCopy("content4");
                uiSourceCode.commitWorkingCopy(function() { });

                InspectorTest.addResult("Second revision added.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                uiSourceCode.revertToOriginal();
                InspectorTest.addResult("Reverted to original.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                next();
            }
        },

        function testRequestContentAddRevisionsRevertAndClearHistory(next)
        {
            var uiSourceCode = new WebInspector.UISourceCode(createMockProject(), "uri5", "originURL5", "url5", WebInspector.resourceTypes.Script);
            uiSourceCode.requestContent(contentReceived);

            function contentReceived()
            {
                InspectorTest.addResult("Content requested.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                uiSourceCode.setWorkingCopy("content1");
                uiSourceCode.setWorkingCopy("content2");
                uiSourceCode.commitWorkingCopy(function() { });

                InspectorTest.addResult("First revision added.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                uiSourceCode.setWorkingCopy("content3");
                uiSourceCode.setWorkingCopy("content4");
                uiSourceCode.commitWorkingCopy(function() { });

                InspectorTest.addResult("Second revision added.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                uiSourceCode.revertAndClearHistory(revertedAndClearedHistory);

                function revertedAndClearedHistory()
                {
                    InspectorTest.addResult("Reverted and cleared history.");
                    dumpUISourceCodeWithRevisions(uiSourceCode);
                    next();
                }
            }
        },

        function testRequestContentAddRevisionsRevertToPrevious(next)
        {
            var uiSourceCode = new WebInspector.UISourceCode(createMockProject(), "uri6", "originURL6", "url6", WebInspector.resourceTypes.Script);
            uiSourceCode.requestContent(contentReceived);

            function contentReceived()
            {
                InspectorTest.addResult("Content requested.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                uiSourceCode.setWorkingCopy("content1");
                uiSourceCode.setWorkingCopy("content2");
                uiSourceCode.commitWorkingCopy(function() { });

                InspectorTest.addResult("First revision added.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                uiSourceCode.setWorkingCopy("content3");
                uiSourceCode.setWorkingCopy("content4");
                uiSourceCode.commitWorkingCopy(function() { });

                InspectorTest.addResult("Second revision added.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                uiSourceCode.history[0].revertToThis();
                InspectorTest.addResult("Reverted to previous revision.");
                dumpUISourceCodeWithRevisions(uiSourceCode);
                next();
            }
        },
    ]);
}
</script>
</head>
<body onload="runTest()">
<p>Tests revision support in UISourceCode.</p>
<a href="https://bugs.webkit.org/show_bug.cgi?id=97669">Bug 97669</a>
</body>
</html>
