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 "content/browser/accessibility/browser_accessibility_win.h" | 5 #include "content/browser/accessibility/browser_accessibility_win.h" |
6 | 6 |
7 #include <UIAutomationClient.h> | 7 #include <UIAutomationClient.h> |
8 #include <UIAutomationCoreApi.h> | 8 #include <UIAutomationCoreApi.h> |
9 | 9 |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 1914 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1925 | 1925 |
1926 if (!out_x || !out_y || !out_width || !out_height) | 1926 if (!out_x || !out_y || !out_width || !out_height) |
1927 return E_INVALIDARG; | 1927 return E_INVALIDARG; |
1928 | 1928 |
1929 const string16& text_str = TextForIAccessibleText(); | 1929 const string16& text_str = TextForIAccessibleText(); |
1930 HandleSpecialTextOffset(text_str, &offset); | 1930 HandleSpecialTextOffset(text_str, &offset); |
1931 | 1931 |
1932 if (offset < 0 || offset > static_cast<LONG>(text_str.size())) | 1932 if (offset < 0 || offset > static_cast<LONG>(text_str.size())) |
1933 return E_INVALIDARG; | 1933 return E_INVALIDARG; |
1934 | 1934 |
| 1935 if (role_ != blink::WebAXRoleStaticText) |
| 1936 return E_FAIL; |
| 1937 |
1935 gfx::Rect character_bounds; | 1938 gfx::Rect character_bounds; |
1936 if (coordinate_type == IA2_COORDTYPE_SCREEN_RELATIVE) { | 1939 if (coordinate_type == IA2_COORDTYPE_SCREEN_RELATIVE) { |
1937 character_bounds = GetGlobalBoundsForRange(offset, 1); | 1940 character_bounds = GetGlobalBoundsForRange(offset, 1); |
1938 } else if (coordinate_type == IA2_COORDTYPE_PARENT_RELATIVE) { | 1941 } else if (coordinate_type == IA2_COORDTYPE_PARENT_RELATIVE) { |
1939 character_bounds = GetLocalBoundsForRange(offset, 1); | 1942 character_bounds = GetLocalBoundsForRange(offset, 1); |
1940 character_bounds -= location().OffsetFromOrigin(); | 1943 character_bounds -= location().OffsetFromOrigin(); |
1941 } else { | 1944 } else { |
1942 return E_INVALIDARG; | 1945 return E_INVALIDARG; |
1943 } | 1946 } |
1944 | 1947 |
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2710 if (!out_x || !out_y || !out_width || !out_height) | 2713 if (!out_x || !out_y || !out_width || !out_height) |
2711 return E_INVALIDARG; | 2714 return E_INVALIDARG; |
2712 | 2715 |
2713 const string16& text_str = TextForIAccessibleText(); | 2716 const string16& text_str = TextForIAccessibleText(); |
2714 if (start_index > text_str.size() || | 2717 if (start_index > text_str.size() || |
2715 end_index > text_str.size() || | 2718 end_index > text_str.size() || |
2716 start_index > end_index) { | 2719 start_index > end_index) { |
2717 return E_INVALIDARG; | 2720 return E_INVALIDARG; |
2718 } | 2721 } |
2719 | 2722 |
| 2723 if (role_ != blink::WebAXRoleStaticText) |
| 2724 return E_FAIL; |
| 2725 |
2720 gfx::Rect bounds = GetGlobalBoundsForRange( | 2726 gfx::Rect bounds = GetGlobalBoundsForRange( |
2721 start_index, end_index - start_index); | 2727 start_index, end_index - start_index); |
2722 *out_x = bounds.x(); | 2728 *out_x = bounds.x(); |
2723 *out_y = bounds.y(); | 2729 *out_y = bounds.y(); |
2724 *out_width = bounds.width(); | 2730 *out_width = bounds.width(); |
2725 *out_height = bounds.height(); | 2731 *out_height = bounds.height(); |
2726 return S_OK; | 2732 return S_OK; |
2727 } | 2733 } |
2728 | 2734 |
2729 STDMETHODIMP BrowserAccessibilityWin::scrollToSubstring( | 2735 STDMETHODIMP BrowserAccessibilityWin::scrollToSubstring( |
(...skipping 1035 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3765 // The role should always be set. | 3771 // The role should always be set. |
3766 DCHECK(!role_name_.empty() || ia_role_); | 3772 DCHECK(!role_name_.empty() || ia_role_); |
3767 | 3773 |
3768 // If we didn't explicitly set the IAccessible2 role, make it the same | 3774 // If we didn't explicitly set the IAccessible2 role, make it the same |
3769 // as the MSAA role. | 3775 // as the MSAA role. |
3770 if (!ia2_role_) | 3776 if (!ia2_role_) |
3771 ia2_role_ = ia_role_; | 3777 ia2_role_ = ia_role_; |
3772 } | 3778 } |
3773 | 3779 |
3774 } // namespace content | 3780 } // namespace content |
OLD | NEW |