Diff
Modified: trunk/Source/WebCore/ChangeLog (284528 => 284529)
--- trunk/Source/WebCore/ChangeLog 2021-10-20 13:26:22 UTC (rev 284528)
+++ trunk/Source/WebCore/ChangeLog 2021-10-20 13:34:05 UTC (rev 284529)
@@ -1,3 +1,28 @@
+2021-10-20 Carlos Garcia Campos <cgar...@igalia.com>
+
+ AX: Build with isolated tree enable is broken since r284075
+ https://bugs.webkit.org/show_bug.cgi?id=231667
+ <rdar://problem/84191590>
+
+ Reviewed by Andres Gonzalez.
+
+ The problem seems to be that AXPropertyValueVariant contains the same type twice (in 64 bit systems) AXID
+ (size_t -> long unsigned int) and uint64_t -> long unsigned int. That's actually allowed but makes the access
+ ambiguous. Since uint64_t is only used for SessionID, we can explicitly use SessionID instead.
+
+ * accessibility/AccessibilityObject.cpp:
+ (WebCore::AccessibilityObject::sessionID const):
+ * accessibility/AccessibilityObject.h:
+ * accessibility/AccessibilityObjectInterface.h:
+ * accessibility/isolatedtree/AXIsolatedObject.cpp:
+ (WebCore::AXIsolatedObject::initializeAttributeData):
+ (WebCore::AXIsolatedObject::sessionID const):
+ (WebCore::AXIsolatedObject::sessionIDAttributeValue const):
+ * accessibility/isolatedtree/AXIsolatedObject.h:
+ * accessibility/isolatedtree/AXIsolatedTree.h:
+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
+ (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
+
2021-10-20 Youenn Fablet <you...@apple.com>
Add support for requestVideoFrameCallback API and MediaStreamTrack-based backend support
Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.cpp (284528 => 284529)
--- trunk/Source/WebCore/accessibility/AccessibilityObject.cpp 2021-10-20 13:26:22 UTC (rev 284528)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.cpp 2021-10-20 13:34:05 UTC (rev 284529)
@@ -84,6 +84,7 @@
#include "TextIterator.h"
#include "UserGestureIndicator.h"
#include "VisibleUnits.h"
+#include <pal/SessionID.h>
#include <wtf/NeverDestroyed.h>
#include <wtf/RobinHoodHashSet.h>
#include <wtf/StdLibExtras.h>
@@ -3469,13 +3470,13 @@
return String();
}
-uint64_t AccessibilityObject::sessionID() const
+PAL::SessionID AccessibilityObject::sessionID() const
{
if (auto* document = topDocument()) {
if (auto* page = document->page())
- return page->sessionID().toUInt64();
+ return page->sessionID();
}
- return 0;
+ return PAL::SessionID(PAL::SessionID::SessionConstants::HashTableEmptyValueID);
}
String AccessibilityObject::tagName() const
Modified: trunk/Source/WebCore/accessibility/AccessibilityObject.h (284528 => 284529)
--- trunk/Source/WebCore/accessibility/AccessibilityObject.h 2021-10-20 13:26:22 UTC (rev 284528)
+++ trunk/Source/WebCore/accessibility/AccessibilityObject.h 2021-10-20 13:34:05 UTC (rev 284529)
@@ -761,7 +761,7 @@
void clearIsIgnoredFromParentData() override { m_isIgnoredFromParentData = { }; }
void setIsIgnoredFromParentDataForChild(AXCoreObject*) override;
- uint64_t sessionID() const override;
+ PAL::SessionID sessionID() const override;
String documentURI() const override;
String documentEncoding() const override;
AccessibilityChildrenVector documentLinks() override { return AccessibilityChildrenVector(); }
Modified: trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h (284528 => 284529)
--- trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h 2021-10-20 13:26:22 UTC (rev 284528)
+++ trunk/Source/WebCore/accessibility/AccessibilityObjectInterface.h 2021-10-20 13:34:05 UTC (rev 284529)
@@ -66,6 +66,10 @@
class AccessibilityObjectWrapper;
#endif
+namespace PAL {
+class SessionID;
+}
+
namespace WTF {
class TextStream;
}
@@ -1503,7 +1507,7 @@
virtual void clearIsIgnoredFromParentData() = 0;
virtual void setIsIgnoredFromParentDataForChild(AXCoreObject*) = 0;
- virtual uint64_t sessionID() const = 0;
+ virtual PAL::SessionID sessionID() const = 0;
virtual String documentURI() const = 0;
virtual String documentEncoding() const = 0;
virtual AccessibilityChildrenVector documentLinks() = 0;
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp (284528 => 284529)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp 2021-10-20 13:26:22 UTC (rev 284528)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp 2021-10-20 13:34:05 UTC (rev 284529)
@@ -30,6 +30,7 @@
#include "AXIsolatedTree.h"
#include "AXLogger.h"
+#include <pal/SessionID.h>
#if PLATFORM(COCOA)
#include <pal/spi/cocoa/AccessibilitySupportSoftLink.h>
@@ -412,7 +413,7 @@
if (isRoot) {
setObjectProperty(AXPropertyName::WebArea, object.webAreaObject());
- setProperty(AXPropertyName::SessionID, object.sessionID());
+ setProperty(AXPropertyName::SessionID, object.sessionID().isolatedCopy());
setProperty(AXPropertyName::DocumentURI, object.documentURI().isolatedCopy());
setProperty(AXPropertyName::DocumentEncoding, object.documentEncoding().isolatedCopy());
setObjectVectorProperty(AXPropertyName::DocumentLinks, object.documentLinks());
@@ -610,11 +611,11 @@
list.appendVector(classList.split(" "));
}
-uint64_t AXIsolatedObject::sessionID() const
+PAL::SessionID AXIsolatedObject::sessionID() const
{
if (auto root = tree()->rootNode())
- return root->uint64AttributeValue(AXPropertyName::SessionID);
- return 0;
+ return root->sessionIDAttributeValue(AXPropertyName::SessionID);
+ return PAL::SessionID(PAL::SessionID::SessionConstants::HashTableEmptyValueID);
}
String AXIsolatedObject::documentURI() const
@@ -826,6 +827,15 @@
return tree()->nodeForID(nodeID).get();
}
+PAL::SessionID AXIsolatedObject::sessionIDAttributeValue(AXPropertyName propertyName) const
+{
+ auto value = m_propertyMap.get(propertyName);
+ return WTF::switchOn(value,
+ [] (PAL::SessionID& typedValue) -> PAL::SessionID { return typedValue; },
+ [] (auto&) { return PAL::SessionID(PAL::SessionID::SessionConstants::HashTableEmptyValueID); }
+ );
+}
+
template<typename T>
T AXIsolatedObject::rectAttributeValue(AXPropertyName propertyName) const
{
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h (284528 => 284529)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h 2021-10-20 13:26:22 UTC (rev 284528)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.h 2021-10-20 13:34:05 UTC (rev 284529)
@@ -86,6 +86,7 @@
double doubleAttributeValue(AXPropertyName) const;
float floatAttributeValue(AXPropertyName) const;
AXCoreObject* objectAttributeValue(AXPropertyName) const;
+ PAL::SessionID sessionIDAttributeValue(AXPropertyName) const;
IntPoint intPointAttributeValue(AXPropertyName) const;
Color colorAttributeValue(AXPropertyName) const;
URL urlAttributeValue(AXPropertyName) const;
@@ -376,7 +377,7 @@
void findMatchingObjects(AccessibilitySearchCriteria*, AccessibilityChildrenVector&) override;
// Attributes retrieved from the root node only so that the data isn't duplicated on each node.
- uint64_t sessionID() const override;
+ PAL::SessionID sessionID() const override;
String documentURI() const override;
String documentEncoding() const override;
#if PLATFORM(COCOA)
Modified: trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h (284528 => 284529)
--- trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h 2021-10-20 13:26:22 UTC (rev 284528)
+++ trunk/Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h 2021-10-20 13:34:05 UTC (rev 284529)
@@ -29,6 +29,7 @@
#include "AccessibilityObjectInterface.h"
#include "PageIdentifier.h"
+#include <pal/SessionID.h>
#include <wtf/HashMap.h>
#include <wtf/Lock.h>
#include <wtf/RefPtr.h>
@@ -317,7 +318,7 @@
WebArea,
};
-using AXPropertyValueVariant = std::variant<std::nullptr_t, String, bool, int, unsigned, double, float, uint64_t, Color, URL, LayoutRect, FloatRect, AXID, IntPoint, OptionSet<SpeakAs>, std::pair<unsigned, unsigned>, Vector<AccessibilityText>, Vector<AXID>, Vector<std::pair<AXID, AXID>>, Vector<String>, Path>;
+using AXPropertyValueVariant = std::variant<std::nullptr_t, String, bool, int, unsigned, double, float, uint64_t, Color, URL, LayoutRect, FloatRect, PAL::SessionID, IntPoint, OptionSet<SpeakAs>, std::pair<unsigned, unsigned>, Vector<AccessibilityText>, Vector<AXID>, Vector<std::pair<AXID, AXID>>, Vector<String>, Path>;
using AXPropertyMap = HashMap<AXPropertyName, AXPropertyValueVariant, WTF::IntHash<AXPropertyName>, WTF::StrongEnumHashTraits<AXPropertyName>>;
struct AXPropertyChange {
Modified: trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (284528 => 284529)
--- trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2021-10-20 13:26:22 UTC (rev 284528)
+++ trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm 2021-10-20 13:34:05 UTC (rev 284529)
@@ -78,6 +78,7 @@
#import "TextIterator.h"
#import "VisibleUnits.h"
#import "WebCoreFrameView.h"
+#import <pal/SessionID.h>
#import <pal/spi/cocoa/NSAccessibilitySPI.h>
#import <wtf/cocoa/TypeCastsCocoa.h>
#import <wtf/cocoa/VectorCocoa.h>
@@ -2239,7 +2240,7 @@
if ([attributeName isEqualToString:NSAccessibilityCaretBrowsingEnabledAttribute])
return [NSNumber numberWithBool:backingObject->caretBrowsingEnabled()];
if ([attributeName isEqualToString:NSAccessibilityWebSessionIDAttribute])
- return @(backingObject->sessionID());
+ return @(backingObject->sessionID().toUInt64());
}
if (backingObject->isTextControl()) {