// Copyright (c) 2012 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. cr.define('options', function() { var OptionsPage = options.OptionsPage; var ArrayDataModel = cr.ui.ArrayDataModel; ///////////////////////////////////////////////////////////////////////////// // AutofillOptions class: /** * Encapsulated handling of Autofill options page. * @constructor */ function AutofillOptions() { OptionsPage.call(this, 'autofill', loadTimeData.getString('autofillOptionsPageTabTitle'), 'autofill-options'); } cr.addSingletonGetter(AutofillOptions); AutofillOptions.prototype = { __proto__: OptionsPage.prototype, /** * The address list. * @type {DeletableItemList} * @private */ addressList_: null, /** * The credit card list. * @type {DeletableItemList} * @private */ creditCardList_: null, initializePage: function() { OptionsPage.prototype.initializePage.call(this); this.createAddressList_(); this.createCreditCardList_(); var self = this; $('autofill-add-address').onclick = function(event) { self.showAddAddressOverlay_(); }; $('autofill-add-creditcard').onclick = function(event) { self.showAddCreditCardOverlay_(); }; $('autofill-options-confirm').onclick = function(event) { OptionsPage.closeOverlay(); }; // TODO(jhawkins): What happens when Autofill is disabled whilst on the // Autofill options page? }, /** * Creates, decorates and initializes the address list. * @private */ createAddressList_: function() { this.addressList_ = $('address-list'); options.autofillOptions.AutofillAddressList.decorate(this.addressList_); this.addressList_.autoExpands = true; }, /** * Creates, decorates and initializes the credit card list. * @private */ createCreditCardList_: function() { this.creditCardList_ = $('creditcard-list'); options.autofillOptions.AutofillCreditCardList.decorate( this.creditCardList_); this.creditCardList_.autoExpands = true; }, /** * Shows the 'Add address' overlay, specifically by loading the * 'Edit address' overlay and modifying the overlay title. * @private */ showAddAddressOverlay_: function() { var title = loadTimeData.getString('addAddressTitle'); AutofillEditAddressOverlay.setTitle(title); OptionsPage.navigateToPage('autofillEditAddress'); }, /** * Shows the 'Add credit card' overlay, specifically by loading the * 'Edit credit card' overlay and modifying the overlay title. * @private */ showAddCreditCardOverlay_: function() { var title = loadTimeData.getString('addCreditCardTitle'); AutofillEditCreditCardOverlay.setTitle(title); OptionsPage.navigateToPage('autofillEditCreditCard'); }, /** * Updates the data model for the address list with the values from * |entries|. * @param {Array} entries The list of addresses. */ setAddressList_: function(entries) { this.addressList_.dataModel = new ArrayDataModel(entries); }, /** * Updates the data model for the credit card list with the values from * |entries|. * @param {Array} entries The list of credit cards. */ setCreditCardList_: function(entries) { this.creditCardList_.dataModel = new ArrayDataModel(entries); }, /** * Removes the Autofill address or credit card represented by |guid|. * @param {string} guid The GUID of the address to remove. * @private */ removeData_: function(guid) { chrome.send('removeData', [guid]); }, /** * Requests profile data for the address represented by |guid| from the * PersonalDataManager. Once the data is loaded, the AutofillOptionsHandler * calls showEditAddressOverlay(). * @param {string} guid The GUID of the address to edit. * @private */ loadAddressEditor_: function(guid) { chrome.send('loadAddressEditor', [guid]); }, /** * Requests profile data for the credit card represented by |guid| from the * PersonalDataManager. Once the data is loaded, the AutofillOptionsHandler * calls showEditCreditCardOverlay(). * @param {string} guid The GUID of the credit card to edit. * @private */ loadCreditCardEditor_: function(guid) { chrome.send('loadCreditCardEditor', [guid]); }, /** * Shows the 'Edit address' overlay, using the data in |address| to fill the * input fields. |address| is a list with one item, an associative array * that contains the address data. * @private */ showEditAddressOverlay_: function(address) { var title = loadTimeData.getString('editAddressTitle'); AutofillEditAddressOverlay.setTitle(title); AutofillEditAddressOverlay.loadAddress(address); OptionsPage.navigateToPage('autofillEditAddress'); }, /** * Shows the 'Edit credit card' overlay, using the data in |credit_card| to * fill the input fields. |address| is a list with one item, an associative * array that contains the credit card data. * @private */ showEditCreditCardOverlay_: function(creditCard) { var title = loadTimeData.getString('editCreditCardTitle'); AutofillEditCreditCardOverlay.setTitle(title); AutofillEditCreditCardOverlay.loadCreditCard(creditCard); OptionsPage.navigateToPage('autofillEditCreditCard'); }, }; AutofillOptions.setAddressList = function(entries) { AutofillOptions.getInstance().setAddressList_(entries); }; AutofillOptions.setCreditCardList = function(entries) { AutofillOptions.getInstance().setCreditCardList_(entries); }; AutofillOptions.removeData = function(guid) { AutofillOptions.getInstance().removeData_(guid); }; AutofillOptions.loadAddressEditor = function(guid) { AutofillOptions.getInstance().loadAddressEditor_(guid); }; AutofillOptions.loadCreditCardEditor = function(guid) { AutofillOptions.getInstance().loadCreditCardEditor_(guid); }; AutofillOptions.editAddress = function(address) { AutofillOptions.getInstance().showEditAddressOverlay_(address); }; AutofillOptions.editCreditCard = function(creditCard) { AutofillOptions.getInstance().showEditCreditCardOverlay_(creditCard); }; // Export return { AutofillOptions: AutofillOptions }; });