2016-11-09 Matthew Hanson <matthew_hanson@apple.com> Merge r208437. rdar://problem/29032334 2016-11-09 Chris Dumez <cdumez@apple.com> [WK2] Network cache speculative revalidation can cause loads to hang https://bugs.webkit.org/show_bug.cgi?id=164532 <rdar://problem/28519331> Reviewed by Alex Christensen. Network cache speculative revalidation could cause loads to hang when HTTP authentication was involved because NetworkCacheSpeculativeLoad failed to call NetworkLoad::continueCanAuthenticateAgainstProtectionSpace() in its canAuthenticateAgainstProtectionSpaceAsync() callback. * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::canAuthenticateAgainstProtectionSpaceAsync): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: 2016-11-03 Matthew Hanson <matthew_hanson@apple.com> Merge r208328. rdar://problem/29084886 2016-11-03 Dan Bernstein <mitz@apple.com> REGRESSION (r206247): Painting milestones can be delayed until the next layer flush https://bugs.webkit.org/show_bug.cgi?id=164340 <rdar://problem/29074344> Reviewed by Tim Horton. * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: Declared new helper function. * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::sendPendingNewlyReachedLayoutMilestones): Helper function that sends the message to the UI process and resets m_pendingNewlyReachedLayoutMilestones. (WebKit::TiledCoreAnimationDrawingArea::flushLayers): Wait until after the commit to get the pending milestones and send them to the UI process. This way we don’t miss milestones that fire during the commit. 2016-11-03 Matthew Hanson <matthew_hanson@apple.com> Merge r208340. rdar://problem/29092397 2016-11-03 Dan Bernstein <mitz@apple.com> WKWebView’s _observedRenderingProgressEvents not restored after web process crash https://bugs.webkit.org/show_bug.cgi?id=164368 <rdar://problem/29091954> Reviewed by Anders Carlsson. Test: TestWebKitAPI/Tests/WebKit2Cocoa/ObservedRenderingProgressEventsAfterCrash.mm. * Shared/WebPageCreationParameters.cpp: (WebKit::WebPageCreationParameters::encode): Encode new observedLayoutMilestones member. (WebKit::WebPageCreationParameters::decode): Decode it. * Shared/WebPageCreationParameters.h: Declared new observedLayoutMilestones member variable. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::WebPageProxy): Removed initializer for m_wantsSessionRestorationRenderTreeSizeThresholdEvent. (WebKit::WebPageProxy::listenForLayoutMilestones): Update new m_observedLayoutMilestones member variable. Don’t update m_wantsSessionRestorationRenderTreeSizeThresholdEvent. (WebKit::WebPageProxy::creationParameters): Set the observedLayoutMilestones member in the creation parameters. * UIProcess/WebPageProxy.h: Declared new member variable, deleted m_wantsSessionRestorationRenderTreeSizeThresholdEvent declaration. * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::didCommitLayerTree): Rather than using m_wantsSessionRestorationRenderTreeSizeThresholdEvent, use m_observedLayoutMilestones. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::WebPage): Add the observed layout milestones from the creation parameters. 2016-11-03 Matthew Hanson <matthew_hanson@apple.com> Merge r208307. rdar://problem/29078457 2016-11-02 David Kilzer <ddkilzer@apple.com> Bug 164333: Add logging for "WebKit encountered an internal error" messages due to Network process crashes <https://webkit.org/b/164333> <rdar://problem/29072727> Reviewed by Alex Christensen. * WebProcess/WebProcess.cpp: (WebKit::WebProcess::logDiagnosticMessageForNetworkProcessCrash): Add private method to log diagnostic message. (WebKit::WebProcess::networkProcessConnectionClosed): Call logDiagnosticMessageForNetworkProcessCrash(). * WebProcess/WebProcess.h: (WebKit::WebProcess::logDiagnosticMessageForNetworkProcessCrash): Declare new method. 2016-11-03 Matthew Hanson <matthew_hanson@apple.com> Merge r208286. rdar://problem/28634857 2016-11-02 David Kilzer <ddkilzer@apple.com> Add logging for "WebKit encountered an internal error" messages <https://webkit.org/b/164272> <rdar://problem/28546064> Reviewed by Alex Christensen. * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::startNetworkLoad): * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::loadResourceSynchronously): * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::didReceiveResource): - Add logging for various internalError() events. 2016-11-01 Matthew Hanson <matthew_hanson@apple.com> Rollout r208255. rdar://problem/28962886 2016-11-01 Matthew Hanson <matthew_hanson@apple.com> Rollout r208173. rdar://problem/28962886 2016-10-31 Matthew Hanson <matthew_hanson@apple.com> Merge r208168. rdar://problem/28962886 2016-10-28 Brent Fulgham <bfulgham@apple.com> Do a better job of protecting Frame objects in the context of JavaScript calls https://bugs.webkit.org/show_bug.cgi?id=164163 <rdar://problem/28955249> Reviewed by Darin Adler. * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: (WebKit::InjectedBundleRangeHandle::renderedImage): Protected the Frame. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::insertTextAsync): Ditto. (WebKit::WebPage::setComposition): Ditto. * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::insertDictatedTextAsync): Ditto. 2016-10-31 Matthew Hanson <matthew_hanson@apple.com> Merge r206802. rdar://problem/28409525 2016-10-28 Said Abou-Hallawa <sabouhallawa@apple.com> The dragged image should be the current frame only of the animated image https://bugs.webkit.org/show_bug.cgi?id=162109 * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::provideDataForPasteboard): Call the Image function with its new name. 2016-10-27 Matthew Hanson <matthew_hanson@apple.com> Merge r206684. rdar://problem/28545011 2016-09-30 Brady Eidson <beidson@apple.com> REGRESSION (Safari 10 combined with WK changes): Unable to store WebCrypto keys in IndexedDB database. <rdar://problem/28334440> and https://bugs.webkit.org/show_bug.cgi?id=162554 Reviewed by Alexey Proskuryakov. Safari 10 has a WKPageNavigation client but does not implement the "copyWebCryptoMasterKey" callback. WebKit just fails in this case, instead of falling back to "getDefaultWebCryptoMasterKey". It should fall back. Additionally there's a WKContextClient callback to get the crypto key, also, but it is completely unused. So it should be pulled. * UIProcess/API/APILoaderClient.h: (API::LoaderClient::webCryptoMasterKey): Deleted. * UIProcess/API/C/WKContext.h: * UIProcess/API/C/WKPage.cpp: (WKPageSetPageLoaderClient): (WKPageSetPageNavigationClient): If the client doesn't implement this method, fallback to getDefaultWebCryptoMasterKey. * UIProcess/Cocoa/NavigationState.mm: (WebKit::NavigationState::NavigationClient::webCryptoMasterKey): If the client doesn't implement this method, fallback to getDefaultWebCryptoMasterKey. * UIProcess/WebContextClient.cpp: (WebKit::WebContextClient::copyWebCryptoMasterKey): Deleted. * UIProcess/WebContextClient.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::wrapCryptoKey): Only ask the NavigationClient before falling back. Don't ask the loader client. (WebKit::WebPageProxy::unwrapCryptoKey): Ditto. 2016-10-26 David Kilzer <ddkilzer@apple.com> Merge r207708. rdar://problem/28962914 2016-10-21 David Kilzer <ddkilzer@apple.com> Bug 163762: IntSize::area() should used checked arithmetic <https://webkit.org/b/163762> Reviewed by Darin Adler. * Shared/ShareableBitmap.cpp: (WebKit::ShareableBitmap::create): Add overflow check and return nullptr on overflow. (WebKit::ShareableBitmap::createShareable): Ditto. (WebKit::ShareableBitmap::create): Change debug assert for adequate buffer size check into release check. * Shared/ShareableBitmap.h: (WebKit::ShareableBitmap::numBytesForSize): Change to return a Checked<unsigned, RecordOverflow> value. (WebKit::ShareableBitmap::sizeInBytes): * Shared/cairo/ShareableBitmapCairo.cpp: (WebKit::ShareableBitmap::numBytesForSize): Ditto. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _takeViewSnapshot]): Call unsafeGet(). 2016-10-26 Babak Shafiei <bshafiei@apple.com> Merge r207171. rdar://problem/28857503 2016-10-11 Daniel Bates <dabates@apple.com> Attempt to fix the Apple Internal Mac build following r207159 (https://bugs.webkit.org/show_bug.cgi?id=163244) * UIProcess/API/Cocoa/WKWebView.mm: (shouldRequireUserGestureToLoadVideo): 2016-10-24 Matthew Hanson <matthew_hanson@apple.com> Merge r206762. rdar://problem/28544885 2016-10-03 Keith Rollin <krollin@apple.com> More logging to diagnose "WebKit encountered an internal error" messages https://bugs.webkit.org/show_bug.cgi?id=162754 Reviewed by Antti Koivisto. Add more logging around calls to internalError, as well as some low-level logging around SharedMemory, and mach_vm_map in particular. * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::startNetworkLoad): * Platform/Logging.h: * Platform/mac/SharedMemoryMac.cpp: (WebKit::SharedMemory::allocate): (WebKit::makeMemoryEntry): (WebKit::SharedMemory::map): (WebKit::SharedMemory::~SharedMemory): * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::networkProcessCrashed): (WebKit::WebLoaderStrategy::loadResourceSynchronously): * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::didReceiveResource): 2016-10-24 Matthew Hanson <matthew_hanson@apple.com> Merge r204472. rdar://problem/28544885 2016-08-15 Keith Rollin <krollin@apple.com> Rename LOG_ALWAYS https://bugs.webkit.org/show_bug.cgi?id=160768 Rename LOG_ALWAYS and friends, given that the first parameter to it is a boolean expression that determines whether or not logging should be performed. Reviewed by Chris Dumez. * NetworkProcess/Downloads/Download.cpp: (WebKit::Download::didReceiveResponse): (WebKit::Download::didReceiveData): (WebKit::Download::didFinish): (WebKit::Download::didFail): (WebKit::Download::didCancel): * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::prepareToSuspend): (WebKit::NetworkProcess::cancelPrepareToSuspend): (WebKit::NetworkProcess::processDidResume): * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::startNetworkLoad): (WebKit::NetworkResourceLoader::didFinishLoading): (WebKit::NetworkResourceLoader::didFailLoading): (WebKit::NetworkResourceLoader::continueWillSendRequest): * Platform/IPC/Connection.cpp: (IPC::Connection::waitForSyncReply): * Shared/ChildProcess.cpp: (WebKit::didCloseOnConnectionWorkQueue): * UIProcess/Cocoa/NavigationState.mm: (WebKit::NavigationState::didChangeIsLoading): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::fetchWebsiteData): (WebKit::NetworkProcessProxy::deleteWebsiteData): (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins): (WebKit::NetworkProcessProxy::setIsHoldingLockedFiles): * UIProcess/ProcessThrottler.cpp: (WebKit::ProcessThrottler::updateAssertionNow): (WebKit::ProcessThrottler::updateAssertion): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::updateActivityToken): * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::fetchWebsiteData): (WebKit::WebProcessProxy::deleteWebsiteData): (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins): (WebKit::WebProcessProxy::didSetAssertionState): (WebKit::WebProcessProxy::setIsHoldingLockedFiles): * UIProcess/ios/ProcessAssertionIOS.mm: (-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]): (WebKit::ProcessAssertion::ProcessAssertion): * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::scheduleLoad): * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::willSendRequest): (WebKit::WebResourceLoader::didReceiveResponse): (WebKit::WebResourceLoader::didReceiveData): (WebKit::WebResourceLoader::didFinishResourceLoad): (WebKit::WebResourceLoader::didFailResourceLoad): (WebKit::WebResourceLoader::didReceiveResource): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::layerVolatilityTimerFired): (WebKit::WebPage::markLayersVolatile): (WebKit::WebPage::cancelMarkLayersVolatile): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::actualPrepareToSuspend): (WebKit::WebProcess::processWillSuspendImminently): (WebKit::WebProcess::prepareToSuspend): (WebKit::WebProcess::cancelPrepareToSuspend): (WebKit::WebProcess::markAllLayersVolatile): (WebKit::WebProcess::processDidResume): 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r206771. rdar://problem/28811939 2016-10-04 Wenson Hsieh <wenson_hsieh@apple.com> Media controls are displayed in the incorrect state momentarily after switching between tabs playing media https://bugs.webkit.org/show_bug.cgi?id=162766 <rdar://problem/28533523> Reviewed by Jer Noble. Plumbs some more Now Playing information from the web process to the UI process for testing purposes. See WebCore ChangeLog for more details. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _handleActiveNowPlayingSessionInfoResponse:title:duration:elapsedTime:]): (-[WKWebView _handleActiveNowPlayingSessionInfoResponse:]): Deleted. * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/PageClient.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleActiveNowPlayingSessionInfoResponse): * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/mac/PageClientImpl.h: * UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::handleActiveNowPlayingSessionInfoResponse): * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::requestActiveNowPlayingSessionInfo): 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r206123. rdar://problem/28544885 2016-09-19 Keith Rollin <krollin@apple.com> Reduce logging from WebResourceLoader::didReceiveData https://bugs.webkit.org/show_bug.cgi?id=162233 Reviewed by Antti Koivisto. Only log once even if called multiple times for a single resource. * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::didReceiveData): * WebProcess/Network/WebResourceLoader.h: 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r207159. rdar://problem/28857481 2016-10-11 Daniel Bates <dabates@apple.com> [iOS] REGRESSION (r197953): User gesture required to load video in iOS 9-built apps https://bugs.webkit.org/show_bug.cgi?id=163244 <rdar://problem/27250015> Reviewed by Jer Noble. Enable or disable the Setting::requiresUserGestureToLoadVideo() in WebKit depending on the version of iOS SDK that the app was linked against. We require a user gesture to begin loading a video as of iOS 10. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/Cocoa/WKWebView.mm: (shouldRequireUserGestureToLoadVideo): Added. (-[WKWebView _initializeWithConfiguration:]): Set the requiresUserGestureToLoadVideo preference. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): Modified to pass the WebKit requiresUserGestureToLoadVideo preference to WebCore. 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r203809. rdar://problem/28433607 2016-07-27 Andy Estes <aestes@apple.com> [iOS] Add WKUIDelegate SPI for specifying that an attachment list is from a managed source https://bugs.webkit.org/show_bug.cgi?id=160280 <rdar://problem/27471815> Reviewed by Dan Bernstein. * Platform/spi/ios/UIKitSPI.h: Declared UIPreviewItemTypeAttachment, UIPreviewDataAttachmentList, and UIPreviewDataAttachmentIndex. * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Declared -_attachmentListForWebView:sourceIsManaged:. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _dataForPreviewItemController:atPosition:type:]): Used UIPreviewItemTypeAttachment, UIPreviewDataAttachmentList, and UIPreviewDataAttachmentIndex. If uiDelegate responds to -_attachmentListForWebView:sourceIsManaged:, called it instead of -_attachmentListForWebView:. Set sourceIsManaged as the value for the UIPreviewDataAttachmentListSourceIsManaged key in dataForPreview. 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r206449. rdar://problem/28635085 2016-09-27 Dan Bernstein <mitz@apple.com> [iOS] REGRESSION (r182126): Selection highlight and handles aren’t visible with WKSelectionGranularityCharacter https://bugs.webkit.org/show_bug.cgi?id=162577 <rdar://problem/28481984> Reviewed by Simon Fraser. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _uiTextSelectionRectViews]): Added this method in the WKTesting category, which uses UIKit internals to get the views used for the selection highlight. * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _selectionClipRect]): When selection is not confined to a form control or content-editable element, return the null rect to indicate no clipping, rather than clipping to the empty rect at the origin. 2016-10-20 Daniel Bates <dabates@apple.com> Merge r206809. rdar://problem/28718761 2016-10-05 Daniel Bates <dabates@apple.com> Do not follow redirects when sending violation report https://bugs.webkit.org/show_bug.cgi?id=162520 <rdar://problem/27957639> Reviewed by Alex Christensen. Update the non-Network Session WebKit2 implementation to follow redirect responses for a ping request, if applicable. I did not update the Network Session implementation at this time. I will fix it in <https://bugs.webkit.org/show_bug.cgi?id=162580>. * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::loadPing): Tell PingHandle whether to follow redirects. * NetworkProcess/NetworkLoadParameters.h: * NetworkProcess/NetworkResourceLoadParameters.cpp: (WebKit::NetworkResourceLoadParameters::encode): Encode NetworkResourceLoadParameters::shouldFollowRedirects. (WebKit::NetworkResourceLoadParameters::decode): Decode NetworkResourceLoadParameters::shouldFollowRedirects. * NetworkProcess/PingLoad.h: Added FIXME comment to implement support for following redirects, if applicable (for hyperlink auditing). See <https://bugs.webkit.org/show_bug.cgi?id=162580> for more details. * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::createPingHandle): Modified to take a boolean whether to follow redirects responses and set NetworkResourceLoadParameters::shouldFollowRedirects as appropriate. * WebProcess/Network/WebLoaderStrategy.h: 2016-10-20 Matthew Hanson <matthew_hanson> Merge r206413. rdar://problem/28744171 2016-09-26 Tim Horton <timothy_horton@apple.com> Delete some unused code from r202695 https://bugs.webkit.org/show_bug.cgi?id=162595 <rdar://problem/28343784> Reviewed by Dan Bernstein. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView _setIsBlankBeforeFirstNonEmptyLayout:]): Deleted. (-[WKWebView _didFirstVisuallyNonEmptyLayoutForMainFrame]): Deleted. * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::didFirstVisuallyNonEmptyLayoutForMainFrame): We didn't end up needing this mechanism. 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r204637. rdar://problem/28216256 2016-08-16 Simon Fraser <simon.fraser@apple.com> Rename didLayout(LayoutMilestones) to didReachLayoutMilestone(), and related WK2 functions https://bugs.webkit.org/show_bug.cgi?id=160923 Reviewed by Tim Horton. didLayout(LayoutMilestones) -> didReachLayoutMilestone(LayoutMilestones) dispatchDidLayout(LayoutMilestones) -> dispatchDidReachLayoutMilestone(LayoutMilestones) Avoided changing functions that are exposed as API/SPI. * UIProcess/API/APILoaderClient.h: (API::LoaderClient::didReachLayoutMilestone): (API::LoaderClient::didLayout): Deleted. * UIProcess/API/C/WKPage.cpp: (WKPageSetPageLoaderClient): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didLayoutForCustomContentProvider): (WebKit::WebPageProxy::didReachLayoutMilestone): (WebKit::WebPageProxy::didLayout): Deleted. * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::didCommitLayerTree): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: (didReachLayoutMilestone): (setUpPageLoaderClient): (didLayout): Deleted. * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp: (WebKit::InjectedBundlePageLoaderClient::didReachLayoutMilestone): (WebKit::InjectedBundlePageLoaderClient::didLayout): Deleted. * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h: * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidReachLayoutMilestone): (WebKit::WebFrameLoaderClient::dispatchDidLayout): Deleted. * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: * WebProcess/WebPage/DrawingArea.h: (WebKit::DrawingArea::dispatchDidReachLayoutMilestone): (WebKit::DrawingArea::dispatchDidLayout): Deleted. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::dispatchDidReachLayoutMilestone): (WebKit::WebPage::dispatchDidLayout): Deleted. * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::dispatchDidReachLayoutMilestone): (WebKit::RemoteLayerTreeDrawingArea::dispatchDidLayout): Deleted. 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r206834. rdar://problem/28634858 2016-10-05 Tim Horton <timothy_horton@apple.com> Fix the build. * UIProcess/Cocoa/WebViewImpl.mm: 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r206833. rdar://problem/28634858 2016-10-05 Tim Horton <timothy_horton@apple.com> Avoid automatically re-taking snapshots for back-forward items that were never loaded into the view https://bugs.webkit.org/show_bug.cgi?id=162955 <rdar://problem/27659173> Reviewed by Simon Fraser. Make it possible for clients to control the snapshot for back-forward items that are restored from session state without navigating to them, by ensuring that we won't stomp on the snapshot that they explicitly take, until a load occurs. * UIProcess/WebBackForwardList.cpp: (WebKit::WebBackForwardList::addItem): (WebKit::WebBackForwardList::goToItem): * UIProcess/ios/ViewGestureControllerIOS.mm: (WebKit::ViewGestureController::beginSwipeGesture): * UIProcess/mac/ViewGestureControllerMac.mm: (WebKit::ViewGestureController::trackSwipeGesture): Disambiguate explicit API-driven snapshot recording from automatic, navigation-driven snapshot recording. * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::saveBackForwardSnapshotForCurrentItem): Get rid of the version of recordNavigationSnapshot() that doesn't take a back-forward list item, and grab the current item at the one remaining caller. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::recordAutomaticNavigationSnapshot): (WebKit::WebPageProxy::recordNavigationSnapshot): (WebKit::WebPageProxy::restoreFromSessionState): (WebKit::WebPageProxy::didCommitLoadForFrame): * UIProcess/WebPageProxy.h: Rename m_suppressNavigationSnapshotting to m_suppressAutomaticNavigationSnapshotting, and make it be only about automatic (navigation-driven) snapshots; it won't have any impact on explicit snapshots forced by clients. Set m_suppressAutomaticNavigationSnapshotting unconditionally when restoring from session state, so that we won't start automatically snapshotting until something has loaded in the view. 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r206829. rdar://problem/28634858 2016-10-05 Tim Horton <timothy_horton@apple.com> Make it possible to test ViewSnapshotStore behaviors https://bugs.webkit.org/show_bug.cgi?id=162983 Reviewed by Simon Fraser. Add two pieces of SPI to make it easier to test ViewSnapshotStore: - [WKWebView _disableBackForwardSnapshotVolatilityForTesting] This makes it so that we don't make snapshots volatile after we take them, so that they won't get purged while the test is running and cause the test to be flaky. - [WKBackForwardListItem _copySnapshotForTesting] This returns a CGImage with the content of the given back-forward item's current snapshot, if there is one. * UIProcess/API/Cocoa/WKBackForwardListItem.mm: (-[WKBackForwardListItem _copySnapshotForTesting]): * UIProcess/API/Cocoa/WKBackForwardListItemInternal.h: * UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h: Added. Add WKBackForwardListItem SPI to retrieve the snapshot for a given back-forward list item. * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _disableBackForwardSnapshotVolatilityForTesting]): Add WKWebView SPI to disable volatility of snapshots, for testing purposes. * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::takeViewSnapshot): Adopt ViewSnapshot::setVolatile instead of reaching into the surface. * UIProcess/mac/ViewGestureControllerMac.mm: (WebKit::ViewGestureController::removeSwipeSnapshot): Adopt ViewSnapshot::setVolatile instead of reaching into the surface. * UIProcess/mac/ViewSnapshotStore.h: (WebKit::ViewSnapshotStore::setDisableSnapshotVolatilityForTesting): (WebKit::ViewSnapshotStore::disableSnapshotVolatilityForTesting): * UIProcess/mac/ViewSnapshotStore.mm: (WebKit::ViewSnapshotStore::ViewSnapshotStore): (WebKit::ViewSnapshot::setVolatile): (WebKit::ViewSnapshot::asLayerContents): Move all touching of snapshot volatility into the new setVolatile, and short-circuit if the testing-only m_disableSnapshotVolatility bit is set (WebKit::ViewSnapshot::asImageForTesting): Make a CGImageRef for the aforementioned WKBackForwardListItem SPI. This is currently not implemented for the iOS Simulator, because we don't have access to the bits of the image in that case. 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r206247. rdar://problem/28216256 2016-09-21 Dan Bernstein <mitz@apple.com> [macOS] Upon layout, _webView:renderingProgressDidChange: fires before the intrinsic content size is updated https://bugs.webkit.org/show_bug.cgi?id=162359 <rdar://problem/27776454> Reviewed by Tim Horton. Test: added to TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: Fixed a bug where m_pendingNewlyReachedLayoutMilestones was never initialized. * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: Added m_pendingNewlyReachedLayoutMilestones member variable to this derived class as well. * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::flushLayers): If we have pending milestones, notify the WebPageProxy now, after any content size changes have been sent. (WebKit::TiledCoreAnimationDrawingArea::dispatchDidReachLayoutMilestone): New override that accumulates the milestones into m_pendingNewlyReachedLayoutMilestones and returns true, so that the caller won’t notify the WebPageProxy immediately. 2016-10-20 Matthew Hanson <matthew_hanson@apple.com> Merge r206132. rdar://problem/28634856 2016-09-19 Anders Carlsson <andersca@apple.com> Suppress JavaScript prompts early on in certain cases https://bugs.webkit.org/show_bug.cgi?id=162243 rdar://problem/27661602 Reviewed by Geoffrey Garen. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::shouldSuppressJavaScriptDialogs): Add helper function. (WebKit::WebChromeClient::runJavaScriptAlert): (WebKit::WebChromeClient::runJavaScriptConfirm): (WebKit::WebChromeClient::runJavaScriptPrompt): Call helper function and return early if we should supress dialogs. 2016-09-28 Babak Shafiei <bshafiei@apple.com> Merge r206527. rdar://problem/28499358 2016-09-27 Wenson Hsieh <wenson_hsieh@apple.com> Adopt MediaRemote SPI to achieve desired Now Playing behavior https://bugs.webkit.org/show_bug.cgi?id=162658 <rdar://problem/28499358> Reviewed by Jer Noble. Plumbs Now Playing session information (for now, this is just a flag indicating whether or not there is an active session) across from the web process to the UI process for testing in the form of asynchronous request/ handle-response messages on the WebPage and its proxy in the UI process. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _requestActiveNowPlayingSessionInfo]): (-[WKWebView _handleActiveNowPlayingSessionInfoResponse:]): * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/PageClient.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo): (WebKit::WebPageProxy::handleActiveNowPlayingSessionInfoResponse): * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/mac/PageClientImpl.h: * UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::handleActiveNowPlayingSessionInfoResponse): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::requestActiveNowPlayingSessionInfo): 2016-09-28 Babak Shafiei <bshafiei@apple.com> Merge r206135. rdar://problem/28499358 2016-09-19 Wenson Hsieh <wenson_hsieh@apple.com> Add a unit test covering <https://trac.webkit.org/changeset/205983> https://bugs.webkit.org/show_bug.cgi?id=162112 Reviewed by Beth Dakin. Adds some a test support method as SPI on WKWebView to determine whether to request candidates. See Tools/ChangeLog for more details. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _shouldRequestCandidates]): (-[WKWebView _forceRequestCandidates]): Deleted. * UIProcess/API/Cocoa/WKWebViewPrivate.h: 2016-09-26 Babak Shafiei <bshafiei@apple.com> Merge r206238. rdar://problem/28450514 2016-09-21 Anders Carlsson <andersca@apple.com> support openPaymentSetup API on ApplePaySession object https://bugs.webkit.org/show_bug.cgi?id=162357 rdar://problem/26776939 Reviewed by Tim Horton. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp: (WebKit::WebPaymentCoordinatorProxy::openPaymentSetup): Call through to platformOpenPaymentSetup, and in the completion handler, send back a OpenPaymentSetupReply message. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: Add new members. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in: Add OpenPaymentSetup message. * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup): Allocate a PKPassLibrary and call openPaymentSetupForMerchantIdentifier:domain:completion: on it. * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::generateOpenPaymentSetupReplyID): New helper function to generate a reply ID. (WebKit::WebPaymentCoordinator::openPaymentSetup): Add the completion handler to m_pendingOpenPaymentSetupCallbacks and send a OpenPaymentSetup message to the UI process. (WebKit::WebPaymentCoordinator::openPaymentSetupReply): Grab the callback given its ID and invoke it. * WebProcess/ApplePay/WebPaymentCoordinator.h: Add new members. * WebProcess/ApplePay/WebPaymentCoordinator.messages.in: Add OpenPaymentSetupReply message. 2016-09-26 Babak Shafiei <bshafiei@apple.com> Merge r206350. rdar://problem/28115680 2016-09-23 Wenson Hsieh <wenson_hsieh@apple.com> Media controls playhead does not animate smoothly while playing https://bugs.webkit.org/show_bug.cgi?id=162399 <rdar://problem/28115680> Reviewed by Beth Dakin. See WebCore ChangeLog for more details. In the UI process, we update the WebPlaybackSessionManager's timing value when the rate or current time changes. Each AVValueTiming is generated from the current time, system anchor time, and playback rate. The behavior of the first two properties is unaffected. However, the rate used to update the timing value is the effective playback rate, which is equal to the playback rate unless we are (1) not playing, (2) interacting with the media controls in such a way that the media is essentially not playing, or (3) the current time precedes the playback start time, accounting for playback direction. In these cases, our effective playback rate is 0, which means that we do not animate the playhead. * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h: * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in: * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm: (WebKit::WebPlaybackSessionModelContext::beginScrubbing): (WebKit::WebPlaybackSessionModelContext::endScrubbing): (WebKit::WebPlaybackSessionModelContext::setPlaybackStartedTime): (WebKit::WebPlaybackSessionModelContext::setCurrentTime): (WebKit::WebPlaybackSessionManagerProxy::setPlaybackStartedTime): * WebProcess/cocoa/WebPlaybackSessionManager.h: * WebProcess/cocoa/WebPlaybackSessionManager.mm: (WebKit::WebPlaybackSessionInterfaceContext::playbackStartedTimeChanged): (WebKit::WebPlaybackSessionManager::playbackStartedTimeChanged): 2016-09-22 Babak Shafiei <bshafiei@apple.com> Merge r206033. rdar://problem/28086237 2016-09-16 Wenson Hsieh <wenson_hsieh@apple.com> Inserting a space after inserting an accepted candidate scrolls the document and causes a flicker https://bugs.webkit.org/show_bug.cgi?id=162009 <rdar://problem/28086237> Reviewed by Tim Horton. After inserting a text candidate, if the candidate ended with a soft space, the next space we insert should just replace the soft space. This currently works because we leave the text insertion out of the list of KeypressCommands sent to the web process and instead replace the soft space via WebPage::InsertTextAsync. However, this means when the web process handles this keydown event, the current editor will not handle it, since the list of key commands is empty despite the text and unmodified text being non-empty. To fix this, when sending keydown or keyup events where we replace a soft space, we set the key event's text to an empty string instead of a space. This allows us to return early in EventHandler::keyEvent and avoid the codepath that tries to insert text into the current editor and (in the case of inserting a ' ') scrolls the document if necessary. Since we've already handled text insertion via WebPage::InsertTextAsync, there is no need to also dispatch the keypress to the editor. Additionally, this patch addresses flickering in the candidates UI due to the fact that we're asynchronously replacing the last soft space. During this operation, we select the range of the soft space and then insert the new text. This causes a momentary range selection which the web process notifies the UI process about, prompting us to hide the candidates list. To address this, we suppress the EditorStateChanged message fired from the web process to the UI process while we're selecting the original range to replace. This patch adds 3 new WebKit API tests. * Shared/NativeWebKeyboardEvent.h: * Shared/mac/NativeWebKeyboardEventMac.mm: (WebKit::NativeWebKeyboardEvent::NativeWebKeyboardEvent): * Shared/mac/WebEventFactory.h: * Shared/mac/WebEventFactory.mm: (WebKit::textFromEvent): (WebKit::unmodifiedTextFromEvent): (WebKit::WebEventFactory::createWebKeyboardEvent): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _handleAcceptedCandidate:]): (-[WKWebView _didHandleAcceptedCandidate]): (-[WKWebView _didUpdateCandidateListVisibility:]): (-[WKWebView _forceRequestCandidates]): (-[WKWebView _handleControlledElementIDResponse:]): Deleted. * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/API/mac/WKView.mm: (-[WKView _didHandleAcceptedCandidate]): (-[WKView _didUpdateCandidateListVisibility:]): * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::forceRequestCandidatesForTesting): (WebKit::WebViewImpl::becomeFirstResponder): (WebKit::WebViewImpl::didHandleAcceptedCandidate): (WebKit::WebViewImpl::insertText): (WebKit::WebViewImpl::performKeyEquivalent): (WebKit::WebViewImpl::keyUp): (WebKit::WebViewImpl::keyDown): (WebKit::WebViewImpl::flagsChanged): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::insertTextAsync): * UIProcess/WebPageProxy.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::insertTextAsync): (WebKit::WebPage::didChangeSelection): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: 2016-09-16 Babak Shafiei <bshafiei@apple.com> Merge r206006. rdar://problem/27991573 2016-09-15 Brady Eidson <beidson@apple.com> WKWebView.hasOnlySecureContent always returns "YES" after going back to a CachedPage (even if it has http resources). <rdar://problem/27681261> and https://bugs.webkit.org/show_bug.cgi?id=162043 Reviewed by Brent Fulgham. * Scripts/webkit/messages.py: (headers_for_type): Add a custom header, and alphabetize existing ones. * Shared/WebCoreArgumentCoders.h: Add EnumTraits for HasInsecureContent. * UIProcess/PageLoadState.h: (WebKit::PageLoadState::committedHasInsecureContent): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::hasInsecureContent): (WebKit::WebPageProxy::didCommitLoadForFrame): If the WebProcess included an existing "HasInsecureContent" value, use it. * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad): (WebKit::WebFrameLoaderClient::savePlatformDataToCachedFrame): Save the "HasInsecureContent" value to the CachedFrame in case we restore it in the future. * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 2016-09-16 Babak Shafiei <bshafiei@apple.com> Merge r206003. rdar://problem/27991573 2016-09-15 Anders Carlsson <andersca@apple.com> Actually assign the decoded enum value to the output value https://bugs.webkit.org/show_bug.cgi?id=162042 Reviewed by Brady Eidson. * Platform/IPC/Decoder.h: 2016-09-16 Babak Shafiei <bshafiei@apple.com> Merge r206000. rdar://problem/27991573 2016-09-15 Anders Carlsson <andersca@apple.com> Add support for enum class parameters in the message generator https://bugs.webkit.org/show_bug.cgi?id=162036 Reviewed by Brady Eidson. Also, convert the WebPage::SetLayerHostingMode to take an actual enum class. * Scripts/webkit/messages.py: (function_parameter_type): Change this to take the parameter kind as well, and use the raw type for enums. (arguments_type): (message_to_struct_declaration): Pass the kind to function_parameter_type. (forward_declaration): (forward_declarations_for_namespace): Forward declare enums with "enum class". (headers_for_type): Add WebKit::LayerHostingMode as a special case. (generate_message_handler): Pass the kind to function_parameter_type. * Scripts/webkit/parser.py: (parse_parameters_string): Parse 'enum' as well. * Shared/LayerTreeContext.h: Add enum traits. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::viewDidEnterWindow): (WebKit::WebPageProxy::layerHostingModeDidChange): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::reinitializeWebPage): (WebKit::WebPage::setLayerHostingMode): * WebProcess/WebPage/WebPage.h: Change unsigned to LayerHostingMode. * WebProcess/WebPage/WebPage.messages.in: Change unsigned to LayerHostingMode. 2016-09-16 Babak Shafiei <bshafiei@apple.com> Merge r204916. rdar://problem/27991573 2016-08-23 Anders Carlsson <andersca@apple.com> Add enum traits and use them in the IPC::Decoder https://bugs.webkit.org/show_bug.cgi?id=161103 Reviewed by Sam Weinig. * Platform/IPC/Decoder.h: * Platform/IPC/Encoder.h: Add new encode/decode functions. * Shared/mac/ArgumentCodersMac.mm: Change NSType to be a strongly typed enum. Use encode/decode instead of encodeEnum/decodeEnum since the latter don't have the enum check. 2016-09-16 Babak Shafiei <bshafiei@apple.com> Merge r205983. rdar://problem/28312297 2016-09-14 Beth Dakin <bdakin@apple.com> dictionaryPopupInfoForRange() can change selection temporarily; updates should not be sent to the UIProcess. https://bugs.webkit.org/show_bug.cgi?id=162008 -and corresponding- rdar://problem/28312297 Reviewed by Tim Horton. This patch prevents the selection changes that occur while gathering dictionaryPopupInfo from being propagated to the UIProcess. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::didChangeSelection): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::dictionaryPopupInfoForRange): 2016-09-14 Babak Shafiei <bshafiei@apple.com> Merge r205938. rdar://problem/28227805 2016-09-14 Wenson Hsieh <wenson_hsieh@apple.com> Media controls behave strangely when changing media sources https://bugs.webkit.org/show_bug.cgi?id=161914 <rdar://problem/28227805> Reviewed by Tim Horton. Allows a web page to have an active video for a media control manager even if no audio or video is currently being produced. This is because the media element may be in a state where it is changing its source and does not currently have a video or audio track. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::hasActiveVideoForControlsManager): 2016-09-14 Babak Shafiei <bshafiei@apple.com> Merge r205878. rdar://problem/28229827 2016-09-13 Tim Horton <timothy_horton@apple.com> Provide a mechanism to specify the maximum size of WKThumbnailView snapshots https://bugs.webkit.org/show_bug.cgi?id=161896 <rdar://problem/28229827> Reviewed by Simon Fraser. Some clients know that their thumbnail views will only be displayed up to a specific size that is significantly smaller than the WKView size. Allow them to avoid wasting lots of memory on unnecessarily large snapshots. * UIProcess/API/Cocoa/_WKThumbnailView.h: * UIProcess/API/Cocoa/_WKThumbnailView.mm: (-[_WKThumbnailView requestSnapshot]): (-[_WKThumbnailView _requestSnapshotIfNeeded]): (-[_WKThumbnailView setMaximumSnapshotSize:]): Add a maximumSnapshotSize property which can be changed dynamically. 2016-09-14 Babak Shafiei <bshafiei@apple.com> Merge r205935. rdar://problem/26013388 2016-09-14 Beth Dakin <bdakin@apple.com> Add needsPlainTextQuirk and send it to the UIProcess https://bugs.webkit.org/show_bug.cgi?id=161996 -and corresponding- rdar://problem/26013388 Rubber-stamped by Simon Fraser. Quick clean-up. * WebProcess/WebPage/WebPage.cpp: (WebKit::needsPlainTextQuirk): 2016-09-14 Babak Shafiei <bshafiei@apple.com> Merge r205934. rdar://problem/26013388 2016-09-14 Beth Dakin <bdakin@apple.com> Add needsPlainTextQuirk and send it to the UIProcess https://bugs.webkit.org/show_bug.cgi?id=161996 -and corresponding- rdar://problem/26013388 Reviewed by Anders Carlsson. WebPageProxy should keep track of m_needsPlainTextQuirk. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setNeedsPlainTextQuirk): * UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::needsPlainTextQuirk): (WebKit::WebPageProxy::needsHiddenContentEditableQuirk): Deleted. * UIProcess/WebPageProxy.messages.in: If m_needsPlainTextQuirk is true, set it back to false on page transition. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::didStartPageTransition): The sites that need this quirk. (WebKit::needsPlainTextQuirk): (WebKit::WebPage::didChangeSelection): * WebProcess/WebPage/WebPage.h: 2016-09-14 Babak Shafiei <bshafiei@apple.com> Merge r205928. rdar://problem/26013388 2016-09-14 Beth Dakin <bdakin@apple.com> Add needsHiddenContentEditableQuirk and send it to the UIProcess https://bugs.webkit.org/show_bug.cgi?id=161984 -and corresponding- rdar://problem/26013388 Reviewed by Anders Carlsson. Keep track of m_needsHiddenContentEditableQuirk in WebPageProxy. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setNeedsHiddenContentEditableQuirk): * UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::needsHiddenContentEditableQuirk): (WebKit::WebPageProxy::hasHadSelectionChangesFromUserInteraction): Deleted. * UIProcess/WebPageProxy.messages.in: If m_needsHiddenContentEditableQuirk is true, set it back to false on page transition. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::didStartPageTransition): Google Docs and iCloud Pages are the sites that need this quirk. (WebKit::needsHiddenContentEditableQuirk): (WebKit::WebPage::didChangeSelection): * WebProcess/WebPage/WebPage.h: 2016-09-13 Babak Shafiei <bshafiei@apple.com> Merge r205873. rdar://problem/28208208 2016-09-13 Anders Carlsson <andersca@apple.com> REGRESSION (r196321): Amazon Videos are all black in Fullscreen https://bugs.webkit.org/show_bug.cgi?id=161924 rdar://problem/28208208 Reviewed by Dan Bernstein. * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm: (main): Set AppleMagnifiedMode to true. 2016-09-12 Babak Shafiei <bshafiei@apple.com> Merge r205783. rdar://problem/28229756 2016-09-09 Tim Horton <timothy_horton@apple.com> WKThumbnailView should expose a mode where it can be reparented without resnapshotting https://bugs.webkit.org/show_bug.cgi?id=161828 <rdar://problem/28229756> Reviewed by Alex Christensen. * UIProcess/API/Cocoa/_WKThumbnailView.h: * UIProcess/API/Cocoa/_WKThumbnailView.mm: (-[_WKThumbnailView initWithFrame:fromWKView:]): (-[_WKThumbnailView _viewWasUnparented]): Add such a mode. Bail from snapshot teardown when unparented if it is on. 2016-09-12 Babak Shafiei <bshafiei@apple.com> Merge r205765. rdar://problem/28033492 2016-09-09 Tim Horton <timothy_horton@apple.com> Text replacement candidates don't always overwrite the entire original string https://bugs.webkit.org/show_bug.cgi?id=161779 <rdar://problem/28033492> Reviewed by Simon Fraser. * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::platformEditorState): Make use of the shared implementation of contextRangeForCandidateRequest. 2016-09-09 Babak Shafiei <bshafiei@apple.com> Merge r204456. rdar://problem/27860536 2016-08-14 Daniel Bates <dabates@apple.com> Fix compiler errors when building iOS WebKit using the iOS 10 beta SDK https://bugs.webkit.org/show_bug.cgi?id=160725 Reviewed by Sam Weinig. * Platform/spi/ios/UIKitSPI.h: Add SPI for UITextInputSuggestionDelegate. * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm: Remove unnecessary include of PKPaymentMerchantSession.h. 2016-09-09 Babak Shafiei <bshafiei@apple.com> Merge r203381. rdar://problem/27860536 2016-07-18 Anders Carlsson <andersca@apple.com> WebKit nightly fails to build on macOS Sierra https://bugs.webkit.org/show_bug.cgi?id=159902 rdar://problem/27365672 Reviewed by Tim Horton. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h: * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: Use new PassKitSPI header. 2016-09-09 Babak Shafiei <bshafiei@apple.com> Merge r205381. rdar://problem/27806012 2016-09-02 Beth Dakin <bdakin@apple.com> Need to updateEditorState if an element change edit-ability without changing selection https://bugs.webkit.org/show_bug.cgi?id=161546 -and corresponding- rdar://problem/27806012 Reviewed by Ryosuke Niwa. Every time WebPage::editorState() is called, we now save whether the last state was contentEditable. That way in updateEditorStateAfterLayoutIfNeeded() we can assess whether or not edit-ability has changed. * WebProcess/WebCoreSupport/WebEditorClient.cpp: (WebKit::WebEditorClient:: updateEditorStateAfterLayoutIfEditabilityChanged): * WebProcess/WebCoreSupport/WebEditorClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::editorState): (WebKit::WebPage:: updateEditorStateAfterLayoutIfEditabilityChanged): (WebKit::WebPage::didStartPageTransition): * WebProcess/WebPage/WebPage.h: 2016-09-09 Babak Shafiei <bshafiei@apple.com> Merge r205371. rdar://problem/28020157 2016-09-02 Jer Noble <jer.noble@apple.com> Unreviewed build fix; partial roll out of r205365 to remove unintentional change in WKWebView.mm. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): 2016-09-09 Babak Shafiei <bshafiei@apple.com> Merge r205365. rdar://problem/28020157 2016-07-08 Jer Noble <jer.noble@apple.com> Refactor WebPlaybackSessionModelMediaElement to be client based. https://bugs.webkit.org/show_bug.cgi?id=159580 Reviewed by Eric Carlson. Adopt the changes made in the WebPlaybackSessionModel,Interface and WebVideoFullscreenModel,Interface in the WebPlaybackSessionManager,Proxy classes. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): Deleted. * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h: * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm: (WebKit::WebPlaybackSessionModelContext::addClient): (WebKit::WebPlaybackSessionModelContext::removeClient): (WebKit::WebPlaybackSessionModelContext::setDuration): (WebKit::WebPlaybackSessionModelContext::setCurrentTime): (WebKit::WebPlaybackSessionModelContext::setBufferedTime): (WebKit::WebPlaybackSessionModelContext::setRate): (WebKit::WebPlaybackSessionModelContext::setSeekableRanges): (WebKit::WebPlaybackSessionModelContext::setCanPlayFastReverse): (WebKit::WebPlaybackSessionModelContext::setAudioMediaSelectionOptions): (WebKit::WebPlaybackSessionModelContext::setLegibleMediaSelectionOptions): (WebKit::WebPlaybackSessionModelContext::setExternalPlayback): (WebKit::WebPlaybackSessionModelContext::setWirelessVideoPlaybackDisabled): (WebKit::WebPlaybackSessionManagerProxy::createModelAndInterface): (WebKit::WebPlaybackSessionManagerProxy::removeClientForContext): (WebKit::WebPlaybackSessionManagerProxy::setCurrentTime): (WebKit::WebPlaybackSessionManagerProxy::setBufferedTime): (WebKit::WebPlaybackSessionManagerProxy::setSeekableRangesVector): (WebKit::WebPlaybackSessionManagerProxy::setCanPlayFastReverse): (WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionOptions): (WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionOptions): (WebKit::WebPlaybackSessionManagerProxy::setExternalPlaybackProperties): (WebKit::WebPlaybackSessionManagerProxy::setWirelessVideoPlaybackDisabled): (WebKit::WebPlaybackSessionManagerProxy::setDuration): (WebKit::WebPlaybackSessionManagerProxy::setRate): * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h: * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.messages.in: * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: (WebKit::WebVideoFullscreenModelContext::addClient): (WebKit::WebVideoFullscreenModelContext::removeClient): (WebKit::WebVideoFullscreenManagerProxy::setHasVideo): (WebKit::WebVideoFullscreenManagerProxy::setVideoDimensions): * WebProcess/cocoa/WebPlaybackSessionManager.h: * WebProcess/cocoa/WebPlaybackSessionManager.mm: (WebKit::WebPlaybackSessionInterfaceContext::durationChanged): (WebKit::WebPlaybackSessionInterfaceContext::currentTimeChanged): (WebKit::WebPlaybackSessionInterfaceContext::bufferedTimeChanged): (WebKit::WebPlaybackSessionInterfaceContext::rateChanged): (WebKit::WebPlaybackSessionInterfaceContext::seekableRangesChanged): (WebKit::WebPlaybackSessionInterfaceContext::canPlayFastReverseChanged): (WebKit::WebPlaybackSessionInterfaceContext::audioMediaSelectionOptionsChanged): (WebKit::WebPlaybackSessionInterfaceContext::legibleMediaSelectionOptionsChanged): (WebKit::WebPlaybackSessionInterfaceContext::externalPlaybackChanged): (WebKit::WebPlaybackSessionInterfaceContext::wirelessVideoPlaybackDisabledChanged): (WebKit::WebPlaybackSessionManager::~WebPlaybackSessionManager): (WebKit::WebPlaybackSessionManager::createModelAndInterface): (WebKit::WebPlaybackSessionManager::removeContext): (WebKit::WebPlaybackSessionManager::durationChanged): (WebKit::WebPlaybackSessionManager::currentTimeChanged): (WebKit::WebPlaybackSessionManager::bufferedTimeChanged): (WebKit::WebPlaybackSessionManager::rateChanged): (WebKit::WebPlaybackSessionManager::seekableRangesChanged): (WebKit::WebPlaybackSessionManager::canPlayFastReverseChanged): (WebKit::WebPlaybackSessionManager::audioMediaSelectionOptionsChanged): (WebKit::WebPlaybackSessionManager::legibleMediaSelectionOptionsChanged): (WebKit::WebPlaybackSessionManager::externalPlaybackChanged): (WebKit::WebPlaybackSessionManager::wirelessVideoPlaybackDisabledChanged): (WebKit::WebPlaybackSessionInterfaceContext::setDuration): Deleted. (WebKit::WebPlaybackSessionInterfaceContext::setCurrentTime): Deleted. (WebKit::WebPlaybackSessionInterfaceContext::setBufferedTime): Deleted. (WebKit::WebPlaybackSessionInterfaceContext::setRate): Deleted. (WebKit::WebPlaybackSessionInterfaceContext::setSeekableRanges): Deleted. (WebKit::WebPlaybackSessionInterfaceContext::setCanPlayFastReverse): Deleted. (WebKit::WebPlaybackSessionInterfaceContext::setAudioMediaSelectionOptions): Deleted. (WebKit::WebPlaybackSessionInterfaceContext::setLegibleMediaSelectionOptions): Deleted. (WebKit::WebPlaybackSessionInterfaceContext::setExternalPlayback): Deleted. (WebKit::WebPlaybackSessionInterfaceContext::setWirelessVideoPlaybackDisabled): Deleted. (WebKit::WebPlaybackSessionManager::setDuration): Deleted. (WebKit::WebPlaybackSessionManager::setCurrentTime): Deleted. (WebKit::WebPlaybackSessionManager::setBufferedTime): Deleted. (WebKit::WebPlaybackSessionManager::setRate): Deleted. (WebKit::WebPlaybackSessionManager::setSeekableRanges): Deleted. (WebKit::WebPlaybackSessionManager::setCanPlayFastReverse): Deleted. (WebKit::WebPlaybackSessionManager::setAudioMediaSelectionOptions): Deleted. (WebKit::WebPlaybackSessionManager::setLegibleMediaSelectionOptions): Deleted. (WebKit::WebPlaybackSessionManager::setExternalPlayback): Deleted. (WebKit::WebPlaybackSessionManager::setWirelessVideoPlaybackDisabled): Deleted. * WebProcess/cocoa/WebVideoFullscreenManager.h: (WebKit::WebVideoFullscreenInterfaceContext::create): * WebProcess/cocoa/WebVideoFullscreenManager.mm: (WebKit::WebVideoFullscreenInterfaceContext::WebVideoFullscreenInterfaceContext): (WebKit::WebVideoFullscreenInterfaceContext::hasVideoChanged): (WebKit::WebVideoFullscreenInterfaceContext::videoDimensionsChanged): (WebKit::WebVideoFullscreenManager::~WebVideoFullscreenManager): (WebKit::WebVideoFullscreenManager::createModelAndInterface): (WebKit::WebVideoFullscreenManager::removeContext): (WebKit::WebVideoFullscreenManager::hasVideoChanged): (WebKit::WebVideoFullscreenManager::videoDimensionsChanged): (WebKit::WebVideoFullscreenInterfaceContext::resetMediaState): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setDuration): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setCurrentTime): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setBufferedTime): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setRate): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setVideoDimensions): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setSeekableRanges): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setCanPlayFastReverse): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setAudioMediaSelectionOptions): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setLegibleMediaSelectionOptions): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setExternalPlayback): Deleted. (WebKit::WebVideoFullscreenInterfaceContext::setWirelessVideoPlaybackDisabled): Deleted. (WebKit::WebVideoFullscreenManager::setVideoDimensions): Deleted. 2016-09-09 Babak Shafiei <bshafiei@apple.com> Merge r205412. rdar://problem/28014919 2016-09-03 Wenson Hsieh <wenson_hsieh@apple.com> Refactor the heuristic for showing media controls to take all media sessions into account https://bugs.webkit.org/show_bug.cgi?id=161503 <rdar://problem/28033783> Reviewed by Darin Adler. Adds an SPI testing hook for sending the element ID of the currently controlled video element from the web process to the UI process. See VideoControlsManager.mm in Tools/TestWebKitAPI/ for usage. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _requestControlledElementID]): (-[WKWebView _handleControlledElementIDResponse:]): (-[WKWebView _hasActiveVideoForControlsManager]): Deleted. * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h: * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in: * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm: (WebKit::WebPlaybackSessionManagerProxy::handleControlledElementIDResponse): (WebKit::WebPlaybackSessionManagerProxy::requestControlledElementID): * UIProcess/PageClient.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::requestControlledElementID): (WebKit::WebPageProxy::handleControlledElementIDResponse): * UIProcess/WebPageProxy.h: * UIProcess/mac/PageClientImpl.h: * UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::handleControlledElementIDResponse): * WebProcess/cocoa/WebPlaybackSessionManager.h: * WebProcess/cocoa/WebPlaybackSessionManager.messages.in: * WebProcess/cocoa/WebPlaybackSessionManager.mm: (WebKit::WebPlaybackSessionManager::handleControlledElementIDRequest): 2016-09-09 Babak Shafiei <bshafiei@apple.com> Merge r204911. rdar://problem/28175524 2016-08-24 Anders Carlsson <andersca@apple.com> In some cases, an IPC::Connection won't know when the other end has gone away https://bugs.webkit.org/show_bug.cgi?id=161153 rdar://problem/27896368 Reviewed by Dan Bernstein. When being asked to invalidate a connection that isn't yet connected, make sure to release our send and receive rights so that the other end will get a failure when trying to connect. * Platform/IPC/mac/ConnectionMac.mm: (IPC::Connection::platformInvalidate): 2016-08-17 Babak Shafiei <bshafiei@apple.com> Merge r204587. rdar://problem/27807479 2016-08-17 Anders Carlsson <andersca@apple.com> Add support for additional networks https://bugs.webkit.org/show_bug.cgi?id=160951 rdar://problem/27807479 Reviewed by Sam Weinig. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: (IPC::ArgumentCoder<PaymentRequest>::decode): (IPC::ArgumentCoder<PaymentRequest::SupportedNetworks>::encode): Deleted. (IPC::ArgumentCoder<PaymentRequest::SupportedNetworks>::decode): Deleted. * Shared/WebCoreArgumentCoders.h: * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::toAdditionalSupportedNetwork): (WebKit::toSupportedNetwork): (WebKit::toSupportedNetworks): * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::supportsVersion): 2016-08-12 Babak Shafiei <bshafiei@apple.com> Merge r204414. rdar://problem/27624095 2016-08-12 Anders Carlsson <andersca@apple.com> message loading never finishes in Mail https://bugs.webkit.org/show_bug.cgi?id=160806 rdar://problem/27624095 Reviewed by Dan Bernstein. Add more checks for when a process goes away before we've established a proper connection to it. * Platform/IPC/mac/ConnectionMac.mm: (IPC::Connection::receiveSourceEventHandler): Handle the MACH_NOTIFY_NO_SENDERS and MACH_NOTIFY_SEND_ONCE messages here. Also, once we receive a send right from the other side, stop listening for the MACH_NOTIFY_NO_SENDERS notification. * UIProcess/ChildProcessProxy.cpp: (WebKit::ChildProcessProxy::didFinishLaunching): Null check the connection identifier. * UIProcess/Launcher/ProcessLauncher.cpp: (WebKit::ProcessLauncher::ProcessLauncher): (WebKit::processLauncherWorkQueue): Deleted. Get rid of the process launcher queue - we're not doing any blocking work here. * UIProcess/Launcher/ProcessLauncher.h: Add a weak factory. * UIProcess/Launcher/mac/ProcessLauncherMac.mm: (WebKit::systemDirectoryPath): Move this before launchProcess(). (WebKit::ProcessLauncher::launchProcess): Merge createService and connectToService into launchProcess. Also make the following changes: - Use mach_port_request_notification to get a notification for when our receive right loses all its senders. This lets us listen for the other process going away before we have a send right for it. - Use xpc_connection_set_event_handler to listen for errors, so we can detect the process going away before we've sent a message to it. (WebKit::connectToService): Deleted. (WebKit::createService): Deleted. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::didFinishLaunching): If we failed to launch, call networkProcessCrashedOrFailedToLaunch so we'll unblock any waiting web processes. * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::didFinishLaunching): Null check the connection and XPC connection before trying to get its pid. 2016-08-04 Babak Shafiei <bshafiei@apple.com> Merge r204135. rdar://problem/19814215 2016-08-04 Chris Dumez <cdumez@apple.com> Crash under NavigationState::NavigationClient::processDidCrash() https://bugs.webkit.org/show_bug.cgi?id=160563 <rdar://problem/19814215> Reviewed by Sam Weinig. When WebPageProxy::close() gets called, make sure we destroy the page's navigationClient. If we don't then the navigationClient can outlive the navigationState, causing crashes when navigationClient tries to use its stale navigationState member reference later on. This happens when the WebPageProxy outlives its WKWebView because: 1. WebPageProxy owns the navigationClient 2. WKWebView owns the navigationState 3. navigationClient has a reference to the navigationState as member. WebPageProxy can outlive the WKWebView because it is refCounted. It can happen for example when the client application uses the RelatedPage API as this extend the lifetime of the related WebPage's proxy but the application may not keep the related WKWebView alive. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::close): Note that it is safe to null out m_navigationClient here instead of creating a fresh one because there is a null check before every use of m_navigationClient in WebPageProxy. 2016-08-02 Babak Shafiei <bshafiei@apple.com> Merge r204057. rdar://problem/27534205 2016-08-02 Tim Horton <timothy_horton@apple.com> REGRESSION (r203385): Frequent RELEASE_ASSERT in WebKit::RemoteLayerTreeDrawingArea::flushLayers() https://bugs.webkit.org/show_bug.cgi?id=160481 <rdar://problem/27534205> Reviewed by Simon Fraser. * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h: * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateViewState): If the UI process sends a didUpdate message while the Web process is in the middle of flushing on a background thread, the drawing area will allow another commit to start on the main thread, which then (rightfully) causes the RELEASE_ASSERT. This is normally not a problem, because didRefreshDisplay (which sends the didUpdate) bails if m_didUpdateMessageState is anything other than NotSent, and m_didUpdateMessageState is only NotSent if the Web process has sent a commit (and thus will not commit again until it gets a didUpdate). This is the fundamental mechanism that avoids multiple commits being in flight at once. In r203385, I added a path where didRefreshDisplay could be called before the first commit arrived (by way of _applicationWillEnterForeground -> viewStateDidChange -> waitForDidUpdateViewState). This caused trouble because m_didUpdateMessageState is initialized to NotSent, which means that we could end up sending a didUpdate immediately, before the first commit arrives - even worse, while the first commit is being flushed on a background thread, leading the aforementioned RELEASE_ASSERT to fire. Instead, initialize it to Sent (which I've renamed to DoesNotNeedDidUpdate), so that we won't send a didUpdate until after the first commit arrives (at which point the two processes are in agreement about the order of things). It's not currently possible to API test this for multiple reasons, though it is fairly easy to write a test app that reproduces reliably (by simulating suspend/resume notifications inside the didFinishNavigation: callback). 2016-07-31 Babak Shafiei <bshafiei@apple.com> Merge r203842. rdar://problem/27553464 2016-07-28 Tim Horton <timothy_horton@apple.com> Frequent animation lags when interacting with Safari (sidebar, tab switching, etc.) https://bugs.webkit.org/show_bug.cgi?id=160289 <rdar://problem/27553464> Reviewed by Simon Fraser. API Tests: WebKit2.AnimatedResizeDoesNotHang, WebKit2.ResizeWithHiddenContentDoesNotHang * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _didCommitLayerTree:]): Avoid calling _endAnimatedResize when a commit comes in when we haven't yet received a dynamic viewport update reply (and thus don't have a transaction ID to wait on). Previously, in this case, _resizeAnimationTransformTransactionID would be 0, and *any* commit would cause _endAnimatedResize to be called, causing us to always fall into the worst-case sync wait. * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::synchronizeDynamicViewportUpdate): Make use of waitForDidUpdateViewState instead of having a separate waitForAndDispatchImmediately here, because it knows to do things like dispatch the didUpdate message if it's still pending. This also shortens the sync wait timeout from 1s to 500ms, which makes it consistent with e.g. the newly-parented-view timeout duration, and should be nothing but positive. * Platform/IPC/Connection.cpp: (IPC::Connection::timeoutRespectingIgnoreTimeoutsForTesting): (IPC::Connection::waitForMessage): (IPC::Connection::sendSyncMessageFromSecondaryThread): (IPC::Connection::waitForSyncReply): * Platform/IPC/Connection.h: (IPC::Connection::ignoreTimeoutsForTesting): * UIProcess/API/APIProcessPoolConfiguration.cpp: (API::ProcessPoolConfiguration::copy): * UIProcess/API/APIProcessPoolConfiguration.h: * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: (-[_WKProcessPoolConfiguration ignoreSynchronousMessagingTimeoutsForTesting]): (-[_WKProcessPoolConfiguration setIgnoreSynchronousMessagingTimeoutsForTesting:]): * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::processDidFinishLaunching): Add a mechanism for clients to cause all synchronous message timeouts to be effectively infinite. The new API tests use this to ensure that the test will time out if they ever enter the bad state (otherwise, the shorter sync wait timeout could make the test still pass). 2016-07-31 Babak Shafiei <bshafiei@apple.com> Merge r203909. rdar://problem/27078089 2016-07-28 Ryosuke Niwa <rniwa@webkit.org> Crash with an Invalid Web Process IPC Message ID: WebPageProxy.AttributedStringForCharacterRangeCallback https://bugs.webkit.org/show_bug.cgi?id=160334 <rdar://problem/27078089> Reviewed by Alexey Proskuryakov. The crash is most likely caused by an MESSAGE_CHECK failure in WebPageProxy::attributedStringForCharacterRangeCallback which marks the currently dispatching message was invalid inside the macro. Make sure we never fail this check by sending an empty EditingRange in attributedSubstringForCharacterRangeAsync when the editing range we're about to send to the UIProcess is invalid in WebProcess. Unfortunately, no new tests since we don't have any reproduction and I couldn't spot any code path in which we end up with an invalid EditingRage here with multiple inspection of the relevant code. * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::attributedSubstringForCharacterRangeAsync): 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203780. rdar://problem/27569255 2016-07-27 Chris Dumez <cdumez@apple.com> Fix m_isInBackground initialization for Safari View Services https://bugs.webkit.org/show_bug.cgi?id=160255 <rdar://problem/27569255> Reviewed by Tim Horton. Fix m_isInBackground initialization for Safari View Services. The code was using m_applicationStateMonitor without initializing it. Instead, use the local applicationStateMonitor and make sure we invalidate it before it gets released. * UIProcess/ApplicationStateTracker.mm: (WebKit::ApplicationStateTracker::ApplicationStateTracker): 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203743. rdar://problem/23325160 2016-07-26 David Kilzer <ddkilzer@apple.com> Networking process crash due to missing -[WebCoreAuthenticationClientAsChallengeSender performDefaultHandlingForAuthenticationChallenge:] implementation https://bugs.webkit.org/show_bug.cgi?id=156947 <rdar://problem/23325160> Reviewed by Alex Christensen. * UIProcess/API/C/WKAuthenticationDecisionListener.cpp: (WKAuthenticationDecisionListenerRejectProtectionSpaceAndContinue): * UIProcess/API/C/WKAuthenticationDecisionListener.h: Added new SPI for testing corresponding to calling the completion handler of WKWebView.didReceiveAuthenticationChallenge with NSURLSessionAuthChallengeRejectProtectionSpace. 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203855. rdar://problem/27557968 2016-07-28 Myles C. Maxfield <mmaxfield@apple.com> Remove deprecated SPI for video inline / fullscreen controls https://bugs.webkit.org/show_bug.cgi?id=160318 Reviewed by Tim Horton. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetAllowsInlineMediaPlaybackWithPlaysInlineAttribute): Deleted. (WKPreferencesGetAllowsInlineMediaPlaybackWithPlaysInlineAttribute): Deleted. (WKPreferencesSetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute): Deleted. (WKPreferencesGetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute): Deleted. * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): Deleted. * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): Deleted. (-[WKWebViewConfiguration copyWithZone:]): Deleted. (-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithPlaysInlineAttribute]): Deleted. (-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]): Deleted. (-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]): Deleted. (-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]): Deleted. * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): Deleted. 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203752. rdar://problem/27557968 2016-07-26 Myles C. Maxfield <mmaxfield@apple.com> [iPhone] Playing a video on tudou.com plays only sound, no video https://bugs.webkit.org/show_bug.cgi?id=160178 <rdar://problem/27535468> Reviewed by Eric Carlson and Dan Bernstein. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute): (WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute): * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _inlineMediaPlaybackRequiresPlaysInlineAttribute]): (-[WKWebViewConfiguration _setInlineMediaPlaybackRequiresPlaysInlineAttribute:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203741. rdar://problem/27480873 2016-07-26 Anders Carlsson <andersca@apple.com> Payment session does not end if user closes all Safari windows https://bugs.webkit.org/show_bug.cgi?id=160213 rdar://problem/27480873 Reviewed by Tim Horton. Listen for the NSWindowWillCloseNotification of the sheet window and hide the payment UI when the sheet window is going to be closed. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): (WebKit::WebPaymentCoordinatorProxy::hidePaymentUI): 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203724. rdar://problem/27536113 2016-07-26 Enrica Casucci <enrica@apple.com> Support configurable autocapitalization. https://bugs.webkit.org/show_bug.cgi?id=158860 rdar://problem/27536113 Reviewed by Tim Horton. Autocapitalization should be enabled/disabled regardless of whether we are using advance spelling feature. * UIProcess/mac/TextCheckerMac.mm: (WebKit::TextChecker::checkTextOfParagraph): (WebKit::TextChecker::getGuessesForWord): 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203687. rdar://problem/27399998 2016-07-25 Chris Dumez <cdumez@apple.com> [iOS] Make sure we call the ProcessAssertion invalidation handler on the main thread https://bugs.webkit.org/show_bug.cgi?id=160140 <rdar://problem/27399998> Reviewed by Darin Adler. Based on crash traces, it appears BKSProcessAssertion is calling our invalidation handler on a background thread. This was not anticipated and therefore, this would lead to thread safety issues and crashes. We now make sure to call our invalidation handler on the main thread. We also use a WeakPtr to ensure that the ProcessAssertion is still alive once on the main thread and before calling the invalidation handler. * UIProcess/ProcessAssertion.cpp: (WebKit::ProcessAssertion::ProcessAssertion): * UIProcess/ProcessAssertion.h: (WebKit::ProcessAssertion::ProcessAssertion): (WebKit::ProcessAssertion::createWeakPtr): * UIProcess/ios/ProcessAssertionIOS.mm: (WebKit::ProcessAssertion::ProcessAssertion): (WebKit::ProcessAssertion::markAsInvalidated): 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203671. rdar://problem/27409315 2016-07-24 Sam Weinig <sam@webkit.org> Add specialization for encoding/decoding WebCore::CertificateInfos in the Network Cache <rdar://problem/27409315> https://bugs.webkit.org/show_bug.cgi?id=160144 Reviewed by Chris Dumez. * NetworkProcess/cache/NetworkCacheCoders.cpp: (WebKit::NetworkCache::encodeCFData): (WebKit::NetworkCache::decodeCFData): (WebKit::NetworkCache::encodeSecTrustRef): (WebKit::NetworkCache::decodeSecTrustRef): (WebKit::NetworkCache::encodeCertificateChain): (WebKit::NetworkCache::decodeCertificateChain): (WebKit::NetworkCache::Coder<WebCore::CertificateInfo>::encode): (WebKit::NetworkCache::Coder<WebCore::CertificateInfo>::decode): * NetworkProcess/cache/NetworkCacheStorage.h: (WebKit::NetworkCache::Storage::version): Bump the version and lastStableVersion to account for the format change. 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203635. rdar://problem/27505943 2016-07-22 Joseph Pecoraro <pecoraro@apple.com> Web Automation: All key events should be processed before sending response https://bugs.webkit.org/show_bug.cgi?id=160114 <rdar://problem/27505943> Reviewed by Darin Adler. When evaluating performKeyboardInteractions, we were sending all NSEvents synchronously, but because WebPageProxy was doing its own queueing and asynchronous processing of those key events, we would receive and respond to the next Automation command before having completed all of the key events. This change makes performKeyboardInteractions asynchronous. It will be notified only after WebPageProxy has exhausted its queue of key events. * UIProcess/Automation/Automation.json: * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::keyboardEventsFlushedForPage): (WebKit::WebAutomationSession::evaluateJavaScriptFunction): (WebKit::WebAutomationSession::performKeyboardInteractions): * UIProcess/Automation/WebAutomationSession.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didReceiveEvent): 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203631. rdar://problem/24606557 2016-07-22 Zalan Bujtas <zalan@apple.com> Handle cases when IOSurface initialization fails. https://bugs.webkit.org/show_bug.cgi?id=160006 <rdar://problem/27495102> Reviewed by Tim Horton and Simon Fraser. This is an additional fix to r203514 to check if IOSurface initialization was successful. Unable to test. * Shared/mac/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::encode): (WebKit::RemoteLayerBackingStore::display): (WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _takeViewSnapshot]): (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]): 2016-07-28 Babak Shafiei <bshafiei@apple.com> Merge r203630. rdar://problem/27504958 2016-07-22 Chelsea Pugh <cpugh@apple.com> [iOS] Clients should be able to decide if they want secure text entry in a form field https://bugs.webkit.org/show_bug.cgi?id=160109 rdar://problem/27504958 Reviewed by Dan Bernstein. * UIProcess/API/Cocoa/_WKFormInputSession.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKFormInputSession forceSecureTextEntry]): Getter. (-[WKFormInputSession setForceSecureTextEntry:]): Setter. (-[WKContentView textInputTraits]): If the form input session has specified that secure text entry is desired, we should use secure text entry. 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203545. rdar://problem/26964090 2016-07-21 Myles C. Maxfield <mmaxfield@apple.com> Remove support for deprecated SPI inlineMediaPlaybackRequiresPlaysInlineAttribute https://bugs.webkit.org/show_bug.cgi?id=160066 Reviewed by Dean Jackson. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute): Deleted. (WKPreferencesGetInlineMediaPlaybackRequiresPlaysInlineAttribute): Deleted. * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): Deleted. * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): Deleted. (-[WKWebViewConfiguration copyWithZone:]): Deleted. (-[WKWebViewConfiguration _inlineMediaPlaybackRequiresPlaysInlineAttribute]): Deleted. (-[WKWebViewConfiguration _setInlineMediaPlaybackRequiresPlaysInlineAttribute:]): Deleted. * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): Deleted. 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203520. rdar://problem/26964090 2016-07-21 Myles C. Maxfield <mmaxfield@apple.com> [iPhone] Playing a video on tudou.com plays only sound, no video https://bugs.webkit.org/show_bug.cgi?id=159967 <rdar://problem/26964090> Reviewed by Jon Lee, Jeremy Jones, and Anders Carlsson. Add the two preferences to WKWebViewConfiguration and WKPreferences to cover both the Obj-C API and the C SPI. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetAllowsInlineMediaPlaybackWithPlaysInlineAttribute): (WKPreferencesGetAllowsInlineMediaPlaybackWithPlaysInlineAttribute): (WKPreferencesSetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute): (WKPreferencesGetAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute): * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithPlaysInlineAttribute]): (-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithPlaysInlineAttribute:]): (-[WKWebViewConfiguration _allowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute]): (-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackWithWebKitPlaysInlineAttribute:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203483. rdar://problem/27455589 2016-07-20 Simon Fraser <simon.fraser@apple.com> REGRESSION (r203189): Webpage snapshots are partially or fully blank when edge swiping back https://bugs.webkit.org/show_bug.cgi?id=160000 rdar://problem/27455589 Reviewed by Zalan Bujtas. r203189 triggered a call to -_updateContentRectsWithState: in the middle of a swipe, during which we'd compute the visible rect of the view as having zero width, causing us to not create tiles. -_navigationGestureDidBegin already snapshots the visibleContentRect in _frozenVisibleContentRect, but -_visibleContentRect then clipped that with ancestor views, causing the issue. Fix by having -_visibleContentRect just return _frozenVisibleContentRect if we have one. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _visibleContentRect]): 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203462. rdar://problem/27453189 2016-07-20 Tim Horton <timothy_horton@apple.com> Explain the default value of WKWebViewConfiguration's ignoresViewportScaleLimits https://bugs.webkit.org/show_bug.cgi?id=159978 <rdar://problem/27453189> Reviewed by Dan Bernstein. * UIProcess/API/Cocoa/WKWebViewConfiguration.h: This defaults to NO. 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203392. rdar://problem/27056844 2016-07-18 Alex Christensen <achristensen@webkit.org> webbookmarksd needs to use the same AppCache directory as MobileSafari https://bugs.webkit.org/show_bug.cgi?id=159912 <rdar://problem/27056844> Reviewed by Alexey Proskuryakov. * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm: (API::WebsiteDataStore::defaultApplicationCacheDirectory): Make webbookmarksd match MobileSafari by adding a matching runtime exception. 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203541. rdar://problem/27450825 2016-07-21 Chelsea Pugh <cpugh@apple.com> [iOS] Apps using WKWebView will crash if they set the scroll view's delegate and don't nil it out later https://bugs.webkit.org/show_bug.cgi?id=159980 rdar://problem/27450825 Reviewed by Dan Bernstein. The root cause of this crash is that we are not abiding the UIScrollView API that the scroll view delegate property should be weak. If setters of this delegate do not know that, since the WKWebView exposes the scroll view as a UIScrollView, they may forget to nil out the delegate they set and will then crash. * UIProcess/ios/WKScrollView.mm: (-[WKScrollViewDelegateForwarder methodSignatureForSelector:]): Get a RetainPtr holding the external delegate and use where needed. (-[WKScrollViewDelegateForwarder respondsToSelector:]): Ditto. (-[WKScrollViewDelegateForwarder forwardInvocation:]): Ditto. (-[WKScrollViewDelegateForwarder forwardingTargetForSelector:]): Ditto. When returning a reference to the external delegate, get a retained and autoreleased reference so the caller needn't release the object when done. (-[WKScrollView delegate]): Ditto. (-[WKScrollView _updateDelegate]): Get a RetainPtr holding the external delegate that can be used throughout this method. Use the RetainPtr to get the external delegate for setting super's delegate as well as creating the delegate forwarder. (-[WKScrollView setDelegate:]): Get a RetainPtr holding the external delegate and use its value for comparison to the object we are setting the external delegate to. 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203442. rdar://problem/27376446 2016-07-19 Brian Burg <bburg@apple.com> Web Automation: WebAutomationSessionProxy's HashMaps should support '0' as valid keys https://bugs.webkit.org/show_bug.cgi?id=159957 <rdar://problem/27376446> Reviewed by Joseph Pecoraro. * WebProcess/Automation/WebAutomationSessionProxy.h: Use UnsignedWithZeroKeyHashTraits to avoid problems with zero as a key. 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203414. rdar://problem/26756701 2016-07-19 Anders Carlsson <andersca@apple.com> Some payment authorization status values should keep the sheet active https://bugs.webkit.org/show_bug.cgi?id=159936 rdar://problem/26756701 Reviewed by Tim Horton. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp: (WebKit::WebPaymentCoordinatorProxy::completePaymentSession): If the status isn't a final state status, bounce the current state back to active. * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h: Rename the _authorized ivar to _didReachFinalState. * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewControllerDidFinish:]): (WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession): Set _didReachFinalState based on the return value of isFinalStateStatus. 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203387. rdar://problem/27018065 2016-07-18 Anders Carlsson <andersca@apple.com> Don't null out the IPC::Connection's XPC connection https://bugs.webkit.org/show_bug.cgi?id=159911 rdar://problem/27018065 Reviewed by Alex Christensen. The function that nulls out the XPC connection, platformInvalidate(), is called from the connection queue, whereas the XPC connection is normally accessed from the main thread leading to inconsistencies when the connection is being invalidated while the main thread is trying to access it. Fix this by simply never nulling out the XPC connection. It will be released when the IPC::Connection is destroyed anyway. * Platform/IPC/mac/ConnectionMac.mm: (IPC::Connection::platformInvalidate): 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203385. rdar://problem/27192350 2016-07-18 Tim Horton <timothy_horton@apple.com> Tapping on an apple.com tab in tab overview stutters when switching to it https://bugs.webkit.org/show_bug.cgi?id=159904 <rdar://problem/27192350> Reviewed by Simon Fraser. * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateViewState): In any case where we get to waitForDidUpdateViewState (usually a tab switch), if we have an outstanding didUpdate message, the Web process will not commit a new layer tree until it receives the didUpdate message. However, since waitForDidUpdateViewState synchronously blocks the UI process, we also won't *send* the didUpdate message, so we block for the full timeout duration. Instead, if we get to waitForDidUpdateViewState, just send the didUpdate without waiting for the DisplayLink or anything else, because calling rAF slightly too quickly, once, is certainly better than blocking the UI process for a whole second. 2016-07-22 Babak Shafiei <bshafiei@apple.com> Merge r203371. rdar://problem/26973202 2016-07-18 Tim Horton <timothy_horton@apple.com> Mail contents are temporarily obscured by black rectangles when returning from suspend and in app switcher https://bugs.webkit.org/show_bug.cgi?id=159894 <rdar://problem/26973202> Reviewed by Simon Fraser. * UIProcess/ApplicationStateTracker.h: * UIProcess/ApplicationStateTracker.mm: (WebKit::ApplicationStateTracker::ApplicationStateTracker): (WebKit::ApplicationStateTracker::~ApplicationStateTracker): (WebKit::ApplicationStateTracker::applicationDidCreateWindowContext): * UIProcess/ios/WKContentView.mm: (-[WKContentView didMoveToWindow]): (-[WKContentView _applicationDidCreateWindowContext]): (-[WKContentView _applicationWillEnterForeground]): Deleted. * UIProcess/ios/WKPDFView.mm: (-[WKPDFView didMoveToWindow]): (-[WKPDFView _applicationDidCreateWindowContext]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::applicationDidFinishSnapshottingAfterEnteringBackground): Hide content at window context creation time, instead of when the application becomes foregrounded. Otherwise, background snapshots (which create/destroy window contexts, but do not bring the app into the foreground) can have parented layers that have volatile surfaces in them. In the normal case, we will subsequently get foregrounded and re-build the layer tree; in the background snapshot case, we will just have an empty layer tree. In the future, we should consider making ApplicationStateTracker use window context creation/destruction to drive web process lifetime, so that we can actually paint correctly for background snapshots. 2016-07-21 Babak Shafiei <bshafiei@apple.com> Merge r203508. rdar://problem/27392691 2016-07-21 Yongjun Zhang <yongjun_zhang@apple.com> WebBackForwardList's currentIndex could get out of bounds when filtering items. https://bugs.webkit.org/show_bug.cgi?id=159986 When generating a new BackForwardListState object, if we filter out multiple items in the list, the currentIndex could get out of bounds. Reviewed by Dan Bernstein. * UIProcess/WebBackForwardList.cpp: (WebKit::WebBackForwardList::backForwardListState): Make currentIndex point to the last item if it is out of bounds. 2016-07-18 Babak Shafiei <bshafiei@apple.com> Merge patch for rdar://problem/27360961. 2016-06-23 Dean Jackson <dino@apple.com> Disable some features on safari-602-branch. <rdar://problem/27360961> * Configurations/FeatureDefines.xcconfig: 2016-07-18 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.3 release. * gtk/NEWS: Add release notes for 2.13.3. 2016-07-18 Csaba Osztrogonác <ossy@webkit.org> [Mac][cmake] Unreviewed buildfix after r203338. Just for fun. * PlatformMac.cmake: 2016-07-18 Carlos Garcia Campos <cgarcia@igalia.com> MemoryPressureHandler doesn't work if cgroups aren't present in Linux https://bugs.webkit.org/show_bug.cgi?id=155255 Reviewed by Sergio Villar Senin. There's no way to get notifications about memory pressure in Linux without using cgroups that doesn't require a manual polling. We can get that information from /proc/meminfo, but that's not pollable so it requires to manually check its contents in a loop sleeping for a while between checks. This means we would be waking up the process on every poll iteration, most of the times for nothing. That's specially problematic on devices running on battery. And taking into account that there's a memory pressure handler in every secondary process (Web, Network and Plugin), we would be waking up all those process all the time. However, not having a memory pressure handler is even more problematic than the manual polling. This patch adds a class MemoryPressureMonitor to the manual polling of /proc/meminfo, but runs in the UI process, to avoid the weakups in all other secondary processes, and uses an eventFD to notify all other processes. It's only used in case cgroups is not available. The eventFD descriptor is sent to all other processes at startup, and passed to the MemoryPressureHandler before install() is called for the first time. To minimize the wakeups even in the UI process, the poll interval is calculated from 1 to 5 seconds depending on the current memory used, so in case of low memory level we sleep for a longer time. It's also important to make the memory calculations as accurate as possible to avoid cleaning resources in the secondary processes unnecessarily. * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess): Pass the memory pressure monitor file descriptor to the MemoryPressureHandler. * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcessCreationParameters.cpp: (WebKit::NetworkProcessCreationParameters::encode): Encode memory pressure monitor handle. (WebKit::NetworkProcessCreationParameters::decode): Decode memory pressure monitor handle. * NetworkProcess/NetworkProcessCreationParameters.h: * PlatformEfl.cmake: Add new file to compilation, and update include dirs. * PlatformGTK.cmake: Ditto. * PluginProcess/PluginProcess.cpp: (WebKit::PluginProcess::initializePluginProcess): Pass the memory pressure monitor file descriptor to the MemoryPressureHandler. * Shared/Plugins/PluginProcessCreationParameters.cpp: (WebKit::PluginProcessCreationParameters::encode): Encode memory pressure monitor handle. (WebKit::PluginProcessCreationParameters::decode): Decode memory pressure monitor handle. * Shared/Plugins/PluginProcessCreationParameters.h: * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): Encode memory pressure monitor handle. (WebKit::WebProcessCreationParameters::decode): Decode memory pressure monitor handle. * Shared/WebProcessCreationParameters.h: * UIProcess/Plugins/PluginProcessProxy.cpp: (WebKit::PluginProcessProxy::didFinishLaunching): Create the memory pressure monitor handle for the plugin process if needed. * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::ensureNetworkProcess): Create the memory pressure monitor handle for the network process if needed. (WebKit::WebProcessPool::createNewWebProcess): Create the memory pressure monitor handle for the web process if needed. * UIProcess/linux/MemoryPressureMonitor.cpp: Added. (WebKit::lowWatermarkPages): (WebKit::systemPageSize): (WebKit::calculateMemoryAvailable): (WebKit::systemMemoryUsedAsPercentage): (WebKit::pollIntervalForUsedMemoryPercentage): (WebKit::isSystemdMemoryPressureMonitorAvailable): (WebKit::MemoryPressureMonitor::isEnabled): (WebKit::MemoryPressureMonitor::singleton): (WebKit::MemoryPressureMonitor::MemoryPressureMonitor): (WebKit::MemoryPressureMonitor::createHandle): * UIProcess/linux/MemoryPressureMonitor.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): Pass the memory pressure monitor file descriptor to the MemoryPressureHandler. 2016-07-17 Carlos Garcia Campos <cgarcia@igalia.com> REGRESSION(r202855): [GTK] ASSERTION FAILED: m_webPage.bounds().contains(bounds) https://bugs.webkit.org/show_bug.cgi?id=159806 Reviewed by Žan Doberšek. The problem is that since r202855, in case of non accelerated mode, the dirty region is updated too late when updating backing store state. * WebProcess/WebPage/DrawingAreaImpl.cpp: (WebKit::DrawingAreaImpl::updateBackingStoreState): Update the dirty region to the new size when not in accelerated compositing mode. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::setSize): Update the WebPage size before resizing the frame and calling setNeedsDisplay() to ensure that any call to setNeedsDisplay() uses the new web page bounds. This is actually a regression introduced in r143472, where setNeedsDisplay was changed to use the web page bounds as directy rectangle. Before r143472 the dirty rectangle was passed to setNeedsDisplay and it passed the right one. 2016-07-16 Sam Weinig <sam@webkit.org> [WebKit API] Add SPI to track multiple navigations caused by a single user gesture <rdar://problem/26554137> https://bugs.webkit.org/show_bug.cgi?id=159856 Reviewed by Dan Bernstein. * Shared/API/APIObject.h: * Shared/Cocoa/APIObject.mm: (API::Object::newObject): * UIProcess/API/APIUserInitiatedAction.h: Added. Add new APIObject type, UserInitiatedAction. * UIProcess/API/Cocoa/WKNavigationAction.mm: * UIProcess/API/Cocoa/WKNavigationActionPrivate.h: Expose a _WKUserInitiatedAction on the WKNavigationAction. * UIProcess/API/Cocoa/_WKUserInitiatedAction.h: Added. * UIProcess/API/Cocoa/_WKUserInitiatedAction.mm: Added. (-[_WKUserInitiatedAction consume]): (-[_WKUserInitiatedAction isConsumed]): (-[_WKUserInitiatedAction _apiObject]): * UIProcess/API/Cocoa/_WKUserInitiatedActionInternal.h: Added. Add new _WKUserInitiatedAction type wrapping API::UserInitiatedAction. * Shared/NavigationActionData.cpp: (WebKit::NavigationActionData::encode): (WebKit::NavigationActionData::decode): * Shared/NavigationActionData.h: Store the userGestureTokenIdentifier (as determined from the WebProcess's map) rather than just a single bit. This allows us to track if a user gesture is used for multiple navigations. * UIProcess/API/APINavigationAction.h: Add UserInitiatedAction member and re-implement isProcessingUserGesture in terms of it. * UIProcess/API/C/WKPage.cpp: (WKPageSetPageUIClient): * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::UIClient::createNewPage): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::decidePolicyForNavigationAction): (WebKit::WebPageProxy::decidePolicyForNewWindowAction): Get the API::UserInitiatedAction from the WebProcessProxy (if it exists), and pass it along to the API::NavigationAction. * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::shutDown): (WebKit::WebProcessProxy::userInitiatedActivity): (WebKit::WebProcessProxy::didDestroyUserGestureToken): * UIProcess/WebProcessProxy.h: Keep a map of active userInitiatedActivity objects. * UIProcess/WebProcessProxy.messages.in: Add DidDestroyUserGestureToken message to manager API::UserInitiatedActivity lifetimes. * WebKit2.xcodeproj/project.pbxproj: Add new files. * WebProcess/Notifications/WebNotificationManager.cpp: (WebKit::WebNotificationManager::didClickNotification): * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::performFrameLoadURLRequest): (WebKit::PluginView::evaluate): * WebProcess/WebCoreSupport/WebContextMenuClient.cpp: (WebKit::WebContextMenuClient::searchWithGoogle): * WebProcess/cocoa/WebPlaybackSessionManager.mm: (WebKit::WebPlaybackSessionManager::play): (WebKit::WebPlaybackSessionManager::pause): (WebKit::WebPlaybackSessionManager::togglePlayState): (WebKit::WebPlaybackSessionManager::beginScrubbing): (WebKit::WebPlaybackSessionManager::endScrubbing): (WebKit::WebPlaybackSessionManager::seekToTime): (WebKit::WebPlaybackSessionManager::fastSeek): (WebKit::WebPlaybackSessionManager::beginScanningForward): (WebKit::WebPlaybackSessionManager::beginScanningBackward): (WebKit::WebPlaybackSessionManager::endScanning): (WebKit::WebPlaybackSessionManager::selectAudioMediaOption): (WebKit::WebPlaybackSessionManager::selectLegibleMediaOption): Update for new UserGestureIndicator interface. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::createWindow): * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Get an identifier for the UserGestureToken from the WebProcess singleton to pass to the WebProcess. * WebProcess/WebProcess.cpp: (WebKit::nextUserGestureTokenIdentifier): (WebKit::WebProcess::userGestureTokenIdentifier): (WebKit::WebProcess::userGestureTokenDestroyed): * WebProcess/WebProcess.h: Track UserGestureToken lifetimes utilizing the destructionObserver mechanism off the tokens to indicate destruction. When destroyed, notify the UIProcess to avoid leaks. 2016-07-17 Ryosuke Niwa <rniwa@webkit.org> Rename fastHasAttribute to hasAttributeWithoutSynchronization https://bugs.webkit.org/show_bug.cgi?id=159864 Reviewed by Chris Dumez. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::getAssistedNodeInformation): 2016-07-17 Jeremy Jones <jeremyj@apple.com> REGRESSION (r191907): Maxthon Browser -After exit full screen video playback the browser window is blank with audio running https://bugs.webkit.org/show_bug.cgi?id=159731 <rdar://problem/26674003> Reviewed by Tim Horton. Primarily written by Jer Noble <jer.noble@apple.com>. When a view is removed from it's superview, and that superview's constraints property references the removed superview, those constraints are removed as well. Make sure to save off a copy of the superview's constraints before swapping in the placeholder view, and reapply those constraints when swapping the web view back into its original superview. * UIProcess/mac/WKFullScreenWindowController.h: * UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController setSavedConstraints:]): (-[WKFullScreenWindowController savedConstraints]): (-[WKFullScreenWindowController enterFullScreen:]): (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): 2016-07-16 Ryosuke Niwa <rniwa@webkit.org> Rename fastGetAttribute to attributeWithoutSynchronization https://bugs.webkit.org/show_bug.cgi?id=159852 Reviewed by Darin Adler. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::getPositionInformation): (WebKit::WebPage::performActionOnElement): (WebKit::WebPage::getAssistedNodeInformation): 2016-07-15 Timothy Hatcher <timothy@apple.com> Web Automation: Fix element and event coord space issues https://bugs.webkit.org/show_bug.cgi?id=159851 rdar://problem/27375780 Reviewed by Brian Burg. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::performMouseInteraction): Subtract topContentInset() before it goes back out to WebDriver. * WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::WebAutomationSessionProxy::computeElementLayout): When using useViewportCoordinates, subtract topContentInset() so it matches expectations. 2016-07-15 Beth Dakin <bdakin@apple.com> Mac UI process needs to know about element focus and blur, much like iOS https://bugs.webkit.org/show_bug.cgi?id=159843 -and corresponding- rdar://problem/27229504 Reviewed by Tim Horton. This patch makes the existing iOS machinery to handle focus and blurring of elements cross-platform. Instead of using the existing iOS messages for startAssistingNode/stopAssistingNode, this patch adds a new message that require only a boolean parameter: setEditableElementIsFocused. Now that more of this code is shared, this patch teases m_hasFocusedDueToUserInteraction out into two variables. I realized that it was being used to mean two slightly different things on Mac and iOS, which was very confusing. Now we have m_isAssistingNodeDueToUserInteraction to represent the way iOS was using the variable, and we have m_hasEverFocusedElementDueToUserInteractionSincePageTransition to represent how Mac was using the variable. There should not be any behavior changes with this re-name, just added clarity. WebViewImpl has a new member variable m_editableElementIsFocused. * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::setEditableElementIsFocused): Pipe the new setEditableElementIsFocused message to WebViewImpl. * UIProcess/PageClient.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setEditableElementIsFocused): * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/mac/PageClientImpl.h: * UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::setEditableElementIsFocused): elementDidFocus() and elementDidBlur() are now PLATFORM(COCOA) instead of PLATFORM(IOS) * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::elementDidFocus): (WebKit::WebChromeClient::elementDidBlur): * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm: (WebKit::WebChromeClient::elementDidFocus): Deleted. (WebKit::WebChromeClient::elementDidBlur): Deleted. m_hasPendingBlurNotification is no longer iOS-only. * WebProcess/WebPage/WebPage.cpp: Use our two new bools m_isAssistingNodeDueToUserInteraction and m_hasEverFocusedElementDueToUserInteractionSincePageTransition (WebKit::WebPage::didStartPageTransition): (WebKit::WebPage::didChangeSelection): These functions are all newly cross-platform. The Messages they send are still platform-specific, but otherwise the logic is the same. We dispatch_async the blur messages so that the UI process features won’t be flashy when the user is tapping, tabbing, or clicking through form fields. (WebKit::WebPage::resetAssistedNodeForFrame): (WebKit::WebPage::elementDidFocus): (WebKit::WebPage::elementDidBlur): resetAssistedNodeForFrame() is no longer iOS-only. (WebKit::WebPage::didCommitLoad): Move variables and functions around so that they are defined for the right platform, and declare the two new bools in place of the old one. * WebProcess/WebPage/WebPage.h: These functions are now defined in WebPage.cpp * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::resetAssistedNodeForFrame): Deleted. (WebKit::WebPage::elementDidFocus): Deleted. (WebKit::WebPage::elementDidBlur): Deleted. 2016-07-15 Geoffrey Garen <ggaren@apple.com> Added a makeRef<T> helper https://bugs.webkit.org/show_bug.cgi?id=159835 Reviewed by Andreas Kling. Anders told me to! * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles): * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): * Platform/IPC/Connection.cpp: (IPC::Connection::addWorkQueueMessageReceiver): (IPC::Connection::removeWorkQueueMessageReceiver): (IPC::Connection::invalidate): (IPC::Connection::sendMessage): (IPC::Connection::processIncomingMessage): (IPC::Connection::postConnectionDidCloseOnConnectionWorkQueue): (IPC::Connection::connectionDidClose): (IPC::Connection::enqueueIncomingMessage): * Platform/IPC/mac/ConnectionMac.mm: (IPC::Connection::receiveSourceEventHandler): * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): (WebKit::ThreadedCompositor::setDeviceScaleFactor): (WebKit::ThreadedCompositor::didChangeViewportSize): (WebKit::ThreadedCompositor::didChangeViewportAttribute): (WebKit::ThreadedCompositor::didChangeContentsSize): (WebKit::ThreadedCompositor::scrollTo): (WebKit::ThreadedCompositor::scrollBy): (WebKit::ThreadedCompositor::didChangeVisibleRect): * UIProcess/API/APIUserContentExtensionStore.cpp: (API::UserContentExtensionStore::lookupContentExtension): (API::UserContentExtensionStore::compileContentExtension): (API::UserContentExtensionStore::removeContentExtension): * UIProcess/Launcher/ProcessLauncher.cpp: (WebKit::ProcessLauncher::ProcessLauncher): * UIProcess/Storage/LocalStorageDatabaseTracker.cpp: (WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker): * UIProcess/Storage/StorageManager.cpp: (WebKit::StorageManager::createSessionStorageNamespace): (WebKit::StorageManager::destroySessionStorageNamespace): (WebKit::StorageManager::setAllowedSessionStorageNamespaceConnection): (WebKit::StorageManager::cloneSessionStorageNamespace): (WebKit::StorageManager::processDidCloseConnection): (WebKit::StorageManager::getSessionStorageOrigins): (WebKit::StorageManager::deleteSessionStorageOrigins): (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins): (WebKit::StorageManager::getLocalStorageOrigins): (WebKit::StorageManager::getLocalStorageOriginDetails): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin): (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): * UIProcess/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded): * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::fetchData): * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::pluginThreadAsyncCall): * WebProcess/WebPage/EventDispatcher.cpp: (WebKit::EventDispatcher::wheelEvent): (WebKit::EventDispatcher::gestureEvent): (WebKit::EventDispatcher::touchEvent): * WebProcess/WebPage/ViewUpdateDispatcher.cpp: (WebKit::ViewUpdateDispatcher::visibleContentRectUpdate): 2016-07-15 Chris Dumez <cdumez@apple.com> Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible https://bugs.webkit.org/show_bug.cgi?id=159793 Reviewed by Ryosuke Niwa. Use fastGetAttribute() / setAttributeWithoutSynchronization() when possible, for performance. * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm: (WebKit::PDFPlugin::PDFPlugin): * WebProcess/Plugins/PDF/PDFPlugin.mm: (WebKit::PDFPlugin::createPasswordEntryForm): * WebProcess/Plugins/PDF/PDFPluginAnnotation.mm: (WebKit::PDFPluginAnnotation::attach): * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm: (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement): 2016-07-15 Ryosuke Niwa <rniwa@webkit.org> Disable custom elements in Safari Tech Preview https://bugs.webkit.org/show_bug.cgi?id=159829 Reviewed by Chris Dumez. Disable custom elements API in Safari Technology Preview. Our implementation is so out of sync with the latest spec that it's actively harmful to have this feature enabled. * Shared/WebPreferencesDefinitions.h: 2016-07-15 Jer Noble <jer.noble@apple.com> Full screen ePub embedded video is playing on 1/4 screen, cut off https://bugs.webkit.org/show_bug.cgi?id=159737 <rdar://problem/26259404> Reviewed by Tim Horton. Set the fixedLayoutSize to CGSizeZero when disabling fixed layout due to the WebView not supporting arbitrary layout modes, and reset to the saved value when the view does begin supporting arbitrary layout modes. * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::setFixedLayoutSize): (WebKit::WebViewImpl::updateSupportsArbitraryLayoutModes): 2016-07-14 Ryan Haddad <ryanhaddad@apple.com> Unreviewed, rolling out r203248. This change causes LayoutTests to crash and exit early Reverted changeset: "Use more Refs with WorkQueues" https://bugs.webkit.org/show_bug.cgi?id=159792 http://trac.webkit.org/changeset/203248 2016-07-14 Chris Dumez <cdumez@apple.com> Use emptyString() instead of "" when possible https://bugs.webkit.org/show_bug.cgi?id=159789 Reviewed by Alex Christensen. Use emptyString() instead of "" when possible to reduce String allocations. * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::pasteboardChangedOwner): * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: (WebKit::parseRFC822HeaderFields): (WebKit::NPN_Status): 2016-07-14 Alex Christensen <achristensen@webkit.org> Use more Refs with WorkQueues https://bugs.webkit.org/show_bug.cgi?id=159792 Reviewed by Brady Eidson. * NetworkProcess/CustomProtocols/CustomProtocolManager.h: * Platform/IPC/Connection.cpp: (IPC::Connection::setShouldExitOnSyncMessageSendFailure): (IPC::Connection::addWorkQueueMessageReceiver): * Platform/IPC/Connection.h: * Shared/mac/SecItemShim.cpp: (WebKit::SecItemShim::initializeConnection): * UIProcess/Storage/LocalStorageDatabaseTracker.cpp: (WebKit::LocalStorageDatabaseTracker::create): (WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker): * UIProcess/Storage/LocalStorageDatabaseTracker.h: * UIProcess/Storage/StorageManager.cpp: (WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded): (WebKit::StorageManager::StorageManager): * UIProcess/Storage/StorageManager.h: * UIProcess/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::processWillOpenConnection): (WebKit::WebResourceLoadStatisticsStore::processDidCloseConnection): * UIProcess/mac/SecItemShimProxy.cpp: (WebKit::SecItemShimProxy::initializeConnection): (WebKit::SecItemShimProxy::secItemRequest): * WebProcess/Plugins/PluginProcessConnectionManager.cpp: (WebKit::PluginProcessConnectionManager::initializeConnection): (WebKit::PluginProcessConnectionManager::getPluginProcessConnection): * WebProcess/WebPage/EventDispatcher.cpp: (WebKit::EventDispatcher::initializeConnection): (WebKit::EventDispatcher::wheelEvent): * WebProcess/WebPage/ViewUpdateDispatcher.cpp: (WebKit::ViewUpdateDispatcher::initializeConnection): (WebKit::ViewUpdateDispatcher::visibleContentRectUpdate): 2016-07-14 Timothy Hatcher <timothy@apple.com> Web Automation: FrameNotFound errors happen a lot for the main frame https://bugs.webkit.org/show_bug.cgi?id=159777 rdar://problem/27224628 Send both pageID and frameID, and have the WebProcess side resolve the mainFrame from 0 based on the known pageID. This avoids a race waiting for the DidCreateMainFrame message. Reviewed by Brian Burg. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::webFrameIDForHandle): (WebKit::WebAutomationSession::switchToBrowsingContext): (WebKit::WebAutomationSession::evaluateJavaScriptFunction): (WebKit::WebAutomationSession::resolveChildFrameHandle): (WebKit::WebAutomationSession::resolveParentFrameHandle): (WebKit::WebAutomationSession::computeElementLayout): (WebKit::WebAutomationSession::getAllCookies): (WebKit::WebAutomationSession::deleteSingleCookie): (WebKit::WebAutomationSession::webFrameProxyForHandle): Deleted. (WebKit::WebAutomationSession::webFrameIDForHandle): Added. * UIProcess/Automation/WebAutomationSession.h: * WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): (WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal): (WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle): (WebKit::WebAutomationSessionProxy::resolveChildFrameWithName): (WebKit::WebAutomationSessionProxy::resolveParentFrame): (WebKit::WebAutomationSessionProxy::focusFrame): (WebKit::WebAutomationSessionProxy::computeElementLayout): (WebKit::WebAutomationSessionProxy::takeScreenshot): (WebKit::WebAutomationSessionProxy::getCookiesForFrame): (WebKit::WebAutomationSessionProxy::deleteCookie): * WebProcess/Automation/WebAutomationSessionProxy.h: * WebProcess/Automation/WebAutomationSessionProxy.messages.in: 2016-07-14 Alex Christensen <achristensen@webkit.org> Use SocketProvider to create SocketStreamHandles https://bugs.webkit.org/show_bug.cgi?id=159774 Reviewed by Brady Eidson. * WebProcess/Network/WebSocketProvider.cpp: (WebKit::WebSocketProvider::createSocketStreamHandle): (WebKit::WebSocketProvider::createWebSocketChannel): Deleted. * WebProcess/Network/WebSocketProvider.h: 2016-07-14 Chris Dumez <cdumez@apple.com> [WK2][iOS] Potential null dereference under ViewGestureController::beginSwipeGesture() https://bugs.webkit.org/show_bug.cgi?id=159776 <rdar://problem/22467100> Reviewed by Tim Horton. Potential null dereference under ViewGestureController::beginSwipeGesture() of: m_webPageProxy.backForwardList().currentItem() The client side is expected to call ViewGestureController::canSwipeInDirection() but this only guarantees that the m_alternateBackForwardListSourceView's currentItem is non-null when m_alternateBackForwardListSourceView is non-null. It does not guarantee that m_webPageProxy's currentItem is non-null. * UIProcess/ios/ViewGestureControllerIOS.mm: (WebKit::ViewGestureController::beginSwipeGesture): 2016-07-14 Csaba Osztrogonác <ossy@webkit.org> Fix the !ENABLE(WEB_SOCKETS) build after r202930 https://bugs.webkit.org/show_bug.cgi?id=159768 Reviewed by Alex Christensen. * WebProcess/Network/WebSocketProvider.h: 2016-07-14 Chris Dumez <cdumez@apple.com> Possible crash under NavigationState::NavigationClient::processDidCrash() https://bugs.webkit.org/show_bug.cgi?id=159773 <rdar://problem/19814215> Reviewed by Anders Carlsson. Add a m_navigationState.m_navigationDelegateMethods.webViewWebProcessDidCrash before trying to call it to avoid crashing if the client does not implement it. At the beginning of the method, we abort early only if both webViewWebContentProcessDidTerminate and webViewWebProcessDidCrash are implemented. However, if webViewWebContentProcessDidTerminate implemented but not webViewWebProcessDidCrash we can end up crashing as we fail to check later on before trying to call it. * UIProcess/Cocoa/NavigationState.mm: (WebKit::NavigationState::NavigationClient::processDidCrash): 2016-07-14 Csaba Osztrogonác <ossy@webkit.org> Fix the DatabaseProcess build with disabled IDB https://bugs.webkit.org/show_bug.cgi?id=159769 Reviewed by Alex Christensen. * WebProcess/Databases/WebToDatabaseProcessConnection.cpp: (WebKit::WebToDatabaseProcessConnection::didClose): 2016-07-14 Hyunjun Ko <zzoon@igalia.com> [ThreadedCompositor] Build fails in debug mode after r202040 https://bugs.webkit.org/show_bug.cgi?id=159757 Reviewed by Michael Catanzaro. Debug mode build failed due to call getter method, which is removed, in ASSERT(). * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::glContext): Deleted. (WebKit::ThreadedCompositor::didChangeVisibleRect): Deleted. (WebKit::ThreadedCompositor::renderLayerTree): Deleted. 2016-07-13 Alex Christensen <achristensen@webkit.org> Modernize WebSocket handle https://bugs.webkit.org/show_bug.cgi?id=159750 Reviewed by Brady Eidson. * UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp: (WebKit::connectionCallback): 2016-07-13 Carlos Garcia Campos <cgarcia@igalia.com> REGRESSION(r202273): [GTK] Redirected X window is resized to the previous size on size allocate https://bugs.webkit.org/show_bug.cgi?id=159551 Reviewed by Michael Catanzaro. In r202273 I added webkitWebViewBaseResizeRedirectedWindow() helper to remove duplicated code in all places where we were resizing the redirected window to the current drawing area size. But on size allocate, we were updating the redirected window first, and then the drawing area, to ensure that when the drawing area notifies the web process the redirected window is already at the new size. This regression doesn't have any visual effect, because we are ensure the right size always before rendering, but there's a small extra resize in this case. * UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseSizeAllocate): Resize the redirected window before updating the drawing area size. 2016-07-13 Chris Dumez <cdumez@apple.com> [WK2] Use more references for connections https://bugs.webkit.org/show_bug.cgi?id=159739 Reviewed by Alex Christensen. Use more references for connections to make it more obvious they cannot be null. * DatabaseProcess/DatabaseToWebProcessConnection.cpp: (WebKit::DatabaseToWebProcessConnection::DatabaseToWebProcessConnection): * DatabaseProcess/DatabaseToWebProcessConnection.h: (WebKit::DatabaseToWebProcessConnection::connection): * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: (WebKit::WebIDBConnectionToClient::messageSenderConnection): * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess): (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles): * NetworkProcess/NetworkConnectionToWebProcess.h: (WebKit::NetworkConnectionToWebProcess::connection): * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::messageSenderConnection): * Shared/mac/CookieStorageShim.mm: (WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL): * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::messageSenderConnection): (WebKit::preregisterSandboxExtensionsIfNecessary): * WebProcess/Databases/WebToDatabaseProcessConnection.cpp: (WebKit::WebToDatabaseProcessConnection::WebToDatabaseProcessConnection): * WebProcess/Databases/WebToDatabaseProcessConnection.h: (WebKit::WebToDatabaseProcessConnection::connection): * WebProcess/FileAPI/BlobRegistryProxy.cpp: (WebKit::BlobRegistryProxy::registerFileBlobURL): (WebKit::BlobRegistryProxy::registerBlobURL): (WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked): (WebKit::BlobRegistryProxy::unregisterBlobURL): (WebKit::BlobRegistryProxy::registerBlobURLForSlice): (WebKit::BlobRegistryProxy::blobSize): (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles): * WebProcess/Network/NetworkProcessConnection.cpp: (WebKit::NetworkProcessConnection::NetworkProcessConnection): (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles): * WebProcess/Network/NetworkProcessConnection.h: (WebKit::NetworkProcessConnection::connection): * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::scheduleLoad): (WebKit::WebLoaderStrategy::remove): (WebKit::WebLoaderStrategy::setDefersLoading): (WebKit::WebLoaderStrategy::loadResourceSynchronously): (WebKit::WebLoaderStrategy::createPingHandle): * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::messageSenderConnection): * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: (WebKit::WebPlatformStrategies::cookiesForDOM): (WebKit::WebPlatformStrategies::setCookiesFromDOM): (WebKit::WebPlatformStrategies::cookiesEnabled): (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue): (WebKit::WebPlatformStrategies::getRawCookies): (WebKit::WebPlatformStrategies::deleteCookie): (WebKit::WebPlatformStrategies::addCookie): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::startDownload): (WebKit::WebFrame::convertMainResourceLoadToDownload): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::ensureLegacyPrivateBrowsingSessionInNetworkProcess): (WebKit::WebProcess::networkConnection): (WebKit::WebProcess::prefetchDNS): * WebProcess/WebProcess.h: 2016-07-13 Anders Carlsson <andersca@apple.com> Move WKPreferencesRef functions to the correct file https://bugs.webkit.org/show_bug.cgi?id=159741 Reviewed by Sam Weinig. Also, get rid of WKPreferencesGetPaymentsEnabled and WKPreferencesSetPaymentsEnabled. * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesGetApplePayEnabled): (WKPreferencesSetApplePayEnabled): (WKPreferencesGetApplePayCapabilityDisclosureAllowed): (WKPreferencesSetApplePayCapabilityDisclosureAllowed): * UIProcess/API/C/WKPreferencesRef.h: * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: (WKPreferencesGetApplePayEnabled): Deleted. (WKPreferencesSetApplePayEnabled): Deleted. (WKPreferencesGetApplePayCapabilityDisclosureAllowed): Deleted. (WKPreferencesSetApplePayCapabilityDisclosureAllowed): Deleted. (WKPreferencesGetPaymentsEnabled): Deleted. (WKPreferencesSetPaymentsEnabled): Deleted. 2016-07-13 Anders Carlsson <andersca@apple.com> Add _applePayCapabilityDisclosureAllowed SPI declaration https://bugs.webkit.org/show_bug.cgi?id=159740 Reviewed by Dan Bernstein. Also, delete an old method that is no longer used. * UIProcess/API/Cocoa/WKPreferencesPrivate.h: * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration _paymentsEnabled]): Deleted. (-[WKWebViewConfiguration _setPaymentsEnabled:]): Deleted. 2016-07-13 Zalan Bujtas <zalan@apple.com> Blank news article on kottke.org https://bugs.webkit.org/show_bug.cgi?id=159733 <rdar://problem/26743065> Reviewed by Simon Fraser. This patch ensures that we update the visible content rect, when Auto Layout moves the WKWebView around. We normally expect setFrameRect to be called to position WKWebView. However Auto Layout relies on layoutSubviews, and in order to always have up-to-date visible content rect, we need to override layoutSubviews in WKWebView. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView layoutSubviews]): 2016-07-13 Chris Dumez <cdumez@apple.com> WebKit2 shouldn't signal custom protocol clients from the NSURLConnection loader thread. https://bugs.webkit.org/show_bug.cgi?id=159725 <rdar://problem/27323131> Reviewed by Andy Estes. WebKit2 shouldn't signal custom protocol clients from the NSURLConnection loader thread. Instead, use the RunLoop the WKCustomProtocol was initialized on. * NetworkProcess/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm: (-[WKCustomProtocol initWithRequest:cachedResponse:client:]): (WebKit::dispatchOnInitializationRunLoop): (WebKit::CustomProtocolManager::didFailWithError): (WebKit::CustomProtocolManager::didLoadData): (WebKit::CustomProtocolManager::didReceiveResponse): (WebKit::CustomProtocolManager::didFinishLoading): (WebKit::CustomProtocolManager::wasRedirectedToRequest): (WebKit::dispatchOnResourceLoaderRunLoop): Deleted. 2016-07-13 Enrica Casucci <enrica@apple.com> Update supported platforms in xcconfig files to match the sdk names. https://bugs.webkit.org/show_bug.cgi?id=159728 Reviewed by Tim Horton. * Configurations/Base.xcconfig: 2016-07-13 Carlos Garcia Campos <cgarcia@igalia.com> [Coordinated Graphics] Remove toCoordinatedGraphicsLayer and use downcast instead https://bugs.webkit.org/show_bug.cgi?id=159469 Reviewed by Michael Catanzaro. * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp: (WebKit::CompositingCoordinator::flushPendingLayerChanges): (WebKit::CompositingCoordinator::initializeRootCompositingLayerIfNeeded): (WebKit::CompositingCoordinator::mainContentsLayer): 2016-07-13 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] WebKitGtk+ uses too many file descriptors https://bugs.webkit.org/show_bug.cgi?id=152316 Reviewed by Michael Catanzaro. The problem is that we are keeping file descriptors open in SharedMemory objects. Those objects can be kept alive for a long time, for example in case of cached resources sent from the network process as shareable resources. The thing is that we keep the file descriptor in the SharedMemory object only to be able to create a Handle, duplicating the file descriptor. However, we are also assuming that we create handles for SharedMemory objects created by another handle which is wrong. SharedMemory objects are created to map a file or data and then a handle is created to send it to another process, or to map an existing file or data for a given handle received from another process. They can also be created to wrap another map, but in that case we don't own the file descritor nor the mapped data. So, after mapping from a handle, we no longer need the file descriptor, and it can be closed to release it, while the mapped memory data will still be alive until munmap() is called. This drastically reduces the amount of file descriptors used by WebKitGTK+. * Platform/IPC/unix/ConnectionUnix.cpp: (IPC::readBytesFromSocket): Use setCloseOnExec(). (IPC::Connection::createPlatformConnection): Ditto. * Platform/SharedMemory.h: * Platform/unix/SharedMemoryUnix.cpp: (WebKit::SharedMemory::map): Close the file descriptor right after mmap. (WebKit::SharedMemory::~SharedMemory): Close the file descriptor only if it hasn't been closed yet. (WebKit::SharedMemory::createHandle): Add an ASSERT to ensure we only try to create a handle for SharedMemory objects having a valid file descriptor. Use dupCloseOnExec() to duplicate the handle and set the close on exec flag. * UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp: (WebKit::ProcessLauncher::launchProcess): Use setCloseOnExec(). 2016-07-12 Simon Fraser <simon.fraser@apple.com> [iOS WK2] After zooming and when under memory pressure, page tiles sometimes don't redraw while panning https://bugs.webkit.org/show_bug.cgi?id=159697 rdar://problem/26314075 Reviewed by Benjamin Poulain. When under memory pressure, and after pinching back to minimum scale, WebPage::updateVisibleContentRects() would sometimes always bail under the "boundedScale != currentScale..." condition. This happened because the visibleContentRectUpdateInfo.scale() is a double, but m_page->pageScaleFactor() is a float, and the constraining between min and max scale (which are doubles) caused boundedScale to be always different from currentScale. Fix by using floats throughout. No test because there's no way to simulate memory pressure for testing. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::updateVisibleContentRects): 2016-07-12 Chris Dumez <cdumez@apple.com> [WK2][NetworkSession] Fix unsafe RunLoop::dispatch() in NetworkLoad constructor https://bugs.webkit.org/show_bug.cgi?id=159691 Reviewed by Brady Eidson. Remove unsafe RunLoop::dispatch() in NetworkLoad constructor. It captured |this| but there was no guarantee the NetworkLoad would still be alive by the time the lambda gets executed. Instead, the constructor now takes a NetworkSession& parameter so that the call sites have to retrieve the NetworkSession for a given SessionID and deal with the fact that there may be no such NetworkSession before constructing the NetworkLoad. * NetworkProcess/Downloads/DownloadManager.cpp: (WebKit::DownloadManager::startDownload): * NetworkProcess/Downloads/PendingDownload.cpp: (WebKit::PendingDownload::PendingDownload): * NetworkProcess/Downloads/PendingDownload.h: * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::NetworkLoad): * NetworkProcess/NetworkLoad.h: * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::startNetworkLoad): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): 2016-07-12 Chris Dumez <cdumez@apple.com> [WK2] Protect against bad database data in LocalStorageDatabase::importItems() https://bugs.webkit.org/show_bug.cgi?id=159663 <rdar://problem/18995873> Reviewed by Benjamin Poulain. Protect against bad database data in LocalStorageDatabase::importItems(). We crash if the database contains a null key or a null value so protect against it given that we have evidence it can happen. With this change, I can no longer reproduce the UIProcess crash on evernote.com that is documented at <rdar://problem/18995873>. * UIProcess/Storage/LocalStorageDatabase.cpp: (WebKit::LocalStorageDatabase::importItems): 2016-07-12 Gyuyoung Kim <gyuyoung.kim@webkit.org> Remove ENABLE_CSS3_TEXT_LINE_BREAK flag https://bugs.webkit.org/show_bug.cgi?id=159671 Reviewed by Csaba Osztrogonác. ENABLE_CSS3_TEXT_LINE_BREAK feature was implemented without guards. https://bugs.webkit.org/show_bug.cgi?id=89235 So this guard can be removed in build scripts. * Configurations/FeatureDefines.xcconfig: 2016-07-11 Gyuyoung Kim <gyuyoung.kim@webkit.org> Purge PassRefPtr in platform/efl and platform/mac https://bugs.webkit.org/show_bug.cgi?id=159548 Reviewed by Alex Christensen. Remove all use of PassRefPtr and clean up unnecessary tabs and spaces. WebKit2 codes are also changed because of setBufferForType()'s modification. * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm: (WebKit::WebPasteboardProxy::setPasteboardBufferForType): * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: (WebKit::WebPlatformStrategies::setBufferForType): * WebProcess/WebCoreSupport/WebPlatformStrategies.h: 2016-07-11 Chris Dumez <cdumez@apple.com> [WK2][iOS] Intermittent crash in [UIApplication beginBackgroundTaskWithName] expiration handler https://bugs.webkit.org/show_bug.cgi?id=159648 <rdar://problem/27219361> Reviewed by Anders Carlsson. We see an intermittent crash in [UIApplication beginBackgroundTaskWithName] expiration handler. From the traces, we noticed the expiration handler can get called on a non-main thread under certain conditions, which our code is designed to deal with. In particular, we get called on a non-main thread when UIKit fails to acquire the assertion. Update our expiration handler to always notify the clients on the main thread. * UIProcess/ios/ProcessAssertionIOS.mm: (-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]): 2016-07-11 Dan Bernstein <mitz@apple.com> Tried to fix the macOS build. * UIProcess/API/Cocoa/WKNavigationAction.mm: (-[WKNavigationAction description]): 2016-07-11 Dan Bernstein <mitz@apple.com> Cleaned up API availability. Requested by Tim Horton. * UIProcess/API/Cocoa/WKNavigationAction.mm: * UIProcess/API/Cocoa/WKNavigationActionPrivate.h: 2016-07-11 Enrica Casucci <enrica@apple.com> Add synthetic click origin to WKNavigationAction. https://bugs.webkit.org/show_bug.cgi?id=159584 rdar://problem/25610422 Reviewed by Tim Horton. Adds a private property to WKNavigationAction to retrieve the origin of the synthetic click. * Shared/NavigationActionData.cpp: (WebKit::NavigationActionData::encode): (WebKit::NavigationActionData::decode): * Shared/NavigationActionData.h: * Shared/WebEvent.h: (WebKit::WebMouseEvent::button): (WebKit::WebMouseEvent::menuTypeForEvent): (WebKit::WebMouseEvent::force): (WebKit::WebMouseEvent::syntheticClickType): * Shared/WebMouseEvent.cpp: (WebKit::WebMouseEvent::WebMouseEvent): (WebKit::WebMouseEvent::encode): (WebKit::WebMouseEvent::decode): * Shared/mac/WebEventFactory.mm: (WebKit::WebEventFactory::createWebMouseEvent): (WebKit::WebEventFactory::createWebWheelEvent): * UIProcess/API/APINavigationAction.h: * UIProcess/API/Cocoa/WKNavigationAction.mm: (toWKNavigationType): (toWKSyntheticClickType): (-[WKNavigationAction description]): (-[WKNavigationAction sourceFrame]): (-[WKNavigationAction request]): (-[WKNavigationAction _syntheticClickType]): (-[WKNavigationAction modifierFlags]): * UIProcess/API/Cocoa/WKNavigationActionPrivate.h: * UIProcess/WebPageProxy.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _twoFingerSingleTapGestureRecognized:]): (-[WKContentView _longPressRecognized:]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::getSelectionContext): (WebKit::WebPageProxy::handleTwoFingerTapAtPoint): (WebKit::WebPageProxy::selectWithTwoTouches): * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp: (WebKit::mouseButtonForMouseEvent): (WebKit::syntheticClickTypeForMouseEvent): (WebKit::InjectedBundleNavigationAction::modifiersForNavigationAction): (WebKit::InjectedBundleNavigationAction::mouseButtonForNavigationAction): (WebKit::InjectedBundleNavigationAction::syntheticClickTypeForNavigationAction): (WebKit::InjectedBundleNavigationAction::create): (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction): * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h: (WebKit::InjectedBundleNavigationAction::navigationType): (WebKit::InjectedBundleNavigationAction::modifiers): (WebKit::InjectedBundleNavigationAction::mouseButton): (WebKit::InjectedBundleNavigationAction::hitTestResult): (WebKit::InjectedBundleNavigationAction::formElement): (WebKit::InjectedBundleNavigationAction::syntheticClickType): (WebKit::InjectedBundleNavigationAction::shouldOpenExternalURLs): (WebKit::InjectedBundleNavigationAction::shouldTryAppLinks): * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::createWindow): * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::navigateToPDFLinkWithSimulatedClick): (WebKit::WebPage::contextMenuAtPointInWindow): (WebKit::WebPage::dragEnded): (WebKit::WebPage::simulateMouseDown): (WebKit::WebPage::simulateMouseUp): (WebKit::WebPage::simulateMouseMotion): (WebKit::WebPage::setCompositionForTesting): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::handleSyntheticClick): (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver): (WebKit::WebPage::completeSyntheticClick): (WebKit::WebPage::sendTapHighlightForNodeIfNecessary): (WebKit::WebPage::handleTwoFingerTapAtPoint): (WebKit::WebPage::potentialTapAtPosition): (WebKit::WebPage::inspectorNodeSearchMovedToPosition): 2016-07-11 Anders Carlsson <andersca@apple.com> Able to open multiple payment sheets in Safari at the same time https://bugs.webkit.org/show_bug.cgi?id=159637 rdar://problem/26411339 Reviewed by Beth Dakin. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp: (WebKit::WebPaymentCoordinatorProxy::showPaymentUI): Add result out parameter. Set the result to false if isShowingPaymentUI is true, otherwise set isShowingPaymentUI to true. (WebKit::WebPaymentCoordinatorProxy::didReachFinalState): Set isShowingPaymentUI to false. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: * UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in: * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::showPaymentUI): * WebProcess/ApplePay/WebPaymentCoordinator.h: The showPaymentUI message and client functions now return booleans. 2016-07-11 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r203064. https://bugs.webkit.org/show_bug.cgi?id=159642 This change causes LayoutTest crashes on WK1 ASan (Requested by ryanhaddad on #webkit). Reverted changeset: "Use refs for ResourceLoaders" https://bugs.webkit.org/show_bug.cgi?id=159592 http://trac.webkit.org/changeset/203064 2016-07-11 Nan Wang <n_wang@apple.com> AX: WKWebView should have API to prevent pinch-to-zoom always being allowed https://bugs.webkit.org/show_bug.cgi?id=158364 Reviewed by Anders Carlsson. Added a property in WKWebViewConfiguration so that developers can toggle the ignoring viewport scale limits setting. Changes are covered in modified tests. * Shared/WebPageCreationParameters.cpp: (WebKit::WebPageCreationParameters::encode): (WebKit::WebPageCreationParameters::decode): * Shared/WebPageCreationParameters.h: * UIProcess/API/C/WKPage.cpp: (WKPageSetResourceCachingDisabled): (WKPageSetIgnoresViewportScaleLimits): * UIProcess/API/C/WKPagePrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (shouldAllowPictureInPictureMediaPlayback): (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView _navigationGestureDidEnd]): (forceAlwaysUserScalableChangedCallback): Deleted. (-[WKWebView _updateForceAlwaysUserScalable]): Deleted. * UIProcess/API/Cocoa/WKWebViewConfiguration.h: * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration encodeWithCoder:]): (-[WKWebViewConfiguration initWithCoder:]): (-[WKWebViewConfiguration copyWithZone:]): * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::creationParameters): * UIProcess/WebPageProxy.h: * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize): (WebKit::WebPageProxy::setForceAlwaysUserScalable): (WebKit::WebPageProxy::setMaximumUnobscuredSize): (WebKit::WebPageProxy::updateForceAlwaysUserScalable): Deleted. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::disableInspectorNodeSearch): (WebKit::WebPage::setForceAlwaysUserScalable): (WebKit::innerFrameQuad): (WebKit::WebPage::updateForceAlwaysUserScalable): Deleted. 2016-07-08 Alex Christensen <achristensen@webkit.org> Use refs for ResourceLoaders https://bugs.webkit.org/show_bug.cgi?id=159592 Reviewed by Chris Dumez. * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::scheduleInternallyFailedLoad): (WebKit::WebLoaderStrategy::internallyFailedLoadTimerFired): (WebKit::WebLoaderStrategy::startLocalLoad): (WebKit::WebLoaderStrategy::remove): (WebKit::WebLoaderStrategy::setDefersLoading): (WebKit::WebLoaderStrategy::crossOriginRedirectReceived): * WebProcess/Network/WebLoaderStrategy.h: 2016-07-11 Antti Koivisto <antti@apple.com> Update stable cache version in NetworkCache::Storage::deleteOldVersions() https://bugs.webkit.org/show_bug.cgi?id=159618 rdar://problem/26715745 Reviewed by Chris Dumez. NetworkCache::Storage::deleteOldVersions() keeps the previous shipped cache version (4) for Mac around so development WebKit doesn’t clobber system Safari cache. Update this to the current version so old caches go away in customer systems. * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::deleteOldVersions): * NetworkProcess/cache/NetworkCacheStorage.h: Move lastStableVersion to header next to the current version. 2016-07-10 Beth Dakin <bdakin@apple.com> Update mediaIcon.pdf https://bugs.webkit.org/show_bug.cgi?id=159613 -and corresponding- rdar://problem/27268111 Reviewed by Sam Weinig. * Resources/mediaIcon.pdf: Replaced. 2016-07-10 Alex Christensen <achristensen@webkit.org> Add self to WebKit2 Owners https://bugs.webkit.org/show_bug.cgi?id=159499 Reviewed by Sam Weinig. * Owners: 2016-07-10 Alex Christensen <achristensen@webkit.org> Fix client certificate authentication after r200463 https://bugs.webkit.org/show_bug.cgi?id=159574 <rdar://problem/26931006> Reviewed by Sam Weinig. * Shared/Authentication/mac/AuthenticationManager.mac.mm: (WebKit::leafCertificate): (WebKit::chain): Handle the different types of CertificateInfos. 2016-07-08 Yongjun Zhang <yongjun_zhang@apple.com> When WKWebView prepares the session state blob, we should be able to filter it. https://bugs.webkit.org/show_bug.cgi?id=159410 Add a SPI to WKWebView so that a client can decide how to filter backforward items when WKWebView perparing session state. Reviewed by Brady Eidson. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _sessionStateWithFilter:]): When preparing session state, check each backforward item against the filter block. * UIProcess/API/Cocoa/WKWebViewPrivate.h: Add the SPI _sessionStateWithFilter: 2016-07-08 Tim Horton <timothy_horton@apple.com> Mail messages don't start loading until scrolling completes https://bugs.webkit.org/show_bug.cgi?id=159585 <rdar://problem/27088405> Reviewed by Andy Estes. * UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm: (-[WKCustomProtocolLoader initWithCustomProtocolManagerProxy:customProtocolID:request:connection:]): When scrolling, NSDefaultRunLoopMode isn't run, but NSRunLoopCommonModes are. CFNetwork uses NSDefaultRunLoopMode if we tell NSURLConnection to "start immediately", but we can instead schedule our NSURLConnection into NSRunLoopCommonModes and start it ourselves, ensuring that it will be able to do work while scrolling is happening. 2016-07-08 Andy Estes <aestes@apple.com> [Content Filtering] Load blocked pages more like other error pages are loaded https://bugs.webkit.org/show_bug.cgi?id=159485 <rdar://problem/26014076> Reviewed by Brady Eidson. * Shared/API/c/WKErrorRef.h: Defined kWKErrorCodeFrameLoadBlockedByContentFilter. * UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess): Added the resource directories of WebCore.framework and WebKit.framework as paths with assumed read access. * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::hasAssumedReadAccessToURL): Checked platformPathsWithAssumedReadAccess() as well as m_localPathsWithAssumedReadAccess. (WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess): Added a non-Cocoa implementation. * UIProcess/WebProcessProxy.h: * WebProcess/WebCoreSupport/WebErrors.h: * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::blockedByContentFilterError): Called WebKit::blockedByContentFilterError(). * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: * WebProcess/WebCoreSupport/mac/WebErrorsMac.mm: (WebKit::blockedByContentFilterError): Returned a ResourceError for kWKErrorCodeFrameLoadBlockedByContentFilter. 2016-07-08 Anders Carlsson <andersca@apple.com> Fix 32-bit build. * PluginProcess/mac/PluginProcessShim.mm: 2016-07-07 Anders Carlsson <andersca@apple.com> REGRESSION (r196321): Adobe Reader DC + Safari : Zoom level pulldown is not displayed at the correct position https://bugs.webkit.org/show_bug.cgi?id=159531 rdar://problem/26382579 Reviewed by Tim Horton. There's code in the Adobe Acrobat framework that checks if the main bundle identifier is "com.apple.WebKit.PluginProcess" and assumes that it's running inside the Adobe Reader app if it's something else. Since we're now using the XPC service for all plug-ins, the bundle identifier is "com.apple.WebKit.Plugin.64", so the Acrobat framework assumes it's running in the app and doesn't use any special tricks to show the popup menu. Work around this by shimming CFStringCompare, and looking for the exact conditions when this can happen and return kCFCompareEqualTo when all conditions are true. * PluginProcess/mac/PluginProcessMac.mm: (WebKit::isAdobeAcrobatAddress): (WebKit::stringCompare): (WebKit::initializeShim): (WebKit::PluginProcess::platformInitializeProcess): * PluginProcess/mac/PluginProcessShim.h: * PluginProcess/mac/PluginProcessShim.mm: (WebKit::shimCFStringCompare): 2016-07-08 Brady Eidson <beidson@apple.com> Unreviewed: Fix case-sensitive filesystem build. * UIProcess/Storage/LocalStorageDatabaseTracker.cpp: 2016-07-08 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r202944. https://bugs.webkit.org/show_bug.cgi?id=159570 caused some tests to crash under GuardMalloc (Requested by estes on #webkit). Reverted changeset: "[Content Filtering] Load blocked pages more like other error pages are loaded" https://bugs.webkit.org/show_bug.cgi?id=159485 http://trac.webkit.org/changeset/202944 2016-07-08 Keith Rollin <krollin@apple.com> Add always-on logging for downloads https://bugs.webkit.org/show_bug.cgi?id=159521 <rdar://problem/26630645> Reviewed by Alex Christensen. Add logging statements that track when a download starts, when it first receives data, and when the download is done (due to completion, cancelation, or failure). * NetworkProcess/Downloads/Download.cpp: (WebKit::Download::Download): (WebKit::Download::didReceiveResponse): (WebKit::Download::didReceiveData): (WebKit::Download::didFinish): (WebKit::Download::didFail): (WebKit::Download::didCancel): (WebKit::Download::isAlwaysOnLoggingAllowed): * NetworkProcess/Downloads/Download.h: (WebKit::Download::Download): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): 2016-07-08 Brady Eidson <beidson@apple.com> Clearing LocalStorage doesn't also delete -wal and -shm files. <rdar://problem/27206772> and https://bugs.webkit.org/show_bug.cgi?id=159566 Reviewed by Brent Fulgham. Also helpfully picked over by Andy "Never Forgets" Estes. * UIProcess/Storage/LocalStorageDatabaseTracker.cpp: (WebKit::LocalStorageDatabaseTracker::removeDatabaseWithOriginIdentifier): 2016-07-07 Andy Estes <aestes@apple.com> [Content Filtering] Load blocked pages more like other error pages are loaded https://bugs.webkit.org/show_bug.cgi?id=159485 <rdar://problem/26014076> Reviewed by Brady Eidson. * Shared/API/c/WKErrorRef.h: Defined kWKErrorCodeFrameLoadBlockedByContentFilter. * UIProcess/Cocoa/WebProcessProxyCocoa.mm: (WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess): Added the resource directories of WebCore.framework and WebKit.framework as paths with assumed read access. * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::hasAssumedReadAccessToURL): Checked platformPathsWithAssumedReadAccess() as well as m_localPathsWithAssumedReadAccess. (WebKit::WebProcessProxy::platformPathsWithAssumedReadAccess): Added a non-Cocoa implementation. * UIProcess/WebProcessProxy.h: * WebProcess/WebCoreSupport/WebErrors.h: * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::blockedByContentFilterError): Called WebKit::blockedByContentFilterError(). * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: * WebProcess/WebCoreSupport/mac/WebErrorsMac.mm: (WebKit::blockedByContentFilterError): Returned a ResourceError for kWKErrorCodeFrameLoadBlockedByContentFilter. 2016-07-07 Alex Christensen <achristensen@webkit.org> Followup to r202939. https://bugs.webkit.org/show_bug.cgi?id=159526 * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::didFailLoading): We need the correct destination id when sending a message. 2016-07-07 Alex Christensen <achristensen@webkit.org> Fix crash when sending failure message to closed WebProcess https://bugs.webkit.org/show_bug.cgi?id=159526 <rdar://problem/26767037> Reviewed by Brady Eidson. * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::didFailLoading): Check to see if there is a connection before using it to send a message. Sometimes it was null. I think this could be tested if we had real network loading from TestWebKitAPI by cancelling slow loads and closing WebProcesses around the same time, but no such infrastructure exists yet. 2016-07-07 Alex Christensen <achristensen@webkit.org> Use SocketProvider to create WebSocketChannels https://bugs.webkit.org/show_bug.cgi?id=158776 Reviewed by Brent Fulgham. * CMakeLists.txt: * WebKit2.xcodeproj/project.pbxproj: * WebProcess/Network/WebSocketProvider.cpp: Copied from Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp. (WebKit::WebSocketProvider::createWebSocketChannel): (WebCore::ThreadableWebSocketChannel::create): Deleted. * WebProcess/Network/WebSocketProvider.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::m_shouldDispatchFakeMouseMoveEvents): 2016-07-07 Antoine Quint <graouts@apple.com> <img> with a wide gamut PDF does not display using a wide gamut color space https://bugs.webkit.org/show_bug.cgi?id=158983 <rdar://problem/25720247> Reviewed by Dean Jackson. ColorSpace parameters have been replaced with CGColorSpaceRef parameters for IOSurface. * Shared/mac/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::decode): (WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _takeViewSnapshot]): (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]): 2016-07-07 Anders Carlsson <andersca@apple.com> Memory corruption destroying PaymentCoordinator https://bugs.webkit.org/show_bug.cgi?id=159516 rdar://problem/27222517 Reviewed by Tim Horton. Introduce a new MessageReceiverMap::removeMessageReceiver that takes a MessageReceiver and removes all traces of it in the message receiver map. Use it in the WebPaymentCoordinator destructor. * Platform/IPC/MessageReceiverMap.cpp: (IPC::MessageReceiverMap::removeMessageReceiver): * Platform/IPC/MessageReceiverMap.h: * Shared/ChildProcess.cpp: (WebKit::ChildProcess::removeMessageReceiver): * Shared/ChildProcess.h: * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::~WebPaymentCoordinator): 2016-07-07 Csaba Osztrogonác <ossy@webkit.org> [Mac][cmake] Unreviewed buildfix after r202889. Just for fun. * PlatformMac.cmake: 2016-07-06 Tim Horton <timothy_horton@apple.com> Some API tests started failing after r202889 https://bugs.webkit.org/show_bug.cgi?id=159498 * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::loadHTMLString): Fix a typo; this is a MIME type, not an encoding :| 2016-07-06 Tim Horton <timothy_horton@apple.com> Email from June 1st containing text 'Today @ 7:10PM' is linkified, but shouldn't be https://bugs.webkit.org/show_bug.cgi?id=159498 <rdar://problem/26719903> Reviewed by Sam Weinig. * Shared/Cocoa/LoadParametersCocoa.mm: Added. (WebKit::LoadParameters::platformEncode): (WebKit::LoadParameters::platformDecode): * Shared/LoadParameters.cpp: Added. (WebKit::LoadParameters::encode): (WebKit::LoadParameters::decode): * Shared/LoadParameters.h: Added. Add a struct that knows how to encode all of the different parameters to all of the Load* messages, including the platform-specific DataDetectors parameters. * Shared/mac/ArgumentCodersMac.h: * Shared/mac/ArgumentCodersMac.mm: (IPC::typeFromObject): (IPC::encode): (IPC::decode): Add NSURL coders that defer to the CFURL coders. * UIProcess/API/APIUIClient.h: (API::UIClient::dataDetectionContext): * UIProcess/Cocoa/UIDelegate.h: * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::setDelegate): (WebKit::UIDelegate::UIClient::dataDetectionContext): Add APIUIClient methods to retrieve the DataDetectors context dictionary. * UIProcess/Cocoa/WebPageProxyCocoa.mm: (WebKit::WebPageProxy::addPlatformLoadParameters): Add the DataDetectors context dictionary to the given LoadParameters. * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dataDetectionContext): * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: * WebProcess/WebPage/WebPage.h: (WebKit::WebPage::dataDetectionContext): Store the dataDetectionContext on WebPage, and make it accessible to WebCore via the FrameLoaderClient (it is used in FrameLoader when the load completes). * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::loadRequest): (WebKit::WebPageProxy::loadFile): (WebKit::WebPageProxy::loadData): (WebKit::WebPageProxy::loadHTMLString): (WebKit::WebPageProxy::loadAlternateHTMLString): (WebKit::WebPageProxy::loadPlainTextString): (WebKit::WebPageProxy::loadWebArchiveData): * UIProcess/WebPageProxy.h: * WebKit2.xcodeproj/project.pbxproj: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::loadRequest): (WebKit::WebPage::loadStringImpl): (WebKit::WebPage::loadData): (WebKit::WebPage::loadString): (WebKit::WebPage::loadAlternateHTMLString): (WebKit::WebPage::loadHTMLString): Deleted. (WebKit::WebPage::loadPlainTextString): Deleted. (WebKit::WebPage::loadWebArchiveData): Deleted. * WebProcess/WebPage/WebPage.messages.in: Adopt LoadParameters, taking this opportunity to reduce the number of very similar messages. We can take this further (we should be able to get it down to just LoadRequest and LoadData) in the future. When any load occurs, grab the client's DataDetectorse context dictionary and send it along with the load request, storing it in WebPage. 2016-07-06 Chris Dumez <cdumez@apple.com> [WK2][Cocoa] Disable ResourceResponse lazy initialization https://bugs.webkit.org/show_bug.cgi?id=159497 <rdar://problem/27209066> Reviewed by Alex Christensen. Disable ResourceResponse lazy initialization for WebKit2 as we always end up initializing all the fields anyway when sending the response to the WebContent process via IPC. Even worse, we always do a partial lazy initialization (common fields only) before the IPC so we always do the initialization in 2 steps. This normally would not be an issue but the 2 steps actually have some overlap because both call CFHTTPMessageCopyAllHeaderFields(), which is expensive (See <rdar://problem/26796059>) to first get the common HTTP headers, then ALL the HTTP headers. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): 2016-07-06 Chelsea Pugh <cpugh@apple.com> [iOS] Text suggestions should be cleared when form input session is invalidated https://bugs.webkit.org/show_bug.cgi?id=159477 Reviewed by Dan Bernstein. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKFormInputSession invalidate]): Set input delegate's suggestions to nil when a form input session is invalidated. This will set the keyboard QuickType suggestions back to their default values. 2016-07-06 Alex Christensen <achristensen@webkit.org> Call continueCanAuthenticateAgainstProtectionSpace when cancelling loads waiting for the callback https://bugs.webkit.org/show_bug.cgi?id=159492 <rdar://problem/26921670> Reviewed by Brady Eidson. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::~NetworkLoad): (WebKit::NetworkLoad::canAuthenticateAgainstProtectionSpaceAsync): (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): * NetworkProcess/NetworkLoad.h: 2016-07-06 Myles C. Maxfield <mmaxfield@apple.com> [RTL Scrollbars] RTL Scrollbars broken with clients creating Web Views via [WKView initWithFrame:contextRef:pageGroupRef:] https://bugs.webkit.org/show_bug.cgi?id=159383 <rdar://problem/26921117> Reviewed by Anders Carlsson. The code which consults with the userInterfaceLayoutDirection of the view is inside [WKWebView _initializeWithConfiguration:]. However, some clients create Web Views via [WKView initWithFrame:contextRef:pageGroupRef:] which doesn't call this code. Therefore, this codepath should do the same kind of direction consulting. * UIProcess/API/mac/WKView.mm: (toUserInterfaceLayoutDirection): (-[WKView initWithFrame:contextRef:pageGroupRef:relatedToPage:]): 2016-07-06 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r202867. https://bugs.webkit.org/show_bug.cgi?id=159491 This change caused an existing LayoutTest to crash on ios- simulator (Requested by ryanhaddad on #webkit). Reverted changeset: "<img> with a wide gamut PDF does not display using a wide gamut color space" https://bugs.webkit.org/show_bug.cgi?id=158983 http://trac.webkit.org/changeset/202867 2016-07-06 Enrica Casucci <enrica@apple.com> Limit touch distance for two finger tap. https://bugs.webkit.org/show_bug.cgi?id=159476 rdar://problem/26439052 Reviewed by Beth Dakin. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setupInteraction]): * Platform/spi/ios/UIKitSPI.h 2016-07-06 Antoine Quint <graouts@apple.com> <img> with a wide gamut PDF does not display using a wide gamut color space https://bugs.webkit.org/show_bug.cgi?id=158983 <rdar://problem/25720247> Reviewed by Tim Horton. ColorSpace parameters have been replaced with CGColorSpaceRef parameters for IOSurface. * Shared/mac/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::decode): (WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _takeViewSnapshot]): (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]): 2016-07-06 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r202725. https://bugs.webkit.org/show_bug.cgi?id=159473 didn't reduce coreui memory usage (Requested by kling on #webkit). Reverted changeset: "[Mac] Get rid of the old timey rubber-banding linen pattern." https://bugs.webkit.org/show_bug.cgi?id=159329 http://trac.webkit.org/changeset/202725 2016-07-06 Carlos Garcia Campos <cgarcia@igalia.com> Duplicated code in DrawingAreaImpl and CoordinatedDrawingArea https://bugs.webkit.org/show_bug.cgi?id=159259 Reviewed by Žan Doberšek. It seems that CoordinatedDrawingArea is just a copy paste of DrawingAreaImpl with non-accelerated code path removed. There's actually nothing (or very little) specific to coordinated graphics in the CoordinatedDrawingArea implementation. This patch renames CoordinatedDrawingArea as AcceleratedDrawingArea and makes DrawingAreaImpl inherit from it, so that in case of accelerated compositing the parent class is used, and DrawingAreaImpl only adds the non accelerated code path. * PlatformEfl.cmake: * PlatformGTK.cmake: * WebProcess/WebPage/AcceleratedDrawingArea.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp. (WebKit::AcceleratedDrawingArea::~AcceleratedDrawingArea): (WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea): (WebKit::AcceleratedDrawingArea::setNeedsDisplay): (WebKit::AcceleratedDrawingArea::setNeedsDisplayInRect): (WebKit::AcceleratedDrawingArea::scroll): (WebKit::AcceleratedDrawingArea::pageBackgroundTransparencyChanged): (WebKit::AcceleratedDrawingArea::setLayerTreeStateIsFrozen): (WebKit::AcceleratedDrawingArea::forceRepaint): (WebKit::AcceleratedDrawingArea::forceRepaintAsync): (WebKit::AcceleratedDrawingArea::setPaintingEnabled): (WebKit::AcceleratedDrawingArea::updatePreferences): (WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged): (WebKit::AcceleratedDrawingArea::layerHostDidFlushLayers): (WebKit::AcceleratedDrawingArea::graphicsLayerFactory): (WebKit::AcceleratedDrawingArea::setRootCompositingLayer): (WebKit::AcceleratedDrawingArea::scheduleCompositingLayerFlush): (WebKit::AcceleratedDrawingArea::scheduleCompositingLayerFlushImmediately): (WebKit::AcceleratedDrawingArea::updateBackingStoreState): (WebKit::AcceleratedDrawingArea::sendDidUpdateBackingStoreState): (WebKit::AcceleratedDrawingArea::suspendPainting): (WebKit::AcceleratedDrawingArea::resumePainting): (WebKit::AcceleratedDrawingArea::enterAcceleratedCompositingMode): (WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeSoon): (WebKit::AcceleratedDrawingArea::didReceiveCoordinatedLayerTreeHostMessage): (WebKit::AcceleratedDrawingArea::viewStateDidChange): (WebKit::AcceleratedDrawingArea::attachViewOverlayGraphicsLayer): * WebProcess/WebPage/AcceleratedDrawingArea.h: Renamed from Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h. (WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModePending): (WebKit::AcceleratedDrawingArea::didUpdateBackingStoreState): (WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingMode): * WebProcess/WebPage/DrawingArea.cpp: (WebKit::DrawingArea::create): * WebProcess/WebPage/DrawingAreaImpl.cpp: (WebKit::DrawingAreaImpl::DrawingAreaImpl): (WebKit::DrawingAreaImpl::setNeedsDisplay): (WebKit::DrawingAreaImpl::setNeedsDisplayInRect): (WebKit::DrawingAreaImpl::scroll): (WebKit::DrawingAreaImpl::forceRepaint): (WebKit::DrawingAreaImpl::setRootCompositingLayer): (WebKit::DrawingAreaImpl::updateBackingStoreState): (WebKit::DrawingAreaImpl::didUpdateBackingStoreState): (WebKit::DrawingAreaImpl::sendDidUpdateBackingStoreState): (WebKit::DrawingAreaImpl::suspendPainting): (WebKit::DrawingAreaImpl::enterAcceleratedCompositingMode): (WebKit::DrawingAreaImpl::~DrawingAreaImpl): Deleted. (WebKit::DrawingAreaImpl::mainFrameContentSizeChanged): Deleted. (WebKit::DrawingAreaImpl::updatePreferences): Deleted. (WebKit::DrawingAreaImpl::didUpdate): Deleted. (WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode): Deleted. (WebKit::DrawingAreaImpl::scheduleDisplay): Deleted. (WebKit::DrawingAreaImpl::displayTimerFired): Deleted. (WebKit::DrawingAreaImpl::display): Deleted. (WebKit::shouldPaintBoundsRect): Deleted. (WebKit::DrawingAreaImpl::setNativeSurfaceHandleForCompositing): Deleted. * WebProcess/WebPage/DrawingAreaImpl.h: 2016-07-06 Youenn Fablet <youenn@apple.com> Refactor NetworkResourceLoadParameters https://bugs.webkit.org/show_bug.cgi?id=159402 Reviewed by Alex Christensen. Making NetworkResourceLoadParameters derive from NetworkLoadParameters. * CMakeLists.txt: Removed NetworkLoadParameters.cpp * NetworkProcess/NetworkLoadParameters.cpp: Deleted. * NetworkProcess/NetworkLoadParameters.h: * NetworkProcess/NetworkResourceLoadParameters.cpp: (WebKit::NetworkResourceLoadParameters::NetworkResourceLoadParameters): Deleted. * NetworkProcess/NetworkResourceLoadParameters.h: Making it derive from NetworkLoadParameters. * WebKit2.xcodeproj/project.pbxproj: 2016-07-05 Alex Christensen <achristensen@webkit.org> Actually persist changes to cookie accept policy. https://bugs.webkit.org/show_bug.cgi?id=159377 <rdar://problem/22774152> Reviewed by Alexey Proskuryakov. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSession::NetworkSession): Added logging. * UIProcess/mac/WebCookieManagerProxyMac.mm: (WebKit::WebCookieManagerProxy::persistHTTPCookieAcceptPolicy): When we persist the cookie accept policy, we want to call _saveCookies to actually write the change to disk so that when we create a new process which reads from disk to determine its cookie accept policy, it will read the new cookie accept policy. Before this patch it was reading the old one in some cases where the changes had not yet been persisted to disk. 2016-07-04 Carlos Garcia Campos <cgarcia@igalia.com> [Coordinated Graphics] Modernize and cleanup CompositingCoordinator https://bugs.webkit.org/show_bug.cgi?id=159212 Reviewed by Žan Doberšek. Changes done: - Use references instead of pointers when possible. - Add missing final/override keywords. - Reduce the use of PassRefPtr - Move member initializations to the declaration. - Use nullptr instead of 0. - Use HashMap::ensure() instead of complicated code with iterators. - Avoid heap allocation when possible. * Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp: (WebKit::WebCoordinatedSurface::paintToSurface): * Shared/CoordinatedGraphics/WebCoordinatedSurface.h: * Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp: (WebKit::ThreadSafeCoordinatedSurface::paintToSurface): * Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.h: * WebProcess/WebPage/CoordinatedGraphics/AreaAllocator.cpp: (WebKit::GeneralAreaAllocator::expand): (WebKit::GeneralAreaAllocator::splitNode): (WebKit::GeneralAreaAllocator::release): (WebKit::GeneralAreaAllocator::GeneralAreaAllocator): Deleted. * WebProcess/WebPage/CoordinatedGraphics/AreaAllocator.h: * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp: (WebKit::CompositingCoordinator::CompositingCoordinator): (WebKit::CompositingCoordinator::flushPendingLayerChanges): (WebKit::CompositingCoordinator::createImageBackingIfNeeded): (WebKit::CompositingCoordinator::updateImageBacking): (WebKit::CompositingCoordinator::notifyFlushRequired): (WebKit::CompositingCoordinator::paintContents): (WebKit::CompositingCoordinator::createUpdateAtlas): (WebKit::CompositingCoordinator::commitScrollOffset): (WebKit::CompositingCoordinator::paintToSurface): * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h: * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp: (WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost): (WebKit::CoordinatedLayerTreeHost::setViewOverlayRootLayer): (WebKit::CoordinatedLayerTreeHost::setRootCompositingLayer): (WebKit::CoordinatedLayerTreeHost::invalidate): (WebKit::CoordinatedLayerTreeHost::forceRepaint): (WebKit::CoordinatedLayerTreeHost::sizeDidChange): (WebKit::CoordinatedLayerTreeHost::setVisibleContentsRect): (WebKit::CoordinatedLayerTreeHost::renderNextFrame): (WebKit::CoordinatedLayerTreeHost::purgeBackingStores): (WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired): (WebKit::CoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged): (WebKit::CoordinatedLayerTreeHost::graphicsLayerFactory): (WebKit::CoordinatedLayerTreeHost::scheduleAnimation): (WebKit::CoordinatedLayerTreeHost::commitScrollOffset): * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h: * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.cpp: (WebKit::UpdateAtlas::UpdateAtlas): (WebKit::UpdateAtlas::~UpdateAtlas): (WebKit::UpdateAtlas::buildLayoutIfNeeded): (WebKit::UpdateAtlas::paintOnAvailableBuffer): (WebKit::UpdateAtlasSurfaceClient::UpdateAtlasSurfaceClient): Deleted. * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.h: 2016-07-04 Brady Eidson <beidson@apple.com> WebProcesses don't handle DatabaseProcess going away uncleanly.. https://bugs.webkit.org/show_bug.cgi?id=159371 Reviewed by Alex Christensen. * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::terminateDatabaseProcess): Deleted. * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::connectionToServerLost): * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: * WebProcess/Databases/WebToDatabaseProcessConnection.cpp: (WebKit::WebToDatabaseProcessConnection::didReceiveMessage): (WebKit::WebToDatabaseProcessConnection::didClose): Notify each connection that the database server connection dropped. 2016-07-04 Fujii Hironori <Hironori.Fujii@sony.com> [GTK] Null WebCore::Range dereference in WebEditorClient::updateGlobalSelection https://bugs.webkit.org/show_bug.cgi?id=159341 Reviewed by Carlos Garcia Campos. FrameSelection::toNormalizedRange() can return null. Null check is needed. Tests: editing/input/set-value-on-input-and-delete.html editing/selection/selection-in-iframe-removed-crash.html imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-after-content-change.html imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application.html * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp: (WebKit::WebEditorClient::updateGlobalSelection): Do not update global selection if FrameSelection::toNormalizedRange() returns null. 2016-07-04 Fujii Hironori <Hironori.Fujii@sony.com> [GTK] ASSERTION_FAILED: m_key != PTHREAD_KEYS_MAX when defining WEBKIT2_PAUSE_WEB_PROCESS_ON_LAUNCH https://bugs.webkit.org/show_bug.cgi?id=158149 Reviewed by Carlos Garcia Campos. WTF::sleep can not be used at the beginning of web process because WTF is not initialized at the moment yet. * WebProcess/gtk/WebProcessMainGtk.cpp: Use g_usleep instead of WTF::sleep. 2016-07-03 Dan Bernstein <mitz@apple.com> Follow-up to r202789. Reviewed by Sam Weinig. Ensure that API that isn’t available at all on a platform is declared under an appropriate TARGET_OS_* conditional. * Shared/API/Cocoa/_WKHitTestResult.h: * Shared/API/Cocoa/_WKHitTestResult.mm: * Shared/API/Cocoa/_WKHitTestResultInternal.h: * UIProcess/API/Cocoa/WKOpenPanelParameters.h: * UIProcess/API/Cocoa/WKOpenPanelParameters.mm: * UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h: * UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.h: * UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.mm: * UIProcess/API/Cocoa/WKWebViewPrivate.h: 2016-07-03 Dan Bernstein <mitz@apple.com> [Cocoa] Adopt modern API availability macros https://bugs.webkit.org/show_bug.cgi?id=159378 Reviewed by Sam Weinig. iOS 10 and macOS Sierra introduce new macros for declaring API availability, defined in CFAvailability.h, including API_AVAILABLE, API_DEPRECATED, and API_DEPRECATED_WITH_REPLACEMENT. Rather than having positional parameters for macOS and iOS versions, the new macros take a variable number of function-like parameters, where the function specifies the platform to which it applies. To have WebKit2’s postprocessed headers use the new macros, we make the following changes: - Replace instances of WK_AVAILABLE(_mac, _ios) with WK_API_AVAILABLE(macosx(_mac), ios(_ios)), eliding a platform if its current availability is NA. - Change instances of WK_CLASS_AVAILABLE(_mac, _ios) to WK_CLASS_AVAILABLE(macosx(_mac), ios(_ios)), eliding a platform if its current availability is NA. - Replace instances of WK_DEPRECATED(_macIntro, _macDep, _iosIntro, _iosDep, ...) with WK_API_DEPRECATED_WITH_REPLACEMENT(_replacement, macosx(_macIntro, _macDep), ios(_iosIntro, _iosDep)) when there is a one-for-one replacement, and with WK_API_DEPRECATED(_message, macosx(_macIntro, _macDep), ios(_iosIntro, _iosDep)) when the replacement isn’t one-for-one. Again, if the API doesn’t apply to a platform, then it’s elided. - Replace instances of WK_CLASS_DEPRECATED with WK_CLASS_DEPRECATED_WITH_REPLACEMENT, following the same rules. - Replace instances of the WK_ENUM_* macros with corresponding WK_API_* macros, now that all supported compilers support availability attributes on enum values. * Configurations/WebKit.xcconfig: Disable header postprocessing when building for iOS 9.x, which doesn’t have the new macros. * mac/postprocess-framework-headers.sh: Handle the new WK_* macros: WK_API_AVAILABLE becomes API_AVAILABLE; WK_API_DEPRECATED(_WITH_REPLACEMENT) become API_DEPRECATED(_WITH_REPLACEMENT); WK_CLASS_AVAILABLE and WK_CLASS_DEPRECATED(_WITH_REPLACEMENT) change to the corresponding API_ macros, prefixed with WK_EXTERN. * Shared/API/Cocoa/WKFoundation.h: When header postprocessing is disabled, provide definitions of the new WK_* macros we use. * UIProcess/API/Cocoa/WKWebViewConfiguration.h: In addition to the above, changed one instance of (iOS) 10_0 to WK_IOS_TBA. Made the above changes in the following headers: * Shared/API/Cocoa/WKBrowsingContextHandle.h: * Shared/API/Cocoa/_WKFrameHandle.h: * Shared/API/Cocoa/_WKHitTestResult.h: * Shared/API/Cocoa/_WKRemoteObjectInterface.h: * Shared/API/Cocoa/_WKRemoteObjectRegistry.h: * Shared/API/Cocoa/_WKRenderingProgressEvents.h: * Shared/API/Cocoa/_WKSameDocumentNavigationType.h: * UIProcess/API/Cocoa/WKBackForwardList.h: * UIProcess/API/Cocoa/WKBackForwardListItem.h: * UIProcess/API/Cocoa/WKBrowsingContextController.h: * UIProcess/API/Cocoa/WKBrowsingContextGroup.h: * UIProcess/API/Cocoa/WKConnection.h: * UIProcess/API/Cocoa/WKError.h: * UIProcess/API/Cocoa/WKErrorPrivate.h: * UIProcess/API/Cocoa/WKFrameInfo.h: * UIProcess/API/Cocoa/WKFrameInfoPrivate.h: * UIProcess/API/Cocoa/WKMenuItemIdentifiersPrivate.h: * UIProcess/API/Cocoa/WKNavigation.h: * UIProcess/API/Cocoa/WKNavigationAction.h: * UIProcess/API/Cocoa/WKNavigationActionPrivate.h: * UIProcess/API/Cocoa/WKNavigationData.h: * UIProcess/API/Cocoa/WKNavigationDelegate.h: * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: * UIProcess/API/Cocoa/WKNavigationResponse.h: * UIProcess/API/Cocoa/WKOpenPanelParameters.h: * UIProcess/API/Cocoa/WKPreferences.h: * UIProcess/API/Cocoa/WKPreferencesPrivate.h: * UIProcess/API/Cocoa/WKPreviewActionItem.h: * UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.h: * UIProcess/API/Cocoa/WKPreviewElementInfo.h: * UIProcess/API/Cocoa/WKProcessGroup.h: * UIProcess/API/Cocoa/WKProcessPool.h: * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: * UIProcess/API/Cocoa/WKScriptMessage.h: * UIProcess/API/Cocoa/WKSecurityOrigin.h: * UIProcess/API/Cocoa/WKTypeRefWrapper.h: * UIProcess/API/Cocoa/WKUIDelegate.h: * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: * UIProcess/API/Cocoa/WKUserContentController.h: * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h: * UIProcess/API/Cocoa/WKUserScript.h: * UIProcess/API/Cocoa/WKUserScriptPrivate.h: * UIProcess/API/Cocoa/WKViewPrivate.h: * UIProcess/API/Cocoa/WKWebView.h: * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/API/Cocoa/WKWebsiteDataRecord.h: * UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h: * UIProcess/API/Cocoa/WKWebsiteDataStore.h: * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: * UIProcess/API/Cocoa/WKWindowFeatures.h: * UIProcess/API/Cocoa/_WKActivatedElementInfo.h: * UIProcess/API/Cocoa/_WKAutomationSession.h: * UIProcess/API/Cocoa/_WKContextMenuElementInfo.h: * UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h: * UIProcess/API/Cocoa/_WKDownload.h: * UIProcess/API/Cocoa/_WKElementAction.h: * UIProcess/API/Cocoa/_WKExperimentalFeature.h: * UIProcess/API/Cocoa/_WKFindOptions.h: * UIProcess/API/Cocoa/_WKFormInputSession.h: * UIProcess/API/Cocoa/_WKInputDelegate.h: * UIProcess/API/Cocoa/_WKLayoutMode.h: * UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h: * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: * UIProcess/API/Cocoa/_WKSessionState.h: * UIProcess/API/Cocoa/_WKThumbnailView.h: * UIProcess/API/Cocoa/_WKUserContentExtensionStore.h: * UIProcess/API/Cocoa/_WKUserContentFilter.h: * UIProcess/API/Cocoa/_WKUserContentWorld.h: * UIProcess/API/Cocoa/_WKUserStyleSheet.h: * UIProcess/API/Cocoa/_WKVisitedLinkProvider.h: * UIProcess/API/Cocoa/_WKVisitedLinkStore.h: * UIProcess/API/Cocoa/_WKWebsiteDataRecord.h: * UIProcess/API/Cocoa/_WKWebsiteDataSize.h: * UIProcess/API/Cocoa/_WKWebsiteDataStore.h: * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFormDelegatePrivate.h: * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h: * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h: * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.h: * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h: * WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: * WebProcess/InjectedBundle/API/mac/WKDOMElement.h: * WebProcess/InjectedBundle/API/mac/WKDOMNode.h: * WebProcess/InjectedBundle/API/mac/WKDOMRange.h: * WebProcess/InjectedBundle/API/mac/WKDOMText.h: * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.h: * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h: * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h: 2016-07-01 Hunseop Jeong <hs85.jeong@samsung.com> [EFL] Many layout tests are timeout after r202532. https://bugs.webkit.org/show_bug.cgi?id=159337 Reviewed by Gyuyoung Kim. WebPageProxy::forceRepaint() wait for the next commit from the web process after r202532, but WebPageProxy::callAfterNextPresentationUpdate() is not implemented in CoordinatedDrawingAreaProxy. * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.cpp: (WebKit::CoordinatedDrawingAreaProxy::contentsRect): (WebKit::CoordinatedDrawingAreaProxy::dispatchAfterEnsuringDrawing): (WebKit::CoordinatedDrawingAreaProxy::sizeDidChange): * UIProcess/CoordinatedGraphics/CoordinatedDrawingAreaProxy.h: (WebKit::CoordinatedDrawingAreaProxy::page): 2016-07-01 Myles C. Maxfield <mmaxfield@apple.com> REGRESSION(r189668): Notification tests are flakey https://bugs.webkit.org/show_bug.cgi?id=159375 <rdar://problem/22760990> Reviewed by Alexey Proskuryakov. Implement WKNotificationManagerGetLocalID(). For more information, see the entry in Tools/ChangeLog. * UIProcess/API/C/WKNotificationManager.cpp: (WKNotificationManagerGetLocalID): * UIProcess/Notifications/WebNotificationManagerProxy.cpp: (WebKit::WebNotificationManagerProxy::notificationLocalIDForTesting): * UIProcess/Notifications/WebNotificationManagerProxy.h: * WebKit2.xcodeproj/project.pbxproj: 2016-07-01 Jer Noble <jer.noble@apple.com> REGRESSION(r201405): Fullscreen video no longer enters low-power mode https://bugs.webkit.org/show_bug.cgi?id=159220 <rdar://problem/26701056> Reviewed by Beth Dakin. In r201405, we removed the call to setTopContentInset(0) to avoid a flash during repainting where the WebProcess still thought it had an inset and the UIProcess did not, but the >0 inset breaks low power video playback in fullscreen. So, instead, fix the repaint issue by setting a CALayer fence which makes sure both the UIProcess and WebProcess paint simultaneously after resizing and changing the top content inset. This requires a new message from WebPageProxy -> WebPage: setTopContentInsetFenced(). * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setTopContentInset): * UIProcess/mac/WKFullScreenWindowController.h: * UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController enterFullScreen:]): (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::setTopContentInsetFenced): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: 2016-07-01 Dan Bernstein <mitz@apple.com> [Mac] Get rid of support for old SDKs https://bugs.webkit.org/show_bug.cgi?id=159369 Reviewed by Anders Carlsson. * Shared/API/Cocoa/WKFoundation.h: Removed the WK_ARRAY, WK_DICTIONARY, and WK_SET macros, which were only needed for pre-10.11 SDKs. * Shared/mac/WebEventFactory.mm: (WebKit::mouseButtonForEvent): Removed checking for pre-10.10.3 SDKs. (WebKit::globalPointForEvent): Ditto. (WebKit::pointForEvent): Ditto. (WebKit::WebEventFactory::createWebMouseEvent): Ditto. * UIProcess/API/Cocoa/WKBackForwardList.h: Replaced WK_ARRAY(...) with NSArray<...>. * UIProcess/API/Cocoa/WKPreferences.mm: Ditto. (-[WKPreferences _setFixedPitchFontFamily:]): (+[WKPreferences _experimentalFeatures]): * UIProcess/API/Cocoa/WKPreferencesPrivate.h: Ditto. * UIProcess/API/Cocoa/WKUIDelegate.h: Ditto. * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Ditto. * UIProcess/API/Cocoa/WKUserContentController.h: Ditto. * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h: Ditto. * UIProcess/API/Cocoa/WKUserScriptPrivate.h: Ditto. * UIProcess/API/Cocoa/WKWebsiteDataRecord.h: Replaced WK_SET(...) with NSSet<...>. * UIProcess/API/Cocoa/WKWebsiteDataStore.h: Ditto. * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: Ditto. (-[WKWebsiteDataStore fetchDataRecordsOfTypes:completionHandler:]): (-[WKWebsiteDataStore _fetchDataRecordsOfTypes:withOptions:completionHandler:]): * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: Ditto. * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: Replaced WK_ARRAY(...) with NSArray<...>. * UIProcess/API/Cocoa/_WKUserStyleSheet.h: Ditto. * UIProcess/API/Cocoa/_WKUserStyleSheet.mm: Ditto. (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:]): (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:userContentWorld:]): (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]): * UIProcess/API/Cocoa/_WKWebsiteDataSize.h: Replaced WK_SET(...) with NSSet<...>. * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::pressureChangeWithEvent): Removed checking for pre-10.10.3 SDKs. * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: Replaced WK_ARRAY(...) with NSArray<...>. * mac/postprocess-framework-headers.sh: Removed sed rules for WK_ARRAY, WK_DICTIONARY and WK_SET. 2016-07-01 Chris Dumez <cdumez@apple.com> [iOS] Possible null Range dereference under computeAutocorrectionContext() https://bugs.webkit.org/show_bug.cgi?id=159328 <rdar://problem/26766720> Reviewed by Benjamin Poulain. The code in computeAutocorrectionContext() was checking Editor::hasComposition() before dereferencing Editor::compositionRange(). However, compositionRange() can also return null in other cases (e.g. compositionStart == compositionEnd). Drop the check for hasComposition() and do a null check on the value returned by compositionRange() instead. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::computeAutocorrectionContext): 2016-07-01 Brent Fulgham <bfulgham@apple.com> Prevent crash when attempting to copy an image https://bugs.webkit.org/show_bug.cgi?id=159288 <rdar://problem/23507828> Reviewed by Brady Eidson. WebKit could crash if the HTMLImageElement had a null cachedImage member. A little investigation showed that the URL we retrieve from the cachedImage is never used, so rather than adding a null check, let's just pass a default argument. The actual URL gets read from elsewhere in the pasteboard processing code. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::performActionOnElement): Don't bother passing the unused URL argument to the pasteboard method. 2016-07-01 Brady Eidson <beidson@apple.com> Blob content type not preserved when retrieving blobs from IndexedDB. <rdar://problem/27057357> and https://bugs.webkit.org/show_bug.cgi?id=159360 Reviewed by Alex Christensen. * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp: (WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked): * NetworkProcess/FileAPI/NetworkBlobRegistry.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked): * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * WebProcess/FileAPI/BlobRegistryProxy.cpp: (WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked): * WebProcess/FileAPI/BlobRegistryProxy.h: 2016-07-01 Dan Bernstein <mitz@apple.com> [Cocoa] Get rid of WK_NULLABLE_SPECIFIER now that all supported compilers understand _Nullable https://bugs.webkit.org/show_bug.cgi?id=159361 Reviewed by Anders Carlsson. * Shared/API/Cocoa/WKFoundation.h: * UIProcess/API/Cocoa/WKNavigationDelegate.h: * UIProcess/API/Cocoa/WKUIDelegate.h: * UIProcess/API/Cocoa/WKWebView.h: * mac/postprocess-framework-headers.sh: 2016-07-01 Youenn Fablet <youennf@gmail.com> Add a runtime flag for DOM iterators https://bugs.webkit.org/show_bug.cgi?id=159300 Reviewed by Alex Christensen. * Shared/WebPreferencesDefinitions.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-07-01 Andreas Kling <akling@apple.com> [Mac] Get rid of the old timey rubber-banding linen pattern. <https://webkit.org/b/159329> Reviewed by Benjamin Poulain. * Shared/mac/RemoteLayerTreePropertyApplier.mm: (WebKit::updateCustomAppearance): 2016-06-30 Tina Liu <iting_liu@apple.com> Add SPI to allow restoring session state without navigation in WKPage https://bugs.webkit.org/show_bug.cgi?id=159326 Reviewed by Brady Eidson. * UIProcess/API/C/WKPage.cpp: (restoreFromSessionState): Added a helper function that takes a bool parameter to specify whether to navigate or not when restoring from the session state. (WKPageRestoreFromSessionState): Calling restoreFromSessionState, passing navigate = true. (WKPageRestoreFromSessionStateWithoutNavigation): Ditto but passing navigate = false. * UIProcess/API/C/WKPagePrivate.h: 2016-06-30 Chris Dumez <cdumez@apple.com> [iOS] WebContent processes do not exit promptly https://bugs.webkit.org/show_bug.cgi?id=159301 <rdar://problem/26965488> Reviewed by Anders Carlsson. WebContent processes do not exit promptly, they hang around for 10 seconds until the watchdog forcefully calls exit(). This patch addresses the issue by asking XPC to exit when clean. It also fixes 2 XPC transactions that were leaking so that XPC can become clean. * DatabaseProcess/EntryPoint/mac/XPCService/DatabaseServiceEntryPoint.mm: (DatabaseServiceInitializer): * NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm: (NetworkServiceInitializer): * PluginProcess/EntryPoint/mac/XPCService/PluginServiceEntryPoint.mm: (PluginServiceInitializer): * WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm: (WebContentServiceInitializer): Add extra priorityBoostMessage parameter which is then passed along to ChildProcess via initialization parameters. ChildProcess is now in charge of retaining the message for as long as it needs the priority boost. In particular, ChildProcess now takes care of releasing the boost message before existing to avoid leaking an XPC transaction. * Shared/ChildProcess.cpp: (WebKit::ChildProcess::initialize): Retain priorityBoostMessage as a data member. (WebKit::ChildProcess::stopRunLoop): (WebKit::ChildProcess::platformStopRunLoop): * Shared/ios/ChildProcessIOS.mm: (WebKit::ChildProcess::platformStopRunLoop): On iOS, call XPCServiceExit() to exit instead of RunLoop::main().stop() which did not work. * Shared/ChildProcess.h: * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h: (WebKit::XPCServiceInitializer): Set priorityBoostMessage on ChildProcessInitializationParameters. * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm: (WebKit::XPCServiceExit): Add XPCServiceExit() function which destroys the priority boost message, calls xpc_transaction_end() to balance the xpc_transaction_begin() in XPCServiceInitializer() and then call xpc_transaction_exit_clean() to ask XPC to exit when clean. * Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm: (WebKit::XPCServiceEventHandler): Leaking the "pre-bootstrap" event for priority boosting would cause us to leak an XPC transaction, which would prevent XPC from becoming clean and exiting. Instead, we now pass it along to the initialization function. We then pass it to ChildProcess which manages the lifetime of this message instead of leaking it. 2016-06-30 Brian Burg <bburg@apple.com> REGRESSION(r202329): WebInspectorProxy's WKPagePolicyClient callbacks are not being called https://bugs.webkit.org/show_bug.cgi?id=159308 <rdar://problem/27111764> Reviewed by Tim Horton. Adopt WKPageNavigationClient and ditch WKPolicyClient and WKPageLoaderClient. After r202329, it's not possible to set a WKPolicyClient for a WKPage/WebPageProxy that backs a WKWebView. * UIProcess/WebInspectorProxy.cpp: (WebKit::isMainOrTestInspectorPage): Take a WebCore::ResourceRequest. (WebKit::processDidCrash): Deleted. (WebKit::webProcessDidCrash): Rename to match new client callback name. (WebKit::decidePolicyForNavigationAction): Rework this to take new argument types. (WebKit::WebInspectorProxy::eagerlyCreateInspectorPage): Install a WKPageNavigationClient. 2016-06-30 Chris Dumez <cdumez@apple.com> [iOS] Process suspension is prevented for 30 seconds after closing a tab https://bugs.webkit.org/show_bug.cgi?id=159280 <rdar://problem/27014867> Reviewed by Gavin Barraclough. When closing a tab, ConnectionTerminationWatchdog takes a background assertion on behalf of the WebContent process and only releases it after 30 seconds, allowing for the WebContent process to exit cleanly without worrying about getting suspended too early. However, the child process normally exits much sooner than this and we end up holding a process assertion for no reason for a full 30 seconds anyway. This patch addresses the issue by registering an invalidation handler with the BKSProcessAssertion and releasing our our assertion in such case. The invalidation handler gets called as soon as the child process exits. * Platform/spi/ios/AssertionServicesSPI.h: * UIProcess/ProcessAssertion.cpp: (WebKit::ProcessAssertion::ProcessAssertion): * UIProcess/ProcessAssertion.h: (WebKit::ProcessAssertion::ProcessAssertion): (WebKit::ProcessAssertion::validity): * UIProcess/ios/ProcessAssertionIOS.mm: (WebKit::ProcessAssertion::ProcessAssertion): (WebKit::ProcessAssertion::~ProcessAssertion): (WebKit::ProcessAndUIAssertion::updateRunInBackgroundCount): (WebKit::ProcessAndUIAssertion::ProcessAndUIAssertion): (WebKit::ProcessAssertion::setState): Deleted. 2016-06-30 Tim Horton <timothy_horton@apple.com> Keep track of when a WKWebView is blank before the initial non-empty layout https://bugs.webkit.org/show_bug.cgi?id=159217 <rdar://problem/26071766> Reviewed by Beth Dakin. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView _setIsBlankBeforeFirstNonEmptyLayout:]): (-[WKWebView _didFirstVisuallyNonEmptyLayoutForMainFrame]): * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::didFirstVisuallyNonEmptyLayoutForMainFrame): 2016-06-29 Gavin Barraclough <barraclough@apple.com> Cleanup ProcessAssertion RunInBackground management https://bugs.webkit.org/show_bug.cgi?id=159284 Reviewed by Chris Dumez. Factor out code that handles taking a background assertion on the UI app into ProcessAndUIAssertion::updateRunInBackgroundCount helper. This patch just cleanup to enable a futher fix. * UIProcess/ProcessAssertion.h: (WebKit::ProcessAssertion::state): - Added ProcessAndUIAssertion::updateRunInBackgroundCount - Added ProcessAndUIAssertion::m_isHoldingBackgroundAssertionOnApp * UIProcess/ios/ProcessAssertionIOS.mm: (WebKit::ProcessAndUIAssertion::updateRunInBackgroundCount): - helper to manage calls to incrementNeedsToRunInBackgroundCount/decrementNeedsToRunInBackgroundCount (WebKit::ProcessAndUIAssertion::ProcessAndUIAssertion): - call updateRunInBackgroundCount (WebKit::ProcessAndUIAssertion::~ProcessAndUIAssertion): changed to use m_isHoldingBackgroundAssertionOnApp (WebKit::ProcessAndUIAssertion::setState): - call updateRunInBackgroundCount 2016-06-30 Carlos Garcia Campos <cgarcia@igalia.com> [Coordinated Graphics] Move CompositingCoordinator from platform to WebKit2 layer https://bugs.webkit.org/show_bug.cgi?id=159209 Reviewed by Žan Doberšek. Move CompositingCoordinator and its helper classes to the WebKit2 layer. * PlatformEfl.cmake: * PlatformGTK.cmake: * WebProcess/WebPage/CoordinatedGraphics/AreaAllocator.cpp: Renamed from Source/WebCore/platform/graphics/texmap/coordinated/AreaAllocator.cpp. (WebKit::AreaAllocator::AreaAllocator): (WebKit::AreaAllocator::~AreaAllocator): (WebKit::AreaAllocator::expand): (WebKit::AreaAllocator::expandBy): (WebKit::AreaAllocator::release): (WebKit::AreaAllocator::overhead): (WebKit::AreaAllocator::roundAllocation): (WebKit::GeneralAreaAllocator::GeneralAreaAllocator): (WebKit::GeneralAreaAllocator::~GeneralAreaAllocator): (WebKit::GeneralAreaAllocator::freeNode): (WebKit::GeneralAreaAllocator::expand): (WebKit::fitsWithin): (WebKit::GeneralAreaAllocator::allocate): (WebKit::GeneralAreaAllocator::allocateFromNode): (WebKit::GeneralAreaAllocator::splitNode): (WebKit::GeneralAreaAllocator::updateLargestFree): (WebKit::GeneralAreaAllocator::release): (WebKit::GeneralAreaAllocator::overhead): * WebProcess/WebPage/CoordinatedGraphics/AreaAllocator.h: Renamed from Source/WebCore/platform/graphics/texmap/coordinated/AreaAllocator.h. (WebKit::nextPowerOfTwo): (WebKit::AreaAllocator::size): (WebKit::AreaAllocator::minimumAllocation): (WebKit::AreaAllocator::setMinimumAllocation): (WebKit::AreaAllocator::margin): (WebKit::AreaAllocator::setMargin): * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp: Renamed from Source/WebCore/platform/graphics/texmap/coordinated/CompositingCoordinator.cpp. (WebKit::CompositingCoordinator::CompositingCoordinator): (WebKit::CompositingCoordinator::~CompositingCoordinator): (WebKit::CompositingCoordinator::setRootCompositingLayer): (WebKit::CompositingCoordinator::setViewOverlayRootLayer): (WebKit::CompositingCoordinator::sizeDidChange): (WebKit::CompositingCoordinator::flushPendingLayerChanges): (WebKit::CompositingCoordinator::timestamp): (WebKit::CompositingCoordinator::syncDisplayState): (WebKit::CompositingCoordinator::nextAnimationServiceTime): (WebKit::CompositingCoordinator::clearPendingStateChanges): (WebKit::CompositingCoordinator::initializeRootCompositingLayerIfNeeded): (WebKit::CompositingCoordinator::createRootLayer): (WebKit::CompositingCoordinator::syncLayerState): (WebKit::CompositingCoordinator::createImageBackingIfNeeded): (WebKit::CompositingCoordinator::createImageBacking): (WebKit::CompositingCoordinator::updateImageBacking): (WebKit::CompositingCoordinator::clearImageBackingContents): (WebKit::CompositingCoordinator::removeImageBacking): (WebKit::CompositingCoordinator::flushPendingImageBackingChanges): (WebKit::CompositingCoordinator::notifyAnimationStarted): (WebKit::CompositingCoordinator::notifyFlushRequired): (WebKit::CompositingCoordinator::paintContents): (WebKit::CompositingCoordinator::createGraphicsLayer): (WebKit::CompositingCoordinator::deviceScaleFactor): (WebKit::CompositingCoordinator::pageScaleFactor): (WebKit::CompositingCoordinator::createUpdateAtlas): (WebKit::CompositingCoordinator::removeUpdateAtlas): (WebKit::CompositingCoordinator::visibleContentsRect): (WebKit::CompositingCoordinator::mainContentsLayer): (WebKit::CompositingCoordinator::setVisibleContentsRect): (WebKit::CompositingCoordinator::deviceOrPageScaleFactorChanged): (WebKit::CompositingCoordinator::detachLayer): (WebKit::CompositingCoordinator::commitScrollOffset): (WebKit::CompositingCoordinator::renderNextFrame): (WebKit::CompositingCoordinator::purgeBackingStores): (WebKit::CompositingCoordinator::paintToSurface): (WebKit::CompositingCoordinator::scheduleReleaseInactiveAtlases): (WebKit::CompositingCoordinator::releaseInactiveAtlasesTimerFired): * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h: Renamed from Source/WebCore/platform/graphics/texmap/coordinated/CompositingCoordinator.h. (WebKit::CompositingCoordinator::clearRootLayer): (WebKit::CompositingCoordinator::rootLayer): (WebKit::CompositingCoordinator::state): * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h: * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.cpp: Renamed from Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp. (WebKit::UpdateAtlasSurfaceClient::UpdateAtlasSurfaceClient): (WebKit::UpdateAtlas::UpdateAtlas): (WebKit::UpdateAtlas::~UpdateAtlas): (WebKit::UpdateAtlas::buildLayoutIfNeeded): (WebKit::UpdateAtlas::didSwapBuffers): (WebKit::UpdateAtlas::paintOnAvailableBuffer): * WebProcess/WebPage/CoordinatedGraphics/UpdateAtlas.h: Renamed from Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.h. (WebKit::UpdateAtlas::size): (WebKit::UpdateAtlas::supportsAlpha): (WebKit::UpdateAtlas::addTimeInactive): (WebKit::UpdateAtlas::isInactive): (WebKit::UpdateAtlas::isInUse): 2016-06-29 Hunseop Jeong <hs85.jeong@samsung.com> Unreviewed, CMake build fix. * PlatformMac.cmake: 2016-06-29 Beth Dakin <bdakin@apple.com> Add media_icon to WebKit2 https://bugs.webkit.org/show_bug.cgi?id=159273 -and corresponding- rdar://problem/27087714 Reviewed by Dean Jackson. * Resources/mediaIcon.pdf: Added. * WebKit2.xcodeproj/project.pbxproj: 2016-06-29 Anders Carlsson <andersca@apple.com> Rename addressFields to contactFields https://bugs.webkit.org/show_bug.cgi?id=159271 rdar://problem/27086955 Reviewed by Beth Dakin. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: (IPC::ArgumentCoder<PaymentRequest>::encode): (IPC::ArgumentCoder<PaymentRequest>::decode): (IPC::ArgumentCoder<PaymentRequest::ContactFields>::encode): (IPC::ArgumentCoder<PaymentRequest::ContactFields>::decode): (IPC::ArgumentCoder<PaymentRequest::AddressFields>::encode): Deleted. (IPC::ArgumentCoder<PaymentRequest::AddressFields>::decode): Deleted. * Shared/WebCoreArgumentCoders.h: * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::toPKAddressField): (WebKit::toPKPaymentRequest): 2016-06-29 Jer Noble <jer.noble@apple.com> Adopt MediaRemote. https://bugs.webkit.org/show_bug.cgi?id=159250 Reviewed by Eric Carlson. Add a sandbox exception allowing access to the mediaremoted XPC service. * WebProcess/com.apple.WebProcess.sb.in: 2016-06-29 Alex Christensen <achristensen@webkit.org> WKWebView should ask WKNavigationDelegate about bad ssl certificates https://bugs.webkit.org/show_bug.cgi?id=159176 rdar://problem/26864882 Reviewed by Sam Weinig. This can be tested manually by visiting a site in MiniBrowser that has invalid ssl certificates, but we don't have proper ssl testing yet. Before this change, we would just open the site as if nothing were invalid, now we call the WKNavigationDelegate's didReceiveAuthenticationChallenge like we did before using NSURLSession, and we do not open the page, also like we did before using NSURLSession. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): When using NSURLConnection and responding to canAuthenticateAgainstProtectionSpace with YES, we get an NSURLAuthenticationChallenge when a bad ssl certificate is encountered in the handshake. When using NSURLSession, we want to call webView:didReceiveAuthenticationChallenge:completionHandler: in this case. The default implementation of NavigationState::NavigationClient::canAuthenticateAgainstProtectionSpace returns true if there is an implementation of webView:didReceiveAuthenticationChallenge:completionHandler: in its WKNavigationDelegate. Internal clients can implement _webView:canAuthenticateAgainstProtectionSpace: and Safari uses canHandleHTTPSServerTrustEvaluation, so it will be unaffected. 2016-06-29 Beth Dakin <bdakin@apple.com> Delete WKElementInfo since it's not used https://bugs.webkit.org/show_bug.cgi?id=159265 Reviewed by Sam Weinig. * Shared/API/Cocoa/WebKit.h: * UIProcess/API/Cocoa/WKElementInfo.h: Removed. * UIProcess/API/Cocoa/WKElementInfo.mm: Removed. * UIProcess/API/Cocoa/WKElementInfoInternal.h: Removed. * UIProcess/API/Cocoa/WKPreviewElementInfo.h: * UIProcess/API/Cocoa/WKPreviewElementInfo.mm: (-[WKPreviewElementInfo _initWithLinkURL:]): (-[WKPreviewElementInfo copyWithZone:]): (-[WKPreviewElementInfo linkURL]): * UIProcess/API/Cocoa/WKPreviewElementInfoInternal.h: * UIProcess/API/Cocoa/_WKContextMenuElementInfo.h: * UIProcess/API/Cocoa/_WKContextMenuElementInfo.mm: (-[_WKContextMenuElementInfo copyWithZone:]): * WebKit2.xcodeproj/project.pbxproj: 2016-06-29 Jeremy Jones <jeremyj@apple.com> Replace MPAudioVideoRoutingActionSheet with MPAVRoutingSheet. https://bugs.webkit.org/show_bug.cgi?id=159161 <rdar://problem/26017691> Reviewed by Sam Weinig. MPAudioVideoRoutingActionSheet is being replaced by MPAVRoutingSheet, with only minor changes to the interface. * UIProcess/ios/forms/WKAirPlayRoutePicker.mm: (-[WKAirPlayRoutePicker dealloc]): (-[WKAirPlayRoutePicker showAirPlayPickerIPhone:]): 2016-06-29 Carlos Garcia Campos <cgarcia@igalia.com> Too much duplicated code in LayerTreeHosts implementations https://bugs.webkit.org/show_bug.cgi?id=159144 Reviewed by Žan Doberšek. There's some code common and duplicated in all current LayerTreeHosts implementations (Gtk, Coordinated, and ThreadedCoordinated). The thing is even worse in the case of ThreadedCoordinated and Coordinated, where the former is actually a special case of the later, and it seems like code was copy pasted and then modified to add ThreadedCoordinated specific code. The problem of that approach, apart from the code duplication, is that common parts end up diverging too. This patch moves the common parts to the base class LayerTreeHost and makes ThreadedCoordinatedLayerTreeHost inherit from CoordinatedLayerTreeHost, to share the common code and simply add the specific one. * PlatformGTK.cmake: * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h: * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp: (WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost): (WebKit::CoordinatedLayerTreeHost::scheduleLayerFlush): (WebKit::CoordinatedLayerTreeHost::setViewOverlayRootLayer): (WebKit::CoordinatedLayerTreeHost::setRootCompositingLayer): (WebKit::CoordinatedLayerTreeHost::invalidate): (WebKit::CoordinatedLayerTreeHost::sizeDidChange): (WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired): (WebKit::CoordinatedLayerTreeHost::commitSceneState): (WebKit::CoordinatedLayerTreeHost::createCoordinatedSurface): (WebKit::CoordinatedLayerTreeHost::cancelPendingLayerFlush): Deleted. (WebKit::CoordinatedLayerTreeHost::forceRepaint): Deleted. (WebKit::CoordinatedLayerTreeHost::forceRepaintAsync): Deleted. (WebKit::CoordinatedLayerTreeHost::didFlushRootLayer): Deleted. (WebKit::CoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged): Deleted. (WebKit::CoordinatedLayerTreeHost::pageBackgroundTransparencyChanged): Deleted. (WebKit::CoordinatedLayerTreeHost::graphicsLayerFactory): Deleted. * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h: * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: (WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): (WebKit::ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged): (WebKit::ThreadedCoordinatedLayerTreeHost::sizeDidChange): (WebKit::ThreadedCoordinatedLayerTreeHost::setVisibleContentsRect): (WebKit::ThreadedCoordinatedLayerTreeHost::commitSceneState): (WebKit::ThreadedCoordinatedLayerTreeHost::create): Deleted. (WebKit::ThreadedCoordinatedLayerTreeHost::scrollNonCompositedContents): Deleted. (WebKit::ThreadedCoordinatedLayerTreeHost::contentsSizeChanged): Deleted. (WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewportProperties): Deleted. (WebKit::ThreadedCoordinatedLayerTreeHost::didScaleFactorChanged): Deleted. (WebKit::ThreadedCoordinatedLayerTreeHost::setNativeSurfaceHandleForCompositing): Deleted. * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: * WebProcess/WebPage/DrawingArea.h: (WebKit::DrawingArea::layerHostDidFlushLayers): * WebProcess/WebPage/DrawingAreaImpl.h: * WebProcess/WebPage/LayerTreeHost.cpp: (WebKit::LayerTreeHost::~LayerTreeHost): (WebKit::LayerTreeHost::setLayerFlushSchedulingEnabled): (WebKit::LayerTreeHost::pauseRendering): (WebKit::LayerTreeHost::resumeRendering): (WebKit::LayerTreeHost::invalidate): * WebProcess/WebPage/LayerTreeHost.h: (WebKit::LayerTreeHost::layerTreeContext): (WebKit::LayerTreeHost::setShouldNotifyAfterNextScheduledLayerFlush): (WebKit::LayerTreeHost::setNonCompositedContentsNeedDisplay): (WebKit::LayerTreeHost::setNonCompositedContentsNeedDisplayInRect): (WebKit::LayerTreeHost::scrollNonCompositedContents): (WebKit::LayerTreeHost::graphicsLayerFactory): (WebKit::LayerTreeHost::contentsSizeChanged): (WebKit::LayerTreeHost::didChangeViewportProperties): (WebKit::LayerTreeHost::setNativeSurfaceHandleForCompositing): (WebKit::LayerTreeHost::setViewOverlayRootLayer): (WebKit::LayerTreeHost::forceRepaintAsync): Deleted. * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: (WebKit::LayerTreeHostGtk::invalidate): (WebKit::LayerTreeHostGtk::setViewOverlayRootLayer): (WebKit::LayerTreeHostGtk::LayerTreeHostGtk): Deleted. (WebKit::LayerTreeHostGtk::setRootCompositingLayer): Deleted. (WebKit::LayerTreeHostGtk::setNonCompositedContentsNeedDisplay): Deleted. (WebKit::LayerTreeHostGtk::scrollNonCompositedContents): Deleted. (WebKit::LayerTreeHostGtk::setNativeSurfaceHandleForCompositing): Deleted. * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: 2016-06-28 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r202586 and r202595. https://bugs.webkit.org/show_bug.cgi?id=159247 These changes broke the iOS build (Requested by ryanhaddad on #webkit). Reverted changesets: "Keep track of when a WKWebView is blank before the initial non-empty layout" https://bugs.webkit.org/show_bug.cgi?id=159217 http://trac.webkit.org/changeset/202586 "Try to fix the build." http://trac.webkit.org/changeset/202595 2016-06-28 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r202580. https://bugs.webkit.org/show_bug.cgi?id=159245 Caused all WKTR tests to fail on GuardMalloc and Production only for unknown reasons, investigating offline. (Requested by brrian on #webkit). Reverted changeset: "RunLoop::Timer should use constructor templates instead of class templates" https://bugs.webkit.org/show_bug.cgi?id=159153 http://trac.webkit.org/changeset/202580 2016-06-28 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r202598. https://bugs.webkit.org/show_bug.cgi?id=159244 broke the build. (Requested by keith_miller on #webkit). Reverted changeset: "Try to fix the build." http://trac.webkit.org/changeset/202598 2016-06-28 Tim Horton <timothy_horton@apple.com> Try to fix the build. * UIProcess/API/Cocoa/WKWebView.mm: (convertSystemLayoutDirection): (-[WKWebView _setIsBlankBeforeFirstNonEmptyLayout:]): (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewInternal.h: 2016-06-28 Tim Horton <timothy_horton@apple.com> Try to fix the build. * UIProcess/API/Cocoa/WKWebView.mm: * UIProcess/API/Cocoa/WKWebViewInternal.h: 2016-06-28 Tim Horton <timothy_horton@apple.com> Keep track of when a WKWebView is blank before the initial non-empty layout https://bugs.webkit.org/show_bug.cgi?id=159217 <rdar://problem/26071766> Reviewed by Beth Dakin. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView _setIsBlankBeforeFirstNonEmptyLayout:]): (-[WKWebView _didFirstVisuallyNonEmptyLayoutForMainFrame]): * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::didFirstVisuallyNonEmptyLayoutForMainFrame): 2016-06-28 Anders Carlsson <andersca@apple.com> PaymentMerchantSession should wrap a PKPaymentMerchantSession https://bugs.webkit.org/show_bug.cgi?id=159218 rdar://problem/26872118 Reviewed by Tim Horton. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::encode): (IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::decode): Use NSCoder. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: PaymentMerchantSession is now a class. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in: PaymentMerchantSession is now a class. * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::WebPaymentCoordinatorProxy::platformCompleteMerchantValidation): Just get the underlying PKPaymentMerchantSession from the PaymentMerchantSession object. (WebKit::toPKPaymentMerchantSession): Deleted. 2016-06-28 Brian Burg <bburg@apple.com> RunLoop::Timer should use constructor templates instead of class templates https://bugs.webkit.org/show_bug.cgi?id=159153 Reviewed by Alex Christensen. Remove the RunLoop::Timer class template argument, and pass its constructor a reference to `this` instead of a pointer to `this`. * NetworkProcess/Downloads/soup/DownloadSoup.cpp: * Platform/IPC/mac/ConnectionMac.mm: (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog): * PluginProcess/PluginControllerProxy.cpp: (WebKit::PluginControllerProxy::PluginControllerProxy): * PluginProcess/PluginControllerProxy.h: * PluginProcess/PluginProcess.cpp: (WebKit::PluginProcess::PluginProcess): * PluginProcess/PluginProcess.h: * Shared/ChildProcess.cpp: (WebKit::ChildProcess::ChildProcess): * Shared/ChildProcess.h: * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h: * UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm: (API::SharedJSContext::SharedJSContext): * UIProcess/API/gtk/WebKitWebViewBase.cpp: (_WebKitWebViewBasePrivate::_WebKitWebViewBasePrivate): * UIProcess/DrawingAreaProxy.cpp: (WebKit::DrawingAreaProxy::DrawingAreaProxy): * UIProcess/DrawingAreaProxy.h: * UIProcess/DrawingAreaProxyImpl.cpp: (WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl): * UIProcess/DrawingAreaProxyImpl.h: * UIProcess/Plugins/gtk/PluginInfoCache.cpp: (WebKit::PluginInfoCache::PluginInfoCache): * UIProcess/Plugins/gtk/PluginInfoCache.h: * UIProcess/ProcessThrottler.cpp: (WebKit::ProcessThrottler::ProcessThrottler): * UIProcess/ProcessThrottler.h: * UIProcess/ResponsivenessTimer.cpp: (WebKit::ResponsivenessTimer::ResponsivenessTimer): * UIProcess/ResponsivenessTimer.h: * UIProcess/ViewGestureController.cpp: (WebKit::ViewGestureController::ViewGestureController): (WebKit::ViewGestureController::SnapshotRemovalTracker::SnapshotRemovalTracker): * UIProcess/VisitedLinkStore.cpp: (WebKit::VisitedLinkStore::VisitedLinkStore): * UIProcess/VisitedLinkStore.h: * UIProcess/WebInspectorProxy.cpp: (WebKit::WebInspectorProxy::WebInspectorProxy): * UIProcess/WebInspectorProxy.h: * UIProcess/WebProcessPool.cpp: (WebKit::m_hiddenPageThrottlingTimer): * UIProcess/WebProcessPool.h: * UIProcess/gtk/GestureController.cpp: (WebKit::GestureController::DragGesture::DragGesture): (WebKit::GestureController::ZoomGesture::ZoomGesture): * UIProcess/gtk/GestureController.h: * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: (WebKit::WebPopupMenuProxyGtk::WebPopupMenuProxyGtk): * UIProcess/gtk/WebPopupMenuProxyGtk.h: * UIProcess/mac/ViewGestureController.h: * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::WebLoaderStrategy): * WebProcess/Network/WebLoaderStrategy.h: * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: (WebKit::NPRuntimeObjectMap::NPRuntimeObjectMap): * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h: * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::NetscapePlugin): (WebKit::NetscapePlugin::Timer::Timer): * WebProcess/Plugins/Netscape/NetscapePlugin.h: * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: (WebKit::NetscapePluginStream::NetscapePluginStream): * WebProcess/Plugins/Netscape/NetscapePluginStream.h: * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::PluginView): * WebProcess/Plugins/PluginView.h: * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp: (WebKit::CoordinatedDrawingArea::CoordinatedDrawingArea): * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h: * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: (WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: * WebProcess/WebPage/DrawingAreaImpl.cpp: (WebKit::DrawingAreaImpl::DrawingAreaImpl): * WebProcess/WebPage/DrawingAreaImpl.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::WebPage): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: (WebKit::LayerTreeHostGtk::RenderFrameScheduler::RenderFrameScheduler): * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): 2016-06-28 Chris Dumez <cdumez@apple.com> [WK2] Add some logging related to NetworkProcess suspension https://bugs.webkit.org/show_bug.cgi?id=159178 Reviewed by Andreas Kling. Add some logging related to NetworkProcess suspension to help debug suspension issues. * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::prepareToSuspend): (WebKit::NetworkProcess::cancelPrepareToSuspend): (WebKit::NetworkProcess::processDidResume): 2016-06-28 Chris Dumez <cdumez@apple.com> Add some more UIProcess-side logging related to process assertions https://bugs.webkit.org/show_bug.cgi?id=159188 Reviewed by Andreas Kling. Add some more UIProcess-side logging related to process assertions to help debug process suspension issues. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::fetchWebsiteData): (WebKit::NetworkProcessProxy::deleteWebsiteData): (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins): * UIProcess/ProcessThrottler.cpp: (WebKit::ProcessThrottler::updateAssertionNow): (WebKit::ProcessThrottler::updateAssertion): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::updateActivityToken): * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::fetchWebsiteData): (WebKit::WebProcessProxy::deleteWebsiteData): (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins): (WebKit::WebProcessProxy::didSetAssertionState): 2016-06-28 Chris Dumez <cdumez@apple.com> [WK2] Do not suppress navigation snapshotting on session restore if we are not navigating right away https://bugs.webkit.org/show_bug.cgi?id=159216 <rdar://problem/27058360> Reviewed by Andreas Kling. Do not suppress navigation snapshotting on session restore if we are not navigating right away. The snapshot we already have may be outdated by the time we actually navigate (e.g. Because the user scrolled) so we don't want to suppress snapshotting in this case. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::restoreFromSessionState): 2016-06-27 Anders Carlsson <andersca@apple.com> WebKit::WebPaymentCoordinator leak https://bugs.webkit.org/show_bug.cgi?id=159168 rdar://problem/26929772 Reviewed by Beth Dakin. Update for WebCore changes. * WebProcess/ApplePay/WebPaymentCoordinator.cpp: (WebKit::WebPaymentCoordinator::paymentCoordinatorDestroyed): (WebKit::WebPaymentCoordinator::mainFrameDestroyed): Deleted. * WebProcess/ApplePay/WebPaymentCoordinator.h: 2016-06-27 Simon Fraser <simon.fraser@apple.com> Fix TestWebKitAPI crash introduced in r202532. WebPageProxy::forceRepaint() could trigger a call to the didForceRepaintCallback() after the WebPageProxy had been invalidated, causing a null de-ref of m_drawingArea. Fix by checking for error and isValid(). * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::forceRepaint): 2016-06-27 Simon Fraser <simon.fraser@apple.com> [iOS] Make DumpRenderTree and WebKitTestRunner in the simulator use render server snapshotting https://bugs.webkit.org/show_bug.cgi?id=159077 Reviewed by Tim Horton. Fix WebPageProxy::forceRepaint() to correctly wait for the next commit from the web process, which is necessary for UI-side compositing. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::forceRepaint): 2016-06-27 Joseph Pecoraro <pecoraro@apple.com> Web Inspector: When modifying sessionStorage, localStorage gets updated https://bugs.webkit.org/show_bug.cgi?id=159181 <rdar://problem/27043447> Reviewed by Timothy Hatcher. * WebProcess/Storage/StorageAreaMap.cpp: (WebKit::StorageAreaMap::dispatchSessionStorageEvent): This should be dispatching storage events. 2016-06-27 Alex Christensen <achristensen@webkit.org> Fix flakiness on Sierra after r202511 https://bugs.webkit.org/show_bug.cgi?id=159071 * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSession::clearCredentials): Replacing the NSURLSessions immediately caused assertions because the tasks are not always all stopped immediately when tearing down a test. Stopping an NSURLSession needs to be done asynchronously. I'll try a different testing technique for r202511. 2016-06-27 Alex Christensen <achristensen@webkit.org> Send canAuthenticateAgainstProtectionSpace calls from NetworkProcess directly to UIProcess https://bugs.webkit.org/show_bug.cgi?id=159071 Reviewed by Brady Eidson. When CFNetwork asks the NetworkProcess if we can authenticate against this protection space, we used to ask the WebProcess, which would call ResourceLoader::canAuthenticateAgainstProtectionSpace which would ask the FrameLoaderClient, which would synchronously ask the UIProcess. Going directly from the NetworkProcess to the UIProcess gives us many advantages: 1. It reduces IPC because we ask fewer loads. 2. It reduces synchronous IPC because we are not using the same code path as WebKit1 any more. 3. It allows us to check if the NetworkProcess is still valid in sendToNetworkingProcess, possibly fixing rdar://problem/26825408 4. It allows us to ask the UIProcess when we get authentication challenges for synchronous xhr. I added a new test http/tests/xmlhttprequest/sync-delegate-callbacks.html to verify the change in behavior of synchronous xhr. In order to make this test not flaky on platforms using NSURLSession, we clear the NSURLSessions used by WebKitTestRunner to make sure that the TLS session cache is cleared so we get NSURLAuthenticationChallenges corresponding to the NSURLConnection canAuthenticateAgainstProtectionSpace callback when we initiate the first HTTPS connection to 127.0.0.1 with this session. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didReceiveChallenge): (WebKit::NetworkLoad::didReceiveResponseNetworkSession): (WebKit::NetworkLoad::canAuthenticateAgainstProtectionSpaceAsync): * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::clearCachedCredentials): (WebKit::NetworkProcess::ensurePrivateBrowsingSession): (WebKit::NetworkProcess::cancelDownload): (WebKit::NetworkProcess::canAuthenticateAgainstProtectionSpace): (WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpace): (WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpaceDownload): * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::canAuthenticateAgainstProtectionSpaceAsync): * NetworkProcess/NetworkResourceLoader.h: * NetworkProcess/NetworkResourceLoader.messages.in: * NetworkProcess/NetworkSession.h: * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSession::networkStorageSession): (WebKit::NetworkSession::clearCredentials): (WebKit::NetworkSession::dataTaskForIdentifier): * UIProcess/Downloads/DownloadProxy.cpp: (WebKit::DownloadProxy::canAuthenticateAgainstProtectionSpace): (WebKit::DownloadProxy::willSendRequest): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::logSampledDiagnosticMessageWithValue): (WebKit::NetworkProcessProxy::canAuthenticateAgainstProtectionSpace): (WebKit::NetworkProcessProxy::sendProcessWillSuspendImminently): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::backForwardClear): (WebKit::WebPageProxy::canAuthenticateAgainstProtectionSpace): (WebKit::WebPageProxy::didReceiveAuthenticationChallenge): (WebKit::WebPageProxy::canAuthenticateAgainstProtectionSpaceInFrame): Deleted. * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::didReceiveResource): (WebKit::WebResourceLoader::isAlwaysOnLoggingAllowed): (WebKit::WebResourceLoader::canAuthenticateAgainstProtectionSpace): Deleted. * WebProcess/Network/WebResourceLoader.h: * WebProcess/Network/WebResourceLoader.messages.in: * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::canAuthenticateAgainstProtectionSpace): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::clearCachedCredentials): (WebKit::WebProcess::focusedWebPage): 2016-06-27 Anders Carlsson <andersca@apple.com> Discounted items are displayed with positive values https://bugs.webkit.org/show_bug.cgi?id=159160 rdar://problem/26980772 Reviewed by Dean Jackson. * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: (WebKit::toDecimalNumber): Add new helper function. Correctly compute the mantissa. (WebKit::toPKPaymentSummaryItem): (WebKit::toPKShippingMethod): Use toDecimalNumber. 2016-06-27 Miguel Gomez <magomez@igalia.com> [GTK][EFL] Build with threaded compositor enabled is broken https://bugs.webkit.org/show_bug.cgi?id=159138 Reviewed by Carlos Garcia Campos. Replace the usage of NoncopyableFunction with Function, to follow the changes in r202439. * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp: (WebKit::CompositingRunLoop::performTask): (WebKit::CompositingRunLoop::performTaskSync): * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h: 2016-06-24 Brian Burg <bburg@apple.com> REGRESSION(r201171): CRASH at WebKit::WebInspectorProxy::open() + 31 when running inspector layout tests https://bugs.webkit.org/show_bug.cgi?id=159070 <rdar://problem/26768628> Reviewed by Joseph Pecoraro. We have been seeing a few crashes underneath WebInspectorProxy::bringToFront() on the bots. Previously, this code didn't use m_inspectorPage so there was nothing to null-dereference. However, it doesn't make sense that we would hit the null dereference here: - The only caller of bringToFront() on the WebProcess side is InspectorController::show(). It only tries to bring to front if there is already a local frontend connection, which shouldn't be the case if m_inspectorPage is null. - It's guarded by m_underTest, which should have been set to true in createInspectorPage(). These clues lead me to believe that we may be improperly tearing down the inspector between tests. For example, it seems possible that a local frontend connection is not being torn down, so InspectorController never asks to create a inspector page when the next test calls showWebInspector. Since this crash is not easy to reproduce, we don't have much to go on. For now, this patch adds an early return in the case where m_inspectorPage is null when calling open(). * UIProcess/WebInspectorProxy.cpp: (WebKit::WebInspectorProxy::open): 2016-06-24 Jer Noble <jer.noble@apple.com> Vimeo.com videos do not get playback controls https://bugs.webkit.org/show_bug.cgi?id=159082 <rdar://problem/26586630> Reviewed by Eric Carlson. When the HasAudioOrVideo media state changes, let the video controls recalculate by calling videoControlsManagerDidChange(). * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::isPlayingMediaDidChange): 2016-06-24 Beth Dakin <bdakin@apple.com> Include enclosingListType in EditorState https://bugs.webkit.org/show_bug.cgi?id=159102 -and corresponding- rdar://problem/26932490 Reviewed by Enrica Casucci. * Shared/EditorState.cpp: (WebKit::EditorState::PostLayoutData::encode): (WebKit::EditorState::PostLayoutData::decode): * Shared/EditorState.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::editorState): 2016-06-24 Anders Carlsson <andersca@apple.com> Inline more of the Apple Pay source code https://bugs.webkit.org/show_bug.cgi?id=159099 Reviewed by Andreas Kling. * Shared/Cocoa/WebCoreArgumentCodersCocoa.h: Removed. * Shared/WebCoreArgumentCoders.h: * Shared/WebPreferencesDefinitions.h: * UIProcess/API/Cocoa/WKPreferences.mm: (-[WKPreferences _applePayCapabilityDisclosureAllowed]): (-[WKPreferences _setApplePayCapabilityDisclosureAllowed:]): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _applePayEnabled]): (-[WKWebViewConfiguration _setApplePayEnabled:]): (-[WKWebViewConfiguration _paymentsEnabled]): (-[WKWebViewConfiguration _setPaymentsEnabled:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::WebPageProxy): (WebKit::WebPageProxy::reattachToWebProcess): (WebKit::WebPageProxy::resetState): * UIProcess/WebPageProxy.h: * WebKit2.xcodeproj/project.pbxproj: * WebProcess/WebPage/WebPage.cpp: (WebKit::m_userInterfaceLayoutDirection): (WebKit::WebPage::updatePreferences): 2016-06-21 Anders Carlsson <andersca@apple.com> Rename NoncopyableFunction to Function https://bugs.webkit.org/show_bug.cgi?id=158354 Reviewed by Chris Dumez. * NetworkProcess/NetworkProcess.cpp: (WebKit::fetchDiskCacheEntries): (WebKit::NetworkProcess::fetchWebsiteData): (WebKit::clearDiskCacheEntries): * NetworkProcess/NetworkProcess.h: * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::traverse): * NetworkProcess/cache/NetworkCache.h: * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp: (WebKit::NetworkCache::runTaskInQueue): * NetworkProcess/cache/NetworkCacheStorage.h: 2016-06-22 Anders Carlsson <andersca@apple.com> Move WebKit2 Apple Pay code to the open source repository https://bugs.webkit.org/show_bug.cgi?id=159041 Reviewed by Sam Weinig. * DerivedSources.make: * Shared/Cocoa/WebCoreArgumentCodersCocoa.h: Added. * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: Added. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp: Added. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.h: Added. * UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in: Added. * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h: Added. * UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: Added. * UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm: Added. * UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: Added. * UIProcess/WebPageProxy.cpp: * UIProcess/WebPageProxy.h: * WebKit2.xcodeproj/project.pbxproj: * WebProcess/ApplePay/WebPaymentCoordinator.cpp: Added. * WebProcess/ApplePay/WebPaymentCoordinator.h: Added. * WebProcess/ApplePay/WebPaymentCoordinator.messages.in: Added. 2016-06-24 Chris Dumez <cdumez@apple.com> [WK2] PageConfiguration.m_relatedPage keeps WebPageProxy alive after its WebView has been destroyed https://bugs.webkit.org/show_bug.cgi?id=159080 <rdar://problem/26982642> Reviewed by Anders Carlsson. PageConfiguration.m_relatedPage keeps WebPageProxy alive after its WebView has been destroyed. This leads to WebPageProxy object leaks when the client keeps chaining related views. In this patch, we null our the PageConfiguration's relatedPage in WebPageProxy::close() to break the chain and make sure we only keep alive 1 relatedPage rather than a chain of them. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::close): 2016-06-24 Jer Noble <jer.noble@apple.com> Playback controls refer to wrong element when playing multiple items in a page. https://bugs.webkit.org/show_bug.cgi?id=159076 <rdar://problem/26953532> Reviewed by Beth Dakin. clearPlaybackControlsManager() no longer takes a parameter. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::clearPlaybackControlsManager): * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/cocoa/WebPlaybackSessionManager.h: * WebProcess/cocoa/WebPlaybackSessionManager.mm: (WebKit::WebPlaybackSessionManager::setUpPlaybackControlsManager): Make sure to removeClientForContext() if the old context refers to a live media element. (WebKit::WebPlaybackSessionManager::clearPlaybackControlsManager): 2016-06-24 Brady Eidson <beidson@apple.com> IDB tests crashing attempting to register sandbox extensions for blob files. https://bugs.webkit.org/show_bug.cgi?id=159094. Reviewed by Sam Weinig. Already tested by storage/indexeddb/modern/handle-user-delete.html * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::preregisterSandboxExtensionsIfNecessary): Check whether the IDBResultData actually contains a getResult before trying to access it. 2016-06-23 Brady Eidson <beidson@apple.com> Retrieving Blobs from IndexedDB using cursors fails in WK2 (Sandboxing) https://bugs.webkit.org/show_bug.cgi?id=158991 Reviewed by Alex Christensen. * CMakeLists.txt: * WebKit2.xcodeproj/project.pbxproj: * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::getSandboxExtensionsForBlobFiles): (WebKit::DatabaseProcess::didGetSandboxExtensionsForBlobFiles): * DatabaseProcess/DatabaseProcess.h: * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: (WebKit::WebIDBConnectionToClient::handleGetResult): Handle creation of sandbox extensions for any result that might contain blob values. (WebKit::WebIDBConnectionToClient::didGetRecord): (WebKit::WebIDBConnectionToClient::didOpenCursor): (WebKit::WebIDBConnectionToClient::didIterateCursor): * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h: * Shared/Databases/IndexedDB/WebIDBResult.cpp: Added. (WebKit::WebIDBResult::encode): (WebKit::WebIDBResult::decode): * Shared/Databases/IndexedDB/WebIDBResult.h: Added. (WebKit::WebIDBResult::WebIDBResult): (WebKit::WebIDBResult::resultData): (WebKit::WebIDBResult::handles): * Shared/SandboxExtension.h: Make SandboxExtension handles moveable. * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::preregisterSandboxExtensionsIfNecessary): Register sandbox extensions with the Networking process for any result that might contain blob values. (WebKit::WebIDBConnectionToServer::didGetRecord): (WebKit::WebIDBConnectionToServer::didOpenCursor): (WebKit::WebIDBConnectionToServer::didIterateCursor): (WebKit::WebIDBConnectionToServer::didGetRecordWithSandboxExtensions): Deleted. * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in: 2016-06-23 Alex Christensen <achristensen@webkit.org> Remove unused didCancelAuthenticationChallenge https://bugs.webkit.org/show_bug.cgi?id=158819 Reviewed by David Kilzer. * NetworkProcess/Downloads/mac/DownloadMac.mm: (-[WKDownloadAsDelegate download:didCancelAuthenticationChallenge:]): Deleted. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didCancelAuthenticationChallenge): Deleted. * NetworkProcess/NetworkLoad.h: * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidCancelAuthenticationChallenge): Deleted. * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 2016-06-23 Benjamin Poulain <benjamin@webkit.org> Specialize synchronous event tracking per event type https://bugs.webkit.org/show_bug.cgi?id=158826 Reviewed by Simon Fraser. * Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<EventTrackingRegions>::encode): (IPC::ArgumentCoder<EventTrackingRegions>::decode): * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp: (WebKit::RemoteScrollingCoordinatorProxy::eventTrackingTypeForPoint): * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h: * UIProcess/WebPageProxy.cpp: (WebKit::mergeTrackingTypes): (WebKit::WebPageProxy::updateTouchEventTracking): (WebKit::WebPageProxy::touchEventTrackingType): (WebKit::WebPageProxy::handleTouchEventSynchronously): (WebKit::WebPageProxy::handleTouchEventAsynchronously): (WebKit::WebPageProxy::handleTouchEvent): (WebKit::WebPageProxy::resetState): * UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::TouchEventTracking::isTrackingAnything): (WebKit::WebPageProxy::TouchEventTracking::reset): 2016-06-23 Said Abou-Hallawa <sabouhallawa@apple.com> requestFrameAnimation() callback timestamp should be very close to Performance.now() https://bugs.webkit.org/show_bug.cgi?id=159038 Reviewed by Simon Fraser. * WebProcess/WebPage/Cocoa/RemoteLayerTreeDisplayRefreshMonitor.mm: (WebKit::RemoteLayerTreeDisplayRefreshMonitor::didUpdateLayers): 2016-06-23 Chris Dumez <cdumez@apple.com> [iOS] A WebPageProxy in closed state should not be allowed to hold a process assertion https://bugs.webkit.org/show_bug.cgi?id=159068 <rdar://problem/17665473> Reviewed by Tim Horton. A WebPageProxy in closed state should not be allowed to hold a process assertion. It currently happens that WebPageProxy::close() gets called but that the WebPageProxy is kept alive by Safari (e.g. In case of top-hit preloading). In such cases, we fail to release the foreground process assertion that the WebPageProxy holds. We should clear the foreground process assertion that the WebPageProxy holds as soon as WebPageProxy::close() is called. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::close): 2016-06-23 Brent Fulgham <bfulgham@apple.com> [OS X][WK2] Expand sandbox for new mach endpoints https://bugs.webkit.org/show_bug.cgi?id=159040 <rdar://problem/25238336> Reviewed by Alexey Proskuryakov. Grant the WebContent and Networking processes the mach lookup capability for various Security-related mach endpoints.. * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in: * WebProcess/com.apple.WebProcess.sb.in: 2016-06-23 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r201194. https://bugs.webkit.org/show_bug.cgi?id=159059 Not needed for iOS (Requested by bfulgham on #webkit). Reverted changeset: "[OS X][WK2] Expand sandbox for new mach endpoints" https://bugs.webkit.org/show_bug.cgi?id=157919 http://trac.webkit.org/changeset/201194 2016-06-23 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.2 release. * gtk/NEWS: Add release notes for 2.13.2. 2016-06-22 Carlos Garcia Campos <cgarcia@igalia.com> REGRESSION(r201880): WebSockets based remote inspector is broken since r201880 https://bugs.webkit.org/show_bug.cgi?id=158613 Reviewed by Michael Catanzaro. In r201880 SocketStreamHandleClient was modified to receive references instead of pointers. WebSocketServerConnection also implements SocketStreamHandleClient but since it's doesn't use override, it was unnoticed and not updated, so we ended up using the default empty implementation instead of the WebSocketServerConnection one. * UIProcess/InspectorServer/WebSocketServerConnection.cpp: (WebKit::WebSocketServerConnection::WebSocketServerConnection): (WebKit::WebSocketServerConnection::setSocketHandle): (WebKit::WebSocketServerConnection::shutdownNow): (WebKit::WebSocketServerConnection::didCloseSocketStream): (WebKit::WebSocketServerConnection::didReceiveSocketStreamData): (WebKit::WebSocketServerConnection::didUpdateBufferedAmount): (WebKit::WebSocketServerConnection::didFailSocketStream): Deleted. * UIProcess/InspectorServer/WebSocketServerConnection.h: 2016-06-22 Brent Fulgham <bfulgham@apple.com> [iOS][WK2] Expand sandbox to read voice services preferences https://bugs.webkit.org/show_bug.cgi?id=159046 <rdar://problem/26926722> Reviewed by Alexey Proskuryakov. Expand the sandbox to permit read-only access to voice services preferences. * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: 2016-06-22 Sam Weinig <sam@webkit.org> Add SPI to allow creating a WKCertificateInfoRef from a SecTrustRef https://bugs.webkit.org/show_bug.cgi?id=159025 Reviewed by Tim Horton. * Shared/API/c/mac/WKCertificateInfoMac.h: * Shared/API/c/mac/WKCertificateInfoMac.mm: (WKCertificateInfoCreateWithServerTrust): 2016-06-22 Brady Eidson <beidson@apple.com> DatabaseProcess doesn't handle WebProcesses going away uncleanly. https://bugs.webkit.org/show_bug.cgi?id=158894 Reviewed by Alex Christensen. * DatabaseProcess/DatabaseToWebProcessConnection.cpp: (WebKit::DatabaseToWebProcessConnection::didClose): * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: (WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess): Actually unregister this connection from the IDBServer so it can clean up. (WebKit::WebIDBConnectionToClient::~WebIDBConnectionToClient): 2016-06-22 Chris Dumez <cdumez@apple.com> Stop using PassRefPtr in ShareableResource https://bugs.webkit.org/show_bug.cgi?id=159043 Reviewed by Alex Christensen. Stop using PassRefPtr in ShareableResource. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::store): * NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::initializeShareableResourceHandleFromStorageRecord): * Shared/ShareableResource.cpp: (WebKit::shareableResourceDeallocate): (WebKit::ShareableResource::wrapInSharedBuffer): (WebKit::ShareableResource::Handle::tryWrapInSharedBuffer): (WebKit::ShareableResource::create): (WebKit::ShareableResource::map): (WebKit::ShareableResource::ShareableResource): * Shared/ShareableResource.h: 2016-06-17 Dean Jackson <dino@apple.com> REGRESSION: Double tap to zoom does not work on yahoo finance https://bugs.webkit.org/show_bug.cgi?id=158886 <rdar://problem/24917760> Reviewed by Simon Fraser. We shouldn't enable fast click on pages that have had to shrink to fit. In other words, we should enable double-tap-to-zoom if the page has already zoomed. Test: fast/events/ios/viewport-shrink-to-fit-allows-double-tap.html * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _allowsDoubleTapGestures]): 2016-06-22 Brian Burg <bburg@apple.com> Web Automation: Automation.inspectBrowsingContext should have an option to enable timeline auto-capturing https://bugs.webkit.org/show_bug.cgi?id=159004 <rdar://problem/26931269> Reviewed by Joseph Pecoraro. Automation.inspectBrowsingContext was added to make it easier to hit breakpoints inside of code evaluated using Automation.evaluateJavaScriptFunction. I recently changed the behavior of this command to automatically start profiling the page as soon as the inspector attached so that a full timeline recording could be obtained. However, starting a timeline recording turns off the debugger, so this command is not so useful for debugging right now. Add a new option, enableAutoCapturing, to the inspectBrowsingContext command. Don't toggle profiling automatically unless this optional flag is present and set to true. * UIProcess/Automation/Automation.json: * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::inspectBrowsingContext): (WebKit::WebAutomationSession::inspectorFrontendLoaded): Deleted. * UIProcess/Automation/WebAutomationSession.h: 2016-06-22 Tim Horton <timothy_horton@apple.com> Mail snapshot has black webview in multitasking switcher https://bugs.webkit.org/show_bug.cgi?id=159036 <rdar://problem/25972938> Reviewed by Simon Fraser. There is a window of time between an application going into the background and SpringBoard's snapshotting mechanism completing where it is possible (though difficult, timing-wise) for RemoteLayerBackingStoreCollection to make still-needed surfaces volatile (and, even worse, for them to get emptied). UIKit suggested instead waiting for the window context teardown notification, which does indeed seem to fire after the snapshotting is complete. This may have the convenient side effect of making the volatility timer repeat fewer times in general, because it is now started closer to the last time that the surfaces will be in-use. * UIProcess/ApplicationStateTracker.h: * UIProcess/ApplicationStateTracker.mm: (WebKit::ApplicationStateTracker::ApplicationStateTracker): (WebKit::ApplicationStateTracker::~ApplicationStateTracker): (WebKit::ApplicationStateTracker::applicationDidFinishSnapshottingAfterEnteringBackground): * UIProcess/WebPageProxy.h: * UIProcess/ios/WKContentView.mm: (-[WKContentView didMoveToWindow]): (-[WKContentView _applicationDidFinishSnapshottingAfterEnteringBackground]): * UIProcess/ios/WKPDFView.mm: (-[WKPDFView didMoveToWindow]): (-[WKPDFView _applicationDidFinishSnapshottingAfterEnteringBackground]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::applicationDidFinishSnapshottingAfterEnteringBackground): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::applicationDidEnterBackground): (WebKit::WebPage::applicationDidFinishSnapshottingAfterEnteringBackground): 2016-06-22 Chris Dumez <cdumez@apple.com> Add logging related to process assertions to help debug process suspension issues https://bugs.webkit.org/show_bug.cgi?id=159001 Reviewed by Antti Koivisto. Add logging related to process assertions to help debug process suspension issues. * UIProcess/Cocoa/NavigationState.mm: (WebKit::NavigationState::didChangeIsLoading): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::fetchWebsiteData): (WebKit::NetworkProcessProxy::deleteWebsiteData): (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins): (WebKit::NetworkProcessProxy::setIsHoldingLockedFiles): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::updateActivityToken): * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::setIsHoldingLockedFiles): 2016-06-21 Sam Weinig <sam@webkit.org> WKWebView with no WKNavigationDelegate does not follow universal links <rdar://problem/24374110> https://bugs.webkit.org/show_bug.cgi?id=158997 Reviewed by Dan Bernstein. API Test: WKWebView.DefaultNavigationDelegate * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): When initializing the WKWebView, set a default navigation client. 2016-06-21 Chris Dumez <cdumez@apple.com> Unreviewed, rolling out r202296. Broke basic browsing in Safari Reverted changeset: "WKWebView with no WKNavigationDelegate does not follow universal links" https://bugs.webkit.org/show_bug.cgi?id=158997 http://trac.webkit.org/changeset/202296 2016-06-21 Anders Carlsson <andersca@apple.com> Fix build. * Configurations/FeatureDefines.xcconfig: 2016-06-21 Anders Carlsson <andersca@apple.com> Begin moving the Apple Pay code to the open source repository https://bugs.webkit.org/show_bug.cgi?id=158998 Reviewed by Tim Horton. * Configurations/FeatureDefines.xcconfig: Add ENABLE_APPLE_PAY. 2016-06-21 Said Abou-Hallawa <sabouhallawa@apple,com> Add system tracing points for requestAnimationFrame() workflow https://bugs.webkit.org/show_bug.cgi?id=158723 Reviewed by Simon Fraser. Add trace points for requestAnimationFrame(). * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::buildTransaction): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::didUpdate): (WebKit::RemoteLayerTreeDrawingArea::BackingStoreFlusher::flush): 2016-06-21 Sam Weinig <sam@webkit.org> WKWebView with no WKNavigationDelegate does not follow universal links <rdar://problem/24374110> https://bugs.webkit.org/show_bug.cgi?id=158997 Reviewed by Dan Bernstein. API Test: WKWebView.DefaultNavigationDelegate * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): When initializing the WKWebView, set a default navigation client. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setLoaderClient): Be sure to clear out a navigation client, if present, when setting a loader client, as they are mutually exclusive. 2016-06-20 Simon Fraser <simon.fraser@apple.com> Focus event dispatched in iframe causes parent document to scroll incorrectly https://bugs.webkit.org/show_bug.cgi?id=158629 rdar://problem/26521616 Reviewed by Tim Horton. Pass SelectionRevealMode::Reveal in existing code. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::centerSelectionInVisibleArea): 2016-06-21 Said Abou-Hallawa <sabouhallawa@apple,com> [iOS][WK2] When an animation frame is missed, the UI process should immediately notify the Web process once a frame is committed https://bugs.webkit.org/show_bug.cgi?id=158933 Reviewed by Simon Fraser. When a frame is committed, the UI process schedules a CADisplayLink and waits until the next didRefreshDisplay event is fired. This causes more delay in the scenario where there are frames are dropped. didRefreshDisplay() should be called immediately when commitLayerTree message is received and the last frame was dropped. The fix is to have the CADisplayLink active all the times. It should be paused only when we detect at least one frame is dropped. In this case we should not send a message to the UI process since it has not sent the last requested LayerTree. Also we should not waste the CPU time by scheduling a new CADisplayLink since we have not processed the last event. We should resume CADisplayLink timer once a commitLayerTree message is received. * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h: * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (-[WKOneShotDisplayLinkHandler pause]): (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): (-[WKOneShotDisplayLinkHandler displayLinkFired:]): 2016-06-21 Amir Alavi <aalavi@apple.com> Upstream WKHTTPCookiesForURL from WebKitSystemInterface to OpenSource https://bugs.webkit.org/show_bug.cgi?id=158967 Reviewed by Brent Fulgham. * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm: (InitWebCoreSystemInterface): Deleted. 2016-06-21 Dan Bernstein <mitz@apple.com> Inlined some picture-in-picture code. https://bugs.webkit.org/show_bug.cgi?id=158977 Reviewed by Eric Carlsson. This code was written primarily by Ada Chan, and originally reviewed by Alex Christensen, Anders Carlsson, Conrad Shultz, Dan Bernstein, Eric Carlson, Jer Noble, Jeremy Jones, Jon Lee, Remy Demarest, and Zach Li. * Shared/WebPreferencesStoreDefaultsAdditions.cpp: Define and use DEFAULT_ALLOWS_PICTURE_IN_PICTURE_MEDIA_PLAYBACK. * Shared/WebPreferencesStore.cpp: (WebKit::defaults): Removed include of WebPreferencesStoreDefaultsAdditions.cpp now that the default is defined correctly in WebPreferencesStoreDefaultsAdditions.cpp. * UIProcess/API/C/WKPreferences.cpp: Inlined WKPreferencesAdditions.cpp. * UIProcess/API/C/WKPreferencesRefPrivate.h: Ditto. * WebProcess/cocoa/WebVideoFullscreenManager.mm: Inlined WebVideoFullscreenManagerSupportsVideoFullscreenMac.mm. 2016-06-21 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] Web view is not redrawn when reparented in force compositing mode https://bugs.webkit.org/show_bug.cgi?id=158689 Reviewed by Žan Doberšek. When the web view is reparented in accelerated compositing mode, the UI process always exits the accelerated mode when the view is unrealized, because the native surface handle for compositing is destroyed, but it doesn't enter again when the view is realized and a new native surface handle for compositing is used. This happens because the UI and Web processes are not in sync regarding whether the page is in accelerated compositing or not. The Web process never exits accelerated mode when compositing mode is forced, but the UI process doesn't check that setting at all. * UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseResizeRedirectedWindow): Helper function to ensure the redirected window size is properly updated. (webkitWebViewBaseRealize): Resize the redirected window if the view is already in AC mode when realized. (webkitWebViewRenderAcceleratedCompositingResults): Use webkitWebViewBaseResizeRedirectedWindow(). (webkitWebViewBaseSizeAllocate): Ditto. (webkitWebViewBaseWillEnterAcceleratedCompositingMode): Ditto. * UIProcess/DrawingAreaProxyImpl.cpp: (WebKit::DrawingAreaProxyImpl::alwaysUseCompositing): Return true in force compositing mode. (WebKit::DrawingAreaProxyImpl::enterAcceleratedCompositingMode): Update assert. (WebKit::DrawingAreaProxyImpl::exitAcceleratedCompositingMode): Do not exit AC mode compositing mode is always enabled. * UIProcess/DrawingAreaProxyImpl.h: (WebKit::DrawingAreaProxyImpl::isInAcceleratedCompositingMode): Return true also in force compositing mode. * UIProcess/gtk/RedirectedXCompositeWindow.cpp: (WebKit::RedirectedXCompositeWindow::surface): Ensure we never return an uninitialized surface to prevent rendering artifacts in in force compositing mode when waiting for the first update on the redirected window. 2016-06-20 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r202243. https://bugs.webkit.org/show_bug.cgi?id=158972 Broke Windows build and iOS tests (Requested by ap on #webkit). Reverted changeset: "Focus event dispatched in iframe causes parent document to scroll incorrectly" https://bugs.webkit.org/show_bug.cgi?id=158629 http://trac.webkit.org/changeset/202243 2016-06-20 Brent Fulgham <bfulgham@apple.com> Allow Spotlight suggestions to be read by any process https://bugs.webkit.org/show_bug.cgi?id=158950 <rdar://problem/26865374> Reviewed by Alexey Proskuryakov. Extend sandbox to allow all web processes to read Spotlight results. * Resources/PlugInSandboxProfiles/com.apple.WebKit.plugin-common.sb: * WebProcess/com.apple.WebProcess.sb.in: 2016-06-20 Simon Fraser <simon.fraser@apple.com> Focus event dispatched in iframe causes parent document to scroll incorrectly https://bugs.webkit.org/show_bug.cgi?id=158629 rdar://problem/26521616 Reviewed by Tim Horton. Pass SelectionRevealMode::Reveal in existing code. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::centerSelectionInVisibleArea): 2016-06-20 Keith Rollin <krollin@apple.com> Remove RefPtr::release() and change calls sites to use WTFMove() https://bugs.webkit.org/show_bug.cgi?id=158369 Reviewed by Chris Dumez. RefPtr::release() releases its managed pointer awkwardly. It's more direct and clearer to use WTFMove to transfer ownership of the managed pointer. As part of this cleanup, also change a lot of explicit data types to 'auto'. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::createDatabaseToWebProcessConnection): * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::createNetworkConnectionToWebProcess): * NetworkProcess/NetworkResourceLoadParameters.cpp: (WebKit::NetworkResourceLoadParameters::decode): * NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::initializeShareableResourceHandleFromStorageRecord): * Platform/mac/SharedMemoryMac.cpp: (WebKit::SharedMemory::allocate): (WebKit::SharedMemory::create): (WebKit::SharedMemory::map): * PluginProcess/PluginProcess.cpp: (WebKit::PluginProcess::createWebProcessConnection): * Shared/API/Cocoa/WKRemoteObjectCoder.mm: (encodeToObjectStream): * Shared/API/c/WKImage.cpp: (WKImageCreate): * Shared/API/c/WKNumber.cpp: (WKBooleanCreate): (WKDoubleCreate): (WKUInt64Create): * Shared/API/c/WKSecurityOriginRef.cpp: (WKSecurityOriginCreate): * Shared/API/c/WKSerializedScriptValue.cpp: (WKSerializedScriptValueCreate): (WKSerializedScriptValueCreateWithInternalRepresentation): * Shared/API/c/cairo/WKImageCairo.cpp: (WKImageCreateFromCairoSurface): * Shared/API/c/cg/WKImageCG.cpp: (WKImageCreateFromCGImage): * Shared/API/c/mac/WKCertificateInfoMac.mm: (WKCertificateInfoCreateWithCertficateChain): * Shared/API/c/mac/WKObjCTypeWrapperRef.mm: (WKObjCTypeWrapperCreate): * Shared/API/c/mac/WKWebArchive.cpp: (WKWebArchiveCreate): (WKWebArchiveCreateWithData): (WKWebArchiveCreateFromRange): (WKWebArchiveCopyMainResource): (WKWebArchiveCopySubresources): (WKWebArchiveCopySubframeArchives): * Shared/API/c/mac/WKWebArchiveResource.cpp: (WKWebArchiveResourceCreate): * Shared/APIWebArchive.mm: (API::WebArchive::WebArchive): * Shared/Plugins/Netscape/NetscapePluginModule.cpp: (WebKit::NetscapePluginModule::getOrCreate): * Shared/ShareableBitmap.cpp: (WebKit::ShareableBitmap::create): * Shared/ShareableResource.cpp: (WebKit::ShareableResource::map): * Shared/gtk/ArgumentCodersGtk.cpp: (IPC::ArgumentCoder<DragData>::decode): * UIProcess/API/C/CoordinatedGraphics/WKView.cpp: (WKViewCreate): * UIProcess/API/C/WKBatteryStatus.cpp: (WKBatteryStatusCreate): * UIProcess/API/C/WKGeolocationPosition.cpp: (WKGeolocationPositionCreate_b): * UIProcess/API/C/WKGrammarDetail.cpp: (WKGrammarDetailCreate): * UIProcess/API/C/WKPage.cpp: (WKPageCopySessionState): * UIProcess/API/C/WKPageGroup.cpp: (WKPageGroupCreateWithIdentifier): * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesCreate): (WKPreferencesCreateWithIdentifier): (WKPreferencesCreateCopy): * UIProcess/API/C/WKSessionRef.cpp: (WKSessionCreate): * UIProcess/API/C/WKSessionStateRef.cpp: (WKSessionStateCopyData): * UIProcess/API/C/mac/WKContextPrivateMac.mm: (WKContextCopyPlugInInfoForBundleIdentifier): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView loadRequest:]): (-[WKWebView loadFileURL:allowingReadAccessToURL:]): (-[WKWebView loadData:MIMEType:characterEncodingName:baseURL:]): (-[WKWebView goToBackForwardListItem:]): (-[WKWebView goBack]): (-[WKWebView goForward]): (-[WKWebView reload]): (-[WKWebView reloadFromOrigin]): (-[WKWebView _loadData:MIMEType:characterEncodingName:baseURL:userData:]): (-[WKWebView _reloadWithoutContentBlockers]): (-[WKWebView _sessionStateData]): (-[WKWebView _restoreSessionState:andNavigate:]): * UIProcess/API/efl/ewk_database_manager.cpp: (EwkDatabaseManager::createOriginList): * UIProcess/API/efl/ewk_storage_manager.cpp: (EwkStorageManager::createOriginList): * UIProcess/API/gtk/WebKitWebView.cpp: (webkitWebViewCreateNewPage): (webkitWebViewPrintFrame): (getContentsAsMHTMLDataCallback): * UIProcess/Cocoa/SessionStateCoding.mm: (WebKit::encodeSessionState): * UIProcess/GenericCallback.h: (WebKit::CallbackMap::take): * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: (WebKit::GeolocationPermissionRequestManagerProxy::createRequest): * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge): * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: (WebKit::NotificationPermissionRequestManagerProxy::createRequest): * UIProcess/Plugins/PluginProcessManager.cpp: (WebKit::PluginProcessManager::getOrCreatePluginProcess): * UIProcess/Storage/StorageManager.cpp: (WebKit::StorageManager::StorageArea::setItem): (WebKit::StorageManager::StorageArea::removeItem): (WebKit::StorageManager::createLocalStorageMap): * UIProcess/WebBackForwardList.cpp: (WebKit::WebBackForwardList::addItem): (WebKit::WebBackForwardList::clear): * UIProcess/WebCookieManagerProxy.cpp: (WebKit::WebCookieManagerProxy::getHostnamesWithCookies): (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::installViewStateChangeCompletionHandler): * UIProcess/WebPreferences.cpp: (WebKit::WebPreferences::createWithLegacyDefaults): (WebKit::WebPreferences::copy): * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::~WebProcessPool): * UIProcess/mac/ViewSnapshotStore.mm: (WebKit::ViewSnapshotStore::recordSnapshot): * UIProcess/mac/WKImmediateActionController.mm: (-[WKImmediateActionController _webHitTestResult]): * UIProcess/mac/WKPrintingView.mm: (-[WKPrintingView _askPageToComputePageRects]): * UIProcess/mac/WebPageProxyMac.mm: (WebKit::WebPageProxy::setDragImage): * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: (-[WKWebProcessPlugInFrame hitTest:]): * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm: (-[WKWebProcessPlugInHitTestResult nodeHandle]): * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm: (+[WKWebProcessPlugInNodeHandle nodeHandleWithJSValue:inContext:]): (-[WKWebProcessPlugInNodeHandle htmlIFrameElementContentFrame]): * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm: (+[WKWebProcessPlugInScriptWorld world]): * WebProcess/InjectedBundle/API/c/WKBundle.cpp: (WKBundlePostSynchronousMessage): * WebProcess/InjectedBundle/API/c/WKBundleDOMWindowExtension.cpp: (WKBundleDOMWindowExtensionCreate): * WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp: (WKBundleHitTestResultCopyNodeHandle): (WKBundleHitTestResultCopyURLElementHandle): * WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp: (WKBundleNavigationActionCopyHitTestResult): (WKBundleNavigationActionCopyFormElement): * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp: (WKBundleNodeHandleCreate): (WKBundleNodeHandleCopyDocument): (WKBundleNodeHandleCopySnapshotWithOptions): (WKBundleNodeHandleCopyVisibleRange): (WKBundleNodeHandleCopyHTMLTableCellElementCellAbove): (WKBundleNodeHandleCopyDocumentFrame): (WKBundleNodeHandleCopyHTMLFrameElementContentFrame): (WKBundleNodeHandleCopyHTMLIFrameElementContentFrame): * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (WKBundlePageCreateSnapshotWithOptions): (WKBundlePageCreateSnapshotInViewCoordinates): (WKBundlePageCreateSnapshotInDocumentCoordinates): (WKBundlePageCreateScaledSnapshotInDocumentCoordinates): (WKBundlePagePostSynchronousMessageForTesting): * WebProcess/InjectedBundle/API/c/WKBundleRangeHandle.cpp: (WKBundleRangeHandleCreate): (WKBundleRangeHandleCopySnapshotWithOptions): * WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp: (WKBundleScriptWorldCreateWorld): * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm: (-[WKDOMNode _copyBundleNodeHandleRef]): * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm: (-[WKDOMRange _copyBundleRangeHandleRef]): * WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.cpp: (WebKit::InjectedBundleCSSStyleDeclarationHandle::getOrCreate): * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: (WebKit::imageForRect): (WebKit::InjectedBundleNodeHandle::renderedImage): * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: (WebKit::InjectedBundleRangeHandle::getOrCreate): * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::create): * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::loadURL): * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm: (WebKit::PDFPlugin::createScrollbar): * WebProcess/Storage/StorageAreaMap.cpp: (WebKit::StorageAreaMap::applyChange): * WebProcess/WebCoreSupport/SessionStateConversion.cpp: (WebKit::toFormData): * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::createPlugin): (WebKit::WebFrameLoaderClient::recreatePlugin): (WebKit::WebFrameLoaderClient::createJavaAppletWidget): (WebKit::WebFrameLoaderClient::createNetworkingContext): * WebProcess/WebCoreSupport/WebInspectorClient.cpp: (WebKit::WebInspectorClient::highlight): * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm: (WebKit::convertImageToBitmap): * WebProcess/WebPage/FindController.cpp: (WebKit::FindController::updateFindUIAfterPageScroll): * WebProcess/WebPage/VisitedLinkTableController.cpp: (WebKit::VisitedLinkTableController::getOrCreate): (WebKit::VisitedLinkTableController::setVisitedLinkTable): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::createWithCoreMainFrame): (WebKit::WebFrame::createSubframe): (WebKit::WebFrame::create): (WebKit::WebFrame::createSelectionSnapshot): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::createPlugin): (WebKit::WebPage::snapshotAtSize): (WebKit::WebPage::snapshotNode): (WebKit::WebPage::willPerformLoadDragDestinationAction): (WebKit::WebPage::SandboxExtensionTracker::didStartProvisionalLoad): (WebKit::WebPage::SandboxExtensionTracker::didCommitProvisionalLoad): (WebKit::WebPage::drawRectToImage): * WebProcess/WebPage/WebPageGroupProxy.cpp: (WebKit::WebPageGroupProxy::create): * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm: (WebKit::PlatformCAAnimationRemote::Properties::decode): * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::create): (WebKit::PlatformCALayerRemote::clone): * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm: (WebKit::PlatformCALayerRemoteCustom::create): (WebKit::PlatformCALayerRemoteCustom::clone): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::createDisplayRefreshMonitor): 2016-06-20 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r202179. https://bugs.webkit.org/show_bug.cgi?id=158946 The test either fails or times out 100% of the time (Requested by ap on #webkit). Reverted changeset: "REGRESSION: Double tap to zoom does not work on yahoo finance" https://bugs.webkit.org/show_bug.cgi?id=158886 http://trac.webkit.org/changeset/202179 2016-06-20 Tim Horton <timothy_horton@apple.com> REGRESSION (r191499): Tab content "jumps" down when focusing tabs that load in the background https://bugs.webkit.org/show_bug.cgi?id=158904 <rdar://problem/26025831> Reviewed by Sam Weinig. * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::viewDidMoveToWindow): During the large refactor that was r191499, we somehow ended up with two different members for the same thing - one that got written, and one that got read. We should only have one. 2016-06-20 Tim Horton <timothy_horton@apple.com> Try to fix the iOS build after r202142 and r202224. * Shared/mac/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer): 2016-06-19 Simon Fraser <simon.fraser@apple.com> Fix erroneously commented line added in r202142. * Shared/mac/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer): 2016-06-16 Enrica Casucci <enrica@apple.com> Support configurable autocapitalization. https://bugs.webkit.org/show_bug.cgi?id=158860 rdar://problem/26231403 Reviewed by Tim Horton. The behavior of spellchecker should be configurable to avoid unwanted autocapitalization. * UIProcess/API/APIPageConfiguration.cpp: (API::PageConfiguration::copy): * UIProcess/API/APIPageConfiguration.h: (API::PageConfiguration::initialCapitalizationEnabled): (API::PageConfiguration::setInitialCapitalizationEnabled): * UIProcess/API/C/WKPageConfigurationRef.cpp: (WKPageConfigurationSetIntialCapitalizationEnabled): * UIProcess/API/C/WKPageConfigurationRef.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _initialCapitalizationEnabled]): (-[WKWebViewConfiguration _setInitialCapitalizationEnabled:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * UIProcess/TextChecker.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::WebPageProxy): (WebKit::WebPageProxy::checkTextOfParagraph): (WebKit::WebPageProxy::getGuessesForWord): * UIProcess/WebPageProxy.h: * UIProcess/efl/TextCheckerEfl.cpp: (WebKit::TextChecker::checkTextOfParagraph): (WebKit::TextChecker::getGuessesForWord): * UIProcess/gtk/TextCheckerGtk.cpp: (WebKit::TextChecker::getGuessesForWord): (WebKit::TextChecker::checkTextOfParagraph): * UIProcess/ios/TextCheckerIOS.mm: (WebKit::TextChecker::checkTextOfParagraph): (WebKit::TextChecker::getGuessesForWord): * UIProcess/mac/TextCheckerMac.mm: (WebKit::TextChecker::checkTextOfParagraph): (WebKit::TextChecker::getGuessesForWord): 2016-06-17 Chris Dumez <cdumez@apple.com> Use WTF::NoncopyableFunction in NetworkDataTaskClient https://bugs.webkit.org/show_bug.cgi?id=158887 Reviewed by Alex Christensen. Use WTF::NoncopyableFunction in NetworkDataTaskClient instead of std::function and consistently move it around. This avoids some unnecessary copying. * NetworkProcess/Downloads/DownloadManager.cpp: (WebKit::DownloadManager::willDecidePendingDownloadDestination): (WebKit::DownloadManager::continueDecidePendingDownloadDestination): * NetworkProcess/Downloads/DownloadManager.h: * NetworkProcess/NetworkDataTask.h: * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::willPerformHTTPRedirection): (WebKit::NetworkLoad::didReceiveChallenge): (WebKit::NetworkLoad::didReceiveResponseNetworkSession): (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): * NetworkProcess/NetworkLoad.h: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::findPendingDownloadLocation): * NetworkProcess/NetworkProcess.h: * NetworkProcess/PingLoad.h: * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTask::didReceiveChallenge): (WebKit::NetworkDataTask::didReceiveResponse): (WebKit::NetworkDataTask::willPerformHTTPRedirection): (WebKit::NetworkDataTask::tryPasswordBasedAuthentication): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): * Shared/Authentication/AuthenticationManager.cpp: (WebKit::AuthenticationManager::addChallengeToChallengeMap): (WebKit::AuthenticationManager::coalesceChallengesMatching): (WebKit::AuthenticationManager::didReceiveAuthenticationChallenge): (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge): (WebKit::AuthenticationManager::useCredentialForSingleChallenge): * Shared/Authentication/AuthenticationManager.h: * Shared/Authentication/mac/AuthenticationManager.mac.mm: (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge): 2016-06-17 Antoine Quint <graouts@apple.com> Web video playback controls should have RTL volume slider https://bugs.webkit.org/show_bug.cgi?id=158856 <rdar://problem/25971769> Reviewed by Tim Horton. We now call setUserInterfaceLayoutDirection() on WebCore::Page to propagate the user interface layout direction down to the Web content. To facilitate this, the UserInterfaceLayoutDirection enum is now defined in WebCore. * Shared/WebPageCreationParameters.h: * UIProcess/API/Cocoa/WKWebView.mm: (convertSystemLayoutDirection): (toUserInterfaceLayoutDirection): * UIProcess/API/gtk/PageClientImpl.h: * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::toUserInterfaceLayoutDirection): (WebKit::WebViewImpl::userInterfaceLayoutDirection): * UIProcess/PageClient.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::userInterfaceLayoutDirection): (WebKit::WebPageProxy::setUserInterfaceLayoutDirection): * UIProcess/WebPageProxy.h: * UIProcess/efl/WebView.h: * UIProcess/ios/PageClientImplIOS.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::userInterfaceLayoutDirection): * UIProcess/mac/PageClientImpl.h: * UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::userInterfaceLayoutDirection): * UIProcess/mac/ViewGestureControllerMac.mm: (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanBecomeSwipe): (WebKit::ViewGestureController::isPhysicallySwipingLeft): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_userInterfaceLayoutDirection): (WebKit::WebPage::setUserInterfaceLayoutDirection): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::performNonEditingBehaviorForSelector): 2016-06-17 Dean Jackson <dino@apple.com> REGRESSION: Double tap to zoom does not work on yahoo finance https://bugs.webkit.org/show_bug.cgi?id=158886 <rdar://problem/24917760> Reviewed by Simon Fraser. We shouldn't enable fast click on pages that have had to shrink to fit. In other words, we should enable double-tap-to-zoom if the page has already zoomed. Test: fast/events/ios/viewport-shrink-to-fit-allows-double-tap.html * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _allowsDoubleTapGestures]): 2016-06-16 Chris Dumez <cdumez@apple.com> No need to ref connection in lambda inside NetworkResourceLoader::tryStoreAsCacheEntry() https://bugs.webkit.org/show_bug.cgi?id=158862 Reviewed by Darin Adler. No need to ref connection in lambda inside NetworkResourceLoader::tryStoreAsCacheEntry(). We already ref the NetworkResourceLoader which hold a ref to the connection. Also update the lambda capture to use Ref<> for the NetworkResourceLoader instead of RefPtr<>. Switch callback type from std::function to WTF::NoncopyableFunction so we can capture a Ref<>. * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::store): * NetworkProcess/cache/NetworkCache.h: * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::WriteOperation::WriteOperation): * NetworkProcess/cache/NetworkCacheStorage.h: 2016-06-16 Chris Dumez <cdumez@apple.com> [WK2] Improve serialization of SubresourcesEntry to network disk cache https://bugs.webkit.org/show_bug.cgi?id=158851 Reviewed by Antti Koivisto. Improve serialization of SubresourcesEntry to network disk cache: - Do not bother serializing SubresourceInfo's first party for cookies and HTTP headers data members if the resource is transient. This is because those are never used for transient resources. This patch also makes it so that we do not even bother initializing those data members if the transient flag is set. - Update SubresourceInfo::encode() / decode() to encode and decode the HTTPHeaderMap data member with the right NetworkCache::Coder template specialization instead of using directly HTTPHeaderMap::decode() and HTTPHeaderMap::encode(). HTTPHeaderMap::decode() / encode() is unsafe in the disk cache case (see r200394). Also update entry types as so: - "resource" -> "Resource" - "subresources" -> "SubResources" These entry types are used a folder names in the disk cache and other folder names were capitalized. Antti suggested this was a good time to harmonize since we're bumping the cache version. * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::constructRevalidationRequest): (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h: * NetworkProcess/cache/NetworkCacheStorage.h: * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: (WebKit::NetworkCache::SubresourceInfo::encode): (WebKit::NetworkCache::SubresourceInfo::decode): * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h: (WebKit::NetworkCache::SubresourceInfo::SubresourceInfo): (WebKit::NetworkCache::SubresourceInfo::isTransient): (WebKit::NetworkCache::SubresourceInfo::firstPartyForCookies): (WebKit::NetworkCache::SubresourceInfo::requestHeaders): 2016-06-16 Anders Carlsson <andersca@apple.com> Fix macOS Sierra build https://bugs.webkit.org/show_bug.cgi?id=158849 Reviewed by Tim Horton. Add WebCore:: qualifiers for IOSurface, to avoid conflicts with the IOSurface Objective-C class and adopt IOSurface::asLayerContents(). * Shared/mac/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::decode): (WebKit::RemoteLayerBackingStore::bytesPerPixel): (WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer): (WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer): (WebKit::RemoteLayerBackingStore::setBufferVolatility): (WebKit::RemoteLayerBackingStore::Buffer::discard): * UIProcess/mac/ViewSnapshotStore.mm: (WebKit::ViewSnapshot::create): (WebKit::ViewSnapshot::ViewSnapshot): (WebKit::ViewSnapshot::asLayerContents): 2016-06-16 Brady Eidson <beidson@apple.com> When a WebsiteDataStore finds no ProcessPools and creates one from scratch, it should represent the data store's config. rdar://problem/26586991 and https://bugs.webkit.org/show_bug.cgi?id=158844 Reviewed by Anders Carlsson. * UIProcess/API/APIProcessPoolConfiguration.cpp: (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration): * UIProcess/API/APIProcessPoolConfiguration.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::WebsiteDataStore): (WebKit::WebsiteDataStore::fetchData): (WebKit::WebsiteDataStore::removeData): (WebKit::WebsiteDataStore::processPools): * UIProcess/WebsiteData/WebsiteDataStore.h: 2016-06-15 Simon Fraser <simon.fraser@apple.com> [iOS WK2] On iPad, indirect focussing of a text field doesn't always scroll to the correct location https://bugs.webkit.org/show_bug.cgi?id=158828 Reviewed by Enrica Casucci. WebPage::getAssistedNodeInformation() unconditionally set information.selectionRect() to a 1x1 rect at the last interaction location. This caused -[WKWebView _zoomToFocusRect:...] to early return under the !forceScroll clause if the last interaction rect was visible, but the elementRect was not. This would happen, for example, if a click in a <button> focussed an input on some other portion of the page. This behavior is iPad-only, because forceScroll is only NO there. Fix by making getAssistedNodeInformation() only set the selectionRect to the last interaction location if that is inside of the elementRect (this caters to the case where a tap is inside an input which is larger than the screen). Otherwise, set it to the empty rect. Make this testable by allowing a test to opt into the iPad-style scrolling/zooming behavior in this code path (essentially, making forceScroll NO for testing), via testing SPI on WKWebView, plumbed through to WKContentView. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView forceIPadStyleZoomOnInputFocus]): (-[WKWebView setForceIPadStyleZoomOnInputFocus:]): * UIProcess/API/Cocoa/WKWebViewPrivate.h: * UIProcess/ios/WKContentViewInteraction.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _displayFormNodeInputView]): (-[WKContentView requiresAccessoryView:]): (-[WKContentView inputAccessoryView]): (-[WKContentView forceIPadStyleZoomOnInputFocus]): (-[WKContentView setForceIPadStyleZoomOnInputFocus:]): (-[WKContentView requiresAccessoryView]): Remove redundant returns, and allow testing to override the "isIPad" condition. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::getAssistedNodeInformation): 2016-06-15 Sam Weinig <sam@webkit.org> Forward/Back keyboard shortcuts need to flip for RTL https://bugs.webkit.org/show_bug.cgi?id=158823 <rdar://problem/25975359> Reviewed by Darin Adler. Pipe the UserInterfaceLayoutDirection down to the WebContentProcess on initialization and when it changes, and use it to flip the behavior of command-left and command-right when in RTL mode. Tests: WebKit2_CommandBackForwardTestWKView.LTR WebKit2_CommandBackForwardTestWKView.RTL WebKit2_CommandBackForwardTestWKWebView.LTR WebKit2_CommandBackForwardTestWKWebView.RTL * Shared/WebPageCreationParameters.cpp: (WebKit::WebPageCreationParameters::encode): (WebKit::WebPageCreationParameters::decode): * Shared/WebPageCreationParameters.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _webViewPrintFormatter]): (-[WKWebView setSemanticContentAttribute:]): (-[WKWebView _printOperationWithPrintInfo:forFrame:]): (-[WKWebView setUserInterfaceLayoutDirection:]): * UIProcess/API/mac/WKView.mm: (-[WKView setUserInterfaceLayoutDirection:]): * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::windowIsFrontWindowUnderMouse): (WebKit::toUserInterfaceLayoutDirection): (WebKit::WebViewImpl::userInterfaceLayoutDirection): (WebKit::WebViewImpl::setUserInterfaceLayoutDirection): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::creationParameters): (WebKit::WebPageProxy::userInterfaceLayoutDirection): (WebKit::WebPageProxy::setUserInterfaceLayoutDirection): * UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::hasHadSelectionChangesFromUserInteraction): * UIProcess/ios/WKContentView.mm: (-[WKContentView _commonInitializationWithProcessPool:configuration:]): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_userInterfaceLayoutDirection): (WebKit::WebPage::setResourceCachingDisabled): (WebKit::WebPage::setUserInterfaceLayoutDirection): (WebKit::m_shouldDispatchFakeMouseMoveEvents): Deleted. * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::performNonEditingBehaviorForSelector): 2016-06-15 Tim Horton <timothy_horton@apple.com> Expose _shouldExpandContentToViewHeightForAutoLayout SPI on WKWebView https://bugs.webkit.org/show_bug.cgi?id=158824 <rdar://problem/23713857> Reviewed by Simon Fraser. Test: TestWebKitAPI/WebKit2.AutoLayoutIntegration * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _shouldExpandContentToViewHeightForAutoLayout]): (-[WKWebView _setShouldExpandContentToViewHeightForAutoLayout:]): * UIProcess/API/Cocoa/WKWebViewPrivate.h: This property exists on WKView; expose it on WKWebView. 2016-06-15 Alex Christensen <achristensen@webkit.org> Revert part of r196034 https://bugs.webkit.org/show_bug.cgi?id=158805 rdar://problem/26788138 Reviewed by Dan Bernstein. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::~NetworkLoad): If the WebResourceLoader was destroyed and received a canAuthenticateAgainstProtectionSpace but did not send a continueCanAuthenticateAgainstProtectionSpace answer because there's no core loader, then the NetworkLoad will be destroyed. When this happens, we still need to call the callback for the challenge. * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::canAuthenticateAgainstProtectionSpace): If there's no core loader, we can't send IPC. 2016-06-13 Simon Fraser <simon.fraser@apple.com> [iOS WK2] Make it possible to test the Next/Previous buttons in the keyboard accessory bar https://bugs.webkit.org/show_bug.cgi?id=158714 Reviewed by Enrica Casucci. Add UIScriptController.keyboardAccessoryBar{Next,Previous} and hook it up to the WKContentView method that gets called from UIKit. Add a test that exercises it. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView keyboardAssistantBarNext]): (-[WKWebView keyboardAssistantBarPrevious]): * UIProcess/API/Cocoa/WKWebViewPrivate.h: 2016-06-15 Dean Jackson <dino@apple.com> RTL <select> forms are misplaced https://bugs.webkit.org/show_bug.cgi?id=158810 <rdar://problem/24847541> Reviewed by Eric Carlson. AppKit made a change in Sierra that causes popup menus to snap to a different point when the system language is RTL. We need to be more explicit about what directionality we want, and override the location of the popup based on the text direction. I also made a small tweak to the fudge offsets we use in order to make button text and menu text to be more consistent. Unfortunately since this is just about the location of the popup menu, it's unable to be tested in our current infrastructure. * UIProcess/mac/WebPopupMenuProxyMac.mm: (WebKit::WebPopupMenuProxyMac::showPopupMenu): 2016-06-15 Chris Dumez <cdumez@apple.com> Drop some unnecessary header includes https://bugs.webkit.org/show_bug.cgi?id=158788 Reviewed by Alexey Proskuryakov. Drop some unnecessary header includes in headers to speed up build time. * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm: * WebProcess/Plugins/PDF/PDFPluginAnnotation.mm: * WebProcess/Plugins/PDF/PDFPluginPasswordField.mm: * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm: * WebProcess/Plugins/PluginView.cpp: * WebProcess/WebPage/WebPage.cpp: 2016-06-15 Romain Bellessort <romain.bellessort@crf.canon.fr> Enabling Shadow DOM for all platforms https://bugs.webkit.org/show_bug.cgi?id=158738 Reviewed by Ryosuke Niwa. Removed Shadow DOM from options (enabled by default) (comprises removal of corresponding preprocessor directives) * Configurations/FeatureDefines.xcconfig: * WebProcess/InjectedBundle/InjectedBundle.cpp: * WebProcess/WebPage/WebPage.cpp: 2016-06-15 Antti Koivisto <antti@apple.com> Vary:Cookie validation doesn't work in private browsing https://bugs.webkit.org/show_bug.cgi?id=158616 <rdar://problem/26755067> Reviewed by Andreas Kling. * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: (WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue): Implement SessionID version of the function. * WebProcess/WebCoreSupport/WebPlatformStrategies.h: 2016-06-14 Chris Dumez <cdumez@apple.com> Avoid constructing a AuthenticationChallenge unnecessarily in the NetworkLoad constructor https://bugs.webkit.org/show_bug.cgi?id=158746 Reviewed by Darin Adler. Avoid constructing a AuthenticationChallenge unnecessarily in the NetworkLoad constructor by using WTF::Optional<> for this data member. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): * NetworkProcess/NetworkLoad.h: 2016-06-14 Chris Dumez <cdumez@apple.com> Add missing WTFMove() in NetworkResourceLoader::didReceiveResponse() https://bugs.webkit.org/show_bug.cgi?id=158745 Reviewed by Darin Adler. Add missing WTFMove() in NetworkResourceLoader::didReceiveResponse() to avoid copying the ResourceResponse. * NetworkProcess/NetworkResourceLoader.cpp: 2016-06-14 Chris Dumez <cdumez@apple.com> Reduce copying of NetworkLoadParameters https://bugs.webkit.org/show_bug.cgi?id=158744 Reviewed by Alex Christensen. Reduce copying of NetworkLoadParameters by moving it around instead. * NetworkProcess/Downloads/DownloadManager.cpp: (WebKit::DownloadManager::startDownload): * NetworkProcess/Downloads/PendingDownload.cpp: (WebKit::PendingDownload::PendingDownload): * NetworkProcess/Downloads/PendingDownload.h: * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::NetworkLoad): * NetworkProcess/NetworkLoad.h: * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::startNetworkLoad): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): 2016-06-14 Carlos Garcia Campos <cgarcia@igalia.com> [ThreadedCompositor] Opening the inspector in a window causes a crash. https://bugs.webkit.org/show_bug.cgi?id=154444 Reviewed by Žan Doberšek. The threaded compositor doesn't handle the case of changing or removing the native surface handle. When the web view is reparented, the current native surface handle is destroyed when the view is removed from the parent, and a new one is created when added to the new parent. We need to handle this case in the threaded compositor. * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp: (WebKit::CompositingRunLoop::stopUpdateTimer): Allow users to stop the update timer. * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h: * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): Use performTaskSync because this is called from a synchronous IPC message and right after it returns, the current native surface is destroyed by the UI process. So we need to ensure we finish all pending operations for the current native surface in the compositing thread before it's destroyed. Then we enable or disable the scene depending on whether the native surface has been created or destroyed and destroy the current context in case the new handle is 0. (WebKit::ThreadedCompositor::tryEnsureGLContext): Just renamed to make it clear that it can fail. (WebKit::ThreadedCompositor::glContext): (WebKit::ThreadedCompositor::renderLayerTree): Return early if scene is not active. * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: (WebKit::ThreadedCoordinatedLayerTreeHost::setNativeSurfaceHandleForCompositing): Schedule a new layer flush after the native surface handle changed. 2016-06-14 Carlos Garcia Campos <cgarcia@igalia.com> [Threaded Compositor] Modernize and simplify threaded compositor code https://bugs.webkit.org/show_bug.cgi?id=158615 Reviewed by Žan Doberšek. * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp: (WebKit::CompositingRunLoop::performTask): Use NoncopyableFunction. (WebKit::CompositingRunLoop::performTaskSync): Ditto. (WebKit::CompositingRunLoop::startUpdateTimer): Just renamed to start instead of set. (WebKit::CompositingRunLoop::run): Expose run/stop methods instead of the internal RunLoop object. (WebKit::CompositingRunLoop::stop): Also stop the update timer instead of relying on the caller to do it. (WebKit::CompositingRunLoop::setUpdateTimer): Deleted. (WebKit::CompositingRunLoop::stopUpdateTimer): Deleted. * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h: * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): Protects this directly in lambda capture. (WebKit::ThreadedCompositor::setDeviceScaleFactor): Ditto. (WebKit::ThreadedCompositor::didChangeViewportSize): Ditto. (WebKit::ThreadedCompositor::didChangeViewportAttribute): Ditto. (WebKit::ThreadedCompositor::didChangeContentsSize): Ditto. (WebKit::ThreadedCompositor::scrollTo): Ditto. (WebKit::ThreadedCompositor::scrollBy): Ditto. (WebKit::ThreadedCompositor::updateViewport): Use startUpdateTimer(). (WebKit::ThreadedCompositor::scheduleDisplayImmediately): Ditto. (WebKit::ThreadedCompositor::didChangeVisibleRect): Improve lambda captures. (WebKit::ThreadedCompositor::renderLayerTree): Use m_viewportController directly. (WebKit::ThreadedCompositor::createCompositingThread): Use createThread() version that receives a function. (WebKit::ThreadedCompositor::runCompositingThread): Use run method and don't stop the update timer when the run loop finishes. (WebKit::ThreadedCompositor::terminateCompositingThread): Use stop method. (WebKit::ThreadedCompositor::ThreadedCompositor): Deleted. (WebKit::ThreadedCompositor::compositingThreadEntry): Deleted. * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: (WebKit::ThreadedCompositor::viewportController): Deleted. 2016-06-14 Carlos Garcia Campos <cgarcia@igalia.com> [Threaded Compositor] Flickering and rendering artifacts when resizing the web view https://bugs.webkit.org/show_bug.cgi?id=154070 Reviewed by Žan Doberšek. Resizing the web view is expected to be a sync operation, the UI process creates a new backing store state ID, sends UpdateBackingStoreState message with the flag RespondImmediately to the web process and waits up to 500ms for the reply (DidUpdateBackingStoreState message). When using the threaded compositor, we schedule a task in the compositing thread to update the viewport size, and return immediately, so that we reply to the UI process before the compositing thread has actually updated its size. There's a moment in which sizes are out of sync causing the flickering and rendering artifacts, the UI process continues rendering at the new size, while the web process is still rendering at the previous size. We can prevent this from happening just by making the resize task synchronous in the threaded compositor. * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp: (WebKit::CompositingRunLoop::performTaskSync): Add sync version of performTask(). * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h: * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::didChangeViewportSize): Use performTaskSync(). 2016-06-14 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Fix Soup downloads after r201943. This is a follow up of r201943. The DownloadClient used in DownloadSoup was not updated to the new API of the ResourceHandleClient because it was not using override on the virtual methods, so it was unnoticed. That broke the downloads soup implementation, because didReceiveResponse is no longer used in the DownloadClient. This patch updates the DownloadClient to the new ResourceHandleClient API adding also override to all the virtual methods to prevent this from happening in the future. * NetworkProcess/Downloads/soup/DownloadSoup.cpp: (WebKit::Download::start): (WebKit::Download::startWithHandle): (WebKit::DownloadClient::DownloadClient): (WebKit::DownloadClient::downloadFailed): (WebKit::DownloadClient::didReceiveResponse): (WebKit::DownloadClient::didReceiveData): (WebKit::DownloadClient::didFinishLoading): (WebKit::DownloadClient::didFail): (WebKit::DownloadClient::wasBlocked): Deleted. (WebKit::DownloadClient::cannotShowURL): Deleted. (WebKit::DownloadClient::cancel): (WebKit::DownloadClient::handleResponse): 2016-06-13 Dan Bernstein <mitz@apple.com> [Mac] Web Content service with a restricted entitlement may load arbitrary dylibs https://bugs.webkit.org/show_bug.cgi?id=156668 <rdar://problem/26714558> Reviewed by Anders Carlsson. * Configurations/WebContentService.xcconfig: Enable library validation when the Web Content service is given the XPC domain extension entitlement when targeting macOS Sierra or later. 2016-06-13 Alex Christensen <achristensen@webkit.org> Add WebSocketProvider stub https://bugs.webkit.org/show_bug.cgi?id=158702 Reviewed by Brady Eidson. * WebKit2.xcodeproj/project.pbxproj: * WebProcess/Network/WebSocketProvider.h: Added. * WebProcess/WebPage/WebPage.cpp: (WebKit::m_shouldDispatchFakeMouseMoveEvents): 2016-06-10 Ada Chan <adachan@apple.com> Use the video element's video box when getting the inline video rect in WebVideoFullscreenManager https://bugs.webkit.org/show_bug.cgi?id=158351 <rdar://problem/26567938> Reviewed by Darin Adler. * WebProcess/cocoa/WebVideoFullscreenManager.mm: (WebKit::inlineVideoFrame): (WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement): (WebKit::WebVideoFullscreenManager::exitVideoFullscreenForVideoElement): (WebKit::WebVideoFullscreenManager::fullscreenMayReturnToInline): (WebKit::WebVideoFullscreenManager::setVideoLayerFrameFenced): (WebKit::clientRectForElement): Deleted. 2016-06-10 Benjamin Poulain <bpoulain@apple.com> Add support for passive event listeners on touch events https://bugs.webkit.org/show_bug.cgi?id=158601 Reviewed by Simon Fraser. * Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp: (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode): (ArgumentCoder<ScrollingStateFrameScrollingNode>::decode): (WebKit::dump): * Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<EventTrackingRegions>::encode): (IPC::ArgumentCoder<EventTrackingRegions>::decode): * Shared/WebCoreArgumentCoders.h: * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp: (WebKit::RemoteScrollingCoordinatorProxy::eventTrackingTypeForPoint): (WebKit::RemoteScrollingCoordinatorProxy::isPointInNonFastScrollableRegion): Deleted. * UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::touchEventTrackingType): The type is the most restrictive type of all the touch points. If any touch point needs synchronous tracking, everything has to be synchronous. (WebKit::WebPageProxy::handleTouchEventSynchronously): This is a very unfortunate design. The upper layer dealing with UIKit knows about gesture and when something can be dispatched asynchrnously because a gesture has started. This layer knows about tracking and can use that extra inforamtion to dispatch an event asynchrnously anyway. In the future, we should refactor this to let WebPageProxy always decide of the dispatch type. I am just concerned changing the upper layer while we are stabilizing WebKit. (WebKit::WebPageProxy::handleTouchEventAsynchronously): (WebKit::WebPageProxy::handleTouchEvent): (WebKit::WebPageProxy::resetState): (WebKit::WebPageProxy::WebPageProxy): Deleted. (WebKit::WebPageProxy::shouldStartTrackingTouchEvents): Deleted. * UIProcess/WebPageProxy.h: 2016-06-10 Beth Dakin <bdakin@apple.com> Add requestExitFullScreen to WKFullScreenWindowController https://bugs.webkit.org/show_bug.cgi?id=158633 -and corresponding- rdar://problem/26564036 Reviewed by Tim Horton. * UIProcess/mac/WKFullScreenWindowController.h: * UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController requestExitFullScreen]): 2016-06-10 Alex Christensen <achristensen@webkit.org> Reduce ResourceResponse copying https://bugs.webkit.org/show_bug.cgi?id=158232 Reviewed by Darin Adler. * NetworkProcess/Downloads/PendingDownload.h: * NetworkProcess/NetworkDataTask.h: * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::continueDidReceiveResponse): (WebKit::NetworkLoad::sharedDidReceiveResponse): (WebKit::NetworkLoad::sharedWillSendRedirectedRequest): (WebKit::NetworkLoad::didReceiveChallenge): (WebKit::NetworkLoad::didReceiveResponseNetworkSession): (WebKit::NetworkLoad::didReceiveResponseAsync): * NetworkProcess/NetworkLoad.h: * NetworkProcess/NetworkLoadClient.h: * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::retrieveCacheEntry): (WebKit::NetworkResourceLoader::abort): * NetworkProcess/NetworkResourceLoader.h: * NetworkProcess/PingLoad.h: * NetworkProcess/cache/NetworkCacheCoders.h: (WebKit::NetworkCache::Coder<Optional<T>>::encode): (WebKit::NetworkCache::Coder<Optional<T>>::decode): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTask::didCompleteWithError): (WebKit::NetworkDataTask::didReceiveResponse): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::url): (WebKit::WebFrame::certificateInfo): (WebKit::WebFrame::innerText): 2016-06-09 Ryosuke Niwa <rniwa@webkit.org> Add SPI to disable spellchecking on auto-fillable text fields https://bugs.webkit.org/show_bug.cgi?id=158611 Reviewed by Anders Carlsson. Added WKBundleNodeHandleSetHTMLInputElementSpellcheckEnabled to disable spellchecking on a text field. This is used by WebKit2 client which desires to disable spellchecking and notably autocorrection on login forms, etc... where such feature would interfere with user's actions. * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp: (WKBundleNodeHandleSetHTMLInputElementSpellcheckEnabled): Added. * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h: * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: (WebKit::InjectedBundleNodeHandle::setHTMLInputElementSpellcheckEnabled): Added. * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h: 2016-06-10 Alex Christensen <achristensen@webkit.org> Introduce WTF::UniqueRef https://bugs.webkit.org/show_bug.cgi?id=158596 Reviewed by Brady Eidson. * WebProcess/WebPage/WebPage.cpp: (WebKit::m_shouldDispatchFakeMouseMoveEvents): 2016-06-10 Anders Carlsson <andersca@apple.com> Remove CommandLine class https://bugs.webkit.org/show_bug.cgi?id=158628 Reviewed by Tim Horton. * Shared/CommandLine.h: Removed. (WebKit::CommandLine::operator[]): Deleted. * Shared/posix/CommandLinePOSIX.cpp: Removed. (WebKit::CommandLine::parse): Deleted. * WebKit2.xcodeproj/project.pbxproj: 2016-06-10 Simon Fraser <simon.fraser@apple.com> [iOS WK2] Rare RELEASE_ASSERT under RemoteLayerTreeDrawingArea::flushLayers() https://bugs.webkit.org/show_bug.cgi?id=158622 rdar://problem/26609452 Reviewed by Tim Horton. It's possible for a CADisplayLink to fire after being paused sometimes, possibly when an app is running another CADisplayLink whose callback takes some time. When this happens, RemoteLayerTreeDrawingAreaProxy could erroneously send a second didUpdate() to the web process between commits, which would clear the m_waitingForBackingStoreSwap flag too early, and allow a subsequent RemoteLayerTreeDrawingArea::flushLayers() to proceed when the m_pendingBackingStoreFlusher was still flushing. Fix by preventing two didUpdates from being sent from the UI process between commits. Not easily testable. * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h: * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): (WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay): 2016-06-10 Carlos Garcia Campos <cgarcia@igalia.com> [Threaded Compositor] Content and viewport sizes are mixed https://bugs.webkit.org/show_bug.cgi?id=158564 Reviewed by Žan Doberšek. Make ThreadedCoordinatedLayerTreeHost::sizeDidChange() update the viewport size for consistency with all other LayerTreeHost implementations and rename viewportSizeChanged() as contentsSizeChanged() and update the contents size. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::contentsSizeChanged): Remove ifdefed code here, the drawing area is notified two lines below. * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp: (WebKit::CoordinatedDrawingArea::mainFrameContentSizeChanged): Update the viewport size to the contents size only when using a fixed layout here instead of in cross-platform code. * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: (WebKit::ThreadedCoordinatedLayerTreeHost::contentsSizeChanged): (WebKit::ThreadedCoordinatedLayerTreeHost::sizeDidChange): (WebKit::ThreadedCoordinatedLayerTreeHost::viewportSizeChanged): Deleted. * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: * WebProcess/WebPage/DrawingAreaImpl.cpp: (WebKit::DrawingAreaImpl::mainFrameContentSizeChanged): Call LayerTreeHost::contentsSizeChanged(). (WebKit::DrawingAreaImpl::updateBackingStoreState): Remove ifdefed code for the threadecd compositor since it's now consistent with all other LayerTreeHost implementations. * WebProcess/WebPage/LayerTreeHost.h: 2016-06-10 Carlos Garcia Campos <cgarcia@igalia.com> [Threaded Compositor] Make it clear that compositing thread operations are always scheduled from the main thread https://bugs.webkit.org/show_bug.cgi?id=158562 Reviewed by Žan Doberšek. The code is written as if the compositor thread could also call callOnCompositingRunLoop() which makes the code confusing. This patch no longer checks if the task was scheduled in the compositing thread, and instead it adds an ASSERT to ensure it's always called from the main thread as expected. It also adds some more ASSERTS to ensure and clarify the methods are called from the expected thread. * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp: (WebKit::CompositingRunLoop::performTask): (WebKit::CompositingRunLoop::callOnCompositingRunLoop): Deleted. * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h: * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): (WebKit::ThreadedCompositor::setDeviceScaleFactor): (WebKit::ThreadedCompositor::didChangeViewportSize): (WebKit::ThreadedCompositor::didChangeViewportAttribute): (WebKit::ThreadedCompositor::didChangeContentsSize): (WebKit::ThreadedCompositor::scrollTo): (WebKit::ThreadedCompositor::scrollBy): (WebKit::ThreadedCompositor::glContext): (WebKit::ThreadedCompositor::didChangeVisibleRect): (WebKit::ThreadedCompositor::renderLayerTree): (WebKit::ThreadedCompositor::updateSceneState): (WebKit::ThreadedCompositor::callOnCompositingThread): Deleted. * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: 2016-06-10 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] Browser plugins crash under Wayland https://bugs.webkit.org/show_bug.cgi?id=157605 Reviewed by Michael Catanzaro. Fail the initialization of windowed plugins if we don't have a platform implementation. * WebProcess/Plugins/Netscape/unix/NetscapePluginUnix.cpp: (WebKit::NetscapePlugin::platformPostInitialize): 2016-06-09 Antoine Quint <graouts@apple.com> [iOS] -webkit-overflow-scrolling: touch; ignores pointer-events: none; https://bugs.webkit.org/show_bug.cgi?id=119839 <rdar://problem/9671514> Reviewed by Simon Fraser. Propagate a "userInteractionEnabled" flag from the Web process which is used to turn off user interaction on a UIScrollView created for -webkit-overflow-scrolling: touch. * Shared/mac/RemoteLayerTreePropertyApplier.mm: (WebKit::RemoteLayerTreePropertyApplier::applyProperties): * Shared/mac/RemoteLayerTreeTransaction.h: * Shared/mac/RemoteLayerTreeTransaction.mm: (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties): (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode): (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): (WebKit::dumpChangedLayers): * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::userInteractionEnabled): (WebKit::PlatformCALayerRemote::setUserInteractionEnabled): * WebProcess/WebPage/mac/PlatformCALayerRemote.h: 2016-06-09 Anders Carlsson <andersca@apple.com> Remove OriginAndDatabases.cpp, it's unused https://bugs.webkit.org/show_bug.cgi?id=158595 Reviewed by Sam Weinig. * CMakeLists.txt: * Shared/OriginAndDatabases.cpp: Removed. (WebKit::OriginAndDatabases::encode): Deleted. (WebKit::OriginAndDatabases::decode): Deleted. * Shared/OriginAndDatabases.h: Removed. * WebKit2.xcodeproj/project.pbxproj: 2016-06-09 Alex Christensen <achristensen@webkit.org> Clean up EditorClient lifetime https://bugs.webkit.org/show_bug.cgi?id=158588 Reviewed by Anders Carlsson. * WebProcess/WebCoreSupport/WebEditorClient.cpp: (WebKit::generateTextCheckingRequestID): (WebKit::WebEditorClient::shouldDeleteRange): (WebKit::WebEditorClient::pageDestroyed): Deleted. * WebProcess/WebCoreSupport/WebEditorClient.h: (WebKit::WebEditorClient::WebEditorClient): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_shouldDispatchFakeMouseMoveEvents): 2016-06-09 Andy Estes <aestes@apple.com> WKWebView does not render PDF pages in AirPrint https://bugs.webkit.org/show_bug.cgi?id=151386 rdar://problem/22499157 Reviewed by Tim Horton. _WKWebViewPrintFormatter originally attempted to handle PDFs, but the code path was never properly tested since Safari prints PDFs by setting a printingItem on the UIPrintInteractionController instead of going through a print formatter. The existing code almost worked, if it weren't for CGContextScaleCTM() scaling each page into oblivion due to _totalScaleFactor equaling 0. This patch properly implements -[_WKWebViewPrintFormatter drawInRect:forPageAtIndex:] to handle drawing both PDFs generated by WebKit and PDFs loaded in the main frame. It also takes the opportunity to clean up a number of issues in the existing code: - Handling of -[_WKWebViewPrintFormatter startPage] is now correct. I had previously assumed this property represented the first page of output to print, but it actually represents the first page in the overall print job that the print formatter renders. In other words, regardless of -startPage, the print formatter should always print all its pages. - Code specific to webpage and PDF printing was factored out into WKContentView and WKPDFView, respectively. Each conforms to @protocol(_WKWebViewPrintProvider), and _WKWebViewPrintFormatter accesses the provider via -[WKWebView _printProvider]. - Instead of piping the printed PDF data from WebPageProxy to WKWebView via PageClient, use the GenericCallback mechanism to have WebPageProxy call a lambda specified by WKContentView when the printed PDF is available. - Removed _totalScaleFactor and used CGPDFPageGetDrawingTransform() to transform both webpages and PDFs. For webpages, _totalScaleFactor will always equal the ratio of the paper width to the PDF page width, so CGPDFPageGetDrawingTransform() will apply the same scaling as CGContextScaleCTM(_totalScaleFactor, _totalScaleFactor) would. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _printProvider]): Added. Returns _currentContentView if it conforms to @protocol(_WKWebViewPrintProvider). (-[WKWebView _computePageCountAndStartDrawingToPDFForFrame:printInfo:firstPage:computedTotalScaleFactor:]): Moved code to _wk_pageCountForPrintFormatter in WKContentView and WKPDFView. (-[WKWebView _endPrinting]): Deleted. (-[WKWebView _printedDocument]): Deleted. (-[WKWebView _setPrintedDocument:]): Deleted. * UIProcess/API/Cocoa/WKWebViewInternal.h: Declared the _printProvider property. * UIProcess/PageClient.h: Removed didFinishDrawingPagesToPDF(). * UIProcess/WebPageProxy.h: Declared computePagesForPrintingAndDrawToPDF() and drawToPDFCallback(). * UIProcess/WebPageProxy.messages.in: Renamed DidFinishDrawingPagesToPDF to DrawToPDFCallback. * UIProcess/_WKWebViewPrintFormatter.mm: Backed the frameToPrint property with a RetainPtr ivar so that it doesn't need to be released manually in -dealloc; removed _totalScaleFactor and _printInfo ivars and added a _printedDocument ivar; removed the property declaration for webView. (-[_WKWebViewPrintFormatter frameToPrint]): Added a custom getter for the frameToPrint property. (-[_WKWebViewPrintFormatter setFrameToPrint:]): Added a custom setter for the frameToPrint property. (-[_WKWebViewPrintFormatter _webView]): Renamed from webView; added an underscore since this is a private method. (-[_WKWebViewPrintFormatter _recalcPageCount]): Retrieved the page count from the print provider and clamped its value to NSIntegerMax. (-[_WKWebViewPrintFormatter drawInRect:forPageAtIndex:]): Retrieved the printed document from the print provider if needed; modified the CTM transformations to work for both webpages and PDFs. (-[_WKWebViewPrintFormatter dealloc]): Deleted. (-[_WKWebViewPrintFormatter webView]): Renamed to _webView. (-[_WKWebViewPrintFormatter rectForPageAtIndex:]): Deleted. * UIProcess/_WKWebViewPrintFormatterInternal.h: Added. Moved a UIPrintFormatter internal method declaration to here and defined the _WKWebViewPrintProvider protocol. * UIProcess/ios/PageClientImplIOS.h: Removed didFinishDrawingPagesToPDF(). * UIProcess/ios/PageClientImplIOS.mm: Ditto. (WebKit::PageClientImpl::didFinishDrawingPagesToPDF): Deleted. * UIProcess/ios/WKContentView.mm: Conformed to @protocol(_WKWebViewPrintProvider). (-[WKContentView _wk_pageCountForPrintFormatter:]): Moved the code to compute page count from WKWebView to here. (-[WKContentView _wk_printedDocument]): Moved the code to get the printed document from WKWebView to here. * UIProcess/ios/WKPDFView.mm: (-[WKPDFView _wk_pageCountForPrintFormatter:]): Moved the code to compute the page count from WKWebView to here; added a call to CGPDFDocumentAllowsPrinting(), returning 0 if printing is not allowed. (-[WKPDFView _wk_printedDocument]): Moved the code to get the printed document from WKWebView to here. * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF): Registered the callback with m_callbacks and sent Messages::WebPage::ComputePagesForPrintingAndDrawToPDF; returned the synchronously-returned page count. (WebKit::WebPageProxy::drawToPDFCallback): Added to perform the callback when drawing to PDF is complete. (WebKit::WebPageProxy::didFinishDrawingPagesToPDF): Deleted. * WebKit2.xcodeproj/project.pbxproj: Added _WKWebViewPrintFormatterInternal.h. * WebProcess/WebPage/WebPage.h: Renamed computePagesForPrintingAndStartDrawingToPDF() to computePagesForPrintingAndDrawToPDF(). * WebProcess/WebPage/WebPage.messages.in: Renamed ComputePagesForPrintingAndStartDrawingToPDF to ComputePagesForPrintingAndDrawToPDF. Removed the startPage parameter and added a callbackID. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::computePagesForPrintingAndDrawToPDF): Renamed from computePagesForPrintingAndStartDrawingToPDF(). Added a call to endPrinting() after sending Messages::WebPageProxy::DrawToPDFCallback. (WebKit::WebPage::computePagesForPrintingAndStartDrawingToPDF): Renamed to computePagesForPrintingAndDrawToPDF. 2016-06-09 Alex Christensen <achristensen@webkit.org> Clean up WebSocket code https://bugs.webkit.org/show_bug.cgi?id=158551 Reviewed by Darin Adler. * WebProcess/FileAPI/BlobRegistryProxy.cpp: (WebKit::BlobRegistryProxy::registerFileBlobURL): * WebProcess/FileAPI/BlobRegistryProxy.h: 2016-06-09 David Kilzer <ddkilzer@apple.com> Update properties for UIWKTextInteractionAssistant <https://webkit.org/b/158559> Reviewed by Darin Adler. * Platform/spi/ios/UIKitSPI.h: (UIWKTextInteractionAssistant.loupeGesture): (UIWKTextInteractionAssistant.singleTapGesture): Change from retain to assign since UIWKTextInteractionAssistant is not responsible for their lifetime. Sort alphabetically. 2016-06-09 Michael Saboff <msaboff@apple.com> WebKitTestRunner and DumpRenderTree do not handle dangling surrogate characters https://bugs.webkit.org/show_bug.cgi?id=154863 Reviewed by Alexey Proskuryakov. Added a non-strict verions of WKStringGetUTF8CString() that will handle dangling surrogates called WKStringGetUTF8CStringNonStrict(). * Shared/API/c/WKString.cpp: (WKStringGetUTF8CStringImpl): (WKStringGetUTF8CString): (WKStringGetUTF8CStringNonStrict): * Shared/API/c/WKString.h: 2016-06-09 Carlos Garcia Campos <cgarcia@igalia.com> [Threaded Compositor] Many layout tests crash when threaded compositor is enabled https://bugs.webkit.org/show_bug.cgi?id=158560 Reviewed by Žan Doberšek. This is because CoordinatedGraphicsLayer::notifyFlushRequired() assumes it has a valid compositor when it's called. But the compositor is only present when GraphicsLayer::create() is called with a GraphicsLayerFactory. When running the layout tests, layers are created without a factory because DrawingAreaImpl is not entering AC mode as expected and the layer tree host is not created, making DrawingAreaImpl::graphicsLayerFactory() always return nullptr. This happens because DrawingAreaImpl is checking acceleratedDrawingEnabled setting to decide whether to always use compositing mode or not, and WTR sets that setting to false (changing its default value). The thing is that acceleratedDrawingEnabled setting doesn't have any effect in non-Mac ports, what we really want to check there is whether acceleratedCompositingEnabled is true or false. * WebProcess/WebPage/DrawingAreaImpl.cpp: (WebKit::DrawingAreaImpl::updatePreferences): 2016-06-09 Carlos Garcia Campos <cgarcia@igalia.com> [Threaded Compositor] Remove ThreadedCompositor::setNeedsDisplay() https://bugs.webkit.org/show_bug.cgi?id=158523 Reviewed by Michael Catanzaro. ThreadedCompositor::setNeedsDisplay() is always called from the main thread and schedules a task to the compositing thread to schedule an immediate update. But RunLoop::Timer is thread-safe so we don't really need to schedule a task to the update the timer in the compositing thread, we can do that directly in the main thread. And that's exactly what scheduleDisplayImmediately() does, so we can use it instead of setNeedsDisplay(). * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::setNeedsDisplay(): Deleted. (WebKit::ThreadedCompositor::updateSceneState): * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: 2016-06-08 Antti Koivisto <antti@apple.com> Increase disk cache capacity when there is lots of free space https://bugs.webkit.org/show_bug.cgi?id=158526 Reviewed by Chris Dumez. Our maximum disk cache capacity has been 175MB for a very long time. Meanwhile the average resource size has grown massively. 175MB is now enough for cacheable resources of a few dozen sites at most. Using bigger caches when there is room for it can reduce network traffic, reduce disk writes, save battery and speed up page loading. This patch changes cache size for PrimaryWebBrowser cache model >=16GB free: 175MB -> 500MB 8-16GB free: 150MB -> 250MB and modestly for DocumentBrowser >=16GB free: 50MB -> 75MB Note that if system (on Cocoa platforms) really needs disk space it will wipe out caches so this doesn't reduce available disk space in scenarios like software installation. * Shared/CacheModel.cpp: (WebKit::calculateCacheSizes): 2016-06-08 Youenn Fablet <youenn.fablet@crf.canon.fr> Introduce ResourceErrorBase::type https://bugs.webkit.org/show_bug.cgi?id=158299 Reviewed by Alex Christensen. * Shared/soup/WebCoreArgumentCodersSoup.cpp: (IPC::ArgumentCoder<ResourceError>::encodePlatformData): (IPC::ArgumentCoder<ResourceError>::decodePlatformData): 2016-06-08 Beth Dakin <bdakin@apple.com> _web_didAddMediaControlsManager should take a controlsManager as a parameter https://bugs.webkit.org/show_bug.cgi?id=158545 Reviewed by Tim Horton. * UIProcess/Cocoa/WebViewImpl.h: 2016-06-06 Antti Koivisto <antti@apple.com> WebKit memory cache doesn't respect Vary header https://bugs.webkit.org/show_bug.cgi?id=71509 <rdar://problem/26651033> Reviewed by Sam Weinig. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::makeCacheKey): (WebKit::NetworkCache::cachePolicyAllowsExpired): (WebKit::NetworkCache::makeUseDecision): (WebKit::NetworkCache::Cache::retrieve): (WebKit::NetworkCache::Cache::store): (WebKit::NetworkCache::Cache::storeRedirect): (WebKit::NetworkCache::Cache::update): (WebKit::NetworkCache::headerValueForVary): Deleted. (WebKit::NetworkCache::collectVaryingRequestHeaders): Deleted. (WebKit::NetworkCache::verifyVaryingRequestHeaders): Deleted. These move to WebCore. 2016-06-08 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Fix GTK+ build with threaded compositor enabled after r201802. * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: (WebKit::ThreadedCoordinatedLayerTreeHost::create): 2016-06-08 Carlos Garcia Campos <cgarcia@igalia.com> LayerTreeHost should be created with a WebPage reference instead of a pointer https://bugs.webkit.org/show_bug.cgi?id=158520 Reviewed by Žan Doberšek. We are indeed creating the LayerTreeHost always from a WebPage reference but getting its address to pass it to the LayerTreeHost create() function. * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp: (WebKit::CoordinatedDrawingArea::enterAcceleratedCompositingMode): * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp: (WebKit::CoordinatedLayerTreeHost::create): (WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost): (WebKit::CoordinatedLayerTreeHost::didFlushRootLayer): (WebKit::CoordinatedLayerTreeHost::performScheduledLayerFlush): (WebKit::CoordinatedLayerTreeHost::commitSceneState): (WebKit::CoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged): * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h: * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: (WebKit::ThreadedCoordinatedLayerTreeHost::create): (WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): (WebKit::ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged): (WebKit::ThreadedCoordinatedLayerTreeHost::compositorDidFlushLayers): (WebKit::ThreadedCoordinatedLayerTreeHost::didScaleFactorChanged): (WebKit::ThreadedCoordinatedLayerTreeHost::setVisibleContentsRect): * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: * WebProcess/WebPage/DrawingAreaImpl.cpp: (WebKit::DrawingAreaImpl::enterAcceleratedCompositingMode): * WebProcess/WebPage/LayerTreeHost.cpp: (WebKit::LayerTreeHost::create): (WebKit::LayerTreeHost::LayerTreeHost): * WebProcess/WebPage/LayerTreeHost.h: * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp: (WebKit::LayerTreeHostGtk::create): (WebKit::LayerTreeHostGtk::LayerTreeHostGtk): (WebKit::LayerTreeHostGtk::makeContextCurrent): (WebKit::LayerTreeHostGtk::deviceOrPageScaleFactorChanged): (WebKit::LayerTreeHostGtk::paintContents): (WebKit::LayerTreeHostGtk::deviceScaleFactor): (WebKit::LayerTreeHostGtk::pageScaleFactor): (WebKit::LayerTreeHostGtk::flushPendingLayerChanges): (WebKit::LayerTreeHostGtk::flushAndRenderLayers): (WebKit::LayerTreeHostGtk::pageBackgroundTransparencyChanged): (WebKit::LayerTreeHostGtk::initialize): Deleted. * WebProcess/WebPage/gtk/LayerTreeHostGtk.h: 2016-06-07 Sam Weinig <sam@webkit.org> Fix 10.10 build. * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm: (WebKit::addAnimationToLayer): 2016-06-06 Alex Christensen <achristensen@webkit.org> Modernize loading code https://bugs.webkit.org/show_bug.cgi?id=158332 Reviewed by Darin Adler. * NetworkProcess/Downloads/PendingDownload.h: * NetworkProcess/NetworkDataTask.h: (WebKit::NetworkDataTask::client): * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didReceiveResponseNetworkSession): (WebKit::NetworkLoad::didReceiveData): (WebKit::NetworkLoad::didReceiveBuffer): * NetworkProcess/NetworkLoad.h: * NetworkProcess/NetworkLoadClient.h: * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::didReceiveBuffer): (WebKit::NetworkResourceLoader::didFinishLoading): * NetworkProcess/NetworkResourceLoader.h: * NetworkProcess/PingLoad.h: * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::didReceiveBuffer): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTask::didReceiveResponse): (WebKit::NetworkDataTask::didReceiveData): * Shared/WebHitTestResultData.cpp: * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::didReceiveResource): 2016-06-05 Sam Weinig <sam@webkit.org> Add experimental support for spring based CSS animations https://bugs.webkit.org/show_bug.cgi?id=158403 Reviewed by Dean Jackson. * Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<StepsTimingFunction>::decode): (IPC::ArgumentCoder<SpringTimingFunction>::encode): (IPC::ArgumentCoder<SpringTimingFunction>::decode): (IPC::ArgumentCoder<FloatPoint>::encode): * Shared/WebCoreArgumentCoders.h: * Shared/WebPreferencesDefinitions.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm: (WebKit::PlatformCAAnimationRemote::Properties::encode): (WebKit::PlatformCAAnimationRemote::Properties::decode): (WebKit::addAnimationToLayer): Pipe through support for the Spring animation. 2016-06-07 Michael Catanzaro <mcatanzaro@igalia.com> [GTK] Hide GTK+ 2 plugins if GTK+ 2 plugin process was built but is not installed https://bugs.webkit.org/show_bug.cgi?id=158419 Reviewed by Carlos Garcia Campos. Patch by Alberto Garcia <berto@igalia.com> * UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp: (WebKit::PluginInfoStore::getPluginInfo): * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: (WebKit::PluginProcessProxy::scanPlugin): 2016-06-06 Antoine Quint <graouts@apple.com> Position of WebGL <canvas> on iOS is incorrect with CSS borders https://bugs.webkit.org/show_bug.cgi?id=156790 Reviewed by Simon Fraser. WebGL layers on iOS are hosted by a WKRemoteView, which applies a transform scaling its content by the inverse of the device pixel ratio, which affects how positions are applied to the WebGL layer. The container layer of the layer hosted by a WKRemoteView then has an inverse transform applied to it in the PlatformCALayerRemoteCustom constructor. However, the position of a CALayer is not affected by its transform. The fix for <rdar://problem/18316542> should be specific to video, so we only apply the scaling in the case of a LayerTypeAVPlayerLayer. * UIProcess/ios/RemoteLayerTreeHostIOS.mm: (-[WKRemoteView initWithFrame:contextID:]): (WebKit::RemoteLayerTreeHost::createLayer): (-[WKRemoteView initWithFrame:contextID:hostingDeviceScaleFactor:]): Deleted. * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm: (WebKit::PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom): 2016-06-06 Brady Eidson <beidson@apple.com> Fix build after r201717 Unreviewed. * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles): * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::grantSandboxExtensionsToDatabaseProcessForBlobs): * NetworkProcess/NetworkProcess.h: 2016-06-06 Brady Eidson <beidson@apple.com> Modern IDB: Crash seen in IDBConnectionProxy::putOrAdd on GuardMalloc bot https://bugs.webkit.org/show_bug.cgi?id=158124 Reviewed by Darin Adler. * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp: (WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles): * NetworkProcess/FileAPI/NetworkBlobRegistry.h: * WebProcess/FileAPI/BlobRegistryProxy.cpp: (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles): * WebProcess/FileAPI/BlobRegistryProxy.h: * WebProcess/Network/NetworkProcessConnection.cpp: (WebKit::NetworkProcessConnection::didClose): (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles): * WebProcess/Network/NetworkProcessConnection.h: 2016-06-06 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r201706. https://bugs.webkit.org/show_bug.cgi?id=158427 This change broke the Yosemite build and its LayoutTest is failing on Mac and iOS testers (Requested by ryanhaddad on #webkit). Reverted changeset: "Add experimental support for spring based CSS animations" https://bugs.webkit.org/show_bug.cgi?id=158403 http://trac.webkit.org/changeset/201706 2016-06-06 Alex Christensen <achristensen@webkit.org> Reduce ResourceRequest copying in loading code https://bugs.webkit.org/show_bug.cgi?id=158251 Reviewed by Darin Adler. * NetworkProcess/Downloads/DownloadManager.cpp: (WebKit::DownloadManager::continueCanAuthenticateAgainstProtectionSpace): (WebKit::DownloadManager::continueWillSendRequest): (WebKit::DownloadManager::willDecidePendingDownloadDestination): * NetworkProcess/Downloads/DownloadManager.h: * NetworkProcess/Downloads/PendingDownload.cpp: (WebKit::PendingDownload::PendingDownload): (WebKit::PendingDownload::willSendRedirectedRequest): (WebKit::PendingDownload::continueWillSendRequest): (WebKit::PendingDownload::canAuthenticateAgainstProtectionSpaceAsync): * NetworkProcess/Downloads/PendingDownload.h: * NetworkProcess/NetworkDataTask.h: (WebKit::NetworkDataTask::firstRequest): * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::cancel): (WebKit::NetworkLoad::continueWillSendRequest): (WebKit::NetworkLoad::sharedDidReceiveResponse): (WebKit::NetworkLoad::sharedWillSendRedirectedRequest): (WebKit::NetworkLoad::setPendingDownload): (WebKit::NetworkLoad::willPerformHTTPRedirection): (WebKit::NetworkLoad::didReceiveChallenge): (WebKit::NetworkLoad::didFail): (WebKit::NetworkLoad::willSendRequestAsync): * NetworkProcess/NetworkLoad.h: (WebKit::NetworkLoad::currentRequest): (WebKit::NetworkLoad::clearCurrentRequest): (WebKit::NetworkLoad::pendingDownloadID): * NetworkProcess/NetworkLoadClient.h: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpace): (WebKit::NetworkProcess::continueWillSendRequest): (WebKit::NetworkProcess::pendingDownloadCanceled): * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::didFailLoading): (WebKit::NetworkResourceLoader::willSendRedirectedRequest): (WebKit::NetworkResourceLoader::continueWillSendRequest): (WebKit::NetworkResourceLoader::continueDidReceiveResponse): * NetworkProcess/NetworkResourceLoader.h: * NetworkProcess/PingLoad.h: (WebKit::PingLoad::PingLoad): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::~SpeculativeLoad): (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTask::didBecomeDownload): (WebKit::NetworkDataTask::willPerformHTTPRedirection): * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::detachFromCoreLoader): (WebKit::WebResourceLoader::willSendRequest): * WebProcess/Network/WebResourceLoader.h: 2016-06-05 Sam Weinig <sam@webkit.org> Add experimental support for spring based CSS animations https://bugs.webkit.org/show_bug.cgi?id=158403 Reviewed by Dean Jackson. * Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<StepsTimingFunction>::decode): (IPC::ArgumentCoder<SpringTimingFunction>::encode): (IPC::ArgumentCoder<SpringTimingFunction>::decode): (IPC::ArgumentCoder<FloatPoint>::encode): * Shared/WebCoreArgumentCoders.h: * Shared/WebPreferencesDefinitions.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm: (WebKit::PlatformCAAnimationRemote::Properties::encode): (WebKit::PlatformCAAnimationRemote::Properties::decode): (WebKit::addAnimationToLayer): Pipe through support for the Spring animation. 2016-06-05 Yusuke Suzuki <utatane.tea@gmail.com> Change ProxyObject.[[Get]] not to use custom accessor https://bugs.webkit.org/show_bug.cgi?id=157080 Reviewed by Darin Adler. * WebProcess/Plugins/Netscape/JSNPObject.cpp: (WebKit::JSNPObject::propertyGetter): (WebKit::JSNPObject::methodGetter): * WebProcess/Plugins/Netscape/JSNPObject.h: 2016-06-05 Brady Eidson <beidson@apple.com> Unreviewed, rolling out r201694. 201693 Reverted changeset: "Fix the build after r201693." https://bugs.webkit.org/show_bug.cgi?id=158394 http://trac.webkit.org/changeset/201694 2016-06-05 Brady Eidson <beidson@apple.com> Fix the build after r201693. https://bugs.webkit.org/show_bug.cgi?id=158394 Reviewed by NOBODY (Build fix). r201693 landed without the Source/WebKit2 changes, and I didn't have EWS/CQ available to check myself. *sigh* * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp: (WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles): * NetworkProcess/FileAPI/NetworkBlobRegistry.h: * WebProcess/FileAPI/BlobRegistryProxy.cpp: (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles): * WebProcess/FileAPI/BlobRegistryProxy.h: * WebProcess/Network/NetworkProcessConnection.cpp: (WebKit::NetworkProcessConnection::didClose): (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles): * WebProcess/Network/NetworkProcessConnection.h: 2016-06-03 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r201663. https://bugs.webkit.org/show_bug.cgi?id=158374 Broke the Windows build (Requested by andersca on #webkit). Reverted changeset: "Rename NoncopyableFunction to Function" https://bugs.webkit.org/show_bug.cgi?id=158354 http://trac.webkit.org/changeset/201663 2016-06-03 Anders Carlsson <andersca@apple.com> Rename NoncopyableFunction to Function https://bugs.webkit.org/show_bug.cgi?id=158354 Reviewed by Chris Dumez. * NetworkProcess/NetworkProcess.cpp: (WebKit::fetchDiskCacheEntries): (WebKit::NetworkProcess::fetchWebsiteData): (WebKit::clearDiskCacheEntries): * NetworkProcess/NetworkProcess.h: * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::traverse): * NetworkProcess/cache/NetworkCache.h: * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp: (WebKit::NetworkCache::runTaskInQueue): * NetworkProcess/cache/NetworkCacheStorage.h: 2016-06-03 Chris Dumez <cdumez@apple.com> Unreviewed, roll out r196633 as it broke PageCache on iOS for WebKit.org <rdar://problem/26521101> * WebProcess/WebPage/VisitedLinkTableController.cpp: (WebKit::VisitedLinkTableController::setVisitedLinkTable): (WebKit::VisitedLinkTableController::visitedLinkStateChanged): (WebKit::VisitedLinkTableController::allVisitedLinkStateChanged): (WebKit::VisitedLinkTableController::removeAllVisitedLinks): 2016-06-03 Csaba Osztrogonác <ossy@webkit.org> Fix the !ENABLE(INDEXED_DATABASE) build after r201575 https://bugs.webkit.org/show_bug.cgi?id=158346 Reviewed by Brady Eidson. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::fetchWebsiteData): (WebKit::DatabaseProcess::deleteWebsiteData): (WebKit::DatabaseProcess::deleteWebsiteDataForOrigins): 2016-06-02 Chris Dumez <cdumez@apple.com> Crash under WebProcess::registerWithStateDumper() https://bugs.webkit.org/show_bug.cgi?id=158304 <rdar://problem/25329276> Reviewed by Anders Carlsson. The issue is that the block in registerWithStateDumper() was executed in a background thread and is iterating over m_pageMap HashMap. The crash occurs when a page gets removed from the m_pageMap HashMap while the block is iterating over this same HashMap in another thread. The solution proposed is to execute the registerWithStateDumper()'s block in the main thread. * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::registerWithStateDumper): 2016-06-02 Brady Eidson <beidson@apple.com> Overhaul cross-thread use of ResourceRequest, ResourceResponse, and ResourceError. https://bugs.webkit.org/show_bug.cgi?id=158293 Reviewed by Darin Adler. * NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::Entry): 2016-06-02 Chris Dumez <cdumez@apple.com> Modernize various lambda captures https://bugs.webkit.org/show_bug.cgi?id=158292 Reviewed by Brady Eidson. Modernize various lambda captures, especially the ones unnecessarily allocating objects on the heap and destroying them in the lambda. * NetworkProcess/NetworkProcess.cpp: (WebKit::fetchDiskCacheEntries): (WebKit::clearDiskCacheEntries): (WebKit::NetworkProcess::fetchWebsiteData): Deleted. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::traverse): * NetworkProcess/cache/NetworkCache.h: * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation): * NetworkProcess/cache/NetworkCacheStorage.h: 2016-06-02 Chris Dumez <cdumez@apple.com> Speculative revalidated request returns 200 instead of 304 https://bugs.webkit.org/show_bug.cgi?id=158256 Reviewed by Antti Koivisto and Carlos Garcia Campos. Already conditional requests coming from WebCore should bypass the SpeculativeLoadManager. This is because the validation is requested by WebCore (usually the memory cache) and not our network cache. As a result, we need to pipe the revalidation response (e.g. 304 status code) back to WebCore instead of resolving it as disk cache level. This should fix the /webkit2/WebKitWebResource/response unit test. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::retrieve): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::requestsHeadersMatch): 2016-06-02 Youenn Fablet <youenn.fablet@crf.canon.fr> Use more references in ResourceLoader related code https://bugs.webkit.org/show_bug.cgi?id=158222 Reviewed by Darin Adler. * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::loadResource): (WebKit::WebLoaderStrategy::schedulePluginStreamLoad): (WebKit::WebLoaderStrategy::scheduleLoad): (WebKit::WebLoaderStrategy::scheduleInternallyFailedLoad): (WebKit::WebLoaderStrategy::startLocalLoad): (WebKit::WebLoaderStrategy::networkProcessCrashed): * WebProcess/Network/WebLoaderStrategy.h: * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::create): (WebKit::WebResourceLoader::WebResourceLoader): * WebProcess/Network/WebResourceLoader.h: * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::Stream::start): 2016-06-01 Yongjun Zhang <yongjun_zhang@apple.com> Notify client immediately if network session doesn't exist for a synchronous XHR load. https://bugs.webkit.org/show_bug.cgi?id=158239 <rdar://problem/26344251> Reviewed by Brady Eidson. For a synchronous XHR load, if the network session doesn't exist, we should notify NetworkLoadClient. Otherwise the Web process could hang when waiting for the synchronous load to finish. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::NetworkLoad): 2016-05-31 Brian Burg <bburg@apple.com> REGRESSION(r191907): Can't enter combining diacritic marks in Web Inspector fields https://bugs.webkit.org/show_bug.cgi?id=158227 <rdar://problem/26232464> Reviewed by Darin Adler and Alexey Proskuryakov. Web Inspector uses a WKWebView subclass for the inspector frontend interface. Since r191907, WKWebView does not have an inner WKView, and instead shares a WebViewImpl to implement the same methods as WKView. So, WKView is no longer involved at all when delivering keystrokes to the Web Inspector interface. This caused a subtle regression where some keystrokes were not being interpreted in the same way by AppKit because WKWebView does not conform to NSTextInputClient but WKView does. AppKit won't automatically create a NSTextInputContext for a NSView unless the subclass is declared as conforming to NSTextInputClient. Thus, the keystroke never goes through NSTextInputContext machinery which converts the keystroke into a combining diacritic character. This regression is covered by a new API test. * UIProcess/API/Cocoa/WKWebView.mm: mark WKWebView as conforming to NSTextInputClient. 2016-06-01 Dan Bernstein <mitz@apple.com> Try to fix ENABLE(IOS_TOUCH_EVENTS) builds. * WebProcess/WebPage/EventDispatcher.cpp: (WebKit::EventDispatcher::touchEvent): 2016-05-31 Darin Adler <darin@apple.com> Audit RenderObject casts and fix problems and style issues found https://bugs.webkit.org/show_bug.cgi?id=158221 Reviewed by Chris Dumez. * Shared/WebRenderObject.cpp: (WebKit::WebRenderObject::WebRenderObject): Tightened up the code that builds the tree of objects; fewer local variables. * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::invalidateRect): Cast to RenderEmbeddedObject since that is the class used for plug-ins. (WebKit::PluginView::pluginProcessCrashed): Ditto. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::createPlugin): Ditto. (WebKit::WebPage::plugInIsPrimarySize): Check the renderer for null here. Did not change this to RenderEmbeddedObject, though, because I wasn't absolute certain this is only called with that type of renderer. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::rangeForWebSelectionAtPosition): Tweaked. 2016-06-01 Brady Eidson <beidson@apple.com> Modernize lambda usage for all callers of RunLoop::dispatch() (take 2). https://bugs.webkit.org/show_bug.cgi?id=158277 Reviewed by Chris Dumez. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::deleteDumpFile): * Platform/IPC/Connection.cpp: (IPC::Connection::addWorkQueueMessageReceiver): (IPC::Connection::removeWorkQueueMessageReceiver): (IPC::Connection::invalidate): (IPC::Connection::sendMessage): (IPC::Connection::processIncomingMessage): (IPC::Connection::postConnectionDidCloseOnConnectionWorkQueue): * UIProcess/Storage/LocalStorageDatabaseTracker.cpp: (WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker): * UIProcess/Storage/StorageManager.cpp: (WebKit::StorageManager::createSessionStorageNamespace): (WebKit::StorageManager::destroySessionStorageNamespace): (WebKit::StorageManager::setAllowedSessionStorageNamespaceConnection): (WebKit::StorageManager::cloneSessionStorageNamespace): (WebKit::StorageManager::processDidCloseConnection): * UIProcess/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded): * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::fetchData): (WebKit::WebsiteDataStore::removeData): 2016-06-01 Chris Dumez <cdumez@apple.com> [iOS] Regression(r200972): Crash under WebKit::WebPage::selectTextWithGranularityAtPoint() https://bugs.webkit.org/show_bug.cgi?id=158284 <rdar://problem/26573954> Reviewed by Ryosuke Niwa. range can be null but r200972 started dereferencing it without null check. This patch adds a null check for range and uses the pre-r200972 code path if range is null. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::selectTextWithGranularityAtPoint): 2016-06-01 Brady Eidson <beidson@apple.com> Modernize lambda usage for all callers of RunLoop::dispatch(). https://bugs.webkit.org/show_bug.cgi?id=158265 Reviewed by Chris Dumez. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::fetchWebsiteData): (WebKit::DatabaseProcess::deleteWebsiteData): (WebKit::DatabaseProcess::deleteWebsiteDataForOrigins): * NetworkProcess/NetworkProcess.cpp: (WebKit::fetchDiskCacheEntries): (WebKit::NetworkProcess::fetchWebsiteData): * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::remove): (WebKit::NetworkCache::retrieveFromMemory): * Platform/IPC/Connection.cpp: (IPC::Connection::SyncMessageState::processIncomingMessage): (IPC::Connection::processIncomingMessage): (IPC::Connection::connectionDidClose): (IPC::Connection::enqueueIncomingMessage): * Platform/IPC/mac/ConnectionMac.mm: (IPC::Connection::receiveSourceEventHandler): * Shared/mac/CookieStorageShim.mm: (-[WKNSURLSessionLocal _getCookieHeadersForTask:completionHandler:]): * UIProcess/API/APIUserContentExtensionStore.cpp: (API::UserContentExtensionStore::lookupContentExtension): (API::UserContentExtensionStore::compileContentExtension): (API::UserContentExtensionStore::removeContentExtension): * UIProcess/Launcher/ProcessLauncher.cpp: (WebKit::ProcessLauncher::ProcessLauncher): * UIProcess/Launcher/mac/ProcessLauncherMac.mm: (WebKit::connectToService): * UIProcess/Storage/StorageManager.cpp: (WebKit::StorageManager::getSessionStorageOrigins): (WebKit::StorageManager::deleteSessionStorageOrigins): (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins): (WebKit::StorageManager::getLocalStorageOrigins): (WebKit::StorageManager::getLocalStorageOriginDetails): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin): (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::isWebProcessResponsive): * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::isResponsive): * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::fetchData): * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::pluginThreadAsyncCall): * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::unprotectPluginFromDestruction): * WebProcess/WebPage/EventDispatcher.cpp: (WebKit::EventDispatcher::wheelEvent): (WebKit::EventDispatcher::gestureEvent): (WebKit::EventDispatcher::touchEvent): * WebProcess/WebPage/ViewUpdateDispatcher.cpp: (WebKit::ViewUpdateDispatcher::visibleContentRectUpdate): 2016-05-31 Yusuke Suzuki <utatane.tea@gmail.com> Unreviewed, roll out r201481, r201523: 0.3% regression in Octane code-load https://bugs.webkit.org/show_bug.cgi?id=158249 * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKPreferencesPrivate.h: 2016-05-31 Beth Dakin <bdakin@apple.com> Add two optional items to WebViewImplDelegate https://bugs.webkit.org/show_bug.cgi?id=158242 -and corresponding- rdar://problem/26473095 Reviewed by Tim Horton. * UIProcess/Cocoa/WebViewImpl.h: 2016-05-31 Jer Noble <jer.noble@apple.com> REGRESSION (r201405): trailers.apple.com HUD is missing in fullscreen https://bugs.webkit.org/show_bug.cgi?id=158156 <rdar://problem/26519589> Reviewed by Darin Adler. Only increase the frame of the webView (to account for top content inset) in one dimension. * UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController enterFullScreen:]): 2016-05-31 Chris Dumez <cdumez@apple.com> [iOS] Better deal with WebProcess suspension due to screen locking https://bugs.webkit.org/show_bug.cgi?id=158229 <rdar://problem/17665473> <rdar://problem/26554699> Reviewed by Tim Horton. When locking the screen while MobileSafari is front-most, we would try keep trying to mark IOSurfaces as volatile until the 30 seconds timeout was reached. This patch deals more cleanly with this situation by only trying to mark IOSurfaces as volatile once if the suspension is due to screen locking. In such case, it is apparently expected that some IOSurfaces cannot be marked as volatile so it is enough to try once and let ourselves get suspended. This patch also reduces the timeout from 30 seconds to ~3 seconds in the other suspension cases (e.g. homing out of MobileSafari). If we fail to mark them as purgeable for 3 seconds for a reason or another, it is no use in retrying, it is simply not going to happen and there is no reason to delay process suspension any further. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::callVolatilityCompletionHandlers): (WebKit::WebPage::layerVolatilityTimerFired): (WebKit::WebPage::markLayersVolatileImmediatelyIfPossible): (WebKit::WebPage::markLayersVolatile): * WebProcess/WebPage/WebPage.h: (WebKit::WebPage::markLayersVolatile): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::applicationDidEnterBackground): (WebKit::WebPage::applicationWillEnterForeground): 2016-05-31 Brady Eidson <beidson@apple.com> Make createCrossThreadTask() functions return on the stack instead of the heap. https://bugs.webkit.org/show_bug.cgi?id=158215 Reviewed by Darin Adler. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::postDatabaseTask): (WebKit::DatabaseProcess::performNextDatabaseTask): (WebKit::DatabaseProcess::fetchWebsiteData): * DatabaseProcess/DatabaseProcess.h: 2016-05-31 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Update OptionsGTK.cmake and NEWS for 2.13.1 release. * gtk/NEWS: Add release notes for 2.13.1. 2016-05-31 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Fix GTK+ clean build after r201504. * DatabaseProcess/DatabaseProcess.cpp: Add missing include. 2016-05-30 Brady Eidson <beidson@apple.com> Move CrossThreadCopier/CrossThreadTask to WTF. https://bugs.webkit.org/show_bug.cgi?id=158207 Reviewed by Alex Christensen. * CMakeLists.txt: * WebKit2.xcodeproj/project.pbxproj: * DatabaseProcess/DatabaseProcess.cpp: * DatabaseProcess/DatabaseProcess.h: * Shared/WebCrossThreadCopier.cpp: Removed. * Shared/WebCrossThreadCopier.h: Removed. 2016-05-28 Chris Dumez <cdumez@apple.com> Templatize NoncopyableFunction class similarly to std::function https://bugs.webkit.org/show_bug.cgi?id=158185 Reviewed by Darin Adler. Templatize NoncopyableFunction class similarly to std::function, so that it can be used as a std::function replacement in more places. Previously, NoncopyableFunction could only support "void()" lambdas. * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp: (WebKit::NetworkCache::runTaskInQueue): 2016-05-28 Alexey Proskuryakov <ap@apple.com> Fix the build with newer clang and other custom configuration options https://bugs.webkit.org/show_bug.cgi?id=158161 Reviewed by Dan Bernstein. * NetworkProcess/ios/NetworkProcessIOS.mm: -setAllowsSpecificHTTPSCertificate:forHost: is now in CFNetworkSPI.h * NetworkProcess/mac/NetworkProcessMac.mm: Ditto. * Shared/mac/CookieStorageShimLibrary.cpp: (WebKit::WebKitCookieStorageShimInitialize): Use more portable std::call_once. 2016-05-28 Chris Dumez <cdumez@apple.com> Modernize lambda captures in the network disk cache implementation https://bugs.webkit.org/show_bug.cgi?id=158179 Reviewed by Darin Adler. Modernize lambda captures in the network disk cache implementation. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::retrieve): (WebKit::NetworkCache::Cache::store): (WebKit::NetworkCache::Cache::traverse): * NetworkProcess/cache/NetworkCache.h: * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp: (WebKit::NetworkCache::inputStreamReadReadyCallback): (WebKit::NetworkCache::outputStreamWriteReadyCallback): * NetworkProcess/cache/NetworkCacheStatistics.cpp: (WebKit::NetworkCache::Statistics::initialize): (WebKit::NetworkCache::Statistics::shrinkIfNeeded): (WebKit::NetworkCache::Statistics::queryWasEverRequested): * NetworkProcess/cache/NetworkCacheStatistics.h: * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::updateFileModificationTime): (WebKit::NetworkCache::Storage::clear): 2016-05-27 Caitlin Potter <caitp@igalia.com> [JSC] implement async functions proposal https://bugs.webkit.org/show_bug.cgi?id=156147 Reviewed by Yusuke Suzuki. * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKPreferencesPrivate.h: 2016-05-27 Chris Dumez <cdumez@apple.com> Improve lambda capture in NetworkCache::Storage::synchronize() https://bugs.webkit.org/show_bug.cgi?id=158176 Reviewed by Brady Eidson. Improve lambda capture in NetworkCache::Storage::synchronize(). We can now capture the std::unique_ptr<> variables directly thanks to: 1. C++14's support for initializer's in lambda captures 2. RunLoop::dispatch() now takes a NoncopyableFunction in instead of a std::function, allowing us to capture non-copyable variables. * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::synchronize): 2016-05-27 Jeremy Jones <jeremyj@apple.com> Decrease flicker when changing video presentation mode. https://bugs.webkit.org/show_bug.cgi?id=158148 rdar://problem/24476949 Reviewed by Tim Horton. Prevent flicker by using setVideoFullscreenLayer with a completion handler to delay enter fullscreen and cleanup fullscreen until the video layer has completely been installed or removed. * WebProcess/cocoa/WebVideoFullscreenManager.mm: (WebKit::WebVideoFullscreenManager::didSetupFullscreen): (WebKit::WebVideoFullscreenManager::didExitFullscreen): 2016-05-27 Chris Dumez <cdumez@apple.com> WorkQueue::dispatch() / RunLoop::dispatch() should not copy captured lambda variables https://bugs.webkit.org/show_bug.cgi?id=158111 Reviewed by Darin Adler. WorkQueue::dispatch() / RunLoop::dispatch() should not copy captured lambda variables. These are often used cross-thread and copying the captured lambda variables can be dangerous (e.g. we do not want to copy a String after calling isolatedCopy() upon capture). * NetworkProcess/NetworkProcess.cpp: (WebKit::clearDiskCacheEntries): * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::clear): * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp: (WebKit::NetworkCache::runTaskInQueue): * Platform/IPC/Connection.cpp: (IPC::Connection::processIncomingMessage): * UIProcess/Storage/StorageManager.cpp: (WebKit::StorageManager::getSessionStorageOrigins): (WebKit::StorageManager::deleteSessionStorageOrigins): (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins): (WebKit::StorageManager::getLocalStorageOrigins): (WebKit::StorageManager::getLocalStorageOriginDetails): (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): * UIProcess/Storage/StorageManager.h: 2016-05-27 Alex Christensen <achristensen@webkit.org> Expose content extension failure error codes in SPI https://bugs.webkit.org/show_bug.cgi?id=158095 rdar://problem/26475651 Reviewed by Anders Carlsson. * UIProcess/API/APIUserContentExtensionStore.cpp: (API::UserContentExtensionStore::synchronousRemoveAllContentExtensions): (API::UserContentExtensionStore::invalidateContentExtensionVersion): Added for testing. (API::userContentExtensionStoreErrorCategory): * UIProcess/API/APIUserContentExtensionStore.h: * UIProcess/API/Cocoa/_WKUserContentExtensionStore.h: Added the new enum, _WKUserContentExtensionStoreErrorCode. * UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm: (-[_WKUserContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]): Sometimes the error code returned by UserContentExtensionStore::compileContentExtension has the error code from compileRuleList. When this happens, we want to get the message from the internal compiler error, but we want the NSError's code to always be CompileFailed. (-[_WKUserContentExtensionStore lookupContentExtensionForIdentifier:completionHandler:]): (-[_WKUserContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]): (-[_WKUserContentExtensionStore _removeAllContentExtensions]): (-[_WKUserContentExtensionStore _invalidateContentExtensionVersionForIdentifier:]): * UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h: Added new invalidator for testing. 2016-05-27 Zalan Bujtas <zalan@apple.com> Regression(r200972): Webcore::Range::collectSelectionsRects() asserts in startContainer() while selecting text. https://bugs.webkit.org/show_bug.cgi?id=158155 <rdar://problem/26502712> Reviewed by Chris Dumez. This patch ensures that we still have a valid paragraphRange after returning from enclosingTextUnitOfGranularity(). * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::selectTextWithGranularityAtPoint): 2016-05-26 Brady Eidson <beidson@apple.com> Certain NetworkResourceLoader callbacks can deref a null m_networkLoad. https://bugs.webkit.org/show_bug.cgi?id=158134 Reviewed by Alex Christensen. It's legit for m_networkLoad to be null in these callbacks. We need null checks, just like we have in many other callbacks in this class. * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::continueWillSendRequest): (WebKit::NetworkResourceLoader::continueCanAuthenticateAgainstProtectionSpace): 2016-05-26 Darin Adler <darin@apple.com> Media queries and platform screen modernization and streamlining https://bugs.webkit.org/show_bug.cgi?id=158067 Reviewed by Alex Christensen. * Shared/mac/WebEventFactory.mm: (WebKit::screenForWindow): Deleted. (WebKit::flipScreenPoint): Deleted. (WebKit::globalPoint): Deleted. (WebKit::globalPointForEvent): Use globalPoint function from WebCore so we don't need copies of everything in here. * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::windowDidChangeScreen): Removed unneeded type cast. (WebKit::WebViewImpl::draggedImage): Added type cast since globalPoint now returns an NSPoint rather than an IntPoint. * UIProcess/WebPageProxy.h: Use pragma once. Add a WebCore prefix to a use of PlatformDisplayID, since that is now inside the WebCore namespace. * WebProcess/WebCoreSupport/WebChromeClient.h: Ditto. * WebProcess/WebPage/Cocoa/RemoteLayerTreeDisplayRefreshMonitor.h: Ditto. * WebProcess/WebPage/DrawingArea.h: Ditto. * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: Ditto. 2016-05-26 Gyuyoung Kim <gyuyoung.kim@webkit.org> Purge PassRefPtr in Modules/battery https://bugs.webkit.org/show_bug.cgi?id=157062 Reviewed by Darin Adler. Use RefPtr<>& to reduce uses of PassRefPtr in WebKit. * WebProcess/Battery/WebBatteryManager.cpp: (WebKit::WebBatteryManager::didChangeBatteryStatus): (WebKit::WebBatteryManager::updateBatteryStatus): * WebProcess/WebPage/WebPage.cpp: (WebKit::m_shouldDispatchFakeMouseMoveEvents): 2016-05-26 Myles C. Maxfield <mmaxfield@apple.com> Build fix Rubber stamped by Lucas Forschler. * Configurations/DebugRelease.xcconfig: 2016-05-25 Jer Noble <jer.noble@apple.com> Flashiness and jumpiness when entering fullscreen https://bugs.webkit.org/show_bug.cgi?id=158087 Reviewed by Beth Dakin. Multiple independant sources of jumpiness and flashiness are addressed here: - Setting the top content inset on the WKView cause a vertical jump during fullscreen transition. Instead of setting the content inset to 0, take the existing inset into account when placing the WKView in the NSWindow. - The enter fullscreen transition causes a white flash due to the NSWindow needing display before ordering onscreen. Ensure the window has a backing by calling -displayIfNeeded before entering fullscreen mode. - The exit fullscreen transition causes a white background color flash for an unknown reason, but is solved by not making the window's content view layer-backed. Rather than directly animating the contentView's background color, create a specific background view and animate it's background color instead. * UIProcess/mac/WKFullScreenWindowController.h: * UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController initWithWindow:webView:page:]): (-[WKFullScreenWindowController enterFullScreen:]): (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): (-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]): * WebProcess/FullScreen/WebFullScreenManager.cpp: (WebKit::WebFullScreenManager::saveScrollPosition): Deleted. (WebKit::WebFullScreenManager::restoreScrollPosition): Deleted. 2016-05-25 Alex Christensen <achristensen@webkit.org> Fix CMake build. * PlatformMac.cmake: 2016-05-25 Chris Dumez <cdumez@apple.com> Simplify a few lambda captures in the network cache code https://bugs.webkit.org/show_bug.cgi?id=158076 Reviewed by Antti Koivisto. Simplify a few lambda captures in the network cache code by WTFMoving upon capture. * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::retrieve): (WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage): (WebKit::NetworkCache::SpeculativeLoadManager::retrieveSubresourcesEntry): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h: * NetworkProcess/cache/NetworkCacheStatistics.cpp: (WebKit::NetworkCache::Statistics::bootstrapFromNetworkCache): (WebKit::NetworkCache::Statistics::recordNotUsingCacheForRequest): (WebKit::NetworkCache::Statistics::recordRetrievalFailure): (WebKit::NetworkCache::Statistics::writeTimerFired): (WebKit::NetworkCache::Statistics::addHashesToDatabase): (WebKit::NetworkCache::Statistics::addStoreDecisionsToDatabase): * NetworkProcess/cache/NetworkCacheStatistics.h: 2016-05-25 Fujii Hironori <Hironori.Fujii@sony.com> [Unix] Potential buffer overrun of m_fileDescriptors in readBytesFromSocket of ConnectionUnix.cpp https://bugs.webkit.org/show_bug.cgi?id=158058 Reviewed by Carlos Garcia Campos. Memcpy does not check the boundary of m_fileDescriptors in readBytesFromSocket of ConnectionUnix.cpp. This is not a problem in normal cases, but in the case when Web process is hijacked and malicious IPC packets were sent. WTF::Vector already has two members m_capacity and m_size. There is no need to have a separate member m_fileDescriptorsSize to remember the number of remaining data. * Platform/IPC/Connection.h: Remove members m_readBufferSize and m_fileDescriptorsSize. * Platform/IPC/unix/ConnectionUnix.cpp: (IPC::Connection::platformInitialize): Removed initialization of m_readBufferSize and m_fileDescriptorsSize. Reserve initial capacity for m_readBuffer and m_fileDescriptors. (IPC::Connection::processMessage): Replace m_readBufferSize and m_fileDescriptorsSize with m_readBuffer.size() and m_fileDescriptors.size(). Use Vector::shrink() to reset the number of remaining data in the buffers. (IPC::readBytesFromSocket) : Change argument types to WTF::Vector instead of pointers and sizes. (IPC::Connection::readyReadHandler): Call new readBytesFromSocket 2016-05-25 Chris Dumez <cdumez@apple.com> Update constructRevalidationRequest() to stop returning a unique_ptr<ResourceRequest> https://bugs.webkit.org/show_bug.cgi?id=158046 Reviewed by Darin Adler. Update constructRevalidationRequest() to stop returning a unique_ptr<ResourceRequest> and to return a ResourceRequest instead. There is no reason for it to return a pointer. * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::constructRevalidationRequest): (WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::PreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::revalidationRequest): (WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h: 2016-05-25 Antoine Quint <graouts@apple.com> Elements with backdrop-filter cannot be clipped with clip-path or mask https://bugs.webkit.org/show_bug.cgi?id=142662 <rdar://problem/20150192> Reviewed by Dean Jackson. Ensure layer clones are set up with the same shape path as their original layer. * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::updateClonedLayerProperties): 2016-05-24 Chris Dumez <cdumez@apple.com> Simplify a couple of lambda captures in the network cache code https://bugs.webkit.org/show_bug.cgi?id=158053 Reviewed by Brady Eidson. * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry): Just capture subResourceInfo instead of allocating a new copy on the heap. There is no reason we cannot simply capture subResourceInfo here. * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::clear): Use new C++14 capture with initialization to make the code a bit nicer. 2016-05-24 Conrad Shultz <conrad_shultz@apple.com> _WKThumbnailView should expose its snapshot size https://bugs.webkit.org/show_bug.cgi?id=158049 Reviewed by Tim Horton. * UIProcess/API/Cocoa/_WKThumbnailView.h: * UIProcess/API/Cocoa/_WKThumbnailView.mm: (-[_WKThumbnailView _didTakeSnapshot:]): Update the new snapshotSize property in a KVO-compliant manner. 2016-05-24 Ryan Haddad <ryanhaddad@apple.com> Unreviewed, rolling out r201349. This change caused compositing tests to assert on iOS simulator Reverted changeset: "Elements with backdrop-filter cannot be clipped with clip- path or mask" https://bugs.webkit.org/show_bug.cgi?id=142662 http://trac.webkit.org/changeset/201349 2016-05-24 Ryan Haddad <ryanhaddad@apple.com> Unreviewed, rolling out r201341. This change may have caused LayoutTests to crash on Mac and iOS Reverted changeset: "Use lambda capture with initializer instead of StringCapture" https://bugs.webkit.org/show_bug.cgi?id=158010 http://trac.webkit.org/changeset/201341 2016-05-24 Alex Christensen <achristensen@webkit.org> Fix null pointer dereferencing in WebViewImpl::inputContext https://bugs.webkit.org/show_bug.cgi?id=158026 rdar://problem/25994093 Reviewed by Tim Horton. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView inputContext]): this was null sometimes in WebViewImpl::inputContext. 2016-05-24 Antoine Quint <graouts@apple.com> Elements with backdrop-filter cannot be clipped with clip-path or mask https://bugs.webkit.org/show_bug.cgi?id=142662 <rdar://problem/20150192> Reviewed by Dean Jackson. Ensure layer clones are set up with the same shape path as their original layer. * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::updateClonedLayerProperties): 2016-05-24 Chelsea Pugh <cpugh@apple.com> [iOS] Allow clients to override the type of an input field https://bugs.webkit.org/show_bug.cgi?id=157995 Reviewed by Dan Bernstein. * UIProcess/API/Cocoa/_WKFormInputSession.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKFormInputSession textContentType]): Getter for textContentType. (-[WKFormInputSession setTextContentType:]): Set the textContentType and reload input views. (contentTypeFromFieldName): Factor out switch statement to get text content type from autofill field name into its own function. (-[WKContentView textInputTraits]): If the client has set a text content type, set the traits' content type to that. Otherwise, set the text content type if there is one based on the assisted node information's autofill field name. If neither the form input session nor the assisted node info yields a text content type, set the text content type to nil, its default value. 2016-05-24 Chris Dumez <cdumez@apple.com> Use lambda capture with initializer instead of StringCapture https://bugs.webkit.org/show_bug.cgi?id=158010 Reviewed by Antti Koivisto. Use lambda capture with initializer instead of StringCapture now that we support C++14. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::deleteDumpFile): * NetworkProcess/cache/NetworkCacheStatistics.cpp: (WebKit::NetworkCache::Statistics::initialize): (WebKit::NetworkCache::Statistics::shrinkIfNeeded): * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::updateFileModificationTime): (WebKit::NetworkCache::Storage::clear): * UIProcess/API/APIUserContentExtensionStore.cpp: (API::UserContentExtensionStore::lookupContentExtension): (API::UserContentExtensionStore::compileContentExtension): (API::UserContentExtensionStore::removeContentExtension): * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::fetchData): (WebKit::WebsiteDataStore::removeData): 2016-05-24 Chris Dumez <cdumez@apple.com> Use auto for some of our lambda function parameters https://bugs.webkit.org/show_bug.cgi?id=158001 Reviewed by Darin Adler. Use auto for some of our lambda function parameters now that we build with c++14. * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: (WebKit::WebIDBConnectionToClient::didGetRecord): * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles): * NetworkProcess/NetworkProcess.cpp: (WebKit::fetchDiskCacheEntries): (WebKit::NetworkProcess::fetchWebsiteData): (WebKit::clearDiskCacheEntries): * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::retrieveCacheEntry): (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::registerLoad): (WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage): (WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry): (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry): (WebKit::NetworkCache::SpeculativeLoadManager::retrieveSubresourcesEntry): * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::removeFromPendingWriteOperations): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]): * Shared/API/Cocoa/_WKRemoteObjectInterface.mm: (-[_WKRemoteObjectInterface debugDescription]): * UIProcess/API/C/WKApplicationCacheManager.cpp: (WKApplicationCacheManagerGetApplicationCacheOrigins): * UIProcess/API/C/WKKeyValueStorageManager.cpp: (WKKeyValueStorageManagerGetKeyValueStorageOrigins): (WKKeyValueStorageManagerGetStorageDetailsByOrigin): * UIProcess/API/C/WKResourceCacheManager.cpp: (WKResourceCacheManagerGetCacheOrigins): * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: (-[WKWebsiteDataStore _fetchDataRecordsOfTypes:withOptions:completionHandler:]): * UIProcess/UserContent/WebUserContentControllerProxy.cpp: (WebKit::WebUserContentControllerProxy::removeAllUserScripts): (WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets): (WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers): * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::removeAnimationForKey): 2016-05-23 Yusuke Suzuki <utatane.tea@gmail.com> Assertion failure for Reflect.get with Proxy and primitive value as explicit receiver https://bugs.webkit.org/show_bug.cgi?id=157080 Reviewed by Saam Barati. * WebProcess/Plugins/Netscape/JSNPObject.cpp: (WebKit::JSNPObject::propertyGetter): (WebKit::JSNPObject::methodGetter): * WebProcess/Plugins/Netscape/JSNPObject.h: 2016-05-23 Chris Dumez <cdumez@apple.com> Generate bindings code for EventTarget.addEventListener() / removeEventListener() https://bugs.webkit.org/show_bug.cgi?id=157882 Reviewed by Darin Adler. Generate bindings code for EventTarget.addEventListener() / removeEventListener() instead of hardcoding them in the bindings generator. * WebProcess/Plugins/PDF/PDFPluginAnnotation.h: * WebProcess/Plugins/PDF/PDFPluginAnnotation.mm: (WebKit::PDFPluginAnnotation::attach): (WebKit::PDFPluginAnnotation::~PDFPluginAnnotation): * WebProcess/Plugins/PDF/PDFPluginPasswordField.mm: (WebKit::PDFPluginPasswordField::~PDFPluginPasswordField): (WebKit::PDFPluginPasswordField::createAnnotationElement): * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm: (WebKit::PDFPluginTextAnnotation::~PDFPluginTextAnnotation): (WebKit::PDFPluginTextAnnotation::createAnnotationElement): 2016-05-23 Beth Dakin <bdakin@apple.com> Need SPI for clients to require a user action to get an editing controls manager https://bugs.webkit.org/show_bug.cgi?id=157992 -and corresponding- rdar://problem/26379927 Reviewed by Tim Horton. New SPI _setRequiresUserActionForEditingControlsManager. The SPI defaults to False, which means that by default there is no user action requirement to have an editing controls manager. The SPI is on WKViewPrivate and WKWebViewConfigurationPrivate, and it’s implemented in WebViewImpl. * UIProcess/API/Cocoa/WKViewPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _requiresUserActionForEditingControlsManager]): (-[WKWebViewConfiguration _setRequiresUserActionForEditingControlsManager:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * UIProcess/API/mac/WKView.mm: (-[WKView _requiresUserActionForEditingControlsManager]): (-[WKView _setRequiresUserActionForEditingControlsManager:]): * UIProcess/Cocoa/WebViewImpl.h: (WebKit::WebViewImpl::setRequiresUserActionForEditingControlsManager): (WebKit::WebViewImpl::requiresUserActionForEditingControlsManager): New message allows the WebProcess to tell the UI process whether the current web page has had any selection changes based on user interaction. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setHasHadSelectionChangesFromUserInteraction): * UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::hasHadSelectionChangesFromUserInteraction): * UIProcess/WebPageProxy.messages.in: m_userIsInteracting m_hasFocusedDueToUserInteraction used to be iOS only, but now we want to track them for Mac as well. * WebProcess/WebPage/WebPage.cpp: Handling mouse events and key events will toggle m_userIsInteracting. (WebKit::WebPage::mouseEvent): (WebKit::WebPage::keyEvent): m_userIsInteracting is no longer iOS-only. (WebKit::WebPage::setInitialFocus): Send a message to the UI process on page transition to re-set hasHadSelectionChangesFromUserInteraction to false. (WebKit::WebPage::didStartPageTransition): Send a message to the UI process if this is the first selection change to happen as a result of a user action. (WebKit::WebPage::didChangeSelection): * WebProcess/WebPage/WebPage.h: 2016-05-23 Alex Christensen <achristensen@webkit.org> Add logging for NSURLSession calls https://bugs.webkit.org/show_bug.cgi?id=157996 Reviewed by Brady Eidson. * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTask::NetworkDataTask): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (toNSURLSessionResponseDisposition): (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:dataTask:willCacheResponse:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]): (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]): * Platform/Logging.h: 2016-05-23 Chris Fleizach <cfleizach@apple.com> AX: iOS: when bringing focus to a text field we may zoom the page even if author wanted max scale = 1 https://bugs.webkit.org/show_bug.cgi?id=157771 Reviewed by Tim Horton. * Shared/AssistedNodeInformation.cpp: (WebKit::AssistedNodeInformation::encode): (WebKit::AssistedNodeInformation::decode): * Shared/AssistedNodeInformation.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _displayFormNodeInputView]): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::getAssistedNodeInformation): 2016-05-23 Miguel Gomez <magomez@igalia.com> [ThreadedCompositor] Ensure that the BitmapTexture used by CoordinatedBackingStoreTile matches the opacity of the painted surface https://bugs.webkit.org/show_bug.cgi?id=157942 Reviewed by Žan Doberšek. * Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp: (WebKit::CoordinatedBackingStoreTile::swapBuffers): Reset the BitmapTexture if it doesn't match the opacity required by the surface that's being painted. 2016-05-22 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] Disk cache: enable speculative revalidation https://bugs.webkit.org/show_bug.cgi?id=157125 Reviewed by Sergio Villar Senin. * NetworkProcess/soup/NetworkProcessSoup.cpp: (WebKit::NetworkProcess::platformInitializeNetworkProcess): * UIProcess/API/gtk/WebKitWebContext.cpp: (webkitWebContextConstructed): * UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeNetworkProcess): * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::ensureNetworkProcess): * config.h: 2016-05-22 Brady Eidson <beidson@apple.com> Move to C++14. https://bugs.webkit.org/show_bug.cgi?id=157948 Reviewed by Michael Catanzaro. * Configurations/Base.xcconfig: Replace time literal suffixes that have underscores to the forms without (e.g. 0_ms becomes 0ms): * NetworkProcess/NetworkResourceLoadParameters.cpp: (WebKit::NetworkResourceLoadParameters::NetworkResourceLoadParameters): * NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::startNetworkLoad): * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::responseHasExpired): (WebKit::NetworkCache::responseNeedsRevalidation): (WebKit::NetworkCache::makeStoreDecision): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::responseNeedsRevalidation): * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::dispatchReadOperation): (WebKit::NetworkCache::Storage::store): (WebKit::NetworkCache::computeRecordWorth): * Shared/mac/RemoteLayerBackingStoreCollection.mm: * UIProcess/ViewGestureController.cpp: * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::maximumBufferingTime): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlushImmediately): (WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush): 2016-05-21 Andy Estes <aestes@apple.com> REGRESSION (r188642): All pages are blank when printing a webpage in iOS Safari https://bugs.webkit.org/show_bug.cgi?id=157924 rdar://problem/22524550 Reviewed by Sam Weinig. When UIPrintInteractionController asks WKWebView to print a webpage, it does so in several phases. First we're asked to compute the page count, followed later by a series of messages asking us to draw each page into a provided CGContext. When asked for the page count, we send a message to the Web process instructing it to compute and return the page count synchronously and then immediately start drawing the page for printing. If the drawing has finished by the time we're asked to print the first page, then we can do so without waiting. But if it hasn't then we block by calling Connection::waitForMessage(), passing std::chromo::milliseconds::max() as the relative timeout. Prior to r188642, Connection::waitForMessage() called std::condition_variable::wait_for(), which takes a relative timeout value. r188642 replaced this with WTF::Condition::waitUntil(), which takes an absolute timeout instead. To convert from relative to absolute, this line was added to Connection::waitForMessage(): Condition::Clock::time_point absoluteTimeout = Condition::Clock::now() + timeout; std::chrono will convert both operands to a common duration type before performing the addition. When timeout equals something very large, like milliseconds::max(), this conversion results in signed integer overflow, giving absoluteTimeout a value less than Clock::now() and making waitForMessage time out immediately. To fix this, compute how many milliseconds remain on our clock, and add the smaller of that and the timeout value to Clock::now() to arrive at an absolute timeout. * Platform/IPC/Connection.cpp: (IPC::Connection::waitForMessage): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _printedDocument]): Removed an unnecessary nanoseconds-to-milliseconds conversion. 2016-05-20 Enrica Casucci <enrica@apple.com> Drag cannot start if no drag data or custom data is available in the Pasteboard. https://bugs.webkit.org/show_bug.cgi?id=157911 rdar://problem/24577706 Reviewed by Tim Horton. We need to make sure there is always one item in common between source and target of the drag and drop operation. * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::dragImageForView): 2016-05-20 John Wilander <wilander@apple.com> Remove unnecessary PageOverlay client function pageOverlayDestroyed https://bugs.webkit.org/show_bug.cgi?id=157388 <rdar://problem/25471523> Reviewed by Tim Horton. Remove dead PageOverlay code. Almost all of these overrides were empty and never called. In the case of WebPageOverlay it was never called but had a function body, causing confusion. There was a fear of dangling pointers in WebPageOverlay's static hash map between PageOverlays and WebPageOverlays. Only WebPageOverlay's constructor creates its PageOverlay object and adds it to the hash map. Its client object is kept in a unique pointer member which is automatically deleted when the WebPageOverlay object itself is deleted. This explains why PageOverlayClientImpl::pageOverlayDestroyed in WKBundlePageOverlay can safely be removed. Finally, WebPageOverlay's destructor clears the hash map entry for its PageOverlay object. Thus, there is no need to call WebPageOverlay::pageOverlayDestroyed nor a need for WebPageOverlay's destructor to call pageOverlayDestroyed on its client. No new tests. I tried to come up with a WebKit API test for this but I wasn't able to test presence/absence of WebPageOverlay's map entries since the map is not exposed. * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp: (WebKit::PageOverlayClientImpl::pageOverlayDestroyed): Deleted. * WebProcess/Plugins/PDF/PDFPlugin.h: * WebProcess/Plugins/PDF/PDFPlugin.mm: (WebKit::PDFPlugin::HUD::pageOverlayDestroyed): Deleted. * WebProcess/WebCoreSupport/WebInspectorClient.cpp: * WebProcess/WebCoreSupport/WebInspectorClient.h: (WebKit::WebInspectorClient::pageOverlayDestroyed): Deleted. * WebProcess/WebPage/FindController.cpp: * WebProcess/WebPage/FindController.h: (WebKit::FindController::pageOverlayDestroyed): Deleted. * WebProcess/WebPage/WebPageOverlay.cpp: * WebProcess/WebPage/WebPageOverlay.h: (WebKit::WebPageOverlay::pageOverlayDestroyed): Deleted. * WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h: (WebKit::FindIndicatorOverlayClientIOS::pageOverlayDestroyed): Deleted. 2016-05-19 Chris Dumez <cdumez@apple.com> Improve compile-time assertions in is<>() / downcast<>() https://bugs.webkit.org/show_bug.cgi?id=157817 Reviewed by Darin Adler. Add missing includes. * WebProcess/WebPage/WebFrame.cpp: * WebProcess/WebPage/WebPage.cpp: 2016-05-19 Tim Horton <timothy_horton@apple.com> Mail crashes under TiledCoreAnimationDrawingAreaProxy::createFenceForGeometryUpdate() when the Web process crashes https://bugs.webkit.org/show_bug.cgi?id=157927 <rdar://problem/24793374> Reviewed by Dean Jackson. * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm: (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence): With just the right combination of layout mechanisms and Web Content process crash timing, it is possible to get a frame change underneath WebPageProxy::processDidCrash, before the DrawingArea has been nulled out but after the Connection has. This can lead to a null dereference. I had a lot of trouble writing a API test for this, though I'm certain it's possible. 2016-05-16 Enrica Casucci <enrica@apple.com> No candidate punctuation when typing punctuation in WK2 text field. https://bugs.webkit.org/show_bug.cgi?id=157773 rdar://problem/23084603 Reviewed by Sam Weinig. We need to adopt the new addInputString:withFlags:withInputManagerHint function for this to work propertly. * Platform/spi/ios/UIKitSPI.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _interpretKeyEvent:isCharEvent:]): 2016-05-19 Brady Eidson <beidson@apple.com> Finishing off: Modern IDB: Website data store management. https://bugs.webkit.org/show_bug.cgi?id=157626 Reviewed by Alex Christensen. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::deleteWebsiteDataForOrigins): (WebKit::removeAllDatabasesForOriginPath): Deleted. (WebKit::DatabaseProcess::deleteIndexedDatabaseEntriesForOrigins): Deleted. (WebKit::DatabaseProcess::deleteIndexedDatabaseEntriesModifiedSince): Deleted. * DatabaseProcess/DatabaseProcess.h: 2016-05-19 Brent Fulgham <bfulgham@apple.com> [OS X][WK2] Expand sandbox for new mach endpoints https://bugs.webkit.org/show_bug.cgi?id=157919 <rdar://problem/25238336> Reviewed by Alexey Proskuryakov. Grant the WebContent and Networking processes the mach lookup capability for various Security-related mach endpoints.. * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: 2016-05-19 Brian Burg <bburg@apple.com> Web Inspector: CRASH when closing a page while element selection mode is enabled via Develop menu https://bugs.webkit.org/show_bug.cgi?id=157925 <rdar://problem/26259618> Reviewed by Joseph Pecoraro. * WebProcess/WebCoreSupport/WebInspectorClient.cpp: (WebKit::WebInspectorClient::elementSelectionChanged): Null-check m_page->inspector() since it will return nullptr if the page is closed but not yet destructed. This is triggered by teardown code in InspectorDOMAgent::willDestroyFrontendAndBackend. 2016-05-19 Enrica Casucci <enrica@apple.com> Drag cannot start if no drag data is available in the Pasteboard. https://bugs.webkit.org/show_bug.cgi?id=157911 rdar://problem/24577706 Reviewed by Tim Horton. Setting dummy data to allow drag to start. * Shared/mac/PasteboardTypes.h: * Shared/mac/PasteboardTypes.mm: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::registerDraggedTypes): (WebKit::WebViewImpl::dragImageForView): 2016-05-19 Jer Noble <jer.noble@apple.com> [IOS] Add setting to allow playback to continue inline after exiting fullscreen. https://bugs.webkit.org/show_bug.cgi?id=157912 Reviewed by Eric Carlson. Add a preference and configuration property to control whether media should be allowed to continue playing inline when exiting fullscreen. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration encodeWithCoder:]): (-[WKWebViewConfiguration initWithCoder:]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _allowsInlineMediaPlaybackAfterFullscreen]): (-[WKWebViewConfiguration _setAllowsInlineMediaPlaybackAfterFullscreen:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * UIProcess/mac/WKFullScreenWindowController.mm: (disableScreenUpdates): (enableScreenUpdates): (-[WKFullScreenWindowController enterFullScreen:]): (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): (-[WKFullScreenWindowController exitFullScreen]): (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]): (-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]): (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): (-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-05-19 Brian Burg <bburg@apple.com> Web Inspector: timelines should not update via requestAnimationFrame unless Web Inspector is visible https://bugs.webkit.org/show_bug.cgi?id=157897 <rdar://problem/26330802> Reviewed by Timothy Hatcher. The UIProcess needs to notify the Inspector frontend when it is truly visible. The frontend can't use document.visibilityState because it doesn't seem to work if the inspector frontend's WKWebView is created but not attached to a window. * UIProcess/WebInspectorProxy.cpp: (WebKit::WebInspectorProxy::open): (WebKit::WebInspectorProxy::didClose): Send visibility updates to the inspector process when the inspector becomes "visible" or "not visible". It becomes visible if it is attached to the inspected page's window, or gets its own native window. * WebProcess/WebPage/WebInspectorUI.cpp: (WebKit::WebInspectorUI::frontendLoaded): (WebKit::WebInspectorUI::setDockingUnavailable): (WebKit::WebInspectorUI::setIsVisible): Call InspectorFrontendAPI.updateVisibilityState to let the frontend know. * WebProcess/WebPage/WebInspectorUI.h: * WebProcess/WebPage/WebInspectorUI.messages.in: Add new message. 2016-05-19 Brian Burg <bburg@apple.com> Web Inspector: use a consistent prefix for injected scripts https://bugs.webkit.org/show_bug.cgi?id=157715 <rdar://problem/26287188> Reviewed by Timothy Hatcher. * CMakeLists.txt: * DerivedSources.make: * WebProcess/Automation/WebAutomationSessionProxy.js: 2016-05-18 Anders Carlsson <andersca@apple.com> Add WKPreferencesRef getter/setter pair to set RTL mode https://bugs.webkit.org/show_bug.cgi?id=157873 rdar://problem/26329970 Reviewed by Tim Horton. * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetUserInterfaceDirectionPolicy): (WKPreferencesGetUserInterfaceDirectionPolicy): * UIProcess/API/C/WKPreferencesRef.h: 2016-05-18 Alex Christensen <achristensen@webkit.org> Clean up CSS code https://bugs.webkit.org/show_bug.cgi?id=157808 Reviewed by Chris Dumez. * UIProcess/Cocoa/WebViewImpl.mm: 2016-05-18 Jer Noble <jer.noble@apple.com> Disable default user gesture requirement for audio playback on Mac https://bugs.webkit.org/show_bug.cgi?id=157820 Reviewed by Sam Weinig. Disable the WebPreferences and matching WKWebViewConfiguration.mediaTypesRequiringUserActionForPlayback settings on Mac (and other non-iOS ports). * Shared/WebPreferencesDefinitions.h: * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): 2016-05-18 Alex Christensen <achristensen@webkit.org> Build fix when not using CredentialStorage with NetworkSession. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSession::clearCredentials): 2016-05-18 Brady Eidson <beidson@apple.com> Fix null-deref crash sporadically seen after http://trac.webkit.org/changeset/201098 No review. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::deleteWebsiteData): Don't access m_idbServer directly, as calling the idbServer() accessor is how you actually get your IDBServer created for you. 2016-05-18 Brian Burg <bburg@apple.com> Web Inspector: InspectorFrontendAPI.setTimelineProfilingEnabled should not implicitly show Timelines tab https://bugs.webkit.org/show_bug.cgi?id=157846 Reviewed by Timothy Hatcher. Add a separate ShowTimelines message to WebInspector and WebInspectorUI. Have the start/stop profiling methods in public APIs explicitly call showTimelines() rather than relying on InspectorFrontendAPI to do it. * UIProcess/API/C/WKInspector.cpp: (WKInspectorTogglePageProfiling): * UIProcess/WebInspectorProxy.cpp: (WebKit::WebInspectorProxy::showTimelines): * UIProcess/WebInspectorProxy.h: * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp: (WKBundleInspectorSetPageProfilingEnabled): * WebProcess/WebPage/WebInspector.cpp: (WebKit::WebInspector::showTimelines): * WebProcess/WebPage/WebInspector.h: * WebProcess/WebPage/WebInspector.messages.in: * WebProcess/WebPage/WebInspectorUI.cpp: (WebKit::WebInspectorUI::showTimelines): * WebProcess/WebPage/WebInspectorUI.h: * WebProcess/WebPage/WebInspectorUI.messages.in: 2016-05-18 Brady Eidson <beidson@apple.com> Modern IDB: Add support for server side closing of open database connections. https://bugs.webkit.org/show_bug.cgi?id=157843 Reviewed by Alex Christensen. - Implement the required IDB delegate code. - Make DatabaseProcess::deleteWebsiteData call the right method in IDB server. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::deleteWebsiteData): * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: (WebKit::WebIDBConnectionToClient::didGetRecord): (WebKit::WebIDBConnectionToClient::didCloseFromServer): (WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer): * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h: * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in: * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::confirmDidCloseFromServer): (WebKit::WebIDBConnectionToServer::didStartTransaction): (WebKit::WebIDBConnectionToServer::didCloseFromServer): * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in: 2016-05-18 Brady Eidson <beidson@apple.com> Modern IDB: Make TestRunner.clearAllDatabases also delete IndexedDB databases (once doing so is supported). https://bugs.webkit.org/show_bug.cgi?id=157823 Reviewed by Alex Christensen. * CMakeLists.txt: * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: (WKWebsiteDataStoreRemoveAllIndexedDatabases): * UIProcess/API/C/WKWebsiteDataStoreRef.h: 2016-05-18 Brian Burg <bburg@apple.com> REGRESSION(r200959): "Start Timeline Recording" menu item doesn't start recording https://bugs.webkit.org/show_bug.cgi?id=157821 <rdar://problem/26335429> Reviewed by Timothy Hatcher. In r200959, WebInspectorProxy started sending start/stop profiling messages directly to the frontend process to avoid the inspected page process from implicitly showing the frontend. To compensate, the WebKit API layer was changed to call show() in togglePageProfiling(). Unfortunately, this fix was not quite right, because the ordering of the Show and StartPageProfiling messages is undefined. The latter has to bounce from UI to inspected to inspector processes, so the frontend may try to start profiling before the frontend is shown, causing it to be ignored. This patch takes a different approach: just remove all implicit show() calls in the inspected page processes, and bounce both the Show and StartPageProfiling messages through the inspected page process to ensure they are handled in order by the frontend process. * UIProcess/WebInspectorProxy.cpp: (WebKit::WebInspectorProxy::togglePageProfiling): Revert to sending to the inspected page process. * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp: (WKBundleInspectorSetPageProfilingEnabled): Add a call to show() now that the implementation doesn't do it implicitly. * WebProcess/WebPage/WebInspector.cpp: (WebKit::WebInspector::startPageProfiling): (WebKit::WebInspector::stopPageProfiling): Don't implicitly show the inspector. These methods are only called through the WKBundleInspector API and via IPC from WebInspectorProxy. 2016-05-17 Beth Dakin <bdakin@apple.com> Make handleAcceptedCandidate a public function https://bugs.webkit.org/show_bug.cgi?id=157763 -and corresponding- rdar://problem/26206397 Reviewed by Tim Horton. This patch makes handleAcceptedCandidate a public member of WebViewImpl instead of a private member. * UIProcess/Cocoa/WebViewImpl.h: (WebKit::WebViewImpl::createWeakPtr): 2016-05-17 Dean Jackson <dino@apple.com> Remove ES6_GENERATORS flag https://bugs.webkit.org/show_bug.cgi?id=157815 <rdar://problem/26332894> Reviewed by Geoffrey Garen. This flag isn't needed. Generators are enabled everywhere and part of a stable specification. * Configurations/FeatureDefines.xcconfig: 2016-05-17 Dean Jackson <dino@apple.com> Temporarily enable Experimental Features https://bugs.webkit.org/show_bug.cgi?id=157810 <rdar://problem/26330804> Reviewed by Anders Carlsson. We currently don't have good UI for enabling these features, which would mean Safari Technology Preview users would never be able to turn them on… unless we enable them by default temporarily. * Shared/WebPreferencesDefinitions.h: 2016-05-17 Filip Pizlo <fpizlo@apple.com> WTF should know about Language https://bugs.webkit.org/show_bug.cgi?id=157756 Reviewed by Geoffrey Garen and Alexey Proskuryakov. Rewires a bunch of includes/imports. * Shared/mac/RemoteLayerTreePropertyApplier.mm: * UIProcess/Launcher/mac/ProcessLauncherMac.mm: * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm: * WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm: 2016-05-17 Jer Noble <jer.noble@apple.com> Unreviewed GTK+ and EFL bulid fix; make the audio playback user gesture requirement Cocoa-only. * Shared/WebPreferencesDefinitions.h: 2016-05-16 Anders Carlsson <andersca@apple.com> Add a WKA extension point for WKPreferences SPI https://bugs.webkit.org/show_bug.cgi?id=157762 rdar://problem/24529203 Reviewed by Sam Weinig. * UIProcess/API/Cocoa/WKPreferences.mm: 2016-05-16 David Kilzer <ddkilzer@apple.com> Action sheets don’t work in presented view controllers <https://webkit.org/b/157754> <rdar://problem/26304845> Reviewed by Anders Carlsson. * UIProcess/ios/WKActionSheet.mm: (-[WKActionSheet presentSheetFromRect:]): (-[WKActionSheet willRotate]): - Call SPI to get the presenting view controller, since it may not always be the root view controller. 2016-05-13 Enrica Casucci <enrica@apple.com> Text selection is basically impossible on plain text pages. https://bugs.webkit.org/show_bug.cgi?id=157681 rdar://problem/26065660 Reviewed by Darin Adler. When dealing with a plain text file, the rules for deciding whether a position is selectable should be different and we should never switch to block selection. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::shouldSwitchToBlockModeForHandle): (WebKit::rectIsTooBigForSelection): Added helper function. (WebKit::WebPage::selectTextWithGranularityAtPoint): (WebKit::WebPage::getPositionInformation): 2016-05-16 Chelsea Pugh <cpugh@apple.com> [iOS] Remove dispatch_after in -[WKFormInputSession setSuggestions:] https://bugs.webkit.org/show_bug.cgi?id=157745 Reviewed by Dan Bernstein. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKFormInputSession setSuggestions:]): Remove the dispatch_after since there is no longer a chance of keyboard suggestions replacing the suggestions set here. 2016-05-16 Brian Burg <bburg@apple.com> Crash simulating keystrokes at WebKit::WebAutomationSession::platformSimulateKeyStroke https://bugs.webkit.org/show_bug.cgi?id=157737 <rdar://problem/26292946> Reviewed by Timothy Hatcher. * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::platformSimulateKeyStroke): AppKit expects characters passed to [NSEvent keyEventWithType:...] to be non-nil even if there are no characters. Initialize characters to the empty string @"". It will be overwritten if the keystroke should produce any unicode characters. 2016-05-16 Brian Burg <bburg@apple.com> Web Automation: Automation.inspectBrowsingContext should automatically start page profiling https://bugs.webkit.org/show_bug.cgi?id=157739 Reviewed by Timothy Hatcher. * UIProcess/API/C/WKInspector.cpp: (WKInspectorTogglePageProfiling): Implicitly show the Web Inspector in the C API command to preserve existing behavior. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::inspectorFrontendLoaded): If the frontend loaded, it was either because the user opened Web Inspector (and turning on page profiling is harmless), or it was loaded but not shown by the inspectBrowsingContext command. For the latter, we want to start page profiling before processing any additional commands so subsequent execution is captured. * UIProcess/WebInspectorProxy.cpp: (WebKit::WebInspectorProxy::togglePageProfiling): Send the start/stop profiling messages directly to the WebInspectorUI process instead of bouncing through the inspected page's process, which does an implicit show() we don't want. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::inspector): Make it const. * UIProcess/WebPageProxy.h: 2016-05-16 Conrad Shultz <conrad_shultz@apple.com> Fix some deprecation warnings. * UIProcess/mac/WKPrintingView.mm: (-[WKPrintingView _drawPDFDocument:page:atPoint:]): * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm: (WebKit::PDFPlugin::setActiveAnnotation): (WebKit::PDFPlugin::lookupTextAtLocation): * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.h: * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm: (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement): * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h: * WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm: (WebKit::PDFPluginTextAnnotation::createAnnotationElement): * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::drawPDFPage): 2016-04-06 Jer Noble <jer.noble@apple.com> [WK2] Add API to WKWebViewConfiguration to control autoplay policy. https://bugs.webkit.org/show_bug.cgi?id=156312 Reviewed by Dan Bernstein. Add a new API to WKWebViewConfiguration to allow fine-grained control over when media is allowed to play without a user gesture, and simultaneously deprecate the existing, all-or-nothing API, and deprecated the equivalent SPIs. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.h: * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration encodeWithCoder:]): (-[WKWebViewConfiguration initWithCoder:]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _requiresUserActionForVideoPlayback]): (-[WKWebViewConfiguration _setRequiresUserActionForVideoPlayback:]): (-[WKWebViewConfiguration _requiresUserActionForAudioPlayback]): (-[WKWebViewConfiguration _setRequiresUserActionForAudioPlayback:]): (-[WKWebViewConfiguration requiresUserActionForMediaPlayback]): (-[WKWebViewConfiguration setRequiresUserActionForMediaPlayback:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: 2016-05-16 Brian Burg <bburg@apple.com> Web Automation: WebAutomationSessionProxy.js gets injected more than once sometimes https://bugs.webkit.org/show_bug.cgi?id=157716 <rdar://problem/26287306> Reviewed by Timothy Hatcher. Whenever a script was injected into a non-normal world by a WebKit client, the WebProcess's WebAutomationSessionProxy singleton would get a notification that the window was cleared from the relevant frame. This notification happens when creating the world's window shell for the first time. This code should ignore such notifications that originate from non-main world contexts. Web Inspector's instrumentation already ignored this, but the automation session notification comes in via a different WebKit2 layer. * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld): 2016-05-13 Dean Jackson <dino@apple.com> Fix iOS Build. * Shared/AssistedNodeInformation.h: (WebKit::OptionItem::OptionItem): 2016-05-13 Sam Weinig <sam@webkit.org> REGRESSION (r200463): Autofill Credit Card expected but got Autofill Contact <rdar://problem/26251538> https://bugs.webkit.org/show_bug.cgi?id=157701 Reviewed by Dan Bernstein. * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: (-[WKWebProcessPlugInFrame _certificateChain]): We need to do a retain-autorelease here now because the CertificateInfo's that contain the cached certificate chain, are being destroyed, and therefore destroying the chain, before this function returns. This used to work when the chain wasn't just a cache, because there was still a strong reference to it being held by the ResourceResponse's CertificateInfo copy, but now there is none. 2016-05-13 Dean Jackson <dino@apple.com> [iOS] <select> elements popover should render right-aligned when in RTL mode https://bugs.webkit.org/show_bug.cgi?id=157699 <rdar://problem/26282319> Reviewed by Simon Fraser. Some follow-up changes as suggested by Darin in review. * Shared/AssistedNodeInformation.h: Use initializers so we can remove the constructors. (WebKit::OptionItem::OptionItem): Deleted. (WebKit::AssistedNodeInformation::AssistedNodeInformation): Deleted. * UIProcess/ios/forms/WKFormSelectPopover.mm: Add a comment to explain why we are explicitly setting the language. (-[WKSelectTableViewController initWithView:hasGroups:]): 2016-05-13 Chris Dumez <cdumez@apple.com> [NetworkCache] Avoid having to re-parse URLs after deserializing them https://bugs.webkit.org/show_bug.cgi?id=157660 Reviewed by Darin Adler. * NetworkProcess/cache/NetworkCacheCoders.cpp: (WebKit::NetworkCache::Coder<WebCore::CertificateInfo>::encode): Deleted. (WebKit::NetworkCache::Coder<WebCore::CertificateInfo>::decode): Deleted. * NetworkProcess/cache/NetworkCacheCoders.h: Drop template specializations used by our network cache for encoding / decoding URLs as Strings. This causes us to now rely on URL::encode() / URL::decode() instead. * Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<BlobPart>::decode): Fix bug in BlobPart encoding / decoding. It was encoding the url member as a URL but decoding it as a String. 2016-05-13 Dan Bernstein <mitz@apple.com> Try to fix some non-iOS builds. * mac/postprocess-framework-headers.sh: 2016-05-13 Ryan Haddad <ryanhaddad@apple.com> Attempt to fix the iOS build after r200874 Unreviewed build fix. * UIProcess/API/Cocoa/WKWebViewConfiguration.h: 2016-05-13 Sam Weinig <sam@webkit.org> Rename WKDataDetectorTypeSpotlightSuggestion to WKDataDetectorTypeLookupSuggestion <rdar://problem/26269611> Reviewed by Dan Bernstein and Enrica Casucci. * Shared/API/Cocoa/WKFoundation.h: * Shared/API/c/WKDeclarationSpecifiers.h: * UIProcess/API/Cocoa/WKWebView.mm: (fromWKDataDetectorTypes): * UIProcess/API/Cocoa/WKWebViewConfiguration.h: * mac/postprocess-framework-headers.sh: 2016-05-13 Beth Dakin <bdakin@apple.com> Add dyldSPI.h for linked on or after checks, and add one for link preview https://bugs.webkit.org/show_bug.cgi?id=157401 Reviewed by Darin Adler. Set _allowsLinkPreview to YES for programs linked on or after firstSDKVersionWithLinkPreviewEnabledByDefault. * UIProcess/API/Cocoa/WKWebView.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): 2016-05-13 Jer Noble <jer.noble@apple.com> Fullscreen view attempts to resize when in 2-up mode https://bugs.webkit.org/show_bug.cgi?id=157558 Reviewed by Darin Adler. No need to react to NSApplicationDidChangeScreenParametersNotification to resize the fullscreen window when the screen parameters change; the NSWindow fullscreen machinery will do that on our behalf. * UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController windowDidLoad]): Deleted. (-[WKFullScreenWindowController applicationDidChangeScreenParameters:]): Deleted. 2016-05-13 Antoine Quint <graouts@apple.com> [iOS] <select> elements popover should render right-aligned when in RTL mode https://bugs.webkit.org/show_bug.cgi?id=157672 <rdar://problem/26193442> Reviewed by Darin Adler. Add a new isRTL field to the AssistedNodeInformation as specified by the assisted node's render style and account for it when displaying the table view shown in the popover attached to the assisted node using the UIView semanticContentAttribute property. * Shared/AssistedNodeInformation.cpp: (WebKit::AssistedNodeInformation::encode): (WebKit::AssistedNodeInformation::decode): * Shared/AssistedNodeInformation.h: (WebKit::AssistedNodeInformation::AssistedNodeInformation): * UIProcess/ios/forms/WKFormSelectPopover.mm: (-[WKSelectTableViewController initWithView:hasGroups:]): (-[WKSelectTableViewController tableView:cellForRowAtIndexPath:]): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::getAssistedNodeInformation): 2016-05-13 Tina Liu <iting_liu@apple.com> Revert r199691. https://bugs.webkit.org/show_bug.cgi?id=157645 <rdar://problem/26235373> Reviewed by Darin Adler. * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): Deleted. (WebKit::WebProcessCreationParameters::decode): Deleted. * Shared/WebProcessCreationParameters.h: * UIProcess/API/C/mac/WKContextPrivateMac.h: * UIProcess/API/C/mac/WKContextPrivateMac.mm: (WKContextSetPrivateBrowsingPluginLoadClientPolicy): Deleted. * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::setPluginLoadClientPolicy): (WebKit::WebProcessPool::createNewWebProcess): Deleted. (WebKit::WebProcessPool::setPluginLoadClientPolicyForPrivateBrowsing): Deleted. (WebKit::WebProcessPool::setPrivateBrowsingPluginLoadClientPolicy): Deleted. (WebKit::WebProcessPool::clearPluginClientPolicies): Deleted. * UIProcess/WebProcessPool.h: * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: (WebKit::WebPlatformStrategies::setPluginLoadClientPolicy): (WebKit::WebPlatformStrategies::longestMatchedWildcardHostForHost): (WebKit::WebPlatformStrategies::replaceHostWithMatchedWildcardHost): (WebKit::WebPlatformStrategies::pluginLoadClientPolicyForHost): (WebKit::WebPlatformStrategies::populatePluginCache): (WebKit::WebPlatformStrategies::setPluginLoadClientPolicyForPrivateBrowsing): Deleted. (WebKit::WebPlatformStrategies::setPrivateBrowsingPluginLoadClientPolicy): Deleted. (WebKit::WebPlatformStrategies::clearPluginClientPolicies): Deleted. (WebKit::WebPlatformStrategies::pluginLoadClientPolicyForHostForPrivateBrowsing): Deleted. * WebProcess/WebCoreSupport/WebPlatformStrategies.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): (WebKit::WebProcess::setPluginLoadClientPolicies): Deleted. (WebKit::WebProcess::setPrivateBrowsingPluginLoadClientPolicy): Deleted. * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: 2016-05-12 Daniel Bates <dabates@apple.com> Use SecTask SPI to retrieve code signing identifier for user directory suffix https://bugs.webkit.org/show_bug.cgi?id=157570 <rdar://problem/25706517> Reviewed by Darin Adler. It is sufficient to make use of the SecTask SPI to retrieve the code signing identifier of the embedding client for use in the user directory suffix. This avoids the need to allow Code Signing Services to have access to the bundle of the embedding client. * Shared/mac/ChildProcessMac.mm: (WebKit::ChildProcess::initializeSandbox): Use the code signing identifier of the embedding client as part of the user directory suffix if available. * Shared/mac/CodeSigning.h: Update comment and include header wtf/spi/darwin/XPCSPI.h for the definition of xpc_connection_t. Renamed codeSigningIdentifier() to codeSigningIdentifierForCurrentProcess() to convey that it returns the code signing identifier for the current process. Repurposed the name codeSigningIdentifier for the variant of this function that takes a xpc_connection_t. * Shared/mac/CodeSigning.mm: (WebKit::codeSigningIdentifier): Added. Uses the audit token associated with the specified XPC connection to get the code signing identifier for the embedding client. (WebKit::codeSigningIdentifierForCurrentProcess): Renamed; formerly named codeSigningIdentifier. Implemented in terms of the SecTask API. (WebKit::secCodeForCurrentProcess): Deleted. (WebKit::secCodeForProcess): Deleted. (WebKit::secCodeSigningInformation): Deleted. (WebKit::appleSignedOrMacAppStoreSignedOrAppleDeveloperSignedRequirement): Deleted. (WebKit::secCodeSigningIdentifier): Deleted. (WebKit::codeSigningIdentifierForProcess): Deleted. * UIProcess/Launcher/mac/ProcessLauncherMac.mm: (WebKit::connectToService): Update code due to renaming. 2016-05-12 Konstantin Tokarev <annulen@yandex.ru> Use reference instead of pointer in FrameLoaderClient::saveViewStateToItem. https://bugs.webkit.org/show_bug.cgi?id=157624 Reviewed by Darin Adler. * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::saveViewStateToItem): * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 2016-05-12 Csaba Osztrogonác <ossy@webkit.org> Remove ENABLE(ES6_ARROWFUNCTION_SYNTAX) guards https://bugs.webkit.org/show_bug.cgi?id=157564 Reviewed by Darin Adler. * Configurations/FeatureDefines.xcconfig: 2016-05-11 Anders Carlsson <andersca@apple.com> We have two different types of contextual menus in iBooks https://bugs.webkit.org/show_bug.cgi?id=157587 rdar://problem/25904169 Reviewed by Darin Adler. Give clients the option to bypass the WebKit context menu machinery. * UIProcess/mac/WebContextMenuProxyMac.mm: (WebKit::WebContextMenuProxyMac::showContextMenu): 2016-05-10 Brian Burg <bburg@apple.com> Web Automation: add command to asynchronously load the Web Inspector frontend in the background https://bugs.webkit.org/show_bug.cgi?id=157509 Reviewed by Timothy Hatcher and Joseph Pecoraro. In order to make it easier to debug code that executes as a result of an automation command, this patch adds a new Automation command to asynchronously load the debugger and Inspector frontend. It is designed for use by automation clients to implement an auto-inspection feature to aid in debugging automation scripts. * UIProcess/Automation/Automation.json: Add new command. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::inspectBrowsingContext): Added. (WebKit::WebAutomationSession::inspectorFrontendLoaded): Added. This message is forwarded by WebInspectorProxy to the inspected page's session. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::sendSynthesizedEventsToPage): Force the active automation window to become key and bring to front prior to sending each NSEvent. This way, if the Inspector pauses while a command executes, the automation window will get back focus when the Inspector unpauses just before the next synthesized mouse or keyboard NSEvent is sent to its NSWindow. * UIProcess/WebInspectorProxy.cpp: (WebKit::WebInspectorProxy::frontendLoaded): Forward to the inspected page's session. * UIProcess/WebInspectorProxy.h: * UIProcess/WebInspectorProxy.messages.in: Add notification of the frontend's load. * WebProcess/WebPage/WebInspectorUI.cpp: (WebKit::WebInspectorUI::frontendLoaded): Kick off notifying the automation session in UIProcess that the inspector loaded. (WebKit::WebInspectorUI::closeWindow): In some circumstances, the Web Inspector can be loaded without showing the window. If this hidden page closes, make sure the frontend host gets a chance to disconnect its InspectorFrontendClient. Normally this happens when the window closes, but unshown Inspectors do not get window instances. 2016-05-11 Chris Dumez <cdumez@apple.com> Update Node::appendChild() / replaceChild() / removeChild() / insertBefore() to take references instead of pointers https://bugs.webkit.org/show_bug.cgi?id=157556 Reviewed by Darin Adler. * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm: (-[WKDOMNode insertNode:before:]): (-[WKDOMNode appendChild:]): (-[WKDOMNode removeChild:]): * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm: (WebKit::PDFPlugin::PDFPlugin): * WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm: (WebKit::PDFPluginChoiceAnnotation::createAnnotationElement): 2016-05-11 Brady Eidson <beidson@apple.com> Modern IDB: IDBOpenDBRequests that are stop()'ed don't notify the IDBServer of that fact. https://bugs.webkit.org/show_bug.cgi?id=157448 Reviewed by Alex Christensen. * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: (WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction): (WebKit::WebIDBConnectionToClient::openDBRequestCancelled): * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h: * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in: * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction): (WebKit::WebIDBConnectionToServer::openDBRequestCancelled): * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: 2016-05-11 Myles C. Maxfield <mmaxfield@apple.com> Fix a typo in r200330 Unreviewed. * UIProcess/API/Cocoa/WKWebViewConfiguration.h: 2016-05-10 Sam Weinig <sam@webkit.org> Only expose WKDataDetectorTypes and -[WKWebViewConfiguration dataDetectorTypes] on iOS for now, since we don't have it fully implemented on Mac. Reviewed by Tim Horton. * UIProcess/API/Cocoa/WKWebView.mm: (fromWKDataDetectorTypes): (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.h: * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration encodeWithCoder:]): (-[WKWebViewConfiguration initWithCoder:]): (-[WKWebViewConfiguration copyWithZone:]): 2016-05-10 Sam Weinig <sam@webkit.org> Add SPI for Data Detectors to get ranges of text around an existing range. <rdar://problem/26009749> Reviewed by Enrica Casucci. * WebProcess/InjectedBundle/API/mac/WKDOMRange.h: * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm: (-[WKDOMRange rangeByExpandingToWordBoundaryByCharacters:inDirection:]): 2016-05-10 Enrica Casucci <enrica@apple.com> Numerous block selection issues on iOS. https://bugs.webkit.org/show_bug.cgi?id=157490 rdar://problem/25717977 rdar://problem/23042215 Reviewed by Tim Horton. This patch fixes a number of issues with block selection on iOS. We no longer eagerly choose block selection vs text selection and we make sure we are capable of switching back to text selection from block under every circumstance. The patch also fixes the logic used to decide when to switch to block selection. It now computes the rectangle for the paragraph containing the initial text selection to decide when we are actually dragging outside the boundaries of the paragraph block. * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/ios/WKContentViewInteraction.mm: (selectionChangedWithGesture): (selectionChangedWithTouch): (-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::gestureCallback): (WebKit::WebPageProxy::touchesCallback): (WebKit::WebPageProxy::autocorrectionDataCallback): (WebKit::WebPageProxy::selectWithGesture): (WebKit::WebPageProxy::updateSelectionWithTouches): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::selectionBoxForRange): (WebKit::canShrinkToTextSelection): (WebKit::hasCustomLineHeight): (WebKit::WebPage::rangeForWebSelectionAtPosition): (WebKit::WebPage::contractedRangeFromHandle): (WebKit::WebPage::updateBlockSelectionWithTouch): (WebKit::WebPage::clearSelection): (WebKit::WebPage::switchToBlockSelectionAtPoint): (WebKit::WebPage::shouldSwitchToBlockModeForHandle): (WebKit::WebPage::updateSelectionWithTouches): (WebKit::WebPage::selectWithTwoTouches): 2016-05-10 Alex Christensen <achristensen@webkit.org> Handle _schemeUpgraded delegate callbacks in NSURLSessionDataDelegate https://bugs.webkit.org/show_bug.cgi?id=157354 rdar://problem/25842107 Reviewed by Darin Adler. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]): When we make a request to a http url and CFNetwork determines that that url would have redirected to an HSTS site and it is going to change the request to an https request, this delegate callback is called. We need to call the redirection code to have the same behavior as the NSURLConnection-based loader. 2016-05-10 Csaba Osztrogonác <ossy@webkit.org> Fix the !ENABLE(VIDEO) build https://bugs.webkit.org/show_bug.cgi?id=157518 Reviewed by Alex Christensen. * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::fetchData): (WebKit::WebsiteDataStore::removeData): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): 2016-05-10 Anders Carlsson <andersca@apple.com> Fix more deprecation warnings. * NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm: (NetworkServiceInitializer): * PluginProcess/EntryPoint/mac/XPCService/PluginServiceEntryPoint.mm: (PluginServiceInitializer): * WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm: (WebContentServiceInitializer): 2016-05-10 Chris Dumez <cdumez@apple.com> [SpeculativeValidation] Do not start a preload if there is already one pending https://bugs.webkit.org/show_bug.cgi?id=157522 <rdar://problem/26156083> Reviewed by Alex Christensen. Do not start a preload if there is already one pending. We failed to check in SpeculativeLoadManager::preloadEntry() if there was already a pending preload. As a result, we would sometimes cancel an already pending preload and start one from scratch which is inefficient. It would also sometimes lead to hitting an assertion in the SpeculativeLoad destructor because we could destroy the SpeculativeLoad without finishing or cancelling the load. * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry): 2016-05-10 Anders Carlsson <andersca@apple.com> Fix a deprecation warning. * DatabaseProcess/EntryPoint/mac/XPCService/DatabaseServiceEntryPoint.mm: (DatabaseServiceInitializer): 2016-05-10 Tim Horton <timothy_horton@apple.com> Clicks do not work in Safari after pressing the Track package button in Gmail https://bugs.webkit.org/show_bug.cgi?id=157508 <rdar://problem/22646404> Reviewed by Anders Carlsson. * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::viewDidMoveToWindow): Explicitly cancel the force-click animation when we're removing the gesture recognizer due to the WK*View being unparented. This works around a bug where we don't get the cancellation callback in this situation, causing Safari to be left in an inconsistent and unexpected state. 2016-05-10 Michael Catanzaro <mcatanzaro@igalia.com> [Linux] Remove seccomp filters support https://bugs.webkit.org/show_bug.cgi?id=157380 Reviewed by Darin Adler. * NetworkProcess/NetworkProcessCreationParameters.cpp: (WebKit::NetworkProcessCreationParameters::encode): Deleted. (WebKit::NetworkProcessCreationParameters::decode): Deleted. * NetworkProcess/NetworkProcessCreationParameters.h: * PlatformEfl.cmake: * PlatformGTK.cmake: * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): Deleted. (WebKit::WebProcessCreationParameters::decode): Deleted. * Shared/WebProcessCreationParameters.h: * Shared/linux/SeccompFilters/OpenSyscall.cpp: Removed. * Shared/linux/SeccompFilters/OpenSyscall.h: Removed. * Shared/linux/SeccompFilters/SeccompBroker.cpp: Removed. * Shared/linux/SeccompFilters/SeccompBroker.h: Removed. * Shared/linux/SeccompFilters/SeccompFilters.cpp: Removed. * Shared/linux/SeccompFilters/SeccompFilters.h: Removed. * Shared/linux/SeccompFilters/SigactionSyscall.cpp: Removed. * Shared/linux/SeccompFilters/SigactionSyscall.h: Removed. * Shared/linux/SeccompFilters/SigprocmaskSyscall.cpp: Removed. * Shared/linux/SeccompFilters/SigprocmaskSyscall.h: Removed. * Shared/linux/SeccompFilters/Syscall.cpp: Removed. * Shared/linux/SeccompFilters/Syscall.h: Removed. * Shared/linux/SeccompFilters/SyscallPolicy.cpp: Removed. * Shared/linux/SeccompFilters/SyscallPolicy.h: Removed. * Shared/linux/SeccompFilters/XDGBaseDirectory.h: Removed. * Shared/linux/SeccompFilters/XDGBaseDirectoryGLib.cpp: Removed. * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::ensureNetworkProcess): Deleted. (WebKit::WebProcessPool::createNewWebProcess): Deleted. (WebKit::WebProcessPool::cookieStorageDirectory): Deleted. * UIProcess/WebProcessPool.h: * WebProcess/efl/SeccompFiltersWebProcessEfl.cpp: Removed. * WebProcess/efl/SeccompFiltersWebProcessEfl.h: Removed. * WebProcess/gtk/SeccompFiltersWebProcessGtk.cpp: Removed. * WebProcess/gtk/SeccompFiltersWebProcessGtk.h: Removed. * WebProcess/soup/WebProcessSoup.cpp: (WebKit::WebProcess::platformInitializeWebProcess): Deleted. 2016-05-09 Tim Horton <timothy_horton@apple.com> REGRESSION (r191922): Zoom in/Zoom Out is not working for PDFs https://bugs.webkit.org/show_bug.cgi?id=157503 <rdar://problem/23736297> Reviewed by Anders Carlsson. * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.h: Restore a requiresUnifiedScaleFactor that was lost in r191922. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didCommitLoadForFrame): (WebKit::WebPageProxy::mainFramePluginHandlesPageScaleGestureDidChange): * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::didInitializePlugin): * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad): Separate mainFramePluginHandlesPageScaleGesture changes out from didCommitLoadForFrame, because the PluginView doesn't exist at this point, so it can't answer the handlesPageScaleGesture question correctly (or at all). Instead, we'll send the message when the main-frame PluginView is initialized. 2016-05-09 Simon Fraser <simon.fraser@apple.com> [iOS] visibility:hidden -webkit-overflow-scrolling: touch divs can interfere with page scrolling https://bugs.webkit.org/show_bug.cgi?id=157496 rdar://problem/22963278 Reviewed by Tim Horton. UIScrollViews are constructed in the UI process for visibility:hidden scrollable elements with -webkit-overflow-scrolling: touch, and these intercept user events when they should not. Fix by propagating a "contentsHidden" flag from the web process which is used to turn off user interaction on these views. * Shared/mac/RemoteLayerTreePropertyApplier.mm: (WebKit::RemoteLayerTreePropertyApplier::applyProperties): * Shared/mac/RemoteLayerTreeTransaction.h: * Shared/mac/RemoteLayerTreeTransaction.mm: (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties): (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode): (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): (WebKit::dumpChangedLayers): * UIProcess/ios/RemoteLayerTreeHostIOS.mm: (-[UIView _recursiveFindDescendantScrollViewAtPoint:withEvent:]): Our custom hit test needs to take view.isUserInteractionEnabled into account. * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::setHidden): (WebKit::PlatformCALayerRemote::contentsHidden): (WebKit::PlatformCALayerRemote::setContentsHidden): * WebProcess/WebPage/mac/PlatformCALayerRemote.h: 2016-05-09 Ada Chan <adachan@apple.com> Introduce WebVideoFullscreenInterfaceMac::isPlayingVideoInEnhancedFullscreen() and use it in WebVideoFullscreenManagerProxy::isPlayingVideoInEnhancedFullscreen() https://bugs.webkit.org/show_bug.cgi?id=157493 Reviewed by Dan Bernstein. * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: (WebKit::WebVideoFullscreenManagerProxy::isPlayingVideoInEnhancedFullscreen): 2016-05-06 Ada Chan <adachan@apple.com> Add WKPageRef SPI to tell whether there's a video playing in enhanced fullscreen https://bugs.webkit.org/show_bug.cgi?id=157434 Reviewed by Darin Adler. * UIProcess/API/C/mac/WKPagePrivateMac.h: * UIProcess/API/C/mac/WKPagePrivateMac.mm: (WKPageIsPlayingVideoInEnhancedFullscreen): * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h: * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: (WebKit::WebVideoFullscreenManagerProxy::isPlayingVideoInEnhancedFullscreen): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::isPlayingVideoInEnhancedFullscreen): * UIProcess/WebPageProxy.h: 2016-05-09 Anders Carlsson <andersca@apple.com> Add injected bundle SPI for getting favicon and touch icon URLs https://bugs.webkit.org/show_bug.cgi?id=157435 Reviewed by Darin Adler. * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: (collectIcons): New helper function that calls into the WebCore LinkCollector. (-[WKWebProcessPlugInFrame appleTouchIconURLs]): Call collectIcons. (-[WKWebProcessPlugInFrame faviconURLs]): Ditto. 2016-05-06 Simon Fraser <simon.fraser@apple.com> [iOS WK2] Font size increases on some pages after navigating then going back https://bugs.webkit.org/show_bug.cgi?id=157441 rdar://problem/22873240 Reviewed by Darin Adler. There's an ordering dependency between setting the viewport configuration and doing layouts when going back to a page from the page cache that is incorrectly handled. In FrameLoader::commitProvisionalLoad(), CachedPage::restore() triggers a layout under updateContentsSize(), but this happens before dispatchDidCommitLoad() which updates the viewport arguments via ViewportConfiguration::setViewportArguments(). This issue is not addressed by the current commit. But a second problem is: if the inputs to text autosizing change, we need to invalidate the autosizing state. The relevant input here is the fixed layout width (which is determined from the viewport configuration). The current code invalidated text autosizing when m_viewportConfiguration.minimumLayoutSize() changed, but the correct behavior is to invalidate based on fixed layout size changing. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::sendViewportAttributesChanged): (WebKit::WebPage::setFixedLayoutSize): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::resetTextAutosizing): (WebKit::WebPage::dynamicViewportSizeUpdate): (WebKit::WebPage::viewportConfigurationChanged): (WebKit::WebPage::setViewportConfigurationMinimumLayoutSize): Deleted. (WebKit::WebPage::resetTextAutosizingBeforeLayoutIfNeeded): Deleted. 2016-05-09 Alex Christensen <achristensen@webkit.org> Don't use DiskCache for media resource loads https://bugs.webkit.org/show_bug.cgi?id=157405 Reviewed by Darin Adler. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::makeRetrieveDecision): (WebKit::NetworkCache::makeStoreDecision): * NetworkProcess/cache/NetworkCache.h: * NetworkProcess/cache/NetworkCacheStatistics.cpp: (WebKit::NetworkCache::retrieveDecisionToDiagnosticKey): 2016-05-08 Myles C. Maxfield <mmaxfield@apple.com> [OS X] Migrate our Font classes entirely off of NSFont https://bugs.webkit.org/show_bug.cgi?id=157464 Reviewed by Darin Adler. * WebProcess/WebCoreSupport/mac/WebPopupMenuMac.mm: (WebKit::WebPopupMenu::setUpPlatformData): * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::fontAtSelection): 2016-05-06 Joseph Pecoraro <pecoraro@apple.com> Rename HitTestRequest DisallowShadowContent to DisallowUserAgentShadowContent https://bugs.webkit.org/show_bug.cgi?id=157447 Reviewed by Ryosuke Niwa. * WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp: (WebKit::WebPage::findZoomableAreaForPoint): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::hitTest): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::determinePrimarySnapshottedPlugIn): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::rangeForWebSelectionAtPosition): (WebKit::WebPage::rangeForBlockAtPoint): (WebKit::WebPage::getPositionInformation): 2016-05-06 Simon Fraser <simon.fraser@apple.com> Enable IOS_TEXT_AUTOSIZING on Mac and make it testable https://bugs.webkit.org/show_bug.cgi?id=157432 rdar://problem/16406720 Reviewed by Dean Jackson. Enable IOS_TEXT_AUTOSIZING on Mac so it can be tested. Make the setTextAutosizingEnabled() Setting work, and plumb it through WK1 and WK2 preferences for WTR and DRT. Make textAutosizingWindowSizeOverride() work, for layout tests. These two settings are shared with TEXT_AUTOSIZING. Add a TextAutosizing log channel, which is useful for generated -expected.html results. Move adjustComputedFontSizesOnBlocks() and related code from RenderObject to RenderElement without changes. An implication of this set of changes is that the way clients enable text autosizing has changed. Previously, they set the "MinimumZoomFontSize" preference to 0. Settings::defaultMinimumZoomFontSize() used to do this in order to enable text autosizing on iPhone only, not iPad. Now the preferred technique is to leave minimumZoomFontSize alone, and to use textAutosizingEnabled() instead. Settings::defaultTextAutosizingEnabled() now does the check for iPhone. UIWebView calls WebKitGetMinimumZoomFontSize() to setup the default minimum font zoom size, which will now always return 15, but had no other code that toggled this. So it's safe to just rely on Settings::defaultTextAutosizingEnabled() doing the right thing for iPhone/iPad. * Configurations/FeatureDefines.xcconfig: * Shared/WebPreferencesDefinitions.h: * UIProcess/API/Cocoa/WKPreferences.mm: (-[WKPreferences _textAutosizingEnabled]): (-[WKPreferences _setTextAutosizingEnabled:]): * UIProcess/API/Cocoa/WKPreferencesPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-05-06 Dean Jackson <dino@apple.com> Regions, Shapes and Tracks don't need runtime features https://bugs.webkit.org/show_bug.cgi?id=157426 <rdar://problem/26146262> Reviewed by Simon Fraser. The following RuntimeEnabledFeatures can be removed since we have no need to disable them (they are stable and have shipped for a while): - CSS Regions - CSS Shapes - Media tracks * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetCSSRegionsEnabled): Deleted. (WKPreferencesGetCSSRegionsEnabled): Deleted. * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): Deleted. (WebKit::InjectedBundle::setCSSRegionsEnabled): Deleted. (WebKit::InjectedBundle::setCSSCompositingEnabled): Deleted. * WebProcess/InjectedBundle/InjectedBundle.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): Deleted. 2016-05-05 Ada Chan <adachan@apple.com> Create a fence in WebVideoFullscreenManagerProxy::setVideoLayerFrame() to pass to the web process https://bugs.webkit.org/show_bug.cgi?id=157409 Reviewed by Tim Horton. * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: (WebKit::WebVideoFullscreenManagerProxy::setVideoLayerFrame): Create a fence by calling DrawingAreaProxy::createFence() and pass it when sending the WebVideoFullscreenManager::SetVideoLayerFrameFenced message. * UIProcess/DrawingAreaProxy.cpp: (WebKit::DrawingAreaProxy::createFence): Stub implementation. Assert not to be reached here since it's only implemented on Mac so far. * UIProcess/DrawingAreaProxy.h: * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h: * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm: (WebKit::TiledCoreAnimationDrawingAreaProxy::createFence): Renamed from createFenceForGeometryUpdate() since we are using it for more than just updating geometry. (WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry): Update due to method rename. 2016-05-05 Brady Eidson <beidson@apple.com> Modern IDB (Workers): Get everything to the right threads. https://bugs.webkit.org/show_bug.cgi?id=157398 Reviewed by Alex Christensen. * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::putOrAdd): * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: 2016-05-05 Manuel Rego Casasnovas <rego@igalia.com> [GTK] Remove "region based columns" runtime feature remainings https://bugs.webkit.org/show_bug.cgi?id=157393 The runtime feature was removed in r168978, and the usage in WebKitSettings.cpp in r168988. However it was still around in ExperimentalFeatures class. Reviewed by Michael Catanzaro. * UIProcess/gtk/ExperimentalFeatures.cpp: Remove runtime feature. * UIProcess/gtk/ExperimentalFeatures.h: Ditto. 2016-05-05 Manuel Rego Casasnovas <rego@igalia.com> [GTK] Add CSS Grid Layout as experimental feature https://bugs.webkit.org/show_bug.cgi?id=157391 Reviewed by Michael Catanzaro. Now that we've a runtime feature again for CSS Grid Layout (r200215), we can recover the old patch (r162215) that allows to enable/disable CSS Grid Layout through the environment variable WEBKITGTK_EXPERIMENTAL_FEATURES. Example: WEBKITGTK_EXPERIMENTAL_FEATURES="CSS_GRID_LAYOUT=1" * UIProcess/API/gtk/WebKitSettings.cpp: (webKitSettingsConstructed): Use new experimental feature to enable or disable CSS Grid Layout. * UIProcess/gtk/ExperimentalFeatures.cpp: Add new experimental feature. * UIProcess/gtk/ExperimentalFeatures.h: Ditto. 2016-05-05 Jer Noble <jer.noble@apple.com> [WK2] Media controls don't update if controller is created after the interface is created https://bugs.webkit.org/show_bug.cgi?id=157376 Reviewed by Beth Dakin. Implement the new getter methods on WebPlaybackSessionModelContext by caching the values passed through WebPlaybackSessionManagerProxy. * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h: * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm: (WebKit::WebPlaybackSessionManagerProxy::setCurrentTime): (WebKit::WebPlaybackSessionManagerProxy::setBufferedTime): (WebKit::WebPlaybackSessionManagerProxy::setSeekableRangesVector): (WebKit::WebPlaybackSessionManagerProxy::setCanPlayFastReverse): (WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionOptions): (WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionOptions): (WebKit::WebPlaybackSessionManagerProxy::setExternalPlaybackProperties): (WebKit::WebPlaybackSessionManagerProxy::setWirelessVideoPlaybackDisabled): (WebKit::WebPlaybackSessionManagerProxy::setDuration): (WebKit::WebPlaybackSessionManagerProxy::setRate): * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h: * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: (WebKit::WebVideoFullscreenModelContext::requestFullscreenMode): Deleted. (WebKit::WebVideoFullscreenModelContext::setVideoLayerFrame): Deleted. (WebKit::WebVideoFullscreenModelContext::setVideoLayerGravity): Deleted. (WebKit::WebVideoFullscreenModelContext::fullscreenModeChanged): Deleted. (WebKit::WebVideoFullscreenModelContext::isVisible): Deleted. (WebKit::WebVideoFullscreenModelContext::didSetupFullscreen): Deleted. (WebKit::WebVideoFullscreenModelContext::didEnterFullscreen): Deleted. (WebKit::WebVideoFullscreenModelContext::didExitFullscreen): Deleted. (WebKit::WebVideoFullscreenModelContext::didCleanupFullscreen): Deleted. (WebKit::WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy): Deleted. (WebKit::WebVideoFullscreenManagerProxy::~WebVideoFullscreenManagerProxy): Deleted. 2016-05-05 Dean Jackson <dino@apple.com> Shadow DOM should not be experimental https://bugs.webkit.org/show_bug.cgi?id=157384 <rdar://problem/26123254> Reviewed by Anders Carlsson. Shadow DOM is not an experimental feature. We want it enabled by default. This fixes the timeout in: WebKit2.InjectedBundleMakeAllShadowRootOpenTest * Shared/WebPreferencesDefinitions.h: Move the Shadow DOM preference out of Experimental. * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-05-05 Simon Fraser <simon.fraser@apple.com> Revert r200390, thus putting r199259 and r200161 and back. * Shared/VisibleContentRectUpdateInfo.cpp: (WebKit::VisibleContentRectUpdateInfo::encode): (WebKit::VisibleContentRectUpdateInfo::decode): * Shared/VisibleContentRectUpdateInfo.h: (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo): (WebKit::VisibleContentRectUpdateInfo::enclosedInScrollableAncestorView): (WebKit::operator==): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _didInvokeUIScrollViewDelegateCallback]): (-[WKWebView _didFinishScrolling]): (-[WKWebView scrollViewDidScroll:]): (-[WKWebView scrollViewDidZoom:]): (-[WKWebView scrollViewDidEndZooming:withView:atScale:]): (-[WKWebView _scrollViewDidInterruptDecelerating:]): (-[WKWebView _visibleRectInEnclosingScrollView:]): (-[WKWebView _visibleContentRect]): (-[WKWebView _didScroll]): (-[WKWebView _enclosingScrollerScrollingEnded:]): (-[WKWebView _frameOrBoundsChanged]): (-[WKWebView _updateVisibleContentRects]): (-[WKWebView _updateVisibleContentRectAfterScrollInView:]): (scrollViewCanScroll): (-[WKWebView _updateContentRectsWithState:]): * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/WebPageProxy.h: * UIProcess/ios/WKContentView.h: * UIProcess/ios/WKContentView.mm: (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]): (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:]): Deleted. * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::updateVisibleContentRects): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorLocation): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::updateVisibleContentRects): 2016-05-02 Sam Weinig <sam@webkit.org> On platforms that support it, use a SecTrustRef as the basis of CertificateInfo instead of a chain of SecCertificateRefs. https://bugs.webkit.org/show_bug.cgi?id=157220 Reviewed by Darin Adler. * Shared/Authentication/mac/AuthenticationManager.mac.mm: (WebKit::leafCertificate): (WebKit::chain): (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge): When supported, get the SecCertificateRef from the SecTrustRef rather than the stored certificate chain. * Shared/cf/ArgumentCodersCF.cpp: (IPC::typeFromCFTypeRef): (IPC::encode): (IPC::decode): * Shared/cf/ArgumentCodersCF.h: Add support for encoding/decoding SecTrustRef objects. * Shared/mac/WebCoreArgumentCodersMac.mm: (IPC::ArgumentCoder<CertificateInfo>::encode): (IPC::ArgumentCoder<CertificateInfo>::decode): Add support for encoding/decoding CertificateInfo's that contain SecTrustRef objects. (IPC::encodeNSError): (IPC::decodeNSError): Simplify error encoding/decoding by not using an addition CertificateInfo object for encoding the peerCertificateChain. Also, add the peerTrust to the userInfo that get's encoded/decoded. * UIProcess/API/Cocoa/WKWebView.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView serverTrust]): (-[WKWebView certificateChain]): Add new serverTrust API and deprecate certificateChain. * UIProcess/Cocoa/NavigationState.mm: (WebKit::NavigationState::willChangeCertificateInfo): (WebKit::NavigationState::didChangeCertificateInfo): Add support for KVO of -[WKWebView serverTrust]. 2016-05-05 Daniel Bates <dabates@apple.com> Remove workaround added in r200391 (rdar://problem/25992976) https://bugs.webkit.org/show_bug.cgi?id=157378 <rdar://problem/26118503> Reviewed by Anders Carlsson. Following the fix for <rdar://problem/26075714> we can remove the workaround added in r200391 (rdar://problem/25992976). * Shared/mac/CodeSigning.mm: (WebKit::secCodeSigningIdentifier): 2016-05-04 Dean Jackson <dino@apple.com> Experimental Features don't need an "Experimental" prefix https://bugs.webkit.org/show_bug.cgi?id=157363 <rdar://problem/26100630> Reviewed by Anders Carlsson. Since we're not persisting the value of the experimental features, it's unlikely there will ever be the case where we move a Preference from experimental to normal and use a stored value. * Shared/WebPreferencesDefinitions.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-05-04 Dean Jackson <dino@apple.com> Experimental features should toggle runtime flags https://bugs.webkit.org/show_bug.cgi?id=157353 <rdar://problem/23621603> Reviewed by Anders Carlsson. Hook up the experimental WebPreferences to RuntimeEnabledFeatures. In the process I removed the general preference for WebGL 2 (we already had an experimental feature for it) and moved Custom Elements and Shadow DOM to experimental. I also removed the C versions of the preferences, since experimental features only need the ObjC API (which is generated automatically). * Shared/WebPreferencesDefinitions.h: Move/remove some features and make the experimental section more clear. * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetWebGL2Enabled): Deleted. (WKPreferencesGetWebGL2Enabled): Deleted. (WKPreferencesSetShadowDOMEnabled): Deleted. (WKPreferencesGetShadowDOMEnabled): Deleted. (WKPreferencesSetCustomElementsEnabled): Deleted. (WKPreferencesGetCustomElementsEnabled): Deleted. * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/WebPreferences.cpp: (WebKit::WebPreferences::updateBoolValueForExperimentalFeatureKey): A version of updateBoolValueForKey that doesn't call the platform function (e.g. doesn't save to NSUserDefaults). * UIProcess/WebPreferences.h: * UIProcess/mac/WebPreferencesMac.mm: (WebKit::WebPreferences::platformInitializeStore): Deleted. * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-05-04 Dean Jackson <dino@apple.com> TestRunner should always enable all the experimental features https://bugs.webkit.org/show_bug.cgi?id=157360 <rdar://problem/26099748> Reviewed by Anders Carlsson. Experimental features are disabled by default, but it is a pain to enable them in every test. Instead, have the test runner turn them all on. * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesEnableAllExperimentalFeatures): * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/WebPreferences.cpp: (WebKit::WebPreferences::enableAllExperimentalFeatures): * UIProcess/WebPreferences.h: 2016-05-04 Gyuyoung Kim <gyuyoung.kim@webkit.org> Add WKPreference for SelectionPaintingWithoutSelectionGaps https://bugs.webkit.org/show_bug.cgi?id=156900 Reviewed by Michael Catanzaro. Unlike other browsers WebKit has been drawing selection gaps between render blocks during the text selection. This often cause text selection screen looks messy. This patch adds a setting method to disable the functionality, and EFL port disables it by default. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetSelectionPaintingWithoutSelectionGapsEnabled): (WKPreferencesGetSelectionPaintingWithoutSelectionGapsEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-05-04 Zan Dobersek <zdobersek@igalia.com> [CoordGraphics] CompositingCoordinator should hande root compositing and view overlay layers separately https://bugs.webkit.org/show_bug.cgi?id=157305 Reviewed by Carlos Garcia Campos. Update CoordinatedLayerTreeHost and ThreadCoordinatedLayerTreeHost to correctly use setRootCompositingLayer() and setViewOverlayRootLayer() methods on the CompositingCoordinator object. CoordinatedLayerTreeHost doesn't have to keep a pointer to the root compositing layer anymore. updateRootLayers() can be removed. ThreadCoordinatedLayerTreeHost doen't have to keep a pointer to both the root compositing and the view overlay layers anymore. Similarly, updateRootLayers() can be removed. * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp: (WebKit::CoordinatedLayerTreeHost::setViewOverlayRootLayer): (WebKit::CoordinatedLayerTreeHost::setRootCompositingLayer): (WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost): Deleted. (WebKit::CoordinatedLayerTreeHost::updateRootLayers): Deleted. * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h: * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: (WebKit::ThreadedCoordinatedLayerTreeHost::setRootCompositingLayer): (WebKit::ThreadedCoordinatedLayerTreeHost::setViewOverlayRootLayer): (WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): Deleted. (WebKit::ThreadedCoordinatedLayerTreeHost::updateRootLayers): Deleted. * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: 2016-05-03 Beth Dakin <bdakin@apple.com> Add VideoControlsManager tests https://bugs.webkit.org/show_bug.cgi?id=157332 -and corresponding- rdar://problem/24358431 Reviewed by Sam Weinig. Expose _hasActiveVideoForControlsManager on WKWebViewPrivate for the sake of testing. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _hasActiveVideoForControlsManager]): (-[WKWebView _doAfterNextPresentationUpdate:]): * UIProcess/API/Cocoa/WKWebViewPrivate.h: 2016-05-03 Jer Noble <jer.noble@apple.com> [iOS][WK2] Allow WKWebView to play local filesystem media when created with -loadFileURL:allowingReadAccessToURL: https://bugs.webkit.org/show_bug.cgi?id=156875 <rdar://problem/24281444> Reviewed by Alexey Proskuryakov. Grant AVFoundation the right to issue file read sandbox extensions from the WebContent process to the mediaserverd process, so that it can play back local media files. * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: 2016-05-03 Jiewen Tan <jiewen_tan@apple.com> File Upload: Photo upload name is always generic (image.jpg) https://bugs.webkit.org/show_bug.cgi?id=157291 <rdar://problem/12353008> Reviewed by Darin Adler. Use the original filename as the name of an uploaded image instead of a generic name, i.e. image.jpg. * Platform/spi/ios/PhotosSPI.h: Added. * UIProcess/ios/forms/WKFileUploadPanel.mm: (-[WKFileUploadPanel _uploadItemForImage:withAssetURL:successBlock:failureBlock:]): * WebKit2.xcodeproj/project.pbxproj: 2016-05-03 Chris Dumez <cdumez@apple.com> [WK2][DiskCache] Store common HTTP header names as strings https://bugs.webkit.org/show_bug.cgi?id=157326 <rdar://problem/26073498> Reviewed by Antti Koivisto. Store common HTTP header names as strings in the disk cache instead of using their value in the HTTPHeaderName enumeration. Having the disk cache rely in the HTTPHeaderName enumeration is risky becomes it means the cached data would become invalid every time someone updates HTTPHeaderNames.in in WebCore. If someone were to update HTTPHeaderNames.in without bumping the disk cache version, we would end up with wrongly recognized HTTP header names after loading responses from the cache. * NetworkProcess/cache/NetworkCacheCoders.cpp: (WebKit::NetworkCache::Coder<WebCore::HTTPHeaderMap>::encode): (WebKit::NetworkCache::Coder<WebCore::HTTPHeaderMap>::decode): * NetworkProcess/cache/NetworkCacheCoders.h: * NetworkProcess/cache/NetworkCacheStorage.h: 2016-05-03 Daniel Bates <dabates@apple.com> Temporary workaround for Apple Internal builds <rdar://problem/25992976> For Apple Internal builds treat error code errSecCSGuestInvalid as if it were error code errSecCSUnsigned. We will look to remove this workaround in the fix for <rdar://problem/26075714>. * Shared/mac/CodeSigning.mm: (WebKit::secCodeSigningIdentifier): 2016-05-03 Chris Dumez <cdumez@apple.com> Unreviewed, rolling out r199259 and r200161. Seems to have caused a ~1.2% PLT regression on iOS Reverted changesets: "[iOS WK2] WKWebViews should consult ancestor UIScrollViews to determine tiling area" https://bugs.webkit.org/show_bug.cgi?id=156429 http://trac.webkit.org/changeset/199259 "[iOS WK2] When determining tile size, check whether ancestor UIScrollViews are actually scrollable" https://bugs.webkit.org/show_bug.cgi?id=157107 http://trac.webkit.org/changeset/200161 2016-05-03 Dean Jackson <dino@apple.com> CSS Grid should be an experimental feature flag https://bugs.webkit.org/show_bug.cgi?id=157327 <rdar://problem/26075147> Reviewed by Anders Carlsson. The CSS Grid Layout runtime flag was exposed by a WebKit preference. It was in the experimental section but was missing the "Experimental" prefix. It was also missing the human readable description. Lastly, there is no need for the C API for experimental features. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetCSSGridLayoutEnabled): Deleted. (WKPreferencesGetCSSGridLayoutEnabled): Deleted. * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-05-03 Alex Christensen <achristensen@webkit.org> Remove firing assertion when redirecting https://bugs.webkit.org/show_bug.cgi?id=155800 rdar://25299194 Reviewed by Sam Weinig. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:dataTask:willCacheResponse:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]): With NSURLConnection, we stopped getting delegate callbacks once the delegate is destroyed, and everything was cancelled. With NSURLSession we continue getting delegate callbacks because the session's delegate is not destroyed after each load. As documented in NSURLSession.h: "In some cases, the task may signal other work before it acknowledges the cancelation." In the cases where we cancel a load, delete the NetworkLoad and corresponding NetworkDataTask, we want to call all completion handlers indicating that we really want to cancel instead of asserting. 2016-05-02 Darin Adler <darin@apple.com> Change IDL enumerations to be nested in their C++ class instead of at WebCore namespace level https://bugs.webkit.org/show_bug.cgi?id=157257 Reviewed by Chris Dumez. * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::loadResource): Updated since we changed ReferrerHeaderPolicy back to ReferrerPolicy. (WebKit::WebLoaderStrategy::schedulePluginStreamLoad): Ditto. 2016-05-02 Brady Eidson <beidson@apple.com> Const-ify some IDB code. https://bugs.webkit.org/show_bug.cgi?id=157287 Reviewed by Alex Christensen. * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::deleteDatabase): (WebKit::WebIDBConnectionToServer::openDatabase): (WebKit::WebIDBConnectionToServer::abortTransaction): (WebKit::WebIDBConnectionToServer::commitTransaction): (WebKit::WebIDBConnectionToServer::didFinishHandlingVersionChangeTransaction): * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: 2016-05-02 Simon Fraser <simon.fraser@apple.com> Sort the project file. * WebKit2.xcodeproj/project.pbxproj: 2016-05-02 Simon Fraser <simon.fraser@apple.com> Fix shouldUpdateScrollLayerPositionSynchronously() for non-main frames. Remove updatesScrollLayerPositionOnMainThread() https://bugs.webkit.org/show_bug.cgi?id=157277 Reviewed by Dean Jackson, Tim Horton. Remove updatesScrollLayerPositionOnMainThread() which is unused by all ports. * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.h: 2016-05-02 Alex Christensen <achristensen@webkit.org> Crash if a certificate chain has null certificates https://bugs.webkit.org/show_bug.cgi?id=157206 Reviewed by Alexey Proskuryakov. * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::certificatesMatch): SecTrustGetCertificateAtIndex can return null. If this ever happens, something has gone horribly wrong in the security code and we should crash. See rdar://problem/21723172 2016-05-02 Myles C. Maxfield <mmaxfield@apple.com> Addressing post-review comments after r200116 https://bugs.webkit.org/show_bug.cgi?id=157228 Reviewed by Anders Carlsson. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.h: * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration encodeWithCoder:]): (-[WKWebViewConfiguration initWithCoder:]): (-[WKWebViewConfiguration copyWithZone:]): * UIProcess/WebPageProxy.cpp: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-05-02 Daniel Bates <dabates@apple.com> DatabaseTracker::closeAllDatabases calls Database::close from the wrong thread https://bugs.webkit.org/show_bug.cgi?id=147672 <rdar://problem/22357464> Reviewed by Brady Eidson. Call DatabaseTracker::closeAllDatabases() with CurrentQueryBehavior::Interrupt so that we abort a long running query and close the database immediately to avoid holding a locked file when the process is suspended. * WebProcess/WebProcess.cpp: (WebKit::WebProcess::processWillSuspendImminently): 2016-05-01 Darin Adler <darin@apple.com> Update Fetch to use enum class instead of string for enumerations https://bugs.webkit.org/show_bug.cgi?id=157241 Reviewed by Chris Dumez. * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::WebLoaderStrategy::loadResource): Updated for the change where I renamed ReferrerPolicy to ReferrerHeaderPolicy, at least for now. (WebKit::WebLoaderStrategy::schedulePluginStreamLoad): Ditto. 2016-05-01 Konstantin Tokarev <annulen@yandex.ru> Fixed build with !ENABLED(DATABASE_PROCESS). Unreviewed build fix. * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs): 2016-04-29 Chris Dumez <cdumez@apple.com> Drop useless check in SpeculativeLoadManager::registerLoad() https://bugs.webkit.org/show_bug.cgi?id=157204 Reviewed by Antti Koivisto. Drop useless check in SpeculativeLoadManager::registerLoad(). There is no way to end up this code path with a non-HTTP family request. * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::registerLoad): 2016-04-29 Brian Burg <bburg@apple.com> Web Automation: add SPI to mark an existing NSEvent as synthesized for automation https://bugs.webkit.org/show_bug.cgi?id=157221 <rdar://problem/26019356> Reviewed by Timothy Hatcher. In cases where an NSEvent is duplicated, clients need to re-mark an NSEvent as synthesized for automation if the original NSEvent was marked as such. * UIProcess/API/Cocoa/_WKAutomationSession.h: * UIProcess/API/Cocoa/_WKAutomationSession.mm: (-[_WKAutomationSession markEventAsSynthesizedForAutomation:]): * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::sendSynthesizedEventsToPage): (WebKit::WebAutomationSession::markEventAsSynthesizedForAutomation): 2016-04-29 Brian Burg <bburg@apple.com> Web Automation: use a magic eventNumber as a fallback for detecting NSEvents synthesized for automation https://bugs.webkit.org/show_bug.cgi?id=157222 Reviewed by Timothy Hatcher. Sometimes events are copied and redelivered in a way that can't be reliably intercepted, so use eventNumber as an alternate means of detecting synthesized mouse NSEvents. * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::wasEventSynthesizedForAutomation): If it's a mouse-related event, check the eventNumber if the associated object was missing. (WebKit::WebAutomationSession::platformSimulateMouseInteraction): Most real events from input devices fill in eventNumber with a non-zero value. In my testing, using zero did not seem to adversely affect event delivery. 2016-04-29 Joseph Pecoraro <pecoraro@apple.com> Web Inspector: Issues inspecting the inspector, pausing on breakpoints causes content to not load https://bugs.webkit.org/show_bug.cgi?id=157198 <rdar://problem/26011049> Reviewed by Timothy Hatcher. * WebProcess/WebPage/WebInspectorFrontendAPIDispatcher.h: * WebProcess/WebPage/WebInspectorFrontendAPIDispatcher.cpp: (WebKit::WebInspectorFrontendAPIDispatcher::reset): (WebKit::WebInspectorFrontendAPIDispatcher::frontendLoaded): (WebKit::WebInspectorFrontendAPIDispatcher::suspend): (WebKit::WebInspectorFrontendAPIDispatcher::unsuspend): (WebKit::WebInspectorFrontendAPIDispatcher::dispatchCommand): (WebKit::WebInspectorFrontendAPIDispatcher::dispatchMessageAsync): (WebKit::WebInspectorFrontendAPIDispatcher::evaluateOrQueueExpression): (WebKit::WebInspectorFrontendAPIDispatcher::evaluateQueuedExpressions): Avoid evaluating expressions when the page is paused. Generalize the message queueing and dispatching for pause/suspend that we already had for waiting for the frontend page to be loaded. * WebProcess/WebPage/WebInspectorUI.h: * WebProcess/WebPage/WebInspectorUI.cpp: (WebKit::WebInspectorUI::pagePaused): (WebKit::WebInspectorUI::pageUnpaused): When the frontend page pauses/unpauses, suspend/resume the dispatcher. 2016-04-29 Chris Dumez <cdumez@apple.com> Remove unnecessary isolated String copying from one of NetworkCache::Key's constructor https://bugs.webkit.org/show_bug.cgi?id=157207 Reviewed by Antti Koivisto. Remove unnecessary isolated String copying from one of NetworkCache::Key's constructor. We are anyway going to create isolated copies if the Key ends up getting copied. * NetworkProcess/cache/NetworkCacheKey.cpp: (WebKit::NetworkCache::Key::Key): 2016-04-29 Brian Burg <bburg@apple.com> Web Automation: performMouseInteraction command computes mouse event coordinates incorrectly https://bugs.webkit.org/show_bug.cgi?id=157218 <rdar://problem/26018230> Reviewed by Timothy Hatcher. This patch fixes two issues: the min/max clamp was in the wrong order, and the y-value did not account for the window's top content inset. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::performMouseInteraction): 2016-04-29 Dean Jackson <dino@apple.com> RTL <select> popup menu is in the wrong location https://bugs.webkit.org/show_bug.cgi?id=157159 <rdar://problem/25894451> Reapply http://trac.webkit.org/changeset/200217 but with changes that will allow it to build on Yosemite. * UIProcess/mac/WebPopupMenuProxyMac.mm: (WebKit::WebPopupMenuProxyMac::showPopupMenu): 2016-04-28 Ada Chan <adachan@apple.com> Indicate we are processing user gesture when handling messages from WebPlaybackSessionManagerProxy to WebPlaybackSessionManager https://bugs.webkit.org/show_bug.cgi?id=157151 Reviewed by Jer Noble. Messages from WebPlaybackSessionManagerProxy to WebPlaybackSessionManager are triggered by user actions, so add a UserGestureIndicator in the methods that handle those messages. * WebProcess/cocoa/WebPlaybackSessionManager.mm: (WebKit::WebPlaybackSessionManager::play): (WebKit::WebPlaybackSessionManager::pause): (WebKit::WebPlaybackSessionManager::togglePlayState): (WebKit::WebPlaybackSessionManager::beginScrubbing): (WebKit::WebPlaybackSessionManager::endScrubbing): (WebKit::WebPlaybackSessionManager::seekToTime): (WebKit::WebPlaybackSessionManager::fastSeek): (WebKit::WebPlaybackSessionManager::beginScanningForward): (WebKit::WebPlaybackSessionManager::beginScanningBackward): (WebKit::WebPlaybackSessionManager::endScanning): (WebKit::WebPlaybackSessionManager::selectAudioMediaOption): (WebKit::WebPlaybackSessionManager::selectLegibleMediaOption): 2016-04-29 Brady Eidson <beidson@apple.com> Add a default ".isolatedCopy()" specialization to CrossThreadCopier, and other small cleanup. https://bugs.webkit.org/show_bug.cgi?id=157185 Reviewed by Anders Carlsson. * Shared/WebCrossThreadCopier.cpp: (WebCore::Vector<char>>::copy): reserveInitialCapacity() before creating the copy. (WebCore::Vector<int64_t>>::copy): Ditto. (WebCore::Vector<uint8_t>>::copy): Ditto. (WebCore::Vector<Vector<IDBKeyData>>>::copy): Deleted dead code. * Shared/WebCrossThreadCopier.h: 2016-04-29 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r200217. https://bugs.webkit.org/show_bug.cgi?id=157183 This change broke the Yosemite build. (Requested by ryanhaddad on #webkit). Reverted changeset: "RTL <select> popup menu is in the wrong location" https://bugs.webkit.org/show_bug.cgi?id=157159 http://trac.webkit.org/changeset/200217 2016-04-29 Claudio Saavedra <csaavedra@igalia.com> [GTK] Move WK2 shareable code out from gtk directories https://bugs.webkit.org/show_bug.cgi?id=157135 Reviewed by Darin Adler. Both NetworkProcessMain and InjectedBundle can go out from their respective gtk directories. * NetworkProcess/gtk/NetworkProcessMainGtk.cpp: (WebKit::NetworkProcessMainUnix): Deleted. * NetworkProcess/soup/NetworkProcessMainSoup.cpp: Renamed from Source/WebKit2/NetworkProcess/gtk/NetworkProcessMainGtk.cpp. (WebKit::NetworkProcessMainUnix): * PlatformGTK.cmake: Update. * WebProcess/InjectedBundle/glib/InjectedBundleGlib.cpp: Renamed from Source/WebKit2/WebProcess/InjectedBundle/gtk/InjectedBundleGtk.cpp. (WebKit::InjectedBundle::initialize): (WebKit::InjectedBundle::setBundleParameter): (WebKit::InjectedBundle::setBundleParameters): * WebProcess/InjectedBundle/gtk/InjectedBundleGtk.cpp: (WebKit::InjectedBundle::initialize): Deleted. (WebKit::InjectedBundle::setBundleParameter): Deleted. (WebKit::InjectedBundle::setBundleParameters): Deleted. 2016-04-28 Dean Jackson <dino@apple.com> RTL <select> popup menu is in the wrong location https://bugs.webkit.org/show_bug.cgi?id=157159 <rdar://problem/25894451> Reviewed by Simon Fraser. Make sure the NSPopupMenu takes the text direction into account, and offset the position of the menu slightly if we're in RTL mode. Unfortunately our test infrastructure is unable to exercise this because it runs without a window, and the popup menu is not captured in the screenshot. * UIProcess/mac/WebPopupMenuProxyMac.mm: (WebKit::WebPopupMenuProxyMac::showPopupMenu): 2016-04-28 Manuel Rego Casasnovas <rego@igalia.com> [css-grid] Add CSS Grid Layout runtime flag https://bugs.webkit.org/show_bug.cgi?id=157134 Reviewed by Simon Fraser. Add CSS Grid Layout runtime flag based on preferences, enabled by default. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetCSSGridLayoutEnabled): (WKPreferencesGetCSSGridLayoutEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-04-28 Daniel Bates <dabates@apple.com> Fix the Apple Internal OS X build * UIProcess/mac/WKPrintingView.mm: (-[WKPrintingView _drawPDFDocument:page:atPoint:]): Ignore deprecation warning for -[PDFPage drawWithBox:]. * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::drawPDFPage): Ditto. 2016-04-28 Manuel Rego Casasnovas <rego@igalia.com> Fix mistake in custom elements runtime flag https://bugs.webkit.org/show_bug.cgi?id=157130 Reviewed by Chris Dumez. The methods for the custom elements runtime flag were using the Shadow DOM flag instead. These methods were introduced in r197921, it seems it was just a copy&paste mistake. * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetCustomElementsEnabled): (WKPreferencesGetCustomElementsEnabled): 2016-04-28 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Add missing files to the compilation of GTK+ inspector. * PlatformGTK.cmake: 2016-04-27 Dan Bernstein <mitz@apple.com> <rdar://problem/25915253> REGRESSION (r199628): Netflix playback fails in Safari Technology Preview with error code S7363-1260-FFFF58D8 Rubber-stamped by Tim Horton. Reverted r199628. * Configurations/WebContentService.xcconfig: 2016-04-27 Brady Eidson <beidson@apple.com> Modern IDB: Implement native IDBFactory.getAllDatabaseNames for WebInspector. https://bugs.webkit.org/show_bug.cgi?id=157072 Reviewed by Alex Christensen. Handle the process hop for the new getAllDatabaseNames call. * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: (WebKit::WebIDBConnectionToClient::didGetAllDatabaseNames): (WebKit::WebIDBConnectionToClient::getAllDatabaseNames): * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h: * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in: * Shared/WebCrossThreadCopier.cpp: (WebCore::SecurityOriginData>::copy): Deleted, as its in WebCore now. * Shared/WebCrossThreadCopier.h: * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::getAllDatabaseNames): (WebKit::WebIDBConnectionToServer::didGetAllDatabaseNames): * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in: 2016-04-27 Simon Fraser <simon.fraser@apple.com> [iOS WK2] When determining tile size, check whether ancestor UIScrollViews are actually scrollable https://bugs.webkit.org/show_bug.cgi?id=157107 rdar://problem/25943577 Reviewed by Tim Horton. We should only fall back to 512x512 tiles if the WKWebView has a UIScrollView ancestor, and that UIScrollView actually scrolls. This avoids falling back to small tiles in MobileSafari. Rename "enclosedInScrollView" to "enclosedInScrollableAncestorView" everywhere. * Shared/VisibleContentRectUpdateInfo.cpp: (WebKit::VisibleContentRectUpdateInfo::encode): (WebKit::VisibleContentRectUpdateInfo::decode): * Shared/VisibleContentRectUpdateInfo.h: (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo): (WebKit::VisibleContentRectUpdateInfo::enclosedInScrollableAncestorView): (WebKit::operator==): (WebKit::VisibleContentRectUpdateInfo::enclosedInScrollView): Deleted. * UIProcess/API/Cocoa/WKWebView.mm: (scrollViewCanScroll): (-[WKWebView _updateContentRectsWithState:]): * UIProcess/ios/WKContentView.h: * UIProcess/ios/WKContentView.mm: (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]): (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollView:]): Deleted. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::updateVisibleContentRects): 2016-04-26 Ada Chan <adachan@apple.com> Set WebVideoFullscreenInterfaceMac up as a client of WebPlaybackSessionInterfaceMac to listen for playback state changes https://bugs.webkit.org/show_bug.cgi?id=157008 Reviewed by Jer Noble. Since WebVideoFullscreenInterfaceMac holds onto WebPlaybackSessionInterfaceMac, we can't let WebPlaybackSessionManagerProxy unregister the context for that media element while WebVideoFullscreenInterfaceMac is still using it. WebVideoFullscreenInterfaceMac should add to the client count for that WebPlaybackSession context. * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: (WebKit::WebVideoFullscreenManagerProxy::createModelAndInterface): When the context for the media element is created with the WebVideoFullscreenManagerProxy, it should add one to the client count for the media element context in WebPlaybackSessionManagerProxy. (WebKit::WebVideoFullscreenManagerProxy::removeClientForContext): When WebVideoFullscreenManagerProxy unregisters the context for this media element, it should subtract one from the client count for the media element context in WebPlaybackSessionManagerProxy. * WebProcess/cocoa/WebPlaybackSessionManager.mm: (WebKit::WebPlaybackSessionManager::clearPlaybackControlsManager): Bail early if m_controlsManagerContextId is zero. Otherwise, we'd end up sending a ClearPlaybackControlsManager message to the UI process inadvertently. (WebKit::WebPlaybackSessionManager::contextIdForMediaElement): Make sure the model element for the context ID is set to the media element. * WebProcess/cocoa/WebVideoFullscreenManager.mm: (WebKit::WebVideoFullscreenManager::createModelAndInterface): When the context for the media element is created with the WebVideoFullscreenManager, it should add one to the client count for the media element context in WebPlaybackSessionManager. (WebKit::WebVideoFullscreenManager::removeContext): When WebVideoFullscreenManager unregisters the context for this media element, it should subtract one from the client count for the media element context in WebPlaybackSessionManager. 2016-04-27 Alex Christensen <achristensen@webkit.org> Remove download message receiver when NetworkProcess crashes https://bugs.webkit.org/show_bug.cgi?id=157102 <rdar://problem/25550106> Reviewed by Anders Carlsson. * UIProcess/Downloads/DownloadProxyMap.cpp: (WebKit::DownloadProxyMap::processDidClose): When the NetworkProcess crashes during a download, we want to remove the message receiver from the map so we don't get an assertion in ~MessageReceiver in the UIProcess so we do not have a freed message receiver in the map. 2016-04-27 Alex Christensen <achristensen@webkit.org> Fix client certificate authentication with NSURLSession on iOS https://bugs.webkit.org/show_bug.cgi?id=157094 <rdar://problem/25946859> Reviewed by Darin Adler. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): We only want to create a non-persistent credential with the given user and password and store the user and password in the CredentialStorage if there is a user and password. We previously only skipped this if we were doing server trust evaluation, in which case we will have a credential from serverTrustCredential which has no user or password. When doing client certificate authentication on iOS, this completion handler is called with a credential with session persistence and also no user or password, so we need to do the same thing. The reason this was never hit on Mac was because the credential came from tryUseCertificateInfoForChallenge, which always had persistence none. 2016-04-27 Claudio Saavedra <csaavedra@igalia.com> [GTK][EFL] Move WK2 platform code to a common place https://bugs.webkit.org/show_bug.cgi?id=157069 Reviewed by Carlos Garcia Campos. Logging implementation can be shared between EFL and GTK, so move it to unix. The GTK Module implementation doesn't depend on GTK anyhow so move it to glib. * Platform/efl/LoggingEfl.cpp: Removed. (WebKit::logLevelString): Deleted. * Platform/glib/ModuleGlib.cpp: Renamed from Source/WebKit2/Platform/gtk/ModuleGtk.cpp. (WebKit::Module::load): (WebKit::Module::unload): (WebKit::Module::platformFunctionPointer): * Platform/gtk/LoggingGtk.cpp: (WebKit::logLevelString): Deleted. * Platform/gtk/ModuleGtk.cpp: (WebKit::Module::load): Deleted. (WebKit::Module::unload): Deleted. (WebKit::Module::platformFunctionPointer): Deleted. * Platform/unix/LoggingUnix.cpp: Renamed from Source/WebKit2/Platform/gtk/LoggingGtk.cpp. (WebKit::logLevelString): * PlatformEfl.cmake: Update. * PlatformGTK.cmake: Update 2016-04-27 Alex Christensen <achristensen@webkit.org> Fix assertion when downloading with NSURLSession after r198955 https://bugs.webkit.org/show_bug.cgi?id=157051 Reviewed by Brady Eidson. * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::continueDecidePendingDownloadDestination): 2016-04-27 Carlos Garcia Campos <cgarcia@igalia.com> REGRESSION(r200094): [FreeType] Vertical text is broken after r200094 https://bugs.webkit.org/show_bug.cgi?id=157066 Reviewed by Martin Robinson. Add Source/WebCore/platform/graphics/freetype to the list of include dirs, because now FontPlatformData.h includes FcUniquePtr.h. * PlatformEfl.cmake: * PlatformGTK.cmake: 2016-04-26 Joseph Pecoraro <pecoraro@apple.com> Uncaught Exception: SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent. https://bugs.webkit.org/show_bug.cgi?id=156991 <rdar://problem/25913475> Reviewed by Timothy Hatcher. * UIProcess/mac/WebInspectorProxyMac.mm: (WebKit::WebInspectorProxy::platformCreateInspectorPage): Explicitly always allow access to storage for Web Inspector content just in case, as we already allow universal file access. 2016-04-26 Myles C. Maxfield <mmaxfield@apple.com> [WK2] [OS X] Create API for switching RTL scrollbar policy https://bugs.webkit.org/show_bug.cgi?id=156948 <rdar://problem/25707757> Reviewed by Darin Adler. Add the new API. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.h: * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration encodeWithCoder:]): (-[WKWebViewConfiguration initWithCoder:]): (-[WKWebViewConfiguration copyWithZone:]): * UIProcess/WebPageProxy.cpp: * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-04-26 Beth Dakin <bdakin@apple.com> Check to make sure shouldRequestCandidates() before requesting candidates https://bugs.webkit.org/show_bug.cgi?id=157038 -and corresponding- rdar://problem/25910418 Reviewed by Tim Horton. This patch limits requesting and showing candidates to cases where shouldRequestCandidates() is true. This patch also caches the sequence number returned by [NSSpellChecker requestCandidatesForSelectedRange:] to make sure it is equal to the sequence number sent to the callback handler so that we do not show candidates for old requests. * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::updateWebViewImplAdditions): (WebKit::WebViewImpl::shouldRequestCandidates): (WebKit::WebViewImpl::showCandidates): (WebKit::WebViewImpl::requestCandidatesForSelectionIfNeeded): (WebKit::WebViewImpl::handleRequestedCandidates): 2016-04-26 Gyuyoung Kim <gyuyoung.kim@webkit.org> [EFL] Update expectation result in ewk_context_preferred_languages API test https://bugs.webkit.org/show_bug.cgi?id=157027 Reviewed by Carlos Garcia Campos. platformLanguage() has been returning lower case value since r199815. Thus existing expected result needs to be updated together. * UIProcess/API/efl/tests/test_ewk2_context.cpp: Change en-US with en-us. (TEST_F): 2016-04-26 Zan Dobersek <zdobersek@igalia.com> Mark two methods in the CoordinatedGraphicsScene and the ThreadedCoordinatedLayerTreeHost classes as overrides, fixing the compiler warnings. Rubber-stamped by Carlos Garcia Campos. * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h: * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: 2016-04-25 Ryosuke Niwa <rniwa@webkit.org> Remove the build flag for template elements https://bugs.webkit.org/show_bug.cgi?id=157022 Reviewed by Daniel Bates. * Configurations/FeatureDefines.xcconfig: 2016-04-25 Chris Dumez <cdumez@apple.com> Crash under -[WKWebView _mayAutomaticallyShowVideoPictureInPicture] + 32 (WKWebView.mm:309) https://bugs.webkit.org/show_bug.cgi?id=156990 <rdar://problem/25904376> Reviewed by Jer Noble. In case of WebProcess crash, WebPageProxy::processDidCrash() will call resetState() which will nullify WebPageProxy::m_videoFullscreenManager. In WebPageProxy::reattachToWebProcess(), we then call updateViewState() before re-initializing m_videoFullscreenManager, and updateViewState() ends up calling [WKWebView _mayAutomaticallyShowVideoPictureInPicture] which dereferences WebPageProxy::m_videoFullscreenManager without null check. This patch adds a null check for m_videoFullscreenManager in _mayAutomaticallyShowVideoPictureInPicture. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _mayAutomaticallyShowVideoPictureInPicture]): 2016-04-25 Dan Bernstein <mitz@apple.com> Fix a couple of mistakes from r199700. Rubber-stamped by Anders Carlsson. * UIProcess/API/Cocoa/WKPreferencesPrivate.h: Added availability attributes to new properties. * WebKit2.xcodeproj/project.pbxproj: Demoted _WKExperimentalFeatureInternal.h from Private to Project. 2016-04-24 Hunseop Jeong <hs85.jeong@samsung.com> [EFL] Update the ewk_settings_offline_web_application_cache_enabled_get() expected value after r199854. https://bugs.webkit.org/show_bug.cgi?id=156968 Reviewed by Gyuyoung Kim. * UIProcess/API/C/WKPreferencesRef.h: Update the comment. * UIProcess/API/efl/tests/test_ewk2_settings.cpp: (TEST_F): 2016-04-23 Andy Estes <aestes@apple.com> Fix issues found by the clang static analyzer https://bugs.webkit.org/show_bug.cgi?id=156956 Reviewed by Alexey Proskuryakov. * UIProcess/API/Cocoa/WKPreviewActionItem.mm: (-[WKPreviewAction dealloc]): Added to release _identifier. * UIProcess/_WKWebViewPrintFormatter.mm: (-[_WKWebViewPrintFormatter dealloc]): Released _frameToPrint. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView inputView]): -createPeripheralWithView: returned a retained object, but the method name did not match Cocoa conventions. Called -initWithView: instead. (-[WKContentView _showAttachmentSheet]): Stored the _WKActivatedElementInfo in a RetainPtr. (-[WKContentView _dataForPreviewItemController:atPosition:type:]): Ditto. (+[WKAutocorrectionContext autocorrectionContextWithData:markedText:selectedText:afterText:selectedRangeInMarkedText:]): The properties contextBeforeSelection, selectedText, markedText, and contextAfterSelection have the 'copy' annotation in UIWKAutocorrectionContext, so the additional copy made here would be leaked. Removed the extra copy. (-[WKAutocorrectionContext dealloc]): Deleted. * UIProcess/ios/forms/WKFormInputControl.h: Removed -createPeripheralWithView: and declared -initWithView:. * UIProcess/ios/forms/WKFormInputControl.mm: (-[WKFormInputControl initWithView:]): Changed to return instancetype. (+[WKFormInputControl createPeripheralWithView:]): Deleted. * UIProcess/ios/forms/WKFormSelectControl.h: Removed -createPeripheralWithView: and declared -initWithView:. * UIProcess/ios/forms/WKFormSelectControl.mm: (+[WKFormSelectControl createPeripheralWithView:]): Deleted. * UIProcess/mac/LegacySessionStateCoding.cpp: (WebKit::decodeLegacySessionState): If dynamic_cf_cast returned nullptr, the result of CFPropertyListCreateWithData would leak. Stored the CFPropertyListRef in a RetainPtr before calling dynamic_cf_cast. * UIProcess/mac/ServicesController.mm: (WebKit::ServicesController::refreshExistingServices): Used a RetainPtr for attachment and cell. * UIProcess/mac/WebContextMenuProxyMac.mm: (WebKit::WebContextMenuProxyMac::setupServicesMenu): Used a RetainPtr for groupEntry. 2016-04-23 Chris Dumez <cdumez@apple.com> Tie the DiagnosticLoggingClient's lifetime to the Page https://bugs.webkit.org/show_bug.cgi?id=156938 <rdar://problem/25851499> Reviewed by Antti Koivisto. * WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp: (WebKit::WebDiagnosticLoggingClient::pageDestroyed): (WebKit::WebDiagnosticLoggingClient::mainFrameDestroyed): Deleted. * WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.h: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::willStartUserTriggeredZooming): 2016-04-23 Dan Bernstein <mitz@apple.com> <rdar://problem/25893246> WebKit2 has failed to build: error: use of undeclared identifier 'm_playbackSessionManager' Fixed the non-AVKit build. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _isShowingVideoPictureInPicture]): (-[WKWebView _mayAutomaticallyShowVideoPictureInPicture]): * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::fullScreenManager): (WebKit::WebPageProxy::playbackSessionManager): * UIProcess/WebPageProxy.h: * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::applicationDidBecomeActive): * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::createScrollingCoordinator): (WebKit::WebChromeClient::supportsVideoFullscreen): * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::inspectorUI): (WebKit::WebPage::playbackSessionManager): * WebProcess/WebPage/WebPage.h: * WebProcess/cocoa/WebVideoFullscreenManager.h: * WebProcess/cocoa/WebVideoFullscreenManager.mm: 2016-04-22 Ryan Haddad <ryanhaddad@apple.com> Fixing a typo in my last commit. Unreviewed build fix. * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.messages.in: * WebProcess/cocoa/WebVideoFullscreenManager.messages.in: 2016-04-22 Ryan Haddad <ryanhaddad@apple.com> Missed some macros to fix builds that do not support AVKit. Unreviewed build fix. * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.messages.in: * WebProcess/cocoa/WebVideoFullscreenManager.messages.in: 2016-04-22 Ryan Haddad <ryanhaddad@apple.com> Fix builds that do not support AVKit Unreviewed build fix. * UIProcess/WebPageProxy.h: 2016-04-22 Ryan Haddad <ryanhaddad@apple.com> Take 2 for fixing builds that do not support AVKit Unreviewed build fix. * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::resetState): 2016-04-22 Anders Carlsson <andersca@apple.com> WKWebView WebSQL is not enabled https://bugs.webkit.org/show_bug.cgi?id=156928 rdar://problem/19029603 Reviewed by Beth Dakin. Give databases a default quota of 50 MB, matching what we have in UIWebView. * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::UIClient::exceededDatabaseQuota): 2016-04-22 Ryan Haddad <ryanhaddad@apple.com> Fix builds that do not support AVKit Unreviewed build fix. * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h: * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::WebPageProxy): (WebKit::WebPageProxy::reattachToWebProcess): (WebKit::WebPageProxy::viewDidLeaveWindow): * UIProcess/ios/WebPageProxyIOS.mm: 2016-04-22 Brady Eidson <beidson@apple.com> Modern IDB: Rework the ownership/RefCounting model of IDBConnectionToServer and IDBConnectionProxy. https://bugs.webkit.org/show_bug.cgi?id=156916 Reviewed by Tim Horton. * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer): 2016-04-22 Zan Dobersek <zdobersek@igalia.com> NetworkCacheIOChannelSoup: detach the newly-created IOChannel::readSync thread https://bugs.webkit.org/show_bug.cgi?id=156907 Reviewed by Carlos Garcia Campos. * NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp: (WebKit::NetworkCache::IOChannel::readSyncInThread): Detach the new thread, ensuring the resources are released after the thread exits. Next step is to set up a thread pool and use that, avoiding thread re-creation. 2016-04-21 Dean Jackson <dino@apple.com> Backdrop Filter should not be visible if element has visibility:hidden https://bugs.webkit.org/show_bug.cgi?id=149318 <rdar://problem/22749780> Reviewed by Simon Fraser. Add the isHidden method to PlatformCALayerRemote. * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::isHidden): * WebProcess/WebPage/mac/PlatformCALayerRemote.h: 2016-04-21 Anders Carlsson <andersca@apple.com> WKWebView HTML5 AppCache not working https://bugs.webkit.org/show_bug.cgi?id=156887 rdar://problem/17944162 Reviewed by Tim Horton. * Shared/WebPreferencesDefinitions.h: Set the offlineWebApplicationCacheEnabled property to true by default. * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm: (API::WebsiteDataStore::defaultDataStoreConfiguration): Set the default applicationCacheFlatFileSubdirectoryName to "Files". 2016-04-21 Anders Carlsson <andersca@apple.com> Get rid of the last uses of ApplicationCacheStorage::singleton() from WebKit2 https://bugs.webkit.org/show_bug.cgi?id=156876 Reviewed by Tim Horton. * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): (WebKit::WebProcessCreationParameters::decode): * Shared/WebProcessCreationParameters.h: Add and encode and decode a applicationCacheFlatFileSubdirectoryName. * UIProcess/API/APIProcessPoolConfiguration.cpp: (API::ProcessPoolConfiguration::createWithLegacyOptions): Set m_applicationCacheFlatFileSubdirectoryName to "ApplicationCache". (API::ProcessPoolConfiguration::ProcessPoolConfiguration): Set m_applicationCacheFlatFileSubdirectoryName to "Files". (API::ProcessPoolConfiguration::copy): Copy m_applicationCacheFlatFileSubdirectoryName. * UIProcess/API/APIProcessPoolConfiguration.h: Add getter for applicationCacheFlatFileSubdirectoryName. * UIProcess/WebProcessPool.cpp: (WebKit::legacyWebsiteDataStoreConfiguration): Initialize applicationCacheFlatFileSubdirectoryName from the process pool configuration. (WebKit::WebProcessPool::createNewWebProcess): Initialize parameters.applicationCacheFlatFileSubdirectoryName. Remove a call to ApplicationCacheStorage::singleton().setDefaultOriginQuota since it had no effect (it was called in the UI process). * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::WebsiteDataStore): Initialize m_applicationCacheFlatFileSubdirectoryName. (WebKit::WebsiteDataStore::fetchData): (WebKit::WebsiteDataStore::removeData): Pass m_applicationCacheFlatFileSubdirectoryName when creating the application cache storage. * UIProcess/WebsiteData/WebsiteDataStore.h: Add new members. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::WebPage): Set the application cache storage. * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): Initialize the application cache storage. * WebProcess/WebProcess.h: (WebKit::WebProcess::applicationCacheStorage): Add new getter. 2016-04-21 Anders Carlsson <andersca@apple.com> Remove two uses of ApplicationCacheStorage::singleton() from WebKit2 https://bugs.webkit.org/show_bug.cgi?id=156873 Reviewed by Beth Dakin. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::reachedApplicationCacheOriginQuota): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::clearApplicationCache): Deleted. * WebProcess/WebProcess.h: 2016-04-21 Beth Dakin <bdakin@apple.com> showCandidates() should take a range and the string should be the whole paragraph https://bugs.webkit.org/show_bug.cgi?id=156813 -and corresponding- rdar://problem/25760533 Reviewed by Tim Horton. * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::updateWebViewImplAdditions): (WebKit::WebViewImpl::showCandidates): (WebKit::WebViewImpl::requestCandidatesForSelectionIfNeeded): (WebKit::WebViewImpl::handleRequestedCandidates): 2016-04-21 Chelsea Pugh <cpugh@apple.com> [iOS] Allow clients to hide the accessory view on a form input session https://bugs.webkit.org/show_bug.cgi?id=155574 Reviewed by Dan Bernstein. * UIProcess/API/Cocoa/_WKFormInputSession.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKFormInputSession accessoryViewShouldNotShow]): Getter for accessoryViewShouldNotShow. (-[WKFormInputSession setAccessoryViewShouldNotShow:]): Set accessoryViewShouldNotShow and reload input views. (-[WKContentView requiresAccessoryView]): If the accessory view should be not be shown, do not require the accessory view. 2016-04-21 Chris Dumez <cdumez@apple.com> Drop [UsePointersEvenForNonNullableObjectArguments] from Range https://bugs.webkit.org/show_bug.cgi?id=156805 Reviewed by Youenn Fablet. * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm: (-[WKDOMRange setStart:offset:]): (-[WKDOMRange setEnd:offset:]): (-[WKDOMRange selectNode:]): (-[WKDOMRange selectNodeContents:]): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::contentsAsString): 2016-04-21 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] WebKitWebView should claim the contents size as its natural size https://bugs.webkit.org/show_bug.cgi?id=156835 Reviewed by Žan Doberšek. And keep claiming 0 as its minimum size since it's scrollable. * UIProcess/API/gtk/PageClientImpl.cpp: (WebKit::PageClientImpl::didChangeContentSize): Call webkitWebViewBaseSetContentsSize(). * UIProcess/API/gtk/PageClientImpl.h: * UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseGetPreferredWidth): Return the contents width as natural width. (webkitWebViewBaseGetPreferredHeight): Return the contents height as natural height. (webkit_web_view_base_class_init): Add implementations of get_preferred_width/height. (webkitWebViewBaseSetContentsSize): Save the contents size. * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: 2016-04-21 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] WebKitWebView should propagate wheel events not handled by the web process https://bugs.webkit.org/show_bug.cgi?id=156834 Reviewed by Žan Doberšek. We are currently swallowing all wheel events unconditionally, not allowing applications to handle wheel events when not handled by us. Since the GTK+ event propagation system is synchronous, and our events are handled asynchronously, we need to do something similar to what we do for key events, not propagate the event the first time and if not handled by the web process, re-inject it in the event loop and then just propagate it. * Shared/NativeWebWheelEvent.h: (WebKit::NativeWebWheelEvent::nativeEvent): Remove useless const. * UIProcess/API/gtk/PageClientImpl.cpp: (WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore): Tell the web view to propagate the next wheel event, and re-inject the event not handled by the web process in the event loop. * UIProcess/API/gtk/PageClientImpl.h: * UIProcess/API/gtk/WebKitWebViewBase.cpp: (webkitWebViewBaseScrollEvent): Propagate the event if shouldForwardNextWheelEvent is true. (webkitWebViewBaseForwardNextWheelEvent): Set shouldForwardNextWheelEvent to true. * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: * UIProcess/PageClient.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didReceiveEvent): Remove ifdef. * UIProcess/efl/WebView.h: 2016-04-20 Dustin Falgout <dustin@falgout.us> [GTK] Expose AllowUniversalAccessFromFileURLs preference now that calling localStorage.getItem() results in SecurityError: DOM Exception 18 Reviewed by Michael Catanzaro. As of r197858 JavaScript loaded in the context of a file scheme url cannot access local storage. That is a major breaking change as many applications that serve files locally rely on having access to local storage. The point of that security fix is to avoid cases of downloaded HTML content (such as e-mail attachments or JS injected into local contexts) from having access to your local file system and arbitrary local storage. If you are serving local files in your applications, you can use the WebKitAllowUniversalAccessFromFileURLs preference key to tell Webkit that you are approve of these kinds of interactions. https://bugs.webkit.org/show_bug.cgi?id=156651 * UIProcess/API/gtk/WebKitSettings.cpp: (webKitSettingsSetProperty): (webKitSettingsGetProperty): (webkit_settings_class_init): (webkit_settings_get_allow_universal_access_from_file_urls): (webkit_settings_set_allow_universal_access_from_file_urls): * UIProcess/API/gtk/WebKitSettings.h: * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: 2016-04-20 Brady Eidson <beidson@apple.com> Modern IDB (Workers): Enable INDEXED_DATABASE_IN_WORKERS compile time flag, but disabled in RuntimeEnabledFeatures. https://bugs.webkit.org/show_bug.cgi?id=156782 Reviewed by Alex Christensen. * Configurations/FeatureDefines.xcconfig: 2016-04-20 Brent Fulgham <bfulgham@apple.com> [WK2][Mac][iOS] WebContent crash when using special file:// URI scheme @ WebKit::resolveSymlinksInPath(WTF::CString const&) + 159 https://bugs.webkit.org/show_bug.cgi?id=156747 <rdar://problem/24648176> Reviewed by Alexey Proskuryakov. FileSystemCF::fileSystemRepresentation return a null string when presented with a file URL that contains embedded nulls. When this happens, SandboxExtension::createHandle attempts to pass a null string to 'resolveSymlinksInPath', which attemps to call 'strrchr' on the null pointer, causing a crash. Test: fast/url/file-uri-with-embedded-null-no-crash.html * Shared/mac/SandboxExtensionMac.mm: (WebKit::SandboxExtension::createHandle): If 'fileSystemRepresentation' is null, return early with an error. 2016-04-19 Alex Christensen <achristensen@webkit.org> Fix CMake build. * CMakeLists.txt: Don't compile a file that doesn't exist. * PlatformMac.cmake: Put the XPCServices in the right place. 2016-04-19 Chris Dumez <cdumez@apple.com> Crash under WebKit::PluginView::pluginSnapshotTimerFired https://bugs.webkit.org/show_bug.cgi?id=156754 <rdar://problem/22566764> Reviewed by Beth Dakin. Add null check for frame() before trying to access the frame settings, similarly to what is done earlier in this function. This fixes a top crasher. * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::pluginSnapshotTimerFired): 2016-04-19 Dean Jackson <dino@apple.com> New SPI to export a dictionary of runtime features https://bugs.webkit.org/show_bug.cgi?id=156645 <rdar://problem/23621666> Reviewed by Anders Carlsson. Mark the new SPI as WK_MAC_TBA, WK_IOS_TBA. * UIProcess/API/Cocoa/_WKExperimentalFeature.h: 2016-04-19 Dean Jackson <dino@apple.com> New SPI to export a dictionary of runtime features https://bugs.webkit.org/show_bug.cgi?id=156645 <rdar://problem/23621666> Post commit follow-up. Darin gave review comments that I didn't address in my original commit - I was waiting on some advice. * UIProcess/WebPreferences.cpp: (WebKit::WebPreferences::isEnabledForFeature): Change the macro to generate a static list of function pointers, rather than a lot of conditional statements. (WebKit::WebPreferences::setEnabledForFeature): Ditto. 2016-04-19 Chris Dumez <cdumez@apple.com> Mark more classes as WTF_MAKE_FAST_ALLOCATED https://bugs.webkit.org/show_bug.cgi?id=156732 Reviewed by Darin Adler. * NetworkProcess/Downloads/Download.h: * NetworkProcess/Downloads/PendingDownload.h: * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h: * Shared/API/Cocoa/RemoteObjectInvocation.h: 2016-04-19 Alex Christensen <achristensen@webkit.org> Build fix. * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob): result is unused. 2016-04-19 Brady Eidson <beidson@apple.com> Modern IDB: ObjectStore Blob Support. https://bugs.webkit.org/show_bug.cgi?id=143193 Reviewed by Alex Christensen. * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob): Don't ASSERT that this is the first we've heard of this path - The Connection now remembers all extensions. (WebKit::NetworkConnectionToWebProcess::getBlobDataFileReferenceForPath): Don't take - Just get. 2016-04-19 Antti Koivisto <antti@apple.com> Try to fix iOS build. * UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h: 2016-04-19 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r199658. https://bugs.webkit.org/show_bug.cgi?id=156736 It broke all EFL layout tests (Requested by KaL on #webkit). Reverted changeset: "[UNIX] Initialize WebKit before the platform initializations" https://bugs.webkit.org/show_bug.cgi?id=156622 http://trac.webkit.org/changeset/199658 2016-04-18 Alex Christensen <achristensen@webkit.org> Build fix after r199700 * PlatformMac.cmake: 2016-04-18 Brady Eidson <beidson@apple.com> Modern IDB (Blob support): When reading Blobs from the database, grant the Networking process sandbox access to the files. https://bugs.webkit.org/show_bug.cgi?id=156640 Reviewed by Alex Christensen. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::getSandboxExtensionsForBlobFiles): Utility function to ask the UI process for SandboxExtensions for a list of files. (WebKit::DatabaseProcess::didGetSandboxExtensionsForBlobFiles): Take the SandboxExtensions from the UI process and pass them along to the completion handler. * DatabaseProcess/DatabaseProcess.h: * DatabaseProcess/DatabaseProcess.messages.in: * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: (WebKit::WebIDBConnectionToClient::didGetRecord): If the value returned from the database doesn't have Blob files, pass the result directly on to WebCore. If it does, ask the UI process for SandboxExtensions first. * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp: (WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked): Grab the BlobDataFileReference from the NetworkConnectionToWebProcess to pass along to the BlobRegistry. * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob): Add this message so the WebProcess can preflight the creation of some blob URLs by passing along the SandboxExtensions for their files. (WebKit::NetworkConnectionToWebProcess::takeBlobDataFileReferenceForPath): * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * UIProcess/Databases/DatabaseProcessProxy.cpp: (WebKit::DatabaseProcessProxy::getSandboxExtensionsForBlobFiles): Create SandboxExtensions for the passed in files and return them to the DatabaseProcess. * UIProcess/Databases/DatabaseProcessProxy.h: * UIProcess/Databases/DatabaseProcessProxy.messages.in: * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::didGetRecordWithSandboxExtensions): New form of "didGetRecord" that handles passing the SandboxExtensions to the Networking process before they are needed. * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in: * WebProcess/FileAPI/BlobRegistryProxy.cpp: (WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked): * WebProcess/FileAPI/BlobRegistryProxy.h: 2016-04-18 Dean Jackson <dino@apple.com> New SPI to export a dictionary of runtime features https://bugs.webkit.org/show_bug.cgi?id=156645 <rdar://problem/23621666> Trying to fix GTK and EFL builds. I forgot to add files to CMake. * CMakeLists.txt: * PlatformMac.cmake: 2016-04-18 Dean Jackson <dino@apple.com> New SPI to export a dictionary of runtime features https://bugs.webkit.org/show_bug.cgi?id=156645 <rdar://problem/23621666> Reviewed by Darin Adler. Add a new type of Preference for experimental features so that we can dynamically toggle them from a WebKit2 host. These are special keys that are tied to runtime flags. The host process can ask WebKit for the list of keys, each with a small description, in order to display UI. - Add HumanReadableName and HumanReadableDescription parameters to our macros, which are used when building a ExperimentalFeature. These are both empty strings for the existing preferences. At some point we should probably move all this to code generation rather than macros, so that we don't have to carry around unused parameters. - I've included two sample experimental features: WebGL2 and ShadowDOM. They are not actually hooked up to the runtime settings yet, but its pretty clear how that will happen. Note that these are new preferences that have an "Experimental" prefix. This is so toggling an experimental feature to off won't cause the feature to not work once it becomes stable enough to enable by default. In other words, when it moves out of the experimental stage, the experimental feature flag will be removed, and you'll no longer check for values with that key. - The ExperimentalFeature object is what the host process will read in order to show some UI. It contains the human readable info, as well as the actual key that can be used to query and toggle the experimental feature. * Shared/API/APIObject.h: Add the ExperimentalFeature. * Shared/Cocoa/APIObject.mm: (API::Object::newObject): Exposes a wrapper around a _WKExperimentalFeature ObjC type. * Shared/WebPreferencesDefinitions.h: Change all the existing macros to take the new parameters, and add the initial experimental keys. * Shared/WebPreferencesKeys.cpp: Add new parameters to existing macros. * Shared/WebPreferencesKeys.h: Ditto. * Shared/WebPreferencesStore.cpp: Ditto. (WebKit::defaults): * UIProcess/API/APIExperimentalFeature.cpp: The API side of the ExperimentalFeature. (API::ExperimentalFeature::create): (API::ExperimentalFeature::ExperimentalFeature): (API::ExperimentalFeature::~ExperimentalFeature): * UIProcess/API/APIExperimentalFeature.h: * UIProcess/API/Cocoa/WKPreferences.mm: The actual implementation of the SPI. (+[WKPreferences _experimentalFeatures]): Create and return a list of feature descriptors. (-[WKPreferences _isEnabledForFeature:]): Get the value. (-[WKPreferences _setEnabled:forFeature:]): Set the value. * UIProcess/API/Cocoa/WKPreferencesPrivate.h: * UIProcess/API/Cocoa/_WKExperimentalFeature.h: The ObjC version. * UIProcess/API/Cocoa/_WKExperimentalFeature.mm: (-[_WKExperimentalFeature dealloc]): (-[_WKExperimentalFeature description]): (-[_WKExperimentalFeature name]): (-[_WKExperimentalFeature key]): (-[_WKExperimentalFeature details]): (-[_WKExperimentalFeature _apiObject]): * UIProcess/API/Cocoa/_WKExperimentalFeatureInternal.h: Implementation of the wrapper. (WebKit::wrapper): * UIProcess/WebPreferences.cpp: The C++ implementation that provides the data for the ObjC API. (WebKit::globalExperimentalFeatures): (WebKit::WebPreferences::ExperimentalFeatures): (WebKit::WebPreferences::isEnabledForFeature): (WebKit::WebPreferences::setEnabledForFeature): * UIProcess/WebPreferences.h: * UIProcess/mac/WebPreferencesMac.mm: Update some macros. (WebKit::WebPreferences::platformInitializeStore): * WebProcess/WebPage/WebPage.cpp: Ditto (WebKit::WebPage::updatePreferences): * WebKit2.xcodeproj/project.pbxproj: Add the new files. 2016-04-18 Tim Horton <timothy_horton@apple.com> Swipe view gesture should be reversed in right-to-left contexts https://bugs.webkit.org/show_bug.cgi?id=156714 Reviewed by Anders Carlsson. * UIProcess/API/gtk/PageClientImpl.h: * UIProcess/PageClient.h: * UIProcess/UserInterfaceLayoutDirection.h: Added. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::userInterfaceLayoutDirection): * UIProcess/WebPageProxy.h: * UIProcess/ios/PageClientImplIOS.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::userInterfaceLayoutDirection): * UIProcess/mac/PageClientImpl.h: * UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::userInterfaceLayoutDirection): Plumb RTL-ness through to WebPageProxy. We look at the WK(Web)View's UI layout direction. For other platforms, we just assume LTR. * UIProcess/mac/ViewGestureController.h: * UIProcess/mac/ViewGestureControllerMac.mm: (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanBecomeSwipe): Decide which way to swipe (and which way to look for back-forward items) based on the WebPageProxy's reported RTLness. (WebKit::ViewGestureController::isPhysicallySwipingLeft): "Back" means "swiping left" in LTR and "swiping right" in RTL. (WebKit::ViewGestureController::trackSwipeGesture): (WebKit::ViewGestureController::determineLayerAdjacentToSnapshotForParent): (WebKit::ViewGestureController::beginSwipeGesture): (WebKit::ViewGestureController::handleSwipeGesture): Make things that were equating "back" with "left" instead check isPhysicallySwipingLeft. 2016-04-18 Anders Carlsson <andersca@apple.com> Fix build with newer versions of clang. rdar://problem/25749769 * UIProcess/Cocoa/WebViewImpl.mm: * UIProcess/mac/WebPageProxyMac.mm: Forward declare some AppKit IPI. 2016-04-18 Tina Liu <iting_liu@apple.com> Implement functions to set plug-in load policies for private browsing mode https://bugs.webkit.org/show_bug.cgi?id=156540 Reviewed by Anders Carlsson. This patch implements API and wrappers for clients to set policies to use when using private browsing. WebPlatformStrategies would return which policies to use depending on whether the page is in private browsing mode. * Shared/WebProcessCreationParameters.h: Add a hash map for plug-in load policies for private browsing. * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): (WebKit::WebProcessCreationParameters::decode): * UIProcess/API/C/mac/WKContextPrivateMac.h: * UIProcess/API/C/mac/WKContextPrivateMac.mm: (WKContextSetPrivateBrowsingPluginLoadClientPolicy): Add a wrapper. * UIProcess/WebProcessPool.h: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::createNewWebProcess): Set the WebProcessCreationParameters's pluginLoadClientPoliciesForPrivateBrowsing. (WebKit::WebProcessPool::setPluginLoadClientPolicyForBrowsingMode): A helper function that sets plug-in policies to the corresponding instance variable: m_pluginLoadClientPolicies for general browsing and m_pluginLoadClientPoliciesForPrivateBrowsing for private browsing. The logic is extracted from the original setPluginLoadClientPolicy. While we are here, get rid of the .contains() lookup as .get() will just return a constructed object if the key is not found. (WebKit::WebProcessPool::setPluginLoadClientPolicy): Switch to use the helper function to set policies. (WebKit::WebProcessPool::setPrivateBrowsingPluginLoadClientPolicy): Ditto. Also send a message to the WebProcess for setting policies for private browsing. (WebKit::WebProcessPool::clearPluginClientPolicies): Clear plug-ins' private browsing policies. * WebProcess/WebCoreSupport/WebPlatformStrategies.h: * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: (WebKit::WebPlatformStrategies::setPluginLoadClientPolicyForBrowsingMode): Ditto as WebProcessPool::setPluginLoadClientPolicyForBrowsingMode. (WebKit::WebPlatformStrategies::setPluginLoadClientPolicy): Switch to use setPluginLoadClientPolicyForBrowsingMode to set policies. (WebKit::WebPlatformStrategies::setPrivateBrowsingPluginLoadClientPolicy): Use setPluginLoadClientPolicyForBrowsingMode to set policies for private browsing. (WebKit::WebPlatformStrategies::clearPluginClientPolicies): Clear plug-ins' private browsing policies. (WebKit::WebPlatformStrategies::longestMatchedWildcardHostForHost): Add an argument for private browsing. Read from the corresponding ivar. (WebKit::WebPlatformStrategies::replaceHostWithMatchedWildcardHost): Ditto. (WebKit::WebPlatformStrategies::pluginLoadClientPolicyForHost): Deleted. Renamed this function as pluginLoadClientPolicyForHostForBrowsingMode. (WebKit::WebPlatformStrategies::pluginLoadClientPolicyForHostForBrowsingMode): Ditto. (WebKit::WebPlatformStrategies::populatePluginCache): Get the plug-in load policies for a specific host based on the page's session status. If the page is using ephemeral session, use the private browsing policies. * WebProcess/WebProcess.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): Switch to call the helper function setPluginLoadClientPolicyFromCreationParameters. (WebKit::WebProcess::setPluginLoadClientPolicies): Logic moved from initializeWebProcess. Call PluginStrategy::setPluginLoadClientPolicy or PluginStrategy::setPrivateBrowsingPluginLoadClientPolicy depending on the input argument. (WebKit::WebProcess::setPrivateBrowsingPluginLoadClientPolicy): Add a wrapper to call PluginStrategy::setPrivateBrowsingPluginLoadClientPolicy. * WebProcess/WebProcess.messages.in: Declare an entry for setPrivateBrowsingPluginLoadClientPolicy. 2016-04-18 Chris Dumez <cdumez@apple.com> [WK2][iOS] Only adjust network responses' MIME type for QuickLook in the context of a main resource load https://bugs.webkit.org/show_bug.cgi?id=156639 <rdar://problem/25765848> Reviewed by Alex Christensen. * NetworkProcess/NetworkDataTask.h: (WebKit::NetworkDataTask::firstRequest): Add getter to return the first request. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): Pass flag to adjustMIMETypeIfNecessary() indicated if this is a main resource load. 2016-04-18 Brian Burg <bburg@apple.com> Web Automation: provide detailed error messages when an automation command fails https://bugs.webkit.org/show_bug.cgi?id=156635 <rdar://problem/25754051> Reviewed by Darin Adler and Timothy Hatcher. Fill in lots of missing error message details now that the remote end knows how to parse error strings with predefined error names and details. * UIProcess/Automation/WebAutomationSession.cpp: Rearrange the error message macros. Make it possible to pass a ErrorMessage variable or just the enum value name and get out an encoded error message that optionally includes a free-form details string. The predefined error name and the details string are joined together with a semicolon. (WebKit::WebAutomationSession::getBrowsingContext): (WebKit::WebAutomationSession::createBrowsingContext): (WebKit::WebAutomationSession::closeBrowsingContext): (WebKit::WebAutomationSession::switchToBrowsingContext): (WebKit::WebAutomationSession::resizeWindowOfBrowsingContext): (WebKit::WebAutomationSession::moveWindowOfBrowsingContext): (WebKit::WebAutomationSession::navigateBrowsingContext): (WebKit::WebAutomationSession::goBackInBrowsingContext): (WebKit::WebAutomationSession::goForwardInBrowsingContext): (WebKit::WebAutomationSession::reloadBrowsingContext): (WebKit::WebAutomationSession::evaluateJavaScriptFunction): (WebKit::WebAutomationSession::didEvaluateJavaScriptFunction): (WebKit::WebAutomationSession::resolveChildFrameHandle): (WebKit::WebAutomationSession::didResolveChildFrame): (WebKit::WebAutomationSession::resolveParentFrameHandle): (WebKit::WebAutomationSession::didResolveParentFrame): (WebKit::WebAutomationSession::computeElementLayout): (WebKit::WebAutomationSession::didComputeElementLayout): (WebKit::WebAutomationSession::isShowingJavaScriptDialog): (WebKit::WebAutomationSession::dismissCurrentJavaScriptDialog): (WebKit::WebAutomationSession::acceptCurrentJavaScriptDialog): (WebKit::WebAutomationSession::messageOfCurrentJavaScriptDialog): (WebKit::WebAutomationSession::setUserInputForCurrentJavaScriptPrompt): (WebKit::WebAutomationSession::getAllCookies): (WebKit::WebAutomationSession::didGetCookiesForFrame): (WebKit::WebAutomationSession::deleteSingleCookie): (WebKit::WebAutomationSession::didDeleteCookie): (WebKit::WebAutomationSession::addSingleCookie): (WebKit::WebAutomationSession::deleteAllCookies): (WebKit::WebAutomationSession::performMouseInteraction): (WebKit::WebAutomationSession::performKeyboardInteractions): (WebKit::WebAutomationSession::takeScreenshot): (WebKit::WebAutomationSession::didTakeScreenshot): Audit almost all early exits and provide a relevant error details message if the error itself is ambiguous. Make sure to format asynchronous errors. 2016-04-18 Brent Fulgham <bfulgham@apple.com> CSP: Remove stubs for dynamically-added favicons (via link rel="icon") https://bugs.webkit.org/show_bug.cgi?id=153151 <rdar://problem/24383176> Reviewed by Darin Adler. Remove the unused dynamic favicon code and tests. * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidChangeIcons): Deleted. * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 2016-04-18 Jer Noble <jer.noble@apple.com> REGRESSION( r199603): Pandora crashes WebKit in WebPlaybackSessionManager::removeClientForContext https://bugs.webkit.org/show_bug.cgi?id=156648 Reviewed by Darin Adler. Follow up patch to r199615; avoid a double hash lookup by using a .find() pattern instead of .contains() & .get(). * WebProcess/cocoa/WebPlaybackSessionManager.mm: (WebKit::WebPlaybackSessionManager::setUpPlaybackControlsManager): (WebKit::WebPlaybackSessionManager::clearPlaybackControlsManager): 2016-04-18 Chris Dumez <cdumez@apple.com> Unreviewed, rolling out r199644. Seems to have caused a 1-2% regression on warm PLT Reverted changeset: "[WK2][iOS] Do not dlopen() QuickLook in the NetworkProcess" https://bugs.webkit.org/show_bug.cgi?id=156639 http://trac.webkit.org/changeset/199644 2016-04-18 Carlos Garcia Campos <cgarcia@igalia.com> Pending API Request URL is wrong after reloading https://bugs.webkit.org/show_bug.cgi?id=139342 Reviewed by Darin Adler. It happens when reloading a web view loaded with anything but a URL, because the bf list is not updated for those cases and WebPageProxy::reload() is setting the current bf list item URL as pending API request URL. This also causes that progress is reported wrongly, because WebPageProxy::decidePolicyForNavigationAction() resets the pending API request URL when it's different than the requested URL. The page load transaction causes the progress to be changed, reporting 1.0 (the previous one), but later something < 1.0 is reported again by the progress tracker. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::reload): Use the current active URL as pending API request URL, falling back to the current bf list item URL when empty. 2016-04-18 Carlos Garcia Campos <cgarcia@igalia.com> Pending API request URL no set when loading Data, Alternate HTML or plain text https://bugs.webkit.org/show_bug.cgi?id=136916 Reviewed by Darin Adler. Set pending API request URL for all load methods in WebPageProxy. This ensures that right after calling those methods, the active URL is the requested one and that PageLoadState::isLoading() returns true. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::loadAlternateHTMLString): (WebKit::WebPageProxy::loadPlainTextString): (WebKit::WebPageProxy::loadWebArchiveData): 2016-04-18 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r199660. https://bugs.webkit.org/show_bug.cgi?id=156691 It broke the iOS build (Requested by KaL on #webkit). Reverted changeset: "Pending API request URL no set when loading Data, Alternate HTML or plain text" https://bugs.webkit.org/show_bug.cgi?id=136916 http://trac.webkit.org/changeset/199660 2016-04-18 Carlos Garcia Campos <cgarcia@igalia.com> Pending API request URL no set when loading Data, Alternate HTML or plain text https://bugs.webkit.org/show_bug.cgi?id=136916 Reviewed by Darin Adler. Set pending API request URL for all load methods in WebPageProxy. This ensures that right after calling those methods, the active URL is the requested one and that PageLoadState::isLoading() returns true. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::loadAlternateHTMLString): (WebKit::WebPageProxy::loadPlainTextString): (WebKit::WebPageProxy::loadWebArchiveData): 2016-04-18 Carlos Garcia Campos <cgarcia@igalia.com> [UNIX] Initialize WebKit before the platform initializations https://bugs.webkit.org/show_bug.cgi?id=156622 Reviewed by Michael Catanzaro. The platform specific initialization might use something that would require WebKit2 to be initialized. For example, in debug mode, the GTK+ port uses WTF::sleep that requires the threading to be initialized. * Shared/unix/ChildProcessMain.h: (WebKit::ChildProcessMain): Move InitializeWebKit2() before platformInitialize(). 2016-04-18 Jeremy Huddleston Sequoia <jeremyhu@apple.com> Fix incorrect assumption that APPLE implies Mac. https://bugs.webkit.org/show_bug.cgi?id=156679 Addresses build failure introduced in r198947 Reviewed by Alex Christensen. * CMakeLists.txt: 2016-04-17 Yoav Weiss <yoav@yoav.ws> Initial Link preload support https://bugs.webkit.org/show_bug.cgi?id=156334 Reviewed by Darin Adler. * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::maximumBufferingTime): Added LinkPreload as a possible CachedResource::type. 2016-04-17 Chris Dumez <cdumez@apple.com> [WK2][iOS] Do not dlopen() QuickLook in the NetworkProcess https://bugs.webkit.org/show_bug.cgi?id=156639 Reviewed by Darin Adler. * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::didReceiveResponse): Move checks for main resource load and for MIME type inside of QuickLookHandle::createIfNecessary(), for consistency with the other QuickLookHandle factory functions. 2016-04-16 Dan Bernstein <mitz@apple.com> [Mac] Web Content service with a restricted entitlement may load arbitrary dylibs https://bugs.webkit.org/show_bug.cgi?id=156668 <rdar://problem/25429784> Reviewed by Anders Carlsson. * Configurations/WebContentService.xcconfig: Enable library validation when the Web Content service is given the XPC domain extension entitlement. 2016-04-15 Dan Bernstein <mitz@apple.com> [Mac] WebContent, Networking and Databases services have i386 slices that are never used https://bugs.webkit.org/show_bug.cgi?id=156654 Reviewed by Alexey Proskuryakov. * Configurations/BaseXPCService.xcconfig: Set VALID_ARCHS to ARCHS_STANDARD when not building only for the active architecture. * Configurations/PluginService.32.xcconfig: Removed now-redundant definitions. * Configurations/PluginService.64.xcconfig: Ditto. 2016-04-15 Sam Weinig <sam@webkit.org> Need a way to specify a script name to show in the inspector for scripts injected via WKUserScript <rdar://problem/25626662> https://bugs.webkit.org/show_bug.cgi?id=156653 Reviewed by Tim Horton. * UIProcess/API/Cocoa/WKUserScript.mm: (-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:userContentWorld:]): * UIProcess/API/Cocoa/WKUserScriptPrivate.h: Add a new initializer that takes an associate URL that is used to represent the user script. 2016-04-15 Darin Adler <darin@apple.com> Reduce use of Deprecated::ScriptXXX classes https://bugs.webkit.org/show_bug.cgi?id=156632 Reviewed by Alex Christensen. * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::performJavaScriptURLRequest): Use JSValue. * WebProcess/WebPage/WebInspectorUI.cpp: (WebKit::WebInspectorUI::windowObjectCleared): Use references. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::runJavaScriptInMainFrame): Use JSValue. 2016-04-15 Jer Noble <jer.noble@apple.com> REGRESSION( r199603): Pandora crashes WebKit in WebPlaybackSessionManager::removeClientForContext https://bugs.webkit.org/show_bug.cgi?id=156648 <rdar://problem/25758117> Reviewed by Beth Dakin. Mistakenly checked in a reversed condition check, which causes a subsequent assert and crash. * WebProcess/cocoa/WebPlaybackSessionManager.mm: (WebKit::WebPlaybackSessionManager::clearPlaybackControlsManager): 2016-04-15 Chris Dumez <cdumez@apple.com> Mark NetworkLoad as FastAllocated https://bugs.webkit.org/show_bug.cgi?id=156628 Reviewed by Alex Christensen. Mark NetworkLoad as FastAllocated for performance. * NetworkProcess/NetworkLoad.h: 2016-04-14 Jer Noble <jer.noble@apple.com> Allow WebVideoFullscreenManager and Proxy to be used by audio elements. https://bugs.webkit.org/show_bug.cgi?id=156564 Reviewed by Beth Dakin. Tease apart WebVideoFullscreenManager and …Proxy into WebPlaybackSessionManager and …Proxy classes dealing exclusively with playback state and commands, leaving fullscreen state and commands in the WebVideoFullscreenManager… classes. WebVideoFullscreenManager and …Proxy will now require an associated WebPlaybackSessionManager and …Proxy class. The WebPlaybackSessionManager classes can be used separately and without the WebVideoFullscreenManager classes. * DerivedSources.make: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _mayAutomaticallyShowVideoPictureInPicture]): * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h: Copied from Source/WebKit2/UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h. * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in: Copied from Source/WebKit2/UIProcess/Cocoa/WebVideoFullscreenManagerProxy.messages.in. * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm: Added. (WebKit::WebPlaybackSessionModelContext::play): (WebKit::WebPlaybackSessionModelContext::pause): (WebKit::WebPlaybackSessionModelContext::togglePlayState): (WebKit::WebPlaybackSessionModelContext::beginScrubbing): (WebKit::WebPlaybackSessionModelContext::endScrubbing): (WebKit::WebPlaybackSessionModelContext::seekToTime): (WebKit::WebPlaybackSessionModelContext::fastSeek): (WebKit::WebPlaybackSessionModelContext::beginScanningForward): (WebKit::WebPlaybackSessionModelContext::beginScanningBackward): (WebKit::WebPlaybackSessionModelContext::endScanning): (WebKit::WebPlaybackSessionModelContext::selectAudioMediaOption): (WebKit::WebPlaybackSessionModelContext::selectLegibleMediaOption): (WebKit::WebPlaybackSessionManagerProxy::create): (WebKit::WebPlaybackSessionManagerProxy::WebPlaybackSessionManagerProxy): (WebKit::WebPlaybackSessionManagerProxy::~WebPlaybackSessionManagerProxy): (WebKit::WebPlaybackSessionManagerProxy::invalidate): (WebKit::WebPlaybackSessionManagerProxy::createModelAndInterface): (WebKit::WebPlaybackSessionManagerProxy::ensureModelAndInterface): (WebKit::WebPlaybackSessionManagerProxy::ensureModel): (WebKit::WebPlaybackSessionManagerProxy::ensureInterface): (WebKit::WebPlaybackSessionManagerProxy::addClientForContext): (WebKit::WebPlaybackSessionManagerProxy::removeClientForContext): (WebKit::WebPlaybackSessionManagerProxy::setUpPlaybackControlsManagerWithID): (WebKit::WebPlaybackSessionManagerProxy::clearPlaybackControlsManager): (WebKit::WebPlaybackSessionManagerProxy::resetMediaState): (WebKit::WebPlaybackSessionManagerProxy::setCurrentTime): (WebKit::WebPlaybackSessionManagerProxy::setBufferedTime): (WebKit::WebPlaybackSessionManagerProxy::setSeekableRangesVector): (WebKit::WebPlaybackSessionManagerProxy::setCanPlayFastReverse): (WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionOptions): (WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionOptions): (WebKit::WebPlaybackSessionManagerProxy::setExternalPlaybackProperties): (WebKit::WebPlaybackSessionManagerProxy::setWirelessVideoPlaybackDisabled): (WebKit::WebPlaybackSessionManagerProxy::setDuration): (WebKit::WebPlaybackSessionManagerProxy::setRate): (WebKit::WebPlaybackSessionManagerProxy::play): (WebKit::WebPlaybackSessionManagerProxy::pause): (WebKit::WebPlaybackSessionManagerProxy::togglePlayState): (WebKit::WebPlaybackSessionManagerProxy::beginScrubbing): (WebKit::WebPlaybackSessionManagerProxy::endScrubbing): (WebKit::WebPlaybackSessionManagerProxy::seekToTime): (WebKit::WebPlaybackSessionManagerProxy::fastSeek): (WebKit::WebPlaybackSessionManagerProxy::beginScanningForward): (WebKit::WebPlaybackSessionManagerProxy::beginScanningBackward): (WebKit::WebPlaybackSessionManagerProxy::endScanning): (WebKit::WebPlaybackSessionManagerProxy::selectAudioMediaOption): (WebKit::WebPlaybackSessionManagerProxy::selectLegibleMediaOption): (WebKit::WebPlaybackSessionManagerProxy::controlsManagerInterface): * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h: * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.messages.in: * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: (WebKit::WebVideoFullscreenModelContext::WebVideoFullscreenModelContext): (WebKit::WebVideoFullscreenModelContext::~WebVideoFullscreenModelContext): (WebKit::WebVideoFullscreenModelContext::play): (WebKit::WebVideoFullscreenModelContext::pause): (WebKit::WebVideoFullscreenModelContext::togglePlayState): (WebKit::WebVideoFullscreenModelContext::beginScrubbing): (WebKit::WebVideoFullscreenModelContext::endScrubbing): (WebKit::WebVideoFullscreenModelContext::seekToTime): (WebKit::WebVideoFullscreenModelContext::fastSeek): (WebKit::WebVideoFullscreenModelContext::beginScanningForward): (WebKit::WebVideoFullscreenModelContext::beginScanningBackward): (WebKit::WebVideoFullscreenModelContext::endScanning): (WebKit::WebVideoFullscreenModelContext::selectAudioMediaOption): (WebKit::WebVideoFullscreenModelContext::selectLegibleMediaOption): (WebKit::WebVideoFullscreenManagerProxy::create): (WebKit::WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy): (WebKit::WebVideoFullscreenManagerProxy::createModelAndInterface): (WebKit::WebVideoFullscreenManagerProxy::setupFullscreenWithID): Deleted. (WebKit::WebVideoFullscreenManagerProxy::setVideoDimensions): Deleted. (WebKit::WebVideoFullscreenManagerProxy::enterFullscreen): Deleted. (WebKit::WebVideoFullscreenManagerProxy::exitFullscreen): Deleted. (WebKit::WebVideoFullscreenManagerProxy::exitFullscreenWithoutAnimationToMode): Deleted. (WebKit::WebVideoFullscreenManagerProxy::cleanupFullscreen): Deleted. (WebKit::WebVideoFullscreenManagerProxy::preparedToReturnToInline): Deleted. (WebKit::WebVideoFullscreenManagerProxy::requestFullscreenMode): Deleted. (WebKit::WebVideoFullscreenManagerProxy::didSetupFullscreen): Deleted. (WebKit::WebVideoFullscreenManagerProxy::didExitFullscreen): Deleted. (WebKit::WebVideoFullscreenManagerProxy::didEnterFullscreen): Deleted. (WebKit::WebVideoFullscreenManagerProxy::didCleanupFullscreen): Deleted. (WebKit::WebVideoFullscreenManagerProxy::setVideoLayerFrame): Deleted. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::WebPageProxy): (WebKit::WebPageProxy::reattachToWebProcess): (WebKit::WebPageProxy::playbackSessionManager): (WebKit::WebPageProxy::videoFullscreenManager): (WebKit::WebPageProxy::resetState): (WebKit::WebPageProxy::hasActiveVideoForControlsManager): (WebKit::WebPageProxy::isPlayingMediaDidChange): Deleted. * UIProcess/WebPageProxy.h: * WebKit2.xcodeproj/project.pbxproj: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::supportsVideoFullscreen): (WebKit::WebChromeClient::setUpPlaybackControlsManager): (WebKit::WebChromeClient::clearPlaybackControlsManager): (WebKit::WebChromeClient::enterVideoFullscreenForVideoElement): (WebKit::WebChromeClient::exitVideoFullscreenForVideoElement): (WebKit::WebChromeClient::exitVideoFullscreenToModeWithoutAnimation): * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::playbackSessionManager): (WebKit::WebPage::videoFullscreenManager): * WebProcess/WebPage/WebPage.h: * WebProcess/cocoa/WebPlaybackSessionManager.h: Copied from Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.h. (WebKit::WebPlaybackSessionInterfaceContext::create): (WebKit::WebPlaybackSessionInterfaceContext::invalidate): * WebProcess/cocoa/WebPlaybackSessionManager.messages.in: Added. * WebProcess/cocoa/WebPlaybackSessionManager.mm: Added. (WebKit::nextContextId): (WebKit::WebPlaybackSessionInterfaceContext::WebPlaybackSessionInterfaceContext): (WebKit::WebPlaybackSessionInterfaceContext::~WebPlaybackSessionInterfaceContext): (WebKit::WebPlaybackSessionInterfaceContext::resetMediaState): (WebKit::WebPlaybackSessionInterfaceContext::setDuration): (WebKit::WebPlaybackSessionInterfaceContext::setCurrentTime): (WebKit::WebPlaybackSessionInterfaceContext::setBufferedTime): (WebKit::WebPlaybackSessionInterfaceContext::setRate): (WebKit::WebPlaybackSessionInterfaceContext::setSeekableRanges): (WebKit::WebPlaybackSessionInterfaceContext::setCanPlayFastReverse): (WebKit::WebPlaybackSessionInterfaceContext::setAudioMediaSelectionOptions): (WebKit::WebPlaybackSessionInterfaceContext::setLegibleMediaSelectionOptions): (WebKit::WebPlaybackSessionInterfaceContext::setExternalPlayback): (WebKit::WebPlaybackSessionInterfaceContext::setWirelessVideoPlaybackDisabled): (WebKit::WebPlaybackSessionManager::create): (WebKit::WebPlaybackSessionManager::WebPlaybackSessionManager): (WebKit::WebPlaybackSessionManager::~WebPlaybackSessionManager): (WebKit::WebPlaybackSessionManager::createModelAndInterface): (WebKit::WebPlaybackSessionManager::ensureModelAndInterface): (WebKit::WebPlaybackSessionManager::ensureModel): (WebKit::WebPlaybackSessionManager::ensureInterface): (WebKit::WebPlaybackSessionManager::removeContext): (WebKit::WebPlaybackSessionManager::addClientForContext): (WebKit::WebPlaybackSessionManager::removeClientForContext): (WebKit::WebPlaybackSessionManager::setUpPlaybackControlsManager): (WebKit::WebPlaybackSessionManager::clearPlaybackControlsManager): (WebKit::WebPlaybackSessionManager::contextIdForMediaElement): (WebKit::WebPlaybackSessionManager::resetMediaState): (WebKit::WebPlaybackSessionManager::setDuration): (WebKit::WebPlaybackSessionManager::setCurrentTime): (WebKit::WebPlaybackSessionManager::setBufferedTime): (WebKit::WebPlaybackSessionManager::setRate): (WebKit::WebPlaybackSessionManager::setSeekableRanges): (WebKit::WebPlaybackSessionManager::setCanPlayFastReverse): (WebKit::WebPlaybackSessionManager::setAudioMediaSelectionOptions): (WebKit::WebPlaybackSessionManager::setLegibleMediaSelectionOptions): (WebKit::WebPlaybackSessionManager::setExternalPlayback): (WebKit::WebPlaybackSessionManager::setWirelessVideoPlaybackDisabled): (WebKit::WebPlaybackSessionManager::play): (WebKit::WebPlaybackSessionManager::pause): (WebKit::WebPlaybackSessionManager::togglePlayState): (WebKit::WebPlaybackSessionManager::beginScrubbing): (WebKit::WebPlaybackSessionManager::endScrubbing): (WebKit::WebPlaybackSessionManager::seekToTime): (WebKit::WebPlaybackSessionManager::fastSeek): (WebKit::WebPlaybackSessionManager::beginScanningForward): (WebKit::WebPlaybackSessionManager::beginScanningBackward): (WebKit::WebPlaybackSessionManager::endScanning): (WebKit::WebPlaybackSessionManager::selectAudioMediaOption): (WebKit::WebPlaybackSessionManager::selectLegibleMediaOption): * WebProcess/cocoa/WebVideoFullscreenManager.h: (WebKit::WebVideoFullscreenInterfaceContext::create): * WebProcess/cocoa/WebVideoFullscreenManager.messages.in: * WebProcess/cocoa/WebVideoFullscreenManager.mm: (WebKit::WebVideoFullscreenInterfaceContext::WebVideoFullscreenInterfaceContext): (WebKit::WebVideoFullscreenInterfaceContext::resetMediaState): (WebKit::WebVideoFullscreenInterfaceContext::setDuration): (WebKit::WebVideoFullscreenInterfaceContext::setCurrentTime): (WebKit::WebVideoFullscreenInterfaceContext::setBufferedTime): (WebKit::WebVideoFullscreenInterfaceContext::setRate): (WebKit::WebVideoFullscreenInterfaceContext::setSeekableRanges): (WebKit::WebVideoFullscreenInterfaceContext::setCanPlayFastReverse): (WebKit::WebVideoFullscreenInterfaceContext::setAudioMediaSelectionOptions): (WebKit::WebVideoFullscreenInterfaceContext::setLegibleMediaSelectionOptions): (WebKit::WebVideoFullscreenInterfaceContext::setExternalPlayback): (WebKit::WebVideoFullscreenInterfaceContext::setWirelessVideoPlaybackDisabled): (WebKit::WebVideoFullscreenManager::create): (WebKit::WebVideoFullscreenManager::WebVideoFullscreenManager): (WebKit::WebVideoFullscreenManager::createModelAndInterface): (WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement): (WebKit::WebVideoFullscreenInterfaceContext::setVideoDimensions): Deleted. (WebKit::WebVideoFullscreenManager::~WebVideoFullscreenManager): Deleted. (WebKit::WebVideoFullscreenManager::ensureModelAndInterface): Deleted. (WebKit::WebVideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation): Deleted. (WebKit::WebVideoFullscreenManager::setVideoDimensions): Deleted. (WebKit::WebVideoFullscreenManager::requestFullscreenMode): Deleted. (WebKit::WebVideoFullscreenManager::fullscreenModeChanged): Deleted. (WebKit::WebVideoFullscreenManager::didSetupFullscreen): Deleted. (WebKit::WebVideoFullscreenManager::didEnterFullscreen): Deleted. (WebKit::WebVideoFullscreenManager::didExitFullscreen): Deleted. (WebKit::WebVideoFullscreenManager::didCleanupFullscreen): Deleted. (WebKit::WebVideoFullscreenManager::setVideoLayerGravityEnum): Deleted. (WebKit::WebVideoFullscreenManager::fullscreenMayReturnToInline): Deleted. (WebKit::WebVideoFullscreenManager::setVideoLayerFrameFenced): Deleted. 2016-04-15 John Wilander <wilander@apple.com> Refactor WebSockets handshake to use StringView instead of String for header validation. https://bugs.webkit.org/show_bug.cgi?id=155602 Reviewed by Darin Adler. * UIProcess/InspectorServer/HTTPRequest.cpp: (WebKit::HTTPRequest::parseHeaders): Now declares the HTTP header name as a StringView to match the change in WebCore::parseHTTPHeader. 2016-04-15 Alex Christensen <achristensen@webkit.org> Don't copy entire NSURLSessionConfiguration just to test for credentials https://bugs.webkit.org/show_bug.cgi?id=156598 Reviewed by Brady Eidson. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate initWithNetworkSession:withCredentials:]): (-[WKNetworkSessionDelegate URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:]): (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]): (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]): (-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]): (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): (WebKit::NetworkSession::NetworkSession): (-[WKNetworkSessionDelegate initWithNetworkSession:]): Deleted. 2016-04-14 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Fix GTK+ build after r199558. * UIProcess/API/gtk/WebKitFileChooserRequest.cpp: (webkitFileChooserRequestCreate): (webkit_file_chooser_request_select_files): * UIProcess/API/gtk/WebKitFileChooserRequestPrivate.h: * UIProcess/API/gtk/WebKitUIClient.cpp: 2016-04-14 Brent Fulgham <bfulgham@apple.com> Make <a download> a runtime enabled option https://bugs.webkit.org/show_bug.cgi?id=156583 <rdar://problem/25733449> Reviewed by Alex Christensen. Add a download attribute runtime flag based on preferences. Disable the download attribute by default. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesGetFetchAPIEnabled): (WKPreferencesSetDownloadAttributeEnabled): (WKPreferencesGetDownloadAttributeEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-04-14 Alex Christensen <achristensen@webkit.org> Build fix after r199554. * CMakeLists.txt: * PlatformMac.cmake: 2016-04-14 Brian Burg <bburg@apple.com> Web Automation: suppress automatic text correction in pages controlled by automation https://bugs.webkit.org/show_bug.cgi?id=156599 <rdar://problem/25712646> Reviewed by Timothy Hatcher. If the page is controlled by automation, then automatic text corrections will cause unexpected behaviors by nondeterministically modifying text inserted by a test. Just pretend these behaviors are disabled if controlled by automation. * WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm: (WebKit::WebEditorClient::isAutomaticQuoteSubstitutionEnabled): (WebKit::WebEditorClient::isAutomaticDashSubstitutionEnabled): (WebKit::WebEditorClient::isAutomaticTextReplacementEnabled): (WebKit::WebEditorClient::isAutomaticSpellingCorrectionEnabled): 2016-04-14 Anders Carlsson <andersca@apple.com> Try to fix the Yosemite build. * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::UIClient::runOpenPanel): 2016-04-14 Anders Carlsson <andersca@apple.com> [Mac] Add API for open panel handling to WKWebView https://bugs.webkit.org/show_bug.cgi?id=137759 rdar://problem/23278623 Reviewed by Tim Horton. Based on a patch by Brian Michel. * Shared/API/Cocoa/WebKit.h: Import WKOpenPanelParameters.h. * Shared/Cocoa/APIObject.mm: (API::Object::newObject): Create a WKOpenPanelParameters for Type::OpenPanelParameters. * UIProcess/API/APIOpenPanelParameters.cpp: Renamed from Source/WebKit2/Shared/WebOpenPanelParameters.cpp. * UIProcess/API/APIOpenPanelParameters.h: Renamed from Source/WebKit2/Shared/WebOpenPanelParameters.h. Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * UIProcess/API/APIUIClient.h: (API::UIClient::runOpenPanel): Change this to take a SecurityOriginData. * UIProcess/API/C/WKAPICast.h: * UIProcess/API/C/WKOpenPanelParametersRef.cpp: (WKOpenPanelParametersGetTypeID): Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * UIProcess/API/C/WKOpenPanelResultListener.cpp: (filePathsFromFileURLs): (WKOpenPanelResultListenerChooseFiles): * UIProcess/API/C/WKPage.cpp: (WKPageSetPageUIClient): Change chooseFiles to take a Vector<String> instead of an API::Array of URLs. * UIProcess/API/Cocoa/WKOpenPanelParameters.h: Added. * UIProcess/API/Cocoa/WKOpenPanelParameters.mm: Added. (-[WKOpenPanelParameters allowsMultipleSelection]): (-[WKOpenPanelParameters _apiObject]): * UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h: Add a WKOpenPanelParameters class which contains information about a file upload control. * UIProcess/API/Cocoa/WKUIDelegate.h: Add new delegate method. * UIProcess/Cocoa/UIDelegate.h: * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::setDelegate): Record whether the UI delegate implements the new delegate method. (WebKit::UIDelegate::UIClient::runOpenPanel): Invoke the new delegate method. * UIProcess/PageClient.h: (WebKit::PageClient::handleRunOpenPanel): Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * UIProcess/WebOpenPanelResultListenerProxy.cpp: (WebKit::WebOpenPanelResultListenerProxy::chooseFiles): * UIProcess/WebOpenPanelResultListenerProxy.h: Change chooseFiles to take a Vector<String> instead of an API::Array of URLs. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::runOpenPanel): * UIProcess/WebPageProxy.h: Change this to take a SecurityOriginData. * UIProcess/WebPageProxy.messages.in: Change RunOpenPanel to take a SecurityOriginData. * UIProcess/ios/PageClientImplIOS.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::handleRunOpenPanel): Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * UIProcess/ios/WKContentViewInteraction.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _showRunOpenPanel:resultListener:]): Change chooseFiles to take a Vector<String> instead of an API::Array of URLs. * UIProcess/ios/forms/WKFileUploadPanel.h: * UIProcess/ios/forms/WKFileUploadPanel.mm: (-[WKFileUploadPanel _chooseFiles:displayString:iconImage:]): Change chooseFiles to take a Vector<String> instead of an API::Array of URLs. (-[WKFileUploadPanel presentWithParameters:resultListener:]): Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * WebKit2.xcodeproj/project.pbxproj: Add new file. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::runOpenPanel): Pass the security origin of the frame along. 2016-04-14 Jiewen Tan <jiewen_tan@apple.com> Unreviewed, rolling out r199554. The change breaks Yosemite Release/Debug build Reverted changeset: "[Mac] Add API for open panel handling to WKWebView" https://bugs.webkit.org/show_bug.cgi?id=137759 http://trac.webkit.org/changeset/199554 2016-04-14 Anders Carlsson <andersca@apple.com> [Mac] Add API for open panel handling to WKWebView https://bugs.webkit.org/show_bug.cgi?id=137759 rdar://problem/23278623 Reviewed by Tim Horton. Based on a patch by Brian Michel. * Shared/API/Cocoa/WebKit.h: Import WKOpenPanelParameters.h. * Shared/Cocoa/APIObject.mm: (API::Object::newObject): Create a WKOpenPanelParameters for Type::OpenPanelParameters. * UIProcess/API/APIOpenPanelParameters.cpp: Renamed from Source/WebKit2/Shared/WebOpenPanelParameters.cpp. * UIProcess/API/APIOpenPanelParameters.h: Renamed from Source/WebKit2/Shared/WebOpenPanelParameters.h. Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * UIProcess/API/APIUIClient.h: (API::UIClient::runOpenPanel): Change this to take a SecurityOriginData. * UIProcess/API/C/WKAPICast.h: * UIProcess/API/C/WKOpenPanelParametersRef.cpp: (WKOpenPanelParametersGetTypeID): Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * UIProcess/API/C/WKOpenPanelResultListener.cpp: (filePathsFromFileURLs): (WKOpenPanelResultListenerChooseFiles): * UIProcess/API/C/WKPage.cpp: (WKPageSetPageUIClient): Change chooseFiles to take a Vector<String> instead of an API::Array of URLs. * UIProcess/API/Cocoa/WKOpenPanelParameters.h: Added. * UIProcess/API/Cocoa/WKOpenPanelParameters.mm: Added. (-[WKOpenPanelParameters allowsMultipleSelection]): (-[WKOpenPanelParameters _apiObject]): * UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h: Add a WKOpenPanelParameters class which contains information about a file upload control. * UIProcess/API/Cocoa/WKUIDelegate.h: Add new delegate method. * UIProcess/Cocoa/UIDelegate.h: * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::setDelegate): Record whether the UI delegate implements the new delegate method. (WebKit::UIDelegate::UIClient::runOpenPanel): Invoke the new delegate method. * UIProcess/PageClient.h: (WebKit::PageClient::handleRunOpenPanel): Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * UIProcess/WebOpenPanelResultListenerProxy.cpp: (WebKit::WebOpenPanelResultListenerProxy::chooseFiles): * UIProcess/WebOpenPanelResultListenerProxy.h: Change chooseFiles to take a Vector<String> instead of an API::Array of URLs. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::runOpenPanel): * UIProcess/WebPageProxy.h: Change this to take a SecurityOriginData. * UIProcess/WebPageProxy.messages.in: Change RunOpenPanel to take a SecurityOriginData. * UIProcess/ios/PageClientImplIOS.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::handleRunOpenPanel): Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * UIProcess/ios/WKContentViewInteraction.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _showRunOpenPanel:resultListener:]): Change chooseFiles to take a Vector<String> instead of an API::Array of URLs. * UIProcess/ios/forms/WKFileUploadPanel.h: * UIProcess/ios/forms/WKFileUploadPanel.mm: (-[WKFileUploadPanel _chooseFiles:displayString:iconImage:]): Change chooseFiles to take a Vector<String> instead of an API::Array of URLs. (-[WKFileUploadPanel presentWithParameters:resultListener:]): Rename WebKit::WebOpenPanelParameters to API::OpenPanelParameters. * WebKit2.xcodeproj/project.pbxproj: Add new file. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::runOpenPanel): Pass the security origin of the frame along. 2016-04-14 Alex Christensen <achristensen@webkit.org> Fix build without IndexedDB. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::deleteWebsiteDataForOrigins): (WebKit::DatabaseProcess::grantSandboxExtensionsForBlobs): (WebKit::DatabaseProcess::prepareForAccessToTemporaryFile): * DatabaseProcess/DatabaseProcess.h: * DatabaseProcess/DatabaseProcess.messages.in: 2016-04-13 Daniel Bates <dabates@apple.com> REGRESSION (r199401): Internal builds of Safari hang on launch https://bugs.webkit.org/show_bug.cgi?id=156545 <rdar://problem/25697779> As pointed out by Darin Adler, remove RELEASE_ASSERT() that I inadvertently left in WebCore::secCodeForProcess() as part of r199504. For now, we handle SecCodeCopyGuestWithAttributes() returning an error. In a subsequent commit we will look to re-introduce the use of a RELEASE_ASSERT() to enforce the invariant that SecCodeCopyGuestWithAttributes() returns a success status. * Shared/mac/CodeSigning.mm: (WebKit::secCodeForProcess): 2016-04-13 Brady Eidson <beidson@apple.com> Modern IDB (Blob support): Support retrieving Blobs from IDB. https://bugs.webkit.org/show_bug.cgi?id=156367 Reviewed by Alex Christensen. * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp: (WebKit::NetworkBlobRegistry::registerBlobURLOptionallyFileBacked): * NetworkProcess/FileAPI/NetworkBlobRegistry.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked): * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * WebProcess/FileAPI/BlobRegistryProxy.cpp: (WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked): * WebProcess/FileAPI/BlobRegistryProxy.h: 2016-04-13 Chris Dumez <cdumez@apple.com> We should not speculatively revalidate cached redirects https://bugs.webkit.org/show_bug.cgi?id=156548 <rdar://problem/25583886> Reviewed by Darin Adler. Stop speculatively revalidating cached redirects. This matches matches the behavior in NetworkCache's makeUseDecision() which reuses cached redirects only if they do not need revalidation. This was breaking fonts.css loading on stripe.com because the SpeculativeLoadManager would wrongly speculatively revalidate the redirect and then serve a 302 response the NetworkResourceLoader when the actual request came in. This would cause us to not follow the redirect. * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest): Abort the speculative load if it hits a redirect. This is the safe thing to do in this case, as we are supposed to do a hand-shake with WebCore in such case. (WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse): Let successful validations fall through instead of calling didComplete() early. This matches what is not in NetworkResourceLoader. This way, didFinishLoading() ends up getting called for both successful and unsuccessful (i.e. did not return a 302 status code) network validation. (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading): - Stop dealing with redirects as we abort the load as soon as we hit a redirect now. - Stop asserting that m_cacheEntryForValidation is null now that this is called for successful validations as well. (WebKit::NetworkCache::SpeculativeLoad::abort): New method that aborts the network loads, calls the completion handler and clean up. It is called in the case we hit a redirect while revalidating. * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: Drop m_redirectChainCacheStatus member as we no longer deal with redirects. * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage): If the resource needs revalidation AND is a cached redirect, then do not use it. This matches what is done in NetworkCache's makeUseDecision(). 2016-04-13 Brady Eidson <beidson@apple.com> Modern IDB: NetworkProcessConnection::didClose needs to have a self ref. <rdar://problem/25700864> and https://bugs.webkit.org/show_bug.cgi?id=156559 Reviewed by Alex Christensen. * WebProcess/Network/NetworkProcessConnection.cpp: (WebKit::NetworkProcessConnection::didClose): Self ref to protect this. 2016-04-13 Daniel Bates <dabates@apple.com> REGRESSION (r199401): Internal builds of Safari hang on launch https://bugs.webkit.org/show_bug.cgi?id=156545 <rdar://problem/25697779> Reviewed by Anders Carlsson. For some reason SecCodeCopyGuestWithAttributes() is failing with an error in Apple Internal Safari builds. For now, temporarily allow the failure while I investigate the cause in <rdar://problem/25706517>. * Shared/mac/CodeSigning.mm: (WebKit::secCodeForProcess): Log the failure with OSStatus code and return nullptr; (WebKit::codeSigningIdentifierForProcess): Return a null string if secCodeForProcess() returns a nullptr. This will cause us to treat affected Apple Internal Safari builds the same as we would treat an unsigned or third-party signed app. 2016-04-13 Alex Christensen <achristensen@webkit.org> Fix client certificate authentication with NetworkSession https://bugs.webkit.org/show_bug.cgi?id=156527 <rdar://problem/25489156> Reviewed by Darin Adler. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): We only want to use serverTrustCredential for ServerTrustEvaluation authentication challenges, not * Shared/Authentication/AuthenticationManager.cpp: (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge): (WebKit::AuthenticationManager::useCredentialForSingleChallenge): * Shared/Authentication/AuthenticationManager.h: * Shared/Authentication/mac/AuthenticationManager.mac.mm: (WebKit::AuthenticationManager::tryUseCertificateInfoForChallenge): Don't use challenge.sender with NSURLSession, which requires callbacks instead. 2016-04-12 Daniel Bates <dabates@apple.com> REGRESSION (r198933): Unable to login to Google account from Internet Accounts preference pane https://bugs.webkit.org/show_bug.cgi?id=156447 <rdar://problem/25628133> Reviewed by Darin Adler. Reverts the workaround landed in r199301 and teaches ProcessLauncherMac to use the code signing identifier of the UI process as the client-identifier if it is signed. Otherwise, we fall back to using the main bundle identifier or _NSGetProgname() depending on whether the UI process has an associated app bundle. * PlatformMac.cmake: Add file Shared/mac/CodeSigning.mm. * Shared/mac/ChildProcessMac.mm: (WebKit::ChildProcess::initializeSandbox): (WebKit::codeSigningIdentifierForProcess): Deleted; moved from here to file Shared/mac/CodeSigning.mm. * Shared/mac/CodeSigning.h: Added. * Shared/mac/CodeSigning.mm: Added. (WebKit::secCodeForCurrentProcess): Added. (WebKit::secCodeForProcess): Added. (WebKit::secCodeSigningInformation): Added. (WebKit::appleSignedOrMacAppStoreSignedOrAppleDeveloperSignedRequirement): Added. (WebKit::secCodeSigningIdentifier): Added. (WebKit::codeSigningIdentifier): Returns the code signing identifier for the current process. (WebKit::codeSigningIdentifierForProcess): Moved from file Shared/mac/ChildProcessMac.mm. Extracted logic into various helper functions (above) so that it can be shared with WebKit::codeSigningIdentifier() as well as to improve the readability of the code. Removed the OSStatus out argument that was used by callers for logging purposes and moved such logging responsibility into WebKit::secCodeSigningIdentifier() as a release assertion message since we always want to log this error when code signing validation fails. We use a release assertion to cause a noticeable crash because we such failures should not occur and if they do then we want to see crash reports so that we can handle such failures. Using a release assertion for validation failures also simplifies the possible return values of this function as such failures represented the only case where this function would return an empty string. We now return either a null string or a non- empty string. We return a null string when the specified process is either unsigned or signed by a third-party; otherwise, we return a non-empty string that represents the code signing identifier. * UIProcess/Launcher/mac/ProcessLauncherMac.mm: (WebKit::connectToService): Use the code signing identifier for the client-identifier if we have one (e.g. we are signed app). If we do not have a code signing identifier then take client-identifier to be the bundle identifier of our main bundle. Failing that we take client-identifier to be _NSGetProgname(). * WebKit2.xcodeproj/project.pbxproj: Add files Shared/mac/CodeSigning.{h, mm}. 2016-04-12 Enrica Casucci <enrica@apple.com> Should retrieve text surrounding the selection when performing lookup. https://bugs.webkit.org/show_bug.cgi?id=156525 rdar://problem/25043678 Reviewed by Tim Horton. The lookup functionality requires the surrounding text to improve the quality of the results. This patch changes the implementation of _lookup to retrieve the text before and the text after the selection. It also renames DictationContextCallback to SelectionContextCallback so that it can be used for both dictation and lookup, since they both need the surrounding text. * UIProcess/AutoCorrectionCallback.h: * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _lookup:]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::autocorrectionDataCallback): (WebKit::WebPageProxy::selectionContextCallback): (WebKit::WebPageProxy::getAutocorrectionContext): (WebKit::WebPageProxy::getSelectionContext): (WebKit::WebPageProxy::handleTwoFingerTapAtPoint): (WebKit::WebPageProxy::dictationContextCallback): Deleted. (WebKit::WebPageProxy::getLookupContextAtPoint): Deleted. * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::performDefaultBehaviorForKeyEvent): (WebKit::WebPage::getSelectionContext): (WebKit::WebPage::accessibilityObjectForMainFramePlugin): (WebKit::WebPage::requestDictationContext): (WebKit::WebPage::replaceSelectedText): (WebKit::WebPage::getLookupContextAtPoint): Deleted. 2016-04-12 Joseph Pecoraro <pecoraro@apple.com> Web Inspector: Dock controls are not available in toolbar if Web Inspector window leaves fullscreen https://bugs.webkit.org/show_bug.cgi?id=156520 <rdar://problem/22101106> Reviewed by Timothy Hatcher. * UIProcess/mac/WebInspectorProxyMac.mm: (WebKit::WebInspectorProxy::platformCanAttach): Be more explicit about the attachment view check. Its intent was to prevent allowing a 2nd level inspector from attaching to a 1st level inspector. We can use a stronger check. Also, remove deprecated pragmas by switching to new value. 2016-04-12 Joseph Pecoraro <pecoraro@apple.com> Web Inspector: Keyboard shortcut for "Inspect Element" only works when Web Inspector is open. https://bugs.webkit.org/show_bug.cgi?id=111193 <rdar://problem/13325889> Reviewed by Timothy Hatcher. * UIProcess/API/C/WKInspector.cpp: (WKInspectorIsElementSelectionActive): (WKInspectorToggleElementSelection): * UIProcess/API/C/WKInspector.h: API for WebKit clients to toggle element selection. * UIProcess/WebInspectorProxy.cpp: (WebKit::WebInspectorProxy::toggleElementSelection): (WebKit::WebInspectorProxy::elementSelectionChanged): * UIProcess/WebInspectorProxy.h: (WebKit::WebInspectorProxy::isElementSelectionActive): * UIProcess/WebInspectorProxy.messages.in: UIProcess update according to the state of the page and action to tell the page to toggle. When starting, pre-connect the inspector. When the state changes, if we were stopping and nothing was selected, then disconnect. Otherwise, we will bring the inspector to the front. * WebProcess/WebCoreSupport/WebInspectorClient.cpp: (WebKit::WebInspectorClient::elementSelectionChanged): * WebProcess/WebCoreSupport/WebInspectorClient.h: Let the UIProcess update its cached state of whether or not element selection is enabled or disabled. * WebProcess/WebPage/WebInspector.cpp: (WebKit::WebInspector::startElementSelection): (WebKit::WebInspector::stopElementSelection): (WebKit::WebInspector::elementSelectionChanged): * WebProcess/WebPage/WebInspector.h: * WebProcess/WebPage/WebInspector.messages.in: Messages in both directions. UIProcess -> InspectorProcess enable/disable. WebProcess -> UIProcess updated element selection state. * WebProcess/WebPage/WebInspectorUI.cpp: (WebKit::WebInspectorUI::startElementSelection): (WebKit::WebInspectorUI::stopElementSelection): * WebProcess/WebPage/WebInspectorUI.h: * WebProcess/WebPage/WebInspectorUI.messages.in: Open the inspector and enable element selection. 2016-04-11 Alex Christensen <achristensen@webkit.org> Build MiniBrowser with CMake on Mac https://bugs.webkit.org/show_bug.cgi?id=156471 Reviewed by Daniel Bates. * DatabaseProcess/DatabaseProcess.messages.in: 2016-04-11 Ryuan Choi <ryuan.choi@navercorp.com> [EFL] Do not pass context to EwkViewCreate https://bugs.webkit.org/show_bug.cgi?id=156461 Reviewed by Darin Adler. EWKViewCreate already has pageConfiguration which contains context. So, this patch removes context argument from EWKViewCreate. * UIProcess/API/C/CoordinatedGraphics/WKView.cpp: (WKViewCreate): * UIProcess/API/C/CoordinatedGraphics/WKView.h: * UIProcess/API/efl/ewk_view.cpp: (EWKViewCreate): Call WebView::Create instead of WKViewCreate not to use WK API. (ewk_view_smart_add): (ewk_view_add_with_configuration): (ewk_view_add_with_context): * UIProcess/API/efl/ewk_view_private.h: * UIProcess/efl/WebInspectorProxyEfl.cpp: (WebKit::WebInspectorProxy::platformCreateInspectorPage): * UIProcess/efl/WebView.cpp: (WebKit::WebView::create): (WebKit::WebView::WebView): * UIProcess/efl/WebView.h: 2016-04-11 Darin Adler <darin@apple.com> Remove UsePointersEvenForNonNullableObjectArguments from HTMLSelectElement https://bugs.webkit.org/show_bug.cgi?id=156458 Reviewed by Chris Dumez. * WebProcess/Plugins/PDF/PDFPluginAnnotation.mm: Updated includes. 2016-04-11 Jeremy Jones <jeremyj@apple.com> When clearing cache, also clear AVFoundation cache. https://bugs.webkit.org/show_bug.cgi?id=155783 rdar://problem/25252541 Reviewed by Darin Adler. Include the HTMLMediaElement media cache when doing disk cache operations. Add a sandbox extension for media cache directory. This allows the UI process and the web process to access the same cache. * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): Add media cache directory. (WebKit::WebProcessCreationParameters::decode): Add media cache directory. * Shared/WebProcessCreationParameters.h: * UIProcess/API/APIProcessPoolConfiguration.cpp: (API::ProcessPoolConfiguration::createWithLegacyOptions): (API::ProcessPoolConfiguration::ProcessPoolConfiguration): Add media cache directory. (API::ProcessPoolConfiguration::copy): Add media cache directory. * UIProcess/API/APIProcessPoolConfiguration.h: * UIProcess/API/APIWebsiteDataStore.cpp: (API::WebsiteDataStore::defaultMediaCacheDirectory): Default implementation. * UIProcess/API/APIWebsiteDataStore.h: * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm: (API::WebsiteDataStore::defaultMediaCacheDirectory): Media cache is in temporary directory. (API::WebsiteDataStore::tempDirectoryFileSystemRepresentation): For resources in temporary directory. (API::WebsiteDataStore::defaultDataStoreConfiguration): Init media cache directory. * UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): * UIProcess/WebProcessPool.cpp: (WebKit::legacyWebsiteDataStoreConfiguration): Add mediaCacheDirectory. (WebKit::WebProcessPool::createNewWebProcess): Add mediaCacheDirectory. * UIProcess/WebProcessPool.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::WebsiteDataStore): (WebKit::WebsiteDataStore::fetchData): Implement for mediaCacheDirectory. (WebKit::WebsiteDataStore::removeData): Implement for mediaCacheDirectory. * UIProcess/WebsiteData/WebsiteDataStore.h: * UIProcess/efl/WebProcessPoolEfl.cpp: (WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Added. * UIProcess/gtk/WebProcessPoolGtk.cpp: (WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Added. * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): Initialize media cache directory. * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess): Consume sandbox extension. 2016-04-11 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r199315. https://bugs.webkit.org/show_bug.cgi?id=156482 This change broke the OS X Yosemite build. (Requested by jwtan on #webkit). Reverted changeset: "When clearing cache, also clear AVFoundation cache." https://bugs.webkit.org/show_bug.cgi?id=155783 http://trac.webkit.org/changeset/199315 2016-04-11 Jeremy Jones <jeremyj@apple.com> When clearing cache, also clear AVFoundation cache. https://bugs.webkit.org/show_bug.cgi?id=155783 rdar://problem/25252541 Reviewed by Darin Adler. Include the HTMLMediaElement media cache when doing disk cache operations. Add a sandbox extension for media cache directory. This allows the UI process and the web process to access the same cache. * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): Add media cache directory. (WebKit::WebProcessCreationParameters::decode): Add media cache directory. * Shared/WebProcessCreationParameters.h: * UIProcess/API/APIProcessPoolConfiguration.cpp: (API::ProcessPoolConfiguration::createWithLegacyOptions): (API::ProcessPoolConfiguration::ProcessPoolConfiguration): Add media cache directory. (API::ProcessPoolConfiguration::copy): Add media cache directory. * UIProcess/API/APIProcessPoolConfiguration.h: * UIProcess/API/APIWebsiteDataStore.cpp: (API::WebsiteDataStore::defaultMediaCacheDirectory): Default implementation. * UIProcess/API/APIWebsiteDataStore.h: * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm: (API::WebsiteDataStore::defaultMediaCacheDirectory): Media cache is in temporary directory. (API::WebsiteDataStore::tempDirectoryFileSystemRepresentation): For resources in temporary directory. (API::WebsiteDataStore::defaultDataStoreConfiguration): Init media cache directory. * UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): * UIProcess/WebProcessPool.cpp: (WebKit::legacyWebsiteDataStoreConfiguration): Add mediaCacheDirectory. (WebKit::WebProcessPool::createNewWebProcess): Add mediaCacheDirectory. * UIProcess/WebProcessPool.h: * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::WebsiteDataStore): (WebKit::WebsiteDataStore::fetchData): Implement for mediaCacheDirectory. (WebKit::WebsiteDataStore::removeData): Implement for mediaCacheDirectory. * UIProcess/WebsiteData/WebsiteDataStore.h: * UIProcess/efl/WebProcessPoolEfl.cpp: (WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Added. * UIProcess/gtk/WebProcessPoolGtk.cpp: (WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Added. * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): Initialize media cache directory. * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess): Consume sandbox extension. 2016-04-11 Said Abou-Hallawa <sabouhallawa@apple,com> Merge CG ImageSource and non CG ImageSource implementation in one file https://bugs.webkit.org/show_bug.cgi?id=155456 Reviewed by Darin Adler. * UIProcess/API/efl/EwkView.cpp: (EwkView::setCursor): Replace the call to Image::getHotSpot() by Image::hotSpot(). 2016-04-11 Anders Carlsson <andersca@apple.com> Rename WKOpenPanelParameters files to WKOpenPanelParametersRef https://bugs.webkit.org/show_bug.cgi?id=156473 Reviewed by Alex Christensen. * UIProcess/API/C/WKOpenPanelParameters.cpp: (WKOpenPanelParametersGetTypeID): Deleted. (WKOpenPanelParametersGetAllowsMultipleFiles): Deleted. (WKOpenPanelParametersCopyAcceptedMIMETypes): Deleted. (WKOpenPanelParametersCopyCapture): Deleted. (WKOpenPanelParametersGetCaptureEnabled): Deleted. (WKOpenPanelParametersCopySelectedFileNames): Deleted. * UIProcess/API/C/WKOpenPanelParametersRef.cpp: Renamed from Source/WebKit2/UIProcess/API/C/WKOpenPanelParameters.cpp. (WKOpenPanelParametersGetTypeID): (WKOpenPanelParametersGetAllowsMultipleFiles): (WKOpenPanelParametersCopyAcceptedMIMETypes): (WKOpenPanelParametersCopyCapture): (WKOpenPanelParametersGetCaptureEnabled): (WKOpenPanelParametersCopySelectedFileNames): * UIProcess/API/C/WKOpenPanelParametersRef.h: Renamed from Source/WebKit2/UIProcess/API/C/WKOpenPanelParameters.h. * UIProcess/API/C/WebKit2_C.h: * UIProcess/API/efl/ewk_file_chooser_request.cpp: * UIProcess/mac/WebInspectorProxyMac.mm: * WebKit2.xcodeproj/project.pbxproj: 2016-04-09 Gavin Barraclough <barraclough@apple.com> WebKit should adopt journal_mode=wal for all SQLite databases. https://bugs.webkit.org/show_bug.cgi?id=133496 Reviewed by Darin Adler. * WebProcess/InjectedBundle/API/c/WKBundle.cpp: (WKBundleClearAllDatabases): - renamed deleteAllDatabases -> deleteAllDatabasesImmediately. 2016-04-11 Daniel Bates <dabates@apple.com> REGRESSION (r198933): Unable to login to Google account from Internet Accounts preference pane https://bugs.webkit.org/show_bug.cgi?id=156447 <rdar://problem/25628133> Reviewed by Anders Carlsson. Temporarily perform code signing verification only for Mac App Store- and Apple Developer- signed apps. * Shared/mac/ChildProcessMac.mm: (WebKit::codeSigningIdentifierForProcess): 2016-04-05 Oliver Hunt <oliver@apple.com> Remove compile time define for SEPARATED_HEAP https://bugs.webkit.org/show_bug.cgi?id=155508 Reviewed by Mark Lam. * Configurations/FeatureDefines.xcconfig: 2016-04-11 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r199290. https://bugs.webkit.org/show_bug.cgi?id=156465 broke 300 tests (Requested by mcatanzaro on #webkit). Reverted changeset: "Merge CG ImageSource and non CG ImageSource implementation in one file" https://bugs.webkit.org/show_bug.cgi?id=155456 http://trac.webkit.org/changeset/199290 2016-04-11 Said Abou-Hallawa <sabouhallawa@apple,com> Merge CG ImageSource and non CG ImageSource implementation in one file https://bugs.webkit.org/show_bug.cgi?id=155456 Reviewed by Darin Adler. * UIProcess/API/efl/EwkView.cpp: (EwkView::setCursor): Replace the call to Image::getHotSpot() by Image::hotSpot(). 2016-04-11 Fujii Hironori <Hironori.Fujii@jp.sony.com> [CMake] Make FOLDER property INHERITED https://bugs.webkit.org/show_bug.cgi?id=156460 Reviewed by Brent Fulgham. * CMakeLists.txt: Set FOLDER property as a directory property not a target property 2016-04-08 Sam Weinig <sam@webkit.org> Remove support for custom target picker actions <rdar://problem/24987783> https://bugs.webkit.org/show_bug.cgi?id=156434 Reviewed by Eric Carlson. This mostly entailed rolling out r197429 and r197569. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::removePlaybackTargetPickerClient): (WebKit::WebPageProxy::showPlaybackTargetPicker): (WebKit::WebPageProxy::playbackTargetPickerClientStateDidChange): (WebKit::WebPageProxy::setShouldPlayToPlaybackTarget): (WebKit::WebPageProxy::didChangeBackgroundColor): (WebKit::WebPageProxy::customPlaybackActionSelected): Deleted. * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::removePlaybackTargetPickerClient): (WebKit::WebChromeClient::showPlaybackTargetPicker): (WebKit::WebChromeClient::playbackTargetPickerClientStateDidChange): * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::setShouldPlayToPlaybackTarget): (WebKit::WebPage::customPlaybackActionSelected): Deleted. 2016-04-08 Simon Fraser <simon.fraser@apple.com> [iOS WK2] WKWebViews should consult ancestor UIScrollViews to determine tiling area https://bugs.webkit.org/show_bug.cgi?id=156429 rdar://problem/25455111 Reviewed by Tim Horton. When a WKWebView is expanded to full size, then embedded in UIScrollView, it would create huge tiles that cover the entire view area (since it considered itself non-scrollable). Fix to always use 512x512 tiles in this configuration, and to adjust the tile coverage for the area exposed through the enclosing UIScrollView. * Shared/VisibleContentRectUpdateInfo.cpp: Add enclosedInScrollView(), which is used to trigger normal-sized tiles. (WebKit::VisibleContentRectUpdateInfo::encode): (WebKit::VisibleContentRectUpdateInfo::decode): * Shared/VisibleContentRectUpdateInfo.h: (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo): (WebKit::VisibleContentRectUpdateInfo::enclosedInScrollView): (WebKit::operator==): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _didInvokeUIScrollViewDelegateCallback]): Pass our scrollView. (-[WKWebView _didFinishScrolling]): (-[WKWebView scrollViewDidScroll:]): (-[WKWebView scrollViewDidZoom:]): (-[WKWebView scrollViewDidEndZooming:withView:atScale:]): (-[WKWebView _scrollViewDidInterruptDecelerating:]): (-[WKWebView _visibleRectInEnclosingScrollView:]): (-[WKWebView _visibleContentRect]): Compute the exposed part of the content relative to the WKWebView, then intersect with the exposed part via any ancestor UIScrollView. (-[WKWebView _didScroll]): This is called by UIKit when some ancestor UIScrollView scrolls. However, we don't get all the UIScrollView delegate callbacks, so have to use a timer to trigger a call to -_updateVisibleContentRects when we're in a stable state. (-[WKWebView _enclosingScrollerScrollingEnded:]): (-[WKWebView _frameOrBoundsChanged]): (-[WKWebView _updateVisibleContentRects]): (-[WKWebView _updateVisibleContentRectAfterScrollInView:]): Get the stable state from the scroll view that the user is interacting with. (-[WKWebView _updateContentRectsWithState:]): * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/WebPageProxy.h: Rather than pass a bazillion arguments through updateVisibleContentRects(), just pass the VisibleContentRectUpdateInfo struct. * UIProcess/ios/WKContentView.h: * UIProcess/ios/WKContentView.mm: (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollView:]): (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:]): Deleted. * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::updateVisibleContentRects): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy): (WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorLocation): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::updateVisibleContentRects): 2016-04-08 Joseph Pecoraro <pecoraro@apple.com> [iOS Simulator] Build failure (property 'contentsFormat' not found on object of type 'LegacyTileLayer *') https://bugs.webkit.org/show_bug.cgi?id=156415 Reviewed by Simon Fraser. * UIProcess/API/Cocoa/_WKElementAction.mm: (-[_WKElementAction runActionWithElementInfo:]): Use WeakObjCPtr instead of __weak to avoid build errors when not under ARC. 2016-04-08 Alex Christensen <achristensen@webkit.org> Progress towards running CMake WebKit2 on Mac https://bugs.webkit.org/show_bug.cgi?id=156426 Reviewed by Tim Horton. * CMakeLists.txt: * PlatformMac.cmake: Put the xpc service binaries in the right place. 2016-04-08 Alex Christensen <achristensen@webkit.org> Build fix with IndexedDB disabled but DatabaseProcess enabled after r199230 https://bugs.webkit.org/show_bug.cgi?id=156321 Rubber-stamped by Brady Eidson. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::deleteWebsiteDataForOrigins): (WebKit::DatabaseProcess::grantSandboxExtensionsForBlobs): (WebKit::DatabaseProcess::accessToTemporaryFileComplete): (WebKit::DatabaseProcess::indexedDatabaseOrigins): * DatabaseProcess/DatabaseProcess.h: Add some more guards. 2016-04-07 Simon Fraser <simon.fraser@apple.com> [iOS WK2] Stop using exposedContentRect for history scroll state restoration https://bugs.webkit.org/show_bug.cgi?id=156392 Reviewed by Tim Horton. A future commit will alter the meaning of exposedContentRect on iOS to take into account clipped out parts of the WKWebView. To achieve this, wean history restoration off of using exposedContentRect for scroll state restoration. It did this to restore the page to the same position relative to the view's top-left (to avoid jiggles caused by changing obscured insets). Do this by pushing the left/top obscured insets down with visible content rects updates, storing them on ScrollView, and adding them to HistoryItem. Those insets are then used for scroll state restoration in WKWebView. * Shared/VisibleContentRectUpdateInfo.cpp: Add FloatSize for obscuredInset. (WebKit::VisibleContentRectUpdateInfo::encode): (WebKit::VisibleContentRectUpdateInfo::decode): * Shared/VisibleContentRectUpdateInfo.h: (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo): (WebKit::VisibleContentRectUpdateInfo::obscuredInset): (WebKit::operator==): * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _processDidExit]): Rename _needsToRestoreExposedRect to _needsToRestoreScrollPosition (-[WKWebView _didCommitLayerTree:]): Restore the scroll position using the scaled scrollOffset minus the old obscuredInset. (-[WKWebView _layerTreeCommitComplete]): (-[WKWebView _restorePageScrollPosition:scrollOrigin:previousObscuredInset:scale:]): (-[WKWebView _restorePageStateToUnobscuredCenter:scale:]): (-[WKWebView _scrollToContentScrollPosition:scrollOrigin:]): (-[WKWebView _updateVisibleContentRects]): (-[WKWebView _restorePageStateToExposedRect:scrollOrigin:scale:]): Deleted. * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/PageClient.h: * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/ios/PageClientImplIOS.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::restorePageState): * UIProcess/ios/WKContentView.h: * UIProcess/ios/WKContentView.mm: (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:]): Make the VisibleContentRectUpdateInfo here and pass it down. (-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:]): Deleted. * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::updateVisibleContentRects): (WebKit::WebPageProxy::restorePageState): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::restorePageState): (WebKit::WebPage::updateVisibleContentRects): setObscuredInset() moved from FrameView to Page. Also call setEnclosedInScrollView() on Page. 2016-04-08 Brady Eidson <beidson@apple.com> Modern IDB (Blob support): Write blobs to temporary files and move them to the correct location when storing them. https://bugs.webkit.org/show_bug.cgi?id=156321 Reviewed by Alex Christensen, Andy Estes, and Darin Adler. The NetworkProcess writes a blob to a temporary file, then tells the UIProcess to grant the DatabaseProcess a Sandbox Extension to that path. It then tells the WebProcess the paths for the temporary files, which then tells the DatabaseProcess to store the contents of those files as blob references in the database. Since the UIProcess had already granted it a Sandbox Extension, it is able to do so. * DatabaseProcess/DatabaseProcess.cpp: (WebKit::DatabaseProcess::idbServer): (WebKit::DatabaseProcess::grantSandboxExtensionsForBlobs): (WebKit::DatabaseProcess::prepareForAccessToTemporaryFile): (WebKit::DatabaseProcess::accessToTemporaryFileComplete): * DatabaseProcess/DatabaseProcess.h: * DatabaseProcess/DatabaseProcess.messages.in: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles): * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::grantSandboxExtensionsToDatabaseProcessForBlobs): (WebKit::NetworkProcess::didGrantSandboxExtensionsToDatabaseProcessForBlobs): * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkProcess.messages.in: * UIProcess/Network/NetworkProcessProxy.cpp: (WebKit::NetworkProcessProxy::grantSandboxExtensionsToDatabaseProcessForBlobs): * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.messages.in: 2016-04-07 Joseph Pecoraro <pecoraro@apple.com> Remove ENABLE(ENABLE_ES6_CLASS_SYNTAX) guards https://bugs.webkit.org/show_bug.cgi?id=156384 Reviewed by Ryosuke Niwa. * Configurations/FeatureDefines.xcconfig: 2016-04-07 Dean Jackson <dino@apple.com> [iOS] Play button on video is too dark https://bugs.webkit.org/show_bug.cgi?id=156383 <rdar://problem/23540816> Reviewed by Simon Fraser. Elements that are backed by a layer with either LightBackdropAppearance or DarkBackdropAppearance are actually a combination of a few layers (inside a special view). If we apply a mask to one of those layers, it needs to be attached to the correct child layer. * Shared/mac/RemoteLayerTreePropertyApplier.mm: (WebKit::RemoteLayerTreePropertyApplier::applyProperties): If we have one of the special appearance flags, apply the mask layer to a particular child, rather than the layer itself. 2016-04-07 Jeremy Jones <jeremyj@apple.com> Clearing the application cache doesn't work. https://bugs.webkit.org/show_bug.cgi?id=156354 rdar://problem/22369239 Reviewed by Brady Eidson. Use the correct "ApplicationCache" directory. Delete the caches, not just the entries. * UIProcess/WebsiteData/WebsiteDataStore.cpp: (WebKit::WebsiteDataStore::fetchData): (WebKit::WebsiteDataStore::removeData): 2016-04-07 Brian Burg <bburg@apple.com> Web Automation: implement Automation.addSingleCookie https://bugs.webkit.org/show_bug.cgi?id=156319 <rdar://problem/25589605> Reviewed by Timothy Hatcher. Implement this command by converting the protocol cookie to WebCore::Cookie, then sending the cookie to NetworkProcess to be added to the storage session using CookieJar::addCookie. * UIProcess/Automation/Automation.json: Clarify the units used in the 'expires' field and how the default value for the domain field should be computed. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::addSingleCookie): Parse the cookie and send it out via WebCookieManagerProxy. * UIProcess/WebCookieManagerProxy.cpp: (WebKit::WebCookieManagerProxy::addCookie): Added. * UIProcess/WebCookieManagerProxy.h: * WebProcess/Cookies/WebCookieManager.cpp: (WebKit::WebCookieManager::addCookie): * WebProcess/Cookies/WebCookieManager.h: * WebProcess/Cookies/WebCookieManager.messages.in: Forward the message to WebCore::addCookie. 2016-04-06 Ada Chan <adachan@apple.com> Add WebKitAdditions extension points around preferences https://bugs.webkit.org/show_bug.cgi?id=156303 Reviewed by Beth Dakin. * Shared/WebPreferencesStore.cpp: (WebKit::defaults): * UIProcess/API/C/WKPreferences.cpp: 2016-04-07 Brian Burg <bburg@apple.com> CookieJar should support adding synthetic cookies for developer tools https://bugs.webkit.org/show_bug.cgi?id=156091 <rdar://problem/25581340> Reviewed by Timothy Hatcher. Plumb the new method through the strategy and out to the network process. * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::addCookie): * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: (WebKit::WebPlatformStrategies::addCookie): * WebProcess/WebCoreSupport/WebPlatformStrategies.h: 2016-04-06 Alex Christensen <achristensen@webkit.org> Compile WebKitTestRunner with CMake on Mac https://bugs.webkit.org/show_bug.cgi?id=156310 Reviewed by Daniel Bates. * PlatformMac.cmake: 2016-04-05 Simon Fraser <simon.fraser@apple.com> Rename exposedRect to viewExposedRect and propagate it as Optional<> through WK2 https://bugs.webkit.org/show_bug.cgi?id=156274 Reviewed by Tim Horton. DrawingArea and FrameView have an "exposedRect" property that is used by applications on Mac, like Mail, that embed web views inside scroll views. However, this name is very similar to the "exposedContentRect" that is used on iOS to denote the part of the view whose pixels are visible, including through blurring overlaid UI. To disambiguate these two, rename the Mac "exposedRect" to "viewExposedRect" to emphasize that it's a rect that takes into account clipping in the native view hierarchy. Also make this rect Optional<> through the DrawingArea, removing comparisons against FloatRect::infiniteRect(). Do some other minor renaming in VisibleContentRectUpdateInfo. * Shared/VisibleContentRectUpdateInfo.cpp: Rename "exposedRect" and "unobscuredRect" to have "Content" in the names. (WebKit::VisibleContentRectUpdateInfo::encode): (WebKit::VisibleContentRectUpdateInfo::decode): * Shared/VisibleContentRectUpdateInfo.h: (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo): (WebKit::VisibleContentRectUpdateInfo::exposedContentRect): (WebKit::VisibleContentRectUpdateInfo::unobscuredContentRect): (WebKit::operator==): (WebKit::VisibleContentRectUpdateInfo::exposedRect): Deleted. (WebKit::VisibleContentRectUpdateInfo::unobscuredRect): Deleted. * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::updateViewExposedRect): * UIProcess/DrawingAreaProxy.cpp: (WebKit::DrawingAreaProxy::DrawingAreaProxy): (WebKit::DrawingAreaProxy::setViewExposedRect): (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired): (WebKit::DrawingAreaProxy::setExposedRect): Deleted. (WebKit::DrawingAreaProxy::exposedRectChangedTimerFired): Deleted. * UIProcess/DrawingAreaProxy.h: (WebKit::DrawingAreaProxy::viewExposedRect): (WebKit::DrawingAreaProxy::exposedRect): Deleted. * UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::exposedContentRect): (WebKit::WebPageProxy::unobscuredContentRect): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h: * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::setViewExposedRect): (WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorLocation): (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator): (WebKit::RemoteLayerTreeDrawingAreaProxy::scaledExposedRect): Deleted. (WebKit::RemoteLayerTreeDrawingAreaProxy::setExposedRect): Deleted. This was only used to position the indicator, and confusingly used either exposedContentRect() or viewExposedRect() depending on platform. * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): * WebProcess/WebPage/DrawingArea.h: * WebProcess/WebPage/DrawingArea.messages.in: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::updateVisibleContentRects): * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h: * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::setViewExposedRect): (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect): (WebKit::RemoteLayerTreeDrawingArea::flushLayers): (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): Deleted. (WebKit::RemoteLayerTreeDrawingArea::setExposedRect): Deleted. * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: (WebKit::TiledCoreAnimationDrawingArea::flushLayers): (WebKit::TiledCoreAnimationDrawingArea::setViewExposedRect): (WebKit::TiledCoreAnimationDrawingArea::updateScrolledExposedRect): (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): Deleted. (WebKit::TiledCoreAnimationDrawingArea::setExposedRect): Deleted. 2016-04-05 Alex Christensen <achristensen@webkit.org> Make CMake-generated binaries on Mac able to run https://bugs.webkit.org/show_bug.cgi?id=156268 Reviewed by Daniel Bates. * CMakeLists.txt: * PlatformMac.cmake: 2016-04-05 Brian Burg <bburg@apple.com> Web Automation: add support for getting, deleting, and adding cookies https://bugs.webkit.org/show_bug.cgi?id=156090 <rdar://problem/25477678> Reviewed by Timothy Hatcher. Add protocol commands for manipulating cookies with respect to a given page. Implement all but the addSingleCookie command, which needs a new WebCore API. * UIProcess/Automation/Automation.json: Copy the Page domain Cookie object. Add new commands. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::getAllCookies): (WebKit::buildObjectForCookie): Copied from InspectorPageAgent. (WebKit::buildArrayForCookies): Copied from InspectorPageAgent. (WebKit::WebAutomationSession::didGetCookiesForFrame): (WebKit::WebAutomationSession::deleteSingleCookie): (WebKit::WebAutomationSession::didDeleteCookie): (WebKit::WebAutomationSession::addSingleCookie): Added a stub for now. (WebKit::WebAutomationSession::deleteAllCookies): This command can use the WebCookieManager supplement directly instead of proxying through AutomationSession. It doesn't block until the delete is performed like the other methods do, but this shouldn't be a problem. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Automation/WebAutomationSession.messages.in: * WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::WebAutomationSessionProxy::getCookiesForFrame): (WebKit::WebAutomationSessionProxy::deleteCookie): * WebProcess/Automation/WebAutomationSessionProxy.h: * WebProcess/Automation/WebAutomationSessionProxy.messages.in: 2016-04-05 Alex Christensen <achristensen@webkit.org> Fix Range requests when not using the NetworkCache with NetworkSession https://bugs.webkit.org/show_bug.cgi?id=156036 rdar://problem/25334939 Reviewed by Sam Weinig. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:willCacheResponse:completionHandler:]): Don't cache any responses with Content-Range headers to work around rdar://problem/20001985. This is similar to the workaround in shouldCacheResponse in WebCoreNSURLSession.mm (WebKit::NetworkSession::NetworkSession): If we are using the NetworkCache, then don't use CFNetwork's cache. 2016-04-05 Brent Fulgham <bfulgham@apple.com> Correct applicationWillTerminate logic for ResourceLoadStatistics https://bugs.webkit.org/show_bug.cgi?id=156249 <rdar://problem/25179611> Reviewed by Andy Estes. The applicationWillTerminate handling for ResourceLoadStatistics incorrectly assumes that a ResourceLoadStatistics object will always be present. 1. The termination handling for 'dataStoresWithStorageManagers' should be calling 'applicationWillTerminate' on any ResourceLoadStatistics objects attached to the dataStore. 2. platformInitialize should null-check before attempting to dispatch. 3. platformDestroy should null check before attempting to dispatch. * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: (WebKit::WebsiteDataStore::platformInitialize): (WebKit::WebsiteDataStore::platformDestroy): Invoke 'applicationWillTerminate' on m_resourceLoadStatistics if present. 2016-04-05 Youenn Fablet <youenn.fablet@crf.canon.fr> [Fetch API] Add a runtime flag to fetch API and related constructs https://bugs.webkit.org/show_bug.cgi?id=156113 Reviewed by Alex Christensen. Add a fetch API runtime flag based on preferences. Disable fetch API by default. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesGetCustomElementsEnabled): (WKPreferencesSetFetchAPIEnabled): (WKPreferencesGetFetchAPIEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-04-05 Brady Eidson <beidson@apple.com> Modern IDB: Replace use of SerializedScriptValue with IDBValue. https://bugs.webkit.org/show_bug.cgi?id=156242 Reviewed by Alex Christensen. * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp: (WebKit::WebIDBConnectionToClient::putOrAdd): * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h: * DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in: * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: (WebKit::WebIDBConnectionToServer::putOrAdd): * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: 2016-04-05 Antoine Quint <graouts@apple.com> [WebGL2] Turn the ENABLE_WEBGL2 flag on https://bugs.webkit.org/show_bug.cgi?id=156061 <rdar://problem/25463193> Reviewed by Alex Christensen. * Configurations/FeatureDefines.xcconfig: 2016-04-05 Chris Dumez <cdumez@apple.com> We sometimes fail to remove outdated entry from the disk cache after revalidation and when the resource is no longer cacheable https://bugs.webkit.org/show_bug.cgi?id=156048 <rdar://problem/25514480> Reviewed by Antti Koivisto. We would sometimes fail to remove outdated entry from the disk cache after revalidation and when the resource is no longer cacheable. This was due to Storage::removeFromPendingWriteOperations() only removing the first pending write operation with a given key instead of actually removing all of the operations with this key. * NetworkProcess/cache/NetworkCacheStorage.cpp: (WebKit::NetworkCache::Storage::removeFromPendingWriteOperations): * NetworkProcess/cache/NetworkCacheStorage.h: 2016-04-05 Antoine Quint <graouts@apple.com> [WebGL2] Allow enabling WebGL2 with a runtime flag https://bugs.webkit.org/show_bug.cgi?id=156166 <rdar://problem/25526929> Set the WebGL2 runtime flag based on preferences, disabled by default. Reviewed by Dean Jackson. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetWebGL2Enabled): (WKPreferencesGetWebGL2Enabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-04-04 Zan Dobersek <zdobersek@igalia.com> [ThreadedCompositor] Move CompositingRunLoop class into a separate file https://bugs.webkit.org/show_bug.cgi?id=156170 Reviewed by Michael Catanzaro. Move the CompositingRunLoop class from the ThreadedCompositor.cpp file into its own implementation file, with the class declaration placed into the accompanying header file. This follows the general rule of keeping different class implementations in separate files. No change in behavior, just refactoring. * PlatformGTK.cmake: * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp: Added. (WebKit::CompositingRunLoop::CompositingRunLoop): (WebKit::CompositingRunLoop::callOnCompositingRunLoop): (WebKit::CompositingRunLoop::setUpdateTimer): (WebKit::CompositingRunLoop::stopUpdateTimer): (WebKit::CompositingRunLoop::updateTimerFired): * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h: Added. (WebKit::CompositingRunLoop::runLoop): * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::CompositingRunLoop::CompositingRunLoop): Deleted. (WebKit::CompositingRunLoop::callOnCompositingRunLoop): Deleted. (WebKit::CompositingRunLoop::setUpdateTimer): Deleted. (WebKit::CompositingRunLoop::stopUpdateTimer): Deleted. (WebKit::CompositingRunLoop::runLoop): Deleted. (WebKit::CompositingRunLoop::updateTimerFired): Deleted. * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: 2016-04-04 Brady Eidson <beidson@apple.com> Modern IDB: Dump blobs to disk before storing them in an object store. https://bugs.webkit.org/show_bug.cgi?id=156068 Reviewed by Alex Christensen. * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp: (WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles): * NetworkProcess/FileAPI/NetworkBlobRegistry.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles): * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: * WebProcess/FileAPI/BlobRegistryProxy.cpp: (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles): * WebProcess/FileAPI/BlobRegistryProxy.h: * WebProcess/Network/NetworkProcessConnection.cpp: (WebKit::NetworkProcessConnection::didClose): (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles): (WebKit::NetworkProcessConnection::didWriteBlobsToTemporaryFiles): * WebProcess/Network/NetworkProcessConnection.h: * WebProcess/Network/NetworkProcessConnection.messages.in: 2016-04-04 Chelsea Pugh <cpugh@apple.com> [iOS] Allow clients in the bundle to know whether a field was focused by user interaction https://bugs.webkit.org/show_bug.cgi?id=156118 Reviewed by Dan Bernstein. * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFormDelegatePrivate.h: Add delegate method that takes userIsInteracting bool so that bundle clients get this information. * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: Call API with userIsInteracting property if delegate implements it, otherwise call existing API if userIsInteracting is true, as we previously did in WebKit::WebPage::elementDidFocus. Move FIXME from WebKit::WebPage::elementDidFocus to here, since we are checking userIsInteracting. * WebProcess/InjectedBundle/APIInjectedBundleFormClient.h: (API::InjectedBundle::FormClient::willBeginInputSession): Add userIsInteracting bool to arguments so we can use it for call to the new API as well as preserving behavior of the old API. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::elementDidFocus): Remove check if user is interacting and call willBeginInputSession unconditionally. Move FIXME to where we check userIsInteracting. Pass m_userIsInteracting to willBeginInputSession so we can use it there. 2016-04-04 Michael Catanzaro <mcatanzaro@igalia.com> Unreviewed GTK build fix after r199020 * UIProcess/API/gtk/WebKitUserContentManager.cpp: (webkit_user_content_manager_register_script_message_handler): (webkit_user_content_manager_unregister_script_message_handler): 2016-04-04 Alex Christensen <achristensen@webkit.org> CMake build fix. * PlatformMac.cmake: 2016-04-04 Jiewen Tan <jiewen_tan@apple.com> Tapping on tabs in webpages caused WK crash at WebKit: WebKit::WebFrame::didReceivePolicyDecision https://bugs.webkit.org/show_bug.cgi?id=156119 <rdar://problem/20732167> Reviewed by Andy Estes. Protect the m_frame so that it is present for completion handlers. * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse): (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 2016-04-04 Beth Dakin <bdakin@apple.com> Add some logic to decide when a video can control the videoControlsManager https://bugs.webkit.org/show_bug.cgi?id=156089 -and corresponding- rdar://problem/23833752 Reviewed by Eric Carlson and Tim Horton. The biggest change in WebKit2 is to push all of the logic for the videoControlsManager into WebCore. With this change, WebCore will invoke setUpVideoControlsManager() when there is a video to control the manager, and it will call clearVideoControlsManager() when there is not. Add clearVideoControlsManager(). * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h: * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.messages.in: * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: (WebKit::WebVideoFullscreenManagerProxy::clearVideoControlsManager): Re-name isPlayingMediaDidChange() to videoControlsManagerDidChange(). This ties the logic to the lifetime of the videoControlsManager instead of figuring it out in the UIProcess based on the media state. * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::videoControlsManagerDidChange): (WebKit::WebViewImpl::isPlayingMediaDidChange): Deleted. * UIProcess/PageClient.h: Also change isPlayingVideoWithAudio() into hasActiveVideoForControlsManager() Again, this ties the logic to the lifetime of the videoControlsManager instead of figuring it out in the UIProcess based on the media state. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::isPlayingMediaDidChange): (WebKit::WebPageProxy::videoControlsManagerDidChange): (WebKit::WebPageProxy::hasActiveVideoForControlsManager): (WebKit::WebPageProxy::isPlayingVideoWithAudio): Deleted. * UIProcess/WebPageProxy.h: * UIProcess/mac/PageClientImpl.h: * UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::videoControlsManagerDidChange): (WebKit::PageClientImpl::isPlayingMediaDidChange): Deleted. New WebChromeClient function clearVideoControlsManager(). * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::clearVideoControlsManager): * WebProcess/WebCoreSupport/WebChromeClient.h: Do the work to clear the videoControlsManager. * WebProcess/cocoa/WebVideoFullscreenManager.h: * WebProcess/cocoa/WebVideoFullscreenManager.mm: (WebKit::WebVideoFullscreenManager::clearVideoControlsManager): (WebKit::WebVideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation): 2016-04-04 Brent Fulgham <bfulgham@apple.com> REGRESSION(r198955): com.apple.WebKit.Networking.Development crashed in WebKit::NetworkLoad::setPendingDownloadID + 11 https://bugs.webkit.org/show_bug.cgi?id=156177 <rdar://problem/25508037> Reviewed by Alex Christensen. We do not currently create a NetworkDataTask when we encounter a BLOB URL when building with NETWORK_SESSION enabled. This causes us to crash when the download system attempts to work with a BLOB URL. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::setPendingDownloadID): Add null check for m_task. (WebKit::NetworkLoad::setPendingDownload): Ditto. 2016-04-03 Sam Weinig <sam@webkit.org> Add SPI to allow install script message handlers in isolated worlds https://bugs.webkit.org/show_bug.cgi?id=156153 Reviewed by Anders Carlsson. * Scripts/webkit/messages.py: (headers_for_type): * Shared/WebUserContentControllerDataTypes.cpp: (WebKit::WebScriptMessageHandlerData::encode): (WebKit::WebScriptMessageHandlerData::decode): * Shared/WebUserContentControllerDataTypes.h: Add WebKit::WebScriptMessageHandlerData, matching WebKit::WebUserScriptData and WebKit::WebUserStyleSheetData. * UIProcess/API/Cocoa/WKUserContentController.mm: (-[WKUserContentController addScriptMessageHandler:name:]): (-[WKUserContentController removeScriptMessageHandlerForName:]): (-[WKUserContentController _removeAllUserStyleSheetsAssociatedWithUserContentWorld:]): (-[WKUserContentController _addScriptMessageHandler:name:userContentWorld:]): (-[WKUserContentController _removeScriptMessageHandlerForName:userContentWorld:]): (-[WKUserContentController _removeAllScriptMessageHandlersAssociatedWithUserContentWorld:]): * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h: Add SPI for adding and removing ScriptMessageHandlers associated with a world. * UIProcess/UserContent/WebScriptMessageHandler.cpp: (WebKit::WebScriptMessageHandler::create): (WebKit::WebScriptMessageHandler::WebScriptMessageHandler): (WebKit::WebScriptMessageHandlerHandle::encode): Deleted. (WebKit::WebScriptMessageHandlerHandle::decode): Deleted. * UIProcess/UserContent/WebScriptMessageHandler.h: (WebKit::WebScriptMessageHandler::identifier): (WebKit::WebScriptMessageHandler::name): (WebKit::WebScriptMessageHandler::userContentWorld): (WebKit::WebScriptMessageHandler::client): (WebKit::WebScriptMessageHandler::handle): Deleted. Add the world and move the data object to WebUserContentControllerDataTypes.h * UIProcess/UserContent/WebUserContentControllerProxy.cpp: (WebKit::WebUserContentControllerProxy::addProcess): (WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler): (WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName): (WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers): * UIProcess/UserContent/WebUserContentControllerProxy.h: Update for worlds, matching UserScript/UserStyleSheet model. * WebProcess/UserContent/WebUserContentController.h: * WebProcess/UserContent/WebUserContentController.cpp: (WebKit::WebUserMessageHandlerDescriptorProxy::WebUserMessageHandlerDescriptorProxy): Change to inherit directly from WebCore::UserMessageHandlerDescriptor. (WebKit::WebUserContentController::addUserScriptMessageHandlers): (WebKit::WebUserContentController::removeUserScriptMessageHandler): (WebKit::WebUserContentController::removeAllUserScriptMessageHandlers): (WebKit::WebUserContentController::addUserScriptMessageHandlerInternal): (WebKit::WebUserContentController::removeUserScriptMessageHandlerInternal): Add support for worlds, matching UserScript/UserStyleSheet model. (WebKit::WebUserContentController::addUserStyleSheets): Add missing call to invalidateInjectedStyleSheetCacheInAllFramesInAllPages() (WebKit::WebUserContentController::removeAllUserStyleSheets): Switch to only calling invalidateInjectedStyleSheetCacheInAllFramesInAllPages() once after the loop and only if any stylesheets were removed. (WebKit::WebUserContentController::addUserStyleSheetInternal): Remove call to invalidateInjectedStyleSheetCacheInAllFramesInAllPages(), make callers call it. This allows us to avoid calling it repeatedly in removeAllUserStyleSheets(). (WebKit::WebUserContentController::addUserStyleSheet): Call invalidateInjectedStyleSheetCacheInAllFramesInAllPages() explicitly since it is no longer called in addUserStyleSheetInternal(). (WebKit::WebUserContentController::forEachUserMessageHandler): Implement by iterating the m_userMessageHandlers map. * WebProcess/UserContent/WebUserContentController.messages.in: Update for worlds, matching UserScript/UserStyleSheet model. 2016-04-04 Joonghun Park <jh718.park@samsung.com> [EFL] Fix build break since r198800 https://bugs.webkit.org/show_bug.cgi?id=156011 Reviewed by Alex Christensen. * CMakeLists.txt: Currently circular dependency state exists between WebCoreDerivedSources and WebCore targets. By adding -Wl,--start-group -Wl,--end-group linker option, we can resolve this problem. In case there is no such circular dependency, this linker option does nothing. 2016-04-04 Konstantin Tokarev <annulen@yandex.ru> [GTK] Added missing inspector files under UserInterface/Proxies. https://bugs.webkit.org/show_bug.cgi?id=156165 Reviewed by Michael Catanzaro. * PlatformGTK.cmake: 2016-04-04 Carlos Garcia Campos <cgarcia@igalia.com> REGRESSION(r198792): [GTK] Inspector crashes in Inspector::Protocol::getEnumConstantValue since r198792 https://bugs.webkit.org/show_bug.cgi?id=155745 <rdar://problem/25289456> Reviewed by Brian Burg. Use Inspector::Protocol::AutomationEnums namespace for getEnumConstantValue(). * UIProcess/Automation/WebAutomationSession.cpp: * WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): (WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal): (WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle): (WebKit::WebAutomationSessionProxy::resolveChildFrameWithName): (WebKit::WebAutomationSessionProxy::resolveParentFrame): (WebKit::WebAutomationSessionProxy::computeElementLayout): 2016-04-04 Emanuele Aina <emanuele.aina@collabora.com> Fix WEB_PROCESS_CMD_PREFIX and NETWORK_PROCESS_CMD_PREFIX after r196500 https://bugs.webkit.org/show_bug.cgi?id=156060 Reviewed by Darin Adler. Commit r196500 was a bit too eager in removing the platformGetLaunchOptions() callsites as non-mac platform still use that in debug builds to attach debugging tools to spawned subprocesses (eg. gdbserver). Instead of reinstating them and relying on each subprocess type to implement its own platformGetLaunchOptions() version (all alike), avoid duplication and check the *_PROCESS_CMD_PREFIX environment variables in a single place, ChildProcessProxy::getLaunchOptions(). Doing so also improves consistency in *_PROCESS_CMD_PREFIX support: only WEB_PROCESS_CMD_PREFIX and NETWORK_PROCESS_CMD_PREFIX worked with both the GTK and EFL ports while PLUGIN_PROCESS_CMD_PREFIX only worked for EFL and there was no corresponding DATABASE_PROCESS_CMD_PREFIX implementation. * UIProcess/ChildProcessProxy.cpp: (WebKit::ChildProcessProxy::getLaunchOptions): Check the appropriate *_PROCESS_CMD_PREFIX environment variable. * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: (WebKit::PluginProcessProxy::platformGetLaunchOptions): Drop check for PLUGIN_PROCESS_COMMAND_PREFIX, now handled by ChildProcessProxy::getLaunchOptions(). * UIProcess/Databases/DatabaseProcessProxy.h: * UIProcess/Network/NetworkProcessProxy.h: * UIProcess/WebProcessProxy.h: Drop platformGetLaunchOptions() prototypes. * UIProcess/Network/soup/NetworkProcessProxySoup.cpp: * UIProcess/Databases/efl/DatabaseProcessProxyEfl.cpp: * UIProcess/Databases/gtk/DatabaseProcessProxyGtk.cpp: * UIProcess/efl/WebProcessProxyEfl.cpp: * UIProcess/gtk/WebProcessProxyGtk.cpp: Removed, they only contained platformGetLaunchOptions() implementations. * PlatformEfl.cmake: * PlatformGTK.cmake: Drop removed files. 2016-04-02 Daniel Bates <dabates@apple.com> REGRESSION (r198933): Web Inspector and inspected page hang in local builds https://bugs.webkit.org/show_bug.cgi?id=156138 <rdar://problem/25507724> Reviewed by Alexey Proskuryakov. Similar to the sandbox policy for WebProcess and NetworkProcess, grant a Database process read-only filesystem access and mach lookup capability to various Security framework files and SecurityServer, respectively. * DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in: 2016-04-02 Daniel Bates <dabates@apple.com> Another attempt to fix the Apple Internal Yosemite and El Capitan builds following <http://trac.webkit.org/changeset/198933> (https://bugs.webkit.org/show_bug.cgi?id=155455) Similar to the sandbox policy for WebProcess and NetworkProcess, grant a Database process access to the passed user's cache directory and passed user's temporary directory so that the Security framework can verify the code signature of the app that launched it when the Database process is itself code signed. * DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in: 2016-04-01 Daniel Bates <dabates@apple.com> Attempt to fix the Apple Internal Yosemite and El Capitan builds following <http://trac.webkit.org/changeset/198933> (https://bugs.webkit.org/show_bug.cgi?id=155455) <rdar://problem/25502181> Only check the code signature of the client app if the "user-directory-suffix" sandbox initialization parameter will not be used. This parameter is only used/passed as an initialization parameter if the client app is not sandboxed, which seems sufficient criterion to determine whether it is safe to honor it. * Shared/mac/ChildProcessMac.mm: (WebKit::ChildProcess::initializeSandbox): 2016-04-01 Jiewen Tan <jiewen_tan@apple.com> WebKit should dispatchDidFailProvisionalLoad while loading invalid URLs https://bugs.webkit.org/show_bug.cgi?id=155995 <rdar://problem/14967004> Reviewed by Andy Estes. Ensure that alternative HTML string will not be loaded back to back for failing provisional loads. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::loadAlternateHTMLString): (WebKit::WebPageProxy::didFinishLoadForFrame): * UIProcess/WebPageProxy.h: 2016-04-01 Brent Fulgham <bfulgham@apple.com> Confirm <a download> satisfies specification criteria https://bugs.webkit.org/show_bug.cgi?id=156057 Reviewed by Andy Estes. * WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp: (WKBundleNavigationActionGetHasDownloadAttribute): Added. * WebProcess/InjectedBundle/API/c/WKBundleNavigationActionPrivate.h: * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp: (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction): * WebProcess/InjectedBundle/InjectedBundleNavigationAction.h: (WebKit::InjectedBundleNavigationAction::hasDownloadAttribute): Added. 2016-04-01 Alex Christensen <achristensen@webkit.org> CMake build fix. * PlatformMac.cmake: 2016-04-01 Alex Christensen <achristensen@webkit.org> Compile DumpRenderTree with CMake on Mac https://bugs.webkit.org/show_bug.cgi?id=156088 Reviewed by Brent Fulgham. * CMakeLists.txt: * PlatformMac.cmake: * UIProcess/API/Cocoa/WebKitLegacy.h: Added. 2016-03-31 Gyuyoung Kim <gyuyoung.kim@webkit.org> Unreviewed EFL build fix caused by r198929. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::layerVolatilityTimerFired): Need to use type casting in WEBPAGE_LOG_ALWAYS_ERROR() log. 2016-03-31 Daniel Bates <dabates@apple.com> REGRESSION (r194660): Navigating to HTTPS sites may fail with error https://bugs.webkit.org/show_bug.cgi?id=155455 <rdar://problem/24308793> Reviewed by Alexey Proskuryakov. Fixes an issue where navigating to an HTTPS site may fail because the Security Framework uses a cache directory that it does not have permission to use. * Shared/mac/ChildProcessMac.mm: (WebKit::codeSigningIdentifierForProcess): Queries the Security Framework for the code signed bundle identifier/code signing identifier. (WebKit::ChildProcess::initializeSandbox): Use the client identifier as part of the user directory suffix. Verify that the client identifier matches the code signed bundled identifier/code signing identifier for the code signed app/tool. Fix minor code style issue; use a C++-style cast instead of a C-style cast when casting an OSStatus to a long. (WebKit::findSecCodeForProcess): Deleted; incorporated logic into WebKit::codeSigningIdentifierForProcess(). 2016-03-31 Saam barati <sbarati@apple.com> Revert rewrite const as var workaround https://bugs.webkit.org/show_bug.cgi?id=155393 Reviewed by Mark Lam. * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::encode): (WebKit::WebProcessCreationParameters::decode): * Shared/WebProcessCreationParameters.h: * UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeWebProcess): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): 2016-03-31 Chris Dumez <cdumez@apple.com> [iOS] Both WebPage's volatility timer and WebProcess's processSuspensionCleanupTimer are trying to make surfaces volatile with very short interval https://bugs.webkit.org/show_bug.cgi?id=156065 <rdar://problem/25452004> Reviewed by Simon Fraser. Upon process suspension, both the WebPage's volatility timer and WebProcess' processSuspensionCleanupTimer are trying to make surfaces volatile with a very short interval. This is overly aggressive given that this operation normally succeeds very quickly or does not (due to underlying bugs). This patch does the following: - Drop the WebProcess' processSuspensionCleanupTimer and have the WebProcess drive the WebPages' volatility timer instead. - Update the WebPages' volatility timer to do exponential back off. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::layerVolatilityTimerFired): (WebKit::WebPage::markLayersVolatileImmediatelyIfPossible): (WebKit::WebPage::markLayersVolatile): (WebKit::WebPage::cancelMarkLayersVolatile): (WebKit::WebPage::isAlwaysOnLoggingAllowed): (WebKit::WebPage::setLayerTreeStateIsFrozen): Deleted. * WebProcess/WebPage/WebPage.h: (WebKit::WebPage::markLayersVolatile): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::applicationDidEnterBackground): (WebKit::WebPage::applicationWillEnterForeground): (WebKit::WebPage::applicationDidBecomeActive): Deleted. (WebKit::adjustVelocityDataForBoundedScale): Deleted. * WebProcess/WebProcess.cpp: (WebKit::WebProcess::actualPrepareToSuspend): (WebKit::WebProcess::processWillSuspendImminently): (WebKit::WebProcess::prepareToSuspend): (WebKit::WebProcess::cancelPrepareToSuspend): (WebKit::WebProcess::markAllLayersVolatile): (WebKit::WebProcess::cancelMarkAllLayersVolatile): (WebKit::WebProcess::setAllLayerTreeStatesFrozen): (WebKit::WebProcess::processDidResume): (WebKit::WebProcess::WebProcess): Deleted. * WebProcess/WebProcess.h: 2016-03-31 Brian Burg <bburg@apple.com> Web Automation: the interaction queue in WebAutomationSession::performKeyInteractions doesn't work https://bugs.webkit.org/show_bug.cgi?id=156083 Reviewed by Timothy Hatcher. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::performKeyboardInteractions): Use Vector::reserveCapacity instead of the size constructor since we use append. Empty the interaction queue outside of loops so all interactions are performed once. 2016-03-31 Timothy Hatcher <timothy@apple.com> Web Automation: Add support for script timeouts to the evaluateJavaScriptFunction command https://bugs.webkit.org/show_bug.cgi?id=156052 rdar://problem/25457151 Address additional review comments. * WebProcess/Automation/WebAutomationSessionProxy.js: (AutomationSessionProxy.prototype.evaluateJavaScriptFunction): Add semicolons and remove and clearTimeout that wasn't needed. 2016-03-31 Timothy Hatcher <timothy@apple.com> Web Automation: Navigation commands should not return until page loads or fails https://bugs.webkit.org/show_bug.cgi?id=156063 rdar://problem/25464373 Reviewed by Brian Burg. * UIProcess/Automation/Automation.json: Make navigation commands async. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::navigateBrowsingContext): Save callback and timeout previous. (WebKit::WebAutomationSession::goBackInBrowsingContext): Ditto. (WebKit::WebAutomationSession::goForwardInBrowsingContext): Ditto. (WebKit::WebAutomationSession::reloadBrowsingContext): Ditto. (WebKit::WebAutomationSession::navigationOccuredForPage): Added. Fire callback for page. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didFinishLoadForFrame): Call WebAutomationSession::navigationOccuredForPage. (WebKit::WebPageProxy::didFailLoadForFrame): Ditto. (WebKit::WebPageProxy::didSameDocumentNavigationForFrame): Ditto. * UIProcess/WebProcessPool.h: Added automationSession() getter. 2016-03-30 Timothy Hatcher <timothy@apple.com> Web Automation: Add support for script timeouts to the evaluateJavaScriptFunction command https://bugs.webkit.org/show_bug.cgi?id=156052 rdar://problem/25457151 Reviewed by Brian Burg. * UIProcess/Automation/Automation.json: Added callbackTimeout to evaluateJavaScriptFunction. Also made expectsImplicitCallbackArgument optional, since it is not required. Added JavaScriptTimeout error. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::evaluateJavaScriptFunction): Added callbackTimeout. * UIProcess/Automation/WebAutomationSession.h: * WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::evaluateJavaScriptCallback): Send JavaScriptTimeout error if the timeout fired. (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Added callbackTimeout. * WebProcess/Automation/WebAutomationSessionProxy.h: * WebProcess/Automation/WebAutomationSessionProxy.js: (AutomationSessionProxy.prototype.evaluateJavaScriptFunction): Set a timeout to fire if the callback is not called, then return an error. * WebProcess/Automation/WebAutomationSessionProxy.messages.in: (EvaluateJavaScriptFunction): Added callbackTimeout parameter. 2016-03-31 Jiewen Tan <jiewen_tan@apple.com> WebKit should set Original URL of a download request correctly https://bugs.webkit.org/show_bug.cgi?id=155914 <rdar://problem/10473811> Reviewed by Anders Carlsson. * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload): * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::convertTaskToDownload): (WebKit::NetworkLoad::didReceiveResponseNetworkSession): * NetworkProcess/NetworkLoad.h: * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::findPendingDownloadLocation): * NetworkProcess/NetworkProcess.h: Add logic to set the original URL of a download request when a main resource load is converted to a download. * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::download): * UIProcess/WebProcessPool.h: Add logic to set the original URL of a download request during a context menu: Download Linked File action. 2016-03-31 Joseph Pecoraro <pecoraro@apple.com> Web Automation: Add Automation.screenshot https://bugs.webkit.org/show_bug.cgi?id=156073 <rdar://problem/25468646> Reviewed by Timothy Hatcher and Brian Burg. * UIProcess/Automation/Automation.json: Add Automation.screenshot which returns base64 encoded PNG data. * WebProcess/Automation/WebAutomationSessionProxy.h: * WebProcess/Automation/WebAutomationSessionProxy.messages.in: * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::screenshot): (WebKit::WebAutomationSession::didTakeScreenshot): (WebKit::WebAutomationSession::platformGetBase64EncodedPNGData): Send a message to the WebPage to get an Image of the page and handle the response. * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::platformGetBase64EncodedPNGData): Convert the bitmap data to a base64 encoded PNG. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Automation/WebAutomationSession.messages.in: * WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::evaluateJavaScriptCallback): (WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): (WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal): (WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle): (WebKit::WebAutomationSessionProxy::resolveChildFrameWithName): (WebKit::WebAutomationSessionProxy::resolveParentFrame): (WebKit::WebAutomationSessionProxy::computeElementLayout): Use null string where possible for efficiency. (WebKit::WebAutomationSessionProxy::takeScreenshot): Take an image of the entire page and pass back to the UIProcess. 2016-03-31 Timothy Hatcher <timothy@apple.com> Web Automation: Handle undefined when calling a function that has no result https://bugs.webkit.org/show_bug.cgi?id=156075 rdar://problem/25468907 Reviewed by Brian Burg. * WebProcess/Automation/WebAutomationSessionProxy.js: (let.AutomationSessionProxy.prototype._jsonParse): Return undefined for empty string. (let.AutomationSessionProxy.prototype._jsonStringify): Always return a string. 2016-03-31 Jeremy Jones <jeremyj@apple.com> mediaShouldUsePersistentCache() is redundant. Use Page::usesEphemeralSession() instead. https://bugs.webkit.org/show_bug.cgi?id=155924 Reviewed by Simon Fraser. Remove machinery for mediaShouldUsePersistentCache as it is redundant. * Shared/WebPageCreationParameters.cpp: (WebKit::WebPageCreationParameters::encode): Deleted. (WebKit::WebPageCreationParameters::decode): Deleted. * Shared/WebPageCreationParameters.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::creationParameters): Deleted. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::mediaShouldUsePersistentCache): Deleted. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::m_mediaShouldUsePersistentCache): Deleted. * WebProcess/WebPage/WebPage.h: (WebKit::WebPage::mediaShouldUsePersistentCache): Deleted. 2016-03-30 Ada Chan <adachan@apple.com> Add the new "toggle enhanced fullscreen" context menu item to the video context menu on supporting platforms. https://bugs.webkit.org/show_bug.cgi?id=156031 Reviewed by Eric Carlson. * Shared/API/c/WKContextMenuItemTypes.h: * Shared/API/c/WKSharedAPICast.h: (WebKit::toAPI): (WebKit::toImpl): 2016-03-31 Brent Fulgham <bfulgham@apple.com> Unreviewed build fix after r198893. * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::findPendingDownloadLocation): Pass new argument to download method. 2016-03-31 Brent Fulgham <bfulgham@apple.com> [WK2] Support download attribute feature https://bugs.webkit.org/show_bug.cgi?id=102914 <rdar://problem/13177492> Reviewed by Darin Adler. A first draft implementation of this feature. * NetworkProcess/Downloads/Download.cpp: (WebKit::Download::Download): Update to accept default filename. (WebKit::Download::didStart): Send default filename in message. * NetworkProcess/Downloads/Download.h: * NetworkProcess/Downloads/DownloadManager.cpp: (WebKit::DownloadManager::startDownload): Expect a default filename argument. * NetworkProcess/Downloads/DownloadManager.h: * NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::startDownload): Expect a default filename argument. * NetworkProcess/NetworkConnectionToWebProcess.h: * NetworkProcess/NetworkConnectionToWebProcess.messages.in: Update messages to expect a default filename argument. * Shared/NavigationActionData.cpp: (WebKit::NavigationActionData::encode): Handle the download attribute flag and the default filename. (WebKit::NavigationActionData::decode): Ditto. * Shared/NavigationActionData.h: * UIProcess/API/APINavigationAction.h: * UIProcess/Downloads/DownloadProxy.cpp: (WebKit::DownloadProxy::didStart): Expect a default filename argument. (WebKit::DownloadProxy::decideDestinationWithSuggestedFilename): Use the suggested filename if the client delegate does not override it. * UIProcess/Downloads/DownloadProxy.h: * UIProcess/Downloads/DownloadProxy.messages.in: Include a default filename value. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::receivedPolicyDecision): If the feature is enabled, and the load was started with a download attribute, convert a "PolicyUse" decision to "PolicyDownload". (WebKit::WebPageProxy::decidePolicyForNavigationAction): Remember if the load is happening due to a 'download' attribute link. * UIProcess/WebPageProxy.h: * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::createWindow): Populate the navigationActionData object with any download attribute and suggested filename. * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Populate the navigationActionData object with any download attribute and suggested filename. (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto. (WebKit::WebFrameLoaderClient::startDownload): Expect a suggested filename argument. * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::startDownload): Expect a suggested filename argument. * WebProcess/WebPage/WebFrame.h: 2016-03-30 Alex Christensen <achristensen@webkit.org> CMake build fix. * PlatformMac.cmake: 2016-03-30 Alex Christensen <achristensen@webkit.org> Speculative Yosemite fix after r198872. * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::platformSimulateKeySequence): Yosemite didn't like _Nullable. 2016-03-30 Yongjun Zhang <yongjun_zhang@apple.com> Need to expose makeAllShadowRootsOpen in WKWebProcessPlugInScriptWorld. https://bugs.webkit.org/show_bug.cgi?id=156046 Add an SPI makeAllShadowRootsOpen method in WKWebProcessPlugInScriptWorld. Reviewed by Dan Bernstein. * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h: * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm: (-[WKWebProcessPlugInScriptWorld makeAllShadowRootsOpen]): 2016-03-30 Brian Burg <bburg@apple.com> Web Automation: Add Automation.performKeyboardInteractions https://bugs.webkit.org/show_bug.cgi?id=155990 <rdar://problem/25426408> Reviewed by Timothy Hatcher. Add a command that allows automation to simulate single key strokes or insertion of an entire string, character by character. * UIProcess/Automation/Automation.json: Add new command. Add a large enumeration of all virtual keys that exist on a US 109-key keyboard layout. Add an interaction object. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::performKeyboardInteractions): Added. This method validates the incoming key interactions from the protocol and makes a list of simulated interactions to perform. If everything validates, then delegate the key interaction simulations to platform-specific methods. (WebKit::WebAutomationSession::platformSimulateKeyStroke): (WebKit::WebAutomationSession::platformSimulateKeySequence): Add stubs for other platforms. * UIProcess/Automation/WebAutomationSession.h: Add new protocol command handler and platform simulation methods. * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::platformSimulateKeyStroke): (WebKit::WebAutomationSession::platformSimulateKeySequence): These methods implement keyboard simulation for AppKit, used by the Mac port. In the keystroke case, figure out the AppKit keyCode for the key as well as any key modifiers that should be included with the key event. Keep track of sticky modifiers and update the session state appropriately. In the key sequence case, split the string into combining character sequences and send a 'key up/down'. This is a weird way to send non-ASCII text, so a better alternative should be explored in the future. 2016-03-30 Brady Eidson <beidson@apple.com> Make BlobData use ThreadSafeSharedBuffer instead of RawData. https://bugs.webkit.org/show_bug.cgi?id=156041 Reviewed by Alex Christensen. * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp: (WebKit::NetworkBlobRegistry::filesInBlob): * Shared/WebCoreArgumentCoders.cpp: (IPC::ArgumentCoder<BlobPart>::decode): 2016-03-30 Daniel Bates <dabates@apple.com> Unreviewed, rolling out r198856. Broke the tests on the Apple El Capitan Release WK2 (Tests) bot. Further investigation needed. Reverted changeset: "REGRESSION (r194660): Navigating to HTTPS sites may fail with error" https://bugs.webkit.org/show_bug.cgi?id=155455 http://trac.webkit.org/changeset/198856 2016-03-30 Daniel Bates <dabates@apple.com> REGRESSION (r194660): Navigating to HTTPS sites may fail with error https://bugs.webkit.org/show_bug.cgi?id=155455 <rdar://problem/24308793> Reviewed by Alexey Proskuryakov. Fixes an issue where navigating to an HTTPS site may fail because the Security Framework uses a cache directory that it does not have permission to use. * Shared/mac/ChildProcessMac.mm: (WebKit::codeSigningIdentifierForProcess): Queries the Security Framework for the code signed bundle identifier/code signing identifier. (WebKit::ChildProcess::initializeSandbox): Use the client identifier as part of the user directory suffix. Verify that the client identifier matches the code signed bundled identifier/code signing identifier for the code signed app/tool. Fix minor code style issue; use a C++-style cast instead of a C-style cast when casting an OSStatus to a long. (WebKit::findSecCodeForProcess): Deleted; incorporated logic into WebKit::codeSigningIdentifierForProcess(). 2016-03-30 Myles C. Maxfield <mmaxfield@apple.com> Use references instead of pointers in scrollbar-related code https://bugs.webkit.org/show_bug.cgi?id=155998 Reviewed by Dean Jackson. * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.h: * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm: (WebKit::PDFPlugin::convertFromScrollbarToContainingView): (WebKit::PDFPlugin::convertFromContainingViewToScrollbar): (WebKit::PDFPlugin::invalidateScrollbarRect): 2016-03-29 David Kilzer <ddkilzer@apple.com> REGRESSION: Yosemite-only: com.apple.WebKit.Plugin.32.Development crashed in PluginProcessShim.dylib: WebKit::shimMachVMMap + 26 <http://webkit.org/b/156000> <rdar://problem/25272133> Reviewed by Joseph Pecoraro. * PluginProcess/mac/PluginProcessShim.mm: (WebKit::shimMachVMMap): Add SUPPRESS_ASAN attribute on Yosemite. 2016-03-28 Enrica Casucci <enrica@apple.com> When moving focus from one select element to another (iPhone) the value is committed to the newly focused element. https://bugs.webkit.org/show_bug.cgi?id=155958 rdar://problem/22738524 Reviewed by Tim Horton. We should not delay the call to endEditing until we receive stopAssistingNode, because by then the assisted node might have already changed. We need to call endEditing to commit potential changes every time we tap. This way we can make sure the editing session on the select element has been completed. This affects only single select elements on iPhone, where the change to the actual DOM element is delayed until we stop interacting with the element. On iPad or for multi-select elements, the change to the DOM happens immediately. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _singleTapCommited:]): (-[WKContentView _attemptClickAtLocation:]): (-[WKContentView _stopAssistingNode]): 2016-03-29 Brian Burg <bburg@apple.com> Unreviewed build fix after r198793. * UIProcess/API/Cocoa/_WKAutomationSession.h: * UIProcess/API/Cocoa/_WKAutomationSession.mm: The wasEventSynthesizedForAutomation method should only be available on Mac. 2016-03-29 Brian Burg <bburg@apple.com> Unreviewed build fix after r198792. * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::platformSimulateMouseInteraction): We (still) can't use lightweight generics in Objective-C code. Also, use RetainPtr instead of new, since this is not ARC code. 2016-03-29 Alex Christensen <achristensen@webkit.org> Fix CMake build after r198792. * PlatformMac.cmake: 2016-03-29 Brian Burg <bburg@apple.com> Web Automation: Add SPI to tell whether an NSEvent was synthesized for automation https://bugs.webkit.org/show_bug.cgi?id=155963 <rdar://problem/25405747> Reviewed by Timothy Hatcher. Tag all NSEvents that were synthesized with an associated object before sending. Do all associated object work below the API layer so we don't get into trouble using things that may be guarded by WK_API_ENABLED. * UIProcess/API/Cocoa/_WKAutomationSession.h: * UIProcess/API/Cocoa/_WKAutomationSession.mm: (-[_WKAutomationSession wasEventSynthesizedForAutomation:]): Forward to the wrapped session object. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::sendSynthesizedEventsToPage): Tag outgoing NSEvents with the session identifier as an associated object. (WebKit::WebAutomationSession::wasEventSynthesizedForAutomation): Check an incoming NSEvent to see if its associated object is the session identifier. 2016-03-28 Brian Burg <bburg@apple.com> Web Automation: implement Automation.performMouseInteraction https://bugs.webkit.org/show_bug.cgi?id=155606 <rdar://problem/25227576> Reviewed by Timothy Hatcher. This method implements common mouse interactions by synthesizing native events. The creation and dispatching of simulated events is implemented separately per application/window/event framework. This patch adds an implementation for ports that use AppKit. The event is created synthetically in a platform-specific way and delivered to the platform's window in the UIProcess. The event goes through all the layers of processing that a real mouse event could go through once it reaches WebKit itself. * UIProcess/Automation/Automation.json: Add new enums and command. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::protocolModifierToWebEventModifier): (WebKit::WebAutomationSession::performMouseInteraction): Added. Clip the requested cursor position so that it stays within the selected window's frame and doesn't wander off into other windows or applications. Fire it using the platform-specific simulation method. (WebKit::WebAutomationSession::platformSimulateMouseInteraction): Added. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Cocoa/WebAutomationSessionCocoa.mm: (WebKit::WebAutomationSession::platformSimulateMouseInteraction): Added. Convert Automation protocol values to AppKit values. Simulate and dispatch one or more events depending on the desired interaction. * WebKit2Prefix.h: Include AppKitCompatibilityDeclarations.h so newer NSEventTypes can be used. 2016-03-29 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Follow up to r198580. Simplify the code even more as suggested by Darin. * UIProcess/API/gtk/PageClientImpl.cpp: (WebKit::PageClientImpl::setViewNeedsDisplay): 2016-03-28 Alex Christensen <achristensen@webkit.org> Fix Mac Ninja build after r198766. * CMakeLists.txt: 2016-03-28 Brady Eidson <beidson@apple.com> Modern IDB: Remove abstract base classes for all IDB DOM classes. https://bugs.webkit.org/show_bug.cgi?id=155951 Reviewed by Alex Christensen. * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: 2016-03-28 Brian Burg <bburg@apple.com> Web Automation: add commands to move and resize a browsing context's window https://bugs.webkit.org/show_bug.cgi?id=155349 <rdar://problem/25104911> Reviewed by Timothy Hatcher. Parse the new origin or size and request the window to change to the new frame. This calls through to PageUIClient::setWindowFrame(). * UIProcess/Automation/Automation.json: Add new enum values for protocol parsing error cases. Add new commands. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::resizeWindowOfBrowsingContext): (WebKit::WebAutomationSession::moveWindowOfBrowsingContext): Added. Parse the incoming payload and bail if nothing would happen or the values are not usable or out of range. Complain if a change did not happen when the requested and actual size are different. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/WebPageProxy.h: Move setWindowFrame to be public. 2016-03-28 Brian Burg <bburg@apple.com> Web Automation: split protocol object BrowsingContext.windowFrame into two separate members https://bugs.webkit.org/show_bug.cgi?id=155952 <rdar://problem/25393597> Reviewed by Timothy Hatcher. Using the name 'windowFrame' causes conflicts with some Objective-C code. * UIProcess/Automation/Automation.json: * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::buildBrowsingContextForPage): 2016-03-28 Carlos Alberto Lopez Perez <clopez@igalia.com> [CMake] Unreviewed build fix after r198736. https://bugs.webkit.org/show_bug.cgi?id=155221 Unreviewed. * CMakeLists.txt: Fix typo, add WebAutomationSession.cpp and declare JavaScriptCore_SCRIPTS_DIR. * WebProcess/Automation/WebAutomationSessionProxy.h: Add missing include. 2016-03-28 Alex Christensen <achristensen@webkit.org> Use std::exchange for std::functions instead of WTFMove https://bugs.webkit.org/show_bug.cgi?id=155950 rdar://problem/25348817 Reviewed by Anders Carlsson. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::convertTaskToDownload): (WebKit::NetworkLoad::setPendingDownloadID): (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): This makes the member variable nullptr when the value is moved so we don't use it again. 2016-03-28 Brian Burg <bburg@apple.com> Web Automation: report the browsing context's window frame (size and origin) https://bugs.webkit.org/show_bug.cgi?id=155323 <rdar://problem/25094089> Reviewed by Timothy Hatcher. To prepare for implementing resize and move commands, add a windowFrame member to the browsing context protocol type. * UIProcess/Automation/Automation.json: Add a frame Rect to BrowsingContext. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::handleForWebPageProxy): (WebKit::WebAutomationSession::buildBrowsingContextForPage): Extract the code to build a BrowsingContext object. Add code to calculate and insert the page's window frame size. (WebKit::WebAutomationSession::getBrowsingContexts): (WebKit::WebAutomationSession::getBrowsingContext): (WebKit::WebAutomationSession::createBrowsingContext): (WebKit::WebAutomationSession::switchToBrowsingContext): Refactoring as above. * UIProcess/Automation/WebAutomationSession.h: Adjust signatures. * UIProcess/WebPageProxy.h: Make getWindowFrame public. 2016-03-28 Brian Burg <bburg@apple.com> Unreviewed, fix the build. * WebProcess/Automation/WebAutomationSessionProxy.cpp: InspectorProtocolObjects.h was renamed to AutomationProtocolObjects.h. 2016-03-28 Chris Dumez <cdumez@apple.com> Disk cache speculative validation requests do not have the 'Referer' HTTP header set https://bugs.webkit.org/show_bug.cgi?id=155890 <rdar://problem/25279962> Reviewed by Antti Koivisto. Disk cache speculative validation requests did not have the 'Referer' HTTP header set. This was breaking some streaming sites (such as twitch.tv). We now store all the original request's HTTP headers in the disk cache so we can re-use them for the speculative validation requests. When the actual request comes later on, we also make sure that the HTTP headers used in the speculative validation request match the ones from the effective request. If they don't we don't use the speculatively validated resource as the server may return a different resource in such case. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::retrieve): Pass the effective ResourceRequest to the NetworkCacheSpeculativeLoadManager so it can check that the speculative validation request's HTTP headers match the effective request's headers. * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::constructRevalidationRequest): (WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::PreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::revalidationRequest): (WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::wasRevalidated): We now have a member in PreloadedEntry to keep the request used for validation, if speculative validation was done. This is so that we can compare its HTTP headers with the ones of the effective request later on. (WebKit::NetworkCache::dumpHTTPHeadersDiff): Debug function that prints which HTTP headers did not match in the speculative validation request and in the effective request. (WebKit::NetworkCache::requestsHeadersMatch): New utility function to check that the speculative validation request's HTTP headers match the ones of the effective requests. Note that we allow for headers related to validation to differ. (WebKit::NetworkCache::SpeculativeLoadManager::canUsePreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::canUsePendingPreload): (WebKit::NetworkCache::SpeculativeLoadManager::retrieve): Check that the speculative validation request's HTTP headers match the ones of the effective request. If they don't then do not use the speculatively validated resource. (WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry): (WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry): (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry): (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h: * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: (WebKit::NetworkCache::SubresourceInfo::encode): (WebKit::NetworkCache::SubresourceInfo::decode): (WebKit::NetworkCache::SubresourcesEntry::encodeAsStorageRecord): (WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord): * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h: (WebKit::NetworkCache::SubresourceInfo::SubresourceInfo): - Keep all the request's headers in SubresourceInfo instead of just the 'User-Agent' one. - Drop the custom copy constructor / assignment operator for SubresourceInfo that were making isolated copies on the members. We technically don't need to use SubresourceInfo objects in other threads than the main one. In SpeculativeLoadManager::preloadEntry(), we now make capture a SubresourceInfo* in the lambda to avoid calling the copy constructor. We also make sure that the object gets destroyed in the lambda function, which is executed in the main thread. 2016-03-25 Timothy Hatcher <timothy@apple.com> Web Automation: Add Automation protocol commands to handle JavaScript dialogs https://bugs.webkit.org/show_bug.cgi?id=155888 rdar://problem/25360218 Reviewed by Brian Burg. * UIProcess/API/APIAutomationSessionClient.h: (API::AutomationSessionClient::isShowingJavaScriptDialogOnPage): Added. (API::AutomationSessionClient::dismissCurrentJavaScriptDialogOnPage): Added. (API::AutomationSessionClient::acceptCurrentJavaScriptDialogOnPage): Added. (API::AutomationSessionClient::messageOfCurrentJavaScriptDialogOnPage): Added. (API::AutomationSessionClient::setUserInputForCurrentJavaScriptPromptOnPage): Added. * UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h: * UIProcess/Automation/Automation.json: Added new commands. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::isShowingJavaScriptDialog): Added. (WebKit::WebAutomationSession::dismissCurrentJavaScriptDialog): Added. (WebKit::WebAutomationSession::acceptCurrentJavaScriptDialog): Added. (WebKit::WebAutomationSession::messageOfCurrentJavaScriptDialog): Added. (WebKit::WebAutomationSession::setUserInputForCurrentJavaScriptPrompt): Added. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Cocoa/AutomationSessionClient.h: * UIProcess/Cocoa/AutomationSessionClient.mm: (WebKit::AutomationSessionClient::AutomationSessionClient): Added. (WebKit::AutomationSessionClient::isShowingJavaScriptDialogOnPage): Added. (WebKit::AutomationSessionClient::dismissCurrentJavaScriptDialogOnPage): Added. (WebKit::AutomationSessionClient::acceptCurrentJavaScriptDialogOnPage): Added. (WebKit::AutomationSessionClient::messageOfCurrentJavaScriptDialogOnPage): Added. (WebKit::AutomationSessionClient::setUserInputForCurrentJavaScriptPromptOnPage): Added. 2016-03-24 Timothy Hatcher <timothy@apple.com> Web Automation: Add commands to compute layout of an element https://bugs.webkit.org/show_bug.cgi?id=155841 rdar://problem/25340075 Reviewed by Brian Burg. * UIProcess/Automation/Automation.json: Added computeElementLayout. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::computeElementLayout): Added. (WebKit::WebAutomationSession::didComputeElementLayout): Added. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Automation/WebAutomationSession.messages.in: (DidComputeElementLayout): Added. * WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::WebAutomationSessionProxy::computeElementLayout): Added. * WebProcess/Automation/WebAutomationSessionProxy.h: * WebProcess/Automation/WebAutomationSessionProxy.messages.in: (ComputeElementLayout): Added. 2016-03-18 Timothy Hatcher <timothy@apple.com> Web Automation: Add Automation protocol commands to resolve frames as handles https://bugs.webkit.org/show_bug.cgi?id=155650 rdar://problem/25242422 Reviewed by Brian Burg. * UIProcess/Automation/Automation.json: Added resolveFrameHandle and resolveParentFrameHandle. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::webFrameProxyForHandle): Added. (WebKit::WebAutomationSession::handleForWebFrameID): Added. (WebKit::WebAutomationSession::handleForWebFrameProxy): Added. (WebKit::WebAutomationSession::evaluateJavaScriptFunction): Use frame handles now. (WebKit::WebAutomationSession::resolveChildFrameHandle): Added. (WebKit::WebAutomationSession::didChildResolveFrame): Added. (WebKit::WebAutomationSession::resolveParentFrameHandle): Added. (WebKit::WebAutomationSession::didResolveParentFrame): Added. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Automation/WebAutomationSession.messages.in: (DidResolveChildFrame): Added. (DidResolveParentFrame): Added. * WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::WebAutomationSessionProxy::elementForNodeHandle): Added. (WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal): Added. (WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle): Added. (WebKit::WebAutomationSessionProxy::resolveChildFrameWithName): Added. (WebKit::WebAutomationSessionProxy::resolveParentFrame): Added. (WebKit::WebAutomationSessionProxy::focusFrame): Added. * WebProcess/Automation/WebAutomationSessionProxy.h: * WebProcess/Automation/WebAutomationSessionProxy.messages.in: (ResolveChildFrameWithOrdinal): Added. (ResolveChildFrameWithNodeHandle): Added. (ResolveChildFrameWithName): Added. (ResolveParentFrame): Added. (FocusFrame): Added. * WebProcess/Automation/WebAutomationSessionProxy.js: (AutomationSessionProxy.prototype.nodeForIdentifier): Added. Public method that eats the exception thrown by the private method. 2016-03-17 Timothy Hatcher <timothy@apple.com> Web Automation: Add Automation.evaluateJavaScriptFunction https://bugs.webkit.org/show_bug.cgi?id=155524 rdar://problem/25181888 Reviewed by Joseph Pecoraro. * UIProcess/Automation/Automation.json: Added evaluateJavaScriptFunction command. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::evaluateJavaScriptFunction): Added. (WebKit::WebAutomationSession::didEvaluateJavaScriptFunction): Added. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Automation/WebAutomationSession.messages.in: Added didEvaluateJavaScriptFunction. * WebProcess/Automation/WebAutomationSessionProxy.cpp: (WebKit::toJSArray): Added. (WebKit::callPropertyFunction): Added. (WebKit::evaluateJavaScriptCallback): Added. (WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): Dispatch pending callbacks as errors. (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Added. (WebKit::WebAutomationSessionProxy::didEvaluateJavaScriptFunction): Added. * WebProcess/Automation/WebAutomationSessionProxy.h: * WebProcess/Automation/WebAutomationSessionProxy.js: (AutomationSessionProxy): Added maps for node handles. (AutomationSessionProxy.prototype.evaluateJavaScriptFunction): Added. (AutomationSessionProxy.prototype._jsonParse): Added. (AutomationSessionProxy.prototype._jsonStringify): Added. (AutomationSessionProxy.prototype._reviveJSONValue): Added. (AutomationSessionProxy.prototype._replaceJSONValue): Added. (AutomationSessionProxy.prototype._createNodeHandle): Added. (AutomationSessionProxy.prototype._nodeForIdentifier): Added. (AutomationSessionProxy.prototype._identifierForNode): Added. * WebProcess/Automation/WebAutomationSessionProxy.messages.in: Added evaluateJavaScriptFunction. 2016-03-14 Timothy Hatcher <timothy@apple.com> Add WebAutomationSessionProxy for WebProcess side automation tasks https://bugs.webkit.org/show_bug.cgi?id=155221 rdar://problem/25054868 Reviewed by Joseph Pecoraro. * CMakeLists.txt: Add build step to build-in WebAutomationSessionProxy.js. * DerivedSources.make: Ditto. * UIProcess/Automation/WebAutomationSession.cpp: (WebKit::WebAutomationSession::~WebAutomationSession): (WebKit::WebAutomationSession::setProcessPool): Add / remove message receiver. * UIProcess/Automation/WebAutomationSession.h: * UIProcess/Automation/WebAutomationSession.messages.in: Added. Test message to get things to build. * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::removeMessageReceiver): (WebKit::WebProcessPool::setAutomationSession): * UIProcess/WebProcessPool.h: * WebKit2.xcodeproj/project.pbxproj: Added new files. * WebProcess/Automation/WebAutomationSessionProxy.cpp: Added. (WebKit::toJSString): (WebKit::toJSValue): (WebKit::WebAutomationSessionProxy::WebAutomationSessionProxy): (WebKit::WebAutomationSessionProxy::~WebAutomationSessionProxy): (WebKit::evaluate): (WebKit::createUUID): (WebKit::WebAutomationSessionProxy::scriptObjectForFrame): (WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): Create a script object per frame that is evaluated from WebAutomationSessionProxy.js. Clear the script object when the window object is cleared. * WebProcess/Automation/WebAutomationSessionProxy.h: Added. (WebKit::WebAutomationSessionProxy::test): Added test message to let the messages files build. * WebProcess/Automation/WebAutomationSessionProxy.js: Added. * WebProcess/Automation/WebAutomationSessionProxy.messages.in: Added. * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld): Call WebAutomationSessionProxy::didClearWindowObjectForFrame to clear the script object. * WebProcess/WebProcess.cpp: (WebKit::WebProcess::ensureAutomationSessionProxy): (WebKit::WebProcess::destroyAutomationSessionProxy): Creates and destroys the WebAutomationSessionProxy when the UIProcess WebAutomationSession is set or removed on the WebProcessPool. * WebProcess/WebProcess.h: (WebKit::WebProcess::automationSessionProxy): Added. * WebProcess/WebProcess.messages.in: Added. Test message to get things to build. 2016-03-28 Dan Bernstein <mitz@apple.com> Tried to fix the build after r198728. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::gestureEvent): 2016-03-28 Zan Dobersek <zdobersek@igalia.com> Unreviewed GTK build fix for the threaded compositor feature after r198655. Adjust the first parameter of ThreadSafeCoordinatedSurface::copyToTexture(). * Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp: (WebKit::ThreadSafeCoordinatedSurface::copyToTexture): * Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.h: 2016-03-27 Hunseop Jeong <hs85.jeong@samsung.com> [EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail https://bugs.webkit.org/show_bug.cgi?id=148470 Reviewed by Darin Adler. UI events are suppressed in webPage after r188793. I revert the r136133 for passing the events to WebPage * WebProcess/WebPage/WebPage.cpp: Removed the codes which was uploaded at r136133. (WebKit::WebPage::mouseEvent): (WebKit::WebPage::wheelEvent): (WebKit::WebPage::keyEvent): (WebKit::WebPage::touchEvent): (WebKit::WebPage::canHandleUserEvents): Deleted. * WebProcess/WebPage/WebPage.h: 2016-03-26 Dan Bernstein <mitz@apple.com> Tried to fix the build. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _takeViewSnapshot]): 2016-03-26 Dan Bernstein <mitz@apple.com> Tried to fix the build. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _takeViewSnapshot]): 2016-03-26 Dean Jackson <dino@apple.com> Fix build after my most recent commit. * UIProcess/API/Cocoa/WKWebView.mm: (WebKit::bufferFormat): Delete the WebKitAdditions include. 2016-03-25 Dean Jackson <dino@apple.com> Move extended color detection into Open Source https://bugs.webkit.org/show_bug.cgi?id=155909 <rdar://problem/25369754> Reviewed by Anders Carlsson. The code for detecting extended color displays was hidden while the iPad Pro 9.7" was in development. Now it is public, move the detection to Open Source. While doing this, add a new method to PlatformScreen so that we have a more obvious way to detect such displays. * Shared/mac/RemoteLayerBackingStore.mm: (WebKit::bufferFormat): No need to use WebKitAdditions any more. 2016-03-26 Dan Bernstein <mitz@apple.com> Treat SHA-1-signed certificates as insecure by default. Reviewed by Sam Weinig. * UIProcess/API/APIPageConfiguration.h: Initialize m_treatsSHA1SignedCertificatesAsInsecure to true. * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): Initialize _treatsSHA1SignedCertificatesAsInsecure to YES. 2016-03-25 Dean Jackson <dino@apple.com> Remove use of extern "C" to include QuartzCore files https://bugs.webkit.org/show_bug.cgi?id=155905 Reviewed by Anders Carlson. We can avoid having to wrap constants in extern "C", since they are mangled the same in both C and C++. * UIProcess/mac/RemoteLayerTreeHost.mm: Remove the mention of CABackdropLayer. 2016-03-25 Brian Burg <bburg@apple.com> Web Inspector: protocol generator should prefix C++ filenames with the protocol group https://bugs.webkit.org/show_bug.cgi?id=155859 <rdar://problem/25349859> Reviewed by Alex Christensen and Joseph Pecoraro. Adjust header include and build system paths. * CMakeLists.txt: Revert the workaround introduced in r198659 since this change fixes the underlying issue. * DerivedSources.make: * UIProcess/Automation/WebAutomationSession.cpp: * UIProcess/Automation/WebAutomationSession.h: * WebKit2.xcodeproj/project.pbxproj: 2016-03-25 Alex Christensen <achristensen@webkit.org> Remove unused lambda capture after r196984. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): resourceResponse is not used in the lambda. 2016-03-25 Alex Christensen <achristensen@webkit.org> Fix Mac CMake build. * PlatformMac.cmake: 2016-03-24 Alex Christensen <achristensen@webkit.org> Fix Mac CMake build. * CMakeLists.txt: Temporarily add DERIVED_SOURCES_JAVASCRIPTCORE_DIR after DERIVED_SOURCES_WEBCORE_DIR, because both contain a unique header named InspectorBackendDispatchers.h and this include order includes the correct one for WebKit2 first. * PlatformMac.cmake: Add new files. Optionally link to AVFAudio. 2016-03-24 Said Abou-Hallawa <sabouhallawa@apple,com> Change NativeImagePtr for CG to be RetainPtr<CGImageRef> https://bugs.webkit.org/show_bug.cgi?id=155412 Reviewed by Darin Adler. * Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp: (WebKit::WebCoordinatedSurface::createWithSurface): (WebKit::WebCoordinatedSurface::create): (WebKit::WebCoordinatedSurface::WebCoordinatedSurface): (WebKit::WebCoordinatedSurface::copyToTexture): * Shared/CoordinatedGraphics/WebCoordinatedSurface.h: * Shared/ShareableBitmap.cpp: (WebKit::ShareableBitmap::create): (WebKit::ShareableBitmap::createShareable): (WebKit::ShareableBitmap::ShareableBitmap): * Shared/ShareableBitmap.h: Replace PassRefPtr with RefPtr and use WTFMove() instead of RefPtr::release() when passing the RefPtr. * Shared/cairo/ShareableBitmapCairo.cpp: (WebKit::createSurfaceFromData): (WebKit::ShareableBitmap::createCairoSurface): Replace PassRefPtr with RefPtr. (WebKit::ShareableBitmap::createImage): * Shared/cg/ShareableBitmapCG.cpp: (WebKit::ShareableBitmap::createImage): Replace PassRefPtr with RefPtr and use the move semantics when calling BitmapImage::create(). * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp: (WebKit::CoordinatedLayerTreeHost::createCoordinatedSurface): * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h: * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: (WebKit::ThreadedCoordinatedLayerTreeHost::createCoordinatedSurface): * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: Replace PassRefPtr with RefPtr 2016-03-24 Enrica Casucci <enrica@apple.com> Adopt new SPI from DataDetectorsCore to decide link behavior. https://bugs.webkit.org/show_bug.cgi?id=155780 rdar://problem/25303631 Reviewed by Sam Weinig. Changed use of data detection functions to take a reference to Element instead of a pointer. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::handleTap): (WebKit::WebPage::commitPotentialTap): (WebKit::WebPage::getPositionInformation): 2016-03-24 Chris Dumez <cdumez@apple.com> [WK2] Disable network cache speculative validation by default https://bugs.webkit.org/show_bug.cgi?id=155857 <rdar://problem/25233210> Reviewed by Alex Christensen. Disable network cache speculative validation by default. Clients such as Safari now use the API added in r198544 to enable if they want. * UIProcess/API/APIProcessPoolConfiguration.h: 2016-03-24 Alex Christensen <achristensen@webkit.org> Fix null dereferencing in NetworkLoad::continueCanAuthenticateAgainstProtectionSpace https://bugs.webkit.org/show_bug.cgi?id=155799 rdar://25289012 Reviewed by Tim Horton. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): Null-check all the things! 2016-03-23 Tim Horton <timothy_horton@apple.com> MiniBrowser doesn't use accelerated drawing in WebKit2 windows if a WebKit1 window was opened first https://bugs.webkit.org/show_bug.cgi?id=141576 <rdar://problem/25304548> Reviewed by Simon Fraser. * UIProcess/API/Cocoa/WKPreferences.mm: (-[WKPreferences init]): Make the NSUserDefaults key prefix for debug preferences (the only ones read from NSUserDefaults) "WebKitDebug" instead of just "WebKit" so that they don't conflict with the names that WebKit1 registers default values for. 2016-03-23 Carlos Garcia Campos <cgarcia@igalia.com> Use Region instead of IntRect in PageClient and WebPageProxy setViewNeedsDisplay method https://bugs.webkit.org/show_bug.cgi?id=155747 Reviewed by Darin Adler. This way instead of calling setViewNeedsDisplay() for every rectangle in the damage area, we can build a region and call setViewNeedsDisplay() once. GTK+ has API to queue a redraw for a given region, so we also avoid scheduling multiple redraws in GTK+ port. * UIProcess/API/gtk/PageClientImpl.cpp: (WebKit::PageClientImpl::setViewNeedsDisplay): Convert the Region into a cairo_region_t and use gtk_widget_queue_draw_region() instyead of gtk_widget_queue_draw_area(). * UIProcess/API/gtk/PageClientImpl.h: * UIProcess/DrawingAreaProxyImpl.cpp: (WebKit::DrawingAreaProxyImpl::incorporateUpdate): Build a Region with the damage rectangles and call WebPageProxy::setViewNeedsDisplay() once. * UIProcess/PageClient.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setViewNeedsDisplay): * UIProcess/WebPageProxy.h: * UIProcess/efl/WebView.cpp: (WebKit::WebView::setViewNeedsDisplay): * UIProcess/efl/WebView.h: * UIProcess/ios/PageClientImplIOS.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::setViewNeedsDisplay): * UIProcess/mac/PageClientImpl.h: * UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::setViewNeedsDisplay): 2016-03-22 Tim Horton <timothy_horton@apple.com> Invoking a link preview on a complex link (e.g. an image) results in an empty TextIndicator https://bugs.webkit.org/show_bug.cgi?id=155779 <rdar://problem/22408793> Reviewed by Simon Fraser. * WebProcess/WebPage/mac/WebPageMac.mm: (WebKit::WebPage::dictionaryPopupInfoForRange): (WebKit::WebPage::performImmediateActionHitTestAtLocation): Use the TextIndicator mode where we give up on selection-only snapshotting and just paint all content on Mac, similar to what we do for 3D Touch indicators. 2016-03-22 Alex Christensen <achristensen@webkit.org> Fix HTTPS on Mac using NSURLSession after r198457 https://bugs.webkit.org/show_bug.cgi?id=155774 <rdar://problem/25301027> Reviewed by Anders Carlsson. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSession::NetworkSession): r198457 was intended to fix an issue on iOS and have no change in behavior on Mac. It did have a subtle change in behavior, setting the source application bundle identifier on iOS and was causing problems with HTTPS connections using NSURLSession, so this patch reverts that change. 2016-03-22 Beth Dakin <bdakin@apple.com> Advanced spell checking should be guarded behind HAVE(ADVANCED_SPELL_CHECKING) https://bugs.webkit.org/show_bug.cgi?id=155738 Reviewed by Geoff Garen. * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::requestCandidatesForSelectionIfNeeded): (WebKit::WebViewImpl::handleRequestedCandidates): (WebKit::WebViewImpl::insertText): * UIProcess/mac/TextCheckerMac.mm: (WebKit::TextChecker::checkTextOfParagraph): (WebKit::TextChecker::getGuessesForWord): * config.h: 2016-03-22 Chris Dumez <cdumez@apple.com> Add a setting to let the client toggle support for network cache speculative validation https://bugs.webkit.org/show_bug.cgi?id=155622 <rdar://problem/25233209> Reviewed by Antti Koivisto. Copy new m_diskCacheSpeculativeValidationEnabled member introduced in r198470 in ProcessPoolConfiguration::copy(). * UIProcess/API/APIProcessPoolConfiguration.cpp: (API::ProcessPoolConfiguration::copy): 2016-03-22 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] WebInspector broken after r197620 https://bugs.webkit.org/show_bug.cgi?id=155497 <rdar://problem/25171910> Reviewed by Philippe Normand. Stop registering resource:// URLs as local, because they are not like a local file at all. Compare also the URL protocols when checking whether requested URL is main or test inspector page instead of checking that the protocol is registered as local. * UIProcess/WebInspectorProxy.cpp: (WebKit::isMainOrTestInspectorPage): Compare also the URL protocols. * UIProcess/WebInspectorProxy.h: * UIProcess/gtk/WebInspectorProxyGtk.cpp: (WebKit::WebInspectorProxy::platformCreateInspectorPage): Do not set setAllowFileAccessFromFileURLs setting to true. * UIProcess/gtk/WebProcessPoolGtk.cpp: (WebKit::WebProcessPool::platformInitializeWebProcess): Do not register resource:// URLS as local. 2016-03-22 Alberto Garcia <berto@igalia.com> Unreviewed typo fixes. * Shared/linux/WebMemorySamplerLinux.cpp: (WebKit::WebMemorySampler::sampleWebKit): "Commited" => "Committed" * UIProcess/API/gtk/WebKitFileChooserRequest.cpp: (webkit_file_chooser_request_select_files): "choosen" => "chosen" * UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp: (webkit_user_media_permission_request_class_init): "Wether" => "Whether" 2016-03-22 Carlos Garcia Campos <cgarcia@igalia.com> Remove unused display and scroll view methods from PageClient and WebPageProxy https://bugs.webkit.org/show_bug.cgi?id=155744 Reviewed by Andreas Kling. We have displayView(), canScrollView() and scrollView() that are used by DrawingAreaProxyImpl which is only used by GTK+ port that doesn't implement those methods. * UIProcess/API/gtk/PageClientImpl.cpp: (WebKit::PageClientImpl::displayView): Deleted. (WebKit::PageClientImpl::scrollView): Deleted. * UIProcess/API/gtk/PageClientImpl.h: * UIProcess/DrawingAreaProxyImpl.cpp: (WebKit::DrawingAreaProxyImpl::incorporateUpdate): Update the whole view when scrolling, or the damage area otherwise. * UIProcess/PageClient.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::displayView): Deleted. (WebKit::WebPageProxy::canScrollView): Deleted. (WebKit::WebPageProxy::scrollView): Deleted. * UIProcess/WebPageProxy.h: * UIProcess/efl/WebView.cpp: (WebKit::WebView::displayView): Deleted. (WebKit::WebView::scrollView): Deleted. * UIProcess/efl/WebView.h: * UIProcess/ios/PageClientImplIOS.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::displayView): Deleted. (WebKit::PageClientImpl::canScrollView): Deleted. (WebKit::PageClientImpl::scrollView): Deleted. * UIProcess/mac/PageClientImpl.h: * UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::displayView): Deleted. (WebKit::PageClientImpl::canScrollView): Deleted. (WebKit::PageClientImpl::scrollView): Deleted. 2016-03-22 Zan Dobersek <zdobersek@igalia.com> [CoordinatedGraphics] Polish std::function<> usage in ThreadedCompositor, CoordinatedGraphicsScene https://bugs.webkit.org/show_bug.cgi?id=155726 Reviewed by Darin Adler. Adjust the methods in ThreadedCompositor and CoordinatedGraphicsScene classes to accept std::function<> arguments via rvalue references. This should prevent both unnecessary copies and moves. Fix lambda expressions that are most commonly used to construct the std::function<> objects so that they don't capture-by-value by default, but instead list the captured values verbosely. This part alone exposed an issue in ThreadedCompositor::didChangeVisibleRect() where we were capturing the `this' value by default, instead of a protector RefPtr. * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: (WebKit::CoordinatedGraphicsScene::dispatchOnMainThread): (WebKit::CoordinatedGraphicsScene::dispatchOnClientRunLoop): (WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext): (WebKit::CoordinatedGraphicsScene::onNewBufferAvailable): (WebKit::CoordinatedGraphicsScene::commitSceneState): (WebKit::CoordinatedGraphicsScene::purgeGLResources): (WebKit::CoordinatedGraphicsScene::commitScrollOffset): (WebKit::CoordinatedGraphicsScene::appendUpdate): (WebKit::CoordinatedGraphicsScene::setActive): * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h: * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::CompositingRunLoop::CompositingRunLoop): (WebKit::CompositingRunLoop::callOnCompositingRunLoop): (WebKit::ThreadedCompositor::setNeedsDisplay): (WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): (WebKit::ThreadedCompositor::setDeviceScaleFactor): (WebKit::ThreadedCompositor::didChangeViewportSize): (WebKit::ThreadedCompositor::didChangeViewportAttribute): (WebKit::ThreadedCompositor::didChangeContentsSize): (WebKit::ThreadedCompositor::scrollTo): (WebKit::ThreadedCompositor::scrollBy): (WebKit::ThreadedCompositor::didChangeVisibleRect): (WebKit::ThreadedCompositor::callOnCompositingThread): * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: 2016-03-22 Zan Dobersek <zdobersek@igalia.com> [CoordinatedGraphics] Prefer RunLoop::main().dispatch() over callOnMainThread() https://bugs.webkit.org/show_bug.cgi?id=155725 Reviewed by Darin Adler. Unify the CoordinatedGraphics code in the WebKit2 layer to use RunLoop for dispatching tasks on either the main thread or the composition thread in case of using the threaded compositor. The latter is already the default, so this patch just replaces calls to callOnMainThread() with calls to RunLoop::main().dispatch(). * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: (WebKit::CoordinatedGraphicsScene::dispatchOnMainThread): * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: (WebKit::ThreadedCompositor::didChangeVisibleRect): 2016-03-18 Enrica Casucci <enrica@apple.com> Enable preview of images as attachments. https://bugs.webkit.org/show_bug.cgi?id=155674 rdar://problem/25242656 Reviewed by Darin Adler. If the client cannot handle image preview, but can handle attachments, let them handle images as attachments. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _dataForPreviewItemController:atPosition:type:]): 2016-03-20 Dan Bernstein <mitz@apple.com> [Mac] Determine TARGET_MAC_OS_X_VERSION_MAJOR from MACOSX_DEPLOYMENT_TARGET rather than from MAC_OS_X_VERSION_MAJOR https://bugs.webkit.org/show_bug.cgi?id=155707 <rdar://problem/24980691> Reviewed by Darin Adler. * Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET. * Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version. 2016-03-20 Darin Adler <darin@apple.com> Disable Caches in Safari's Develop menu does not disable caches. https://bugs.webkit.org/show_bug.cgi?id=64483 Reviewed by Antti Koivisto. Moved functions from WKPreferences to WKPage. * Shared/WebPreferencesDefinitions.h: Removed ResourceCachingDisabled. * UIProcess/API/C/WKPage.cpp: (WKPageGetResourceCachingDisabled): Added. (WKPageSetResourceCachingDisabled): Added. * UIProcess/API/C/WKPagePrivate.h: Added above functions. * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetResourceCachingDisabled): Deleted. (WKPreferencesGetResourceCachingDisabled): Deleted. * UIProcess/API/C/WKPreferencesRefPrivate.h: Deleted above functions. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setResourceCachingDisabled): Added. * UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::isResourceCachingDisabled): Added. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): Removed code to set the setting for resourceCachingDisabled.. (WebKit::WebPage::setResourceCachingDisabled): Added. * WebProcess/WebPage/WebPage.h: Declared setResourceCachingDisabled. * WebProcess/WebPage/WebPage.messages.in: Added SetResourceCachingDisabled. 2016-03-20 Dan Bernstein <mitz@apple.com> Update build settings Rubber-stamped by Andy Estes. * Configurations/DebugRelease.xcconfig: * Configurations/FeatureDefines.xcconfig: * Configurations/Version.xcconfig: 2016-03-19 Chris Dumez <cdumez@apple.com> Add a setting to let the client toggle support for network cache speculative validation https://bugs.webkit.org/show_bug.cgi?id=155622 <rdar://problem/25233209> Reviewed by Darin Adler. Add SPI to toggle support for network cache speculative validation. Enable network cache speculative validation by default for now, until I have a chance to update the clients to use the new SPI. * UIProcess/API/APIProcessPoolConfiguration.h: * UIProcess/API/C/WKContext.cpp: (WKContextSetDiskCacheSpeculativeValidationEnabled): * UIProcess/API/C/WKContextPrivate.h: * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: (-[_WKProcessPoolConfiguration diskCacheSpeculativeValidationEnabled]): (-[_WKProcessPoolConfiguration setDiskCacheSpeculativeValidationEnabled:]): * UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::WebProcessPool::platformInitializeNetworkProcess): 2016-03-19 Yongjun Zhang <yongjun_zhang@apple.com> https://bugs.webkit.org/show_bug.cgi?id=155664 Consider to cap the size of session history data. In iOS, if the total history entries data exceeds a threshold (2MB at the moment), don't accumulate more data into the session state blob. Reviewed by Darin Adler. * UIProcess/mac/LegacySessionStateCoding.cpp: (WebKit::encodeSessionHistory): Stop encoding further history entries data into session state if the total size exceed 2MB in iOS. 2016-03-18 Alex Christensen <achristensen@webkit.org> Give NSURLSessionConfiguration information about parent process https://bugs.webkit.org/show_bug.cgi?id=155661 rdar://problem/25225850 Reviewed by Anders Carlsson. * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess): * NetworkProcess/NetworkProcess.h: * NetworkProcess/NetworkSession.h: (WebKit::NetworkSession::sessionID): * NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::partitionName): (WebKit::NetworkProcess::sourceApplicationAuditData): (WebKit::NetworkProcess::cfURLCacheOrigins): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::globalCustomProtocolManager): (WebKit::globalSourceApplicationAuditTokenData): (WebKit::NetworkSession::setCustomProtocolManager): (WebKit::NetworkSession::setSourceApplicationAuditTokenData): (WebKit::NetworkSession::defaultSession): (WebKit::NetworkSession::NetworkSession): Tell the NSURLSessionConfiguration what the source application bundle identifier and audit token data are so we can correctly keep track of which application is using data. This also gives CFNetwork enough information to determine if the application is allowed to use cell data in Settings, so it seems like we do not need to explicitly set allowsCellularAccess. * NetworkProcess/mac/RemoteNetworkingContext.mm: (WebKit::RemoteNetworkingContext::sourceApplicationAuditData): (WebKit::RemoteNetworkingContext::sourceApplicationIdentifier): * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm: (WebKit::WebFrameNetworkingContext::sourceApplicationAuditData): (WebKit::WebFrameNetworkingContext::sourceApplicationIdentifier): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): * WebProcess/WebProcess.h: * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformTerminate): (WebKit::WebProcess::sourceApplicationAuditData): (WebKit::WebProcess::initializeSandbox): I moved the calls to getAuditToken from RemoteNetworkingContext.mm and WebFrameNetworkingContext.mm to NetworkProcessCocoa.mm and WebProcessCocoa.mm, respectively, to share with NetworkSession code, which does not use NetworkingContexts. 2016-03-18 Simon Fraser <simon.fraser@apple.com> Build fix after r198455. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::layerTreeCommitComplete): 2016-03-18 Simon Fraser <simon.fraser@apple.com> Sideways-scrollable RTL document has wrong initial and reload offset in WKWebView https://bugs.webkit.org/show_bug.cgi?id=155660 Reviewed by Tim Horton. There were two problems with the scroll position of RTL documents on initial and reload in WKWebView. First, in the delegatesScrolling() code path, ScrollView::updateScrollbars() needs to tell someone that the scroll origin changed, to trigger a scroll to the page origin. Secondly, WKWebView had scrollPosition/scrollOffset confusion in various places. In the restorePageState() code path, WebCore passes an exposedRect; this patch makes it explicit that it's an exposedContentRect, and passes scrollOrigin so that it can be mapped into scrollOffset-relative coordinates that the UIScrollView wants. When reloading an RTL page, there was an additional issue; restorePageState() restored the exposedRect, but then we'd see the origin change as a programmatic scroll to 0,0, clobbering the exposedRect. Fix by using a "_commitDidRestoreExposedRect" flag on the WKWebView that is used to ignore the programmatic scroll in that case. Ideally these changes would fix fast/scrolling/scroll-position-on-reload-rtl.html, but the test still fails because of timing differences between OS X and iOS. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _didCommitLayerTree:]): (-[WKWebView _layerTreeCommitComplete]): (-[WKWebView _restorePageStateToExposedRect:scrollOrigin:scale:]): (-[WKWebView _scrollToContentScrollPosition:scrollOrigin:]): (-[WKWebView _restorePageStateToExposedRect:scale:]): Deleted. (-[WKWebView _scrollToContentOffset:scrollOrigin:]): Deleted. * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/PageClient.h: * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/ios/PageClientImplIOS.h: * UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::requestScroll): (WebKit::PageClientImpl::layerTreeCommitComplete): (WebKit::PageClientImpl::restorePageState): * UIProcess/ios/WKContentView.h: * UIProcess/ios/WKContentView.mm: (-[WKContentView _layerTreeCommitComplete]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::layerTreeCommitComplete): (WebKit::WebPageProxy::restorePageState): * UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::restorePageState): 2016-03-18 Brady Eidson <beidson@apple.com> NSURLSession: Set download resume data when a download fails due to an error. https://bugs.webkit.org/show_bug.cgi?id=155665 Reviewed by Alex Christensen. * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]): Save the resume data from the NSError userInfo if it exists. 2016-03-18 Chris Dumez <cdumez@apple.com> Speculative revalidation requests do not have their HTTP user-agent set https://bugs.webkit.org/show_bug.cgi?id=155620 <rdar://problem/24657567> Reviewed by Brady Eidson. Speculative revalidation requests do not have their HTTP user-agent set which could lead to different content getting returned by the server. To address the problem, we save the original request's 'user-agent' in the disk cache and re-use it later on for speculative validation requests. * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::constructRevalidationRequest): (WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry): (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry): * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: (WebKit::NetworkCache::SubresourceInfo::encode): (WebKit::NetworkCache::SubresourceInfo::decode): (WebKit::NetworkCache::SubresourceInfo::SubresourceInfo): (WebKit::NetworkCache::SubresourceInfo::operator=): (WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry): (WebKit::NetworkCache::SubresourcesEntry::updateSubresourceLoads): (WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord): Deleted. * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h: (WebKit::NetworkCache::SubresourceInfo::SubresourceInfo): 2016-03-18 Enrica Casucci <enrica@apple.com> Add id attribute to _WKActivatedElementInfo. https://bugs.webkit.org/show_bug.cgi?id=155666 rdar://problem/25181956 Reviewed by Beth Dakin. * Shared/ios/InteractionInformationAtPosition.h: * Shared/ios/InteractionInformationAtPosition.mm: (WebKit::InteractionInformationAtPosition::encode): (WebKit::InteractionInformationAtPosition::decode): * UIProcess/API/Cocoa/_WKActivatedElementInfo.h: * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm: (-[_WKActivatedElementInfo _initWithType:URL:location:title:ID:rect:image:]): (-[_WKActivatedElementInfo ID]): (-[_WKActivatedElementInfo _initWithType:URL:location:title:rect:image:]): Deleted. * UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h: * UIProcess/ios/WKActionSheetAssistant.mm: (-[WKActionSheetAssistant showImageSheet]): (-[WKActionSheetAssistant showLinkSheet]): * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _showAttachmentSheet]): (-[WKContentView _showLinkSheet]): (-[WKContentView _dataForPreviewItemController:atPosition:type:]): (-[WKContentView _presentedViewControllerForPreviewItemController:]): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::getPositionInformation): 2016-03-18 Antti Koivisto <antti@apple.com> Protect against excessive cache traversal https://bugs.webkit.org/show_bug.cgi?id=155635 rdar://problem/24241008 Reviewed by Darin Adler. We can't handle unlimited number of parallel cache traversal requests from the client. We'll run out of dispatch queues and other system resources. CPU will spin. * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::traverse): Add limit of maximum 3 traversals. When exceeded return nothing and log an error. * NetworkProcess/cache/NetworkCache.h: 2016-03-18 Darin Adler <darin@apple.com> Disable Caches in Safari's Develop menu does not disable caches. https://bugs.webkit.org/show_bug.cgi?id=64483 Reviewed by Antti Koivisto. * Shared/WebPreferencesDefinitions.h: Added ResourceCachingDisabled. * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetResourceCachingDisabled): Added. (WKPreferencesGetResourceCachingDisabled): Added. * UIProcess/API/C/WKPreferencesRefPrivate.h: Ditto. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): Push ResourceCachingDisabled setting into WebCore. 2016-03-18 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Try to fix GTK+ debug build after r198364. * WebProcess/gtk/WebProcessMainGtk.cpp: Use WTF::sleep(). 2016-03-17 Alex Christensen <achristensen@webkit.org> SpeculativeLoad needs to continue NetworkLoad when it receives a redirect response https://bugs.webkit.org/show_bug.cgi?id=155612 Reviewed by Andy Estes. * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest): Call continueWillSendRequest. Otherwise, we will hang a thread in the NetworkProcess if we are using ResourceHandle or we will not call the willPerformHTTPRedirection completion handler if we are using NetworkSession. This will cause us to stop loading from the server after the maximum number of connections is reached. 2016-03-17 Tim Horton <timothy_horton@apple.com> Find-in-page indicator in Mail viewer is the wrong scale and cut off https://bugs.webkit.org/show_bug.cgi?id=155605 <rdar://problem/23948165> Reviewed by Simon Fraser. * UIProcess/mac/WKTextFinderClient.mm: (-[WKTextFinderClient didGetImageForMatchResult:]): Initialize the NSImage with the correct size, instead of inferring the size from the bitmap, so that we don't lose information about device pixel ratio. 2016-03-17 Anders Carlsson <andersca@apple.com> Remove use of dyld_register_image_state_change_handler() in PluginProcessMac.mm https://bugs.webkit.org/show_bug.cgi?id=155596 Reviewed by Dan Bernstein. Use _dyld_register_func_for_add_image instead which is API. Use dladdr to find the image path given its header. * Platform/spi/Cocoa/DyldSPI.h: Removed. * PluginProcess/mac/PluginProcessMac.mm: (WebKit::PluginProcess::platformInitializeProcess): * WebKit2.xcodeproj/project.pbxproj: 2016-03-17 Chris Dumez <cdumez@apple.com> Set the WebContent process's main thread QoS to USER-INTERACTIVE https://bugs.webkit.org/show_bug.cgi?id=155595 <rdar://problem/22534965> Reviewed by Antti Koivisto. Increase the WebContent process main thread's QoS to USER-INTERACTIVE instead of USER-INITIATED as it is drawing UI. However, use a relative priority of -1 so that its priority is lower than the one of the scrolling thread. * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): 2016-03-17 Alex Christensen <achristensen@webkit.org> Support manually accepting invalid SSL certificates with NetworkSession https://bugs.webkit.org/show_bug.cgi?id=155442 <rdar://problem/24847398> Reviewed by Darin Adler. When we click continue after getting a warning about an invalid SSL certificate, we call NSURLRequest setAllowsSpecificHTTPSCertificate in NetworkProcess::allowSpecificHTTPSCertificateForHost, which stores information in CFNetwork about the specific invalid SSL certificate we want to accept. If we see such a certificate during a server trust evaluation, we want to tell CFNetwork to accept it. This fixes a loop when going to https://badssl.com, clicking on expired, and clicking continue. * NetworkProcess/NetworkDataTask.h: * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::didReceiveChallenge): (WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace): * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTask::transferSandboxExtensionToDownload): (WebKit::certificatesMatch): (WebKit::NetworkDataTask::allowsSpecificHTTPSCertificateForHost): (WebKit::NetworkDataTask::suggestedFilename): 2016-03-17 Csaba Osztrogonác <ossy@webkit.org> [Mac][cmake] Unreviewed buildfix after r198070. Just for fun. * PlatformMac.cmake: 2016-03-17 Andy Estes <aestes@apple.com> [Mac] Enable Content-Disposition: attachment sandbox https://bugs.webkit.org/show_bug.cgi?id=155578 <rdar://problem/21886326> Reviewed by Dan Bernstein. Covered by the existing set of attachment sandbox tests, which have always been run on Mac. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::WebPage): 2016-03-16 Beth Dakin <bdakin@apple.com> Provide NSSpellChecker spellChecking methods with the current insertion point https://bugs.webkit.org/show_bug.cgi?id=155532 -and corresponding- rdar://problem/24066952 Reviewed by Simon Fraser. Pass the insertionPoint to the UIProcess * UIProcess/TextChecker.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::checkTextOfParagraph): (WebKit::WebPageProxy::getGuessesForWord): (WebKit::WebPageProxy::requestCheckingOfString): * UIProcess/WebPageProxy.h: * UIProcess/WebPageProxy.messages.in: * UIProcess/efl/TextCheckerEfl.cpp: (WebKit::TextChecker::checkTextOfParagraph): (WebKit::TextChecker::getGuessesForWord): (WebKit::TextChecker::requestCheckingOfString): * UIProcess/gtk/TextCheckerGtk.cpp: (WebKit::TextChecker::getGuessesForWord): (WebKit::TextChecker::requestCheckingOfString): (WebKit::TextChecker::checkTextOfParagraph): * UIProcess/ios/TextCheckerIOS.mm: (WebKit::TextChecker::checkTextOfParagraph): (WebKit::TextChecker::getGuessesForWord): (WebKit::TextChecker::requestCheckingOfString): * UIProcess/mac/TextCheckerMac.mm: (WebKit::TextChecker::checkTextOfParagraph): (WebKit::TextChecker::getGuessesForWord): (WebKit::TextChecker::ignoreWord): (WebKit::TextChecker::requestCheckingOfString): Extract the insertion point from the VisibleSelection that WebCore has passed. * WebProcess/WebCoreSupport/WebEditorClient.cpp: (WebKit::insertionPointFromCurrentSelection): (WebKit::WebEditorClient::checkTextOfParagraph): (WebKit::WebEditorClient::getGuessesForWord): (WebKit::WebEditorClient::requestCheckingOfString): * WebProcess/WebCoreSupport/WebEditorClient.h: 2016-03-16 Tim Horton <timothy_horton@apple.com> REGRESSION (r192184): CleanMyDrive 2's tutorial window is blank https://bugs.webkit.org/show_bug.cgi?id=155550 <rdar://problem/24250689> Reviewed by Dan Bernstein. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _setDrawsTransparentBackground:]): The app is using this SPI via key-value coding, so just keeping the implementation is sufficient to make AppKit stop throwing an undefined key exception. Log once that this is deprecated (... it's also SPI) and then forward to setDrawsBackground. 2016-03-16 Daniel Bates <dabates@apple.com> <video> and <audio> elements do not obey Content Security Policy on redirect https://bugs.webkit.org/show_bug.cgi?id=155509 <rdar://problem/10234844> Reviewed by Alex Christensen. Use 0ms as the maximum buffering time for media resource just as we do currently. * WebProcess/Network/WebLoaderStrategy.cpp: (WebKit::maximumBufferingTime): 2016-03-16 Chris Dumez <cdumez@apple.com> Unreviewed, rolling out r198235, r198240, r198241, and r198252. Causing crashes on ARM Reverted changesets: "Remove compile time define for SEPARATED_HEAP" https://bugs.webkit.org/show_bug.cgi?id=155508 http://trac.webkit.org/changeset/198235 "Gardening: build fix after r198235." http://trac.webkit.org/changeset/198240 "Build fix." http://trac.webkit.org/changeset/198241 "Rename performJITMemcpy to something more inline with our normal webkit function names" https://bugs.webkit.org/show_bug.cgi?id=155525 http://trac.webkit.org/changeset/198252 2016-03-16 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r196803. https://bugs.webkit.org/show_bug.cgi?id=155534 Introduced several rendering issues in popular websites (Requested by KaL on #webkit). Reverted changeset: "[GTK] Limit the number of tiles according to the visible area" https://bugs.webkit.org/show_bug.cgi?id=126122 http://trac.webkit.org/changeset/196803 2016-03-15 Enrica Casucci <enrica@apple.com> Follow up to r195769. https://bugs.webkit.org/show_bug.cgi?id=155519 rdar://problem/25146483 Reviewed by Tim Horton. There are two code paths that lead to calling handleSyntheticClick() where we need to check if the default action can be performed on the data detector link. Only one was covered in r195769 and this patch addresses the missing one. I've also discovered that the point reported in DidNotHandleTapAsClick was incorrectly always (0, 0) and I've fixed it. * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::handleTap): 2016-03-15 Ryan Haddad <ryanhaddad@apple.com> Unreviewed, rolling out r198230. This change caused LayoutTests to fail on Mac Reverted changeset: "REGRESSION (r194660): Navigating to HTTPS sites may fail with error" https://bugs.webkit.org/show_bug.cgi?id=155455 http://trac.webkit.org/changeset/198230 2016-03-15 Oliver Hunt <oliver@apple.com> Remove compile time define for SEPARATED_HEAP https://bugs.webkit.org/show_bug.cgi?id=155508 Reviewed by Mark Lam. Remove the feature define. * Configurations/FeatureDefines.xcconfig: 2016-03-15 Daniel Bates <dabates@apple.com> REGRESSION (r194660): Navigating to HTTPS sites may fail with error https://bugs.webkit.org/show_bug.cgi?id=155455 <rdar://problem/24308793> Reviewed by Alexey Proskuryakov. Fixes an issue where navigating to an HTTPS site may fail because the Security Framework uses a cache directory that it does not have permission to use. * Shared/mac/ChildProcessMac.mm: (WebKit::codeSigningIdentifierForProcess): Queries the Security Framework for the code signed bundle identifier/code signing identifier. (WebKit::ChildProcess::initializeSandbox): Use the client identifier as part of the user directory suffix. Verify that the client identifier matches the code signed bundled identifier/code signing identifier for the code signed app/tool. Fix minor code style issue; use a C++-style cast instead of a C-style cast when casting an OSStatus to a long. (WebKit::findSecCodeForProcess): Deleted; incorporated logic into WebKit::codeSigningIdentifierForProcess(). 2016-03-15 Antti Koivisto <antti@apple.com> Add Antti to WebKit2 Owners file https://bugs.webkit.org/show_bug.cgi?id=155504 Reviewed by Anders Carlsson and Sam Weinig. * Owners: 2016-03-15 Gyuyoung Kim <gyuyoung.kim@webkit.org> EFL build has been broken since r198180 https://bugs.webkit.org/show_bug.cgi?id=155488 Unreviewed build fix. * WebProcess/UserContent/WebUserContentController.h: Use ENABLE(USER_MESSAGE_HANDLERS) guard. 2016-03-15 Chris Dumez <cdumez@apple.com> Regression(r197939): ASSERTION FAILED: url.containsOnlyASCII() in URL.cpp https://bugs.webkit.org/show_bug.cgi?id=155449 <rdar://problem/25134826> Reviewed by Carlos Garcia Campos. Bump WK2 Network Disk Cache version after r197939 as the new cache format is not compatible with the old one and leads to assertions being hit when browsing in Debug builds. SubresourceInfo used to only contain a boolean and would therefore be serialized as "0" / "1". However, after r197939, a URL field was added and when trying to decode old cache entries with the new format, we would try to construct a URL from the String "0" or "1". This would assert because these are not valid URLs. * NetworkProcess/cache/NetworkCacheStorage.h: 2016-03-14 Chris Dumez <cdumez@apple.com> Unreviewed, rolling out r197981. Caused a massive PLT regression on Mac. Reverted changeset: "Font antialiasing (smoothing) changes when elements are rendered into compositing layers" https://bugs.webkit.org/show_bug.cgi?id=23364 http://trac.webkit.org/changeset/197981 2016-03-14 Sam Weinig <sam@webkit.org> Add a baseURL parameter to _WKUserStyleSheet https://bugs.webkit.org/show_bug.cgi?id=155219 Reviewed by Tim Horton. - Moves to a model for user content where instead of using a WebCore::UserContentController object, we implement the new WebCore::UserContentProvider interface (on the existing WebUserContentController object). - Uses this to maintain maps of UserStylesSheets and UserScripts along with their identifiers, freeing up the URL, which had been acting as the identifier, to be used as the baseURL which was what it was intended for. - Adds a baseURL property to _WKUserStyleSheet. * WebKit2.xcodeproj/project.pbxproj: Add new files. * Scripts/webkit/messages.py: (headers_for_type): Add support for sending WebUserContentControllerDataTypes. * Shared/WebUserContentControllerDataTypes.cpp: Added. (WebKit::WebUserScriptData::encode): (WebKit::WebUserScriptData::decode): (WebKit::WebUserStyleSheetData::encode): (WebKit::WebUserStyleSheetData::decode): * Shared/WebUserContentControllerDataTypes.h: Added. Add helper types for sending user content over IPC. * UIProcess/API/APIUserScript.cpp: (API::UserScript::generateUniqueURL): (API::UserScript::UserScript): * UIProcess/API/APIUserScript.h: * UIProcess/API/APIUserStyleSheet.cpp: (API::UserStyleSheet::generateUniqueURL): (API::UserStyleSheet::UserStyleSheet): * UIProcess/API/APIUserStyleSheet.h: Add identifiers for tracking across processes. * UIProcess/API/Cocoa/_WKUserStyleSheet.h: * UIProcess/API/Cocoa/_WKUserStyleSheet.mm: (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]): (-[_WKUserStyleSheet baseURL]): Add new initializer which takes a baseURL as well as an accessor for the baseURL. * UIProcess/UserContent/WebUserContentControllerProxy.cpp: (WebKit::WebUserContentControllerProxy::addProcess): (WebKit::WebUserContentControllerProxy::addUserScript): (WebKit::WebUserContentControllerProxy::removeUserScript): (WebKit::WebUserContentControllerProxy::addUserStyleSheet): (WebKit::WebUserContentControllerProxy::removeUserStyleSheet): Pass identifiers as well as user content. * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::addUserScript): (WebKit::InjectedBundle::addUserStyleSheet): Move user content in via move semantics rather than using a unique_ptr. (WebKit::InjectedBundle::removeUserScript): (WebKit::InjectedBundle::removeUserStyleSheet): (WebKit::InjectedBundle::removeUserScripts): (WebKit::InjectedBundle::removeUserStyleSheets): (WebKit::InjectedBundle::removeAllUserContent): Update for new function signatures. * WebProcess/UserContent/WebUserContentController.cpp: (WebKit::WebUserContentController::WebUserContentController): (WebKit::WebUserContentController::~WebUserContentController): (WebKit::WebUserContentController::addUserContentWorlds): (WebKit::WebUserContentController::removeUserContentWorlds): (WebKit::WebUserContentController::addUserScripts): (WebKit::WebUserContentController::removeUserScript): (WebKit::WebUserContentController::removeAllUserScripts): (WebKit::WebUserContentController::addUserStyleSheets): (WebKit::WebUserContentController::removeUserStyleSheet): (WebKit::WebUserContentController::removeAllUserStyleSheets): (WebKit::WebUserContentController::addUserScriptMessageHandlers): (WebKit::WebUserContentController::removeUserScriptMessageHandler): (WebKit::WebUserContentController::addUserContentExtensions): (WebKit::WebUserContentController::removeUserContentExtension): (WebKit::WebUserContentController::removeAllUserContentExtensions): (WebKit::WebUserContentController::addUserScriptInternal): (WebKit::WebUserContentController::addUserScript): (WebKit::WebUserContentController::removeUserScriptWithURL): (WebKit::WebUserContentController::removeUserScriptInternal): (WebKit::WebUserContentController::removeUserScripts): (WebKit::WebUserContentController::addUserStyleSheetInternal): (WebKit::WebUserContentController::addUserStyleSheet): (WebKit::WebUserContentController::removeUserStyleSheetWithURL): (WebKit::WebUserContentController::removeUserStyleSheetInternal): (WebKit::WebUserContentController::removeUserStyleSheets): (WebKit::WebUserContentController::removeAllUserContent): (WebKit::WebUserContentController::forEachUserScript): (WebKit::WebUserContentController::forEachUserStyleSheet): * WebProcess/UserContent/WebUserContentController.h: * WebProcess/UserContent/WebUserContentController.messages.in: Convert to inheriting from UserContentProvider, rather than containing a UserContentController. This means adding the storage for the user content, which has been simplified to avoid using unique_ptrs. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::addUserScript): (WebKit::WebPage::addUserStyleSheet): (WebKit::WebPage::removeAllUserContent): Update to call the WebUserContentController, rather than going to the UserContentController, which no longer exists. * WebProcess/WebPage/WebPageGroupProxy.cpp: (WebKit::WebPageGroupProxy::userContentController): * WebProcess/WebPage/WebPageGroupProxy.h: Return the WebUserContentController rather than old UserContentController. 2016-03-14 Joonghun Park <jh718.park@samsung.com> Purge PassRefPtr from ArrayBuffer, ArchiveResource, Pasteboard, LegacyWebArchive and DataObjectGtk https://bugs.webkit.org/show_bug.cgi?id=150497 Reviewed by Darin Adler. * Shared/APIWebArchive.mm: (API::WebArchive::WebArchive): * Shared/APIWebArchiveResource.mm: (API::WebArchiveResource::data): * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm: (WebKit::PDFPlugin::addArchiveResource): * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: (WebKit::WebPlatformStrategies::bufferForType): (WebKit::WebPlatformStrategies::readBufferFromPasteboard): * WebProcess/WebCoreSupport/WebPlatformStrategies.h: * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm: (WebKit::WebEditorClient::documentFragmentFromAttributedString): * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm: (WebKit::WebDragClient::declareAndWriteDragImage): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::webArchiveData): * WebProcess/WebPage/WebPage.cpp: (WebKit::resourceDataForFrame): 2016-03-14 Oliver Hunt <oliver@apple.com> Temporarily disable the separated heap. https://bugs.webkit.org/show_bug.cgi?id=155472 Reviewed by Geoffrey Garen. Temporarily disable this. * Configurations/FeatureDefines.xcconfig: 2016-03-14 Beth Dakin <bdakin@apple.com> [iOS] WKPreviewAction conforms to NSCopying but doesn’t override - copyWithZone: https://bugs.webkit.org/show_bug.cgi?id=155395 Reviewed by Sam Weinig. * UIProcess/API/Cocoa/WKPreviewActionItem.mm: (-[WKPreviewAction copyWithZone:]): 2016-03-14 Anders Carlsson <andersca@apple.com> Remove usage of -[UIGestureRecognizer requireOtherGestureToFail:] https://bugs.webkit.org/show_bug.cgi?id=155461 rdar://problem/25143282 Reviewed by Beth Dakin. Use -[UIGestureRecognizer requireGestureRecognizerToFail:] instead, which has been API ever since UIGestureRecognizer was added. * Platform/spi/ios/UIKitSPI.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _createAndConfigureDoubleTapGestureRecognizer]): 2016-03-14 Anders Carlsson <andersca@apple.com> REGRESSION (r191691): Can't Share Selected Text https://bugs.webkit.org/show_bug.cgi?id=155459 rdar://problem/24893625 Reviewed by Tim Horton. Add the selected text as well. Somehow this got lost in the refactoring. * UIProcess/mac/WebContextMenuProxyMac.mm: (WebKit::WebContextMenuProxyMac::createShareMenuItem): 2016-03-14 Tim Horton <timothy_horton@apple.com> Revert r194125 and r194186: We're going to fix this a different way. * Shared/NativeWebGestureEvent.h: * Shared/mac/NativeWebGestureEventMac.mm: (WebKit::pointForEvent): (WebKit::NativeWebGestureEvent::NativeWebGestureEvent): (WebKit::distanceForTouches): Deleted. * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView selectFindMatch:completionHandler:]): (-[WKWebView _web_superInputContext]): (-[WKWebView touchesBeganWithEvent:]): Deleted. (-[WKWebView touchesMovedWithEvent:]): Deleted. (-[WKWebView touchesEndedWithEvent:]): Deleted. (-[WKWebView touchesCancelledWithEvent:]): Deleted. * UIProcess/API/mac/WKView.mm: (-[WKView namesOfPromisedFilesDroppedAtDestination:]): (-[WKView initWithFrame:processPool:configuration:webView:]): (-[WKView touchesBeganWithEvent:]): Deleted. (-[WKView touchesMovedWithEvent:]): Deleted. (-[WKView touchesEndedWithEvent:]): Deleted. (-[WKView touchesCancelledWithEvent:]): Deleted. * UIProcess/Cocoa/WebViewImpl.h: * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::WebViewImpl): (WebKit::WebViewImpl::magnifyWithEvent): (WebKit::WebViewImpl::smartMagnifyWithEvent): (WebKit::WebViewImpl::rotateWithEvent): (WebKit::WebViewImpl::touchesOrderedByAge): Deleted. (WebKit::WebViewImpl::touchesBeganWithEvent): Deleted. (WebKit::WebViewImpl::touchesMovedWithEvent): Deleted. (WebKit::WebViewImpl::touchesEndedWithEvent): Deleted. (WebKit::WebViewImpl::touchesCancelledWithEvent): Deleted. 2016-03-14 Anders Carlsson <andersca@apple.com> Fix build. Create an empty PDF selection. * Shared/mac/PDFKitImports.h: * Shared/mac/PDFKitImports.mm: (WebKit::pdfSelectionClass): * WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm: (WebKit::PDFPlugin::nextMatchForString): 2016-03-14 Beth Dakin <bdakin@apple.com> Unable to commit previews in Mobile Safari https://bugs.webkit.org/show_bug.cgi?id=155450 -and corresponding- rdar://problem/25135529 Reviewed by Tim Horton. _uiDelegateProvidedPreviewingViewController was being consulted before invoking the old SPI, which was always wrong. It should have been consulted before calling the new API! But also, it doesn’t seem to be necessary at all since [WKContentView _previewItemController:commitPreview:] is only invoked when a custom view controller has been provided. * UIProcess/ios/WKContentViewInteraction.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _registerPreview]): (-[WKContentView _unregisterPreview]): (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]): (-[WKContentView _presentedViewControllerForPreviewItemController:]): (-[WKContentView _previewItemController:commitPreview:]): 2016-03-14 Brent Fulgham <bfulgham@apple.com> PingHandle delete's itself but pointer is still used by handleDataURL https://bugs.webkit.org/show_bug.cgi?id=154752 <rdar://problem/24872347> Reviewed by Alex Christensen. When a PingLoad is destroyed, we should tell its client so that the client can clear the pointer it holds to the element to avoid accidentally attempting to use deallocated memory. * NetworkProcess/PingLoad.h: (WebKit::PingLoad::~PingLoad): Notify the client we are being destroyed. 2016-03-14 Carlos Garcia Campos <cgarcia@igalia.com> Unreviewed. Fix the GTK+ build after r198124. WebsiteDataTypes is now an OptionSet. * UIProcess/API/gtk/WebKitWebContext.cpp: (webkit_web_context_clear_cache): 2016-03-14 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] Reimplement webkit_web_context_clear_cache functionality. https://bugs.webkit.org/show_bug.cgi?id=146041 Reviewed by Michael Catanzaro. * UIProcess/API/gtk/WebKitWebContext.cpp: (webkit_web_context_clear_cache): 2016-03-14 Jeremy Huddleston Sequoia <jeremyhu@apple.com> Install WebKit2 WebProcess NetworkProcess on OSX when not building the Mac PORT https://bugs.webkit.org/show_bug.cgi?id=152651 Reviewed by Philippe Normand. * CMakeLists.txt: 2016-03-13 Joseph Pecoraro <pecoraro@apple.com> Remove ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX) guards https://bugs.webkit.org/show_bug.cgi?id=155417 Reviewed by Yusuke Suzuki. * Configurations/FeatureDefines.xcconfig: 2016-03-13 Dan Bernstein <mitz@apple.com> [Mac] Injected bundle in relocatable WebContent service can’t use XPC services from other relocatable frameworks https://bugs.webkit.org/show_bug.cgi?id=155414 <rdar://problem/24428418> Reviewed by Sam Weinig. * Configurations/DebugRelease.xcconfig: Set WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT to NO, because engineering builds are ad-hoc signed and therefore can’t have a private entitlement. * Configurations/WebContent-OSX.entitlements: Added. Includes the XPC domain extension entitlement. * Configurations/WebContentService.xcconfig: Set WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT to YES if not already set and the framework is relocatable. Set CODE_SIGN_ENTITLEMENTS to the new entitlements file if the domain extension entitlement is needed. * WebKit2.xcodeproj/project.pbxproj: Added reference to new file. 2016-03-13 Dean Jackson <dino@apple.com> <attachment> should be a runtime-enabled feature https://bugs.webkit.org/show_bug.cgi?id=155413 <rdar://problem/25120753> Reviewed by Sam Weinig and Anders Carlsson. Add an internal setting on WKWebViewConfiguration to enable the <attachment> element support. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _attachmentElementEnabled]): (-[WKWebViewConfiguration _setAttachmentElementEnabled:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-03-12 Sam Weinig <sam@webkit.org> WebKit can easily crash below NetworkSession::dataTaskForIdentifier() with NSURLSession enabled <rdar://problem/25129946> https://bugs.webkit.org/show_bug.cgi?id=155401 Reviewed by Alex Christensen. The issue was that NSURLSessionDataTasks can continue to invoke their NSURLSession's delegate methods after -[NSURLSession invalidateAndCancel] is called. So, when the NetworkSession was destroyed, and still had outstanding data tasks, the session delegate would get called, try to use the session, and crash. To fix this I: - Made NetworkSession RefCounted. - Gave NetworkSession two delegates, one for each NSURLSession. - Made each delegate have a strong reference to the NetworkSession that gets cleared out in the newly implemented URLSession:didBecomeInvalidWithError: method. - Changed from simply destroying the NetworkSession in SessionTracker::destroySession(), to derefing it and explicitly calling invalidateAndCancel on the two associated NSURLSessions (which in turn eventually cause the URLSession:didBecomeInvalidWithError: to fire). - To ensure the correct lifetime of the WebCore::NetworkStorageSession, I made it a member of the NetworkSession. This also allowed some simplification inside SessionTracker. * NetworkProcess/NetworkDataTask.h: (WebKit::NetworkDataTask::setPendingDownload): (WebKit::NetworkDataTask::pendingDownloadLocation): * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::NetworkLoad): * NetworkProcess/NetworkSession.h: (WebKit::NetworkSession::sessionID): * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTask::NetworkDataTask): (WebKit::NetworkDataTask::~NetworkDataTask): (WebKit::NetworkDataTask::willPerformHTTPRedirection): (WebKit::NetworkDataTask::tryPasswordBasedAuthentication): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate initWithNetworkSession:]): (-[WKNetworkSessionDelegate URLSession:didBecomeInvalidWithError:]): (WebKit::NetworkSession::setCustomProtocolManager): (WebKit::NetworkSession::create): (WebKit::NetworkSession::defaultSession): (WebKit::NetworkSession::NetworkSession): (WebKit::NetworkSession::~NetworkSession): (WebKit::NetworkSession::invalidateAndCancel): (WebKit::NetworkSession::networkStorageSession): (WebKit::NetworkSession::clearCredentials): * NetworkProcess/mac/RemoteNetworkingContext.mm: (WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession): * Shared/SessionTracker.cpp: (WebKit::identifierBase): (WebKit::SessionTracker::getIdentifierBase): (WebKit::SessionTracker::setIdentifierBase): (WebKit::staticSessionMap): (WebKit::SessionTracker::networkSession): (WebKit::SessionTracker::storageSession): (WebKit::staticStorageSessionMap): (WebKit::SessionTracker::sessionID): (WebKit::SessionTracker::setSession): (WebKit::SessionTracker::destroySession): (WebKit::SessionTracker::forEachNetworkStorageSession): (WebKit::storageSessionToID): Deleted. (WebKit::SessionTracker::storageSessionMap): Deleted. * Shared/SessionTracker.h: * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm: (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession): (WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts): (WebKit::WebFrameNetworkingContext::localFileContentSniffingEnabled): (WebKit::WebFrameNetworkingContext::scheduledRunLoopPairs): * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp: (WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession): (WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts): (WebKit::WebFrameNetworkingContext::WebFrameNetworkingContext): 2016-03-12 Myles C. Maxfield <mmaxfield@apple.com> Delete dead SVG Font code https://bugs.webkit.org/show_bug.cgi?id=154718 Reviewed by Antti Koivisto. * Configurations/FeatureDefines.xcconfig: 2016-03-12 Beth Dakin <bdakin@apple.com> Make preview inline navigation work API https://bugs.webkit.org/show_bug.cgi?id=155383 -and corresponding- rdar://problem/25117985 Reviewed by Dan Bernstein. With this patch: _WKElementInfo is now WKElementInfo in file and class names. Header is now public. _WKPreviewElementInfo is now WKPreviewElementInfo in file and class names. Header is now public. _WKPreviewAction is now WKPreviewActionItem in filenames (header is now public), the protocol _WKPreviewActionItem is now WKPreviewActionItem, and the _WKPreviewAction class is now WKPreviewAction. (The internal header is still project, of course.) and WKPreviewActionIdentifiersPrivate.h/mm is now WKPreviewActionItemIdentifiers.h/mm and all the the identifiers have been updated. Header is now public. * Shared/API/Cocoa/WebKit.h: * UIProcess/API/Cocoa/WKElementInfo.h: Copied from UIProcess/API/Cocoa/_WKElementInfo.h. * UIProcess/API/Cocoa/WKElementInfo.mm: Copied from UIProcess/API/Cocoa/_WKElementInfo.mm. (-[WKElementInfo copyWithZone:]): (-[_WKElementInfo copyWithZone:]): Deleted. * UIProcess/API/Cocoa/WKElementInfoInternal.h: Copied from UIProcess/API/Cocoa/_WKElementInfoInternal.h. * UIProcess/API/Cocoa/WKPreviewActionIdentifiersPrivate.h: Removed. * UIProcess/API/Cocoa/WKPreviewActionIdentifiersPrivate.mm: Removed. * UIProcess/API/Cocoa/WKPreviewActionItem.h: Copied from UIProcess/API/Cocoa/_WKPreviewAction.h. * UIProcess/API/Cocoa/WKPreviewActionItem.mm: Copied from UIProcess/API/Cocoa/_WKPreviewAction.mm. * UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.h: Copied from UIProcess/API/Cocoa/WKPreviewActionIdentifiersPrivate.h. * UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.mm: Copied from UIProcess/API/Cocoa/WKPreviewActionIdentifiersPrivate.mm. * UIProcess/API/Cocoa/WKPreviewActionItemInternal.h: Copied from UIProcess/API/Cocoa/_WKPreviewActionInternal.h. * UIProcess/API/Cocoa/WKPreviewElementInfo.h: Copied from UIProcess/API/Cocoa/_WKPreviewElementInfo.h. * UIProcess/API/Cocoa/WKPreviewElementInfo.mm: Copied from UIProcess/API/Cocoa/_WKPreviewElementInfo.mm. (-[WKPreviewElementInfo _initWithLinkURL:]): (-[_WKPreviewElementInfo _initWithLinkURL:]): Deleted. * UIProcess/API/Cocoa/WKPreviewElementInfoInternal.h: Copied from UIProcess/API/Cocoa/_WKPreviewElementInfoInternal.h. * UIProcess/API/Cocoa/WKUIDelegate.h: * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: * UIProcess/API/Cocoa/_WKContextMenuElementInfo.h: * UIProcess/API/Cocoa/_WKElementInfo.h: Removed. * UIProcess/API/Cocoa/_WKElementInfo.mm: Removed. * UIProcess/API/Cocoa/_WKElementInfoInternal.h: Removed. * UIProcess/API/Cocoa/_WKPreviewAction.h: Removed. * UIProcess/API/Cocoa/_WKPreviewAction.mm: Removed. * UIProcess/API/Cocoa/_WKPreviewActionInternal.h: Removed. * UIProcess/API/Cocoa/_WKPreviewElementInfo.h: Removed. * UIProcess/API/Cocoa/_WKPreviewElementInfo.mm: Removed. * UIProcess/API/Cocoa/_WKPreviewElementInfoInternal.h: Removed. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]): (previewIdentifierForElementAction): (-[WKContentView _presentedViewControllerForPreviewItemController:]): (-[WKContentView _previewItemController:commitPreview:]): * WebKit2.xcodeproj/project.pbxproj: 2016-03-12 Jeremy Huddleston Sequoia <jeremyhu@apple.com> [GTK][Mac] Use DYLD_LIBRARY_PATH on OSX rather then LD_LIBRARY_PATH https://bugs.webkit.org/show_bug.cgi?id=152650 Reviewed by Carlos Garcia Campos. * PlatformGTK.cmake: 2016-03-11 John Wilander <wilander@apple.com> Move prevalent resource classifier from WebCore to WebKit. https://bugs.webkit.org/show_bug.cgi?id=155242 <rdar://problem/24913272> Reviewed by Andy Estes. * UIProcess/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::create): (WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore): (WebKit::hasPrevalentResourceCharacteristics): (WebKit::classifyPrevalentResources): - Moved these two functions from WebCore. (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated): - Calls processStatistics with a lamda function to classify prevalent resources. * WebKit2.xcodeproj/project.pbxproj: - Fixed the ordering of source files. 2016-03-11 Sam Weinig <sam@webkit.org> WebKit needs a new sandbox profile addition for DataDetectors <rdar://problem/25091102> Reviewed by Brent Fulgham. * WebProcess/com.apple.WebProcess.sb.in: 2016-03-11 Chris Dumez <cdumez@apple.com> Regression(r198040): WebKit2.DocumentStartUserScriptAlertCrashTest API test is crashing in debug https://bugs.webkit.org/show_bug.cgi?id=155382 Reviewed by Alexey Proskuryakov. r198040 introduced an assertion to make sure we never call applicationBundleIsEqualTo() before setApplicationBundleIdentifier() is called. This new assertion found a bug as it turns out we were calling setApplicationBundleIdentifier() too late during the WebProcess initialization and some runtime applications checks were already done by then. To address the problem, this patch moves the setApplicationBundleIdentifier() call as early as possible during the WebProcess and the NetworkProcess initialization. It also moves it to the Cocoa specific files for clarity. * NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::initializeNetworkProcess): * NetworkProcess/cocoa/NetworkProcessCocoa.mm: (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::platformInitializeWebProcess): 2016-03-11 Enrica Casucci <enrica@apple.com> Use only selected text for Look up. https://bugs.webkit.org/show_bug.cgi?id=155380 Reviewed by Tim Horton. The corresponding piece that uses the extended context for Look up is not ready yet. For the moment default to retrieving the selected text. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _lookup:]): 2016-03-11 Chelsea Pugh <cpugh@apple.com> [iOS] Allow clients to specify text suggestions to be used for a form input session https://bugs.webkit.org/show_bug.cgi?id=155343 Reviewed by Dan Bernstein. * UIProcess/API/Cocoa/_WKFormInputSession.h: * UIProcess/API/Cocoa/_WKInputDelegate.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKFormInputSession suggestions]): Add a getter for suggestions. (-[WKFormInputSession setSuggestions:]): Add a setter, which calls setSuggestions with our suggestions on the input delegate. (-[WKContentView insertTextSuggestion:]): Call _webView:insertTextSuggestion:inInputSession: on our input delegate so clients know a text suggestion was tapped. 2016-03-11 Anders Carlsson <andersca@apple.com> Creating and releasing a WKBackForwardListItem crashes https://bugs.webkit.org/show_bug.cgi?id=155376 rdar://problem/17377712 Reviewed by Dan Bernstein. Make init unavailable. * UIProcess/API/Cocoa/WKBackForwardListItem.h: 2016-03-11 Beth Dakin <bdakin@apple.com> Follow-up to: _WKPreviewAction should be in an internal header https://bugs.webkit.org/show_bug.cgi?id=155370 Rubber-stamped by Dan Bernstein. * UIProcess/API/Cocoa/_WKPreviewActionInternal.h: 2016-03-11 Beth Dakin <bdakin@apple.com> _WKPreviewAction should be in an internal header https://bugs.webkit.org/show_bug.cgi?id=155370 Reviewed by Tim Horton. Move _WKPreviewAction to an Internal header since only the protocol needs to be SPI. * UIProcess/API/Cocoa/_WKPreviewAction.h: * UIProcess/API/Cocoa/_WKPreviewAction.mm: * UIProcess/API/Cocoa/_WKPreviewActionInternal.h: Added. * UIProcess/ios/WKContentViewInteraction.mm: * WebKit2.xcodeproj/project.pbxproj: 2016-03-11 Yusuke Suzuki <utatane.tea@gmail.com> [ES6] Implement Reflect.set without receiver support https://bugs.webkit.org/show_bug.cgi?id=155024 Reviewed by Geoffrey Garen. NPJSObject::setProperty may call `methodTable()->put` operation, but we intentionally do not propagate it to the caller's ::put. In the current implementation, we just use the result of ::setProperty call. This is `true` when ::setProperty attempts to call `methodTable()->put`. In ::setProperty, after calling `methodTable()->put`, ::setProperty function clears the exception state. So this is not the same semantics to the simple data property store. Rather, this is like the accessor. In ECMA262 [[Set]], it returns true if there is a setter. So we just use the returned value of ::setProperty. This indicates that there is a setter for the given [[Set]] operation. * WebProcess/Plugins/Netscape/JSNPObject.cpp: (WebKit::JSNPObject::put): * WebProcess/Plugins/Netscape/JSNPObject.h: 2016-03-10 David Kilzer <ddkilzer@apple.com> REGRESSION (r197986): Don't try to link to undefined $(WEBKIT_SYSTEM_INTERFACE_LIBRARY) Follow-up build fix for: AX: Force allow user zoom <https://bugs.webkit.org/show_bug.cgi?id=155056> Fixes the following build failure: ld: library not found for -l-lAccessibility clang: error: linker command failed with exit code 1 (use -v to see invocation) * Configurations/WebKit.xcconfig: Remove "-l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY)" from OTHER_LDFLAGS since that macro is not defined, and there is no need to link to libWebKitSystemInterface.a. 2016-03-10 Jeremy Jones <jeremyj@apple.com> Set AVURLAssetUsesNoPersistentCacheKey on AVAsset to match caching policy. https://bugs.webkit.org/show_bug.cgi?id=155117 rdar://problem/6802240 Reviewed by Simon Fraser. Make AVAsset AVURLAssetUsesNoPersistentCacheKey match !m_websiteDataStore->isPersistent() This will prevent persistent media caches when webkit is using in-memory caching. * Shared/WebPageCreationParameters.cpp: Add mediaShouldUsePersistentCache. (WebKit::WebPageCreationParameters::encode): (WebKit::WebPageCreationParameters::decode): * Shared/WebPageCreationParameters.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::creationParameters): Add mediaShouldUsePersistentCache. * WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::mediaShouldUsePersistentCache): Added. * WebProcess/WebCoreSupport/WebChromeClient.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::m_mediaUsesPersistentCache): Added. * WebProcess/WebPage/WebPage.h: (WebKit::WebPage::mediaShouldUsePersistentCache): Added. 2016-03-10 Nan Wang <n_wang@apple.com> AX: Force allow user zoom https://bugs.webkit.org/show_bug.cgi?id=155056 Reviewed by Simon Fraser. Linked libAccessibility library so that we can observe the accessibility setting change for the force always user scalable feature. * Configurations/WebKit.xcconfig: * UIProcess/API/Cocoa/WKWebView.mm: (shouldAllowPictureInPictureMediaPlayback): (forceAlwaysUserScalableChangedCallback): (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView dealloc]): (-[WKWebView _navigationGestureDidEnd]): (-[WKWebView _updateForceAlwaysUserScalable]): * UIProcess/API/Cocoa/WKWebViewInternal.h: * UIProcess/WebPageProxy.h: * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize): (WebKit::WebPageProxy::updateForceAlwaysUserScalable): (WebKit::WebPageProxy::setMaximumUnobscuredSize): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::disableInspectorNodeSearch): (WebKit::WebPage::updateForceAlwaysUserScalable): (WebKit::innerFrameQuad): 2016-03-10 Simon Fraser <simon.fraser@apple.com> Font antialiasing (smoothing) changes when elements are rendered into compositing layers https://bugs.webkit.org/show_bug.cgi?id=23364 Reviewed by Tim Horton. Send the ContentsFormat to the UI process (but nothing happens to it there yet). Allow internal clients to turn off smoothed layer text, so that WebKitTestRunner can disable it. * Shared/WebProcessCreationParameters.cpp: (WebKit::WebProcessCreationParameters::WebProcessCreationParameters): (WebKit::WebProcessCreationParameters::encode): (WebKit::WebProcessCreationParameters::decode): * Shared/WebProcessCreationParameters.h: * Shared/mac/RemoteLayerTreeTransaction.h: * Shared/mac/RemoteLayerTreeTransaction.mm: (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode): (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): * UIProcess/API/C/WKContext.cpp: (WKContextEnableSmoothedLayerText): * UIProcess/API/C/WKContextPrivate.h: * UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::createNewWebProcess): (WebKit::WebProcessPool::enableSmoothedLayerText): (WebKit::WebProcessPool::WebProcessPool): Deleted. * UIProcess/WebProcessPool.h: * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::setContentsFormat): (WebKit::PlatformCALayerRemote::contentsFormat): * WebProcess/WebPage/mac/PlatformCALayerRemote.h: * WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): (WebKit::WebProcess::enableSmoothedLayerText): * WebProcess/WebProcess.h: * WebProcess/WebProcess.messages.in: 2016-03-10 Enrica Casucci <enrica@apple.com> Expose additional WKDataDetectorTypes. https://bugs.webkit.org/show_bug.cgi?id=155331 rdar://problem/24175813 Reviewed by Tim Horton. Adding API to enable data detection of tracking numbers, flight number and spotlight suggestions. * UIProcess/API/Cocoa/WKWebView.mm: (fromWKDataDetectorTypes): * UIProcess/API/Cocoa/WKWebViewConfiguration.h: 2016-03-10 Beth Dakin <bdakin@apple.com> defaultActions in UIDelegate method _webView:previewingViewControllerForElement:defaultActions: need to be use-able by a client https://bugs.webkit.org/show_bug.cgi?id=155304 -and corresponding- rdar://problem/24269296 Reviewed by Anders Carlsson. This patch adds a new protocol, WKPreviewActionItem, which is a sub-protocol of UIPreviewActionItem. The new protocol adds an identifier so that clients can identify which of our default actions they want to use. In order for a client to use our default action items, they need to return those actions in their UIViewController's implementation of previewActionItems. Change the defaultActions to NSArray <id <WKPreviewActionItem>> * * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: This new file defines our sub-protocol and sub-class for WKPreviewActions. * UIProcess/API/Cocoa/_WKPreviewAction.h: Added. * UIProcess/API/Cocoa/_WKPreviewAction.mm: Added. (+[_WKPreviewAction actionWithIdentifier:title:style:handler:]): New BOOL _uiDelegateProvidedPreviewingViewController keeps track of whether the client returned a view controller from _webView:previewingViewControllerForElement:defaultActions:. If they did return a view controller, then we should invoke _webView:commitPreviewingViewController: at commit time. If they returned nil, then they indicated that WebKit should continue with default previewing behavior, so we will not invoke the UIDelegate’s commit method. * UIProcess/ios/WKContentViewInteraction.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _registerPreview]): (-[WKContentView _unregisterPreview]): (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]): In order for our default actions to be useful, we have to create _WKPreviewActions. (-[WKContentView _presentedViewControllerForPreviewItemController:]): Only invoke _webView:commitPreviewedViewController: if _uiDelegateProvidedPreviewingViewController is YES. (-[WKContentView _previewItemController:commitPreview:]): * WebKit2.xcodeproj/project.pbxproj: 2016-03-10 Jer Noble <jer.noble@apple.com> Add WebCore, WebKit, & WebKit2 preference/setting to enable Main Content heuristic. https://bugs.webkit.org/show_bug.cgi?id=155326 <rdar://problem/25095408> Reviewed by Beth Dakin. Add SPI to get and set the new preference. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetMainContentUserGestureOverrideEnabled): (WKPreferencesGetMainContentUserGestureOverrideEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _mainContentUserGestureOverrideEnabled]): (-[WKWebViewConfiguration _setMainContentUserGestureOverrideEnabled:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-03-10 Alex Christensen <achristensen@webkit.org> Remove firing assertion after r197865. https://bugs.webkit.org/show_bug.cgi?id=155137 rdar://problem/25096835 * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]): This assertion was firing. I'm looking into why. 2016-03-07 Jer Noble <jer.noble@apple.com> Add separate WK and WK2 preferences for requiring user gestures for video media, distinct from user gestures for media generally https://bugs.webkit.org/show_bug.cgi?id=155141 Reviewed by Beth Dakin. Add a new preference, videoPlaybackRequiresUserGesture, distinct from mediaPlaybackRequiresUserGesture. Legacy clients of mediaPlaybackRequiresUserGesture will still be able to use it normally, as setting that preference to true will effectively set both audioPlaybackRequiresUserGesture and videoPlaybackRequiresUserGesture to true. Make these preferences all available universally, rather than just on PLATFORM(IOS). This requires adding a definition for -setRequiresUserActionForMediaPlayback: and -requiresUserActionForMediaPlayback on !PLATFORM(IOS). * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetVideoPlaybackRequiresUserGesture): (WKPreferencesGetVideoPlaybackRequiresUserGesture): * UIProcess/API/C/WKPreferencesRefPrivate.h: * UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _initializeWithConfiguration:]): (-[WKWebView _setObscuredInsets:]): * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration encodeWithCoder:]): (-[WKWebViewConfiguration initWithCoder:]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration requiresUserActionForMediaPlayback]): (-[WKWebViewConfiguration setRequiresUserActionForMediaPlayback:]): (-[WKWebViewConfiguration allowsInlineMediaPlayback]): (-[WKWebViewConfiguration setAllowsInlineMediaPlayback:]): (-[WKWebViewConfiguration _requiresUserActionForVideoPlayback]): (-[WKWebViewConfiguration _setRequiresUserActionForVideoPlayback:]): * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-03-10 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r197943. https://bugs.webkit.org/show_bug.cgi?id=155317 This change broke Windows, WinCairo, GTK and EFL builds (Requested by ryanhaddad on #webkit). Reverted changeset: "Add a baseURL parameter to _WKUserStyleSheet" https://bugs.webkit.org/show_bug.cgi?id=155219 http://trac.webkit.org/changeset/197943 2016-03-10 Eric Carlson <eric.carlson@apple.com> [MediaStream] push media stream state to the UI process https://bugs.webkit.org/show_bug.cgi?id=155281 Reviewed by Dean Jackson. * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didCommitLoadForFrame): Don't clear m_mediaState, it is done in WebPageProxy::resetState. This reverts a change added in r197929. 2016-03-08 Sam Weinig <sam@webkit.org> Add a baseURL parameter to _WKUserStyleSheet https://bugs.webkit.org/show_bug.cgi?id=155219 Reviewed by Tim Horton. - Moves to a model for user content where instead of using a WebCore::UserContentController object, we implement the new WebCore::UserContentProvider interface (on the existing WebUserContentController object). - Uses this to maintain maps of UserStylesSheets and UserScripts along with their identifiers, freeing up the URL, which had been acting as the identifier, to be used as the baseURL which was what it was intended for. - Adds a baseURL property to _WKUserStyleSheet. * WebKit2.xcodeproj/project.pbxproj: Add new files. * Scripts/webkit/messages.py: (headers_for_type): Add support for sending WebUserContentControllerDataTypes. * Shared/WebUserContentControllerDataTypes.cpp: Added. (WebKit::WebUserScriptData::encode): (WebKit::WebUserScriptData::decode): (WebKit::WebUserStyleSheetData::encode): (WebKit::WebUserStyleSheetData::decode): * Shared/WebUserContentControllerDataTypes.h: Added. Add helper types for sending user content over IPC. * UIProcess/API/APIUserScript.cpp: (API::UserScript::generateUniqueURL): (API::UserScript::UserScript): * UIProcess/API/APIUserScript.h: * UIProcess/API/APIUserStyleSheet.cpp: (API::UserStyleSheet::generateUniqueURL): (API::UserStyleSheet::UserStyleSheet): * UIProcess/API/APIUserStyleSheet.h: Add identifiers for tracking across processes. * UIProcess/API/Cocoa/_WKUserStyleSheet.h: * UIProcess/API/Cocoa/_WKUserStyleSheet.mm: (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]): (-[_WKUserStyleSheet baseURL]): Add new initializer which takes a baseURL as well as an accessor for the baseURL. * UIProcess/UserContent/WebUserContentControllerProxy.cpp: (WebKit::WebUserContentControllerProxy::addProcess): (WebKit::WebUserContentControllerProxy::addUserScript): (WebKit::WebUserContentControllerProxy::removeUserScript): (WebKit::WebUserContentControllerProxy::addUserStyleSheet): (WebKit::WebUserContentControllerProxy::removeUserStyleSheet): Pass identifiers as well as user content. * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::addUserScript): (WebKit::InjectedBundle::addUserStyleSheet): Move user content in via move semantics rather than using a unique_ptr. (WebKit::InjectedBundle::removeUserScript): (WebKit::InjectedBundle::removeUserStyleSheet): (WebKit::InjectedBundle::removeUserScripts): (WebKit::InjectedBundle::removeUserStyleSheets): (WebKit::InjectedBundle::removeAllUserContent): Update for new function signatures. * WebProcess/UserContent/WebUserContentController.cpp: (WebKit::WebUserContentController::WebUserContentController): (WebKit::WebUserContentController::~WebUserContentController): (WebKit::WebUserContentController::addUserContentWorlds): (WebKit::WebUserContentController::removeUserContentWorlds): (WebKit::WebUserContentController::addUserScripts): (WebKit::WebUserContentController::removeUserScript): (WebKit::WebUserContentController::removeAllUserScripts): (WebKit::WebUserContentController::addUserStyleSheets): (WebKit::WebUserContentController::removeUserStyleSheet): (WebKit::WebUserContentController::removeAllUserStyleSheets): (WebKit::WebUserContentController::addUserScriptMessageHandlers): (WebKit::WebUserContentController::removeUserScriptMessageHandler): (WebKit::WebUserContentController::addUserContentExtensions): (WebKit::WebUserContentController::removeUserContentExtension): (WebKit::WebUserContentController::removeAllUserContentExtensions): (WebKit::WebUserContentController::addUserScriptInternal): (WebKit::WebUserContentController::addUserScript): (WebKit::WebUserContentController::removeUserScriptWithURL): (WebKit::WebUserContentController::removeUserScriptInternal): (WebKit::WebUserContentController::removeUserScripts): (WebKit::WebUserContentController::addUserStyleSheetInternal): (WebKit::WebUserContentController::addUserStyleSheet): (WebKit::WebUserContentController::removeUserStyleSheetWithURL): (WebKit::WebUserContentController::removeUserStyleSheetInternal): (WebKit::WebUserContentController::removeUserStyleSheets): (WebKit::WebUserContentController::removeAllUserContent): (WebKit::WebUserContentController::forEachUserScript): (WebKit::WebUserContentController::forEachUserStyleSheet): * WebProcess/UserContent/WebUserContentController.h: * WebProcess/UserContent/WebUserContentController.messages.in: Convert to inheriting from UserContentProvider, rather than containing a UserContentController. This means adding the storage for the user content, which has been simplified to avoid using unique_ptrs. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::addUserScript): (WebKit::WebPage::addUserStyleSheet): (WebKit::WebPage::removeAllUserContent): Update to call the WebUserContentController, rather than going to the UserContentController, which no longer exists. * WebProcess/WebPage/WebPageGroupProxy.cpp: (WebKit::WebPageGroupProxy::userContentController): * WebProcess/WebPage/WebPageGroupProxy.h: Return the WebUserContentController rather than old UserContentController. 2016-03-10 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r197923. https://bugs.webkit.org/show_bug.cgi?id=155301 Rolling out this change due to breaking the build and LayoutTests. (Requested by ryanhaddad on #webkit). Reverted changeset: "Font antialiasing (smoothing) changes when elements are rendered into compositing layers" https://bugs.webkit.org/show_bug.cgi?id=23364 http://trac.webkit.org/changeset/197923 2016-03-10 Chris Dumez <cdumez@apple.com> Speculative revalidation requests do not have their 'first party for cookies' URL set https://bugs.webkit.org/show_bug.cgi?id=155284 <rdar://problem/25053203> Reviewed by Antti Koivisto. Speculative revalidation requests did not have their 'first party for cookies' URL set. This means the underlying NSURLRequest has a nil mainDocumentURL. Without a way to determine whether the cookie is in a third-party context, CFNetwork defaults to accepting all cookies for these resources. * NetworkProcess/cache/NetworkCacheCoders.cpp: (WebKit::NetworkCache::Coder<WebCore::URL>::encode): (WebKit::NetworkCache::Coder<WebCore::URL>::decode): * NetworkProcess/cache/NetworkCacheCoders.h: Add template specialization to support encoding / decoding WebCore::URL. * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::constructRevalidationRequest): Set the "first party for cookies" URL on the revalidation request. (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::registerSubresourceLoad): (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::saveToDiskIfReady): Now keep the subresources' ResourceRequests, in addition to their key, so we can later extract the 'first party for cookies' URL from the request and save it to disk. (WebKit::NetworkCache::SpeculativeLoadManager::registerLoad): Pass the ResourceRequest in addition to the key to PendingFrameLoad::registerSubresourceLoad(). (WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry): Add an extra SubresourceInfo parameter, in addition to the Entry, so we have access to the first party for cookies URL. Pass this URL to constructRevalidationRequest(). (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry): Add an extra SubresourceInfo parameter, in addition to the Entry, so we have access to the first party for cookies URL. (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation): Pass the SubresourceInfo to preloadEntry(). * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h: * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: (WebKit::NetworkCache::SubresourcesEntry::SubresourceInfo::encode): (WebKit::NetworkCache::SubresourcesEntry::SubresourceInfo::decode): Encode / Decode new firstPartyForCookies member. (WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry): (WebKit::NetworkCache::SubresourcesEntry::updateSubresourceLoads): Take SubresourceLoad objects in, instead of simple Key objects so we have access to the ResourceRequest. We extract the first party for cookies URL from the request and pass it to the SubresourceInfo constructor. * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h: (WebKit::NetworkCache::SubresourcesEntry::SubresourceInfo::SubresourceInfo): (WebKit::NetworkCache::SubresourcesEntry::SubresourceLoad::SubresourceLoad): 2016-02-22 Jer Noble <jer.noble@apple.com> Enable AVFoundationNSURLSessionEnabled by default https://bugs.webkit.org/show_bug.cgi?id=154469 Reviewed by Sam Weinig. * Shared/WebPreferencesDefinitions.h: 2016-03-10 Eric Carlson <eric.carlson@apple.com> Unreviewed, revert changes accidentally committed with previous patch. * WebProcess/com.apple.WebProcess.sb.in: 2016-03-10 Eric Carlson <eric.carlson@apple.com> [MediaStream] push media stream state to the UI process https://bugs.webkit.org/show_bug.cgi?id=155281 Reviewed by Darin Adler. * UIProcess/API/C/WKPage.cpp: (WKPageGetMediaState): New. * UIProcess/API/C/WKPagePrivate.h: * UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::didCommitLoadForFrame): Clear m_mediaState. (WebKit::WebPageProxy::isPlayingMediaDidChange): Call m_pageClient.isPlayingMediaDidChange when audio or video state changes, call m_uiClient->isPlayingAudioDidChange when audio, vidoe, or media stream state changes. * UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::mediaStateFlags): New. 2016-03-09 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] Artifacts when using web view background color https://bugs.webkit.org/show_bug.cgi?id=155229 Reviewed by Mario Sanchez Prada. This is because when using a web view color, we fill with the color every rectangle updated by the web process, but we should always fill the entire backing store before rendering the actual contents on top. * WebProcess/WebPage/DrawingAreaImpl.cpp: (WebKit::DrawingAreaImpl::display): Ensure the web process always renders the whole visible rectangle when background is rendered by the UI process. 2016-03-09 Simon Fraser <simon.fraser@apple.com> Font antialiasing (smoothing) changes when elements are rendered into compositing layers https://bugs.webkit.org/show_bug.cgi?id=23364 rdar://problem/7288429 Reviewed by Tim Horton. Send the ContentsFormat to the UI process (but nothing happens to it there yet). * Shared/mac/RemoteLayerTreeTransaction.h: * Shared/mac/RemoteLayerTreeTransaction.mm: (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode): (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp: (WebKit::PlatformCALayerRemote::setContentsFormat): (WebKit::PlatformCALayerRemote::contentsFormat): * WebProcess/WebPage/mac/PlatformCALayerRemote.h: 2016-03-09 Ryosuke Niwa <rniwa@webkit.org> Add runtime flags for shadow DOM and custom elements https://bugs.webkit.org/show_bug.cgi?id=155213 Reviewed by Dean Jackson. Set the runtime flag based on preferences. Enable shadow DOM and disable custom elements by default. * Shared/WebPreferencesDefinitions.h: * UIProcess/API/C/WKPreferences.cpp: (WKPreferencesSetShadowDOMEnabled): (WKPreferencesGetShadowDOMEnabled): (WKPreferencesSetCustomElementsEnabled): (WKPreferencesGetCustomElementsEnabled): * UIProcess/API/C/WKPreferencesRefPrivate.h: * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::updatePreferences): 2016-03-09 Brent Fulgham <bfulgham@apple.com> Handling 'allowUniversalAccessFromFileURLs' on WKWebViewConfiguration causes test breakage https://bugs.webkit.org/show_bug.cgi?id=155265 <rdar://problem/11101440> Reviewed by Andy Estes. We require "AllowUniversalAccessFromFileURLs" to permit file URLs from accessing localStorage. However, this setting is not available on the Cocoa WKPreference (by design). Instead, you need to set this value on the WKWebViewConfiguration. Back out the work-around landed in r197889, * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): Remove test workaround. * UIProcess/mac/WebInspectorProxyMac.mm: (WebKit::WebInspectorProxy::platformCreateInspectorPage): Set the correct flag on the WKWebViewConfiguration. 2016-03-09 Enrica Casucci <enrica@apple.com> Retrieve additional context for some data detector link for preview and action menu. https://bugs.webkit.org/show_bug.cgi?id=155278 rdar://problem/24884951 Reviewed by Tim Horton. Data detector results for items like calendar events, can be augmented retrieving the text surrounding the link. * Platform/spi/ios/DataDetectorsUISPI.h: * Shared/ios/InteractionInformationAtPosition.h: * Shared/ios/InteractionInformationAtPosition.mm: (WebKit::InteractionInformationAtPosition::encode): (WebKit::InteractionInformationAtPosition::decode): * UIProcess/ios/WKActionSheetAssistant.mm: (-[WKActionSheetAssistant showDataDetectorsSheet]): * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _dataForPreviewItemController:atPosition:type:]): * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::getPositionInformation): 2016-03-09 Gavin Barraclough <barraclough@apple.com> Last opened tab does not receive SetHiddenPageTimerThrottlingIncreaseLimit message https://bugs.webkit.org/show_bug.cgi?id=155126 Reviewed by Anders Carlson. WebPageProxy will increment the hidden page throttling counter from within its constructor, which currently causes the WebProcessPool to try to synchronously message all processes. The web page triggering the increment then fails to receive the message, since it was still being constructed. Make the update of the limit async, such that the page is fully constructed before the WebProcessPool processes the update. * UIProcess/WebProcessPool.cpp: (WebKit::m_hiddenPageThrottlingAutoIncreasesCounter): - This now schedules a zero-delay timer to handle the update. (WebKit::m_hiddenPageThrottlingTimer): - This is now responsible for calling updateHiddenPageThrottlingAutoIncreaseLimit. * UIProcess/WebProcessPool.h: - Added m_hiddenPageThrottlingTimer. 2016-03-09 David Kilzer <ddkilzer@apple.com> REGRESSION (r197149): Missing availability checks when soft-linking DataDetectors.framework <http://webkit.org/b/155258> Reviewed by Andy Estes. * Platform/mac/MenuUtilities.mm: (WebKit::menuItemForTelephoneNumber): (WebKit::menuForTelephoneNumber): - Add check that returns early if DataDetectors.framework is not available. * Shared/mac/WebHitTestResultData.mm: (WebKit::WebHitTestResultData::platformDecode): - Add Debug assertion. The soft-linked code should never be called if there was no actionContext passed in. * UIProcess/Cocoa/WebViewImpl.mm: (WebKit::WebViewImpl::dismissContentRelativeChildWindowsFromViewOnly): - Protect calls to DDActionsManager with availability check. * UIProcess/mac/WKImmediateActionController.mm: (-[WKImmediateActionController _clearImmediateActionState]): (-[WKImmediateActionController immediateActionRecognizerWillBeginAnimation:]): - Protect calls to DDActionsManager with availability check. (-[WKImmediateActionController _animationControllerForDataDetectedText]): (-[WKImmediateActionController _animationControllerForDataDetectedLink]): - Add check that returns early if DataDetectors.framework is not available. 2016-03-09 Keith Rollin <krollin@apple.com> Add state dumping facility https://bugs.webkit.org/show_bug.cgi?id=154930 <rdar://problem/24939135> Reviewed by Anders Carlsson. Collect the times at which pages are loaded. Dump them when an OS state dump is triggered. * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::didCommitLoad): * WebProcess/WebPage/WebPage.h: (WebKit::WebPage::lastPageLoadTime): * WebProcess/WebProcess.h: * WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::registerWithStateDumper): (WebKit::WebProcess::platformInitializeProcess): 2016-03-09 Anders Carlsson <andersca@apple.com> _WKWebsiteDataSize.h should be an SPI header. Rubber-stamped by Tim Horton. * WebKit2.xcodeproj/project.pbxproj: 2016-03-09 Brent Fulgham <bfulgham@apple.com> Handling 'allowUniversalAccessFromFileURLs' on WKWebViewConfiguration causes test breakage https://bugs.webkit.org/show_bug.cgi?id=155265 Unreviewed work-around to allow testing to continue. * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): Workaround build break. 2016-03-09 Alex Christensen <achristensen@webkit.org> Fix use-after-free when cancelling synchronous XHR when using NetworkSession https://bugs.webkit.org/show_bug.cgi?id=155253 Reviewed by Brady Eidson. * NetworkProcess/NetworkLoad.cpp: (WebKit::NetworkLoad::continueWillSendRequest): Store the completion handler on the stack before calling didFail, which deletes the NetworkLoad, so we don't access m_redirectCompletionHandler after deleting the NetworkLoad. 2016-03-09 Commit Queue <commit-queue@webkit.org> Unreviewed, rolling out r197698. https://bugs.webkit.org/show_bug.cgi?id=155252 Caused assertions, and wasn't reviewed by a WK2 owner (Requested by andersca on #webkit). Reverted changeset: "Last opened tab does not receive SetHiddenPageTimerThrottlingIncreaseLimit message" https://bugs.webkit.org/show_bug.cgi?id=155126 http://trac.webkit.org/changeset/197698 2016-03-09 Conrad Shultz <conrad_shultz@apple.com> WebsiteDataStore::Configuration::legacyWebsiteDataStoreConfiguration() should respect the passed-in configuration https://bugs.webkit.org/show_bug.cgi?id=155250 Reviewed by Anders Carlsson. Note that the legacy directories are already set by default in ProcessPoolConfiguration::createWithLegacyOptions(), which is also where the shouldHaveLegacyDataStore flag, which will cause this code path to be reached, is set. * UIProcess/WebProcessPool.cpp: (WebKit::legacyWebsiteDataStoreConfiguration): Use the passed-in configuration to set the application cache, network cache, and media keys storage directories. 2016-03-09 Chris Dumez <cdumez@apple.com> Speculative disk cache resource revalidations are sometimes wasted https://bugs.webkit.org/show_bug.cgi?id=155187 <rdar://problem/25032905> Reviewed by Antti Koivisto. Speculative disk cache resource revalidations were sometimes wasted. We would sometimes correctly revalidate a resource but the NetworkResourceLoader then either: 1. Fail to reuse the speculatively validated entry 2. Reuse the speculatively validated entry but then validate it again Bug 1 was caused by the revalidated entry key sometimes being different from the cached entry key. This could happen when revalidation fails (the server did not send back a 304) in which case we call NetworkCache::store() which creates a new cache Entry, generating a cache key from our revalidation request. If the original request has a cache partition or a range, then the keys would not match because we did not set the cache partition or the range on the revalidation request. This has been addressed by setting the cache partition on the revalidation request in constructRevalidationRequest() and by not doing revalidation if the original request had a 'range' header. Bug 2 was caused by us marking a speculatively revalidated entry as "not needing revalidating" only in Cache::update(). Cache::update() is only called in the case the revalidation was successful (server returned a 304). If revalidation was not successful, Cache::store() would be called instead was we would fail to update the needsRevalidation flag. NetworkResourceLoader would then validate again the resource that was already speculatively revalidated. To address the problem, we now update the 'needsRevalidation' flag as soon as the speculative revalidation completes, in SpeculativeLoad::didComplete(). * NetworkProcess/cache/NetworkCache.cpp: (WebKit::NetworkCache::Cache::retrieve): (WebKit::NetworkCache::makeCacheKey): (WebKit::NetworkCache::Cache::update): * NetworkProcess/cache/NetworkCacheEntry.cpp: (WebKit::NetworkCache::Entry::setNeedsValidation): * NetworkProcess/cache/NetworkCacheEntry.h: * NetworkProcess/cache/NetworkCacheKey.cpp: (WebKit::NetworkCache::noPartitionString): (WebKit::NetworkCache::Key::Key): (WebKit::NetworkCache::Key::hasPartition): * NetworkProcess/cache/NetworkCacheKey.h: * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: (WebKit::NetworkCache::SpeculativeLoad::didComplete): * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: (WebKit::NetworkCache::constructRevalidationRequest): (WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage): (WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry): 2016-03-09 Brent Fulgham <bfulgham@apple.com> Local HTML should be blocked from localStorage access unless "Disable Local File Restrictions" is checked https://bugs.webkit.org/show_bug.cgi?id=155185 Reviewed by Anders Carlsson. <rdar://problem/11101440> Tested by TestWebKitAPI tests IndexedDB.IndexedDBMultiProcess and IndexedDB.IndexedDBPersistence. Allow Cocoa WKWebViewConfiguration access to the 'allowUniversalAccessFromFileURLs' setting. * UIProcess/API/Cocoa/WKWebView.mm: (- [WKWebView _initializeWithConfiguration]): Set 'allowUniversalAccessFromFileURLsKey' in page configuration. * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration _allowUniversalAccessFromFileURLs]): Added, (-[WKWebViewConfiguration _setAllowUniversalAccessFromFileURLs:]): Added. * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: 2016-03-09 Enrica Casucci <enrica@apple.com> Add two finger tap on links. https://bugs.webkit.org/show_bug.cgi?id=155205 rdar://problem/22937516 Reviewed by Sam Weinig. Adds two finger tap gesture recognizer. When performed on a link, it calls the delegate. * Platform/spi/ios/UIKitSPI.h: * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: * UIProcess/WebPageProxy.h: * UIProcess/ios/WKContentViewInteraction.h: * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setupInteraction]): (-[WKContentView cleanupInteraction]): (-[WKContentView _removeDefaultGestureRecognizers]): (-[WKContentView _addDefaultGestureRecognizers]): (-[WKContentView _twoFingerSingleTapGestureRecognized:]): * UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::handleTwoFingerTapAtPoint): * WebProcess/WebPage/WebPage.h: * WebProcess/WebPage/WebPage.messages.in: * WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::handleTwoFingerTapAtPoint): 2016-03-09 Alex Christensen <achristensen@webkit.org> Always call NSURLSession completion handlers https://bugs.webkit.org/show_bug.cgi?id=155137 Reviewed by Darin Adler. There are some edge cases which should not be hit, but if they are they would cause the network process to hang and network resources to be leaked. This can be avoided. There are also a few release asserts that do not need to crash release builds. * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTask::NetworkDataTask): (WebKit::NetworkDataTask::didReceiveChallenge): (WebKit::NetworkDataTask::didCompleteWithError): (WebKit::NetworkDataTask::didReceiveResponse): (WebKit::NetworkDataTask::didReceiveData): (WebKit::NetworkDataTask::willPerformHTTPRedirection): (WebKit::NetworkDataTask::scheduleFailure): (WebKit::NetworkDataTask::tryPasswordBasedAuthentication): * NetworkProcess/cocoa/NetworkSessionCocoa.mm: (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): 2016-03-08 Sam Weinig <sam@webkit.org> Roll r197632 back in now that the bots have caught up. * UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView textInputTraits]): 2016-03-08 Oliver Hunt <oliver@apple.com> Start moving to separated writable and executable mappings in the JIT https://bugs.webkit.org/show_bug.cgi?id=155178 Reviewed by Fil Pizlo. Update feature defines. * Configurations/FeatureDefines.xcconfig: 2016-03-08 Brent Fulgham