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

Unified Diff: chrome/browser/accessibility/accessibility_extension_api.cc

Issue 42743003: Adjust ChromeVox (spoken feedback) strings and make it possible for announcemen (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixing a few style tidbits. Created 7 years, 2 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
Index: chrome/browser/accessibility/accessibility_extension_api.cc
diff --git a/chrome/browser/accessibility/accessibility_extension_api.cc b/chrome/browser/accessibility/accessibility_extension_api.cc
index 9726a5de069dc9b1080f2ec9d58cdd694a963a62..bec0514d4c0c196bc916b05942a85f98400050bb 100644
--- a/chrome/browser/accessibility/accessibility_extension_api.cc
+++ b/chrome/browser/accessibility/accessibility_extension_api.cc
@@ -10,13 +10,17 @@
#include "chrome/browser/accessibility/accessibility_extension_api_constants.h"
#include "chrome/browser/extensions/api/tabs/tabs_constants.h"
#include "chrome/browser/extensions/event_router.h"
+#include "chrome/browser/extensions/extension_host.h"
+#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_system.h"
#include "chrome/browser/extensions/extension_tab_util.h"
+#include "chrome/browser/extensions/lazy_background_task_queue.h"
#include "chrome/browser/infobars/confirm_infobar_delegate.h"
#include "chrome/browser/infobars/infobar_delegate.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/api/experimental_accessibility.h"
+#include "chrome/common/extensions/background_info.h"
#include "content/public/browser/browser_accessibility_state.h"
#include "extensions/common/error_utils.h"
@@ -164,6 +168,66 @@ void ExtensionAccessibilityEventRouter::OnMenuClosed(
args.Pass());
}
+void ExtensionAccessibilityEventRouter::
+ OnSpokenFeedbackEnabled(Profile* profile, bool make_announcements) {
+ scoped_ptr<base::ListValue> event_args(new base::ListValue());
+ event_args->Append(base::Value::CreateBooleanValue(make_announcements));
+ ExtensionAccessibilityEventRouter::DispatchEventToChromeVox(profile,
+ experimental_accessibility::OnSpokenFeedbackEnabled::kEventName,
+ event_args.Pass(),
+ true,
+ NULL);
+}
+
+void ExtensionAccessibilityEventRouter::
+ OnSpokenFeedbackDisabled(Profile* profile) {
+ scoped_ptr<base::ListValue> event_args(new base::ListValue());
+ ExtensionAccessibilityEventRouter::DispatchEventToChromeVox(profile,
+ experimental_accessibility::OnSpokenFeedbackDisabled::kEventName,
+ event_args.Pass(),
+ true,
+ NULL);
+}
+
+// Static.
+void ExtensionAccessibilityEventRouter::DispatchEventToChromeVox(
+ Profile* profile,
+ const char* event_name,
+ scoped_ptr<base::ListValue> event_args,
+ bool first_call,
+ extensions::ExtensionHost* host) {
+ if (!first_call && !host)
+ return;
+
+ extensions::ExtensionSystem* system =
+ extensions::ExtensionSystem::Get(profile);
+ if (!system)
+ return;
+
+ const char* extension_id = extension_misc::kChromeVoxExtensionId;
+ // If this is a persistent background page, we want to wait for it to load
+ // (it might not be ready, since this is startup). But only enqueue once.
+ // If it fails to load the first time, don't bother trying again.
+ const extensions::Extension* extension =
+ system->extension_service()->extensions()->GetByID(extension_id);
+ if (extension &&
+ extensions::BackgroundInfo::HasPersistentBackgroundPage(extension) &&
+ first_call &&
+ system->lazy_background_task_queue()->
+ ShouldEnqueueTask(profile, extension)) {
+ system->lazy_background_task_queue()->AddPendingTask(
dmazzoni 2013/10/25 23:09:16 nit: maybe stick system->lazy_background_task_queu
+ profile, extension_id,
+ base::Bind(&DispatchEventToChromeVox,
+ profile, event_name, base::Passed(&event_args), false));
+ return;
+ }
+
+ scoped_ptr<extensions::Event> event(new extensions::Event(event_name,
+ event_args.Pass()));
+ system->event_router()->DispatchEventToExtension(
+ extension_id, event.Pass());
+}
+
void ExtensionAccessibilityEventRouter::DispatchEvent(
Profile* profile,
const char* event_name,

Powered by Google App Engine
This is Rietveld 408576698