summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-16 12:43:35 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-16 12:43:35 +0000
commit18f1a3ca657aad67fb2ce987f21451e101fd08c1 (patch)
treec9bfcebc6adc3b1998f8810d4e94980798079426
parentb68c07b987b2b4058ca8b800a7d40c44671a2149 (diff)
downloadchromium_src-18f1a3ca657aad67fb2ce987f21451e101fd08c1.zip
chromium_src-18f1a3ca657aad67fb2ce987f21451e101fd08c1.tar.gz
chromium_src-18f1a3ca657aad67fb2ce987f21451e101fd08c1.tar.bz2
Return AXURL from NSAccessibilityURLAttribute.
We have to be careful, VoiceOver crashes if we return an empty string as a url, so now we only expose the attribute if there is a valid url. BUG=83173 Review URL: https://codereview.chromium.org/239503003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264181 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/accessibility/browser_accessibility_cocoa.h2
-rw-r--r--content/browser/accessibility/browser_accessibility_cocoa.mm17
2 files changed, 15 insertions, 4 deletions
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.h b/content/browser/accessibility/browser_accessibility_cocoa.h
index 11b44ac..479c362 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.h
+++ b/content/browser/accessibility/browser_accessibility_cocoa.h
@@ -97,7 +97,7 @@
@property(nonatomic, readonly) NSArray* tabs;
@property(nonatomic, readonly) NSString* title;
@property(nonatomic, readonly) id titleUIElement;
-@property(nonatomic, readonly) NSString* url;
+@property(nonatomic, readonly) NSURL* url;
@property(nonatomic, readonly) NSString* value;
@property(nonatomic, readonly) NSString* valueDescription;
@property(nonatomic, readonly) NSValue* visibleCharacterRange;
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index 7a3a44b..f16db1a 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -888,12 +888,17 @@ NSDictionary* attributeToMethodNameMap = nil;
return nil;
}
-- (NSString*)url {
+- (NSURL*)url {
StringAttribute urlAttribute =
[[self role] isEqualToString:@"AXWebArea"] ?
ui::AX_ATTR_DOC_URL :
ui::AX_ATTR_URL;
- return NSStringForStringAttribute(browserAccessibility_, urlAttribute);
+
+ std::string urlStr = browserAccessibility_->GetStringAttribute(urlAttribute);
+ if (urlStr.empty())
+ return nil;
+
+ return [NSURL URLWithString:(base::SysUTF8ToNSString(urlStr))];
}
- (id)value {
@@ -1287,7 +1292,6 @@ NSDictionary* attributeToMethodNameMap = nil;
NSAccessibilityTopLevelUIElementAttribute,
NSAccessibilityValueAttribute,
NSAccessibilityWindowAttribute,
- NSAccessibilityURLAttribute,
@"AXAccessKey",
@"AXInvalid",
@"AXRequired",
@@ -1374,6 +1378,13 @@ NSDictionary* attributeToMethodNameMap = nil;
}
}
+ // Add the url attribute only if it has a valid url.
+ if ([self url] != nil) {
+ [ret addObjectsFromArray:[NSArray arrayWithObjects:
+ NSAccessibilityURLAttribute,
+ nil]];
+ }
+
// Live regions.
if (browserAccessibility_->HasStringAttribute(
ui::AX_ATTR_LIVE_STATUS)) {