999373f3ecd0f228ab94b20e0eb93768f4df55a7
[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    * Sets the architecture of NaCl module to be loaded for hotword.
80    * @param {string} arch The architecture.
81    */
82   function setNaclArch(arch) {
83     speechManager.setNaclArch(arch);
84   }
85
86   /**
87    * Invoked when the app-list bubble is shown.
88    *
89    * @param {boolean} hotwordEnabled Whether the hotword is enabled or not.
90    */
91   function onAppListShown(hotwordEnabled) {
92     speechManager.onShown(hotwordEnabled);
93   }
94
95   /**
96    * Invoked when the app-list bubble is hidden.
97    */
98   function onAppListHidden() {
99     speechManager.onHidden();
100   }
101
102   /**
103    * Invoked when the user explicitly wants to toggle the speech recognition
104    * state.
105    */
106   function toggleSpeechRecognition() {
107     speechManager.toggleSpeechRecognition();
108   }
109
110   return {
111     initialize: initialize,
112     setRecommendedApps: setRecommendedApps,
113     setHotwordEnabled: setHotwordEnabled,
114     setNaclArch: setNaclArch,
115     onAppListShown: onAppListShown,
116     onAppListHidden: onAppListHidden,
117     toggleSpeechRecognition: toggleSpeechRecognition
118   };
119 });
120
121 document.addEventListener('contextmenu', function(e) { e.preventDefault(); });
122 document.addEventListener('DOMContentLoaded', appList.startPage.initialize);