Changeset 166900 in webkit
- Timestamp:
- Apr 7, 2014, 5:39:55 PM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r166899 r166900 1 2014-04-07 Dan Bernstein <mitz@apple.com> 2 3 Add bundle client function corresponding to startAssistingNode 4 https://bugs.webkit.org/show_bug.cgi?id=131332 5 6 Reviewed by Anders Carlsson. 7 8 * UIProcess/PageClient.h: Added userData parameter to startAssistingNode. 9 10 * UIProcess/WebPageProxy.h: Added message decoder parameter to startAssistingNode. 11 * UIProcess/WebPageProxy.messages.in: Added message decoder parameter to StartAssistingNode. 12 13 * UIProcess/ios/PageClientImplIOS.h: Updated startAssistingNode override. 14 * UIProcess/ios/PageClientImplIOS.mm: 15 (WebKit::PageClientImpl::startAssistingNode): Decode the user data into an NSObject and pass 16 it on to the content view. 17 18 * UIProcess/ios/WKContentViewInteraction.h: Added userObject parameter to 19 -_startAssitingNode:. 20 * UIProcess/ios/WKContentViewInteraction.mm: 21 (-[WKContentView _startAssistingNode:userObject:]): Added userObject parameter. We will pass 22 it to a future delegate method. 23 24 * UIProcess/ios/WebPageProxyIOS.mm: 25 (WebKit::WebPageProxy::startAssistingNode): Decode the user data and pass it to the client. 26 27 * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFormDelegatePrivate.h: Declared new 28 delegate method. 29 * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: 30 (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Added an implementation 31 of API::InjectedBundle::FormClient::willBeginInputSession which calls the new delegate 32 method, and encodes the user object into userData. 33 34 * WebProcess/InjectedBundle/APIInjectedBundleFormClient.h: 35 (API::InjectedBundle::FormClient::willBeginInputSession): Added willBeginInputSession. 36 37 * WebProcess/WebPage/ios/WebPageIOS.mm: 38 (WebKit::WebPage::elementDidFocus): Call willBeginInputSession and send the user data along 39 with the StartAssistingNode message to the UI process. 40 1 41 2014-04-07 Jinwoo Song <jinwoo7.song@samsung.com> 2 42 -
trunk/Source/WebKit2/UIProcess/PageClient.h
r166466 r166900 241 241 virtual void didCommitLayerTree(const RemoteLayerTreeTransaction&) = 0; 242 242 243 virtual void startAssistingNode(const AssistedNodeInformation& ) = 0;243 virtual void startAssistingNode(const AssistedNodeInformation&, API::Object* userData) = 0; 244 244 virtual void stopAssistingNode() = 0; 245 245 virtual void selectionDidChange() = 0; -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r166888 r166900 1336 1336 void didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color& color, const Vector<WebCore::FloatQuad>& geometries, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius); 1337 1337 1338 void startAssistingNode(const AssistedNodeInformation& );1338 void startAssistingNode(const AssistedNodeInformation&, IPC::MessageDecoder&); 1339 1339 void stopAssistingNode(); 1340 1340 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in
r166888 r166900 319 319 DidGetTapHighlightGeometries(uint64_t requestID, WebCore::Color color, Vector<WebCore::FloatQuad> geometries, WebCore::IntSize topLeftRadius, WebCore::IntSize topRightRadius, WebCore::IntSize bottomLeftRadius, WebCore::IntSize bottomRightRadius) 320 320 321 StartAssistingNode(WebKit::AssistedNodeInformation information )321 StartAssistingNode(WebKit::AssistedNodeInformation information, WebKit::InjectedBundleUserMessageEncoder userData) Variadic 322 322 StopAssistingNode() 323 323 NotifyRevealedSelection() -
trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h
r166466 r166900 108 108 virtual void didCommitLayerTree(const RemoteLayerTreeTransaction&) override; 109 109 110 virtual void startAssistingNode(const AssistedNodeInformation& ) override;110 virtual void startAssistingNode(const AssistedNodeInformation&, API::Object* userData) override; 111 111 virtual void stopAssistingNode() override; 112 112 virtual void selectionDidChange() override; -
trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm
r166861 r166900 29 29 #if PLATFORM(IOS) 30 30 31 #import " _WKDownloadInternal.h"31 #import "APIData.h" 32 32 #import "DataReference.h" 33 33 #import "DownloadProxy.h" … … 40 40 #import "WebContextMenuProxy.h" 41 41 #import "WebEditCommandProxy.h" 42 #import "WebProcessProxy.h" 43 #import "_WKDownloadInternal.h" 42 44 #import <UIKit/UIImagePickerController_Private.h> 43 45 #import <UIKit/UIWebTouchEventsGestureRecognizer.h> … … 46 48 #import <WebCore/SharedBuffer.h> 47 49 50 #define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, m_webView->_page->process().connection()) 51 48 52 @interface UIView (IPI) 49 53 - (UIScrollView *)_scroller; … … 359 363 } 360 364 361 void PageClientImpl::startAssistingNode(const AssistedNodeInformation& nodeInformation) 362 { 363 [m_contentView _startAssistingNode:nodeInformation]; 365 void PageClientImpl::startAssistingNode(const AssistedNodeInformation& nodeInformation, API::Object* userData) 366 { 367 MESSAGE_CHECK(!userData || userData->type() == API::Object::Type::Data); 368 369 NSObject <NSSecureCoding> *userObject = nil; 370 if (API::Data* data = static_cast<API::Data*>(userData)) { 371 auto nsData = adoptNS([[NSData alloc] initWithBytesNoCopy:const_cast<void*>(static_cast<const void*>(data->bytes())) length:data->size() freeWhenDone:NO]); 372 auto unarchiver = adoptNS([[NSKeyedUnarchiver alloc] initForReadingWithData:nsData.get()]); 373 [unarchiver setRequiresSecureCoding:YES]; 374 @try { 375 userObject = [unarchiver decodeObjectOfClass:[NSObject class] forKey:@"userObject"]; 376 } @catch (NSException *exception) { 377 LOG_ERROR("Failed to decode user data: %@", exception); 378 } 379 } 380 381 [m_contentView _startAssistingNode:nodeInformation userObject:userObject]; 364 382 } 365 383 -
trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h
r166861 r166900 130 130 - (void)_didGetTapHighlightForRequest:(uint64_t)requestID color:(const WebCore::Color&)color quads:(const Vector<WebCore::FloatQuad>&)highlightedQuads topLeftRadius:(const WebCore::IntSize&)topLeftRadius topRightRadius:(const WebCore::IntSize&)topRightRadius bottomLeftRadius:(const WebCore::IntSize&)bottomLeftRadius bottomRightRadius:(const WebCore::IntSize&)bottomRightRadius; 131 131 132 - (void)_startAssistingNode:(const WebKit::AssistedNodeInformation&)information ;132 - (void)_startAssistingNode:(const WebKit::AssistedNodeInformation&)information userObject:(NSObject <NSSecureCoding> *)userObject; 133 133 - (void)_stopAssistingNode; 134 134 - (void)_selectionChanged; -
trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm
r166861 r166900 1875 1875 } 1876 1876 1877 - (void)_startAssistingNode:(const AssistedNodeInformation&)information 1877 - (void)_startAssistingNode:(const AssistedNodeInformation&)information userObject:(NSObject <NSSecureCoding> *)userObject 1878 1878 { 1879 1879 _isEditable = YES; -
trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm
r166431 r166900 36 36 #import "ViewUpdateDispatcherMessages.h" 37 37 #import "WKBrowsingContextControllerInternal.h" 38 #import "WebContextUserMessageCoders.h" 38 39 #import "WebKitSystemInterfaceIOS.h" 39 40 #import "WebPageMessages.h" … … 463 464 } 464 465 465 void WebPageProxy::startAssistingNode(const AssistedNodeInformation& information) 466 { 467 m_pageClient.startAssistingNode(information); 466 void WebPageProxy::startAssistingNode(const AssistedNodeInformation& information, IPC::MessageDecoder& decoder) 467 { 468 RefPtr<API::Object> userData; 469 WebContextUserMessageDecoder messageDecoder(userData, process()); 470 if (!decoder.decode(messageDecoder)) 471 return; 472 473 m_pageClient.startAssistingNode(information, userData.get()); 468 474 } 469 475 -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFormDelegatePrivate.h
r166433 r166900 38 38 - (void)_webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller didFocusTextField:(WKWebProcessPlugInNodeHandle *)textField inFrame:(WKWebProcessPlugInFrame *)frame; 39 39 - (void)_webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller willSubmitForm:(WKWebProcessPlugInNodeHandle *)form toFrame:(WKWebProcessPlugInFrame *)frame fromFrame:(WKWebProcessPlugInFrame *)sourceFrame withValues:(NSDictionary *)values; 40 - (NSObject <NSSecureCoding> *)_webProcessPlugInBrowserContextController:(WKWebProcessPlugInBrowserContextController *)controller willBeginInputSessionForElement:(WKWebProcessPlugInNodeHandle *)node inFrame:(WKWebProcessPlugInFrame *)frame; 40 41 41 42 @end -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm
r166890 r166900 29 29 #if WK_API_ENABLED 30 30 31 #import "APIData.h" 31 32 #import "RemoteObjectRegistry.h" 32 33 #import "RemoteObjectRegistryMessages.h" … … 406 407 } 407 408 409 static void releaseNSData(unsigned char*, const void* untypedData) 410 { 411 [(NSData *)untypedData release]; 412 } 413 414 virtual void willBeginInputSession(WebPage*, Element* element, WebFrame* frame, RefPtr<API::Object>& userData) override 415 { 416 auto formDelegate = m_controller->_formDelegate.get(); 417 418 if (![formDelegate respondsToSelector:@selector(_webProcessPlugInBrowserContextController:willBeginInputSessionForElement:inFrame:)]) 419 return; 420 421 NSObject <NSSecureCoding> *userObject = [formDelegate _webProcessPlugInBrowserContextController:m_controller willBeginInputSessionForElement:wrapper(*WebKit::InjectedBundleNodeHandle::getOrCreate(element)) inFrame:wrapper(*frame)]; 422 if (!userObject) 423 return; 424 425 auto data = adoptNS([[NSMutableData alloc] init]); 426 auto archiver = adoptNS([[NSKeyedArchiver alloc] initForWritingWithMutableData:data.get()]); 427 [archiver setRequiresSecureCoding:YES]; 428 @try { 429 [archiver encodeObject:userObject forKey:@"userObject"]; 430 } @catch (NSException *exception) { 431 LOG_ERROR("Failed to encode user object: %@", exception); 432 return; 433 } 434 [archiver finishEncoding]; 435 436 userData = API::Data::createWithoutCopying((const unsigned char*)[data bytes], [data length], releaseNSData, data.leakRef()).leakRef(); 437 } 438 408 439 private: 409 440 WKWebProcessPlugInBrowserContextController *m_controller; -
trunk/Source/WebKit2/WebProcess/InjectedBundle/APIInjectedBundleFormClient.h
r166890 r166900 73 73 virtual void didAssociateFormControls(WebKit::WebPage*, const Vector<RefPtr<WebCore::Element>>&) { } 74 74 virtual bool shouldNotifyOnFormChanges(WebKit::WebPage*) { return false; } 75 virtual void willBeginInputSession(WebKit::WebPage*, WebCore::Element*, WebKit::WebFrame*, RefPtr<API::Object>& userData) { UNUSED_PARAM(userData); } 75 76 }; 76 77 -
trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm
r166861 r166900 34 34 #import "EditorState.h" 35 35 #import "GestureTypes.h" 36 #import "InjectedBundleUserMessageCoders.h" 36 37 #import "InteractionInformationAtPosition.h" 37 38 #import "LayerTreeHost.h" … … 1686 1687 AssistedNodeInformation information; 1687 1688 getAssistedNodeInformation(information); 1688 send(Messages::WebPageProxy::StartAssistingNode(information)); 1689 RefPtr<API::Object> userData; 1690 m_formClient->willBeginInputSession(this, toElement(node), WebFrame::fromCoreFrame(*node->document().frame()), userData); 1691 send(Messages::WebPageProxy::StartAssistingNode(information, InjectedBundleUserMessageEncoder(userData.get()))); 1689 1692 } 1690 1693 }
Note:
See TracChangeset
for help on using the changeset viewer.