14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)/** 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @fileoverview App launcher start page implementation. 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci<include src="recommended_apps.js"> 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci<include src="speech_manager.js"> 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)cr.define('appList.startPage', function() { 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 'use strict'; 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) var speechManager = null; 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Creates a StartPage object. 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @constructor 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @extends {HTMLDivElement} 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) var StartPage = cr.ui.define('div'); 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) StartPage.prototype = { 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) __proto__: HTMLDivElement.prototype, 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Instance of the recommended apps card. 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @type {appsList.startPage.RecommendedApps} 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @private 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) recommendedApps_: null, 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** @override */ 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) decorate: function() { 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) this.recommendedApps_ = new appList.startPage.RecommendedApps(); 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) this.appendChild(this.recommendedApps_); 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) }, 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Sets the recommended apps. 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @param {!Array.<!{appId: string, 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * iconUrl: string, 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * textTitle: string}>} apps An array of app info 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * dictionary to be displayed in the AppItemView. 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) setRecommendedApps: function(apps) { 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) this.recommendedApps_.setApps(apps); 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) }; 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Initialize the page. 544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) function initialize() { 564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) StartPage.decorate($('start-page')); 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) speechManager = new speech.SpeechManager(); 584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) chrome.send('initialize'); 594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) /** 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * Sets the recommended apps. 634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @param {Array.<Object>} apps An array of app info dictionary. 644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) */ 654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) function setRecommendedApps(apps) { 664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) $('start-page').setRecommendedApps(apps); 674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) /** 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Invoked when the hotword plugin availability is changed. 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param {boolean} enabled Whether the plugin is enabled or not. 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) function setHotwordEnabled(enabled) { 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) speechManager.setHotwordEnabled(enabled); 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 79c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * Sets the architecture of NaCl module to be loaded for hotword. 80c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * @param {string} arch The architecture. 81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) */ 82c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch function setNaclArch(arch) { 83c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch speechManager.setNaclArch(arch); 84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) /** 87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Invoked when the app-list bubble is shown. 88c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * 89c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * @param {boolean} hotwordEnabled Whether the hotword is enabled or not. 90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 91c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch function onAppListShown(hotwordEnabled) { 92c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch speechManager.onShown(hotwordEnabled); 93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 94f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 95f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) /** 96f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Invoked when the app-list bubble is hidden. 97f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 98f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) function onAppListHidden() { 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) speechManager.onHidden(); 100f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 102f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) /** 103f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Invoked when the user explicitly wants to toggle the speech recognition 104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * state. 105f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) function toggleSpeechRecognition() { 107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) speechManager.toggleSpeechRecognition(); 108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 109f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return { 1114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) initialize: initialize, 112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) setRecommendedApps: setRecommendedApps, 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) setHotwordEnabled: setHotwordEnabled, 114c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch setNaclArch: setNaclArch, 115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) onAppListShown: onAppListShown, 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) onAppListHidden: onAppListHidden, 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) toggleSpeechRecognition: toggleSpeechRecognition 1184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) }; 1194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}); 1204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)document.addEventListener('contextmenu', function(e) { e.preventDefault(); }); 1224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)document.addEventListener('DOMContentLoaded', appList.startPage.initialize); 123