Home | History | Annotate | Download | only in accessibility
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_GTK_H_
      6 #define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_GTK_H_
      7 
      8 #include <atk/atk.h>
      9 
     10 #include "base/compiler_specific.h"
     11 #include "content/browser/accessibility/browser_accessibility.h"
     12 
     13 namespace content {
     14 
     15 class BrowserAccessibilityGtk;
     16 class BrowserAccessibilityManagerGtk;
     17 
     18 G_BEGIN_DECLS
     19 
     20 #define BROWSER_ACCESSIBILITY_TYPE (browser_accessibility_get_type())
     21 #define BROWSER_ACCESSIBILITY(obj) \
     22     (G_TYPE_CHECK_INSTANCE_CAST( \
     23              (obj), BROWSER_ACCESSIBILITY_TYPE, BrowserAccessibilityAtk))
     24 #define BROWSER_ACCESSIBILITY_CLASS(klass) \
     25     (G_TYPE_CHECK_CLASS_CAST( \
     26         (klass), BROWSER_ACCESSIBILITY_TYPE, BrowserAccessibilityAtkClass))
     27 #define IS_BROWSER_ACCESSIBILITY(obj) \
     28     (G_TYPE_CHECK_INSTANCE_TYPE((obj), BROWSER_ACCESSIBILITY_TYPE))
     29 #define IS_BROWSER_ACCESSIBILITY_CLASS(klass) \
     30     (G_TYPE_CHECK_CLASS_TYPE((klass), BROWSER_ACCESSIBILITY_TYPE))
     31 #define BROWSER_ACCESSIBILITY_GET_CLASS(obj) \
     32     (G_TYPE_INSTANCE_GET_CLASS( \
     33         (obj), BROWSER_ACCESSIBILITY_TYPE, BrowserAccessibilityAtkClass))
     34 
     35 typedef struct _BrowserAccessibilityAtk      BrowserAccessibilityAtk;
     36 typedef struct _BrowserAccessibilityAtkClass BrowserAccessibilityAtkClass;
     37 
     38 struct _BrowserAccessibilityAtk {
     39   AtkObject parent;
     40   BrowserAccessibilityGtk* m_object;
     41 };
     42 
     43 struct _BrowserAccessibilityAtkClass {
     44   AtkObjectClass parent_class;
     45 };
     46 
     47 GType browser_accessibility_get_type (void) G_GNUC_CONST;
     48 
     49 BrowserAccessibilityAtk* browser_accessibility_new(
     50     BrowserAccessibilityGtk* object);
     51 
     52 BrowserAccessibilityGtk* browser_accessibility_get_object(
     53     BrowserAccessibilityAtk* atk_object);
     54 
     55 void browser_accessibility_detach (BrowserAccessibilityAtk* atk_object);
     56 
     57 AtkObject* browser_accessibility_get_focused_element(
     58     BrowserAccessibilityAtk* atk_object);
     59 
     60 G_END_DECLS
     61 
     62 class BrowserAccessibilityGtk : public BrowserAccessibility {
     63  public:
     64   BrowserAccessibilityGtk();
     65 
     66   virtual ~BrowserAccessibilityGtk();
     67 
     68   AtkObject* GetAtkObject() const;
     69 
     70   AtkRole atk_role() { return atk_role_; }
     71   const std::string& atk_acc_name() { return atk_acc_name_; }
     72   const std::string& atk_acc_description() { return atk_acc_description_; }
     73 
     74   // BrowserAccessibility methods.
     75   virtual void PreInitialize() OVERRIDE;
     76   virtual bool IsNative() const OVERRIDE;
     77 
     78  private:
     79   virtual void InitRoleAndState();
     80 
     81   // Give BrowserAccessibility::Create access to our constructor.
     82   friend class BrowserAccessibility;
     83 
     84   AtkObject* atk_object_;
     85   AtkRole atk_role_;
     86   std::string atk_acc_name_;
     87   std::string atk_acc_description_;
     88   int interface_mask_;
     89 
     90  private:
     91   DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityGtk);
     92 };
     93 
     94 }  // namespace content
     95 
     96 #endif  // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_GTK_H_
     97