OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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_manager.h" | 5 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 int render_view_id_; | 206 int render_view_id_; |
207 std::queue<extensions::ExtensionResource> resources_; | 207 std::queue<extensions::ExtensionResource> resources_; |
208 }; | 208 }; |
209 | 209 |
210 void InjectChromeVoxContentScript( | 210 void InjectChromeVoxContentScript( |
211 ExtensionService* extension_service, | 211 ExtensionService* extension_service, |
212 int render_process_id, | 212 int render_process_id, |
213 int render_view_id, | 213 int render_view_id, |
214 const base::Closure& done_cb); | 214 const base::Closure& done_cb); |
215 | 215 |
| 216 void AddChromeVoxExtensionToComponentLoader( |
| 217 extensions::ComponentLoader* component_loader, |
| 218 base::Closure done_cb) { |
| 219 component_loader->AddComponentFromDir( |
| 220 GetChromeVoxPath(), extension_misc::kChromeVoxExtensionId, done_cb); |
| 221 } |
| 222 |
216 void LoadChromeVoxExtension( | 223 void LoadChromeVoxExtension( |
217 Profile* profile, | 224 Profile* profile, |
218 RenderViewHost* render_view_host, | 225 RenderViewHost* render_view_host, |
219 base::Closure done_cb) { | 226 base::Closure done_cb) { |
220 ExtensionService* extension_service = | 227 ExtensionService* extension_service = |
221 extensions::ExtensionSystem::Get(profile)->extension_service(); | 228 extensions::ExtensionSystem::Get(profile)->extension_service(); |
222 if (render_view_host) { | 229 if (render_view_host) { |
223 // Wrap the passed in callback to inject the content script. | 230 // Wrap the passed in callback to inject the content script. |
224 done_cb = base::Bind( | 231 done_cb = base::Bind( |
225 &InjectChromeVoxContentScript, | 232 &InjectChromeVoxContentScript, |
226 extension_service, | 233 extension_service, |
227 render_view_host->GetProcess()->GetID(), | 234 render_view_host->GetProcess()->GetID(), |
228 render_view_host->GetRoutingID(), | 235 render_view_host->GetRoutingID(), |
229 done_cb); | 236 done_cb); |
230 } | 237 } |
231 extension_service->component_loader()->AddChromeVoxExtension(done_cb); | 238 |
| 239 AddChromeVoxExtensionToComponentLoader(extension_service->component_loader(), |
| 240 done_cb); |
232 } | 241 } |
233 | 242 |
234 void InjectChromeVoxContentScript( | 243 void InjectChromeVoxContentScript( |
235 ExtensionService* extension_service, | 244 ExtensionService* extension_service, |
236 int render_process_id, | 245 int render_process_id, |
237 int render_view_id, | 246 int render_view_id, |
238 const base::Closure& done_cb) { | 247 const base::Closure& done_cb) { |
239 // Make sure to always run |done_cb|. ChromeVox was loaded even if we end up | 248 // Make sure to always run |done_cb|. ChromeVox was loaded even if we end up |
240 // not injecting into this particular render view. | 249 // not injecting into this particular render view. |
241 base::ScopedClosureRunner done_runner(done_cb); | 250 base::ScopedClosureRunner done_runner(done_cb); |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
607 spoken_feedback_notification_ = ash::A11Y_NOTIFICATION_NONE; | 616 spoken_feedback_notification_ = ash::A11Y_NOTIFICATION_NONE; |
608 } | 617 } |
609 | 618 |
610 void AccessibilityManager::UpdateSpokenFeedbackFromPref() { | 619 void AccessibilityManager::UpdateSpokenFeedbackFromPref() { |
611 if (!profile_) | 620 if (!profile_) |
612 return; | 621 return; |
613 | 622 |
614 const bool enabled = profile_->GetPrefs()->GetBoolean( | 623 const bool enabled = profile_->GetPrefs()->GetBoolean( |
615 prefs::kAccessibilitySpokenFeedbackEnabled); | 624 prefs::kAccessibilitySpokenFeedbackEnabled); |
616 | 625 |
| 626 // If ChromeVox was already enabled, but not for this profile, |
| 627 // add it to this profile. |
| 628 auto* extension_service = |
| 629 extensions::ExtensionSystem::Get(profile_)->extension_service(); |
| 630 auto* component_loader = extension_service->component_loader(); |
| 631 bool is_already_loaded = |
| 632 component_loader->Exists(extension_misc::kChromeVoxExtensionId); |
| 633 if (spoken_feedback_enabled_ && enabled && !is_already_loaded) |
| 634 AddChromeVoxExtensionToComponentLoader(component_loader, base::Closure()); |
| 635 |
617 if (spoken_feedback_enabled_ == enabled) | 636 if (spoken_feedback_enabled_ == enabled) |
618 return; | 637 return; |
619 | 638 |
620 spoken_feedback_enabled_ = enabled; | 639 spoken_feedback_enabled_ = enabled; |
621 | 640 |
622 AccessibilityStatusEventDetails details( | 641 AccessibilityStatusEventDetails details( |
623 ACCESSIBILITY_TOGGLE_SPOKEN_FEEDBACK, | 642 ACCESSIBILITY_TOGGLE_SPOKEN_FEEDBACK, |
624 enabled, | 643 enabled, |
625 spoken_feedback_notification_); | 644 spoken_feedback_notification_); |
626 | 645 |
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1543 content::BrowserContext* context) { | 1562 content::BrowserContext* context) { |
1544 keyboard_listener_extension_id_ = id; | 1563 keyboard_listener_extension_id_ = id; |
1545 | 1564 |
1546 extensions::ExtensionRegistry* registry = | 1565 extensions::ExtensionRegistry* registry = |
1547 extensions::ExtensionRegistry::Get(context); | 1566 extensions::ExtensionRegistry::Get(context); |
1548 if (!extension_registry_observer_.IsObserving(registry) && !id.empty()) | 1567 if (!extension_registry_observer_.IsObserving(registry) && !id.empty()) |
1549 extension_registry_observer_.Add(registry); | 1568 extension_registry_observer_.Add(registry); |
1550 } | 1569 } |
1551 | 1570 |
1552 } // namespace chromeos | 1571 } // namespace chromeos |
OLD | NEW |