Bug 29004 - [HTML5][Forms] simple implementation of date&time types of INPUT element
: [HTML5][Forms] simple implementation of date&time types of INPUT element
Status: RESOLVED FIXED
: WebKit
Forms
: 528+ (Nightly build)
: All All
: P2 Normal
Assigned To:
: http://www.whatwg.org/specs/web-apps/...
:
:
: 19264 29070 29359 30847 31342
  Show dependency treegraph
 
Reported: 2009-09-07 01:49 PST by
Modified: 2009-11-14 07:23 PST (History)


Attachments
Proposed patch (60.00 KB, patch)
2009-09-07 02:06 PST, Kent Tamura
tkent: review-
Review Patch | Details | Formatted Diff | Diff
Patch part 1: recognize date&time types as text fields (16.89 KB, patch)
2009-09-10 05:14 PST, Kent Tamura
eric: review-
Review Patch | Details | Formatted Diff | Diff
Patch part2: ISO 8601 parser (20.21 KB, patch)
2009-09-10 05:15 PST, Kent Tamura
eric: review-
Review Patch | Details | Formatted Diff | Diff
Patch part 3: support for ValidityState.typeMismatch and layout tests (34.69 KB, patch)
2009-09-10 05:16 PST, Kent Tamura
no flags Review Patch | Details | Formatted Diff | Diff
39344: Patch part 3: support for ValidityState.typeMismatch and layout tests (rev.2) (34.71 KB, patch)
2009-09-13 18:50 PST, Kent Tamura
no flags Review Patch | Details | Formatted Diff | Diff
Patch part 3: ValidityState.typeMismatch and layout tests (rev.3) (38.14 KB, patch)
2009-09-21 09:53 PST, Kent Tamura
tkent: commit‑queue-
Review Patch | Details | Formatted Diff | Diff
Patch part 1: recognize date&time types as text fields (rev.2) (28.12 KB, patch)
2009-09-23 19:43 PST, Kent Tamura
no flags Review Patch | Details | Formatted Diff | Diff
Patch part 1: recognize date&time types as text fields (rev.3) (28.13 KB, patch)
2009-09-27 18:54 PST, Kent Tamura
no flags Review Patch | Details | Formatted Diff | Diff
Patch part 2: ISO 8601 parser (rev.2) (34.51 KB, patch)
2009-09-28 00:36 PST, Kent Tamura
no flags Review Patch | Details | Formatted Diff | Diff
Patch part 3: ValidityState.typeMismatch and layout tests (rev.4) (39.91 KB, patch)
2009-09-28 01:20 PST, Kent Tamura
tkent: commit‑queue-
Review Patch | Details | Formatted Diff | Diff
Patch part 1: recognize date&time types as text fields (rev.4) (28.62 KB, patch)
2009-10-01 18:18 PST, Kent Tamura
eric: review-
Review Patch | Details | Formatted Diff | Diff
Patch part 2: ISO 8601 parser (rev.3) (34.49 KB, patch)
2009-10-13 19:34 PST, Kent Tamura
tkent: review-
tkent: commit‑queue-
Review Patch | Details | Formatted Diff | Diff
Patch part 3: ValidityState.typeMismatch and layout tests (rev.5) (39.80 KB, patch)
2009-10-13 19:38 PST, Kent Tamura
tkent: review-
tkent: commit‑queue-
Review Patch | Details | Formatted Diff | Diff
Patch part 1: recognize date&time types as text fields (rev.5) (28.52 KB, patch)
2009-10-19 21:13 PST, Kent Tamura
eric: review-
Review Patch | Details | Formatted Diff | Diff
Patch part 2: ISO 8601 parser (rev.4) (26.98 KB, patch)
2009-11-09 01:36 PST, Kent Tamura
no flags Review Patch | Details | Formatted Diff | Diff
Patch part 3: ValidityState.typeMismatch and layout tests (rev.6) (39.28 KB, patch)
2009-11-09 01:38 PST, Kent Tamura
tkent: commit‑queue-
Review Patch | Details | Formatted Diff | Diff
Patch part 1: recognize date&time types as text fields (rev.6) (27.05 KB, patch)
2009-11-10 19:54 PST, Kent Tamura
no flags Review Patch | Details | Formatted Diff | Diff
Recognize date&time types as text fields (rev.7) (29.64 KB, patch)
2009-11-11 02:10 PST, Kent Tamura
darin: review-
Review Patch | Details | Formatted Diff | Diff
Recognize date&time types as text fields (rev.8) (29.77 KB, patch)
2009-11-13 17:30 PST, Kent Tamura
no flags Review Patch | Details | Formatted Diff | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2009-09-07 01:49:03 PST
Like bug#28966 for type=color, implement the following types as a text field and add support for type checking.
 - date
 - datetime
 - datetime-local
 - month
 - time
 - week
------- Comment #1 From 2009-09-07 02:06:24 PST -------
Created an attachment (id=39136) [details]
Proposed patch
------- Comment #2 From 2009-09-08 09:32:52 PST -------
(From update of attachment 39136 [details])
This is a big patch to review. :(  Do you know about CaseInsentiveHash?  Might be the right thing to use instead of:
 336     else if (equalIgnoringCase(t, "date"))
 337         newType = DATE;
------- Comment #3 From 2009-09-08 17:40:27 PST -------
(In reply to comment #2)
> This is a big patch to review. :(  Do you know about CaseInsentiveHash?  Might
> be the right thing to use instead of:

I haven't known it.  Thanks.
Maybe I should move DateTime class to separated .h and .cpp.  The class is going to have more methods in the near future.
------- Comment #4 From 2009-09-10 03:25:16 PST -------
(In reply to comment #2)
I'll split the patch into 3.
  Part 1: Implement date&time types as text fields without type validation
  Part 2: ISO 8601 parser
  Part 3: ValidityState.typeCheck for date&time types, and tests
------- Comment #5 From 2009-09-10 05:14:58 PST -------
Created an attachment (id=39342) [details]
Patch part 1: recognize date&time types as text fields
------- Comment #6 From 2009-09-10 05:15:57 PST -------
Created an attachment (id=39343) [details]
Patch part2: ISO 8601 parser
------- Comment #7 From 2009-09-10 05:16:59 PST -------
Created an attachment (id=39344) [details]
Patch part 3: support for ValidityState.typeMismatch and layout tests
------- Comment #8 From 2009-09-13 18:50:34 PST -------
Created an attachment (id=39532) [details]
39344: Patch part 3: support for ValidityState.typeMismatch and layout tests (rev.2)

Resolved a patch conflict by r48318
------- Comment #9 From 2009-09-21 09:53:50 PST -------
Created an attachment (id=39857) [details]
Patch part 3: ValidityState.typeMismatch and layout tests (rev.3)

resources/ -> script-tests/
------- Comment #10 From 2009-09-21 10:50:30 PST -------
(From update of attachment 39342 [details])
Explicit String construction isn't needed:
String("button")
the compiler will find String(char*) anyway.

Why two lookups?
 333     if (!t.isNull() && typeMap->contains(t))  // contains() with a null string makes crash.
 334         newType = typeMap->get(t);
just do one get instead of two lookups.

Lets make a hash for these too:
@@ const AtomicString& HTMLInputElement::formControlType() const

Then you don't have a zillion DEFINE_STATIC_LOCAL calls, because the Hash can be TYPE -> AtomicString

(That doesn't have to be part of this patch, but if you're in there cleaning stuff up, you should consider it.  I think it will be much less code.  Heck, it could even be a Vector instead of a Hash if you like.)

Default is bad with switches over enums:
     default:
 1048         return false;
it's breaks the compiler's ability to tell you when you're missing cases.  In this function  1028 bool HTMLInputElement::isTextField() const it seems we don't even want a switch.  We just want a single if, or?  Or at least we want an explicit list of the false cases if you're going to use a switch.
------- Comment #11 From 2009-09-21 10:52:39 PST -------
(From update of attachment 39343 [details])
You wrote the parser by yourself I assume?  It's no code from any other license?

Also, we need tests for this parser.

I think we should consider splitting it off into its own file which DateMath can use.  ISO8601DateParser or some other nicer name?

r- for the lack of tests.
------- Comment #12 From 2009-09-21 10:54:26 PST -------
(From update of attachment 39857 [details])
OK, here are the tests.  or at least some tests.  So my r- above was perhaps premature.  I guess I'll still leave it r- awaiting your response to the other questions raised.  I've not looked at your parser close enough to see if I had security or performance concerns, but I can look again.
------- Comment #13 From 2009-09-23 10:46:52 PST -------
(From update of attachment 39857 [details])
I think I would have used two separate methods:
shoudlBeInvalid
shoudlBeValid

instead of check true/false.

But it looks fine as is.
------- Comment #14 From 2009-09-23 19:43:26 PST -------
Created an attachment (id=40036) [details]
Patch part 1: recognize date&time types as text fields (rev.2)

> Explicit String construction isn't needed:
> String("button")

Fixed.

> Why two lookups?

Fixed.

> Lets make a hash for these too:
> @@ const AtomicString& HTMLInputElement::formControlType() const

Done.  I used Vector.


> Default is bad with switches over enums:
>     default:

Removed the default label and expanded the rest of types.
------- Comment #15 From 2009-09-24 02:21:32 PST -------
(In reply to comment #11)
> (From update of attachment 39343 [details] [details])
> You wrote the parser by yourself I assume?  It's no code from any other
> license?

Yes, it's my code written for WebKit.

> I think we should consider splitting it off into its own file which DateMath
> can use.  ISO8601DateParser or some other nicer name?

Do you think the new file should be in JavaScriptCore/wtf/ ?
I assume so.  The parser might be used by JSON.parse(), not only html/HTMLInputElement.cpp
------- Comment #16 From 2009-09-24 14:11:04 PST -------
(In reply to comment #15)
> Do you think the new file should be in JavaScriptCore/wtf/ ?
> I assume so.  The parser might be used by JSON.parse(), not only
> html/HTMLInputElement.cpp

I'm OK w/ either location.
------- Comment #17 From 2009-09-27 18:54:32 PST -------
Created an attachment (id=40211) [details]
Patch part 1: recognize date&time types as text fields (rev.3)

Resolved a conflict with today's WebKit source.
------- Comment #18 From 2009-09-28 00:36:48 PST -------
Created an attachment (id=40219) [details]
Patch part 2: ISO 8601 parser (rev.2)

- Move ISO 8601 parser code to wtf/ISODateParser.{cpp.h}

This patch doesn't depend on Part 1.  Part 1 and Part2 can be committed independently.
------- Comment #19 From 2009-09-28 01:20:50 PST -------
Created an attachment (id=40221) [details]
Patch part 1: recognize date&time types as text fields (rev.4)

Update for the Part 2 change.

This patch depends on both of Part 1 and 2.
------- Comment #20 From 2009-09-28 01:39:04 PST -------
(In reply to comment #19)
> Created an attachment (id=40221) [details] [details]
> Patch part 1: recognize date&time types as text fields (rev.4)

The attachment title was wrong.  I corrected it to:
  Patch part 3: ValidityState.typeMismatch and layout tests (rev.4)
------- Comment #21 From 2009-10-01 18:18:02 PST -------
Created an attachment (id=40488) [details]
Patch part 1: recognize date&time types as text fields (rev.4)

Resolved a build failure with new "switch (inputType())" introduced by r48959.
------- Comment #22 From 2009-10-13 19:34:35 PST -------
Created an attachment (id=41146) [details]
Patch part 2: ISO 8601 parser (rev.3)

- Resolved conflict with r49365 on project.pbxproj
------- Comment #23 From 2009-10-13 19:38:08 PST -------
Created an attachment (id=41147) [details]
Patch part 3: ValidityState.typeMismatch and layout tests (rev.5)

- Resolved conflict with r49508.
------- Comment #24 From 2009-10-19 14:52:49 PST -------
(From update of attachment 40488 [details])
 366     // get() with unregistered names returns HTMLInputElement::TEXT.
Wild.

// get() with a null string makes crash.
// get() with a null string causes a crash.
would be better.

I would probably have written:
75     if (!t.isNull())  // get() with a null string makes crash.
 376         newType = typeMap->get(t);
357377     else
358378         newType = TEXT;

as:

if (typeMap.contains(t))
    newType = typeMap.get();
else
    newType = TEXT;

Then you don't need any fancy emptyValue either.

You could do:
 448 static const Vector<AtomicString>* createFormControlTypes()

as just an accessor and use a static Vector<AtomicString> w/o a pointer if you like.  It's OK as is, but:
 452     (*types)[HTMLInputElement::BUTTON] = "button";
is slightly harder to read wiht a pointer.  I think at this point, I wouldn't bother changing it though.

 43         TEXT = 0,  // TEXT must be 0 because it's the default type.
is not needed if you change the way the hash lookup works, no?


 68     static const int MAX_INPUT_TYPES = DATETIMELOCAL + 1;
Could be easier as a LAST_INPUT_TYPE a the end of the enum, no?

This looks great, but I think we shoudl go one more round.  Thanks again!
------- Comment #25 From 2009-10-19 15:15:54 PST -------
(From update of attachment 39857 [details])
Clearing r+ on this obsolete patch.
------- Comment #26 From 2009-10-19 21:13:34 PST -------
Created an attachment (id=41478) [details]
Patch part 1: recognize date&time types as text fields (rev.5)
------- Comment #27 From 2009-10-19 21:19:57 PST -------
(In reply to comment #24)
> // get() with a null string causes a crash.
> would be better.

Done.

> I would probably have written:
> 75     if (!t.isNull())  // get() with a null string makes crash.
>  376         newType = typeMap->get(t);
> 357377     else
> 358378         newType = TEXT;
> 
> as:
> 
> if (typeMap.contains(t))
>     newType = typeMap.get();
> else
>     newType = TEXT;
> 
> Then you don't need any fancy emptyValue either.

Right. We don't need to assume TEXT=0 if we use contains().
I changed to contains(), but we still need t.isNull() because contains() with a null string also crashes.

> You could do:
>  448 static const Vector<AtomicString>* createFormControlTypes()

I changed the type to HashMap<InputType, AtomicString>.  As for Vector<>, we need to ensure the minimum value of InputType is 0, need to know the maximum value of InputType, InputType values must not have gaps.

>  43         TEXT = 0,  // TEXT must be 0 because it's the default type.
>  68     static const int MAX_INPUT_TYPES = DATETIMELOCAL + 1;

Removed them by the Vector -> HashMap change above.
------- Comment #28 From 2009-11-08 22:42:58 PST -------
(From update of attachment 41146 [details])
Recent changes to DateMath.* critically broke this patch.
------- Comment #29 From 2009-11-09 01:36:20 PST -------
Created an attachment (id=42740) [details]
Patch part 2: ISO 8601 parser (rev.4)

Move the code from JavaScritpCore/wtf to WebCore/html because GregorianDateTime became a JSC-specific class.
------- Comment #30 From 2009-11-09 01:38:03 PST -------
Created an attachment (id=42741) [details]
Patch part 3: ValidityState.typeMismatch and layout tests (rev.6)

Sync with the updated part 2.
------- Comment #31 From 2009-11-10 10:22:34 PST -------
(From update of attachment 41478 [details])
It seems your test case only needs to test the casing once.  once it's confirmed that button and BUTTON both map to BUTTON, you don't really need to check CHECKBOX, COLOR, EMail, etc.  Just the lowercase versions should be enough and might make the test less confusing.

Cleanup of these mthods could have been done as a separate first patch, but this is OK too.

I suspect the dom spec says nothing about the implementation, but it does say that input.type has to be lowercase, right?  Would be more clear to say something like:
// input.type must return a lower case value according to DOM3.


I dont understand this comment:
  // We don't use formControlTypes->get(inputType()) because this function
 542     // tries to return a reference to a temporary AtomicString object in that
 543     // case.

This comment isn't clear:
 509     // Needs to be lowercase according to DOM spec

Excellent cleanup!
 794     if (inputType() == HIDDEN)
 795         return false;
 796     return HTMLFormControlElementWithState::rendererIsNeeded(style);

This patch looks fine.  The comments could/should be adjusted before landing.

I'm torn.  I would like to r+ this, but I would also like to understand the formControlTypes->get(inputType())  issue before I do.  I guess we should go one more round.  Ping me as soon as you post a new patch or respond to the formControlTypes->get(inputType())  issue and I'll be happy to r+ this.
------- Comment #32 From 2009-11-10 10:25:12 PST -------
(From update of attachment 42740 [details])
This patch desperately needs c++ unit test support.  So sad that we don't have any in WebKit.
------- Comment #33 From 2009-11-10 19:54:43 PST -------
Created an attachment (id=42918) [details]
Patch part 1: recognize date&time types as text fields (rev.6)

(In reply to comment #31)
> It seems your test case only needs to test the casing once.  once it's
> confirmed that button and BUTTON both map to BUTTON, you don't really need to
> check CHECKBOX, COLOR, EMail, etc.  Just the lowercase versions should be
> enough and might make the test less confusing.

Done.

> I suspect the dom spec says nothing about the implementation, but it does say
> that input.type has to be lowercase, right?  Would be more clear to say
> something like:
> // input.type must return a lower case value according to DOM3.

Done.

> I dont understand this comment:
>   // We don't use formControlTypes->get(inputType()) because this function
>  542     // tries to return a reference to a temporary AtomicString object in
> that
>  543     // case.

I updated that comment.  I hope it get clearer.
If we write "return formControlTypes->get(inputType());", gcc in Xcode warns it:
WebKit/WebCore/html/HTMLInputElement.cpp:547: warning: returning reference to temporary


> This comment isn't clear:
>  509     // Needs to be lowercase according to DOM spec

Improved.
------- Comment #34 From 2009-11-11 02:10:59 PST -------
Created an attachment (id=42942) [details]
Recognize date&time types as text fields (rev.7)

* Sort case labels as per levin's advice
------- Comment #35 From 2009-11-11 02:51:43 PST -------
Part 2 and 3 patches were moved to Bug#31340 and Bug#31342.
------- Comment #36 From 2009-11-11 19:33:50 PST -------
I'm working on reviewing this.
------- Comment #37 From 2009-11-11 19:35:14 PST -------
Whoops.I'm not reviewing this patch at present. The changelog of the issue I'm reviewing mentions the wrong bug :( (I'll add that to my comments.)
------- Comment #38 From 2009-11-13 09:39:27 PST -------
(From update of attachment 42942 [details])
> +    // get() or contains() with a null string causes a crash.
> +    if (!t.isNull() && typeMap->contains(t))
> +        newType = typeMap->get(t);
>      else
>          newType = TEXT;

It's not a good idiom for performance to do a contains followed by a separate get. Those are two completely separate hash table lookups. There are two alternatives:

    1) Just call get without first checking contains. The result will be the default value, 0, which is TEXT.
    2) Use find instead of contains/get.

I think "causes a crash" is also not the perfect way to explain the issue. Callers are not allowed to call get or contains with a null string. It's not guaranteed to cause a crash, though!

I also think the comment is a little strange because there are tons of call sites for this and I don't think we want to add a comment like this at every one.

> +    // The values in the map must be lowercased because they will be the
> +    // return values of input.type and it must be lowercase according to DOM Level 2.
> +    types->add(HTMLInputElement::BUTTON, "button");
> +    types->add(HTMLInputElement::CHECKBOX, "checkbox");
> +    types->add(HTMLInputElement::COLOR, "color");
> +    types->add(HTMLInputElement::DATE, "date");
> +    types->add(HTMLInputElement::DATETIME, "datetime");
> +    types->add(HTMLInputElement::DATETIMELOCAL, "datetime-local");
> +    types->add(HTMLInputElement::EMAIL, "email");
> +    types->add(HTMLInputElement::FILE, "file");
> +    types->add(HTMLInputElement::HIDDEN, "hidden");
> +    types->add(HTMLInputElement::IMAGE, "image");
> +    types->add(HTMLInputElement::ISINDEX, emptyAtom);
> +    types->add(HTMLInputElement::MONTH, "month");
> +    types->add(HTMLInputElement::NUMBER, "number");
> +    types->add(HTMLInputElement::PASSWORD, "password");
> +    types->add(HTMLInputElement::RADIO, "radio");
> +    types->add(HTMLInputElement::RANGE, "range");
> +    types->add(HTMLInputElement::RESET, "reset");
> +    types->add(HTMLInputElement::SEARCH, "search");
> +    types->add(HTMLInputElement::SUBMIT, "submit");
> +    types->add(HTMLInputElement::TELEPHONE, "tel");
> +    types->add(HTMLInputElement::TEXT, "text");
> +    types->add(HTMLInputElement::TIME, "time");
> +    types->add(HTMLInputElement::URL, "url");
> +    types->add(HTMLInputElement::WEEK, "week");

These values are enum values, consecutive integers. This should be done with an array, not a HashMap.

> +    static const FormControlMap* formControlTypes = createFormControlTypes();
> +    ASSERT(formControlTypes->contains(inputType()));
> +    // Don't do "return formControlTypes->get(inputType())" here.
> +    // In that case, compilers generate code like:
> +    //   AtomicString str = formControlTypes->get(inputType());
> +    //   return &str;
> +    return formControlTypes->find(inputType())->second;

I don’t really like the comment above but it will be gone if you switch to an array anyway.

>  bool HTMLInputElement::rendererIsNeeded(RenderStyle *style)
>  {
> -    switch (inputType()) {
> -        case BUTTON:
> -        case CHECKBOX:
> -        case COLOR:
> -        case EMAIL:
> -        case FILE:
> -        case IMAGE:
> -        case ISINDEX:
> -        case NUMBER:
> -        case PASSWORD:
> -        case RADIO:
> -        case RANGE:
> -        case RESET:
> -        case SEARCH:
> -        case SUBMIT:
> -        case TELEPHONE:
> -        case TEXT:
> -        case URL:
> -            return HTMLFormControlElementWithState::rendererIsNeeded(style);
> -        case HIDDEN:
> -            return false;
> -    }
> -    ASSERT(false);
> -    return false;
> +    if (inputType() == HIDDEN)
> +        return false;
> +    return HTMLFormControlElementWithState::rendererIsNeeded(style);

This change is fine assuming that no future type will be like "hidden". I guess that's a reasonable assumption.

The patch otherwise seems OK.
------- Comment #39 From 2009-11-13 17:30:04 PST -------
Created an attachment (id=43216) [details]
Recognize date&time types as text fields (rev.8)

Thank you for reviewing!

(In reply to comment #38)
> > +    if (!t.isNull() && typeMap->contains(t))
> > +        newType = typeMap->get(t);
> >      else
> >          newType = TEXT;
> 
> It's not a good idiom for performance to do a contains followed by a separate
> get. Those are two completely separate hash table lookups. There are two
> alternatives:
> 
>     1) Just call get without first checking contains. The result will be the
> default value, 0, which is TEXT

Done.

> I also think the comment is a little strange because there are tons of call
> sites for this and I don't think we want to add a comment like this at every
> one.

Removed the comment.

> > +    types->add(HTMLInputElement::URL, "url");
> > +    types->add(HTMLInputElement::WEEK, "week");
> 
> These values are enum values, consecutive integers. This should be done with an
> array, not a HashMap.

Changed it to AtomicString[].
------- Comment #40 From 2009-11-13 18:13:47 PST -------
(From update of attachment 43216 [details])
Rejecting patch 43216 from commit-queue.

Failed to run "['WebKitTools/Scripts/run-webkit-tests', '--no-launch-safari', '--quiet', '--exit-after-n-failures=1']" exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11624 test cases.
http/tests/xmlhttprequest/abort-crash.html -> crashed

Exiting early after 1 failures. 9148 tests run.
346.71s total testing time

9147 test cases (99%) succeeded
1 test case (<1%) crashed
5 test cases (<1%) had stderr output
------- Comment #41 From 2009-11-13 18:20:31 PST -------
(From update of attachment 43216 [details])
I may just need to turn off the commit-queue until bug 31461 is solved. :(
------- Comment #42 From 2009-11-13 20:16:17 PST -------
(From update of attachment 43216 [details])
Rejecting patch 43216 from commit-queue.

Failed to run "['/Users/tkent/WebKit/WebKitTools/Scripts/svn-apply', '--reviewer', 'Darin Adler']" exit_code: 255
Last 500 characters of output:
++++---------
 WebCore/html/HTMLInputElement.h                    |   16 +-
 7 files changed, 403 insertions(+), 184 deletions(-)
 create mode 100644 LayoutTests/fast/forms/input-type-change3-expected.txt
 create mode 100644 LayoutTests/fast/forms/input-type-change3.html
 create mode 100644 LayoutTests/fast/forms/script-tests/input-type-change3.js


-------------------------------------------------------------------
Died at /Users/tkent/WebKit/WebKitTools/Scripts/svn-apply line 339, <> line 953.
------- Comment #43 From 2009-11-13 21:13:25 PST -------
(From update of attachment 43216 [details])
Rejecting patch 43216 from commit-queue.

Failed to run "['/Users/tkent/WebKit/WebKitTools/Scripts/svn-apply', '--reviewer', 'Darin Adler']" exit_code: 255
Last 500 characters of output:
++++---------
 WebCore/html/HTMLInputElement.h                    |   16 +-
 7 files changed, 403 insertions(+), 184 deletions(-)
 create mode 100644 LayoutTests/fast/forms/input-type-change3-expected.txt
 create mode 100644 LayoutTests/fast/forms/input-type-change3.html
 create mode 100644 LayoutTests/fast/forms/script-tests/input-type-change3.js


-------------------------------------------------------------------
Died at /Users/tkent/WebKit/WebKitTools/Scripts/svn-apply line 339, <> line 953.
------- Comment #44 From 2009-11-14 07:22:57 PST -------
(From update of attachment 43216 [details])
Manually committed as r50996.