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

Unified Diff: Source/modules/accessibility/AXNodeObject.cpp

Issue 1071873004: Changing slider values do not work properly when percent change of a step is less than one. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Just did some cleanup Created 5 years, 8 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
« no previous file with comments | « Source/modules/accessibility/AXNodeObject.h ('k') | Source/modules/accessibility/AXObject.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/accessibility/AXNodeObject.cpp
diff --git a/Source/modules/accessibility/AXNodeObject.cpp b/Source/modules/accessibility/AXNodeObject.cpp
index c9294b0ff1f2039b98b16582f4c5c83e50ccc39a..126ec7b261683b34617b1a83d09e1279c45695f8 100644
--- a/Source/modules/accessibility/AXNodeObject.cpp
+++ b/Source/modules/accessibility/AXNodeObject.cpp
@@ -128,10 +128,13 @@ void AXNodeObject::alterSliderValue(bool increase)
if (roleValue() != SliderRole)
return;
- if (!getAttribute(stepAttr).isEmpty())
- changeValueByStep(increase);
- else
- changeValueByPercent(increase ? 5 : -5);
+ float value = valueForRange();
+ float step = stepValueForRange();
+
+ value += increase ? step : -step;
+
+ setValue(String::number(value));
+ axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged);
}
String AXNodeObject::ariaAccessibilityDescription() const
@@ -155,18 +158,6 @@ void AXNodeObject::ariaLabeledByElements(WillBeHeapVector<RawPtrWillBeMember<Ele
elementsFromAttribute(elements, aria_labelledbyAttr);
}
-void AXNodeObject::changeValueByStep(bool increase)
-{
- float step = stepValueForRange();
- float value = valueForRange();
-
- value += increase ? step : -step;
-
- setValue(String::number(value));
-
- axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged);
-}
-
bool AXNodeObject::computeAccessibilityIsIgnored() const
{
#if ENABLE(ASSERT)
@@ -770,6 +761,18 @@ bool AXNodeObject::isSlider() const
return roleValue() == SliderRole;
}
+bool AXNodeObject::isNativeSlider() const
+{
+ Node* node = this->node();
+ if (!node)
+ return false;
+
+ if (!isHTMLInputElement(node))
+ return false;
+
+ return toHTMLInputElement(node)->type() == InputTypeNames::range;
+}
+
bool AXNodeObject::isChecked() const
{
Node* node = this->node();
@@ -1210,11 +1213,8 @@ float AXNodeObject::maxValueForRange() const
if (hasAttribute(aria_valuemaxAttr))
return getAttribute(aria_valuemaxAttr).toFloat();
- if (isHTMLInputElement(node())) {
- HTMLInputElement& input = toHTMLInputElement(*node());
- if (input.type() == InputTypeNames::range)
- return input.maximum();
- }
+ if (isNativeSlider())
+ return toHTMLInputElement(*node()).maximum();
if (isHTMLMeterElement(node()))
return toHTMLMeterElement(*node()).max();
@@ -1227,11 +1227,8 @@ float AXNodeObject::minValueForRange() const
if (hasAttribute(aria_valueminAttr))
return getAttribute(aria_valueminAttr).toFloat();
- if (isHTMLInputElement(node())) {
- HTMLInputElement& input = toHTMLInputElement(*node());
- if (input.type() == InputTypeNames::range)
- return input.minimum();
- }
+ if (isNativeSlider())
+ return toHTMLInputElement(*node()).minimum();
if (isHTMLMeterElement(node()))
return toHTMLMeterElement(*node()).min();
@@ -1241,7 +1238,11 @@ float AXNodeObject::minValueForRange() const
float AXNodeObject::stepValueForRange() const
{
- return getAttribute(stepAttr).toFloat();
+ if (!isNativeSlider())
+ return 0.0;
+
+ Decimal step = toHTMLInputElement(*node()).createStepRange(RejectAny).step();
+ return step.toString().toFloat();
}
String AXNodeObject::stringValue() const
@@ -2077,15 +2078,4 @@ void AXNodeObject::ariaLabeledByText(Vector<AccessibilityText>& textOrder) const
}
}
-void AXNodeObject::changeValueByPercent(float percentChange)
-{
- float range = maxValueForRange() - minValueForRange();
- float value = valueForRange();
-
- value += range * (percentChange / 100);
- setValue(String::number(value));
-
- axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged);
-}
-
} // namespace blink
« no previous file with comments | « Source/modules/accessibility/AXNodeObject.h ('k') | Source/modules/accessibility/AXObject.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698