blob: 2584a7a8fc26d34ffa32d82c3ea5fb0d5363eb15 [file] [log] [blame]
<html>
<head>
<script src="../http/tests/inspector/inspector-test.js"></script>
<script type="text/javascript">
function initialize_ProgressBarTest()
{
InspectorTest.MockProgressIndicator = function()
{
}
InspectorTest.MockProgressIndicator.prototype = {
// Implementation of WebInspector.Progress interface.
isCanceled: function()
{
return this._isCanceled;
},
done: function()
{
InspectorTest.addResult("progress indicator: done");
},
setTotalWork: function(totalWork)
{
this._totalWork = totalWork;
},
setWorked: function(worked, title)
{
this._worked = worked;
if (typeof title !== "undefined")
this._title = title;
},
setTitle: function(title)
{
this._title = title;
},
// Test methods.
cancel: function()
{
this._isCanceled = true;
},
dump: function()
{
const roundFactor = 10000;
var worked = this._worked;
var totalWork = this._totalWork;
if (typeof worked === "number")
worked = Math.round(worked * roundFactor) / roundFactor;
if (typeof totalWork === "number")
totalWork = Math.round(totalWork * roundFactor) / roundFactor;
InspectorTest.addResult("progress: `" + this._title + "' " + worked + " out of " + totalWork + " done.");
},
addEventListener: function(eventType, listener, thisObject) { },
}
}
var test = function()
{
(function testOneSubProgress()
{
var indicator = new InspectorTest.MockProgressIndicator();
var composite = new WebInspector.CompositeProgress(indicator);
var subProgress = composite.createSubProgress();
InspectorTest.addResult("Testing CompositeProgress with a single subprogress:");
indicator.dump();
subProgress.setTitle("cuckooing");
subProgress.setWorked(10);
indicator.dump();
subProgress.setTotalWork(100);
indicator.dump();
subProgress.setWorked(20, "meowing");
indicator.dump();
subProgress.done();
indicator.dump();
})();
(function testMultipleSubProgresses()
{
var indicator = new InspectorTest.MockProgressIndicator();
var composite = new WebInspector.CompositeProgress(indicator);
var subProgress1 = composite.createSubProgress();
var subProgress2 = composite.createSubProgress(3);
InspectorTest.addResult("Testing CompositeProgress with multiple subprogresses:");
indicator.dump();
subProgress1.setTitle("cuckooing");
subProgress1.setTotalWork(100);
subProgress1.setWorked(20);
indicator.dump();
subProgress2.setWorked(10);
indicator.dump();
subProgress2.setTotalWork(10);
subProgress2.setWorked(3, "barking");
indicator.dump();
subProgress1.setWorked(50, "meowing");
subProgress2.setWorked(5);
indicator.dump();
subProgress2.done();
indicator.dump();
subProgress1.done();
indicator.dump();
})();
(function testCancel()
{
var indicator = new InspectorTest.MockProgressIndicator();
var composite = new WebInspector.CompositeProgress(indicator);
var subProgress1 = composite.createSubProgress();
InspectorTest.addResult("Testing isCanceled:");
InspectorTest.assertTrue(!subProgress1.isCanceled(), "progress should not be canceled");
indicator.cancel();
InspectorTest.assertTrue(subProgress1.isCanceled(), "progress should be canceled");
})();
(function testNested()
{
var indicator = new InspectorTest.MockProgressIndicator();
var composite0 = new WebInspector.CompositeProgress(indicator);
var subProgress01 = composite0.createSubProgress();
var composite1 = new WebInspector.CompositeProgress(subProgress01);
var subProgress11 = composite1.createSubProgress(10); // Weight should have no effect.
InspectorTest.addResult("Testing nested subprogresses:");
indicator.dump();
subProgress11.setWorked(10);
indicator.dump();
subProgress11.setTotalWork(100);
indicator.dump();
subProgress11.setWorked(50, "meowing");
indicator.dump();
InspectorTest.assertTrue(!subProgress11.isCanceled());
indicator.cancel();
InspectorTest.assertTrue(subProgress11.isCanceled());
subProgress11.done();
indicator.dump();
})();
InspectorTest.completeTest();
}
</script>
</head>
<body onload="runTest()">
<p>Tests inspector's composite progress bar.</p>
</body>
</html>