Changeset 268901 in webkit
- Timestamp:
- Oct 22, 2020, 6:32:09 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 6 added
- 21 edited
- 1 copied
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/contact-picker/contacts-select-invalid-properties-and-options-expected.txt (added)
-
LayoutTests/contact-picker/contacts-select-invalid-properties-and-options.html (added)
-
LayoutTests/contact-picker/contacts-select-requires-user-gesture-expected.txt (added)
-
LayoutTests/contact-picker/contacts-select-requires-user-gesture.html (added)
-
LayoutTests/contact-picker/contacts-select-subframe-expected.txt (added)
-
LayoutTests/contact-picker/contacts-select-subframe.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Headers.cmake (modified) (1 diff)
-
Source/WebCore/Modules/contact-picker/ContactInfo.h (modified) (2 diffs)
-
Source/WebCore/Modules/contact-picker/ContactInfo.idl (modified) (1 diff)
-
Source/WebCore/Modules/contact-picker/ContactProperty.h (modified) (2 diffs)
-
Source/WebCore/Modules/contact-picker/ContactsManager.cpp (modified) (3 diffs)
-
Source/WebCore/Modules/contact-picker/ContactsManager.h (modified) (3 diffs)
-
Source/WebCore/Modules/contact-picker/ContactsRequestData.h (copied) (copied from trunk/Source/WebCore/Modules/contact-picker/ContactInfo.h ) (1 diff)
-
Source/WebCore/WebCore.xcodeproj/project.pbxproj (modified) (4 diffs)
-
Source/WebCore/page/Chrome.cpp (modified) (2 diffs)
-
Source/WebCore/page/Chrome.h (modified) (2 diffs)
-
Source/WebCore/page/ChromeClient.h (modified) (3 diffs)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/UIProcess/PageClient.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/WebPageProxy.cpp (modified) (1 diff)
-
Source/WebKit/UIProcess/WebPageProxy.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/WebPageProxy.messages.in (modified) (1 diff)
-
Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp (modified) (1 diff)
-
Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h (modified) (1 diff)
-
Source/WebKit/WebProcess/WebPage/WebPage.cpp (modified) (2 diffs)
-
Source/WebKit/WebProcess/WebPage/WebPage.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r268898 r268901 1 2020-10-22 Aditya Keerthi <akeerthi@apple.com> 2 3 [Contact Picker API] Add skeleton implementation of ContactsManager.select() 4 https://bugs.webkit.org/show_bug.cgi?id=218050 5 <rdar://problem/69862186> 6 7 Reviewed by Devin Rousso. 8 9 Added tests for failure cases of the API. Note that success cases are 10 untested since no platforms currently display a picker UI, and the 11 specification states that the promise should fail in this case. The 12 success test cases will be added once the UI is implemented for iOS. 13 14 * contact-picker/contacts-select-invalid-properties-and-options-expected.txt: Added. 15 * contact-picker/contacts-select-invalid-properties-and-options.html: Added. 16 * contact-picker/contacts-select-requires-user-gesture-expected.txt: Added. 17 * contact-picker/contacts-select-requires-user-gesture.html: Added. 18 * contact-picker/contacts-select-subframe-expected.txt: Added. 19 * contact-picker/contacts-select-subframe.html: Added. 20 1 21 2020-10-22 Simon Fraser <simon.fraser@apple.com> 2 22 -
trunk/Source/WebCore/ChangeLog
r268900 r268901 1 2020-10-22 Aditya Keerthi <akeerthi@apple.com> 2 3 [Contact Picker API] Add skeleton implementation of ContactsManager.select() 4 https://bugs.webkit.org/show_bug.cgi?id=218050 5 <rdar://problem/69862186> 6 7 Reviewed by Devin Rousso. 8 9 ContactsManager.select() is the interface that allows clients to 10 present a contact picker. The method should immediately reject when 11 called from a subframe, when called outside user-interaction and when 12 called while a contact picker is already being displayed. Furthermore, 13 the promise is rejected when the supplied properties are empty or 14 invalid. 15 16 After the conditions necessary for the UI to be presented are verified, 17 ContactsManager.select() calls into the page's Chrome to display the 18 picker. The UI implementation on macOS and iOS will be done in 19 forthcoming patches. 20 21 See https://wicg.github.io/contact-api/spec/#contacts-manager-select 22 for more information. 23 24 Tests: contact-picker/contacts-select-invalid-properties-and-options.html 25 contact-picker/contacts-select-requires-user-gesture.html 26 contact-picker/contacts-select-subframe.html 27 28 * Headers.cmake: 29 * Modules/contact-picker/ContactInfo.h: Added encoder and decoder for IPC. 30 (WebCore::ContactInfo::encode const): 31 (WebCore::ContactInfo::decode): 32 * Modules/contact-picker/ContactInfo.idl: 33 * Modules/contact-picker/ContactProperty.h: 34 * Modules/contact-picker/ContactsManager.cpp: 35 (WebCore::ContactsManager::frame const): 36 (WebCore::ContactsManager::select): 37 * Modules/contact-picker/ContactsManager.h: 38 * Modules/contact-picker/ContactsRequestData.h: Added. 39 40 ContactsRequestData encapsulates the information required to display a 41 picker UI. This includes the requested properties, the URL of the 42 presenting site, and whether multiple contact selection should be allowed. 43 44 (WebCore::ContactsRequestData::encode const): 45 (WebCore::ContactsRequestData::decode): 46 * WebCore.xcodeproj/project.pbxproj: 47 * page/Chrome.cpp: 48 (WebCore::Chrome::showContactPicker): 49 * page/Chrome.h: 50 * page/ChromeClient.h: 51 (WebCore::ChromeClient::showContactPicker): 52 1 53 2020-10-22 Chris Dumez <cdumez@apple.com> 2 54 -
trunk/Source/WebCore/Headers.cmake
r268669 r268901 19 19 Modules/cache/DOMCacheEngine.h 20 20 Modules/cache/RetrieveRecordsOptions.h 21 22 Modules/contact-picker/ContactInfo.h 23 Modules/contact-picker/ContactProperty.h 24 Modules/contact-picker/ContactsRequestData.h 21 25 22 26 Modules/encryptedmedia/CDMClient.h -
trunk/Source/WebCore/Modules/contact-picker/ContactInfo.h
r268038 r268901 27 27 28 28 #include <wtf/Forward.h> 29 #include <wtf/Optional.h> 29 30 #include <wtf/Vector.h> 30 31 … … 35 36 Vector<String> email; 36 37 Vector<String> tel; 38 39 template<class Encoder> void encode(Encoder&) const; 40 template<class Decoder> static Optional<ContactInfo> decode(Decoder&); 37 41 }; 38 42 43 template<class Encoder> 44 void ContactInfo::encode(Encoder& encoder) const 45 { 46 encoder << name; 47 encoder << email; 48 encoder << tel; 39 49 } 50 51 template<class Decoder> 52 Optional<ContactInfo> ContactInfo::decode(Decoder& decoder) 53 { 54 Optional<Vector<String>> name; 55 decoder >> name; 56 if (!name) 57 return WTF::nullopt; 58 59 Optional<Vector<String>> email; 60 decoder >> email; 61 if (!email) 62 return WTF::nullopt; 63 64 Optional<Vector<String>> tel; 65 decoder >> tel; 66 if (!tel) 67 return WTF::nullopt; 68 69 return {{ *name, *email, *tel }}; 70 } 71 72 } // namespace WebCore -
trunk/Source/WebCore/Modules/contact-picker/ContactInfo.idl
r267988 r268901 26 26 // https://wicg.github.io/contact-api/ 27 27 28 dictionary ContactInfo { 28 [ 29 JSGenerateToJSObject, 30 ] dictionary ContactInfo { 29 31 sequence<USVString> name; 30 32 sequence<USVString> email; -
trunk/Source/WebCore/Modules/contact-picker/ContactProperty.h
r267988 r268901 26 26 #pragma once 27 27 28 #include <wtf/EnumTraits.h> 29 28 30 namespace WebCore { 29 31 … … 31 33 32 34 } 35 36 namespace WTF { 37 38 template<> struct EnumTraits<WebCore::ContactProperty> { 39 using values = EnumValues< 40 WebCore::ContactProperty, 41 WebCore::ContactProperty::Email, 42 WebCore::ContactProperty::Name, 43 WebCore::ContactProperty::Tel 44 >; 45 }; 46 47 } -
trunk/Source/WebCore/Modules/contact-picker/ContactsManager.cpp
r268144 r268901 27 27 #include "ContactsManager.h" 28 28 29 #include "Chrome.h" 29 30 #include "ContactInfo.h" 30 31 #include "ContactProperty.h" 32 #include "ContactsRequestData.h" 31 33 #include "ContactsSelectOptions.h" 34 #include "Document.h" 35 #include "Frame.h" 36 #include "JSContactInfo.h" 32 37 #include "JSDOMPromiseDeferred.h" 33 38 #include "Navigator.h" 39 #include "Page.h" 40 #include "UserGestureIndicator.h" 41 #include <wtf/CompletionHandler.h> 34 42 #include <wtf/IsoMallocInlines.h> 43 #include <wtf/Optional.h> 44 #include <wtf/URL.h> 35 45 36 46 namespace WebCore { … … 50 60 ContactsManager::~ContactsManager() = default; 51 61 62 63 Frame* ContactsManager::frame() const 64 { 65 return m_navigator ? m_navigator->frame() : nullptr; 66 } 67 52 68 Navigator* ContactsManager::navigator() 53 69 { … … 63 79 void ContactsManager::select(const Vector<ContactProperty>& properties, const ContactsSelectOptions& options, Ref<DeferredPromise>&& promise) 64 80 { 65 UNUSED_PARAM(properties); 66 UNUSED_PARAM(options); 67 promise->reject(NotSupportedError); 81 auto* frame = this->frame(); 82 if (!frame || !frame->isMainFrame() || !frame->document() || !frame->page()) { 83 promise->reject(InvalidStateError); 84 return; 85 } 86 87 if (!UserGestureIndicator::processingUserGesture()) { 88 promise->reject(SecurityError); 89 return; 90 } 91 92 if (m_contactPickerIsShowing) { 93 promise->reject(InvalidStateError); 94 return; 95 } 96 97 if (properties.isEmpty()) { 98 promise->reject(TypeError); 99 return; 100 } 101 102 ContactsRequestData requestData; 103 requestData.properties = properties; 104 requestData.multiple = options.multiple; 105 requestData.url = frame->document()->url().truncatedForUseAsBase().string(); 106 107 m_contactPickerIsShowing = true; 108 109 frame->page()->chrome().showContactPicker(requestData, [promise = WTFMove(promise), this] (Optional<Vector<ContactInfo>>&& info) { 110 m_contactPickerIsShowing = false; 111 if (info) { 112 promise->resolve<IDLSequence<IDLDictionary<ContactInfo>>>(*info); 113 return; 114 } 115 116 promise->reject(UnknownError); 117 }); 68 118 } 69 119 -
trunk/Source/WebCore/Modules/contact-picker/ContactsManager.h
r267988 r268901 34 34 35 35 class DeferredPromise; 36 class Frame; 36 37 class Navigator; 37 38 … … 46 47 ~ContactsManager(); 47 48 49 Frame* frame() const; 48 50 Navigator* navigator(); 49 51 … … 55 57 56 58 WeakPtr<Navigator> m_navigator; 59 bool m_contactPickerIsShowing { false }; 57 60 }; 58 61 -
trunk/Source/WebCore/Modules/contact-picker/ContactsRequestData.h
r268900 r268901 26 26 #pragma once 27 27 28 #include "ContactProperty.h" 28 29 #include <wtf/Forward.h> 30 #include <wtf/Optional.h> 29 31 #include <wtf/Vector.h> 30 32 31 33 namespace WebCore { 32 34 33 struct ContactInfo { 34 Vector<String> name; 35 Vector<String> email; 36 Vector<String> tel; 35 struct ContactsRequestData { 36 Vector<ContactProperty> properties; 37 bool multiple { false }; 38 String url; 39 40 template<class Encoder> void encode(Encoder&) const; 41 template<class Decoder> static Optional<ContactsRequestData> decode(Decoder&); 37 42 }; 38 43 44 template<class Encoder> 45 void ContactsRequestData::encode(Encoder& encoder) const 46 { 47 encoder << properties; 48 encoder << multiple; 49 encoder << url; 39 50 } 51 52 template<class Decoder> 53 Optional<ContactsRequestData> ContactsRequestData::decode(Decoder& decoder) 54 { 55 Optional<Vector<ContactProperty>> properties; 56 decoder >> properties; 57 if (!properties) 58 return WTF::nullopt; 59 60 Optional<bool> multiple; 61 decoder >> multiple; 62 if (!multiple) 63 return WTF::nullopt; 64 65 Optional<String> url; 66 decoder >> url; 67 if (!url) 68 return WTF::nullopt; 69 70 return {{ *properties, *multiple, *url }}; 71 } 72 73 } -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r268897 r268901 5108 5108 E4E94D6122FF158A00DD191F /* ComplexLineLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A1AC7822FAFD500017B75B /* ComplexLineLayout.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5109 5109 E4F9EEF3156DA00700D23E7E /* StyleSheetContents.h in Headers */ = {isa = PBXBuildFile; fileRef = E4F9EEF1156D84C400D23E7E /* StyleSheetContents.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5110 E50620842540919C00C43091 /* ContactsRequestData.h in Headers */ = {isa = PBXBuildFile; fileRef = E50620832540919B00C43091 /* ContactsRequestData.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5110 5111 E516699120FF9918009D2C27 /* ListButtonArrow@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E516698F20FF9916009D2C27 /* ListButtonArrow@2x.png */; }; 5111 5112 E517670320B88C1400D41167 /* DataListSuggestionInformation.h in Headers */ = {isa = PBXBuildFile; fileRef = E517670220B88C1400D41167 /* DataListSuggestionInformation.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 16188 16189 E4F9EEF1156D84C400D23E7E /* StyleSheetContents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleSheetContents.h; sourceTree = "<group>"; }; 16189 16190 E4FB4B35239BEB10003C336A /* LayoutIntegrationInlineContent.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutIntegrationInlineContent.cpp; sourceTree = "<group>"; }; 16191 E50620832540919B00C43091 /* ContactsRequestData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ContactsRequestData.h; sourceTree = "<group>"; }; 16190 16192 E516698F20FF9916009D2C27 /* ListButtonArrow@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ListButtonArrow@2x.png"; sourceTree = "<group>"; }; 16191 16193 E517670220B88C1400D41167 /* DataListSuggestionInformation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DataListSuggestionInformation.h; sourceTree = "<group>"; }; … … 28763 28765 E596DD2D251903EF00C275A7 /* ContactsManager.h */, 28764 28766 E596DD2F251903EF00C275A7 /* ContactsManager.idl */, 28767 E50620832540919B00C43091 /* ContactsRequestData.h */, 28765 28768 E596DD332519041400C275A7 /* ContactsSelectOptions.h */, 28766 28769 E596DD342519041400C275A7 /* ContactsSelectOptions.idl */, … … 31060 31063 E596DD58251BAC4A00C275A7 /* ContactProperty.h in Headers */, 31061 31064 E596DD30251903EF00C275A7 /* ContactsManager.h in Headers */, 31065 E50620842540919C00C43091 /* ContactsRequestData.h in Headers */, 31062 31066 E596DD352519041400C275A7 /* ContactsSelectOptions.h in Headers */, 31063 31067 A818721C0977D3C0005826D9 /* ContainerNode.h in Headers */, -
trunk/Source/WebCore/page/Chrome.cpp
r266063 r268901 24 24 25 25 #include "ChromeClient.h" 26 #include "ContactInfo.h" 27 #include "ContactsRequestData.h" 26 28 #include "DOMWindow.h" 27 29 #include "Document.h" … … 473 475 } 474 476 477 void Chrome::showContactPicker(const ContactsRequestData& requestData, CompletionHandler<void(Optional<Vector<ContactInfo>>&&)>&& callback) 478 { 479 m_client.showContactPicker(requestData, WTFMove(callback)); 480 } 481 475 482 void Chrome::loadIconForFiles(const Vector<String>& filenames, FileIconLoader& loader) 476 483 { -
trunk/Source/WebCore/page/Chrome.h
r268031 r268901 58 58 class SearchPopupMenu; 59 59 60 struct ContactInfo; 61 struct ContactsRequestData; 60 62 struct DateTimeChooserParameters; 61 63 struct ShareDataWithParsedURL; … … 162 164 void runOpenPanel(Frame&, FileChooser&); 163 165 void showShareSheet(ShareDataWithParsedURL&, CompletionHandler<void(bool)>&&); 166 void showContactPicker(const ContactsRequestData&, CompletionHandler<void(Optional<Vector<ContactInfo>>&&)>&&); 164 167 void loadIconForFiles(const Vector<String>&, FileIconLoader&); 165 168 -
trunk/Source/WebCore/page/ChromeClient.h
r268116 r268901 24 24 #include "AXObjectCache.h" 25 25 #include "AutoplayEvent.h" 26 #include "ContactInfo.h" 26 27 #include "Cursor.h" 27 28 #include "DatabaseDetails.h" … … 114 115 #endif 115 116 117 struct ContactsRequestData; 116 118 struct ContentRuleListResults; 117 119 struct DateTimeChooserParameters; … … 303 305 virtual void runOpenPanel(Frame&, FileChooser&) = 0; 304 306 virtual void showShareSheet(ShareDataWithParsedURL&, WTF::CompletionHandler<void(bool)>&& callback) { callback(false); } 307 virtual void showContactPicker(const ContactsRequestData&, WTF::CompletionHandler<void(Optional<Vector<ContactInfo>>&&)>&& callback) { callback(WTF::nullopt); } 305 308 306 309 // Asynchronous request to load an icon for specified filenames. -
trunk/Source/WebKit/ChangeLog
r268883 r268901 1 2020-10-22 Aditya Keerthi <akeerthi@apple.com> 2 3 [Contact Picker API] Add skeleton implementation of ContactsManager.select() 4 https://bugs.webkit.org/show_bug.cgi?id=218050 5 <rdar://problem/69862186> 6 7 Reviewed by Devin Rousso. 8 9 Added the necessary plumbing in order for the UIProcess to display a 10 contact picker after a call to ContactsManager.select() is made. 11 12 * UIProcess/PageClient.h: 13 (WebKit::PageClient::showContactPicker): 14 * UIProcess/WebPageProxy.cpp: 15 (WebKit::WebPageProxy::showContactPicker): 16 * UIProcess/WebPageProxy.h: 17 * UIProcess/WebPageProxy.messages.in: 18 * WebProcess/WebCoreSupport/WebChromeClient.cpp: 19 (WebKit::WebChromeClient::showContactPicker): 20 * WebProcess/WebCoreSupport/WebChromeClient.h: 21 * WebProcess/WebPage/WebPage.cpp: 22 (WebKit::WebPage::showContactPicker): 23 * WebProcess/WebPage/WebPage.h: 24 1 25 2020-10-22 Ryosuke Niwa <rniwa@webkit.org> 2 26 -
trunk/Source/WebKit/UIProcess/PageClient.h
r268635 r268901 36 36 #include <WebCore/ActivityState.h> 37 37 #include <WebCore/AlternativeTextClient.h> 38 #include <WebCore/ContactInfo.h> 39 #include <WebCore/ContactsRequestData.h> 38 40 #include <WebCore/DragActions.h> 39 41 #include <WebCore/EditorClient.h> … … 257 259 virtual bool handleRunOpenPanel(WebPageProxy*, WebFrameProxy*, const FrameInfoData&, API::OpenPanelParameters*, WebOpenPanelResultListenerProxy*) { return false; } 258 260 virtual bool showShareSheet(const WebCore::ShareDataWithParsedURL&, WTF::CompletionHandler<void (bool)>&&) { return false; } 261 virtual void showContactPicker(const WebCore::ContactsRequestData&, WTF::CompletionHandler<void(Optional<Vector<WebCore::ContactInfo>>&&)>&& completionHandler) { completionHandler(WTF::nullopt); } 259 262 260 263 virtual void didChangeContentSize(const WebCore::IntSize&) = 0; -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r268878 r268901 5863 5863 pageClient().showShareSheet(shareData, WTFMove(completionHandler)); 5864 5864 } 5865 5866 void WebPageProxy::showContactPicker(const WebCore::ContactsRequestData& requestData, CompletionHandler<void(Optional<Vector<WebCore::ContactInfo>>&&)>&& completionHandler) 5867 { 5868 MESSAGE_CHECK(m_process, m_preferences->contactPickerAPIEnabled()); 5869 pageClient().showContactPicker(requestData, WTFMove(completionHandler)); 5870 } 5865 5871 5866 5872 void WebPageProxy::printFrame(FrameIdentifier frameID, CompletionHandler<void()>&& completionHandler) -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r268878 r268901 246 246 struct BackForwardItemIdentifier; 247 247 struct CompositionHighlight; 248 struct ContactInfo; 249 struct ContactsRequestData; 248 250 struct ContentRuleListResults; 249 251 struct DataListSuggestionInformation; … … 1955 1957 bool didChooseFilesForOpenPanelWithImageTranscoding(const Vector<String>& fileURLs, const Vector<String>& allowedMIMETypes); 1956 1958 void showShareSheet(const WebCore::ShareDataWithParsedURL&, CompletionHandler<void(bool)>&&); 1959 void showContactPicker(const WebCore::ContactsRequestData&, CompletionHandler<void(Optional<Vector<WebCore::ContactInfo>>&&)>&&); 1957 1960 void printFrame(WebCore::FrameIdentifier, CompletionHandler<void()>&&); 1958 1961 void exceededDatabaseQuota(WebCore::FrameIdentifier, const String& originIdentifier, const String& databaseName, const String& displayName, uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, Messages::WebPageProxy::ExceededDatabaseQuotaDelayedReply&&); -
trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in
r268635 r268901 70 70 RunOpenPanel(WebCore::FrameIdentifier frameID, struct WebKit::FrameInfoData frameInfo, struct WebCore::FileChooserSettings parameters) 71 71 ShowShareSheet(struct WebCore::ShareDataWithParsedURL shareData) -> (bool granted) Async 72 ShowContactPicker(struct WebCore::ContactsRequestData requestData) -> (Optional<Vector<WebCore::ContactInfo>> info) Async 72 73 PrintFrame(WebCore::FrameIdentifier frameID) -> () Synchronous 73 74 RunModal() -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
r268612 r268901 823 823 } 824 824 825 void WebChromeClient::showContactPicker(const WebCore::ContactsRequestData& requestData, WTF::CompletionHandler<void(Optional<Vector<WebCore::ContactInfo>>&&)>&& callback) 826 { 827 m_page.showContactPicker(requestData, WTFMove(callback)); 828 } 829 825 830 void WebChromeClient::loadIconForFiles(const Vector<String>& filenames, FileIconLoader& loader) 826 831 { -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
r268612 r268901 201 201 void runOpenPanel(WebCore::Frame&, WebCore::FileChooser&) final; 202 202 void showShareSheet(WebCore::ShareDataWithParsedURL&, WTF::CompletionHandler<void(bool)>&&) final; 203 void showContactPicker(const WebCore::ContactsRequestData&, WTF::CompletionHandler<void(Optional<Vector<WebCore::ContactInfo>>&&)>&&) final; 203 204 void loadIconForFiles(const Vector<String>&, WebCore::FileIconLoader&) final; 204 205 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r268499 r268901 150 150 #include <WebCore/Chrome.h> 151 151 #include <WebCore/CommonVM.h> 152 #include <WebCore/ContactsRequestData.h> 152 153 #include <WebCore/ContextMenuController.h> 153 154 #include <WebCore/DOMPasteAccess.h> … … 6917 6918 } 6918 6919 6920 void WebPage::showContactPicker(const WebCore::ContactsRequestData& requestData, CompletionHandler<void(Optional<Vector<WebCore::ContactInfo>>&&)>&& callback) 6921 { 6922 sendWithAsyncReply(Messages::WebPageProxy::ShowContactPicker(requestData), WTFMove(callback)); 6923 } 6924 6919 6925 WebCore::DOMPasteAccessResponse WebPage::requestDOMPasteAccess(const String& originIdentifier) 6920 6926 { -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r268635 r268901 217 217 struct CompositionHighlight; 218 218 struct CompositionUnderline; 219 struct ContactInfo; 220 struct ContactsRequestData; 219 221 struct DictationAlternative; 220 222 struct ElementContext; … … 1243 1245 1244 1246 void showShareSheet(WebCore::ShareDataWithParsedURL&, CompletionHandler<void(bool)>&& callback); 1247 void showContactPicker(const WebCore::ContactsRequestData&, CompletionHandler<void(Optional<Vector<WebCore::ContactInfo>>&&)>&&); 1245 1248 1246 1249 #if ENABLE(ATTACHMENT_ELEMENT)
Note:
See TracChangeset
for help on using the changeset viewer.