| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include "chrome/browser/chromeos/accessibility_util.h" | 5 #include "chrome/browser/chromeos/accessibility_util.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "chrome/browser/browser_process.h" | 9 #include "chrome/browser/browser_process.h" |
| 10 #include "chrome/browser/chromeos/dbus/dbus_thread_manager.h" | 10 #include "chrome/browser/chromeos/dbus/dbus_thread_manager.h" |
| 11 #include "chrome/browser/chromeos/dbus/speech_synthesizer_client.h" | 11 #include "chrome/browser/chromeos/dbus/speech_synthesizer_client.h" |
| 12 #include "chrome/browser/extensions/extension_accessibility_api.h" | 12 #include "chrome/browser/extensions/extension_accessibility_api.h" |
| 13 #include "chrome/browser/extensions/component_loader.h" |
| 13 #include "chrome/browser/extensions/extension_service.h" | 14 #include "chrome/browser/extensions/extension_service.h" |
| 14 #include "chrome/browser/extensions/file_reader.h" | 15 #include "chrome/browser/extensions/file_reader.h" |
| 15 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
| 16 #include "chrome/browser/profiles/profile_manager.h" | 17 #include "chrome/browser/profiles/profile_manager.h" |
| 17 #include "chrome/common/extensions/extension_messages.h" | 18 #include "chrome/common/extensions/extension_messages.h" |
| 18 #include "chrome/common/extensions/extension_resource.h" | 19 #include "chrome/common/extensions/extension_resource.h" |
| 19 #include "chrome/common/pref_names.h" | 20 #include "chrome/common/pref_names.h" |
| 20 #include "content/browser/renderer_host/render_view_host.h" | 21 #include "content/browser/renderer_host/render_view_host.h" |
| 21 #include "content/browser/tab_contents/tab_contents.h" | 22 #include "content/browser/tab_contents/tab_contents.h" |
| 22 #include "content/browser/webui/web_ui.h" | 23 #include "content/browser/webui/web_ui.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 false, true); | 104 false, true); |
| 104 | 105 |
| 105 // Load/Unload ChromeVox | 106 // Load/Unload ChromeVox |
| 106 Profile* profile = ProfileManager::GetDefaultProfile(); | 107 Profile* profile = ProfileManager::GetDefaultProfile(); |
| 107 ExtensionService* extension_service = | 108 ExtensionService* extension_service = |
| 108 profile->GetExtensionService(); | 109 profile->GetExtensionService(); |
| 109 std::string manifest = ResourceBundle::GetSharedInstance(). | 110 std::string manifest = ResourceBundle::GetSharedInstance(). |
| 110 GetRawDataResource(IDR_CHROMEVOX_MANIFEST).as_string(); | 111 GetRawDataResource(IDR_CHROMEVOX_MANIFEST).as_string(); |
| 111 FilePath path = FilePath(extension_misc::kAccessExtensionPath) | 112 FilePath path = FilePath(extension_misc::kAccessExtensionPath) |
| 112 .AppendASCII(extension_misc::kChromeVoxDirectoryName); | 113 .AppendASCII(extension_misc::kChromeVoxDirectoryName); |
| 113 ExtensionService::ComponentExtensionInfo info(manifest, path); | |
| 114 if (enabled) { // Load ChromeVox | 114 if (enabled) { // Load ChromeVox |
| 115 extension_service->register_component_extension(info); | |
| 116 const Extension* extension = | 115 const Extension* extension = |
| 117 extension_service->LoadComponentExtension(info); | 116 extension_service->component_loader()->Add(manifest, path); |
| 118 | 117 |
| 119 if (login_web_ui) { | 118 if (login_web_ui) { |
| 120 RenderViewHost* render_view_host = | 119 RenderViewHost* render_view_host = |
| 121 login_web_ui->tab_contents()->render_view_host(); | 120 login_web_ui->tab_contents()->render_view_host(); |
| 122 ContentScriptLoader* loader = new ContentScriptLoader( | 121 ContentScriptLoader* loader = new ContentScriptLoader( |
| 123 extension->id(), render_view_host); | 122 extension->id(), render_view_host); |
| 124 | 123 |
| 125 for (size_t i = 0; i < extension->content_scripts().size(); i++) { | 124 for (size_t i = 0; i < extension->content_scripts().size(); i++) { |
| 126 const UserScript& script = extension->content_scripts()[i]; | 125 const UserScript& script = extension->content_scripts()[i]; |
| 127 for (size_t j = 0; j < script.js_scripts().size(); ++j) { | 126 for (size_t j = 0; j < script.js_scripts().size(); ++j) { |
| 128 const UserScript::File &file = script.js_scripts()[j]; | 127 const UserScript::File &file = script.js_scripts()[j]; |
| 129 ExtensionResource resource = extension->GetResource( | 128 ExtensionResource resource = extension->GetResource( |
| 130 file.relative_path()); | 129 file.relative_path()); |
| 131 loader->AppendScript(resource); | 130 loader->AppendScript(resource); |
| 132 } | 131 } |
| 133 } | 132 } |
| 134 loader->Run(); // It cleans itself up when done. | 133 loader->Run(); // It cleans itself up when done. |
| 135 } | 134 } |
| 136 | 135 |
| 137 LOG(INFO) << "ChromeVox was Loaded."; | 136 LOG(INFO) << "ChromeVox was Loaded."; |
| 138 } else { // Unload ChromeVox | 137 } else { // Unload ChromeVox |
| 139 extension_service->UnloadComponentExtension(info); | 138 extension_service->component_loader()->Remove(manifest); |
| 140 extension_service->UnregisterComponentExtension(info); | |
| 141 LOG(INFO) << "ChromeVox was Unloaded."; | 139 LOG(INFO) << "ChromeVox was Unloaded."; |
| 142 } | 140 } |
| 143 } | 141 } |
| 144 | 142 |
| 145 void ToggleAccessibility(WebUI* login_web_ui) { | 143 void ToggleAccessibility(WebUI* login_web_ui) { |
| 146 bool accessibility_enabled = g_browser_process && | 144 bool accessibility_enabled = g_browser_process && |
| 147 g_browser_process->local_state()->GetBoolean( | 145 g_browser_process->local_state()->GetBoolean( |
| 148 prefs::kAccessibilityEnabled); | 146 prefs::kAccessibilityEnabled); |
| 149 accessibility_enabled = !accessibility_enabled; | 147 accessibility_enabled = !accessibility_enabled; |
| 150 EnableAccessibility(accessibility_enabled, login_web_ui); | 148 EnableAccessibility(accessibility_enabled, login_web_ui); |
| 151 }; | 149 }; |
| 152 | 150 |
| 153 void Speak(const char* speak_str, bool queue, bool interruptible) { | 151 void Speak(const char* speak_str, bool queue, bool interruptible) { |
| 154 if (queue || !interruptible) { | 152 if (queue || !interruptible) { |
| 155 std::string props = ""; | 153 std::string props = ""; |
| 156 props.append("enqueue="); | 154 props.append("enqueue="); |
| 157 props.append(queue ? "1;" : "0;"); | 155 props.append(queue ? "1;" : "0;"); |
| 158 props.append("interruptible="); | 156 props.append("interruptible="); |
| 159 props.append(interruptible ? "1;" : "0;"); | 157 props.append(interruptible ? "1;" : "0;"); |
| 160 chromeos::DBusThreadManager::Get()->GetSpeechSynthesizerClient()-> | 158 chromeos::DBusThreadManager::Get()->GetSpeechSynthesizerClient()-> |
| 161 SetSpeakProperties(props); | 159 SetSpeakProperties(props); |
| 162 } | 160 } |
| 163 chromeos::DBusThreadManager::Get()->GetSpeechSynthesizerClient()-> | 161 chromeos::DBusThreadManager::Get()->GetSpeechSynthesizerClient()-> |
| 164 Speak(speak_str); | 162 Speak(speak_str); |
| 165 } | 163 } |
| 166 | 164 |
| 167 | 165 |
| 168 } // namespace accessibility | 166 } // namespace accessibility |
| 169 } // namespace chromeos | 167 } // namespace chromeos |
| OLD | NEW |