OLD | NEW |
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 "base/strings/string16.h" | 5 #include "base/strings/string16.h" |
6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
7 #include "content/browser/accessibility/browser_accessibility.h" | 7 #include "content/browser/accessibility/browser_accessibility.h" |
8 #include "content/browser/accessibility/browser_accessibility_manager.h" | 8 #include "content/browser/accessibility/browser_accessibility_manager.h" |
9 #if defined(OS_WIN) | 9 #if defined(OS_WIN) |
10 #include "content/browser/accessibility/browser_accessibility_win.h" | 10 #include "content/browser/accessibility/browser_accessibility_win.h" |
11 #endif | 11 #endif |
12 #include "content/common/accessibility_messages.h" | 12 #include "content/common/accessibility_messages.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 | 14 |
15 namespace content { | 15 namespace content { |
16 namespace { | 16 namespace { |
17 | 17 |
18 // Subclass of BrowserAccessibility that counts the number of instances. | 18 // Subclass of BrowserAccessibility that counts the number of instances. |
19 class CountedBrowserAccessibility : public BrowserAccessibility { | 19 class CountedBrowserAccessibility : public BrowserAccessibility { |
20 public: | 20 public: |
21 CountedBrowserAccessibility() { | 21 CountedBrowserAccessibility() { |
22 global_obj_count_++; | 22 global_obj_count_++; |
23 native_ref_count_ = 1; | 23 native_ref_count_ = 1; |
24 } | 24 } |
25 virtual ~CountedBrowserAccessibility() { | 25 ~CountedBrowserAccessibility() override { global_obj_count_--; } |
26 global_obj_count_--; | |
27 } | |
28 | 26 |
29 virtual void NativeAddReference() override { | 27 void NativeAddReference() override { native_ref_count_++; } |
30 native_ref_count_++; | |
31 } | |
32 | 28 |
33 virtual void NativeReleaseReference() override { | 29 void NativeReleaseReference() override { |
34 native_ref_count_--; | 30 native_ref_count_--; |
35 if (native_ref_count_ == 0) | 31 if (native_ref_count_ == 0) |
36 delete this; | 32 delete this; |
37 } | 33 } |
38 | 34 |
39 int native_ref_count_; | 35 int native_ref_count_; |
40 static int global_obj_count_; | 36 static int global_obj_count_; |
41 | 37 |
42 #if defined(OS_WIN) | 38 #if defined(OS_WIN) |
43 // Adds some padding to prevent a heap-buffer-overflow when an instance of | 39 // Adds some padding to prevent a heap-buffer-overflow when an instance of |
44 // this class is casted into a BrowserAccessibilityWin pointer. | 40 // this class is casted into a BrowserAccessibilityWin pointer. |
45 // http://crbug.com/235508 | 41 // http://crbug.com/235508 |
46 // TODO(dmazzoni): Fix this properly. | 42 // TODO(dmazzoni): Fix this properly. |
47 static const size_t kDataSize = sizeof(int) + sizeof(BrowserAccessibility); | 43 static const size_t kDataSize = sizeof(int) + sizeof(BrowserAccessibility); |
48 uint8 padding_[sizeof(BrowserAccessibilityWin) - kDataSize]; | 44 uint8 padding_[sizeof(BrowserAccessibilityWin) - kDataSize]; |
49 #endif | 45 #endif |
50 }; | 46 }; |
51 | 47 |
52 int CountedBrowserAccessibility::global_obj_count_ = 0; | 48 int CountedBrowserAccessibility::global_obj_count_ = 0; |
53 | 49 |
54 // Factory that creates a CountedBrowserAccessibility. | 50 // Factory that creates a CountedBrowserAccessibility. |
55 class CountedBrowserAccessibilityFactory | 51 class CountedBrowserAccessibilityFactory |
56 : public BrowserAccessibilityFactory { | 52 : public BrowserAccessibilityFactory { |
57 public: | 53 public: |
58 virtual ~CountedBrowserAccessibilityFactory() {} | 54 ~CountedBrowserAccessibilityFactory() override {} |
59 virtual BrowserAccessibility* Create() override { | 55 BrowserAccessibility* Create() override { |
60 return new CountedBrowserAccessibility(); | 56 return new CountedBrowserAccessibility(); |
61 } | 57 } |
62 }; | 58 }; |
63 | 59 |
64 class TestBrowserAccessibilityDelegate | 60 class TestBrowserAccessibilityDelegate |
65 : public BrowserAccessibilityDelegate { | 61 : public BrowserAccessibilityDelegate { |
66 public: | 62 public: |
67 TestBrowserAccessibilityDelegate() | 63 TestBrowserAccessibilityDelegate() |
68 : got_fatal_error_(false) {} | 64 : got_fatal_error_(false) {} |
69 | 65 |
70 virtual void AccessibilitySetFocus(int acc_obj_id) override {} | 66 void AccessibilitySetFocus(int acc_obj_id) override {} |
71 virtual void AccessibilityDoDefaultAction(int acc_obj_id) override {} | 67 void AccessibilityDoDefaultAction(int acc_obj_id) override {} |
72 virtual void AccessibilityShowMenu(const gfx::Point& point) override {} | 68 void AccessibilityShowMenu(const gfx::Point& point) override {} |
73 virtual void AccessibilityScrollToMakeVisible( | 69 void AccessibilityScrollToMakeVisible(int acc_obj_id, |
74 int acc_obj_id, const gfx::Rect& subfocus) override {} | 70 const gfx::Rect& subfocus) override {} |
75 virtual void AccessibilityScrollToPoint( | 71 void AccessibilityScrollToPoint(int acc_obj_id, |
76 int acc_obj_id, const gfx::Point& point) override {} | 72 const gfx::Point& point) override {} |
77 virtual void AccessibilitySetTextSelection( | 73 void AccessibilitySetTextSelection(int acc_obj_id, |
78 int acc_obj_id, int start_offset, int end_offset) override {} | 74 int start_offset, |
79 virtual bool AccessibilityViewHasFocus() const override { | 75 int end_offset) override {} |
80 return false; | 76 bool AccessibilityViewHasFocus() const override { return false; } |
81 } | 77 gfx::Rect AccessibilityGetViewBounds() const override { return gfx::Rect(); } |
82 virtual gfx::Rect AccessibilityGetViewBounds() const override { | 78 gfx::Point AccessibilityOriginInScreen( |
83 return gfx::Rect(); | |
84 } | |
85 virtual gfx::Point AccessibilityOriginInScreen( | |
86 const gfx::Rect& bounds) const override { | 79 const gfx::Rect& bounds) const override { |
87 return gfx::Point(); | 80 return gfx::Point(); |
88 } | 81 } |
89 virtual void AccessibilityHitTest(const gfx::Point& point) override {} | 82 void AccessibilityHitTest(const gfx::Point& point) override {} |
90 virtual void AccessibilityFatalError() override { | 83 void AccessibilityFatalError() override { got_fatal_error_ = true; } |
91 got_fatal_error_ = true; | 84 gfx::AcceleratedWidget AccessibilityGetAcceleratedWidget() override { |
92 } | |
93 virtual gfx::AcceleratedWidget AccessibilityGetAcceleratedWidget() override { | |
94 return gfx::kNullAcceleratedWidget; | 85 return gfx::kNullAcceleratedWidget; |
95 } | 86 } |
96 virtual gfx::NativeViewAccessible AccessibilityGetNativeViewAccessible() | 87 gfx::NativeViewAccessible AccessibilityGetNativeViewAccessible() override { |
97 override { | |
98 return NULL; | 88 return NULL; |
99 } | 89 } |
100 virtual BrowserAccessibilityManager* AccessibilityGetChildFrame( | 90 BrowserAccessibilityManager* AccessibilityGetChildFrame( |
101 int accessibility_node_id) override { | 91 int accessibility_node_id) override { |
102 return NULL; | 92 return NULL; |
103 } | 93 } |
104 virtual BrowserAccessibility* AccessibilityGetParentFrame() override { | 94 BrowserAccessibility* AccessibilityGetParentFrame() override { return NULL; } |
105 return NULL; | |
106 } | |
107 | 95 |
108 bool got_fatal_error() const { return got_fatal_error_; } | 96 bool got_fatal_error() const { return got_fatal_error_; } |
109 void reset_got_fatal_error() { got_fatal_error_ = false; } | 97 void reset_got_fatal_error() { got_fatal_error_ = false; } |
110 | 98 |
111 private: | 99 private: |
112 bool got_fatal_error_; | 100 bool got_fatal_error_; |
113 }; | 101 }; |
114 | 102 |
115 } // anonymous namespace | 103 } // anonymous namespace |
116 | 104 |
(...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 ASSERT_EQ(NULL, manager->NextInTreeOrder(node5_accessible)); | 928 ASSERT_EQ(NULL, manager->NextInTreeOrder(node5_accessible)); |
941 | 929 |
942 ASSERT_EQ(NULL, manager->PreviousInTreeOrder(NULL)); | 930 ASSERT_EQ(NULL, manager->PreviousInTreeOrder(NULL)); |
943 ASSERT_EQ(node4_accessible, manager->PreviousInTreeOrder(node5_accessible)); | 931 ASSERT_EQ(node4_accessible, manager->PreviousInTreeOrder(node5_accessible)); |
944 ASSERT_EQ(node3_accessible, manager->PreviousInTreeOrder(node4_accessible)); | 932 ASSERT_EQ(node3_accessible, manager->PreviousInTreeOrder(node4_accessible)); |
945 ASSERT_EQ(node2_accessible, manager->PreviousInTreeOrder(node3_accessible)); | 933 ASSERT_EQ(node2_accessible, manager->PreviousInTreeOrder(node3_accessible)); |
946 ASSERT_EQ(root_accessible, manager->PreviousInTreeOrder(node2_accessible)); | 934 ASSERT_EQ(root_accessible, manager->PreviousInTreeOrder(node2_accessible)); |
947 } | 935 } |
948 | 936 |
949 } // namespace content | 937 } // namespace content |
OLD | NEW |