chromium/chrome/browser/resources/nearby_internals/http_tab.ts

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

import 'chrome://resources/ash/common/cr_elements/cr_expand_button/cr_expand_button.js';
import 'chrome://resources/ash/common/cr_elements/cr_shared_style.css.js';
import 'chrome://resources/polymer/v3_0/iron-collapse/iron-collapse.js';
import './http_message_object.js';
import './shared_style.css.js';

import {WebUiListenerMixin} from 'chrome://resources/ash/common/cr_elements/web_ui_listener_mixin.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';

import {getTemplate} from './http_tab.html.js';
import {NearbyHttpBrowserProxy} from './nearby_http_browser_proxy.js';
import type {HttpMessage} from './types.js';

const HttpTabElementBase = WebUiListenerMixin(PolymerElement);

class HttpTabElement extends HttpTabElementBase {
  static get is() {
    return 'http-tab';
  }

  static get template() {
    return getTemplate();
  }

  static get properties() {
    return {

      httpMessageList_: {
        type: Array,
        value: () => [],
      },

    };
  }

  private browserProxy_: NearbyHttpBrowserProxy =
      NearbyHttpBrowserProxy.getInstance();
  private httpMessageList_: HttpMessage[];

  /**
   * When the page is initialized, notify the C++ layer to allow JavaScript and
   * initialize WebUI Listeners.
   */
  override connectedCallback() {
    super.connectedCallback();

    this.addWebUiListener(
        'http-message-added',
        (message: HttpMessage) => this.onHttpMessageAdded_(message));
    this.browserProxy_.initialize();
  }

  /**
   * Triggers UpdateDevice RPC.
   */
  private onUpdateDeviceClicked_(): void {
    this.browserProxy_.updateDevice();
  }

  /**
   * Triggers ListContactPeople RPC.
   */
  private onListContactPeopleClicked_(): void {
    this.browserProxy_.listContactPeople();
  }

  /**
   * Triggers ListPublicCertificates RPC.
   */
  private onListPublicCertificatesClicked_(): void {
    this.browserProxy_.listPublicCertificates();
  }

  /**
   * Clears the |httpMessageList_| messages displayed on the page.
   */
  private onClearMessagesButtonClicked_(): void {
    this.httpMessageList_ = [];
  }

  /**
   * Adds a HTTP message to the javascript message list displayed. Called from
   * the C++ WebUI handler when a HTTP message is created in response to a Rpc.
   */
  private onHttpMessageAdded_(message: HttpMessage): void {
    this.unshift('httpMessageList_', message);
  }
}

customElements.define(HttpTabElement.is, HttpTabElement);