diff --git a/Libraries/LibWeb/HTML/HTMLInputElement.cpp b/Libraries/LibWeb/HTML/HTMLInputElement.cpp index 7d48c5f0878..11fbd84ca48 100644 --- a/Libraries/LibWeb/HTML/HTMLInputElement.cpp +++ b/Libraries/LibWeb/HTML/HTMLInputElement.cpp @@ -2422,11 +2422,10 @@ static Utf16String convert_number_to_time_string(double input) // string that represents the time that is input milliseconds after midnight on a day with no time changes. auto seconds = JS::sec_from_time(input); auto milliseconds = JS::ms_from_time(input); - if (seconds > 0) { - if (milliseconds > 0) - return Utf16String::formatted("{:02d}:{:02d}:{:02d}.{:3d}", JS::hour_from_time(input), JS::min_from_time(input), seconds, milliseconds); + if (milliseconds > 0) + return Utf16String::formatted("{:02d}:{:02d}:{:02d}.{:03d}", JS::hour_from_time(input), JS::min_from_time(input), seconds, milliseconds); + if (seconds > 0) return Utf16String::formatted("{:02d}:{:02d}:{:02d}", JS::hour_from_time(input), JS::min_from_time(input), seconds); - } return Utf16String::formatted("{:02d}:{:02d}", JS::hour_from_time(input), JS::min_from_time(input)); } @@ -2444,12 +2443,10 @@ static Utf16String convert_number_to_local_date_and_time_string(double input) auto seconds = JS::sec_from_time(input); auto milliseconds = JS::ms_from_time(input); - if (seconds > 0) { - if (milliseconds > 0) - return Utf16String::formatted("{:04d}-{:02d}-{:02d}T{:02d}:{:02d}:{:02d}.{:03d}", year, month, day, hour, minutes, seconds, milliseconds); + if (milliseconds > 0) + return Utf16String::formatted("{:04d}-{:02d}-{:02d}T{:02d}:{:02d}:{:02d}.{:03d}", year, month, day, hour, minutes, seconds, milliseconds).trim("0"sv, TrimMode::Right); + if (seconds > 0) return Utf16String::formatted("{:04d}-{:02d}-{:02d}T{:02d}:{:02d}:{:02d}", year, month, day, hour, minutes, seconds); - } - return Utf16String::formatted("{:04d}-{:02d}-{:02d}T{:02d}:{:02d}", year, month, day, hour, minutes); } diff --git a/Tests/LibWeb/Text/expected/HTML/HTMLInputElement-valueAsNumber.txt b/Tests/LibWeb/Text/expected/HTML/HTMLInputElement-valueAsNumber.txt index 77921fc7266..df12e4dbdf7 100644 --- a/Tests/LibWeb/Text/expected/HTML/HTMLInputElement-valueAsNumber.txt +++ b/Tests/LibWeb/Text/expected/HTML/HTMLInputElement-valueAsNumber.txt @@ -34,8 +34,8 @@ password threw exception: InvalidStateError: valueAsNumber: Invalid input type u date did not throw: 0 month did not throw: 100 week did not throw: 345600000 -time did not throw: 0 -datetime-local did not throw: 0 +time did not throw: 100 +datetime-local did not throw: 100 color threw exception: InvalidStateError: valueAsNumber: Invalid input type used checkbox threw exception: InvalidStateError: valueAsNumber: Invalid input type used radio threw exception: InvalidStateError: valueAsNumber: Invalid input type used diff --git a/Tests/LibWeb/Text/expected/wpt-import/html/semantics/forms/the-input-element/time.txt b/Tests/LibWeb/Text/expected/wpt-import/html/semantics/forms/the-input-element/time.txt index 61bc6ad8281..8065a7f4ada 100644 --- a/Tests/LibWeb/Text/expected/wpt-import/html/semantics/forms/the-input-element/time.txt +++ b/Tests/LibWeb/Text/expected/wpt-import/html/semantics/forms/the-input-element/time.txt @@ -2,8 +2,7 @@ Harness status: OK Found 32 tests -31 Pass -1 Fail +32 Pass Pass time element of default time value Pass step attribute on default value check Pass max attribute on default value check @@ -26,7 +25,7 @@ Pass stepUp on step value hour Pass stepDown on step value hour Pass stepUp on step value second Pass stepDown on step value second -Fail stepUp on step value with fractional seconds +Pass stepUp on step value with fractional seconds Pass stepDown on step value with fractional seconds Pass stepUp argument 2 times Pass stepDown argument 2 times