Commit b998a64a authored by tkent's avatar tkent Committed by Commit bot

INPUT element: Do not use identical ID name for SearchFieldCancelButtonElement...

INPUT element: Do not use identical ID name for SearchFieldCancelButtonElement and ClearButtonElement.

Using identical ID for different Element subclasses is dangerous.
This CL avoids a runtime CHECK failure.

BUG=669847

Review-Url: https://codereview.chromium.org/2568443002
Cr-Commit-Position: refs/heads/master@{#437516}
parent 85d1ac19
<!DOCTYPE html>
<body>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<div id="container">
<style></style>
<input id="input" type="time" onblur="this.type = 'search';">
</div>
<script>
var test = async_test('No crash by changing type on blur.');
window.onload = test.step_func_done(() => {
document.querySelector('#input').focus();
document.querySelector('#container').style.display = 'none';
document.querySelector('#input').value = '23:59';
});
</script>
</body>
......@@ -150,7 +150,7 @@ const AtomicString& SearchInputType::defaultAutocapitalize() const {
void SearchInputType::updateCancelButtonVisibility() {
Element* button = element().userAgentShadowRoot()->getElementById(
ShadowElementNames::clearButton());
ShadowElementNames::searchClearButton());
if (!button)
return;
if (element().value().isEmpty()) {
......
......@@ -708,6 +708,9 @@ bool DateTimeEditElement::isReadOnly() const {
void DateTimeEditElement::layout(const LayoutParameters& layoutParameters,
const DateComponents& dateValue) {
// TODO(tkent): We assume this function never dispatches events. However this
// can dispatch 'blur' event in Node::removeChild().
DEFINE_STATIC_LOCAL(AtomicString, fieldsWrapperPseudoId,
("-webkit-datetime-edit-fields-wrapper"));
if (!hasChildren()) {
......
......@@ -84,6 +84,11 @@ const AtomicString& placeholder() {
return name;
}
const AtomicString& searchClearButton() {
DEFINE_STATIC_LOCAL(AtomicString, name, ("search-clear"));
return name;
}
const AtomicString& searchDecoration() {
DEFINE_STATIC_LOCAL(AtomicString, name, ("decoration"));
return name;
......
......@@ -48,6 +48,7 @@ const AtomicString& editingViewPort();
const AtomicString& innerEditor();
const AtomicString& pickerIndicator();
const AtomicString& placeholder();
const AtomicString& searchClearButton();
const AtomicString& searchDecoration();
CORE_EXPORT const AtomicString& sliderThumb();
const AtomicString& sliderTrack();
......
......@@ -165,7 +165,7 @@ SearchFieldCancelButtonElement* SearchFieldCancelButtonElement::create(
SearchFieldCancelButtonElement* element =
new SearchFieldCancelButtonElement(document);
element->setShadowPseudoId(AtomicString("-webkit-search-cancel-button"));
element->setAttribute(idAttr, ShadowElementNames::clearButton());
element->setAttribute(idAttr, ShadowElementNames::searchClearButton());
return element;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment