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

Side by Side Diff: third_party/WebKit/Source/core/html/forms/TextFieldInputType.cpp

Issue 1844223002: Literal AtomicString construction can rely on strlen optimization. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * Copyright (C) 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 93
94 bool willRespondToMouseClickEvents() override 94 bool willRespondToMouseClickEvents() override
95 { 95 {
96 return hostInput() && !hostInput()->isDisabledOrReadOnly() && document() .isActive(); 96 return hostInput() && !hostInput()->isDisabledOrReadOnly() && document() .isActive();
97 } 97 }
98 98
99 public: 99 public:
100 static PassRefPtrWillBeRawPtr<DataListIndicatorElement> create(Document& doc ument) 100 static PassRefPtrWillBeRawPtr<DataListIndicatorElement> create(Document& doc ument)
101 { 101 {
102 RefPtrWillBeRawPtr<DataListIndicatorElement> element = adoptRefWillBeNoo p(new DataListIndicatorElement(document)); 102 RefPtrWillBeRawPtr<DataListIndicatorElement> element = adoptRefWillBeNoo p(new DataListIndicatorElement(document));
103 element->setShadowPseudoId(AtomicString("-webkit-calendar-picker-indicat or", AtomicString::ConstructFromLiteral)); 103 element->setShadowPseudoId(AtomicString("-webkit-calendar-picker-indicat or"));
104 element->setAttribute(idAttr, ShadowElementNames::pickerIndicator()); 104 element->setAttribute(idAttr, ShadowElementNames::pickerIndicator());
105 return element.release(); 105 return element.release();
106 } 106 }
107 107
108 }; 108 };
109 109
110 TextFieldInputType::TextFieldInputType(HTMLInputElement& element) 110 TextFieldInputType::TextFieldInputType(HTMLInputElement& element)
111 : InputType(element) 111 : InputType(element)
112 { 112 {
113 } 113 }
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 bool shouldHaveDataListIndicator = element().hasValidDataListOptions(); 287 bool shouldHaveDataListIndicator = element().hasValidDataListOptions();
288 bool createsContainer = shouldHaveSpinButton || shouldHaveDataListIndicator || needsContainer(); 288 bool createsContainer = shouldHaveSpinButton || shouldHaveDataListIndicator || needsContainer();
289 289
290 RefPtrWillBeRawPtr<TextControlInnerEditorElement> innerEditor = TextControlI nnerEditorElement::create(document); 290 RefPtrWillBeRawPtr<TextControlInnerEditorElement> innerEditor = TextControlI nnerEditorElement::create(document);
291 if (!createsContainer) { 291 if (!createsContainer) {
292 shadowRoot->appendChild(innerEditor.release()); 292 shadowRoot->appendChild(innerEditor.release());
293 return; 293 return;
294 } 294 }
295 295
296 RefPtrWillBeRawPtr<TextControlInnerContainer> container = TextControlInnerCo ntainer::create(document); 296 RefPtrWillBeRawPtr<TextControlInnerContainer> container = TextControlInnerCo ntainer::create(document);
297 container->setShadowPseudoId(AtomicString("-webkit-textfield-decoration-cont ainer", AtomicString::ConstructFromLiteral)); 297 container->setShadowPseudoId(AtomicString("-webkit-textfield-decoration-cont ainer"));
298 shadowRoot->appendChild(container); 298 shadowRoot->appendChild(container);
299 299
300 RefPtrWillBeRawPtr<EditingViewPortElement> editingViewPort = EditingViewPort Element::create(document); 300 RefPtrWillBeRawPtr<EditingViewPortElement> editingViewPort = EditingViewPort Element::create(document);
301 editingViewPort->appendChild(innerEditor.release()); 301 editingViewPort->appendChild(innerEditor.release());
302 container->appendChild(editingViewPort.release()); 302 container->appendChild(editingViewPort.release());
303 303
304 if (shouldHaveDataListIndicator) 304 if (shouldHaveDataListIndicator)
305 container->appendChild(DataListIndicatorElement::create(document)); 305 container->appendChild(DataListIndicatorElement::create(document));
306 // FIXME: Because of a special handling for a spin button in 306 // FIXME: Because of a special handling for a spin button in
307 // LayoutTextControlSingleLine, we need to put it to the last position. It's 307 // LayoutTextControlSingleLine, we need to put it to the last position. It's
(...skipping 28 matching lines...) Expand all
336 EventDispatchForbiddenScope::AllowUserAgentEvents allowEvents; 336 EventDispatchForbiddenScope::AllowUserAgentEvents allowEvents;
337 if (willHavePickerIndicator) { 337 if (willHavePickerIndicator) {
338 Document& document = element().document(); 338 Document& document = element().document();
339 if (Element* container = containerElement()) { 339 if (Element* container = containerElement()) {
340 container->insertBefore(DataListIndicatorElement::create(document), spinButtonElement()); 340 container->insertBefore(DataListIndicatorElement::create(document), spinButtonElement());
341 } else { 341 } else {
342 // FIXME: The following code is similar to createShadowSubtree(), 342 // FIXME: The following code is similar to createShadowSubtree(),
343 // but they are different. We should simplify the code by making 343 // but they are different. We should simplify the code by making
344 // containerElement mandatory. 344 // containerElement mandatory.
345 RefPtrWillBeRawPtr<Element> rpContainer = TextControlInnerContainer: :create(document); 345 RefPtrWillBeRawPtr<Element> rpContainer = TextControlInnerContainer: :create(document);
346 rpContainer->setShadowPseudoId(AtomicString("-webkit-textfield-decor ation-container", AtomicString::ConstructFromLiteral)); 346 rpContainer->setShadowPseudoId(AtomicString("-webkit-textfield-decor ation-container"));
347 RefPtrWillBeRawPtr<Element> innerEditor = element().innerEditorEleme nt(); 347 RefPtrWillBeRawPtr<Element> innerEditor = element().innerEditorEleme nt();
348 innerEditor->parentNode()->replaceChild(rpContainer.get(), innerEdit or.get()); 348 innerEditor->parentNode()->replaceChild(rpContainer.get(), innerEdit or.get());
349 RefPtrWillBeRawPtr<Element> editingViewPort = EditingViewPortElement ::create(document); 349 RefPtrWillBeRawPtr<Element> editingViewPort = EditingViewPortElement ::create(document);
350 editingViewPort->appendChild(innerEditor.release()); 350 editingViewPort->appendChild(innerEditor.release());
351 rpContainer->appendChild(editingViewPort.release()); 351 rpContainer->appendChild(editingViewPort.release());
352 rpContainer->appendChild(DataListIndicatorElement::create(document)) ; 352 rpContainer->appendChild(DataListIndicatorElement::create(document)) ;
353 if (element().document().focusedElement() == element()) 353 if (element().document().focusedElement() == element())
354 element().updateFocusAppearance(SelectionBehaviorOnFocus::Restor e); 354 element().updateFocusAppearance(SelectionBehaviorOnFocus::Restor e);
355 } 355 }
356 } else { 356 } else {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 HTMLElement* placeholder = element().placeholderElement(); 452 HTMLElement* placeholder = element().placeholderElement();
453 String placeholderText = element().strippedPlaceholder(); 453 String placeholderText = element().strippedPlaceholder();
454 if (placeholderText.isEmpty()) { 454 if (placeholderText.isEmpty()) {
455 if (placeholder) 455 if (placeholder)
456 placeholder->remove(ASSERT_NO_EXCEPTION); 456 placeholder->remove(ASSERT_NO_EXCEPTION);
457 return; 457 return;
458 } 458 }
459 if (!placeholder) { 459 if (!placeholder) {
460 RefPtrWillBeRawPtr<HTMLElement> newElement = HTMLDivElement::create(elem ent().document()); 460 RefPtrWillBeRawPtr<HTMLElement> newElement = HTMLDivElement::create(elem ent().document());
461 placeholder = newElement.get(); 461 placeholder = newElement.get();
462 placeholder->setShadowPseudoId(AtomicString("-webkit-input-placeholder", AtomicString::ConstructFromLiteral)); 462 placeholder->setShadowPseudoId(AtomicString("-webkit-input-placeholder") );
463 placeholder->setInlineStyleProperty(CSSPropertyDisplay, element().isPlac eholderVisible() ? CSSValueBlock : CSSValueNone, true); 463 placeholder->setInlineStyleProperty(CSSPropertyDisplay, element().isPlac eholderVisible() ? CSSValueBlock : CSSValueNone, true);
464 placeholder->setAttribute(idAttr, ShadowElementNames::placeholder()); 464 placeholder->setAttribute(idAttr, ShadowElementNames::placeholder());
465 Element* container = containerElement(); 465 Element* container = containerElement();
466 Node* previous = container ? container : element().innerEditorElement(); 466 Node* previous = container ? container : element().innerEditorElement();
467 previous->parentNode()->insertBefore(placeholder, previous); 467 previous->parentNode()->insertBefore(placeholder, previous);
468 ASSERT_WITH_SECURITY_IMPLICATION(placeholder->parentNode() == previous-> parentNode()); 468 ASSERT_WITH_SECURITY_IMPLICATION(placeholder->parentNode() == previous-> parentNode());
469 } 469 }
470 placeholder->setTextContent(placeholderText); 470 placeholder->setTextContent(placeholderText);
471 } 471 }
472 472
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 return shouldSpinButtonRespondToMouseEvents() && element().focused(); 548 return shouldSpinButtonRespondToMouseEvents() && element().focused();
549 } 549 }
550 550
551 void TextFieldInputType::spinButtonDidReleaseMouseCapture(SpinButtonElement::Eve ntDispatch eventDispatch) 551 void TextFieldInputType::spinButtonDidReleaseMouseCapture(SpinButtonElement::Eve ntDispatch eventDispatch)
552 { 552 {
553 if (eventDispatch == SpinButtonElement::EventDispatchAllowed) 553 if (eventDispatch == SpinButtonElement::EventDispatchAllowed)
554 element().dispatchFormControlChangeEvent(); 554 element().dispatchFormControlChangeEvent();
555 } 555 }
556 556
557 } // namespace blink 557 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698