| // Copyright 2011 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import './info_view.js'; |
| |
| import {BrowserBridge} from './browser_bridge.js'; |
| |
| const browserBridge = new BrowserBridge(); |
| |
| // Injected script from C++ or test environments may reference `browserBridge` |
| // as a property of the global object. |
| Object.assign(window, {browserBridge}); |
| |
| /** |
| * Main entry point. called once the page has loaded. |
| */ |
| function onLoad() { |
| // Create the views. |
| document.querySelector('info-view')!.addBrowserBridgeListeners(browserBridge); |
| |
| // Because of inherent raciness (between the deprecated DevTools API which |
| // telemetry uses to drive the relevant tests, and the asynchronous |
| // loading of JS modules like this one) it's possible for telemetry tests |
| // to inject code *before* `browserBridge` is set and the DOM is |
| // populated. This flag is used to synchronize script injection by tests |
| // to prevent such races. |
| Object.assign(window, { |
| gpuPagePopulated: true, |
| getGPUInfo(category: string, feature = '') { |
| return document.querySelector('info-view')!.getInfo(category, feature); |
| }, |
| }); |
| } |
| |
| document.addEventListener('DOMContentLoaded', onLoad); |