text: // Copyright 2016 The Chromium Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  window.addEventListener('load', function init() {
    var extensionView = document.querySelector('extensionview');
  
    /**
     * @param {string} str
     * @return {!Array<string>}
     */
    var splitUrlOnHash = function(str) {
      str = str || '';
      var pos = str.indexOf('#');
      return (pos !== -1) ? [str.substr(0, pos), str.substr(pos + 1)] : [str, ''];
    };
  
    new MutationObserver(function() {
      var newHash = splitUrlOnHash(extensionView.getAttribute('src'))[1];
      var oldHash = window.location.hash.substr(1);
      if (newHash !== oldHash) {
        window.location.hash = newHash;
      }
    }).observe(extensionView, {
      attributes: true
    });
  
    window.addEventListener('hashchange', function() {
      var newHash = window.location.hash.substr(1);
      var extensionViewSrcParts = splitUrlOnHash(
          extensionView.getAttribute('src'));
      if (newHash !== extensionViewSrcParts[1]) {
        extensionView.load(extensionViewSrcParts[0] + '#' + newHash);
      }
    });
  
    extensionView.load('chrome-extension://' +
        loadTimeData.getString('extensionId') + '/cast_setup/devices.html');
  });
  
  