OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Include test fixture. | 5 // Include test fixture. |
6 GEN_INCLUDE(['net_internals_test.js']); | 6 GEN_INCLUDE(['net_internals_test.js']); |
7 | 7 |
8 // Anonymous namespace | 8 // Anonymous namespace |
9 (function() { | 9 (function() { |
10 | 10 |
(...skipping 11 matching lines...) Expand all Loading... |
22 */ | 22 */ |
23 function BandwidthTask(expectedLength, faviconLength) { | 23 function BandwidthTask(expectedLength, faviconLength) { |
24 NetInternalsTest.Task.call(this); | 24 NetInternalsTest.Task.call(this); |
25 this.url_ = null; | 25 this.url_ = null; |
26 this.expectedLength_ = expectedLength; | 26 this.expectedLength_ = expectedLength; |
27 this.faviconLength_ = faviconLength; | 27 this.faviconLength_ = faviconLength; |
28 this.sessionVerified = false; | 28 this.sessionVerified = false; |
29 this.historicVerified = false; | 29 this.historicVerified = false; |
30 } | 30 } |
31 | 31 |
| 32 /** |
| 33 * The task loads data reduction proxy info. |
| 34 * |
| 35 * Checks that we see all relevant events and update the corresponding elements. |
| 36 * |
| 37 * @param {boolean} isEnabled The desired state of the data reduction proxy. |
| 38 * @extends {NetInternalsTest.Task} |
| 39 * @constructor |
| 40 */ |
| 41 function DataReductionProxyTask(isEnabled) { |
| 42 NetInternalsTest.Task.call(this); |
| 43 this.enabled_ = isEnabled; |
| 44 this.dataReductionProxyInfoVerified_ = false; |
| 45 this.proxySettingsReceived_ = false; |
| 46 this.badProxyChangesReceived_ = false; |
| 47 } |
| 48 |
32 BandwidthTask.prototype = { | 49 BandwidthTask.prototype = { |
33 __proto__: NetInternalsTest.Task.prototype, | 50 __proto__: NetInternalsTest.Task.prototype, |
34 | 51 |
35 /** | 52 /** |
36 * Switches to the bandwidth tab, loads a page in the background, and waits | 53 * Switches to the bandwidth tab, loads a page in the background, and waits |
37 * for the arrival of network statistics. | 54 * for the arrival of network statistics. |
38 * | 55 * |
39 * @param {string} url URL to be fetched. | 56 * @param {string} url URL to be fetched. |
40 */ | 57 */ |
41 start: function(url) { | 58 start: function(url) { |
42 assertEquals('string', typeof url); | 59 assertEquals('string', typeof url); |
43 this.url_ = url; | 60 this.url_ = url; |
44 g_browser.addSessionNetworkStatsObserver(this, true); | 61 g_browser.addSessionNetworkStatsObserver(this, true); |
45 g_browser.addHistoricNetworkStatsObserver(this, false); | 62 g_browser.addHistoricNetworkStatsObserver(this, false); |
46 NetInternalsTest.switchToView('bandwidth'); | 63 NetInternalsTest.switchToView('bandwidth'); |
47 chrome.send('loadPage', [this.url_]); | 64 chrome.send('loadPage', [this.url_]); |
48 }, | 65 }, |
49 | 66 |
50 /** | 67 /** |
51 * Returns the float value the specified cell of the bandwidth table. | 68 * Returns the float value the specified cell of the bandwidth table. |
52 */ | 69 */ |
53 getBandwidthTableCell_: function(row, col) { | 70 getBandwidthTableCell_: function(row, col) { |
54 return parseFloat(NetInternalsTest.getTbodyText( | 71 return parseFloat(NetInternalsTest.getTbodyText( |
55 BandwidthView.MAIN_BOX_ID, row, col)); | 72 BandwidthView.STATS_BOX_ID, row, col)); |
56 }, | 73 }, |
57 | 74 |
58 /** | 75 /** |
59 * Confirms that the bandwidth usage table displays the expected values. | 76 * Confirms that the bandwidth usage table displays the expected values. |
60 * Does not check exact displayed values, to avoid races, but makes sure | 77 * Does not check exact displayed values, to avoid races, but makes sure |
61 * values are high enough after an event of interest. | 78 * values are high enough after an event of interest. |
62 * | 79 * |
63 * @param {number} col The column of the table to validate, either 1 or 2. | 80 * @param {number} col The column of the table to validate, either 1 or 2. |
64 * @param {number} expectedReceived Expected received content length. | 81 * @param {number} expectedReceived Expected received content length. |
65 * @param {number} expectedOriginal Expected original content length. | 82 * @param {number} expectedOriginal Expected original content length. |
(...skipping 14 matching lines...) Expand all Loading... |
80 expectFalse(isNaN(row4)); | 97 expectFalse(isNaN(row4)); |
81 }, | 98 }, |
82 | 99 |
83 /** | 100 /** |
84 * A task is complete only when session and historic counters have been | 101 * A task is complete only when session and historic counters have been |
85 * verified to reflect the expected number of bytes received. | 102 * verified to reflect the expected number of bytes received. |
86 */ | 103 */ |
87 completeIfDone: function() { | 104 completeIfDone: function() { |
88 if (this.historicVerified && this.sessionVerified) { | 105 if (this.historicVerified && this.sessionVerified) { |
89 // Check number of rows in the table. | 106 // Check number of rows in the table. |
90 NetInternalsTest.checkTbodyRows(BandwidthView.MAIN_BOX_ID, 4); | 107 NetInternalsTest.checkTbodyRows(BandwidthView.STATS_BOX_ID, 4); |
91 this.onTaskDone(); | 108 this.onTaskDone(); |
92 } | 109 } |
93 }, | 110 }, |
94 | 111 |
95 /** | 112 /** |
96 * SessionNetworkStatsObserver function. Sanity checks the received data | 113 * SessionNetworkStatsObserver function. Sanity checks the received data |
97 * and constructed table. | 114 * and constructed table. |
98 | 115 |
99 * @param {object} networkStats State of the network session. | 116 * @param {object} networkStats State of the network session. |
100 */ | 117 */ |
(...skipping 28 matching lines...) Expand all Loading... |
129 if (!isNaN(this.getBandwidthTableCell_(0, 2))) { | 146 if (!isNaN(this.getBandwidthTableCell_(0, 2))) { |
130 expectLE(expectedLength, networkStats.historic_original_content_length); | 147 expectLE(expectedLength, networkStats.historic_original_content_length); |
131 // Column 2 contains historic information. | 148 // Column 2 contains historic information. |
132 this.validateBandwidthTableColumn_(2, expectedLength, expectedLength); | 149 this.validateBandwidthTableColumn_(2, expectedLength, expectedLength); |
133 this.historicVerified = true; | 150 this.historicVerified = true; |
134 this.completeIfDone(); | 151 this.completeIfDone(); |
135 } | 152 } |
136 } | 153 } |
137 }; | 154 }; |
138 | 155 |
| 156 DataReductionProxyTask.prototype = { |
| 157 __proto__: NetInternalsTest.Task.prototype, |
| 158 |
| 159 /** |
| 160 * Switches to the bandwidth tab and waits for arrival of data reduction |
| 161 * proxy information. |
| 162 */ |
| 163 start: function() { |
| 164 chrome.send('enableDataReductionProxy', [this.enabled_]); |
| 165 g_browser.addDataReductionProxyInfoObserver(this, true); |
| 166 g_browser.addProxySettingsObserver(this, true); |
| 167 g_browser.addBadProxiesObserver(this, true); |
| 168 NetInternalsTest.switchToView('bandwidth'); |
| 169 }, |
| 170 |
| 171 /** |
| 172 * A task is complete only when session and historic counters have been |
| 173 * verified to reflect the expected number of bytes received. |
| 174 */ |
| 175 completeIfDone: function() { |
| 176 if (this.dataReductionProxyInfoVerified_) { |
| 177 this.onTaskDone(); |
| 178 } |
| 179 }, |
| 180 |
| 181 /** |
| 182 * ProxySettingsObserver function. |
| 183 * |
| 184 * @param {object} proxySettings Proxy settings. |
| 185 */ |
| 186 onProxySettingsChanged: function(proxySettings) { |
| 187 if (this.isDone() || this.proxySettingsReceived_) |
| 188 return; |
| 189 |
| 190 this.proxySettingsReceived_ = true; |
| 191 }, |
| 192 |
| 193 /** |
| 194 * BadProxiesObserver function. |
| 195 * |
| 196 * @param {object} badProxies Bad proxies. |
| 197 */ |
| 198 onBadProxiesChanged: function(badProxies) { |
| 199 if (this.isDone() || this.badProxyChangesReceived_) |
| 200 return; |
| 201 |
| 202 this.badProxyChangesReceived_ = true; |
| 203 }, |
| 204 |
| 205 /** |
| 206 * DataReductionProxyInfoObserver function. Sanity checks the received data |
| 207 * and constructed table. |
| 208 |
| 209 * @param {object} info State of the data reduction proxy. |
| 210 */ |
| 211 onDataReductionProxyInfoChanged: function(info) { |
| 212 if (this.isDone() || |
| 213 this.dataReductionProxyInfoVerified_ || |
| 214 !this.proxySettingsReceived_) { |
| 215 return; |
| 216 } |
| 217 |
| 218 if (info) { |
| 219 expectEquals(this.enabled_, info.enabled); |
| 220 if (this.enabled_) { |
| 221 expectEquals("Enabled", $(BandwidthView.ENABLED_ID).innerText); |
| 222 expectNotEquals('', $(BandwidthView.PRIMARY_PROXY_ID).innerText); |
| 223 expectNotEquals('', $(BandwidthView.SECONDARY_PROXY_ID).innerText); |
| 224 } else { |
| 225 expectEquals("Disabled", $(BandwidthView.ENABLED_ID).innerText); |
| 226 expectEquals('', $(BandwidthView.PRIMARY_PROXY_ID).innerText); |
| 227 expectEquals('', $(BandwidthView.SECONDARY_PROXY_ID).innerText); |
| 228 // Each event results in 2 rows, and we get 2 events since the startup |
| 229 // event starts as disabled, and we subsequently manually set it to the |
| 230 // disabled state. |
| 231 expectEquals( |
| 232 4, NetInternalsTest.getTbodyNumRows(BandwidthView.EVENTS_TBODY_ID)); |
| 233 } |
| 234 |
| 235 this.dataReductionProxyInfoVerified_ = true; |
| 236 this.completeIfDone(); |
| 237 } |
| 238 } |
| 239 }; |
| 240 |
139 /** | 241 /** |
140 * Loads a page and checks bandwidth statistics. | 242 * Loads a page and checks bandwidth statistics. |
141 */ | 243 */ |
142 TEST_F('NetInternalsTest', 'netInternalsSessionBandwidthSucceed', function() { | 244 TEST_F('NetInternalsTest', 'netInternalsSessionBandwidthSucceed', function() { |
143 var taskQueue = new NetInternalsTest.TaskQueue(true); | 245 var taskQueue = new NetInternalsTest.TaskQueue(true); |
144 taskQueue.addTask( | 246 taskQueue.addTask( |
145 new NetInternalsTest.GetTestServerURLTask('files/title1.html')); | 247 new NetInternalsTest.GetTestServerURLTask('files/title1.html')); |
146 // Load a page with a content length of 66 bytes and a 45-byte favicon. | 248 // Load a page with a content length of 66 bytes and a 45-byte favicon. |
147 taskQueue.addTask(new BandwidthTask(66, 45)); | 249 taskQueue.addTask(new BandwidthTask(66, 45)); |
148 taskQueue.run(); | 250 taskQueue.run(); |
149 }); | 251 }); |
150 | 252 |
| 253 /** |
| 254 * Checks data reduction proxy info when it is enabled. |
| 255 */ |
| 256 TEST_F('NetInternalsTest', 'netInternalsDataReductionProxyEnabled', function() { |
| 257 var taskQueue = new NetInternalsTest.TaskQueue(true); |
| 258 taskQueue.addTask(new DataReductionProxyTask(true)); |
| 259 taskQueue.run(); |
| 260 }); |
| 261 |
| 262 /** |
| 263 * Checks data reduction proxy info when it is disabled. |
| 264 */ |
| 265 TEST_F('NetInternalsTest', |
| 266 'netInternalsDataReductionProxyDisabled', function() { |
| 267 var taskQueue = new NetInternalsTest.TaskQueue(true); |
| 268 taskQueue.addTask(new DataReductionProxyTask(false)); |
| 269 taskQueue.run(); |
| 270 }); |
| 271 |
151 })(); // Anonymous namespace | 272 })(); // Anonymous namespace |
OLD | NEW |