| 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 |