Index: chrome/browser/resources/hotword_helper/manager.js |
diff --git a/chrome/browser/resources/hotword_helper/manager.js b/chrome/browser/resources/hotword_helper/manager.js |
deleted file mode 100644 |
index 2810d638d1622bd5168a200f26470dd9505a47d6..0000000000000000000000000000000000000000 |
--- a/chrome/browser/resources/hotword_helper/manager.js |
+++ /dev/null |
@@ -1,232 +0,0 @@ |
-// Copyright (c) 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-'use strict'; |
- |
-/** |
- * @fileoverview This extension manages communications between Chrome, |
- * Google.com pages and the Chrome Hotword extension. |
- * |
- * This helper extension is required due to the depoyment plan for Chrome M34: |
- * |
- * - The hotword extension will be distributed as an externally loaded |
- * component extension. |
- * - Settings for enabling and disabling the hotword extension has moved to |
- * Chrome settings. |
- * - NewTab page is served via chrome://newtab/ |
- * |
- */ |
- |
- |
- |
-/** @constructor */ |
-var OptInManager = function() {}; |
- |
- |
-/** |
- * @const {string} |
- * @private |
- */ |
-OptInManager.HOTWORD_EXTENSION_ID_ = 'bepbmhgboaologfdajaanbcjmnhjmhfn'; |
- |
- |
-/** |
- * Test extension ID. |
- * @const {string} |
- * @private |
- */ |
-OptInManager.TEST_EXTENSION_ID_ = 'cpfhkdbjfdgdebcjlifoldbijinjfifp'; |
- |
- |
-/** |
- * Commands sent from the page to this content script. |
- * @enum {string} |
- */ |
-OptInManager.CommandFromPage = { |
- // User has explicitly clicked 'no'. |
- CLICKED_NO_OPTIN: 'hcno', |
- // User has opted in. |
- CLICKED_OPTIN: 'hco', |
- // Audio logging is opted in. |
- AUDIO_LOGGING_ON: 'alon', |
- // Audio logging is opted out. |
- AUDIO_LOGGING_OFF: 'aloff', |
- // User visited an eligible page. |
- PAGE_WAKEUP: 'wu' |
-}; |
- |
- |
-/** |
- * @param {Tab} tab Tab to inject. |
- * @param {function(HotwordStatus)} sendResponse Callback function to respond |
- * to sender. |
- * @param {HotwordStatus} hotwordStatus Status of the hotword extension. |
- * @private |
- */ |
-OptInManager.prototype.injectTab_ = function( |
- tab, sendResponse, hotwordStatus) { |
- var response = {'doNotShowOptinMessage': true}; |
- |
- if (!tab.incognito && hotwordStatus.available) { |
- if (!hotwordStatus.enabledSet) |
- response = hotwordStatus; |
- else if (hotwordStatus.enabled) |
- chrome.tabs.executeScript(tab.id, {'file': 'audio_client.js'}); |
- } |
- |
- try { |
- sendResponse(response); |
- } catch (err) { |
- // Suppress the exception thrown by sendResponse() when the page doesn't |
- // specify a response callback in the call to chrome.runtime.sendMessage(). |
- // Unfortunately, there doesn't appear to be a way to detect one-way |
- // messages without explicitly saying in the message itself. This message |
- // is defined as a constant in extensions/renderer/messaging_bindings.cc |
- if (err.message == 'Attempting to use a disconnected port object') |
- return; |
- throw err; |
- } |
-}; |
- |
- |
-/** |
- * Handles messages from the helper content script. |
- * @param {*} request Message from the sender. |
- * @param {MessageSender} sender Information about the sender. |
- * @param {function(HotwordStatus)} sendResponse Callback function to respond |
- * to sender. |
- * @return {boolean} Whether to maintain the port open to call sendResponse. |
- * @private |
- */ |
-OptInManager.prototype.handleMessage_ = function( |
- request, sender, sendResponse) { |
- switch (request.type) { |
- case OptInManager.CommandFromPage.PAGE_WAKEUP: |
- if (((sender.tab && this.isEligibleUrl(sender.tab.url)) || |
- sender.id == OptInManager.HOTWORD_EXTENSION_ID_ || |
- sender.id == OptInManager.TEST_EXTENSION_ID_) && |
- chrome.hotwordPrivate && chrome.hotwordPrivate.getStatus) { |
- chrome.hotwordPrivate.getStatus( |
- this.injectTab_.bind( |
- this, |
- request.tab || sender.tab || {incognito: true}, |
- sendResponse)); |
- return true; |
- } |
- break; |
- case OptInManager.CommandFromPage.CLICKED_OPTIN: |
- if (chrome.hotwordPrivate && chrome.hotwordPrivate.setEnabled && |
- chrome.hotwordPrivate.getStatus) { |
- chrome.hotwordPrivate.setEnabled(true); |
- chrome.hotwordPrivate.getStatus( |
- this.injectTab_.bind(this, sender.tab, sendResponse)); |
- return true; |
- } |
- break; |
- // User has explicitly clicked 'no thanks'. |
- case OptInManager.CommandFromPage.CLICKED_NO_OPTIN: |
- if (chrome.hotwordPrivate && chrome.hotwordPrivate.setEnabled) { |
- chrome.hotwordPrivate.setEnabled(false); |
- } |
- break; |
- // Information regarding the audio logging preference was sent. |
- case OptInManager.CommandFromPage.AUDIO_LOGGING_ON: |
- if (chrome.hotwordPrivate && |
- chrome.hotwordPrivate.setAudioLoggingEnabled) { |
- chrome.hotwordPrivate.setAudioLoggingEnabled(true); |
- } |
- break; |
- case OptInManager.CommandFromPage.AUDIO_LOGGING_OFF: |
- if (chrome.hotwordPrivate && |
- chrome.hotwordPrivate.setAudioLoggingEnabled) { |
- chrome.hotwordPrivate.setAudioLoggingEnabled(false); |
- } |
- break; |
- default: |
- break; |
- } |
- return false; |
-}; |
- |
-/** |
- * Helper function to test URLs as being valid for running the |
- * hotwording extension. It's used by isEligibleUrl to make that |
- * function clearer. |
- * @param {string} url URL to check. |
- * @param {string} base Base URL to compare against.. |
- * @return {boolean} True if url is an eligible hotword URL. |
- */ |
-OptInManager.prototype.checkEligibleUrl = function(url, base) { |
- if (!url) |
- return false; |
- |
- if (url === base || |
- url === base + '/' || |
- url.indexOf(base + '/_/chrome/newtab?') === 0 || // Appcache NTP. |
- url.indexOf(base + '/?') === 0 || |
- url.indexOf(base + '/#') === 0 || |
- url.indexOf(base + '/webhp') === 0 || |
- url.indexOf(base + '/search') === 0) { |
- return true; |
- } |
- return false; |
- |
-}; |
- |
-/** |
- * Determines if a URL is eligible for hotwording. For now, the |
- * valid pages are the Google HP and SERP (this will include the NTP). |
- * @param {string} url URL to check. |
- * @return {boolean} True if url is an eligible hotword URL. |
- */ |
-OptInManager.prototype.isEligibleUrl = function(url) { |
- if (!url) |
- return false; |
- |
- // More URLs will be added in the future so leaving this as an array. |
- var baseUrls = [ |
- 'chrome://newtab' |
- ]; |
- var baseGoogleUrls = [ |
- 'https://www.google.', |
- 'https://encrypted.google.' |
- ]; |
- var tlds = [ |
- 'com', |
- 'co.uk', |
- 'de', |
- 'fr', |
- 'ru' |
- ]; |
- |
- // Check URLs which do not have locale-based TLDs first. |
- if (this.checkEligibleUrl(url, baseUrls[0])) |
- return true; |
- |
- // Check URLs with each type of local-based TLD. |
- for (var i = 0; i < baseGoogleUrls.length; i++) { |
- for (var j = 0; j < tlds.length; j++) { |
- var base = baseGoogleUrls[i] + tlds[j]; |
- if (this.checkEligibleUrl(url, base)) |
- return true; |
- } |
- } |
- return false; |
-}; |
- |
- |
-/** |
- * Initializes the extension. |
- */ |
-OptInManager.prototype.initialize = function() { |
- // TODO(rlp): Possibly remove the next line. It's proably not used, but |
- // leaving for now to be safe. We should remove it once all messsage |
- // relaying is removed form the content scripts. |
- chrome.runtime.onMessage.addListener(this.handleMessage_.bind(this)); |
- chrome.runtime.onMessageExternal.addListener( |
- this.handleMessage_.bind(this)); |
-}; |
- |
- |
-new OptInManager().initialize(); |