| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| /** |
| * @fileoverview A helper object used from the "Google Accounts" subsection of |
| * the "People" section of Settings, to interact with the browser. Chrome OS |
| * only. |
| */ |
| cr.exportPath('settings'); |
| |
| /** |
| * Information for an account managed by Chrome OS AccountManager. |
| * @typedef {{ |
| * id: string, |
| * accountType: number, |
| * isDeviceAccount: boolean, |
| * isSignedIn: boolean, |
| * fullName: string, |
| * email: string, |
| * pic: string, |
| * organization: (string|undefined), |
| * }} |
| */ |
| settings.Account; |
| |
| cr.define('settings', function() { |
| /** @interface */ |
| class AccountManagerBrowserProxy { |
| /** |
| * Returns a Promise for the list of GAIA accounts held in AccountManager. |
| * @return {!Promise<!Array<settings.Account>>} |
| */ |
| getAccounts() {} |
| |
| /** |
| * Triggers the 'Add account' flow. |
| */ |
| addAccount() {} |
| |
| /** |
| * Triggers the re-authentication flow for the account pointed to by |
| * |account_email|. |
| * @param {!string} account_email |
| */ |
| reauthenticateAccount(account_email) {} |
| |
| /** |
| * Removes |account| from Account Manager. |
| * @param {?settings.Account} account |
| */ |
| removeAccount(account) {} |
| |
| /** |
| * Displays the Account Manager welcome dialog if required. |
| */ |
| showWelcomeDialogIfRequired() {} |
| } |
| |
| /** |
| * @implements {settings.AccountManagerBrowserProxy} |
| */ |
| class AccountManagerBrowserProxyImpl { |
| /** @override */ |
| getAccounts() { |
| return cr.sendWithPromise('getAccounts'); |
| } |
| |
| /** @override */ |
| addAccount() { |
| chrome.send('addAccount'); |
| } |
| |
| /** @override */ |
| reauthenticateAccount(account_email) { |
| chrome.send('reauthenticateAccount', [account_email]); |
| } |
| |
| /** @override */ |
| removeAccount(account) { |
| chrome.send('removeAccount', [account]); |
| } |
| |
| /** @override */ |
| showWelcomeDialogIfRequired() { |
| chrome.send('showWelcomeDialogIfRequired'); |
| } |
| } |
| |
| cr.addSingletonGetter(AccountManagerBrowserProxyImpl); |
| |
| return { |
| AccountManagerBrowserProxy: AccountManagerBrowserProxy, |
| AccountManagerBrowserProxyImpl: AccountManagerBrowserProxyImpl, |
| }; |
| }); |