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

Side by Side Diff: chrome/browser/accessibility/accessibility_extension_api.cc

Issue 22922003: Remove notifications from Accessibility API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nits and rebase Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/accessibility/accessibility_extension_api.h" 5 #include "chrome/browser/accessibility/accessibility_extension_api.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/accessibility/accessibility_extension_api_constants.h" 10 #include "chrome/browser/accessibility/accessibility_extension_api_constants.h"
11 #include "chrome/browser/chrome_notification_types.h"
12 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" 11 #include "chrome/browser/extensions/api/tabs/tabs_constants.h"
13 #include "chrome/browser/extensions/event_router.h" 12 #include "chrome/browser/extensions/event_router.h"
14 #include "chrome/browser/extensions/extension_system.h" 13 #include "chrome/browser/extensions/extension_system.h"
15 #include "chrome/browser/extensions/extension_tab_util.h" 14 #include "chrome/browser/extensions/extension_tab_util.h"
16 #include "chrome/browser/infobars/confirm_infobar_delegate.h" 15 #include "chrome/browser/infobars/confirm_infobar_delegate.h"
17 #include "chrome/browser/infobars/infobar_delegate.h" 16 #include "chrome/browser/infobars/infobar_delegate.h"
18 #include "chrome/browser/infobars/infobar_service.h" 17 #include "chrome/browser/infobars/infobar_service.h"
19 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
20 #include "content/public/browser/browser_accessibility_state.h" 19 #include "content/public/browser/browser_accessibility_state.h"
21 #include "content/public/browser/notification_service.h"
22 #include "extensions/common/error_utils.h" 20 #include "extensions/common/error_utils.h"
23 21
24 namespace keys = extension_accessibility_api_constants; 22 namespace keys = extension_accessibility_api_constants;
25 23
26 // Returns the AccessibilityControlInfo serialized into a JSON string, 24 // Returns the AccessibilityControlInfo serialized into a JSON string,
27 // consisting of an array of a single object of type AccessibilityObject, 25 // consisting of an array of a single object of type AccessibilityObject,
28 // as defined in the accessibility extension api's json schema. 26 // as defined in the accessibility extension api's json schema.
29 scoped_ptr<ListValue> ControlInfoToEventArguments( 27 scoped_ptr<ListValue> ControlInfoToEventArguments(
30 const AccessibilityEventInfo* info) { 28 const AccessibilityEventInfo* info) {
31 DictionaryValue* dict = new DictionaryValue(); 29 DictionaryValue* dict = new DictionaryValue();
32 info->SerializeToDict(dict); 30 info->SerializeToDict(dict);
33 31
34 scoped_ptr<ListValue> args(new ListValue()); 32 scoped_ptr<ListValue> args(new ListValue());
35 args->Append(dict); 33 args->Append(dict);
36 return args.Pass(); 34 return args.Pass();
37 } 35 }
38 36
39 ExtensionAccessibilityEventRouter* 37 ExtensionAccessibilityEventRouter*
40 ExtensionAccessibilityEventRouter::GetInstance() { 38 ExtensionAccessibilityEventRouter::GetInstance() {
41 return Singleton<ExtensionAccessibilityEventRouter>::get(); 39 return Singleton<ExtensionAccessibilityEventRouter>::get();
42 } 40 }
43 41
44 ExtensionAccessibilityEventRouter::ExtensionAccessibilityEventRouter() 42 ExtensionAccessibilityEventRouter::ExtensionAccessibilityEventRouter()
45 : enabled_(false) { 43 : enabled_(false) {
46 registrar_.Add(this,
47 chrome::NOTIFICATION_ACCESSIBILITY_WINDOW_OPENED,
48 content::NotificationService::AllSources());
49 registrar_.Add(this,
50 chrome::NOTIFICATION_ACCESSIBILITY_WINDOW_CLOSED,
51 content::NotificationService::AllSources());
52 registrar_.Add(this,
53 chrome::NOTIFICATION_ACCESSIBILITY_CONTROL_FOCUSED,
54 content::NotificationService::AllSources());
55 registrar_.Add(this,
56 chrome::NOTIFICATION_ACCESSIBILITY_CONTROL_ACTION,
57 content::NotificationService::AllSources());
58 registrar_.Add(this,
59 chrome::NOTIFICATION_ACCESSIBILITY_TEXT_CHANGED,
60 content::NotificationService::AllSources());
61 registrar_.Add(this,
62 chrome::NOTIFICATION_ACCESSIBILITY_MENU_OPENED,
63 content::NotificationService::AllSources());
64 registrar_.Add(this,
65 chrome::NOTIFICATION_ACCESSIBILITY_MENU_CLOSED,
66 content::NotificationService::AllSources());
67 } 44 }
68 45
69 ExtensionAccessibilityEventRouter::~ExtensionAccessibilityEventRouter() { 46 ExtensionAccessibilityEventRouter::~ExtensionAccessibilityEventRouter() {
70 } 47 control_event_callback_.Reset();
71
72 void ExtensionAccessibilityEventRouter::Observe(
73 int type,
74 const content::NotificationSource& source,
75 const content::NotificationDetails& details) {
76 switch (type) {
77 case chrome::NOTIFICATION_ACCESSIBILITY_WINDOW_OPENED:
78 OnWindowOpened(
79 content::Details<const AccessibilityWindowInfo>(details).ptr());
80 break;
81 case chrome::NOTIFICATION_ACCESSIBILITY_WINDOW_CLOSED:
82 OnWindowClosed(
83 content::Details<const AccessibilityWindowInfo>(details).ptr());
84 break;
85 case chrome::NOTIFICATION_ACCESSIBILITY_CONTROL_FOCUSED:
86 OnControlFocused(
87 content::Details<const AccessibilityControlInfo>(details).ptr());
88 break;
89 case chrome::NOTIFICATION_ACCESSIBILITY_CONTROL_ACTION:
90 OnControlAction(
91 content::Details<const AccessibilityControlInfo>(details).ptr());
92 break;
93 case chrome::NOTIFICATION_ACCESSIBILITY_TEXT_CHANGED:
94 OnTextChanged(
95 content::Details<const AccessibilityControlInfo>(details).ptr());
96 break;
97 case chrome::NOTIFICATION_ACCESSIBILITY_MENU_OPENED:
98 OnMenuOpened(
99 content::Details<const AccessibilityMenuInfo>(details).ptr());
100 break;
101 case chrome::NOTIFICATION_ACCESSIBILITY_MENU_CLOSED:
102 OnMenuClosed(
103 content::Details<const AccessibilityMenuInfo>(details).ptr());
104 break;
105 default:
106 NOTREACHED();
107 }
108 } 48 }
109 49
110 void ExtensionAccessibilityEventRouter::SetAccessibilityEnabled(bool enabled) { 50 void ExtensionAccessibilityEventRouter::SetAccessibilityEnabled(bool enabled) {
111 enabled_ = enabled; 51 enabled_ = enabled;
112 } 52 }
113 53
114 bool ExtensionAccessibilityEventRouter::IsAccessibilityEnabled() const { 54 bool ExtensionAccessibilityEventRouter::IsAccessibilityEnabled() const {
115 return enabled_; 55 return enabled_;
116 } 56 }
117 57
58 void ExtensionAccessibilityEventRouter::SetControlEventCallbackForTesting(
59 ControlEventCallback control_event_callback) {
60 DCHECK(control_event_callback_.is_null());
61 control_event_callback_ = control_event_callback;
62 }
63
64 void ExtensionAccessibilityEventRouter::ClearControlEventCallback() {
65 control_event_callback_.Reset();
66 }
67
68 void ExtensionAccessibilityEventRouter::HandleWindowEvent(
69 ui::AccessibilityTypes::Event event,
70 const AccessibilityWindowInfo* info) {
71 if (event == ui::AccessibilityTypes::EVENT_ALERT)
72 OnWindowOpened(info);
73 }
74
75 void ExtensionAccessibilityEventRouter::HandleMenuEvent(
76 ui::AccessibilityTypes::Event event,
77 const AccessibilityMenuInfo* info) {
78 switch (event) {
79 case ui::AccessibilityTypes::EVENT_MENUSTART:
80 case ui::AccessibilityTypes::EVENT_MENUPOPUPSTART:
81 OnMenuOpened(info);
82 break;
83 case ui::AccessibilityTypes::EVENT_MENUEND:
84 case ui::AccessibilityTypes::EVENT_MENUPOPUPEND:
85 OnMenuClosed(info);
86 break;
87 default:
88 NOTREACHED();
89 }
90 }
91
92 void ExtensionAccessibilityEventRouter::HandleControlEvent(
93 ui::AccessibilityTypes::Event event,
94 const AccessibilityControlInfo* info) {
95 if (!control_event_callback_.is_null())
96 control_event_callback_.Run(event, info);
97
98 switch (event) {
99 case ui::AccessibilityTypes::EVENT_TEXT_CHANGED:
100 case ui::AccessibilityTypes::EVENT_SELECTION_CHANGED:
101 OnTextChanged(info);
102 break;
103 case ui::AccessibilityTypes::EVENT_VALUE_CHANGED:
104 OnControlAction(info);
105 break;
106 case ui::AccessibilityTypes::EVENT_FOCUS:
107 OnControlFocused(info);
108 break;
109 default:
110 NOTREACHED();
111 }
112 }
113
118 void ExtensionAccessibilityEventRouter::OnWindowOpened( 114 void ExtensionAccessibilityEventRouter::OnWindowOpened(
119 const AccessibilityWindowInfo* info) { 115 const AccessibilityWindowInfo* info) {
120 scoped_ptr<ListValue> args(ControlInfoToEventArguments(info)); 116 scoped_ptr<ListValue> args(ControlInfoToEventArguments(info));
121 DispatchEvent(info->profile(), keys::kOnWindowOpened, args.Pass()); 117 DispatchEvent(info->profile(), keys::kOnWindowOpened, args.Pass());
122 } 118 }
123 119
124 void ExtensionAccessibilityEventRouter::OnWindowClosed(
125 const AccessibilityWindowInfo* info) {
126 scoped_ptr<ListValue> args(ControlInfoToEventArguments(info));
127 DispatchEvent(info->profile(), keys::kOnWindowClosed, args.Pass());
128 }
129
130 void ExtensionAccessibilityEventRouter::OnControlFocused( 120 void ExtensionAccessibilityEventRouter::OnControlFocused(
131 const AccessibilityControlInfo* info) { 121 const AccessibilityControlInfo* info) {
132 last_focused_control_dict_.Clear(); 122 last_focused_control_dict_.Clear();
133 info->SerializeToDict(&last_focused_control_dict_); 123 info->SerializeToDict(&last_focused_control_dict_);
134 scoped_ptr<ListValue> args(ControlInfoToEventArguments(info)); 124 scoped_ptr<ListValue> args(ControlInfoToEventArguments(info));
135 DispatchEvent(info->profile(), keys::kOnControlFocused, args.Pass()); 125 DispatchEvent(info->profile(), keys::kOnControlFocused, args.Pass());
136 } 126 }
137 127
138 void ExtensionAccessibilityEventRouter::OnControlAction( 128 void ExtensionAccessibilityEventRouter::OnControlAction(
139 const AccessibilityControlInfo* info) { 129 const AccessibilityControlInfo* info) {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 DictionaryValue* alert_value = new DictionaryValue; 225 DictionaryValue* alert_value = new DictionaryValue;
236 const string16 message_text = confirm_infobar_delegate->GetMessageText(); 226 const string16 message_text = confirm_infobar_delegate->GetMessageText();
237 alert_value->SetString(keys::kMessageKey, message_text); 227 alert_value->SetString(keys::kMessageKey, message_text);
238 alerts_value->Append(alert_value); 228 alerts_value->Append(alert_value);
239 } 229 }
240 } 230 }
241 231
242 SetResult(alerts_value); 232 SetResult(alerts_value);
243 return true; 233 return true;
244 } 234 }
OLDNEW
« no previous file with comments | « chrome/browser/accessibility/accessibility_extension_api.h ('k') | chrome/browser/chrome_notification_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698