chromium/chrome/browser/resources/net_internals/browser_bridge.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 {sendWithPromise} from 'chrome://resources/js/cr.js';

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

/**
 * This class provides a "bridge" for communicating between the javascript and
 * the browser.
 */
export class BrowserBridge {
  constructor() {}

  //--------------------------------------------------------------------------
  // Messages sent to the browser
  //--------------------------------------------------------------------------
  sendReloadProxySettings() {
    chrome.send('reloadProxySettings');
  }

  sendClearBadProxies() {
    chrome.send('clearBadProxies');
  }

  sendResolveHost(hostname) {
    return sendWithPromise('resolveHost', hostname);
  }

  sendClearHostResolverCache() {
    chrome.send('clearHostResolverCache');
  }

  sendHSTSQuery(domain) {
    return sendWithPromise('hstsQuery', domain);
  }

  sendHSTSAdd(domain, sts_include_subdomains) {
    chrome.send('hstsAdd', [domain, sts_include_subdomains]);
  }

  sendDomainSecurityPolicyDelete(domain) {
    chrome.send('domainSecurityPolicyDelete', [domain]);
  }

  sendCloseIdleSockets() {
    chrome.send('closeIdleSockets');
  }

  sendFlushSocketPools() {
    chrome.send('flushSocketPools');
  }

  setNetworkDebugMode(subsystem) {
    chrome.send('setNetworkDebugMode', [subsystem]);
  }

  sendClearSharedDictionary() {
    return sendWithPromise('clearSharedDictionary');
  }

  sendClearSharedDictionaryCacheForIsolationKey(frame_origin, top_frame_site) {
    return sendWithPromise(
        'clearSharedDictionaryCacheForIsolationKey', frame_origin,
        top_frame_site);
  }

  getSharedDictionaryUsageInfo() {
    return sendWithPromise('getSharedDictionaryUsageInfo');
  }

  getSharedDictionaryInfo(frame_origin, top_frame_site) {
    return sendWithPromise(
        'getSharedDictionaryInfo', frame_origin, top_frame_site);
  }

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