function MainView() {
    assertFirstConstructorCall(MainView);

    if (hasTouchScreen())
      document.body.classList.add('touch');

    // This must be initialized before the tabs, so they can register as
    // observers.
    g_browser = BrowserBridge.getInstance();

    // This must be the first constants observer, so other constants observers
    // can safely use the globals, rather than depending on walking through
    // the constants themselves.
    g_browser.addConstantsObserver(new ConstantsObserver());

    // Create the tab switcher.
    this.initTabs_();

    // Cut out a small vertical strip at the top of the window, to display
    // a high level status (i.e. if we are displaying a log file or not).
    // Below it we will position the main tabs and their content area.
    this.topBarView_ = TopBarView.getInstance(this);
    var verticalSplitView =
        new VerticalSplitView(this.topBarView_, this.tabSwitcher_);

    superClass.call(this, verticalSplitView);

    // Trigger initial layout.
    this.resetGeometry();

    window.onhashchange = this.onUrlHashChange_.bind(this);

    // Select the initial view based on the current URL.
    window.onhashchange();

    // No log file loaded yet so set the status bar to that state.
    this.topBarView_.switchToSubView('loaded').setFileName(
        'No log to display.');

    // TODO(rayraymond): Follow-up is to completely remove all code from
    // g_browser that interacts with sending/receiving messages from
    // browser.
    g_browser.disable();
  }
/**
   * Main entry point. Called once the page has loaded.
   *  @constructor
   */
Main entry point. Called once the page has loaded.
@constructor
Main entry point . Called once the page has loaded . @constructor
function MainView() {
    assertFirstConstructorCall(MainView);
    if (hasTouchScreen())
      document.body.classList.add('touch');
    g_browser = BrowserBridge.getInstance();
    g_browser.addConstantsObserver(new ConstantsObserver());
    this.initTabs_();
    this.topBarView_ = TopBarView.getInstance(this);
    var verticalSplitView =
        new VerticalSplitView(this.topBarView_, this.tabSwitcher_);
    superClass.call(this, verticalSplitView);
    this.resetGeometry();
    window.onhashchange = this.onUrlHashChange_.bind(this);
    window.onhashchange();
    this.topBarView_.switchToSubView('loaded').setFileName(
        'No log to display.');
    g_browser.disable();
  }
function MainView ( ) { assertFirstConstructorCall ( MainView ) ; if ( hasTouchScreen ( ) ) document . body . classList . add ( 'touch' ) ; g_browser = BrowserBridge . getInstance ( ) ; g_browser . addConstantsObserver ( new ConstantsObserver ( ) ) ; this . initTabs_ ( ) ; this . topBarView_ = TopBarView . getInstance ( this ) ; var verticalSplitView = new VerticalSplitView ( this . topBarView_ , this . tabSwitcher_ ) ; superClass . call ( this , verticalSplitView ) ; this . resetGeometry ( ) ; window . onhashchange = this . onUrlHashChange_ . bind ( this ) ; window . onhashchange ( ) ; this . topBarView_ . switchToSubView ( 'loaded' ) . setFileName ( 'No log to display.' ) ; g_browser . disable ( ) ; }
Main entry point.
Main entry point .
// This must be initialized before the tabs, so they can register as // observers. // This must be the first constants observer, so other constants observers // can safely use the globals, rather than depending on walking through // the constants themselves. // Create the tab switcher. // Cut out a small vertical strip at the top of the window, to display // a high level status (i.e. if we are displaying a log file or not). // Below it we will position the main tabs and their content area. // Trigger initial layout. // Select the initial view based on the current URL. // No log file loaded yet so set the status bar to that state. // TODO(rayraymond): Follow-up is to completely remove all code from // g_browser that interacts with sending/receiving messages from // browser.