fix: undisable AXTextMarker and related APIs on MAS (#32543)

This commit is contained in:
Jeremy Rose 2022-01-20 15:42:43 -08:00 committed by GitHub
parent 6b41356868
commit 87b3f6db9d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6,423 +6,6 @@ Subject: mas: avoid some private APIs
Guard usages in blink of private Mac APIs by MAS_BUILD, so they can be Guard usages in blink of private Mac APIs by MAS_BUILD, so they can be
excluded for people who want to submit their apps to the Mac App store. excluded for people who want to submit their apps to the Mac App store.
diff --git a/content/browser/accessibility/accessibility_tree_formatter_mac.mm b/content/browser/accessibility/accessibility_tree_formatter_mac.mm
index dc33d3674d6c3cf794a401a4c41bd1980ccd9a51..b44a24bcde38e407f93b13e5699323055d4a8a62 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_mac.mm
+++ b/content/browser/accessibility/accessibility_tree_formatter_mac.mm
@@ -275,6 +275,7 @@
return PopulateArray((NSArray*)value, indexer);
}
+#ifndef MAS_BUILD
// AXTextMarker
if (content::IsAXTextMarker(value)) {
return PopulateTextPosition(content::AXTextMarkerToAXPosition(value),
@@ -284,6 +285,7 @@
// AXTextMarkerRange
if (content::IsAXTextMarkerRange(value))
return PopulateTextMarkerRange(value, indexer);
+#endif
return AXNSObjectToBaseValue(value, indexer);
}
@@ -322,7 +324,7 @@
AXMakeConst(affinity));
return set;
}
-
+#ifndef MAS_BUILD
base::Value AccessibilityTreeFormatterMac::PopulateTextMarkerRange(
id marker_range,
const AXTreeIndexerMac* indexer) const {
@@ -338,7 +340,7 @@
PopulateTextPosition(ax_range.focus()->Clone(), indexer));
return dict;
}
-
+#endif
base::Value AccessibilityTreeFormatterMac::PopulateArray(
NSArray* node_array,
const AXTreeIndexerMac* indexer) const {
diff --git a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.h b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.h
index 2b05b9e3b9a5f4ad1951fbbbfa34adf129d8f408..0ca278cf6bb0ecc2127f5507941cf592449e2e61 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.h
+++ b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.h
@@ -89,12 +89,14 @@ class CONTENT_EXPORT AttributeInvoker final {
const ui::AXPropertyNode&,
bool log_failure = true) const;
+#ifndef MAS_BUILD
id DictNodeToTextMarker(const ui::AXPropertyNode&,
bool log_failure = true) const;
id PropertyNodeToTextMarker(const ui::AXPropertyNode&,
bool log_failure = true) const;
id PropertyNodeToTextMarkerRange(const ui::AXPropertyNode&,
bool log_failure = true) const;
+#endif
gfx::NativeViewAccessible LineIndexToNode(
const std::u16string line_index) const;
diff --git a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm
index 696d87b7aaf0c9de9c071bd97197192720752010..ebf3935d20ba22ccc0473252a1323be4bd003eec 100644
--- a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm
+++ b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm
@@ -189,9 +189,11 @@
if (IsNSAccessibilityElement(target) || IsAXUIElement(target))
return InvokeForAXElement(target, property_node);
+#ifndef MAS_BUILD
if (content::IsAXTextMarkerRange(target)) {
return InvokeForAXTextMarkerRange(target, property_node);
}
+#endif
if ([target isKindOfClass:[NSArray class]])
return InvokeForArray(target, property_node);
@@ -389,6 +391,7 @@
property_name == "AXTextMarkerRangeForUIElement") { // UIElement
return OptionalNSObject::NotNullOrError(PropertyNodeToUIElement(arg_node));
}
+#ifndef MAS_BUILD
if (property_name == "AXIndexForTextMarker" ||
property_name == "AXNextWordEndTextMarkerForTextMarker" ||
property_name ==
@@ -400,6 +403,7 @@
return OptionalNSObject::NotNullOrError(
PropertyNodeToTextMarkerRange(arg_node));
}
+#endif
return OptionalNSObject::NotApplicable();
}
@@ -412,6 +416,7 @@
return value;
// NSRange
+#ifndef MAS_BUILD
value = PropertyNodeToRange(property_node, false);
if (value)
return value;
@@ -428,6 +433,10 @@
// TextMarkerRange
return PropertyNodeToTextMarkerRange(property_node, false);
+#else
+
+ return PropertyNodeToRange(property_node, false);
+#endif
}
// NSNumber. Format: integer.
@@ -538,6 +547,7 @@
return uielement;
}
+#ifndef MAS_BUILD
id AttributeInvoker::DictNodeToTextMarker(const AXPropertyNode& dictnode,
bool log_failure) const {
if (!dictnode.IsDict()) {
@@ -627,6 +637,7 @@
return content::AXTextMarkerRangeFrom(anchor_textmarker, focus_textmarker);
}
+#endif
} // namespace a11y
} // namespace content
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.h b/content/browser/accessibility/browser_accessibility_cocoa.h
index 8ba9ceef621eaa8539d2e127ab75c23ab671f2a1..cdcf397f3fb4fb98b48fcd5080edb883eeb9b52e 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.h
+++ b/content/browser/accessibility/browser_accessibility_cocoa.h
@@ -148,7 +148,9 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker);
@property(nonatomic, readonly) NSNumber* enabled;
// Returns a text marker that points to the last character in the document that
// can be selected with Voiceover.
+#ifndef MAS_BUILD
@property(nonatomic, readonly) id endTextMarker;
+#endif
@property(nonatomic, readonly) NSNumber* expanded;
@property(nonatomic, readonly) NSNumber* focused;
@property(nonatomic, readonly) NSNumber* grabbed;
@@ -160,7 +162,9 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker);
// Index of a row, column, or tree item.
@property(nonatomic, readonly) NSNumber* index;
@property(nonatomic, readonly) NSNumber* treeItemRowIndex;
+#ifndef MAS_BUILD
@property(nonatomic, readonly) NSNumber* insertionPointLineNumber;
+#endif
@property(nonatomic, readonly) NSNumber* isMultiSelectable;
@property(nonatomic, readonly) NSNumber* loaded;
@property(nonatomic, readonly) NSNumber* loadingProgress;
@@ -179,14 +183,18 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker);
// The object is selected as a whole.
@property(nonatomic, readonly) NSNumber* selected;
@property(nonatomic, readonly) NSArray* selectedChildren;
+#ifndef MAS_BUILD
@property(nonatomic, readonly) NSString* selectedText;
@property(nonatomic, readonly) NSValue* selectedTextRange;
@property(nonatomic, readonly) id selectedTextMarkerRange;
+#endif
@property(nonatomic, readonly) NSValue* size;
@property(nonatomic, readonly) NSString* sortDirection;
// Returns a text marker that points to the first character in the document that
// can be selected with Voiceover.
+#ifndef MAS_BUILD
@property(nonatomic, readonly) id startTextMarker;
+#endif
// A string indicating the subrole of this object as far as accessibility
// is concerned.
@property(nonatomic, readonly) NSString* subrole;
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index 34fbe096ddcc84b156384f12a23f278c0f94e385..043c9b8113c4f15f0248839a69b7ee76e3da2794 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -188,6 +188,7 @@
// Private attributes that can be used for testing text markers, e.g. in dump
// tree tests.
+#ifndef MAS_BUILD
NSString* const
NSAccessibilityTextMarkerDebugDescriptionParameterizedAttribute =
@"AXTextMarkerDebugDescription";
@@ -197,6 +198,7 @@
NSString* const
NSAccessibilityTextMarkerNodeDebugDescriptionParameterizedAttribute =
@"AXTextMarkerNodeDebugDescription";
+#endif
// Other private attributes.
NSString* const NSAccessibilityIdentifierChromeAttribute = @"ChromeAXNodeId";
@@ -224,6 +226,7 @@
// The following are private accessibility APIs required for cursor navigation
// and text selection. VoiceOver started relying on them in Mac OS X 10.11.
// They are public as of the 12.0 SDK.
+#ifndef MAS_BUILD
#if !defined(MAC_OS_VERSION_12_0) || \
MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_VERSION_12_0
using AXTextMarkerRangeRef = CFTypeRef;
@@ -455,6 +458,7 @@ void AddMisspelledTextAttributes(const BrowserAccessibility::AXRange& ax_range,
AddMisspelledTextAttributes(ax_range, attributed_text);
return attributed_text;
}
+#endif
// Returns an autoreleased copy of the AXNodeData's attribute.
NSString* NSStringForStringAttribute(BrowserAccessibility* browserAccessibility,
@@ -716,6 +720,7 @@ bool IsSelectedStateRelevant(BrowserAccessibility* item) {
0 == strcmp([value objCType], @encode(NSRange));
}
+#ifndef MAS_BUILD
bool content::IsAXTextMarker(id object) {
if (object == nil)
return false;
@@ -760,6 +765,7 @@ bool IsSelectedStateRelevant(BrowserAccessibility* item) {
static_cast<AXTextMarkerRef>(focus_textmarker));
return [static_cast<id>(cf_marker_range) autorelease];
}
+#endif
@implementation BrowserAccessibilityCocoa
@@ -784,7 +790,9 @@ + (void)initialize {
{NSAccessibilityEditableAncestorAttribute, @"editableAncestor"},
{NSAccessibilityElementBusyAttribute, @"elementBusy"},
{NSAccessibilityEnabledAttribute, @"enabled"},
+#ifndef MAS_BUILD
{NSAccessibilityEndTextMarkerAttribute, @"endTextMarker"},
+#endif
{NSAccessibilityExpandedAttribute, @"expanded"},
{NSAccessibilityFocusableAncestorAttribute, @"focusableAncestor"},
{NSAccessibilityFocusedAttribute, @"focused"},
@@ -794,8 +802,10 @@ + (void)initialize {
{NSAccessibilityHighestEditableAncestorAttribute,
@"highestEditableAncestor"},
{NSAccessibilityIndexAttribute, @"index"},
+#ifndef MAS_BUILD
{NSAccessibilityInsertionPointLineNumberAttribute,
@"insertionPointLineNumber"},
+#endif
{NSAccessibilityIsMultiSelectableAttribute, @"isMultiSelectable"},
{NSAccessibilityLanguageAttribute, @"language"},
{NSAccessibilityLinkedUIElementsAttribute, @"linkedUIElements"},
@@ -814,13 +824,17 @@ + (void)initialize {
{NSAccessibilityRowsAttribute, @"rows"},
// TODO(aboxhall): expose
// NSAccessibilityServesAsTitleForUIElementsAttribute
+#ifndef MAS_BUILD
{NSAccessibilityStartTextMarkerAttribute, @"startTextMarker"},
+#endif
{NSAccessibilitySelectedAttribute, @"selected"},
{NSAccessibilitySelectedChildrenAttribute, @"selectedChildren"},
+#ifndef MAS_BUILD
{NSAccessibilitySelectedTextAttribute, @"selectedText"},
{NSAccessibilitySelectedTextRangeAttribute, @"selectedTextRange"},
{NSAccessibilitySelectedTextMarkerRangeAttribute,
@"selectedTextMarkerRange"},
+#endif
{NSAccessibilitySizeAttribute, @"size"},
{NSAccessibilitySortDirectionAttribute, @"sortDirection"},
{NSAccessibilitySubroleAttribute, @"subrole"},
@@ -1160,12 +1174,14 @@ - (NSNumber*)enabled {
// Returns a text marker that points to the last character in the document that
// can be selected with VoiceOver.
+#ifndef MAS_BUILD
- (id)endTextMarker {
if (![self instanceActive])
return nil;
BrowserAccessibility::AXPosition position = _owner->CreateTextPositionAt(0);
return CreateTextMarker(position->CreatePositionAtEndOfContent());
}
+#endif
- (NSNumber*)expanded {
if (![self instanceActive])
@@ -1338,6 +1354,7 @@ - (bool)findRowIndex:(BrowserAccessibilityCocoa*)toFind
return false;
}
+#ifndef MAS_BUILD
- (NSNumber*)AXInsertionPointLineNumber {
return [self insertionPointLineNumber];
}
@@ -1368,6 +1385,7 @@ - (NSNumber*)insertionPointLineNumber {
caretPosition->AsTextPosition()->text_offset());
return @(std::distance(lineStarts.begin(), iterator));
}
+#endif
// Returns whether or not this node should be ignored in the
// accessibility tree.
@@ -1692,8 +1710,12 @@ - (BOOL)shouldExposeTitleUIElement {
return content::AXTextEdit(newValue, std::u16string(), nil);
}
}
+#ifndef MAS_BUILD
return content::AXTextEdit(insertedText, deletedText,
CreateTextMarker(_owner->CreateTextPositionAt(i)));
+#else
+ return content::AXTextEdit(insertedText, deletedText, nil);
+#endif
}
// internal
@@ -1881,6 +1903,7 @@ - (NSArray*)selectedChildren {
return ret;
}
+#ifndef MAS_BUILD
- (NSString*)AXSelectedText {
return [self selectedText];
}
@@ -1941,6 +1964,7 @@ - (id)selectedTextMarkerRange {
// words correctly.
return CreateTextMarkerRange(ax_range.AsBackwardRange());
}
+#endif
- (NSValue*)size {
if (![self instanceActive])
@@ -1975,12 +1999,14 @@ - (NSString*)sortDirection {
// Returns a text marker that points to the first character in the document that
// can be selected with VoiceOver.
+#ifndef MAS_BUILD
- (id)startTextMarker {
if (![self instanceActive])
return nil;
BrowserAccessibility::AXPosition position = _owner->CreateTextPositionAt(0);
return CreateTextMarker(position->CreatePositionAtStartOfContent());
}
+#endif
- (NSString*)AXSubrole {
return [self subrole];
@@ -2308,12 +2334,14 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range {
NSMutableAttributedString* attributedTextContent =
[[[NSMutableAttributedString alloc]
initWithString:base::SysUTF16ToNSString(textContent)] autorelease];
+#ifndef MAS_BUILD
if (!_owner->IsText()) {
BrowserAccessibility::AXRange ax_range(
_owner->CreateTextPositionAt(0),
_owner->CreateTextPositionAt(static_cast<int>(textContent.length())));
AddMisspelledTextAttributes(ax_range, attributedTextContent);
}
+#endif
return [attributedTextContent attributedSubstringFromRange:range];
}
@@ -2448,6 +2476,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
return ToBrowserAccessibilityCocoa(cell);
}
+#ifndef MAS_BUILD
if ([attribute
isEqualToString:
NSAccessibilityUIElementForTextMarkerParameterizedAttribute]) {
@@ -2786,6 +2815,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
return CreateTextMarker(root->CreateTextPositionAt(index));
}
+#endif
if ([attribute isEqualToString:
NSAccessibilityBoundsForRangeParameterizedAttribute]) {
@@ -2816,6 +2846,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
return nil;
}
+#ifndef MAS_BUILD
if ([attribute
isEqualToString:
NSAccessibilityLineTextMarkerRangeForTextMarkerParameterizedAttribute]) {
@@ -2935,6 +2966,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute
return @(child->GetIndexInParent());
}
+#endif
return nil;
}
@@ -3453,6 +3485,7 @@ - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute {
->AsTextSelectionPosition()));
}
}
+#ifndef MAS_BUILD
if ([attribute
isEqualToString:NSAccessibilitySelectedTextMarkerRangeAttribute]) {
BrowserAccessibility::AXRange range = CreateRangeFromTextMarkerRange(value);
@@ -3463,6 +3496,7 @@ - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute {
range.anchor()->AsTextSelectionPosition(),
range.focus()->AsTextSelectionPosition()));
}
+#endif
}
- (id)accessibilityFocusedUIElement {
diff --git a/content/browser/accessibility/browser_accessibility_manager_mac.mm b/content/browser/accessibility/browser_accessibility_manager_mac.mm
index 2084f4677670646ba769f2fe68797a5e5647f3f3..49914bdc1cbd8f55fcd55eaf912df04279d86bb7 100644
--- a/content/browser/accessibility/browser_accessibility_manager_mac.mm
+++ b/content/browser/accessibility/browser_accessibility_manager_mac.mm
@@ -502,7 +502,7 @@ void PostAnnouncementNotification(NSString* announcement) {
if (native_focus_object && [native_focus_object instanceActive]) {
[user_info setObject:native_focus_object
forKey:ui::NSAccessibilityTextChangeElement];
-
+#ifndef MAS_BUILD
id selected_text = [native_focus_object selectedTextMarkerRange];
if (selected_text) {
NSString* const NSAccessibilitySelectedTextMarkerRangeAttribute =
@@ -510,6 +510,7 @@ void PostAnnouncementNotification(NSString* announcement) {
[user_info setObject:selected_text
forKey:NSAccessibilitySelectedTextMarkerRangeAttribute];
}
+#endif
}
return user_info;
diff --git a/content/common/pseudonymization_salt.cc b/content/common/pseudonymization_salt.cc diff --git a/content/common/pseudonymization_salt.cc b/content/common/pseudonymization_salt.cc
index 28e003bef910abff022def659fe18d4cd0549f8a..530bcbdb5d350f6486dc1e8536f7b279be69e241 100644 index 28e003bef910abff022def659fe18d4cd0549f8a..530bcbdb5d350f6486dc1e8536f7b279be69e241 100644
--- a/content/common/pseudonymization_salt.cc --- a/content/common/pseudonymization_salt.cc