| // 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 by the welcome page to interact with |
| * the browser. |
| */ |
| |
| /** @interface */ |
| export class WelcomeBrowserProxy { |
| /** @param {?string} redirectUrl the URL to go to, after signing in. */ |
| handleActivateSignIn(redirectUrl) {} |
| |
| handleUserDecline() {} |
| |
| /** @param {boolean=} replace */ |
| goToNewTabPage(replace) {} |
| |
| /** @param {string} url */ |
| goToURL(url) {} |
| } |
| |
| /** @implements {WelcomeBrowserProxy} */ |
| export class WelcomeBrowserProxyImpl { |
| /** @override */ |
| handleActivateSignIn(redirectUrl) { |
| chrome.send('handleActivateSignIn', redirectUrl ? [redirectUrl] : []); |
| } |
| |
| /** @override */ |
| handleUserDecline() { |
| chrome.send('handleUserDecline'); |
| } |
| |
| /** @override */ |
| goToNewTabPage(replace) { |
| if (replace) { |
| window.location.replace('chrome://newtab'); |
| } else { |
| window.location.assign('chrome://newtab'); |
| } |
| } |
| |
| /** @override */ |
| goToURL(url) { |
| window.location.assign(url); |
| } |
| |
| /** @return {!WelcomeBrowserProxy} */ |
| static getInstance() { |
| return instance || (instance = new WelcomeBrowserProxyImpl()); |
| } |
| |
| /** @param {!WelcomeBrowserProxy} obj */ |
| static setInstance(obj) { |
| instance = obj; |
| } |
| } |
| |
| /** @type {?WelcomeBrowserProxy} */ |
| let instance = null; |