Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Unified Diff: content/browser/accessibility/browser_accessibility.cc

Issue 1768753003: Implemented the reporting of text style and language information on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated to using HashTable from base and GetInheritedStringAttribute instead of specialized methods… Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/accessibility/browser_accessibility.cc
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
index 7bb165b62668ca110bd4bb4a272e67d45329ef66..7bf09ccfcf738954df61f87e0dbcb5151e5a0dbd 100644
--- a/content/browser/accessibility/browser_accessibility.cc
+++ b/content/browser/accessibility/browser_accessibility.cc
@@ -230,8 +230,9 @@ BrowserAccessibility* BrowserAccessibility::InternalGetChild(
}
BrowserAccessibility* BrowserAccessibility::GetParent() const {
- if (!node_ || !manager_)
- return NULL;
+ if (!instance_active())
+ return nullptr;
+
ui::AXNode* parent = node_->parent();
if (parent)
return manager_->GetFromAXNode(parent);
@@ -362,8 +363,8 @@ gfx::Rect BrowserAccessibility::GetLocalBoundsForRange(int start, int len)
int local_end = overlap_end - child_start;
gfx::Rect child_rect = child->GetLocation();
- int text_direction = child->GetIntAttribute(
- ui::AX_ATTR_TEXT_DIRECTION);
+ auto text_direction = static_cast<ui::AXTextDirection>(
+ child->GetIntAttribute(ui::AX_ATTR_TEXT_DIRECTION));
const std::vector<int32_t>& character_offsets =
child->GetIntListAttribute(ui::AX_ATTR_CHARACTER_OFFSETS);
int start_pixel_offset =
@@ -631,6 +632,66 @@ bool BrowserAccessibility::GetFloatAttribute(
return GetData().GetFloatAttribute(attribute, value);
}
+bool BrowserAccessibility::HasInheritedStringAttribute(
+ ui::AXStringAttribute attribute) const {
+ if (!instance_active())
+ return false;
+
+ if (GetData().HasStringAttribute(attribute))
+ return true;
+ return GetParent() && GetParent()->HasInheritedStringAttribute(attribute);
+}
+
+std::string BrowserAccessibility::GetInheritedStringAttribute(
+ ui::AXStringAttribute attribute) const {
+ if (!instance_active())
+ return std::string();
+
+ std::string value;
+ if (GetInheritedStringAttribute(attribute, &value))
+ return value;
+ return std::string();
+}
+
+bool BrowserAccessibility::GetInheritedStringAttribute(
+ ui::AXStringAttribute attribute,
+ std::string* value) const {
+ if (!instance_active()) {
+ *value = std::string();
+ return false;
+ }
+
+ if (GetData().GetStringAttribute(attribute, value))
+ return true;
+ return GetParent() &&
+ GetParent()->GetData().GetStringAttribute(attribute, value);
+}
+
+base::string16 BrowserAccessibility::GetInheritedString16Attribute(
+ ui::AXStringAttribute attribute) const {
+ if (!instance_active())
+ return base::string16();
+
+ base::string16 value;
+ if (GetInheritedString16Attribute(attribute, &value))
+ return value;
+ return base::string16();
+}
+
+bool BrowserAccessibility::GetInheritedString16Attribute(
+ ui::AXStringAttribute attribute,
+ base::string16* value) const {
+ if (!instance_active()) {
+ *value = base::string16();
+ return false;
+ }
+
+ if (GetData().GetString16Attribute(attribute, value))
+ return true;
+ return GetParent() &&
+ GetParent()->GetData().GetString16Attribute(attribute, value);
+}
+
bool BrowserAccessibility::HasIntAttribute(
ui::AXIntAttribute attribute) const {
return GetData().HasIntAttribute(attribute);
@@ -849,6 +910,21 @@ base::string16 BrowserAccessibility::GetInnerText() const {
return text;
}
+// static
+// TODO(nektar): Figure out if there is an existing Skia function to use
dmazzoni 2016/03/07 23:38:10 You can use SkColorGetR, etc. from SkColor.h
+// instead.
+void BrowserAccessibility::RGBAToColorValues(unsigned int color,
+ unsigned int* red,
+ unsigned int* green,
+ unsigned int* blue,
+ unsigned int* alpha) {
+ DCHECK(red && green && blue && alpha);
+ *alpha = (color >> 24) & 0xFF;
+ *red = (color >> 16) & 0xFF;
+ *green = (color >> 8) & 0xFF;
+ *blue = color & 0xFF;
+}
+
void BrowserAccessibility::FixEmptyBounds(gfx::Rect* bounds) const
{
if (bounds->width() > 0 && bounds->height() > 0)

Powered by Google App Engine
This is Rietveld 408576698