| // Copyright 2021 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 {PersonalDataChangedListener} from './autofill_manager_proxy.js'; |
| |
| /** |
| * Interface for all callbacks to the payments autofill API. |
| */ |
| export interface PaymentsManagerProxy { |
| /** |
| * Add an observer to the list of personal data. |
| */ |
| setPersonalDataManagerListener(listener: PersonalDataChangedListener): void; |
| |
| /** |
| * Remove an observer from the list of personal data. |
| */ |
| removePersonalDataManagerListener(listener: PersonalDataChangedListener): |
| void; |
| |
| /** |
| * Request the list of credit cards. |
| */ |
| getCreditCardList(): Promise<chrome.autofillPrivate.CreditCardEntry[]>; |
| |
| /** |
| * Request the list of IBANs. |
| */ |
| getIbanList(): Promise<chrome.autofillPrivate.IbanEntry[]>; |
| |
| /** @param ibanValue Returns true if the given ibanValue is valid. */ |
| isValidIban(ibanValue: string): Promise<boolean>; |
| |
| /** @param guid The GUID of the credit card to remove. */ |
| removeCreditCard(guid: string): void; |
| |
| /** |
| * Saves the given credit card. |
| */ |
| saveCreditCard(creditCard: chrome.autofillPrivate.CreditCardEntry): void; |
| |
| /** @param guid The GUID of the IBAN to remove. */ |
| removeIban(guid: string): void; |
| |
| /** |
| * Saves the given IBAN. |
| */ |
| saveIban(iban: chrome.autofillPrivate.IbanEntry): void; |
| |
| /** |
| * Migrate the local credit cards. |
| */ |
| migrateCreditCards(): void; |
| |
| /** |
| * Logs that the server cards edit link was clicked. |
| */ |
| logServerCardLinkClicked(): void; |
| |
| /** |
| * Logs that the server IBAN's "Edit in Google Pay" link was clicked. |
| */ |
| logServerIbanLinkClicked(): void; |
| |
| /** |
| * Enrolls the card into virtual cards. |
| */ |
| addVirtualCard(cardId: string): void; |
| |
| /** |
| * Unenrolls the card from virtual cards. |
| */ |
| removeVirtualCard(cardId: string): void; |
| |
| /** |
| * A null response means that there is no platform authenticator. |
| */ |
| isUserVerifyingPlatformAuthenticatorAvailable(): Promise<boolean|null>; |
| |
| /** |
| * Authenticate the user via device authentication and flip the mandatory auth |
| * toggle is successful. |
| */ |
| authenticateUserAndFlipMandatoryAuthToggle(): void; |
| |
| /** |
| * Returns the local card based on the `guid` provided. The user could |
| * also be challenged with a reauth if that is enabled. For a |
| * successful auth, the local card is returned otherwise return a null object. |
| */ |
| getLocalCard(guid: string): |
| Promise<chrome.autofillPrivate.CreditCardEntry|null>; |
| |
| // <if expr="is_win or is_macosx"> |
| /** |
| * Returns true if there is authentication available on this device (biometric |
| * or screen lock), false otherwise. |
| */ |
| checkIfDeviceAuthAvailable(): Promise<boolean>; |
| // </if> |
| |
| /** |
| * Bulk delete all the CVCs (server and local) from the local webdata |
| * database. For server CVCs, this will also clear them from the Chrome |
| * sync server and thus other devices. |
| */ |
| bulkDeleteAllCvcs(): void; |
| } |
| |
| /** |
| * Implementation that accesses the private API. |
| */ |
| export class PaymentsManagerImpl implements PaymentsManagerProxy { |
| setPersonalDataManagerListener(listener: PersonalDataChangedListener) { |
| chrome.autofillPrivate.onPersonalDataChanged.addListener(listener); |
| } |
| |
| removePersonalDataManagerListener(listener: PersonalDataChangedListener) { |
| chrome.autofillPrivate.onPersonalDataChanged.removeListener(listener); |
| } |
| |
| getCreditCardList() { |
| return chrome.autofillPrivate.getCreditCardList(); |
| } |
| |
| getIbanList() { |
| return chrome.autofillPrivate.getIbanList(); |
| } |
| |
| isValidIban(ibanValue: string) { |
| return chrome.autofillPrivate.isValidIban(ibanValue); |
| } |
| |
| removeCreditCard(guid: string) { |
| chrome.autofillPrivate.removeEntry(guid); |
| } |
| |
| saveCreditCard(creditCard: chrome.autofillPrivate.CreditCardEntry) { |
| chrome.autofillPrivate.saveCreditCard(creditCard); |
| } |
| |
| saveIban(iban: chrome.autofillPrivate.IbanEntry) { |
| chrome.autofillPrivate.saveIban(iban); |
| } |
| |
| removeIban(guid: string) { |
| chrome.autofillPrivate.removeEntry(guid); |
| } |
| |
| migrateCreditCards() { |
| chrome.autofillPrivate.migrateCreditCards(); |
| } |
| |
| logServerCardLinkClicked() { |
| chrome.autofillPrivate.logServerCardLinkClicked(); |
| } |
| |
| logServerIbanLinkClicked() { |
| chrome.autofillPrivate.logServerIbanLinkClicked(); |
| } |
| |
| addVirtualCard(cardId: string) { |
| chrome.autofillPrivate.addVirtualCard(cardId); |
| } |
| |
| removeVirtualCard(serverId: string) { |
| chrome.autofillPrivate.removeVirtualCard(serverId); |
| } |
| |
| isUserVerifyingPlatformAuthenticatorAvailable() { |
| if (!window.PublicKeyCredential) { |
| return Promise.resolve(null); |
| } |
| |
| return window.PublicKeyCredential |
| .isUserVerifyingPlatformAuthenticatorAvailable(); |
| } |
| |
| authenticateUserAndFlipMandatoryAuthToggle() { |
| chrome.autofillPrivate.authenticateUserAndFlipMandatoryAuthToggle(); |
| } |
| |
| getLocalCard(guid: string) { |
| return chrome.autofillPrivate.getLocalCard(guid); |
| } |
| |
| // <if expr="is_win or is_macosx"> |
| checkIfDeviceAuthAvailable() { |
| return chrome.autofillPrivate.checkIfDeviceAuthAvailable(); |
| } |
| // </if> |
| |
| bulkDeleteAllCvcs() { |
| chrome.autofillPrivate.bulkDeleteAllCvcs(); |
| } |
| |
| static getInstance(): PaymentsManagerProxy { |
| return instance || (instance = new PaymentsManagerImpl()); |
| } |
| |
| static setInstance(obj: PaymentsManagerProxy) { |
| instance = obj; |
| } |
| } |
| |
| let instance: PaymentsManagerProxy|null = null; |