chromium/chrome/test/data/webui/feedback/test_feedback_browser_proxy.ts

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

import type {FeedbackBrowserProxy} from 'chrome://feedback/js/feedback_browser_proxy.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';

export class TestFeedbackBrowserProxy extends TestBrowserProxy implements
    FeedbackBrowserProxy {
  private dialogArugments_: string = '';
  private systemLogs_: chrome.feedbackPrivate.LogsMapEntry[] = [];
  private userEmail_: string = '';
  private userMedia_: Promise<MediaStream|undefined> =
      Promise.resolve(undefined);

  constructor() {
    super([
      'closeDialog', 'getSystemInformation', 'getUserEmail',
      'getDialogArguments', 'getUserMedia', 'sendFeedback',
      'showAutofillMetadataInfo', 'showDialog', 'showMetrics', 'showSystemInfo',
    ]);
  }

  getSystemInformation(): Promise<chrome.feedbackPrivate.LogsMapEntry[]> {
    this.methodCalled('getSystemInformation');
    return Promise.resolve(this.systemLogs_);
  }

  setSystemInfomation(value: chrome.feedbackPrivate.LogsMapEntry[]) {
    this.systemLogs_ = value;
  }

  getUserEmail(): Promise<string> {
    this.methodCalled('getUserEmail');
    return Promise.resolve(this.userEmail_);
  }

  setUserEmail(value: string) {
    this.userEmail_ = value;
  }

  getDialogArguments(): string {
    this.methodCalled('getDialogArguments');
    return this.dialogArugments_;
  }

  setDialogArguments(value: string) {
    this.dialogArugments_ = value;
  }

  getUserMedia(_params: any): Promise<MediaStream|undefined> {
    this.methodCalled('getUserMedia');
    return this.userMedia_;
  }

  setUserMedia(value: Promise<MediaStream|undefined>) {
    this.userMedia_ = value;
  }

  sendFeedback(
      feedback: chrome.feedbackPrivate.FeedbackInfo, _loadSystemInfo?: boolean,
      _formOpenTime?: number):
      Promise<chrome.feedbackPrivate.SendFeedbackResult> {
    this.methodCalled('sendFeedback', feedback);
    return Promise.resolve({
      status: chrome.feedbackPrivate.Status.SUCCESS,
      landingPageType: chrome.feedbackPrivate.LandingPageType.NORMAL,
    });
  }

  showDialog() {
    this.methodCalled('showDialog');
  }

  closeDialog() {
    this.methodCalled('closeDialog');
  }

  showSystemInfo() {
    this.methodCalled('showSystemInfo');
  }
  showMetrics() {
    this.methodCalled('showMetrics');
  }
  showAutofillMetadataInfo(autofillMetadata: string) {
    this.methodCalled('showAutofillMetadataInfo', autofillMetadata);
  }
}