// 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 {?SocketsView} */
let instance = null;
/**
* This view displays information on the state of all socket pools.
*
* - Has a button to close idle sockets.
* - Has a button to flush socket pools.
*/
export class SocketsView extends DivView {
constructor() {
// Call superclass's constructor.
super(SocketsView.MAIN_BOX_ID);
const closeIdleButton = $(SocketsView.CLOSE_IDLE_SOCKETS_BUTTON_ID);
closeIdleButton.onclick = this.closeIdleSockets.bind(this);
const flushSocketsButton = $(SocketsView.SOCKET_POOL_FLUSH_BUTTON_ID);
flushSocketsButton.onclick = this.flushSocketPools.bind(this);
}
closeIdleSockets() {
BrowserBridge.getInstance().sendCloseIdleSockets();
}
flushSocketPools() {
BrowserBridge.getInstance().sendFlushSocketPools();
}
static getInstance() {
return instance || (instance = new SocketsView());
}
}
SocketsView.TAB_ID = 'tab-handle-sockets';
SocketsView.TAB_NAME = 'Sockets';
SocketsView.TAB_HASH = '#sockets';
// IDs for special HTML elements in sockets_view.html
SocketsView.MAIN_BOX_ID = 'sockets-view-tab-content';
SocketsView.CLOSE_IDLE_SOCKETS_BUTTON_ID = 'sockets-view-close-idle-button';
SocketsView.SOCKET_POOL_FLUSH_BUTTON_ID = 'sockets-view-flush-button';