| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/accessibility_util.h" | 5 #include "chrome/browser/chromeos/accessibility/accessibility_util.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "chrome/browser/accessibility/accessibility_extension_api.h" | 10 #include "chrome/browser/accessibility/accessibility_extension_api.h" |
| 11 #include "chrome/browser/browser_process.h" | 11 #include "chrome/browser/browser_process.h" |
| 12 #include "chrome/browser/extensions/component_loader.h" | 12 #include "chrome/browser/extensions/component_loader.h" |
| 13 #include "chrome/browser/extensions/extension_service.h" | 13 #include "chrome/browser/extensions/extension_service.h" |
| 14 #include "chrome/browser/extensions/file_reader.h" | 14 #include "chrome/browser/extensions/file_reader.h" |
| 15 #include "chrome/browser/profiles/profile.h" | 15 #include "chrome/browser/profiles/profile.h" |
| 16 #include "chrome/browser/profiles/profile_manager.h" | 16 #include "chrome/browser/profiles/profile_manager.h" |
| 17 #include "chrome/browser/speech/extension_api/tts_extension_api_platform.h" | 17 #include "chrome/browser/speech/extension_api/tts_extension_api_platform.h" |
| 18 #include "chrome/common/extensions/extension_messages.h" | 18 #include "chrome/common/extensions/extension_messages.h" |
| 19 #include "chrome/common/extensions/extension_resource.h" | 19 #include "chrome/common/extensions/extension_resource.h" |
| 20 #include "chrome/common/extensions/user_script.h" |
| 20 #include "chrome/common/pref_names.h" | 21 #include "chrome/common/pref_names.h" |
| 21 #include "content/public/browser/render_view_host.h" | 22 #include "content/public/browser/render_view_host.h" |
| 22 #include "content/public/browser/web_contents.h" | 23 #include "content/public/browser/web_contents.h" |
| 23 #include "content/public/browser/web_ui.h" | 24 #include "content/public/browser/web_ui.h" |
| 24 #include "grit/browser_resources.h" | 25 #include "grit/browser_resources.h" |
| 25 #include "grit/generated_resources.h" | 26 #include "grit/generated_resources.h" |
| 26 #include "ui/base/l10n/l10n_util.h" | 27 #include "ui/base/l10n/l10n_util.h" |
| 27 #include "ui/base/resource/resource_bundle.h" | 28 #include "ui/base/resource/resource_bundle.h" |
| 28 | 29 |
| 29 using content::RenderViewHost; | 30 using content::RenderViewHost; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 } | 65 } |
| 65 | 66 |
| 66 private: | 67 private: |
| 67 void OnFileLoaded(bool success, const std::string& data) { | 68 void OnFileLoaded(bool success, const std::string& data) { |
| 68 if (success) { | 69 if (success) { |
| 69 ExtensionMsg_ExecuteCode_Params params; | 70 ExtensionMsg_ExecuteCode_Params params; |
| 70 params.request_id = 0; | 71 params.request_id = 0; |
| 71 params.extension_id = extension_id_; | 72 params.extension_id = extension_id_; |
| 72 params.is_javascript = true; | 73 params.is_javascript = true; |
| 73 params.code = data; | 74 params.code = data; |
| 75 params.run_at = UserScript::DOCUMENT_IDLE; |
| 74 params.all_frames = true; | 76 params.all_frames = true; |
| 75 params.in_main_world = false; | 77 params.in_main_world = false; |
| 76 render_view_host_->Send(new ExtensionMsg_ExecuteCode( | 78 render_view_host_->Send(new ExtensionMsg_ExecuteCode( |
| 77 render_view_host_->GetRoutingID(), params)); | 79 render_view_host_->GetRoutingID(), params)); |
| 78 } | 80 } |
| 79 Run(); | 81 Run(); |
| 80 } | 82 } |
| 81 | 83 |
| 82 std::string extension_id_; | 84 std::string extension_id_; |
| 83 RenderViewHost* render_view_host_; | 85 RenderViewHost* render_view_host_; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 103 Speak(l10n_util::GetStringUTF8( | 105 Speak(l10n_util::GetStringUTF8( |
| 104 enabled ? IDS_CHROMEOS_ACC_SPOKEN_FEEDBACK_ENABLED : | 106 enabled ? IDS_CHROMEOS_ACC_SPOKEN_FEEDBACK_ENABLED : |
| 105 IDS_CHROMEOS_ACC_SPOKEN_FEEDBACK_DISABLED).c_str()); | 107 IDS_CHROMEOS_ACC_SPOKEN_FEEDBACK_DISABLED).c_str()); |
| 106 | 108 |
| 107 // Load/Unload ChromeVox | 109 // Load/Unload ChromeVox |
| 108 Profile* profile = ProfileManager::GetDefaultProfile(); | 110 Profile* profile = ProfileManager::GetDefaultProfile(); |
| 109 ExtensionService* extension_service = | 111 ExtensionService* extension_service = |
| 110 profile->GetExtensionService(); | 112 profile->GetExtensionService(); |
| 111 FilePath path = FilePath(extension_misc::kAccessExtensionPath) | 113 FilePath path = FilePath(extension_misc::kAccessExtensionPath) |
| 112 .AppendASCII(extension_misc::kChromeVoxDirectoryName); | 114 .AppendASCII(extension_misc::kChromeVoxDirectoryName); |
| 113 if (enabled) { // Load ChromeVox | 115 if (enabled) { // Load ChromeVox |
| 114 const Extension* extension = | 116 const Extension* extension = |
| 115 extension_service->component_loader()->Add(IDR_CHROMEVOX_MANIFEST, | 117 extension_service->component_loader()->Add(IDR_CHROMEVOX_MANIFEST, |
| 116 path); | 118 path); |
| 117 | 119 |
| 118 if (login_web_ui) { | 120 if (login_web_ui) { |
| 119 RenderViewHost* render_view_host = | 121 RenderViewHost* render_view_host = |
| 120 login_web_ui->GetWebContents()->GetRenderViewHost(); | 122 login_web_ui->GetWebContents()->GetRenderViewHost(); |
| 121 // Set a flag to tell ChromeVox that it's just been enabled, | 123 // Set a flag to tell ChromeVox that it's just been enabled, |
| 122 // so that it won't interrupt our speech feedback enabled message. | 124 // so that it won't interrupt our speech feedback enabled message. |
| 123 ExtensionMsg_ExecuteCode_Params params; | 125 ExtensionMsg_ExecuteCode_Params params; |
| 124 params.request_id = 0; | 126 params.request_id = 0; |
| 125 params.extension_id = extension->id(); | 127 params.extension_id = extension->id(); |
| 126 params.is_javascript = true; | 128 params.is_javascript = true; |
| 127 params.code = "window.INJECTED_AFTER_LOAD = true;"; | 129 params.code = "window.INJECTED_AFTER_LOAD = true;"; |
| 130 params.run_at = UserScript::DOCUMENT_IDLE; |
| 128 params.all_frames = true; | 131 params.all_frames = true; |
| 129 params.in_main_world = false; | 132 params.in_main_world = false; |
| 130 render_view_host->Send(new ExtensionMsg_ExecuteCode( | 133 render_view_host->Send(new ExtensionMsg_ExecuteCode( |
| 131 render_view_host->GetRoutingID(), params)); | 134 render_view_host->GetRoutingID(), params)); |
| 132 | 135 |
| 133 // Inject ChromeVox' content scripts. | 136 // Inject ChromeVox' content scripts. |
| 134 ContentScriptLoader* loader = new ContentScriptLoader( | 137 ContentScriptLoader* loader = new ContentScriptLoader( |
| 135 extension->id(), render_view_host); | 138 extension->id(), render_view_host); |
| 136 | 139 |
| 137 for (size_t i = 0; i < extension->content_scripts().size(); i++) { | 140 for (size_t i = 0; i < extension->content_scripts().size(); i++) { |
| 138 const UserScript& script = extension->content_scripts()[i]; | 141 const UserScript& script = extension->content_scripts()[i]; |
| 139 for (size_t j = 0; j < script.js_scripts().size(); ++j) { | 142 for (size_t j = 0; j < script.js_scripts().size(); ++j) { |
| 140 const UserScript::File &file = script.js_scripts()[j]; | 143 const UserScript::File &file = script.js_scripts()[j]; |
| 141 ExtensionResource resource = extension->GetResource( | 144 ExtensionResource resource = extension->GetResource( |
| 142 file.relative_path()); | 145 file.relative_path()); |
| 143 loader->AppendScript(resource); | 146 loader->AppendScript(resource); |
| 144 } | 147 } |
| 145 } | 148 } |
| 146 loader->Run(); // It cleans itself up when done. | 149 loader->Run(); // It cleans itself up when done. |
| 147 } | 150 } |
| 148 | 151 |
| 149 DLOG(INFO) << "ChromeVox was Loaded."; | 152 DLOG(INFO) << "ChromeVox was Loaded."; |
| 150 } else { // Unload ChromeVox | 153 } else { // Unload ChromeVox |
| 151 extension_service->component_loader()->Remove(path); | 154 extension_service->component_loader()->Remove(path); |
| 152 DLOG(INFO) << "ChromeVox was Unloaded."; | 155 DLOG(INFO) << "ChromeVox was Unloaded."; |
| 153 } | 156 } |
| 154 } | 157 } |
| 155 | 158 |
| 156 void EnableHighContrast(bool enabled) { | 159 void EnableHighContrast(bool enabled) { |
| 157 PrefService* pref_service = g_browser_process->local_state(); | 160 PrefService* pref_service = g_browser_process->local_state(); |
| 158 pref_service->SetBoolean(prefs::kHighContrastEnabled, enabled); | 161 pref_service->SetBoolean(prefs::kHighContrastEnabled, enabled); |
| 159 pref_service->CommitPendingWrite(); | 162 pref_service->CommitPendingWrite(); |
| 160 } | 163 } |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 return spoken_feedback_enabled; | 201 return spoken_feedback_enabled; |
| 199 } | 202 } |
| 200 | 203 |
| 201 void MaybeSpeak(const std::string& utterance) { | 204 void MaybeSpeak(const std::string& utterance) { |
| 202 if (IsSpokenFeedbackEnabled()) | 205 if (IsSpokenFeedbackEnabled()) |
| 203 Speak(utterance); | 206 Speak(utterance); |
| 204 } | 207 } |
| 205 | 208 |
| 206 } // namespace accessibility | 209 } // namespace accessibility |
| 207 } // namespace chromeos | 210 } // namespace chromeos |
| OLD | NEW |