blob: 00581d93646e2e14c77abf0a55afad4560ddcda4 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_ACCESSIBILITY_AX_PLATFORM_NODE_AURALINUX_H_
#define UI_ACCESSIBILITY_AX_PLATFORM_NODE_AURALINUX_H_
#include <atk/atk.h>
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "ui/accessibility/ax_export.h"
#include "ui/accessibility/platform/ax_platform_node_base.h"
namespace base {
class TaskRunner;
}
namespace ui {
// Implements accessibility on Aura Linux using ATK.
class AXPlatformNodeAuraLinux : public AXPlatformNodeBase {
public:
AXPlatformNodeAuraLinux();
// Set or get the root-level Application object that's the parent of all
// top-level windows.
AX_EXPORT static void SetApplication(AXPlatformNode* application);
static AXPlatformNode* application() { return application_; }
// Do static initialization using the given task runner for file operations.
AX_EXPORT static void StaticInitialize(
scoped_refptr<base::TaskRunner> init_task_runner);
AtkRole GetAtkRole();
void GetAtkState(AtkStateSet* state_set);
void GetAtkRelations(AtkRelationSet* atk_relation_set);
void GetExtents(gint* x, gint* y, gint* width, gint* height,
AtkCoordType coord_type);
void GetPosition(gint* x, gint* y, AtkCoordType coord_type);
void GetSize(gint* width, gint* height);
void SetExtentsRelativeToAtkCoordinateType(
gint* x, gint* y, gint* width, gint* height,
AtkCoordType coord_type);
// AXPlatformNode overrides.
gfx::NativeViewAccessible GetNativeViewAccessible() override;
void NotifyAccessibilityEvent(ui::AXEvent event_type) override;
// AXPlatformNodeBase overrides.
void Init(AXPlatformNodeDelegate* delegate) override;
int GetIndexInParent() override;
private:
~AXPlatformNodeAuraLinux() override;
// We own a reference to this ref-counted object.
AtkObject* atk_object_;
// The root-level Application object that's the parent of all
// top-level windows.
static AXPlatformNode* application_;
DISALLOW_COPY_AND_ASSIGN(AXPlatformNodeAuraLinux);
};
} // namespace ui
#endif // UI_ACCESSIBILITY_AX_PLATFORM_NODE_AURALINUX_H_