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

Side by Side Diff: content/browser/accessibility/accessibility_ui.cc

Issue 407493002: Revert of Migrate accessibility from RenderView to RenderFrame. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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) 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 "content/browser/accessibility/accessibility_ui.h" 5 #include "content/browser/accessibility/accessibility_ui.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "content/browser/accessibility/accessibility_tree_formatter.h" 13 #include "content/browser/accessibility/accessibility_tree_formatter.h"
14 #include "content/browser/accessibility/browser_accessibility_manager.h" 14 #include "content/browser/accessibility/browser_accessibility_manager.h"
15 #include "content/browser/accessibility/browser_accessibility_state_impl.h" 15 #include "content/browser/accessibility/browser_accessibility_state_impl.h"
16 #include "content/browser/renderer_host/render_widget_host_impl.h" 16 #include "content/browser/renderer_host/render_widget_host_impl.h"
17 #include "content/browser/renderer_host/render_widget_host_view_base.h" 17 #include "content/browser/renderer_host/render_widget_host_view_base.h"
18 #include "content/browser/web_contents/web_contents_impl.h"
19 #include "content/common/view_message_enums.h" 18 #include "content/common/view_message_enums.h"
20 #include "content/public/browser/favicon_status.h" 19 #include "content/public/browser/favicon_status.h"
21 #include "content/public/browser/navigation_entry.h" 20 #include "content/public/browser/navigation_entry.h"
22 #include "content/public/browser/render_process_host.h" 21 #include "content/public/browser/render_process_host.h"
23 #include "content/public/browser/render_view_host.h" 22 #include "content/public/browser/render_view_host.h"
24 #include "content/public/browser/render_widget_host.h" 23 #include "content/public/browser/render_widget_host.h"
25 #include "content/public/browser/render_widget_host_iterator.h" 24 #include "content/public/browser/render_widget_host_iterator.h"
26 #include "content/public/browser/web_contents.h" 25 #include "content/public/browser/web_contents.h"
27 #include "content/public/browser/web_ui_data_source.h" 26 #include "content/public/browser/web_ui_data_source.h"
28 #include "content/public/common/url_constants.h" 27 #include "content/public/common/url_constants.h"
(...skipping 28 matching lines...) Expand all
57 target_data->SetString(kUrlField, url.spec()); 56 target_data->SetString(kUrlField, url.spec());
58 target_data->SetString(kNameField, net::EscapeForHTML(name)); 57 target_data->SetString(kNameField, net::EscapeForHTML(name));
59 target_data->SetInteger(kPidField, base::GetProcId(handle)); 58 target_data->SetInteger(kPidField, base::GetProcId(handle));
60 target_data->SetString(kFaviconUrlField, favicon_url.spec()); 59 target_data->SetString(kFaviconUrlField, favicon_url.spec());
61 target_data->SetInteger(kAccessibilityModeField, 60 target_data->SetInteger(kAccessibilityModeField,
62 accessibility_mode); 61 accessibility_mode);
63 return target_data; 62 return target_data;
64 } 63 }
65 64
66 base::DictionaryValue* BuildTargetDescriptor(RenderViewHost* rvh) { 65 base::DictionaryValue* BuildTargetDescriptor(RenderViewHost* rvh) {
67 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( 66 WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
68 WebContents::FromRenderViewHost(rvh)); 67 std::string title;
69 AccessibilityMode accessibility_mode = web_contents->GetAccessibilityMode(); 68 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rvh);
69 AccessibilityMode accessibility_mode = rwhi->accessibility_mode();
70 70
71 std::string title;
72 GURL url; 71 GURL url;
73 GURL favicon_url; 72 GURL favicon_url;
74 if (web_contents) { 73 if (web_contents) {
75 // TODO(nasko): Fix the following code to use a consistent set of data 74 // TODO(nasko): Fix the following code to use a consistent set of data
76 // across the URL, title, and favicon. 75 // across the URL, title, and favicon.
77 url = web_contents->GetURL(); 76 url = web_contents->GetURL();
78 title = base::UTF16ToUTF8(web_contents->GetTitle()); 77 title = base::UTF16ToUTF8(web_contents->GetTitle());
79 NavigationController& controller = web_contents->GetController(); 78 NavigationController& controller = web_contents->GetController();
80 NavigationEntry* entry = controller.GetVisibleEntry(); 79 NavigationEntry* entry = controller.GetVisibleEntry();
81 if (entry != NULL && entry->GetURL().is_valid()) 80 if (entry != NULL && entry->GetURL().is_valid())
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 int route_id; 171 int route_id;
173 CHECK_EQ(2U, args->GetSize()); 172 CHECK_EQ(2U, args->GetSize());
174 CHECK(args->GetString(0, &process_id_str)); 173 CHECK(args->GetString(0, &process_id_str));
175 CHECK(args->GetString(1, &route_id_str)); 174 CHECK(args->GetString(1, &route_id_str));
176 CHECK(base::StringToInt(process_id_str, &process_id)); 175 CHECK(base::StringToInt(process_id_str, &process_id));
177 CHECK(base::StringToInt(route_id_str, &route_id)); 176 CHECK(base::StringToInt(route_id_str, &route_id));
178 177
179 RenderViewHost* rvh = RenderViewHost::FromID(process_id, route_id); 178 RenderViewHost* rvh = RenderViewHost::FromID(process_id, route_id);
180 if (!rvh) 179 if (!rvh)
181 return; 180 return;
182 WebContentsImpl* web_contents = static_cast<WebContentsImpl*>( 181 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rvh);
183 WebContents::FromRenderViewHost(rvh)); 182 if (!rwhi)
184 AccessibilityMode mode = web_contents->GetAccessibilityMode(); 183 return;
185 if ((mode & AccessibilityModeComplete) != AccessibilityModeComplete) { 184 AccessibilityMode mode = rwhi->accessibility_mode();
186 web_contents->AddAccessibilityMode(AccessibilityModeComplete); 185 if ((mode & AccessibilityModeComplete) != AccessibilityModeComplete)
187 } else { 186 rwhi->AddAccessibilityMode(AccessibilityModeComplete);
188 web_contents->SetAccessibilityMode( 187 else
189 BrowserAccessibilityStateImpl::GetInstance()->accessibility_mode()); 188 rwhi->ResetAccessibilityMode();
190 }
191 } 189 }
192 190
193 void AccessibilityUI::ToggleGlobalAccessibility(const base::ListValue* args) { 191 void AccessibilityUI::ToggleGlobalAccessibility(const base::ListValue* args) {
194 BrowserAccessibilityStateImpl* state = 192 BrowserAccessibilityStateImpl* state =
195 BrowserAccessibilityStateImpl::GetInstance(); 193 BrowserAccessibilityStateImpl::GetInstance();
196 AccessibilityMode mode = state->accessibility_mode(); 194 AccessibilityMode mode = state->accessibility_mode();
197 if ((mode & AccessibilityModeComplete) != AccessibilityModeComplete) 195 if ((mode & AccessibilityModeComplete) != AccessibilityModeComplete)
198 state->EnableAccessibility(); 196 state->EnableAccessibility();
199 else 197 else
200 state->DisableAccessibility(); 198 state->DisableAccessibility();
(...skipping 14 matching lines...) Expand all
215 if (!rvh) { 213 if (!rvh) {
216 scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue()); 214 scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue());
217 result->SetInteger(kProcessIdField, process_id); 215 result->SetInteger(kProcessIdField, process_id);
218 result->SetInteger(kRouteIdField, route_id); 216 result->SetInteger(kRouteIdField, route_id);
219 result->Set("error", new base::StringValue("Renderer no longer exists.")); 217 result->Set("error", new base::StringValue("Renderer no longer exists."));
220 web_ui()->CallJavascriptFunction("accessibility.showTree", *(result.get())); 218 web_ui()->CallJavascriptFunction("accessibility.showTree", *(result.get()));
221 return; 219 return;
222 } 220 }
223 221
224 scoped_ptr<base::DictionaryValue> result(BuildTargetDescriptor(rvh)); 222 scoped_ptr<base::DictionaryValue> result(BuildTargetDescriptor(rvh));
225 WebContents* web_contents = WebContents::FromRenderViewHost(rvh); 223 RenderWidgetHostViewBase* host_view = static_cast<RenderWidgetHostViewBase*>(
224 WebContents::FromRenderViewHost(rvh)->GetRenderWidgetHostView());
225 if (!host_view) {
226 result->Set("error",
227 new base::StringValue("Could not get accessibility tree."));
228 web_ui()->CallJavascriptFunction("accessibility.showTree", *(result.get()));
229 return;
230 }
226 scoped_ptr<AccessibilityTreeFormatter> formatter( 231 scoped_ptr<AccessibilityTreeFormatter> formatter(
227 AccessibilityTreeFormatter::Create(web_contents)); 232 AccessibilityTreeFormatter::Create(rvh));
228 base::string16 accessibility_contents_utf16; 233 base::string16 accessibility_contents_utf16;
234 BrowserAccessibilityManager* manager =
235 host_view->GetBrowserAccessibilityManager();
236 if (!manager) {
237 result->Set("error",
238 new base::StringValue("Could not get accessibility tree."));
239 web_ui()->CallJavascriptFunction("accessibility.showTree", *(result.get()));
240 return;
241 }
229 std::vector<AccessibilityTreeFormatter::Filter> filters; 242 std::vector<AccessibilityTreeFormatter::Filter> filters;
230 filters.push_back(AccessibilityTreeFormatter::Filter( 243 filters.push_back(AccessibilityTreeFormatter::Filter(
231 base::ASCIIToUTF16("*"), 244 base::ASCIIToUTF16("*"),
232 AccessibilityTreeFormatter::Filter::ALLOW)); 245 AccessibilityTreeFormatter::Filter::ALLOW));
233 formatter->SetFilters(filters); 246 formatter->SetFilters(filters);
234 formatter->FormatAccessibilityTree(&accessibility_contents_utf16); 247 formatter->FormatAccessibilityTree(&accessibility_contents_utf16);
235 248
236 result->Set("tree", 249 result->Set("tree",
237 new base::StringValue( 250 new base::StringValue(
238 base::UTF16ToUTF8(accessibility_contents_utf16))); 251 base::UTF16ToUTF8(accessibility_contents_utf16)));
239 web_ui()->CallJavascriptFunction("accessibility.showTree", *(result.get())); 252 web_ui()->CallJavascriptFunction("accessibility.showTree", *(result.get()));
240 } 253 }
241 254
242 } // namespace content 255 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698