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

Unified Diff: chrome/browser/ui/webui/voicesearch_ui.cc

Issue 804193003: Display shared module platforms on about://voicesearch page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rename voicesearch_ui.* Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/voicesearch_ui.h ('k') | chrome/chrome_browser_ui.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/voicesearch_ui.cc
diff --git a/chrome/browser/ui/webui/voicesearch_ui.cc b/chrome/browser/ui/webui/voicesearch_ui.cc
deleted file mode 100644
index dc62edfaa120024a087583a03c6acdd8fc76f944..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/webui/voicesearch_ui.cc
+++ /dev/null
@@ -1,394 +0,0 @@
-// Copyright 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.
-
-#include "chrome/browser/ui/webui/voicesearch_ui.h"
-
-#include <string>
-
-#include "base/command_line.h"
-#include "base/metrics/field_trial.h"
-#include "base/path_service.h"
-#include "base/prefs/pref_service.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/plugins/plugin_prefs.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/search/hotword_service.h"
-#include "chrome/browser/search/hotword_service_factory.h"
-#include "chrome/browser/ui/app_list/start_page_service.h"
-#include "chrome/browser/ui/webui/version_handler.h"
-#include "chrome/common/chrome_content_client.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/chrome_version_info.h"
-#include "chrome/common/extensions/extension_constants.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/grit/chromium_strings.h"
-#include "chrome/grit/generated_resources.h"
-#include "chrome/grit/google_chrome_strings.h"
-#include "content/public/browser/plugin_service.h"
-#include "content/public/browser/url_data_source.h"
-#include "content/public/browser/web_ui.h"
-#include "content/public/browser/web_ui_data_source.h"
-#include "content/public/browser/web_ui_message_handler.h"
-#include "content/public/common/user_agent.h"
-#include "extensions/browser/extension_prefs.h"
-#include "extensions/browser/extension_system.h"
-#include "extensions/common/extension.h"
-#include "grit/browser_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "v8/include/v8.h"
-
-#if defined(OS_WIN)
-#include "base/win/windows_version.h"
-#endif
-
-using base::ASCIIToUTF16;
-using content::WebUIMessageHandler;
-
-namespace {
-
-content::WebUIDataSource* CreateVoiceSearchUiHtmlSource() {
- content::WebUIDataSource* html_source =
- content::WebUIDataSource::Create(chrome::kChromeUIVoiceSearchHost);
-
- html_source->AddLocalizedString("loadingMessage",
- IDS_VOICESEARCH_LOADING_MESSAGE);
- html_source->AddLocalizedString("voiceSearchLongTitle",
- IDS_VOICESEARCH_TITLE_MESSAGE);
-
- html_source->SetJsonPath("strings.js");
- html_source->AddResourcePath("about_voicesearch.js",
- IDR_ABOUT_VOICESEARCH_JS);
- html_source->SetDefaultResource(IDR_ABOUT_VOICESEARCH_HTML);
- return html_source;
-}
-
-// Helper functions for collecting a list of key-value pairs that will
-// be displayed.
-void AddPair16(base::ListValue* list,
- const base::string16& key,
- const base::string16& value) {
- scoped_ptr<base::DictionaryValue> results(new base::DictionaryValue());
- results->SetString("key", key);
- results->SetString("value", value);
- list->Append(results.release());
-}
-
-void AddPair(base::ListValue* list,
- const base::StringPiece& key,
- const base::StringPiece& value) {
- AddPair16(list, UTF8ToUTF16(key), UTF8ToUTF16(value));
-}
-
-// Generate an empty data-pair which acts as a line break.
-void AddLineBreak(base::ListValue* list) {
- AddPair(list, "", "");
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// VoiceSearchDomHandler
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// The handler for Javascript messages for the about:flags page.
-class VoiceSearchDomHandler : public WebUIMessageHandler {
- public:
- explicit VoiceSearchDomHandler(Profile* profile) : profile_(profile) {}
-
- ~VoiceSearchDomHandler() override {}
-
- // WebUIMessageHandler implementation.
- void RegisterMessages() override {
- web_ui()->RegisterMessageCallback(
- "requestVoiceSearchInfo",
- base::Bind(&VoiceSearchDomHandler::HandleRequestVoiceSearchInfo,
- base::Unretained(this)));
- }
-
- private:
- // Callback for the "requestVoiceSearchInfo" message. No arguments.
- void HandleRequestVoiceSearchInfo(const base::ListValue* args) {
- base::DictionaryValue voiceSearchInfo;
- PopulatePageInformation(&voiceSearchInfo);
- web_ui()->CallJavascriptFunction("returnVoiceSearchInfo",
- voiceSearchInfo);
- }
-
- // Fill in the data to be displayed on the page.
- void PopulatePageInformation(base::DictionaryValue* voiceSearchInfo) {
- // Store Key-Value pairs of about-information.
- scoped_ptr<base::ListValue> list(new base::ListValue());
-
- // Populate information.
- AddOperatingSystemInfo(list.get());
- AddAudioInfo(list.get());
- AddLanguageInfo(list.get());
- AddHotwordInfo(list.get());
-
- std::string extension_id = extension_misc::kHotwordExtensionId;
- HotwordService* hotword_service =
- HotwordServiceFactory::GetForProfile(profile_);
- if (hotword_service && hotword_service->IsExperimentalHotwordingEnabled())
- extension_id = extension_misc::kHotwordNewExtensionId;
- AddExtensionInfo(extension_id, "Extension", list.get());
-
- AddExtensionInfo(extension_misc::kHotwordSharedModuleId,
- "Shared Module",
- list.get());
- AddAppListInfo(list.get());
-
- // voiceSearchInfo will take ownership of list, and clean it up on
- // destruction.
- voiceSearchInfo->Set("voiceSearchInfo", list.release());
- }
-
- // Adds information regarding the system and chrome version info to list.
- void AddOperatingSystemInfo(base::ListValue* list) {
- // Obtain the Chrome version info.
- chrome::VersionInfo version_info;
- AddPair(list,
- l10n_util::GetStringUTF8(IDS_PRODUCT_NAME),
- version_info.Version() + " (" +
- chrome::VersionInfo::GetVersionStringModifier() + ")");
-
- // OS version information.
- std::string os_label = version_info.OSType();
-#if defined(OS_WIN)
- base::win::OSInfo* os = base::win::OSInfo::GetInstance();
- switch (os->version()) {
- case base::win::VERSION_XP:
- os_label += " XP";
- break;
- case base::win::VERSION_SERVER_2003:
- os_label += " Server 2003 or XP Pro 64 bit";
- break;
- case base::win::VERSION_VISTA:
- os_label += " Vista or Server 2008";
- break;
- case base::win::VERSION_WIN7:
- os_label += " 7 or Server 2008 R2";
- break;
- case base::win::VERSION_WIN8:
- os_label += " 8 or Server 2012";
- break;
- default:
- os_label += " UNKNOWN";
- break;
- }
- os_label += " SP" + base::IntToString(os->service_pack().major);
-
- if (os->service_pack().minor > 0)
- os_label += "." + base::IntToString(os->service_pack().minor);
-
- if (os->architecture() == base::win::OSInfo::X64_ARCHITECTURE)
- os_label += " 64 bit";
-#endif
- AddPair(list, l10n_util::GetStringUTF8(IDS_ABOUT_VERSION_OS), os_label);
-
- AddLineBreak(list);
- }
-
- // Adds information regarding audio to the list.
- void AddAudioInfo(base::ListValue* list) {
- // NaCl and its associated functions are not available on most mobile
- // platforms. ENABLE_EXTENSIONS covers those platforms and hey would not
- // allow Hotwording anyways since it is an extension.
- std::string nacl_enabled = "not available";
-#if defined(ENABLE_EXTENSIONS)
- nacl_enabled = "No";
- // Determine if NaCl is available.
- base::FilePath path;
- if (PathService::Get(chrome::FILE_NACL_PLUGIN, &path)) {
- content::WebPluginInfo info;
- PluginPrefs* plugin_prefs = PluginPrefs::GetForProfile(profile_).get();
- if (content::PluginService::GetInstance()->GetPluginInfoByPath(path,
- &info) &&
- plugin_prefs->IsPluginEnabled(info)) {
- nacl_enabled = "Yes";
- }
- }
-#endif
-
- AddPair(list, "NaCl Enabled", nacl_enabled);
-
- AddPair(list,
- "Microphone",
- HotwordServiceFactory::IsMicrophoneAvailable() ? "Yes" : "No");
-
- std::string audio_capture = "No";
- if (profile_->GetPrefs()->GetBoolean(prefs::kAudioCaptureAllowed))
- audio_capture = "Yes";
- AddPair(list, "Audio Capture Allowed", audio_capture);
-
- AddLineBreak(list);
- }
-
- // Adds information regarding languages to the list.
- void AddLanguageInfo(base::ListValue* list) {
- std::string locale =
-#if defined(OS_CHROMEOS)
- // On ChromeOS locale is per-profile.
- profile_->GetPrefs()->GetString(prefs::kApplicationLocale);
-#else
- g_browser_process->GetApplicationLocale();
-#endif
- AddPair(list, "Current Language", locale);
-
- AddPair(list,
- "Hotword Previous Language",
- profile_->GetPrefs()->GetString(prefs::kHotwordPreviousLanguage));
-
- AddLineBreak(list);
- }
-
- // Adds information specific to the hotword configuration to the list.
- void AddHotwordInfo(base::ListValue* list) {
- std::string search_enabled = "No";
- if (profile_->GetPrefs()->GetBoolean(prefs::kHotwordSearchEnabled))
- search_enabled = "Yes";
- AddPair(list, "Hotword Search Enabled", search_enabled);
-
- std::string always_on_search_enabled = "No";
- if (profile_->GetPrefs()->GetBoolean(prefs::kHotwordAlwaysOnSearchEnabled))
- always_on_search_enabled = "Yes";
- AddPair(list, "Always-on Hotword Search Enabled", always_on_search_enabled);
-
- std::string audio_logging_enabled = "No";
- HotwordService* hotword_service =
- HotwordServiceFactory::GetForProfile(profile_);
- if (hotword_service && hotword_service->IsOptedIntoAudioLogging())
- audio_logging_enabled = "Yes";
- AddPair(list, "Hotword Audio Logging Enabled", audio_logging_enabled);
-
- std::string group = base::FieldTrialList::FindFullName(
- hotword_internal::kHotwordFieldTrialName);
- AddPair(list, "Field trial", group);
-
- std::string new_hotwording_enabled = "No";
- if (hotword_service && hotword_service->IsExperimentalHotwordingEnabled())
- new_hotwording_enabled = "Yes";
- AddPair(list, "New Hotwording Enabled", new_hotwording_enabled);
-
- AddLineBreak(list);
- }
-
- // Adds information specific to an extension to the list.
- void AddExtensionInfo(const std::string& extension_id,
- const std::string& name_prefix,
- base::ListValue* list) {
- DCHECK(!name_prefix.empty());
- std::string version("undefined");
- std::string id("undefined");
- base::FilePath path;
-
- extensions::ExtensionSystem* extension_system =
- extensions::ExtensionSystem::Get(profile_);
- if (extension_system) {
- ExtensionService* extension_service =
- extension_system->extension_service();
- const extensions::Extension* extension =
- extension_service->GetExtensionById(extension_id, true);
- if (extension) {
- id = extension->id();
- version = extension->VersionString();
- path = extension->path();
- }
- }
- AddPair(list, name_prefix + " Id", id);
- AddPair(list, name_prefix + " Version", version);
- AddPair16(list,
- ASCIIToUTF16(name_prefix + " Path"),
- path.empty() ?
- ASCIIToUTF16("undefined") : path.LossyDisplayName());
-
- extensions::ExtensionPrefs* extension_prefs =
- extensions::ExtensionPrefs::Get(profile_);
- int pref_state = -1;
- extension_prefs->ReadPrefAsInteger(extension_id, "state", &pref_state);
- std::string state;
- switch (pref_state) {
- case extensions::Extension::DISABLED:
- state = "DISABLED";
- break;
- case extensions::Extension::ENABLED:
- state = "ENABLED";
- break;
- case extensions::Extension::EXTERNAL_EXTENSION_UNINSTALLED:
- state = "EXTERNAL_EXTENSION_UNINSTALLED";
- break;
- default:
- state = "undefined";
- }
-
- AddPair(list, name_prefix + " State", state);
-
- AddLineBreak(list);
- }
-
- // Adds information specific to voice search in the app launcher to the list.
- void AddAppListInfo(base::ListValue* list) {
-#if defined (ENABLE_APP_LIST)
- std::string state = "No Start Page Service";
- app_list::StartPageService* start_page_service =
- app_list::StartPageService::Get(profile_);
- if (start_page_service) {
- app_list::SpeechRecognitionState speech_state =
- start_page_service->state();
- switch (speech_state) {
- case app_list::SPEECH_RECOGNITION_OFF:
- state = "SPEECH_RECOGNITION_OFF";
- break;
- case app_list::SPEECH_RECOGNITION_READY:
- state = "SPEECH_RECOGNITION_READY";
- break;
- case app_list::SPEECH_RECOGNITION_HOTWORD_LISTENING:
- state = "SPEECH_RECOGNITION_HOTWORD_LISTENING";
- break;
- case app_list::SPEECH_RECOGNITION_RECOGNIZING:
- state = "SPEECH_RECOGNITION_RECOGNIZING";
- break;
- case app_list::SPEECH_RECOGNITION_IN_SPEECH:
- state = "SPEECH_RECOGNITION_IN_SPEECH";
- break;
- case app_list::SPEECH_RECOGNITION_STOPPING:
- state = "SPEECH_RECOGNITION_STOPPING";
- break;
- case app_list::SPEECH_RECOGNITION_NETWORK_ERROR:
- state = "SPEECH_RECOGNITION_NETWORK_ERROR";
- break;
- default:
- state = "undefined";
- }
- }
- AddPair(list, "Start Page State", state);
-#endif
- }
-
- Profile* profile_;
-
- DISALLOW_COPY_AND_ASSIGN(VoiceSearchDomHandler);
-};
-
-} // namespace
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// VoiceSearchUI
-//
-///////////////////////////////////////////////////////////////////////////////
-
-VoiceSearchUI::VoiceSearchUI(content::WebUI* web_ui)
- : content::WebUIController(web_ui) {
- Profile* profile = Profile::FromWebUI(web_ui);
- web_ui->AddMessageHandler(new VoiceSearchDomHandler(profile));
-
- // Set up the about:voicesearch source.
- content::WebUIDataSource::Add(profile, CreateVoiceSearchUiHtmlSource());
-}
-
-VoiceSearchUI::~VoiceSearchUI() {}
« no previous file with comments | « chrome/browser/ui/webui/voicesearch_ui.h ('k') | chrome/chrome_browser_ui.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698