Changeset 266063 in webkit
- Timestamp:
- Aug 24, 2020 9:25:10 AM (4 years ago)
- Location:
- trunk
- Files:
-
- 11 added
- 46 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r266060 r266063 1 2020-08-24 Aditya Keerthi <akeerthi@apple.com> 2 3 [macOS] Show picker for date and datetime-local input types 4 https://bugs.webkit.org/show_bug.cgi?id=214946 5 6 Reviewed by Darin Adler and Wenson Hsieh. 7 8 Added tests to verify that the picker is correctly shown and hidden for date and 9 datetime-local input types. 10 11 * fast/forms/date/date-show-hide-picker-expected.txt: Added. 12 * fast/forms/date/date-show-hide-picker.html: Added. 13 * fast/forms/datetimelocal/datetimelocal-show-hide-picker-expected.txt: Added. 14 * fast/forms/datetimelocal/datetimelocal-show-hide-picker.html: Added. 15 * platform/ios/TestExpectations: 16 * resources/ui-helper.js: 17 (window.UIHelper.isShowingDateTimePicker): 18 1 19 2020-08-24 Hector Lopez <hector_i_lopez@apple.com> 2 20 -
trunk/LayoutTests/platform/ios/TestExpectations
r265680 r266063 3473 3473 fast/text/selection-is-prevent-defaulted.html [ Failure ] 3474 3474 3475 # FIXME: These tests require UIScriptControllerIOS additions to know when a date/time picker is presented 3476 fast/forms/date/date-show-hide-picker.html [ Skip ] 3477 fast/forms/datetimelocal/datetimelocal-show-hide-picker.html [ Skip ] 3478 3475 3479 # <rdar://problem/59636115> REGRESSION: [ iOS & macOS ] two imported/w3c/web-platform-tests/WebCryptoAPI are failing 3476 3480 imported/w3c/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.https.worker.html [ Failure ] -
trunk/LayoutTests/resources/ui-helper.js
r266051 r266063 844 844 testRunner.runUIScript(`(() => { 845 845 uiController.uiScriptComplete(uiController.isShowingDataListSuggestions); 846 })()`, result => resolve(result === "true")); 847 }); 848 } 849 850 static isShowingDateTimePicker() 851 { 852 return new Promise(resolve => { 853 testRunner.runUIScript(`(() => { 854 uiController.uiScriptComplete(uiController.isShowingDateTimePicker); 846 855 })()`, result => resolve(result === "true")); 847 856 }); -
trunk/Source/WebCore/ChangeLog
r266062 r266063 1 2020-08-24 Aditya Keerthi <akeerthi@apple.com> 2 3 [macOS] Show picker for date and datetime-local input types 4 https://bugs.webkit.org/show_bug.cgi?id=214946 5 6 Reviewed by Darin Adler and Wenson Hsieh. 7 8 Date and datetime-local input types require a calendar picker to be presented when activated. 9 Consequently, BaseChooserOnlyDateAndTimeInputType::handleDOMActivateEvent was modified to 10 create a DateTimeChooser and display a calendar upon activation. This object is destroyed 11 when the element is blurred, hiding the calendar. 12 13 There is currently no picker UI for month, week, and time input types. As a result, 14 handleDOMActivateEvent is a no-op on those input types. 15 16 Wrote an encoder and decoder for DateTimeChooserParameters, so that the picker can be 17 created with the correct values. 18 19 Tests: fast/forms/date/date-show-hide-picker.html 20 fast/forms/datetimelocal/datetimelocal-show-hide-picker.html 21 22 * WebCore.xcodeproj/project.pbxproj: 23 * html/BaseChooserOnlyDateAndTimeInputType.cpp: 24 (WebCore::BaseChooserOnlyDateAndTimeInputType::handleDOMActivateEvent): 25 (WebCore::BaseChooserOnlyDateAndTimeInputType::elementDidBlur): 26 (WebCore::BaseChooserOnlyDateAndTimeInputType::isPresentingAttachedView const): 27 (WebCore::BaseChooserOnlyDateAndTimeInputType::didChooseValue): 28 * html/BaseChooserOnlyDateAndTimeInputType.h: 29 * html/HTMLInputElement.cpp: 30 * html/MonthInputType.cpp: 31 (WebCore::MonthInputType::handleDOMActivateEvent): 32 * html/MonthInputType.h: 33 * html/TimeInputType.cpp: 34 (WebCore::TimeInputType::handleDOMActivateEvent): 35 * html/TimeInputType.h: 36 * html/WeekInputType.cpp: 37 (WebCore::WeekInputType::handleDOMActivateEvent): 38 * html/WeekInputType.h: 39 * loader/EmptyClients.cpp: 40 (WebCore::EmptyChromeClient::createDateTimeChooser): 41 * loader/EmptyClients.h: 42 * page/Chrome.cpp: 43 (WebCore::Chrome::createDateTimeChooser): 44 * page/Chrome.h: 45 * page/ChromeClient.h: 46 * platform/DateTimeChooser.h: 47 * platform/DateTimeChooserClient.h: 48 * platform/DateTimeChooserParameters.h: Added. 49 (WebCore::DateTimeChooserParameters::encode const): 50 (WebCore::DateTimeChooserParameters::decode): 51 1 52 2020-08-24 Zalan Bujtas <zalan@apple.com> 2 53 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r266040 r266063 1001 1001 37C738ED1EDBD5BC003F2B0B /* SVGUnknownElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C738EC1EDBD5B7003F2B0B /* SVGUnknownElement.h */; }; 1002 1002 37C738EF1EDBD71B003F2B0B /* MathMLUnknownElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C738EE1EDBD718003F2B0B /* MathMLUnknownElement.h */; }; 1003 37C738F31EDBDE8A003F2B0B /* DateTimeChooser.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C738F11EDBDE87003F2B0B /* DateTimeChooser.h */; };1004 37C738F41EDBDE8D003F2B0B /* DateTimeChooserClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C738F21EDBDE87003F2B0B /* DateTimeChooserClient.h */; };1003 37C738F31EDBDE8A003F2B0B /* DateTimeChooser.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C738F11EDBDE87003F2B0B /* DateTimeChooser.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1004 37C738F41EDBDE8D003F2B0B /* DateTimeChooserClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C738F21EDBDE87003F2B0B /* DateTimeChooserClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1005 1005 37D456FD1A9A50D8003330A1 /* LocalizableStrings.pm in Copy Scripts */ = {isa = PBXBuildFile; fileRef = 37D456FB1A9A50B6003330A1 /* LocalizableStrings.pm */; }; 1006 1006 37E3524D12450C6600BAF5D9 /* InputType.h in Headers */ = {isa = PBXBuildFile; fileRef = 37E3524C12450C6600BAF5D9 /* InputType.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 5081 5081 E59DD4B821098287003C8B47 /* ListButtonArrow.png in Resources */ = {isa = PBXBuildFile; fileRef = E59DD4B721098285003C8B47 /* ListButtonArrow.png */; }; 5082 5082 E5BA7D63151437CA00FE1E3F /* LengthFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = E5BA7D62151437CA00FE1E3F /* LengthFunctions.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5083 E5C59A9A24D0E1AA003B86E1 /* DateTimeChooserParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = E5C59A9924D0E1AA003B86E1 /* DateTimeChooserParameters.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5083 5084 E71467B324ABAEF200FB2F50 /* AudioNodeOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = E71467B124ABAEF100FB2F50 /* AudioNodeOptions.h */; }; 5084 5085 E71467B624ABAF1D00FB2F50 /* PannerOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = E71467B524ABAF1D00FB2F50 /* PannerOptions.h */; }; … … 15925 15926 E59DD4B721098285003C8B47 /* ListButtonArrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ListButtonArrow.png; sourceTree = "<group>"; }; 15926 15927 E5BA7D62151437CA00FE1E3F /* LengthFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthFunctions.h; sourceTree = "<group>"; }; 15928 E5C59A9924D0E1AA003B86E1 /* DateTimeChooserParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateTimeChooserParameters.h; sourceTree = "<group>"; }; 15927 15929 E71467B124ABAEF100FB2F50 /* AudioNodeOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioNodeOptions.h; sourceTree = "<group>"; }; 15928 15930 E71467B424ABAF0B00FB2F50 /* AudioNodeOptions.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = AudioNodeOptions.idl; sourceTree = "<group>"; }; … … 26691 26693 37C738F11EDBDE87003F2B0B /* DateTimeChooser.h */, 26692 26694 37C738F21EDBDE87003F2B0B /* DateTimeChooserClient.h */, 26695 E5C59A9924D0E1AA003B86E1 /* DateTimeChooserParameters.h */, 26693 26696 45FEA5CD156DDE8C00654101 /* Decimal.cpp */, 26694 26697 45FEA5CE156DDE8C00654101 /* Decimal.h */, … … 30750 30753 37C738F31EDBDE8A003F2B0B /* DateTimeChooser.h in Headers */, 30751 30754 37C738F41EDBDE8D003F2B0B /* DateTimeChooserClient.h in Headers */, 30755 E5C59A9A24D0E1AA003B86E1 /* DateTimeChooserParameters.h in Headers */, 30752 30756 453EB637159C570400001BB7 /* DateTimeFormat.h in Headers */, 30753 30757 F55B3DBA1251F12D003EF269 /* DateTimeLocalInputType.h in Headers */, -
trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp
r261013 r266063 30 30 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 31 31 32 #include "Chrome.h" 33 #include "DateTimeChooserParameters.h" 32 34 #include "HTMLDivElement.h" 33 35 #include "HTMLInputElement.h" … … 58 60 if (!element()->setupDateTimeChooserParameters(parameters)) 59 61 return; 62 63 if (auto chrome = this->chrome()) { 64 m_dateTimeChooser = chrome->createDateTimeChooser(*this); 65 if (m_dateTimeChooser) 66 m_dateTimeChooser->showChooser(parameters); 67 } 68 } 69 70 void BaseChooserOnlyDateAndTimeInputType::elementDidBlur() 71 { 72 closeDateTimeChooser(); 73 } 74 75 bool BaseChooserOnlyDateAndTimeInputType::isPresentingAttachedView() const 76 { 77 return !!m_dateTimeChooser; 60 78 } 61 79 … … 97 115 } 98 116 99 void BaseChooserOnlyDateAndTimeInputType::didChooseValue( const String&value)117 void BaseChooserOnlyDateAndTimeInputType::didChooseValue(StringView value) 100 118 { 101 119 ASSERT(element()); 102 element()->setValue(value , DispatchInputAndChangeEvent);120 element()->setValue(value.toString(), DispatchInputAndChangeEvent); 103 121 } 104 122 -
trunk/Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.h
r259687 r266063 50 50 void setValue(const String&, bool valueChanged, TextFieldEventBehavior) override; 51 51 void handleDOMActivateEvent(Event&) override; 52 void elementDidBlur() final; 52 53 ShouldCallBaseEventHandler handleKeydownEvent(KeyboardEvent&) override; 53 54 void handleKeypressEvent(KeyboardEvent&) override; … … 55 56 bool accessKeyAction(bool sendMouseEvents) override; 56 57 bool isMouseFocusable() const override; 58 bool isPresentingAttachedView() const final; 57 59 void attributeChanged(const QualifiedName&) override; 58 60 59 61 // DateTimeChooserClient functions: 60 void didChooseValue( const String&) final;62 void didChooseValue(StringView) final; 61 63 void didEndChooser() final; 62 64 63 RefPtr<DateTimeChooser> m_dateTimeChooser;65 std::unique_ptr<DateTimeChooser> m_dateTimeChooser; 64 66 }; 65 67 -
trunk/Source/WebCore/html/HTMLInputElement.cpp
r264600 r266063 38 38 #include "ChromeClient.h" 39 39 #include "DateTimeChooser.h" 40 #include "DateTimeChooserParameters.h" 40 41 #include "Document.h" 41 42 #include "Editor.h" -
trunk/Source/WebCore/html/MonthInputType.cpp
r264600 r266063 130 130 } 131 131 132 void MonthInputType::handleDOMActivateEvent(Event&) 133 { 134 } 135 132 136 } // namespace WebCore 133 137 -
trunk/Source/WebCore/html/MonthInputType.h
r263900 r266063 52 52 Optional<DateComponents> setMillisecondToDateComponents(double) const override; 53 53 bool isMonthField() const override; 54 void handleDOMActivateEvent(Event&) override; 54 55 }; 55 56 -
trunk/Source/WebCore/html/TimeInputType.cpp
r264600 r266063 105 105 } 106 106 107 void TimeInputType::handleDOMActivateEvent(Event&) 108 { 109 } 110 107 111 } // namespace WebCore 108 112 -
trunk/Source/WebCore/html/TimeInputType.h
r263900 r266063 49 49 Optional<DateComponents> setMillisecondToDateComponents(double) const override; 50 50 bool isTimeField() const override; 51 void handleDOMActivateEvent(Event&) override; 51 52 }; 52 53 -
trunk/Source/WebCore/html/WeekInputType.cpp
r264600 r266063 83 83 } 84 84 85 void WeekInputType::handleDOMActivateEvent(Event&) 86 { 87 } 88 85 89 } // namespace WebCore 86 90 -
trunk/Source/WebCore/html/WeekInputType.h
r263900 r266063 48 48 Optional<DateComponents> setMillisecondToDateComponents(double) const override; 49 49 bool isWeekField() const override; 50 void handleDOMActivateEvent(Event&) override; 50 51 }; 51 52 -
trunk/Source/WebCore/loader/EmptyClients.cpp
r265335 r266063 492 492 #endif 493 493 494 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 495 496 std::unique_ptr<DateTimeChooser> EmptyChromeClient::createDateTimeChooser(DateTimeChooserClient&) 497 { 498 return nullptr; 499 } 500 501 #endif 502 494 503 void EmptyChromeClient::runOpenPanel(Frame&, FileChooser&) 495 504 { -
trunk/Source/WebCore/loader/EmptyClients.h
r261457 r266063 137 137 #endif 138 138 139 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 140 std::unique_ptr<DateTimeChooser> createDateTimeChooser(DateTimeChooserClient&) final; 141 #endif 142 139 143 void runOpenPanel(Frame&, FileChooser&) final; 140 144 void showShareSheet(ShareDataWithParsedURL&, CompletionHandler<void(bool)>&&) final; -
trunk/Source/WebCore/page/Chrome.cpp
r261948 r266063 62 62 #endif 63 63 64 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 65 #include "DateTimeChooser.h" 66 #endif 67 64 68 #if PLATFORM(MAC) && ENABLE(GRAPHICS_CONTEXT_GL) 65 69 #include "GraphicsContextGLOpenGLManager.h" … … 443 447 #endif 444 448 449 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 450 451 std::unique_ptr<DateTimeChooser> Chrome::createDateTimeChooser(DateTimeChooserClient& client) 452 { 453 #if PLATFORM(IOS_FAMILY) 454 UNUSED_PARAM(client); 455 return nullptr; 456 #else 457 notifyPopupOpeningObservers(); 458 return m_client.createDateTimeChooser(client); 459 #endif 460 } 461 462 #endif 463 445 464 void Chrome::runOpenPanel(Frame& frame, FileChooser& fileChooser) 446 465 { -
trunk/Source/WebCore/page/Chrome.h
r261948 r266063 158 158 #endif 159 159 160 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 161 std::unique_ptr<DateTimeChooser> createDateTimeChooser(DateTimeChooserClient&); 162 #endif 163 160 164 void runOpenPanel(Frame&, FileChooser&); 161 165 void showShareSheet(ShareDataWithParsedURL&, CompletionHandler<void(bool)>&&); -
trunk/Source/WebCore/page/ChromeClient.h
r265562 r266063 290 290 #endif 291 291 292 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 293 virtual std::unique_ptr<DateTimeChooser> createDateTimeChooser(DateTimeChooserClient&) = 0; 294 #endif 295 292 296 virtual void runOpenPanel(Frame&, FileChooser&) = 0; 293 297 virtual void showShareSheet(ShareDataWithParsedURL&, WTF::CompletionHandler<void(bool)>&& callback) { callback(false); } -
trunk/Source/WebCore/platform/DateTimeChooser.h
r246490 r266063 29 29 */ 30 30 31 #ifndef DateTimeChooser_h 32 #define DateTimeChooser_h 31 #pragma once 33 32 34 33 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 35 #include "IntRect.h" 36 #include <wtf/RefCounted.h> 37 #include <wtf/text/WTFString.h> 34 #include <wtf/WeakPtr.h> 38 35 39 36 namespace WebCore { 40 37 41 struct DateTimeChooserParameters { 42 AtomString type; 43 IntRect anchorRectInRootView; 44 // Locale name for which the chooser should be localized. This 45 // might be an invalid name because it comes from HTML lang 46 // attributes. 47 AtomString locale; 48 String currentValue; 49 Vector<String> suggestionValues; 50 Vector<String> localizedSuggestionValues; 51 Vector<String> suggestionLabels; 52 double minimum; 53 double maximum; 54 double step; 55 double stepBase; 56 bool required; 57 bool isAnchorElementRTL; 58 }; 38 struct DateTimeChooserParameters; 59 39 60 // For pickers like color pickers and date pickers. 61 class DateTimeChooser : public RefCounted<DateTimeChooser> { 40 class DateTimeChooser : public CanMakeWeakPtr<DateTimeChooser> { 41 WTF_MAKE_FAST_ALLOCATED; 62 42 public: 63 43 virtual ~DateTimeChooser() = default; 64 44 65 45 virtual void endChooser() = 0; 46 virtual void showChooser(const DateTimeChooserParameters&) = 0; 66 47 }; 67 48 68 49 } // namespace WebCore 69 50 #endif 70 #endif // DateTimeChooser_h -
trunk/Source/WebCore/platform/DateTimeChooserClient.h
r223728 r266063 29 29 */ 30 30 31 #ifndef DateTimeChooserClient_h 32 #define DateTimeChooserClient_h 31 #pragma once 33 32 34 33 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 34 35 35 namespace WebCore { 36 36 … … 40 40 41 41 // Called when user picked a value. 42 virtual void didChooseValue( const String&) = 0;42 virtual void didChooseValue(StringView) = 0; 43 43 // Called when chooser has ended. 44 44 virtual void didEndChooser() = 0; … … 46 46 47 47 } // namespace WebCore 48 #endif 49 #endif // DateTimeChooserClient_h48 49 #endif // ENABLE(DATE_AND_TIME_INPUT_TYPES) -
trunk/Source/WebKit/ChangeLog
r266061 r266063 1 2020-08-24 Aditya Keerthi <akeerthi@apple.com> 2 3 [macOS] Show picker for date and datetime-local input types 4 https://bugs.webkit.org/show_bug.cgi?id=214946 5 6 Reviewed by Darin Adler and Wenson Hsieh. 7 8 Created WKDateTimePicker as a wrapper around NSDatePicker. The picker is 9 displayed in its own NSWindow, ensuring the view is always above the page. 10 WebPageProxy and WKDateTimePicker communicate through WebDateTimePickerMac, 11 in order for the picker to be initialized with the correct initial, minimum, 12 and maximum date, and so that the chosen date can be sent back to the 13 WebProcess. 14 15 Added IPC messages to enable communication between the UIProcess and the 16 WebProcess necessary for showing and hiding the picker. 17 18 * Sources.txt: 19 * SourcesCocoa.txt: 20 * UIProcess/PageClient.h: 21 * UIProcess/WebDateTimePicker.cpp: Added. 22 (WebKit::WebDateTimePicker::WebDateTimePicker): 23 (WebKit::WebDateTimePicker::~WebDateTimePicker): 24 (WebKit::WebDateTimePicker::endPicker): 25 * UIProcess/WebDateTimePicker.h: Added. 26 * UIProcess/WebPageProxy.cpp: 27 (WebKit::WebPageProxy::showDateTimePicker): 28 (WebKit::WebPageProxy::endDateTimePicker): 29 (WebKit::WebPageProxy::didChooseDate): 30 (WebKit::WebPageProxy::didEndDateTimePicker): 31 (WebKit::WebPageProxy::closeOverlayedViews): 32 * UIProcess/WebPageProxy.h: 33 * UIProcess/WebPageProxy.messages.in: 34 * UIProcess/ios/PageClientImplIOS.h: 35 * UIProcess/ios/PageClientImplIOS.mm: 36 (WebKit::PageClientImpl::createDateTimePicker): 37 * UIProcess/mac/PageClientImplMac.h: 38 * UIProcess/mac/PageClientImplMac.mm: 39 (WebKit::PageClientImpl::createDateTimePicker): 40 * UIProcess/mac/WebDateTimePickerMac.h: Added. 41 * UIProcess/mac/WebDateTimePickerMac.mm: Added. 42 (WebKit::WebDateTimePickerMac::create): 43 (WebKit::WebDateTimePickerMac::~WebDateTimePickerMac): 44 (WebKit::WebDateTimePickerMac::WebDateTimePickerMac): 45 (WebKit::WebDateTimePickerMac::endPicker): 46 (WebKit::WebDateTimePickerMac::showDateTimePicker): 47 (WebKit::WebDateTimePickerMac::didChooseDate): 48 (-[WKDateTimePickerWindow initWithContentRect:styleMask:backing:defer:]): 49 (-[WKDateTimePickerWindow canBecomeKeyWindow]): 50 (-[WKDateTimePickerWindow hasKeyAppearance]): 51 (-[WKDateTimePickerWindow shadowOptions]): 52 (-[WKDateTimePicker initWithParams:inView:]): 53 (-[WKDateTimePicker showPicker:]): 54 (-[WKDateTimePicker invalidate]): 55 (-[WKDateTimePicker didChooseDate:]): 56 (-[WKDateTimePicker dateFormatStringForType:]): 57 * WebKit.xcodeproj/project.pbxproj: 58 * WebProcess/WebCoreSupport/WebChromeClient.cpp: 59 (WebKit::WebChromeClient::createDateTimeChooser): 60 * WebProcess/WebCoreSupport/WebChromeClient.h: 61 * WebProcess/WebCoreSupport/WebDateTimeChooser.cpp: Added. 62 (WebKit::WebDateTimeChooser::WebDateTimeChooser): 63 (WebKit::WebDateTimeChooser::didChooseDate): 64 (WebKit::WebDateTimeChooser::didEndChooser): 65 (WebKit::WebDateTimeChooser::endChooser): 66 (WebKit::WebDateTimeChooser::showChooser): 67 * WebProcess/WebCoreSupport/WebDateTimeChooser.h: Added. 68 * WebProcess/WebPage/WebPage.cpp: 69 (WebKit::WebPage::setActiveDateTimeChooser): 70 (WebKit::WebPage::didChooseDate): 71 (WebKit::WebPage::didEndDateTimePicker): 72 * WebProcess/WebPage/WebPage.h: 73 * WebProcess/WebPage/WebPage.messages.in: 74 1 75 2020-08-24 Adrian Perez de Castro <aperez@igalia.com> 2 76 -
trunk/Source/WebKit/Sources.txt
r266003 r266063 308 308 UIProcess/WebCookieManagerProxyClient.cpp 309 309 UIProcess/WebDataListSuggestionsDropdown.cpp 310 UIProcess/WebDateTimePicker.cpp 310 311 UIProcess/WebEditCommandProxy.cpp 311 312 UIProcess/WebFormClient.cpp … … 633 634 WebProcess/WebCoreSupport/WebContextMenuClient.cpp 634 635 WebProcess/WebCoreSupport/WebDataListSuggestionPicker.cpp 636 WebProcess/WebCoreSupport/WebDateTimeChooser.cpp 635 637 WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp 636 638 WebProcess/WebCoreSupport/WebDragClient.cpp -
trunk/Source/WebKit/SourcesCocoa.txt
r265422 r266063 496 496 UIProcess/mac/WebCookieManagerProxyMac.mm 497 497 UIProcess/mac/WebDataListSuggestionsDropdownMac.mm 498 UIProcess/mac/WebDateTimePickerMac.mm 498 499 UIProcess/mac/WebPageProxyMac.mm 499 500 UIProcess/mac/WebPopupMenuProxyMac.mm -
trunk/Source/WebKit/UIProcess/PageClient.h
r265882 r266063 31 31 #include "WebColorPicker.h" 32 32 #include "WebDataListSuggestionsDropdown.h" 33 #include "WebDateTimePicker.h" 33 34 #include "WebPopupMenuProxy.h" 34 35 #include <WebCore/ActivityState.h> … … 159 160 #endif 160 161 162 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 163 class WebDateTimePicker; 164 #endif 165 161 166 #if ENABLE(FULLSCREEN_API) 162 167 class WebFullScreenManagerProxyClient; … … 337 342 #if ENABLE(DATALIST_ELEMENT) 338 343 virtual RefPtr<WebDataListSuggestionsDropdown> createDataListSuggestionsDropdown(WebPageProxy&) = 0; 344 #endif 345 346 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 347 virtual RefPtr<WebDateTimePicker> createDateTimePicker(WebPageProxy&) = 0; 339 348 #endif 340 349 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r266003 r266063 295 295 #endif 296 296 297 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 298 #include "WebDateTimePicker.h" 299 #endif 300 297 301 // This controls what strategy we use for mouse wheel coalescing. 298 302 #define MERGE_WHEEL_EVENTS 1 … … 6172 6176 6173 6177 send(Messages::WebPage::DidSelectDataListOption(selectedOption)); 6178 } 6179 6180 #endif 6181 6182 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 6183 6184 void WebPageProxy::showDateTimePicker(WebCore::DateTimeChooserParameters&& params) 6185 { 6186 if (!m_dateTimePicker) 6187 m_dateTimePicker = pageClient().createDateTimePicker(*this); 6188 6189 m_dateTimePicker->showDateTimePicker(WTFMove(params)); 6190 } 6191 6192 void WebPageProxy::endDateTimePicker() 6193 { 6194 if (!m_dateTimePicker) 6195 return; 6196 6197 m_dateTimePicker->endPicker(); 6198 } 6199 6200 void WebPageProxy::didChooseDate(StringView date) 6201 { 6202 if (!hasRunningProcess()) 6203 return; 6204 6205 send(Messages::WebPage::DidChooseDate(date.toString())); 6206 } 6207 6208 void WebPageProxy::didEndDateTimePicker() 6209 { 6210 m_dateTimePicker = nullptr; 6211 if (!hasRunningProcess()) 6212 return; 6213 6214 send(Messages::WebPage::DidEndDateTimePicker()); 6174 6215 } 6175 6216 … … 9362 9403 endColorPicker(); 9363 9404 #endif 9405 9406 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 9407 endDateTimePicker(); 9408 #endif 9364 9409 } 9365 9410 -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r266003 r266063 251 251 struct ContentRuleListResults; 252 252 struct DataListSuggestionInformation; 253 struct DateTimeChooserParameters; 253 254 struct DictionaryPopupInfo; 254 255 struct DragItem; … … 417 418 using DrawToPDFCallback = GenericCallback<const IPC::DataReference&>; 418 419 typedef GenericCallback<bool, bool, String, double, double, uint64_t> NowPlayingInfoCallback; 420 #endif 421 422 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 423 class WebDateTimePicker; 419 424 #endif 420 425 … … 1648 1653 #endif 1649 1654 1655 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 1656 void didChooseDate(StringView); 1657 void didEndDateTimePicker(); 1658 #endif 1659 1650 1660 void updateCurrentModifierState(); 1651 1661 … … 2002 2012 #endif 2003 2013 2014 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 2015 void showDateTimePicker(WebCore::DateTimeChooserParameters&&); 2016 void endDateTimePicker(); 2017 #endif 2018 2004 2019 void closeOverlayedViews(); 2005 2020 … … 2602 2617 RefPtr<WebDataListSuggestionsDropdown> m_dataListSuggestionsDropdown; 2603 2618 #endif 2619 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 2620 RefPtr<WebDateTimePicker> m_dateTimePicker; 2621 #endif 2604 2622 #if PLATFORM(COCOA) 2605 2623 RefPtr<WebCore::ValidationBubble> m_validationBubble; -
trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in
r266003 r266063 99 99 #endif 100 100 101 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 102 ShowDateTimePicker(struct WebCore::DateTimeChooserParameters params); 103 EndDateTimePicker(); 104 #endif 105 101 106 # Policy messages 102 107 DecidePolicyForResponse(WebCore::FrameIdentifier frameID, struct WebKit::FrameInfoData frameInfo, WebCore::PolicyCheckIdentifier policyCheckIdentifier, uint64_t navigationID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, bool canShowMIMEType, String downloadAttribute, uint64_t listenerID, WebKit::UserData userData) -
trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h
r265882 r266063 125 125 #endif 126 126 127 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 128 RefPtr<WebDateTimePicker> createDateTimePicker(WebPageProxy&) final; 129 #endif 130 127 131 void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorWindowLifetime) override; 128 132 void clearTextIndicator(WebCore::TextIndicatorWindowDismissalAnimation) override; -
trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
r265882 r266063 850 850 #endif 851 851 852 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 853 RefPtr<WebDateTimePicker> PageClientImpl::createDateTimePicker(WebPageProxy&) 854 { 855 return nullptr; 856 } 857 #endif 858 852 859 #if ENABLE(DRAG_SUPPORT) 853 860 void PageClientImpl::didPerformDragOperation(bool handled) -
trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.h
r263825 r266063 144 144 #endif 145 145 146 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 147 RefPtr<WebDateTimePicker> createDateTimePicker(WebPageProxy&) override; 148 #endif 149 146 150 Ref<WebCore::ValidationBubble> createValidationBubble(const String& message, const WebCore::ValidationBubble::Settings&) final; 147 151 -
trunk/Source/WebKit/UIProcess/mac/PageClientImplMac.mm
r265091 r266063 53 53 #import "WebContextMenuProxyMac.h" 54 54 #import "WebDataListSuggestionsDropdownMac.h" 55 #import "WebDateTimePickerMac.h" 55 56 #import "WebEditCommandProxy.h" 56 57 #import "WebPageProxy.h" … … 477 478 #endif 478 479 480 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 481 RefPtr<WebDateTimePicker> PageClientImpl::createDateTimePicker(WebPageProxy& page) 482 { 483 return WebDateTimePickerMac::create(page, m_view); 484 } 485 #endif 486 479 487 Ref<ValidationBubble> PageClientImpl::createValidationBubble(const String& message, const ValidationBubble::Settings& settings) 480 488 { -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r266003 r266063 1836 1836 E52CF55220A35C3A00DADA27 /* WebDataListSuggestionPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = E52CF55020A35C3A00DADA27 /* WebDataListSuggestionPicker.h */; }; 1837 1837 E548EBD121015F0E00BE3C32 /* WKFormColorPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = E548EBCF21015F0E00BE3C32 /* WKFormColorPicker.h */; }; 1838 E55CD1F524CF747D0042DB9C /* WebDateTimeChooser.h in Headers */ = {isa = PBXBuildFile; fileRef = E55CD1F324CF747D0042DB9C /* WebDateTimeChooser.h */; }; 1839 E55CD20024D08D8F0042DB9C /* WebDateTimePicker.h in Headers */ = {isa = PBXBuildFile; fileRef = E55CD1FC24D0880B0042DB9C /* WebDateTimePicker.h */; }; 1840 E55CD20324D09F1F0042DB9C /* WebDateTimePickerMac.h in Headers */ = {isa = PBXBuildFile; fileRef = E55CD20124D09F1F0042DB9C /* WebDateTimePickerMac.h */; }; 1838 1841 E568B91F20A3AB2F00E3C856 /* WebDataListSuggestionsDropdown.h in Headers */ = {isa = PBXBuildFile; fileRef = E568B91E20A3AB2F00E3C856 /* WebDataListSuggestionsDropdown.h */; }; 1839 1842 E568B92220A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.h in Headers */ = {isa = PBXBuildFile; fileRef = E568B92020A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.h */; }; … … 5366 5369 E548EBD021015F0E00BE3C32 /* WKFormColorPicker.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKFormColorPicker.mm; path = ios/forms/WKFormColorPicker.mm; sourceTree = "<group>"; }; 5367 5370 E54A14CE20FCFB7B007E13D8 /* WebDataListSuggestionsDropdown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebDataListSuggestionsDropdown.cpp; sourceTree = "<group>"; }; 5371 E55CD1F324CF747D0042DB9C /* WebDateTimeChooser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebDateTimeChooser.h; sourceTree = "<group>"; }; 5372 E55CD1F424CF747D0042DB9C /* WebDateTimeChooser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebDateTimeChooser.cpp; sourceTree = "<group>"; }; 5373 E55CD1FC24D0880B0042DB9C /* WebDateTimePicker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebDateTimePicker.h; sourceTree = "<group>"; }; 5374 E55CD1FD24D0880B0042DB9C /* WebDateTimePicker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebDateTimePicker.cpp; sourceTree = "<group>"; }; 5375 E55CD20124D09F1F0042DB9C /* WebDateTimePickerMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebDateTimePickerMac.h; sourceTree = "<group>"; }; 5376 E55CD20224D09F1F0042DB9C /* WebDateTimePickerMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDateTimePickerMac.mm; sourceTree = "<group>"; }; 5368 5377 E568B91E20A3AB2F00E3C856 /* WebDataListSuggestionsDropdown.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebDataListSuggestionsDropdown.h; sourceTree = "<group>"; }; 5369 5378 E568B92020A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebDataListSuggestionsDropdownMac.h; sourceTree = "<group>"; }; … … 8837 8846 E52CF55120A35C3A00DADA27 /* WebDataListSuggestionPicker.cpp */, 8838 8847 E52CF55020A35C3A00DADA27 /* WebDataListSuggestionPicker.h */, 8848 E55CD1F424CF747D0042DB9C /* WebDateTimeChooser.cpp */, 8849 E55CD1F324CF747D0042DB9C /* WebDateTimeChooser.h */, 8839 8850 CD19A2691A13E820008D650E /* WebDiagnosticLoggingClient.cpp */, 8840 8851 CD19A26A1A13E821008D650E /* WebDiagnosticLoggingClient.h */, … … 9053 9064 E54A14CE20FCFB7B007E13D8 /* WebDataListSuggestionsDropdown.cpp */, 9054 9065 E568B91E20A3AB2F00E3C856 /* WebDataListSuggestionsDropdown.h */, 9066 E55CD1FD24D0880B0042DB9C /* WebDateTimePicker.cpp */, 9067 E55CD1FC24D0880B0042DB9C /* WebDateTimePicker.h */, 9055 9068 BCA0EF9E12332642007D3CFB /* WebEditCommandProxy.cpp */, 9056 9069 BCA0EF9D12332642007D3CFB /* WebEditCommandProxy.h */, … … 9847 9860 E568B92020A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.h */, 9848 9861 E568B92120A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.mm */, 9862 E55CD20124D09F1F0042DB9C /* WebDateTimePickerMac.h */, 9863 E55CD20224D09F1F0042DB9C /* WebDateTimePickerMac.mm */, 9849 9864 BC857E8512B71EBB00EDEB2E /* WebPageProxyMac.mm */, 9850 9865 BC5750951268F3C6006F0F12 /* WebPopupMenuProxyMac.h */, … … 11282 11297 E5BEF6822130C48000F31111 /* WebDataListSuggestionsDropdownIOS.h in Headers */, 11283 11298 E568B92220A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.h in Headers */, 11299 E55CD1F524CF747D0042DB9C /* WebDateTimeChooser.h in Headers */, 11300 E55CD20024D08D8F0042DB9C /* WebDateTimePicker.h in Headers */, 11301 E55CD20324D09F1F0042DB9C /* WebDateTimePickerMac.h in Headers */, 11284 11302 46B0524722668D8500265B97 /* WebDeviceOrientationAndMotionAccessController.h in Headers */, 11285 11303 E39628DD23960CC600658ECD /* WebDeviceOrientationUpdateProvider.h in Headers */, -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
r265562 r266063 45 45 #include "WebCoreArgumentCoders.h" 46 46 #include "WebDataListSuggestionPicker.h" 47 #include "WebDateTimeChooser.h" 47 48 #include "WebFrame.h" 48 49 #include "WebFrameLoaderClient.h" … … 776 777 #endif 777 778 779 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 780 781 std::unique_ptr<DateTimeChooser> WebChromeClient::createDateTimeChooser(DateTimeChooserClient& client) 782 { 783 return makeUnique<WebDateTimeChooser>(m_page, client); 784 } 785 786 #endif 787 778 788 void WebChromeClient::runOpenPanel(Frame& frame, FileChooser& fileChooser) 779 789 { -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
r265562 r266063 153 153 #endif 154 154 155 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 156 std::unique_ptr<WebCore::DateTimeChooser> createDateTimeChooser(WebCore::DateTimeChooserClient&) final; 157 #endif 158 155 159 #if ENABLE(IOS_TOUCH_EVENTS) 156 160 void didPreventDefaultForEvent() final; -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r266003 r266063 81 81 #include "WebDataListSuggestionPicker.h" 82 82 #include "WebDatabaseProvider.h" 83 #include "WebDateTimeChooser.h" 83 84 #include "WebDiagnosticLoggingClient.h" 84 85 #include "WebDocumentLoader.h" … … 4209 4210 #endif 4210 4211 4212 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 4213 4214 void WebPage::setActiveDateTimeChooser(WebDateTimeChooser& dateTimeChooser) 4215 { 4216 m_activeDateTimeChooser = makeWeakPtr(&dateTimeChooser); 4217 } 4218 4219 void WebPage::didChooseDate(const String& date) 4220 { 4221 if (m_activeDateTimeChooser) 4222 m_activeDateTimeChooser->didChooseDate(date); 4223 } 4224 4225 void WebPage::didEndDateTimePicker() 4226 { 4227 if (auto chooser = std::exchange(m_activeDateTimeChooser, nullptr)) 4228 chooser->didEndChooser(); 4229 } 4230 4231 #endif 4232 4211 4233 void WebPage::setActiveOpenPanelResultListener(Ref<WebOpenPanelResultListener>&& openPanelResultListener) 4212 4234 { -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r266003 r266063 250 250 class WebContextMenuItemData; 251 251 class WebDataListSuggestionPicker; 252 class WebDateTimeChooser; 252 253 class WebDocumentLoader; 253 254 class WebEvent; … … 437 438 void didSelectDataListOption(const String&); 438 439 void didCloseSuggestions(); 440 #endif 441 442 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 443 void setActiveDateTimeChooser(WebDateTimeChooser&); 444 void didChooseDate(const String&); 445 void didEndDateTimePicker(); 439 446 #endif 440 447 … … 1911 1918 #endif 1912 1919 1920 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 1921 WeakPtr<WebDateTimeChooser> m_activeDateTimeChooser; 1922 #endif 1923 1913 1924 RefPtr<WebOpenPanelResultListener> m_activeOpenPanelResultListener; 1914 1925 RefPtr<NotificationPermissionRequestManager> m_notificationPermissionRequestManager; -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in
r265916 r266063 160 160 #endif 161 161 162 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 163 DidChooseDate(String date); 164 DidEndDateTimePicker(); 165 #endif 166 162 167 #if ENABLE(CONTEXT_MENUS) 163 168 ContextMenuHidden() -
trunk/Source/WebKitLegacy/mac/ChangeLog
r266028 r266063 1 2020-08-24 Aditya Keerthi <akeerthi@apple.com> 2 3 [macOS] Show picker for date and datetime-local input types 4 https://bugs.webkit.org/show_bug.cgi?id=214946 5 6 Reviewed by Darin Adler and Wenson Hsieh. 7 8 * WebCoreSupport/WebChromeClient.h: 9 * WebCoreSupport/WebChromeClient.mm: 10 (WebChromeClient::createDateTimeChooser): 11 1 12 2020-08-19 Darin Adler <darin@apple.com> 2 13 -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.h
r263498 r266063 148 148 #endif 149 149 150 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 151 std::unique_ptr<WebCore::DateTimeChooser> createDateTimeChooser(WebCore::DateTimeChooserClient&) final; 152 #endif 153 150 154 #if ENABLE(POINTER_LOCK) 151 155 bool requestPointerLock() final; -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm
r264006 r266063 733 733 #endif 734 734 735 #if ENABLE(DATE_AND_TIME_INPUT_TYPES) 736 std::unique_ptr<DateTimeChooser> WebChromeClient::createDateTimeChooser(DateTimeChooserClient&) 737 { 738 ASSERT_NOT_REACHED(); 739 return nullptr; 740 } 741 #endif 742 735 743 #if ENABLE(POINTER_LOCK) 736 744 bool WebChromeClient::requestPointerLock() -
trunk/Tools/ChangeLog
r266055 r266063 1 2020-08-24 Aditya Keerthi <akeerthi@apple.com> 2 3 [macOS] Show picker for date and datetime-local input types 4 https://bugs.webkit.org/show_bug.cgi?id=214946 5 6 Reviewed by Darin Adler and Wenson Hsieh. 7 8 Added isShowingDateTimePicker testing hook in order to enable testing of the visibility of 9 the picker. 10 11 * TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl: 12 * TestRunnerShared/UIScriptContext/UIScriptController.h: 13 (WTR::UIScriptController::isShowingDateTimePicker const): 14 * WebKitTestRunner/mac/UIScriptControllerMac.h: 15 * WebKitTestRunner/mac/UIScriptControllerMac.mm: 16 (WTR::UIScriptControllerMac::isShowingDateTimePicker const): 17 1 18 2020-08-24 Carlos Garcia Campos <cgarcia@igalia.com> 2 19 -
trunk/Tools/TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl
r265396 r266063 224 224 readonly attribute double timePickerValueMinute; 225 225 226 readonly attribute boolean isShowingDateTimePicker; 227 226 228 // <datalist> 227 229 readonly attribute boolean isShowingDataListSuggestions; -
trunk/Tools/TestRunnerShared/UIScriptContext/UIScriptController.h
r265396 r266063 217 217 virtual double timePickerValueHour() const { notImplemented(); return -1; } 218 218 virtual double timePickerValueMinute() const { notImplemented(); return -1; } 219 virtual bool isShowingDateTimePicker() const { notImplemented(); return false; } 219 220 virtual bool isShowingDataListSuggestions() const { notImplemented(); return false; } 220 221 virtual JSObjectRef calendarType() const { notImplemented(); return nullptr; } -
trunk/Tools/WebKitTestRunner/mac/UIScriptControllerMac.h
r265396 r266063 43 43 double zoomScale() const override; 44 44 void simulateAccessibilitySettingsChangeNotification(JSValueRef) override; 45 bool isShowingDateTimePicker() const override; 45 46 bool isShowingDataListSuggestions() const override; 46 47 void activateDataListSuggestion(unsigned index, JSValueRef callback) override; -
trunk/Tools/WebKitTestRunner/mac/UIScriptControllerMac.mm
r265396 r266063 98 98 } 99 99 100 bool UIScriptControllerMac::isShowingDateTimePicker() const 101 { 102 for (NSWindow *childWindow in webView().window.childWindows) { 103 if ([childWindow isKindOfClass:NSClassFromString(@"WKDateTimePickerWindow")]) 104 return true; 105 } 106 return false; 107 } 108 100 109 bool UIScriptControllerMac::isShowingDataListSuggestions() const 101 110 {
Note: See TracChangeset
for help on using the changeset viewer.