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 12cr.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 121document.addEventListener('contextmenu', function(e) { e.preventDefault(); }); 122document.addEventListener('DOMContentLoaded', appList.startPage.initialize); 123