Index: third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp |
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp |
index 90e4221c16c3c86f203ecf958624440bb553e9a0..ef95752a7c715c5351695045cbadd943364452db 100644 |
--- a/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp |
+++ b/third_party/WebKit/Source/core/css/resolver/StyleAdjuster.cpp |
@@ -29,6 +29,7 @@ |
#include "core/css/resolver/StyleAdjuster.h" |
#include "core/HTMLNames.h" |
+#include "core/InputTypeNames.h" |
#include "core/SVGNames.h" |
#include "core/dom/ContainerNode.h" |
#include "core/dom/Document.h" |
@@ -41,6 +42,7 @@ |
#include "core/html/HTMLPlugInElement.h" |
#include "core/html/HTMLTableCellElement.h" |
#include "core/html/HTMLTextAreaElement.h" |
+#include "core/html/shadow/ShadowElementNames.h" |
#include "core/layout/LayoutTheme.h" |
#include "core/style/ComputedStyle.h" |
#include "core/style/ComputedStyleConstants.h" |
@@ -336,6 +338,15 @@ static void adjustStyleForDisplay(ComputedStyle& style, const ComputedStyle& par |
} |
} |
+static void adjustSliderStyle(ComputedStyle& style, Element* e, const ComputedStyle& sliderStyle) |
+{ |
+ if (sliderStyle.appearance() == SliderVerticalPart) { |
+ style.setTouchAction(TouchActionPanX); |
+ } else { |
+ style.setTouchAction(TouchActionPanY); |
+ } |
+} |
+ |
void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, const ComputedStyle& parentStyle, Element* element) |
{ |
if (style.display() != NONE) { |
@@ -414,6 +425,23 @@ void StyleAdjuster::adjustComputedStyle(ComputedStyle& style, const ComputedStyl |
style.clearMultiCol(); |
} |
adjustStyleForAlignment(style, parentStyle); |
+ |
majidvp
2016/08/12 03:35:43
I think tkent@ suggestion was to move this to Layo
|
+ // This block is for initialzation stage, when container's layoubtObject() hasn't been initialized. |
majidvp
2016/08/12 03:35:43
s/initialzation/initialization/
|
+ if (element && element->getAttribute("id") == ShadowElementNames::sliderContainer()) { |
+ Element* host = element->shadowHost(); |
+ if (host && isHTMLInputElement(host) && static_cast<HTMLInputElement*>(host)->type() == InputTypeNames::range) { |
majidvp
2016/08/12 03:35:43
blink has helper function that should be used inst
|
+ adjustSliderStyle(style, element, host->layoutObject()->styleRef()); |
majidvp
2016/08/12 03:35:43
Instead of passing the whole style reference as la
|
+ } |
+ } |
+ |
+ // This block is for later stage when the <input>'s appearance changes but container's adjustComputedStyle wouldn't be called. |
+ // Container's layoutObject() has been initialized this time. |
majidvp
2016/08/12 03:35:43
I am not an style expert but I think a better appr
tkent
2016/08/12 06:15:18
Yes, adding -webkit-appearance:inherit to ::-webki
sunyunjia
2016/09/20 21:39:07
According to https://bugs.chromium.org/p/chromium/
|
+ if (element && isHTMLInputElement(element) && static_cast<HTMLInputElement*>(element)->type() == InputTypeNames::range && element->userAgentShadowRoot()) { |
+ Element* container = element->userAgentShadowRoot()->getElementById(ShadowElementNames::sliderContainer()); |
+ if (container && container->layoutObject()) { |
+ adjustSliderStyle(container->layoutObject()->mutableStyleRef(), container, style); |
+ } |
+ } |
} |
} // namespace blink |