Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / resources / app_list / start_page.js
1 // Copyright 2013 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 /**
6  * @fileoverview App launcher start page implementation.
7  */
8
9 <include src="recommended_apps.js"/>
10 <include src="speech_manager.js"/>
11
12 cr.define('appList.startPage', function() {
13   'use strict';
14
15   var speechManager = null;
16
17   /**
18    * Creates a StartPage object.
19    * @constructor
20    * @extends {HTMLDivElement}
21    */
22   var StartPage = cr.ui.define('div');
23
24   StartPage.prototype = {
25     __proto__: HTMLDivElement.prototype,
26
27     /**
28      * Instance of the recommended apps card.
29      * @type {appsList.startPage.RecommendedApps}
30      * @private
31      */
32     recommendedApps_: null,
33
34     /** @override */
35     decorate: function() {
36       this.recommendedApps_ = new appList.startPage.RecommendedApps();
37       this.appendChild(this.recommendedApps_);
38     },
39
40     /**
41      * Sets the recommended apps.
42      * @param {!Array.<!{appId: string,
43      *                   iconUrl: string,
44      *                   textTitle: string}>} apps An array of app info
45      *     dictionary to be displayed in the AppItemView.
46      */
47     setRecommendedApps: function(apps) {
48       this.recommendedApps_.setApps(apps);
49     }
50   };
51
52   /**
53    * Initialize the page.
54    */
55   function initialize() {
56     StartPage.decorate($('start-page'));
57     speechManager = new speech.SpeechManager();
58     chrome.send('initialize');
59   }
60
61   /**
62    * Sets the recommended apps.
63    * @param {Array.<Object>} apps An array of app info dictionary.
64    */
65   function setRecommendedApps(apps) {
66     $('start-page').setRecommendedApps(apps);
67   }
68
69   /**
70    * Invoked when the hotword plugin availability is changed.
71    *
72    * @param {boolean} enabled Whether the plugin is enabled or not.
73    */
74   function setHotwordEnabled(enabled) {
75     speechManager.setHotwordEnabled(enabled);
76   }
77
78   /**
79    * Invoked when the app-list bubble is shown.
80    */
81   function onAppListShown() {
82     speechManager.onShown();
83   }
84
85   /**
86    * Invoked when the app-list bubble is hidden.
87    */
88   function onAppListHidden() {
89     speechManager.onHidden();
90   }
91
92   /**
93    * Invoked when the user explicitly wants to toggle the speech recognition
94    * state.
95    */
96   function toggleSpeechRecognition() {
97     speechManager.toggleSpeechRecognition();
98   }
99
100   return {
101     initialize: initialize,
102     setRecommendedApps: setRecommendedApps,
103     setHotwordEnabled: setHotwordEnabled,
104     onAppListShown: onAppListShown,
105     onAppListHidden: onAppListHidden,
106     toggleSpeechRecognition: toggleSpeechRecognition
107   };
108 });
109
110 document.addEventListener('contextmenu', function(e) { e.preventDefault(); });
111 document.addEventListener('DOMContentLoaded', appList.startPage.initialize);