diff options
Diffstat (limited to 'Source/WebKit2')
68 files changed, 2728 insertions, 1476 deletions
diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog index bc6f54d50..064d7ff76 100644 --- a/Source/WebKit2/ChangeLog +++ b/Source/WebKit2/ChangeLog @@ -1,3 +1,630 @@ +2012-01-10 Mark Rowe <mrowe@apple.com> + + REGRESSION (r104377): All pages print blank on Snow Leopard + <http://webkit.org/b/75879> / <rdar://problem/10674335> + + We need to explicitly load PDFKit.framework before using PDFDocument and friends. + On SnowLeopard the framework is not necessarily loaded by anything else before we + print, which would lead to us failing to allocate the PDFDocument that we use for + drawing the content from the web process. + + Reviewed by Dan Bernstein. + + * UIProcess/API/mac/WKPrintingView.mm: + (pdfKitFrameworkPath): Construct the path to the PDFKit framework. + (classFromPDFKit): Ensure that the PDFKit framework is loaded, and then retrieve the + given class from it. + (pdfAnnotationLinkClass): ASSERT that we found the class. + (pdfDocumentClass): Ditto. + +2012-01-10 Chris Marrin <cmarrin@apple.com> + + Wrapped allowedCompositingTriggers in ACCELERATED_COMPOSITING ifdef to make non-accelerated builds work + + Unreviewed. + + * WebProcess/WebCoreSupport/WebChromeClient.h: + +2012-01-10 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> + + [Qt][WK2]REGRESSION(r102435): It made tst_QQuickWebView::show() crash + https://bugs.webkit.org/show_bug.cgi?id=74176 + + Reviewed by Noam Rosenthal. + + Check texture mapper exists already in ensureRootLayer to avoid recrecation. + Check if root layer was deleted already in purgeGLResources. + Added multipleWebViewWindows and multipleWebViews API tests. + + * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: + (tst_QQuickWebView::multipleWebViewWindows): + (tst_QQuickWebView::multipleWebViews): + * UIProcess/qt/LayerTreeHostProxyQt.cpp: + (WebKit::LayerTreeHostProxy::ensureRootLayer): + (WebKit::LayerTreeHostProxy::purgeGLResources): + +2012-01-10 Ryosuke Niwa <rniwa@webkit.org> + + Snow Leopard build fix. + + * UIProcess/API/mac/PageClientImpl.h: + * UIProcess/API/mac/PageClientImpl.mm: + +2012-01-10 Anders Carlsson <andersca@apple.com> + + Hang opening movie that requires authentication + https://bugs.webkit.org/show_bug.cgi?id=75989 + + Reviewed by Sam Weinig. + + Change the way the keychain calls are processed to avoid deadlocks: + + 1. When a keychain call is made, the web process sends an asynchronous request message to the UI process, + avoiding the need to bounce calls to the main thread (since CoreIPC only allows sending + synchronous messages from the main thread). Incidentally, this fixes <rdar://problem/9428041>. + 2. The Web Process now waits on the calling thread, (for a condition variable to be signalled) for a reply message. + 3. The UI process handles the incoming message request message on the connection work queue and uses + dispatch_async to a global dispatch queue where the keychain call is made. + We use a global queue to prevent the connection work queue from blocking on the call. + 4. The UI process then sends an asynchronous reply message back to the web process. This message is sent from + the global dispatch queue. + 5. The Web Process handles the reply message on the connection queue, adds the reply to a map and signals + the condition variable that the web process is waiting on and the thread that made the keychain call + can resume execution. + + * Shared/mac/SecItemRequestData.cpp: + (WebKit::SecItemRequestData::SecItemRequestData): + (WebKit::SecItemRequestData::encode): + (WebKit::SecItemRequestData::decode): + * Shared/mac/SecItemRequestData.h: + (WebKit::SecItemRequestData::type): + Add a type to SecItemRequestData and encode/decode it. + + * Shared/mac/SecItemResponseData.h: + (WebKit::SecItemResponseData::resultObject): + Make this return a reference so we can call leakRef() on it. + + * Shared/mac/SecKeychainItemRequestData.cpp: + (WebKit::SecKeychainItemRequestData::SecKeychainItemRequestData): + (WebKit::SecKeychainItemRequestData::~SecKeychainItemRequestData): + (WebKit::SecKeychainItemRequestData::attributeList): + (WebKit::SecKeychainItemRequestData::encode): + (WebKit::SecKeychainItemRequestData::decode): + * Shared/mac/SecKeychainItemRequestData.h: + (WebKit::SecKeychainItemRequestData::type): + Add a type, and put the OwnPtr and OwnArrayPtr in a RefCounted struct so we can + correctly copy this object. + + * UIProcess/WebConnectionToWebProcess.cpp: + (WebKit::WebConnectionToWebProcess::WebConnectionToWebProcess): + Don't open the connection here, the WebProcessProxy object needs to add itself as a queue client before opening. + + * UIProcess/WebProcessProxy.cpp: + (WebKit::WebProcessProxy::disconnect): + Remove the WebProcessProxy object from the list of connection queue clients. + + (WebKit::WebProcessProxy::didReceiveMessageOnConnectionWorkQueue): + Call didReceiveWebProcessProxyMessageOnConnectionWorkQueue. + + (WebKit::WebProcessProxy::didFinishLaunching): + Add the WebProcessProxy as a queue client and open the connection. + + * UIProcess/WebProcessProxy.h: + WebProcessProxy should inherit from CoreIPC::Connection::QueueClient. Replace all individual keychain + handler functions with two generic functions, secItemRequest and secKeychainItemRequest. + + * UIProcess/WebProcessProxy.messages.in: + Replace individual keychain messages with SecItemRequest and SecKeychainItemRequest messages. + + * UIProcess/mac/WebProcessProxyMac.mm: + (WebKit::handleSecItemRequest): + Call the right SecItem function depending on the request type and send back the result. + + (WebKit::WebProcessProxy::secItemRequest): + Dispatch handleSecItemRequest on a global dispatch queue. + + (WebKit::handleSecKeychainItemRequest): + Call the right SecKeychainItem function depending on the request type and send back the result. + + (WebKit::WebProcessProxy::secKeychainItemRequest): + Dispatch handleSecKeychainItemRequest on a global dispatch queue. + + * WebKit2.xcodeproj/project.pbxproj: + Update for added/removed files. + + * WebProcess/WebProcess.h: + Add secItemResponse and secKeychainItemResponse message handlers. + + * WebProcess/WebProcess.messages.in: + Add SecItemResponse and SecKeychainItemResponse messages. + + * WebProcess/mac/CoreIPCClientRunLoop.h: + * WebProcess/mac/CoreIPCClientRunLoop.mm: + This is no longer needed. + + * WebProcess/mac/KeychainItemShimMethods.h: + * WebProcess/mac/KeychainItemShimMethods.mm: + (WebKit::managedAttributeLists): + Make this an atomically initialized static. + + (WebKit::managedAttributeListsMutex): + Add an atomically initialized mutex. + + (WebKit::allocateAttributeListContents): + Use the managedAttributeListsMutex to make this function callable from any thread. + + (WebKit::managedKeychainItemContents): + Make this an atomically initialized static. + + (WebKit::managedKeychainItemContentsMutex): + Add an atomically initialized mutex. + + (WebKit::allocateKeychainItemContentData): + Use the managedAttributeListsMutex to make this function callable from any thread. + + (WebKit::webFreeAttributeListContent): + Use locking so this can be called from any thread. + + (WebKit::webFreeKeychainItemContent): + Ditto. + + (WebKit::responseMap): + Add responseMap thread-safe singleton for holding incoming responses. + + (WebKit::generateSecKeychainItemRequestID): + Return a unique item request id, using OSAtomicIncrement64Barrier for atomicity. + + (WebKit::didReceiveSecKeychainItemResponse): + Pass the response over the response map. + + (WebKit::sendSeqKeychainItemRequest): + Send a request message and wait for a response using ResponseMap::waitForResponse. + + (WebKit::webSecKeychainItemCopyContent): + Send a request using sendSeqKeychainItemRequest. + + (WebKit::webSecKeychainItemCreateFromContent): + Ditto. + + (WebKit::webSecKeychainItemModifyContent): + Ditto. + + * WebProcess/mac/KeychainShimResponseMap.h: + New thread-safe helper class that stores a map of responses and lets client wait for a response + with a given ID. + + (KeychainShimResponseMap::waitForResponse): + Wait until the response is available in the hash map, then return it. + + (KeychainShimResponseMap::didReceiveResponse): + Add the response to the hash map and signal the condition variable. + + * WebProcess/mac/SecItemShimMethods.h: + * WebProcess/mac/SecItemShimMethods.mm: + (WebKit::responseMap): + Add responseMap thread-safe singleton for holding incoming responses. + + (WebKit::generateSecItemRequestID): + Return a unique item request id, using OSAtomicIncrement64Barrier for atomicity. + + (WebKit::didReceiveSecItemResponse): + Pass the response over the response map. + + (WebKit::sendSeqItemRequest): + Send a request message and wait for a response using ResponseMap::waitForResponse. + + (WebKit::webSecItemCopyMatching): + Send a request using sendSeqItemRequest. + + (WebKit::webSecItemAdd): + Ditto. + + (WebKit::webSecItemUpdate): + Ditto. + + (WebKit::webSecItemDelete): + Ditto. + + * WebProcess/mac/WebProcessMac.mm: + (WebKit::WebProcess::secItemResponse): + Call didReceiveSecItemResponse. + + (WebKit::WebProcess::secKeychainItemResponse): + Call didReceiveSecKeychainItemResponse. + +2012-01-10 Anders Carlsson <andersca@apple.com> + + DispatchOnConnectionQueue messages should have a Connection parameter + https://bugs.webkit.org/show_bug.cgi?id=75986 + + Reviewed by Adam Roben. + + Message handlers for messages with the DispatchOnConnectionQueue should have a CoreIPC::Connection + parameter, making it easier to send messages back over that connection. + + * Platform/CoreIPC/HandleMessage.h: + (CoreIPC::callMemberFunction): + (CoreIPC::handleMessageOnConnectionQueue): + * Scripts/webkit2/messages.py: + (async_case_statement): + (generate_message_handler): + * Scripts/webkit2/messages_unittest.py: + * WebProcess/WebPage/EventDispatcher.cpp: + (WebKit::EventDispatcher::wheelEvent): + (WebKit::EventDispatcher::gestureEvent): + * WebProcess/WebPage/EventDispatcher.h: + * WebProcess/WebProcess.cpp: + (WebKit::WebProcess::pluginProcessCrashed): + * WebProcess/WebProcess.h: + +2012-01-10 Chris Marrin <cmarrin@apple.com> + + Turn off the FilterTrigger in WebKit and WebKit2 + https://bugs.webkit.org/show_bug.cgi?id=75914 + + Reviewed by Simon Fraser. + + Implement allowedCompositingTriggers to turn on all compositing triggers except FilterTrigger. + + * WebProcess/WebCoreSupport/WebChromeClient.h: + (WebKit::WebChromeClient::allowedCompositingTriggers): + +2012-01-10 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Unreviewed potential Mac WK2 build fix. + + * UIProcess/PageClient.h: forward declare WebGestureEvent. + +2012-01-10 Csaba Osztrogonác <ossy@webkit.org> + + Unreviewed, rolling out an accidental commit r104569. + + * Shared/EditorState.cpp: + (WebKit::EditorState::encode): + (WebKit::EditorState::decode): + * Shared/EditorState.h: + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebView::inputMethodQuery): + * WebProcess/WebCoreSupport/WebEditorClient.cpp: + (WebKit::WebEditorClient::respondToChangedSelection): + * WebProcess/WebPage/WebPage.cpp: + (WebKit::WebPage::editorState): + +2012-01-10 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Unreviewed potential Mac WK2 build fix. + + * UIProcess/API/mac/PageClientImpl.h: + * UIProcess/API/mac/PageClientImpl.mm: + (WebKit::PageClientImpl::doneWithGestureEvent): + +2012-01-10 Rafael Brandao <rafael.lobo@openbossa.org> + + [Qt][WK2] Add font-related API tests for QWebPreferences + https://bugs.webkit.org/show_bug.cgi?id=75739 + + Reviewed by Zoltan Herczeg. + + * UIProcess/API/qt/tests/qmltests/WebView/tst_preferences.qml: + * UIProcess/API/qt/tests/qmltests/common/font-preferences.html: Added. + +2012-01-10 Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] Fix failing WK2 layout tests after r104557 + + Reviewed by Kenneth Rohde Christiansen. + + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::didReceiveEvent): Add missing break to not + handle mouseDown as gesture event. + +2012-01-10 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Unreviewed buildfix. + + * UIProcess/WebPageProxy.h: + +2012-01-10 Kenneth Rohde Christiansen <kenneth@webkit.org> + + Implement the input panel request/close handling + + Reviewed by Simon Hausmann. + + With the current patch we only request the input panel as a + response to a user tap. Close requests, on the other hand, + is always respected. + + As multiple show/hide requests can happen while processing + the tap gesture, input panel visibility changes are postponed + until the tap gesture ends. + + The input panel will become visible if the WebCore editor is + in canEdit mode and thus work for content-editable, meaning + that it won't close the input panel if you click on a link + (eg. editCommand) while in content-editable mode. + + * UIProcess/PageClient.h: + * UIProcess/WebPageProxy.cpp: + (WebKit::WebPageProxy::handleGestureEvent): + (WebKit::WebPageProxy::editorStateChanged): + (WebKit::WebPageProxy::didReceiveEvent): + + Add a new doneWithGestureEvent method to the PageClient + as well as add a updateTextInputState similar to that of mac. + + * UIProcess/WebPageProxy.h: + * UIProcess/qt/QtPageClient.cpp: + (QtPageClient::updateTextInputState): + (QtPageClient::doneWithGestureEvent): + + Propagate the new events to the Qt EventHandler. + + * UIProcess/qt/QtPageClient.h: + * UIProcess/qt/QtWebPageEventHandler.cpp: + * UIProcess/qt/QtWebPageEventHandler.h: + (QtWebPageEventHandler::QtWebPageEventHandler): + (QtWebPageEventHandler::handleSingleTapEvent): + (setInputPanelVisible): + (QtWebPageEventHandler::updateTextInputState): + (QtWebPageEventHandler::doneWithGestureEvent): + + Handle postponing of the input method visibility change + and the actual showing/hiding. + +2012-01-10 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Remove codes to move and resize the clip. + https://bugs.webkit.org/show_bug.cgi?id=75428 + + Reviewed by Andreas Kling. + + Remove codes to move and resize the clip because clip is not used now. + We have to show whole area of evas_object_image so we don't have to + clip any area. + In the WebKit1 Efl, the clip is used to clip the area to show during + weak zoom, so we can use codes to manipulate the clip when we want to + implement weak zoom for WebKit2 Efl. + + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_smart_calculate): + +2012-01-09 Andras Becsi <andras.becsi@nokia.com> + + [Qt][WK2] Pinch zoom should affect the page size + https://bugs.webkit.org/show_bug.cgi?id=74601 + + Reviewed by Kenneth Rohde Christiansen. + + The current implementation uses the scale property of the QQuickWebPage + to scale the page in response to pinch gestures. + However for layout and anchoring to work correctly in QML, pinching needs + to change the page size. + This patch applies the pinch scale to the page size and to the transformation + matrix of the drawing area. + Thus the page item's coordinate system is no longer a direct representation + of the WebCore::Page coordinate system and it is no longer suitable as + an inertial frame of reference for input events. The event propagation had + to be moved to the QQuickWebView and the positions translated to content + coordinates when NativeWebEvents are created. + Re-landing with fixed event delivery for the test infrastructure. + + * Shared/NativeWebMouseEvent.h: + * Shared/NativeWebTouchEvent.h: + * Shared/NativeWebWheelEvent.h: + * Shared/qt/NativeWebMouseEventQt.cpp: + (WebKit::NativeWebMouseEvent::NativeWebMouseEvent): + * Shared/qt/NativeWebTouchEventQt.cpp: + (WebKit::NativeWebTouchEvent::NativeWebTouchEvent): + * Shared/qt/NativeWebWheelEventQt.cpp: + (WebKit::NativeWebWheelEvent::NativeWebWheelEvent): + * Shared/qt/WebEventFactoryQt.cpp: + (WebKit::WebEventFactory::createWebMouseEvent): + (WebKit::WebEventFactory::createWebWheelEvent): + (WebKit::WebEventFactory::createWebTouchEvent): + * Shared/qt/WebEventFactoryQt.h: + * UIProcess/API/qt/qquickwebpage.cpp: + (QQuickWebPage::geometryChanged): + (QQuickWebPagePrivate::QQuickWebPagePrivate): + (QQuickWebPagePrivate::paintToCurrentGLContext): + (QQuickWebPage::usesTraditionalDesktopBehaviour): + (QQuickWebPage::setUsesTraditionalDesktopBehaviour): + (QQuickWebPage::eventHandler): + (QQuickWebPage::setContentSize): + (QQuickWebPage::contentSize): + (QQuickWebPage::setContentScale): + (QQuickWebPage::contentScale): + (QQuickWebPage::transformFromItem): + (QQuickWebPage::transformToItem): + (QQuickWebPagePrivate::updateSize): + * UIProcess/API/qt/qquickwebpage_p.h: + * UIProcess/API/qt/qquickwebpage_p_p.h: + * UIProcess/API/qt/qquickwebview.cpp: + (QQuickWebViewPrivate::enableMouseEvents): + (QQuickWebViewPrivate::disableMouseEvents): + (QQuickWebViewPrivate::loadDidCommit): + (QQuickWebViewPrivate::didFinishFirstNonEmptyLayout): + (QQuickWebViewPrivate::didChangeContentsSize): + (QQuickWebViewPrivate::didChangeViewportProperties): + (QQuickWebViewPrivate::pageDidRequestScroll): + (QQuickWebViewPrivate::updateVisibleContentRectAndScale): + (QQuickWebViewPrivate::PostTransitionState::apply): + (QQuickWebViewPrivate::setUseTraditionalDesktopBehaviour): + (QQuickWebViewExperimental::setUseTraditionalDesktopBehaviour): + (QQuickWebViewExperimental::useTraditionalDesktopBehaviour): + (QQuickWebView::mapToWebContent): + (QQuickWebView::mapRectToWebContent): + (QQuickWebView::mapFromWebContent): + (QQuickWebView::mapRectFromWebContent): + (QQuickWebView::geometryChanged): + (QQuickWebView::keyPressEvent): + (QQuickWebView::keyReleaseEvent): + (QQuickWebView::inputMethodEvent): + (QQuickWebView::focusInEvent): + (QQuickWebView::focusOutEvent): + (QQuickWebView::touchEvent): + (QQuickWebView::mousePressEvent): + (QQuickWebView::mouseMoveEvent): + (QQuickWebView::mouseReleaseEvent): + (QQuickWebView::mouseDoubleClickEvent): + (QQuickWebView::wheelEvent): + (QQuickWebView::hoverEnterEvent): + (QQuickWebView::hoverMoveEvent): + (QQuickWebView::hoverLeaveEvent): + (QQuickWebView::dragMoveEvent): + (QQuickWebView::dragEnterEvent): + (QQuickWebView::dragLeaveEvent): + (QQuickWebView::dropEvent): + (QQuickWebView::event): + * UIProcess/API/qt/qquickwebview_p.h: + * UIProcess/API/qt/qquickwebview_p_p.h: + * UIProcess/API/qt/qwebviewportinfo.cpp: + (QWebViewportInfo::contentsSize): + * UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp: + (tst_QQuickWebView::scrollRequest): + * UIProcess/qt/QtPinchGestureRecognizer.cpp: + (WebKit::QtPinchGestureRecognizer::recognize): + * UIProcess/qt/QtViewportInteractionEngine.cpp: + (WebKit::QtViewportInteractionEngine::QtViewportInteractionEngine): + (WebKit::QtViewportInteractionEngine::setItemRectVisible): + (WebKit::QtViewportInteractionEngine::animateItemRectVisible): + (WebKit::QtViewportInteractionEngine::event): + (WebKit::QtViewportInteractionEngine::wheelEvent): + (WebKit::QtViewportInteractionEngine::pagePositionRequest): + (WebKit::QtViewportInteractionEngine::computePosRangeForItemAtScale): + (WebKit::QtViewportInteractionEngine::ensureContentWithinViewportBoundary): + (WebKit::QtViewportInteractionEngine::applyConstraints): + (WebKit::QtViewportInteractionEngine::currentCSSScale): + (WebKit::QtViewportInteractionEngine::panGestureStarted): + (WebKit::QtViewportInteractionEngine::panGestureRequestUpdate): + (WebKit::QtViewportInteractionEngine::panGestureEnded): + (WebKit::QtViewportInteractionEngine::pinchGestureStarted): + (WebKit::QtViewportInteractionEngine::pinchGestureRequestUpdate): + (WebKit::QtViewportInteractionEngine::scaleContent): + * UIProcess/qt/QtViewportInteractionEngine.h: + * UIProcess/qt/QtWebPageEventHandler.cpp: + (QtWebPageEventHandler::handleEvent): + (QtWebPageEventHandler::handleMouseMoveEvent): + (QtWebPageEventHandler::handleMousePressEvent): + (QtWebPageEventHandler::handleMouseReleaseEvent): + (QtWebPageEventHandler::handleWheelEvent): + (QtWebPageEventHandler::handleHoverLeaveEvent): + (QtWebPageEventHandler::handleHoverMoveEvent): + (QtWebPageEventHandler::handleDragEnterEvent): + (QtWebPageEventHandler::handleDragMoveEvent): + (QtWebPageEventHandler::handleDropEvent): + (QtWebPageEventHandler::handleSingleTapEvent): + (QtWebPageEventHandler::handleDoubleTapEvent): + (QtWebPageEventHandler::touchEvent): + * UIProcess/qt/QtWebPageEventHandler.h: + +2012-01-09 Eunmi Lee <eunmi15.lee@samsung.com> + + [EFL][WK2] Set color_set function to the clipped smart class. + https://bugs.webkit.org/show_bug.cgi?id=75286 + + Reviewed by Andreas Kling. + + Set _ewk_view_smart_color_set() function to the clipped smart class's color_set, + so application can set webpage's background color using evas_object_color_set() API. + + * UIProcess/API/efl/ewk_view.cpp: + (_ewk_view_smart_color_set): + (ewk_view_smart_class_init): + +2012-01-08 Dan Bernstein <mitz@apple.com> + + REGRESSION (r103859): WKViews leak + https://bugs.webkit.org/show_bug.cgi?id=75805 + + The flags changed event monitor added in r103859 was retaining the WKView (as it references + self in the handler block), causing it to leak. + + * UIProcess/API/mac/WKView.mm: + (-[WKView dealloc]): Moved call to remove the flags changed event monitor from here... + (-[WKView viewDidMoveToWindow]): ...to here. Moved call to add the flags changed event + monitor to here from... + (-[WKView initWithFrame:contextRef:pageGroupRef:]): ...here. + +2012-01-06 Mark Rowe <mrowe@apple.com> + + REGRESSION (WebKit2): Save as PDF no longer generates links to URLs + <http://webkit.org/b/65076> / <rdar://problem/9606246> + + WebKit2 printing works by having the web process render the page content to a PDF. The PDF + data is then shipped to the UI process which will render it in to the printing graphics context. + Links were being lost because the API used to do the rendering of the PDF in to the printing + graphics context, CGContextDrawPDFPage, did not preserve the links that were present in the + PDF content received from the web process. + + To fix this we switch to using PDFKit for drawing the PDF in to the printing graphics context. + PDFKit provides the ability for us to iterate over the links in the PDF content ourselves and + add links in to the printing graphics context. + + Reviewed by Alexey Proskuryakov. + + * UIProcess/API/mac/WKPrintingView.h: + * UIProcess/API/mac/WKPrintingView.mm: + (pdfAnnotationLinkClass): Look up the PDFAnnotationLink class from PDFKit as WebKit2 loads PDFKit lazily. + (pdfDocumentClass): Ditto. + (-[WKPrintingView _drawPDFDocument:page:atPoint:]): Switch to using the PDFKit equivalents of several types. + Iterate over the annotations present in the PDFPage, calling CGPDFContextSetURLForRect for each PDFAnnotationLink + that we find. + (-[WKPrintingView _drawPreview:]): Create an NSData to feed to PDFDocument. + (-[WKPrintingView drawRect:]): Ditto. + * WebKit2Prefix.h: Add the usual workaround to make Objective-C exceptions compile when C++ exception handling is disabled. + +2012-01-06 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> + + [Qt] [WK2] Minibrowser leaks memory ~6-7Mb per reload + https://bugs.webkit.org/show_bug.cgi?id=75746 + + Reset WebGraphicsLayer::m_layerTreeTileClient of all dependent + layers from ~LayerTreeHostQt(). This replaces r103760 which + causes leaks of GraphicsLayerTextureMapper objects on UI side. + + Reviewed by Noam Rosenthal. + + * WebProcess/WebCoreSupport/WebGraphicsLayer.cpp: + (WebCore::WebGraphicsLayer::syncCompositingStateForThisLayerOnly): + (WebCore::WebGraphicsLayer::setLayerTreeTileClient): + * WebProcess/WebCoreSupport/WebGraphicsLayer.h: + * WebProcess/WebPage/qt/LayerTreeHostQt.cpp: + (WebKit::LayerTreeHostQt::~LayerTreeHostQt): + +2012-01-06 Alexey Proskuryakov <ap@apple.com> + + [Mac] Thread verifier assertions when printing + https://bugs.webkit.org/show_bug.cgi?id=75738 + + Reviewed by Sam Weinig. + + * UIProcess/API/mac/WKPrintingView.mm: + (-[WKPrintingView dealloc]): Dealloc in main thread, so that WebFrameProxy doesn't get + deref'ed from a secondary one. + (-[WKPrintingView _adjustPrintingMarginsForHeaderAndFooter]): This method calls out to client, + which only expects that on main thread. + (-[WKPrintingView knowsPageRange:]): Call _adjustPrintingMarginsForHeaderAndFooter on main + thread. + +2012-01-06 Alexey Proskuryakov <ap@apple.com> + + Need to allow SCNetworkReachability service in sandbox profile + https://bugs.webkit.org/show_bug.cgi?id=75724 + <rdar://problem/10652415> + + Reviewed by Mark Rowe. + + * WebProcess/com.apple.WebProcess.sb: + +2012-01-06 Benjamin Poulain <bpoulain@apple.com> + + [Mac] Sort the resources of WebKit2.xcodeproj + https://bugs.webkit.org/show_bug.cgi?id=75636 + + Reviewed by Andreas Kling. + + * WebKit2.xcodeproj/project.pbxproj: + 2012-01-06 Rafael Brandao <rafael.lobo@openbossa.org> [Qt][WK2] QQuickWebView breaks when an empty url is loaded diff --git a/Source/WebKit2/Platform/CoreIPC/HandleMessage.h b/Source/WebKit2/Platform/CoreIPC/HandleMessage.h index d57a552be..5634a6b1e 100644 --- a/Source/WebKit2/Platform/CoreIPC/HandleMessage.h +++ b/Source/WebKit2/Platform/CoreIPC/HandleMessage.h @@ -196,6 +196,19 @@ void callMemberFunction(const Arguments1<P1>& args, PassRefPtr<R> delayedReply, (object->*function)(args.argument1, delayedReply); } +// Dispatch functions with connection parameter. +template<typename C, typename MF, typename P1> +void callMemberFunction(Connection* connection, const Arguments1<P1>& args, C* object, MF function) +{ + (object->*function)(connection, args.argument1); +} + +template<typename C, typename MF, typename P1, typename P2> +void callMemberFunction(Connection* connection, const Arguments2<P1, P2>& args, C* object, MF function) +{ + (object->*function)(connection, args.argument1, args.argument2); +} + // Variadic dispatch functions. template<typename C, typename MF> @@ -290,6 +303,15 @@ void handleMessage(ArgumentDecoder* argumentDecoder, ArgumentEncoder* replyEncod } template<typename T, typename C, typename MF> +void handleMessageOnConnectionQueue(Connection* connection, ArgumentDecoder* argumentDecoder, C* object, MF function) +{ + typename T::DecodeType::ValueType arguments; + if (!argumentDecoder->decode(arguments)) + return; + callMemberFunction(connection, arguments, object, function); +} + +template<typename T, typename C, typename MF> void handleMessageVariadic(ArgumentDecoder* argumentDecoder, C* object, MF function) { typename T::DecodeType::ValueType arguments; diff --git a/Source/WebKit2/Scripts/webkit2/messages.py b/Source/WebKit2/Scripts/webkit2/messages.py index cf9d5ec01..456cb100a 100644 --- a/Source/WebKit2/Scripts/webkit2/messages.py +++ b/Source/WebKit2/Scripts/webkit2/messages.py @@ -311,16 +311,21 @@ def handler_function(receiver, message): return '%s::%s' % (receiver.name, message.name[0].lower() + message.name[1:]) -def async_case_statement(receiver, message, statement_before_return=None): +def async_case_statement(receiver, message): + dispatch_function_args = ['arguments', 'this', '&%s' % handler_function(receiver, message)] dispatch_function = 'handleMessage' if message_is_variadic(message): dispatch_function += 'Variadic' - + if message.has_attribute(DISPATCH_ON_CONNECTION_QUEUE_ATTRIBUTE): + dispatch_function += 'OnConnectionQueue' + dispatch_function_args.insert(0, 'connection') + result = [] result.append(' case Messages::%s::%s:\n' % (receiver.name, message.id())) - result.append(' CoreIPC::%s<Messages::%s::%s>(arguments, this, &%s);\n' % (dispatch_function, receiver.name, message.name, handler_function(receiver, message))) - if statement_before_return: - result.append(' %s\n' % statement_before_return) + + result.append(' CoreIPC::%s<Messages::%s::%s>(%s);\n' % (dispatch_function, receiver.name, message.name, ', '.join(dispatch_function_args))) + if message.has_attribute(DISPATCH_ON_CONNECTION_QUEUE_ATTRIBUTE): + result.append(' didHandleMessage = true;\n') result.append(' return;\n') return surround_in_condition(''.join(result), message.condition) @@ -533,14 +538,14 @@ def generate_message_handler(file): async_messages.append(message) if async_dispatch_on_connection_queue_messages: - result.append('void %s::didReceive%sMessageOnConnectionWorkQueue(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage)\n' % (receiver.name, receiver.name)) + result.append('void %s::didReceive%sMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage)\n' % (receiver.name, receiver.name)) result.append('{\n') result.append('#if COMPILER(MSVC)\n') result.append('#pragma warning(push)\n') result.append('#pragma warning(disable: 4065)\n') result.append('#endif\n') result.append(' switch (messageID.get<Messages::%s::Kind>()) {\n' % receiver.name) - result += [async_case_statement(receiver, message, 'didHandleMessage = true;') for message in async_dispatch_on_connection_queue_messages] + result += [async_case_statement(receiver, message) for message in async_dispatch_on_connection_queue_messages] result.append(' default:\n') result.append(' return;\n') result.append(' }\n') diff --git a/Source/WebKit2/Scripts/webkit2/messages_unittest.py b/Source/WebKit2/Scripts/webkit2/messages_unittest.py index dc6b3aff9..dd9fbecc3 100644 --- a/Source/WebKit2/Scripts/webkit2/messages_unittest.py +++ b/Source/WebKit2/Scripts/webkit2/messages_unittest.py @@ -685,7 +685,7 @@ bool TestMultipleAttributes::DelayedReply::send() namespace WebKit { -void WebPage::didReceiveWebPageMessageOnConnectionWorkQueue(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage) +void WebPage::didReceiveWebPageMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage) { #if COMPILER(MSVC) #pragma warning(push) @@ -693,7 +693,7 @@ void WebPage::didReceiveWebPageMessageOnConnectionWorkQueue(CoreIPC::Connection* #endif switch (messageID.get<Messages::WebPage::Kind>()) { case Messages::WebPage::TestConnectionQueueID: - CoreIPC::handleMessage<Messages::WebPage::TestConnectionQueue>(arguments, this, &WebPage::testConnectionQueue); + CoreIPC::handleMessageOnConnectionQueue<Messages::WebPage::TestConnectionQueue>(connection, arguments, this, &WebPage::testConnectionQueue); didHandleMessage = true; return; default: diff --git a/Source/WebKit2/Shared/NativeWebMouseEvent.h b/Source/WebKit2/Shared/NativeWebMouseEvent.h index a73f95824..b7bbadbd0 100644 --- a/Source/WebKit2/Shared/NativeWebMouseEvent.h +++ b/Source/WebKit2/Shared/NativeWebMouseEvent.h @@ -49,7 +49,7 @@ public: #elif PLATFORM(WIN) NativeWebMouseEvent(HWND, UINT message, WPARAM, LPARAM, bool); #elif PLATFORM(QT) - explicit NativeWebMouseEvent(QMouseEvent*, int); + explicit NativeWebMouseEvent(QMouseEvent*, const QTransform& fromItemTransform, int eventClickCount); #elif PLATFORM(GTK) NativeWebMouseEvent(const NativeWebMouseEvent&); NativeWebMouseEvent(GdkEvent*, int); diff --git a/Source/WebKit2/Shared/NativeWebTouchEvent.h b/Source/WebKit2/Shared/NativeWebTouchEvent.h index 3652dd736..f20214a8f 100644 --- a/Source/WebKit2/Shared/NativeWebTouchEvent.h +++ b/Source/WebKit2/Shared/NativeWebTouchEvent.h @@ -37,7 +37,7 @@ namespace WebKit { class NativeWebTouchEvent : public WebTouchEvent { public: #if PLATFORM(QT) - explicit NativeWebTouchEvent(const QTouchEvent*); + explicit NativeWebTouchEvent(const QTouchEvent*, const QTransform& fromItemTransform); #endif #if PLATFORM(QT) diff --git a/Source/WebKit2/Shared/NativeWebWheelEvent.h b/Source/WebKit2/Shared/NativeWebWheelEvent.h index 033ab8082..f0cfa6581 100644 --- a/Source/WebKit2/Shared/NativeWebWheelEvent.h +++ b/Source/WebKit2/Shared/NativeWebWheelEvent.h @@ -49,7 +49,7 @@ public: #elif PLATFORM(WIN) NativeWebWheelEvent(HWND, UINT message, WPARAM, LPARAM); #elif PLATFORM(QT) - explicit NativeWebWheelEvent(QWheelEvent*); + explicit NativeWebWheelEvent(QWheelEvent*, const QTransform& fromItemTransform); #elif PLATFORM(GTK) NativeWebWheelEvent(const NativeWebWheelEvent&); NativeWebWheelEvent(GdkEvent*); diff --git a/Source/WebKit2/Shared/mac/SecItemRequestData.cpp b/Source/WebKit2/Shared/mac/SecItemRequestData.cpp index 4aa4066a7..aa1c45932 100644 --- a/Source/WebKit2/Shared/mac/SecItemRequestData.cpp +++ b/Source/WebKit2/Shared/mac/SecItemRequestData.cpp @@ -32,22 +32,27 @@ namespace WebKit { SecItemRequestData::SecItemRequestData() + : m_type(Invalid) { } -SecItemRequestData::SecItemRequestData(CFDictionaryRef query) - : m_queryDictionary(query) +SecItemRequestData::SecItemRequestData(Type type, CFDictionaryRef query) + : m_type(type) + , m_queryDictionary(query) { } -SecItemRequestData::SecItemRequestData(CFDictionaryRef query, CFDictionaryRef attributesToMatch) - : m_queryDictionary(query) +SecItemRequestData::SecItemRequestData(Type type, CFDictionaryRef query, CFDictionaryRef attributesToMatch) + : m_type(type) + , m_queryDictionary(query) , m_attributesToMatch(attributesToMatch) { } void SecItemRequestData::encode(CoreIPC::ArgumentEncoder* encoder) const { + encoder->encodeEnum(m_type); + CoreIPC::encode(encoder, m_queryDictionary.get()); encoder->encodeBool(m_attributesToMatch.get()); @@ -57,6 +62,9 @@ void SecItemRequestData::encode(CoreIPC::ArgumentEncoder* encoder) const bool SecItemRequestData::decode(CoreIPC::ArgumentDecoder* decoder, SecItemRequestData& secItemRequestData) { + if (!decoder->decodeEnum(secItemRequestData.m_type)) + return false; + if (!CoreIPC::decode(decoder, secItemRequestData.m_queryDictionary)) return false; diff --git a/Source/WebKit2/Shared/mac/SecItemRequestData.h b/Source/WebKit2/Shared/mac/SecItemRequestData.h index 1e21d583f..57b18cfc6 100644 --- a/Source/WebKit2/Shared/mac/SecItemRequestData.h +++ b/Source/WebKit2/Shared/mac/SecItemRequestData.h @@ -37,17 +37,29 @@ namespace WebKit { class SecItemRequestData { public: + enum Type { + Invalid, + CopyMatching, + Add, + Update, + Delete, + CopyContent, + }; + SecItemRequestData(); - SecItemRequestData(CFDictionaryRef query); - SecItemRequestData(CFDictionaryRef query, CFDictionaryRef attributesToMatch); + SecItemRequestData(Type, CFDictionaryRef query); + SecItemRequestData(Type, CFDictionaryRef query, CFDictionaryRef attributesToMatch); void encode(CoreIPC::ArgumentEncoder*) const; static bool decode(CoreIPC::ArgumentDecoder*, SecItemRequestData&); + Type type() const { return m_type; } + CFDictionaryRef query() const { return m_queryDictionary.get(); } CFDictionaryRef attributesToMatch() const { return m_attributesToMatch.get(); } private: + Type m_type; RetainPtr<CFDictionaryRef> m_queryDictionary; RetainPtr<CFDictionaryRef> m_attributesToMatch; }; diff --git a/Source/WebKit2/Shared/mac/SecItemResponseData.h b/Source/WebKit2/Shared/mac/SecItemResponseData.h index 7d7fb9549..5c9433692 100644 --- a/Source/WebKit2/Shared/mac/SecItemResponseData.h +++ b/Source/WebKit2/Shared/mac/SecItemResponseData.h @@ -43,7 +43,7 @@ public: void encode(CoreIPC::ArgumentEncoder*) const; static bool decode(CoreIPC::ArgumentDecoder*, SecItemResponseData&); - RetainPtr<CFTypeRef> resultObject() { return m_resultObject; } + RetainPtr<CFTypeRef>& resultObject() { return m_resultObject; } OSStatus resultCode() const { return m_resultCode; } private: diff --git a/Source/WebKit2/Shared/mac/SecKeychainItemRequestData.cpp b/Source/WebKit2/Shared/mac/SecKeychainItemRequestData.cpp index 7f988ffbe..1b6a3c25c 100644 --- a/Source/WebKit2/Shared/mac/SecKeychainItemRequestData.cpp +++ b/Source/WebKit2/Shared/mac/SecKeychainItemRequestData.cpp @@ -32,29 +32,36 @@ namespace WebKit { SecKeychainItemRequestData::SecKeychainItemRequestData() - : m_itemClass(0) + : m_type(Invalid) + , m_itemClass(0) + , m_attrs(adoptRef(new Attributes)) { } -SecKeychainItemRequestData::SecKeychainItemRequestData(SecKeychainItemRef item, SecKeychainAttributeList* attrList) - : m_keychainItem(item) +SecKeychainItemRequestData::SecKeychainItemRequestData(Type type, SecKeychainItemRef item, SecKeychainAttributeList* attrList) + : m_type(type) + , m_keychainItem(item) , m_itemClass(0) + , m_attrs(adoptRef(new Attributes)) { initializeWithAttributeList(attrList); } -SecKeychainItemRequestData::SecKeychainItemRequestData(SecKeychainItemRef item, SecKeychainAttributeList* attrList, UInt32 length, const void* data) - : m_keychainItem(item) +SecKeychainItemRequestData::SecKeychainItemRequestData(Type type, SecKeychainItemRef item, SecKeychainAttributeList* attrList, UInt32 length, const void* data) + : m_type(type) + , m_keychainItem(item) , m_itemClass(0) , m_dataReference(static_cast<const uint8_t*>(data), length) + , m_attrs(adoptRef(new Attributes)) { initializeWithAttributeList(attrList); } - -SecKeychainItemRequestData::SecKeychainItemRequestData(SecItemClass itemClass, SecKeychainAttributeList* attrList, UInt32 length, const void* data) - : m_itemClass(itemClass) +SecKeychainItemRequestData::SecKeychainItemRequestData(Type type, SecItemClass itemClass, SecKeychainAttributeList* attrList, UInt32 length, const void* data) + : m_type(type) + , m_itemClass(itemClass) , m_dataReference(static_cast<const uint8_t*>(data), length) + , m_attrs(adoptRef(new Attributes)) { initializeWithAttributeList(attrList); } @@ -71,7 +78,7 @@ void SecKeychainItemRequestData::initializeWithAttributeList(SecKeychainAttribut SecKeychainItemRequestData::~SecKeychainItemRequestData() { #ifndef NDEBUG - if (!m_attributeList) + if (!m_attrs->m_attributeList) return; // If this request was for SecKeychainItemModifyContent: @@ -80,42 +87,44 @@ SecKeychainItemRequestData::~SecKeychainItemRequestData() // If this request was for SecKeychainItemCopyContent: // - Security APIs should've filled in the data in the AttributeList and that data // should've been freed by SecKeychainItemFreeContent. - for (size_t i = 0; i < m_attributeList->count; ++i) { + for (size_t i = 0; i < m_attrs->m_attributeList->count; ++i) { if (m_keychainAttributes[i].data) - ASSERT(m_attributeList->attr[i].data == CFDataGetBytePtr(m_keychainAttributes[i].data.get())); + ASSERT(m_attrs->m_attributeList->attr[i].data == CFDataGetBytePtr(m_keychainAttributes[i].data.get())); else - ASSERT(!m_attributeList->attr[i].data); + ASSERT(!m_attrs->m_attributeList->attr[i].data); } #endif } SecKeychainAttributeList* SecKeychainItemRequestData::attributeList() const { - if (m_attributeList || m_keychainAttributes.isEmpty()) - return m_attributeList.get(); + if (m_attrs->m_attributeList || m_keychainAttributes.isEmpty()) + return m_attrs->m_attributeList.get(); - m_attributeList = adoptPtr(new SecKeychainAttributeList); - m_attributeList->count = m_keychainAttributes.size(); - m_attributes = adoptArrayPtr(new SecKeychainAttribute[m_attributeList->count]); - m_attributeList->attr = m_attributes.get(); + m_attrs->m_attributeList = adoptPtr(new SecKeychainAttributeList); + m_attrs->m_attributeList->count = m_keychainAttributes.size(); + m_attrs->m_attributes = adoptArrayPtr(new SecKeychainAttribute[m_attrs->m_attributeList->count]); + m_attrs->m_attributeList->attr = m_attrs->m_attributes.get(); - for (size_t i = 0; i < m_attributeList->count; ++i) { - m_attributeList->attr[i].tag = m_keychainAttributes[i].tag; + for (size_t i = 0; i < m_attrs->m_attributeList->count; ++i) { + m_attrs->m_attributeList->attr[i].tag = m_keychainAttributes[i].tag; if (!m_keychainAttributes[i].data) { - m_attributeList->attr[i].length = 0; - m_attributeList->attr[i].data = 0; + m_attrs->m_attributeList->attr[i].length = 0; + m_attrs->m_attributeList->attr[i].data = 0; continue; } - m_attributeList->attr[i].length = CFDataGetLength(m_keychainAttributes[i].data.get()); - m_attributeList->attr[i].data = const_cast<void*>(static_cast<const void*>(CFDataGetBytePtr(m_keychainAttributes[i].data.get()))); + m_attrs->m_attributeList->attr[i].length = CFDataGetLength(m_keychainAttributes[i].data.get()); + m_attrs->m_attributeList->attr[i].data = const_cast<void*>(static_cast<const void*>(CFDataGetBytePtr(m_keychainAttributes[i].data.get()))); } - return m_attributeList.get(); + return m_attrs->m_attributeList.get(); } void SecKeychainItemRequestData::encode(CoreIPC::ArgumentEncoder* encoder) const { + encoder->encodeEnum(m_type); + encoder->encodeBool(m_keychainItem); if (m_keychainItem) CoreIPC::encode(encoder, m_keychainItem.get()); @@ -130,6 +139,9 @@ void SecKeychainItemRequestData::encode(CoreIPC::ArgumentEncoder* encoder) const bool SecKeychainItemRequestData::decode(CoreIPC::ArgumentDecoder* decoder, SecKeychainItemRequestData& secKeychainItemRequestData) { + if (!decoder->decodeEnum(secKeychainItemRequestData.m_type)) + return false; + bool hasKeychainItem; if (!decoder->decodeBool(hasKeychainItem)) return false; diff --git a/Source/WebKit2/Shared/mac/SecKeychainItemRequestData.h b/Source/WebKit2/Shared/mac/SecKeychainItemRequestData.h index ca72b36fb..67a8109ab 100644 --- a/Source/WebKit2/Shared/mac/SecKeychainItemRequestData.h +++ b/Source/WebKit2/Shared/mac/SecKeychainItemRequestData.h @@ -31,6 +31,7 @@ #include <Security/Security.h> #include <wtf/OwnArrayPtr.h> #include <wtf/RetainPtr.h> +#include <wtf/ThreadSafeRefCounted.h> #include <wtf/Vector.h> namespace CoreIPC { @@ -42,15 +43,24 @@ namespace WebKit { class SecKeychainItemRequestData { public: + enum Type { + Invalid, + CopyContent, + CreateFromContent, + ModifyContent, + }; + SecKeychainItemRequestData(); - SecKeychainItemRequestData(SecKeychainItemRef, SecKeychainAttributeList*); - SecKeychainItemRequestData(SecKeychainItemRef, SecKeychainAttributeList*, UInt32 length, const void* data); - SecKeychainItemRequestData(SecItemClass, SecKeychainAttributeList*, UInt32 length, const void* data); + SecKeychainItemRequestData(Type, SecKeychainItemRef, SecKeychainAttributeList*); + SecKeychainItemRequestData(Type, SecKeychainItemRef, SecKeychainAttributeList*, UInt32 length, const void* data); + SecKeychainItemRequestData(Type, SecItemClass, SecKeychainAttributeList*, UInt32 length, const void* data); ~SecKeychainItemRequestData(); void encode(CoreIPC::ArgumentEncoder*) const; static bool decode(CoreIPC::ArgumentDecoder*, SecKeychainItemRequestData&); + Type type() const { return m_type; } + SecKeychainItemRef keychainItem() const { return m_keychainItem.get(); } SecItemClass itemClass() const { return m_itemClass; } UInt32 length() const { return m_dataReference.size(); } @@ -60,14 +70,19 @@ public: private: void initializeWithAttributeList(SecKeychainAttributeList*); - + + Type m_type; RetainPtr<SecKeychainItemRef> m_keychainItem; SecItemClass m_itemClass; CoreIPC::DataReference m_dataReference; Vector<KeychainAttribute> m_keychainAttributes; - mutable OwnPtr<SecKeychainAttributeList> m_attributeList; - mutable OwnArrayPtr<SecKeychainAttribute> m_attributes; + + struct Attributes : public ThreadSafeRefCounted<Attributes> { + mutable OwnPtr<SecKeychainAttributeList> m_attributeList; + mutable OwnArrayPtr<SecKeychainAttribute> m_attributes; + }; + RefPtr<Attributes> m_attrs; }; } // namespace WebKit diff --git a/Source/WebKit2/Shared/qt/NativeWebMouseEventQt.cpp b/Source/WebKit2/Shared/qt/NativeWebMouseEventQt.cpp index ee731dece..e8fd39ce7 100644 --- a/Source/WebKit2/Shared/qt/NativeWebMouseEventQt.cpp +++ b/Source/WebKit2/Shared/qt/NativeWebMouseEventQt.cpp @@ -30,8 +30,8 @@ namespace WebKit { -NativeWebMouseEvent::NativeWebMouseEvent(QMouseEvent* event, int eventClickCount) - : WebMouseEvent(WebEventFactory::createWebMouseEvent(event, eventClickCount)) +NativeWebMouseEvent::NativeWebMouseEvent(QMouseEvent* event, const QTransform& fromItemTransform, int eventClickCount) + : WebMouseEvent(WebEventFactory::createWebMouseEvent(event, fromItemTransform, eventClickCount)) , m_nativeEvent(event) { } diff --git a/Source/WebKit2/Shared/qt/NativeWebTouchEventQt.cpp b/Source/WebKit2/Shared/qt/NativeWebTouchEventQt.cpp index 0660bba27..78c0883d6 100644 --- a/Source/WebKit2/Shared/qt/NativeWebTouchEventQt.cpp +++ b/Source/WebKit2/Shared/qt/NativeWebTouchEventQt.cpp @@ -30,8 +30,8 @@ namespace WebKit { -NativeWebTouchEvent::NativeWebTouchEvent(const QTouchEvent* event) - : WebTouchEvent(WebEventFactory::createWebTouchEvent(event)) +NativeWebTouchEvent::NativeWebTouchEvent(const QTouchEvent* event, const QTransform& fromItemTransform) + : WebTouchEvent(WebEventFactory::createWebTouchEvent(event, fromItemTransform)) , m_nativeEvent(*event) { } diff --git a/Source/WebKit2/Shared/qt/NativeWebWheelEventQt.cpp b/Source/WebKit2/Shared/qt/NativeWebWheelEventQt.cpp index 5ff224acb..3c1ba9f8f 100644 --- a/Source/WebKit2/Shared/qt/NativeWebWheelEventQt.cpp +++ b/Source/WebKit2/Shared/qt/NativeWebWheelEventQt.cpp @@ -30,8 +30,8 @@ namespace WebKit { -NativeWebWheelEvent::NativeWebWheelEvent(QWheelEvent* event) - : WebWheelEvent(WebEventFactory::createWebWheelEvent(event)) +NativeWebWheelEvent::NativeWebWheelEvent(QWheelEvent* event, const QTransform& fromItemTransform) + : WebWheelEvent(WebEventFactory::createWebWheelEvent(event, fromItemTransform)) , m_nativeEvent(event) { } diff --git a/Source/WebKit2/Shared/qt/WebEventFactoryQt.cpp b/Source/WebKit2/Shared/qt/WebEventFactoryQt.cpp index 3dc5970f9..b6ac2f5e1 100644 --- a/Source/WebKit2/Shared/qt/WebEventFactoryQt.cpp +++ b/Source/WebKit2/Shared/qt/WebEventFactoryQt.cpp @@ -29,6 +29,7 @@ #include <qgraphicssceneevent.h> #include <QApplication> #include <QKeyEvent> +#include <QTransform> #include <WebCore/IntPoint.h> #include <WebCore/FloatPoint.h> #include <WebCore/PlatformKeyboardEvent.h> @@ -106,7 +107,7 @@ static inline WebEvent::Modifiers modifiersForEvent(Qt::KeyboardModifiers modifi return (WebEvent::Modifiers)result; } -WebMouseEvent WebEventFactory::createWebMouseEvent(QMouseEvent* event, int eventClickCount) +WebMouseEvent WebEventFactory::createWebMouseEvent(QMouseEvent* event, const QTransform& fromItemTransform, int eventClickCount) { static FloatPoint lastPos = FloatPoint(0, 0); @@ -119,10 +120,10 @@ WebMouseEvent WebEventFactory::createWebMouseEvent(QMouseEvent* event, int event double timestamp = currentTimeForEvent(event); lastPos.set(event->localPos().x(), event->localPos().y()); - return WebMouseEvent(type, button, event->localPos().toPoint(), event->screenPos().toPoint(), deltaX, deltaY, 0.0f, clickCount, modifiers, timestamp); + return WebMouseEvent(type, button, fromItemTransform.map(event->localPos()).toPoint(), event->screenPos().toPoint(), deltaX, deltaY, 0.0f, clickCount, modifiers, timestamp); } -WebWheelEvent WebEventFactory::createWebWheelEvent(QWheelEvent* e) +WebWheelEvent WebEventFactory::createWebWheelEvent(QWheelEvent* e, const QTransform& fromItemTransform) { float deltaX = 0; float deltaY = 0; @@ -151,7 +152,7 @@ WebWheelEvent WebEventFactory::createWebWheelEvent(QWheelEvent* e) deltaX *= (fullTick) ? QApplication::wheelScrollLines() * cDefaultQtScrollStep : 1; deltaY *= (fullTick) ? QApplication::wheelScrollLines() * cDefaultQtScrollStep : 1; - return WebWheelEvent(WebEvent::Wheel, e->posF().toPoint(), e->globalPosF().toPoint(), FloatSize(deltaX, deltaY), FloatSize(wheelTicksX, wheelTicksY), granularity, modifiers, timestamp); + return WebWheelEvent(WebEvent::Wheel, fromItemTransform.map(e->posF()).toPoint(), e->globalPosF().toPoint(), FloatSize(deltaX, deltaY), FloatSize(wheelTicksX, wheelTicksY), granularity, modifiers, timestamp); } WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(QKeyEvent* event) @@ -174,7 +175,7 @@ WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(QKeyEvent* event) } #if ENABLE(TOUCH_EVENTS) -WebTouchEvent WebEventFactory::createWebTouchEvent(const QTouchEvent* event) +WebTouchEvent WebEventFactory::createWebTouchEvent(const QTouchEvent* event, const QTransform& fromItemTransform) { WebEvent::Type type = webEventTypeForEvent(event); WebPlatformTouchPoint::TouchPointState state = static_cast<WebPlatformTouchPoint::TouchPointState>(0); @@ -184,10 +185,11 @@ WebTouchEvent WebEventFactory::createWebTouchEvent(const QTouchEvent* event) const QList<QTouchEvent::TouchPoint>& points = event->touchPoints(); - Vector<WebPlatformTouchPoint> m_touchPoints; + Vector<WebPlatformTouchPoint, 6> m_touchPoints; for (int i = 0; i < points.count(); ++i) { - id = static_cast<unsigned>(points.at(i).id()); - switch (points.at(i).state()) { + const QTouchEvent::TouchPoint& touchPoint = points.at(i); + id = static_cast<unsigned>(touchPoint.id()); + switch (touchPoint.state()) { case Qt::TouchPointReleased: state = WebPlatformTouchPoint::TouchReleased; break; @@ -205,7 +207,7 @@ WebTouchEvent WebEventFactory::createWebTouchEvent(const QTouchEvent* event) break; } - m_touchPoints.append(WebPlatformTouchPoint(id, state, points.at(i).screenPos().toPoint(), points.at(i).pos().toPoint())); + m_touchPoints.append(WebPlatformTouchPoint(id, state, touchPoint.screenPos().toPoint(), fromItemTransform.map(touchPoint.pos()).toPoint())); } return WebTouchEvent(type, m_touchPoints, modifiers, timestamp); diff --git a/Source/WebKit2/Shared/qt/WebEventFactoryQt.h b/Source/WebKit2/Shared/qt/WebEventFactoryQt.h index 4ce648e26..deecc25d4 100644 --- a/Source/WebKit2/Shared/qt/WebEventFactoryQt.h +++ b/Source/WebKit2/Shared/qt/WebEventFactoryQt.h @@ -41,11 +41,11 @@ namespace WebKit { class WebEventFactory { public: - static WebMouseEvent createWebMouseEvent(QMouseEvent*, int eventClickCount); - static WebWheelEvent createWebWheelEvent(QWheelEvent*); + static WebMouseEvent createWebMouseEvent(QMouseEvent*, const QTransform& fromItemTransform, int eventClickCount); + static WebWheelEvent createWebWheelEvent(QWheelEvent*, const QTransform& fromItemTransform); static WebKeyboardEvent createWebKeyboardEvent(QKeyEvent*); #if ENABLE(TOUCH_EVENTS) - static WebTouchEvent createWebTouchEvent(const QTouchEvent*); + static WebTouchEvent createWebTouchEvent(const QTouchEvent*, const QTransform& fromItemTransform); #endif }; diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp index c5bca11b4..592f58034 100644 --- a/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp +++ b/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp @@ -348,20 +348,17 @@ static void _ewk_view_smart_calculate(Evas_Object* ewkView) smartData->changed.any = false; evas_object_geometry_get(ewkView, &x, &y, &width, &height); - Evas_Object* clip = evas_object_clip_get(smartData->image); if (smartData->changed.size) { if (priv->pageClient->page()->drawingArea()) priv->pageClient->page()->drawingArea()->setSize(IntSize(width, height), IntSize()); smartData->view.w = width; smartData->view.h = height; - evas_object_resize(clip, width, height); smartData->changed.size = false; } if (smartData->changed.position) { evas_object_move(smartData->image, x, y); - evas_object_move(clip, x, y); smartData->view.x = x; smartData->view.y = y; smartData->changed.position = false; @@ -385,6 +382,33 @@ static void _ewk_view_smart_hide(Evas_Object* ewkView) evas_object_hide(smartData->image); } +static void _ewk_view_smart_color_set(Evas_Object* ewkView, int red, int green, int blue, int alpha) +{ + EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData); + EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv); + + if (alpha < 0) + alpha = 0; + else if (alpha > 255) + alpha = 255; + +#define CHECK_COLOR(color, alpha) \ + if (color < 0) \ + color = 0; \ + else if (color > alpha) \ + color = alpha; + CHECK_COLOR(red, alpha); + CHECK_COLOR(green, alpha); + CHECK_COLOR(blue, alpha); +#undef CHECK_COLOR + + evas_object_image_alpha_set(smartData->image, alpha < 255); + priv->pageClient->page()->setDrawsBackground(red || green || blue); + priv->pageClient->page()->setDrawsTransparentBackground(alpha < 255); + + g_parentSmartClass.color_set(ewkView, red, green, blue, alpha); +} + Eina_Bool ewk_view_smart_class_init(Ewk_View_Smart_Class* api) { EINA_SAFETY_ON_NULL_RETURN_VAL(api, false); @@ -407,6 +431,7 @@ Eina_Bool ewk_view_smart_class_init(Ewk_View_Smart_Class* api) api->sc.resize = _ewk_view_smart_resize; api->sc.show = _ewk_view_smart_show; api->sc.hide = _ewk_view_smart_hide; + api->sc.color_set = _ewk_view_smart_color_set; api->sc.calculate = _ewk_view_smart_calculate; api->sc.data = EWK_VIEW_TYPE_STR; // It is used by type checking. diff --git a/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h b/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h index 8e3c5b7aa..953c378e1 100644 --- a/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h +++ b/Source/WebKit2/UIProcess/API/mac/PageClientImpl.h @@ -82,7 +82,10 @@ private: virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&); virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&); virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&); - + +#if ENABLE(GESTURE_EVENTS) + virtual void doneWithGestureEvent(const WebGestureEvent&, bool wasEventHandled); +#endif virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled); virtual PassRefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy*); diff --git a/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm b/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm index c1ae66643..35e0e2e70 100644 --- a/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm +++ b/Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm @@ -298,6 +298,13 @@ IntRect PageClientImpl::windowToScreen(const IntRect& rect) return enclosingIntRect(tempRect); } +#if ENABLE(GESTURE_EVENTS) +void PageClientImpl::doneWithGestureEvent(const WebGestureEvent&, bool wasEventHandled) +{ + notImplemented(); +} +#endif + void PageClientImpl::doneWithKeyEvent(const NativeWebKeyboardEvent& event, bool eventWasHandled) { [m_wkView _doneWithKeyEvent:event.nativeEvent() eventWasHandled:eventWasHandled]; diff --git a/Source/WebKit2/UIProcess/API/mac/WKPrintingView.h b/Source/WebKit2/UIProcess/API/mac/WKPrintingView.h index 87d81f4d3..cd3b1f984 100644 --- a/Source/WebKit2/UIProcess/API/mac/WKPrintingView.h +++ b/Source/WebKit2/UIProcess/API/mac/WKPrintingView.h @@ -27,6 +27,7 @@ #import <wtf/RetainPtr.h> @class WKPrintingViewData; +@class PDFDocument; namespace WebKit { class WebFrameProxy; @@ -43,7 +44,7 @@ namespace WebKit { HashMap<WebCore::IntRect, Vector<uint8_t> > _pagePreviews; Vector<uint8_t> _printedPagesData; - RetainPtr<CGPDFDocumentRef> _printedPagesPDFDocument; + RetainPtr<PDFDocument> _printedPagesPDFDocument; uint64_t _expectedComputedPagesCallback; HashMap<uint64_t, WebCore::IntRect> _expectedPreviewCallbacks; diff --git a/Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm b/Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm index 14fe79add..13aefb82b 100644 --- a/Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm +++ b/Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm @@ -30,6 +30,8 @@ #import "PrintInfo.h" #import "WebData.h" #import "WebPageProxy.h" +#import <PDFKit/PDFKit.h> +#import <WebCore/WebCoreObjCExtras.h> #import <wtf/MainThread.h> using namespace WebKit; @@ -56,6 +58,14 @@ static BOOL isForcingPreviewUpdate; return self; } +- (void)dealloc +{ + if (WebCoreObjCScheduleDeallocateOnMainThread([WKPrintingView class], self)) + return; + + [super dealloc]; +} + - (BOOL)isFlipped { return YES; @@ -110,6 +120,8 @@ static BOOL isForcingPreviewUpdate; - (void)_adjustPrintingMarginsForHeaderAndFooter { + ASSERT(isMainThread()); // This funciton calls the client, which should only be done on main thread. + NSPrintInfo *info = [_printOperation printInfo]; NSMutableDictionary *infoDictionary = [info dictionary]; @@ -364,7 +376,7 @@ static void prepareDataForPrintingOnSecondaryThread(void* untypedContext) [self _suspendAutodisplay]; - [self _adjustPrintingMarginsForHeaderAndFooter]; + [self performSelectorOnMainThread:@selector(_adjustPrintingMarginsForHeaderAndFooter) withObject:nil waitUntilDone:YES]; if ([self _hasPageRects]) *range = NSMakeRange(1, _printingPageRects.size()); @@ -399,16 +411,45 @@ static void prepareDataForPrintingOnSecondaryThread(void* untypedContext) return 0; // Invalid page number. } -- (void)_drawPDFDocument:(CGPDFDocumentRef)pdfDocument page:(unsigned)page atPoint:(NSPoint)point +static NSString *pdfKitFrameworkPath() +{ + NSString *systemLibraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSSystemDomainMask, NO) objectAtIndex:0]; + return [systemLibraryPath stringByAppendingPathComponent:@"Frameworks/Quartz.framework/Frameworks/PDFKit.framework"]; +} + +static Class classFromPDFKit(NSString *className) +{ + static NSBundle *pdfKitBundle = [NSBundle bundleWithPath:pdfKitFrameworkPath()]; + [pdfKitBundle load]; + return [pdfKitBundle classNamed:className]; +} + +static Class pdfAnnotationLinkClass() +{ + static Class pdfAnnotationLinkClass = classFromPDFKit(@"PDFAnnotationLink"); + ASSERT(pdfAnnotationLinkClass); + return pdfAnnotationLinkClass; +} + +static Class pdfDocumentClass() +{ + static Class pdfDocumentClass = classFromPDFKit(@"PDFDocument"); + ASSERT(pdfDocumentClass); + return pdfDocumentClass; +} + +- (void)_drawPDFDocument:(PDFDocument *)pdfDocument page:(unsigned)page atPoint:(NSPoint)point { if (!pdfDocument) { LOG_ERROR("Couldn't create a PDF document with data passed for preview"); return; } - CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdfDocument, page); - if (!pdfPage) { - LOG_ERROR("Preview data doesn't have page %d", page); + PDFPage *pdfPage; + @try { + pdfPage = [pdfDocument pageAtIndex:page]; + } @catch (id exception) { + LOG_ERROR("Preview data doesn't have page %d: %@", page, exception); return; } @@ -418,8 +459,25 @@ static void prepareDataForPrintingOnSecondaryThread(void* untypedContext) CGContextSaveGState(context); CGContextTranslateCTM(context, point.x, point.y); CGContextScaleCTM(context, _totalScaleFactorForPrinting, -_totalScaleFactorForPrinting); - CGContextTranslateCTM(context, 0, -CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox).size.height); - CGContextDrawPDFPage(context, pdfPage); + CGContextTranslateCTM(context, 0, -[pdfPage boundsForBox:kPDFDisplayBoxMediaBox].size.height); + [pdfPage drawWithBox:kPDFDisplayBoxMediaBox]; + + CGAffineTransform transform = CGContextGetCTM(context); + + for (PDFAnnotation *annotation in [pdfPage annotations]) { + if (![annotation isKindOfClass:pdfAnnotationLinkClass()]) + continue; + + PDFAnnotationLink *linkAnnotation = (PDFAnnotationLink *)annotation; + NSURL *url = [linkAnnotation URL]; + if (!url) + continue; + + CGRect urlRect = NSRectToCGRect([linkAnnotation bounds]); + CGRect transformedRect = CGRectApplyAffineTransform(urlRect, transform); + CGPDFContextSetURLForRect(context, (CFURLRef)url, transformedRect); + } + CGContextRestoreGState(context); } @@ -462,11 +520,11 @@ static void prepareDataForPrintingOnSecondaryThread(void* untypedContext) return; } - const Vector<uint8_t>& pdfData = pagePreviewIterator->second; - RetainPtr<CGDataProviderRef> pdfDataProvider(AdoptCF, CGDataProviderCreateWithData(0, pdfData.data(), pdfData.size(), 0)); - RetainPtr<CGPDFDocumentRef> pdfDocument(AdoptCF, CGPDFDocumentCreateWithProvider(pdfDataProvider.get())); + const Vector<uint8_t>& pdfDataBytes = pagePreviewIterator->second; + RetainPtr<NSData> pdfData(AdoptNS, [[NSData alloc] initWithBytes:pdfDataBytes.data() length:pdfDataBytes.size()]); + RetainPtr<PDFDocument> pdfDocument(AdoptNS, [[pdfDocumentClass() alloc] initWithData:pdfData.get()]); - [self _drawPDFDocument:pdfDocument.get() page:1 atPoint:NSMakePoint(nsRect.origin.x, nsRect.origin.y)]; + [self _drawPDFDocument:pdfDocument.get() page:0 atPoint:NSMakePoint(nsRect.origin.x, nsRect.origin.y)]; } - (void)drawRect:(NSRect)nsRect @@ -487,11 +545,11 @@ static void prepareDataForPrintingOnSecondaryThread(void* untypedContext) ASSERT(!_printedPagesData.isEmpty()); // Prepared by knowsPageRange: if (!_printedPagesPDFDocument) { - RetainPtr<CGDataProviderRef> pdfDataProvider(AdoptCF, CGDataProviderCreateWithData(0, _printedPagesData.data(), _printedPagesData.size(), 0)); - _printedPagesPDFDocument.adoptCF(CGPDFDocumentCreateWithProvider(pdfDataProvider.get())); + RetainPtr<NSData> pdfData(AdoptNS, [[NSData alloc] initWithBytes:_printedPagesData.data() length:_printedPagesData.size()]); + _printedPagesPDFDocument.adoptNS([[pdfDocumentClass() alloc] initWithData:pdfData.get()]); } - unsigned printedPageNumber = [self _pageForRect:nsRect] - [self _firstPrintedPageNumber] + 1; + unsigned printedPageNumber = [self _pageForRect:nsRect] - [self _firstPrintedPageNumber]; [self _drawPDFDocument:_printedPagesPDFDocument.get() page:printedPageNumber atPoint:NSMakePoint(nsRect.origin.x, nsRect.origin.y)]; } diff --git a/Source/WebKit2/UIProcess/API/mac/WKView.mm b/Source/WebKit2/UIProcess/API/mac/WKView.mm index 0bb174337..1e2509ba6 100644 --- a/Source/WebKit2/UIProcess/API/mac/WKView.mm +++ b/Source/WebKit2/UIProcess/API/mac/WKView.mm @@ -225,7 +225,6 @@ struct WKViewInterpretKeyEventsParameters { - (void)dealloc { _data->_page->close(); - [NSEvent removeMonitor:_data->_flagsChangedEventMonitor]; ASSERT(!_data->_inSecureInputState); @@ -1823,12 +1822,20 @@ static NSString * const backingPropertyOldScaleFactorKey = @"NSBackingPropertyOl _data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible | WebPageProxy::ViewIsInWindow); [self _updateWindowVisibility]; [self _updateWindowAndViewFrames]; - - [self _accessibilityRegisterUIProcessTokens]; + + _data->_flagsChangedEventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask handler:^(NSEvent *flagsChangedEvent) { + [self _postFakeMouseMovedEventForFlagsChangedEvent:flagsChangedEvent]; + return flagsChangedEvent; + }]; + + [self _accessibilityRegisterUIProcessTokens]; } else { _data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible); _data->_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive | WebPageProxy::ViewIsInWindow); + [NSEvent removeMonitor:_data->_flagsChangedEventMonitor]; + _data->_flagsChangedEventMonitor = nil; + #if ENABLE(GESTURE_EVENTS) if (_data->_endGestureMonitor) { [NSEvent removeMonitor:_data->_endGestureMonitor]; @@ -2703,10 +2710,6 @@ static void drawPageBackground(CGContextRef context, WebPageProxy* page, const I #endif _data->_mouseDownEvent = nil; _data->_ignoringMouseDraggedEvents = NO; - _data->_flagsChangedEventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSFlagsChangedMask handler:^(NSEvent *flagsChangedEvent) { - [self _postFakeMouseMovedEventForFlagsChangedEvent:flagsChangedEvent]; - return flagsChangedEvent; - }]; [self _registerDraggedTypes]; diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp index 7d3b2d6a6..b5db3938f 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp @@ -25,6 +25,7 @@ #include "QtWebPageEventHandler.h" #include "TransformationMatrix.h" #include "qquickwebpage_p_p.h" +#include "qquickwebview_p.h" #include <QtQuick/QQuickCanvas> #include <QtQuick/QSGGeometryNode> #include <QtQuick/QSGMaterial> @@ -50,112 +51,15 @@ QtSGUpdateQueue *QQuickWebPage::sceneGraphUpdateQueue() const return &d->sgUpdateQueue; } -void QQuickWebPage::keyPressEvent(QKeyEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::keyReleaseEvent(QKeyEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::inputMethodEvent(QInputMethodEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::focusInEvent(QFocusEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::focusOutEvent(QFocusEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::mousePressEvent(QMouseEvent* event) -{ - forceActiveFocus(); - this->event(event); -} - -void QQuickWebPage::mouseMoveEvent(QMouseEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::mouseReleaseEvent(QMouseEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::mouseDoubleClickEvent(QMouseEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::wheelEvent(QWheelEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::hoverEnterEvent(QHoverEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::hoverMoveEvent(QHoverEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::hoverLeaveEvent(QHoverEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::dragMoveEvent(QDragMoveEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::dragEnterEvent(QDragEnterEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::dragLeaveEvent(QDragLeaveEvent* event) -{ - this->event(event); -} - -void QQuickWebPage::dropEvent(QDropEvent* event) -{ - this->event(event); -} - void QQuickWebPage::geometryChanged(const QRectF& newGeometry, const QRectF& oldGeometry) { QQuickItem::geometryChanged(newGeometry, oldGeometry); - if (newGeometry.size() != oldGeometry.size()) - d->setDrawingAreaSize(newGeometry.size().toSize()); -} -bool QQuickWebPage::event(QEvent* ev) -{ - if (d->eventHandler.data()->handleEvent(ev)) - return true; - if (ev->type() == QEvent::InputMethod) - return false; // This is necessary to avoid an endless loop in connection with QQuickItem::event(). - return QQuickItem::event(ev); -} + if (!d->useTraditionalDesktopBehaviour) + return; -void QQuickWebPage::touchEvent(QTouchEvent* event) -{ - forceActiveFocus(); - this->event(event); + if (newGeometry.size() != oldGeometry.size()) + d->setDrawingAreaSize(newGeometry.size().toSize()); } QQuickWebPagePrivate::QQuickWebPagePrivate(QQuickWebPage* q) @@ -164,6 +68,8 @@ QQuickWebPagePrivate::QQuickWebPagePrivate(QQuickWebPage* q) , sgUpdateQueue(q) , paintingIsInitialized(false) , m_paintNode(0) + , contentScale(1) + , useTraditionalDesktopBehaviour(false) { } @@ -199,6 +105,7 @@ void QQuickWebPagePrivate::paintToCurrentGLContext() return; QTransform transform = q->itemTransform(0, 0); + transform.scale(contentScale, contentScale); float opacity = computeEffectiveOpacity(q); QRectF clipRect = q->parentItem()->mapRectToScene(q->parentItem()->boundingRect()); @@ -322,6 +229,65 @@ QSGNode* QQuickWebPage::updatePaintNode(QSGNode* oldNode, UpdatePaintNodeData*) return proxyNode; } +bool QQuickWebPage::usesTraditionalDesktopBehaviour() const +{ + return d->useTraditionalDesktopBehaviour; +} + +void QQuickWebPage::setUsesTraditionalDesktopBehaviour(bool enable) +{ + d->useTraditionalDesktopBehaviour = enable; +} + +QtWebPageEventHandler* QQuickWebPage::eventHandler() const +{ + return d->eventHandler.data(); +} + +void QQuickWebPage::setContentSize(const QSizeF& size) +{ + if (size.isEmpty() || d->contentSize == size) + return; + + d->contentSize = size; + d->updateSize(); + d->setDrawingAreaSize(d->contentSize.toSize()); +} + +const QSizeF& QQuickWebPage::contentSize() const +{ + return d->contentSize; +} + +void QQuickWebPage::setContentScale(qreal scale) +{ + ASSERT(scale > 0); + d->contentScale = scale; + d->updateSize(); +} + +qreal QQuickWebPage::contentScale() const +{ + ASSERT(d->contentScale > 0); + return d->contentScale; +} + +QTransform QQuickWebPage::transformFromItem() const +{ + return transformToItem().inverted(); +} + +QTransform QQuickWebPage::transformToItem() const +{ + return QTransform(d->contentScale, 0, 0, 0, d->contentScale, 0, x(), y(), 1); +} + +void QQuickWebPagePrivate::updateSize() +{ + QSizeF scaledSize = contentSize * contentScale; + q->setSize(scaledSize); +} + void QQuickWebPagePrivate::resetPaintNode() { m_paintNode = 0; diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p.h b/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p.h index f7c35064e..f797810f6 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p.h +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p.h @@ -27,6 +27,7 @@ #include <QtQuick/QQuickItem> class QQuickWebPagePrivate; +class QtWebPageEventHandler; class QWebPreferences; namespace WebKit { @@ -39,29 +40,23 @@ public: QQuickWebPage(QQuickItem* parent = 0); virtual ~QQuickWebPage(); + void setContentSize(const QSizeF& size); + const QSizeF& contentSize() const; + void setContentScale(qreal); + qreal contentScale() const; + + QTransform transformFromItem() const; + QTransform transformToItem() const; + + bool usesTraditionalDesktopBehaviour() const; + void setUsesTraditionalDesktopBehaviour(bool enable); + + QtWebPageEventHandler* eventHandler() const; + // Internal. To be removed soon. WebKit::QtSGUpdateQueue* sceneGraphUpdateQueue() const; protected: - virtual void keyPressEvent(QKeyEvent*); - virtual void keyReleaseEvent(QKeyEvent*); - virtual void inputMethodEvent(QInputMethodEvent*); - virtual void focusInEvent(QFocusEvent*); - virtual void focusOutEvent(QFocusEvent*); - virtual void mousePressEvent(QMouseEvent*); - virtual void mouseMoveEvent(QMouseEvent*); - virtual void mouseReleaseEvent(QMouseEvent *); - virtual void mouseDoubleClickEvent(QMouseEvent*); - virtual void wheelEvent(QWheelEvent*); - virtual void hoverEnterEvent(QHoverEvent*); - virtual void hoverMoveEvent(QHoverEvent*); - virtual void hoverLeaveEvent(QHoverEvent*); - virtual void dragMoveEvent(QDragMoveEvent*); - virtual void dragEnterEvent(QDragEnterEvent*); - virtual void dragLeaveEvent(QDragLeaveEvent*); - virtual void dropEvent(QDropEvent*); - virtual void touchEvent(QTouchEvent*); - virtual bool event(QEvent*); virtual void geometryChanged(const QRectF&, const QRectF&); virtual QSGNode* updatePaintNode(QSGNode*, UpdatePaintNodeData*); diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h b/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h index 7224f3975..3b58eb510 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebpage_p_p.h @@ -23,6 +23,7 @@ #include "QtSGUpdateQueue.h" #include "qquickwebpage_p.h" +#include <QTransform> namespace WebKit { class WebPageProxy; @@ -39,6 +40,8 @@ public: void initialize(WebKit::WebPageProxy*); void setDrawingAreaSize(const QSize&); + void updateSize(); + void paintToCurrentGLContext(); void resetPaintNode(); @@ -48,6 +51,10 @@ public: WebKit::QtSGUpdateQueue sgUpdateQueue; bool paintingIsInitialized; QSGNode* m_paintNode; + + QSizeF contentSize; + qreal contentScale; + bool useTraditionalDesktopBehaviour; }; #endif // qquickwebpage_p_p_h diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp index 264cbb044..187b9b4ca 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp @@ -113,8 +113,6 @@ void QQuickWebViewPrivate::enableMouseEvents() Q_Q(QQuickWebView); q->setAcceptedMouseButtons(Qt::MouseButtonMask); q->setAcceptHoverEvents(true); - pageView->setAcceptedMouseButtons(Qt::MouseButtonMask); - pageView->setAcceptHoverEvents(true); } void QQuickWebViewPrivate::disableMouseEvents() @@ -122,8 +120,6 @@ void QQuickWebViewPrivate::disableMouseEvents() Q_Q(QQuickWebView); q->setAcceptedMouseButtons(Qt::NoButton); q->setAcceptHoverEvents(false); - pageView->setAcceptedMouseButtons(Qt::NoButton); - pageView->setAcceptHoverEvents(false); } void QQuickWebViewPrivate::initializeDesktop(QQuickWebView* viewport) @@ -154,7 +150,7 @@ void QQuickWebViewPrivate::loadDidCommit() // Due to entering provisional load before committing, we // might actually be suspended here. - if (useTraditionalDesktopBehaviour) + if (pageView->usesTraditionalDesktopBehaviour()) return; isTransitioningToNewPage = true; @@ -162,7 +158,7 @@ void QQuickWebViewPrivate::loadDidCommit() void QQuickWebViewPrivate::didFinishFirstNonEmptyLayout() { - if (useTraditionalDesktopBehaviour) + if (pageView->usesTraditionalDesktopBehaviour()) return; if (!pageIsSuspended) { @@ -200,7 +196,7 @@ void QQuickWebViewPrivate::_q_resume() void QQuickWebViewPrivate::didChangeContentsSize(const QSize& newSize) { Q_Q(QQuickWebView); - if (useTraditionalDesktopBehaviour) + if (pageView->usesTraditionalDesktopBehaviour()) return; // FIXME: We probably want to handle suspend here as well @@ -209,15 +205,13 @@ void QQuickWebViewPrivate::didChangeContentsSize(const QSize& newSize) return; } - pageView->setWidth(newSize.width()); - pageView->setHeight(newSize.height()); - + pageView->setContentSize(newSize); q->m_experimental->viewportInfo()->didUpdateContentsSize(); } void QQuickWebViewPrivate::didChangeViewportProperties(const WebCore::ViewportArguments& args) { - if (useTraditionalDesktopBehaviour) + if (pageView->usesTraditionalDesktopBehaviour()) return; viewportArguments = args; @@ -235,7 +229,7 @@ void QQuickWebViewPrivate::didChangeBackForwardList() void QQuickWebViewPrivate::pageDidRequestScroll(const QPoint& pos) { - if (useTraditionalDesktopBehaviour) + if (pageView->usesTraditionalDesktopBehaviour()) return; if (isTransitioningToNewPage) { @@ -287,10 +281,10 @@ void QQuickWebViewPrivate::updateVisibleContentRectAndScale() return; Q_Q(QQuickWebView); - const QRectF visibleRectInPageViewCoordinates = q->mapRectToItem(pageView.data(), q->boundingRect()).intersected(pageView->boundingRect()); - float scale = pageView->scale(); + const QRectF visibleRectInCSSCoordinates = q->mapRectToWebContent(q->boundingRect()).intersected(pageView->boundingRect()); + float scale = pageView->contentScale(); - QRect alignedVisibleContentRect = visibleRectInPageViewCoordinates.toAlignedRect(); + QRect alignedVisibleContentRect = visibleRectInCSSCoordinates.toAlignedRect(); drawingArea->setVisibleContentsRectAndScale(alignedVisibleContentRect, scale); // FIXME: Once we support suspend and resume, this should be delayed until the page is active if the page is suspended. @@ -345,8 +339,7 @@ void QQuickWebViewPrivate::PostTransitionState::apply() p->interactionEngine->pagePositionRequest(position); if (contentsSize.isValid()) { - p->pageView->setWidth(contentsSize.width()); - p->pageView->setHeight(contentsSize.height()); + p->pageView->setContentSize(contentsSize); p->q_ptr->experimental()->viewportInfo()->didUpdateContentsSize(); } @@ -502,9 +495,8 @@ void QQuickWebViewPrivate::setUseTraditionalDesktopBehaviour(bool enable) // Do not guard, testing for the same value, as we call this from the constructor. webPageProxy->setUseFixedLayout(!enable); - - useTraditionalDesktopBehaviour = enable; - if (useTraditionalDesktopBehaviour) + pageView->setUsesTraditionalDesktopBehaviour(enable); + if (enable) initializeDesktop(q); else initializeTouch(q); @@ -609,7 +601,7 @@ void QQuickWebViewExperimental::setUseTraditionalDesktopBehaviour(bool enable) { Q_D(QQuickWebView); - if (enable == d->useTraditionalDesktopBehaviour) + if (enable == d->pageView->usesTraditionalDesktopBehaviour()) return; d->setUseTraditionalDesktopBehaviour(enable); @@ -697,7 +689,7 @@ void QQuickWebViewExperimental::setItemSelector(QDeclarativeComponent* itemSelec bool QQuickWebViewExperimental::useTraditionalDesktopBehaviour() const { Q_D(const QQuickWebView); - return d->useTraditionalDesktopBehaviour; + return d->pageView->usesTraditionalDesktopBehaviour(); } QQuickUrlSchemeDelegate* QQuickWebViewExperimental::schemeDelegates_At(QDeclarativeListProperty<QQuickUrlSchemeDelegate>* property, int index) @@ -895,6 +887,30 @@ bool QQuickWebView::canReload() const return d->webPageProxy->backForwardList()->currentItem(); } +QPointF QQuickWebView::mapToWebContent(const QPointF& pointInViewCoordinates) const +{ + Q_D(const QQuickWebView); + return d->pageView->transformFromItem().map(pointInViewCoordinates); +} + +QRectF QQuickWebView::mapRectToWebContent(const QRectF& rectInViewCoordinates) const +{ + Q_D(const QQuickWebView); + return d->pageView->transformFromItem().mapRect(rectInViewCoordinates); +} + +QPointF QQuickWebView::mapFromWebContent(const QPointF& pointInCSSCoordinates) const +{ + Q_D(const QQuickWebView); + return d->pageView->transformToItem().map(pointInCSSCoordinates); +} + +QRectF QQuickWebView::mapRectFromWebContent(const QRectF& rectInCSSCoordinates) const +{ + Q_D(const QQuickWebView); + return d->pageView->transformToItem().mapRect(rectInCSSCoordinates); +} + QString QQuickWebView::title() const { Q_D(const QQuickWebView); @@ -948,7 +964,7 @@ void QQuickWebView::geometryChanged(const QRectF& newGeometry, const QRectF& old Q_D(QQuickWebView); QQuickItem::geometryChanged(newGeometry, oldGeometry); if (newGeometry.size() != oldGeometry.size()) { - if (d->useTraditionalDesktopBehaviour) { + if (d->pageView->usesTraditionalDesktopBehaviour()) { d->pageView->setWidth(newGeometry.width()); d->pageView->setHeight(newGeometry.height()); } else @@ -956,16 +972,130 @@ void QQuickWebView::geometryChanged(const QRectF& newGeometry, const QRectF& old } } +void QQuickWebView::keyPressEvent(QKeyEvent* event) +{ + this->event(event); +} + +void QQuickWebView::keyReleaseEvent(QKeyEvent* event) +{ + this->event(event); +} + +void QQuickWebView::inputMethodEvent(QInputMethodEvent* event) +{ + this->event(event); +} + void QQuickWebView::focusInEvent(QFocusEvent* event) { - Q_D(QQuickWebView); - d->pageView->event(event); + this->event(event); } void QQuickWebView::focusOutEvent(QFocusEvent* event) { + this->event(event); +} + +void QQuickWebView::touchEvent(QTouchEvent* event) +{ + forceActiveFocus(); + this->event(event); +} + +void QQuickWebView::mousePressEvent(QMouseEvent* event) +{ + forceActiveFocus(); + this->event(event); +} + +void QQuickWebView::mouseMoveEvent(QMouseEvent* event) +{ + this->event(event); +} + +void QQuickWebView::mouseReleaseEvent(QMouseEvent* event) +{ + this->event(event); +} + +void QQuickWebView::mouseDoubleClickEvent(QMouseEvent* event) +{ + this->event(event); +} + +void QQuickWebView::wheelEvent(QWheelEvent* event) +{ + this->event(event); +} + +void QQuickWebView::hoverEnterEvent(QHoverEvent* event) +{ + this->event(event); +} + +void QQuickWebView::hoverMoveEvent(QHoverEvent* event) +{ + this->event(event); +} + +void QQuickWebView::hoverLeaveEvent(QHoverEvent* event) +{ + this->event(event); +} + +void QQuickWebView::dragMoveEvent(QDragMoveEvent* event) +{ + this->event(event); +} + +void QQuickWebView::dragEnterEvent(QDragEnterEvent* event) +{ + this->event(event); +} + +void QQuickWebView::dragLeaveEvent(QDragLeaveEvent* event) +{ + this->event(event); +} + +void QQuickWebView::dropEvent(QDropEvent* event) +{ + this->event(event); +} + +bool QQuickWebView::event(QEvent* ev) +{ Q_D(QQuickWebView); - d->pageView->event(event); + + switch (ev->type()) { + case QEvent::MouseMove: + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseButtonDblClick: + case QEvent::Wheel: + case QEvent::HoverLeave: + case QEvent::HoverEnter: + case QEvent::HoverMove: + case QEvent::DragEnter: + case QEvent::DragLeave: + case QEvent::DragMove: + case QEvent::Drop: + case QEvent::KeyPress: + case QEvent::KeyRelease: + case QEvent::FocusIn: + case QEvent::FocusOut: + case QEvent::TouchBegin: + case QEvent::TouchEnd: + case QEvent::TouchUpdate: + if (d->pageView->eventHandler()->handleEvent(ev)) + return true; + } + + if (ev->type() == QEvent::InputMethod) + return false; // This is necessary to avoid an endless loop in connection with QQuickItem::event(). + + return QQuickItem::event(ev); } WKPageRef QQuickWebView::pageRef() const diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h index e5d3f1e5a..0fa0791cf 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p.h @@ -100,6 +100,11 @@ public: virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const; + QPointF mapToWebContent(const QPointF&) const; + QRectF mapRectToWebContent(const QRectF&) const; + QPointF mapFromWebContent(const QPointF&) const; + QRectF mapRectFromWebContent(const QRectF&) const; + QQuickWebPage* page(); QQuickWebViewExperimental* experimental() const; @@ -130,8 +135,26 @@ Q_SIGNALS: protected: virtual void geometryChanged(const QRectF&, const QRectF&); + + virtual void keyPressEvent(QKeyEvent*); + virtual void keyReleaseEvent(QKeyEvent*); + virtual void inputMethodEvent(QInputMethodEvent*); virtual void focusInEvent(QFocusEvent*); virtual void focusOutEvent(QFocusEvent*); + virtual void touchEvent(QTouchEvent*); + virtual void mousePressEvent(QMouseEvent*); + virtual void mouseMoveEvent(QMouseEvent*); + virtual void mouseReleaseEvent(QMouseEvent *); + virtual void mouseDoubleClickEvent(QMouseEvent*); + virtual void wheelEvent(QWheelEvent*); + virtual void hoverEnterEvent(QHoverEvent*); + virtual void hoverMoveEvent(QHoverEvent*); + virtual void hoverLeaveEvent(QHoverEvent*); + virtual void dragMoveEvent(QDragMoveEvent*); + virtual void dragEnterEvent(QDragEnterEvent*); + virtual void dragLeaveEvent(QDragLeaveEvent*); + virtual void dropEvent(QDropEvent*); + virtual bool event(QEvent*); private: Q_DECLARE_PRIVATE(QQuickWebView) diff --git a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h index 3b999282b..4be71707c 100644 --- a/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h +++ b/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h @@ -159,8 +159,6 @@ private: bool isTransitioningToNewPage; bool pageIsSuspended; - - bool useTraditionalDesktopBehaviour; bool m_navigatorQtObjectEnabled; QUrl m_iconURL; }; diff --git a/Source/WebKit2/UIProcess/API/qt/qwebviewportinfo.cpp b/Source/WebKit2/UIProcess/API/qt/qwebviewportinfo.cpp index 8b6fb418b..735196f86 100644 --- a/Source/WebKit2/UIProcess/API/qt/qwebviewportinfo.cpp +++ b/Source/WebKit2/UIProcess/API/qt/qwebviewportinfo.cpp @@ -38,7 +38,7 @@ QWebViewportInfo::~QWebViewportInfo() QSize QWebViewportInfo::contentsSize() const { - return QSize(m_webViewPrivate->pageView->width(), m_webViewPrivate->pageView->height()); + return QSize(m_webViewPrivate->pageView->contentSize().toSize()); } QVariant QWebViewportInfo::currentScale() const diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_preferences.qml b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_preferences.qml index 0554abb2d..8bec01418 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_preferences.qml +++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_preferences.qml @@ -26,6 +26,66 @@ Item { } SignalSpy { + id: titleSpy + target: webView + signalName: "titleChanged" + } + + SignalSpy { + id: standardFontFamilySpy + target: webView.experimental.preferences + signalName: "standardFontFamilyChanged" + } + + SignalSpy { + id: fixedFontFamilySpy + target: webView.experimental.preferences + signalName: "fixedFontFamilyChanged" + } + + SignalSpy { + id: serifFontFamilySpy + target: webView.experimental.preferences + signalName: "serifFontFamilyChanged" + } + + SignalSpy { + id: sansSerifFontFamilySpy + target: webView.experimental.preferences + signalName: "sansSerifFontFamilyChanged" + } + + SignalSpy { + id: cursiveFontFamilySpy + target: webView.experimental.preferences + signalName: "cursiveFontFamilyChanged" + } + + SignalSpy { + id: fantasyFontFamilySpy + target: webView.experimental.preferences + signalName: "fantasyFontFamilyChanged" + } + + SignalSpy { + id: minimumFontSizeSpy + target: webView.experimental.preferences + signalName: "minimumFontSizeChanged" + } + + SignalSpy { + id: defaultFontSizeSpy + target: webView.experimental.preferences + signalName: "defaultFontSizeChanged" + } + + SignalSpy { + id: defaultFixedFontSizeSpy + target: webView.experimental.preferences + signalName: "defaultFixedFontSizeChanged" + } + + SignalSpy { id: otherSpy target: webView2 signalName: "loadSucceeded" @@ -34,11 +94,65 @@ Item { TestCase { name: "WebViewPreferences" + property bool shouldSetupFonts: true + property string defaultStandardFontFamily + property string defaultFixedFontFamily + property string defaultSerifFontFamily + property string defaultSansSerifFontFamily + property string defaultCursiveFontFamily + property string defaultFantasyFontFamily + property int defaultMinimumFontSize + property int defaultFontSize + property int defaultFixedFontSize + function init() { + if (shouldSetupFonts) { + // Setup initial values (may be different per platform). + shouldSetupFonts = false + defaultStandardFontFamily = webView.experimental.preferences.standardFontFamily + defaultFixedFontFamily = webView.experimental.preferences.fixedFontFamily + defaultSerifFontFamily = webView.experimental.preferences.serifFontFamily + defaultSansSerifFontFamily = webView.experimental.preferences.sansSerifFontFamily + defaultCursiveFontFamily = webView.experimental.preferences.cursiveFontFamily + defaultFantasyFontFamily = webView.experimental.preferences.fantasyFontFamily + defaultMinimumFontSize = webView.experimental.preferences.minimumFontSize + defaultFontSize = webView.experimental.preferences.defaultFontSize + defaultFixedFontSize = webView.experimental.preferences.defaultFixedFontSize + } + else { + // Restore default values before starting a new test case. + webView.experimental.preferences.standardFontFamily = defaultStandardFontFamily + webView.experimental.preferences.fixedFontFamily = defaultFixedFontFamily + webView.experimental.preferences.serifFontFamily = defaultSerifFontFamily + webView.experimental.preferences.sansSerifFontFamily = defaultSansSerifFontFamily + webView.experimental.preferences.cursiveFontFamily = defaultCursiveFontFamily + webView.experimental.preferences.fantasyFontFamily = defaultFantasyFontFamily + webView.experimental.preferences.minimumFontSize = defaultMinimumFontSize + webView.experimental.preferences.defaultFontSize = defaultFontSize + webView.experimental.preferences.defaultFixedFontSize = defaultFixedFontSize + + if (webView.url != '' && webView.url != 'about:blank') { + spy.clear() + webView.load('about:blank') + spy.wait() + } + + standardFontFamilySpy.clear() + fixedFontFamilySpy.clear() + serifFontFamilySpy.clear() + sansSerifFontFamilySpy.clear() + cursiveFontFamilySpy.clear() + fantasyFontFamilySpy.clear() + minimumFontSizeSpy.clear() + defaultFontSizeSpy.clear() + defaultFixedFontSizeSpy.clear() + } + webView.experimental.preferences.javascriptEnabled = true webView.experimental.preferences.localStorageEnabled = true webView.experimental.preferences.pluginsEnabled = true spy.clear() + titleSpy.clear() } function test_javascriptEnabled() { @@ -96,6 +210,122 @@ Item { compare(webView.title, "Original Title") compare(webView2.title, "New Title") } + + function test_standardFontFamilyChanged() { + var url = Qt.resolvedUrl("../common/font-preferences.html?standard#font-family") + webView.load(url) + titleSpy.wait() + compare(webView.title, "Original Title") + titleSpy.wait() + compare(webView.title, defaultStandardFontFamily) + + webView.experimental.preferences.standardFontFamily = "foobar" + standardFontFamilySpy.wait() + compare(standardFontFamilySpy.count, 1) + webView.load(url) + titleSpy.wait() + compare(webView.title, "Original Title") + titleSpy.wait() + compare(webView.title, "foobar") + } + + function test_fontSizeChanged() { + var url = Qt.resolvedUrl("../common/font-preferences.html?standard#font-size") + webView.load(url) + titleSpy.wait() + compare(webView.title, "Original Title") + titleSpy.wait() + compare(webView.title, defaultFontSize.toString() + "px") + + webView.experimental.preferences.defaultFontSize = defaultFontSize + 1 + defaultFontSizeSpy.wait() + compare(defaultFontSizeSpy.count, 1) + webView.load(url) + titleSpy.wait() + compare(webView.title, "Original Title") + titleSpy.wait() + compare(webView.title, (defaultFontSize + 1).toString() + "px") + } + + function test_fixedFontSizeChanged() { + var url = Qt.resolvedUrl("../common/font-preferences.html?fixed#font-size") + webView.load(url) + titleSpy.wait() + compare(webView.title, "Original Title") + titleSpy.wait() + compare(webView.title, defaultFixedFontSize.toString() + "px") + + webView.experimental.preferences.defaultFixedFontSize = defaultFixedFontSize + 1 + defaultFixedFontSizeSpy.wait() + compare(defaultFixedFontSizeSpy.count, 1) + webView.load(url) + titleSpy.wait() + compare(webView.title, "Original Title") + titleSpy.wait() + compare(webView.title, (defaultFixedFontSize + 1).toString() + "px") + + webView.load(Qt.resolvedUrl("../common/font-preferences.html?standard#font-size")) + titleSpy.wait() + compare(webView.title, "Original Title") + titleSpy.wait() + compare(webView.title, defaultFontSize.toString() + "px") + } + + function test_minimumFontSizeChanged() { + verify(defaultMinimumFontSize < defaultFontSize) + var url = Qt.resolvedUrl("../common/font-preferences.html?minimum#font-size") + webView.load(url) + titleSpy.wait() + compare(webView.title, "Original Title") + titleSpy.wait() + var smallerFontSize = webView.title + smallerFontSize = smallerFontSize.substring(0, smallerFontSize.length - 2) + smallerFontSize = parseInt(smallerFontSize) + verify(smallerFontSize < defaultFontSize) + + webView.experimental.preferences.minimumFontSize = defaultFontSize + minimumFontSizeSpy.wait() + compare(minimumFontSizeSpy.count, 1) + webView.load(url) + titleSpy.wait() + compare(webView.title, "Original Title") + titleSpy.wait() + compare(webView.title, defaultFontSize.toString() + "px") + } + + function test_defaultFontsChanged() { + // As there's currently no way to test through JS if a generic font was indeed changed + // we keep this test for really basic coverage. + + webView.experimental.preferences.standardFontFamily = "foobar0" + standardFontFamilySpy.wait() + webView.experimental.preferences.fixedFontFamily = "foobar1" + fixedFontFamilySpy.wait() + webView.experimental.preferences.serifFontFamily = "foobar2" + serifFontFamilySpy.wait() + webView.experimental.preferences.sansSerifFontFamily = "foobar3" + sansSerifFontFamilySpy.wait() + webView.experimental.preferences.cursiveFontFamily = "foobar4" + cursiveFontFamilySpy.wait() + webView.experimental.preferences.fantasyFontFamily = "foobar5" + fantasyFontFamilySpy.wait() + + compare(standardFontFamilySpy.count, 1) + compare(fixedFontFamilySpy.count, 1) + compare(serifFontFamilySpy.count, 1) + compare(sansSerifFontFamilySpy.count, 1) + compare(cursiveFontFamilySpy.count, 1) + compare(fantasyFontFamilySpy.count, 1) + + compare(webView.experimental.preferences.standardFontFamily, "foobar0") + compare(webView.experimental.preferences.fixedFontFamily, "foobar1") + compare(webView.experimental.preferences.serifFontFamily, "foobar2") + compare(webView.experimental.preferences.sansSerifFontFamily, "foobar3") + compare(webView.experimental.preferences.cursiveFontFamily, "foobar4") + compare(webView.experimental.preferences.fantasyFontFamily, "foobar5") + } + + } } } diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/font-preferences.html b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/font-preferences.html new file mode 100644 index 000000000..cbc11432d --- /dev/null +++ b/Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/font-preferences.html @@ -0,0 +1,31 @@ +<html> +<head> +<title>Original Title</title> +</head> +<script type="text/javascript"> +function getTestId() { + url = document.location.href + var i, j = 0; + for (i = url.length - 1; i >= 0; --i) { + if (url[i] == '?') + break + else if (url[i] == '#') + j = i - 1 + } + return url.substr(i + 1, j - i) +} + +function getStyleForId(id, styleProp) { + return document.defaultView.getComputedStyle(document.getElementById(id), null).getPropertyValue(styleProp); +} + +function changeTitle() { + document.title = getStyleForId(getTestId(), window.location.hash.substr(1)) +} +</script> +<body onload='setTimeout("changeTitle()", 100)'> +<p id="standard">hello</p> +<code id="fixed">hello</code> +<p id="minimum" style="font-size: smaller">hello</p> +</body> +</html> diff --git a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp index 57b7ec14a..1d14d1844 100644 --- a/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp +++ b/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview.cpp @@ -51,6 +51,8 @@ private slots: void show(); void showWebView(); void removeFromCanvas(); + void multipleWebViewWindows(); + void multipleWebViews(); private: inline QQuickWebView* webView() const; @@ -270,6 +272,52 @@ void tst_QQuickWebView::removeFromCanvas() QTest::qWait(200); } +void tst_QQuickWebView::multipleWebViewWindows() +{ + showWebView(); + + // This should not crash. + QQuickWebView* webView1 = new QQuickWebView(); + QScopedPointer<TestWindow> window1(new TestWindow(webView1)); + QQuickWebView* webView2 = new QQuickWebView(); + QScopedPointer<TestWindow> window2(new TestWindow(webView2)); + + webView1->setSize(QSizeF(300, 400)); + webView1->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/scroll.html"))); + QVERIFY(waitForSignal(webView1, SIGNAL(loadSucceeded()))); + window1->show(); + webView1->setVisible(true); + + webView2->setSize(QSizeF(300, 400)); + webView2->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html"))); + QVERIFY(waitForSignal(webView2, SIGNAL(loadSucceeded()))); + window2->show(); + webView2->setVisible(true); + QTest::qWait(200); +} + +void tst_QQuickWebView::multipleWebViews() +{ + showWebView(); + + // This should not crash. + QScopedPointer<QQuickWebView> webView1(new QQuickWebView()); + webView1->setParentItem(m_window->rootItem()); + QScopedPointer<QQuickWebView> webView2(new QQuickWebView()); + webView2->setParentItem(m_window->rootItem()); + + webView1->setSize(QSizeF(300, 400)); + webView1->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/scroll.html"))); + QVERIFY(waitForSignal(webView1.data(), SIGNAL(loadSucceeded()))); + webView1->setVisible(true); + + webView2->setSize(QSizeF(300, 400)); + webView2->load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR "/html/basic_page.html"))); + QVERIFY(waitForSignal(webView2.data(), SIGNAL(loadSucceeded()))); + webView2->setVisible(true); + QTest::qWait(200); +} + void tst_QQuickWebView::scrollRequest() { webView()->setSize(QSizeF(300, 400)); @@ -280,7 +328,7 @@ void tst_QQuickWebView::scrollRequest() // COMPARE with the position requested in the html // Use qRound as that is also used when calculating the position // in WebKit. - int y = -qRound(50 * webView()->page()->scale()); + int y = -qRound(50 * webView()->page()->contentScale()); QVERIFY(webView()->page()->pos().y() == y); } diff --git a/Source/WebKit2/UIProcess/PageClient.h b/Source/WebKit2/UIProcess/PageClient.h index 1db4eaa9b..c94ea1a13 100644 --- a/Source/WebKit2/UIProcess/PageClient.h +++ b/Source/WebKit2/UIProcess/PageClient.h @@ -52,6 +52,9 @@ class NativeWebKeyboardEvent; #if ENABLE(TOUCH_EVENTS) class NativeWebTouchEvent; #endif +#if ENABLE(GESTURE_EVENTS) +class WebGestureEvent; +#endif class WebContextMenuProxy; class WebEditCommandProxy; class WebPopupMenuProxy; @@ -106,6 +109,7 @@ public: virtual void focusEditableArea(const WebCore::IntRect&, const WebCore::IntRect&) = 0; virtual void didReceiveMessageFromNavigatorQtObject(const String&) = 0; virtual void handleDownloadRequest(DownloadProxy*) = 0; + virtual void updateTextInputState() = 0; #endif #if PLATFORM(QT) || PLATFORM(GTK) @@ -141,6 +145,9 @@ public: virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) = 0; virtual void doneWithKeyEvent(const NativeWebKeyboardEvent&, bool wasEventHandled) = 0; +#if ENABLE(GESTURE_EVENTS) + virtual void doneWithGestureEvent(const WebGestureEvent&, bool wasEventHandled) = 0; +#endif #if ENABLE(TOUCH_EVENTS) virtual void doneWithTouchEvent(const NativeWebTouchEvent&, bool wasEventHandled) = 0; #endif diff --git a/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp b/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp index 18f74a99f..b1d103fbc 100644 --- a/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp +++ b/Source/WebKit2/UIProcess/WebConnectionToWebProcess.cpp @@ -46,8 +46,6 @@ WebConnectionToWebProcess::WebConnectionToWebProcess(WebProcessProxy* process, C #elif PLATFORM(QT) m_connection->setShouldCloseConnectionOnProcessTermination(process->processIdentifier()); #endif - - m_connection->open(); } void WebConnectionToWebProcess::invalidate() diff --git a/Source/WebKit2/UIProcess/WebPageProxy.cpp b/Source/WebKit2/UIProcess/WebPageProxy.cpp index 15abf9ccc..7e08cecd8 100644 --- a/Source/WebKit2/UIProcess/WebPageProxy.cpp +++ b/Source/WebKit2/UIProcess/WebPageProxy.cpp @@ -968,6 +968,8 @@ void WebPageProxy::handleGestureEvent(const WebGestureEvent& event) if (!isValid()) return; + m_gestureEventQueue.append(event); + process()->responsivenessTimer()->start(); process()->send(Messages::EventDispatcher::GestureEvent(m_pageID, event), 0); } @@ -2427,6 +2429,8 @@ void WebPageProxy::editorStateChanged(const EditorState& editorState) #if PLATFORM(MAC) m_pageClient->updateTextInputState(couldChangeSecureInputState); +#elif PLATFORM(QT) + m_pageClient->updateTextInputState(); #endif } @@ -2908,12 +2912,19 @@ void WebPageProxy::didReceiveEvent(uint32_t opaqueType, bool handled) } break; case WebEvent::MouseDown: + break; #if ENABLE(GESTURE_EVENTS) case WebEvent::GestureScrollBegin: case WebEvent::GestureScrollEnd: - case WebEvent::GestureSingleTap: -#endif + case WebEvent::GestureSingleTap: { + WebGestureEvent event = m_gestureEventQueue.first(); + MESSAGE_CHECK(type == event.type()); + + m_gestureEventQueue.removeFirst(); + m_pageClient->doneWithGestureEvent(event, handled); break; + } +#endif case WebEvent::MouseUp: m_currentlyProcessedMouseDownEvent = nullptr; break; diff --git a/Source/WebKit2/UIProcess/WebPageProxy.h b/Source/WebKit2/UIProcess/WebPageProxy.h index 42a18f3e1..cf5130419 100644 --- a/Source/WebKit2/UIProcess/WebPageProxy.h +++ b/Source/WebKit2/UIProcess/WebPageProxy.h @@ -952,6 +952,9 @@ private: WebCore::PolicyAction m_syncNavigationActionPolicyAction; uint64_t m_syncNavigationActionPolicyDownloadID; +#if ENABLE(GESTURE_EVENTS) + Deque<WebGestureEvent> m_gestureEventQueue; +#endif Deque<NativeWebKeyboardEvent> m_keyEventQueue; Deque<NativeWebWheelEvent> m_wheelEventQueue; Vector<NativeWebWheelEvent> m_currentlyProcessedWheelEvents; diff --git a/Source/WebKit2/UIProcess/WebProcessProxy.cpp b/Source/WebKit2/UIProcess/WebProcessProxy.cpp index 0c11caa5b..8c99b4efa 100644 --- a/Source/WebKit2/UIProcess/WebProcessProxy.cpp +++ b/Source/WebKit2/UIProcess/WebProcessProxy.cpp @@ -117,6 +117,7 @@ void WebProcessProxy::connect() void WebProcessProxy::disconnect() { if (m_connection) { + m_connection->connection()->removeQueueClient(this); m_connection->invalidate(); m_connection = nullptr; } @@ -349,6 +350,12 @@ void WebProcessProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, Cor pageProxy->didReceiveSyncMessage(connection, messageID, arguments, reply); } +void WebProcessProxy::didReceiveMessageOnConnectionWorkQueue(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage) +{ + if (messageID.is<CoreIPC::MessageClassWebProcessProxy>()) + didReceiveWebProcessProxyMessageOnConnectionWorkQueue(connection, messageID, arguments, didHandleMessage); +} + void WebProcessProxy::didClose(CoreIPC::Connection*) { // Protect ourselves, as the call to disconnect() below may otherwise cause us @@ -409,7 +416,9 @@ void WebProcessProxy::didFinishLaunching(CoreIPC::Connection::Identifier connect ASSERT(!m_connection); m_connection = WebConnectionToWebProcess::create(this, connectionIdentifier, RunLoop::main()); - + m_connection->connection()->addQueueClient(this); + m_connection->connection()->open(); + for (size_t i = 0; i < m_pendingMessages.size(); ++i) { CoreIPC::Connection::OutgoingMessage& outgoingMessage = m_pendingMessages[i].first; unsigned messageSendFlags = m_pendingMessages[i].second; diff --git a/Source/WebKit2/UIProcess/WebProcessProxy.h b/Source/WebKit2/UIProcess/WebProcessProxy.h index 129e0ea1b..11cfa5b27 100644 --- a/Source/WebKit2/UIProcess/WebProcessProxy.h +++ b/Source/WebKit2/UIProcess/WebProcessProxy.h @@ -57,7 +57,7 @@ class WebContext; class WebPageGroup; struct WebNavigationDataStore; -class WebProcessProxy : public RefCounted<WebProcessProxy>, CoreIPC::Connection::Client, ResponsivenessTimer::Client, ProcessLauncher::Client, ThreadLauncher::Client { +class WebProcessProxy : public RefCounted<WebProcessProxy>, CoreIPC::Connection::Client, ResponsivenessTimer::Client, ProcessLauncher::Client, ThreadLauncher::Client, CoreIPC::Connection::QueueClient { public: typedef HashMap<uint64_t, RefPtr<WebFrameProxy> > WebFrameProxyMap; typedef HashMap<uint64_t, RefPtr<WebBackForwardListItem> > WebBackForwardListItemMap; @@ -139,13 +139,8 @@ private: void pluginSyncMessageSendTimedOut(const String& pluginPath); #endif #if PLATFORM(MAC) - void secItemCopyMatching(const SecItemRequestData&, SecItemResponseData&); - void secItemAdd(const SecItemRequestData&, SecItemResponseData&); - void secItemUpdate(const SecItemRequestData&, SecItemResponseData&); - void secItemDelete(const SecItemRequestData&, SecItemResponseData&); - void secKeychainItemCopyContent(const SecKeychainItemRequestData&, SecKeychainItemResponseData&); - void secKeychainItemCreateFromContent(const SecKeychainItemRequestData&, SecKeychainItemResponseData&); - void secKeychainItemModifyContent(const SecKeychainItemRequestData&, SecKeychainItemResponseData&); + void secItemRequest(CoreIPC::Connection*, uint64_t requestID, const SecItemRequestData&); + void secKeychainItemRequest(CoreIPC::Connection*, uint64_t requestID, const SecKeychainItemRequestData&); #endif // CoreIPC::Connection::Client @@ -159,6 +154,9 @@ private: virtual Vector<HWND> windowsToReceiveSentMessagesWhileWaitingForSyncReply(); #endif + // CoreIPC::Connection::QueueClient + virtual void didReceiveMessageOnConnectionWorkQueue(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, bool& didHandleMessage); + // ResponsivenessTimer::Client void didBecomeUnresponsive(ResponsivenessTimer*); void didBecomeResponsive(ResponsivenessTimer*); @@ -174,6 +172,7 @@ private: // Implemented in generated WebProcessProxyMessageReceiver.cpp void didReceiveWebProcessProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); void didReceiveSyncWebProcessProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder* arguments, OwnPtr<CoreIPC::ArgumentEncoder>& reply); + void didReceiveWebProcessProxyMessageOnConnectionWorkQueue(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage); ResponsivenessTimer m_responsivenessTimer; diff --git a/Source/WebKit2/UIProcess/WebProcessProxy.messages.in b/Source/WebKit2/UIProcess/WebProcessProxy.messages.in index 8943ffc70..93961da44 100644 --- a/Source/WebKit2/UIProcess/WebProcessProxy.messages.in +++ b/Source/WebKit2/UIProcess/WebProcessProxy.messages.in @@ -33,14 +33,8 @@ messages -> WebProcessProxy { #endif #if PLATFORM(MAC) - SecItemCopyMatching(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result) - SecItemAdd(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result) - SecItemUpdate(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result) - SecItemDelete(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result) - - SecKeychainItemCopyContent(WebKit::SecKeychainItemRequestData query) -> (WebKit::SecKeychainItemResponseData result) - SecKeychainItemCreateFromContent(WebKit::SecKeychainItemRequestData query) -> (WebKit::SecKeychainItemResponseData result) - SecKeychainItemModifyContent(WebKit::SecKeychainItemRequestData query) -> (WebKit::SecKeychainItemResponseData result) + SecItemRequest(uint64_t requestID, WebKit::SecItemRequestData request) DispatchOnConnectionQueue + SecKeychainItemRequest(uint64_t requestID, WebKit::SecKeychainItemRequestData request) DispatchOnConnectionQueue #endif } diff --git a/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm b/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm index 467155e92..37e8caae0 100644 --- a/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm +++ b/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm @@ -30,82 +30,105 @@ #import "SecItemResponseData.h" #import "SecKeychainItemRequestData.h" #import "SecKeychainItemResponseData.h" +#import "WebProcessMessages.h" #import "WKFullKeyboardAccessWatcher.h" #import <Security/SecItem.h> namespace WebKit { -void WebProcessProxy::secItemCopyMatching(const SecItemRequestData& queryData, SecItemResponseData& result) +static void handleSecItemRequest(CoreIPC::Connection* connection, uint64_t requestID, const SecItemRequestData& request) { - CFDictionaryRef query = queryData.query(); - CFTypeRef resultObjectRef; - OSStatus resultCode = SecItemCopyMatching(query, &resultObjectRef); - - RetainPtr<CFTypeRef> resultObject(AdoptCF, resultObjectRef); - result = SecItemResponseData(resultCode, resultObject.get()); -} - -void WebProcessProxy::secItemAdd(const SecItemRequestData& queryData, SecItemResponseData& result) -{ - CFDictionaryRef query = queryData.query(); - CFTypeRef resultObjectRef; - OSStatus resultCode = SecItemAdd(query, &resultObjectRef); - - RetainPtr<CFTypeRef> resultObject(AdoptCF, resultObjectRef); - result = SecItemResponseData(resultCode, resultObject.get()); -} - -void WebProcessProxy::secItemUpdate(const SecItemRequestData& queryData, SecItemResponseData& result) -{ - CFDictionaryRef query = queryData.query(); - CFDictionaryRef attributesToMatch = queryData.attributesToMatch(); - OSStatus resultCode; - - resultCode = SecItemUpdate(query, attributesToMatch); - - result = SecItemResponseData(resultCode, 0); -} - -void WebProcessProxy::secItemDelete(const SecItemRequestData& queryData, SecItemResponseData& result) -{ - CFDictionaryRef query = queryData.query(); - OSStatus resultCode; - - resultCode = SecItemDelete(query); - - result = SecItemResponseData(resultCode, 0); + SecItemResponseData response; + + switch (request.type()) { + case SecItemRequestData::CopyMatching: { + CFTypeRef resultObject = 0; + OSStatus resultCode = SecItemCopyMatching(request.query(), &resultObject); + response = SecItemResponseData(resultCode, adoptCF(resultObject).get()); + break; + } + + case SecItemRequestData::Add: { + CFTypeRef resultObject = 0; + OSStatus resultCode = SecItemAdd(request.query(), &resultObject); + response = SecItemResponseData(resultCode, adoptCF(resultObject).get()); + break; + } + + case SecItemRequestData::Update: { + OSStatus resultCode = SecItemUpdate(request.query(), request.attributesToMatch()); + response = SecItemResponseData(resultCode, 0); + break; + } + + case SecItemRequestData::Delete: { + OSStatus resultCode = SecItemDelete(request.query()); + response = SecItemResponseData(resultCode, 0); + break; + } + + default: + return; + } + + connection->send(Messages::WebProcess::SecItemResponse(requestID, response), 0); } -void WebProcessProxy::secKeychainItemCopyContent(const SecKeychainItemRequestData& request, SecKeychainItemResponseData& response) +void WebProcessProxy::secItemRequest(CoreIPC::Connection* connection, uint64_t requestID, const SecItemRequestData& request) { - SecKeychainItemRef item = request.keychainItem(); - SecItemClass itemClass; - SecKeychainAttributeList* attrList = request.attributeList(); - UInt32 length = 0; - void* outData = 0; - - OSStatus resultCode = SecKeychainItemCopyContent(item, &itemClass, attrList, &length, &outData); - - RetainPtr<CFDataRef> data(AdoptCF, CFDataCreate(0, static_cast<const UInt8*>(outData), length)); - response = SecKeychainItemResponseData(resultCode, itemClass, attrList, data.get()); - - SecKeychainItemFreeContent(attrList, outData); + // Since we don't want the connection work queue to be held up, we do all + // keychain interaction work on a global dispatch queue. + dispatch_queue_t keychainWorkQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + dispatch_async(keychainWorkQueue, bind(handleSecItemRequest, RefPtr<CoreIPC::Connection>(connection), requestID, request)); } -void WebProcessProxy::secKeychainItemCreateFromContent(const SecKeychainItemRequestData& request, SecKeychainItemResponseData& response) +static void handleSecKeychainItemRequest(CoreIPC::Connection* connection, uint64_t requestID, const SecKeychainItemRequestData& request) { - SecKeychainItemRef keychainItem; - - OSStatus resultCode = SecKeychainItemCreateFromContent(request.itemClass(), request.attributeList(), request.length(), request.data(), 0, 0, &keychainItem); - - response = SecKeychainItemResponseData(resultCode, RetainPtr<SecKeychainItemRef>(AdoptCF, keychainItem)); + SecKeychainItemResponseData response; + + switch (request.type()) { + case SecKeychainItemRequestData::CopyContent: { + SecKeychainItemRef item = request.keychainItem(); + SecItemClass itemClass; + SecKeychainAttributeList* attrList = request.attributeList(); + UInt32 length = 0; + void* outData = 0; + + OSStatus resultCode = SecKeychainItemCopyContent(item, &itemClass, attrList, &length, &outData); + RetainPtr<CFDataRef> data(AdoptCF, CFDataCreate(0, static_cast<const UInt8*>(outData), length)); + response = SecKeychainItemResponseData(resultCode, itemClass, attrList, data.get()); + + SecKeychainItemFreeContent(attrList, outData); + break; + } + + case SecKeychainItemRequestData::CreateFromContent: { + SecKeychainItemRef keychainItem; + + OSStatus resultCode = SecKeychainItemCreateFromContent(request.itemClass(), request.attributeList(), request.length(), request.data(), 0, 0, &keychainItem); + response = SecKeychainItemResponseData(resultCode, adoptCF(keychainItem)); + break; + } + + case SecKeychainItemRequestData::ModifyContent: { + OSStatus resultCode = SecKeychainItemModifyContent(request.keychainItem(), request.attributeList(), request.length(), request.data()); + response = resultCode; + break; + } + + default: + return; + } + + connection->send(Messages::WebProcess::SecKeychainItemResponse(requestID, response), 0); } -void WebProcessProxy::secKeychainItemModifyContent(const SecKeychainItemRequestData& request, SecKeychainItemResponseData& response) +void WebProcessProxy::secKeychainItemRequest(CoreIPC::Connection* connection, uint64_t requestID, const SecKeychainItemRequestData& request) { - OSStatus resultCode = SecKeychainItemModifyContent(request.keychainItem(), request.attributeList(), request.length(), request.data()); - - response = resultCode; + // Since we don't want the connection work queue to be held up, we do all + // keychain interaction work on a global dispatch queue. + dispatch_queue_t keychainWorkQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + dispatch_async(keychainWorkQueue, bind(handleSecKeychainItemRequest, RefPtr<CoreIPC::Connection>(connection), requestID, request)); } bool WebProcessProxy::fullKeyboardAccessEnabled() diff --git a/Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp b/Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp index a1dd272a7..60736b1df 100644 --- a/Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp +++ b/Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp @@ -460,7 +460,8 @@ void LayerTreeHostProxy::ensureRootLayer() // The root layer should not have zero size, or it would be optimized out. m_rootLayer->setSize(FloatSize(1.0, 1.0)); - m_textureMapper = TextureMapperGL::create(); + if (!m_textureMapper) + m_textureMapper = TextureMapperGL::create(); toTextureMapperNode(m_rootLayer.get())->setTextureMapper(m_textureMapper.get()); } @@ -623,7 +624,9 @@ void LayerTreeHostProxy::purgeGLResources() { TextureMapperNode* node = toTextureMapperNode(rootLayer()); - node->purgeNodeTexturesRecursive(); + if (node) + node->purgeNodeTexturesRecursive(); + m_directlyCompositedImages.clear(); m_textureMapper.clear(); diff --git a/Source/WebKit2/UIProcess/qt/QtPageClient.cpp b/Source/WebKit2/UIProcess/qt/QtPageClient.cpp index b173776d8..cc96876be 100644 --- a/Source/WebKit2/UIProcess/qt/QtPageClient.cpp +++ b/Source/WebKit2/UIProcess/qt/QtPageClient.cpp @@ -195,6 +195,20 @@ void QtPageClient::didReceiveMessageFromNavigatorQtObject(const String& message) QQuickWebViewPrivate::get(m_webView)->didReceiveMessageFromNavigatorQtObject(message); } +void QtPageClient::updateTextInputState() +{ + ASSERT(m_eventHandler); + m_eventHandler->updateTextInputState(); +} + +#if ENABLE(GESTURE_EVENTS) +void QtPageClient::doneWithGestureEvent(const WebGestureEvent& event, bool wasEventHandled) +{ + ASSERT(m_eventHandler); + m_eventHandler->doneWithGestureEvent(event, wasEventHandled); +} +#endif + #if ENABLE(TOUCH_EVENTS) void QtPageClient::doneWithTouchEvent(const NativeWebTouchEvent& event, bool wasEventHandled) { diff --git a/Source/WebKit2/UIProcess/qt/QtPageClient.h b/Source/WebKit2/UIProcess/qt/QtPageClient.h index a3149b631..7715026f8 100644 --- a/Source/WebKit2/UIProcess/qt/QtPageClient.h +++ b/Source/WebKit2/UIProcess/qt/QtPageClient.h @@ -93,10 +93,9 @@ public: virtual void countStringMatchesInCustomRepresentation(const String&, WebKit::FindOptions, unsigned maxMatchCount) { } virtual void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&); virtual void focusEditableArea(const WebCore::IntRect&, const WebCore::IntRect&); - -#if ENABLE(TOUCH_EVENTS) + virtual void updateTextInputState(); + virtual void doneWithGestureEvent(const WebGestureEvent&, bool wasEventHandled); virtual void doneWithTouchEvent(const NativeWebTouchEvent&, bool wasEventHandled); -#endif private: QQuickWebView* m_webView; diff --git a/Source/WebKit2/UIProcess/qt/QtPinchGestureRecognizer.cpp b/Source/WebKit2/UIProcess/qt/QtPinchGestureRecognizer.cpp index 9167792c4..7699ad366 100644 --- a/Source/WebKit2/UIProcess/qt/QtPinchGestureRecognizer.cpp +++ b/Source/WebKit2/UIProcess/qt/QtPinchGestureRecognizer.cpp @@ -112,8 +112,8 @@ bool QtPinchGestureRecognizer::recognize(const QTouchEvent* event) const qreal currentSpanDistance = QLineF(point1.screenPos(), point2.screenPos()).length(); const qreal initialSpanDistance = QLineF(m_point1.initialScreenPosition, m_point2.initialScreenPosition).length(); const qreal totalScaleFactor = currentSpanDistance / initialSpanDistance; - const QPointF touchCenterInPageViewCoordinates = computePinchCenter(point1, point2); - interactionEngine()->pinchGestureRequestUpdate(touchCenterInPageViewCoordinates, totalScaleFactor); + const QPointF touchCenterInViewCoordinates = computePinchCenter(point1, point2); + interactionEngine()->pinchGestureRequestUpdate(touchCenterInViewCoordinates, totalScaleFactor); return true; break; } diff --git a/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp b/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp index 788349ae0..d12eb0bbd 100644 --- a/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp +++ b/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.cpp @@ -23,10 +23,13 @@ #include "QtViewportInteractionEngine.h" #include "PassOwnPtr.h" +#include "qquickwebpage_p.h" +#include "qquickwebview_p.h" #include <QPointF> #include <QScrollEvent> #include <QScrollPrepareEvent> #include <QScrollerProperties> +#include <QTransform> #include <QWheelEvent> #include <QtQuick/qquickitem.h> @@ -111,7 +114,7 @@ inline QRectF QtViewportInteractionEngine::itemRectFromCSS(const QRectF& cssRect return itemRect; } -QtViewportInteractionEngine::QtViewportInteractionEngine(const QQuickItem* viewport, QQuickItem* content) +QtViewportInteractionEngine::QtViewportInteractionEngine(const QQuickWebView* viewport, QQuickWebPage* content) : m_viewport(viewport) , m_content(content) , m_suspendCount(0) @@ -174,7 +177,7 @@ void QtViewportInteractionEngine::setItemRectVisible(const QRectF& itemRect) qreal itemScale = m_viewport->width() / itemRect.width(); - m_content->setScale(itemScale); + m_content->setContentScale(itemScale); // We need to animate the content but the position represents the viewport hence we need to invert the position here. // To animate the position together with the scale we multiply the position with the current scale; @@ -183,7 +186,7 @@ void QtViewportInteractionEngine::setItemRectVisible(const QRectF& itemRect) bool QtViewportInteractionEngine::animateItemRectVisible(const QRectF& itemRect) { - QRectF currentItemRectVisible = m_content->mapRectFromItem(m_viewport, m_viewport->boundingRect()); + QRectF currentItemRectVisible = m_viewport->mapRectToWebContent(m_viewport->boundingRect()); if (itemRect == currentItemRectVisible) return false; @@ -238,7 +241,7 @@ bool QtViewportInteractionEngine::event(QEvent* event) QScrollPrepareEvent* prepareEvent = static_cast<QScrollPrepareEvent*>(event); const QRectF viewportRect = m_viewport->boundingRect(); const QRectF contentRect = m_viewport->mapRectFromItem(m_content, m_content->boundingRect()); - const QRectF posRange = computePosRangeForItemAtScale(m_content->scale()); + const QRectF posRange = computePosRangeForItemAtScale(m_content->contentScale()); prepareEvent->setContentPosRange(posRange); prepareEvent->setViewportSize(viewportRect.size()); @@ -251,11 +254,11 @@ bool QtViewportInteractionEngine::event(QEvent* event) QScrollEvent* scrollEvent = static_cast<QScrollEvent*>(event); QPointF newPos = -scrollEvent->contentPos() - scrollEvent->overshootDistance(); if (m_content->pos() != newPos) { - QPointF currentPosInContentCoordinates = m_content->mapToItem(m_content->parentItem(), m_content->pos()); - QPointF newPosInContentCoordinates = m_content->mapToItem(m_content->parentItem(), newPos); + QPointF currentPosInCSSCoordinates = m_viewport->mapToWebContent(m_content->pos()); + QPointF newPosInCSSCoordinates = m_viewport->mapToWebContent(newPos); // This must be emitted before viewportUpdateRequested so that the web process knows where to look for tiles. - emit viewportTrajectoryVectorChanged(currentPosInContentCoordinates- newPosInContentCoordinates); + emit viewportTrajectoryVectorChanged(currentPosInCSSCoordinates - newPosInCSSCoordinates); m_content->setPos(newPos); } return true; @@ -297,7 +300,7 @@ void QtViewportInteractionEngine::wheelEvent(QWheelEvent* ev) else newPos.ry() += delta; - QRectF endPosRange = computePosRangeForItemAtScale(m_content->scale()); + QRectF endPosRange = computePosRangeForItemAtScale(m_content->contentScale()); m_content->setPos(-boundPosition(endPosRange.topLeft(), newPos, endPosRange.bottomRight())); } @@ -307,7 +310,7 @@ void QtViewportInteractionEngine::pagePositionRequest(const QPoint& pagePosition if (m_suspendCount) return; - qreal endItemScale = m_content->scale(); // Stay at same scale. + qreal endItemScale = m_content->contentScale(); // Stay at same scale. QRectF endPosRange = computePosRangeForItemAtScale(endItemScale); QPointF endPosition = boundPosition(endPosRange.topLeft(), pagePosition * endItemScale, endPosRange.bottomRight()); @@ -319,7 +322,7 @@ void QtViewportInteractionEngine::pagePositionRequest(const QPoint& pagePosition QRectF QtViewportInteractionEngine::computePosRangeForItemAtScale(qreal itemScale) const { - const QSizeF contentItemSize = m_content->boundingRect().size() * itemScale; + const QSizeF contentItemSize = m_content->contentSize() * itemScale; const QSizeF viewportItemSize = m_viewport->boundingRect().size(); const qreal horizontalRange = contentItemSize.width() - viewportItemSize.width(); @@ -406,7 +409,7 @@ bool QtViewportInteractionEngine::ensureContentWithinViewportBoundary(bool immed const QRectF viewportRect = m_viewport->boundingRect(); QPointF viewportHotspot = viewportRect.center(); - QPointF endPosition = m_content->mapFromItem(m_viewport, viewportHotspot) * endItemScale - viewportHotspot; + QPointF endPosition = m_viewport->mapToWebContent(viewportHotspot) * endItemScale - viewportHotspot; QRectF endPosRange = computePosRangeForItemAtScale(endItemScale); endPosition = boundPosition(endPosRange.topLeft(), endPosition, endPosRange.bottomRight()); @@ -441,7 +444,7 @@ void QtViewportInteractionEngine::applyConstraints(const Constraints& constraint if (!m_hadUserInteraction) { qreal initialScale = innerBoundedCSSScale(m_constraints.initialScale); - m_content->setScale(itemScaleFromCSS(initialScale)); + m_content->setContentScale(itemScaleFromCSS(initialScale)); } // If the web app changes successively changes the viewport on purpose @@ -451,7 +454,7 @@ void QtViewportInteractionEngine::applyConstraints(const Constraints& constraint qreal QtViewportInteractionEngine::currentCSSScale() { - return cssScaleFromItem(m_content->scale()); + return cssScaleFromItem(m_content->contentScale()); } bool QtViewportInteractionEngine::scrollAnimationActive() const @@ -473,15 +476,15 @@ bool QtViewportInteractionEngine::panGestureActive() const return scroller->state() == QScroller::Pressed || scroller->state() == QScroller::Dragging; } -void QtViewportInteractionEngine::panGestureStarted(const QPointF& touchPoint, qint64 eventTimestampMillis) +void QtViewportInteractionEngine::panGestureStarted(const QPointF& viewportTouchPoint, qint64 eventTimestampMillis) { m_hadUserInteraction = true; - scroller()->handleInput(QScroller::InputPress, m_viewport->mapFromItem(m_content, touchPoint), eventTimestampMillis); + scroller()->handleInput(QScroller::InputPress, viewportTouchPoint, eventTimestampMillis); } -void QtViewportInteractionEngine::panGestureRequestUpdate(const QPointF& touchPoint, qint64 eventTimestampMillis) +void QtViewportInteractionEngine::panGestureRequestUpdate(const QPointF& viewportTouchPoint, qint64 eventTimestampMillis) { - scroller()->handleInput(QScroller::InputMove, m_viewport->mapFromItem(m_content, touchPoint), eventTimestampMillis); + scroller()->handleInput(QScroller::InputMove, viewportTouchPoint, eventTimestampMillis); } void QtViewportInteractionEngine::panGestureCancelled() @@ -491,9 +494,9 @@ void QtViewportInteractionEngine::panGestureCancelled() scroller()->stop(); } -void QtViewportInteractionEngine::panGestureEnded(const QPointF& touchPoint, qint64 eventTimestampMillis) +void QtViewportInteractionEngine::panGestureEnded(const QPointF& viewportTouchPoint, qint64 eventTimestampMillis) { - scroller()->handleInput(QScroller::InputRelease, m_viewport->mapFromItem(m_content, touchPoint), eventTimestampMillis); + scroller()->handleInput(QScroller::InputRelease, viewportTouchPoint, eventTimestampMillis); } bool QtViewportInteractionEngine::scaleAnimationActive() const @@ -512,7 +515,7 @@ bool QtViewportInteractionEngine::pinchGestureActive() const return m_pinchStartScale > 0; } -void QtViewportInteractionEngine::pinchGestureStarted(const QPointF& pinchCenterInContentCoordinates) +void QtViewportInteractionEngine::pinchGestureStarted(const QPointF& pinchCenterInViewportCoordinates) { ASSERT(!m_suspendCount); @@ -523,14 +526,14 @@ void QtViewportInteractionEngine::pinchGestureStarted(const QPointF& pinchCenter m_scaleUpdateDeferrer = adoptPtr(new ViewportUpdateDeferrer(this)); - m_lastPinchCenterInViewportCoordinates = m_viewport->mapFromItem(m_content, pinchCenterInContentCoordinates); - m_pinchStartScale = m_content->scale(); + m_lastPinchCenterInViewportCoordinates = pinchCenterInViewportCoordinates; + m_pinchStartScale = m_content->contentScale(); // Reset the tiling look-ahead vector so that tiles all around the viewport will be requested on pinch-end. emit viewportTrajectoryVectorChanged(QPointF()); } -void QtViewportInteractionEngine::pinchGestureRequestUpdate(const QPointF& pinchCenterInContentCoordinates, qreal totalScaleFactor) +void QtViewportInteractionEngine::pinchGestureRequestUpdate(const QPointF& pinchCenterInViewportCoordinates, qreal totalScaleFactor) { ASSERT(m_suspendCount); @@ -544,12 +547,11 @@ void QtViewportInteractionEngine::pinchGestureRequestUpdate(const QPointF& pinch // Allow zooming out beyond mimimum scale on pages that do not explicitly disallow it. const qreal targetCSSScale = outerBoundedCSSScale(cssScale); - QPointF pinchCenterInViewportCoordinates = m_viewport->mapFromItem(m_content, pinchCenterInContentCoordinates); - - scaleContent(pinchCenterInContentCoordinates, targetCSSScale); + scaleContent(m_viewport->mapToWebContent(pinchCenterInViewportCoordinates), targetCSSScale); const QPointF positionDiff = pinchCenterInViewportCoordinates - m_lastPinchCenterInViewportCoordinates; m_lastPinchCenterInViewportCoordinates = pinchCenterInViewportCoordinates; + m_content->setPos(m_content->pos() + positionDiff); } @@ -576,12 +578,12 @@ void QtViewportInteractionEngine::itemSizeChanged() ensureContentWithinViewportBoundary(); } -void QtViewportInteractionEngine::scaleContent(const QPointF& centerInContentCoordinates, qreal cssScale) +void QtViewportInteractionEngine::scaleContent(const QPointF& centerInCSSCoordinates, qreal cssScale) { - QPointF oldPinchCenterOnParent = m_content->mapToItem(m_content->parentItem(), centerInContentCoordinates); - m_content->setScale(itemScaleFromCSS(cssScale)); - QPointF newPinchCenterOnParent = m_content->mapToItem(m_content->parentItem(), centerInContentCoordinates); - m_content->setPos(m_content->pos() - (newPinchCenterOnParent - oldPinchCenterOnParent)); + QPointF oldPinchCenterOnViewport = m_viewport->mapFromWebContent(centerInCSSCoordinates); + m_content->setContentScale(itemScaleFromCSS(cssScale)); + QPointF newPinchCenterOnViewport = m_viewport->mapFromWebContent(centerInCSSCoordinates); + m_content->setPos(m_content->pos() - (newPinchCenterOnViewport - oldPinchCenterOnViewport)); } #include "moc_QtViewportInteractionEngine.cpp" diff --git a/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h b/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h index 68377a41c..1790c72ed 100644 --- a/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h +++ b/Source/WebKit2/UIProcess/qt/QtViewportInteractionEngine.h @@ -33,6 +33,8 @@ QT_BEGIN_NAMESPACE class QPointF; class QQuickItem; +class QQuickWebPage; +class QQuickWebView; class QWheelEvent; QT_END_NAMESPACE @@ -44,7 +46,7 @@ class QtViewportInteractionEngine : public QObject { Q_OBJECT public: - QtViewportInteractionEngine(const QQuickItem*, QQuickItem*); + QtViewportInteractionEngine(const QQuickWebView*, QQuickWebPage*); ~QtViewportInteractionEngine(); struct Constraints { @@ -80,17 +82,17 @@ public: void interruptScrollAnimation(); bool panGestureActive() const; - void panGestureStarted(const QPointF& touchPoint, qint64 eventTimestampMillis); - void panGestureRequestUpdate(const QPointF& touchPoint, qint64 eventTimestampMillis); + void panGestureStarted(const QPointF& viewportTouchPoint, qint64 eventTimestampMillis); + void panGestureRequestUpdate(const QPointF& viewportTouchPoint, qint64 eventTimestampMillis); void panGestureCancelled(); - void panGestureEnded(const QPointF& touchPoint, qint64 eventTimestampMillis); + void panGestureEnded(const QPointF& viewportTouchPoint, qint64 eventTimestampMillis); bool scaleAnimationActive() const; void interruptScaleAnimation(); bool pinchGestureActive() const; - void pinchGestureStarted(const QPointF& pinchCenterInContentCoordinates); - void pinchGestureRequestUpdate(const QPointF& pinchCenterInContentCoordinates, qreal totalScaleFactor); + void pinchGestureStarted(const QPointF& pinchCenterInViewportCoordinates); + void pinchGestureRequestUpdate(const QPointF& pinchCenterInViewportCoordinates, qreal totalScaleFactor); void pinchGestureEnded(); void zoomToAreaGestureEnded(const QPointF& touchPoint, const QRectF& targetArea); @@ -127,14 +129,14 @@ private: QRectF computePosRangeForItemAtScale(qreal itemScale) const; bool ensureContentWithinViewportBoundary(bool immediate = false); - void scaleContent(const QPointF& centerInContentCoordinates, qreal scale); + void scaleContent(const QPointF& centerInCSSCoordinates, qreal cssScale); // As long as the object exists this function will always return the same QScroller instance. QScroller* scroller() { return QScroller::scroller(this); } - const QQuickItem* const m_viewport; - QQuickItem* const m_content; + const QQuickWebView* const m_viewport; + QQuickWebPage* const m_content; Constraints m_constraints; diff --git a/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp b/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp index d0196880d..e5175201a 100644 --- a/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp +++ b/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.cpp @@ -29,11 +29,13 @@ #include <QDrag> #include <QGraphicsSceneMouseEvent> #include <QGuiApplication> +#include <QInputPanel> #include <QMimeData> #include <QtQuick/QQuickCanvas> #include <QStyleHints> #include <QTextFormat> #include <QTouchEvent> +#include <QTransform> #include <WebCore/DragData.h> #include <WebCore/Editor.h> @@ -90,6 +92,7 @@ QtWebPageEventHandler::QtWebPageEventHandler(WKPageRef pageRef, QQuickWebPage* q , m_webPage(qmlWebPage) , m_previousClickButton(Qt::NoButton) , m_clickCount(0) + , m_postponeTextInputStateChanged(false) { } @@ -139,7 +142,7 @@ bool QtWebPageEventHandler::handleEvent(QEvent* ev) return true; case QEvent::InputMethod: inputMethodEvent(static_cast<QInputMethodEvent*>(ev)); - return false; // Look at comment in qquickwebpage.cpp + return false; // This is necessary to avoid an endless loop in connection with QQuickItem::event(). } // FIXME: Move all common event handling here. @@ -154,42 +157,50 @@ bool QtWebPageEventHandler::handleMouseMoveEvent(QMouseEvent* ev) // NOTE: lastPos from the event always comes empty, so we work // around that here. static QPointF lastPos = QPointF(); - if (lastPos == ev->pos()) + QTransform fromItemTransform = m_webPage->transformFromItem(); + QPointF webPagePoint = fromItemTransform.map(ev->localPos()); + if (lastPos == webPagePoint) return ev->isAccepted(); - lastPos = ev->pos(); + lastPos = webPagePoint; - m_webPageProxy->handleMouseEvent(NativeWebMouseEvent(ev, /*eventClickCount*/ 0)); + m_webPageProxy->handleMouseEvent(NativeWebMouseEvent(ev, fromItemTransform, /*eventClickCount*/ 0)); return ev->isAccepted(); } bool QtWebPageEventHandler::handleMousePressEvent(QMouseEvent* ev) { + QTransform fromItemTransform = m_webPage->transformFromItem(); + QPointF webPagePoint = fromItemTransform.map(ev->localPos()); + if (m_clickTimer.isActive() && m_previousClickButton == ev->button() - && (ev->pos() - m_lastClick).manhattanLength() < qApp->styleHints()->startDragDistance()) { + && (webPagePoint - m_lastClick).manhattanLength() < qApp->styleHints()->startDragDistance()) { m_clickCount++; } else { m_clickCount = 1; m_previousClickButton = ev->button(); } - m_webPageProxy->handleMouseEvent(NativeWebMouseEvent(ev, m_clickCount)); + m_webPageProxy->handleMouseEvent(NativeWebMouseEvent(ev, fromItemTransform, m_clickCount)); - m_lastClick = ev->pos(); + m_lastClick = webPagePoint; m_clickTimer.start(qApp->styleHints()->mouseDoubleClickInterval(), this); + return ev->isAccepted(); } bool QtWebPageEventHandler::handleMouseReleaseEvent(QMouseEvent* ev) { - m_webPageProxy->handleMouseEvent(NativeWebMouseEvent(ev, /*eventClickCount*/ 0)); + QTransform fromItemTransform = m_webPage->transformFromItem(); + m_webPageProxy->handleMouseEvent(NativeWebMouseEvent(ev, fromItemTransform, /*eventClickCount*/ 0)); return ev->isAccepted(); } bool QtWebPageEventHandler::handleWheelEvent(QWheelEvent* ev) { - m_webPageProxy->handleWheelEvent(NativeWebWheelEvent(ev)); + QTransform fromItemTransform = m_webPage->transformFromItem(); + m_webPageProxy->handleWheelEvent(NativeWebWheelEvent(ev, fromItemTransform)); // FIXME: Handle whether the page used the wheel event or not. if (m_interactionEngine) m_interactionEngine->wheelEvent(ev); @@ -200,14 +211,16 @@ bool QtWebPageEventHandler::handleHoverLeaveEvent(QHoverEvent* ev) { // To get the correct behavior of mouseout, we need to turn the Leave event of our webview into a mouse move // to a very far region. - QHoverEvent fakeEvent(QEvent::HoverMove, QPoint(INT_MIN, INT_MIN), ev->oldPos()); + QTransform fromItemTransform = m_webPage->transformFromItem(); + QHoverEvent fakeEvent(QEvent::HoverMove, QPoint(INT_MIN, INT_MIN), fromItemTransform.map(ev->oldPosF())); fakeEvent.setTimestamp(ev->timestamp()); return handleHoverMoveEvent(&fakeEvent); } bool QtWebPageEventHandler::handleHoverMoveEvent(QHoverEvent* ev) { - QMouseEvent me(QEvent::MouseMove, ev->pos(), Qt::NoButton, Qt::NoButton, Qt::NoModifier); + QTransform fromItemTransform = m_webPage->transformFromItem(); + QMouseEvent me(QEvent::MouseMove, fromItemTransform.map(ev->posF()), Qt::NoButton, Qt::NoButton, Qt::NoModifier); me.setAccepted(ev->isAccepted()); me.setTimestamp(ev->timestamp()); @@ -217,8 +230,9 @@ bool QtWebPageEventHandler::handleHoverMoveEvent(QHoverEvent* ev) bool QtWebPageEventHandler::handleDragEnterEvent(QDragEnterEvent* ev) { m_webPageProxy->resetDragOperation(); + QTransform fromItemTransform = m_webPage->transformFromItem(); // FIXME: Should not use QCursor::pos() - DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(), dropActionToDragOperation(ev->possibleActions())); + DragData dragData(ev->mimeData(), fromItemTransform.map(ev->pos()), QCursor::pos(), dropActionToDragOperation(ev->possibleActions())); m_webPageProxy->dragEntered(&dragData); ev->acceptProposedAction(); return true; @@ -241,8 +255,9 @@ bool QtWebPageEventHandler::handleDragMoveEvent(QDragMoveEvent* ev) { bool accepted = ev->isAccepted(); + QTransform fromItemTransform = m_webPage->transformFromItem(); // FIXME: Should not use QCursor::pos() - DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(), dropActionToDragOperation(ev->possibleActions())); + DragData dragData(ev->mimeData(), fromItemTransform.map(ev->pos()), QCursor::pos(), dropActionToDragOperation(ev->possibleActions())); m_webPageProxy->dragUpdated(&dragData); ev->setDropAction(dragOperationToDropAction(m_webPageProxy->dragSession().operation)); if (m_webPageProxy->dragSession().operation != DragOperationNone) @@ -255,9 +270,9 @@ bool QtWebPageEventHandler::handleDragMoveEvent(QDragMoveEvent* ev) bool QtWebPageEventHandler::handleDropEvent(QDropEvent* ev) { bool accepted = ev->isAccepted(); - + QTransform fromItemTransform = m_webPage->transformFromItem(); // FIXME: Should not use QCursor::pos() - DragData dragData(ev->mimeData(), ev->pos(), QCursor::pos(), dropActionToDragOperation(ev->possibleActions())); + DragData dragData(ev->mimeData(), fromItemTransform.map(ev->pos()), QCursor::pos(), dropActionToDragOperation(ev->possibleActions())); SandboxExtension::Handle handle; m_webPageProxy->performDrag(&dragData, String(), handle); ev->setDropAction(dragOperationToDropAction(m_webPageProxy->dragSession().operation)); @@ -269,13 +284,17 @@ bool QtWebPageEventHandler::handleDropEvent(QDropEvent* ev) void QtWebPageEventHandler::handleSingleTapEvent(const QTouchEvent::TouchPoint& point) { - WebGestureEvent gesture(WebEvent::GestureSingleTap, point.pos().toPoint(), point.screenPos().toPoint(), WebEvent::Modifiers(0), 0); + m_postponeTextInputStateChanged = true; + + QTransform fromItemTransform = m_webPage->transformFromItem(); + WebGestureEvent gesture(WebEvent::GestureSingleTap, fromItemTransform.map(point.pos()).toPoint(), point.screenPos().toPoint(), WebEvent::Modifiers(0), 0); m_webPageProxy->handleGestureEvent(gesture); } void QtWebPageEventHandler::handleDoubleTapEvent(const QTouchEvent::TouchPoint& point) { - m_webPageProxy->findZoomableAreaForPoint(point.pos().toPoint()); + QTransform fromItemTransform = m_webPage->transformFromItem(); + m_webPageProxy->findZoomableAreaForPoint(fromItemTransform.map(point.pos()).toPoint()); } void QtWebPageEventHandler::timerEvent(QTimerEvent* ev) @@ -386,11 +405,12 @@ void QtWebPageEventHandler::inputMethodEvent(QInputMethodEvent* ev) void QtWebPageEventHandler::touchEvent(QTouchEvent* event) { #if ENABLE(TOUCH_EVENTS) - m_webPageProxy->handleTouchEvent(NativeWebTouchEvent(event)); + QTransform fromItemTransform = m_webPage->transformFromItem(); + m_webPageProxy->handleTouchEvent(NativeWebTouchEvent(event, fromItemTransform)); event->accept(); #else ASSERT_NOT_REACHED(); - ev->ignore(); + event->ignore(); #endif } @@ -401,6 +421,42 @@ void QtWebPageEventHandler::resetGestureRecognizers() m_tapGestureRecognizer.reset(); } +static void setInputPanelVisible(bool visible) +{ + if (qApp->inputPanel()->visible() == visible) + return; + + qApp->inputPanel()->setVisible(visible); +} + +void QtWebPageEventHandler::updateTextInputState() +{ + if (m_postponeTextInputStateChanged) + return; + + const EditorState& editor = m_webPageProxy->editorState(); + + // Ignore input method requests not due to a tap gesture. + if (!editor.isContentEditable) + setInputPanelVisible(false); +} + +void QtWebPageEventHandler::doneWithGestureEvent(const WebGestureEvent& event, bool wasEventHandled) +{ + if (event.type() != WebEvent::GestureSingleTap) + return; + + m_postponeTextInputStateChanged = false; + + if (!wasEventHandled) + return; + + const EditorState& editor = m_webPageProxy->editorState(); + bool newVisible = editor.isContentEditable; + + setInputPanelVisible(newVisible); +} + void QtWebPageEventHandler::doneWithTouchEvent(const NativeWebTouchEvent& event, bool wasEventHandled) { if (!m_interactionEngine) diff --git a/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.h b/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.h index dfab4c8b9..f5b7fb317 100644 --- a/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.h +++ b/Source/WebKit2/UIProcess/qt/QtWebPageEventHandler.h @@ -52,6 +52,8 @@ public: void didFindZoomableArea(const WebCore::IntPoint& target, const WebCore::IntRect& area); void focusEditableArea(const WebCore::IntRect& caret, const WebCore::IntRect& area); + void updateTextInputState(); + void doneWithGestureEvent(const WebGestureEvent& event, bool wasEventHandled); void doneWithTouchEvent(const NativeWebTouchEvent&, bool wasEventHandled); void resetGestureRecognizers(); @@ -88,10 +90,11 @@ private: void touchEvent(QTouchEvent*); void inputMethodEvent(QInputMethodEvent*); - QPoint m_lastClick; + QPointF m_lastClick; QBasicTimer m_clickTimer; Qt::MouseButton m_previousClickButton; int m_clickCount; + bool m_postponeTextInputStateChanged; }; #endif /* QtWebPageEventHandler_h */ diff --git a/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj b/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj index 8aff50214..f851edc74 100644 --- a/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj +++ b/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj @@ -204,6 +204,7 @@ 1AAF0C4B12B16334008E49E2 /* ArgumentCodersCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF0C4912B16334008E49E2 /* ArgumentCodersCF.cpp */; }; 1AAF263814687C39004A1E8A /* TiledCoreAnimationDrawingArea.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF263614687C39004A1E8A /* TiledCoreAnimationDrawingArea.mm */; }; 1AAF263914687C39004A1E8A /* TiledCoreAnimationDrawingArea.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AAF263714687C39004A1E8A /* TiledCoreAnimationDrawingArea.h */; }; + 1AB42E8714BBBBB2004272F7 /* KeychainShimResponseMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB42E8614BBBBB2004272F7 /* KeychainShimResponseMap.h */; }; 1AB7D4CA1288AAA700CFD08C /* DownloadProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7D4C81288AAA700CFD08C /* DownloadProxy.h */; }; 1AB7D4CB1288AAA700CFD08C /* DownloadProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7D4C91288AAA700CFD08C /* DownloadProxy.cpp */; }; 1AB7D6191288B9D900CFD08C /* DownloadProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7D6171288B9D900CFD08C /* DownloadProxyMessageReceiver.cpp */; }; @@ -455,8 +456,6 @@ 9391F2CA121B679A00EBF7E8 /* WebFrameNetworkingContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9391F284121B38F500EBF7E8 /* WebFrameNetworkingContext.mm */; }; 9391F2CB121B67AD00EBF7E8 /* WebFrameNetworkingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 9391F283121B38F500EBF7E8 /* WebFrameNetworkingContext.h */; }; 939AE7661316E99C00AE06A6 /* WebCoreArgumentCoders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 939AE7651316E99C00AE06A6 /* WebCoreArgumentCoders.cpp */; }; - 93C01DAC139AC91700ED51D7 /* CoreIPCClientRunLoop.h in Headers */ = {isa = PBXBuildFile; fileRef = 93C01DAA139AC91700ED51D7 /* CoreIPCClientRunLoop.h */; }; - 93C01DAD139AC91700ED51D7 /* CoreIPCClientRunLoop.mm in Sources */ = {isa = PBXBuildFile; fileRef = 93C01DAB139AC91700ED51D7 /* CoreIPCClientRunLoop.mm */; }; 93FC67BD12D3CCF200A60610 /* DecoderAdapter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93FC679D12D3CC7400A60610 /* DecoderAdapter.cpp */; }; 93FC67BE12D3CCF200A60610 /* DecoderAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 93FC679E12D3CC7400A60610 /* DecoderAdapter.h */; }; 93FC67BF12D3CCF200A60610 /* EncoderAdapter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93FC679F12D3CC7400A60610 /* EncoderAdapter.cpp */; }; @@ -980,8 +979,8 @@ dstPath = WebKit2.framework; dstSubfolderSpec = 1; files = ( - 1A50DB66110A3D57000D3FE5 /* WebProcess.app in CopyFiles */, BCDE0ABF13272708001259FB /* PluginProcess.app in CopyFiles */, + 1A50DB66110A3D57000D3FE5 /* WebProcess.app in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1197,6 +1196,7 @@ 1AAF0C4912B16334008E49E2 /* ArgumentCodersCF.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = ArgumentCodersCF.cpp; sourceTree = "<group>"; }; 1AAF263614687C39004A1E8A /* TiledCoreAnimationDrawingArea.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TiledCoreAnimationDrawingArea.mm; sourceTree = "<group>"; }; 1AAF263714687C39004A1E8A /* TiledCoreAnimationDrawingArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TiledCoreAnimationDrawingArea.h; sourceTree = "<group>"; }; + 1AB42E8614BBBBB2004272F7 /* KeychainShimResponseMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeychainShimResponseMap.h; sourceTree = "<group>"; }; 1AB7D4C81288AAA700CFD08C /* DownloadProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloadProxy.h; sourceTree = "<group>"; }; 1AB7D4C91288AAA700CFD08C /* DownloadProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DownloadProxy.cpp; sourceTree = "<group>"; }; 1AB7D5E91288B8C000CFD08C /* DownloadProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DownloadProxy.messages.in; sourceTree = "<group>"; }; @@ -1472,8 +1472,6 @@ 9391F283121B38F500EBF7E8 /* WebFrameNetworkingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameNetworkingContext.h; sourceTree = "<group>"; }; 9391F284121B38F500EBF7E8 /* WebFrameNetworkingContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebFrameNetworkingContext.mm; sourceTree = "<group>"; }; 939AE7651316E99C00AE06A6 /* WebCoreArgumentCoders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCoreArgumentCoders.cpp; sourceTree = "<group>"; }; - 93C01DAA139AC91700ED51D7 /* CoreIPCClientRunLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoreIPCClientRunLoop.h; sourceTree = "<group>"; }; - 93C01DAB139AC91700ED51D7 /* CoreIPCClientRunLoop.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CoreIPCClientRunLoop.mm; sourceTree = "<group>"; }; 93FC679D12D3CC7400A60610 /* DecoderAdapter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DecoderAdapter.cpp; sourceTree = "<group>"; }; 93FC679E12D3CC7400A60610 /* DecoderAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecoderAdapter.h; sourceTree = "<group>"; }; 93FC679F12D3CC7400A60610 /* EncoderAdapter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EncoderAdapter.cpp; sourceTree = "<group>"; }; @@ -1997,12 +1995,12 @@ 1AA1CD07100FA1BA0078DEBC /* Carbon.framework in Frameworks */, 8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */, BCD0042D110C1E27003B8A67 /* CoreServices.framework in Frameworks */, + CDCA85D5132AC2B300E961DF /* IOKit.framework in Frameworks */, BC617EE8104CB34700FB3FE1 /* JavaScriptCore.framework in Frameworks */, BC87DFAA1018101400564216 /* libicucore.dylib in Frameworks */, 1AA1CC5D100FA1A10078DEBC /* QuartzCore.framework in Frameworks */, - 1A1C4EC810D06099005E67E7 /* WebCore.framework in Frameworks */, BCF5068512431861005955AE /* Security.framework in Frameworks */, - CDCA85D5132AC2B300E961DF /* IOKit.framework in Frameworks */, + 1A1C4EC810D06099005E67E7 /* WebCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2012,10 +2010,10 @@ 034768DFFF38A50411DB9C8B /* Products */ = { isa = PBXGroup; children = ( + BCDE094213272496001259FB /* PluginProcess.app */, + 1AC25FB012A48EA700BD2671 /* PluginProcessShim.dylib */, 8DC2EF5B0486A6940098B216 /* WebKit2.framework */, 1A50DB1E110A3BDC000D3FE5 /* WebProcess.app */, - 1AC25FB012A48EA700BD2671 /* PluginProcessShim.dylib */, - BCDE094213272496001259FB /* PluginProcess.app */, 510031F61379CACB00C8DFE4 /* WebProcessShim.dylib */, ); name = Products; @@ -2081,8 +2079,8 @@ 1AA1C7DE100E846E0078DEBC /* JavaScriptCore.framework */, BC87DFA91018101400564216 /* libicucore.dylib */, 1AA1CC5C100FA1A10078DEBC /* QuartzCore.framework */, - 1AA1C79A100E7FC50078DEBC /* WebCore.framework */, BCF5068412431861005955AE /* Security.framework */, + 1AA1C79A100E7FC50078DEBC /* WebCore.framework */, ); name = "Linked Frameworks"; sourceTree = "<group>"; @@ -2120,10 +2118,10 @@ isa = PBXGroup; children = ( 1A2D91A51281D739001EB962 /* PluginControllerProxyMac.mm */, - 1A0EC802124BD41E007EF4A5 /* PluginProcessMainMac.mm */, 1AA4792212A59FD9008236C3 /* PluginProcessMac.mm */, - 1AC25F8A12A48E0300BD2671 /* PluginProcessShim.mm */, + 1A0EC802124BD41E007EF4A5 /* PluginProcessMainMac.mm */, 1AC25F8912A48E0300BD2671 /* PluginProcessShim.h */, + 1AC25F8A12A48E0300BD2671 /* PluginProcessShim.mm */, ); path = mac; sourceTree = "<group>"; @@ -2149,12 +2147,12 @@ 1A4F9769100E7B6600637A18 /* Configurations */ = { isa = PBXGroup; children = ( - 5183B3931379F85C00E8754E /* Shim.xcconfig */, 1A4F976A100E7B6600637A18 /* Base.xcconfig */, 5DAD73F1116FF90C00EE5396 /* BaseTarget.xcconfig */, 1A4F976B100E7B6600637A18 /* DebugRelease.xcconfig */, 1A4F976C100E7B6600637A18 /* FeatureDefines.xcconfig */, BC122FA3132707F300F7EAC1 /* PluginProcess.xcconfig */, + 5183B3931379F85C00E8754E /* Shim.xcconfig */, 1A4F976E100E7B6600637A18 /* Version.xcconfig */, BCB86F4B116AAACD00CE20B7 /* WebKit2.xcconfig */, 5DAD7294116FF70B00EE5396 /* WebProcess.xcconfig */, @@ -2187,10 +2185,9 @@ 1A6FA01C11E1526300DB1371 /* mac */ = { isa = PBXGroup; children = ( - 93C01DAA139AC91700ED51D7 /* CoreIPCClientRunLoop.h */, - 93C01DAB139AC91700ED51D7 /* CoreIPCClientRunLoop.mm */, 512DF6D6138C181A00A22FC6 /* KeychainItemShimMethods.h */, 512DF6D7138C181A00A22FC6 /* KeychainItemShimMethods.mm */, + 1AB42E8614BBBBB2004272F7 /* KeychainShimResponseMap.h */, 511F8A7D138B46FE00A95F44 /* SecItemShimMethods.h */, 511F8A7E138B46FE00A95F44 /* SecItemShimMethods.mm */, BC3065C312592F8900E71278 /* WebProcessMac.mm */, @@ -2204,8 +2201,8 @@ 1A6FB7AA11E64B4900DB1371 /* Plugins */ = { isa = PBXGroup; children = ( - E199875B142BF9CF00BB2DE7 /* PDF */, 1A6FB90811E66FB100DB1371 /* Netscape */, + E199875B142BF9CF00BB2DE7 /* PDF */, 1A6FB7D011E651E200DB1371 /* Plugin.cpp */, 1A6FB7D111E651E200DB1371 /* Plugin.h */, 1AA56F2811E92BC80061B882 /* PluginController.h */, @@ -2231,18 +2228,18 @@ 1AE49A4711FFA8CE0048B464 /* JSNPMethod.h */, 1AE4987711FF7FAA0048B464 /* JSNPObject.cpp */, 1AE4987611FF7FAA0048B464 /* JSNPObject.h */, - 1AE4976711FF658E0048B464 /* NPJSObject.cpp */, - 1AE4976611FF658E0048B464 /* NPJSObject.h */, - 1A2161AF11F37664008AD0F5 /* NPRuntimeObjectMap.cpp */, - 1A2161AE11F37664008AD0F5 /* NPRuntimeObjectMap.h */, - 1A2162AE11F38971008AD0F5 /* NPRuntimeUtilities.cpp */, - 1A2162AF11F38971008AD0F5 /* NPRuntimeUtilities.h */, 1A6FBA2911E6862700DB1371 /* NetscapeBrowserFuncs.cpp */, 1A6FBA2811E6862700DB1371 /* NetscapeBrowserFuncs.h */, 1A6FBD2711E69BC200DB1371 /* NetscapePlugin.cpp */, 1A6FBD2611E69BC200DB1371 /* NetscapePlugin.h */, 1AA5889111EE70400061B882 /* NetscapePluginStream.cpp */, 1AA5889011EE70400061B882 /* NetscapePluginStream.h */, + 1AE4976711FF658E0048B464 /* NPJSObject.cpp */, + 1AE4976611FF658E0048B464 /* NPJSObject.h */, + 1A2161AF11F37664008AD0F5 /* NPRuntimeObjectMap.cpp */, + 1A2161AE11F37664008AD0F5 /* NPRuntimeObjectMap.h */, + 1A2162AE11F38971008AD0F5 /* NPRuntimeUtilities.cpp */, + 1A2162AF11F38971008AD0F5 /* NPRuntimeUtilities.h */, ); path = Netscape; sourceTree = "<group>"; @@ -2311,6 +2308,9 @@ C517388012DF8F4F00EE3F47 /* DragControllerAction.h */, 0FB659221208B4DB0044816C /* DrawingAreaInfo.h */, 8CFECE931490F140002AAA32 /* EditorState.cpp */, + 1AA41AB412C02EC4002BE67B /* EditorState.h */, + BCE81D8A1319F7EF00241910 /* FontInfo.cpp */, + BCE81D8B1319F7EF00241910 /* FontInfo.h */, 762B7481120BBA0100819339 /* FontSmoothingLevel.h */, F638954F133BEF38008941D5 /* HTTPCookieAcceptPolicy.h */, BCCF6B2312C93E7A008F9C35 /* ImageOptions.h */, @@ -2332,14 +2332,11 @@ BCC43AB9127B95DC00317F16 /* PlatformPopupMenuData.h */, E18C92F312DB9E7100CF2AEB /* PrintInfo.cpp */, E1CC1B8E12D7EADF00625838 /* PrintInfo.h */, - BCE81D8A1319F7EF00241910 /* FontInfo.cpp */, - BCE81D8B1319F7EF00241910 /* FontInfo.h */, F6A0C13F13281E6E0070430F /* ResourceCachesToClear.h */, BC2D021612AC41CB00E732A3 /* SameDocumentNavigationType.h */, 1AAB4A8C1296F0A20023952F /* SandboxExtension.h */, 33152973130D0CB200ED2483 /* SecurityOriginData.cpp */, 33152974130D0CB200ED2483 /* SecurityOriginData.h */, - 1AA41AB412C02EC4002BE67B /* EditorState.h */, 518D2CC812D51DFB003BB93B /* SessionState.cpp */, 518D2CC912D51DFB003BB93B /* SessionState.h */, 1A6420E212DCE2FF00CAAE2C /* ShareableBitmap.cpp */, @@ -2374,9 +2371,10 @@ BC032DB010F4380F0058C15A /* WebEventConversion.cpp */, BC032DB110F4380F0058C15A /* WebEventConversion.h */, 1A90C1ED1264FD50003E44D4 /* WebFindOptions.h */, - 0F174AA2142A4CB60039250F /* WebGeometry.h */, BC0E607212D6BC200012A72A /* WebGeolocationPosition.cpp */, BC0E607112D6BC200012A72A /* WebGeolocationPosition.h */, + 0F174AA2142A4CB60039250F /* WebGeometry.h */, + BC9585C712F095B800755821 /* WebGestureEvent.cpp */, BCA56A1B12F9028E00C566C7 /* WebGraphicsContext.cpp */, BCA56A1A12F9028E00C566C7 /* WebGraphicsContext.h */, 7801C095142290C400FAF9AF /* WebHitTestResult.cpp */, @@ -2413,7 +2411,6 @@ BC90A1D0122DD55E00CC8C50 /* WebURLResponse.h */, F6113E24126CE1820057D0A7 /* WebUserContentURLPattern.h */, C0337DD0127A2980008FF4F4 /* WebWheelEvent.cpp */, - BC9585C712F095B800755821 /* WebGestureEvent.cpp */, ); path = Shared; sourceTree = "<group>"; @@ -2425,11 +2422,6 @@ children = ( 1A9FBA8B13FF04E600DEED67 /* mac */, 1A4A9C5212B816CF008FE984 /* Netscape */, - 1A3D60FF13A7CC2A00F95D4E /* PluginModuleInfo.cpp */, - 1A3D610013A7CC2A00F95D4E /* PluginModuleInfo.h */, - 1A2D90D11281C966001EB962 /* PluginProcessCreationParameters.cpp */, - 1A2D90D01281C966001EB962 /* PluginProcessCreationParameters.h */, - 1A4A9F3112B844E2008FE984 /* PluginQuirks.h */, 1A2D848A127F6A49001EB962 /* NPIdentifierData.cpp */, 1A2D8489127F6A49001EB962 /* NPIdentifierData.h */, 1A1FA35C127A45BF0050E709 /* NPObjectMessageReceiver.cpp */, @@ -2441,6 +2433,11 @@ 1A1FA251127A0E4F0050E709 /* NPRemoteObjectMap.h */, 1A2D84A2127F6AD1001EB962 /* NPVariantData.cpp */, 1A2D84A1127F6AD1001EB962 /* NPVariantData.h */, + 1A3D60FF13A7CC2A00F95D4E /* PluginModuleInfo.cpp */, + 1A3D610013A7CC2A00F95D4E /* PluginModuleInfo.h */, + 1A2D90D11281C966001EB962 /* PluginProcessCreationParameters.cpp */, + 1A2D90D01281C966001EB962 /* PluginProcessCreationParameters.h */, + 1A4A9F3112B844E2008FE984 /* PluginQuirks.h */, ); path = Plugins; sourceTree = "<group>"; @@ -2472,9 +2469,9 @@ 1AC41AC51263C88300054E94 /* BinarySemaphore.h */, BC032DA210F437D10058C15A /* Connection.cpp */, BC032DA310F437D10058C15A /* Connection.h */, + BC131BC811726C2800B69727 /* CoreIPCMessageKinds.h */, 1A8EFDFD1253CB6E00F7067F /* DataReference.cpp */, 1A8EFDF91253CAA200F7067F /* DataReference.h */, - BC131BC811726C2800B69727 /* CoreIPCMessageKinds.h */, C0CE72AC1247E78D00BC0EC4 /* HandleMessage.h */, BC032DA410F437D10058C15A /* MessageID.h */, 1A119A94127B796200A9ECB1 /* MessageSender.h */, @@ -2534,10 +2531,10 @@ 31A2EC401489973700810D71 /* Notifications */ = { isa = PBXGroup; children = ( - 31A2EC4F1489980500810D71 /* NotificationPermissionRequestManagerProxy.cpp */, - 31A2EC511489981500810D71 /* NotificationPermissionRequestManagerProxy.h */, 31A2EC541489982E00810D71 /* NotificationPermissionRequest.cpp */, 31A2EC531489982500810D71 /* NotificationPermissionRequest.h */, + 31A2EC4F1489980500810D71 /* NotificationPermissionRequestManagerProxy.cpp */, + 31A2EC511489981500810D71 /* NotificationPermissionRequestManagerProxy.h */, 31A2EC41148997BE00810D71 /* WebNotification.cpp */, 31A2EC42148997BE00810D71 /* WebNotification.h */, 31A2EC43148997BE00810D71 /* WebNotificationManagerProxy.cpp */, @@ -2705,11 +2702,11 @@ BC032D5C10F436D50058C15A /* WebProcess */ = { isa = PBXGroup; children = ( - CD73BA3D131A2A2100EEDED2 /* FullScreen */, 512E352A130B559900ABD19A /* ApplicationCache */, 512F588612A8834700629530 /* Authentication */, 3309344B1315B93A0097A7BC /* Cookies */, 1A61614C127798B5003ACD86 /* Downloads */, + CD73BA3D131A2A2100EEDED2 /* FullScreen */, BC0E5FCB12D696DD0012A72A /* Geolocation */, 51FBB9C1132E079200F327B4 /* IconDatabase */, BC204EDF11C83E72008F3375 /* InjectedBundle */, @@ -2721,9 +2718,9 @@ 3336762B130C9978006C9DE2 /* ResourceCache */, BC032D5D10F437220058C15A /* WebCoreSupport */, BC032D5E10F4372B0058C15A /* WebPage */, - 1A6FA31511E3923600DB1371 /* WebKitMain.cpp */, BCE9C0CF1485965D00E33D61 /* WebConnectionToUIProcess.cpp */, BCE9C0D01485965D00E33D61 /* WebConnectionToUIProcess.h */, + 1A6FA31511E3923600DB1371 /* WebKitMain.cpp */, BC111AE3112F5C2600337BAB /* WebProcess.cpp */, BC032D9110F437AF0058C15A /* WebProcess.h */, BC3066B9125A436300E71278 /* WebProcess.messages.in */, @@ -2784,9 +2781,9 @@ 1A6421F412DCFBAB00CAAE2C /* DrawingAreaImpl.h */, 93FC679F12D3CC7400A60610 /* EncoderAdapter.cpp */, 93FC67A012D3CC7400A60610 /* EncoderAdapter.h */, - 1AA575FD1496B6F300A4EE06 /* EventDispatcher.messages.in */, 1AA575F81496B52600A4EE06 /* EventDispatcher.cpp */, 1AA575F91496B52600A4EE06 /* EventDispatcher.h */, + 1AA575FD1496B6F300A4EE06 /* EventDispatcher.messages.in */, 1A90C1F31264FD71003E44D4 /* FindController.cpp */, 1A90C1F21264FD71003E44D4 /* FindController.h */, 1A186EE912EF7618008E5F37 /* LayerTreeHost.cpp */, @@ -2797,8 +2794,6 @@ BC72B9F911E6476B001EB4EA /* WebBackForwardListProxy.h */, 51871B59127CB89D00F76232 /* WebContextMenu.cpp */, 51871B5A127CB89D00F76232 /* WebContextMenu.h */, - BCA0EF7E12331E78007D3CFB /* WebUndoStep.cpp */, - BCA0EF7D12331E78007D3CFB /* WebUndoStep.h */, BC111ADC112F5B9300337BAB /* WebFrame.cpp */, BC032D8910F437A00058C15A /* WebFrame.h */, 1C8E281F1275D15400BC7BD0 /* WebInspector.cpp */, @@ -2811,6 +2806,8 @@ C0CE72581247E4DA00BC0EC4 /* WebPage.messages.in */, BC7B621412A4219A00D174A4 /* WebPageGroupProxy.cpp */, BC7B621312A4219A00D174A4 /* WebPageGroupProxy.h */, + BCA0EF7E12331E78007D3CFB /* WebUndoStep.cpp */, + BCA0EF7D12331E78007D3CFB /* WebUndoStep.h */, ); path = WebPage; sourceTree = "<group>"; @@ -2852,11 +2849,13 @@ 512E35F0130B638C00ABD19A /* WebApplicationCacheManagerProxy.messages.in */, BC72BA1B11E64907001EB4EA /* WebBackForwardList.cpp */, BC72BA1C11E64907001EB4EA /* WebBackForwardList.h */, - BC09B8F6147460F7005F5625 /* WebContextConnectionClient.cpp */, - BC09B8F7147460F7005F5625 /* WebContextConnectionClient.h */, + BC4A62A514744EC6006C681A /* WebConnectionToWebProcess.cpp */, + BC4A62A614744EC6006C681A /* WebConnectionToWebProcess.h */, BCB9E2421120DACA00A137E0 /* WebContext.cpp */, BCB9E2411120DACA00A137E0 /* WebContext.h */, BCEE7D0912846AED009827DA /* WebContext.messages.in */, + BC09B8F6147460F7005F5625 /* WebContextConnectionClient.cpp */, + BC09B8F7147460F7005F5625 /* WebContextConnectionClient.h */, BCDE059A11CDA8AE00E41AF1 /* WebContextInjectedBundleClient.cpp */, BCDE059911CDA8AE00E41AF1 /* WebContextInjectedBundleClient.h */, 51A84CE2127F386B00CA6EA4 /* WebContextMenuProxy.cpp */, @@ -2933,8 +2932,6 @@ BC111B0D112F5E4F00337BAB /* WebProcessProxy.cpp */, BC032DCF10F4389F0058C15A /* WebProcessProxy.h */, BCEE7AB312817095009827DA /* WebProcessProxy.messages.in */, - BC4A62A514744EC6006C681A /* WebConnectionToWebProcess.cpp */, - BC4A62A614744EC6006C681A /* WebConnectionToWebProcess.h */, 33367632130C99B2006C9DE2 /* WebResourceCacheManagerProxy.cpp */, 33367633130C99B2006C9DE2 /* WebResourceCacheManagerProxy.h */, 33367634130C99B2006C9DE2 /* WebResourceCacheManagerProxy.messages.in */, @@ -3016,6 +3013,8 @@ 318BE17814743E6A00A8FBB2 /* WKNotification.h */, 318BE17414743DD600A8FBB2 /* WKNotificationManager.cpp */, 318BE17014743DB100A8FBB2 /* WKNotificationManager.h */, + 31A2EC75148D65BB00810D71 /* WKNotificationPermissionRequest.cpp */, + 31A2EC72148D59BB00810D71 /* WKNotificationPermissionRequest.h */, 312C0C49146DDC8A0016C911 /* WKNotificationProvider.h */, BC857FE512B843D800EDEB2E /* WKOpenPanelParameters.cpp */, BC857FE412B843D800EDEB2E /* WKOpenPanelParameters.h */, @@ -3036,8 +3035,6 @@ 518ACAE912AEE6BB00B04B83 /* WKProtectionSpaceTypes.h */, 33367638130C99DC006C9DE2 /* WKResourceCacheManager.cpp */, 33367639130C99DC006C9DE2 /* WKResourceCacheManager.h */, - 31A2EC72148D59BB00810D71 /* WKNotificationPermissionRequest.h */, - 31A2EC75148D65BB00810D71 /* WKNotificationPermissionRequest.cpp */, ); path = C; sourceTree = "<group>"; @@ -3057,8 +3054,8 @@ BC111ADE112F5B9A00337BAB /* mac */ = { isa = PBXGroup; children = ( - C554FFA212E4E8EA002F22C0 /* WebDragClientMac.mm */, 51021E9B12B16788005C033C /* WebContextMenuClientMac.mm */, + C554FFA212E4E8EA002F22C0 /* WebDragClientMac.mm */, C5237F5F12441CA300780472 /* WebEditorClientMac.mm */, BC111ADF112F5BC200337BAB /* WebErrorsMac.mm */, 9391F283121B38F500EBF7E8 /* WebFrameNetworkingContext.h */, @@ -3132,8 +3129,8 @@ 5112CB071385B97B0030867D /* KeychainAttribute.cpp */, 5112CB051385B8D90030867D /* KeychainAttribute.h */, 1A92DC1212F8BAB90017AF65 /* LayerTreeContextMac.mm */, - 31EA25D0134F78B2005B1452 /* NativeWebMouseEventMac.mm */, C02BFF1D1251502E009CCBEA /* NativeWebKeyboardEventMac.mm */, + 31EA25D0134F78B2005B1452 /* NativeWebMouseEventMac.mm */, DF58C6351371ACA000F9A37C /* NativeWebWheelEventMac.mm */, C574A57F12E66681002DFE98 /* PasteboardTypes.h */, C574A58012E66681002DFE98 /* PasteboardTypes.mm */, @@ -3201,6 +3198,8 @@ E1EE53DC11F8CF9F00CCBEE4 /* InjectedBundlePageEditorClient.h */, BC14E107120B905E00826C0C /* InjectedBundlePageFormClient.cpp */, BC14E108120B905E00826C0C /* InjectedBundlePageFormClient.h */, + CD5C669E134B9D36004FE2A8 /* InjectedBundlePageFullScreenClient.cpp */, + CD5C669F134B9D37004FE2A8 /* InjectedBundlePageFullScreenClient.h */, BCA8C6A611E3BA5F00812FB7 /* InjectedBundlePageLoaderClient.cpp */, BCA8C6A711E3BA5F00812FB7 /* InjectedBundlePageLoaderClient.h */, BC8147A812F64CDA007B2C32 /* InjectedBundlePagePolicyClient.cpp */, @@ -3212,8 +3211,6 @@ BC14DF76120B5B7900826C0C /* InjectedBundleScriptWorld.cpp */, BC14DF75120B5B7900826C0C /* InjectedBundleScriptWorld.h */, BCB0B0DD12305A8C00B1341E /* InjectedBundleUserMessageCoders.h */, - CD5C669E134B9D36004FE2A8 /* InjectedBundlePageFullScreenClient.cpp */, - CD5C669F134B9D37004FE2A8 /* InjectedBundlePageFullScreenClient.h */, ); path = InjectedBundle; sourceTree = "<group>"; @@ -3526,8 +3523,8 @@ isa = PBXGroup; children = ( C03A136A133BEBF900D767D1 /* mac */, - C098A053133BE1C500B199A4 /* LayerTreeHostCA.h */, C098A054133BE1C500B199A4 /* LayerTreeHostCA.cpp */, + C098A053133BE1C500B199A4 /* LayerTreeHostCA.h */, ); path = ca; sourceTree = "<group>"; @@ -3623,9 +3620,9 @@ C0CE73351247F70E00BC0EC4 /* Scripts */ = { isa = PBXGroup; children = ( - C0CE73371247F70E00BC0EC4 /* generate-messages-header.py */, - C0CE73361247F70E00BC0EC4 /* generate-message-receiver.py */, C0CE73381247F70E00BC0EC4 /* webkit2 */, + C0CE73361247F70E00BC0EC4 /* generate-message-receiver.py */, + C0CE73371247F70E00BC0EC4 /* generate-messages-header.py */, ); path = Scripts; sourceTree = "<group>"; @@ -3704,442 +3701,442 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 1A3DD206125E5A2F004515E6 /* APIClient.h in Headers */, + 5D51845613BCF9CC00C7FF4A /* APIClientTraits.h in Headers */, 1AEFD27911D16C81008219D3 /* ArgumentCoder.h in Headers */, 1AEFD2F711D1807B008219D3 /* ArgumentCoders.h in Headers */, + 1AAF0C4A12B16334008E49E2 /* ArgumentCodersCF.h in Headers */, + E179FD9C134D38060015B883 /* ArgumentCodersMac.h in Headers */, BC032DA610F437D10058C15A /* ArgumentDecoder.h in Headers */, BC032DA810F437D10058C15A /* ArgumentEncoder.h in Headers */, - BC8699B5116AADAA002A925B /* WKView.h in Headers */, BC032DA910F437D10058C15A /* Arguments.h in Headers */, BCEE966D112FAF57006BCC24 /* Attachment.h in Headers */, + E1A31732134CEA6C007C9A4F /* AttributedString.h in Headers */, + 512F589712A8838800629530 /* AuthenticationChallengeProxy.h in Headers */, + 512F589912A8838800629530 /* AuthenticationDecisionListener.h in Headers */, + 512F588B12A8836600629530 /* AuthenticationManager.h in Headers */, + 512F58A312A883AD00629530 /* AuthenticationManagerMessages.h in Headers */, + 1A64256812DE42EC00CAAE2C /* BackingStore.h in Headers */, + 1AC41AC71263C88300054E94 /* BinarySemaphore.h in Headers */, + BC3065FA1259344E00E71278 /* CacheModel.h in Headers */, + 1AA2E51D12E4C05E00BC4966 /* CGUtilities.h in Headers */, + 1A2D956F12848564001EB962 /* ChildProcess.h in Headers */, 1A6F9F9011E13EFC00DB1371 /* CommandLine.h in Headers */, + 37C4E9F6131C6E7E0029BD5A /* config.h in Headers */, BC032DAB10F437D10058C15A /* Connection.h in Headers */, + 1A2C307112D555450063DAA2 /* ContextMenuState.h in Headers */, BC131BC911726C2800B69727 /* CoreIPCMessageKinds.h in Headers */, + B878B615133428DC006888E9 /* CorrectionPanel.h in Headers */, + 1A8EFDFA1253CAA200F7067F /* DataReference.h in Headers */, + 93FC67BE12D3CCF200A60610 /* DecoderAdapter.h in Headers */, + BCE81D99131AE02100241910 /* DictionaryPopupInfo.h in Headers */, + 1A6161D41278981C003ACD86 /* Download.h in Headers */, + 1A616150127798B5003ACD86 /* DownloadManager.h in Headers */, + 1AB7D4CA1288AAA700CFD08C /* DownloadProxy.h in Headers */, + 1AB7D61A1288B9D900CFD08C /* DownloadProxyMessages.h in Headers */, + C517388112DF8F4F00EE3F47 /* DragControllerAction.h in Headers */, BC8452A81162C80900CAB9B5 /* DrawingArea.h in Headers */, + 1A6421F612DCFBAB00CAAE2C /* DrawingAreaImpl.h in Headers */, + 0FB659231208B4DB0044816C /* DrawingAreaInfo.h in Headers */, + 1A64229A12DD029200CAAE2C /* DrawingAreaMessages.h in Headers */, BC2652171182608100243E12 /* DrawingAreaProxy.h in Headers */, + 1A64218612DCF49200CAAE2C /* DrawingAreaProxyImpl.h in Headers */, + 1A64230912DD09EB00CAAE2C /* DrawingAreaProxyMessages.h in Headers */, + 5DA6ED0A1490606900B41D12 /* DynamicLinkerEnvironmentExtractor.h in Headers */, + 1AA41AB512C02EC4002BE67B /* EditorState.h in Headers */, + 93FC67C012D3CCF200A60610 /* EncoderAdapter.h in Headers */, + 51B15A8513843A3900321AD8 /* EnvironmentUtilities.h in Headers */, + 1A7C6CDB1378950800B9C04D /* EnvironmentVariables.h in Headers */, + 1AA575FB1496B52600A4EE06 /* EventDispatcher.h in Headers */, + 1A90C1F41264FD71003E44D4 /* FindController.h in Headers */, + 1A910071126675C4001842F5 /* FindIndicator.h in Headers */, + 1A91010A1268C8CA001842F5 /* FindIndicatorWindow.h in Headers */, + BCE81D8D1319F7EF00241910 /* FontInfo.h in Headers */, BC17753F118BABF0007D9E9A /* GenericCallback.h in Headers */, + BC06F42F12DBB9B6002D78DE /* GeolocationPermissionRequestManager.h in Headers */, + BC06F44A12DBD1F5002D78DE /* GeolocationPermissionRequestManagerProxy.h in Headers */, + BC06F43A12DBCCFB002D78DE /* GeolocationPermissionRequestProxy.h in Headers */, + C0CE72AD1247E78D00BC0EC4 /* HandleMessage.h in Headers */, + 37F90DE31376560E0051CF68 /* HTTPCookieAcceptPolicy.h in Headers */, + BCCF6B2512C93E7A008F9C35 /* ImageOptions.h in Headers */, BC64697011DBE603006455B0 /* ImmutableArray.h in Headers */, + BCBCB0CB1215E32100DE59CA /* ImmutableDictionary.h in Headers */, BC204EE311C83E98008F3375 /* InjectedBundle.h in Headers */, + 935EEBA2127761D0003322B8 /* InjectedBundleBackForwardList.h in Headers */, + 935EEBA4127761D6003322B8 /* InjectedBundleBackForwardListItem.h in Headers */, + BCEE7DC5128B645D009827DA /* InjectedBundleClient.h in Headers */, + BC498618124D10E200D834E1 /* InjectedBundleHitTestResult.h in Headers */, + BCB28CC0120233D9007D99BC /* InjectedBundleMessageKinds.h in Headers */, + BC8147D512F66D31007B2C32 /* InjectedBundleNavigationAction.h in Headers */, + BC4BEEAB120A0A5F00FBA0C7 /* InjectedBundleNodeHandle.h in Headers */, + 512935E41288D97800A4B695 /* InjectedBundlePageContextMenuClient.h in Headers */, + E1EE53E311F8CFC000CCBEE4 /* InjectedBundlePageEditorClient.h in Headers */, + BC14E10A120B905E00826C0C /* InjectedBundlePageFormClient.h in Headers */, + CD5C66A1134B9D38004FE2A8 /* InjectedBundlePageFullScreenClient.h in Headers */, BCA8C6A911E3BA5F00812FB7 /* InjectedBundlePageLoaderClient.h in Headers */, + BC8147A912F64CDA007B2C32 /* InjectedBundlePagePolicyClient.h in Headers */, BCA8C6B011E3C08700812FB7 /* InjectedBundlePageUIClient.h in Headers */, + BC33E0D112408E8600360F3F /* InjectedBundleRangeHandle.h in Headers */, + BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */, + BCB0B0DE12305A8C00B1341E /* InjectedBundleUserMessageCoders.h in Headers */, + 1AE49A4911FFA8CE0048B464 /* JSNPMethod.h in Headers */, + 1AE4987811FF7FAA0048B464 /* JSNPObject.h in Headers */, + 512DF70B138C26C700A22FC6 /* KeychainAttribute.h in Headers */, + 512DF6D8138C181A00A22FC6 /* KeychainItemShimMethods.h in Headers */, + 1A92DC1112F8BA460017AF65 /* LayerTreeContext.h in Headers */, + 1A186EEA12EF7618008E5F37 /* LayerTreeHost.h in Headers */, + C064504A133BE709003470E2 /* LayerTreeHostCA.h in Headers */, + C0FA52431345694A0028E8C2 /* LayerTreeHostCAMac.h in Headers */, + 51A7F2F3125BF820008AEB1D /* Logging.h in Headers */, BCC56F791159957D001CCAF9 /* MachPort.h in Headers */, + 1A24B5F311F531E800C38269 /* MachUtilities.h in Headers */, BC032DAC10F437D10058C15A /* MessageID.h in Headers */, + 1A119A95127B796200A9ECB1 /* MessageSender.h in Headers */, + C0D04E9013EC759E0041EFD6 /* model.py in Headers */, + C0E3AA7C1209E83C00A49D01 /* Module.h in Headers */, + BCB0AD34122F285800B1341E /* MutableArray.h in Headers */, + BCB0AEE9122F53E300B1341E /* MutableDictionary.h in Headers */, 1A6FBA2A11E6862700DB1371 /* NetscapeBrowserFuncs.h in Headers */, 1A6FBD2811E69BC200DB1371 /* NetscapePlugin.h in Headers */, + 1A4A9C5612B816CF008FE984 /* NetscapePluginModule.h in Headers */, 1AA5889211EE70400061B882 /* NetscapePluginStream.h in Headers */, + 31A2EC5614899C0900810D71 /* NotificationPermissionRequest.h in Headers */, + 3131261F148FF82C00BA2A39 /* NotificationPermissionRequestManager.h in Headers */, + 31A2EC521489981900810D71 /* NotificationPermissionRequestManagerProxy.h in Headers */, + 1A2D848B127F6A49001EB962 /* NPIdentifierData.h in Headers */, + 1AE4976811FF658E0048B464 /* NPJSObject.h in Headers */, + 1A2D82A5127F4EAB001EB962 /* NPObjectMessageReceiver.h in Headers */, + 1A2D843A127F65D5001EB962 /* NPObjectMessageReceiverMessages.h in Headers */, + 1A2D82A7127F4EAB001EB962 /* NPObjectProxy.h in Headers */, + 1A2D82A9127F4EAB001EB962 /* NPRemoteObjectMap.h in Headers */, + 1A2161B011F37664008AD0F5 /* NPRuntimeObjectMap.h in Headers */, + 1A2162B111F38971008AD0F5 /* NPRuntimeUtilities.h in Headers */, + 1A2D84A3127F6AD1001EB962 /* NPVariantData.h in Headers */, + BCCF672D12C7EDF7008F9C35 /* OriginAndDatabases.h in Headers */, BC6EDAA6111271C600E7678B /* PageClient.h in Headers */, BC111B50112F619200337BAB /* PageClientImpl.h in Headers */, + 1A90C23712650717003E44D4 /* PageOverlay.h in Headers */, + C0D04E9113EC759E0041EFD6 /* parser.py in Headers */, + C574A58112E66681002DFE98 /* PasteboardTypes.h in Headers */, + 1AAF061412B01131008E49E2 /* PDFViewController.h in Headers */, + BCF505E71243047B005955AE /* PlatformCertificateInfo.h in Headers */, + BCC43ABB127B95DC00317F16 /* PlatformPopupMenuData.h in Headers */, BC8780FC1161C2B800CC2768 /* PlatformProcessIdentifier.h in Headers */, 1A6FB7D311E651E200DB1371 /* Plugin.h in Headers */, + 1A9FBA8D13FF04E600DEED67 /* PluginComplexTextInputState.h in Headers */, 1AA56F2911E92BC80061B882 /* PluginController.h in Headers */, + 1A8EF4CB1252403700F7067F /* PluginControllerProxy.h in Headers */, + 1A8EF96F1252AF6B00F7067F /* PluginControllerProxyMessages.h in Headers */, + 1A179780137EE82C00F97D45 /* PluginCreationParameters.h in Headers */, 1AEFCC1211D01F96008219D3 /* PluginInfoStore.h in Headers */, + 1A3D610213A7CC2A00F95D4E /* PluginModuleInfo.h in Headers */, + 1A043976124D034800FFBFB5 /* PluginProcess.h in Headers */, + 1A0EC906124C0AB8007EF4A5 /* PluginProcessConnection.h in Headers */, + 1A0EC90F124C0AF5007EF4A5 /* PluginProcessConnectionManager.h in Headers */, + 1A2BB6D114117B4D000F35D4 /* PluginProcessConnectionMessages.h in Headers */, + 1A2D90D21281C966001EB962 /* PluginProcessCreationParameters.h in Headers */, + 1A0EC7FB124BD3B6007EF4A5 /* PluginProcessMain.h in Headers */, + 1A0EC603124A9F2C007EF4A5 /* PluginProcessManager.h in Headers */, + 1A0EC6C0124BBD9B007EF4A5 /* PluginProcessMessages.h in Headers */, + 1A0EC75E124BC7B2007EF4A5 /* PluginProcessProxy.h in Headers */, + 1A043B5E124D5E9D00FFBFB5 /* PluginProcessProxyMessages.h in Headers */, + 1A043DC1124FF87500FFBFB5 /* PluginProxy.h in Headers */, + 1A8EFA711252B84100F7067F /* PluginProxyMessages.h in Headers */, + 1A4A9F3312B844E2008FE984 /* PluginQuirks.h in Headers */, 1A6FB7AF11E64B6800DB1371 /* PluginView.h in Headers */, + E1CC1B9012D7EADF00625838 /* PrintInfo.h in Headers */, BC1A7C581136E19C00FB7167 /* ProcessLauncher.h in Headers */, BC597075116591D000551FCA /* ProcessModel.h in Headers */, 1A30066E1110F4F70031937C /* ResponsivenessTimer.h in Headers */, BC2E6E881141971500A63B1E /* RunLoop.h in Headers */, + BC2D021712AC41CB00E732A3 /* SameDocumentNavigationType.h in Headers */, + 1AAB4A8D1296F0A20023952F /* SandboxExtension.h in Headers */, + 51D130541382EAC000351EDD /* SecItemRequestData.h in Headers */, + 51D130561382EAC000351EDD /* SecItemResponseData.h in Headers */, + 511F8A7F138B46FE00A95F44 /* SecItemShimMethods.h in Headers */, + 512DF6FF138C254600A22FC6 /* SecKeychainItemRequestData.h in Headers */, + 512DF701138C254600A22FC6 /* SecKeychainItemResponseData.h in Headers */, + 33152976130D0CB200ED2483 /* SecurityOriginData.h in Headers */, + 518D2CCB12D51DFB003BB93B /* SessionState.h in Headers */, + 1A6420E512DCE2FF00CAAE2C /* ShareableBitmap.h in Headers */, + 1A24BED5120894D100FBB059 /* SharedMemory.h in Headers */, + 5272B28B1406985D0096A5D0 /* StatisticsData.h in Headers */, + BCBD3C3B125BFA7A00D2C29F /* StringPairVector.h in Headers */, + 1AA417CB12C00CCA002BE67B /* TextChecker.h in Headers */, + 1A5E4DA412D3BD3D0099A2BB /* TextCheckerState.h in Headers */, + BCF50121123ED3B3005955AE /* ThreadLauncher.h in Headers */, + 1AAF263914687C39004A1E8A /* TiledCoreAnimationDrawingArea.h in Headers */, + 1AF05D8714688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.h in Headers */, + 1A64245E12DE29A100CAAE2C /* UpdateInfo.h in Headers */, + BCB0B0E012305AB100B1341E /* UserMessageCoders.h in Headers */, + 1A0F29E4120B44420053D1B9 /* VisitedLinkProvider.h in Headers */, + 1A0F29CC120B37160053D1B9 /* VisitedLinkTable.h in Headers */, + 512E352F130B55AF00ABD19A /* WebApplicationCacheManager.h in Headers */, + 512E356B130B57F000ABD19A /* WebApplicationCacheManagerMessages.h in Headers */, + 512E3525130B550600ABD19A /* WebApplicationCacheManagerProxy.h in Headers */, + 512E35F9130B642E00ABD19A /* WebApplicationCacheManagerProxyMessages.h in Headers */, BC72BA1E11E64907001EB4EA /* WebBackForwardList.h in Headers */, + 518D2CAE12D5153B003BB93B /* WebBackForwardListItem.h in Headers */, BC72B9FB11E6476B001EB4EA /* WebBackForwardListProxy.h in Headers */, + BCF50728124329AA005955AE /* WebCertificateInfo.h in Headers */, BC032D7510F4378D0058C15A /* WebChromeClient.h in Headers */, + BC4A6290147312BE006C681A /* WebConnection.h in Headers */, + BC4A6292147312BE006C681A /* WebConnectionClient.h in Headers */, + BCE9C0B71484714700E33D61 /* WebConnectionMessageKinds.h in Headers */, + BC4A62A814744EC7006C681A /* WebConnectionToWebProcess.h in Headers */, BCB9E2431120DACA00A137E0 /* WebContext.h in Headers */, + BC09B8F9147460F7005F5625 /* WebContextConnectionClient.h in Headers */, BCDE059B11CDA8AE00E41AF1 /* WebContextInjectedBundleClient.h in Headers */, + 51871B5C127CB89D00F76232 /* WebContextMenu.h in Headers */, BC032D7710F4378D0058C15A /* WebContextMenuClient.h in Headers */, + 512935D81288D19400A4B695 /* WebContextMenuItem.h in Headers */, + 510FBB9B1288C95E00AFFDF4 /* WebContextMenuItemData.h in Headers */, + 51ACBB82127A8BAD00D203B9 /* WebContextMenuProxy.h in Headers */, + 51ACBBA0127A8F2C00D203B9 /* WebContextMenuProxyMac.h in Headers */, + BCCB75C61203A1CE00222D1B /* WebContextMessageKinds.h in Headers */, + BCEE7D0E12846F69009827DA /* WebContextMessages.h in Headers */, + BCB0B0DC12305A2500B1341E /* WebContextUserMessageCoders.h in Headers */, + 330934501315B94D0097A7BC /* WebCookieManager.h in Headers */, + 330934481315B9220097A7BC /* WebCookieManagerMessages.h in Headers */, + 330934561315B9750097A7BC /* WebCookieManagerProxy.h in Headers */, + 33AA1067131F060000D4A575 /* WebCookieManagerProxyClient.h in Headers */, + 3309344A1315B9220097A7BC /* WebCookieManagerProxyMessages.h in Headers */, BC1DD7B2114DC396005ADAF3 /* WebCoreArgumentCoders.h in Headers */, + 512F589B12A8838800629530 /* WebCredential.h in Headers */, + 51578B831209ECEF00A37C4A /* WebData.h in Headers */, + F6A25FDD12ADC6CC00DC40CC /* WebDatabaseManager.h in Headers */, + F62A76B712B1B25F0005F1B6 /* WebDatabaseManagerMessages.h in Headers */, + F62A765D12B1ABC30005F1B6 /* WebDatabaseManagerProxy.h in Headers */, + BCAC111F12C92C1F00B08EEE /* WebDatabaseManagerProxyClient.h in Headers */, + F62A76B912B1B25F0005F1B6 /* WebDatabaseManagerProxyMessages.h in Headers */, + 1AB7D72C1288CAAD00CFD08C /* WebDownloadClient.h in Headers */, BC032D7B10F4378D0058C15A /* WebDragClient.h in Headers */, + BCA0EF9F12332642007D3CFB /* WebEditCommandProxy.h in Headers */, BC032D7D10F4378D0058C15A /* WebEditorClient.h in Headers */, + 516A4A5D120A2CCD00C05B7F /* WebError.h in Headers */, 1A433F0D113C53DD00FACDE9 /* WebErrors.h in Headers */, BC032DB910F4380F0058C15A /* WebEvent.h in Headers */, BC032DBB10F4380F0058C15A /* WebEventConversion.h in Headers */, BC111B5D112F629800337BAB /* WebEventFactory.h in Headers */, + 1A3DD202125E5A1F004515E6 /* WebFindClient.h in Headers */, + 1A90C1EE1264FD50003E44D4 /* WebFindOptions.h in Headers */, + BCE469541214E6CB000B98EB /* WebFormClient.h in Headers */, + BCE469561214E6CB000B98EB /* WebFormSubmissionListenerProxy.h in Headers */, BC032D8D10F437A00058C15A /* WebFrame.h in Headers */, + BCE469771214F27B000B98EB /* WebFrameListenerProxy.h in Headers */, BC032D7F10F4378D0058C15A /* WebFrameLoaderClient.h in Headers */, + 9391F2CB121B67AD00EBF7E8 /* WebFrameNetworkingContext.h in Headers */, BCB9F6A01123A84B00A137E0 /* WebFramePolicyListenerProxy.h in Headers */, BC9B38A110F538BE00443A15 /* WebFrameProxy.h in Headers */, + BC1BE1E012D54A410004A228 /* WebGeolocationClient.h in Headers */, + BC0E5FE512D697160012A72A /* WebGeolocationManager.h in Headers */, + BC0E606212D6BA910012A72A /* WebGeolocationManagerMessages.h in Headers */, + BC54CACB12D64291005C67B0 /* WebGeolocationManagerProxy.h in Headers */, + BC0E618312D6CB1D0012A72A /* WebGeolocationManagerProxyMessages.h in Headers */, + BC0E607312D6BC200012A72A /* WebGeolocationPosition.h in Headers */, + BC1BE1F212D54DBD0004A228 /* WebGeolocationProvider.h in Headers */, + 0F174AA3142A4CB70039250F /* WebGeometry.h in Headers */, + BCA56A1C12F9028E00C566C7 /* WebGraphicsContext.h in Headers */, BCF69F871176CD6F00471A52 /* WebHistoryClient.h in Headers */, + 7801C09A142290C400FAF9AF /* WebHitTestResult.h in Headers */, + 511B24AB132E097200065A0C /* WebIconDatabase.h in Headers */, + 51834593134532E90092B696 /* WebIconDatabaseClient.h in Headers */, + 51D02F6A132EC73700BEAA96 /* WebIconDatabaseMessages.h in Headers */, + 511B24A7132E095700065A0C /* WebIconDatabaseProxy.h in Headers */, + 51D02F6C132EC73700BEAA96 /* WebIconDatabaseProxyMessages.h in Headers */, + BCCF6ABD12C91EF9008F9C35 /* WebImage.h in Headers */, + 1C8E28201275D15400BC7BD0 /* WebInspector.h in Headers */, BC032D8210F4378D0058C15A /* WebInspectorClient.h in Headers */, + 1C8E25A91270E3BC00BC7BD0 /* WebInspectorFrontendClient.h in Headers */, + 1C8E2A361277852400BC7BD0 /* WebInspectorMessages.h in Headers */, + 1C8E28341275D73800BC7BD0 /* WebInspectorProxy.h in Headers */, + 1CA8B946127C882A00576C2B /* WebInspectorProxyMessages.h in Headers */, + 51A9E1001315CCDE009E7031 /* WebKeyValueStorageManager.h in Headers */, + 51A9E1291315ED35009E7031 /* WebKeyValueStorageManagerMessages.h in Headers */, + 51A9E1061315CCFC009E7031 /* WebKeyValueStorageManagerProxy.h in Headers */, + 51A9E12B1315ED35009E7031 /* WebKeyValueStorageManagerProxyMessages.h in Headers */, BCB63478116BF10600603215 /* WebKit2.h in Headers */, BC59534210FC04520098F82D /* WebLoaderClient.h in Headers */, + 33D3A3C2133960B000709BE4 /* WebMediaCacheManager.h in Headers */, + 33D3A3C91339617900709BE4 /* WebMediaCacheManagerMessages.h in Headers */, + 33D3A3BB1339606200709BE4 /* WebMediaCacheManagerProxy.h in Headers */, + 33D3A3CB1339617900709BE4 /* WebMediaCacheManagerProxyMessages.h in Headers */, + 909854ED12BC4E18000AD080 /* WebMemorySampler.h in Headers */, BCF69FA21176D01400471A52 /* WebNavigationData.h in Headers */, BCF69F9A1176CED600471A52 /* WebNavigationDataStore.h in Headers */, + 31A2EC49148997C200810D71 /* WebNotification.h in Headers */, + 310999C7146C9E3D0029DEB9 /* WebNotificationClient.h in Headers */, + 31312621148FF82C00BA2A39 /* WebNotificationManager.h in Headers */, + 31BA924E148831260062EDB5 /* WebNotificationManagerMessages.h in Headers */, + 31A2EC4B148997C200810D71 /* WebNotificationManagerProxy.h in Headers */, + 318BE1681473433700A8FBB2 /* WebNotificationManagerProxyMessages.h in Headers */, + 31A2EC4E148997C200810D71 /* WebNotificationProvider.h in Headers */, + BC33DD681238464600360F3F /* WebNumber.h in Headers */, + BC857FB512B830E600EDEB2E /* WebOpenPanelParameters.h in Headers */, + BC857F8512B82D0B00EDEB2E /* WebOpenPanelResultListener.h in Headers */, + BC1DFEA412B31F87005DF730 /* WebOpenPanelResultListenerProxy.h in Headers */, BC032D8F10F437A00058C15A /* WebPage.h in Headers */, + 5153569D1291B1D2000749DC /* WebPageContextMenuClient.h in Headers */, + BC7B6206129A0A6700D174A4 /* WebPageGroup.h in Headers */, + BC7B625212A43C9600D174A4 /* WebPageGroupData.h in Headers */, + BC7B621512A4219A00D174A4 /* WebPageGroupProxy.h in Headers */, + C0CE72A11247E71D00BC0EC4 /* WebPageMessages.h in Headers */, BC032DD110F4389F0058C15A /* WebPageProxy.h in Headers */, + BCBD3915125BB1A800D2C29F /* WebPageProxyMessages.h in Headers */, 1A3E736111CC2659007BD539 /* WebPlatformStrategies.h in Headers */, + 1AC8702D130B49A2002C1257 /* WebPluginSiteDataManager.h in Headers */, BCB9F8B01124E07700A137E0 /* WebPolicyClient.h in Headers */, + BC5744F012638FB3006F0F12 /* WebPopupItem.h in Headers */, + D3B9484711FF4B6500032B39 /* WebPopupMenu.h in Headers */, + BC574E631267D080006F0F12 /* WebPopupMenuProxy.h in Headers */, + BC5750971268F3C6006F0F12 /* WebPopupMenuProxyMac.h in Headers */, BCD597FF112B57BE00EC8C23 /* WebPreferences.h in Headers */, BCD598AC112B7FDF00EC8C23 /* WebPreferencesStore.h in Headers */, BC032D9710F437AF0058C15A /* WebProcess.h in Headers */, + 1A043A09124D11A900FFBFB5 /* WebProcessConnection.h in Headers */, + 1A043F6A12514D8B00FFBFB5 /* WebProcessConnectionMessages.h in Headers */, + BC306824125A6B9400E71278 /* WebProcessCreationParameters.h in Headers */, 1A6FA02011E1528700DB1371 /* WebProcessMain.h in Headers */, + BC3066BF125A442100E71278 /* WebProcessMessages.h in Headers */, BC032DD510F4389F0058C15A /* WebProcessProxy.h in Headers */, + BCEE7AD112817988009827DA /* WebProcessProxyMessages.h in Headers */, + 511F8A7B138B460900A95F44 /* WebProcessShim.h in Headers */, + 512F589D12A8838800629530 /* WebProtectionSpace.h in Headers */, + 33367630130C9998006C9DE2 /* WebResourceCacheManager.h in Headers */, + 33367656130C9ECA006C9DE2 /* WebResourceCacheManagerMessages.h in Headers */, + 33367636130C99B2006C9DE2 /* WebResourceCacheManagerProxy.h in Headers */, + 33367658130C9ECB006C9DE2 /* WebResourceCacheManagerProxyMessages.h in Headers */, + BC858A2012C0357B00EDEB2E /* WebResourceLoadClient.h in Headers */, + D3B9484911FF4B6500032B39 /* WebSearchPopupMenu.h in Headers */, + F634445612A885C8000612D8 /* WebSecurityOrigin.h in Headers */, BCC5715B115ADAEF001CCAF9 /* WebSystemInterface.h in Headers */, 1A594ABB112A1FB6009DE7C7 /* WebUIClient.h in Headers */, - BC204EF011C83EC8008F3375 /* WKBundleAPICast.h in Headers */, - BC1B419811D41D570011E8DD /* WKBundlePagePrivate.h in Headers */, - BCC938E11180DE440085E5FE /* WKContextPrivate.h in Headers */, - BCE17B7E1381F1170012A641 /* WKPagePrivateMac.h in Headers */, - 51A9E10B1315CD18009E7031 /* WKKeyValueStorageManager.h in Headers */, + BCA0EF7F12331E78007D3CFB /* WebUndoStep.h in Headers */, + BCDB86C11200FB97007254BE /* WebURL.h in Headers */, + BCE2315D122C30CA00D5C35A /* WebURLRequest.h in Headers */, + BC90A1D2122DD55E00CC8C50 /* WebURLResponse.h in Headers */, + F6113E25126CE1820057D0A7 /* WebUserContentURLPattern.h in Headers */, + 29CD55AA128E294F00133C85 /* WKAccessibilityWebPageObject.h in Headers */, + BCDDB32D124EC2E10048D13C /* WKAPICast.h in Headers */, + 512E34E5130B4D0500ABD19A /* WKApplicationCacheManager.h in Headers */, + BC4075F4124FF0270068F20A /* WKArray.h in Headers */, + 512F58F612A88A5400629530 /* WKAuthenticationChallenge.h in Headers */, + 512F58F812A88A5400629530 /* WKAuthenticationDecisionListener.h in Headers */, BC646C1B11DD399F006455B0 /* WKBackForwardList.h in Headers */, BC646C1D11DD399F006455B0 /* WKBackForwardListItem.h in Headers */, + BCDDB317124EBD130048D13C /* WKBase.h in Headers */, + BCBAAC73144E619E0053F82F /* WKBrowsingContextController.h in Headers */, + BCBAAC74144E61A50053F82F /* WKBrowsingContextControllerInternal.h in Headers */, + 3788A05C14743C90006319E5 /* WKBrowsingContextControllerPrivate.h in Headers */, + BCBAACF41452324F0053F82F /* WKBrowsingContextGroup.h in Headers */, + BCBAACF61452324F0053F82F /* WKBrowsingContextGroupInternal.h in Headers */, + BCBAAD0B14560A430053F82F /* WKBrowsingContextLoadDelegate.h in Headers */, BC204EEF11C83EC8008F3375 /* WKBundle.h in Headers */, + BC204EF011C83EC8008F3375 /* WKBundleAPICast.h in Headers */, + 935EEB9F127761AC003322B8 /* WKBundleBackForwardList.h in Headers */, + 935EEB9B1277617C003322B8 /* WKBundleBackForwardListItem.h in Headers */, BCD25F1711D6BDE100169B0E /* WKBundleFrame.h in Headers */, + BCF049E611FE20F600F86A58 /* WKBundleFramePrivate.h in Headers */, + BC49862F124D18C100D834E1 /* WKBundleHitTestResult.h in Headers */, BC204EF211C83EC8008F3375 /* WKBundleInitialize.h in Headers */, 65B86F1E12F11DE300B7DD8A /* WKBundleInspector.h in Headers */, - BC20528111C94284008F3375 /* WKBundlePage.h in Headers */, - BCB9E24B1120E15C00A137E0 /* WKContext.h in Headers */, - BCD0139B110FA420003B8A67 /* WKFrame.h in Headers */, - BCB9F6A51123DD0D00A137E0 /* WKFramePolicyListener.h in Headers */, - BCF69FA91176D1CB00471A52 /* WKNavigationData.h in Headers */, - BCD597D7112B56DC00EC8C23 /* WKPage.h in Headers */, - BCD597D0112B56AC00EC8C23 /* WKPreferences.h in Headers */, + BC7043CC12F75EE0006472B9 /* WKBundleNavigationAction.h in Headers */, BC4BEFE1120A1A4C00FBA0C7 /* WKBundleNodeHandle.h in Headers */, - BC14DF9F120B635F00826C0C /* WKBundleScriptWorld.h in Headers */, - BCE4695A1214EDF4000B98EB /* WKFormSubmissionListener.h in Headers */, + BC57450C1263B155006F0F12 /* WKBundleNodeHandlePrivate.h in Headers */, + BC20528111C94284008F3375 /* WKBundlePage.h in Headers */, + BC7B633D12A45D1200D174A4 /* WKBundlePageGroup.h in Headers */, + ED82A7F2128C6FAF004477B3 /* WKBundlePageOverlay.h in Headers */, + BC1B419811D41D570011E8DD /* WKBundlePagePrivate.h in Headers */, + BCF049E711FE20F600F86A58 /* WKBundlePrivate.h in Headers */, BC60C5791240A546008C5E29 /* WKBundleRangeHandle.h in Headers */, - BC49862F124D18C100D834E1 /* WKBundleHitTestResult.h in Headers */, - BC4075F4124FF0270068F20A /* WKArray.h in Headers */, + BC14DF9F120B635F00826C0C /* WKBundleScriptWorld.h in Headers */, BC4075F6124FF0270068F20A /* WKCertificateInfo.h in Headers */, - BC4075F8124FF0270068F20A /* WKData.h in Headers */, - BC4075FA124FF0270068F20A /* WKDictionary.h in Headers */, - BC4075FC124FF0270068F20A /* WKError.h in Headers */, - BC4075FE124FF0270068F20A /* WKMutableArray.h in Headers */, - BC407600124FF0270068F20A /* WKMutableDictionary.h in Headers */, - BC407602124FF0270068F20A /* WKNumber.h in Headers */, - BC407604124FF0270068F20A /* WKSerializedScriptValue.h in Headers */, - BC407606124FF0270068F20A /* WKString.h in Headers */, - BC407608124FF0270068F20A /* WKType.h in Headers */, - BC40760A124FF0270068F20A /* WKURL.h in Headers */, - BC40760C124FF0270068F20A /* WKURLRequest.h in Headers */, - BC40760E124FF0270068F20A /* WKURLResponse.h in Headers */, - BC40761A124FF0370068F20A /* WKStringCF.h in Headers */, - BC40761C124FF0370068F20A /* WKURLCF.h in Headers */, BC407627124FF0400068F20A /* WKCertificateInfoMac.h in Headers */, - BC407629124FF0400068F20A /* WKURLRequestNS.h in Headers */, - BC40762B124FF0400068F20A /* WKURLResponseNS.h in Headers */, - BC40783D1250FADD0068F20A /* WKEvent.h in Headers */, - C09AE5E9125257C20025825D /* WKNativeEvent.h in Headers */, - BCC8B374125FB69000DE46A4 /* WKGeometry.h in Headers */, - F6113E29126CE19B0057D0A7 /* WKUserContentURLPattern.h in Headers */, - 1C8E293912761E5B00BC7BD0 /* WKInspector.h in Headers */, - 1AB7D78D1288CD9A00CFD08C /* WKDownload.h in Headers */, + BCA284D71492F2C7001F9042 /* WKConnection.h in Headers */, + BC5C75C814954DA600BC4775 /* WKConnectionInternal.h in Headers */, + BC4A6297147313A0006C681A /* WKConnectionRef.h in Headers */, + BCB9E24B1120E15C00A137E0 /* WKContext.h in Headers */, 51A555F6128C6C47009ABCEC /* WKContextMenuItem.h in Headers */, 51A55601128C6D92009ABCEC /* WKContextMenuItemTypes.h in Headers */, - ED82A7F2128C6FAF004477B3 /* WKBundlePageOverlay.h in Headers */, - BC7B633712A45ABA00D174A4 /* WKPageGroup.h in Headers */, - BC7B633D12A45D1200D174A4 /* WKBundlePageGroup.h in Headers */, - 37F623B812A57B6200E3FDF6 /* WKFindOptions.h in Headers */, - 512F58F612A88A5400629530 /* WKAuthenticationChallenge.h in Headers */, - 512F58F812A88A5400629530 /* WKAuthenticationDecisionListener.h in Headers */, + BCC938E11180DE440085E5FE /* WKContextPrivate.h in Headers */, + 3309345B1315B9980097A7BC /* WKCookieManager.h in Headers */, 512F58FA12A88A5400629530 /* WKCredential.h in Headers */, - 512F58FC12A88A5400629530 /* WKProtectionSpace.h in Headers */, - F634445D12A885E9000612D8 /* WKSecurityOrigin.h in Headers */, - 518ACAEA12AEE6BB00B04B83 /* WKProtectionSpaceTypes.h in Headers */, 518ACF1112B015F800B04B83 /* WKCredentialTypes.h in Headers */, - BC2D021912AC426C00E732A3 /* WKPageLoadTypes.h in Headers */, + BC4075F8124FF0270068F20A /* WKData.h in Headers */, F62A766212B1ABED0005F1B6 /* WKDatabaseManager.h in Headers */, - BC1DFE8F12B31CA8005DF730 /* WKOpenPanelResultListener.h in Headers */, - BC857FE612B843D800EDEB2E /* WKOpenPanelParameters.h in Headers */, - BCCF6AC312C91F34008F9C35 /* WKImage.h in Headers */, - BCCF6ACA12C91F59008F9C35 /* WKImageCG.h in Headers */, + BC4075FA124FF0270068F20A /* WKDictionary.h in Headers */, + 1AB7D78D1288CD9A00CFD08C /* WKDownload.h in Headers */, + BC4075FC124FF0270068F20A /* WKError.h in Headers */, + BCFD548C132D82680055D816 /* WKErrorCF.h in Headers */, + BC40783D1250FADD0068F20A /* WKEvent.h in Headers */, + 37F623B812A57B6200E3FDF6 /* WKFindOptions.h in Headers */, + BCE4695A1214EDF4000B98EB /* WKFormSubmissionListener.h in Headers */, + BCD0139B110FA420003B8A67 /* WKFrame.h in Headers */, + BCB9F6A51123DD0D00A137E0 /* WKFramePolicyListener.h in Headers */, + E1AEA22F14687BDB00804569 /* WKFullKeyboardAccessWatcher.h in Headers */, + CDCA85C9132ABA4E00E961DF /* WKFullScreenWindowController.h in Headers */, BC54CC1212D674EE005C67B0 /* WKGeolocationManager.h in Headers */, - BC0E619812D6CD120012A72A /* WKGeolocationPosition.h in Headers */, BC06F44E12DBDF3F002D78DE /* WKGeolocationPermissionRequest.h in Headers */, - BC7043CC12F75EE0006472B9 /* WKBundleNavigationAction.h in Headers */, + BC0E619812D6CD120012A72A /* WKGeolocationPosition.h in Headers */, + BCC8B374125FB69000DE46A4 /* WKGeometry.h in Headers */, BCA56A6512F9C8F900C566C7 /* WKGraphicsContext.h in Headers */, BCA56A6912F9C9AD00C566C7 /* WKGraphicsContextCG.h in Headers */, - 512E34E5130B4D0500ABD19A /* WKApplicationCacheManager.h in Headers */, - 1AC86FF4130B46D3002C1257 /* WKPluginSiteDataManager.h in Headers */, - 3336763B130C99DC006C9DE2 /* WKResourceCacheManager.h in Headers */, - 3309345B1315B9980097A7BC /* WKCookieManager.h in Headers */, - BCFD548C132D82680055D816 /* WKErrorCF.h in Headers */, + B62E7312143047B00069EC35 /* WKHitTestResult.h in Headers */, 5110AE0D133C16CB0072717A /* WKIconDatabase.h in Headers */, 5123CF1C133D260A0056F800 /* WKIconDatabaseCG.h in Headers */, + BCCF6AC312C91F34008F9C35 /* WKImage.h in Headers */, + BCCF6ACA12C91F59008F9C35 /* WKImageCG.h in Headers */, + 1C8E293912761E5B00BC7BD0 /* WKInspector.h in Headers */, 6EE849C81368D9390038D481 /* WKInspectorMac.h in Headers */, - B62E7312143047B00069EC35 /* WKHitTestResult.h in Headers */, + 51A9E10B1315CD18009E7031 /* WKKeyValueStorageManager.h in Headers */, + 33D3A3B61339600B00709BE4 /* WKMediaCacheManager.h in Headers */, + BC4075FE124FF0270068F20A /* WKMutableArray.h in Headers */, + BC407600124FF0270068F20A /* WKMutableDictionary.h in Headers */, + C09AE5E9125257C20025825D /* WKNativeEvent.h in Headers */, + BCF69FA91176D1CB00471A52 /* WKNavigationData.h in Headers */, + 318BE17914743E6F00A8FBB2 /* WKNotification.h in Headers */, + 318BE17114743DB100A8FBB2 /* WKNotificationManager.h in Headers */, + 31A2EC74148D59CA00810D71 /* WKNotificationPermissionRequest.h in Headers */, + 312C0C4A146DDC8A0016C911 /* WKNotificationProvider.h in Headers */, + BC407602124FF0270068F20A /* WKNumber.h in Headers */, + BC857FE612B843D800EDEB2E /* WKOpenPanelParameters.h in Headers */, + BC1DFE8F12B31CA8005DF730 /* WKOpenPanelResultListener.h in Headers */, + BCD597D7112B56DC00EC8C23 /* WKPage.h in Headers */, + BC7B633712A45ABA00D174A4 /* WKPageGroup.h in Headers */, + BC2D021912AC426C00E732A3 /* WKPageLoadTypes.h in Headers */, BC177465118B9FF4007D9E9A /* WKPagePrivate.h in Headers */, + BCE17B7E1381F1170012A641 /* WKPagePrivateMac.h in Headers */, + 1AC86FF4130B46D3002C1257 /* WKPluginSiteDataManager.h in Headers */, + BCD597D0112B56AC00EC8C23 /* WKPreferences.h in Headers */, 762B748D120BC75C00819339 /* WKPreferencesPrivate.h in Headers */, + E134F01712EA5D33004EC58D /* WKPrintingView.h in Headers */, + BCBAACEB145225E30053F82F /* WKProcessGroup.h in Headers */, + BCBAACED145225E30053F82F /* WKProcessGroupInternal.h in Headers */, + 512F58FC12A88A5400629530 /* WKProtectionSpace.h in Headers */, + 518ACAEA12AEE6BB00B04B83 /* WKProtectionSpaceTypes.h in Headers */, + 3336763B130C99DC006C9DE2 /* WKResourceCacheManager.h in Headers */, BC8A501511765F5600757573 /* WKRetainPtr.h in Headers */, + F634445D12A885E9000612D8 /* WKSecurityOrigin.h in Headers */, + BC407604124FF0270068F20A /* WKSerializedScriptValue.h in Headers */, F67DD7BA125E40D9007BDCB8 /* WKSerializedScriptValuePrivate.h in Headers */, - BC8699B7116AADAA002A925B /* WKViewInternal.h in Headers */, - BC2E6E8E1141971500A63B1E /* WorkQueue.h in Headers */, - 1A2161B011F37664008AD0F5 /* NPRuntimeObjectMap.h in Headers */, - 1A2162B111F38971008AD0F5 /* NPRuntimeUtilities.h in Headers */, - 1A24B5F311F531E800C38269 /* MachUtilities.h in Headers */, - C0D04E9113EC759E0041EFD6 /* parser.py in Headers */, - C0D04E9013EC759E0041EFD6 /* model.py in Headers */, - E1EE53E311F8CFC000CCBEE4 /* InjectedBundlePageEditorClient.h in Headers */, - BCF049E611FE20F600F86A58 /* WKBundleFramePrivate.h in Headers */, - BCF049E711FE20F600F86A58 /* WKBundlePrivate.h in Headers */, - 1AE4976811FF658E0048B464 /* NPJSObject.h in Headers */, - 1AE4987811FF7FAA0048B464 /* JSNPObject.h in Headers */, - 1AE49A4911FFA8CE0048B464 /* JSNPMethod.h in Headers */, - BCDB86C11200FB97007254BE /* WebURL.h in Headers */, - BCB28CC0120233D9007D99BC /* InjectedBundleMessageKinds.h in Headers */, - BCCB75C61203A1CE00222D1B /* WebContextMessageKinds.h in Headers */, - D3B9484711FF4B6500032B39 /* WebPopupMenu.h in Headers */, - D3B9484911FF4B6500032B39 /* WebSearchPopupMenu.h in Headers */, - 0FB659231208B4DB0044816C /* DrawingAreaInfo.h in Headers */, - 51578B831209ECEF00A37C4A /* WebData.h in Headers */, - C0E3AA7C1209E83C00A49D01 /* Module.h in Headers */, - 516A4A5D120A2CCD00C05B7F /* WebError.h in Headers */, - 1A24BED5120894D100FBB059 /* SharedMemory.h in Headers */, - 1A0F29CC120B37160053D1B9 /* VisitedLinkTable.h in Headers */, - 1A0F29E4120B44420053D1B9 /* VisitedLinkProvider.h in Headers */, - BC4BEEAB120A0A5F00FBA0C7 /* InjectedBundleNodeHandle.h in Headers */, - BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */, - BC14E10A120B905E00826C0C /* InjectedBundlePageFormClient.h in Headers */, - BCE469541214E6CB000B98EB /* WebFormClient.h in Headers */, - BCE469561214E6CB000B98EB /* WebFormSubmissionListenerProxy.h in Headers */, - BCE469771214F27B000B98EB /* WebFrameListenerProxy.h in Headers */, - BCBCB0CB1215E32100DE59CA /* ImmutableDictionary.h in Headers */, - 9391F2CB121B67AD00EBF7E8 /* WebFrameNetworkingContext.h in Headers */, - BCE2315D122C30CA00D5C35A /* WebURLRequest.h in Headers */, - BC90A1D2122DD55E00CC8C50 /* WebURLResponse.h in Headers */, - BCB0AD34122F285800B1341E /* MutableArray.h in Headers */, - BCB0AEE9122F53E300B1341E /* MutableDictionary.h in Headers */, - BCB0B0DC12305A2500B1341E /* WebContextUserMessageCoders.h in Headers */, - BCB0B0DE12305A8C00B1341E /* InjectedBundleUserMessageCoders.h in Headers */, - BCB0B0E012305AB100B1341E /* UserMessageCoders.h in Headers */, - BCA0EF7F12331E78007D3CFB /* WebUndoStep.h in Headers */, - BCA0EF9F12332642007D3CFB /* WebEditCommandProxy.h in Headers */, - BC33DD681238464600360F3F /* WebNumber.h in Headers */, - BCF50121123ED3B3005955AE /* ThreadLauncher.h in Headers */, - BC33E0D112408E8600360F3F /* InjectedBundleRangeHandle.h in Headers */, - BCF505E71243047B005955AE /* PlatformCertificateInfo.h in Headers */, - BCF50728124329AA005955AE /* WebCertificateInfo.h in Headers */, - C0CE72A11247E71D00BC0EC4 /* WebPageMessages.h in Headers */, - C0CE72AD1247E78D00BC0EC4 /* HandleMessage.h in Headers */, - 1A0EC603124A9F2C007EF4A5 /* PluginProcessManager.h in Headers */, - 1A0EC6C0124BBD9B007EF4A5 /* PluginProcessMessages.h in Headers */, - 1A0EC75E124BC7B2007EF4A5 /* PluginProcessProxy.h in Headers */, - 1A0EC7FB124BD3B6007EF4A5 /* PluginProcessMain.h in Headers */, - 1A0EC906124C0AB8007EF4A5 /* PluginProcessConnection.h in Headers */, - 1A0EC90F124C0AF5007EF4A5 /* PluginProcessConnectionManager.h in Headers */, - BC498618124D10E200D834E1 /* InjectedBundleHitTestResult.h in Headers */, - 1A043976124D034800FFBFB5 /* PluginProcess.h in Headers */, - 1A043A09124D11A900FFBFB5 /* WebProcessConnection.h in Headers */, - 1A043B5E124D5E9D00FFBFB5 /* PluginProcessProxyMessages.h in Headers */, - BCDDB317124EBD130048D13C /* WKBase.h in Headers */, BCDDB32B124EC2AB0048D13C /* WKSharedAPICast.h in Headers */, - BCDDB32D124EC2E10048D13C /* WKAPICast.h in Headers */, - 1A043DC1124FF87500FFBFB5 /* PluginProxy.h in Headers */, - 1A043F6A12514D8B00FFBFB5 /* WebProcessConnectionMessages.h in Headers */, - 1A8EF4CB1252403700F7067F /* PluginControllerProxy.h in Headers */, - 1A8EF96F1252AF6B00F7067F /* PluginControllerProxyMessages.h in Headers */, - 1A8EFA711252B84100F7067F /* PluginProxyMessages.h in Headers */, - 1A8EFDFA1253CAA200F7067F /* DataReference.h in Headers */, + BC407606124FF0270068F20A /* WKString.h in Headers */, + BC40761A124FF0370068F20A /* WKStringCF.h in Headers */, BC9099801256A98200083756 /* WKStringPrivate.h in Headers */, - BC3065FA1259344E00E71278 /* CacheModel.h in Headers */, - BC3066BF125A442100E71278 /* WebProcessMessages.h in Headers */, - BC306824125A6B9400E71278 /* WebProcessCreationParameters.h in Headers */, - 51A7F2F3125BF820008AEB1D /* Logging.h in Headers */, - BCBD3915125BB1A800D2C29F /* WebPageProxyMessages.h in Headers */, - BCBD3C3B125BFA7A00D2C29F /* StringPairVector.h in Headers */, - 1A3DD202125E5A1F004515E6 /* WebFindClient.h in Headers */, - 1A3DD206125E5A2F004515E6 /* APIClient.h in Headers */, - BC5744F012638FB3006F0F12 /* WebPopupItem.h in Headers */, - BC57450C1263B155006F0F12 /* WKBundleNodeHandlePrivate.h in Headers */, - 1AC41AC71263C88300054E94 /* BinarySemaphore.h in Headers */, - 1A90C1EE1264FD50003E44D4 /* WebFindOptions.h in Headers */, - 1A90C1F41264FD71003E44D4 /* FindController.h in Headers */, - 1A90C23712650717003E44D4 /* PageOverlay.h in Headers */, - BC574E631267D080006F0F12 /* WebPopupMenuProxy.h in Headers */, - BC5750971268F3C6006F0F12 /* WebPopupMenuProxyMac.h in Headers */, - 1A910071126675C4001842F5 /* FindIndicator.h in Headers */, - 1A91010A1268C8CA001842F5 /* FindIndicatorWindow.h in Headers */, - F6113E25126CE1820057D0A7 /* WebUserContentURLPattern.h in Headers */, - 1C8E25A91270E3BC00BC7BD0 /* WebInspectorFrontendClient.h in Headers */, - 1C8E28201275D15400BC7BD0 /* WebInspector.h in Headers */, - 1C8E28341275D73800BC7BD0 /* WebInspectorProxy.h in Headers */, - 935EEB9B1277617C003322B8 /* WKBundleBackForwardListItem.h in Headers */, - 935EEB9F127761AC003322B8 /* WKBundleBackForwardList.h in Headers */, - 935EEBA2127761D0003322B8 /* InjectedBundleBackForwardList.h in Headers */, - 935EEBA4127761D6003322B8 /* InjectedBundleBackForwardListItem.h in Headers */, - 1A616150127798B5003ACD86 /* DownloadManager.h in Headers */, - 1A6161D41278981C003ACD86 /* Download.h in Headers */, - 51ACBB82127A8BAD00D203B9 /* WebContextMenuProxy.h in Headers */, - 51ACBBA0127A8F2C00D203B9 /* WebContextMenuProxyMac.h in Headers */, - 1A119A95127B796200A9ECB1 /* MessageSender.h in Headers */, - BCC43ABB127B95DC00317F16 /* PlatformPopupMenuData.h in Headers */, - 51871B5C127CB89D00F76232 /* WebContextMenu.h in Headers */, - 1A2D82A5127F4EAB001EB962 /* NPObjectMessageReceiver.h in Headers */, - 1A2D82A7127F4EAB001EB962 /* NPObjectProxy.h in Headers */, - 1A2D82A9127F4EAB001EB962 /* NPRemoteObjectMap.h in Headers */, - 1A2D843A127F65D5001EB962 /* NPObjectMessageReceiverMessages.h in Headers */, - 1A2D848B127F6A49001EB962 /* NPIdentifierData.h in Headers */, - 1A2D84A3127F6AD1001EB962 /* NPVariantData.h in Headers */, - 1C8E2A361277852400BC7BD0 /* WebInspectorMessages.h in Headers */, - 1A2D90D21281C966001EB962 /* PluginProcessCreationParameters.h in Headers */, - BCEE7AD112817988009827DA /* WebProcessProxyMessages.h in Headers */, - 1A2D956F12848564001EB962 /* ChildProcess.h in Headers */, - BCEE7D0E12846F69009827DA /* WebContextMessages.h in Headers */, - 510FBB9B1288C95E00AFFDF4 /* WebContextMenuItemData.h in Headers */, - 1AB7D4CA1288AAA700CFD08C /* DownloadProxy.h in Headers */, - 1AB7D61A1288B9D900CFD08C /* DownloadProxyMessages.h in Headers */, - 512935D81288D19400A4B695 /* WebContextMenuItem.h in Headers */, - 512935E41288D97800A4B695 /* InjectedBundlePageContextMenuClient.h in Headers */, - 1AB7D72C1288CAAD00CFD08C /* WebDownloadClient.h in Headers */, - BCEE7DC5128B645D009827DA /* InjectedBundleClient.h in Headers */, - 1CA8B946127C882A00576C2B /* WebInspectorProxyMessages.h in Headers */, - 29CD55AA128E294F00133C85 /* WKAccessibilityWebPageObject.h in Headers */, - 5153569D1291B1D2000749DC /* WebPageContextMenuClient.h in Headers */, - 1AAB4A8D1296F0A20023952F /* SandboxExtension.h in Headers */, - BC7B6206129A0A6700D174A4 /* WebPageGroup.h in Headers */, - BC7B621512A4219A00D174A4 /* WebPageGroupProxy.h in Headers */, - BC7B625212A43C9600D174A4 /* WebPageGroupData.h in Headers */, - 512F588B12A8836600629530 /* AuthenticationManager.h in Headers */, - 512F589712A8838800629530 /* AuthenticationChallengeProxy.h in Headers */, - 512F589912A8838800629530 /* AuthenticationDecisionListener.h in Headers */, - 512F589B12A8838800629530 /* WebCredential.h in Headers */, - 512F589D12A8838800629530 /* WebProtectionSpace.h in Headers */, - 512F58A312A883AD00629530 /* AuthenticationManagerMessages.h in Headers */, - F634445612A885C8000612D8 /* WebSecurityOrigin.h in Headers */, - BC2D021712AC41CB00E732A3 /* SameDocumentNavigationType.h in Headers */, - F6A25FDD12ADC6CC00DC40CC /* WebDatabaseManager.h in Headers */, - 1AAF061412B01131008E49E2 /* PDFViewController.h in Headers */, - 1AAF0C4A12B16334008E49E2 /* ArgumentCodersCF.h in Headers */, - F62A765D12B1ABC30005F1B6 /* WebDatabaseManagerProxy.h in Headers */, - F62A76B712B1B25F0005F1B6 /* WebDatabaseManagerMessages.h in Headers */, - F62A76B912B1B25F0005F1B6 /* WebDatabaseManagerProxyMessages.h in Headers */, - BC1DFEA412B31F87005DF730 /* WebOpenPanelResultListenerProxy.h in Headers */, - BC857F8512B82D0B00EDEB2E /* WebOpenPanelResultListener.h in Headers */, - BC857FB512B830E600EDEB2E /* WebOpenPanelParameters.h in Headers */, 1A4A9AA812B7E796008FE984 /* WKTextInputWindowController.h in Headers */, - 1A4A9C5612B816CF008FE984 /* NetscapePluginModule.h in Headers */, - 1A4A9F3312B844E2008FE984 /* PluginQuirks.h in Headers */, - BC858A2012C0357B00EDEB2E /* WebResourceLoadClient.h in Headers */, - 1AA417CB12C00CCA002BE67B /* TextChecker.h in Headers */, - 909854ED12BC4E18000AD080 /* WebMemorySampler.h in Headers */, - 1AA41AB512C02EC4002BE67B /* EditorState.h in Headers */, - BCCF672D12C7EDF7008F9C35 /* OriginAndDatabases.h in Headers */, - BCCF6ABD12C91EF9008F9C35 /* WebImage.h in Headers */, - BCAC111F12C92C1F00B08EEE /* WebDatabaseManagerProxyClient.h in Headers */, - BCCF6B2512C93E7A008F9C35 /* ImageOptions.h in Headers */, - 93FC67BE12D3CCF200A60610 /* DecoderAdapter.h in Headers */, - 93FC67C012D3CCF200A60610 /* EncoderAdapter.h in Headers */, - 1A5E4DA412D3BD3D0099A2BB /* TextCheckerState.h in Headers */, - 518D2CAE12D5153B003BB93B /* WebBackForwardListItem.h in Headers */, - BC1BE1E012D54A410004A228 /* WebGeolocationClient.h in Headers */, - BC1BE1F212D54DBD0004A228 /* WebGeolocationProvider.h in Headers */, - 1A2C307112D555450063DAA2 /* ContextMenuState.h in Headers */, - 518D2CCB12D51DFB003BB93B /* SessionState.h in Headers */, - E1CC1B9012D7EADF00625838 /* PrintInfo.h in Headers */, - BC54CACB12D64291005C67B0 /* WebGeolocationManagerProxy.h in Headers */, - BC0E5FE512D697160012A72A /* WebGeolocationManager.h in Headers */, - BC0E606212D6BA910012A72A /* WebGeolocationManagerMessages.h in Headers */, - BC0E607312D6BC200012A72A /* WebGeolocationPosition.h in Headers */, - BC0E618312D6CB1D0012A72A /* WebGeolocationManagerProxyMessages.h in Headers */, - BC06F42F12DBB9B6002D78DE /* GeolocationPermissionRequestManager.h in Headers */, - BC06F43A12DBCCFB002D78DE /* GeolocationPermissionRequestProxy.h in Headers */, - BC06F44A12DBD1F5002D78DE /* GeolocationPermissionRequestManagerProxy.h in Headers */, - 1A6420E512DCE2FF00CAAE2C /* ShareableBitmap.h in Headers */, - 1A64218612DCF49200CAAE2C /* DrawingAreaProxyImpl.h in Headers */, - 1A6421F612DCFBAB00CAAE2C /* DrawingAreaImpl.h in Headers */, - 1A64229A12DD029200CAAE2C /* DrawingAreaMessages.h in Headers */, - 1A64230912DD09EB00CAAE2C /* DrawingAreaProxyMessages.h in Headers */, - 1A64245E12DE29A100CAAE2C /* UpdateInfo.h in Headers */, - 1A64256812DE42EC00CAAE2C /* BackingStore.h in Headers */, - C517388112DF8F4F00EE3F47 /* DragControllerAction.h in Headers */, - 1AA2E51D12E4C05E00BC4966 /* CGUtilities.h in Headers */, - C574A58112E66681002DFE98 /* PasteboardTypes.h in Headers */, - E134F01712EA5D33004EC58D /* WKPrintingView.h in Headers */, - 1A186EEA12EF7618008E5F37 /* LayerTreeHost.h in Headers */, + BC407608124FF0270068F20A /* WKType.h in Headers */, + BC40760A124FF0270068F20A /* WKURL.h in Headers */, + BC40761C124FF0370068F20A /* WKURLCF.h in Headers */, + BC40760C124FF0270068F20A /* WKURLRequest.h in Headers */, + BC407629124FF0400068F20A /* WKURLRequestNS.h in Headers */, + BC40760E124FF0270068F20A /* WKURLResponse.h in Headers */, + BC40762B124FF0400068F20A /* WKURLResponseNS.h in Headers */, + F6113E29126CE19B0057D0A7 /* WKUserContentURLPattern.h in Headers */, + BC8699B5116AADAA002A925B /* WKView.h in Headers */, + BC8699B7116AADAA002A925B /* WKViewInternal.h in Headers */, BFA6179F12F0B99D0033E0CA /* WKViewPrivate.h in Headers */, - BC8147A912F64CDA007B2C32 /* InjectedBundlePagePolicyClient.h in Headers */, - BC8147D512F66D31007B2C32 /* InjectedBundleNavigationAction.h in Headers */, - 1A92DC1112F8BA460017AF65 /* LayerTreeContext.h in Headers */, - BCA56A1C12F9028E00C566C7 /* WebGraphicsContext.h in Headers */, - 512E3525130B550600ABD19A /* WebApplicationCacheManagerProxy.h in Headers */, - 512E352F130B55AF00ABD19A /* WebApplicationCacheManager.h in Headers */, - 512E356B130B57F000ABD19A /* WebApplicationCacheManagerMessages.h in Headers */, - 512E35F9130B642E00ABD19A /* WebApplicationCacheManagerProxyMessages.h in Headers */, - 1AC8702D130B49A2002C1257 /* WebPluginSiteDataManager.h in Headers */, - 33367630130C9998006C9DE2 /* WebResourceCacheManager.h in Headers */, - 33367636130C99B2006C9DE2 /* WebResourceCacheManagerProxy.h in Headers */, - 33367656130C9ECA006C9DE2 /* WebResourceCacheManagerMessages.h in Headers */, - 33367658130C9ECB006C9DE2 /* WebResourceCacheManagerProxyMessages.h in Headers */, - 33152976130D0CB200ED2483 /* SecurityOriginData.h in Headers */, - 51A9E1001315CCDE009E7031 /* WebKeyValueStorageManager.h in Headers */, - 51A9E1061315CCFC009E7031 /* WebKeyValueStorageManagerProxy.h in Headers */, - 51A9E1291315ED35009E7031 /* WebKeyValueStorageManagerMessages.h in Headers */, - 51A9E12B1315ED35009E7031 /* WebKeyValueStorageManagerProxyMessages.h in Headers */, - 330934481315B9220097A7BC /* WebCookieManagerMessages.h in Headers */, - 3309344A1315B9220097A7BC /* WebCookieManagerProxyMessages.h in Headers */, - 330934501315B94D0097A7BC /* WebCookieManager.h in Headers */, - 330934561315B9750097A7BC /* WebCookieManagerProxy.h in Headers */, - BCE81D8D1319F7EF00241910 /* FontInfo.h in Headers */, - BCE81D99131AE02100241910 /* DictionaryPopupInfo.h in Headers */, - 37C4E9F6131C6E7E0029BD5A /* config.h in Headers */, - 33AA1067131F060000D4A575 /* WebCookieManagerProxyClient.h in Headers */, - CDCA85C9132ABA4E00E961DF /* WKFullScreenWindowController.h in Headers */, - 511B24A7132E095700065A0C /* WebIconDatabaseProxy.h in Headers */, - 511B24AB132E097200065A0C /* WebIconDatabase.h in Headers */, - 51D02F6A132EC73700BEAA96 /* WebIconDatabaseMessages.h in Headers */, - 51D02F6C132EC73700BEAA96 /* WebIconDatabaseProxyMessages.h in Headers */, - B878B615133428DC006888E9 /* CorrectionPanel.h in Headers */, - 33D3A3B61339600B00709BE4 /* WKMediaCacheManager.h in Headers */, - 33D3A3BB1339606200709BE4 /* WebMediaCacheManagerProxy.h in Headers */, - 33D3A3C2133960B000709BE4 /* WebMediaCacheManager.h in Headers */, - 33D3A3C91339617900709BE4 /* WebMediaCacheManagerMessages.h in Headers */, - 33D3A3CB1339617900709BE4 /* WebMediaCacheManagerProxyMessages.h in Headers */, - C064504A133BE709003470E2 /* LayerTreeHostCA.h in Headers */, - 51834593134532E90092B696 /* WebIconDatabaseClient.h in Headers */, - C0FA52431345694A0028E8C2 /* LayerTreeHostCAMac.h in Headers */, - E1A31732134CEA6C007C9A4F /* AttributedString.h in Headers */, - E179FD9C134D38060015B883 /* ArgumentCodersMac.h in Headers */, - CD5C66A1134B9D38004FE2A8 /* InjectedBundlePageFullScreenClient.h in Headers */, - 37F90DE31376560E0051CF68 /* HTTPCookieAcceptPolicy.h in Headers */, - 1A7C6CDB1378950800B9C04D /* EnvironmentVariables.h in Headers */, - 1A179780137EE82C00F97D45 /* PluginCreationParameters.h in Headers */, - 51D130541382EAC000351EDD /* SecItemRequestData.h in Headers */, - 51D130561382EAC000351EDD /* SecItemResponseData.h in Headers */, - 51B15A8513843A3900321AD8 /* EnvironmentUtilities.h in Headers */, - 511F8A7B138B460900A95F44 /* WebProcessShim.h in Headers */, - 511F8A7F138B46FE00A95F44 /* SecItemShimMethods.h in Headers */, - 512DF6D8138C181A00A22FC6 /* KeychainItemShimMethods.h in Headers */, - 512DF6FF138C254600A22FC6 /* SecKeychainItemRequestData.h in Headers */, - 512DF701138C254600A22FC6 /* SecKeychainItemResponseData.h in Headers */, - 512DF70B138C26C700A22FC6 /* KeychainAttribute.h in Headers */, - 93C01DAC139AC91700ED51D7 /* CoreIPCClientRunLoop.h in Headers */, - 1A3D610213A7CC2A00F95D4E /* PluginModuleInfo.h in Headers */, - 5D51845613BCF9CC00C7FF4A /* APIClientTraits.h in Headers */, - 1A9FBA8D13FF04E600DEED67 /* PluginComplexTextInputState.h in Headers */, - 5272B28B1406985D0096A5D0 /* StatisticsData.h in Headers */, - 1A2BB6D114117B4D000F35D4 /* PluginProcessConnectionMessages.h in Headers */, - 7801C09A142290C400FAF9AF /* WebHitTestResult.h in Headers */, - 0F174AA3142A4CB70039250F /* WebGeometry.h in Headers */, - BCBAAC73144E619E0053F82F /* WKBrowsingContextController.h in Headers */, - BCBAAC74144E61A50053F82F /* WKBrowsingContextControllerInternal.h in Headers */, - BCBAACEB145225E30053F82F /* WKProcessGroup.h in Headers */, - BCBAACED145225E30053F82F /* WKProcessGroupInternal.h in Headers */, - BCBAACF41452324F0053F82F /* WKBrowsingContextGroup.h in Headers */, - BCBAACF61452324F0053F82F /* WKBrowsingContextGroupInternal.h in Headers */, - BCBAAD0B14560A430053F82F /* WKBrowsingContextLoadDelegate.h in Headers */, - E1AEA22F14687BDB00804569 /* WKFullKeyboardAccessWatcher.h in Headers */, - 1AAF263914687C39004A1E8A /* TiledCoreAnimationDrawingArea.h in Headers */, - 1AF05D8714688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.h in Headers */, - BC4A6290147312BE006C681A /* WebConnection.h in Headers */, - BC4A6292147312BE006C681A /* WebConnectionClient.h in Headers */, - BC4A6297147313A0006C681A /* WKConnectionRef.h in Headers */, - BC4A62A814744EC7006C681A /* WebConnectionToWebProcess.h in Headers */, - BC09B8F9147460F7005F5625 /* WebContextConnectionClient.h in Headers */, - 3788A05C14743C90006319E5 /* WKBrowsingContextControllerPrivate.h in Headers */, - BCE9C0B71484714700E33D61 /* WebConnectionMessageKinds.h in Headers */, - 310999C7146C9E3D0029DEB9 /* WebNotificationClient.h in Headers */, - 312C0C4A146DDC8A0016C911 /* WKNotificationProvider.h in Headers */, - 318BE1681473433700A8FBB2 /* WebNotificationManagerProxyMessages.h in Headers */, - 318BE17114743DB100A8FBB2 /* WKNotificationManager.h in Headers */, - 318BE17914743E6F00A8FBB2 /* WKNotification.h in Headers */, - 31BA924E148831260062EDB5 /* WebNotificationManagerMessages.h in Headers */, - 31A2EC49148997C200810D71 /* WebNotification.h in Headers */, - 31A2EC4B148997C200810D71 /* WebNotificationManagerProxy.h in Headers */, - 31A2EC4E148997C200810D71 /* WebNotificationProvider.h in Headers */, - 31A2EC521489981900810D71 /* NotificationPermissionRequestManagerProxy.h in Headers */, - 31A2EC5614899C0900810D71 /* NotificationPermissionRequest.h in Headers */, - 31A2EC74148D59CA00810D71 /* WKNotificationPermissionRequest.h in Headers */, - 3131261F148FF82C00BA2A39 /* NotificationPermissionRequestManager.h in Headers */, - 31312621148FF82C00BA2A39 /* WebNotificationManager.h in Headers */, - BCA284D71492F2C7001F9042 /* WKConnection.h in Headers */, - BC5C75C814954DA600BC4775 /* WKConnectionInternal.h in Headers */, - 5DA6ED0A1490606900B41D12 /* DynamicLinkerEnvironmentExtractor.h in Headers */, - 1AA575FB1496B52600A4EE06 /* EventDispatcher.h in Headers */, + BC2E6E8E1141971500A63B1E /* WorkQueue.h in Headers */, + 1AB42E8714BBBBB2004272F7 /* KeychainShimResponseMap.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4284,8 +4281,8 @@ buildActionMask = 2147483647; files = ( 6D8A91A611F0EFD100DD01FE /* com.apple.WebProcess.sb in Resources */, - E133FD8A1423DD7F00FC7BFB /* WebKit.icns in Resources */, 1AA575FE1496B6F300A4EE06 /* EventDispatcher.messages.in in Resources */, + E133FD8A1423DD7F00FC7BFB /* WebKit.icns in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4440,429 +4437,428 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 5D51845513BCF9CC00C7FF4A /* APIClientTraits.cpp in Sources */, + B63403F914910D57001070B5 /* APIObject.cpp in Sources */, + 1A3D610513A7F03A00F95D4E /* ArgumentCoders.cpp in Sources */, + 1AAF0C4B12B16334008E49E2 /* ArgumentCodersCF.cpp in Sources */, + E179FD9F134D38250015B883 /* ArgumentCodersMac.mm in Sources */, BC032DA510F437D10058C15A /* ArgumentDecoder.cpp in Sources */, BC032DA710F437D10058C15A /* ArgumentEncoder.cpp in Sources */, BCEE966C112FAF57006BCC24 /* Attachment.cpp in Sources */, + E1A31735134CEA80007C9A4F /* AttributedString.mm in Sources */, + 512F589612A8838800629530 /* AuthenticationChallengeProxy.cpp in Sources */, + 512F589812A8838800629530 /* AuthenticationDecisionListener.cpp in Sources */, + 512F588A12A8836600629530 /* AuthenticationManager.cpp in Sources */, + 51C4032C136749D800DC972D /* AuthenticationManager.mac.mm in Sources */, + 512F58A212A883AD00629530 /* AuthenticationManagerMessageReceiver.cpp in Sources */, + 1A64256912DE42EC00CAAE2C /* BackingStore.cpp in Sources */, + 1A64292D12DE5F9800CAAE2C /* BackingStoreMac.mm in Sources */, + 1AC41AC81263C88300054E94 /* BinarySemaphore.cpp in Sources */, + E199875E142C045400BB2DE7 /* BuiltInPDFView.cpp in Sources */, + 1AA2E51E12E4C05E00BC4966 /* CGUtilities.cpp in Sources */, + 1A2D957012848564001EB962 /* ChildProcess.cpp in Sources */, 1A6F9FB711E1408500DB1371 /* CommandLineMac.cpp in Sources */, BC032DAA10F437D10058C15A /* Connection.cpp in Sources */, 1A30EAC6115D7DA30053E937 /* ConnectionMac.cpp in Sources */, + B878B616133428DC006888E9 /* CorrectionPanel.mm in Sources */, + 1A8EFDFE1253CB6E00F7067F /* DataReference.cpp in Sources */, + 93FC67BD12D3CCF200A60610 /* DecoderAdapter.cpp in Sources */, + BCE81D98131AE02100241910 /* DictionaryPopupInfo.cpp in Sources */, + 1A6161D51278981C003ACD86 /* Download.cpp in Sources */, + 1A61639612789B2F003ACD86 /* DownloadMac.mm in Sources */, + 1A61614F127798B5003ACD86 /* DownloadManager.cpp in Sources */, + 1AB7D4CB1288AAA700CFD08C /* DownloadProxy.cpp in Sources */, + 1AB7D6191288B9D900CFD08C /* DownloadProxyMessageReceiver.cpp in Sources */, BC8452A71162C80900CAB9B5 /* DrawingArea.cpp in Sources */, + 1A6421F712DCFBAB00CAAE2C /* DrawingAreaImpl.cpp in Sources */, + 1A64229912DD029200CAAE2C /* DrawingAreaMessageReceiver.cpp in Sources */, BC2652161182608100243E12 /* DrawingAreaProxy.cpp in Sources */, + 1A64218712DCF49200CAAE2C /* DrawingAreaProxyImpl.cpp in Sources */, + 1A64230812DD09EB00CAAE2C /* DrawingAreaProxyMessageReceiver.cpp in Sources */, + 5DA6ED0B1490606900B41D12 /* DynamicLinkerEnvironmentExtractor.mm in Sources */, + 8CFECE941490F140002AAA32 /* EditorState.cpp in Sources */, + 93FC67BF12D3CCF200A60610 /* EncoderAdapter.cpp in Sources */, + 51B15A8413843A3900321AD8 /* EnvironmentUtilities.cpp in Sources */, + 1A7C6CDA1378950800B9C04D /* EnvironmentVariables.cpp in Sources */, + 1AA575FA1496B52600A4EE06 /* EventDispatcher.cpp in Sources */, + 1AA576021496B97900A4EE06 /* EventDispatcherMessageReceiver.cpp in Sources */, + 1A90C1F51264FD71003E44D4 /* FindController.cpp in Sources */, + 1A910072126675C4001842F5 /* FindIndicator.cpp in Sources */, + 1A91010B1268C8CA001842F5 /* FindIndicatorWindow.mm in Sources */, + BCE81D8C1319F7EF00241910 /* FontInfo.cpp in Sources */, + BC06F43012DBB9B6002D78DE /* GeolocationPermissionRequestManager.cpp in Sources */, + BC06F44B12DBD1F5002D78DE /* GeolocationPermissionRequestManagerProxy.cpp in Sources */, + BC06F43B12DBCCFB002D78DE /* GeolocationPermissionRequestProxy.cpp in Sources */, BC64696F11DBE603006455B0 /* ImmutableArray.cpp in Sources */, + BCBCB0CD1215E33A00DE59CA /* ImmutableDictionary.cpp in Sources */, BC204EE211C83E98008F3375 /* InjectedBundle.cpp in Sources */, + 935EEBA1127761CC003322B8 /* InjectedBundleBackForwardList.cpp in Sources */, + 935EEBA3127761D3003322B8 /* InjectedBundleBackForwardListItem.cpp in Sources */, + BCEE7DC6128B645D009827DA /* InjectedBundleClient.cpp in Sources */, + BC498619124D10E200D834E1 /* InjectedBundleHitTestResult.cpp in Sources */, BC204EE611C83EA9008F3375 /* InjectedBundleMac.cpp in Sources */, + BC8147D612F66D31007B2C32 /* InjectedBundleNavigationAction.cpp in Sources */, + BC4BEEAC120A0A5F00FBA0C7 /* InjectedBundleNodeHandle.cpp in Sources */, + 512935E31288D97800A4B695 /* InjectedBundlePageContextMenuClient.cpp in Sources */, + E1EE53E711F8CFFB00CCBEE4 /* InjectedBundlePageEditorClient.cpp in Sources */, + BC14E109120B905E00826C0C /* InjectedBundlePageFormClient.cpp in Sources */, + CD5C66A0134B9D38004FE2A8 /* InjectedBundlePageFullScreenClient.cpp in Sources */, BCA8C6A811E3BA5F00812FB7 /* InjectedBundlePageLoaderClient.cpp in Sources */, + BC8147AA12F64CDA007B2C32 /* InjectedBundlePagePolicyClient.cpp in Sources */, + 659C551E130006410025C0C2 /* InjectedBundlePageResourceLoadClient.cpp in Sources */, BCA8C6AF11E3C08700812FB7 /* InjectedBundlePageUIClient.cpp in Sources */, + BC33E0D212408E8600360F3F /* InjectedBundleRangeHandle.cpp in Sources */, + BC14DF78120B5B7900826C0C /* InjectedBundleScriptWorld.cpp in Sources */, + 1AE49A4A11FFA8CE0048B464 /* JSNPMethod.cpp in Sources */, + 1AE4987911FF7FAA0048B464 /* JSNPObject.cpp in Sources */, + 512DF70A138C26C700A22FC6 /* KeychainAttribute.cpp in Sources */, + 512DF6D9138C181A00A22FC6 /* KeychainItemShimMethods.mm in Sources */, + 1A92DC1312F8BAB90017AF65 /* LayerTreeContextMac.mm in Sources */, + 1A186EEB12EF7618008E5F37 /* LayerTreeHost.cpp in Sources */, + C0D74DDE133BE2D90089CD44 /* LayerTreeHostCA.cpp in Sources */, + C03A136C133BEBF900D767D1 /* LayerTreeHostCAMac.mm in Sources */, + 51A7F2F5125BF8D4008AEB1D /* Logging.cpp in Sources */, + 5160BFE113381DF900918999 /* Logging.mac.mm in Sources */, + 1A24B5F211F531E800C38269 /* MachUtilities.cpp in Sources */, + C0E3AA7B1209E83500A49D01 /* Module.cpp in Sources */, + C0E3AA7A1209E83000A49D01 /* ModuleMac.mm in Sources */, + BCB0AD33122F285800B1341E /* MutableArray.cpp in Sources */, + BCB0AEEA122F53E300B1341E /* MutableDictionary.cpp in Sources */, + C02BFF1E1251502E009CCBEA /* NativeWebKeyboardEventMac.mm in Sources */, + 31EA25D2134F78C0005B1452 /* NativeWebMouseEventMac.mm in Sources */, + DF58C6361371ACA000F9A37C /* NativeWebWheelEventMac.mm in Sources */, 1A6FBA2B11E6862700DB1371 /* NetscapeBrowserFuncs.cpp in Sources */, 1A6FBD2911E69BC200DB1371 /* NetscapePlugin.cpp in Sources */, 1AE5B7FB11E7AED200BA6767 /* NetscapePluginMac.mm in Sources */, + 1A4A9C5512B816CF008FE984 /* NetscapePluginModule.cpp in Sources */, + 1A4A9C9A12B821CD008FE984 /* NetscapePluginModuleMac.mm in Sources */, 1AA5889311EE70400061B882 /* NetscapePluginStream.cpp in Sources */, + 31A2EC551489982E00810D71 /* NotificationPermissionRequest.cpp in Sources */, + 3131261E148FF82C00BA2A39 /* NotificationPermissionRequestManager.cpp in Sources */, + 31A2EC501489980500810D71 /* NotificationPermissionRequestManagerProxy.cpp in Sources */, + 1A2D848C127F6A49001EB962 /* NPIdentifierData.cpp in Sources */, + 1AE4976911FF658E0048B464 /* NPJSObject.cpp in Sources */, + 1A2D82A4127F4EAB001EB962 /* NPObjectMessageReceiver.cpp in Sources */, + 1A2D8439127F65D5001EB962 /* NPObjectMessageReceiverMessageReceiver.cpp in Sources */, + 1A2D82A6127F4EAB001EB962 /* NPObjectProxy.cpp in Sources */, + 1A2D82A8127F4EAB001EB962 /* NPRemoteObjectMap.cpp in Sources */, + 1A2161B111F37664008AD0F5 /* NPRuntimeObjectMap.cpp in Sources */, + 1A2162B011F38971008AD0F5 /* NPRuntimeUtilities.cpp in Sources */, + 1A2D84A4127F6AD1001EB962 /* NPVariantData.cpp in Sources */, + BCCF673312C7F15C008F9C35 /* OriginAndDatabases.cpp in Sources */, BC111B51112F619200337BAB /* PageClientImpl.mm in Sources */, + 1A90C23812650717003E44D4 /* PageOverlay.cpp in Sources */, + C574A58212E66681002DFE98 /* PasteboardTypes.mm in Sources */, + 1AAF061512B01131008E49E2 /* PDFViewController.mm in Sources */, + BCF505E81243047B005955AE /* PlatformCertificateInfo.mm in Sources */, + BCC43ABA127B95DC00317F16 /* PlatformPopupMenuData.cpp in Sources */, 1A6FB7D211E651E200DB1371 /* Plugin.cpp in Sources */, + 1A8EF4CC1252403700F7067F /* PluginControllerProxy.cpp in Sources */, + 1A2D91A61281D739001EB962 /* PluginControllerProxyMac.mm in Sources */, + 1A8EF96E1252AF6B00F7067F /* PluginControllerProxyMessageReceiver.cpp in Sources */, + 1A17977F137EE82C00F97D45 /* PluginCreationParameters.cpp in Sources */, 1AEFCC1311D01F96008219D3 /* PluginInfoStore.cpp in Sources */, 1AEFCCBD11D02C5E008219D3 /* PluginInfoStoreMac.mm in Sources */, + 1A3D610113A7CC2A00F95D4E /* PluginModuleInfo.cpp in Sources */, + 1A043977124D034800FFBFB5 /* PluginProcess.cpp in Sources */, + 1A0EC907124C0AB8007EF4A5 /* PluginProcessConnection.cpp in Sources */, + 1A0EC910124C0AF5007EF4A5 /* PluginProcessConnectionManager.cpp in Sources */, + 1A2BB6D014117B4D000F35D4 /* PluginProcessConnectionMessageReceiver.cpp in Sources */, + 1A2D90D31281C966001EB962 /* PluginProcessCreationParameters.cpp in Sources */, + 1AA4792312A59FD9008236C3 /* PluginProcessMac.mm in Sources */, + 1A0EC803124BD41E007EF4A5 /* PluginProcessMainMac.mm in Sources */, + 1A0EC604124A9F2C007EF4A5 /* PluginProcessManager.cpp in Sources */, + 1A043CEB124FE38F00FFBFB5 /* PluginProcessMessageReceiver.cpp in Sources */, + 1A0EC75F124BC7B2007EF4A5 /* PluginProcessProxy.cpp in Sources */, + 1A2D90BB1281C931001EB962 /* PluginProcessProxyMac.mm in Sources */, + 1A043B5D124D5E9D00FFBFB5 /* PluginProcessProxyMessageReceiver.cpp in Sources */, + 1A043DC2124FF87500FFBFB5 /* PluginProxy.cpp in Sources */, + 1A2D92211281DC1B001EB962 /* PluginProxyMac.mm in Sources */, + 1A8EFA701252B84100F7067F /* PluginProxyMessageReceiver.cpp in Sources */, 1A6FB7AE11E64B6800DB1371 /* PluginView.cpp in Sources */, + E18C92F412DB9E7100CF2AEB /* PrintInfo.cpp in Sources */, + E1CC1B9112D7EADF00625838 /* PrintInfoMac.mm in Sources */, 1AE117F611DBB30900981615 /* ProcessLauncher.cpp in Sources */, BC111B1D112F5FE600337BAB /* ProcessLauncherMac.mm in Sources */, BC111B09112F5E3C00337BAB /* ResponsivenessTimer.cpp in Sources */, BC2E6E871141971500A63B1E /* RunLoop.cpp in Sources */, BC0092F7115837A300E0AE2A /* RunLoopMac.mm in Sources */, + 1AAB4AAA1296F1540023952F /* SandboxExtensionMac.mm in Sources */, + 51D130531382EAC000351EDD /* SecItemRequestData.cpp in Sources */, + 51D130551382EAC000351EDD /* SecItemResponseData.cpp in Sources */, + 511F8A80138B46FE00A95F44 /* SecItemShimMethods.mm in Sources */, + 512DF6FE138C254600A22FC6 /* SecKeychainItemRequestData.cpp in Sources */, + 512DF700138C254600A22FC6 /* SecKeychainItemResponseData.cpp in Sources */, + 33152975130D0CB200ED2483 /* SecurityOriginData.cpp in Sources */, + 518D2CCA12D51DFB003BB93B /* SessionState.cpp in Sources */, + 1A6420E412DCE2FF00CAAE2C /* ShareableBitmap.cpp in Sources */, + C01A260112662F2100C9ED55 /* ShareableBitmapCG.cpp in Sources */, + 1A24BF3A120896A600FBB059 /* SharedMemoryMac.cpp in Sources */, + 5272B28A1406985D0096A5D0 /* StatisticsData.cpp in Sources */, + 1AA417EF12C00D87002BE67B /* TextCheckerMac.mm in Sources */, + BCF50122123ED3B3005955AE /* ThreadLauncher.cpp in Sources */, + BCF501B4123EF602005955AE /* ThreadLauncherMac.mm in Sources */, + 1AAF263814687C39004A1E8A /* TiledCoreAnimationDrawingArea.mm in Sources */, + 1AF05D8614688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.mm in Sources */, + 1A64245F12DE29A100CAAE2C /* UpdateInfo.cpp in Sources */, + 1A0F29E3120B44420053D1B9 /* VisitedLinkProvider.cpp in Sources */, + 1A0F29CB120B37160053D1B9 /* VisitedLinkTable.cpp in Sources */, + 512E352E130B55AF00ABD19A /* WebApplicationCacheManager.cpp in Sources */, + 512E356A130B57F000ABD19A /* WebApplicationCacheManagerMessageReceiver.cpp in Sources */, + 512E3524130B550600ABD19A /* WebApplicationCacheManagerProxy.cpp in Sources */, + 512E35F8130B642E00ABD19A /* WebApplicationCacheManagerProxyMessageReceiver.cpp in Sources */, BC72BA1D11E64907001EB4EA /* WebBackForwardList.cpp in Sources */, + 51B3005012529D0E000B5CA0 /* WebBackForwardListCF.cpp in Sources */, + 518D2CAD12D5153B003BB93B /* WebBackForwardListItem.cpp in Sources */, BC72B9FA11E6476B001EB4EA /* WebBackForwardListProxy.cpp in Sources */, BC111A5A112F4FBB00337BAB /* WebChromeClient.cpp in Sources */, + BC4A628F147312BE006C681A /* WebConnection.cpp in Sources */, + BC4A6291147312BE006C681A /* WebConnectionClient.cpp in Sources */, + BCD3675C148C26C000447E87 /* WebConnectionToUIProcess.cpp in Sources */, + BC4A62A714744EC7006C681A /* WebConnectionToWebProcess.cpp in Sources */, BCB9E2441120DACA00A137E0 /* WebContext.cpp in Sources */, + BC09B8F8147460F7005F5625 /* WebContextConnectionClient.cpp in Sources */, BCDE059C11CDA8AE00E41AF1 /* WebContextInjectedBundleClient.cpp in Sources */, + 1A1C649B11F4174200553C19 /* WebContextMac.mm in Sources */, + 51871B5B127CB89D00F76232 /* WebContextMenu.cpp in Sources */, BC111A5B112F4FBB00337BAB /* WebContextMenuClient.cpp in Sources */, + 51021E9C12B16788005C033C /* WebContextMenuClientMac.mm in Sources */, + 512935D71288D19400A4B695 /* WebContextMenuItem.cpp in Sources */, + 510FBB9A1288C95E00AFFDF4 /* WebContextMenuItemData.cpp in Sources */, + 51A84CE3127F386B00CA6EA4 /* WebContextMenuProxy.cpp in Sources */, + 51ACBBA1127A8F2C00D203B9 /* WebContextMenuProxyMac.mm in Sources */, + BCEE7D0D12846F69009827DA /* WebContextMessageReceiver.cpp in Sources */, + 3309344F1315B94D0097A7BC /* WebCookieManager.cpp in Sources */, + F6A90813133C20510082C3F4 /* WebCookieManagerMac.mm in Sources */, + 330934471315B9220097A7BC /* WebCookieManagerMessageReceiver.cpp in Sources */, + 330934551315B9750097A7BC /* WebCookieManagerProxy.cpp in Sources */, + 33AA1066131F060000D4A575 /* WebCookieManagerProxyClient.cpp in Sources */, + F6D632BC133D198200743D77 /* WebCookieManagerProxyMac.mm in Sources */, + 330934491315B9220097A7BC /* WebCookieManagerProxyMessageReceiver.cpp in Sources */, + 939AE7661316E99C00AE06A6 /* WebCoreArgumentCoders.cpp in Sources */, + BCE23263122C6CF300D5C35A /* WebCoreArgumentCodersMac.mm in Sources */, + 512F589A12A8838800629530 /* WebCredential.cpp in Sources */, + F6A25FDC12ADC6CC00DC40CC /* WebDatabaseManager.cpp in Sources */, + F62A76B612B1B25F0005F1B6 /* WebDatabaseManagerMessageReceiver.cpp in Sources */, + F62A765C12B1ABC30005F1B6 /* WebDatabaseManagerProxy.cpp in Sources */, + BCAC112012C92C1F00B08EEE /* WebDatabaseManagerProxyClient.cpp in Sources */, + F62A76B812B1B25F0005F1B6 /* WebDatabaseManagerProxyMessageReceiver.cpp in Sources */, + 1AB7D72D1288CAAD00CFD08C /* WebDownloadClient.cpp in Sources */, BC111A5D112F4FBB00337BAB /* WebDragClient.cpp in Sources */, + C574A37712E6099D002DFE98 /* WebDragClientMac.mm in Sources */, + BCA0EFA012332642007D3CFB /* WebEditCommandProxy.cpp in Sources */, BC111A5E112F4FBB00337BAB /* WebEditorClient.cpp in Sources */, + C5237F6012441CA300780472 /* WebEditorClientMac.mm in Sources */, + BC575613126E0138006F0F12 /* WebError.cpp in Sources */, BC111AE0112F5BC200337BAB /* WebErrorsMac.mm in Sources */, + C0337DAE127A24FE008FF4F4 /* WebEvent.cpp in Sources */, BC032DBA10F4380F0058C15A /* WebEventConversion.cpp in Sources */, BC111B5E112F629800337BAB /* WebEventFactory.mm in Sources */, + 1A3DD1FD125E59F3004515E6 /* WebFindClient.cpp in Sources */, + BCE469531214E6CB000B98EB /* WebFormClient.cpp in Sources */, + BCE469551214E6CB000B98EB /* WebFormSubmissionListenerProxy.cpp in Sources */, BC111ADD112F5B9300337BAB /* WebFrame.cpp in Sources */, + BCE469791214F2B4000B98EB /* WebFrameListenerProxy.cpp in Sources */, BC111A5F112F4FBB00337BAB /* WebFrameLoaderClient.cpp in Sources */, + 9391F2CA121B679A00EBF7E8 /* WebFrameNetworkingContext.mm in Sources */, BCB9F6A11123A84B00A137E0 /* WebFramePolicyListenerProxy.cpp in Sources */, BC111B0E112F5E4F00337BAB /* WebFrameProxy.cpp in Sources */, + CD73BA53131B645B00EEDED2 /* WebFullScreenManager.cpp in Sources */, + CDCA8603132ADC0500E961DF /* WebFullScreenManagerMac.mm in Sources */, + CD73BA4E131ACDB700EEDED2 /* WebFullScreenManagerMessageReceiver.cpp in Sources */, + CD6F75F4131B66D000D6B21E /* WebFullScreenManagerProxy.cpp in Sources */, + CDCA85EE132AD70100E961DF /* WebFullScreenManagerProxyMac.mm in Sources */, + CD73BA47131ACC9A00EEDED2 /* WebFullScreenManagerProxyMessageReceiver.cpp in Sources */, + BC1BE1E112D54A410004A228 /* WebGeolocationClient.cpp in Sources */, + BC0E5FE612D697160012A72A /* WebGeolocationManager.cpp in Sources */, + BC0E606112D6BA910012A72A /* WebGeolocationManagerMessageReceiver.cpp in Sources */, + BC54CACC12D64291005C67B0 /* WebGeolocationManagerProxy.cpp in Sources */, + BC0E618212D6CB1D0012A72A /* WebGeolocationManagerProxyMessageReceiver.cpp in Sources */, + BC0E607412D6BC200012A72A /* WebGeolocationPosition.cpp in Sources */, + BC1BE1F312D54DBD0004A228 /* WebGeolocationProvider.cpp in Sources */, + BC9585C812F095B800755821 /* WebGestureEvent.cpp in Sources */, + BCA56A1D12F9028E00C566C7 /* WebGraphicsContext.cpp in Sources */, BCF69F861176CD6F00471A52 /* WebHistoryClient.cpp in Sources */, + 7801C099142290C400FAF9AF /* WebHitTestResult.cpp in Sources */, + 511B24AA132E097200065A0C /* WebIconDatabase.cpp in Sources */, + 51834592134532E90092B696 /* WebIconDatabaseClient.cpp in Sources */, + 51D02F64132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp in Sources */, + 511B24A6132E095700065A0C /* WebIconDatabaseProxy.cpp in Sources */, + 51D02F6B132EC73700BEAA96 /* WebIconDatabaseProxyMessageReceiver.cpp in Sources */, + BCCF6ABC12C91EF9008F9C35 /* WebImage.cpp in Sources */, + 1C8E28211275D15400BC7BD0 /* WebInspector.cpp in Sources */, BC111A60112F4FBB00337BAB /* WebInspectorClient.cpp in Sources */, + 1C8E25A81270E3BB00BC7BD0 /* WebInspectorFrontendClient.cpp in Sources */, + 1CA8B954127C891500576C2B /* WebInspectorMac.mm in Sources */, + 1C8E2A351277852400BC7BD0 /* WebInspectorMessageReceiver.cpp in Sources */, + 1C8E28351275D73800BC7BD0 /* WebInspectorProxy.cpp in Sources */, + 1CA8B936127C774E00576C2B /* WebInspectorProxyMac.mm in Sources */, + 1CA8B945127C882A00576C2B /* WebInspectorProxyMessageReceiver.cpp in Sources */, + C0337DD3127A2A0E008FF4F4 /* WebKeyboardEvent.cpp in Sources */, + 51A9E0FF1315CCDE009E7031 /* WebKeyValueStorageManager.cpp in Sources */, + 51A9E1281315ED35009E7031 /* WebKeyValueStorageManagerMessageReceiver.cpp in Sources */, + 51A9E1051315CCFC009E7031 /* WebKeyValueStorageManagerProxy.cpp in Sources */, + 51A9E12A1315ED35009E7031 /* WebKeyValueStorageManagerProxyMessageReceiver.cpp in Sources */, 1A6FA31611E3923600DB1371 /* WebKitMain.cpp in Sources */, BCB9E76211232B9E00A137E0 /* WebLoaderClient.cpp in Sources */, + 33D3A3C1133960B000709BE4 /* WebMediaCacheManager.cpp in Sources */, + 33D3A3C81339617900709BE4 /* WebMediaCacheManagerMessageReceiver.cpp in Sources */, + 33D3A3BA1339606200709BE4 /* WebMediaCacheManagerProxy.cpp in Sources */, + 33D3A3CA1339617900709BE4 /* WebMediaCacheManagerProxyMessageReceiver.cpp in Sources */, + 909854EC12BC4E17000AD080 /* WebMemorySampler.cpp in Sources */, + 909854EE12BC4E18000AD080 /* WebMemorySampler.mac.mm in Sources */, + C0337DB0127A28D0008FF4F4 /* WebMouseEvent.cpp in Sources */, BCF69FA31176D01400471A52 /* WebNavigationData.cpp in Sources */, + 31A2EC48148997C200810D71 /* WebNotification.cpp in Sources */, + 31099973146C75A20029DEB9 /* WebNotificationClient.cpp in Sources */, + 31312620148FF82C00BA2A39 /* WebNotificationManager.cpp in Sources */, + 31BA924D148831260062EDB5 /* WebNotificationManagerMessageReceiver.cpp in Sources */, + 31A2EC4A148997C200810D71 /* WebNotificationManagerProxy.cpp in Sources */, + 318BE1671473433700A8FBB2 /* WebNotificationManagerProxyMessageReceiver.cpp in Sources */, + 31A2EC4D148997C200810D71 /* WebNotificationProvider.cpp in Sources */, + BC857FB612B830E600EDEB2E /* WebOpenPanelParameters.cpp in Sources */, + BC857F8612B82D0B00EDEB2E /* WebOpenPanelResultListener.cpp in Sources */, + BC857F7E12B82CEE00EDEB2E /* WebOpenPanelResultListenerProxy.cpp in Sources */, BC963D6B113DD19200574BE2 /* WebPage.cpp in Sources */, + 5153569C1291B1D2000749DC /* WebPageContextMenuClient.cpp in Sources */, + C06C6095124C144B0001682F /* WebPageCreationParameters.cpp in Sources */, + BC7B6207129A0A6700D174A4 /* WebPageGroup.cpp in Sources */, + BC7B625312A43C9600D174A4 /* WebPageGroupData.cpp in Sources */, + BC7B621612A4219A00D174A4 /* WebPageGroupProxy.cpp in Sources */, BC963D6E113DD1A500574BE2 /* WebPageMac.mm in Sources */, + C0CE72A01247E71D00BC0EC4 /* WebPageMessageReceiver.cpp in Sources */, BC111B0F112F5E4F00337BAB /* WebPageProxy.cpp in Sources */, + 51B3005112529D0E000B5CA0 /* WebPageProxyCF.cpp in Sources */, + BC857E8712B71EBB00EDEB2E /* WebPageProxyMac.mm in Sources */, + BCBD3914125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp in Sources */, 1A3E736211CC2659007BD539 /* WebPlatformStrategies.cpp in Sources */, + C0337DDD127A521C008FF4F4 /* WebPlatformTouchPoint.cpp in Sources */, + 1AC8702E130B49A2002C1257 /* WebPluginSiteDataManager.cpp in Sources */, BCB9F8AF1124E07700A137E0 /* WebPolicyClient.cpp in Sources */, + BC5744EF12638FB3006F0F12 /* WebPopupItem.cpp in Sources */, + D3B9484611FF4B6500032B39 /* WebPopupMenu.cpp in Sources */, + BCC43AC7127B99DE00317F16 /* WebPopupMenuMac.mm in Sources */, + BC5750981268F3C6006F0F12 /* WebPopupMenuProxyMac.mm in Sources */, BCD59800112B57BE00EC8C23 /* WebPreferences.cpp in Sources */, + BC2DFBA312A761A500E732A3 /* WebPreferencesCF.cpp in Sources */, + BC84EB1812A7100C0083F2DA /* WebPreferencesMac.mm in Sources */, BCD598AD112B7FDF00EC8C23 /* WebPreferencesStore.cpp in Sources */, BC111AE4112F5C2600337BAB /* WebProcess.cpp in Sources */, + 1A043A0A124D11A900FFBFB5 /* WebProcessConnection.cpp in Sources */, + 1A043F6912514D8B00FFBFB5 /* WebProcessConnectionMessageReceiver.cpp in Sources */, + BC306825125A6B9400E71278 /* WebProcessCreationParameters.cpp in Sources */, + BC3065C412592F8900E71278 /* WebProcessMac.mm in Sources */, 1A6FA01E11E1526300DB1371 /* WebProcessMainMac.mm in Sources */, + BC3066BE125A442100E71278 /* WebProcessMessageReceiver.cpp in Sources */, BC111B11112F5E4F00337BAB /* WebProcessProxy.cpp in Sources */, + 51D130581382F10500351EDD /* WebProcessProxyMac.mm in Sources */, + BCEE7AD012817988009827DA /* WebProcessProxyMessageReceiver.cpp in Sources */, + 512F589C12A8838800629530 /* WebProtectionSpace.cpp in Sources */, + 3336762F130C9998006C9DE2 /* WebResourceCacheManager.cpp in Sources */, + 33F9D5B91312F1EE000D683F /* WebResourceCacheManagerCFNet.cpp in Sources */, + 33367655130C9ECA006C9DE2 /* WebResourceCacheManagerMessageReceiver.cpp in Sources */, + 33367635130C99B2006C9DE2 /* WebResourceCacheManagerProxy.cpp in Sources */, + 33367657130C9ECA006C9DE2 /* WebResourceCacheManagerProxyMessageReceiver.cpp in Sources */, + BC858A2112C0357B00EDEB2E /* WebResourceLoadClient.cpp in Sources */, + D3B9484811FF4B6500032B39 /* WebSearchPopupMenu.cpp in Sources */, BCC5715C115ADAEF001CCAF9 /* WebSystemInterface.mm in Sources */, + C0337DD8127A51B6008FF4F4 /* WebTouchEvent.cpp in Sources */, 1A594ABA112A1FB6009DE7C7 /* WebUIClient.cpp in Sources */, + BCA0EF8012331E78007D3CFB /* WebUndoStep.cpp in Sources */, + BCE2315E122C30CA00D5C35A /* WebURLRequest.cpp in Sources */, + BCE231C2122C466E00D5C35A /* WebURLRequestMac.mm in Sources */, + BC90A1D3122DD55E00CC8C50 /* WebURLResponse.cpp in Sources */, + BC90A1D7122DD66A00CC8C50 /* WebURLResponseMac.mm in Sources */, + C0337DD1127A2980008FF4F4 /* WebWheelEvent.cpp in Sources */, + 29CD55AB128E294F00133C85 /* WKAccessibilityWebPageObject.mm in Sources */, + 512E34E4130B4D0500ABD19A /* WKApplicationCacheManager.cpp in Sources */, + BC4075F3124FF0270068F20A /* WKArray.cpp in Sources */, + 512F58F512A88A5400629530 /* WKAuthenticationChallenge.cpp in Sources */, + 512F58F712A88A5400629530 /* WKAuthenticationDecisionListener.cpp in Sources */, BC646C1A11DD399F006455B0 /* WKBackForwardList.cpp in Sources */, BC646C1C11DD399F006455B0 /* WKBackForwardListItem.cpp in Sources */, + BCBAAC72144E61990053F82F /* WKBrowsingContextController.mm in Sources */, + BCBAACF51452324F0053F82F /* WKBrowsingContextGroup.mm in Sources */, BC204EEE11C83EC8008F3375 /* WKBundle.cpp in Sources */, + 935EEB9E127761AC003322B8 /* WKBundleBackForwardList.cpp in Sources */, + 935EEBA0127761AC003322B8 /* WKBundleBackForwardListItem.cpp in Sources */, BCD25F1811D6BDE100169B0E /* WKBundleFrame.cpp in Sources */, - BC20528211C94284008F3375 /* WKBundlePage.cpp in Sources */, - BCB9E24C1120E15C00A137E0 /* WKContext.cpp in Sources */, - BCD0139C110FA420003B8A67 /* WKFrame.cpp in Sources */, - BCB9F6A61123DD0D00A137E0 /* WKFramePolicyListener.cpp in Sources */, - BCF69FAA1176D1CB00471A52 /* WKNavigationData.cpp in Sources */, - BCD597D6112B56DC00EC8C23 /* WKPage.cpp in Sources */, - BCD597D1112B56AC00EC8C23 /* WKPreferences.cpp in Sources */, - BC8699B6116AADAA002A925B /* WKView.mm in Sources */, - BC2E6E8D1141971500A63B1E /* WorkQueue.cpp in Sources */, - BC0092F8115837A300E0AE2A /* WorkQueueMac.cpp in Sources */, - 1A2161B111F37664008AD0F5 /* NPRuntimeObjectMap.cpp in Sources */, - 1A2162B011F38971008AD0F5 /* NPRuntimeUtilities.cpp in Sources */, - 1A1C649B11F4174200553C19 /* WebContextMac.mm in Sources */, - 1A24B5F211F531E800C38269 /* MachUtilities.cpp in Sources */, - E1EE53E711F8CFFB00CCBEE4 /* InjectedBundlePageEditorClient.cpp in Sources */, - 1AE4976911FF658E0048B464 /* NPJSObject.cpp in Sources */, - 1AE4987911FF7FAA0048B464 /* JSNPObject.cpp in Sources */, - 1AE49A4A11FFA8CE0048B464 /* JSNPMethod.cpp in Sources */, - D3B9484611FF4B6500032B39 /* WebPopupMenu.cpp in Sources */, - D3B9484811FF4B6500032B39 /* WebSearchPopupMenu.cpp in Sources */, - C0E3AA7A1209E83000A49D01 /* ModuleMac.mm in Sources */, - C0E3AA7B1209E83500A49D01 /* Module.cpp in Sources */, - 1A24BF3A120896A600FBB059 /* SharedMemoryMac.cpp in Sources */, - 1A0F29CB120B37160053D1B9 /* VisitedLinkTable.cpp in Sources */, - 1A0F29E3120B44420053D1B9 /* VisitedLinkProvider.cpp in Sources */, - BC4BEEAC120A0A5F00FBA0C7 /* InjectedBundleNodeHandle.cpp in Sources */, + BC498630124D18C100D834E1 /* WKBundleHitTestResult.cpp in Sources */, + 6501BD1A12F1243400E9F248 /* WKBundleInspector.cpp in Sources */, + BC7043CD12F75EE0006472B9 /* WKBundleNavigationAction.cpp in Sources */, BC4BEFE2120A1A4C00FBA0C7 /* WKBundleNodeHandle.cpp in Sources */, - BC14DF78120B5B7900826C0C /* InjectedBundleScriptWorld.cpp in Sources */, - BC14DF9E120B635F00826C0C /* WKBundleScriptWorld.cpp in Sources */, - BC14E109120B905E00826C0C /* InjectedBundlePageFormClient.cpp in Sources */, - BCE469531214E6CB000B98EB /* WebFormClient.cpp in Sources */, - BCE469551214E6CB000B98EB /* WebFormSubmissionListenerProxy.cpp in Sources */, - BCE469591214EDF4000B98EB /* WKFormSubmissionListener.cpp in Sources */, - BCE469791214F2B4000B98EB /* WebFrameListenerProxy.cpp in Sources */, - BCBCB0CD1215E33A00DE59CA /* ImmutableDictionary.cpp in Sources */, - 9391F2CA121B679A00EBF7E8 /* WebFrameNetworkingContext.mm in Sources */, - BCE2315E122C30CA00D5C35A /* WebURLRequest.cpp in Sources */, - BCE231C2122C466E00D5C35A /* WebURLRequestMac.mm in Sources */, - BCE23263122C6CF300D5C35A /* WebCoreArgumentCodersMac.mm in Sources */, - BC90A1D3122DD55E00CC8C50 /* WebURLResponse.cpp in Sources */, - BC90A1D7122DD66A00CC8C50 /* WebURLResponseMac.mm in Sources */, - BCB0AD33122F285800B1341E /* MutableArray.cpp in Sources */, - BCB0AEEA122F53E300B1341E /* MutableDictionary.cpp in Sources */, - BCA0EF8012331E78007D3CFB /* WebUndoStep.cpp in Sources */, - BCA0EFA012332642007D3CFB /* WebEditCommandProxy.cpp in Sources */, - BCF50122123ED3B3005955AE /* ThreadLauncher.cpp in Sources */, - BCF501B4123EF602005955AE /* ThreadLauncherMac.mm in Sources */, - C5237F6012441CA300780472 /* WebEditorClientMac.mm in Sources */, - BC33E0D212408E8600360F3F /* InjectedBundleRangeHandle.cpp in Sources */, + BC20528211C94284008F3375 /* WKBundlePage.cpp in Sources */, + BC7B633E12A45D1200D174A4 /* WKBundlePageGroup.cpp in Sources */, + EDCA71B7128DDA8C00201B26 /* WKBundlePageOverlay.cpp in Sources */, BC60C57A1240A546008C5E29 /* WKBundleRangeHandle.cpp in Sources */, - BCF505E81243047B005955AE /* PlatformCertificateInfo.mm in Sources */, - C0CE72A01247E71D00BC0EC4 /* WebPageMessageReceiver.cpp in Sources */, - 1A0EC604124A9F2C007EF4A5 /* PluginProcessManager.cpp in Sources */, - 1A0EC75F124BC7B2007EF4A5 /* PluginProcessProxy.cpp in Sources */, - 1A0EC803124BD41E007EF4A5 /* PluginProcessMainMac.mm in Sources */, - 1A0EC907124C0AB8007EF4A5 /* PluginProcessConnection.cpp in Sources */, - 1A0EC910124C0AF5007EF4A5 /* PluginProcessConnectionManager.cpp in Sources */, - BC498619124D10E200D834E1 /* InjectedBundleHitTestResult.cpp in Sources */, - BC498630124D18C100D834E1 /* WKBundleHitTestResult.cpp in Sources */, - 1A043977124D034800FFBFB5 /* PluginProcess.cpp in Sources */, - 1A043A0A124D11A900FFBFB5 /* WebProcessConnection.cpp in Sources */, - C06C6095124C144B0001682F /* WebPageCreationParameters.cpp in Sources */, - 1A043B5D124D5E9D00FFBFB5 /* PluginProcessProxyMessageReceiver.cpp in Sources */, - BC4075F3124FF0270068F20A /* WKArray.cpp in Sources */, + BC14DF9E120B635F00826C0C /* WKBundleScriptWorld.cpp in Sources */, BC4075F5124FF0270068F20A /* WKCertificateInfo.cpp in Sources */, + BC407628124FF0400068F20A /* WKCertificateInfoMac.mm in Sources */, + BCA284D61492F2C7001F9042 /* WKConnection.mm in Sources */, + BC4A6296147313A0006C681A /* WKConnectionRef.cpp in Sources */, + BCB9E24C1120E15C00A137E0 /* WKContext.cpp in Sources */, + 51A555F5128C6C47009ABCEC /* WKContextMenuItem.cpp in Sources */, + 3309345A1315B9980097A7BC /* WKCookieManager.cpp in Sources */, + 512F58F912A88A5400629530 /* WKCredential.cpp in Sources */, BC4075F7124FF0270068F20A /* WKData.cpp in Sources */, + F62A766112B1ABED0005F1B6 /* WKDatabaseManager.cpp in Sources */, BC4075F9124FF0270068F20A /* WKDictionary.cpp in Sources */, + 1AB7D78E1288CD9A00CFD08C /* WKDownload.cpp in Sources */, BC4075FB124FF0270068F20A /* WKError.cpp in Sources */, + BCFD548B132D82680055D816 /* WKErrorCF.cpp in Sources */, + BCE469591214EDF4000B98EB /* WKFormSubmissionListener.cpp in Sources */, + BCD0139C110FA420003B8A67 /* WKFrame.cpp in Sources */, + BCB9F6A61123DD0D00A137E0 /* WKFramePolicyListener.cpp in Sources */, + E1AEA23014687BDB00804569 /* WKFullKeyboardAccessWatcher.mm in Sources */, + CDCA85C8132ABA4E00E961DF /* WKFullScreenWindowController.mm in Sources */, + BC54CC1312D674EE005C67B0 /* WKGeolocationManager.cpp in Sources */, + BC06F44F12DBDF3F002D78DE /* WKGeolocationPermissionRequest.cpp in Sources */, + BC0E619912D6CD120012A72A /* WKGeolocationPosition.cpp in Sources */, + 0F174AA7142AAC610039250F /* WKGeometry.cpp in Sources */, + BCA56A6612F9C8F900C566C7 /* WKGraphicsContext.cpp in Sources */, + BCA56A6A12F9C9AD00C566C7 /* WKGraphicsContextCG.cpp in Sources */, + B62E7310143047A60069EC35 /* WKHitTestResult.cpp in Sources */, + 5110AE0C133C16CB0072717A /* WKIconDatabase.cpp in Sources */, + 5123CF1B133D260A0056F800 /* WKIconDatabaseCG.cpp in Sources */, + BCCF6AC212C91F34008F9C35 /* WKImage.cpp in Sources */, + BCCF6AC912C91F59008F9C35 /* WKImageCG.cpp in Sources */, + 1C8E293A12761E5B00BC7BD0 /* WKInspector.cpp in Sources */, + 51A9E10A1315CD18009E7031 /* WKKeyValueStorageManager.cpp in Sources */, + 33D3A3B51339600B00709BE4 /* WKMediaCacheManager.cpp in Sources */, BC4075FD124FF0270068F20A /* WKMutableArray.cpp in Sources */, BC4075FF124FF0270068F20A /* WKMutableDictionary.cpp in Sources */, + BCF69FAA1176D1CB00471A52 /* WKNavigationData.cpp in Sources */, + 318BE17714743E6000A8FBB2 /* WKNotification.cpp in Sources */, + 318BE17514743DD700A8FBB2 /* WKNotificationManager.cpp in Sources */, + 31A2EC77148D662E00810D71 /* WKNotificationPermissionRequest.cpp in Sources */, BC407601124FF0270068F20A /* WKNumber.cpp in Sources */, + BC85806312B8505700EDEB2E /* WKOpenPanelParameters.cpp in Sources */, + BC85806212B8505700EDEB2E /* WKOpenPanelResultListener.cpp in Sources */, + BCD597D6112B56DC00EC8C23 /* WKPage.cpp in Sources */, + BC7B633812A45ABA00D174A4 /* WKPageGroup.cpp in Sources */, + BCE17B7D1381F1170012A641 /* WKPagePrivateMac.cpp in Sources */, + 1AC86FF3130B46D3002C1257 /* WKPluginSiteDataManager.cpp in Sources */, + BCD597D1112B56AC00EC8C23 /* WKPreferences.cpp in Sources */, + E134F01A12EA5D99004EC58D /* WKPrintingView.mm in Sources */, + BCBAACEC145225E30053F82F /* WKProcessGroup.mm in Sources */, + 512F58FB12A88A5400629530 /* WKProtectionSpace.cpp in Sources */, + 3336763A130C99DC006C9DE2 /* WKResourceCacheManager.cpp in Sources */, + F634445C12A885E9000612D8 /* WKSecurityOrigin.cpp in Sources */, BC407603124FF0270068F20A /* WKSerializedScriptValue.cpp in Sources */, BC407605124FF0270068F20A /* WKString.cpp in Sources */, + BC407619124FF0370068F20A /* WKStringCF.cpp in Sources */, + 1A4A9AA912B7E796008FE984 /* WKTextInputWindowController.mm in Sources */, BC407607124FF0270068F20A /* WKType.cpp in Sources */, BC407609124FF0270068F20A /* WKURL.cpp in Sources */, - BC40760B124FF0270068F20A /* WKURLRequest.cpp in Sources */, - BC40760D124FF0270068F20A /* WKURLResponse.cpp in Sources */, - BC407619124FF0370068F20A /* WKStringCF.cpp in Sources */, BC40761B124FF0370068F20A /* WKURLCF.cpp in Sources */, - BC407628124FF0400068F20A /* WKCertificateInfoMac.mm in Sources */, + BC40760B124FF0270068F20A /* WKURLRequest.cpp in Sources */, BC40762A124FF0400068F20A /* WKURLRequestNS.mm in Sources */, + BC40760D124FF0270068F20A /* WKURLResponse.cpp in Sources */, BC40762C124FF0400068F20A /* WKURLResponseNS.mm in Sources */, - 1A043CEB124FE38F00FFBFB5 /* PluginProcessMessageReceiver.cpp in Sources */, - 1A043DC2124FF87500FFBFB5 /* PluginProxy.cpp in Sources */, - 1A043F6912514D8B00FFBFB5 /* WebProcessConnectionMessageReceiver.cpp in Sources */, - 1A8EF4CC1252403700F7067F /* PluginControllerProxy.cpp in Sources */, - C02BFF1E1251502E009CCBEA /* NativeWebKeyboardEventMac.mm in Sources */, - 51B3005012529D0E000B5CA0 /* WebBackForwardListCF.cpp in Sources */, - 51B3005112529D0E000B5CA0 /* WebPageProxyCF.cpp in Sources */, - 1A8EF96E1252AF6B00F7067F /* PluginControllerProxyMessageReceiver.cpp in Sources */, - 1A8EFA701252B84100F7067F /* PluginProxyMessageReceiver.cpp in Sources */, - 1A8EFDFE1253CB6E00F7067F /* DataReference.cpp in Sources */, - BC3065C412592F8900E71278 /* WebProcessMac.mm in Sources */, - BC3066BE125A442100E71278 /* WebProcessMessageReceiver.cpp in Sources */, - BC306825125A6B9400E71278 /* WebProcessCreationParameters.cpp in Sources */, - 51A7F2F5125BF8D4008AEB1D /* Logging.cpp in Sources */, - BCBD3914125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp in Sources */, - 1A3DD1FD125E59F3004515E6 /* WebFindClient.cpp in Sources */, - BC5744EF12638FB3006F0F12 /* WebPopupItem.cpp in Sources */, - 1AC41AC81263C88300054E94 /* BinarySemaphore.cpp in Sources */, - 1A90C1F51264FD71003E44D4 /* FindController.cpp in Sources */, - 1A90C23812650717003E44D4 /* PageOverlay.cpp in Sources */, - C01A260112662F2100C9ED55 /* ShareableBitmapCG.cpp in Sources */, - BC5750981268F3C6006F0F12 /* WebPopupMenuProxyMac.mm in Sources */, - 1A910072126675C4001842F5 /* FindIndicator.cpp in Sources */, - 1A91010B1268C8CA001842F5 /* FindIndicatorWindow.mm in Sources */, F6113E28126CE19B0057D0A7 /* WKUserContentURLPattern.cpp in Sources */, - BC575613126E0138006F0F12 /* WebError.cpp in Sources */, - 1C8E25A81270E3BB00BC7BD0 /* WebInspectorFrontendClient.cpp in Sources */, - 1C8E28211275D15400BC7BD0 /* WebInspector.cpp in Sources */, - 1C8E28351275D73800BC7BD0 /* WebInspectorProxy.cpp in Sources */, - 1C8E293A12761E5B00BC7BD0 /* WKInspector.cpp in Sources */, - 935EEB9E127761AC003322B8 /* WKBundleBackForwardList.cpp in Sources */, - 935EEBA0127761AC003322B8 /* WKBundleBackForwardListItem.cpp in Sources */, - 935EEBA1127761CC003322B8 /* InjectedBundleBackForwardList.cpp in Sources */, - 935EEBA3127761D3003322B8 /* InjectedBundleBackForwardListItem.cpp in Sources */, - 1A61614F127798B5003ACD86 /* DownloadManager.cpp in Sources */, - 1A6161D51278981C003ACD86 /* Download.cpp in Sources */, - 1A61639612789B2F003ACD86 /* DownloadMac.mm in Sources */, - 51ACBBA1127A8F2C00D203B9 /* WebContextMenuProxyMac.mm in Sources */, - C0337DAE127A24FE008FF4F4 /* WebEvent.cpp in Sources */, - C0337DB0127A28D0008FF4F4 /* WebMouseEvent.cpp in Sources */, - C0337DD1127A2980008FF4F4 /* WebWheelEvent.cpp in Sources */, - C0337DD3127A2A0E008FF4F4 /* WebKeyboardEvent.cpp in Sources */, - C0337DD8127A51B6008FF4F4 /* WebTouchEvent.cpp in Sources */, - C0337DDD127A521C008FF4F4 /* WebPlatformTouchPoint.cpp in Sources */, - BCC43ABA127B95DC00317F16 /* PlatformPopupMenuData.cpp in Sources */, - BCC43AC7127B99DE00317F16 /* WebPopupMenuMac.mm in Sources */, - 51871B5B127CB89D00F76232 /* WebContextMenu.cpp in Sources */, - 51A84CE3127F386B00CA6EA4 /* WebContextMenuProxy.cpp in Sources */, - 1A2D82A4127F4EAB001EB962 /* NPObjectMessageReceiver.cpp in Sources */, - 1A2D82A6127F4EAB001EB962 /* NPObjectProxy.cpp in Sources */, - 1A2D82A8127F4EAB001EB962 /* NPRemoteObjectMap.cpp in Sources */, - 1A2D8439127F65D5001EB962 /* NPObjectMessageReceiverMessageReceiver.cpp in Sources */, - 1A2D848C127F6A49001EB962 /* NPIdentifierData.cpp in Sources */, - 1A2D84A4127F6AD1001EB962 /* NPVariantData.cpp in Sources */, - 1C8E2A351277852400BC7BD0 /* WebInspectorMessageReceiver.cpp in Sources */, - 1A2D90BB1281C931001EB962 /* PluginProcessProxyMac.mm in Sources */, - 1A2D90D31281C966001EB962 /* PluginProcessCreationParameters.cpp in Sources */, - 1A2D91A61281D739001EB962 /* PluginControllerProxyMac.mm in Sources */, - 1A2D92211281DC1B001EB962 /* PluginProxyMac.mm in Sources */, - BCEE7AD012817988009827DA /* WebProcessProxyMessageReceiver.cpp in Sources */, - 1A2D957012848564001EB962 /* ChildProcess.cpp in Sources */, - BCEE7D0D12846F69009827DA /* WebContextMessageReceiver.cpp in Sources */, - 510FBB9A1288C95E00AFFDF4 /* WebContextMenuItemData.cpp in Sources */, - 1AB7D4CB1288AAA700CFD08C /* DownloadProxy.cpp in Sources */, - 1AB7D6191288B9D900CFD08C /* DownloadProxyMessageReceiver.cpp in Sources */, - 512935D71288D19400A4B695 /* WebContextMenuItem.cpp in Sources */, - 512935E31288D97800A4B695 /* InjectedBundlePageContextMenuClient.cpp in Sources */, - 1AB7D72D1288CAAD00CFD08C /* WebDownloadClient.cpp in Sources */, - 1AB7D78E1288CD9A00CFD08C /* WKDownload.cpp in Sources */, - 51A555F5128C6C47009ABCEC /* WKContextMenuItem.cpp in Sources */, - BCEE7DC6128B645D009827DA /* InjectedBundleClient.cpp in Sources */, - 1CA8B936127C774E00576C2B /* WebInspectorProxyMac.mm in Sources */, - 1CA8B945127C882A00576C2B /* WebInspectorProxyMessageReceiver.cpp in Sources */, - 1CA8B954127C891500576C2B /* WebInspectorMac.mm in Sources */, - EDCA71B7128DDA8C00201B26 /* WKBundlePageOverlay.cpp in Sources */, - 29CD55AB128E294F00133C85 /* WKAccessibilityWebPageObject.mm in Sources */, - 5153569C1291B1D2000749DC /* WebPageContextMenuClient.cpp in Sources */, - 1AAB4AAA1296F1540023952F /* SandboxExtensionMac.mm in Sources */, - BC7B6207129A0A6700D174A4 /* WebPageGroup.cpp in Sources */, - BC7B621612A4219A00D174A4 /* WebPageGroupProxy.cpp in Sources */, - BC7B625312A43C9600D174A4 /* WebPageGroupData.cpp in Sources */, - BC7B633812A45ABA00D174A4 /* WKPageGroup.cpp in Sources */, - BC7B633E12A45D1200D174A4 /* WKBundlePageGroup.cpp in Sources */, - 1AA4792312A59FD9008236C3 /* PluginProcessMac.mm in Sources */, - BC84EB1812A7100C0083F2DA /* WebPreferencesMac.mm in Sources */, - BC2DFBA312A761A500E732A3 /* WebPreferencesCF.cpp in Sources */, - 512F588A12A8836600629530 /* AuthenticationManager.cpp in Sources */, - 512F589612A8838800629530 /* AuthenticationChallengeProxy.cpp in Sources */, - 512F589812A8838800629530 /* AuthenticationDecisionListener.cpp in Sources */, - 512F589A12A8838800629530 /* WebCredential.cpp in Sources */, - 512F589C12A8838800629530 /* WebProtectionSpace.cpp in Sources */, - 512F58A212A883AD00629530 /* AuthenticationManagerMessageReceiver.cpp in Sources */, - 512F58F512A88A5400629530 /* WKAuthenticationChallenge.cpp in Sources */, - 512F58F712A88A5400629530 /* WKAuthenticationDecisionListener.cpp in Sources */, - 512F58F912A88A5400629530 /* WKCredential.cpp in Sources */, - 512F58FB12A88A5400629530 /* WKProtectionSpace.cpp in Sources */, - F634445C12A885E9000612D8 /* WKSecurityOrigin.cpp in Sources */, - F6A25FDC12ADC6CC00DC40CC /* WebDatabaseManager.cpp in Sources */, - 51021E9C12B16788005C033C /* WebContextMenuClientMac.mm in Sources */, - 1AAF061512B01131008E49E2 /* PDFViewController.mm in Sources */, - 1AAF0C4B12B16334008E49E2 /* ArgumentCodersCF.cpp in Sources */, - F62A765C12B1ABC30005F1B6 /* WebDatabaseManagerProxy.cpp in Sources */, - F62A766112B1ABED0005F1B6 /* WKDatabaseManager.cpp in Sources */, - F62A76B612B1B25F0005F1B6 /* WebDatabaseManagerMessageReceiver.cpp in Sources */, - F62A76B812B1B25F0005F1B6 /* WebDatabaseManagerProxyMessageReceiver.cpp in Sources */, - BC857E8712B71EBB00EDEB2E /* WebPageProxyMac.mm in Sources */, - BC857F7E12B82CEE00EDEB2E /* WebOpenPanelResultListenerProxy.cpp in Sources */, - BC857F8612B82D0B00EDEB2E /* WebOpenPanelResultListener.cpp in Sources */, - BC857FB612B830E600EDEB2E /* WebOpenPanelParameters.cpp in Sources */, - BC85806212B8505700EDEB2E /* WKOpenPanelResultListener.cpp in Sources */, - BC85806312B8505700EDEB2E /* WKOpenPanelParameters.cpp in Sources */, - 1A4A9AA912B7E796008FE984 /* WKTextInputWindowController.mm in Sources */, - 1A4A9C5512B816CF008FE984 /* NetscapePluginModule.cpp in Sources */, - 1A4A9C9A12B821CD008FE984 /* NetscapePluginModuleMac.mm in Sources */, - BC858A2112C0357B00EDEB2E /* WebResourceLoadClient.cpp in Sources */, - 1AA417EF12C00D87002BE67B /* TextCheckerMac.mm in Sources */, - 909854EC12BC4E17000AD080 /* WebMemorySampler.cpp in Sources */, - 909854EE12BC4E18000AD080 /* WebMemorySampler.mac.mm in Sources */, - BCCF673312C7F15C008F9C35 /* OriginAndDatabases.cpp in Sources */, - BCCF6ABC12C91EF9008F9C35 /* WebImage.cpp in Sources */, - BCCF6AC212C91F34008F9C35 /* WKImage.cpp in Sources */, - BCCF6AC912C91F59008F9C35 /* WKImageCG.cpp in Sources */, - BCAC112012C92C1F00B08EEE /* WebDatabaseManagerProxyClient.cpp in Sources */, - 93FC67BD12D3CCF200A60610 /* DecoderAdapter.cpp in Sources */, - 93FC67BF12D3CCF200A60610 /* EncoderAdapter.cpp in Sources */, - 518D2CAD12D5153B003BB93B /* WebBackForwardListItem.cpp in Sources */, - BC1BE1E112D54A410004A228 /* WebGeolocationClient.cpp in Sources */, - BC1BE1F312D54DBD0004A228 /* WebGeolocationProvider.cpp in Sources */, - 518D2CCA12D51DFB003BB93B /* SessionState.cpp in Sources */, - E1CC1B9112D7EADF00625838 /* PrintInfoMac.mm in Sources */, - E18C92F412DB9E7100CF2AEB /* PrintInfo.cpp in Sources */, - BC54CACC12D64291005C67B0 /* WebGeolocationManagerProxy.cpp in Sources */, - BC54CC1312D674EE005C67B0 /* WKGeolocationManager.cpp in Sources */, - BC0E5FE612D697160012A72A /* WebGeolocationManager.cpp in Sources */, - BC0E606112D6BA910012A72A /* WebGeolocationManagerMessageReceiver.cpp in Sources */, - BC0E607412D6BC200012A72A /* WebGeolocationPosition.cpp in Sources */, - BC0E618212D6CB1D0012A72A /* WebGeolocationManagerProxyMessageReceiver.cpp in Sources */, - BC0E619912D6CD120012A72A /* WKGeolocationPosition.cpp in Sources */, - BC06F43012DBB9B6002D78DE /* GeolocationPermissionRequestManager.cpp in Sources */, - BC06F43B12DBCCFB002D78DE /* GeolocationPermissionRequestProxy.cpp in Sources */, - BC06F44B12DBD1F5002D78DE /* GeolocationPermissionRequestManagerProxy.cpp in Sources */, - BC06F44F12DBDF3F002D78DE /* WKGeolocationPermissionRequest.cpp in Sources */, - 1A6420E412DCE2FF00CAAE2C /* ShareableBitmap.cpp in Sources */, - 1A64218712DCF49200CAAE2C /* DrawingAreaProxyImpl.cpp in Sources */, - 1A6421F712DCFBAB00CAAE2C /* DrawingAreaImpl.cpp in Sources */, - 1A64229912DD029200CAAE2C /* DrawingAreaMessageReceiver.cpp in Sources */, - 1A64230812DD09EB00CAAE2C /* DrawingAreaProxyMessageReceiver.cpp in Sources */, - 1A64245F12DE29A100CAAE2C /* UpdateInfo.cpp in Sources */, - 1A64256912DE42EC00CAAE2C /* BackingStore.cpp in Sources */, - 1A64292D12DE5F9800CAAE2C /* BackingStoreMac.mm in Sources */, - 1AA2E51E12E4C05E00BC4966 /* CGUtilities.cpp in Sources */, - C574A37712E6099D002DFE98 /* WebDragClientMac.mm in Sources */, - C574A58212E66681002DFE98 /* PasteboardTypes.mm in Sources */, - E134F01A12EA5D99004EC58D /* WKPrintingView.mm in Sources */, - BC9585C812F095B800755821 /* WebGestureEvent.cpp in Sources */, - 1A186EEB12EF7618008E5F37 /* LayerTreeHost.cpp in Sources */, - 6501BD1A12F1243400E9F248 /* WKBundleInspector.cpp in Sources */, - BC8147AA12F64CDA007B2C32 /* InjectedBundlePagePolicyClient.cpp in Sources */, - BC8147D612F66D31007B2C32 /* InjectedBundleNavigationAction.cpp in Sources */, - BC7043CD12F75EE0006472B9 /* WKBundleNavigationAction.cpp in Sources */, - 1A92DC1312F8BAB90017AF65 /* LayerTreeContextMac.mm in Sources */, - BCA56A1D12F9028E00C566C7 /* WebGraphicsContext.cpp in Sources */, - BCA56A6612F9C8F900C566C7 /* WKGraphicsContext.cpp in Sources */, - BCA56A6A12F9C9AD00C566C7 /* WKGraphicsContextCG.cpp in Sources */, - 659C551E130006410025C0C2 /* InjectedBundlePageResourceLoadClient.cpp in Sources */, - 512E34E4130B4D0500ABD19A /* WKApplicationCacheManager.cpp in Sources */, - 512E3524130B550600ABD19A /* WebApplicationCacheManagerProxy.cpp in Sources */, - 512E352E130B55AF00ABD19A /* WebApplicationCacheManager.cpp in Sources */, - 512E356A130B57F000ABD19A /* WebApplicationCacheManagerMessageReceiver.cpp in Sources */, - 512E35F8130B642E00ABD19A /* WebApplicationCacheManagerProxyMessageReceiver.cpp in Sources */, - 1AC86FF3130B46D3002C1257 /* WKPluginSiteDataManager.cpp in Sources */, - 1AC8702E130B49A2002C1257 /* WebPluginSiteDataManager.cpp in Sources */, - 3336762F130C9998006C9DE2 /* WebResourceCacheManager.cpp in Sources */, - 33367635130C99B2006C9DE2 /* WebResourceCacheManagerProxy.cpp in Sources */, - 3336763A130C99DC006C9DE2 /* WKResourceCacheManager.cpp in Sources */, - 33367655130C9ECA006C9DE2 /* WebResourceCacheManagerMessageReceiver.cpp in Sources */, - 33367657130C9ECA006C9DE2 /* WebResourceCacheManagerProxyMessageReceiver.cpp in Sources */, - 33152975130D0CB200ED2483 /* SecurityOriginData.cpp in Sources */, - 33F9D5B91312F1EE000D683F /* WebResourceCacheManagerCFNet.cpp in Sources */, - 51A9E0FF1315CCDE009E7031 /* WebKeyValueStorageManager.cpp in Sources */, - 51A9E1051315CCFC009E7031 /* WebKeyValueStorageManagerProxy.cpp in Sources */, - 51A9E10A1315CD18009E7031 /* WKKeyValueStorageManager.cpp in Sources */, - 51A9E1281315ED35009E7031 /* WebKeyValueStorageManagerMessageReceiver.cpp in Sources */, - 51A9E12A1315ED35009E7031 /* WebKeyValueStorageManagerProxyMessageReceiver.cpp in Sources */, - 939AE7661316E99C00AE06A6 /* WebCoreArgumentCoders.cpp in Sources */, - 330934471315B9220097A7BC /* WebCookieManagerMessageReceiver.cpp in Sources */, - 330934491315B9220097A7BC /* WebCookieManagerProxyMessageReceiver.cpp in Sources */, - 3309344F1315B94D0097A7BC /* WebCookieManager.cpp in Sources */, - 330934551315B9750097A7BC /* WebCookieManagerProxy.cpp in Sources */, - 3309345A1315B9980097A7BC /* WKCookieManager.cpp in Sources */, - BCE81D8C1319F7EF00241910 /* FontInfo.cpp in Sources */, - BCE81D98131AE02100241910 /* DictionaryPopupInfo.cpp in Sources */, - 33AA1066131F060000D4A575 /* WebCookieManagerProxyClient.cpp in Sources */, - CD73BA47131ACC9A00EEDED2 /* WebFullScreenManagerProxyMessageReceiver.cpp in Sources */, - CD73BA4E131ACDB700EEDED2 /* WebFullScreenManagerMessageReceiver.cpp in Sources */, - CD73BA53131B645B00EEDED2 /* WebFullScreenManager.cpp in Sources */, - CD6F75F4131B66D000D6B21E /* WebFullScreenManagerProxy.cpp in Sources */, - CDCA85C8132ABA4E00E961DF /* WKFullScreenWindowController.mm in Sources */, - CDCA85EE132AD70100E961DF /* WebFullScreenManagerProxyMac.mm in Sources */, - CDCA8603132ADC0500E961DF /* WebFullScreenManagerMac.mm in Sources */, - BCFD548B132D82680055D816 /* WKErrorCF.cpp in Sources */, - 511B24A6132E095700065A0C /* WebIconDatabaseProxy.cpp in Sources */, - 511B24AA132E097200065A0C /* WebIconDatabase.cpp in Sources */, - 51D02F64132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp in Sources */, - 51D02F6B132EC73700BEAA96 /* WebIconDatabaseProxyMessageReceiver.cpp in Sources */, - B878B616133428DC006888E9 /* CorrectionPanel.mm in Sources */, - 33D3A3B51339600B00709BE4 /* WKMediaCacheManager.cpp in Sources */, - 33D3A3BA1339606200709BE4 /* WebMediaCacheManagerProxy.cpp in Sources */, - 33D3A3C1133960B000709BE4 /* WebMediaCacheManager.cpp in Sources */, - 33D3A3C81339617900709BE4 /* WebMediaCacheManagerMessageReceiver.cpp in Sources */, - 33D3A3CA1339617900709BE4 /* WebMediaCacheManagerProxyMessageReceiver.cpp in Sources */, - 5160BFE113381DF900918999 /* Logging.mac.mm in Sources */, - C0D74DDE133BE2D90089CD44 /* LayerTreeHostCA.cpp in Sources */, - C03A136C133BEBF900D767D1 /* LayerTreeHostCAMac.mm in Sources */, - 5110AE0C133C16CB0072717A /* WKIconDatabase.cpp in Sources */, - 5123CF1B133D260A0056F800 /* WKIconDatabaseCG.cpp in Sources */, - F6A90813133C20510082C3F4 /* WebCookieManagerMac.mm in Sources */, - F6D632BC133D198200743D77 /* WebCookieManagerProxyMac.mm in Sources */, - 51834592134532E90092B696 /* WebIconDatabaseClient.cpp in Sources */, - E1A31735134CEA80007C9A4F /* AttributedString.mm in Sources */, - E179FD9F134D38250015B883 /* ArgumentCodersMac.mm in Sources */, - 31EA25D2134F78C0005B1452 /* NativeWebMouseEventMac.mm in Sources */, - CD5C66A0134B9D38004FE2A8 /* InjectedBundlePageFullScreenClient.cpp in Sources */, - 51C4032C136749D800DC972D /* AuthenticationManager.mac.mm in Sources */, - DF58C6361371ACA000F9A37C /* NativeWebWheelEventMac.mm in Sources */, - 1A7C6CDA1378950800B9C04D /* EnvironmentVariables.cpp in Sources */, - 1A17977F137EE82C00F97D45 /* PluginCreationParameters.cpp in Sources */, - BCE17B7D1381F1170012A641 /* WKPagePrivateMac.cpp in Sources */, - 51D130531382EAC000351EDD /* SecItemRequestData.cpp in Sources */, - 51D130551382EAC000351EDD /* SecItemResponseData.cpp in Sources */, - 51D130581382F10500351EDD /* WebProcessProxyMac.mm in Sources */, - 51B15A8413843A3900321AD8 /* EnvironmentUtilities.cpp in Sources */, - 511F8A80138B46FE00A95F44 /* SecItemShimMethods.mm in Sources */, - 512DF6D9138C181A00A22FC6 /* KeychainItemShimMethods.mm in Sources */, - 512DF6FE138C254600A22FC6 /* SecKeychainItemRequestData.cpp in Sources */, - 512DF700138C254600A22FC6 /* SecKeychainItemResponseData.cpp in Sources */, - 512DF70A138C26C700A22FC6 /* KeychainAttribute.cpp in Sources */, - 93C01DAD139AC91700ED51D7 /* CoreIPCClientRunLoop.mm in Sources */, - 1A3D610113A7CC2A00F95D4E /* PluginModuleInfo.cpp in Sources */, - 1A3D610513A7F03A00F95D4E /* ArgumentCoders.cpp in Sources */, - 5D51845513BCF9CC00C7FF4A /* APIClientTraits.cpp in Sources */, - 5272B28A1406985D0096A5D0 /* StatisticsData.cpp in Sources */, - 1A2BB6D014117B4D000F35D4 /* PluginProcessConnectionMessageReceiver.cpp in Sources */, - 7801C099142290C400FAF9AF /* WebHitTestResult.cpp in Sources */, - E199875E142C045400BB2DE7 /* BuiltInPDFView.cpp in Sources */, - 0F174AA7142AAC610039250F /* WKGeometry.cpp in Sources */, - B62E7310143047A60069EC35 /* WKHitTestResult.cpp in Sources */, - BCBAAC72144E61990053F82F /* WKBrowsingContextController.mm in Sources */, - BCBAACEC145225E30053F82F /* WKProcessGroup.mm in Sources */, - BCBAACF51452324F0053F82F /* WKBrowsingContextGroup.mm in Sources */, - E1AEA23014687BDB00804569 /* WKFullKeyboardAccessWatcher.mm in Sources */, - 1AAF263814687C39004A1E8A /* TiledCoreAnimationDrawingArea.mm in Sources */, - 1AF05D8614688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.mm in Sources */, - BC4A628F147312BE006C681A /* WebConnection.cpp in Sources */, - BC4A6291147312BE006C681A /* WebConnectionClient.cpp in Sources */, - BC4A6296147313A0006C681A /* WKConnectionRef.cpp in Sources */, - BC4A62A714744EC7006C681A /* WebConnectionToWebProcess.cpp in Sources */, - BC09B8F8147460F7005F5625 /* WebContextConnectionClient.cpp in Sources */, - 31099973146C75A20029DEB9 /* WebNotificationClient.cpp in Sources */, - 318BE1671473433700A8FBB2 /* WebNotificationManagerProxyMessageReceiver.cpp in Sources */, - 318BE17514743DD700A8FBB2 /* WKNotificationManager.cpp in Sources */, - 318BE17714743E6000A8FBB2 /* WKNotification.cpp in Sources */, - 31BA924D148831260062EDB5 /* WebNotificationManagerMessageReceiver.cpp in Sources */, - BCD3675C148C26C000447E87 /* WebConnectionToUIProcess.cpp in Sources */, - 8CFECE941490F140002AAA32 /* EditorState.cpp in Sources */, - B63403F914910D57001070B5 /* APIObject.cpp in Sources */, - 31A2EC48148997C200810D71 /* WebNotification.cpp in Sources */, - 31A2EC4A148997C200810D71 /* WebNotificationManagerProxy.cpp in Sources */, - 31A2EC4D148997C200810D71 /* WebNotificationProvider.cpp in Sources */, - 31A2EC501489980500810D71 /* NotificationPermissionRequestManagerProxy.cpp in Sources */, - 31A2EC551489982E00810D71 /* NotificationPermissionRequest.cpp in Sources */, - 31A2EC77148D662E00810D71 /* WKNotificationPermissionRequest.cpp in Sources */, - 3131261E148FF82C00BA2A39 /* NotificationPermissionRequestManager.cpp in Sources */, - 31312620148FF82C00BA2A39 /* WebNotificationManager.cpp in Sources */, - BCA284D61492F2C7001F9042 /* WKConnection.mm in Sources */, - 5DA6ED0B1490606900B41D12 /* DynamicLinkerEnvironmentExtractor.mm in Sources */, - 1AA575FA1496B52600A4EE06 /* EventDispatcher.cpp in Sources */, - 1AA576021496B97900A4EE06 /* EventDispatcherMessageReceiver.cpp in Sources */, + BC8699B6116AADAA002A925B /* WKView.mm in Sources */, + BC2E6E8D1141971500A63B1E /* WorkQueue.cpp in Sources */, + BC0092F8115837A300E0AE2A /* WorkQueueMac.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Source/WebKit2/WebKit2Prefix.h b/Source/WebKit2/WebKit2Prefix.h index a96014f02..59a1378d7 100644 --- a/Source/WebKit2/WebKit2Prefix.h +++ b/Source/WebKit2/WebKit2Prefix.h @@ -28,6 +28,20 @@ #import <Cocoa/Cocoa.h> #endif +/* When C++ exceptions are disabled, the C++ library defines |try| and |catch| +* to allow C++ code that expects exceptions to build. These definitions +* interfere with Objective-C++ uses of Objective-C exception handlers, which +* use |@try| and |@catch|. As a workaround, undefine these macros. */ + +#ifdef __cplusplus +#include <algorithm> // needed for exception_defines.h +#endif + +#ifdef __OBJC__ +#undef try +#undef catch +#endif + #ifdef __cplusplus #define new ("if you use new/delete make sure to include config.h at the top of the file"()) #define delete ("if you use new/delete make sure to include config.h at the top of the file"()) diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h index fa364cd72..dd68e1f9b 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h @@ -182,6 +182,16 @@ private: virtual void attachRootGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) OVERRIDE; virtual void setNeedsOneShotDrawingSynchronization() OVERRIDE; virtual void scheduleCompositingLayerSync() OVERRIDE; + + virtual CompositingTriggerFlags allowedCompositingTriggers() const + { + return static_cast<CompositingTriggerFlags>( + ThreeDTransformTrigger | + VideoTrigger | + PluginTrigger| + CanvasTrigger | + AnimationTrigger); + } #endif #if ENABLE(TOUCH_EVENTS) diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp b/Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp index c0f612801..907d20c5c 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp @@ -401,6 +401,9 @@ WebGraphicsLayer* toWebGraphicsLayer(GraphicsLayer* layer) void WebGraphicsLayer::syncCompositingStateForThisLayerOnly() { + if (!m_layerTreeTileClient) + m_layerTreeTileClient = layerTreeTileClient(); + updateContentBuffers(); if (!m_modified) @@ -431,12 +434,11 @@ void WebGraphicsLayer::syncCompositingStateForThisLayerOnly() for (size_t i = 0; i < children().size(); ++i) m_layerInfo.children.append(toWebLayerID(children()[i])); - WebLayerTreeTileClient* tileClient = layerTreeTileClient(); - ASSERT(tileClient); + ASSERT(m_layerTreeTileClient); if (m_layerInfo.imageIsUpdated && m_image && !m_layerInfo.imageBackingStoreID) - m_layerInfo.imageBackingStoreID = tileClient->adoptImageBackingStore(m_image.get()); + m_layerInfo.imageBackingStoreID = m_layerTreeTileClient->adoptImageBackingStore(m_image.get()); - tileClient->didSyncCompositingStateForLayer(m_layerInfo); + m_layerTreeTileClient->didSyncCompositingStateForLayer(m_layerInfo); m_modified = false; m_layerInfo.imageIsUpdated = false; if (m_hasPendingAnimations) @@ -612,6 +614,22 @@ void WebGraphicsLayer::recreateBackingStoreIfNeeded() if (m_image) setContentsNeedsDisplay(); } + +void WebGraphicsLayer::setLayerTreeTileClient(WebKit::WebLayerTreeTileClient* client) +{ + if (m_layerTreeTileClient == client) + return; + + for (size_t i = 0; i < children().size(); ++i) { + WebGraphicsLayer* layer = toWebGraphicsLayer(this->children()[i]); + layer->setLayerTreeTileClient(client); + } + + // Have to force detach from remote layer here if layer tile client changes. + if (m_layerTreeTileClient) + m_layerTreeTileClient->didDeleteLayer(id()); + m_layerTreeTileClient = client; +} #endif static PassOwnPtr<GraphicsLayer> createWebGraphicsLayer(GraphicsLayerClient* client) diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h b/Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h index 52955de1e..361fcb286 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h @@ -124,7 +124,7 @@ public: virtual void updateTile(int tileID, const WebKit::UpdateInfo&); virtual void removeTile(int tileID); - void setLayerTreeTileClient(WebKit::WebLayerTreeTileClient* client) { m_layerTreeTileClient = client; } + void setLayerTreeTileClient(WebKit::WebLayerTreeTileClient*); WebKit::WebLayerTreeTileClient* layerTreeTileClient() const; bool isReadyForTileBufferSwap() const; diff --git a/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp b/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp index 6486587d0..1a91d8e3c 100644 --- a/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp +++ b/Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp @@ -78,7 +78,7 @@ void EventDispatcher::didReceiveMessageOnConnectionWorkQueue(CoreIPC::Connection } } -void EventDispatcher::wheelEvent(uint64_t pageID, const WebWheelEvent& wheelEvent) +void EventDispatcher::wheelEvent(CoreIPC::Connection*, uint64_t pageID, const WebWheelEvent& wheelEvent) { #if ENABLE(THREADED_SCROLLING) MutexLocker locker(m_scrollingCoordinatorsMutex); @@ -96,7 +96,7 @@ void EventDispatcher::wheelEvent(uint64_t pageID, const WebWheelEvent& wheelEven } #if ENABLE(GESTURE_EVENTS) -void EventDispatcher::gestureEvent(uint64_t pageID, const WebGestureEvent& gestureEvent) +void EventDispatcher::gestureEvent(CoreIPC::Connection*, uint64_t pageID, const WebGestureEvent& gestureEvent) { #if ENABLE(THREADED_SCROLLING) MutexLocker locker(m_scrollingCoordinatorsMutex); diff --git a/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h b/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h index 7cd2f9550..f8c459af5 100644 --- a/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h +++ b/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h @@ -66,9 +66,9 @@ private: void didReceiveEventDispatcherMessageOnConnectionWorkQueue(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder* arguments, bool& didHandleMessage); // Message handlers - void wheelEvent(uint64_t pageID, const WebWheelEvent&); + void wheelEvent(CoreIPC::Connection*, uint64_t pageID, const WebWheelEvent&); #if ENABLE(GESTURE_EVENTS) - void gestureEvent(uint64_t pageID, const WebGestureEvent&); + void gestureEvent(CoreIPC::Connection*, uint64_t pageID, const WebGestureEvent&); #endif // This is called on the main thread. diff --git a/Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp b/Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp index 266a3a95d..341fb69e4 100644 --- a/Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp +++ b/Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp @@ -52,6 +52,8 @@ PassRefPtr<LayerTreeHostQt> LayerTreeHostQt::create(WebPage* webPage) LayerTreeHostQt::~LayerTreeHostQt() { + if (m_rootLayer) + toWebGraphicsLayer(m_rootLayer.get())->setLayerTreeTileClient(0); } LayerTreeHostQt::LayerTreeHostQt(WebPage* webPage) diff --git a/Source/WebKit2/WebProcess/WebProcess.cpp b/Source/WebKit2/WebProcess/WebProcess.cpp index 9fdca9051..39b3bc8e5 100644 --- a/Source/WebKit2/WebProcess/WebProcess.cpp +++ b/Source/WebKit2/WebProcess/WebProcess.cpp @@ -949,7 +949,7 @@ void WebProcess::garbageCollectJavaScriptObjects() } #if ENABLE(PLUGIN_PROCESS) -void WebProcess::pluginProcessCrashed(const String& pluginPath) +void WebProcess::pluginProcessCrashed(CoreIPC::Connection*, const String& pluginPath) { m_pluginProcessConnectionManager.pluginProcessCrashed(pluginPath); } diff --git a/Source/WebKit2/WebProcess/WebProcess.h b/Source/WebKit2/WebProcess/WebProcess.h index b6fff7f2f..1e50284c0 100644 --- a/Source/WebKit2/WebProcess/WebProcess.h +++ b/Source/WebKit2/WebProcess/WebProcess.h @@ -73,6 +73,11 @@ struct WebPageGroupData; struct WebPreferencesStore; struct WebProcessCreationParameters; +#if PLATFORM(MAC) +class SecItemResponseData; +class SecKeychainItemResponseData; +#endif + class WebProcess : public ChildProcess, private CoreIPC::Connection::QueueClient { public: static WebProcess& shared(); @@ -182,7 +187,7 @@ private: #endif #if ENABLE(PLUGIN_PROCESS) - void pluginProcessCrashed(const String& pluginPath); + void pluginProcessCrashed(CoreIPC::Connection*, const String& pluginPath); #endif void startMemorySampler(const SandboxExtension::Handle&, const String&, const double); @@ -199,6 +204,11 @@ private: void getWebCoreStatistics(uint64_t callbackID); void garbageCollectJavaScriptObjects(); +#if PLATFORM(MAC) + void secItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecItemResponseData&); + void secKeychainItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecKeychainItemResponseData&); +#endif + // ChildProcess virtual bool shouldTerminate(); virtual void terminate(); diff --git a/Source/WebKit2/WebProcess/WebProcess.messages.in b/Source/WebKit2/WebProcess/WebProcess.messages.in index b991f44c5..641cc7df1 100644 --- a/Source/WebKit2/WebProcess/WebProcess.messages.in +++ b/Source/WebKit2/WebProcess/WebProcess.messages.in @@ -75,4 +75,9 @@ messages -> WebProcess { GetWebCoreStatistics(uint64_t callbackID) GarbageCollectJavaScriptObjects() + +#if PLATFORM(MAC) + SecItemResponse(uint64_t requestID, WebKit::SecItemResponseData response) DispatchOnConnectionQueue + SecKeychainItemResponse(uint64_t requestID, WebKit::SecKeychainItemResponseData response) DispatchOnConnectionQueue +#endif } diff --git a/Source/WebKit2/WebProcess/com.apple.WebProcess.sb b/Source/WebKit2/WebProcess/com.apple.WebProcess.sb index 80c707806..41c00ac2e 100644 --- a/Source/WebKit2/WebProcess/com.apple.WebProcess.sb +++ b/Source/WebKit2/WebProcess/com.apple.WebProcess.sb @@ -151,6 +151,7 @@ (global-name "com.apple.SecurityServer") (global-name "com.apple.SystemConfiguration.configd") (global-name "com.apple.SystemConfiguration.PPPController") + (global-name "com.apple.SystemConfiguration.SCNetworkReachability") (global-name "com.apple.audio.VDCAssistant") (global-name "com.apple.audio.audiohald") (global-name "com.apple.audio.coreaudiod") diff --git a/Source/WebKit2/WebProcess/mac/CoreIPCClientRunLoop.mm b/Source/WebKit2/WebProcess/mac/CoreIPCClientRunLoop.mm deleted file mode 100644 index cb50465f9..000000000 --- a/Source/WebKit2/WebProcess/mac/CoreIPCClientRunLoop.mm +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2011 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - */ - -#import "config.h" -#import "CoreIPCClientRunLoop.h" - -#import <WebCore/ResourceHandle.h> -#import <wtf/RetainPtr.h> - -using namespace WebCore; - -@interface WKFunctionAdapter : NSObject -{ -@public - WebKit::FunctionWithContext function; - void* context; -} -- (void)perform; -@end - -@implementation WKFunctionAdapter - -- (void)perform -{ - function(context); -} - -@end - -namespace WebKit { - -static CFArrayRef createCoreIPCRunLoopModesArray() -{ - // Ideally we'd like to list all modes here that might be used for run loops while we are handling networking. - // We have to explicitly include the run loop mode used for synchronous loads in WebCore so we don't get deadlock - // when those loads call security functions that are shimmed. - const void* values[2] = { kCFRunLoopCommonModes, ResourceHandle::synchronousLoadRunLoopMode() }; - return CFArrayCreate(0, values, 2, &kCFTypeArrayCallBacks); -} - -static NSArray *coreIPCRunLoopModesArray() -{ - static CFArrayRef modes = createCoreIPCRunLoopModesArray(); - return (NSArray *)modes; -} - -void callOnCoreIPCClientRunLoopAndWait(FunctionWithContext function, void* context) -{ - // FIXME: It would fit better with WebKit2 coding style to use a WTF Function here. - // To do that we'd need to make dispatch have an overload that takes an array of run loop modes or find some - // other way to specify that we want to include the synchronous load run loop mode. - RetainPtr<WKFunctionAdapter> adapter(AdoptNS, [[WKFunctionAdapter alloc] init]); - adapter->function = function; - adapter->context = context; - [adapter.get() performSelectorOnMainThread:@selector(perform) withObject:nil waitUntilDone:YES modes:coreIPCRunLoopModesArray()]; -} - -} diff --git a/Source/WebKit2/WebProcess/mac/KeychainItemShimMethods.h b/Source/WebKit2/WebProcess/mac/KeychainItemShimMethods.h index ae80130ad..1c7fe33c6 100644 --- a/Source/WebKit2/WebProcess/mac/KeychainItemShimMethods.h +++ b/Source/WebKit2/WebProcess/mac/KeychainItemShimMethods.h @@ -30,6 +30,9 @@ namespace WebKit { void initializeKeychainItemShim(); +class SecKeychainItemResponseData; +void didReceiveSecKeychainItemResponse(uint64_t requestID, const SecKeychainItemResponseData&); + } #endif // KeychainItemShimMethods_h diff --git a/Source/WebKit2/WebProcess/mac/KeychainItemShimMethods.mm b/Source/WebKit2/WebProcess/mac/KeychainItemShimMethods.mm index 0f1ac9317..5f71ae46b 100644 --- a/Source/WebKit2/WebProcess/mac/KeychainItemShimMethods.mm +++ b/Source/WebKit2/WebProcess/mac/KeychainItemShimMethods.mm @@ -28,7 +28,7 @@ #if defined(BUILDING_ON_SNOW_LEOPARD) -#import "CoreIPCClientRunLoop.h" +#import "KeychainShimResponseMap.h" #import "SecKeychainItemRequestData.h" #import "SecKeychainItemResponseData.h" #import "WebProcess.h" @@ -40,34 +40,30 @@ namespace WebKit { // Methods to allow the shim to manage memory for its own AttributeList contents. -static HashSet<SecKeychainAttributeList*>& shimManagedAttributeLists() +static HashSet<SecKeychainAttributeList*>& managedAttributeLists() { - DEFINE_STATIC_LOCAL(HashSet<SecKeychainAttributeList*>, set, ()); - return set; + AtomicallyInitializedStatic(HashSet<SecKeychainAttributeList*>&, managedAttributeLists = *new HashSet<SecKeychainAttributeList*>); + + return managedAttributeLists; } -static void freeAttributeListContents(SecKeychainAttributeList* attrList) +static Mutex& managedAttributeListsMutex() { - ASSERT(shimManagedAttributeLists().contains(attrList)); - ASSERT(attrList); - - for (size_t i = 0; i < attrList->count; ++i) - free(attrList->attr[i].data); - - shimManagedAttributeLists().remove(attrList); + AtomicallyInitializedStatic(Mutex&, managedAttributeListsMutex = *new Mutex); + return managedAttributeListsMutex; } static void allocateAttributeListContents(const Vector<KeychainAttribute>& attributes, SecKeychainAttributeList* attrList) { - ASSERT(isMainThread()); - if (!attrList) return; - - ASSERT(!shimManagedAttributeLists().contains(attrList)); + + MutexLocker locker(managedAttributeListsMutex()); + + ASSERT(!managedAttributeLists().contains(attrList)); ASSERT(attributes.size() == attrList->count); - shimManagedAttributeLists().add(attrList); + managedAttributeLists().add(attrList); for (size_t i = 0; i < attrList->count; ++i) { ASSERT(attributes[i].tag == attrList->attr[i].tag); @@ -87,15 +83,20 @@ static void allocateAttributeListContents(const Vector<KeychainAttribute>& attri } // Methods to allow the shim to manage memory for its own KeychainItem content data. -static HashSet<void*>& shimManagedKeychainItemContents() +static HashSet<void*>& managedKeychainItemContents() +{ + AtomicallyInitializedStatic(HashSet<void*>&, managedKeychainItemContents = *new HashSet<void*>); + return managedKeychainItemContents; +} + +static Mutex& managedKeychainItemContentsMutex() { - DEFINE_STATIC_LOCAL(HashSet<void*>, set, ()); - return set; + AtomicallyInitializedStatic(Mutex&, managedKeychainItemContentsMutex = *new Mutex); + return managedKeychainItemContentsMutex; } static void allocateKeychainItemContentData(CFDataRef cfData, UInt32* length, void** data) { - ASSERT(isMainThread()); ASSERT((length && data) || (!length && !data)); if (!data) return; @@ -109,184 +110,107 @@ static void allocateKeychainItemContentData(CFDataRef cfData, UInt32* length, vo *length = CFDataGetLength(cfData); *data = malloc(*length); CFDataGetBytes(cfData, CFRangeMake(0, *length), (UInt8*)*data); - shimManagedKeychainItemContents().add(*data); + + MutexLocker locker(managedKeychainItemContentsMutex()); + managedKeychainItemContents().add(*data); } -// FIXME (https://bugs.webkit.org/show_bug.cgi?id=60975) - Once CoreIPC supports sync messaging from a secondary thread, -// we can remove FreeAttributeListContext, FreeKeychainItemDataContext, KeychainItemAPIContext, and these 5 main-thread methods, -// and we can have the shim methods call out directly from whatever thread they're called on. +static bool webFreeAttributeListContent(SecKeychainAttributeList* attrList) +{ + MutexLocker locker(managedAttributeListsMutex()); -struct FreeAttributeListContext { - SecKeychainAttributeList* attrList; - bool freed; -}; + if (!managedAttributeLists().contains(attrList)) + return false; -static void webFreeAttributeListContentOnMainThread(void* voidContext) -{ - FreeAttributeListContext* context = (FreeAttributeListContext*)voidContext; - - if (!shimManagedAttributeLists().contains(context->attrList)) { - context->freed = false; - return; - } + for (size_t i = 0; i < attrList->count; ++i) + free(attrList->attr[i].data); - freeAttributeListContents(context->attrList); - context->freed = true; + managedAttributeLists().remove(attrList); + return true; } -static bool webFreeAttributeListContent(SecKeychainAttributeList* attrList) +static bool webFreeKeychainItemContent(void* data) { - FreeAttributeListContext context; - context.attrList = attrList; - - callOnCoreIPCClientRunLoopAndWait(webFreeAttributeListContentOnMainThread, &context); + MutexLocker locker(managedKeychainItemContentsMutex()); - return context.freed; -} + HashSet<void*>::iterator it = managedKeychainItemContents().find(data); + if (it == managedKeychainItemContents().end()) + return false; -struct FreeKeychainItemDataContext { - void* data; - bool freed; -}; + managedKeychainItemContents().remove(it); + return true; +} -static void webFreeKeychainItemContentOnMainThread(void* voidContext) +static KeychainShimResponseMap<SecKeychainItemResponseData>& responseMap() { - FreeKeychainItemDataContext* context = (FreeKeychainItemDataContext*)voidContext; - - if (!shimManagedKeychainItemContents().contains(context->data)) { - context->freed = false; - return; - } - - shimManagedKeychainItemContents().remove(context->data); - free(context->data); - context->freed = true; + AtomicallyInitializedStatic(KeychainShimResponseMap<SecKeychainItemResponseData>&, responseMap = *new KeychainShimResponseMap<SecKeychainItemResponseData>); + return responseMap; } -static bool webFreeKeychainItemContent(void* data) +static uint64_t generateSecKeychainItemRequestID() { - FreeKeychainItemDataContext context; - context.data = data; - - callOnCoreIPCClientRunLoopAndWait(webFreeKeychainItemContentOnMainThread, &context); - - return context.freed; + static int64_t uniqueSecKeychainItemRequestID; + return OSAtomicIncrement64Barrier(&uniqueSecKeychainItemRequestID); } -struct SecKeychainItemContext { - SecKeychainItemRef item; - - SecKeychainAttributeList* attributeList; - SecItemClass initialItemClass; - UInt32 length; - const void* data; - - SecItemClass* resultItemClass; - UInt32* resultLength; - void** resultData; - - OSStatus resultCode; -}; +void didReceiveSecKeychainItemResponse(uint64_t requestID, const SecKeychainItemResponseData& response) +{ + responseMap().didReceiveResponse(requestID, adoptPtr(new SecKeychainItemResponseData(response))); +} -static void webSecKeychainItemCopyContentOnMainThread(void* voidContext) +static PassOwnPtr<SecKeychainItemResponseData> sendSeqKeychainItemRequest(const SecKeychainItemRequestData& request) { - SecKeychainItemContext* context = (SecKeychainItemContext*)voidContext; + uint64_t requestID = generateSecKeychainItemRequestID(); + if (!WebProcess::shared().connection()->send(Messages::WebProcessProxy::SecKeychainItemRequest(requestID, request), 0)) + return nullptr; - SecKeychainItemRequestData requestData(context->item, context->attributeList); - SecKeychainItemResponseData response; - if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecKeychainItemCopyContent(requestData), Messages::WebProcessProxy::SecKeychainItemCopyContent::Reply(response), 0)) { - context->resultCode = errSecInteractionNotAllowed; - ASSERT_NOT_REACHED(); - return; - } - - allocateAttributeListContents(response.attributes(), context->attributeList); - allocateKeychainItemContentData(response.data(), context->resultLength, context->resultData); - if (context->resultItemClass) - *context->resultItemClass = response.itemClass(); - context->resultCode = response.resultCode(); + return responseMap().waitForResponse(requestID); } static OSStatus webSecKeychainItemCopyContent(SecKeychainItemRef item, SecItemClass* itemClass, SecKeychainAttributeList* attrList, UInt32* length, void** outData) { - SecKeychainItemContext context; - memset(&context, 0, sizeof(SecKeychainItemContext)); - context.item = item; - context.resultItemClass = itemClass; - context.attributeList = attrList; - context.resultLength = length; - context.resultData = outData; + SecKeychainItemRequestData request(SecKeychainItemRequestData::CopyContent, item, attrList); + OwnPtr<SecKeychainItemResponseData> response = sendSeqKeychainItemRequest(request); + if (!response) { + ASSERT_NOT_REACHED(); + return errSecInteractionNotAllowed; + } - callOnCoreIPCClientRunLoopAndWait(webSecKeychainItemCopyContentOnMainThread, &context); + if (itemClass) + *itemClass = response->itemClass(); + allocateAttributeListContents(response->attributes(), attrList); + allocateKeychainItemContentData(response->data(), length, outData); - // FIXME: should return context.resultCode. Returning noErr is a workaround for <rdar://problem/9520886>; + // FIXME: should return response->resultCode(). Returning noErr is a workaround for <rdar://problem/9520886>; // the authentication should fail anyway, since on error no data will be returned. return noErr; } -static void webSecKeychainItemCreateFromContentOnMainThread(void* voidContext) +static OSStatus webSecKeychainItemCreateFromContent(SecItemClass itemClass, SecKeychainAttributeList* attrList, UInt32 length, const void* data, SecKeychainItemRef *item) { - SecKeychainItemContext* context = (SecKeychainItemContext*)voidContext; - - SecKeychainItemRequestData requestData(context->initialItemClass, context->attributeList, context->length, context->data); - SecKeychainItemResponseData response; - if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecKeychainItemCreateFromContent(requestData), Messages::WebProcessProxy::SecKeychainItemCreateFromContent::Reply(response), 0)) { - context->resultCode = errSecInteractionNotAllowed; + SecKeychainItemRequestData request(SecKeychainItemRequestData::CreateFromContent, itemClass, attrList, length, data); + OwnPtr<SecKeychainItemResponseData> response = sendSeqKeychainItemRequest(request); + if (!response) { ASSERT_NOT_REACHED(); - return; + return errSecInteractionNotAllowed; } - if (response.keychainItem()) - CFRetain(response.keychainItem()); - context->item = response.keychainItem(); - context->resultCode = response.resultCode(); -} - -static OSStatus webSecKeychainItemCreateFromContent(SecItemClass itemClass, SecKeychainAttributeList* attrList, UInt32 length, const void* data, SecKeychainItemRef *item) -{ - SecKeychainItemContext context; - memset(&context, 0, sizeof(SecKeychainItemContext)); - context.initialItemClass = itemClass; - context.attributeList = attrList; - context.length = length; - context.data = data; - - callOnCoreIPCClientRunLoopAndWait(webSecKeychainItemCreateFromContentOnMainThread, &context); - if (item) - *item = context.item; - else - CFRelease(context.item); + *item = RetainPtr<SecKeychainItemRef>(response->keychainItem()).leakRef(); - return context.resultCode; + return response->resultCode(); } -static void webSecKeychainItemModifyContentOnMainThread(void* voidContext) +static OSStatus webSecKeychainItemModifyContent(SecKeychainItemRef itemRef, const SecKeychainAttributeList* attrList, UInt32 length, const void* data) { - SecKeychainItemContext* context = (SecKeychainItemContext*)voidContext; - - SecKeychainItemRequestData requestData(context->item, context->attributeList, context->length, context->data); - SecKeychainItemResponseData response; - if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecKeychainItemModifyContent(requestData), Messages::WebProcessProxy::SecKeychainItemModifyContent::Reply(response), 0)) { - context->resultCode = errSecInteractionNotAllowed; + SecKeychainItemRequestData request(SecKeychainItemRequestData::ModifyContent, itemRef, (SecKeychainAttributeList*)attrList, length, data); + OwnPtr<SecKeychainItemResponseData> response = sendSeqKeychainItemRequest(request); + if (!response) { ASSERT_NOT_REACHED(); - return; + return errSecInteractionNotAllowed; } - - context->resultCode = response.resultCode(); -} -static OSStatus webSecKeychainItemModifyContent(SecKeychainItemRef itemRef, const SecKeychainAttributeList* attrList, UInt32 length, const void* data) -{ - SecKeychainItemContext context; - context.item = itemRef; - context.attributeList = (SecKeychainAttributeList*)attrList; - context.length = length; - context.data = data; - - callOnCoreIPCClientRunLoopAndWait(webSecKeychainItemModifyContentOnMainThread, &context); - - return context.resultCode; + return response->resultCode(); } void initializeKeychainItemShim() diff --git a/Source/WebKit2/WebProcess/mac/CoreIPCClientRunLoop.h b/Source/WebKit2/WebProcess/mac/KeychainShimResponseMap.h index 28f3f4797..b4a78e648 100644 --- a/Source/WebKit2/WebProcess/mac/CoreIPCClientRunLoop.h +++ b/Source/WebKit2/WebProcess/mac/KeychainShimResponseMap.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Apple Inc. All rights reserved. + * Copyright (C) 2012 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -23,12 +23,47 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -namespace WebKit { +#ifndef KeychainShimResponseMap_h +#define KeychainShimResponseMap_h -typedef void (*FunctionWithContext)(void* context); +#include <wtf/HashMap.h> +#include <wtf/OwnPtr.h> +#include <wtf/PassOwnPtr.h> +#include <wtf/ThreadingPrimitives.h> -// Call the function on a thread where it's safe to send a synchronous CoreIPC message. -// We can't use WTF's callOnMainThreadAndWait because it doesn't support enough run loop modes. -void callOnCoreIPCClientRunLoopAndWait(FunctionWithContext, void* context); +template<typename T> +class KeychainShimResponseMap { +public: + PassOwnPtr<T> waitForResponse(uint64_t requestID) + { + while (true) { + MutexLocker locker(m_mutex); -} + if (OwnPtr<T> response = m_responses.take(requestID)) + return response.release(); + + m_condition.wait(m_mutex); + } + + return nullptr; + } + + void didReceiveResponse(uint64_t requestID, PassOwnPtr<T> response) + { + MutexLocker locker(m_mutex); + ASSERT(!m_responses.contains(requestID)); + + m_responses.set(requestID, response); + m_condition.signal(); + } + +private: + Mutex m_mutex; + ThreadCondition m_condition; + + HashMap<uint64_t, OwnPtr<T> > m_responses; +}; + + + +#endif // KeychainShimResponseMap_h diff --git a/Source/WebKit2/WebProcess/mac/SecItemShimMethods.h b/Source/WebKit2/WebProcess/mac/SecItemShimMethods.h index 9d67ed982..7c8d4791d 100644 --- a/Source/WebKit2/WebProcess/mac/SecItemShimMethods.h +++ b/Source/WebKit2/WebProcess/mac/SecItemShimMethods.h @@ -30,6 +30,9 @@ namespace WebKit { void initializeSecItemShim(); +class SecItemResponseData; +void didReceiveSecItemResponse(uint64_t requestID, const SecItemResponseData&); + } #endif // SecItemShimMethods_h diff --git a/Source/WebKit2/WebProcess/mac/SecItemShimMethods.mm b/Source/WebKit2/WebProcess/mac/SecItemShimMethods.mm index 5b2b75ce8..c3575744f 100644 --- a/Source/WebKit2/WebProcess/mac/SecItemShimMethods.mm +++ b/Source/WebKit2/WebProcess/mac/SecItemShimMethods.mm @@ -28,7 +28,7 @@ #if !defined(BUILDING_ON_SNOW_LEOPARD) -#import "CoreIPCClientRunLoop.h" +#import "KeychainShimResponseMap.h" #import "SecItemRequestData.h" #import "SecItemResponseData.h" #import "WebProcess.h" @@ -39,122 +39,68 @@ namespace WebKit { -// FIXME (https://bugs.webkit.org/show_bug.cgi?id=60975) - Once CoreIPC supports sync messaging from a secondary thread, -// we can remove SecItemAPIContext and these 4 main-thread methods, and we can have the shim methods call out directly -// from whatever thread they're on. - -struct SecItemAPIContext { - CFDictionaryRef query; - CFDictionaryRef attributesToUpdate; - CFTypeRef resultObject; - OSStatus resultCode; -}; - -static void webSecItemCopyMatchingMainThread(void* voidContext) +static KeychainShimResponseMap<SecItemResponseData>& responseMap() { - SecItemAPIContext* context = (SecItemAPIContext*)voidContext; - - SecItemRequestData requestData(context->query); - SecItemResponseData response; - if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemCopyMatching(requestData), Messages::WebProcessProxy::SecItemCopyMatching::Reply(response), 0)) { - context->resultCode = errSecInteractionNotAllowed; - ASSERT_NOT_REACHED(); - return; - } - - context->resultObject = response.resultObject().leakRef(); - context->resultCode = response.resultCode(); + AtomicallyInitializedStatic(KeychainShimResponseMap<SecItemResponseData>&, responseMap = *new KeychainShimResponseMap<SecItemResponseData>); + return responseMap; } -static OSStatus webSecItemCopyMatching(CFDictionaryRef query, CFTypeRef* result) +static uint64_t generateSecItemRequestID() { - SecItemAPIContext context; - context.query = query; - - callOnCoreIPCClientRunLoopAndWait(webSecItemCopyMatchingMainThread, &context); - - if (result) - *result = context.resultObject; - return context.resultCode; + static int64_t uniqueSecItemRequestID; + return OSAtomicIncrement64Barrier(&uniqueSecItemRequestID); } -static void webSecItemAddOnMainThread(void* voidContext) +void didReceiveSecItemResponse(uint64_t requestID, const SecItemResponseData& response) { - SecItemAPIContext* context = (SecItemAPIContext*)voidContext; - - SecItemRequestData requestData(context->query); - SecItemResponseData response; - if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemAdd(requestData), Messages::WebProcessProxy::SecItemAdd::Reply(response), 0)) { - context->resultCode = errSecInteractionNotAllowed; - ASSERT_NOT_REACHED(); - return; - } - - context->resultObject = response.resultObject().leakRef(); - context->resultCode = response.resultCode(); + responseMap().didReceiveResponse(requestID, adoptPtr(new SecItemResponseData(response))); } -static OSStatus webSecItemAdd(CFDictionaryRef query, CFTypeRef* result) +static PassOwnPtr<SecItemResponseData> sendSeqItemRequest(SecItemRequestData::Type requestType, CFDictionaryRef query, CFDictionaryRef attributesToMatch = 0) { - SecItemAPIContext context; - context.query = query; - - callOnCoreIPCClientRunLoopAndWait(webSecItemAddOnMainThread, &context); - - if (result) - *result = context.resultObject; - return context.resultCode; + uint64_t requestID = generateSecItemRequestID(); + if (!WebProcess::shared().connection()->send(Messages::WebProcessProxy::SecItemRequest(requestID, SecItemRequestData(requestType, query, attributesToMatch)), 0)) + return nullptr; + + return responseMap().waitForResponse(requestID); } -static void webSecItemUpdateOnMainThread(void* voidContext) +static OSStatus webSecItemCopyMatching(CFDictionaryRef query, CFTypeRef* result) { - SecItemAPIContext* context = (SecItemAPIContext*)voidContext; - - SecItemRequestData requestData(context->query, context->attributesToUpdate); - SecItemResponseData response; - if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemUpdate(requestData), Messages::WebProcessProxy::SecItemUpdate::Reply(response), 0)) { - context->resultCode = errSecInteractionNotAllowed; - ASSERT_NOT_REACHED(); - return; - } - - context->resultCode = response.resultCode(); + OwnPtr<SecItemResponseData> response = sendSeqItemRequest(SecItemRequestData::CopyMatching, query); + if (!response) + return errSecInteractionNotAllowed; + + *result = response->resultObject().leakRef(); + return response->resultCode(); } -static OSStatus webSecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate) +static OSStatus webSecItemAdd(CFDictionaryRef query, CFTypeRef* result) { - SecItemAPIContext context; - context.query = query; - context.attributesToUpdate = attributesToUpdate; - - callOnCoreIPCClientRunLoopAndWait(webSecItemUpdateOnMainThread, &context); + OwnPtr<SecItemResponseData> response = sendSeqItemRequest(SecItemRequestData::Add, query); + if (!response) + return errSecInteractionNotAllowed; - return context.resultCode; + *result = response->resultObject().leakRef(); + return response->resultCode(); } -static void webSecItemDeleteOnMainThread(void* voidContext) +static OSStatus webSecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate) { - SecItemAPIContext* context = (SecItemAPIContext*)voidContext; + OwnPtr<SecItemResponseData> response = sendSeqItemRequest(SecItemRequestData::Update, query, attributesToUpdate); + if (!response) + return errSecInteractionNotAllowed; - SecItemRequestData requestData(context->query); - SecItemResponseData response; - if (!WebProcess::shared().connection()->sendSync(Messages::WebProcessProxy::SecItemDelete(requestData), Messages::WebProcessProxy::SecItemDelete::Reply(response), 0)) { - context->resultCode = errSecInteractionNotAllowed; - ASSERT_NOT_REACHED(); - return; - } - - context->resultCode = response.resultCode(); + return response->resultCode(); } static OSStatus webSecItemDelete(CFDictionaryRef query) { - SecItemAPIContext context; - context.query = query; + OwnPtr<SecItemResponseData> response = sendSeqItemRequest(SecItemRequestData::Delete, query); + if (!response) + return errSecInteractionNotAllowed; - callOnCoreIPCClientRunLoopAndWait(webSecItemDeleteOnMainThread, &context); - - return context.resultCode; + return response->resultCode(); } void initializeSecItemShim() diff --git a/Source/WebKit2/WebProcess/mac/WebProcessMac.mm b/Source/WebKit2/WebProcess/mac/WebProcessMac.mm index e96ab4834..7d67e1e68 100644 --- a/Source/WebKit2/WebProcess/mac/WebProcessMac.mm +++ b/Source/WebKit2/WebProcess/mac/WebProcessMac.mm @@ -272,4 +272,18 @@ void WebProcess::platformTerminate() { } +void WebProcess::secItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecItemResponseData& response) +{ +#if !defined(BUILDING_ON_SNOW_LEOPARD) + didReceiveSecItemResponse(requestID, response); +#endif +} + +void WebProcess::secKeychainItemResponse(CoreIPC::Connection*, uint64_t requestID, const SecKeychainItemResponseData& response) +{ +#if defined(BUILDING_ON_SNOW_LEOPARD) + didReceiveSecKeychainItemResponse(requestID, response); +#endif +} + } // namespace WebKit |