uiautomationcore: Add support for UIAutomationType_String properties.

Signed-off-by: Connor McAdams <cmcadams@codeweavers.com>
This commit is contained in:
Connor McAdams 2022-06-20 16:19:17 -04:00 committed by Alexandre Julliard
parent 0bc1f68761
commit c40bccb867
3 changed files with 39 additions and 22 deletions

View file

@ -4191,10 +4191,7 @@ static void check_uia_prop_val(PROPERTYID prop_id, enum UIAutomationType type, V
switch (type)
{
case UIAutomationType_String:
todo_wine ok(V_VT(v) == VT_BSTR, "Unexpected VT %d\n", V_VT(v));
if (V_VT(v) != VT_BSTR)
break;
ok(V_VT(v) == VT_BSTR, "Unexpected VT %d\n", V_VT(v));
ok(!lstrcmpW(V_BSTR(v), uia_bstr_prop_str), "Unexpected BSTR %s\n", wine_dbgstr_w(V_BSTR(v)));
ok_method_sequence(get_prop_seq, NULL);
break;
@ -4417,10 +4414,7 @@ static void test_UiaGetPropertyValue(void)
}
winetest_push_context("prop_id %d", prop_id);
hr = UiaGetPropertyValue(node, prop_id, &v);
if (hr == E_NOTIMPL)
todo_wine ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
else
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
check_uia_prop_val(prop_id, elem_prop->type, &v);
/*

View file

@ -396,6 +396,15 @@ static HRESULT WINAPI uia_provider_get_prop_val(IWineUiaProvider *iface,
*ret_val = v;
break;
case UIAutomationType_String:
if (V_VT(&v) != VT_BSTR)
{
WARN("Invalid vt %d for UIAutomationType_String\n", V_VT(&v));
goto exit;
}
*ret_val = v;
break;
case UIAutomationType_Element:
{
IRawElementProviderSimple *elprov;

View file

@ -32,21 +32,26 @@ static int __cdecl uia_property_guid_compare(const void *a, const void *b)
/* Sorted by GUID. */
static const struct uia_prop_info default_uia_properties[] = {
{ &AutomationId_Property_GUID, UIA_AutomationIdPropertyId, },
{ &FrameworkId_Property_GUID, UIA_FrameworkIdPropertyId, },
{ &AutomationId_Property_GUID, UIA_AutomationIdPropertyId,
UIAutomationType_String, },
{ &FrameworkId_Property_GUID, UIA_FrameworkIdPropertyId,
UIAutomationType_String, },
{ &IsTransformPatternAvailable_Property_GUID, UIA_IsTransformPatternAvailablePropertyId, },
{ &IsScrollItemPatternAvailable_Property_GUID, UIA_IsScrollItemPatternAvailablePropertyId, },
{ &IsExpandCollapsePatternAvailable_Property_GUID, UIA_IsExpandCollapsePatternAvailablePropertyId, },
{ &CenterPoint_Property_GUID, UIA_CenterPointPropertyId, },
{ &IsTableItemPatternAvailable_Property_GUID, UIA_IsTableItemPatternAvailablePropertyId, },
{ &Scroll_HorizontalScrollPercent_Property_GUID, UIA_ScrollHorizontalScrollPercentPropertyId, },
{ &AccessKey_Property_GUID, UIA_AccessKeyPropertyId, },
{ &AccessKey_Property_GUID, UIA_AccessKeyPropertyId,
UIAutomationType_String, },
{ &RangeValue_Maximum_Property_GUID, UIA_RangeValueMaximumPropertyId, },
{ &ClassName_Property_GUID, UIA_ClassNamePropertyId, },
{ &ClassName_Property_GUID, UIA_ClassNamePropertyId,
UIAutomationType_String, },
{ &Transform2_ZoomMinimum_Property_GUID, UIA_Transform2ZoomMinimumPropertyId, },
{ &LegacyIAccessible_Description_Property_GUID, UIA_LegacyIAccessibleDescriptionPropertyId, },
{ &Transform2_ZoomLevel_Property_GUID, UIA_Transform2ZoomLevelPropertyId, },
{ &Name_Property_GUID, UIA_NamePropertyId, },
{ &Name_Property_GUID, UIA_NamePropertyId,
UIAutomationType_String, },
{ &GridItem_RowSpan_Property_GUID, UIA_GridItemRowSpanPropertyId, },
{ &Size_Property_GUID, UIA_SizePropertyId,
UIAutomationType_DoubleArray, },
@ -54,7 +59,8 @@ static const struct uia_prop_info default_uia_properties[] = {
{ &Styles_FillPatternStyle_Property_GUID, UIA_StylesFillPatternStylePropertyId, },
{ &FlowsTo_Property_GUID, UIA_FlowsToPropertyId,
UIAutomationType_ElementArray, },
{ &ItemStatus_Property_GUID, UIA_ItemStatusPropertyId, },
{ &ItemStatus_Property_GUID, UIA_ItemStatusPropertyId,
UIAutomationType_String, },
{ &Scroll_VerticalViewSize_Property_GUID, UIA_ScrollVerticalViewSizePropertyId, },
{ &Selection_IsSelectionRequired_Property_GUID, UIA_SelectionIsSelectionRequiredPropertyId, },
{ &IsGridItemPatternAvailable_Property_GUID, UIA_IsGridItemPatternAvailablePropertyId, },
@ -100,9 +106,11 @@ static const struct uia_prop_info default_uia_properties[] = {
{ &IsTransformPattern2Available_Property_GUID, UIA_IsTransformPattern2AvailablePropertyId, },
{ &LabeledBy_Property_GUID, UIA_LabeledByPropertyId,
UIAutomationType_Element, },
{ &ItemType_Property_GUID, UIA_ItemTypePropertyId, },
{ &ItemType_Property_GUID, UIA_ItemTypePropertyId,
UIAutomationType_String, },
{ &Transform_CanMove_Property_GUID, UIA_TransformCanMovePropertyId, },
{ &LocalizedControlType_Property_GUID, UIA_LocalizedControlTypePropertyId, },
{ &LocalizedControlType_Property_GUID, UIA_LocalizedControlTypePropertyId,
UIAutomationType_String, },
{ &Annotation_AnnotationTypeId_Property_GUID, UIA_AnnotationAnnotationTypeIdPropertyId, },
{ &FlowsFrom_Property_GUID, UIA_FlowsFromPropertyId,
UIAutomationType_ElementArray, },
@ -154,24 +162,28 @@ static const struct uia_prop_info default_uia_properties[] = {
{ &SpreadsheetItem_Formula_Property_GUID, UIA_SpreadsheetItemFormulaPropertyId, },
{ &IsEnabled_Property_GUID, UIA_IsEnabledPropertyId,
UIAutomationType_Bool, },
{ &LocalizedLandmarkType_Property_GUID, UIA_LocalizedLandmarkTypePropertyId, },
{ &LocalizedLandmarkType_Property_GUID, UIA_LocalizedLandmarkTypePropertyId,
UIAutomationType_String, },
{ &IsDataValidForForm_Property_GUID, UIA_IsDataValidForFormPropertyId,
UIAutomationType_Bool, },
{ &IsControlElement_Property_GUID, UIA_IsControlElementPropertyId,
UIAutomationType_Bool, },
{ &HelpText_Property_GUID, UIA_HelpTextPropertyId, },
{ &HelpText_Property_GUID, UIA_HelpTextPropertyId,
UIAutomationType_String, },
{ &Table_RowHeaders_Property_GUID, UIA_TableRowHeadersPropertyId, },
{ &ControllerFor_Property_GUID, UIA_ControllerForPropertyId,
UIAutomationType_ElementArray, },
{ &ProviderDescription_Property_GUID, UIA_ProviderDescriptionPropertyId, },
{ &AriaProperties_Property_GUID, UIA_AriaPropertiesPropertyId, },
{ &AriaProperties_Property_GUID, UIA_AriaPropertiesPropertyId,
UIAutomationType_String, },
{ &LiveSetting_Property_GUID, UIA_LiveSettingPropertyId,
UIAutomationType_Int, },
{ &Selection2_LastSelectedItem_Property_GUID, UIA_Selection2LastSelectedItemPropertyId, },
{ &Transform2_CanZoom_Property_GUID, UIA_Transform2CanZoomPropertyId, },
{ &Window_IsModal_Property_GUID, UIA_WindowIsModalPropertyId, },
{ &Annotation_AnnotationTypeName_Property_GUID, UIA_AnnotationAnnotationTypeNamePropertyId, },
{ &AriaRole_Property_GUID, UIA_AriaRolePropertyId, },
{ &AriaRole_Property_GUID, UIA_AriaRolePropertyId,
UIAutomationType_String, },
{ &Scroll_VerticallyScrollable_Property_GUID, UIA_ScrollVerticallyScrollablePropertyId, },
{ &RangeValue_Value_Property_GUID, UIA_RangeValueValuePropertyId, },
{ &ProcessId_Property_GUID, UIA_ProcessIdPropertyId,
@ -225,7 +237,8 @@ static const struct uia_prop_info default_uia_properties[] = {
{ &Window_IsTopmost_Property_GUID, UIA_WindowIsTopmostPropertyId, },
{ &IsCustomNavigationPatternAvailable_Property_GUID, UIA_IsCustomNavigationPatternAvailablePropertyId, },
{ &Scroll_HorizontalViewSize_Property_GUID, UIA_ScrollHorizontalViewSizePropertyId, },
{ &AcceleratorKey_Property_GUID, UIA_AcceleratorKeyPropertyId, },
{ &AcceleratorKey_Property_GUID, UIA_AcceleratorKeyPropertyId,
UIAutomationType_String, },
{ &IsTextChildPatternAvailable_Property_GUID, UIA_IsTextChildPatternAvailablePropertyId, },
{ &LegacyIAccessible_Selection_Property_GUID, UIA_LegacyIAccessibleSelectionPropertyId, },
{ &FillType_Property_GUID, UIA_FillTypePropertyId,
@ -243,7 +256,8 @@ static const struct uia_prop_info default_uia_properties[] = {
{ &IsSelectionPattern2Available_Property_GUID, UIA_IsSelectionPattern2AvailablePropertyId, },
{ &MultipleView_SupportedViews_Property_GUID, UIA_MultipleViewSupportedViewsPropertyId, },
{ &Styles_FillPatternColor_Property_GUID, UIA_StylesFillPatternColorPropertyId, },
{ &FullDescription_Property_GUID, UIA_FullDescriptionPropertyId, },
{ &FullDescription_Property_GUID, UIA_FullDescriptionPropertyId,
UIAutomationType_String, },
};
static const int prop_id_idx[] = {