OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 // Include test fixture. | |
6 GEN_INCLUDE(['net_internals_test.js']); | |
7 | |
8 // Anonymous namespace | |
9 (function() { | |
10 | |
11 /** | |
12 * Checks the display on the HTTP Pipelining tab against the information it | |
13 * should be displaying. | |
14 * @param {object} httpPipelineStatus Results from a http pipeline status query. | |
15 */ | |
16 function checkDisplay(httpPipelineStatus) { | |
17 expectEquals(httpPipelineStatus.pipelining_enabled, | |
18 $(HttpPipelineView.ENABLED_SPAN_ID).innerText == "true"); | |
19 } | |
20 | |
21 /** | |
22 * Finds an entry with the specified host name and port in the | |
23 * |pipelinedHostInfo| cache, and returns its index. | |
24 * @param {object} pipelinedHostInfo Results to search. | |
25 * @param {string} hostname The host name of the host to find. | |
26 * @param {int} port The port of the host to find. | |
27 * @return {int} Index of the specified host. -1 if not found. | |
28 */ | |
29 function findEntry(pipelinedHostInfo, hostname, port) { | |
30 var expected = hostname + ":" + port; | |
31 for (var i = 0; i < pipelinedHostInfo.length; ++i) { | |
32 if (pipelinedHostInfo[i].host == expected) | |
33 return i; | |
34 } | |
35 return -1; | |
36 } | |
37 | |
38 /** | |
39 * A Task that adds a pipeline capability to the known hosts map and waits for | |
40 * it to appear in the data we receive from the browser. | |
41 * @param {string} hostname Name of host address we're waiting for. | |
42 * @param {int} port Port of the host we're waiting for. | |
43 * @param {string} capability The capability to set. | |
44 * @extends {NetInternalsTest.Task} | |
45 */ | |
46 function AddPipelineCapabilityTask(hostname, port, capability) { | |
47 this.hostname_ = hostname; | |
48 this.port_ = port; | |
49 this.capability_ = capability; | |
50 NetInternalsTest.Task.call(this); | |
51 } | |
52 | |
53 AddPipelineCapabilityTask.prototype = { | |
54 __proto__: NetInternalsTest.Task.prototype, | |
55 | |
56 /** | |
57 * Adds an entry to the host map and starts waiting to receive the results | |
58 * from the browser process. | |
59 */ | |
60 start: function() { | |
61 var addPipelineCapabilityParams = [ | |
62 this.hostname_, | |
63 this.port_, | |
64 this.capability_ | |
65 ]; | |
66 chrome.send('addDummyHttpPipelineFeedback', addPipelineCapabilityParams); | |
67 g_browser.addHttpPipeliningStatusObserver(this, false); | |
68 }, | |
69 | |
70 /** | |
71 * Callback from the BrowserBridge. Checks if |httpPipelineStatus| has the | |
72 * known host specified on creation. If so, validates it and completes the | |
73 * task. If not, continues running. | |
74 * @param {object} httpPipelineStatus Result of a http pipeline status query. | |
75 */ | |
76 onHttpPipeliningStatusChanged: function(httpPipelineStatus) { | |
77 if (!this.isDone()) { | |
78 checkDisplay(httpPipelineStatus); | |
79 | |
80 var index = findEntry(httpPipelineStatus.pipelined_host_info, | |
81 this.hostname_, this.port_); | |
82 if (index >= 0) { | |
83 var entry = httpPipelineStatus.pipelined_host_info[index]; | |
84 expectEquals(this.capability_, entry.capability); | |
85 | |
86 var hostPortText = NetInternalsTest.getTbodyText( | |
87 HttpPipelineView.KNOWN_HOSTS_TABLE_ID, index, 0); | |
88 expectEquals(this.hostname_ + ":" + this.port_, hostPortText); | |
89 var capabilityText = NetInternalsTest.getTbodyText( | |
90 HttpPipelineView.KNOWN_HOSTS_TABLE_ID, index, 1); | |
91 expectEquals(this.capability_, capabilityText); | |
92 | |
93 this.onTaskDone(); | |
94 } | |
95 } | |
96 } | |
97 }; | |
98 | |
99 /** | |
100 * Adds a capable pipelining host. | |
101 */ | |
102 TEST_F('NetInternalsTest', 'netInternalsHttpPipelineViewCapable', function() { | |
103 // Since this is called before we switch to the HTTP Pipelining view, we'll | |
104 // never see the original pipelining state. | |
105 chrome.send('enableHttpPipelining', [true]); | |
106 | |
107 NetInternalsTest.switchToView('httpPipeline'); | |
108 var taskQueue = new NetInternalsTest.TaskQueue(true); | |
109 taskQueue.addTask(new AddPipelineCapabilityTask( | |
110 'somewhere.com', 80, 'capable')); | |
111 taskQueue.run(true); | |
112 }); | |
113 | |
114 /** | |
115 * Adds an incapable pipelining host. | |
116 */ | |
117 TEST_F('NetInternalsTest', 'netInternalsHttpPipelineViewIncapable', function() { | |
118 // Since this is called before we switch to the HTTP Pipelining view, we'll | |
119 // never see the original pipelining state. | |
120 chrome.send('enableHttpPipelining', [true]); | |
121 | |
122 NetInternalsTest.switchToView('httpPipeline'); | |
123 var taskQueue = new NetInternalsTest.TaskQueue(true); | |
124 taskQueue.addTask(new AddPipelineCapabilityTask( | |
125 'elsewhere.com', 1234, 'incapable')); | |
126 taskQueue.run(true); | |
127 }); | |
128 | |
129 /** | |
130 * Checks with pipelining disabled. | |
131 * TODO(mmenke): Make this test wait to receive pipelining state. Currently | |
132 * just checks the default state, before data is received. | |
133 */ | |
134 TEST_F('NetInternalsTest', 'netInternalsHttpPipelineViewDisabled', function() { | |
135 NetInternalsTest.switchToView('httpPipeline'); | |
136 var expected_status = { pipelining_enabled: false } | |
137 checkDisplay(expected_status); | |
138 testDone(); | |
139 }); | |
140 | |
141 })(); // Anonymous namespace | |
OLD | NEW |