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 /** | 5 /** |
6 * This view displays a summary of the state of each SPDY sessions, and | 6 * This view displays a summary of the state of each SPDY sessions, and |
7 * has links to display them in the events tab. | 7 * has links to display them in the events tab. |
8 */ | 8 */ |
9 var SpdyView = (function() { | 9 var SpdyView = (function() { |
10 'use strict'; | 10 'use strict'; |
(...skipping 14 matching lines...) Expand all Loading... |
25 g_browser.addSpdyStatusObserver(this, true); | 25 g_browser.addSpdyStatusObserver(this, true); |
26 } | 26 } |
27 | 27 |
28 SpdyView.TAB_ID = 'tab-handle-spdy'; | 28 SpdyView.TAB_ID = 'tab-handle-spdy'; |
29 SpdyView.TAB_NAME = 'HTTP/2'; | 29 SpdyView.TAB_NAME = 'HTTP/2'; |
30 SpdyView.TAB_HASH = '#http2'; | 30 SpdyView.TAB_HASH = '#http2'; |
31 | 31 |
32 // IDs for special HTML elements in spdy_view.html | 32 // IDs for special HTML elements in spdy_view.html |
33 SpdyView.MAIN_BOX_ID = 'spdy-view-tab-content'; | 33 SpdyView.MAIN_BOX_ID = 'spdy-view-tab-content'; |
34 SpdyView.STATUS_ID = 'spdy-view-status'; | 34 SpdyView.STATUS_ID = 'spdy-view-status'; |
| 35 SpdyView.STATUS_HTTP2_ENABLED = 'spdy-view-http2-enabled'; |
| 36 SpdyView.STATUS_SPDY31_ENABLED = 'spdy-view-spdy31-enabled'; |
| 37 SpdyView.STATUS_ALTERNATE_SERVICE = 'spdy-view-alternate-service'; |
| 38 SpdyView.STATUS_ALPN_PROTOCOLS = 'spdy-view-alpn-protocols'; |
| 39 SpdyView.STATUS_NPN_PROTOCOLS = 'spdy-view-npn-protocols'; |
35 SpdyView.SESSION_INFO_ID = 'spdy-view-session-info'; | 40 SpdyView.SESSION_INFO_ID = 'spdy-view-session-info'; |
| 41 SpdyView.SESSION_INFO_CONTENT_ID = 'spdy-view-session-info-content'; |
| 42 SpdyView.SESSION_INFO_NO_CONTENT_ID = |
| 43 'spdy-view-session-info-no-content'; |
| 44 SpdyView.SESSION_INFO_TBODY_ID = 'spdy-view-session-info-tbody'; |
36 | 45 |
37 cr.addSingletonGetter(SpdyView); | 46 cr.addSingletonGetter(SpdyView); |
38 | 47 |
39 SpdyView.prototype = { | 48 SpdyView.prototype = { |
40 // Inherit the superclass's methods. | 49 // Inherit the superclass's methods. |
41 __proto__: superClass.prototype, | 50 __proto__: superClass.prototype, |
42 | 51 |
43 onLoadLogFinish: function(data) { | 52 onLoadLogFinish: function(data) { |
44 return this.onSpdySessionInfoChanged(data.spdySessionInfo) && | 53 return this.onSpdySessionInfoChanged(data.spdySessionInfo) && |
45 this.onSpdyStatusChanged(data.spdyStatus); | 54 this.onSpdyStatusChanged(data.spdyStatus); |
46 }, | 55 }, |
47 | 56 |
48 /** | 57 /** |
49 * If |spdySessionInfo| contains any sessions, displays a single table with | 58 * If |spdySessionInfo| contains any sessions, displays a single table with |
50 * information on each SPDY session. Otherwise, displays "None". | 59 * information on each SPDY session. Otherwise, displays "None". |
51 */ | 60 */ |
52 onSpdySessionInfoChanged: function(spdySessionInfo) { | 61 onSpdySessionInfoChanged: function(spdySessionInfo) { |
53 if (!spdySessionInfo) | 62 if (!spdySessionInfo) |
54 return false; | 63 return false; |
55 // TODO(rayraymond): Update DOM without use of jstemplate. | 64 |
56 // var input = new JsEvalContext({ spdySessionInfo: spdySessionInfo }); | 65 var hasSpdySessionInfo = spdySessionInfo && spdySessionInfo.length > 0; |
57 // jstProcess(input, $(SpdyView.SESSION_INFO_ID)); | 66 |
| 67 setNodeDisplay($(SpdyView.SESSION_INFO_CONTENT_ID), hasSpdySessionInfo); |
| 68 setNodeDisplay($(SpdyView.SESSION_INFO_NO_CONTENT_ID), |
| 69 !hasSpdySessionInfo); |
| 70 |
| 71 var tbody = $(SpdyView.SESSION_INFO_TBODY_ID); |
| 72 tbody.innerHTML = ''; |
| 73 |
| 74 // Fill in the sessions info table. |
| 75 for (var i = 0; i < spdySessionInfo.length; ++i) { |
| 76 var s = spdySessionInfo[i]; |
| 77 var tr = addNode(tbody, 'tr'); |
| 78 |
| 79 var hostCell = addNode(tr, 'td'); |
| 80 addNodeWithText(hostCell, 'span', s.host_port_pair); |
| 81 addNodeWithText(hostCell, 'span', |
| 82 s.aliases ? ' ' + s.aliases.join(' ') : ''); |
| 83 |
| 84 addNodeWithText(tr, 'td', s.proxy); |
| 85 |
| 86 var idCell = addNode(tr, 'td'); |
| 87 var a = addNodeWithText(idCell, 'a', s.source_id); |
| 88 a.href = '#events&q=id:' + s.source_id; |
| 89 |
| 90 var kFields = ['protocol_negotiated', 'active_streams', |
| 91 'unclaimed_pushed_streams', 'max_concurrent_streams', |
| 92 'streams_initiated_count', 'streams_pushed_count', |
| 93 'streams_pushed_and_claimed_count', |
| 94 'streams_abandoned_count', 'frames_received', 'is_secure', |
| 95 'sent_settings', 'received_settings', 'send_window_size', |
| 96 'recv_window_size', 'unacked_recv_window_bytes', 'error']; |
| 97 |
| 98 for (var fieldIndex = 0; fieldIndex < kFields.length; ++fieldIndex) { |
| 99 addNodeWithText(tr, 'td', s[kFields[fieldIndex]]); |
| 100 } |
| 101 } |
| 102 |
58 return true; | 103 return true; |
59 }, | 104 }, |
60 | 105 |
61 /** | 106 /** |
62 * Displays information on the global SPDY status. | 107 * Displays information on the global SPDY status. |
63 */ | 108 */ |
64 onSpdyStatusChanged: function(spdyStatus) { | 109 onSpdyStatusChanged: function(spdyStatus) { |
65 if (!spdyStatus) | 110 if (!spdyStatus) |
66 return false; | 111 return false; |
67 // TODO(rayraymond): Update DOM without use of jstemplate. | 112 |
68 // var input = new JsEvalContext(spdyStatus); | 113 $(SpdyView.STATUS_HTTP2_ENABLED).textContent = |
69 // jstProcess(input, $(SpdyView.STATUS_ID)); | 114 (spdyStatus.enable_http2 == undefined ? |
| 115 spdyStatus.spdy_enabled : spdyStatus.enable_http2); |
| 116 |
| 117 $(SpdyView.STATUS_SPDY31_ENABLED).textContent = |
| 118 (spdyStatus.enable_spdy31 == undefined ? |
| 119 spdyStatus.spdy_enabled : spdyStatus.enable_spdy31); |
| 120 |
| 121 $(SpdyView.STATUS_ALTERNATE_SERVICE).textContent = |
| 122 (spdyStatus.use_alternative_services == undefined ? |
| 123 spdyStatus.use_alternate_protocols : |
| 124 spdyStatus.use_alternative_services); |
| 125 |
| 126 $(SpdyView.STATUS_ALPN_PROTOCOLS).textContent = |
| 127 (spdyStatus.alpn_protos || spdyStatus.next_protos); |
| 128 |
| 129 $(SpdyView.STATUS_NPN_PROTOCOLS).textContent = |
| 130 (spdyStatus.npn_protos || spdyStatus.next_protos); |
| 131 |
70 return true; | 132 return true; |
71 } | 133 } |
72 }; | 134 }; |
73 | 135 |
74 return SpdyView; | 136 return SpdyView; |
75 })(); | 137 })(); |
76 | 138 |
OLD | NEW |