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

Side by Side Diff: Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp

Issue 12159003: Merge 141195 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1364/
Patch Set: Created 7 years, 10 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 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 m_dateTimeEditElement->blurByOwner(); 188 m_dateTimeEditElement->blurByOwner();
189 } 189 }
190 190
191 RenderObject* BaseMultipleFieldsDateAndTimeInputType::createRenderer(RenderArena * arena, RenderStyle* style) const 191 RenderObject* BaseMultipleFieldsDateAndTimeInputType::createRenderer(RenderArena * arena, RenderStyle* style) const
192 { 192 {
193 return InputType::createRenderer(arena, style); 193 return InputType::createRenderer(arena, style);
194 } 194 }
195 195
196 void BaseMultipleFieldsDateAndTimeInputType::createShadowSubtree() 196 void BaseMultipleFieldsDateAndTimeInputType::createShadowSubtree()
197 { 197 {
198 DEFINE_STATIC_LOCAL(AtomicString, dateAndTimeInputContainerPseudoId, ("-webk it-date-and-time-container", AtomicString::ConstructFromLiteral));
199
200 ASSERT(element()->shadow()); 198 ASSERT(element()->shadow());
201 199
202 Document* document = element()->document(); 200 Document* document = element()->document();
203 RefPtr<HTMLDivElement> container = HTMLDivElement::create(document); 201 ContainerNode* container = element()->userAgentShadowRoot();
204 element()->userAgentShadowRoot()->appendChild(container);
205 container->setPseudo(dateAndTimeInputContainerPseudoId);
206 202
207 RefPtr<DateTimeEditElement> dateTimeEditElement(DateTimeEditElement::create( document, *this)); 203 RefPtr<DateTimeEditElement> dateTimeEditElement(DateTimeEditElement::create( document, *this));
208 m_dateTimeEditElement = dateTimeEditElement.get(); 204 m_dateTimeEditElement = dateTimeEditElement.get();
209 container->appendChild(m_dateTimeEditElement); 205 container->appendChild(m_dateTimeEditElement);
210 updateInnerTextValue(); 206 updateInnerTextValue();
211 207
212 RefPtr<SpinButtonElement> spinButton = SpinButtonElement::create(document, * this); 208 RefPtr<SpinButtonElement> spinButton = SpinButtonElement::create(document, * this);
213 m_spinButtonElement = spinButton.get(); 209 m_spinButtonElement = spinButton.get();
214 container->appendChild(spinButton); 210 container->appendChild(spinButton);
215 211
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 339
344 void BaseMultipleFieldsDateAndTimeInputType::setValue(const String& sanitizedVal ue, bool valueChanged, TextFieldEventBehavior eventBehavior) 340 void BaseMultipleFieldsDateAndTimeInputType::setValue(const String& sanitizedVal ue, bool valueChanged, TextFieldEventBehavior eventBehavior)
345 { 341 {
346 InputType::setValue(sanitizedValue, valueChanged, eventBehavior); 342 InputType::setValue(sanitizedValue, valueChanged, eventBehavior);
347 if (valueChanged || (sanitizedValue.isEmpty() && m_dateTimeEditElement && m_ dateTimeEditElement->anyEditableFieldsHaveValues())) { 343 if (valueChanged || (sanitizedValue.isEmpty() && m_dateTimeEditElement && m_ dateTimeEditElement->anyEditableFieldsHaveValues())) {
348 updateInnerTextValue(); 344 updateInnerTextValue();
349 element()->setNeedsValidityCheck(); 345 element()->setNeedsValidityCheck();
350 } 346 }
351 } 347 }
352 348
349 bool BaseMultipleFieldsDateAndTimeInputType::shouldApplyLocaleDirection() const
350 {
351 return true;
352 }
353
353 bool BaseMultipleFieldsDateAndTimeInputType::shouldUseInputMethod() const 354 bool BaseMultipleFieldsDateAndTimeInputType::shouldUseInputMethod() const
354 { 355 {
355 return false; 356 return false;
356 } 357 }
357 358
358 void BaseMultipleFieldsDateAndTimeInputType::stepAttributeChanged() 359 void BaseMultipleFieldsDateAndTimeInputType::stepAttributeChanged()
359 { 360 {
360 updateInnerTextValue(); 361 updateInnerTextValue();
361 } 362 }
362 363
363 void BaseMultipleFieldsDateAndTimeInputType::updateInnerTextValue() 364 void BaseMultipleFieldsDateAndTimeInputType::updateInnerTextValue()
364 { 365 {
365 if (!m_dateTimeEditElement) 366 if (!m_dateTimeEditElement)
366 return; 367 return;
367 368
368 AtomicString direction = element()->locale().isRTL() ? AtomicString("rtl", A tomicString::ConstructFromLiteral) : AtomicString("ltr", AtomicString::Construct FromLiteral);
369 if (Element* container = ElementTraversal::firstWithin(element()->userAgentS hadowRoot()))
370 container->setAttribute(HTMLNames::dirAttr, direction);
371
372 DateTimeEditElement::LayoutParameters layoutParameters(element()->locale(), createStepRange(AnyIsDefaultStep)); 369 DateTimeEditElement::LayoutParameters layoutParameters(element()->locale(), createStepRange(AnyIsDefaultStep));
373 370
374 DateComponents date; 371 DateComponents date;
375 const bool hasValue = parseToDateComponents(element()->value(), &date); 372 const bool hasValue = parseToDateComponents(element()->value(), &date);
376 if (!hasValue) 373 if (!hasValue)
377 setMillisecondToDateComponents(layoutParameters.stepRange.minimum().toDo uble(), &date); 374 setMillisecondToDateComponents(layoutParameters.stepRange.minimum().toDo uble(), &date);
378 375
379 setupLayoutParameters(layoutParameters, date); 376 setupLayoutParameters(layoutParameters, date);
380 377
381 if (hasValue) 378 if (hasValue)
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 { 438 {
442 StepRange stepRange = createStepRange(AnyIsDefaultStep); 439 StepRange stepRange = createStepRange(AnyIsDefaultStep);
443 return date.second() || date.millisecond() 440 return date.second() || date.millisecond()
444 || !stepRange.minimum().remainder(static_cast<int>(msPerMinute)).isZero( ) 441 || !stepRange.minimum().remainder(static_cast<int>(msPerMinute)).isZero( )
445 || !stepRange.step().remainder(static_cast<int>(msPerMinute)).isZero(); 442 || !stepRange.step().remainder(static_cast<int>(msPerMinute)).isZero();
446 } 443 }
447 444
448 } // namespace WebCore 445 } // namespace WebCore
449 446
450 #endif 447 #endif
OLDNEW
« no previous file with comments | « Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h ('k') | Source/WebCore/html/HTMLInputElement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698