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

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

Issue 10694085: Refactor extension event distribution to use Values instead of JSON strings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase and review changes. Created 8 years, 5 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/string_number_conversions.h" 8 #include "base/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/extensions/api/tabs/tabs_constants.h" 11 #include "chrome/browser/extensions/api/tabs/tabs_constants.h"
12 #include "chrome/browser/extensions/extension_event_router.h" 12 #include "chrome/browser/extensions/extension_event_router.h"
13 #include "chrome/browser/extensions/extension_tab_util.h" 13 #include "chrome/browser/extensions/extension_tab_util.h"
14 #include "chrome/browser/infobars/infobar_delegate.h" 14 #include "chrome/browser/infobars/infobar_delegate.h"
15 #include "chrome/browser/infobars/infobar_tab_helper.h" 15 #include "chrome/browser/infobars/infobar_tab_helper.h"
16 #include "chrome/browser/profiles/profile.h" 16 #include "chrome/browser/profiles/profile.h"
17 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" 17 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h"
18 #include "chrome/browser/ui/tab_contents/tab_contents.h" 18 #include "chrome/browser/ui/tab_contents/tab_contents.h"
19 #include "chrome/common/chrome_notification_types.h" 19 #include "chrome/common/chrome_notification_types.h"
20 #include "chrome/common/extensions/extension_error_utils.h" 20 #include "chrome/common/extensions/extension_error_utils.h"
21 #include "content/public/browser/notification_service.h" 21 #include "content/public/browser/notification_service.h"
22 22
23 namespace keys = extension_accessibility_api_constants; 23 namespace keys = extension_accessibility_api_constants;
24 24
25 // Returns the AccessibilityControlInfo serialized into a JSON string, 25 // Returns the AccessibilityControlInfo serialized into a JSON string,
26 // consisting of an array of a single object of type AccessibilityObject, 26 // consisting of an array of a single object of type AccessibilityObject,
27 // as defined in the accessibility extension api's json schema. 27 // as defined in the accessibility extension api's json schema.
28 std::string ControlInfoToJsonString(const AccessibilityEventInfo* info) { 28 ListValue* ControlInfoToEventArguments(const AccessibilityEventInfo* info) {
29 ListValue args;
30 DictionaryValue* dict = new DictionaryValue(); 29 DictionaryValue* dict = new DictionaryValue();
31 info->SerializeToDict(dict); 30 info->SerializeToDict(dict);
32 args.Append(dict); 31
33 std::string json_args; 32 ListValue* args = new ListValue();
34 base::JSONWriter::Write(&args, &json_args); 33 args->Append(dict);
35 return json_args; 34 return args;
36 } 35 }
37 36
38 ExtensionAccessibilityEventRouter* 37 ExtensionAccessibilityEventRouter*
39 ExtensionAccessibilityEventRouter::GetInstance() { 38 ExtensionAccessibilityEventRouter::GetInstance() {
40 return Singleton<ExtensionAccessibilityEventRouter>::get(); 39 return Singleton<ExtensionAccessibilityEventRouter>::get();
41 } 40 }
42 41
43 ExtensionAccessibilityEventRouter::ExtensionAccessibilityEventRouter() 42 ExtensionAccessibilityEventRouter::ExtensionAccessibilityEventRouter()
44 : enabled_(false) { 43 : enabled_(false) {
45 registrar_.Add(this, 44 registrar_.Add(this,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 void ExtensionAccessibilityEventRouter::SetAccessibilityEnabled(bool enabled) { 108 void ExtensionAccessibilityEventRouter::SetAccessibilityEnabled(bool enabled) {
110 enabled_ = enabled; 109 enabled_ = enabled;
111 } 110 }
112 111
113 bool ExtensionAccessibilityEventRouter::IsAccessibilityEnabled() const { 112 bool ExtensionAccessibilityEventRouter::IsAccessibilityEnabled() const {
114 return enabled_; 113 return enabled_;
115 } 114 }
116 115
117 void ExtensionAccessibilityEventRouter::OnWindowOpened( 116 void ExtensionAccessibilityEventRouter::OnWindowOpened(
118 const AccessibilityWindowInfo* info) { 117 const AccessibilityWindowInfo* info) {
119 std::string json_args = ControlInfoToJsonString(info); 118 ListValue* args = ControlInfoToEventArguments(info);
120 DispatchEvent(info->profile(), keys::kOnWindowOpened, json_args); 119 DispatchEvent(info->profile(), keys::kOnWindowOpened, args);
121 } 120 }
122 121
123 void ExtensionAccessibilityEventRouter::OnWindowClosed( 122 void ExtensionAccessibilityEventRouter::OnWindowClosed(
124 const AccessibilityWindowInfo* info) { 123 const AccessibilityWindowInfo* info) {
125 std::string json_args = ControlInfoToJsonString(info); 124 ListValue* args = ControlInfoToEventArguments(info);
126 DispatchEvent(info->profile(), keys::kOnWindowClosed, json_args); 125 DispatchEvent(info->profile(), keys::kOnWindowClosed, args);
127 } 126 }
128 127
129 void ExtensionAccessibilityEventRouter::OnControlFocused( 128 void ExtensionAccessibilityEventRouter::OnControlFocused(
130 const AccessibilityControlInfo* info) { 129 const AccessibilityControlInfo* info) {
131 last_focused_control_dict_.Clear(); 130 last_focused_control_dict_.Clear();
132 info->SerializeToDict(&last_focused_control_dict_); 131 info->SerializeToDict(&last_focused_control_dict_);
133 std::string json_args = ControlInfoToJsonString(info); 132 ListValue* args = ControlInfoToEventArguments(info);
134 DispatchEvent(info->profile(), keys::kOnControlFocused, json_args); 133 DispatchEvent(info->profile(), keys::kOnControlFocused, args);
135 } 134 }
136 135
137 void ExtensionAccessibilityEventRouter::OnControlAction( 136 void ExtensionAccessibilityEventRouter::OnControlAction(
138 const AccessibilityControlInfo* info) { 137 const AccessibilityControlInfo* info) {
139 std::string json_args = ControlInfoToJsonString(info); 138 ListValue* args = ControlInfoToEventArguments(info);
140 DispatchEvent(info->profile(), keys::kOnControlAction, json_args); 139 DispatchEvent(info->profile(), keys::kOnControlAction, args);
141 } 140 }
142 141
143 void ExtensionAccessibilityEventRouter::OnTextChanged( 142 void ExtensionAccessibilityEventRouter::OnTextChanged(
144 const AccessibilityControlInfo* info) { 143 const AccessibilityControlInfo* info) {
145 std::string json_args = ControlInfoToJsonString(info); 144 ListValue* args = ControlInfoToEventArguments(info);
146 DispatchEvent(info->profile(), keys::kOnTextChanged, json_args); 145 DispatchEvent(info->profile(), keys::kOnTextChanged, args);
147 } 146 }
148 147
149 void ExtensionAccessibilityEventRouter::OnMenuOpened( 148 void ExtensionAccessibilityEventRouter::OnMenuOpened(
150 const AccessibilityMenuInfo* info) { 149 const AccessibilityMenuInfo* info) {
151 std::string json_args = ControlInfoToJsonString(info); 150 ListValue* args = ControlInfoToEventArguments(info);
152 DispatchEvent(info->profile(), keys::kOnMenuOpened, json_args); 151 DispatchEvent(info->profile(), keys::kOnMenuOpened, args);
153 } 152 }
154 153
155 void ExtensionAccessibilityEventRouter::OnMenuClosed( 154 void ExtensionAccessibilityEventRouter::OnMenuClosed(
156 const AccessibilityMenuInfo* info) { 155 const AccessibilityMenuInfo* info) {
157 std::string json_args = ControlInfoToJsonString(info); 156 ListValue* args = ControlInfoToEventArguments(info);
158 DispatchEvent(info->profile(), keys::kOnMenuClosed, json_args); 157 DispatchEvent(info->profile(), keys::kOnMenuClosed, args);
159 } 158 }
160 159
161 void ExtensionAccessibilityEventRouter::DispatchEvent( 160 void ExtensionAccessibilityEventRouter::DispatchEvent(
162 Profile* profile, 161 Profile* profile,
163 const char* event_name, 162 const char* event_name,
164 const std::string& json_args) { 163 base::ListValue* event_args) {
165 if (enabled_ && profile && profile->GetExtensionEventRouter()) { 164 if (enabled_ && profile && profile->GetExtensionEventRouter()) {
166 profile->GetExtensionEventRouter()->DispatchEventToRenderers( 165 profile->GetExtensionEventRouter()->DispatchEventToRenderers(
167 event_name, json_args, NULL, GURL(), extensions::EventFilteringInfo()); 166 event_name, event_args, NULL, GURL(), extensions::EventFilteringInfo());
168 } 167 }
169 } 168 }
170 169
171 bool SetAccessibilityEnabledFunction::RunImpl() { 170 bool SetAccessibilityEnabledFunction::RunImpl() {
172 bool enabled; 171 bool enabled;
173 EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(0, &enabled)); 172 EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(0, &enabled));
174 ExtensionAccessibilityEventRouter::GetInstance() 173 ExtensionAccessibilityEventRouter::GetInstance()
175 ->SetAccessibilityEnabled(enabled); 174 ->SetAccessibilityEnabled(enabled);
176 return true; 175 return true;
177 } 176 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 DictionaryValue* alert_value = new DictionaryValue; 218 DictionaryValue* alert_value = new DictionaryValue;
220 const string16 message_text = confirm_infobar_delegate->GetMessageText(); 219 const string16 message_text = confirm_infobar_delegate->GetMessageText();
221 alert_value->SetString(keys::kMessageKey, message_text); 220 alert_value->SetString(keys::kMessageKey, message_text);
222 alerts_value->Append(alert_value); 221 alerts_value->Append(alert_value);
223 } 222 }
224 } 223 }
225 224
226 result_.reset(alerts_value); 225 result_.reset(alerts_value);
227 return true; 226 return true;
228 } 227 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698