Diff
Modified: trunk/Source/WebCore/ChangeLog (151458 => 151459)
--- trunk/Source/WebCore/ChangeLog 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Source/WebCore/ChangeLog 2013-06-11 19:53:06 UTC (rev 151459)
@@ -1,3 +1,15 @@
+2013-06-11 Brent Fulgham <bfulg...@apple.com>
+
+ [Windows] Implement 'attributeValue' accessor to support testing.
+ https://bugs.webkit.org/show_bug.cgi?id=117513
+
+ Reviewed by Anders Carlsson.
+
+ * WebCore.vcxproj/WebCore.vcxproj: Add new implementation file.
+ * WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
+ * accessibility/win/AccessibilityObjectWrapperWin.cpp: Added.
+ * accessibility/win/AccessibilityObjectWrapperWin.h: Add declaration
+
2013-05-27 Robert Hogan <rob...@webkit.org>
Positioned Replaced Elements That Aren't RenderReplaced get Incorrect Width
Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (151458 => 151459)
--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj 2013-06-11 19:53:06 UTC (rev 151459)
@@ -3882,6 +3882,7 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
</ClCompile>
+ <ClCompile Include="..\accessibility\win\AccessibilityObjectWrapperWin.cpp" />
<ClCompile Include="..\accessibility\win\AccessibilityObjectWin.cpp" />
<ClCompile Include="..\accessibility\win\AXObjectCacheWin.cpp" />
<ClCompile Include="..\page\animation\AnimationBase.cpp" />
@@ -13532,4 +13533,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (151458 => 151459)
--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters 2013-06-11 19:53:06 UTC (rev 151459)
@@ -687,6 +687,9 @@
<ClCompile Include="..\accessibility\AXObjectCache.cpp">
<Filter>accessibility</Filter>
</ClCompile>
+ <ClCompile Include="..\accessibility\win\AccessibilityObjectWrapperWin.cpp">
+ <Filter>accessibility\win</Filter>
+ </ClCompile>
<ClCompile Include="..\accessibility\win\AccessibilityObjectWin.cpp">
<Filter>accessibility\win</Filter>
</ClCompile>
@@ -2432,6 +2435,7 @@
</ClCompile>
<ClCompile Include="..\rendering\EllipsisBox.cpp">
<Filter>rendering</Filter>
+ </ClCompile>
<ClCompile Include="..\rendering\shapes\PolygonShape.cpp">
<Filter>rendering</Filter>
</ClCompile>
@@ -2444,7 +2448,6 @@
<ClCompile Include="..\rendering\shapes\ShapeInsideInfo.cpp">
<Filter>rendering</Filter>
</ClCompile>
- </ClCompile>
<ClCompile Include="..\rendering\shapes\ShapeInterval.cpp">
<Filter>rendering</Filter>
</ClCompile>
Added: trunk/Source/WebCore/accessibility/win/AccessibilityObjectWrapperWin.cpp (0 => 151459)
--- trunk/Source/WebCore/accessibility/win/AccessibilityObjectWrapperWin.cpp (rev 0)
+++ trunk/Source/WebCore/accessibility/win/AccessibilityObjectWrapperWin.cpp 2013-06-11 19:53:06 UTC (rev 151459)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2013 Apple Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "AccessibilityObjectWrapperWin.h"
+
+#if HAVE(ACCESSIBILITY)
+
+#include "AXObjectCache.h"
+#include "AccessibilityObject.h"
+#include "HTMLNames.h"
+#include "QualifiedName.h"
+
+namespace WebCore {
+
+AtomicString AccessibilityObjectWrapper::accessibilityAttributeValue(const AtomicString& attributeName)
+{
+ // FIXME: This should be fleshed out to match the Mac version
+
+ // Used by DRT to find an accessible node by its element id.
+ if (attributeName == "AXDRTElementIdAttribute")
+ return m_object->getAttribute(WebCore::HTMLNames::idAttr);
+
+ return emptyString();
+}
+
+
+} // namespace WebCore
+
+#endif // HAVE(ACCESSIBILITY)
Modified: trunk/Source/WebCore/accessibility/win/AccessibilityObjectWrapperWin.h (151458 => 151459)
--- trunk/Source/WebCore/accessibility/win/AccessibilityObjectWrapperWin.h 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Source/WebCore/accessibility/win/AccessibilityObjectWrapperWin.h 2013-06-11 19:53:06 UTC (rev 151459)
@@ -27,6 +27,8 @@
#ifndef AccessibilityObjectWrapperWin_h
#define AccessibilityObjectWrapperWin_h
+#include <wtf/text/AtomicString.h>
+
namespace WebCore {
class AccessibilityObject;
@@ -42,6 +44,8 @@
bool attached() const { return m_object; }
AccessibilityObject* accessibilityObject() const { return m_object; }
+ AtomicString accessibilityAttributeValue(const AtomicString&);
+
protected:
AccessibilityObjectWrapper(AccessibilityObject* obj) : m_object(obj) { }
AccessibilityObjectWrapper() : m_object(0) { }
Modified: trunk/Source/WebKit/win/AccessibleBase.cpp (151458 => 151459)
--- trunk/Source/WebKit/win/AccessibleBase.cpp 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Source/WebKit/win/AccessibleBase.cpp 2013-06-11 19:53:06 UTC (rev 151459)
@@ -46,6 +46,7 @@
#include <WebCore/RenderFrame.h>
#include <WebCore/RenderObject.h>
#include <WebCore/RenderView.h>
+#include <comutil.h>
#include <oleacc.h>
#include <wtf/RefPtr.h>
#include <wtf/text/StringBuilder.h>
@@ -836,3 +837,16 @@
*result = (otherAccessibleBase == this || otherAccessibleBase->m_object == m_object);
return S_OK;
}
+
+HRESULT AccessibleBase::attributeValue(BSTR key, BSTR* value)
+{
+ if (!value)
+ return E_POINTER;
+
+ AtomicString keyAtomic(_com_util::ConvertBSTRToString(key));
+ AtomicString valueAtomic = accessibilityAttributeValue(keyAtomic);
+
+ *value = BString(valueAtomic).release();
+
+ return S_OK;
+}
Modified: trunk/Source/WebKit/win/AccessibleBase.h (151458 => 151459)
--- trunk/Source/WebKit/win/AccessibleBase.h 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Source/WebKit/win/AccessibleBase.h 2013-06-11 19:53:06 UTC (rev 151459)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2009, 2010, 2013 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -94,6 +94,7 @@
// IAccessibleComparable
virtual HRESULT STDMETHODCALLTYPE isSameObject(IAccessibleComparable* other, BOOL* result);
+ virtual HRESULT STDMETHODCALLTYPE attributeValue(BSTR key, BSTR* value);
protected:
AccessibleBase(WebCore::AccessibilityObject*);
Modified: trunk/Source/WebKit/win/ChangeLog (151458 => 151459)
--- trunk/Source/WebKit/win/ChangeLog 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Source/WebKit/win/ChangeLog 2013-06-11 19:53:06 UTC (rev 151459)
@@ -1,3 +1,15 @@
+2013-06-11 Brent Fulgham <bfulg...@apple.com>
+
+ [Windows] Implement 'attributeValue' accessor to support testing.
+ https://bugs.webkit.org/show_bug.cgi?id=117513
+
+ Reviewed by Anders Carlsson.
+
+ * AccessibleBase.cpp:
+ (AccessibleBase::attributeValue): Added.
+ * AccessibleBase.h: Added method declaration.
+ * Interfaces/AccessibleComparable.idl: New accessor interface.
+
2013-06-09 Brent Fulgham <bfulg...@apple.com>
[Windows] Provide MSAA mappings for more WebCore roles.
Modified: trunk/Source/WebKit/win/Interfaces/AccessibleComparable.idl (151458 => 151459)
--- trunk/Source/WebKit/win/Interfaces/AccessibleComparable.idl 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Source/WebKit/win/Interfaces/AccessibleComparable.idl 2013-06-11 19:53:06 UTC (rev 151459)
@@ -42,4 +42,5 @@
interface IAccessibleComparable : IAccessible
{
HRESULT isSameObject([in] IAccessibleComparable* other, [out, retval] BOOL* result);
+ HRESULT attributeValue([in] BSTR key, [out, retval] BSTR* value);
}
Modified: trunk/Tools/ChangeLog (151458 => 151459)
--- trunk/Tools/ChangeLog 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Tools/ChangeLog 2013-06-11 19:53:06 UTC (rev 151459)
@@ -1,3 +1,15 @@
+2013-06-11 Brent Fulgham <bfulg...@apple.com>
+
+ [Windows] Implement 'attributeValue' accessor to support testing
+ https://bugs.webkit.org/show_bug.cgi?id=117513
+
+ Reviewed by Anders Carlsson.
+
+ * DumpRenderTree/win/AccessibilityControllerWin.cpp:
+ (comparableObject): Move earlier in file.
+ (findAccessibleObjectById): New implemenation.
+ (AccessibilityController::accessibleElementById): New implementation.
+
2013-06-11 Csaba Osztrogonác <o...@webkit.org>
Make WTR use its own temporary directory for application cache
Modified: trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp (151458 => 151459)
--- trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp 2013-06-11 19:49:40 UTC (rev 151458)
+++ trunk/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp 2013-06-11 19:53:06 UTC (rev 151459)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2009, 2010, 2013 Apple Inc. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -31,11 +31,14 @@
#include "FrameLoadDelegate.h"
#include <_javascript_Core/JSRetainPtr.h>
#include <_javascript_Core/JSStringRef.h>
+#include <_javascript_Core/JSStringRefBSTR.h>
+#include <WebCore/AccessibilityObjectWrapperWin.h>
#include <WebCore/COMPtr.h>
#include <WebKit/WebKit.h>
#include <oleacc.h>
#include <string>
#include <wtf/Assertions.h>
+#include <wtf/text/AtomicString.h>
using namespace std;
@@ -67,9 +70,63 @@
return 0;
}
+static COMPtr<IAccessibleComparable> comparableObject(const COMPtr<IServiceProvider>& serviceProvider)
+{
+ COMPtr<IAccessibleComparable> comparable;
+ serviceProvider->QueryService(SID_AccessibleComparable, __uuidof(IAccessibleComparable), reinterpret_cast<void**>(&comparable));
+ return comparable;
+}
+
+static COMPtr<IAccessible> findAccessibleObjectById(AccessibilityUIElement parentObject, BSTR idAttribute)
+{
+ COMPtr<IAccessible> parentIAccessible = parentObject.platformUIElement();
+
+ COMPtr<IServiceProvider> serviceProvider(Query, parentIAccessible);
+ if (!serviceProvider)
+ return 0;
+
+ COMPtr<IAccessibleComparable> comparable = comparableObject(serviceProvider);
+ if (!comparable)
+ return 0;
+
+ BSTR value;
+ if (SUCCEEDED(comparable->attributeValue(L"AXDRTElementIdAttribute", &value))) {
+ if (VARCMP_EQ == ::VarBstrCmp(value, idAttribute, LOCALE_USER_DEFAULT, 0)) {
+ ::SysFreeString(value);
+ return parentIAccessible;
+ }
+ }
+ ::SysFreeString(value);
+
+ long childCount = parentObject.childrenCount();
+ if (!childCount)
+ return 0;
+
+ COMPtr<IAccessible> result;
+ for (long i = 0; i < childCount; ++i) {
+ AccessibilityUIElement childAtIndex = parentObject.getChildAtIndex(i);
+
+ result = findAccessibleObjectById(childAtIndex, idAttribute);
+ if (result)
+ return result;
+ }
+
+ return 0;
+}
+
AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef id)
{
- // FIXME: implement
+ AccessibilityUIElement rootAccessibilityUIElement = rootElement();
+
+ BSTR idAttribute = JSStringCopyBSTR(id);
+
+ COMPtr<IAccessible> result = findAccessibleObjectById(rootAccessibilityUIElement, idAttribute);
+
+ ::SysFreeString(idAttribute);
+
+ if (result)
+ return AccessibilityUIElement(result);
+
return 0;
}
@@ -280,13 +337,6 @@
VariantClear(&vChild);
}
-static COMPtr<IAccessibleComparable> comparableObject(const COMPtr<IServiceProvider>& serviceProvider)
-{
- COMPtr<IAccessibleComparable> comparable;
- serviceProvider->QueryService(SID_AccessibleComparable, __uuidof(IAccessibleComparable), reinterpret_cast<void**>(&comparable));
- return comparable;
-}
-
bool AccessibilityController::addNotificationListener(JSObjectRef functionCallback)
{
return false;