15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This view displays a summary of the state of each SPDY sessions, and
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * has links to display them in the events tab.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var SpdyView = (function() {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  'use strict';
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We inherit from DivView.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  var superClass = DivView;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @constructor
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  function SpdyView() {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assertFirstConstructorCall(SpdyView);
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Call superclass's constructor.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    superClass.call(this, SpdyView.MAIN_BOX_ID);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    g_browser.addSpdySessionInfoObserver(this, true);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    g_browser.addSpdyStatusObserver(this, true);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    g_browser.addSpdyAlternateProtocolMappingsObserver(this, true);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SpdyView.TAB_ID = 'tab-handle-spdy';
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SpdyView.TAB_NAME = 'SPDY';
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SpdyView.TAB_HASH = '#spdy';
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IDs for special HTML elements in spdy_view.html
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SpdyView.MAIN_BOX_ID = 'spdy-view-tab-content';
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SpdyView.STATUS_ID = 'spdy-view-status';
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SpdyView.SESSION_INFO_ID = 'spdy-view-session-info';
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  SpdyView.ALTERNATE_PROTOCOL_MAPPINGS_ID =
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      'spdy-view-alternate-protocol-mappings';
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cr.addSingletonGetter(SpdyView);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SpdyView.prototype = {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Inherit the superclass's methods.
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    __proto__: superClass.prototype,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onLoadLogFinish: function(data) {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return this.onSpdySessionInfoChanged(data.spdySessionInfo) &&
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             this.onSpdyStatusChanged(data.spdyStatus) &&
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             this.onSpdyAlternateProtocolMappingsChanged(
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 data.spdyAlternateProtocolMappings);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * If |spdySessionInfo| contains any sessions, displays a single table with
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * information on each SPDY session.  Otherwise, displays "None".
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onSpdySessionInfoChanged: function(spdySessionInfo) {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (!spdySessionInfo)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        return false;
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      var input = new JsEvalContext({ spdySessionInfo: spdySessionInfo });
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      jstProcess(input, $(SpdyView.SESSION_INFO_ID));
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return true;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Displays information on the global SPDY status.
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onSpdyStatusChanged: function(spdyStatus) {
69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      if (!spdyStatus)
70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        return false;
71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      var input = new JsEvalContext(spdyStatus);
72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      jstProcess(input, $(SpdyView.STATUS_ID));
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return true;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Displays information on the SPDY alternate protocol mappings.
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    onSpdyAlternateProtocolMappingsChanged: function(
80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        spdyAlternateProtocolMappings) {
81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      if (!spdyAlternateProtocolMappings)
82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        return false;
83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      var input = new JsEvalContext(
84c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          {spdyAlternateProtocolMappings: spdyAlternateProtocolMappings});
85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      jstProcess(input, $(SpdyView.ALTERNATE_PROTOCOL_MAPPINGS_ID));
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return true;
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return SpdyView;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)})();
92