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/cros/cros_library.h" |
| 11 #include "chrome/browser/chromeos/cros/speech_synthesis_library.h" |
10 #include "chrome/browser/extensions/extension_accessibility_api.h" | 12 #include "chrome/browser/extensions/extension_accessibility_api.h" |
11 #include "chrome/browser/extensions/extension_service.h" | 13 #include "chrome/browser/extensions/extension_service.h" |
12 #include "chrome/browser/extensions/file_reader.h" | 14 #include "chrome/browser/extensions/file_reader.h" |
13 #include "chrome/browser/profiles/profile.h" | 15 #include "chrome/browser/profiles/profile.h" |
14 #include "chrome/browser/profiles/profile_manager.h" | 16 #include "chrome/browser/profiles/profile_manager.h" |
15 #include "chrome/common/extensions/extension_messages.h" | 17 #include "chrome/common/extensions/extension_messages.h" |
16 #include "chrome/common/extensions/extension_resource.h" | 18 #include "chrome/common/extensions/extension_resource.h" |
17 #include "chrome/common/pref_names.h" | 19 #include "chrome/common/pref_names.h" |
18 #include "content/browser/renderer_host/render_view_host.h" | 20 #include "content/browser/renderer_host/render_view_host.h" |
19 #include "content/browser/tab_contents/tab_contents.h" | 21 #include "content/browser/tab_contents/tab_contents.h" |
20 #include "content/browser/webui/web_ui.h" | 22 #include "content/browser/webui/web_ui.h" |
21 #include "grit/browser_resources.h" | 23 #include "grit/browser_resources.h" |
| 24 #include "grit/generated_resources.h" |
| 25 #include "ui/base/l10n/l10n_util.h" |
22 #include "ui/base/resource/resource_bundle.h" | 26 #include "ui/base/resource/resource_bundle.h" |
23 | 27 |
24 namespace chromeos { | 28 namespace chromeos { |
25 namespace accessibility { | 29 namespace accessibility { |
26 | 30 |
27 // Helper class that directly loads an extension's content scripts into | 31 // Helper class that directly loads an extension's content scripts into |
28 // all of the frames corresponding to a given RenderViewHost. | 32 // all of the frames corresponding to a given RenderViewHost. |
29 class ContentScriptLoader { | 33 class ContentScriptLoader { |
30 public: | 34 public: |
31 // Initialize the ContentScriptLoader with the ID of the extension | 35 // Initialize the ContentScriptLoader with the ID of the extension |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 g_browser_process->local_state()->SetBoolean( | 94 g_browser_process->local_state()->SetBoolean( |
91 prefs::kAccessibilityEnabled, enabled); | 95 prefs::kAccessibilityEnabled, enabled); |
92 // Explicitly call SavePersistentPrefs instead of ScheduleSavePersistentPrefs | 96 // Explicitly call SavePersistentPrefs instead of ScheduleSavePersistentPrefs |
93 // so that this change gets written immediately, in case the user shuts | 97 // so that this change gets written immediately, in case the user shuts |
94 // down right now. TODO(dmazzoni) switch this back to | 98 // down right now. TODO(dmazzoni) switch this back to |
95 // ScheduleSavePersistentPrefs once http://crosbug.com/19491 is fixed. | 99 // ScheduleSavePersistentPrefs once http://crosbug.com/19491 is fixed. |
96 g_browser_process->local_state()->SavePersistentPrefs(); | 100 g_browser_process->local_state()->SavePersistentPrefs(); |
97 ExtensionAccessibilityEventRouter::GetInstance()-> | 101 ExtensionAccessibilityEventRouter::GetInstance()-> |
98 SetAccessibilityEnabled(enabled); | 102 SetAccessibilityEnabled(enabled); |
99 | 103 |
| 104 Speak(enabled ? |
| 105 l10n_util::GetStringUTF8(IDS_CHROMEOS_ACC_ACCESS_ENABLED).c_str() : |
| 106 l10n_util::GetStringUTF8(IDS_CHROMEOS_ACC_ACCESS_DISABLED).c_str(), |
| 107 false, true); |
| 108 |
100 // Load/Unload ChromeVox | 109 // Load/Unload ChromeVox |
101 Profile* profile = ProfileManager::GetDefaultProfile(); | 110 Profile* profile = ProfileManager::GetDefaultProfile(); |
102 ExtensionService* extension_service = | 111 ExtensionService* extension_service = |
103 profile->GetExtensionService(); | 112 profile->GetExtensionService(); |
104 std::string manifest = ResourceBundle::GetSharedInstance(). | 113 std::string manifest = ResourceBundle::GetSharedInstance(). |
105 GetRawDataResource(IDR_CHROMEVOX_MANIFEST).as_string(); | 114 GetRawDataResource(IDR_CHROMEVOX_MANIFEST).as_string(); |
106 FilePath path = FilePath(extension_misc::kAccessExtensionPath) | 115 FilePath path = FilePath(extension_misc::kAccessExtensionPath) |
107 .AppendASCII(extension_misc::kChromeVoxDirectoryName); | 116 .AppendASCII(extension_misc::kChromeVoxDirectoryName); |
108 ExtensionService::ComponentExtensionInfo info(manifest, path); | 117 ExtensionService::ComponentExtensionInfo info(manifest, path); |
109 if (enabled) { // Load ChromeVox | 118 if (enabled) { // Load ChromeVox |
(...skipping 28 matching lines...) Expand all Loading... |
138 } | 147 } |
139 | 148 |
140 void ToggleAccessibility(WebUI* login_web_ui) { | 149 void ToggleAccessibility(WebUI* login_web_ui) { |
141 bool accessibility_enabled = g_browser_process && | 150 bool accessibility_enabled = g_browser_process && |
142 g_browser_process->local_state()->GetBoolean( | 151 g_browser_process->local_state()->GetBoolean( |
143 prefs::kAccessibilityEnabled); | 152 prefs::kAccessibilityEnabled); |
144 accessibility_enabled = !accessibility_enabled; | 153 accessibility_enabled = !accessibility_enabled; |
145 EnableAccessibility(accessibility_enabled, login_web_ui); | 154 EnableAccessibility(accessibility_enabled, login_web_ui); |
146 }; | 155 }; |
147 | 156 |
| 157 void Speak(const char* speak_str, bool queue, bool interruptible) { |
| 158 if (chromeos::CrosLibrary::Get()->EnsureLoaded()) { |
| 159 if (queue || !interruptible) { |
| 160 std::string props = ""; |
| 161 props.append("enqueue="); |
| 162 props.append(queue ? "1;" : "0;"); |
| 163 props.append("interruptible="); |
| 164 props.append(interruptible ? "1;" : "0;"); |
| 165 chromeos::CrosLibrary::Get()->GetSpeechSynthesisLibrary()-> |
| 166 SetSpeakProperties(props.c_str()); |
| 167 } |
| 168 chromeos::CrosLibrary::Get()->GetSpeechSynthesisLibrary()-> |
| 169 Speak(speak_str); |
| 170 } |
| 171 } |
| 172 |
| 173 |
148 } // namespace accessibility | 174 } // namespace accessibility |
149 } // namespace chromeos | 175 } // namespace chromeos |
OLD | NEW |