| Index: chrome/browser/resources/options/settings_banner.js
|
| diff --git a/chrome/browser/resources/options/settings_banner.js b/chrome/browser/resources/options/settings_banner.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..11de0c10870f5af258658d8959e8b5f3194d42e7
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/options/settings_banner.js
|
| @@ -0,0 +1,86 @@
|
| +// Copyright 2014 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() {
|
| +
|
| + /**
|
| + * Base class for banners that appear at the top of the settings page.
|
| + */
|
| + function SettingsBannerBase() {}
|
| +
|
| + cr.addSingletonGetter(SettingsBannerBase);
|
| +
|
| + SettingsBannerBase.prototype = {
|
| + /**
|
| + * Whether or not the banner has already been dismissed.
|
| + *
|
| + * This is needed because of the surprising ordering of asynchronous
|
| + * JS<->native calls when the settings page is opened with specifying a
|
| + * given sub-page, e.g. chrome://settings/AutomaticSettingsReset.
|
| + *
|
| + * In such a case, AutomaticSettingsResetOverlay's didShowPage(), which
|
| + * calls our dismiss() method, would be called before the native Handlers'
|
| + * InitalizePage() methods have an effect in the JS, which includes calling
|
| + * our show() method. This would mean that the banner would be first
|
| + * dismissed, then shown. We want to prevent this.
|
| + *
|
| + * @type {boolean}
|
| + * @private
|
| + */
|
| + hadBeenDismissed_: false,
|
| +
|
| + /**
|
| + * Metric name to send when a show event occurs.
|
| + */
|
| + showMetricName_: '',
|
| +
|
| + /**
|
| + * Name of the native callback invoked when the banner is dismised.
|
| + */
|
| + dismissNativeCallbackName_: '',
|
| +
|
| + /**
|
| + * DOM element whose visibility is set when setVisibility_ is called.
|
| + */
|
| + setVisibilibyDomElement_: null,
|
| +
|
| + /**
|
| + * Called by the native code to show the banner if needed.
|
| + * @private
|
| + */
|
| + show_: function() {
|
| + if (!this.hadBeenDismissed_) {
|
| + chrome.send('metricsHandler:recordAction', [this.showMetricName_]);
|
| + this.setVisibility_(true);
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Called when the banner should be closed as a result of something taking
|
| + * place on the WebUI page, i.e. when its close button is pressed, or when
|
| + * the confirmation dialog for the profile settings reset feature is opened.
|
| + * @private
|
| + */
|
| + dismiss_: function() {
|
| + chrome.send(this.dismissNativeCallbackName_);
|
| + this.hadBeenDismissed_ = true;
|
| + this.setVisibility_(false);
|
| + },
|
| +
|
| + /**
|
| + * Sets whether or not the reset profile settings banner shall be visible.
|
| + * @param {boolean} show Whether or not to show the banner.
|
| + * @private
|
| + */
|
| + setVisibility_: function(show) {
|
| + this.setVisibilibyDomElement_.hidden = !show;
|
| + },
|
| +
|
| + };
|
| +
|
| + // Export
|
| + return {
|
| + SettingsBannerBase: SettingsBannerBase
|
| + };
|
| +});
|
|
|