• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/**
6 * This view displays a summary of the state of each SPDY sessions, and
7 * has links to display them in the events tab.
8 */
9var SpdyView = (function() {
10  'use strict';
11
12  // We inherit from DivView.
13  var superClass = DivView;
14
15  /**
16   * @constructor
17   */
18  function SpdyView() {
19    assertFirstConstructorCall(SpdyView);
20
21    // Call superclass's constructor.
22    superClass.call(this, SpdyView.MAIN_BOX_ID);
23
24    g_browser.addSpdySessionInfoObserver(this, true);
25    g_browser.addSpdyStatusObserver(this, true);
26    g_browser.addSpdyAlternateProtocolMappingsObserver(this, true);
27  }
28
29  SpdyView.TAB_ID = 'tab-handle-spdy';
30  SpdyView.TAB_NAME = 'SPDY';
31  SpdyView.TAB_HASH = '#spdy';
32
33  // IDs for special HTML elements in spdy_view.html
34  SpdyView.MAIN_BOX_ID = 'spdy-view-tab-content';
35  SpdyView.STATUS_ID = 'spdy-view-status';
36  SpdyView.SESSION_INFO_ID = 'spdy-view-session-info';
37  SpdyView.ALTERNATE_PROTOCOL_MAPPINGS_ID =
38      'spdy-view-alternate-protocol-mappings';
39
40  cr.addSingletonGetter(SpdyView);
41
42  SpdyView.prototype = {
43    // Inherit the superclass's methods.
44    __proto__: superClass.prototype,
45
46    onLoadLogFinish: function(data) {
47      return this.onSpdySessionInfoChanged(data.spdySessionInfo) &&
48             this.onSpdyStatusChanged(data.spdyStatus) &&
49             this.onSpdyAlternateProtocolMappingsChanged(
50                 data.spdyAlternateProtocolMappings);
51    },
52
53    /**
54     * If |spdySessionInfo| contains any sessions, displays a single table with
55     * information on each SPDY session.  Otherwise, displays "None".
56     */
57    onSpdySessionInfoChanged: function(spdySessionInfo) {
58      if (!spdySessionInfo)
59        return false;
60      var input = new JsEvalContext({ spdySessionInfo: spdySessionInfo });
61      jstProcess(input, $(SpdyView.SESSION_INFO_ID));
62      return true;
63    },
64
65    /**
66     * Displays information on the global SPDY status.
67     */
68    onSpdyStatusChanged: function(spdyStatus) {
69      if (!spdyStatus)
70        return false;
71      var input = new JsEvalContext(spdyStatus);
72      jstProcess(input, $(SpdyView.STATUS_ID));
73      return true;
74    },
75
76    /**
77     * Displays information on the SPDY alternate protocol mappings.
78     */
79    onSpdyAlternateProtocolMappingsChanged: function(
80        spdyAlternateProtocolMappings) {
81      if (!spdyAlternateProtocolMappings)
82        return false;
83      var input = new JsEvalContext(
84          {spdyAlternateProtocolMappings: spdyAlternateProtocolMappings});
85      jstProcess(input, $(SpdyView.ALTERNATE_PROTOCOL_MAPPINGS_ID));
86      return true;
87    }
88  };
89
90  return SpdyView;
91})();
92