Commit 0fe86d0b authored by Demetrios Papadopoulos's avatar Demetrios Papadopoulos Committed by Commit Bot

Settings: Move PaymentsManager and AutofillManager under a namespace.

Previously these were defined at the global scope, which does not play well with
the tools used for migrating to Polymer3. It also pollutes the global namespace.

Bug: 1026426
Change-Id: I8e99c6f83e78a8ac8e1a4073102f60abe70c6448
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2002002
Auto-Submit: Demetrios Papadopoulos <dpapad@chromium.org>
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732215}
parent 13fdde75
......@@ -7,49 +7,51 @@
* addresses for use in autofill and payments APIs.
*/
/**
cr.define('settings', function() {
/**
* Interface for all callbacks to the autofill API.
* @interface
*/
class AutofillManager {
class AutofillManager {
/**
* Add an observer to the list of personal data.
* @param {function(!Array<!AutofillManager.AddressEntry>,
* !Array<!PaymentsManager.CreditCardEntry>):void} listener
* @param {function(!Array<!settings.AutofillManager.AddressEntry>,
* !Array<!settings.PaymentsManager.CreditCardEntry>):void} listener
*/
setPersonalDataManagerListener(listener) {}
/**
* Remove an observer from the list of personal data.
* @param {function(!Array<!AutofillManager.AddressEntry>,
* !Array<!PaymentsManager.CreditCardEntry>):void} listener
* @param {function(!Array<!settings.AutofillManager.AddressEntry>,
* !Array<!settings.PaymentsManager.CreditCardEntry>):void} listener
*/
removePersonalDataManagerListener(listener) {}
/**
* Request the list of addresses.
* @param {function(!Array<!AutofillManager.AddressEntry>):void} callback
* @param {function(!Array<!settings.AutofillManager.AddressEntry>):void}
* callback
*/
getAddressList(callback) {}
/**
* Saves the given address.
* @param {!AutofillManager.AddressEntry} address
* @param {!settings.AutofillManager.AddressEntry} address
*/
saveAddress(address) {}
/** @param {string} guid The guid of the address to remove. */
removeAddress(guid) {}
}
}
/** @typedef {chrome.autofillPrivate.AddressEntry} */
AutofillManager.AddressEntry;
/** @typedef {chrome.autofillPrivate.AddressEntry} */
AutofillManager.AddressEntry;
/**
/**
* Implementation that accesses the private API.
* @implements {AutofillManager}
* @implements {settings.AutofillManager}
*/
class AutofillManagerImpl {
class AutofillManagerImpl {
/** @override */
setPersonalDataManagerListener(listener) {
chrome.autofillPrivate.onPersonalDataChanged.addListener(listener);
......@@ -74,20 +76,17 @@ class AutofillManagerImpl {
removeAddress(guid) {
chrome.autofillPrivate.removeEntry(assert(guid));
}
}
cr.addSingletonGetter(AutofillManagerImpl);
}
(function() {
'use strict';
cr.addSingletonGetter(AutofillManagerImpl);
Polymer({
Polymer({
is: 'settings-autofill-section',
properties: {
/**
* An array of saved addresses.
* @type {!Array<!AutofillManager.AddressEntry>}
* @type {!Array<!settings.AutofillManager.AddressEntry>}
*/
addresses: Array,
......@@ -113,14 +112,14 @@ Polymer({
activeDialogAnchor_: null,
/**
* @type {AutofillManager}
* @type {settings.AutofillManager}
* @private
*/
autofillManager_: null,
/**
* @type {?function(!Array<!AutofillManager.AddressEntry>,
* !Array<!PaymentsManager.CreditCardEntry>)}
* @type {?function(!Array<!settings.AutofillManager.AddressEntry>,
* !Array<!settings.PaymentsManager.CreditCardEntry>)}
* @private
*/
setPersonalDataListener_: null,
......@@ -128,14 +127,14 @@ Polymer({
/** @override */
attached() {
// Create listener functions.
/** @type {function(!Array<!AutofillManager.AddressEntry>)} */
/** @type {function(!Array<!settings.AutofillManager.AddressEntry>)} */
const setAddressesListener = addressList => {
this.addresses = addressList;
};
/**
* @type {function(!Array<!AutofillManager.AddressEntry>,
* !Array<!PaymentsManager.CreditCardEntry>)}
* @type {function(!Array<!settings.AutofillManager.AddressEntry>,
* !Array<!settings.PaymentsManager.CreditCardEntry>)}
*/
const setPersonalDataListener = (addressList, cardList) => {
this.addresses = addressList;
......@@ -162,8 +161,8 @@ Polymer({
detached() {
this.autofillManager_.removePersonalDataManagerListener(
/**
@type {function(!Array<!AutofillManager.AddressEntry>,
!Array<!PaymentsManager.CreditCardEntry>)}
@type {function(!Array<!settings.AutofillManager.AddressEntry>,
!Array<!settings.PaymentsManager.CreditCardEntry>)}
*/
(this.setPersonalDataListener_));
},
......@@ -250,5 +249,10 @@ Polymer({
saveAddress_(event) {
this.autofillManager_.saveAddress(event.detail);
},
});
return {
AutofillManager,
AutofillManagerImpl,
};
});
})();
......@@ -13,7 +13,7 @@ Polymer({
properties: {
/**
* An array of all saved credit cards.
* @type {!Array<!PaymentsManager.CreditCardEntry>}
* @type {!Array<!settings.PaymentsManager.CreditCardEntry>}
*/
creditCards: Array,
},
......
......@@ -17,7 +17,7 @@ Polymer({
properties: {
/**
* A saved credit card.
* @type {!PaymentsManager.CreditCardEntry}
* @type {!settings.PaymentsManager.CreditCardEntry}
*/
creditCard: Object,
},
......
......@@ -7,40 +7,44 @@
* credit cards for use in autofill and payments APIs.
*/
/**
cr.define('settings', function() {
/**
* Interface for all callbacks to the payments autofill API.
* @interface
*/
class PaymentsManager {
class PaymentsManager {
/**
* Add an observer to the list of personal data.
* @param {function(!Array<!AutofillManager.AddressEntry>,
* !Array<!PaymentsManager.CreditCardEntry>):void} listener
* @param {function(!Array<!settings.AutofillManager.AddressEntry>,
* !Array<!settings.PaymentsManager.CreditCardEntry>):void} listener
*/
setPersonalDataManagerListener(listener) {}
/**
* Remove an observer from the list of personal data.
* @param {function(!Array<!AutofillManager.AddressEntry>,
* !Array<!PaymentsManager.CreditCardEntry>):void} listener
* @param {function(!Array<!settings.AutofillManager.AddressEntry>,
* !Array<!settings.PaymentsManager.CreditCardEntry>):void} listener
*/
removePersonalDataManagerListener(listener) {}
/**
* Request the list of credit cards.
* @param {function(!Array<!PaymentsManager.CreditCardEntry>):void} callback
* @param {function(!Array<!settings.PaymentsManager.CreditCardEntry>):void}
* callback
*/
getCreditCardList(callback) {}
/** @param {string} guid The GUID of the credit card to remove. */
removeCreditCard(guid) {}
/** @param {string} guid The GUID to credit card to remove from the cache. */
/**
* @param {string} guid The GUID to credit card to remove from the cache.
*/
clearCachedCreditCard(guid) {}
/**
* Saves the given credit card.
* @param {!PaymentsManager.CreditCardEntry} creditCard
* @param {!settings.PaymentsManager.CreditCardEntry} creditCard
*/
saveCreditCard(creditCard) {}
......@@ -58,16 +62,16 @@ class PaymentsManager {
* Enables FIDO authentication for card unmasking.
*/
setCreditCardFIDOAuthEnabledState(enabled) {}
}
}
/** @typedef {chrome.autofillPrivate.CreditCardEntry} */
PaymentsManager.CreditCardEntry;
/** @typedef {chrome.autofillPrivate.CreditCardEntry} */
PaymentsManager.CreditCardEntry;
/**
/**
* Implementation that accesses the private API.
* @implements {PaymentsManager}
* @implements {settings.PaymentsManager}
*/
class PaymentsManagerImpl {
class PaymentsManagerImpl {
/** @override */
setPersonalDataManagerListener(listener) {
chrome.autofillPrivate.onPersonalDataChanged.addListener(listener);
......@@ -112,14 +116,11 @@ class PaymentsManagerImpl {
setCreditCardFIDOAuthEnabledState(enabled) {
chrome.autofillPrivate.setCreditCardFIDOAuthEnabledState(enabled);
}
}
cr.addSingletonGetter(PaymentsManagerImpl);
}
(function() {
'use strict';
cr.addSingletonGetter(PaymentsManagerImpl);
Polymer({
Polymer({
is: 'settings-payments-section',
behaviors: [
......@@ -130,7 +131,7 @@ Polymer({
properties: {
/**
* An array of all saved credit cards.
* @type {!Array<!PaymentsManager.CreditCardEntry>}
* @type {!Array<!settings.PaymentsManager.CreditCardEntry>}
*/
creditCards: {
type: Array,
......@@ -188,14 +189,14 @@ Polymer({
activeDialogAnchor_: null,
/**
* @type {PaymentsManager}
* @type {settings.PaymentsManager}
* @private
*/
PaymentsManager_: null,
/**
* @type {?function(!Array<!AutofillManager.AddressEntry>,
* !Array<!PaymentsManager.CreditCardEntry>)}
* @type {?function(!Array<!settings.AutofillManager.AddressEntry>,
* !Array<!settings.PaymentsManager.CreditCardEntry>)}
* @private
*/
setPersonalDataListener_: null,
......@@ -203,7 +204,7 @@ Polymer({
/** @override */
attached() {
// Create listener function.
/** @type {function(!Array<!PaymentsManager.CreditCardEntry>)} */
/** @type {function(!Array<!settings.PaymentsManager.CreditCardEntry>)} */
const setCreditCardsListener = cardList => {
this.creditCards = cardList;
};
......@@ -211,15 +212,16 @@ Polymer({
// Update |userIsFidoVerifiable_| based on the availability of a platform
// authenticator.
if (window.PublicKeyCredential) {
window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
window.PublicKeyCredential
.isUserVerifyingPlatformAuthenticatorAvailable()
.then(r => {
this.userIsFidoVerifiable_ = this.userIsFidoVerifiable_ && r;
});
}
/**
* @type {function(!Array<!AutofillManager.AddressEntry>,
* !Array<!PaymentsManager.CreditCardEntry>)}
* @type {function(!Array<!settings.AutofillManager.AddressEntry>,
* !Array<!settings.PaymentsManager.CreditCardEntry>)}
*/
const setPersonalDataListener = (addressList, cardList) => {
this.creditCards = cardList;
......@@ -246,16 +248,17 @@ Polymer({
detached() {
this.paymentsManager_.removePersonalDataManagerListener(
/**
@type {function(!Array<!AutofillManager.AddressEntry>,
!Array<!PaymentsManager.CreditCardEntry>)}
@type {function(!Array<!settings.AutofillManager.AddressEntry>,
!Array<!settings.PaymentsManager.CreditCardEntry>)}
*/
(this.setPersonalDataListener_));
},
/**
* Opens the credit card action menu.
* @param {!CustomEvent<{creditCard: !chrome.autofillPrivate.CreditCardEntry,
* anchorElement: !HTMLElement}>} e
* @param {!CustomEvent<{creditCard:
* !chrome.autofillPrivate.CreditCardEntry, anchorElement:
* !HTMLElement}>} e
* @private
*/
onCreditCardDotsMenuTap_(e) {
......@@ -375,7 +378,7 @@ Polymer({
},
/**
* @param {!Array<!PaymentsManager.CreditCardEntry>} creditCards
* @param {!Array<!settings.PaymentsManager.CreditCardEntry>} creditCards
* @param {boolean} creditCardEnabled
* @return {boolean} Whether to show the migration button.
* @private
......@@ -407,5 +410,10 @@ Polymer({
return true;
},
});
return {
PaymentsManager,
PaymentsManagerImpl,
};
});
})();
......@@ -62,7 +62,7 @@ AccessibilityTest.define('SettingsA11yPasswords', {
'object or string', 'Test', settings.routes.PASSWORDS.path);
PasswordManagerImpl.instance_ = new TestPasswordManagerProxy();
this.passwordManager = PasswordManagerImpl.instance_;
this.passwordManager = PasswordManagerImpl.getInstance();
const settingsUi = document.createElement('settings-ui');
......
......@@ -126,11 +126,11 @@ cr.define('settings_autofill_page', function() {
// Override the AutofillManagerImpl for testing.
autofillManager = new TestAutofillManager();
AutofillManagerImpl.instance_ = autofillManager;
settings.AutofillManagerImpl.instance_ = autofillManager;
// Override the PaymentsManagerImpl for testing.
paymentsManager = new TestPaymentsManager();
PaymentsManagerImpl.instance_ = paymentsManager;
settings.PaymentsManagerImpl.instance_ = paymentsManager;
});
test('baseLoadAndRemove', function() {
......
......@@ -60,7 +60,7 @@ cr.define('settings_autofill_section', function() {
// Override the AutofillManagerImpl for testing.
this.autofillManager = new TestAutofillManager();
this.autofillManager.data.addresses = addresses;
AutofillManagerImpl.instance_ = this.autofillManager;
settings.AutofillManagerImpl.instance_ = this.autofillManager;
const section = document.createElement('settings-autofill-section');
section.prefs = {autofill: prefValues};
......
......@@ -42,7 +42,7 @@ cr.define('settings_payments_section', function() {
// Override the PaymentsManagerImpl for testing.
const paymentsManager = new TestPaymentsManager();
paymentsManager.data.creditCards = creditCards;
PaymentsManagerImpl.instance_ = paymentsManager;
settings.PaymentsManagerImpl.instance_ = paymentsManager;
const section = document.createElement('settings-payments-section');
section.prefs = {autofill: prefValues};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment