// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// clang-format off
import {sendWithPromise} from 'chrome://resources/js/cr.js';
// clang-format on
export interface ResetBrowserProxy {
/**
* @param sendSettings Whether the user gave consent to upload broken settings
* to Google for analysis.
* @param requestOrigin The origin of the reset request.
* @return A promise firing once resetting has completed.
*/
performResetProfileSettings(sendSettings: boolean, requestOrigin: string):
Promise<void>;
/**
* A method to be called when the reset profile dialog is hidden.
*/
onHideResetProfileDialog(): void;
/**
* A method to be called when the reset profile banner is hidden.
*/
onHideResetProfileBanner(): void;
/**
* A method to be called when the reset profile dialog is shown.
*/
onShowResetProfileDialog(): void;
/**
* Shows the settings that are about to be reset and which will be reported
* to Google for analysis, in a new tab.
*/
showReportedSettings(): void;
/**
* Retrieves the triggered reset tool name.
* @return A promise firing with the tool name, once it has been retrieved.
*/
getTriggeredResetToolName(): Promise<string>;
}
export class ResetBrowserProxyImpl implements ResetBrowserProxy {
performResetProfileSettings(sendSettings: boolean, requestOrigin: string) {
return sendWithPromise(
'performResetProfileSettings', sendSettings, requestOrigin);
}
onHideResetProfileDialog() {
chrome.send('onHideResetProfileDialog');
}
onHideResetProfileBanner() {
chrome.send('onHideResetProfileBanner');
}
onShowResetProfileDialog() {
chrome.send('onShowResetProfileDialog');
}
showReportedSettings() {
sendWithPromise('getReportedSettings')
.then(function(settings: Array<{key: string, value: string}>) {
const output = settings.map(function(entry) {
return entry.key + ': ' + entry.value.replace(/\n/g, ', ');
});
const win = window.open('about:blank')!;
const div = win.document.createElement('div');
div.textContent = output.join('\n');
div.style.whiteSpace = 'pre';
win.document.body.appendChild(div);
});
}
getTriggeredResetToolName(): Promise<string> {
return sendWithPromise('getTriggeredResetToolName');
}
static getInstance(): ResetBrowserProxy {
return instance || (instance = new ResetBrowserProxyImpl());
}
static setInstance(obj: ResetBrowserProxy) {
instance = obj;
}
}
let instance: ResetBrowserProxy|null = null;