Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / resources / hotword / manager.js
1 // Copyright 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.
4
5 (function() {
6   'use strict';
7
8   /**
9    * @fileoverview This extension provides hotword triggering capabilites to
10    * Chrome.
11    *
12    * This extension contains all the JavaScript for loading and managing the
13    * hotword detector. The hotword detector and language model data will be
14    * provided by a shared module loaded from the web store.
15    *
16    * IMPORTANT! Whenever adding new events, the extension version number MUST be
17    * incremented.
18    */
19
20   // Hotwording state.
21   var stateManager = new hotword.StateManager();
22
23   // Detect Chrome startup and make sure we get a chance to run.
24   chrome.runtime.onStartup.addListener(function() {
25     stateManager.updateStatus();
26   });
27
28   // Detect when hotword settings have changed.
29   chrome.hotwordPrivate.onEnabledChanged.addListener(function() {
30     stateManager.updateStatus();
31   });
32
33   // Detect when the shared module containing the NaCL module and language model
34   // is installed.
35   chrome.management.onInstalled.addListener(function(info) {
36     if (info.id == hotword.constants.SHARED_MODULE_ID)
37       chrome.runtime.reload();
38   });
39
40   // Detect when a session has requested to be started and stopped.
41   chrome.hotwordPrivate.onHotwordSessionRequested.addListener(function() {
42     // TODO(amistry): This event should change state depending on whether the
43     // user has enabled always-on hotwording. But for now, always signal the
44     // start of a hotwording session. This allows this extension to work with
45     // the app launcher in the current state.
46     stateManager.startSession(
47         hotword.constants.SessionSource.LAUNCHER,
48         function() {
49           chrome.hotwordPrivate.setHotwordSessionState(true, function() {});
50         });
51   });
52
53   chrome.hotwordPrivate.onHotwordSessionStopped.addListener(function() {
54     stateManager.stopSession(hotword.constants.SessionSource.LAUNCHER);
55     chrome.hotwordPrivate.setHotwordSessionState(false, function() {});
56   });
57 }());