Move Webstore URL concepts to //extensions and out
[chromium-blink-merge.git] / chrome / browser / resources / hotword / manager.js
blobdfe4c7ef860388f86c02b934f2a01e6a28ff7ff0
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.
5 (function() {
6 'use strict';
8 /**
9 * @fileoverview This extension provides hotword triggering capabilites to
10 * Chrome.
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.
16 * IMPORTANT! Whenever adding new events, the extension version number MUST be
17 * incremented.
20 // Hotwording state.
21 var stateManager = new hotword.StateManager();
23 // Detect Chrome startup and make sure we get a chance to run.
24 chrome.runtime.onStartup.addListener(function() {
25 stateManager.updateStatus();
26 });
28 // Detect when hotword settings have changed.
29 chrome.hotwordPrivate.onEnabledChanged.addListener(function() {
30 stateManager.updateStatus();
31 });
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 });
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 });
53 chrome.hotwordPrivate.onHotwordSessionStopped.addListener(function() {
54 stateManager.stopSession(hotword.constants.SessionSource.LAUNCHER);
55 chrome.hotwordPrivate.setHotwordSessionState(false, function() {});
56 });
57 }());