chromium/chrome/browser/resources/net_internals/proxy_view.js

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import {$} from 'chrome://resources/js/util.js';

import {BrowserBridge} from './browser_bridge.js';
import {DivView} from './view.js';

/** @type {?ProxyView} */
let instance = null;

/**
 * This view displays information on the proxy setup:
 *
 *   - Has a button to reload these settings.
 *   - Has a button to clear the cached bad proxies.
 */
export class ProxyView extends DivView {
  constructor() {
    // Call superclass's constructor.
    super(ProxyView.MAIN_BOX_ID);

    // Hook up the UI components.
    $(ProxyView.RELOAD_SETTINGS_BUTTON_ID).onclick = () => {
      BrowserBridge.getInstance().sendReloadProxySettings();
    };
    $(ProxyView.CLEAR_BAD_PROXIES_BUTTON_ID).onclick = () => {
      BrowserBridge.getInstance().sendClearBadProxies();
    };
  }

  static getInstance() {
    return instance || (instance = new ProxyView());
  }
}

ProxyView.TAB_ID = 'tab-handle-proxy';
ProxyView.TAB_NAME = 'Proxy';
ProxyView.TAB_HASH = '#proxy';

// IDs for special HTML elements in proxy_view.html
ProxyView.MAIN_BOX_ID = 'proxy-view-tab-content';
ProxyView.RELOAD_SETTINGS_BUTTON_ID = 'proxy-view-reload-settings';
ProxyView.CLEAR_BAD_PROXIES_BUTTON_ID = 'proxy-view-clear-bad-proxies';