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

Side by Side Diff: ui/accessibility/platform/ax_platform_node_auralinux.cc

Issue 1010083006: Implement AtkComponent interface for chrome UI. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: window coords Created 5 years, 8 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "ui/accessibility/platform/ax_platform_node_auralinux.h" 5 #include "ui/accessibility/platform/ax_platform_node_auralinux.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/sys_string_conversions.h" 8 #include "base/strings/sys_string_conversions.h"
9 #include "ui/accessibility/ax_node_data.h" 9 #include "ui/accessibility/ax_node_data.h"
10 #include "ui/accessibility/platform/atk_util_auralinux.h" 10 #include "ui/accessibility/platform/atk_util_auralinux.h"
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 (GBaseFinalizeFunc) 0, 230 (GBaseFinalizeFunc) 0,
231 (GClassInitFunc) ax_platform_node_auralinux_class_init, 231 (GClassInitFunc) ax_platform_node_auralinux_class_init,
232 (GClassFinalizeFunc) 0, 232 (GClassFinalizeFunc) 0,
233 0, /* class data */ 233 0, /* class data */
234 sizeof(AXPlatformNodeAuraLinuxObject), /* instance size */ 234 sizeof(AXPlatformNodeAuraLinuxObject), /* instance size */
235 0, /* nb preallocs */ 235 0, /* nb preallocs */
236 (GInstanceInitFunc) 0, 236 (GInstanceInitFunc) 0,
237 0 /* value table */ 237 0 /* value table */
238 }; 238 };
239 239
240 GType type = g_type_register_static( 240 GType type = g_type_register_static(
dmazzoni 2015/03/30 16:21:22 Immediately after this call, you should add a line
241 ATK_TYPE_OBJECT, "AXPlatformNodeAuraLinux", &tinfo, GTypeFlags(0)); 241 ATK_TYPE_OBJECT, "AXPlatformNodeAuraLinux", &tinfo, GTypeFlags(0));
242 g_once_init_leave(&type_volatile, type); 242 g_once_init_leave(&type_volatile, type);
243 } 243 }
244 244
245 return type_volatile; 245 return type_volatile;
246 } 246 }
247 247
248 AXPlatformNodeAuraLinuxObject* ax_platform_node_auralinux_new( 248 AXPlatformNodeAuraLinuxObject* ax_platform_node_auralinux_new(
249 ui::AXPlatformNodeAuraLinux* obj) { 249 ui::AXPlatformNodeAuraLinux* obj) {
250 #if !GLIB_CHECK_VERSION(2, 36, 0) 250 #if !GLIB_CHECK_VERSION(2, 36, 0)
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 // static 284 // static
285 AXPlatformNode* AXPlatformNodeAuraLinux::application_ = nullptr; 285 AXPlatformNode* AXPlatformNodeAuraLinux::application_ = nullptr;
286 286
287 // static 287 // static
288 void AXPlatformNodeAuraLinux::SetApplication(AXPlatformNode* application) { 288 void AXPlatformNodeAuraLinux::SetApplication(AXPlatformNode* application) {
289 application_ = application; 289 application_ = application;
290 AtkUtilAuraLinux::GetInstance(); 290 AtkUtilAuraLinux::GetInstance();
291 } 291 }
292 292
293 AtkRole AXPlatformNodeAuraLinux::GetAtkRole() { 293 AtkRole AXPlatformNodeAuraLinux::GetAtkRole() {
294 GetWindowCoords();
dmazzoni 2015/03/27 19:09:14 I don't think you need to call it here.
shreeramk 2015/03/28 16:59:48 Sorry, by mistake I wrote this. :(
294 switch (GetData().role) { 295 switch (GetData().role) {
295 case ui::AX_ROLE_ALERT: 296 case ui::AX_ROLE_ALERT:
296 return ATK_ROLE_ALERT; 297 return ATK_ROLE_ALERT;
297 case ui::AX_ROLE_APPLICATION: 298 case ui::AX_ROLE_APPLICATION:
298 return ATK_ROLE_APPLICATION; 299 return ATK_ROLE_APPLICATION;
299 case ui::AX_ROLE_BUTTON: 300 case ui::AX_ROLE_BUTTON:
300 return ATK_ROLE_PUSH_BUTTON; 301 return ATK_ROLE_PUSH_BUTTON;
301 case ui::AX_ROLE_CHECK_BOX: 302 case ui::AX_ROLE_CHECK_BOX:
302 return ATK_ROLE_CHECK_BOX; 303 return ATK_ROLE_CHECK_BOX;
303 case ui::AX_ROLE_COMBO_BOX: 304 case ui::AX_ROLE_COMBO_BOX:
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 return atk_object_; 386 return atk_object_;
386 } 387 }
387 388
388 void AXPlatformNodeAuraLinux::NotifyAccessibilityEvent(ui::AXEvent event_type) { 389 void AXPlatformNodeAuraLinux::NotifyAccessibilityEvent(ui::AXEvent event_type) {
389 } 390 }
390 391
391 int AXPlatformNodeAuraLinux::GetIndexInParent() { 392 int AXPlatformNodeAuraLinux::GetIndexInParent() {
392 return 0; 393 return 0;
393 } 394 }
394 395
396 //
397 // ax_platform_node_auralinux AtkComponent interface implementation.
dmazzoni 2015/03/27 19:09:14 This belongs up above, just before the comment "Th
398 //
399
400 static void ax_component_interface_get_extents(AtkComponent* atk_component,
dmazzoni 2015/03/27 19:09:14 This should be named ax_platform_node_auralinux_ge
401 gint* x, gint* y,
402 gint* width, gint* height,
403 AtkCoordType coord_type) {
404 *x = *y = *width = *height = 0;
405 AtkObject* atk_object = ATK_OBJECT(atk_component);
406 ui::AXPlatformNodeAuraLinux* obj =
407 AtkObjectToAXPlatformNodeAuraLinux(atk_object);
408 if (!obj)
409 return;
410
411 obj->GetExtents(x, y, width, height, coord_type);
412 }
413
414 static void ax_component_interface_get_position(AtkComponent* atk_component,
415 gint* x, gint* y,
416 AtkCoordType coord_type) {
417 *x = *y = 0;
418 AtkObject* atk_object = ATK_OBJECT(atk_component);
419 ui::AXPlatformNodeAuraLinux* obj =
420 AtkObjectToAXPlatformNodeAuraLinux(atk_object);
421 if (!obj)
422 return;
423
424 obj->GetPosition(x, y, coord_type);
425 }
426
427 static void ax_component_interface_get_size(AtkComponent* atk_component,
428 gint* width, gint* height) {
429 *width = *height = 0;
430 AtkObject* atk_object = ATK_OBJECT(atk_component);
431 ui::AXPlatformNodeAuraLinux* obj =
432 AtkObjectToAXPlatformNodeAuraLinux(atk_object);
433 if (!obj)
434 return;
435
436 obj->GetSize(width, height);
437 }
438
439 void ax_component_interface_base_init(AtkComponentIface* iface) {
440 iface->get_extents = ax_component_interface_get_extents;
dmazzoni 2015/03/27 19:09:14 nit: only indent 2 chars
441 iface->get_position = ax_component_interface_get_position;
442 iface->get_size = ax_component_interface_get_size;
443 }
444
445 GType ax_component_auralinux_get_type() {
dmazzoni 2015/03/27 19:09:14 Where is this called? I don't think we want a sepa
shreeramk 2015/03/28 16:59:48 Actually I don't know/understand like from where i
dmazzoni 2015/03/30 16:21:22 This is what you do when you define a new type. Wh
446 static volatile gsize type_volatile = 0;
447
448 if (g_once_init_enter(&type_volatile)) {
449 static const GTypeInfo tinfo = {
450 sizeof(AtkComponentIface),
451 (GBaseInitFunc) ax_component_interface_base_init,
452 (GBaseFinalizeFunc) 0,
453 };
454
455 GType type = g_type_register_static(
456 ATK_TYPE_COMPONENT, "AtkComponent", &tinfo, GTypeFlags(0));
457 g_once_init_leave(&type_volatile, type);
458 }
459
460 return type_volatile;
461 }
462
463 void AXPlatformNodeAuraLinux::GetExtents(gint* x, gint* y,
464 gint* width, gint* height,
465 AtkCoordType coord_type) {
466 gfx::Rect extents = GetBoundsInScreen();
467
468 *x = extents.x();
469 *y = extents.y();
470 *width = extents.width();
471 *height = extents.height();
472
473 if (coord_type == ATK_XY_WINDOW) {
474 gfx::Rect window_coords = GetWindowCoords();
475 *x -= window_coords.x();
476 *y -= window_coords.y();
477 *width -= window_coords.width();
478 *height -= window_coords.height();
shreeramk 2015/03/27 16:09:13 This calculation is is not required for width n he
479 }
480 }
481
482 void AXPlatformNodeAuraLinux::GetPosition(gint* x, gint* y,
483 AtkCoordType coord_type) {
484 gfx::Rect rect_pos = GetBoundsInScreen();
485
486 *x = rect_pos.x();
487 *y = rect_pos.y();
488
489 if (coord_type == ATK_XY_WINDOW) {
490 gfx::Rect window_coords = GetWindowCoords();
491 *x -= window_coords.x();
492 *y -= window_coords.y();
493 }
494 }
495
496 void AXPlatformNodeAuraLinux::GetSize(gint* width, gint* height) {
497 gfx::Rect rect_size = GetData().location;
498 *width = rect_size.width();
499 *height = rect_size.height();
500 }
501
502 gfx::Rect AXPlatformNodeAuraLinux::GetWindowCoords() {
503 AtkObject* parent = GetParent();
504
505 ui::AXPlatformNodeAuraLinux* obj =
506 AtkObjectToAXPlatformNodeAuraLinux(parent);
dmazzoni 2015/03/27 19:09:14 You need to test this. It's possible that the pare
shreeramk 2015/04/01 11:50:14 Already a check is made in AtkObjectToAXPlatformNo
dmazzoni 2015/04/01 15:31:16 I think that's checking whether |this| is an AXPla
507
508 if (atk_object_get_role(parent) == ATK_ROLE_WINDOW) {
509 gfx::Rect window_coords = obj->GetData().location;
dmazzoni 2015/03/27 19:09:14 Do this using its AtkComponent interface
510 return window_coords;
511 }
512
513 return obj->GetWindowCoords();
514 }
515
395 } // namespace ui 516 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698