WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
216188
[macOS] Add editability to input type=time
https://bugs.webkit.org/show_bug.cgi?id=216188
Summary
[macOS] Add editability to input type=time
Aditya Keerthi
Reported
2020-09-04 13:25:35 PDT
...
Attachments
Patch
(72.06 KB, patch)
2020-09-04 13:28 PDT
,
Aditya Keerthi
hi
: review+
Details
Formatted Diff
Diff
Patch for landing
(73.00 KB, patch)
2020-09-08 14:27 PDT
,
Aditya Keerthi
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Aditya Keerthi
Comment 1
2020-09-04 13:28:56 PDT
Created
attachment 408017
[details]
Patch
Sam Weinig
Comment 2
2020-09-04 13:58:33 PDT
Comment on
attachment 408017
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=408017&action=review
> Source/WebCore/html/DateTimeFieldsState.h:39 > + enum AMPMValue { > + AMPMValueAM, > + AMPMValuePM, > + };
I think this would read cleaner as something like: enum class Meridiem { AM, PM };
Wenson Hsieh
Comment 3
2020-09-04 13:59:59 PDT
Comment on
attachment 408017
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=408017&action=review
This is looking pretty great! Just a couple of minor comments as I continue to look.
> Source/WebCore/html/DateTimeFieldsState.h:36 > + enum AMPMValue {
Nit - in new code, we typically prefer 8-bit-wide enum classes. For instance, enum class AMPMValue : bool { … };
> Source/WebCore/html/shadow/DateTimeSymbolicFieldElement.cpp:122 > + int index = m_typeAhead.handleEvent(&keyboardEvent, TypeAhead::MatchPrefix | TypeAhead::CycleFirstChar | TypeAhead::MatchIndex);
Not specific to this patch or anything, but we should make `TypeAhead::handleEvent` return an `Optional<int>` at some point.
Devin Rousso
Comment 4
2020-09-04 16:07:12 PDT
Comment on
attachment 408017
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=408017&action=review
r=me, nice work!
> Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp:313 > + } else if (name == stepAttr && m_dateTimeEditElement) { > + updateInnerTextValue(); > }
Style: no `{` `}` if the body is a single line
> Source/WebCore/html/DateTimeFieldsState.h:48 > + Optional<AMPMValue> ampm;
IMO it would be nicer to read as `meridiem` (e.g. `-webkit-datetime-edit-meridiem-field`) than as `ampm`
> Source/WebCore/html/TimeInputType.cpp:121 > + if (!state.hour || !state.minute || !state.ampm)
is it not possible (perhaps undesirable) to infer the `minute` and/or `meridiem` based on the `hour`? e.g. if the `hour` is `20`, then `minute` is `0` and `meridien` is `PM`
> Source/WebCore/html/TimeInputType.cpp:140 > + auto millisecondsPerSecond = Decimal::fromDouble(msPerSecond); > + auto millisecondsPerMinute = Decimal::fromDouble(msPerMinute);
<unrelated to this patch> would be neat if `Decimal` were `constexpr` :P
> Source/WebCore/html/TimeInputType.cpp:153 > + layoutParameters.fallbackDateTimeFormat = "HH:mm:ss";
`_s`
> Source/WebCore/html/TimeInputType.cpp:156 > + layoutParameters.fallbackDateTimeFormat = "HH:mm";
`_s`
> Source/WebCore/html/shadow/DateTimeFieldElements.cpp:110 > + case 11: {
NIT: none of these `case` actually need the `{` `}` since they don't declare any variables
> Source/WebCore/html/shadow/DateTimeFieldElements.cpp:111 > + state.hour = value ? value : 12;
<after reading below> Could we use `value ?: 12` here too?
> Source/WebCore/html/shadow/DateTimeFieldElements.cpp:119 > + state.hour = (value % 12) ?: 12;
`?:` 🤯
> Source/WebCore/html/shadow/DateTimeFieldElements.cpp:129 > + state.hour = value == 12 ? 12 : value % 12;
Why not also do `(value % 12) ?: 12` here too?
> Source/WebCore/html/shadow/DateTimeFieldElements.cpp:141 > + case 11: {
ditto (:110)
Aditya Keerthi
Comment 5
2020-09-04 20:27:56 PDT
(In reply to Devin Rousso from
comment #4
)
> Comment on
attachment 408017
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=408017&action=review
> > r=me, nice work!
Thanks for the review! I'm going to address one of the failing WPT tests in a separate patch before landing this one, as it should also apply to date inputs.
> > Source/WebCore/html/TimeInputType.cpp:121 > > + if (!state.hour || !state.minute || !state.ampm) > > is it not possible (perhaps undesirable) to infer the `minute` and/or > `meridiem` based on the `hour`? e.g. if the `hour` is `20`, then `minute` > is `0` and `meridien` is `PM`
DateTimeFieldsState will always have an `hour` between 1 and 12 (even if the user's locale has a different format, the value is normalized). If any one of these fields is empty, we return an empty string, matching the behavior of date/time inputs in other browsers.
Aditya Keerthi
Comment 6
2020-09-08 14:27:16 PDT
Created
attachment 408269
[details]
Patch for landing
EWS
Comment 7
2020-09-09 07:48:30 PDT
Committed
r266779
: <
https://trac.webkit.org/changeset/266779
> All reviewed patches have been landed. Closing bug and clearing flags on
attachment 408269
[details]
.
Radar WebKit Bug Importer
Comment 8
2020-09-09 07:49:19 PDT
<
rdar://problem/68571901
>
Ryosuke Niwa
Comment 9
2020-09-09 18:15:40 PDT
Comment on
attachment 408269
[details]
Patch for landing View in context:
https://bugs.webkit.org/attachment.cgi?id=408269&action=review
> Source/WebCore/html/shadow/DateTimeFieldElements.h:61 > + virtual void populateDateTimeFieldsState(DateTimeFieldsState&); > + virtual void setValueAsDate(const DateComponents&);
These should be override instead of virtual. Also, why are the orders different?
> Source/WebCore/html/shadow/DateTimeFieldElements.h:75 > + void populateDateTimeFieldsState(DateTimeFieldsState&); > + void setValueAsDate(const DateComponents&);
Ditto.
> Source/WebCore/html/shadow/DateTimeFieldElements.h:89 > + virtual void populateDateTimeFieldsState(DateTimeFieldsState&); > + virtual void setValueAsDate(const DateComponents&);
Ditto.
> Source/WebCore/html/shadow/DateTimeFieldElements.h:103 > + virtual void populateDateTimeFieldsState(DateTimeFieldsState&); > + virtual void setValueAsDate(const DateComponents&);
Ditto.
Aditya Keerthi
Comment 10
2020-09-09 19:44:09 PDT
Opened a new bug to address post-review comments:
https://bugs.webkit.org/show_bug.cgi?id=216339
.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug