Cast: Stop logging kVideoFrameSentToEncoder and rename a couple events.
[chromium-blink-merge.git] / chrome / browser / resources / hotword_helper / optin_client.js
blob8ac22de318643af0fc7a724ed1c0b1ab9d946855
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 'use strict';
7 /**
8  * @fileoverview This is the content script injected by the opt in helper.
9  *   It is injected into the newtab page and also google.com and notifies the
10  *   page to show an opt-in message for the user to enable the built-in hotword
11  *   extension.
12  */
16 /** @constructor */
17 var OptInClient = function() {};
20 /**
21  * Commands sent from this injected content scripts to the page.
22  * @enum {string}
23  */
24 OptInClient.CommandToPage = {
25   // Allow hotword opt-in message bubble to be displayed.
26   ALLOW_OPTIN_MESSAGE: 'chwom'
30 /**
31  * Commands sent from the page to this content script.
32  * @enum {string}
33  */
34 OptInClient.CommandFromPage = {
35   // User has explicitly clicked 'no'.
36   CLICKED_NO_OPTIN: 'hcno',
37   // User has opted in.
38   CLICKED_OPTIN: 'hco',
39   // Audio logging is opted in.
40   AUDIO_LOGGING_ON: 'alon',
41   // Audio logging is opted out.
42   AUDIO_LOGGING_OFF: 'aloff',
46 /**
47  * Used to determine if this content script has already been injected.
48  * @const {string}
49  * @private
50  */
51 OptInClient.EXISTS_ = 'chwoihe';
54 /**
55  * Handles the messages posted to the window, mainly listening for
56  * the optin and no optin clicks. Also listening for preference on
57  * audio logging.
58  * @param {!MessageEvent} messageEvent Message event from the window.
59  * @private
60  */
61 OptInClient.prototype.handleCommandFromPage_ = function(messageEvent) {
62   if (messageEvent.source === window && messageEvent.data.type) {
63     var command = messageEvent.data.type;
64     chrome.runtime.sendMessage({'type': command});
65   }
69 /**
70  * Sends a command to the page allowing it to display the hotword opt-in
71  * message. It is up to the page whether it is actually displayed.
72  * @private
73  */
74 OptInClient.prototype.notifyPageAllowOptIn_ = function() {
75   if (document.readyState === 'complete') {
76     window.postMessage(
77         {'type': OptInClient.CommandToPage.ALLOW_OPTIN_MESSAGE}, '*');
78   }
82 /**
83  * Initializes the content script.
84  */
85 OptInClient.prototype.initialize = function() {
86   if (OptInClient.EXISTS_ in window)
87     return;
88   window[OptInClient.EXISTS_] = true;
89   window.addEventListener(
90       'message', this.handleCommandFromPage_.bind(this), false);
92   if (document.readyState === 'complete')
93     this.notifyPageAllowOptIn_();
94   else
95     document.onreadystatechange = this.notifyPageAllowOptIn_;
99 new OptInClient().initialize();