Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Side by Side Diff: chrome/browser/resources/hotword/page_audio_manager.js

Issue 1047973003: Notify hotwording extension of microphone state change. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('hotword', function() { 5 cr.define('hotword', function() {
6 'use strict'; 6 'use strict';
7 7
8 /** 8 /**
9 * Class used to manage the interaction between hotwording and the 9 * Class used to manage the interaction between hotwording and the
10 * NTP/google.com. Injects a content script to interact with NTP/google.com 10 * NTP/google.com. Injects a content script to interact with NTP/google.com
(...skipping 17 matching lines...) Expand all
28 this.portMap_ = {}; 28 this.portMap_ = {};
29 29
30 /** 30 /**
31 * Chrome event listeners. Saved so that they can be de-registered when 31 * Chrome event listeners. Saved so that they can be de-registered when
32 * hotwording is disabled. 32 * hotwording is disabled.
33 */ 33 */
34 this.connectListener_ = this.handleConnect_.bind(this); 34 this.connectListener_ = this.handleConnect_.bind(this);
35 this.tabCreatedListener_ = this.handleCreatedTab_.bind(this); 35 this.tabCreatedListener_ = this.handleCreatedTab_.bind(this);
36 this.tabUpdatedListener_ = this.handleUpdatedTab_.bind(this); 36 this.tabUpdatedListener_ = this.handleUpdatedTab_.bind(this);
37 this.tabActivatedListener_ = this.handleActivatedTab_.bind(this); 37 this.tabActivatedListener_ = this.handleActivatedTab_.bind(this);
38 this.microphoneStateChangedListener_ =
39 this.handleMicrophoneStateChanged_.bind(this);
38 this.windowFocusChangedListener_ = this.handleChangedWindow_.bind(this); 40 this.windowFocusChangedListener_ = this.handleChangedWindow_.bind(this);
39 this.messageListener_ = this.handleMessageFromPage_.bind(this); 41 this.messageListener_ = this.handleMessageFromPage_.bind(this);
40 42
41 // Need to setup listeners on startup, otherwise events that caused the 43 // Need to setup listeners on startup, otherwise events that caused the
42 // event page to start up, will be lost. 44 // event page to start up, will be lost.
43 this.setupListeners_(); 45 this.setupListeners_();
44 46
45 this.stateManager_.onStatusChanged.addListener(function() { 47 this.stateManager_.onStatusChanged.addListener(function() {
46 this.updateListeners_(); 48 this.updateListeners_();
47 this.updateTabState_(); 49 this.updateTabState_();
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 232
231 /** 233 /**
232 * Handles a tab that has just become active. 234 * Handles a tab that has just become active.
233 * @param {{tabId: number}} info Information about the activated tab. 235 * @param {{tabId: number}} info Information about the activated tab.
234 * @private 236 * @private
235 */ 237 */
236 handleActivatedTab_: function(info) { 238 handleActivatedTab_: function(info) {
237 this.updateTabState_(); 239 this.updateTabState_();
238 }, 240 },
239 241
242 /**
243 * Handles the microphone state changing.
244 * @param {boolean} enabled Whether the microphone is now enabled.
245 * @private
246 */
247 handleMicrophoneStateChanged_: function(enabled) {
248 if (enabled) {
249 this.updateTabState_();
250 return;
251 }
252
253 this.stopHotwording_();
254 },
240 255
241 /** 256 /**
242 * Handles a change in Chrome windows. 257 * Handles a change in Chrome windows.
243 * Note: this does not always trigger in Linux. 258 * Note: this does not always trigger in Linux.
244 * @param {number} windowId Id of newly focused window. 259 * @param {number} windowId Id of newly focused window.
245 * @private 260 * @private
246 */ 261 */
247 handleChangedWindow_: function(windowId) { 262 handleChangedWindow_: function(windowId) {
248 this.updateTabState_(); 263 this.updateTabState_();
249 }, 264 },
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 setupListeners_: function() { 500 setupListeners_: function() {
486 if (chrome.runtime.onConnect.hasListener(this.connectListener_)) 501 if (chrome.runtime.onConnect.hasListener(this.connectListener_))
487 return; 502 return;
488 503
489 chrome.runtime.onConnect.addListener(this.connectListener_); 504 chrome.runtime.onConnect.addListener(this.connectListener_);
490 chrome.tabs.onCreated.addListener(this.tabCreatedListener_); 505 chrome.tabs.onCreated.addListener(this.tabCreatedListener_);
491 chrome.tabs.onUpdated.addListener(this.tabUpdatedListener_); 506 chrome.tabs.onUpdated.addListener(this.tabUpdatedListener_);
492 chrome.tabs.onActivated.addListener(this.tabActivatedListener_); 507 chrome.tabs.onActivated.addListener(this.tabActivatedListener_);
493 chrome.windows.onFocusChanged.addListener( 508 chrome.windows.onFocusChanged.addListener(
494 this.windowFocusChangedListener_); 509 this.windowFocusChangedListener_);
510 chrome.hotwordPrivate.onMicrophoneStateChanged.addListener(
511 this.microphoneStateChangedListener_);
495 if (chrome.runtime.onMessage.hasListener(this.messageListener_)) 512 if (chrome.runtime.onMessage.hasListener(this.messageListener_))
496 return; 513 return;
497 chrome.runtime.onMessageExternal.addListener( 514 chrome.runtime.onMessageExternal.addListener(
498 this.messageListener_); 515 this.messageListener_);
499 }, 516 },
500 517
501 /** 518 /**
502 * Remove event listeners. 519 * Remove event listeners.
503 * @private 520 * @private
504 */ 521 */
505 removeListeners_: function() { 522 removeListeners_: function() {
506 chrome.runtime.onConnect.removeListener(this.connectListener_); 523 chrome.runtime.onConnect.removeListener(this.connectListener_);
507 chrome.tabs.onCreated.removeListener(this.tabCreatedListener_); 524 chrome.tabs.onCreated.removeListener(this.tabCreatedListener_);
508 chrome.tabs.onUpdated.removeListener(this.tabUpdatedListener_); 525 chrome.tabs.onUpdated.removeListener(this.tabUpdatedListener_);
509 chrome.tabs.onActivated.removeListener(this.tabActivatedListener_); 526 chrome.tabs.onActivated.removeListener(this.tabActivatedListener_);
510 chrome.windows.onFocusChanged.removeListener( 527 chrome.windows.onFocusChanged.removeListener(
511 this.windowFocusChangedListener_); 528 this.windowFocusChangedListener_);
529 chrome.hotwordPrivate.onMicrophoneStateChanged.removeListener(
530 this.microphoneStateChangedListener_);
512 // Don't remove the Message listener, as we want them listening all 531 // Don't remove the Message listener, as we want them listening all
513 // the time, 532 // the time,
514 }, 533 },
515 534
516 /** 535 /**
517 * Update event listeners based on the current hotwording state. 536 * Update event listeners based on the current hotwording state.
518 * @private 537 * @private
519 */ 538 */
520 updateListeners_: function() { 539 updateListeners_: function() {
521 if (this.stateManager_.isSometimesOnEnabled()) { 540 if (this.stateManager_.isSometimesOnEnabled()) {
522 this.setupListeners_(); 541 this.setupListeners_();
523 } else { 542 } else {
524 this.removeListeners_(); 543 this.removeListeners_();
525 this.stopHotwording_(); 544 this.stopHotwording_();
526 this.disconnectAllClients_(); 545 this.disconnectAllClients_();
527 } 546 }
528 } 547 }
529 }; 548 };
530 549
531 return { 550 return {
532 PageAudioManager: PageAudioManager 551 PageAudioManager: PageAudioManager
533 }; 552 };
534 }); 553 });
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/hotword_private/hotword_private_api.cc ('k') | chrome/browser/search/hotword_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698