| Index: remoting/webapp/butter_bar.js
|
| diff --git a/remoting/webapp/butter_bar.js b/remoting/webapp/butter_bar.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4ab86a8297262518a8a4281d97c8a578a90bb808
|
| --- /dev/null
|
| +++ b/remoting/webapp/butter_bar.js
|
| @@ -0,0 +1,136 @@
|
| +// 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.
|
| +
|
| +/**
|
| + * @fileoverview
|
| + * ButterBar class that is used to show the butter bar with various
|
| + * notifications.
|
| + */
|
| +
|
| +'use strict';
|
| +
|
| +/** @suppress {duplicate} */
|
| +var remoting = remoting || {};
|
| +
|
| +/**
|
| + * @constructor
|
| + */
|
| +remoting.ButterBar = function() {
|
| + this.storageKey_ = '';
|
| +
|
| + /** @type{remoting.ButterBar} */
|
| + var that = this;
|
| +
|
| + /** @param {Object} syncValues */
|
| + var onSyncDataLoaded = function(syncValues) {
|
| + chrome.storage.local.get(
|
| + remoting.kIT2MeVisitedStorageKey,
|
| + that.onStateLoaded_.bind(that, syncValues));
|
| + };
|
| +
|
| + chrome.storage.sync.get(
|
| + [remoting.ButterBar.kSurveyStorageKey_,
|
| + remoting.ButterBar.kHangoutsStorageKey_],
|
| + onSyncDataLoaded);
|
| +}
|
| +
|
| +/**
|
| + * Shows butter bar with the specified |message| and updates |storageKey| after
|
| + * the bar is dismissed.
|
| + *
|
| + * @param {string} messageId
|
| + * @param {string} substitutions
|
| + * @param {string} storageKey
|
| + * @private
|
| + */
|
| +remoting.ButterBar.prototype.show_ =
|
| + function(messageId, substitutions, storageKey) {
|
| + this.storageKey_ = storageKey;
|
| +
|
| + var messageElement = document.getElementById(remoting.ButterBar.kMessageId_);
|
| + l10n.localizeElementFromTag(messageElement, messageId, substitutions, true);
|
| + var acceptLink =
|
| + /** @type{Element} */ messageElement.getElementsByTagName('a')[0];
|
| + acceptLink.addEventListener(
|
| + 'click', this.dismiss.bind(this, true), false);
|
| +
|
| + document.getElementById(remoting.ButterBar.kDismissId_).addEventListener(
|
| + 'click', this.dismiss.bind(this, false), false);
|
| +
|
| + document.getElementById(remoting.ButterBar.kId_).hidden = false;
|
| +}
|
| +
|
| +/**
|
| + * @param {Object} syncValues
|
| + * @param {Object} localValues
|
| + * @private
|
| + */
|
| +remoting.ButterBar.prototype.onStateLoaded_ =
|
| + function(syncValues, localValues) {
|
| + /** @type {boolean} */
|
| + var surveyDismissed = !!syncValues[remoting.ButterBar.kSurveyStorageKey_];
|
| + /** @type {boolean} */
|
| + var hangoutsDismissed =
|
| + !!syncValues[remoting.ButterBar.kHangoutsStorageKey_];
|
| + /** @type {boolean} */
|
| + var it2meExpanded = !!localValues[remoting.kIT2MeVisitedStorageKey];
|
| +
|
| + var showSurvey = !surveyDismissed;
|
| + var showHangouts = it2meExpanded && !hangoutsDismissed;
|
| +
|
| + // If both messages can be shown choose only one randomly.
|
| + if (showSurvey && showHangouts) {
|
| + if (Math.random() > 0.5) {
|
| + showSurvey = false;
|
| + } else {
|
| + showHangouts = false;
|
| + }
|
| + }
|
| +
|
| + if (showSurvey) {
|
| + this.show_(/*i18n-content*/'SURVEY_INVITATION',
|
| + ['<a href="http://goo.gl/njH2q" target="_blank">', '</a>'],
|
| + remoting.ButterBar.kSurveyStorageKey_);
|
| + } else if (showHangouts) {
|
| + this.show_(/*i18n-content*/'HANGOUTS_INVITATION',
|
| + ['<a id="hangouts-accept" ' +
|
| + 'href="https://plus.google.com/hangouts/_?gid=818572447316">',
|
| + '</a>'],
|
| + remoting.ButterBar.kHangoutsStorageKey_);
|
| + }
|
| +};
|
| +
|
| +/** @const @private */
|
| +remoting.ButterBar.kId_ = 'butter-bar';
|
| +
|
| +/** @const @private */
|
| +remoting.ButterBar.kMessageId_ = 'butter-bar-message';
|
| +/** @const @private */
|
| +remoting.ButterBar.kDismissId_ = 'butter-bar-dismiss';
|
| +
|
| +/** @const @private */
|
| +remoting.ButterBar.kSurveyStorageKey_ = 'feedback-survey-dismissed';
|
| +/** @const @private */
|
| +remoting.ButterBar.kHangoutsStorageKey_ = 'hangouts-notice-dismissed';
|
| +
|
| +/**
|
| + * Hide the butter bar request and record some basic information about the
|
| + * current state of the world in synced storage. This may be useful in the
|
| + * future if we want to show the request again. At the moment, the data itself
|
| + * is ignored; only its presence or absence is important.
|
| + *
|
| + * @param {boolean} accepted True if the user clicked the "accept" link;
|
| + * false if they clicked the close icon.
|
| + */
|
| +remoting.ButterBar.prototype.dismiss = function(accepted) {
|
| + var value = {};
|
| + value[this.storageKey_] = {
|
| + optIn: accepted,
|
| + date: new Date(),
|
| + version: chrome.runtime.getManifest().version
|
| + };
|
| + chrome.storage.sync.set(value);
|
| +
|
| + document.getElementById(remoting.ButterBar.kId_).hidden = true;
|
| +};
|
|
|