3 <script src="../http/tests/inspector/inspector-test.js"></script>
4 <script type="text/javascript">
6 function initialize_ProgressBarTest()
9 InspectorTest.MockProgressIndicator = function()
13 InspectorTest.MockProgressIndicator.prototype = {
14 // Implementation of WebInspector.Progress interface.
15 isCanceled: function()
17 return this._isCanceled;
22 InspectorTest.addResult("progress indicator: done");
23 this.dispatchEventToListeners(WebInspector.Progress.Events.Done);
26 setTotalWork: function(totalWork)
28 this._totalWork = totalWork;
31 setWorked: function(worked, title)
33 this._worked = worked;
34 if (typeof title !== "undefined")
38 setTitle: function(title)
46 this._isCanceled = true;
51 const roundFactor = 10000;
53 var worked = this._worked;
54 var totalWork = this._totalWork;
56 if (typeof worked === "number")
57 worked = Math.round(worked * roundFactor) / roundFactor;
58 if (typeof totalWork === "number")
59 totalWork = Math.round(totalWork * roundFactor) / roundFactor;
61 InspectorTest.addResult("progress: `" + this._title + "' " + worked + " out of " + totalWork + " done.");
64 addEventListener: function(eventType, listener, thisObject) { },
66 __proto__: WebInspector.Object.prototype
73 function installProgressListeners(progressName, progress)
77 InspectorTest.addResult("Progress " + progressName + " dispatched Done event.");
82 InspectorTest.addResult("Progress " + progressName + " dispatched Canceled event.");
85 progress.addEventListener(WebInspector.Progress.Events.Done, onDone);
86 progress.addEventListener(WebInspector.Progress.Events.Canceled, onCanceled);
89 InspectorTest.runTestSuite([
90 function testOneSubProgress(next)
92 var indicator = new InspectorTest.MockProgressIndicator();
93 var composite = new WebInspector.CompositeProgress(indicator);
94 var subProgress = composite.createSubProgress();
95 installProgressListeners("composite", composite);
96 installProgressListeners("subProgress", subProgress);
98 InspectorTest.addResult("Testing CompositeProgress with a single subprogress:");
100 subProgress.setTitle("cuckooing");
101 subProgress.setWorked(10);
103 subProgress.setTotalWork(100);
105 subProgress.setWorked(20, "meowing");
112 function testMultipleSubProgresses(next)
114 var indicator = new InspectorTest.MockProgressIndicator();
115 var composite = new WebInspector.CompositeProgress(indicator);
116 var subProgress1 = composite.createSubProgress();
117 var subProgress2 = composite.createSubProgress(3);
118 installProgressListeners("composite", composite);
119 installProgressListeners("subProgress1", subProgress1);
120 installProgressListeners("subProgress2", subProgress2);
122 InspectorTest.addResult("Testing CompositeProgress with multiple subprogresses:");
125 subProgress1.setTitle("cuckooing");
126 subProgress1.setTotalWork(100);
127 subProgress1.setWorked(20);
130 subProgress2.setWorked(10);
133 subProgress2.setTotalWork(10);
134 subProgress2.setWorked(3, "barking");
137 subProgress1.setWorked(50, "meowing");
138 subProgress2.setWorked(5);
149 function testCancel(next)
151 var indicator = new InspectorTest.MockProgressIndicator();
152 var composite = new WebInspector.CompositeProgress(indicator);
153 var subProgress = composite.createSubProgress();
154 installProgressListeners("composite", composite);
155 installProgressListeners("subProgress", subProgress);
157 InspectorTest.addResult("Testing isCanceled:");
158 InspectorTest.assertTrue(!subProgress.isCanceled(), "progress should not be canceled");
160 InspectorTest.assertTrue(subProgress.isCanceled(), "progress should be canceled");
164 function testNested(next)
166 var indicator = new InspectorTest.MockProgressIndicator();
167 var composite0 = new WebInspector.CompositeProgress(indicator);
168 var subProgress01 = composite0.createSubProgress();
169 var composite1 = new WebInspector.CompositeProgress(subProgress01);
170 var subProgress11 = composite1.createSubProgress(10); // Weight should have no effect.
172 installProgressListeners("composite0", composite0);
173 installProgressListeners("composite1", composite1);
174 installProgressListeners("subProgress01", subProgress01);
175 installProgressListeners("subProgress11", subProgress11);
177 InspectorTest.addResult("Testing nested subprogresses:");
180 subProgress11.setWorked(10);
183 subProgress11.setTotalWork(100);
186 subProgress11.setWorked(50, "meowing");
189 InspectorTest.assertTrue(!subProgress11.isCanceled());
191 InspectorTest.assertTrue(subProgress11.isCanceled());
193 subProgress11.done();
202 <body onload="runTest()">
203 <p>Tests inspector's composite progress bar.</p>