Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: content/browser/accessibility/browser_accessibility_com_win.cc

Issue 2933353002: Forward four more BrowserAccessibility APIs to AXPlatformNode. (Closed)
Patch Set: linux testing via try Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2017 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_com_win.h" 5 #include "content/browser/accessibility/browser_accessibility_com_win.h"
6 6
7 #include <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 return false; 658 return false;
659 } 659 }
660 } 660 }
661 661
662 STDMETHODIMP BrowserAccessibilityComWin::get_accValue(VARIANT var_id, 662 STDMETHODIMP BrowserAccessibilityComWin::get_accValue(VARIANT var_id,
663 BSTR* value) { 663 BSTR* value) {
664 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_VALUE); 664 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_VALUE);
665 if (!owner()) 665 if (!owner())
666 return E_FAIL; 666 return E_FAIL;
667 667
668 if (!value) 668 return AXPlatformNodeWin::get_accValue(var_id, value);
669 return E_INVALIDARG;
670
671 BrowserAccessibilityComWin* target = GetTargetFromChildID(var_id);
672 if (!target)
673 return E_INVALIDARG;
674
675 if (target->IsRangeValueSupported()) {
676 base::string16 value_text = target->GetRangeValueText();
677 *value = SysAllocString(value_text.c_str());
678 DCHECK(*value);
679 return S_OK;
680 }
681
682 // Expose color well value.
683 if (target->ia2_role() == IA2_ROLE_COLOR_CHOOSER) {
684 unsigned int color = static_cast<unsigned int>(
685 target->owner()->GetIntAttribute(ui::AX_ATTR_COLOR_VALUE));
686 unsigned int red = SkColorGetR(color);
687 unsigned int green = SkColorGetG(color);
688 unsigned int blue = SkColorGetB(color);
689 base::string16 value_text;
690 value_text = base::UintToString16(red * 100 / 255) + L"% red " +
691 base::UintToString16(green * 100 / 255) + L"% green " +
692 base::UintToString16(blue * 100 / 255) + L"% blue";
693 *value = SysAllocString(value_text.c_str());
694 DCHECK(*value);
695 return S_OK;
696 }
697
698 *value = SysAllocString(target->value().c_str());
699 DCHECK(*value);
700 return S_OK;
701 } 669 }
702 670
703 STDMETHODIMP BrowserAccessibilityComWin::get_accHelpTopic(BSTR* help_file, 671 STDMETHODIMP BrowserAccessibilityComWin::get_accHelpTopic(BSTR* help_file,
704 VARIANT var_id, 672 VARIANT var_id,
705 LONG* topic_id) { 673 LONG* topic_id) {
706 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_HELP_TOPIC); 674 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_HELP_TOPIC);
707 return E_NOTIMPL; 675 return AXPlatformNodeWin::get_accHelpTopic(help_file, var_id, topic_id);
708 } 676 }
709 677
710 STDMETHODIMP BrowserAccessibilityComWin::get_accSelection(VARIANT* selected) { 678 STDMETHODIMP BrowserAccessibilityComWin::get_accSelection(VARIANT* selected) {
711 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_SELECTION); 679 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_GET_ACC_SELECTION);
712 if (!owner()) 680 if (!owner())
713 return E_FAIL; 681 return E_FAIL;
714 682
715 if (owner()->GetRole() != ui::AX_ROLE_LIST_BOX) 683 if (owner()->GetRole() != ui::AX_ROLE_LIST_BOX)
716 return E_NOTIMPL; 684 return E_NOTIMPL;
717 685
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 VARIANT var_id) { 730 VARIANT var_id) {
763 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ACC_SELECT); 731 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ACC_SELECT);
764 if (!owner()) 732 if (!owner())
765 return E_FAIL; 733 return E_FAIL;
766 734
767 return AXPlatformNodeWin::accSelect(flags_sel, var_id); 735 return AXPlatformNodeWin::accSelect(flags_sel, var_id);
768 } 736 }
769 737
770 STDMETHODIMP 738 STDMETHODIMP
771 BrowserAccessibilityComWin::put_accName(VARIANT var_id, BSTR put_name) { 739 BrowserAccessibilityComWin::put_accName(VARIANT var_id, BSTR put_name) {
772 return E_NOTIMPL; 740 if (!owner())
741 return E_FAIL;
742
743 return AXPlatformNodeWin::put_accName(var_id, put_name);
773 } 744 }
774 STDMETHODIMP 745 STDMETHODIMP
775 BrowserAccessibilityComWin::put_accValue(VARIANT var_id, BSTR put_val) { 746 BrowserAccessibilityComWin::put_accValue(VARIANT var_id, BSTR put_val) {
776 return E_NOTIMPL; 747 if (!owner())
748 return E_FAIL;
749
750 return AXPlatformNodeWin::put_accValue(var_id, put_val);
777 } 751 }
778 752
779 // 753 //
780 // IAccessible2 methods. 754 // IAccessible2 methods.
781 // 755 //
782 756
783 STDMETHODIMP BrowserAccessibilityComWin::role(LONG* role) { 757 STDMETHODIMP BrowserAccessibilityComWin::role(LONG* role) {
784 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ROLE); 758 WIN_ACCESSIBILITY_API_HISTOGRAM(UMA_API_ROLE);
785 if (!owner()) 759 if (!owner())
786 return E_FAIL; 760 return E_FAIL;
(...skipping 4804 matching lines...) Expand 10 before | Expand all | Expand 10 after
5591 5565
5592 BrowserAccessibilityComWin* ToBrowserAccessibilityComWin( 5566 BrowserAccessibilityComWin* ToBrowserAccessibilityComWin(
5593 BrowserAccessibility* obj) { 5567 BrowserAccessibility* obj) {
5594 if (!obj || !obj->IsNative()) 5568 if (!obj || !obj->IsNative())
5595 return nullptr; 5569 return nullptr;
5596 auto* result = static_cast<BrowserAccessibilityWin*>(obj)->GetCOM(); 5570 auto* result = static_cast<BrowserAccessibilityWin*>(obj)->GetCOM();
5597 return result; 5571 return result;
5598 } 5572 }
5599 5573
5600 } // namespace content 5574 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698