blob: 55091cf4efbf38a0b3ba8fffd77ee0634768d11f [file] [log] [blame]
// Copyright 2013 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 Page = cr.ui.pageManager.Page;
var AutomaticSettingsResetBanner = options.AutomaticSettingsResetBanner;
/**
* ResetProfileSettingsOverlay class
*
* Encapsulated handling of the 'Reset Profile Settings' and the 'Triggered
* Reset Profile Settings' overlay pages. See triggered_profile_resetter.h for
* when the triggered variant will be used.
*
* @constructor
* @param {boolean} isTriggered Whether the overlay is the triggered variant.
* @extends {cr.ui.pageManager.Page}
*/
function ResetProfileSettingsOverlay(isTriggered) {
this.isTriggered_ = isTriggered;
Page.call(
this,
isTriggered ? 'triggeredResetProfileSettings' : 'resetProfileSettings',
loadTimeData.getString(isTriggered ?
'triggeredResetProfileSettingsOverlay' :
'resetProfileSettingsOverlayTabTitle'),
'reset-profile-settings-overlay');
}
ResetProfileSettingsOverlay.prototype = {
// Inherit ResetProfileSettingsOverlay from Page.
__proto__: Page.prototype,
/**
* Indicates whether the overlay is a triggered reset overlay.
* @type {boolean}
* @private
*/
isTriggered_: false,
/** @override */
initializePage: function() {
Page.prototype.initializePage.call(this);
if (!ResetProfileSettingsOverlay.listenersAdded_) {
$('reset-profile-settings-dismiss').onclick = function(e) {
ResetProfileSettingsOverlay.dismiss();
};
$('reset-profile-settings-commit').onclick = function(e) {
ResetProfileSettingsOverlay.setResettingState(true);
chrome.send('performResetProfileSettings',
[$('send-settings').checked,
ResetProfileSettingsOverlay.resetRequestOrigin_]);
};
$('expand-feedback').onclick = function(e) {
var feedbackTemplate = $('feedback-template');
feedbackTemplate.hidden = !feedbackTemplate.hidden;
e.preventDefault();
};
ResetProfileSettingsOverlay.listenersAdded_ = true;
}
},
/**
* @override
* @suppress {checkTypes}
* TODO(vitalyp): remove the suppression. See the explanation in
* chrome/browser/resources/options/automatic_settings_reset_banner.js.
*/
didShowPage: function() {
$('reset-profile-settings-title').textContent =
loadTimeData.getString(this.isTriggered_ ?
'triggeredResetProfileSettingsOverlay' :
'resetProfileSettingsOverlay');
$('reset-profile-settings-explanation').textContent =
loadTimeData.getString(this.isTriggered_ ?
'triggeredResetProfileSettingsExplanation' :
'resetProfileSettingsExplanation');
// Set ResetProfileSettingsOverlay.resetRequestOrigin_ to indicate where
// the reset request came from.
if (this.isTriggered_) {
ResetProfileSettingsOverlay.resetRequestOrigin_ = 'triggeredreset';
} else {
// For the non-triggered reset overlay, a '#userclick' hash indicates
// that the reset request came from the user clicking on the reset
// settings button and is set by the browser_options page. A '#cct' hash
// indicates that the reset request came from the CCT by launching
// Chrome with the startup URL
// chrome://settings/resetProfileSettings#cct.
var hash = this.hash.slice(1).toLowerCase();
ResetProfileSettingsOverlay.resetRequestOrigin_ =
(hash === 'cct' || hash === 'userclick') ? hash : '';
this.setHash('');
}
chrome.send('onShowResetProfileDialog');
},
/** @override */
didClosePage: function() {
chrome.send('onHideResetProfileDialog');
},
};
/** @private {boolean} */
ResetProfileSettingsOverlay.listenersAdded_ = false;
/** @private {string} */
ResetProfileSettingsOverlay.resetRequestOrigin_ = '';
/**
* Enables/disables UI elements after/while Chrome is performing a reset.
* @param {boolean} state If true, UI elements are disabled.
*/
ResetProfileSettingsOverlay.setResettingState = function(state) {
$('reset-profile-settings-throbber').style.visibility =
state ? 'visible' : 'hidden';
$('reset-profile-settings-dismiss').disabled = state;
$('reset-profile-settings-commit').disabled = state;
};
/**
* Chrome callback to notify ResetProfileSettingsOverlay that the reset
* operation has terminated.
* @suppress {checkTypes}
* TODO(vitalyp): remove the suppression. See the explanation in
* chrome/browser/resources/options/automatic_settings_reset_banner.js.
*/
ResetProfileSettingsOverlay.doneResetting = function() {
AutomaticSettingsResetBanner.dismiss();
ResetProfileSettingsOverlay.dismiss();
};
/**
* Dismisses the overlay.
*/
ResetProfileSettingsOverlay.dismiss = function() {
PageManager.closeOverlay();
ResetProfileSettingsOverlay.setResettingState(false);
};
ResetProfileSettingsOverlay.setFeedbackInfo = function(feedbackListData) {
var input = new JsEvalContext(feedbackListData);
var output = $('feedback-template');
jstProcess(input, output);
};
// Export
return {
ResetProfileSettingsOverlay: ResetProfileSettingsOverlay
};
});