blob: d28985997c6335b6e449627357d37c322b4f38de [file] [log] [blame]
2017-06-13 Daniel Bates <dabates@apple.com>
Implement W3C Secure Contexts Draft Specification
https://bugs.webkit.org/show_bug.cgi?id=158121
<rdar://problem/26012994>
Reviewed by Brent Fulgham.
Part 4
Adds a preference to toggle the runtime enabled feature flag isSecureContextAttributeEnabled.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetIsSecureContextAttributeEnabled):
(WKPreferencesGetIsSecureContextAttributeEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-06-13 Brent Fulgham <bfulgham@apple.com>
[WK2][macOS] Allow AppleEvents in Citrix View Plugin
https://bugs.webkit.org/show_bug.cgi?id=173280
<rdar://problem/31913624>
Reviewed by Alexey Proskuryakov.
Allow the Citrix Viewer plugin to issue Apple Events.
* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::PluginProcess::platformInitializeProcess): Allow AppleEvents for the Citrix Viewer plugin.
2017-06-13 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Blob download doesn't work
https://bugs.webkit.org/show_bug.cgi?id=172442
Reviewed by Carlos Alberto Lopez Perez.
GTK+ API uses URIs for download destination paths, and passes that URIs to the WebKit internals. But WebKit
expects download destination location to be a local path. This is not a problem for normal downloads, because
the soup backend handles the cases of download destination being a URI and a path. For blob downloads
NetworkDataTaskBlob is used, and it always expects the download destination to be a local path, failing in
FileSystem::openFile() when a URI is passed. We need to keep using local files internally and convert to URIs
only when exposing those paths to the API.
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::download): Stop handling URIs here, we should always expect local files.
* UIProcess/API/gtk/WebKitDownload.cpp:
(webkitDownloadDecideDestinationWithSuggestedFilename): Convert destination URI to filanme before pasing it to DownloadClient.
(webkitDownloadDestinationCreated): Convert the destination path to a URI before passing it to WebKitDownload::created-destionation signal.
* UIProcess/API/gtk/WebKitDownloadClient.cpp:
* UIProcess/API/gtk/WebKitDownloadPrivate.h:
2017-06-13 Wenson Hsieh <wenson_hsieh@apple.com>
Unable to paste text that was copied from a page into the universal search field
https://bugs.webkit.org/show_bug.cgi?id=173293
<rdar://problem/32440918>
Reviewed by Ryosuke Niwa.
Add boilerplate SPI on WKPreferences to enable JavaScript access to copy and paste.
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setJavaScriptCanAccessClipboard:]):
(-[WKPreferences _javaScriptCanAccessClipboard]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
2017-06-13 Sam Weinig <sam@webkit.org>
Rename JSDOMWindowShell to JSDOMWindowProxy to match the HTML5 spec.
https://bugs.webkit.org/show_bug.cgi?id=80733
Reviewed by Chris Dumez.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::windowScriptNPObject):
2017-06-13 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Remove unused code from GTK+ WebKitPrivate.
* UIProcess/API/gtk/WebKitPrivate.cpp:
(wkEventModifiersToGdkModifiers): Deleted.
(wkEventMouseButtonToWebKitMouseButton): Deleted.
* UIProcess/API/gtk/WebKitPrivate.h:
2017-06-13 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix return value of PageLoaderClient::shouldGoToBackForwardListItem after r218164.
It should return true as InjectedBundlePageLoaderClient does. This caused several timeouts in GTK+ unit tests
after r218171.
* WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
(API::InjectedBundle::PageLoaderClient::shouldGoToBackForwardListItem):
2017-06-13 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use API::GeolocationProvider in WebKitGeolocationProvider
https://bugs.webkit.org/show_bug.cgi?id=173151
Reviewed by Žan Doberšek.
Also cleanup a bit the WebKitGeolocationProvider implementation, it doesn't need to be refcounted.
* UIProcess/API/gtk/WebKitGeolocationProvider.cpp:
(WebKit::GeolocationProvider::GeolocationProvider):
(WebKit::WebKitGeolocationProvider::~WebKitGeolocationProvider):
(WebKit::WebKitGeolocationProvider::WebKitGeolocationProvider):
(toGeolocationProvider): Deleted.
(startUpdatingCallback): Deleted.
(stopUpdatingCallback): Deleted.
(WebKitGeolocationProvider::~WebKitGeolocationProvider): Deleted.
(WebKitGeolocationProvider::create): Deleted.
(WebKitGeolocationProvider::WebKitGeolocationProvider): Deleted.
(WebKitGeolocationProvider::startUpdating): Deleted.
(WebKitGeolocationProvider::stopUpdating): Deleted.
(WebKitGeolocationProvider::notifyPositionChanged): Deleted.
(WebKitGeolocationProvider::notifyErrorOccurred): Deleted.
* UIProcess/API/gtk/WebKitGeolocationProvider.h:
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):
2017-06-13 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use API::IconDatabaseClient in WebKitFaviconDatabase
https://bugs.webkit.org/show_bug.cgi?id=173146
Reviewed by Žan Doberšek.
* UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
(_WebKitFaviconDatabasePrivate::~_WebKitFaviconDatabasePrivate):
(webkitFaviconDatabaseCreate):
(didChangeIconForPageURLCallback): Deleted.
(iconDataReadyForPageURLCallback): Deleted.
2017-06-13 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use API::InjectedBundle::PageLoaderClient in WebKitWebPage
https://bugs.webkit.org/show_bug.cgi?id=173304
Reviewed by Alex Christensen.
* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
(webkitWebPageCreate):
(getDocumentLoaderURL): Deleted.
(didStartProvisionalLoadForFrame): Deleted.
(didReceiveServerRedirectForProvisionalLoadForFrame): Deleted.
(didSameDocumentNavigationForFrame): Deleted.
(didCommitLoadForFrame): Deleted.
(didFinishDocumentLoadForFrame): Deleted.
(didClearWindowObjectForFrame): Deleted.
2017-06-13 Gwang Yoon Hwang <yoon@igalia.com>
[GStreamerGL] Release GstVideoFrame when there is a flush event from the pipeline
https://bugs.webkit.org/show_bug.cgi?id=172427
Reviewed by Žan Doberšek.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::texmapGL):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
Provides current texmapGL to platform layer proxies to create and copy
bitmap textures.
2017-06-13 Youenn Fablet <youenn@apple.com>
Switch off Legacy WebRTC API flag by default
https://bugs.webkit.org/show_bug.cgi?id=173241
Reviewed by Sam Weinig.
* Shared/WebPreferencesDefinitions.h:
2017-06-12 Carlos Garcia Campos <cgarcia@igalia.com>
Add API::GeolocationProvider
https://bugs.webkit.org/show_bug.cgi?id=173150
Reviewed by Alex Christensen.
It will be used by GTK+ port instead of the C API.
* UIProcess/API/APIGeolocationProvider.h: Added.
(API::GeolocationProvider::~GeolocationProvider):
(API::GeolocationProvider::startUpdating):
(API::GeolocationProvider::stopUpdating):
(API::GeolocationProvider::setEnableHighAccuracy):
* UIProcess/API/C/WKGeolocationManager.cpp:
(WKGeolocationManagerSetProvider):
* UIProcess/WebGeolocationManagerProxy.cpp:
(WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy):
(WebKit::WebGeolocationManagerProxy::setProvider):
(WebKit::WebGeolocationManagerProxy::processPoolDestroyed):
(WebKit::WebGeolocationManagerProxy::startUpdating):
(WebKit::WebGeolocationManagerProxy::removeRequester):
(WebKit::WebGeolocationManagerProxy::setEnableHighAccuracy):
* UIProcess/WebGeolocationManagerProxy.h:
* UIProcess/WebGeolocationProvider.cpp:
(WebKit::WebGeolocationProvider::WebGeolocationProvider):
(WebKit::WebGeolocationProvider::startUpdating):
(WebKit::WebGeolocationProvider::stopUpdating):
(WebKit::WebGeolocationProvider::setEnableHighAccuracy):
* UIProcess/WebGeolocationProvider.h:
* WebKit2.xcodeproj/project.pbxproj:
2017-06-12 Carlos Garcia Campos <cgarcia@igalia.com>
Add API::InjectedBundle::PageLoaderClient
https://bugs.webkit.org/show_bug.cgi?id=173265
Reviewed by Alex Christensen.
It will be used by the GTK+ port instead of the C API.
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h: Added.
(API::InjectedBundle::PageLoaderClient::willLoadURLRequest):
(API::InjectedBundle::PageLoaderClient::willLoadDataRequest):
(API::InjectedBundle::PageLoaderClient::shouldGoToBackForwardListItem):
(API::InjectedBundle::PageLoaderClient::didStartProvisionalLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
(API::InjectedBundle::PageLoaderClient::didCommitLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didFinishDocumentLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didFinishLoadForFrame):
(API::InjectedBundle::PageLoaderClient::didFinishProgress):
(API::InjectedBundle::PageLoaderClient::didFailLoadWithErrorForFrame):
(API::InjectedBundle::PageLoaderClient::didSameDocumentNavigationForFrame):
(API::InjectedBundle::PageLoaderClient::didReceiveTitleForFrame):
(API::InjectedBundle::PageLoaderClient::didRemoveFrameFromHierarchy):
(API::InjectedBundle::PageLoaderClient::didDisplayInsecureContentForFrame):
(API::InjectedBundle::PageLoaderClient::didRunInsecureContentForFrame):
(API::InjectedBundle::PageLoaderClient::didDetectXSSForFrame):
(API::InjectedBundle::PageLoaderClient::didFirstLayoutForFrame):
(API::InjectedBundle::PageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
(API::InjectedBundle::PageLoaderClient::didLayoutForFrame):
(API::InjectedBundle::PageLoaderClient::didReachLayoutMilestone):
(API::InjectedBundle::PageLoaderClient::didClearWindowObjectForFrame):
(API::InjectedBundle::PageLoaderClient::didCancelClientRedirectForFrame):
(API::InjectedBundle::PageLoaderClient::willPerformClientRedirectForFrame):
(API::InjectedBundle::PageLoaderClient::didHandleOnloadEventsForFrame):
(API::InjectedBundle::PageLoaderClient::globalObjectIsAvailableForFrame):
(API::InjectedBundle::PageLoaderClient::willDisconnectDOMWindowExtensionFromGlobalObject):
(API::InjectedBundle::PageLoaderClient::didReconnectDOMWindowExtensionToGlobalObject):
(API::InjectedBundle::PageLoaderClient::willDestroyGlobalObjectForDOMWindowExtension):
(API::InjectedBundle::PageLoaderClient::shouldForceUniversalAccessFromLocalURL):
(API::InjectedBundle::PageLoaderClient::featuresUsedInPage):
(API::InjectedBundle::PageLoaderClient::willDestroyFrame):
(API::InjectedBundle::PageLoaderClient::userAgentForURL):
(API::InjectedBundle::PageLoaderClient::layoutMilestones):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetPageLoaderClient):
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
(WebKit::InjectedBundlePageLoaderClient::InjectedBundlePageLoaderClient):
(WebKit::InjectedBundlePageLoaderClient::willLoadURLRequest):
(WebKit::InjectedBundlePageLoaderClient::willLoadDataRequest):
(WebKit::InjectedBundlePageLoaderClient::shouldGoToBackForwardListItem):
(WebKit::InjectedBundlePageLoaderClient::didStartProvisionalLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFailProvisionalLoadWithErrorForFrame):
(WebKit::InjectedBundlePageLoaderClient::didCommitLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFinishDocumentLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFinishLoadForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFinishProgress):
(WebKit::InjectedBundlePageLoaderClient::didFailLoadWithErrorForFrame):
(WebKit::InjectedBundlePageLoaderClient::didSameDocumentNavigationForFrame):
(WebKit::InjectedBundlePageLoaderClient::didReceiveTitleForFrame):
(WebKit::InjectedBundlePageLoaderClient::didRemoveFrameFromHierarchy):
(WebKit::InjectedBundlePageLoaderClient::didDisplayInsecureContentForFrame):
(WebKit::InjectedBundlePageLoaderClient::didRunInsecureContentForFrame):
(WebKit::InjectedBundlePageLoaderClient::didDetectXSSForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFirstLayoutForFrame):
(WebKit::InjectedBundlePageLoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
(WebKit::InjectedBundlePageLoaderClient::didLayoutForFrame):
(WebKit::InjectedBundlePageLoaderClient::didReachLayoutMilestone):
(WebKit::InjectedBundlePageLoaderClient::didClearWindowObjectForFrame):
(WebKit::InjectedBundlePageLoaderClient::didCancelClientRedirectForFrame):
(WebKit::InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame):
(WebKit::InjectedBundlePageLoaderClient::didHandleOnloadEventsForFrame):
(WebKit::InjectedBundlePageLoaderClient::globalObjectIsAvailableForFrame):
(WebKit::InjectedBundlePageLoaderClient::willDisconnectDOMWindowExtensionFromGlobalObject):
(WebKit::InjectedBundlePageLoaderClient::didReconnectDOMWindowExtensionToGlobalObject):
(WebKit::InjectedBundlePageLoaderClient::willDestroyGlobalObjectForDOMWindowExtension):
(WebKit::InjectedBundlePageLoaderClient::shouldForceUniversalAccessFromLocalURL):
(WebKit::InjectedBundlePageLoaderClient::featuresUsedInPage):
(WebKit::InjectedBundlePageLoaderClient::userAgentForURL):
(WebKit::InjectedBundlePageLoaderClient::layoutMilestones):
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::detachedFromParent2):
(WebKit::WebFrameLoaderClient::dispatchDidDispatchOnloadEvents):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidCancelClientRedirect):
(WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect):
(WebKit::WebFrameLoaderClient::dispatchDidChangeLocationWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidPushStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidReplaceStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidPopStateWithinPage):
(WebKit::WebFrameLoaderClient::dispatchDidStartProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle):
(WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFailLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
(WebKit::WebFrameLoaderClient::dispatchDidFinishLoad):
(WebKit::WebFrameLoaderClient::dispatchDidReachLayoutMilestone):
(WebKit::WebFrameLoaderClient::dispatchDidLayout):
(WebKit::WebFrameLoaderClient::shouldGoToHistoryItem):
(WebKit::WebFrameLoaderClient::didDisplayInsecureContent):
(WebKit::WebFrameLoaderClient::didRunInsecureContent):
(WebKit::WebFrameLoaderClient::didDetectXSS):
(WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld):
(WebKit::WebFrameLoaderClient::dispatchGlobalObjectAvailable):
(WebKit::WebFrameLoaderClient::dispatchWillDisconnectDOMWindowExtensionFromGlobalObject):
(WebKit::WebFrameLoaderClient::dispatchDidReconnectDOMWindowExtensionToGlobalObject):
(WebKit::WebFrameLoaderClient::dispatchWillDestroyGlobalObjectForDOMWindowExtension):
(WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL):
* WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp:
(WebKit::WebProgressTrackerClient::progressFinished):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setInjectedBundlePageLoaderClient):
(WebKit::WebPage::close):
(WebKit::WebPage::loadRequest):
(WebKit::WebPage::loadDataImpl):
(WebKit::WebPage::userAgent):
(WebKit::WebPage::reportUsedFeatures):
(WebKit::WebPage::dispatchDidReachLayoutMilestone):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::injectedBundleLoaderClient):
2017-06-12 Simon Fraser <simon.fraser@apple.com>
[iOS WK2] Peeking on an image could result in a preview at the wrong size
https://bugs.webkit.org/show_bug.cgi?id=173274
rdar://problem/30404627
Reviewed by Tim Horton.
There were a couple of issues with the way the page scale is communicated between the web process
and the UI process.
Generally, the page scale is computed by the web process, and sent to the UI process via
layer tree commits. UI-side scale is them communicated back to the web process via visibleContentRect
updates. When receiving a new scale, WebPage has a "scale was set by the UI process" flag to handle
the case where user interaction overrides the viewport-computed page scale. However, this flag would
get set erroneously in a couple of situations.
First, during page loading, layer flushing is suspended temporarily, so web process scale changes never
make it to the UI process. In that scenario, the UI process could send an old scale back to the web process,
setting the "scale was set by the UI process" when it really wasn't.
Secondly, web -> UI layer commit messages, and UI -> web updateVisibleContentRect messages can be in flight at the
same time, again causing a stale scale to reach the web process.
Fix this by only setting the "scale was set by the UI process" when we know the UI scale should be in sync, by comparing
commit IDs of sent and received scales.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::scaleFromUIProcess):
(WebKit::WebPage::updateVisibleContentRects):
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
(WebKit::RemoteLayerTreeDrawingArea::lastCommittedTransactionID):
2017-06-12 Alex Christensen <achristensen@webkit.org>
Modernize UserScript.h
https://bugs.webkit.org/show_bug.cgi?id=173273
Reviewed by Tim Horton.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<UserScript>::encode): Deleted.
(IPC::ArgumentCoder<UserScript>::decode): Deleted.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/API/C/WKPageGroup.cpp:
(WKPageGroupAddUserScript):
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::addUserScript):
* WebProcess/InjectedBundle/InjectedBundle.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::addUserScript):
* WebProcess/WebPage/WebPage.h:
2017-06-12 Tim Horton <timothy_horton@apple.com>
[iOS] Cmd-C doesn't copy text from WKWebView
https://bugs.webkit.org/show_bug.cgi?id=173277
<rdar://problem/32396742>
Reviewed by Dan Bernstein.
* UIProcess/API/Cocoa/WKWebView.mm:
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _lookupForWebView:]):
(-[WKContentView _shareForWebView:]):
(-[WKContentView _addShortcutForWebView:]):
(-[WKContentView _promptForReplaceForWebView:]):
(-[WKContentView _transliterateChineseForWebView:]):
(-[WKContentView _reanalyzeForWebView:]):
(-[WKContentView replaceForWebView:]):
(-[WKContentView canPerformAction:withSender:]):
(-[WKContentView copyForWebView:]):
(-[WKContentView cutForWebView:]):
(-[WKContentView pasteForWebView:]):
(-[WKContentView selectForWebView:]):
(-[WKContentView selectAllForWebView:]):
(-[WKContentView toggleBoldfaceForWebView:]):
(-[WKContentView toggleItalicsForWebView:]):
(-[WKContentView toggleUnderlineForWebView:]):
(-[WKContentView _showTextStyleOptionsForWebView:]):
(-[WKContentView _defineForWebView:]):
(-[WKContentView _arrowKeyForWebView:]):
(-[WKContentView _lookup:]): Deleted.
(-[WKContentView _share:]): Deleted.
(-[WKContentView _addShortcut:]): Deleted.
(-[WKContentView _promptForReplace:]): Deleted.
(-[WKContentView _transliterateChinese:]): Deleted.
(-[WKContentView _reanalyze:]): Deleted.
(-[WKContentView replace:]): Deleted.
(-[WKContentView copy:]): Deleted.
(-[WKContentView cut:]): Deleted.
(-[WKContentView paste:]): Deleted.
(-[WKContentView select:]): Deleted.
(-[WKContentView selectAll:]): Deleted.
(-[WKContentView toggleBoldface:]): Deleted.
(-[WKContentView toggleItalics:]): Deleted.
(-[WKContentView toggleUnderline:]): Deleted.
(-[WKContentView _showTextStyleOptions:]): Deleted.
(-[WKContentView _define:]): Deleted.
(-[WKContentView _arrowKey:]): Deleted.
Similar to what r211897 did for canPerformAction, and other patches
have done for other selectors, forward methods for standard editing
commands from WKContentView up to WKWebView, and back down to WKContentView.
This is necessary because these are not treated as normal
responder-chain-respecting methods, so they do not bubble up the view tree.
In 211897, WKContentView (who is usually first responder and thus receives
the actions) stopped claiming to be able to perform these actions, depending
on this non-existent bubbling behavior to keep them working.
2017-06-12 Chris Dumez <cdumez@apple.com>
Null dereference under WebProcessPool::pageRemovedFromProcess()
https://bugs.webkit.org/show_bug.cgi?id=173271
<rdar://problem/32038814>
Reviewed by Ryosuke Niwa.
Null-check networkProcess() before dereferencing it in WebProcessPool::pageRemovedFromProcess().
This is the only place in this class where we failed to null check before dereferencing
networkProcess(). To my knowledge, there is no guarantee there is a network process.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::pageRemovedFromProcess):
2017-06-12 Jiewen Tan <jiewen_tan@apple.com>
[WebCrypto] Remove experimental feature flag of SubtleCrypto
https://bugs.webkit.org/show_bug.cgi?id=173197
<rdar://problem/32688148>
Reviewed by Brent Fulgham.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetSubtleCryptoEnabled): Deleted.
(WKPreferencesGetSubtleCryptoEnabled): Deleted.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-06-12 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS DnD] Allow the injected bundle to add client data when writing an image to the pasteboard
https://bugs.webkit.org/show_bug.cgi?id=173238
<rdar://problem/31943370>
Reviewed by Ryosuke Niwa and Tim Horton.
Send PasteboardImage.clientTypes and PasteboardImage.clientData over IPC.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::encodeClientTypesAndData):
(IPC::decodeClientTypesAndData):
Factor out common logic used to encode and decode client types and data into static helpers.
(IPC::ArgumentCoder<PasteboardWebContent>::encode):
(IPC::ArgumentCoder<PasteboardWebContent>::decode):
(IPC::ArgumentCoder<PasteboardImage>::encode):
(IPC::ArgumentCoder<PasteboardImage>::decode):
2017-06-12 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS DnD] Introduce hooks to override targeted drag previews when lifting and cancelling
https://bugs.webkit.org/show_bug.cgi?id=173240
<rdar://problem/31943370>
Reviewed by Ryosuke Niwa and Tim Horton.
Adds two new delegate hooks: _webView:previewForLiftingItem:session: and
_webView:previewForCancellingItem:withDefault:.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
2017-06-12 Chris Dumez <cdumez@apple.com>
Regression(r217867): Legacy SessionHistoryEntryData format should not change
https://bugs.webkit.org/show_bug.cgi?id=173267
<rdar://problem/32701257>
Reviewed by Simon Fraser.
Revert changes to Legacy SessionHistoryEntryData format that were made in r217867,
as this apparently breaks compatiblity.
* UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::encodeFrameStateNode):
(WebKit::decodeBackForwardTreeNode):
2017-06-12 Brent Fulgham <bfulgham@apple.com>
[WK2][macOS] Alow iokit-get-properties for additional media features
https://bugs.webkit.org/show_bug.cgi?id=173082
<rdar://problem/32597547>
Reviewed by Alex Christensen.
* WebProcess/com.apple.WebProcess.sb.in:
2017-06-12 Carlos Garcia Campos <cgarcia@igalia.com>
Add API::IconDatabaseClient
https://bugs.webkit.org/show_bug.cgi?id=173145
Reviewed by Alex Christensen.
It will be used by GTK+ port instead of the C API.
* UIProcess/API/APIIconDatabaseClient.h:
(API::IconDatabaseClient::~IconDatabaseClient):
(API::IconDatabaseClient::didChangeIconForPageURL):
(API::IconDatabaseClient::didRemoveAllIcons):
(API::IconDatabaseClient::iconDataReadyForPageURL):
* UIProcess/API/C/WKIconDatabase.cpp:
(WKIconDatabaseSetIconDatabaseClient):
* UIProcess/WebIconDatabase.cpp:
(WebKit::WebIconDatabase::WebIconDatabase):
(WebKit::WebIconDatabase::setClient):
(WebKit::WebIconDatabase::didChangeIconForPageURL):
(WebKit::WebIconDatabase::didRemoveAllIcons):
(WebKit::WebIconDatabase::notifyIconDataReadyForPageURL):
* UIProcess/WebIconDatabase.h:
* UIProcess/WebIconDatabaseClient.cpp:
(WebKit::WebIconDatabaseClient::WebIconDatabaseClient):
(WebKit::WebIconDatabaseClient::didChangeIconForPageURL):
(WebKit::WebIconDatabaseClient::didRemoveAllIcons):
(WebKit::WebIconDatabaseClient::iconDataReadyForPageURL):
* UIProcess/WebIconDatabaseClient.h:
* WebKit2.xcodeproj/project.pbxproj:
2017-06-12 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Stop dismissing menus attached to the web view for every injected event
https://bugs.webkit.org/show_bug.cgi?id=172708
Reviewed by Alex Christensen.
To actually simulate a right-click event we should also send the button release after the press, and let the page
handle the events in addition to sending the event to the context menu controller, like we do with normal
events. So, this is mostly the same as a real right-click event but without actually showing the menu.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::contextMenuAtPointInWindow):
2017-06-12 Daewoong Jang <daewoong.jang@navercorp.com>
[CoordinatedGraphics] Behavior change of DrawingAreaImpl after r217779
https://bugs.webkit.org/show_bug.cgi?id=173153
Reviewed by Carlos Garcia Campos.
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged):
2017-06-12 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Prefer to use private WebKitWebView API over WebKitWebViewBase
https://bugs.webkit.org/show_bug.cgi?id=173254
Reviewed by Žan Doberšek.
WebKitWebViewBase is specific to the GTK+ API, but WebKitWebView should be present in any glib-based API. Add
webkitWebViewCreatePage() and webkitWebViewGetPage() and use them when possible instead of the WebKitWebViewBase
ones.
* UIProcess/API/gtk/WebKitAutomationSession.cpp:
* UIProcess/API/gtk/WebKitContextMenuClient.cpp:
(attachContextMenuClientToView):
* UIProcess/API/gtk/WebKitFindController.cpp:
(getPage):
(webkitFindControllerDispose):
(webkitFindControllerConstructed):
(webKitFindControllerPerform):
(webkit_find_controller_search_finish):
* UIProcess/API/gtk/WebKitFormClient.cpp:
(attachFormClientToView):
* UIProcess/API/gtk/WebKitLoaderClient.cpp:
(attachLoaderClientToView):
* UIProcess/API/gtk/WebKitPolicyClient.cpp:
(attachPolicyClientToView):
* UIProcess/API/gtk/WebKitPrintOperation.cpp:
(drawPagesForPrintingCompleted):
(webkitPrintOperationPrintPagesForFrame):
(webkit_print_operation_run_dialog):
(webkit_print_operation_print):
* UIProcess/API/gtk/WebKitUIClient.cpp:
(attachUIClientToView):
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextCreatePageForWebView):
(webkitWebContextWebViewDestroyed):
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewCreatePage):
(webkitWebViewGetPage):
* UIProcess/API/gtk/WebKitWebViewPrivate.h:
2017-06-12 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] getPage() in WebKitWebView should return a reference instead of a pointer
https://bugs.webkit.org/show_bug.cgi?id=173251
Reviewed by Žan Doberšek.
The WebPageProxy is created on WebKitWebView construction, so getPage() can only return nullptr if it's called
during construction. And that can only happen when construct properties are set. It's better to check that the
view has been constructed only in these particular cases and make getPage() return a reference.
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewCreateJavaScriptDialog):
(allowModalDialogsChanged): Settings signals are only connected after the page has been created, so we don't
need to check page is available here.
(zoomTextOnlyChanged):
(userAgentChanged):
(webkitWebViewIsConstructed): Helper method to check if the view has been constructed.
(webkitWebViewUpdateSettings): Return early if view hasn't been constructed.
(webkitWebViewDisconnectSettingsSignalHandlers): Ditto.
(webkitWebViewConstructed):
(webkitWebViewDispose):
(webkitWebViewCreateNewPage):
(webkitWebViewSelectionDidChange):
(webkit_web_view_try_close):
(webkit_web_view_load_uri):
(webkit_web_view_load_html):
(webkit_web_view_load_alternate_html):
(webkit_web_view_load_plain_text):
(webkit_web_view_load_bytes):
(webkit_web_view_load_request):
(webkit_web_view_get_page_id):
(webkit_web_view_reload):
(webkit_web_view_reload_bypass_cache):
(webkit_web_view_stop_loading):
(webkit_web_view_is_playing_audio):
(webkit_web_view_go_back):
(webkit_web_view_can_go_back):
(webkit_web_view_go_forward):
(webkit_web_view_can_go_forward):
(webkit_web_view_get_custom_charset):
(webkit_web_view_set_custom_charset):
(webkit_web_view_get_estimated_load_progress):
(webkit_web_view_go_to_back_forward_list_item):
(webkit_web_view_set_zoom_level):
(webkit_web_view_get_zoom_level):
(webkit_web_view_can_execute_editing_command):
(webkit_web_view_execute_editing_command):
(webkit_web_view_execute_editing_command_with_argument):
(webkit_web_view_run_javascript):
(resourcesStreamReadCallback):
(webkit_web_view_get_inspector):
(webkit_web_view_can_show_mime_type):
(webkit_web_view_save):
(webkit_web_view_save_to_file):
(webkit_web_view_download_uri):
(webkit_web_view_get_tls_info):
(webkit_web_view_get_snapshot):
(webkit_web_view_set_background_color):
(webkit_web_view_get_background_color):
(webkit_web_view_is_editable):
(webkit_web_view_set_editable):
(webkit_web_view_get_editor_state):
(webkit_web_view_get_session_state):
(webkit_web_view_restore_session_state):
2017-06-12 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Move WebKit GType macros to WTF
https://bugs.webkit.org/show_bug.cgi?id=173249
Reviewed by Žan Doberšek.
Moving to a common place where they could be shared by all ports using a glib-based API.
* UIProcess/API/gtk/WebKitPrivate.h:
2017-06-11 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Remove WKInspectorClientGtk
https://bugs.webkit.org/show_bug.cgi?id=173142
Reviewed by Michael Catanzaro.
It's only used internally in GTk+ API, we can simplify it by using a C++ client instead.
* PlatformGTK.cmake:
* UIProcess/API/C/gtk/WKInspectorClientGtk.cpp: Removed.
* UIProcess/API/C/gtk/WKInspectorClientGtk.h: Removed.
* UIProcess/API/gtk/WebKitPrivate.h:
* UIProcess/API/gtk/WebKitWebInspector.cpp:
(_WebKitWebInspectorPrivate::~_WebKitWebInspectorPrivate):
(webkitWebInspectorCreate):
* UIProcess/WebInspectorProxy.cpp:
* UIProcess/WebInspectorProxy.h:
* UIProcess/gtk/WebInspectorClientGtk.cpp: Removed.
* UIProcess/gtk/WebInspectorProxyClient.h: Renamed from Source/WebKit2/UIProcess/gtk/WebInspectorClientGtk.h.
* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::setClient):
(WebKit::WebInspectorProxy::createInspectorWindow):
(WebKit::WebInspectorProxy::platformDidClose):
(WebKit::WebInspectorProxy::platformBringToFront):
(WebKit::WebInspectorProxy::platformInspectedURLChanged):
(WebKit::WebInspectorProxy::platformAttach):
(WebKit::WebInspectorProxy::platformDetach):
(WebKit::WebInspectorProxy::platformSetAttachedWindowHeight):
(WebKit::WebInspectorProxy::platformSetAttachedWindowWidth):
(WebKit::WebInspectorProxy::platformAttachAvailabilityChanged):
2017-06-11 Tim Horton <timothy_horton@apple.com>
REGRESSION (r217870): Null deref under PageOverlayController::uninstallPageOverlay using find in page
https://bugs.webkit.org/show_bug.cgi?id=173196
<rdar://problem/32686871>
Reviewed by Simon Fraser.
* WebProcess/WebPage/ios/FindControllerIOS.mm:
(WebKit::FindController::updateFindIndicator):
The reason this caused a crash instead of just a missing indicator
is that FindControllerIOS would early return after uninstalling
the old overlay, before installing a new one, and leave m_isShowingFindIndicator
set to true. Instead, reset it (and m_findIndicatorOverlay, which
we would never re-use but might as well be freed immediately).
This likely already crashed in other less reproducible cases where a
TextIndicator was not created for a find match, so clean it up.
2017-06-10 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Remove WKFullScreenClientGtk
https://bugs.webkit.org/show_bug.cgi?id=173140
Reviewed by Michael Catanzaro.
It's only used internally in the GTK+ API. Implementation is a lot simpler without using it, we can simply use
either WebKitWebView or WebKitWebViewBase from PageClient directly.
* PlatformGTK.cmake:
* UIProcess/API/C/gtk/WKFullScreenClientGtk.cpp: Removed.
* UIProcess/API/C/gtk/WKFullScreenClientGtk.h: Removed.
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::isFullScreen):
(WebKit::PageClientImpl::enterFullScreen):
(WebKit::PageClientImpl::exitFullScreen):
* UIProcess/API/gtk/WebKitFullscreenClient.cpp: Removed.
* UIProcess/API/gtk/WebKitFullscreenClient.h: Removed.
* UIProcess/API/gtk/WebKitPrivate.h:
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewConstructed):
(webkitWebViewEnterFullScreen):
(webkitWebViewExitFullScreen):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseEnterFullScreen):
(webkitWebViewBaseExitFullScreen):
(webkitWebViewBaseIsFullScreen):
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
* UIProcess/API/gtk/WebKitWebViewPrivate.h:
* UIProcess/gtk/WebFullScreenClientGtk.cpp: Removed.
* UIProcess/gtk/WebFullScreenClientGtk.h: Removed.
2017-06-10 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Handle page download request in WebKitWebView directly
https://bugs.webkit.org/show_bug.cgi?id=173137
Reviewed by Žan Doberšek.
We don't need to pass through WebKitWebViewBase, since the base doesn't have an implementation.
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::handleDownloadRequest):
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewConstructed):
(webkitWebViewHandleDownloadRequest):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseSetDownloadRequestHandler): Deleted.
(webkitWebViewBaseHandleDownloadRequest): Deleted.
* UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
* UIProcess/API/gtk/WebKitWebViewPrivate.h:
2017-06-10 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use a lambda in webkit_cookie_manager_get_accept_policy instead of toGenericCallbackFunction
https://bugs.webkit.org/show_bug.cgi?id=173134
Reviewed by Žan Doberšek.
It's simpler and easier to read.
* UIProcess/API/gtk/WebKitCookieManager.cpp:
(webkit_cookie_manager_get_accept_policy):
(webkitCookieManagerGetAcceptPolicyCallback): Deleted.
2017-06-10 Dan Bernstein <mitz@apple.com>
Reverted r218056 because it made the IDE reindex constantly.
* Configurations/DebugRelease.xcconfig:
2017-06-10 Dan Bernstein <mitz@apple.com>
[Xcode] With Xcode 9 developer beta, everything rebuilds when switching between command-line and IDE
https://bugs.webkit.org/show_bug.cgi?id=173223
Reviewed by Sam Weinig.
The rebuilds were happening due to a difference in the compiler options that the IDE and
xcodebuild were specifying. Only the IDE was passing the -index-store-path option. To make
xcodebuild pass that option, too, set CLANG_INDEX_STORE_ENABLE to YES if it is unset, and
specify an appropriate path in CLANG_INDEX_STORE_PATH.
* Configurations/DebugRelease.xcconfig:
2017-06-09 Ryosuke Niwa <rniwa@webkit.org>
Crash inside WebKit::PluginView::getAuthenticationInfo
https://bugs.webkit.org/show_bug.cgi?id=173083
<rdar://problem/32513144>
Address Darin's review comment.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::getAuthenticationInfo):
2017-06-09 Chris Dumez <cdumez@apple.com>
Use WTF::Function instead of std::function in NetworkProcess code
https://bugs.webkit.org/show_bug.cgi?id=173182
Reviewed by Alex Christensen.
Use WTF::Function instead of std::function in NetworkProcess code to avoid
unnecessary copying.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/cache/NetworkCacheIOChannel.h:
* NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
(WebKit::NetworkCache::IOChannel::read):
(WebKit::NetworkCache::IOChannel::write):
* NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
(WebKit::NetworkCache::IOChannel::read):
(WebKit::NetworkCache::IOChannel::readSyncInThread):
(WebKit::NetworkCache::IOChannel::write):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
* NetworkProcess/cache/NetworkCacheStatistics.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::clearNSURLCache):
(WebKit::NetworkProcess::clearDiskCache):
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::clearDiskCache):
2017-06-09 Tim Horton <timothy_horton@apple.com>
REGRESSION (r213584): WeChat app can not switch to next text field
https://bugs.webkit.org/show_bug.cgi?id=173183
<rdar://problem/32323478>
Reviewed by Wenson Hsieh.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/InputViewUpdateDeferrer.mm:
(WebKit::InputViewUpdateDeferrer::~InputViewUpdateDeferrer):
It turns out that _endIgnoringReloadInputViews doesn't actually perform
the update if there was one ignored. It does, however, return whether
there was a change ignored, and we can force an update.
This remains untestable without sizable additional API test infrastructure
for the same reasons as the original patch.
2017-06-09 Chris Dumez <cdumez@apple.com>
Make sure we protect |this| in lambdas in WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver()
https://bugs.webkit.org/show_bug.cgi?id=173174
<rdar://problem/32598919>
Reviewed by Darin Adler.
Follow-up fix to r218006, which caused a crash on the bots. We cannot WTFMove() protectedThis
here because the callback gets called several times.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
2017-06-09 Jer Noble <jer.noble@apple.com>
Crash in -[WKWebView _initializeWithConfiguration:]
https://bugs.webkit.org/show_bug.cgi?id=173126
<rdar://problem/32664993>
Reviewed by Darin Adler.
Follow up to previous fix; when setting NSString properties, store a copy of
the string rather than the NSString itself.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _overrideContentSecurityPolicy]):
(-[WKWebViewConfiguration _setOverrideContentSecurityPolicy:]):
(-[WKWebViewConfiguration _setMediaContentTypesRequiringHardwareSupport:]):
2017-06-09 Chris Dumez <cdumez@apple.com>
Use WTF::Function instead of std::function in StorageManager
https://bugs.webkit.org/show_bug.cgi?id=173177
Reviewed by Brady Eidson.
Use WTF::Function instead of std::function in StorageManager. This eliminates some
potential implicit copying of captured variables, which is important here because
we pass those lambdas to other threads.
* 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:
2017-06-09 Daniel Bates <dabates@apple.com>
CSP: Apply img-src directive to favicon loads
https://bugs.webkit.org/show_bug.cgi?id=172733
<rdar://problem/32082654>
Reviewed by Brady Eidson.
Return 0 seconds for the maximum buffering time for favicons (no change in behavior).
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::maximumBufferingTime):
2017-06-09 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS DnD] Add a hook to perform two-step drops in editable content
https://bugs.webkit.org/show_bug.cgi?id=172992
<rdar://problem/32590174>
Reviewed by Tim Horton.
Add plumbing to support an injected bundle hook for overriding two-step drops. See WebCore ChangeLog.
* WebProcess/InjectedBundle/API/APIInjectedBundleEditorClient.h:
(API::InjectedBundle::EditorClient::performTwoStepDrop):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
* WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
* WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
(WebKit::InjectedBundlePageEditorClient::performTwoStepDrop):
* WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::performTwoStepDrop):
* WebProcess/WebCoreSupport/WebEditorClient.h:
2017-06-09 Brent Fulgham <bfulgham@apple.com>
Use Function rather than std::function for thread safety in WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=173172
Reviewed by Chris Dumez.
<rdar://problem/32679311>
Remove a few more instances of std::function in the WebsiteDataStore, and WTFMove completion handler to
avoid unnecessary copies.
* Shared/WebsiteData/WebsiteDataType.h: Remove redundant WebsiteDataType from name.
* UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
(WebKit::toWebsiteDataType): Update for revised name.
(WebKit::toWKWebsiteDataTypes): Ditto.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): ASSERT that
this function, as well as its completion handler, are getting called from the main thread.
(WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebiteData): Ditto.
(WebKit::WebProcessProxy::fetchWebsiteData): Move the completionHandler.
(WebKit::WebProcessProxy::deleteWebsiteData): Ditto.
(WebKit::WebProcessProxy::deleteWebsiteDataForOrigins): Ditto.
* UIProcess/WebProcessProxy.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData): Switch to Function, and move completion handler.
(WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains): Ditto.
(WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData): Ditto.
(WebKit::WebsiteDataStore::removeData): Ditto.
(WebKit::WebsiteDataStore::removeDataForTopPrivatelyControlledDomains): Ditto.
* UIProcess/WebsiteData/WebsiteDataStore.h:
2017-06-09 Chris Dumez <cdumez@apple.com>
Make sure we protect |this| in lambdas in WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver()
https://bugs.webkit.org/show_bug.cgi?id=173174
<rdar://problem/32598919>
Reviewed by Darin Adler.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
2017-06-09 Chris Dumez <cdumez@apple.com>
Avoid some ref counting churn in WebResourceLoadStatisticsStore
https://bugs.webkit.org/show_bug.cgi?id=173168
Reviewed by Brent Fulgham.
Move the protectedThis around instead of ref'ing it every time we capture it
in a lambda. Also add a missing protectedThis in WebResourceLoadStatisticsStore::removeDataRecords()
which likely fixes crashes.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
2017-06-09 Sam Weinig <sam@webkit.org>
Add SubresourceIntegrity as an experimental feature
https://bugs.webkit.org/show_bug.cgi?id=173164
Reviewed by Darin Adler.
* Shared/WebPreferencesDefinitions.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Add SubresourceIntegrity to the list of experimental features. Also, sort the experimental features
as requested by the comment above it.
2017-06-09 Chris Dumez <cdumez@apple.com>
Make sure |this| is protected in lambda capture in WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData()
https://bugs.webkit.org/show_bug.cgi?id=173163
Reviewed by Brent Fulgham.
Make sure |this| is protected in lambda capture in WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData()
or it may end up getting destroyed before the lambda executing and crash when calling m_statisticsQueue->dispatch().
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
2017-06-09 Daewoong Jang <daewoong.jang@navercorp.com>
[CoordinatedGraphics] Remove unneeded interfaces in PageClient
https://bugs.webkit.org/show_bug.cgi?id=173149
Reviewed by Michael Catanzaro.
* UIProcess/PageClient.h:
2017-06-09 Chris Dumez <cdumez@apple.com>
Use WTF::Function instead of std::function in SpeculativeLoadManager::ExpiringEntry
https://bugs.webkit.org/show_bug.cgi?id=173125
Reviewed by Antti Koivisto.
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::SpeculativeLoadManager::ExpiringEntry::ExpiringEntry):
(WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::PreloadedEntry):
2017-06-09 Daewoong Jang <daewoong.jang@navercorp.com>
Use WTF::getCurrentProcessID() instead of getpid()
https://bugs.webkit.org/show_bug.cgi?id=173130
Reviewed by Tim Horton.
* UIProcess/API/APIProcessPoolConfiguration.h:
2017-06-09 Claudio Saavedra <csaavedra@igalia.com>
struct does not accept initializer-form if member has initializers in GCC 4.9
Unreviewed speculative build fix.
Remove the default initializers for DeniedRequest struct,
since it's only initialized in one place, to keep gcc 4.9
happy.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
2017-06-09 Adrien Plazas <aplazas@igalia.com>
[GTK] Add kinetic scrolling
https://bugs.webkit.org/show_bug.cgi?id=155750
Reviewed by Carlos Garcia Campos.
Patch by Adrien Plazas and Yusuke Suzuki.
Add the notion of phase and momentum phase to WebWheelEvent.
Make WebWheelEvent manage the 'is_stop' attribute of GdkEventScroll to create the corresponding WebWheelEvent
with the correct phases and deltas.
Make GestureController manage swipes to create the corresponding WebWheelEvent with the correct phases and
deltas.
* Shared/NativeWebWheelEvent.h:
* Shared/WebEvent.h:
* Shared/WebEventConversion.cpp:
(WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent):
* Shared/WebWheelEvent.cpp:
(WebKit::WebWheelEvent::WebWheelEvent):
(WebKit::WebWheelEvent::encode):
(WebKit::WebWheelEvent::decode):
* Shared/gtk/NativeWebWheelEventGtk.cpp:
(WebKit::NativeWebWheelEvent::NativeWebWheelEvent):
* Shared/gtk/WebEventFactory.cpp:
(WebKit::WebEventFactory::createWebWheelEvent):
* Shared/gtk/WebEventFactory.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::handleWheelEvent):
(WebKit::WebPageProxy::shouldProcessWheelEventNow):
* UIProcess/WebPageProxy.h:
* UIProcess/gtk/GestureController.cpp:
(WebKit::GestureController::GestureController):
(WebKit::GestureController::handleEvent):
(WebKit::GestureController::isProcessingGestures):
(WebKit::createScrollEvent):
(WebKit::GestureController::DragGesture::startDrag):
(WebKit::GestureController::DragGesture::handleDrag):
(WebKit::GestureController::DragGesture::begin):
(WebKit::GestureController::DragGesture::end):
(WebKit::GestureController::SwipeGesture::startMomentumScroll):
(WebKit::GestureController::SwipeGesture::swipe):
(WebKit::GestureController::SwipeGesture::SwipeGesture):
* UIProcess/gtk/GestureController.h:
2017-06-09 Jer Noble <jer.noble@apple.com>
Crash in -[WKWebView _initializeWithConfiguration:]
https://bugs.webkit.org/show_bug.cgi?id=173126
Reviewed by Antti Koivisto.
Crash occurs when passing an autoreleased NSString into _setMediaContentTypesRequiringHardwareSupport.
The ivar should be a RetainPtr rather than a bare NSString *.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration _mediaContentTypesRequiringHardwareSupport]):
2017-06-08 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use API::FormClient instead of the C API in WebKitFormClient
https://bugs.webkit.org/show_bug.cgi?id=173098
Reviewed by Žan Doberšek.
* UIProcess/API/gtk/WebKitFormClient.cpp:
(attachFormClientToView):
(willSubmitForm): Deleted.
* UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp:
(webkitFormSubmissionRequestCreate):
(webkit_form_submission_request_get_text_fields):
* UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h:
* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
(webkitWebPageCreate):
2017-06-08 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Use API::Findclient instead of the C API in WebKitFindController
https://bugs.webkit.org/show_bug.cgi?id=173095
Reviewed by Žan Doberšek.
* UIProcess/API/gtk/WebKitFindController.cpp:
(getPage):
(webkitFindControllerDispose):
(webkitFindControllerConstructed):
(webkit_find_controller_class_init):
2017-06-08 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Get rid of custom marshallers of signals
https://bugs.webkit.org/show_bug.cgi?id=173094
Reviewed by Žan Doberšek.
Use g_cclosure_marshal_generic instead.
* PlatformGTK.cmake:
* UIProcess/API/gtk/WebKitBackForwardList.cpp:
* UIProcess/API/gtk/WebKitDownload.cpp:
(webkit_download_class_init):
* UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
(webkit_favicon_database_class_init):
* UIProcess/API/gtk/WebKitWebInspector.cpp:
(webkit_web_inspector_class_init):
* UIProcess/API/gtk/WebKitWebResource.cpp:
(webkit_web_resource_class_init):
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkit_web_view_class_init):
* UIProcess/API/gtk/webkit2marshal.list: Removed.
* WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp:
* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
(webkit_web_page_class_init):
2017-06-08 Simon Fraser <simon.fraser@apple.com>
Crash under -[WKWebView _updateVisibleContentRects]
https://bugs.webkit.org/show_bug.cgi?id=173123
rdar://problem/32650112
Reviewed by Tim Horton.
Make sure the WKWebView is valid in places where we dispatch_async or use
a pre-commit handler.
Speculative fix for a rare crasher.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _isValid]):
(-[WKWebView _addUpdateVisibleContentRectPreCommitHandler]):
(-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):
2017-06-07 Simon Fraser <simon.fraser@apple.com>
Use initializers in WebPageProxy
https://bugs.webkit.org/show_bug.cgi?id=173073
Reviewed by Tim Horton.
Initialize the member variables the modern way.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
* UIProcess/WebPageProxy.h:
2017-06-08 Jeremy Jones <jeremyj@apple.com>
Implement additional AVPlayerController interfaces for minTime and maxTime.
https://bugs.webkit.org/show_bug.cgi?id=172396
rdar://problem/30737452
Reviewed by Jer Noble.
Add support for new HLS UI in AVKit.
Plumb seekableTimeRangesLastModifiedTime and liveUpdateInterval across process boundaries.
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::setSeekableRanges):
(WebKit::WebPlaybackSessionManagerProxy::setSeekableRangesVector):
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionInterfaceContext::seekableRangesChanged):
(WebKit::WebPlaybackSessionManager::seekableRangesChanged):
2017-06-08 Chris Dumez <cdumez@apple.com>
Use WTF::Function more in SpeculativeLoadManager
https://bugs.webkit.org/show_bug.cgi?id=173109
Reviewed by Antti Koivisto.
Use WTF::Function more in SpeculativeLoadManager.
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::create):
(WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::PendingFrameLoad):
(WebKit::NetworkCache::SpeculativeLoadManager::registerLoad):
(WebKit::NetworkCache::SpeculativeLoadManager::retrieveSubresourcesEntry):
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
2017-06-08 Youenn Fablet <youenn@apple.com>
getUserMedia should not be prompted again if user denied access
https://bugs.webkit.org/show_bug.cgi?id=173104
Reviewed by Geoff Garen.
Store denied requests to be able to replay them.
If mic is denied, user might be prompted for camera, not for mic and camera.
Same principle applies to the case of denied camera.
Clearing the stored denied requests when reloading/navigating away.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
(WebKit::UserMediaPermissionRequestManagerProxy::resetAccess):
(WebKit::UserMediaPermissionRequestManagerProxy::isRequestDenied):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
2017-06-08 Jer Noble <jer.noble@apple.com>
Clients of the WK2 C-API don't have their mediaContentTypesRequiringHardwareSupport setting initialized correctly.
https://bugs.webkit.org/show_bug.cgi?id=173091
Reviewed by Eric Carlson.
Rather than add yet a third way of setting this preference, centralize everything by moving the
definition of the default value into WebCore.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-06-08 Jer Noble <jer.noble@apple.com>
[WK2] mediaContentTypesRequiringHardwareSupport setting not being propogated
https://bugs.webkit.org/show_bug.cgi?id=173090
Reviewed by Eric Carlson.
Passing a NSString* into the WebPreferencesStore::Value constructor would rather cast the NSString*
into a bool than a const String&. So explicitly cast the NSString* into a String before passing.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
2017-06-08 Youenn Fablet <youenn@apple.com>
getUserMedia request should not be allowed for background tabs unless the tab is already capturing
https://bugs.webkit.org/show_bug.cgi?id=172989
Reviewed by Eric Carlson.
Covered by updated test and manual testing.
In case a getUserMedia can be granted, we check for visbility of the view.
If the view is visible, the getUserMedia request is allowed and promise is resolved.
Otherwise we store the pregranted request and will allow it when the view gets visible.
Pregranted requests will be cleared if the document of the view is changed.
Pregranted requests will not be used when capture page is muted.
In that case, a prompt will appear.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::removeGrantedAccess):
(WebKit::allowRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::processPregrantedRequests):
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::dispatchActivityStateChange):
(WebKit::WebPageProxy::viewIsBecomingVisible):
* UIProcess/WebPageProxy.h:
2017-06-07 Carlos Garcia Campos <cgarcia@igalia.com>
[WPE] Enable resource usage
https://bugs.webkit.org/show_bug.cgi?id=173054
Reviewed by Žan Doberšek.
Enable/disable the resources overlay with CTRL + Shift + G.
* UIProcess/API/wpe/WPEView.cpp:
(WKWPE::m_compositingManagerProxy):
2017-06-07 Carlos Garcia Campos <cgarcia@igalia.com>
Remove legacy INSPECTOR_SERVER implementation
https://bugs.webkit.org/show_bug.cgi?id=172966
Reviewed by Žan Doberšek.
* CMakeLists.txt:
* Platform/Logging.h:
* PlatformWPE.cmake:
* UIProcess/InspectorServer/HTTPRequest.cpp: Removed.
* UIProcess/InspectorServer/HTTPRequest.h: Removed.
* UIProcess/InspectorServer/WebInspectorServer.cpp: Removed.
* UIProcess/InspectorServer/WebInspectorServer.h: Removed.
* UIProcess/InspectorServer/WebSocketServer.cpp: Removed.
* UIProcess/InspectorServer/WebSocketServer.h: Removed.
* UIProcess/InspectorServer/WebSocketServerClient.h: Removed.
* UIProcess/InspectorServer/WebSocketServerConnection.cpp: Removed.
* UIProcess/InspectorServer/WebSocketServerConnection.h: Removed.
* UIProcess/InspectorServer/front-end/inspectorPageIndex.html: Removed.
* UIProcess/InspectorServer/soup/WebSocketServerSoup.cpp: Removed.
* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::invalidate):
* UIProcess/WebInspectorProxy.h:
* UIProcess/WebInspectorProxy.messages.in:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::preferencesDidChange):
* UIProcess/wpe/WebProcessPoolWPE.cpp:
* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::sendMessageToFrontend):
* WebProcess/WebPage/WebInspector.h:
* WebProcess/WebPage/WebInspector.messages.in:
2017-06-07 Dan Bernstein <mitz@apple.com>
[Cocoa] additionalReadAccessAllowedURLs doesn’t preserve non-Latin-1 paths
https://bugs.webkit.org/show_bug.cgi?id=173086
Reviewed by Andy Estes.
We were incorrectly passing the fileSystemRepresentation of an NSURL into the WTF::String
constructor that expects a Latin-1 string. However, in general, fileSystemRepresentation is
not Latin-1.
* UIProcess/API/APIProcessPoolConfiguration.h: Changed m_additionalReadAccessAllowedPaths
from a Vector<WTF::String> into a Vector<WTF::CString>.
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration additionalReadAccessAllowedURLs]): Updated for the change.
(-[_WKProcessPoolConfiguration setAdditionalReadAccessAllowedURLs:]): Ditto.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::resolvePathsForSandboxExtensions): Ditto.
2017-06-07 Ryosuke Niwa <rniwa@webkit.org>
Crash inside WebKit::PluginView::getAuthenticationInfo
https://bugs.webkit.org/show_bug.cgi?id=173083
Reviewed by Chris Dumez.
Added a null pointer check. The content document may have went away by the time we get there from IPC.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::getAuthenticationInfo):
2017-06-07 Youenn Fablet <youenn@apple.com>
getUserMedia is prompting too often
https://bugs.webkit.org/show_bug.cgi?id=172859
<rdar://problem/32589950>
Reviewed by Eric Carlson.
Introduce a storage of granted requests to skip prompting when needed.
This is a partial implementation as granted requests should not happen for background tabs.
This will be covered in a follow-up patch.
Covered by manual tests.
A granted request keeps its mainFrameID.
Whenever the document of the main frame changes, the granted requests for that mainFrameID will be removed.
This handles the case of navigating, reloading... while still supporting the case of granting getUserMedia after in page navigation.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
(WebKit::UserMediaPermissionRequestManagerProxy::removeGrantedAccess):
(WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::grantAccess):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
* UIProcess/UserMediaPermissionRequestProxy.h:
(WebKit::UserMediaPermissionRequestProxy::create):
(WebKit::UserMediaPermissionRequestProxy::mainFrameID):
(WebKit::UserMediaPermissionRequestProxy::frameID):
(WebKit::UserMediaPermissionRequestProxy::userMediaDocumentSecurityOrigin):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didChangeMainDocument):
(WebKit::WebPageProxy::backForwardGoToItem):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidChangeMainDocument):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
2017-06-07 Dan Bernstein <mitz@apple.com>
[Cocoa] additionalReadAccessAllowedURLs should be consumed before loading the injected bundle
https://bugs.webkit.org/show_bug.cgi?id=173078
Reviewed by Anders Carlsson.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess): Changed the order.
2017-06-07 Per Arne Vollan <pvollan@apple.com>
Support removal of authentication data through the Website data store API.
https://bugs.webkit.org/show_bug.cgi?id=171217
<rdar://problem/29522573>
Reviewed by Brady Eidson.
Add support to remove and fetch credential data through the Website data store API.
Credential data is removed and fetched from both the network process and web process.
Authentication data stored in the keychain will not be cleared.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
* Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::encode):
(WebKit::WebsiteData::decode):
* Shared/WebsiteData/WebsiteData.h:
* Shared/WebsiteData/WebsiteDataType.h:
* UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
* UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
(dataTypesToString):
* UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
(WebKit::toWebsiteDataType):
(WebKit::toWKWebsiteDataTypes):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(+[WKWebsiteDataStore allWebsiteDataTypes]):
* UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::addOriginWithCredential):
* UIProcess/WebsiteData/WebsiteDataRecord.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::fetchWebsiteData):
(WebKit::WebProcess::deleteWebsiteData):
2017-06-06 Dan Bernstein <mitz@apple.com>
Fixed building with the macOS 10.13 Apple Internal SDK when targeting macOS 10.12.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didAuthorizePayment:handler:]):
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]):
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]):
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]):
2017-06-06 Brent Fulgham <bfulgham@apple.com>
[WK2][Cocoa] Allow network process to bind addresses without webrtc extension
https://bugs.webkit.org/show_bug.cgi?id=173032
<rdar://problem/32597426>
Reviewed by Youenn Fablet.
Remove the unnecessary WebRTC sandbox extension handle and conditional sandbox rules, since we've
decided that all WebKit clients should be able to use the WebRTC protocol.
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode): Remove unused sandbox extension from serialization.
(WebKit::NetworkProcessCreationParameters::decode): Ditto.
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa): We no longer send the sandbox extension,
so don't attempt to consume it.
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in: Remove check for 'com.apple.webkit.webrtc'
extension. Make rules conditional on building with WEB_RTC feature enabled.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Remove check for 'com.apple.webkit.webrtc'
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess): Do not create unnecessary sandbox extension
handle.
2017-06-06 Tim Horton <timothy_horton@apple.com>
Crash trying to drag the entire text of a long book out of Mail compose view
https://bugs.webkit.org/show_bug.cgi?id=173042
<rdar://problem/32382059>
Reviewed by Simon Fraser.
* WebProcess/WebPage/ios/FindControllerIOS.mm:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::didConcludeEditDataInteraction):
Adapt to the new name.
2017-06-06 Chris Dumez <cdumez@apple.com>
RELEASE_ASSERT(static_cast<size_t>(enumerationValue) < WTF_ARRAY_LENGTH(values)) hit in convertEnumerationToJS<WebCore::History::ScrollRestoration>()
https://bugs.webkit.org/show_bug.cgi?id=173033
<rdar://problem/32591099>
Reviewed by Simon Fraser.
* Shared/SessionState.h:
Make sure FrameState::shouldRestoreScrollPosition and other struct members are always
intialized.
* UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::encodeFrameStateNode):
(WebKit::decodeBackForwardTreeNode):
Make sure FrameState::shouldRestoreScrollPosition is properly encoded / decoded.
2017-06-06 Andy Estes <aestes@apple.com>
REGRESSION (r199558): WKWebView upload file which name contains Chinese character results in garbled code
https://bugs.webkit.org/show_bug.cgi?id=172849
<rdar://problem/32567454>
Reviewed by Darin Adler.
This is the Mac equivalent of what was fixed in r208295. This time we use -[NSURL path] to
construct a WTF::String instead of calling String::fromUTF8() on -[NSURL fileSystemRepresentation].
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::runOpenPanel):
2017-06-06 Yoav Weiss <yoav@yoav.ws>
[preload] Conditional support for media preloading and align media `as` values.
https://bugs.webkit.org/show_bug.cgi?id=172501
Reviewed by Dean Jackson.
Add media preloading preference and hook it up to runtime enabled features.
* Shared/WebPreferencesDefinitions.h: Added a macro defining media preloading preference.
* UIProcess/API/C/WKPreferences.cpp:
(WebKit2::WKPreferences::WKPreferencesSetMediaPreloadingEnabled):
(WebKit2::WKPreferences::WKPreferencesGetMediaPreloadingEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/WebPage/WebPage.cpp: Set runtime enabled feature based on preference.
2017-06-06 Don Olmstead <don.olmstead@am.sony.com>
[WebCore] Enable REQUEST_ANIMATION_FRAME_TIMER for all ports
https://bugs.webkit.org/show_bug.cgi?id=172780
Reviewed by Alex Christensen.
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::scheduleAnimation): Deleted.
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::syncDisplayState):
2017-06-06 Beth Dakin <bdakin@apple.com>
Netflix seeking quirk should also apply to Now Playing, and should always use the
livestream UI
https://bugs.webkit.org/show_bug.cgi?id=173030
-and corresponding-
rdar://problem/32228660
Reviewed by Darin Adler.
See WebCore ChangeLog for more details. We can roll out allowsTouchBarScrubbing()
and rely on supportsSeeking().
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::setAllowsTouchBarScrubbing): Deleted.
(WebKit::WebPlaybackSessionManagerProxy::setAllowsTouchBarScrubbing): Deleted.
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionInterfaceContext::allowsTouchBarScrubbingChanged): Deleted.
(WebKit::WebPlaybackSessionManager::allowsTouchBarScrubbingChanged): Deleted.
2017-06-06 Jer Noble <jer.noble@apple.com>
[Cocoa] Set defaults for mediaContentTypesRequiringHardwareSupport setting
https://bugs.webkit.org/show_bug.cgi?id=173008
Reviewed by Eric Carlson.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
2017-06-06 Joseph Pecoraro <pecoraro@apple.com>
Move Resource Timing / User Timing from experimental features into main preferences
https://bugs.webkit.org/show_bug.cgi?id=172950
Reviewed by Darin Adler.
* Shared/WebPreferencesDefinitions.h:
Move Resource Timing and User Timing out of the Experimental Features section.
2017-06-06 Youenn Fablet <youenn@apple.com>
Add an option to disable getUserMedia prompt in case of mock capture sources
https://bugs.webkit.org/show_bug.cgi?id=172981
<rdar://problem/32580325>
Reviewed by Eric Carlson.
Adding mockCaptureDevicesPromptEnabled option.
Allowing any getUserMedia request if mock is on and prompt is off.
Renaming UserMediaProcessManager::willEnableMediaStreamInPage to muteCaptureMediaStreamsExceptIn.
This eases reading the code.
Making sure that a page for which a new getUserMedia MediaStream will be created is capture-unmuted.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
* UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::muteCaptureMediaStreamsExceptIn):
(WebKit::UserMediaProcessManager::willCreateMediaStream):
* UIProcess/UserMediaProcessManager.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setMuted):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::activateMediaStreamCaptureInPage):
2017-06-06 Carlos Garcia Campos <cgarcia@igalia.com>
[WPE] Enable remote inspector
https://bugs.webkit.org/show_bug.cgi?id=172971
Reviewed by Žan Doberšek.
Initialize the remote inpector if needed.
* UIProcess/wpe/WebProcessPoolWPE.cpp:
(WebKit::initializeRemoteInspectorServer):
(WebKit::WebProcessPool::platformInitialize):
2017-06-06 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] Make remote inspector DBus protocol common to all glib based ports
https://bugs.webkit.org/show_bug.cgi?id=172970
Reviewed by Žan Doberšek.
Use webkit instead of webkitgtk and reomve platform idfeds.
* UIProcess/glib/RemoteInspectorClient.cpp:
2017-06-06 Zan Dobersek <zdobersek@igalia.com>
[WPE] Don't disable Web security preference by default
https://bugs.webkit.org/show_bug.cgi?id=172964
Reviewed by Carlos Garcia Campos.
* UIProcess/API/wpe/WPEView.cpp:
(WKWPE::View::View): Don't disable Web security by default.
2017-06-05 Chris Dumez <cdumez@apple.com>
ASSERTION FAILED: RunLoop::isMain() in com.apple.WebKit: IPC::Connection::sendSyncMessage + 128
https://bugs.webkit.org/show_bug.cgi?id=172943
<rdar://problem/31288058>
Reviewed by Alexey Proskuryakov.
In Connection::sendMessage(), make sure we only ever transform asynchronous messages into synchronous
ones if sendMessage() is called on the main thread. This is necessary because we no longer support
sending synchronous messages from a background thread since r205125.
* Platform/IPC/Connection.cpp:
(IPC::Connection::sendMessage):
(IPC::Connection::sendSyncMessage):
2017-06-05 Joseph Pecoraro <pecoraro@apple.com>
Revert r217405, this headerpad increase is no longer needed.
Rubber-stamped by Dan Bernstein.
* Configurations/BaseXPCService.xcconfig:
2017-06-05 Dan Bernstein <mitz@apple.com>
Tried to fix the build when targrting macOS 10.12 using the macOS 10.13 developer beta SDK.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::mediaPlaybackControlsView):
2017-06-05 Jer Noble <jer.noble@apple.com>
Allow clients to specify a list of codecs which should require hardware decode support.
https://bugs.webkit.org/show_bug.cgi?id=172787
Reviewed by Alex Christensen.
Add a WKWebPageConfiguration (and associated WebPreferences and WKPreferencesRef) properties
allowing clients to require specified codecs have hardware decode support. Also open up the
sandbox on Cocoa ports to services required to check for hardware decode availability.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetMediaCodecsRequiringHardwareSupport):
(WKPreferencesCopyMediaCodecsRequiringHardwareSupport):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _mediaCodecsRequiringHardwareSupport]):
(-[WKWebViewConfiguration _setMediaCodecsRequiringHardwareSupport:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* WebProcess/com.apple.WebProcess.sb.in:
2017-06-05 Beth Dakin <bdakin@apple.com>
Modify Netflix controlsManager quirk to prevent only scrubbing
https://bugs.webkit.org/show_bug.cgi?id=172881
-and corresponding-
rdar://problem/32228660
Reviewed by Andy Estes.
Plumbing for allowsTouchBarScrubbing. See WebCore ChangeLog for more details.
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::setAllowsTouchBarScrubbing):
(WebKit::WebPlaybackSessionManagerProxy::setAllowsTouchBarScrubbing):
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionInterfaceContext::allowsTouchBarScrubbingChanged):
(WebKit::WebPlaybackSessionManager::allowsTouchBarScrubbingChanged):
2017-06-05 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix GTK+ build with OpenGL disabled after r217779.
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged):
2017-06-05 Carlos Garcia Campos <cgarcia@igalia.com>
[WPE] Use AcceleratedDrawingArea instead of its fork
https://bugs.webkit.org/show_bug.cgi?id=172496
Reviewed by Žan Doberšek.
WPE uses its own drawing area implementation, which is actually a fork of AcceleratedDrawingArea, but simplified
for the case of compositing being always forced. AcceleratedDrawingArea already handles the case of compositing
being forced, so now that WPE is upstream we could simply use AcceleratedDrawingArea instead.
* PlatformWPE.cmake:
* Shared/DrawingAreaInfo.h: Remove DrawingAreaTypeWPE type.
* UIProcess/API/wpe/DrawingAreaProxyWPE.cpp: Removed.
* UIProcess/API/wpe/DrawingAreaProxyWPE.h: Removed.
* UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::createDrawingAreaProxy): Create an AcceleratedDrawingAreaProxy.
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged): Moved from DrawingAreaImpl since it actually
belongs here.
* WebProcess/WebPage/DrawingArea.cpp:
(WebKit::DrawingArea::create): Create an AcceleratedDrawingArea for WPE port.
* WebProcess/WebPage/DrawingAreaImpl.cpp: Remove mainFrameContentSizeChanged() that doesn't belong here.
* WebProcess/WebPage/DrawingAreaImpl.h:
* WebProcess/WebPage/wpe/DrawingAreaWPE.cpp: Removed.
* WebProcess/WebPage/wpe/DrawingAreaWPE.h: Removed.
2017-06-03 Simon Fraser <simon.fraser@apple.com>
Sort the project file.
* WebKit2.xcodeproj/project.pbxproj:
2017-06-02 Chris Dumez <cdumez@apple.com>
ResourceLoadStatistics are not using unique paths during test runs
https://bugs.webkit.org/show_bug.cgi?id=172861
<rdar://problem/32442251>
Reviewed by Darin Adler.
Add WKContextConfigurationSetResourceLoadStatisticsDirectory() C API to allow
WKTR to use a custom directory.
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
(API::ProcessPoolConfiguration::ProcessPoolConfiguration):
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCopyResourceLoadStatisticsDirectory):
(WKContextConfigurationSetResourceLoadStatisticsDirectory):
* UIProcess/API/C/WKContextConfigurationRef.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::legacyWebsiteDataStoreConfiguration):
2017-06-02 Brady Eidson <beidson@apple.com>
Prevent scheme handlers from handling all built-in URL schemes.
<rdar://problem/32404790> and https://bugs.webkit.org/show_bug.cgi?id=172869
Reviewed by Andy Estes.
* UIProcess/API/Cocoa/WKWebView.mm:
(+[WKWebView handlesURLScheme:]): Check against WebCore's new master list of URL schemes.
2017-06-02 Simon Fraser <simon.fraser@apple.com>
All scroll peformance logging should happen in the UI process
https://bugs.webkit.org/show_bug.cgi?id=172874
rdar://problem/24474830
Reviewed by Tim Horton.
Printing to stdout from the WebProcess doesn't show up anywhere in non-development builds,
so we have to log from the UI process.
Achieve this by adding a PerformanceLoggingClient to Page which forwards messages to
WebPageProxy, which prints them with the same format they had before. Some plumbing through
PlatformCALayerClient and GraphicsLayerClient is required to get messages from TileControllers
through to something that can get to Page.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::logScrollingEvent):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp: Added.
(WebKit::WebPerformanceLoggingClient::WebPerformanceLoggingClient):
(WebKit::WebPerformanceLoggingClient::logScrollingEvent):
* WebProcess/WebCoreSupport/WebPerformanceLoggingClient.h: Added.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_cpuLimit):
2017-06-02 Chris Dumez <cdumez@apple.com>
REGRESSION (r206386): Xactimate Website Crashes @ com.apple.WebKit: WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant + 255
https://bugs.webkit.org/show_bug.cgi?id=172846
<rdar://problem/31093005>
Reviewed by Mark Lam.
Follow-up to r217695 to deal with exceptions potentially thrown by
NPRuntimeObjectMap::convertJSValueToNPVariant() as well.
* WebProcess/Plugins/Netscape/NPJSObject.cpp:
(WebKit::NPJSObject::invoke):
2017-06-02 Jeremy Jones <jeremyj@apple.com>
Add abilility to specify presentingApplicationPID for a WebProcessPool.
https://bugs.webkit.org/show_bug.cgi?id=172839
rdar://problem/32247170
Reviewed by Tim Horton.
Expose presentingApplicationPID through WebProcessPoolConfiguration.
This allows rehosted WebViews to specify the hosting application.
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration setPresentingApplicationPID:]):
(-[_WKProcessPoolConfiguration presentingApplicationPID]):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::createNewWebProcess):
2017-06-02 Frederic Wang <fwang@igalia.com>
[Mac] Use compositing for frames when ScrollingTreeIncludesFrames=true
https://bugs.webkit.org/show_bug.cgi?id=172851
Reviewed by Simon Fraser.
When fast frame scrolling is supported on mac (bug 171667), scrollable frames will require
special composited layer. This commit enables that on mac but only when
ScrollingTreeIncludesFrames=true, so that the default behavior is unchanged.
* WebProcess/WebCoreSupport/WebChromeClient.h: Make scrollable inner frame trigger
compositing on Mac by default. This is ignored on mac when ScrollingTreeIncludesFrames=false.
Rename ScrollableInnerFrameTrigger to ScrollableNonMainFrameTrigger.
2017-06-02 Zalan Bujtas <zalan@apple.com>
Allow clients to override viewport size for CSS viewport units.
https://bugs.webkit.org/show_bug.cgi?id=172838
<rdar://problem/32523441>
Reviewed by Tim Horton.
This enables auto-sizing clients to ensure that styles relative to the viewport are
resolved to a set value (presumably the size of the container) as opposed to the preferred
document size (which is set as the FrameView size).
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _viewportSizeForCSSViewportUnits]):
(-[WKWebView _setViewportSizeForCSSViewportUnits:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setViewportSizeForCSSViewportUnits):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::viewportSizeForCSSViewportUnits):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_cpuLimit):
(WebKit::WebPage::setViewportSizeForCSSViewportUnits):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::viewportSizeForCSSViewportUnits):
* WebProcess/WebPage/WebPage.messages.in:
2017-06-02 Simon Fraser <simon.fraser@apple.com>
Get <chrono> out of StdLibExtras.h
https://bugs.webkit.org/show_bug.cgi?id=172744
Reviewed by Zalan Bujtas.
Only bring in <chrono> and namespace std::literals::chrono_literals when necessary.
* NetworkProcess/cache/NetworkCache.cpp:
* NetworkProcess/cache/NetworkCacheFileSystem.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::computeRecordWorth):
* Shared/mac/RemoteLayerBackingStoreCollection.mm:
* WebProcess/Cookies/WebCookieManager.h:
2017-06-02 Andy Estes <aestes@apple.com>
[Cocoa] Add a "supportedCountries" property to ApplePayPaymentRequest
https://bugs.webkit.org/show_bug.cgi?id=172832
<rdar://problem/30735544>
Reviewed by Alex Christensen.
* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<PaymentRequest>::encode):
(IPC::ArgumentCoder<PaymentRequest>::decode):
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toNSSet):
(WebKit::toPKPaymentRequest):
2017-06-02 Dan Bernstein <mitz@apple.com>
[Xcode] Header postprocessing should be based on the target OS version rather than the builder OS version
https://bugs.webkit.org/show_bug.cgi?id=172860
Reviewed by Anders Carlsson.
* Configurations/WebKit.xcconfig: Use TARGET_MAC_OS_X_VERSION_MAJOR
2017-06-02 Gwang Yoon Hwang <yoon@igalia.com>
REGRESSION(r217214): [Coordinated Graphics] UpdateAtlas didn't released while resetting testrunner
https://bugs.webkit.org/show_bug.cgi?id=172746
Reviewed by Žan Doberšek.
After clearing update atlases in CompositingCoordinator, we should
release update atlases at the compositing thread, too.
We cannot remove update atlases from the CoordinatedGraphicsScene
without regard to update scheduling, since previously committed scene
states can try to use already released update atlases.
To prevent this timing problem, releasing update atlases should be done
with a update scheduler.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::syncRemoteContent):
(WebKit::CoordinatedGraphicsScene::appendUpdate):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
Use WTF::Function instead of std::function
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::updateSceneState):
(WebKit::ThreadedCompositor::releaseUpdateAtlases):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::ThreadedCompositor::flushPendingLayerChanges):
Release UpdateAtlases at the end of compositing states update, too.
(WebKit::CompositingCoordinator::clearUpdateAtlases):
2017-06-01 Andreas Kling <akling@apple.com>
[Mac] Remove backing store for layers that are outside the viewport
https://bugs.webkit.org/show_bug.cgi?id=170082
<rdar://problem/31245009>
Reviewed by Simon Fraser.
* WebProcess/WebPage/mac/PlatformCALayerRemote.h:
2017-06-01 Chris Dumez <cdumez@apple.com>
REGRESSION (r206386): Xactimate Website Crashes @ com.apple.WebKit: WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant + 255
https://bugs.webkit.org/show_bug.cgi?id=172846
<rdar://problem/31093005>
Reviewed by Andreas Kling.
In NPJSObject::invoke(), return early if there was an exception when calling JSC::call().
Using the value returned by JSC::call() when an exception occurred is unsafe.
* WebProcess/Plugins/Netscape/NPJSObject.cpp:
(WebKit::NPJSObject::invoke):
2017-06-01 Jon Lee <jonlee@apple.com>
Rename an experimental feature item
https://bugs.webkit.org/show_bug.cgi?id=172830
Reviewed by Joseph Pecoraro.
* Shared/WebPreferencesDefinitions.h:
2017-06-01 Andy Estes <aestes@apple.com>
REGRESSION (r217626): ENABLE_APPLE_PAY_SESSION_V3 was disabled by mistake
https://bugs.webkit.org/show_bug.cgi?id=172828
Reviewed by Beth Dakin.
* Configurations/FeatureDefines.xcconfig:
2017-06-01 Chris Dumez <cdumez@apple.com>
[WK2] Update plugin process sandbox profile for flash plugin on HBONow
https://bugs.webkit.org/show_bug.cgi?id=172820
<rdar://problem/32513297>
Reviewed by Brent Fulgham.
Relax the IOKit whitelist to silence sandbox violations by Flash plugin on
HBONow.
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
2017-06-01 Andy Estes <aestes@apple.com>
[Cocoa] Upstream support for JCB as a supported payment network
https://bugs.webkit.org/show_bug.cgi?id=172819
Reviewed by Tim Horton.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toSupportedNetwork):
(WebKit::toAdditionalSupportedNetwork): Deleted.
2017-05-31 Andy Estes <aestes@apple.com>
[Cocoa] "administrativeArea" contact field maps to the wrong CNPostalAddress key when creating NSErrors
https://bugs.webkit.org/show_bug.cgi?id=172784
<rdar://problem/32414416>
Reviewed by Beth Dakin.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toNSError): Used CNPostalAddressStateKey instead of CNPostalAddressCityKey.
2017-05-31 Andy Estes <aestes@apple.com>
Rename ENABLE_APPLE_PAY_DELEGATE to ENABLE_APPLE_PAY_SESSION_V3 and bump the supported version number
https://bugs.webkit.org/show_bug.cgi?id=172366
Reviewed by Daniel Bates.
* Configurations/FeatureDefines.xcconfig:
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::supportsVersion):
2017-05-31 Chris Dumez <cdumez@apple.com>
[WK2] Fix bad assertion in BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck()
https://bugs.webkit.org/show_bug.cgi?id=172763
Reviewed by Zalan Bujtas.
Fix bad assertion in BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck().
It gets hit when a process becomes unresponsive. The reason is that RunLoop::Timer::isActive()
still returns true while the timerFired() callback is called.
* UIProcess/BackgroundProcessResponsivenessTimer.cpp:
(WebKit::BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck):
2017-05-31 Youenn Fablet <youenn@apple.com>
Make WebRTC legacy API switch an experimental feature
https://bugs.webkit.org/show_bug.cgi?id=172760
Reviewed by Eric Carlson.
This patch adds an experimental feature to disable WebRTC legacy API.
We keep the runtime flag as "enable WebRTC legacy API" to minimize the changes and as it is clearer in the code.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebRTCLegacyAPIEnabled):
(WKPreferencesGetWebRTCLegacyAPIEnabled):
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _webRTCLegacyAPIEnabled]):
(-[WKPreferences _setWebRTCLegacyAPIEnabled:]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-05-31 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r217603.
This patch broke the internal builds.
Reverted changeset:
"Get <chrono> out of StdLibExtras.h"
https://bugs.webkit.org/show_bug.cgi?id=172744
http://trac.webkit.org/changeset/217603
2017-05-31 Brent Fulgham <bfulgham@apple.com>
Make ResourceLoadStatistics testing more reliable
https://bugs.webkit.org/show_bug.cgi?id=172730
<rdar://problem/32028373>
Reviewed by Andy Estes.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::notifyPageStatisticsAndDataRecordsProcessed): Add a convenience method to notify the
WebProcess when the UIProcess has finished processing the load statistics data.
* UIProcess/WebProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords): Notify clients (if they requested) when
statistics have been processed.
2017-05-31 Simon Fraser <simon.fraser@apple.com>
Get <chrono> out of StdLibExtras.h
https://bugs.webkit.org/show_bug.cgi?id=172744
Reviewed by Saam Barati.
Only bring in <chrono> and namespace std::literals::chrono_literals when necessary.
* NetworkProcess/cache/NetworkCache.cpp:
* NetworkProcess/cache/NetworkCacheFileSystem.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::computeRecordWorth):
* Shared/mac/RemoteLayerBackingStoreCollection.mm:
* WebProcess/Cookies/WebCookieManager.h:
2017-05-31 Zan Dobersek <zdobersek@igalia.com>
CoordinatedLayerTreeHost: properly support async force repaints
https://bugs.webkit.org/show_bug.cgi?id=172444
Reviewed by Carlos Garcia Campos.
Before these changes the force-repaint callbacks were executed once
the next layer flush was performed. This is not appropriate since
with the threaded compositor this was done even before the flushed
state was handled on the rendering thread.
Instead, the callback should be invoked once the first following
flushed state is rendered through the compositor and the update
finish is reported back to CoordinatedLayerTreeHost through invoking
the renderNextFrame() method.
If the force-repaint callback is registered while a state update is
already being processed by the renderer (i.e. the threaded compositor),
the callback is invoked only after the following flush, which is
executed when renderNextFrame() is called for the current state update.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
Add the forceFrameSync() method that forces the following state flush
to produce a state update that will be handled by the compositor.
This ensures that the compositor informs the CoordinatedLayerTreeHost
once this state update is done, invoking renderNextFrame() which would
handle the force-repaint callback.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::forceRepaintAsync):
(WebKit::CoordinatedLayerTreeHost::renderNextFrame):
(WebKit::CoordinatedLayerTreeHost::layerFlushTimerFired):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
Remove the forceRepaintAsync() override that returned false.
2017-05-31 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix copy-paste error added in r217209.
It seems I pasted twice.
* UIProcess/API/gtk/WebKitContextMenuItem.h:
2017-05-30 Tim Horton <timothy_horton@apple.com>
Keyboard autocorrections do not apply with an active selection (but keyboard acts like they did)
https://bugs.webkit.org/show_bug.cgi?id=172735
<rdar://problem/32015977>
Reviewed by Enrica Casucci.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView applyAutocorrection:toString:withCompletionHandler:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Expose applyAutocorrection on the WKTesting category for use from UIScriptController.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::syncApplyAutocorrection):
If there is a range selection and it precisely matches the autocorrection's "before"
string, allow the autocorrection to take place.
2017-05-30 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: images dragged from Inspector to Desktop are named "Unknown.png"
https://bugs.webkit.org/show_bug.cgi?id=141515
<rdar://problem/9251308>
Reviewed by Wenson Hsieh.
In Web Inspector these images are <img src="..."> with data: or blob:
content. In these cases we have the image data but the URL does not
provide a useful name. In fact the name "Unknown.png" comes from
-[NSURLResponse suggestedFilename] for this URL / content.
To start, improve this situation for drags in Web Inspector pages.
If the image element being dragged has a filename attribute use that
as the suggested filename for the drag.
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteDragImage):
2017-05-30 Ryosuke Niwa <rniwa@webkit.org>
Only include DataDetectorsUI headers in iOS
https://bugs.webkit.org/show_bug.cgi?id=172633
Reviewed by David Kilzer.
Enable data detectors only on iOS and not other variants of iOS.
* Platform/spi/ios/ManagedConfigurationSPI.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _dataDetectionResults]):
* UIProcess/ios/WKActionSheetAssistant.h:
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant showDataDetectorsSheet]):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _actionForLongPressFromPositionInformation:]):
(-[WKContentView _didNotHandleTapAsClick:]):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm:
(-[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleTap):
(WebKit::WebPage::handleTwoFingerTapAtPoint):
(WebKit::WebPage::commitPotentialTap):
2017-05-30 Chris Dumez <cdumez@apple.com>
REGRESSION(r215946): Can't reference a table cell in Google spreadsheet
https://bugs.webkit.org/show_bug.cgi?id=172703
<rdar://problem/32458086>
Reviewed by Ryosuke Niwa.
Fix GObject bindings accordingly.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
(WebKit::kit):
(WebKit::core):
(WebKit::wrapDOMRectList):
(webkit_dom_client_rect_list_constructed):
(webkit_dom_client_rect_list_item):
(webkit_dom_client_rect_list_get_length):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectListPrivate.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
(webkit_dom_element_get_client_rects):
2017-05-30 Daniel Bates <dabates@apple.com>
[WK2] Add runBeforeUnloadConfirmPanel WKUIDelegate SPI; support onbeforeunload confirm panel in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=172603
<rdar://problem/32471306>
Reviewed by Brady Eidson.
A page loaded in MiniBrowser using WebKit2 cannot show a beforeunload confirm panel (by registering
an onbeforeunload event handler) when it is unloaded. The same page loaded in MiniBrowser using
WebKit1 can show such a confirm panel. We need to add WKUIDelegate SPI so that an embedding client,
such as MiniBrowser, can register to receive a callback to show a beforeunload confirm panel.
* UIProcess/API/APIUIClient.h:
(API::UIClient::runBeforeUnloadConfirmPanel): Modified to take a SecurityOriginData object. This
makes the API consistent with the existing JavaScript dialog callbacks.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Add SPI -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView setUIDelegate:]): Set the delegate of WebKit::UIDelegate to the specified WKUIDelegate
before we set the UI client on the page so as to ensure that API::UIClient callbacks that depend
-respondsToSelector: checks (e.g. API::UIClient::canRunBeforeUnloadConfirmPanel()) return the correct
result. To elaborate further, a API::UIClient client must override both canRunBeforeUnloadConfirmPanel()
and runBeforeUnloadConfirmPanel() to support running a beforeunload confirm dialog. When mapping
the Cocoa SPI, WKUIDelegatePrivate, to API::UIClient we implement API::UIClient::canRunBeforeUnloadConfirmPanel()
in terms of whether the Cocoa delegate responds at runtime to the selector -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:.
We need to do such runtime checks before we pass the API::UIClient to the page. Otherwise, querying
API::UIClient::canRunBeforeUnloadConfirmPanel() will return the wrong result.
* UIProcess/API/gtk/WebKitUIClient.cpp: Modified runBeforeUnloadConfirmPanel() to take a SecurityOriginData object.
* UIProcess/Cocoa/UIDelegate.h: Add declarations for API::UIClient overrides: canRunBeforeUnloadConfirmPanel()
and runBeforeUnloadConfirmPanel(). Add a bit to m_delegateMethods as to whether the Cocoa delegate
responds to selector -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:.
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate): Set the above m_delegateMethods bit if the Cocoa delegate responds
to selector -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler:.
(WebKit::UIDelegate::UIClient::canRunBeforeUnloadConfirmPanel): Return whether the above m_delegateMethods
bit was set.
(WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel): Turn around and call -_webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:completionHandler: (if applicable).
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::runBeforeUnloadConfirmPanel): Modified to take a SecurityOriginData object
and pass it to API::UIClient::runBeforeUnloadConfirmPanel().
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in: Add SecurityOriginData argument to message RunBeforeUnloadConfirmPanel.
Also pass the message for the panel as the last argument so as to make the order of arguments to message
RunBeforeUnloadConfirmPanel more closely match the order of arguments passed to other JavaScript dialog
messages (e.g. RunJavaScriptAlert) for consistency.
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::runBeforeUnloadConfirmPanel): Include the SecurityOriginData object for the
frame in message RunBeforeUnloadConfirmPanel.
2017-05-30 Alex Christensen <achristensen@webkit.org>
Update libwebrtc configuration
https://bugs.webkit.org/show_bug.cgi?id=172727
Reviewed by Geoffrey Garen.
* Configurations/FeatureDefines.xcconfig:
2017-05-30 Tim Horton <timothy_horton@apple.com>
Dictionary lookup disappears after a few seconds on observer.com
https://bugs.webkit.org/show_bug.cgi?id=172725
<rdar://problem/32328324>
Reviewed by Beth Dakin.
Only dismiss content-relative child windows on main frame loads,
not all subframes. This was causing e.g. dictionary popovers
relative to main-frame content to be dismissed when subframe
ads finished loading, which is likely the cause of most incidents
of this problem.
If the popover is relative to subframe content and the subframe
navigates out from under the popover, the popover will persist until
dismissed by the user (or one of the other automatic dismissal
mechanisms), but that seems preferable to the old behavior.
* UIProcess/Cocoa/WebViewImpl.h:
Remove an unimplemented and unused declaration.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::processDidExit):
Move dismissContentRelativeChildWindows call here from WebPageProxy.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::didCommitLoadForMainFrame):
(WebKit::PageClientImpl::navigationGestureDidBegin):
(WebKit::PageClientImpl::dismissContentRelativeChildWindows):
Remove dismissContentRelativeChildWindows from PageClient(Impl),
call it from inside PageClientImpl and other Mac-specific places
instead of inside ifdefs in WebPageProxy.
2017-05-30 Konstantin Tokarev <annulen@yandex.ru>
Don't use designated initializers in WebBackForwardListProxy.cpp
https://bugs.webkit.org/show_bug.cgi?id=172667
Reviewed by Alex Christensen.
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::WebBackForwardListProxy::addItemFromUIProcess):
(WebKit::WebBackForwardListProxy::addItem):
2017-05-30 Antti Koivisto <antti@apple.com>
REGRESSION(r191402?): Safari, Mail crash at com.apple.WebKit: WebKit::WebContextMenuListenerProxy::invalidate + 4
https://bugs.webkit.org/show_bug.cgi?id=172704
Reviewed by Andreas Kling.
r191402 made WebContextMenuProxy non-refcounted. However there are several potential ways for WebContextMenuProxyMac::show()
to re-enter WebPageProxy and delete itself. This patch partially reverts r191402 bringing refcounting back and protects
WebContextMenuProxy during show().
Speculative fix. No test, can't repro the crash.
* UIProcess/PageClient.h:
* UIProcess/WebContextMenuProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::internalShowContextMenu):
Protect WebContextMenuProxy during show().
* UIProcess/WebPageProxy.h:
* UIProcess/gtk/WebContextMenuProxyGtk.h:
(WebKit::WebContextMenuProxyGtk::create):
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/mac/WebContextMenuProxyMac.h:
(WebKit::WebContextMenuProxyMac::create):
2017-05-30 Zan Dobersek <zdobersek@igalia.com>
Invalidate the LayerTreeHost when destroying the DrawingAreaWPE object.
Rubber-stamped by Carlos Garcia Campos.
* WebProcess/WebPage/wpe/DrawingAreaWPE.cpp:
(WebKit::DrawingAreaWPE::~DrawingAreaWPE): Invalidate the LayerTreeHost
object, properly deconstructing the graphics pipeline.
2017-05-29 Claudio Saavedra <csaavedra@igalia.com>
[GTK] Remove unneeded forward declaration
Rubber-stamped by Zan Dobersek.
* UIProcess/API/C/gtk/WKAPICastGtk.h: Remove WebGrammarDetail as
its header is included in the same file.
2017-05-29 Claudio Saavedra <csaavedra@igalia.com>
[WPE] Build fix after r217531
Unreviewed.
* UIProcess/API/C/wpe/WKAPICastWPE.h:
(WebKit::toAPI): Add missing WebGrammarDetail API cast.
2017-05-28 Dan Bernstein <mitz@apple.com>
[Xcode] ALWAYS_SEARCH_USER_PATHS is set to YES
https://bugs.webkit.org/show_bug.cgi?id=172691
Reviewed by Tim Horton.
* Configurations/Base.xcconfig: Set ALWAYS_SEARCH_USER_PATHS to NO.
* UIProcess/API/C/WKAPICast.h: Moved GTK-only definitions that used WebGrammarDetail.h to
WKAPICastGtk.h. This had the effect of no longer including APIArray.h from this header.
* UIProcess/API/C/gtk/WKAPICastGtk.h: Moved GTK-only definitions to here.
(WebKit::toAPI):
* UIProcess/WebGrammarDetail.h: Replaced include of APIArray.h with a forward declaration.
* Shared/API/c/WKRenderLayer.cpp:
* Shared/API/c/WKRenderObject.cpp:
* UIProcess/API/C/WKApplicationCacheManager.cpp:
* UIProcess/API/C/WKContext.cpp:
* UIProcess/API/C/WKContextConfigurationRef.cpp:
* UIProcess/API/C/WKCookieManager.cpp:
* UIProcess/API/C/WKKeyValueStorageManager.cpp:
* UIProcess/API/C/WKNotificationManager.cpp:
* UIProcess/API/C/WKOpenPanelResultListener.cpp:
* UIProcess/API/C/WKPageGroup.cpp:
* UIProcess/API/C/WKResourceCacheManager.cpp:
* UIProcess/API/C/WKUserContentControllerRef.cpp:
* UIProcess/API/gtk/WebKitBackForwardList.cpp:
* UIProcess/WebContextMenuListenerProxy.cpp:
Added #include "APIArray.h" to these files now that WKAPICast.h does not include it.
2017-05-26 Joseph Pecoraro <pecoraro@apple.com>
Simply some NSNumber usage
https://bugs.webkit.org/show_bug.cgi?id=172677
Reviewed by Sam Weinig.
* PluginProcess/mac/PluginControllerProxyMac.mm:
(WebKit::PluginControllerProxy::platformGeometryDidChange):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::registerUserDefaultsIfNeeded):
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):
2017-05-26 Brent Fulgham <bfulgham@apple.com>
[WK2] Address thread safety issues with ResourceLoadStatistics
https://bugs.webkit.org/show_bug.cgi?id=172519
<rdar://problem/31707642>
Reviewed by Chris Dumez.
Address some thread safety issues with the ResourceLoadStatistics architecture.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords): Assert that this is never called on the main thread. Also
ensure that coreStore is only accessed on the statistics queue, not the main thread.
(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords): Dispatch coreStore-accessing code
on the statistics queue.
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated): Assert we do not hit this method
on the main thread.
(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver): Assert that this is being called on the
main thread. Also ensure that coreStore is only accessed on the statistics queue, not the main thread.
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData): Dispatch coreStore-accessing code
on the statistics queue.
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded): Lock data before operating on it.
(WebKit::WebResourceLoadStatisticsStore::writeStoreToDisk): Assert we do not hit this method on the main thread.
(WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk): Ditto.
* UIProcess/WebResourceLoadStatisticsStore.h:
* WebProcess/WebProcess.cpp: Add a queue for the local WebProcess ResourceLoadStatisticsStore to use while processing data.
(WebKit::m_statisticsQueue): Added.
* WebProcess/WebProcess.h:
2017-05-26 Joseph Pecoraro <pecoraro@apple.com>
[Cocoa] Simplify some WebViewImpl pasteboard code
https://bugs.webkit.org/show_bug.cgi?id=172668
Reviewed by Tim Horton.
* Shared/mac/PasteboardTypes.mm:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setFileAndURLTypes):
(WebKit::WebViewImpl::setPromisedDataForAttachment):
2017-05-26 Joseph Pecoraro <pecoraro@apple.com>
JSContext Inspector: Improve the reliability of automatically pausing in auto-attach
https://bugs.webkit.org/show_bug.cgi?id=172664
<rdar://problem/32362933>
Reviewed by Matt Baker.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::connect):
* UIProcess/Automation/WebAutomationSession.h:
Special connection options are ignored in automation sessions.
2017-05-26 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r217479.
https://bugs.webkit.org/show_bug.cgi?id=172642
Exposes an underlying bug in WPEBackend-mesa that we have to
resolve separately (Requested by zdobersek on #webkit).
Reverted changeset:
"[WPE] Use AcceleratedDrawingArea instead of its fork"
https://bugs.webkit.org/show_bug.cgi?id=172496
http://trac.webkit.org/changeset/217479
2017-05-26 Csaba Osztrogonác <ossy@webkit.org>
Unreviewed Mac cmake buildfix after r217137, just for fun.
https://bugs.webkit.org/show_bug.cgi?id=172362
* PlatformMac.cmake:
2017-05-26 Carlos Garcia Campos <cgarcia@igalia.com>
[WPE] Use AcceleratedDrawingArea instead of its fork
https://bugs.webkit.org/show_bug.cgi?id=172496
Reviewed by Žan Doberšek.
WPE uses its own drawing area implementation, which is actually a fork of AcceleratedDrawingArea, but simplified
for the case of compositing being always forced. AcceleratedDrawingArea already handles the case of compositing
being forced, so now that WPE is upstream we could simply use AcceleratedDrawingArea instead.
* PlatformWPE.cmake:
* Shared/DrawingAreaInfo.h: Remove DrawingAreaTypeWPE type.
* UIProcess/API/wpe/DrawingAreaProxyWPE.cpp: Removed.
* UIProcess/API/wpe/DrawingAreaProxyWPE.h: Removed.
* UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::createDrawingAreaProxy): Create an AcceleratedDrawingAreaProxy.
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::mainFrameContentSizeChanged): Moved from DrawingAreaImpl since it actually
belongs here.
* WebProcess/WebPage/DrawingArea.cpp:
(WebKit::DrawingArea::create): Create an AcceleratedDrawingArea for WPE port.
* WebProcess/WebPage/DrawingAreaImpl.cpp: Remove mainFrameContentSizeChanged() that doesn't belong here.
* WebProcess/WebPage/DrawingAreaImpl.h:
* WebProcess/WebPage/wpe/DrawingAreaWPE.cpp: Removed.
* WebProcess/WebPage/wpe/DrawingAreaWPE.h: Removed.
2017-05-25 Said Abou-Hallawa <sabouhallawa@apple.com>
[iOS] Disbale async image decoding when synchronously painting a newly parented WebView
https://bugs.webkit.org/show_bug.cgi?id=172626
Reviewed by Simon Fraser.
Large images have to be synchronously decoded when bringing a WebView to
the foreground because the whole page will be painted when we unblock the
UI process.
* Shared/mac/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::drawInContext): Get nextFlushIsForImmediatePaint
from RemoteLayerTreeContext and pass the correct GraphicsLayerPaintFlags
to drawLayerContents().
* WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
(WebKit::RemoteLayerTreeContext::setNextFlushIsForImmediatePaint):
(WebKit::RemoteLayerTreeContext::nextFlushIsForImmediatePaint):
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::flushLayers): Pass
m_nextFlushIsForImmediatePaint to RemoteLayerTreeContext and then reset it.
(WebKit::RemoteLayerTreeDrawingArea::activityStateDidChange):
Set m_nextFlushIsForImmediatePaint to true to say that in the next flush,
large images have to be synchronously decoded.
2017-05-25 Joseph Pecoraro <pecoraro@apple.com>
_WKUserStyleSheet and WKUserScript leak string data
https://bugs.webkit.org/show_bug.cgi?id=172583
<rdar://problem/32395209>
Reviewed by Sam Weinig.
* UIProcess/API/Cocoa/WKUserScript.mm:
(-[WKUserScript dealloc]):
* UIProcess/API/Cocoa/_WKUserStyleSheet.mm:
(-[_WKUserStyleSheet dealloc]):
Follow the pattern of destructing the internal API object.
* UIProcess/API/Cocoa/WKUserScriptInternal.h:
* UIProcess/API/Cocoa/_WKUserStyleSheetInternal.h:
Remove unnecessary includes.
2017-05-25 Chris Dumez <cdumez@apple.com>
ASSERT(m_websiteDataStore->websiteDataStore().sessionID() == m_sessionID) in PageConfiguration::sessionID()
https://bugs.webkit.org/show_bug.cgi?id=172615
<rdar://problem/32277488>
Reviewed by Brady Eidson.
Fix assertion added in r215923 to take into account the fact that the PageConfiguration's sessionID
is SessionID::legacyPrivateSessionID() when private browsing is enabled, instead of being the
WebsiteDataStore's sessionID.
See code in WebProcessPool::createWebPage():
"""
pageConfiguration->setSessionID(pageConfiguration->preferences()->privateBrowsingEnabled() ? SessionID::legacyPrivateSessionID() : m_websiteDataStore->websiteDataStore().sessionID());
"""
* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::sessionID):
2017-05-25 Brent Fulgham <bfulgham@apple.com>
[WK2][iOS] Add a mach-lookup exception for 'com.apple.lsd.mapdb' to Network sandbox
https://bugs.webkit.org/show_bug.cgi?id=172465
<rdar://problem/32332836>
Reviewed by Alex Christensen.
Expand sandbox to allow lookup of the mapdb that contains UTI information used
by the Network process.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
2017-05-25 Youenn Fablet <youenn@apple.com>
com.apple.coremedia.videoencoder XPC service should be allowed by WebProcess sandbox
https://bugs.webkit.org/show_bug.cgi?id=172599
Reviewed by Alex Christensen.
* WebProcess/com.apple.WebProcess.sb.in:
2017-05-25 Simon Fraser <simon.fraser@apple.com>
[iOS WK2] Avoid setting contentsScale and rasterizationScale on CATransformLayers
https://bugs.webkit.org/show_bug.cgi?id=172569
Reviewed by Dean Jackson.
Setting contentsScale and rasterizationScale on CATransformLayers is a waste of CPU time,
and triggers unwanted logging, so don't do it.
* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::PlatformCALayerRemote):
2017-05-25 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r217409.
The revision caused api failures
Reverted changeset:
"_WKUserStyleSheet leaks string data"
https://bugs.webkit.org/show_bug.cgi?id=172583
http://trac.webkit.org/changeset/217409
2017-05-25 Joseph Pecoraro <pecoraro@apple.com>
_WKUserStyleSheet leaks string data
https://bugs.webkit.org/show_bug.cgi?id=172583
<rdar://problem/32395209>
Reviewed by Dan Bernstein.
* UIProcess/API/Cocoa/_WKUserStyleSheet.mm:
(-[_WKUserStyleSheet dealloc]):
2017-05-24 Joseph Pecoraro <pecoraro@apple.com>
Increase the headerpad for WebKit XPC Services
https://bugs.webkit.org/show_bug.cgi?id=172571
Reviewed by Dan Bernstein.
* Configurations/BaseXPCService.xcconfig:
Increase the headerpad to make room for additional dyld commands.
2017-05-24 David Keijser <keijser@gmail.com>
[GTK] Provide details on javascript exception
https://bugs.webkit.org/show_bug.cgi?id=161187
Reviewed by Carlos Garcia Campos.
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewRunJavaScriptCallback):
(webkit_web_view_run_javascript):
(resourcesStreamReadCallback):
2017-05-24 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, suppress deprecation warnings to fix the build.
* Shared/mac/ColorSpaceData.mm:
(WebKit::ColorSpaceData::decode):
2017-05-24 Wenson Hsieh <wenson_hsieh@apple.com>
Plumb additional image metadata to item providers when beginning data interaction on an image
https://bugs.webkit.org/show_bug.cgi?id=172536
<rdar://problem/32371300>
Reviewed by Beth Dakin.
Boilerplate plumbing to send suggestedName over IPC.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PasteboardImage>::encode):
(IPC::ArgumentCoder<PasteboardImage>::decode):
2017-05-24 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Remove workaround to disable zooming to the focus rect while performing a data interaction
https://bugs.webkit.org/show_bug.cgi?id=172546
Reviewed by Beth Dakin.
Removes a now-unnecessary workaround to prevent scrolling when performing a data interaction operation in
editable content.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _displayFormNodeInputView]):
2017-05-24 John Wilander <wilander@apple.com>
Resource Load Statistics: Change grandfathering default to one hour
https://bugs.webkit.org/show_bug.cgi?id=172524
<rdar://problem/32360462>
Reviewed by Brent Fulgham.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/WebResourceLoadStatisticsManager.cpp:
(WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
2017-05-24 Jer Noble <jer.noble@apple.com>
Rename DisplaySleepDisabler -> SleepDisabler
https://bugs.webkit.org/show_bug.cgi?id=172478
Reviewed by Sam Weinig.
* UIProcess/mac/WKFullScreenWindowController.h:
* UIProcess/mac/WKFullScreenWindowController.mm:
2017-05-23 John Wilander <wilander@apple.com>
Resource Load Statistics: Don't include HSTS cache data in website data removal
https://bugs.webkit.org/show_bug.cgi?id=172525
<rdar://problem/32332704>
Reviewed by Brent Fulgham.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::initializeDataTypesToRemove):
2017-05-15 Matt Rajca <mrajca@apple.com>
Replace autoplay events that fire at navigation with a DidAutoplayMediaPastThreshold event.
https://bugs.webkit.org/show_bug.cgi?id=172138
Reviewed by Alex Christensen.
Updated auto-play event types.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/C/WKPageUIClient.h:
2017-05-23 Chris Dumez <cdumez@apple.com>
ASSERT(!m_timeoutTimer.isActive()) hit in BackgroundProcessResponsivenessTimer::responsivenessCheckTimerFired()
https://bugs.webkit.org/show_bug.cgi?id=172509
<rdar://problem/32251578>
Reviewed by Geoffrey Garen.
In the BackgroundProcessResponsivenessTimer class, we have 2 timers:
- m_responsivenessCheckTimer that causes us to do an IPC handshake with
the WebProcess.
- m_timeoutTimer that is started when we send the IPC message to the
WebProcess and which is stopped when we get the response from the
WebProcess. If we do not get the response by the time m_timeoutTimer
fires, then we mark the process as unresponsive.
As a result, of the behavior above, whenever the BackgroundProcessResponsivenessTimer
is considered "active", there should be one of the 2 timers above that
is active, and only one.
The assertion hit showed that we decided to start the m_responsivenessCheckTimer
timer even though the m_timeoutTimer timer is still active (we are still waiting
for an IPC message from the WebProcess and the process is not considered
unresponsive yet), which is wrong. The reason was that in
BackgroundProcessResponsivenessTimer::updateState(), if we should be active,
we would start the m_responsivenessCheckTimer if m_responsivenessCheckTimer is
not already active, without checking if m_timeoutTimer is active. So if
updateState() was called while the IPC handshake was in process, we would have
both timers running at the same time.
* UIProcess/BackgroundProcessResponsivenessTimer.cpp:
(WebKit::BackgroundProcessResponsivenessTimer::updateState):
(WebKit::BackgroundProcessResponsivenessTimer::isActive):
* UIProcess/BackgroundProcessResponsivenessTimer.h:
2017-05-22 Simon Fraser <simon.fraser@apple.com>
Snapshotting via -renderInContext: should do synchronous image decodes
https://bugs.webkit.org/show_bug.cgi?id=172485
rdar://problem/32276146
Reviewed by Tim Horton.
Pass the PaintBehaviorSnapshotting flag in functions that do snapshotting.
* Shared/mac/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::drawInContext):
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
(WebKit::imageForRect):
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
(WebKit::InjectedBundleRangeHandle::renderedImage):
2017-05-23 Myles C. Maxfield <mmaxfield@apple.com>
Remove dead ENABLE(FONT_LOAD_EVENTS) code
https://bugs.webkit.org/show_bug.cgi?id=172517
Rubber-stamped by Simon Fraser.
* Configurations/FeatureDefines.xcconfig:
2017-05-23 Tim Horton <timothy_horton@apple.com>
Zoom in/out is slow in Safari with large PDFs
https://bugs.webkit.org/show_bug.cgi?id=172495
<rdar://problem/32338631>
Reviewed by Simon Fraser.
No tests; just a performance improvement.
* WebProcess/Plugins/PDF/PDFPlugin.h:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::computePageBoxes):
Use PDFKit instead of CGPDF to compute the first page box, so we can take
advantage of PDFKit optimizations. PDFKit also handles box fallback,
so we don't need to do that ourselves. Stop fetching all the boxes, as
we only seem to use the first one.
2017-05-23 Tim Horton <timothy_horton@apple.com>
REGRESSION: API test WebKit2.WKObject is failing
https://bugs.webkit.org/show_bug.cgi?id=172497
<rdar://problem/31694641>
Reviewed by Geoff Garen.
* Shared/Cocoa/WKNSString.mm:
(-[WKNSString superclass]):
(-[WKNSString class]):
Pretend to be NSString instead of the more specific subclass (__NSCFString)
that we actually are. There is code underneath us that assumes that if
-class returns __NSCFString, that the object is a CFStringRef, which is
not true in our case.
2017-05-23 Brent Fulgham <bfulgham@apple.com>
[WK2][iOS] Add a mach-lookup exception for 'com.apple.analyticsd'
https://bugs.webkit.org/show_bug.cgi?id=172462
<rdar://problem/32331638>
Reviewed by Alexey Proskuryakov.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb:
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2017-05-22 Brent Fulgham <bfulgham@apple.com>
[WK2][iOS] Adopt a whitelist for XPC services
https://bugs.webkit.org/show_bug.cgi?id=172182
<rdar://problem/30669445>
Reviewed by Sam Weinig.
Tell the Sandbox to block all XPC connections that are not explicitly allowed by
the sandbox profile. The default behavior is to allow everything by default.
If the restriction is set before including the standard iOS sandbox profiles, there
does not seem to be a need to white list any other services.
General web browsing on multiple devices indicate that these sandbox profiles work
properly with media, accessibility, webgl, and general web content.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb:
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2017-05-23 Emilio Cobos Álvarez <ecobos@igalia.com>
Add a RuntimeEnabledFeature for display: contents, defaulted to false.
https://bugs.webkit.org/show_bug.cgi?id=171984
Reviewed by Antti Koivisto.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetDisplayContentsEnabled):
(WKPreferencesGetDisplayContentsEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-05-20 Alex Christensen <achristensen@webkit.org>
REGRESSION(r215686): O(n^2) algorithm in CachedRawResource::addDataBuffer
https://bugs.webkit.org/show_bug.cgi?id=172406
<rdar://32109532>
Reviewed by Brady Eidson.
* Platform/IPC/DataReference.cpp:
(IPC::SharedBufferDataReference::encode):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::redeliverManualStream):
2017-05-22 Yongjun Zhang <yongjun_zhang@apple.com>
Need a way to allow WKWebView to load request with ShouldOpenExternalURLsPolicy::ShouldAllow.
https://bugs.webkit.org/show_bug.cgi?id=172460
Add an new method [WKWebView _loadRequest:shouldOpenExternalURLs:] to WKWebView; a WebKit client
can use this to load request that allows opening external URLs.
Reviewed by Tim Horton.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _loadRequest:shouldOpenExternalURLs:]): When calling WebPageProxy::loadRequest, also
set ShouldOpenExternalURLsPolicy based on the value of shouldOpenExternalURLs.
* UIProcess/API/Cocoa/WKWebViewPrivate.h: Add [WKWebView _loadRequest:shouldOpenExternalURLs:].
2017-05-22 Youenn Fablet <youenn@apple.com>
Remove AVAudioCaptureSource
https://bugs.webkit.org/show_bug.cgi?id=172360
Reviewed by Sam Weinig.
Removing the handling of AVAudio/CoreAudio capture source dynamic switch.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetUseAVFoundationAudioCapture): Deleted.
(WKPreferencesGetUseAVFoundationAudioCapture): Deleted.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-05-22 Brian Burg <bburg@apple.com>
Web Automation: characters produced with shift modifier on QWERTY keyboard should be delivered as shift-down, char-down, char-up, shift-up events
https://bugs.webkit.org/show_bug.cgi?id=172299
<rdar://problem/32277988>
Reviewed by Joseph Pecoraro.
WebDriver tests expect some ASCII characters to be produced using the shift key,
regardless of the actual keyboard layout. Emit extra events when simulating these
keystrokes if the shift key is not already pressed.
* UIProcess/Automation/mac/WebAutomationSessionMac.mm:
(WebKit::characterIsProducedUsingShift):
(WebKit::WebAutomationSession::platformSimulateKeySequence):
2017-05-22 Sam Weinig <sam@webkit.org>
[WebIDL] Support callbacks with arbitrary return types
https://bugs.webkit.org/show_bug.cgi?id=172407
Reviewed by Chris Dumez.
* WebProcess/InjectedBundle/API/gtk/DOM/GObjectNodeFilterCondition.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/GObjectNodeFilterCondition.h:
Update to match new interface of NodeFilterCondition.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.cpp:
Update to account for new WebCore implementation return types.
2017-05-22 Michael Catanzaro <mcatanzaro@igalia.com>
-Wreturn-type warning triggered by WKPage.cpp:2277
https://bugs.webkit.org/show_bug.cgi?id=171866
Reviewed by Žan Doberšek.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
2017-05-22 Michael Catanzaro <mcatanzaro@igalia.com>
-Wreturn-type warning triggered by WebAutomationSession.cpp:851
https://bugs.webkit.org/show_bug.cgi?id=171867
Reviewed by Žan Doberšek.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::protocolModifierToWebEventModifier):
2017-05-22 Wenson Hsieh <wenson_hsieh@apple.com>
Remove unused documentIsHandlingNonDefaultDrag plumbing for WebKit2
https://bugs.webkit.org/show_bug.cgi?id=172453
Reviewed by Tim Horton.
Removes unused plumbing that was originally added to support file uploads.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didPerformDragControllerAction):
(WebKit::WebPageProxy::resetCurrentDragInformation):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::currentDragCaretRect):
(WebKit::WebPageProxy::documentIsHandlingNonDefaultDrag): Deleted.
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::performDragControllerAction):
2017-05-22 Michael Catanzaro <mcatanzaro@igalia.com>
Add even more input validation in Connection::processMessage()
https://bugs.webkit.org/show_bug.cgi?id=171682
Reviewed by Carlos Garcia Campos.
Verify that the size of the out-of-line message body matches the size of the AttachmentInfo
that is containing it.
* Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::processMessage):
2017-05-22 Tomas Popela <tpopela@redhat.com>
Remove some of the EFL port leftovers
https://bugs.webkit.org/show_bug.cgi?id=172440
Reviewed by Carlos Garcia Campos.
* Scripts/generate-forwarding-headers.pl:
2017-05-22 Gwang Yoon Hwang <yoon@igalia.com>
[CoordinatedGraphics] Clear UpdateAtlases for each tests
https://bugs.webkit.org/show_bug.cgi?id=172119
Reviewed by Carlos Garcia Campos.
In Coordinated Graphics, we reuses at least one update atlas to
render root compositing layer for several tests. So if one of the
test cases breaks the internal states of Cairo's states, other
followed test cases runs on same instance of WebKitTestRunner will
be effected by broken states of Cairo. Because it increases test
flaknesses, we should drop update atlases after each tests.
* WebProcess/WebCoreSupport/WebChromeClient.cpp: Remove a redundant
include statement for Coordinated graphics
(WebKit::WebChromeClient::resetUpdateAtlasForTesting): Added.
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::resetUpdateAtlasForTesting): Added.
* WebProcess/WebPage/AcceleratedDrawingArea.h:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::clearUpdateAtlases): Added.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::clearUpdateAtlases): Added.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
* WebProcess/WebPage/DrawingArea.h:
* WebProcess/WebPage/LayerTreeHost.h:
* WebProcess/WebPage/wpe/DrawingAreaWPE.cpp:
(WebKit::DrawingAreaWPE::resetUpdateAtlasForTesting):
* WebProcess/WebPage/wpe/DrawingAreaWPE.h:
2017-05-22 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.3 release.
* gtk/NEWS: Add release notes for 2.17.3.
2017-05-22 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Add webkit_context_menu_item_new_from_gaction
https://bugs.webkit.org/show_bug.cgi?id=159631
Reviewed by Michael Catanzaro.
Add new API to create a WebKitContextMenuItem from a GAction and also to get the associated GAction.
* Shared/gtk/WebContextMenuItemGtk.cpp:
(WebKit::WebContextMenuItemGtk::WebContextMenuItemGtk): Add constructor that receives a GAction.
(WebKit::isGActionChecked): Helper to check if a stateful GAction is checked or not.
(WebKit::WebContextMenuItemGtk::createActionIfNeeded): When creating a GAction from a GtkAtion, use the
GtkAction name instead of adding a new one. Do not create the GAction if we already have one.
* Shared/gtk/WebContextMenuItemGtk.h:
(WebKit::WebContextMenuItemGtk::gAction):
(WebKit::WebContextMenuItemGtk::gActionTarget):
* UIProcess/API/gtk/WebKitContextMenuItem.cpp:
(webkit_context_menu_item_new_from_gaction):
(webkit_context_menu_item_get_gaction):
* UIProcess/API/gtk/WebKitContextMenuItem.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols.
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::contextMenuItemActivatedCallback): Update the state of the internal GAction in case of toggle menu items.
(WebKit::WebContextMenuProxyGtk::append): Pass the GAction target to g_menu_item_set_action_and_target_value. Do
not connect to activate signal of actions provided by the user.
2017-05-21 Carlos Garcia Campos <cgarcia@igalia.com>
Add more input validation in Connection::readBytesFromSocket()
https://bugs.webkit.org/show_bug.cgi?id=171871
Reviewed by Michael Catanzaro.
Check the control message length is in the limits. Credit to Nathan Crandall for reporting this issue and
submitting an equivalent fix.
* Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::readBytesFromSocket):
2017-05-20 Michael Catanzaro <mcatanzaro@igalia.com>
-Wreturn-type warning triggered by WKNotification.cpp:77
https://bugs.webkit.org/show_bug.cgi?id=172414
Reviewed by Sam Weinig.
* UIProcess/API/C/WKNotification.cpp:
(WKNotificationCopyDir):
2017-05-19 John Wilander <wilander@apple.com>
Resource Load Statistics: Use WebProcessPool::allProcessPools() when sending message to network process about partitioning
https://bugs.webkit.org/show_bug.cgi?id=172370
<rdar://problem/32288012>
Reviewed by Alex Christensen.
The existing test case
http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html
is currently failing and should start passing again with this patch.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
2017-05-19 Chris Dumez <cdumez@apple.com>
[WK2] Notify client when a process exceeds background CPU limit while in the foreground
https://bugs.webkit.org/show_bug.cgi?id=172246
<rdar://problem/32235411>
Reviewed by Geoffrey Garen.
When there is a background CPU limit set by the client, we now monitor the CPU
usages of all WebContent processes, not just the non-visible ones. This way, we
are now able to notify the client a process has exceeded the background CPU
limit while in the foreground, via the UIClient's didExceedBackgroundResourceLimitWhileInForeground
function, passing kWKResourceLimitCPU.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::copy):
* UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::cpuLimit):
(API::PageConfiguration::setCPULimit):
* UIProcess/API/C/WKPageConfigurationRef.cpp:
(WKPageConfigurationSetBackgroundCPULimit):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateThrottleState):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::didExceedInactiveMemoryLimitWhileActive):
(WebKit::WebPageProxy::didExceedBackgroundCPULimitWhileInForeground):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didExceedCPULimit):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_cpuLimit):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::cpuLimit):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::createWebPage):
(WebKit::WebProcess::removeWebPage):
(WebKit::WebProcess::updateCPULimit):
(WebKit::WebProcess::updateCPUMonitorState):
(WebKit::WebProcess::pageActivityStateDidChange):
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::updateCPULimit):
(WebKit::WebProcess::updateCPUMonitorState):
2017-05-19 Jeremy Jones <jeremyj@apple.com>
Remove defunct WebVideoFullscreenInterface
https://bugs.webkit.org/show_bug.cgi?id=172254
Reviewed by Jon Lee.
Remove reference to WebVideoFullscreenInterface. It has long since been replaced by
WebVideoFullscreenModelClient.
* WebProcess/cocoa/WebVideoFullscreenManager.h:
2017-05-19 Jeremy Jones <jeremyj@apple.com>
[WebRTC] Remove PiP support for video elements that are showing camera capture
https://bugs.webkit.org/show_bug.cgi?id=172336
Reviewed by Eric Carlson.
Ask video element if it supports picture-in-picture instead of asking the mediaSession directly.
This allows the video element to give a more robust answer.
* WebProcess/cocoa/WebVideoFullscreenManager.mm:
(WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement):
2017-05-19 Chris Dumez <cdumez@apple.com>
Make sure implementation of InitializeWebKit2() always run on the main thread
https://bugs.webkit.org/show_bug.cgi?id=172362
<rdar://problem/32295678>
Reviewed by Geoffrey Garen.
Add logic in InitializeWebKit2() for Cocoa ports to always run the initialization code
is only called once, and on the main thread. If we are called from a non-main thread,
we will dispatch synchronously to the main thread to run the initialization code.
This is needed because WebKit2Initialize() is called from the API::Object constructor.
API::Object is thread-safe RefCounted and those objects are sometimes initialized on
non-main thread. If the first of such objects happened to be initialized on a non-main
thread, then we would run the initialization code for the first time on a non-main
thread. This would lead to hard to debug issues because code such as
RunLoop::initializeMainRunLoop() is only safe to call on the main thread because it
stores a pointer to the current thread's RunLoop in a static variable for later use
(i.e. for RunLoop::main()).
* Shared/Cocoa/WebKit2InitializeCocoa.mm: Copied from Source/WebKit2/Shared/WebKit2Initialize.cpp.
(WebKit::runInitializationCode):
(WebKit::InitializeWebKit2):
* Shared/WebKit2Initialize.cpp:
(WebKit::InitializeWebKit2):
* WebKit2.xcodeproj/project.pbxproj:
2017-05-19 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r216977): [GTK] Ephemeral sessions broken after r216977
https://bugs.webkit.org/show_bug.cgi?id=172345
Reviewed by Michael Catanzaro.
Since r216977, WebProcessPool sends the page session ID to the web process, but the WebsiteDataStoreParameters
session ID to the network process. WebsiteDataStoreParameters is only implemented for Cocoa, so we are sending 0
session ID to the network process, while using the right session ID everywhere else.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::pageAddedToProcess): Add an ASSERT to ensure we are sending the same session ID to Web
and Network processes.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::parameters): Add minimal implementation for non-Cocoa ports to at least set the
session ID.
2017-05-19 Carlos Garcia Campos <cgarcia@igalia.com>
Add more input validation in Connection::processMessage()
https://bugs.webkit.org/show_bug.cgi?id=171682
Reviewed by Michael Catanzaro.
Check limits of attachments and message size. Credit to Nathan Crandall for reporting this issue and submitting
an equivalent fix.
* Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::processMessage):
2017-05-19 Carlos Garcia Campos <cgarcia@igalia.com>
[Threaded Compositor] Remove platform ifdefs from threaded compositor implementation
https://bugs.webkit.org/show_bug.cgi?id=172265
Reviewed by Žan Doberšek.
Add AcceleratedSurfaceWPE implementation that is equivalent to the PlatformDisplayWPE::EGLTarget. Since WPE needs the
surface to be initialized/finalized in the compositing thread, two new virtual methods has been added to
AcceleratedSurface initialize/finalize that are only implemented by WPE. The threaded compositor no longer
receives a native surface handle as contructor parameter, it now asks the client for it from the compositing
thread, right after it's created.
* PlatformWPE.cmake:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::create): Remove ativeSurfaceHandle parameter.
(WebKit::ThreadedCompositor::ThreadedCompositor): Initialize m_nativeSurfaceHandle from the compositing thread
asking the client for it.
(WebKit::ThreadedCompositor::createGLContext): Remove the WPE implementation.
(WebKit::ThreadedCompositor::invalidate): Notify the client that the GL context has been destroyed.
(WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): Remove GTK ifdefs.
(WebKit::ThreadedCompositor::setViewportSize): Remove WPE implementation.
(WebKit::ThreadedCompositor::renderLayerTree): Notify the client the frame will be rendered, and when it has
been rendered.
(WebKit::ThreadedCompositor::frameComplete): Remove WPE ifdefs.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* WebProcess/WebPage/AcceleratedSurface.cpp:
(WebKit::AcceleratedSurface::create): Add client parameter.
(WebKit::AcceleratedSurface::AcceleratedSurface): Create a AcceleratedSurfaceWPE if display is WPE.
* WebProcess/WebPage/AcceleratedSurface.h:
(WebKit::AcceleratedSurface::surfaceID):
(WebKit::AcceleratedSurface::initialize):
(WebKit::AcceleratedSurface::finalize):
(WebKit::AcceleratedSurface::willRenderFrame):
(WebKit::AcceleratedSurface::didRenderFrame):
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost): Pass this as client of AcceleratedSurface.
(WebKit::ThreadedCoordinatedLayerTreeHost::frameComplete): Notify the compositor.
(WebKit::ThreadedCoordinatedLayerTreeHost::nativeSurfaceHandleForCompositing): Initialize the surface and return
the window handler.
(WebKit::ThreadedCoordinatedLayerTreeHost::didDestroyGLContext): Finalize the surface.
(WebKit::ThreadedCoordinatedLayerTreeHost::willRenderFrame): Notify the surface.
(WebKit::ThreadedCoordinatedLayerTreeHost::didRenderFrame): Ditto.
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
* WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:
(WebKit::AcceleratedSurfaceWayland::create): Add client parameter.
(WebKit::AcceleratedSurfaceWayland::AcceleratedSurfaceWayland): Ditto.
(WebKit::AcceleratedSurfaceWayland::didRenderFrame): Call Client::frameComplete().
* WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.h:
* WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:
(WebKit::AcceleratedSurfaceX11::create): Add client parameter.
(WebKit::AcceleratedSurfaceX11::AcceleratedSurfaceX11): Ditto.
(WebKit::AcceleratedSurfaceX11::didRenderFrame): Call Client::frameComplete().
* WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h:
* WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp: Added.
(WebKit::AcceleratedSurfaceWPE::create):
(WebKit::AcceleratedSurfaceWPE::AcceleratedSurfaceWPE):
(WebKit::AcceleratedSurfaceWPE::~AcceleratedSurfaceWPE):
(WebKit::AcceleratedSurfaceWPE::initialize):
(WebKit::AcceleratedSurfaceWPE::finalize):
(WebKit::AcceleratedSurfaceWPE::window):
(WebKit::AcceleratedSurfaceWPE::surfaceID):
(WebKit::AcceleratedSurfaceWPE::resize):
(WebKit::AcceleratedSurfaceWPE::willRenderFrame):
(WebKit::AcceleratedSurfaceWPE::didRenderFrame):
* WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.h: Copied from Source/WebKit2/WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h.
2017-05-19 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass
https://bugs.webkit.org/show_bug.cgi?id=172098
Reviewed by Saam Barati.
* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
2017-05-18 Andreas Kling <akling@apple.com>
[WK2] Notify WebPageProxy client when an active process goes over the inactive memory limit
https://bugs.webkit.org/show_bug.cgi?id=172244
<rdar://problem/31800943>
Reviewed by Geoffrey Garen.
Add a WKPageUIClient callback that is invoked when an active process exceeds the inactive memory limit.
With the current state of the implementation, this means that a UI client can learn that backgrounding
a non-audible, non-capturing tab may cause it to get killed once the active/inactive hysteresis time
is over (8 minutes.)
The callback can be invoked multiple times if we exceed the limit, and then go under, and exceed again.
This is the callback:
didExceedBackgroundResourceLimitWhileInForeground(WKPageRef, WKResourceLimit)
Where WKResourceLimit is one of { kWKResourceLimitMemory, kWKResourceLimitCPU }
The CPU enum value is a placeholder pending implementation soon.
* UIProcess/API/APIUIClient.h:
(API::UIClient::didExceedBackgroundResourceLimitWhileInForeground):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/C/WKPageUIClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didExceedInactiveMemoryLimitWhileActive):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didExceedInactiveMemoryLimitWhileActive):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
2017-05-18 Eric Carlson <eric.carlson@apple.com>
[MediaStream] do not cache gUM permissions
https://bugs.webkit.org/show_bug.cgi?id=172245
Reviewed by Youenn Fablet.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests):
(WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied):
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
(WebKit::FrameAuthorizationState::FrameAuthorizationState): Deleted.
(WebKit::FrameAuthorizationState::hasPermissionToUseCaptureDevice): Deleted.
(WebKit::FrameAuthorizationState::setHasPermissionToUseCaptureDevice): Deleted.
(WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual): Deleted.
(WebKit::UserMediaPermissionRequestManagerProxy::stateForRequest): Deleted.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
(WebKit::FrameAuthorizationState::setDeviceIdentifierHashSalt): Deleted.
(WebKit::FrameAuthorizationState::deviceIdentifierHashSalt): Deleted.
* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
* UIProcess/UserMediaPermissionRequestProxy.h:
(WebKit::UserMediaPermissionRequestProxy::create):
(WebKit::UserMediaPermissionRequestProxy::deviceIdentifierHashSalt):
2017-05-18 Tim Horton <timothy_horton@apple.com>
Data interaction conclusion snapshot has too much margin
https://bugs.webkit.org/show_bug.cgi?id=172323
<rdar://problem/32283772>
Reviewed by Beth Dakin.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::didConcludeEditDataInteraction):
Disable the default TextIndicator margin.
2017-05-18 Andy Estes <aestes@apple.com>
ENABLE(APPLE_PAY_DELEGATE) should be NO on macOS Sierra and earlier
https://bugs.webkit.org/show_bug.cgi?id=172305
Reviewed by Anders Carlsson.
* Configurations/FeatureDefines.xcconfig:
2017-05-18 John Wilander <wilander@apple.com>
Resource Load Statistics: Grandfather domains for existing data records
https://bugs.webkit.org/show_bug.cgi?id=172155
<rdar://problem/24913532>
Reviewed by Alex Christensen.
When WebResourceLoadStatisticsStore starts fresh it needs
to scan existing website data records and 'grandfather' them to
allow ample time to capture user interaction.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
(WKResourceLoadStatisticsManagerSetGrandfathered):
(WKResourceLoadStatisticsManagerIsGrandfathered):
(WKResourceLoadStatisticsManagerSetMinimumTimeBetweeenDataRecordsRemoval):
(WKResourceLoadStatisticsManagerSetGrandfatheringTime):
Functions for testing and configuration.
* UIProcess/API/C/WKResourceLoadStatisticsManager.h:
* UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm:
(WebKit::WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded):
Added grandfathering configuration.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebiteData):
New function to get all top privately controlled domains that
have website data.
* UIProcess/WebProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsManager.cpp:
(WebKit::WebResourceLoadStatisticsManager::setGrandfathered):
(WebKit::WebResourceLoadStatisticsManager::isGrandfathered):
(WebKit::WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval):
(WebKit::WebResourceLoadStatisticsManager::setGrandfatheringTime):
(WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
Functions for testing and configuration.
WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval() changed
as a result of WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval()
moving to WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().
* UIProcess/WebResourceLoadStatisticsManager.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::initializeDataTypesToRemove):
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
Moved handling of pending removal into WebCore::ResourceLoadStatisticsStore since
that's where grandfathering happens.
(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
Moved registration of write persistent store callback and reading of Cocoa defaults to
WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver without parameters
so they are called for platforms without CFNETWORK_STORAGE_PARTITIONING.
Now includes registering WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData()
as handler for grandfathering since it involves reading of the website data store.
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
(WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval): Deleted.
Now happens in WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::topPrivatelyControlledDomain):
New function to ask a WebsiteDataRecord for its top privately controlled domain.
* UIProcess/WebsiteData/WebsiteDataRecord.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData):
New function to get all top privately controlled domains that
have website data.
* UIProcess/WebsiteData/WebsiteDataStore.h:
2017-05-18 Andy Estes <aestes@apple.com>
Add "countryCode" to ApplePayErrorContactField
https://bugs.webkit.org/show_bug.cgi?id=172264
<rdar://problem/32004909>
Reviewed by Anders Carlsson.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toNSError):
2017-05-18 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r217031, r217032, and r217037.
https://bugs.webkit.org/show_bug.cgi?id=172293
cause linking errors in Windows (Requested by yusukesuzuki on
#webkit).
Reverted changesets:
"[JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass"
https://bugs.webkit.org/show_bug.cgi?id=172098
http://trac.webkit.org/changeset/217031
"Unreviewed, rebaseline for newly added ClassInfo"
https://bugs.webkit.org/show_bug.cgi?id=172098
http://trac.webkit.org/changeset/217032
"Unreviewed, fix debug and non-JIT build"
https://bugs.webkit.org/show_bug.cgi?id=172098
http://trac.webkit.org/changeset/217037
2017-05-18 Claudio Saavedra <csaavedra@igalia.com>
[WPE] Unreviewed build fix
Add missing header after r217041.
* UIProcess/API/wpe/WPEView.cpp:
2017-05-18 Tim Horton <timothy_horton@apple.com>
More WebKit2 header cleanup
https://bugs.webkit.org/show_bug.cgi?id=172214
Reviewed by Simon Fraser.
* Shared/WebFindOptions.h:
* UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm:
* UIProcess/Cocoa/WebViewImpl.mm:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/UserMediaPermissionRequestProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setCompositionAsync):
* UIProcess/WebPageProxy.h:
* UIProcess/mac/PageClientImpl.mm:
* UIProcess/mac/ViewGestureControllerMac.mm:
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
* WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h:
* WebProcess/InjectedBundle/API/c/WKBundlePageFullScreenClient.h:
* WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.h:
* WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.h:
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
* WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.h:
* WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
* WebProcess/Notifications/WebNotificationManager.cpp:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
* WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
* WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
* WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp:
* WebProcess/WebCoreSupport/WebValidationMessageClient.cpp:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
(WebKit::WebPage::setDeviceScaleFactor):
(WebKit::WebPage::centerSelectionInVisibleArea):
(WebKit::WebPage::findString):
(WebKit::WebPage::findStringMatches):
(WebKit::WebPage::getImageForFindMatch):
(WebKit::WebPage::selectFindMatch):
(WebKit::WebPage::hideFindUI):
(WebKit::WebPage::countStringMatches):
(WebKit::WebPage::didReceiveGeolocationPermissionDecision):
(WebKit::WebPage::mainFrameDidLayout):
(WebKit::WebPage::setCompositionAsync):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::findController):
(WebKit::WebPage::geolocationPermissionRequestManager):
* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
Many small changes added up to a few percent. Removing UserMediaRequest
from UserMediaPermissionRequestProxy, which is included into WebPageProxy.h,
was worth another ~10% because it got VM.h out of WebPageProxy.h (like the
previous patch did with WebPage.h). In total, in my measurement (WebKit2
clean debug build) this is a ~15% speedup.
We really should figure out how to make DOMPromise.h not bring in all of
JavaScriptCore (or how to use promises without including DOMPromise.h in headers).
2017-05-17 Chris Dumez <cdumez@apple.com>
Fix unsafe lambda capture in ContentRuleListStore::lookupContentRuleList()
https://bugs.webkit.org/show_bug.cgi?id=172258
Reviewed by Brady Eidson.
Fix unsafe lambda capture in ContentRuleListStore::lookupContentRuleList(). The String
was moved instead of calling isolatedCopy(), even though we're passing the String to
another thread.
* UIProcess/API/APIContentRuleListStore.cpp:
(API::ContentRuleListStore::lookupContentRuleList):
2017-05-16 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC][DFG][DOMJIT] Extend CheckDOM to CheckSubClass
https://bugs.webkit.org/show_bug.cgi?id=172098
Reviewed by Saam Barati.
* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
2017-05-17 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r217014.
This change caused mac-wk2 LayoutTests to exit early due to
crashes.
Reverted changeset:
"Resource Load Statistics: Grandfather domains for existing
data records"
https://bugs.webkit.org/show_bug.cgi?id=172155
http://trac.webkit.org/changeset/217014
2017-05-17 John Wilander <wilander@apple.com>
Resource Load Statistics: Grandfather domains for existing data records
https://bugs.webkit.org/show_bug.cgi?id=172155
<rdar://problem/24913532>
Reviewed by Alex Christensen.
When WebResourceLoadStatisticsStore starts fresh it needs
to scan existing website data records and 'grandfather' them to
allow ample time to capture user interaction.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
(WKResourceLoadStatisticsManagerSetGrandfathered):
(WKResourceLoadStatisticsManagerIsGrandfathered):
(WKResourceLoadStatisticsManagerSetMinimumTimeBetweeenDataRecordsRemoval):
(WKResourceLoadStatisticsManagerSetGrandfatheringTime):
Functions for testing and configuration.
* UIProcess/API/C/WKResourceLoadStatisticsManager.h:
* UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm:
(WebKit::WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded):
Added grandfathering configuration.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::topPrivatelyControlledDomainsWithWebiteData):
New function to get all top privately controlled domains that
have website data.
* UIProcess/WebProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsManager.cpp:
(WebKit::WebResourceLoadStatisticsManager::setGrandfathered):
(WebKit::WebResourceLoadStatisticsManager::isGrandfathered):
(WebKit::WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval):
(WebKit::WebResourceLoadStatisticsManager::setGrandfatheringTime):
(WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
Functions for testing and configuration.
WebResourceLoadStatisticsManager::setMinimumTimeBetweeenDataRecordsRemoval() changed
as a result of WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval()
moving to WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().
* UIProcess/WebResourceLoadStatisticsManager.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::initializeDataTypesToRemove):
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
Moved handling of pending removal into WebCore::ResourceLoadStatisticsStore since
that's where grandfathering happens.
(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
Moved registration of write persistent store callback and reading of Cocoa defaults to
WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver without parameters
so they are called for platforms without CFNETWORK_STORAGE_PARTITIONING.
Now includes registering WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData()
as handler for grandfathering since it involves reading of the website data store.
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
(WebKit::WebResourceLoadStatisticsStore::setMinimumTimeBetweeenDataRecordsRemoval): Deleted.
Now happens in WebCore::ResourceLoadObserver::setMinimumTimeBetweeenDataRecordsRemoval().
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::topPrivatelyControlledDomain):
New function to ask a WebsiteDataRecord for its top privately controlled domain.
* UIProcess/WebsiteData/WebsiteDataRecord.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::topPrivatelyControlledDomainsWithWebsiteData):
New function to get all top privately controlled domains that
have website data.
* UIProcess/WebsiteData/WebsiteDataStore.h:
2017-05-17 Brent Fulgham <bfulgham@apple.com>
[WK2][iOS] Allow access to additional IOHID user class
https://bugs.webkit.org/show_bug.cgi?id=172198
<rdar://problem/31967635>
Reviewed by Alex Christensen.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2017-05-17 Chris Dumez <cdumez@apple.com>
Add more assertions in BackgroundProcessResponsivenessTimer
https://bugs.webkit.org/show_bug.cgi?id=172239
Reviewed by Andreas Kling.
Add more assertions in BackgroundProcessResponsivenessTimer to help figure out the
source of <rdar://problem/32251578>.
* UIProcess/BackgroundProcessResponsivenessTimer.cpp:
(WebKit::BackgroundProcessResponsivenessTimer::updateState):
(WebKit::BackgroundProcessResponsivenessTimer::scheduleNextResponsivenessCheck):
2017-05-17 Youenn Fablet <youenn@apple.com>
No need to copy origin references in UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo
https://bugs.webkit.org/show_bug.cgi?id=172242
Reviewed by Eric Carlson.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
2017-05-17 Youenn Fablet <youenn@apple.com>
Move-related refactoring on UserMediaPermissionRequestProxy
https://bugs.webkit.org/show_bug.cgi?id=172195
Reviewed by Alex Christensen.
Moving vectors of strings instead of passing as const ref so that we do not copy them.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
* UIProcess/UserMediaPermissionRequestProxy.h:
(WebKit::UserMediaPermissionRequestProxy::create):
2017-05-17 Andy Estes <aestes@apple.com>
REGRESSION (r215480): PKPaymentAuthorizationStatusFailure sent to PassKit in completeShippingContactSelection() even when there are no errors
https://bugs.webkit.org/show_bug.cgi?id=172227
<rdar://problem/31978432>
Reviewed by Alexey Proskuryakov.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toPKPaymentAuthorizationStatus): If there is an update with no errors, we should
return PKPaymentAuthorizationStatusSuccess instead of PKPaymentAuthorizationStatusFailure.
2017-05-17 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r216974.
Revision caused consistent timeouts on all platforms.
Reverted changeset:
"Add a RuntimeEnabledFeature for display: contents, defaulted
to false."
https://bugs.webkit.org/show_bug.cgi?id=171984
http://trac.webkit.org/changeset/216974
2017-05-17 Alex Christensen <achristensen@webkit.org>
Interacting with WKHTTPCookieStores before creating WKWebViews and WKProcessPools should affect cookies used
https://bugs.webkit.org/show_bug.cgi?id=171987
Reviewed by Brady Eidson.
When putting cookies in a WKHTTPCookieStore that hasn't been associated with a WKProcessPool yet, there is no
NetworkProcess into which to put the cookies. In such a case, we should store these cookies in the WebsiteDataStore
until there is a NetworkProcess.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::ensurePrivateBrowsingSession):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/RemoteNetworkingContext.h:
* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::~WebsiteDataStoreParameters):
(WebKit::WebsiteDataStoreParameters::encode):
(WebKit::WebsiteDataStoreParameters::decode):
(WebKit::WebsiteDataStoreParameters::WebsiteDataStoreParameters): Deleted.
* Shared/WebsiteDataStoreParameters.h:
* UIProcess/API/APIHTTPCookieStore.cpp:
(API::HTTPCookieStore::cookies):
(API::HTTPCookieStore::setCookie):
(API::HTTPCookieStore::deleteCookie):
* UIProcess/API/APIHTTPCookieStore.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
(WebKit::WebProcessPool::pageAddedToProcess):
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::pendingCookies):
(WebKit::WebsiteDataStore::addPendingCookie):
(WebKit::WebsiteDataStore::removePendingCookie):
* UIProcess/WebsiteData/WebsiteDataStore.h:
2017-05-17 Emilio Cobos Álvarez <ecobos@igalia.com>
Add a RuntimeEnabledFeature for display: contents, defaulted to false.
https://bugs.webkit.org/show_bug.cgi?id=171984
Reviewed by Antti Koivisto.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetDisplayContentsEnabled):
(WKPreferencesGetDisplayContentsEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-05-17 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix the build with MEDIA_STREAM disabled after r216952.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
2017-05-17 Carlos Garcia Campos <cgarcia@igalia.com>
[Threaded Compositor] SHOULD NEVER BE REACHED in WebKit::CompositingRunLoop::updateCompleted
https://bugs.webkit.org/show_bug.cgi?id=172167
Reviewed by Michael Catanzaro.
This is still happening, even after r216182, less often but still happens. There are two conditions in which
this can happen:
- Again in force repaint. r216182 fixed the case of force repaint called when update state is completed, but it
can also crash if update state is inProgress or PendingAfterCompletion when m_coordinateUpdateCompletionWithClient
is true.
- When the threaded compositor is invalidated right after renderLayerTree() starts, but before it finishes.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::invalidate): Invalidate the refresh monitor right after stopping updates in the
compositing run loop to ensure no more updates are scheduled.
(WebKit::ThreadedCompositor::renderLayerTree): Check the scene is still active before calling sceneUpdateFinished().
(WebKit::ThreadedCompositor::updateSceneState): Do not update m_coordinateUpdateCompletionWithClient when in
force repaint.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
(WebKit::ThreadedDisplayRefreshMonitor::dispatchDisplayRefreshCallback): Return early if the monitor has been invalidated.
2017-05-16 Sam Weinig <sam@webkit.org>
Bring Notification.idl up to spec
https://bugs.webkit.org/show_bug.cgi?id=172156
Reviewed by Chris Dumez.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/API/C/WKNotification.cpp:
(WKNotificationCopyDir):
* UIProcess/Notifications/WebNotification.cpp:
(WebKit::WebNotification::WebNotification):
* UIProcess/Notifications/WebNotification.h:
(WebKit::WebNotification::create):
(WebKit::WebNotification::dir):
* UIProcess/Notifications/WebNotificationManagerProxy.cpp:
(WebKit::WebNotificationManagerProxy::show):
* UIProcess/Notifications/WebNotificationManagerProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showNotification):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
(WebKit::NotificationPermissionRequestManager::startRequest):
(WebKit::NotificationPermissionRequestManager::permissionLevel):
(WebKit::NotificationPermissionRequestManager::didReceiveNotificationPermissionDecision):
* WebProcess/Notifications/WebNotificationManager.cpp:
(WebKit::WebNotificationManager::policyForOrigin):
(WebKit::WebNotificationManager::show):
* WebProcess/WebCoreSupport/WebNotificationClient.cpp:
(WebKit::WebNotificationClient::checkPermission):
* WebProcess/WebCoreSupport/WebNotificationClient.h:
Update for enum vs String usage.
2017-05-16 Youenn Fablet <youenn@apple.com>
Modernize WebKit2 getUserMedia passing of parameters
https://bugs.webkit.org/show_bug.cgi?id=172161
Reviewed by Eric Carlson.
Passing SecurityOrigin as SecurityOriginData through IPC instead of Strings.
Making more use of Ref<> instead of RefPtr<>.
* UIProcess/UserMediaPermissionCheckProxy.cpp:
(WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy):
(WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo):
* UIProcess/UserMediaPermissionCheckProxy.h:
(WebKit::UserMediaPermissionCheckProxy::create):
(WebKit::UserMediaPermissionCheckProxy::userMediaDocumentSecurityOrigin):
(WebKit::UserMediaPermissionCheckProxy::topLevelDocumentSecurityOrigin):
(WebKit::UserMediaPermissionCheckProxy::completionHandler):
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::FrameAuthorizationState::FrameAuthorizationState):
(WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual):
(WebKit::UserMediaPermissionRequestManagerProxy::createRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy):
* UIProcess/UserMediaPermissionRequestProxy.h:
(WebKit::UserMediaPermissionRequestProxy::create):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
(WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
(WebKit::WebPageProxy::requestNotificationPermission):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest):
(WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices):
2017-05-16 David Kilzer <ddkilzer@apple.com>
Unused lambdas in UserMediaPermissionRequestManagerProxy.cpp
<https://webkit.org/b/172179>
Reviewed by Eric Carlson.
Fixes unused lambda warnings found with newer clang:
Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:309:46: error: lambda capture 'userMediaID' is not used [-Werror,-Wunused-lambda-capture]
auto validateConstraintsHandler = [this, userMediaID, validHandler = WTFMove(validHandler), invalidHandler = WTFMove(invalidHandler), audioConstraints = WebCore::MediaConstraints(audioConstraints), videoConstraints = WebCore::MediaConstraints(videoConstraints)](String&& deviceIdentifierHashSalt) mutable {
^
Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:318:41: error: lambda capture 'userMediaID' is not used [-Werror,-Wunused-lambda-capture]
auto haveDeviceSaltHandler = [this, userMediaID, frameID, validateConstraintsHandler = WTFMove(validateConstraintsHandler)](uint64_t userMediaID, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess) mutable {
^
Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:318:54: error: lambda capture 'frameID' is not used [-Werror,-Wunused-lambda-capture]
auto haveDeviceSaltHandler = [this, userMediaID, frameID, validateConstraintsHandler = WTFMove(validateConstraintsHandler)](uint64_t userMediaID, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess) mutable {
^
Source/WebKit2/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:362:37: error: lambda capture 'userMediaID' is not used [-Werror,-Wunused-lambda-capture]
auto completionHandler = [this, userMediaID](uint64_t userMediaID, String&& deviceIdentifierHashSalt, bool originHasPersistentAccess) {
^
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):
- Remove unused lambdas.
2017-05-16 Brent Fulgham <bfulgham@apple.com>
[WK2][macOS] Support Flash Player DRM features
https://bugs.webkit.org/show_bug.cgi?id=172157
<rdar://problem/31889297>
Reviewed by Dean Jackson.
Relax the IOKit whitelist to support DRM features needed by
some websites.
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
2017-05-16 Brent Fulgham <bfulgham@apple.com>
[WK2][macOS] Adopt a whitelist for XPC services
https://bugs.webkit.org/show_bug.cgi?id=172151
<rdar://problem/31916325>
Reviewed by Alex Christensen.
* DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
* WebProcess/com.apple.WebProcess.sb.in:
2017-05-16 Timothy Horton <timothy_horton@apple.com>
Make it possible to adjust which edges are affected by safe area insets
https://bugs.webkit.org/show_bug.cgi?id=172149
<rdar://problem/31564729>
Reviewed by Beth Dakin.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _computedContentInset]):
(-[WKWebView _obscuredInsetEdgesAffectedBySafeArea]):
(-[WKWebView _setObscuredInsetEdgesAffectedBySafeArea:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Add SPI to adjust which edges are taken into account, and adjust the default.
2017-05-16 Zan Dobersek <zdobersek@igalia.com>
[GLib] Use RunLoopSourcePriority::RunLoopDispatcher as the GSocketMonitor's GSource priority
https://bugs.webkit.org/show_bug.cgi?id=172160
Reviewed by Carlos Garcia Campos.
* Platform/IPC/glib/GSocketMonitor.cpp:
(IPC::GSocketMonitor::start): Explicitly set the priority for the GSocketMonitor's
GSource object to RunLoopSourcePriority::RunLoopDispatcher, equating it to the
priority that's used in RunLoop for dispatches of the queued functions.
2017-05-16 Zan Dobersek <zdobersek@igalia.com>
[GLib] Name more GSource-based RunLoop::Timers
https://bugs.webkit.org/show_bug.cgi?id=172158
Reviewed by Carlos Garcia Campos.
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::CompositingRunLoop):
Specify 'CompositingRunLoop' as the name of this GSource-based RunLoop::Timer.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
(WebKit::ThreadedDisplayRefreshMonitor::ThreadedDisplayRefreshMonitor):
Specify 'ThreadedDisplayRefreshMonitor' as the name of this GSource-based RunLoop::Timer.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost):
Specify 'CoordinatedLayerTreeHost' as the name of this GSource-based RunLoop::Timer.
2017-05-16 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Revert change committed by mistakle in r216922.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::forceRepaint):
2017-05-16 Youenn Fablet <youenn@apple.com>
Remove MediaConstraintsData and MediaConstraintsImpl
https://bugs.webkit.org/show_bug.cgi?id=172132
Reviewed by Eric Carlson.
Removing MediaConstraintsData and MediaConstraintsImpl allows simplifying the code.
Further simplified the code by making MediaConstraints no longer ref counted and now a struct.
* Scripts/webkit/messages.py:
(headers_for_type):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<MediaConstraints>::encode):
(IPC::ArgumentCoder<MediaConstraints>::decode):
(IPC::ArgumentCoder<MediaConstraintsData>::encode): Deleted.
(IPC::ArgumentCoder<MediaConstraintsData>::decode): Deleted.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
(WebKit::UserMediaCaptureManagerProxy::applyConstraints):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestUserMediaPermissionForFrame):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest):
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::applyConstraints):
2017-05-16 Michael Catanzaro <mcatanzaro@igalia.com>
[SOUP] Remove LATEST_RECORD_VERSION from GnuTLS priority string
https://bugs.webkit.org/show_bug.cgi?id=172153
Based on discussion with Nikos in https://bugzilla.gnome.org/show_bug.cgi?id=782218, we
should remove LATEST_RECORD_VERSION from our GnuTLS priority string. This causes GnuTLS to
use the latest TLS record version (the record format is separate from the TLS protocol
version), which we needed a couple years ago (after dropping SSLv3) for maximum
compatibility with broken web servers. But it's not needed anymore, and is causing new
compatibility problems with other broken web servers, so let's get rid of it.
Reviewed by Carlos Garcia Campos.
* NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp:
(main):
* WebProcess/EntryPoint/unix/WebProcessMain.cpp:
(main):
2017-05-15 Andy Estes <aestes@apple.com>
Make the application PID available to WebCore
https://bugs.webkit.org/show_bug.cgi?id=172133
Reviewed by Andreas Kling.
Added uiProcessPID to Web and Networking process creation parameters. The UI process
initializes these to getpid(), and the child processes call WebCore::setPresentingApplicationPID()
at initialization time.
This replaces presenterApplicationPid.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::createNewWebProcess):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformInitialize):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
* WebProcess/WebProcess.h:
(WebKit::WebProcess::presenterApplicationPid): Deleted.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
2017-05-15 Said Abou-Hallawa <sabouhallawa@apple.com>
Do not delete asynchronously decoded frames for large images if their clients are in the viewport
https://bugs.webkit.org/show_bug.cgi?id=170640
Reviewed by Simon Fraser.
Enable the async decoding for large images.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-05-15 Youenn Fablet <youenn@apple.com>
Simplify RealtimeMediaSource data production and state
https://bugs.webkit.org/show_bug.cgi?id=171999
Reviewed by Eric Carlson.
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::startProducingData):
(WebKit::UserMediaCaptureManagerProxy::stopProducingData):
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
2017-05-15 Brent Fulgham <bfulgham@apple.com>
Correct typo (part of r216790).
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in: The check-in missed part of a
regular expression needed to fix the audio playback.
2017-05-15 Jer Noble <jer.noble@apple.com>
Add experimental setting to allow document gesture interaction to fulfill media playback gesture requirement
https://bugs.webkit.org/show_bug.cgi?id=172131
Reviewed by Eric Carlson.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetMediaUserGestureInheritsFromDocument):
(WKPreferencesGetMediaUserGestureInheritsFromDocument):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-05-15 Brent Fulgham <bfulgham@apple.com>
[WK2][macOS][iOS] Allow Network process to access nsurlstoraged's top level domain data cache
https://bugs.webkit.org/show_bug.cgi?id=172128
<rdar://problem/30871490>
Reviewed by Alex Christensen.
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
2017-05-15 David Kilzer <ddkilzer@apple.com>
Update json.hpp to v2.1.1
<https://webkit.org/b/172085>
<rdar://problem/32180980>
Reviewed by Alex Christensen.
* NetworkProcess/capture/NetworkCaptureEvent.cpp:
- Define JSON_NOEXCEPTION as 1 to disable exceptions in
json.hpp.
(WebKit::NetworkCapture::JSONCoder<String>::encode):
(WebKit::NetworkCapture::JSONCoder<WebCore::SharedBuffer>::encode):
- Build std::string passing in length to avoid the need for a
custom basic_json() constructor, and for efficiency.
* NetworkProcess/capture/json.hpp:
- Update to v2.1.1 and remove customizations.
2017-05-15 Brent Fulgham <bfulgham@apple.com>
Unreviewed build fix.
Debugging code was accidentally left in the Plugin sandbox profile.
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
2017-05-15 Gwang Yoon Hwang <yoon@igalia.com>
[WPE] Unreviewed debug build fix
https://bugs.webkit.org/show_bug.cgi?id=172118
Unreviewed, remove a dead code accidentally committed in r215259.
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
Remove deprecated CompositingRunLoop::isCurrent.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::frameComplete):
2017-05-14 Daewoong Jang <daewoong.jang@navercorp.com>
[CoordinatedGraphics] Remove unused files and lines
https://bugs.webkit.org/show_bug.cgi?id=172080
Reviewed by Darin Adler.
* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp: Removed.
* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h: Removed.
* Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp: Removed.
* Shared/CoordinatedGraphics/WebCoordinatedSurface.h: Removed.
* UIProcess/CoordinatedGraphics/WKCoordinatedSceneAPICast.h: Removed.
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.messages.in: Removed.
2017-05-14 Andreas Kling <akling@apple.com>
Always reset the assisted node when the main frame commits a new load.
https://bugs.webkit.org/show_bug.cgi?id=172088
Reviewed by Antti Koivisto.
WebPage::m_assistedNode could extend the lifetime of the document it pointed into
if the main frame was navigated while the assisted node was in one of its subframes.
The life-supported document wouldn't be reachable from JavaScript but nevertheless
would consume memory and other resources.
This patch fixes the issue by always clearing WebPage::m_assistedNode when the main
frame commits a new load.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::resetAssistedNodeForFrame):
2017-05-14 Csaba Osztrogonác <ossy@webkit.org>
Unreviewed Mac cmake buildfix after r216690, just for fun.
* PlatformMac.cmake:
2017-05-14 David Kilzer <ddkilzer@apple.com>
Fix unused lambdas in WebKit2
<https://webkit.org/b/172090>
Reviewed by Chris Dumez.
Fixes unused lambda warnings found with newer clang.
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::retrieve):
* NetworkProcess/cache/NetworkCacheStatistics.cpp:
(WebKit::NetworkCache::Statistics::initialize):
- Use UNUSED_PARAM() to silence unused lambda warning since
'startTime' is used in Debug builds.
* NetworkProcess/capture/NetworkCaptureManager.cpp:
(WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
- Remove unused 'this' from lambda capture.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
- Use UNUSED_PARAM() to silence unused lambda warning since
'taskIdentifier' is used in Debug builds.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
(WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate):
- Remove unused 'this' from lambda captures.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
- Remove unused 'fetchOptions' from lambda capture.
(WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):
- Remove unused 'this' from lambda capture.
* UIProcess/mac/ViewGestureControllerMac.mm:
(WebKit::ViewGestureController::forceRepaintIfNeeded):
- Remove unused 'this' from lambda capture.
* WebProcess/cocoa/WebVideoFullscreenManager.mm:
(WebKit::WebVideoFullscreenManager::didExitFullscreen):
- Remove unused 'this' from nested lambda captures.
2017-05-13 Eric Carlson <eric.carlson@apple.com>
[MediaStream] deviceId constraint doesn't work with getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=171877
<rdar://problem/31899730>
Reviewed by Jer Noble.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<MediaConstraintsData>::encode): Encode deviceIDHashSalt.
(IPC::ArgumentCoder<MediaConstraintsData>::decode): Decode deviceIDHashSalt.
* UIProcess/UserMediaPermissionCheckProxy.cpp:
(WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): Initialize
completion handler, frame ID, and security origins.
(WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): Complete by calling
completion handler because we now sometimes request access info before calling gUM.
(WebKit::UserMediaPermissionCheckProxy::invalidate): Clear completion handler.
* UIProcess/UserMediaPermissionCheckProxy.h:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::FrameAuthorizationState::FrameAuthorizationState): Take security origins, not
UserMediaPermissionRequestProxy, so it can be constructed with a UserMediaPermissionCheckProxy.
(WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual): Ditto. Clear has salt
when origins don't match.
(WebKit::UserMediaPermissionRequestManagerProxy::stateForRequest): Templatize.
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): Fix typo.
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Ditto.
Don't set state for empty UIDs. Pass hash salt to web process.
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
The device ID hash salt is now required to validate constraints, so get it first.
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Helper
method used to get the device ID hash salt.
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Restructure
to use getUserMediaPermissionInfo.
(WebKit::UserMediaPermissionRequestManagerProxy::didCompleteUserMediaPermissionCheck): Deleted.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted): Add device ID
hash salt parameter.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::userMediaAccessWasGranted): Ditto.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::createCaptureSource): Use new MediaConstraintsData
constructor.
2017-05-13 Chris Dumez <cdumez@apple.com>
Stop using RefPtr::release()
https://bugs.webkit.org/show_bug.cgi?id=172074
Reviewed by Geoffrey Garen.
* Platform/unix/SharedMemoryUnix.cpp:
(WebKit::SharedMemory::create):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::createImageBacking):
* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::createCairoSurface):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeFilter.cpp:
(WebKit::core):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::getContentsAsMHTMLData):
2017-05-12 Chris Dumez <cdumez@apple.com>
Drop remaining uses of PassRefPtr in WebKit2/WebProcess
https://bugs.webkit.org/show_bug.cgi?id=172055
Reviewed by Alex Christensen.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
(+[WKWebProcessPlugInScriptWorld normalWorld]):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(contextMenuItems):
* WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp:
(WKBundleScriptWorldNormalWorld):
* WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp:
(webkitScriptWorldCreate):
* WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.cpp:
(WebKit::InjectedBundleCSSStyleDeclarationHandle::getOrCreate):
* WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.h:
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
(WebKit::InjectedBundleRangeHandle::getOrCreate):
(WebKit::InjectedBundleRangeHandle::create):
(WebKit::InjectedBundleRangeHandle::coreRange):
(WebKit::InjectedBundleRangeHandle::renderedImage):
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::create):
(WebKit::InjectedBundle::createWebDataFromUint8Array):
* WebProcess/InjectedBundle/InjectedBundle.h:
* WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp:
(WebKit::InjectedBundleBackForwardList::itemAtIndex):
* WebProcess/InjectedBundle/InjectedBundleBackForwardList.h:
(WebKit::InjectedBundleBackForwardList::detach):
* WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h:
(WebKit::InjectedBundleBackForwardListItem::create):
(WebKit::InjectedBundleBackForwardListItem::InjectedBundleBackForwardListItem):
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
(WebKit::InjectedBundleHitTestResult::nodeHandle):
(WebKit::InjectedBundleHitTestResult::urlElementHandle):
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:
* WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
(WebKit::InjectedBundleNavigationAction::create):
(WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):
* WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
* WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
(WebKit::InjectedBundleScriptWorld::getOrCreate):
(WebKit::InjectedBundleScriptWorld::normalWorld):
* WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
(WebKit::NetscapePlugin::create):
(WebKit::NetscapePlugin::NetscapePlugin):
(WebKit::NetscapePlugin::supportsSnapshotting):
* WebProcess/Plugins/Netscape/NetscapePlugin.h:
* WebProcess/Plugins/PDF/PDFPluginAnnotation.h:
* WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
(WebKit::PDFPluginAnnotation::create):
* WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.h:
* WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
(WebKit::PDFPluginChoiceAnnotation::createAnnotationElement):
* WebProcess/Plugins/PDF/PDFPluginPasswordField.h:
* WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:
(WebKit::PDFPluginPasswordField::createAnnotationElement):
* WebProcess/Plugins/PDF/PDFPluginTextAnnotation.h:
* WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
(WebKit::PDFPluginTextAnnotation::createAnnotationElement):
* WebProcess/UserContent/WebUserContentController.cpp:
(WebKit::worldMap):
(WebKit::WebUserMessageHandlerDescriptorProxy::create):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::convertImageToBitmap):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::addUserScript):
(WebKit::WebPage::addUserStyleSheet):
* WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
(WebKit::WebPrintOperationGtk::create):
* WebProcess/WebPage/gtk/WebPrintOperationGtk.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::rangeForPosition):
(WebKit::rangeAtWordBoundaryForPosition):
* WebProcess/WebPage/mac/PlatformCAAnimationRemote.h:
2017-05-12 Alex Christensen <achristensen@webkit.org>
Rename WKContentExtension to WKContentRuleList
https://bugs.webkit.org/show_bug.cgi?id=172053
<rdar://problem/32141005>
Reviewed by Geoffrey Garen.
* Shared/API/APIObject.h:
* Shared/API/Cocoa/WebKit.h:
* Shared/API/c/WKDeprecatedFunctions.cpp:
(WKPageGroupAddUserContentFilter):
(WKPageGroupRemoveUserContentFilter):
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* Shared/WebCompiledContentExtension.cpp: Removed.
* Shared/WebCompiledContentExtension.h: Removed.
* Shared/WebCompiledContentExtensionData.cpp: Removed.
* Shared/WebCompiledContentExtensionData.h: Removed.
* Shared/WebCompiledContentRuleList.cpp: Copied from Source/WebKit2/Shared/WebCompiledContentExtension.cpp.
(WebKit::WebCompiledContentRuleList::create):
(WebKit::WebCompiledContentRuleList::WebCompiledContentRuleList):
(WebKit::WebCompiledContentRuleList::~WebCompiledContentRuleList):
(WebKit::WebCompiledContentRuleList::conditionsApplyOnlyToDomain):
(WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecode):
(WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecodeLength):
(WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecode):
(WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecodeLength):
(WebKit::WebCompiledContentRuleList::topURLFiltersBytecode):
(WebKit::WebCompiledContentRuleList::topURLFiltersBytecodeLength):
(WebKit::WebCompiledContentRuleList::actions):
(WebKit::WebCompiledContentRuleList::actionsLength):
(WebKit::WebCompiledContentExtension::create): Deleted.
(WebKit::WebCompiledContentExtension::WebCompiledContentExtension): Deleted.
(WebKit::WebCompiledContentExtension::~WebCompiledContentExtension): Deleted.
(WebKit::WebCompiledContentExtension::conditionsApplyOnlyToDomain): Deleted.
(WebKit::WebCompiledContentExtension::filtersWithoutConditionsBytecode): Deleted.
(WebKit::WebCompiledContentExtension::filtersWithoutConditionsBytecodeLength): Deleted.
(WebKit::WebCompiledContentExtension::filtersWithConditionsBytecode): Deleted.
(WebKit::WebCompiledContentExtension::filtersWithConditionsBytecodeLength): Deleted.
(WebKit::WebCompiledContentExtension::topURLFiltersBytecode): Deleted.
(WebKit::WebCompiledContentExtension::topURLFiltersBytecodeLength): Deleted.
(WebKit::WebCompiledContentExtension::actions): Deleted.
(WebKit::WebCompiledContentExtension::actionsLength): Deleted.
* Shared/WebCompiledContentRuleList.h: Copied from Source/WebKit2/Shared/WebCompiledContentExtension.h.
* Shared/WebCompiledContentRuleListData.cpp: Copied from Source/WebKit2/Shared/WebCompiledContentExtensionData.cpp.
(WebKit::WebCompiledContentRuleListData::encode):
(WebKit::WebCompiledContentRuleListData::decode):
(WebKit::WebCompiledContentExtensionData::encode): Deleted.
(WebKit::WebCompiledContentExtensionData::decode): Deleted.
* Shared/WebCompiledContentRuleListData.h: Copied from Source/WebKit2/Shared/WebCompiledContentExtensionData.h.
(WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):
(WebKit::WebCompiledContentExtensionData::WebCompiledContentExtensionData): Deleted.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/APIContentExtension.cpp: Removed.
* UIProcess/API/APIContentExtension.h: Removed.
* UIProcess/API/APIContentExtensionStore.cpp: Removed.
* UIProcess/API/APIContentExtensionStore.h: Removed.
* UIProcess/API/APIContentRuleList.cpp: Copied from Source/WebKit2/UIProcess/API/APIContentExtension.cpp.
(API::ContentRuleList::ContentRuleList):
(API::ContentRuleList::~ContentRuleList):
(API::ContentExtension::ContentExtension): Deleted.
(API::ContentExtension::~ContentExtension): Deleted.
* UIProcess/API/APIContentRuleList.h: Copied from Source/WebKit2/UIProcess/API/APIContentExtension.h.
* UIProcess/API/APIContentRuleListStore.cpp: Copied from Source/WebKit2/UIProcess/API/APIContentExtensionStore.cpp.
(API::ContentRuleListStore::legacyDefaultStore):
(API::ContentRuleListStore::nonLegacyDdefaultStore):
(API::ContentRuleListStore::defaultStore):
(API::ContentRuleListStore::storeWithPath):
(API::ContentRuleListStore::ContentRuleListStore):
(API::ContentRuleListStore::~ContentRuleListStore):
(API::constructedPathPrefix):
(API::ContentRuleListMetaData::fileSize):
(API::encodeContentRuleListMetaData):
(API::decodeContentRuleListMetaData):
(API::openAndMapContentRuleList):
(API::compiledToFile):
(API::createExtension):
(API::ContentRuleListStore::lookupContentRuleList):
(API::ContentRuleListStore::getAvailableContentRuleListIdentifiers):
(API::ContentRuleListStore::compileContentRuleList):
(API::ContentRuleListStore::removeContentRuleList):
(API::ContentRuleListStore::synchronousRemoveAllContentRuleLists):
(API::ContentRuleListStore::invalidateContentRuleListVersion):
(API::ContentRuleListStore::getContentRuleListSource):
(API::contentRuleListStoreErrorCategory):
(API::ContentExtensionStore::defaultStore): Deleted.
(API::ContentExtensionStore::storeWithPath): Deleted.
(API::ContentExtensionStore::ContentExtensionStore): Deleted.
(API::ContentExtensionStore::~ContentExtensionStore): Deleted.
(API::ContentExtensionMetaData::fileSize): Deleted.
(API::encodeContentExtensionMetaData): Deleted.
(API::decodeContentExtensionMetaData): Deleted.
(API::openAndMapContentExtension): Deleted.
(API::ContentExtensionStore::lookupContentExtension): Deleted.
(API::ContentExtensionStore::getAvailableContentExtensionIdentifiers): Deleted.
(API::ContentExtensionStore::compileContentExtension): Deleted.
(API::ContentExtensionStore::removeContentExtension): Deleted.
(API::ContentExtensionStore::synchronousRemoveAllContentExtensions): Deleted.
(API::ContentExtensionStore::invalidateContentExtensionVersion): Deleted.
(API::ContentExtensionStore::getContentExtensionSource): Deleted.
(API::contentExtensionStoreErrorCategory): Deleted.
* UIProcess/API/APIContentRuleListStore.h: Copied from Source/WebKit2/UIProcess/API/APIContentExtensionStore.h.
(API::make_error_code):
* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/WKPageGroup.cpp:
* UIProcess/API/C/WKUserContentControllerRef.cpp:
(WKUserContentControllerAddUserContentFilter):
(WKUserContentControllerRemoveAllUserContentFilters):
* UIProcess/API/C/WKUserContentExtensionStoreRef.cpp:
(WKUserContentExtensionStoreGetTypeID):
* UIProcess/API/Cocoa/APIUserContentExtensionStoreCocoa.mm:
(API::ContentRuleListStore::defaultStorePath):
(API::ContentExtensionStore::defaultStorePath): Deleted.
* UIProcess/API/Cocoa/WKContentExtension.h: Removed.
* UIProcess/API/Cocoa/WKContentExtension.mm: Removed.
* UIProcess/API/Cocoa/WKContentExtensionInternal.h: Removed.
* UIProcess/API/Cocoa/WKContentExtensionStore.h: Removed.
* UIProcess/API/Cocoa/WKContentExtensionStore.mm: Removed.
* UIProcess/API/Cocoa/WKContentExtensionStoreInternal.h: Removed.
* UIProcess/API/Cocoa/WKContentExtensionStorePrivate.h: Removed.
* UIProcess/API/Cocoa/WKContentRuleList.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtension.h.
* UIProcess/API/Cocoa/WKContentRuleList.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtension.mm.
(-[WKContentRuleList dealloc]):
(-[WKContentRuleList _apiObject]):
(-[WKContentRuleList identifier]):
(-[WKContentExtension dealloc]): Deleted.
(-[WKContentExtension _apiObject]): Deleted.
(-[WKContentExtension identifier]): Deleted.
* UIProcess/API/Cocoa/WKContentRuleListInternal.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionInternal.h.
(WebKit::wrapper):
* UIProcess/API/Cocoa/WKContentRuleListStore.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStore.h.
* UIProcess/API/Cocoa/WKContentRuleListStore.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStore.mm.
(toWKErrorCode):
(-[WKContentRuleListStore dealloc]):
(+[WKContentRuleListStore defaultStore]):
(+[WKContentRuleListStore storeWithURL:]):
(-[WKContentRuleListStore compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:]):
(-[WKContentRuleListStore _compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:releasesArgument:]):
(-[WKContentRuleListStore lookUpContentRuleListForIdentifier:completionHandler:]):
(-[WKContentRuleListStore getAvailableContentRuleListIdentifiers:]):
(-[WKContentRuleListStore removeContentRuleListForIdentifier:completionHandler:]):
(-[WKContentRuleListStore _apiObject]):
(-[WKContentRuleListStore _removeAllContentRuleLists]):
(-[WKContentRuleListStore _invalidateContentRuleListVersionForIdentifier:]):
(-[WKContentRuleListStore _getContentRuleListSourceForIdentifier:completionHandler:]):
(-[WKContentRuleListStore _compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:]):
(-[WKContentExtensionStore dealloc]): Deleted.
(+[WKContentExtensionStore defaultStore]): Deleted.
(+[WKContentExtensionStore storeWithURL:]): Deleted.
(-[WKContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]): Deleted.
(-[WKContentExtensionStore _compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:releasesArgument:]): Deleted.
(-[WKContentExtensionStore lookUpContentExtensionForIdentifier:completionHandler:]): Deleted.
(-[WKContentExtensionStore getAvailableContentExtensionIdentifiers:]): Deleted.
(-[WKContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]): Deleted.
(-[WKContentExtensionStore _apiObject]): Deleted.
(-[WKContentExtensionStore _removeAllContentExtensions]): Deleted.
(-[WKContentExtensionStore _invalidateContentExtensionVersionForIdentifier:]): Deleted.
(-[WKContentExtensionStore _getContentExtensionSourceForIdentifier:completionHandler:]): Deleted.
(-[WKContentExtensionStore _compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]): Deleted.
* UIProcess/API/Cocoa/WKContentRuleListStoreInternal.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStoreInternal.h.
(WebKit::wrapper):
* UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStorePrivate.h.
* UIProcess/API/Cocoa/WKError.h:
* UIProcess/API/Cocoa/WKError.mm:
(localizedDescriptionForErrorCode):
* UIProcess/API/Cocoa/WKUserContentController.h:
* UIProcess/API/Cocoa/WKUserContentController.mm:
(-[WKUserContentController addContentRuleList:]):
(-[WKUserContentController removeContentRuleList:]):
(-[WKUserContentController removeAllContentRuleLists]):
(-[WKUserContentController _addUserContentFilter:]):
(-[WKUserContentController _removeUserContentFilter:]):
(-[WKUserContentController _removeAllUserContentFilters]):
(-[WKUserContentController addContentExtension:]): Deleted.
(-[WKUserContentController removeContentExtension:]): Deleted.
(-[WKUserContentController removeAllContentExtensions]): Deleted.
* UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:
(toUserContentRuleListStoreError):
(+[_WKUserContentExtensionStore defaultStore]):
(+[_WKUserContentExtensionStore storeWithURL:]):
(-[_WKUserContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]):
(-[_WKUserContentExtensionStore lookupContentExtensionForIdentifier:completionHandler:]):
(-[_WKUserContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]):
(-[_WKUserContentExtensionStore _apiObject]):
(-[_WKUserContentExtensionStore _removeAllContentExtensions]):
(-[_WKUserContentExtensionStore _invalidateContentExtensionVersionForIdentifier:]):
(-[_WKUserContentExtensionStore _initWithWKContentRuleListStore:]):
(toUserContentExtensionStoreError): Deleted.
(-[_WKUserContentExtensionStore _initWithWKContentExtensionStore:]): Deleted.
* UIProcess/API/Cocoa/_WKUserContentExtensionStoreInternal.h:
* UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
* UIProcess/API/Cocoa/_WKUserContentFilter.mm:
(-[_WKUserContentFilter _apiObject]):
(-[_WKUserContentFilter _initWithWKContentRuleList:]):
(-[_WKUserContentFilter _initWithWKContentExtension:]): Deleted.
* UIProcess/API/Cocoa/_WKUserContentFilterInternal.h:
* UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
* UIProcess/UserContent/WebUserContentControllerProxy.cpp:
(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::addContentRuleList):
(WebKit::WebUserContentControllerProxy::removeContentRuleList):
(WebKit::WebUserContentControllerProxy::removeAllContentRuleLists):
(WebKit::WebUserContentControllerProxy::addContentExtension): Deleted.
(WebKit::WebUserContentControllerProxy::removeContentExtension): Deleted.
(WebKit::WebUserContentControllerProxy::removeAllContentExtensions): Deleted.
* UIProcess/UserContent/WebUserContentControllerProxy.h:
* UIProcess/WebPageGroup.cpp:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/UserContent/WebUserContentController.cpp:
(WebKit::WebUserContentController::addContentRuleLists):
(WebKit::WebUserContentController::removeContentRuleList):
(WebKit::WebUserContentController::removeAllContentRuleLists):
(WebKit::WebUserContentController::addContentExtensions): Deleted.
(WebKit::WebUserContentController::removeContentExtension): Deleted.
(WebKit::WebUserContentController::removeAllContentExtensions): Deleted.
* WebProcess/UserContent/WebUserContentController.h:
* WebProcess/UserContent/WebUserContentController.messages.in:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_backgroundCPULimit):
2017-05-12 Jeremy Jones <jeremyj@apple.com>
Add objc version of WK2 UIPageClient setHasVideoInPictureInPicture and rename it to hasVideoInPictureInPictureDidChange.
https://bugs.webkit.org/show_bug.cgi?id=172048
rdar://problem/32163054
Reviewed by Simon Fraser.
Rename UIPageClient setHasVideoInPictureInPicture to hasVideoInPictureInPictureDidChange.
Add missing _allowsPictureInPictureMediaPlayback property to WKPreferences.
Add -hasVideoInPictureInPictureDidChange to UIDelegate.
* UIProcess/API/APIUIClient.h:
(API::UIClient::hasVideoInPictureInPictureDidChange):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/C/WKPageUIClient.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _allowsPictureInPictureMediaPlayback]):
(-[WKPreferences _setAllowsPictureInPictureMediaPlayback:]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::hasVideoInPictureInPictureDidChange):
* UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm:
(WebKit::WebVideoFullscreenManagerProxy::setupFullscreenWithID):
(WebKit::WebVideoFullscreenManagerProxy::fullscreenModeChanged):
2017-05-12 David Quesada <david_quesada@apple.com>
Add SPI for overriding WKWebView's clipping behavior for _visibleContentRect
https://bugs.webkit.org/show_bug.cgi?id=172000
rdar://problem/32144756
Reviewed by Simon Fraser.
Extract -[WKWebView _visibleContentRect]'s use of -_scroller to a new property
_enclosingViewForExposedRectComputation, which is declared in the private
header for subclasses to implement custom logic for determining the view to
clip rendering to.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _enclosingViewForExposedRectComputation]):
(-[WKWebView _visibleRectInEnclosingView:]):
(-[WKWebView _visibleContentRect]):
(-[WKWebView _visibleRectInEnclosingScrollView:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
2017-05-12 Chris Dumez <cdumez@apple.com>
Stop using PassRefPtr under WebKit2/UIProcess
https://bugs.webkit.org/show_bug.cgi?id=172029
Reviewed by Alex Christensen.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _takeViewSnapshot]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::registerEditCommand):
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
(getIconSurfaceSynchronously):
* UIProcess/API/gtk/WebKitWebContext.cpp:
* UIProcess/API/wpe/PageClientImpl.cpp:
(WebKit::PageClientImpl::registerEditCommand):
* UIProcess/API/wpe/PageClientImpl.h:
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::registerEditCommand):
* UIProcess/DefaultUndoController.cpp:
(WebKit::DefaultUndoController::registerEditCommand):
* UIProcess/DefaultUndoController.h:
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::create):
* UIProcess/Downloads/DownloadProxy.h:
* UIProcess/GeolocationPermissionRequestManagerProxy.cpp:
(WebKit::GeolocationPermissionRequestManagerProxy::createRequest):
* UIProcess/GeolocationPermissionRequestManagerProxy.h:
* UIProcess/InspectorServer/HTTPRequest.cpp:
(WebKit::HTTPRequest::parseHTTPRequestFromBuffer):
* UIProcess/InspectorServer/HTTPRequest.h:
* UIProcess/InspectorServer/WebInspectorServer.cpp:
(WebKit::WebInspectorServer::didReceiveUnrecognizedHTTPRequest):
(WebKit::WebInspectorServer::didReceiveWebSocketUpgradeHTTPRequest):
(WebKit::WebInspectorServer::didEstablishWebSocketConnection):
* UIProcess/InspectorServer/WebInspectorServer.h:
* UIProcess/InspectorServer/WebSocketServerClient.h:
(WebKit::WebSocketServerClient::didReceiveUnrecognizedHTTPRequest):
(WebKit::WebSocketServerClient::didReceiveWebSocketUpgradeHTTPRequest):
(WebKit::WebSocketServerClient::didEstablishWebSocketConnection):
* UIProcess/InspectorServer/WebSocketServerConnection.cpp:
(WebKit::WebSocketServerConnection::readHTTPMessage):
(WebKit::WebSocketServerConnection::upgradeToWebSocketServerConnection):
* UIProcess/InspectorServer/WebSocketServerConnection.h:
* UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp:
(WebKit::NotificationPermissionRequestManagerProxy::createRequest):
* UIProcess/Notifications/NotificationPermissionRequestManagerProxy.h:
* UIProcess/Notifications/WebNotificationProvider.cpp:
(WebKit::WebNotificationProvider::notificationPermissions):
* UIProcess/Notifications/WebNotificationProvider.h:
* UIProcess/PageClient.h:
* UIProcess/Storage/LocalStorageDatabase.cpp:
* UIProcess/WebContextMenuListenerProxy.h:
* UIProcess/WebCookieManagerProxy.h:
* UIProcess/WebEditCommandProxy.cpp:
(WebKit::WebEditCommandProxy::unapply):
(WebKit::WebEditCommandProxy::reapply):
* UIProcess/WebEditCommandProxy.h:
* UIProcess/WebGrammarDetail.cpp:
(WebKit::WebGrammarDetail::create):
* UIProcess/WebGrammarDetail.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::ExceededDatabaseQuotaRecords::createRecord):
(WebKit::WebPageProxy::registerEditCommand):
(WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
(WebKit::WebPageProxy::exceededDatabaseQuota):
(WebKit::WebPageProxy::reachedApplicationCacheOriginQuota):
(WebKit::WebPageProxy::takeViewSnapshot):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::plugInAutoStartOriginHashes):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(-[WKEditCommandObjC initWithWebEditCommandProxy:]):
(WebKit::PageClientImpl::registerEditCommand):
(WebKit::PageClientImpl::saveImageToLibrary):
(WebKit::PageClientImpl::setDragImage):
(WebKit::PageClientImpl::takeViewSnapshot):
* UIProcess/ios/WKGeolocationProviderIOS.mm:
(-[WKWebAllowDenyPolicyListener initWithPermissionRequestProxy:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::saveImageToLibrary):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::registerEditCommand):
(WebKit::PageClientImpl::setDragImage):
(WebKit::PageClientImpl::setPromisedDataForImage):
(WebKit::PageClientImpl::takeViewSnapshot):
* UIProcess/mac/WKImmediateActionController.mm:
(-[WKImmediateActionController _webHitTestResult]):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setDragImage):
(WebKit::WebPageProxy::setPromisedDataForImage):
* WebProcess/IconDatabase/WebIconDatabaseProxy.h:
2017-05-12 Jeremy Jones <jeremyj@apple.com>
Add UIClient callback for when picture-in-picture is activated.
https://bugs.webkit.org/show_bug.cgi?id=172023
Reviewed by Simon Fraser.
Add WKUIPageClientV10 with setHasVideoInPictureInPicture.
* UIProcess/API/APIUIClient.h:
(API::UIClient::setHasVideoInPictureInPicture):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/C/WKPageUIClient.h:
* UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm:
(WebKit::WebVideoFullscreenManagerProxy::setupFullscreenWithID):
(WebKit::WebVideoFullscreenManagerProxy::fullscreenModeChanged):
2017-05-12 Brent Fulgham <bfulgham@apple.com>
REGRESSION(r213564): Flash audio playback failures
https://bugs.webkit.org/show_bug.cgi?id=171876
<rdar://problem/32082745>
Reviewed by Alexey Proskuryakov.
The IOKit property filters added in r213564 need to be expanded to support
some Flash features.
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
2017-05-12 Brent Fulgham <bfulgham@apple.com>
[WK2][macOS] Add a mach-lookup exception for 'com.apple.analyticsd'
https://bugs.webkit.org/show_bug.cgi?id=172040
<rdar://problem/31765514>
Reviewed by Alexey Proskuryakov.
* DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
* WebProcess/com.apple.WebProcess.sb.in:
2017-05-12 Simon Fraser <simon.fraser@apple.com>
Add some logging for layer tree commits, and resize and orientation change events
https://bugs.webkit.org/show_bug.cgi?id=172041
Reviewed by Tim Horton.
Add some logging that's useful during rotation investigations.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didCommitLayerTree:]):
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _didCommitLayerTree:]):
2017-05-12 Andy Estes <aestes@apple.com>
[Cocoa] Stop setting a status on PKPaymentRequestShippingContactUpdate when there are errors
https://bugs.webkit.org/show_bug.cgi?id=172036
<rdar://problem/31587957>
Reviewed by Anders Carlsson.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
2017-05-12 Chris Dumez <cdumez@apple.com>
Stop using PassRefPtr under WebKit2/Shared
https://bugs.webkit.org/show_bug.cgi?id=172017
Reviewed by Antti Koivisto.
* Shared/API/APIDictionary.cpp:
(API::Dictionary::add):
(API::Dictionary::set):
* Shared/API/APIDictionary.h:
* Shared/API/APISecurityOrigin.h:
(API::SecurityOrigin::createFromString):
(API::SecurityOrigin::create):
(API::SecurityOrigin::securityOrigin):
(API::SecurityOrigin::SecurityOrigin):
* Shared/API/APISerializedScriptValue.h:
(API::SerializedScriptValue::create):
(API::SerializedScriptValue::SerializedScriptValue):
* Shared/API/c/WKSharedAPICast.h:
(WebKit::ProxyingRefPtr::ProxyingRefPtr):
* Shared/APIWebArchiveResource.h:
* Shared/APIWebArchiveResource.mm:
(API::WebArchiveResource::create):
(API::WebArchiveResource::WebArchiveResource):
* Shared/AsyncRequest.h:
(WebKit::AsyncRequestMap::add):
* Shared/BlobDataFileReferenceWithSandboxExtension.cpp:
(WebKit::BlobDataFileReferenceWithSandboxExtension::BlobDataFileReferenceWithSandboxExtension):
* Shared/BlobDataFileReferenceWithSandboxExtension.h:
* Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
(WebKit::CoordinatedBackingStoreTile::setBackBuffer):
(WebKit::CoordinatedBackingStore::updateTile):
* Shared/CoordinatedGraphics/CoordinatedBackingStore.h:
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::createUpdateAtlas):
(WebKit::CoordinatedGraphicsScene::updateImageBacking):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* Shared/Plugins/Netscape/NetscapePluginModule.cpp:
(WebKit::NetscapePluginModule::getOrCreate):
* Shared/Plugins/Netscape/NetscapePluginModule.h:
* Shared/VisitedLinkTable.cpp:
(WebKit::VisitedLinkTable::setSharedMemory):
* Shared/VisitedLinkTable.h:
* Shared/WebBackForwardListItem.h:
(WebKit::WebBackForwardListItem::setSnapshot):
* Shared/WebContextMenuItem.cpp:
(WebKit::WebContextMenuItem::create):
* Shared/WebContextMenuItem.h:
* Shared/WebGeolocationPosition.h:
* Shared/WebRenderLayer.cpp:
(WebKit::WebRenderLayer::create):
(WebKit::WebRenderLayer::createArrayFromLayerList):
(WebKit::WebRenderLayer::WebRenderLayer):
* Shared/WebRenderLayer.h:
* Shared/WebRenderObject.cpp:
(WebKit::WebRenderObject::create):
(WebKit::WebRenderObject::WebRenderObject):
* Shared/WebRenderObject.h:
* UIProcess/VisitedLinkStore.cpp:
(WebKit::VisitedLinkStore::resizeTable):
* WebProcess/WebPage/VisitedLinkTableController.cpp:
(WebKit::VisitedLinkTableController::setVisitedLinkTable):
2017-05-11 Brady Eidson <beidson@apple.com>
[WKWebsiteDataStore removeDataOfTypes:...] doesn't work for IndexedDB if the data store has a custom IDB path.
<rdar://problem/30612463> and https://bugs.webkit.org/show_bug.cgi?id=171994
Reviewed by Andy Estes.
Informal review by Maureen Daum.
* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::deleteWebsiteData): Instead of accessing the m_idbServers set directly, make
the method call that creates the server on demand.
(WebKit::DatabaseProcess::deleteWebsiteDataForOrigins): Ditto.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureDatabaseProcessAndWebsiteDataStore): Not only create the DatabaseProcess if necessary,
but also notify it about the passed-in WebsiteDataStore.
(WebKit::WebProcessPool::getDatabaseProcessConnection):
(WebKit::WebProcessPool::ensureDatabaseProcess): Deleted.
* UIProcess/WebProcessPool.h:
(WebKit::WebProcessPool::sendToDatabaseProcessRelaunchingIfNecessary):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::databaseProcessParameters):
2017-05-11 Dean Jackson <dino@apple.com>
Modern Media Controls shouldn't be an experimental feature
https://bugs.webkit.org/show_bug.cgi?id=172004
<rdar://problem/32146522>
Reviewed by Simon Fraser.
This is either always on or always off, so shouldn't
show up in an Experimental Features menu.
* Shared/WebPreferencesDefinitions.h: Move ModernMediaControlsEnabled
to a normal preference.
2017-05-11 Tim Horton <timothy_horton@apple.com>
Mail spins launching spell checker when typing
https://bugs.webkit.org/show_bug.cgi?id=171986
<rdar://problem/26305327>
Reviewed by Beth Dakin.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setEditable:]):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::didBecomeEditable):
(WebKit::WebViewImpl::startObservingFontPanel): Deleted.
Asynchronously pre-warm the spell checker when a WKWebView becomes editable.
2017-05-11 Chris Dumez <cdumez@apple.com>
Stop using PassRefPtr in platform/graphics
https://bugs.webkit.org/show_bug.cgi?id=171977
Reviewed by Alex Christensen.
Build fix.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::createBackingStoreIfNeeded):
(WebKit::CoordinatedGraphicsScene::removeBackingStoreIfNeeded):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<Cursor>::decode):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::createImageBackingIfNeeded):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:
(WebKit::GraphicsLayerCARemote::createPlatformCALayer):
(WebKit::GraphicsLayerCARemote::createPlatformCAAnimation):
* WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
* WebProcess/WebPage/mac/PlatformCAAnimationRemote.h:
* WebProcess/WebPage/mac/PlatformCAAnimationRemote.mm:
(WebKit::PlatformCAAnimationRemote::copy):
2017-05-11 Tim Horton <timothy_horton@apple.com>
Data loss when saving a PDF form where only radio buttons/checkboxes were modified
https://bugs.webkit.org/show_bug.cgi?id=171991
<rdar://problem/32115945>
Reviewed by Andy Estes.
* WebProcess/Plugins/PDF/PDFLayerControllerSPI.h:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(-[WKPDFLayerControllerDelegate didChangeAnnotationState]):
Mark the PDF as dirty (so we re-encode it when asked to save) if annotations
that only PDFKit knows about change.
2017-05-11 Joseph Pecoraro <pecoraro@apple.com>
Remove Vibration API
https://bugs.webkit.org/show_bug.cgi?id=171766
Rubber-stamped by Alexey Proskuryakov.
* CMakeLists.txt:
* Shared/API/APIObject.h:
* Shared/API/c/WKBase.h:
* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/WKPage.cpp:
(WKPageGetVibration): Deleted.
* UIProcess/API/C/WKPage.h:
* UIProcess/API/C/WKVibration.cpp: Removed.
* UIProcess/API/C/WKVibration.h: Removed.
* UIProcess/WebPageProxy.cpp:
(WebKit::m_weakPtrFactory):
(WebKit::WebPageProxy::resetState):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::vibration): Deleted.
* UIProcess/WebVibrationProvider.cpp: Removed.
* UIProcess/WebVibrationProvider.h: Removed.
* UIProcess/WebVibrationProxy.cpp: Removed.
* UIProcess/WebVibrationProxy.h: Removed.
* UIProcess/WebVibrationProxy.messages.in: Removed.
* WebProcess/WebCoreSupport/WebVibrationClient.cpp: Removed.
* WebProcess/WebCoreSupport/WebVibrationClient.h: Removed.
* WebProcess/WebPage/WebPage.cpp:
2017-05-11 Andy Estes <aestes@apple.com>
Fix a spelling mistake in ApplePayErrorCode
https://bugs.webkit.org/show_bug.cgi?id=171981
<rdar://problem/32136567>
Reviewed by Beth Dakin.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toPKPaymentErrorCode):
(WebKit::toPKPaymentAuthorizationStatus):
2017-05-11 John Wilander <wilander@apple.com>
Resource Load Statistics: Enable configuration through preferences
https://bugs.webkit.org/show_bug.cgi?id=171949
<rdar://problem/31894518>
Reviewed by Alex Christensen.
* Shared/WebPreferencesDefinitions.h:
Added ResourceLoadStatisticsTimeToLiveUserInteraction,
ResourceLoadStatisticsTimeToLiveCookiePartitionFree, and
ResourceLoadStatisticsReducedTimestampResolution.
* UIProcess/Cocoa/WebResourceLoadStatisticsManagerCocoa.mm: Added.
(WebKit::WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded):
* UIProcess/WebResourceLoadStatisticsManager.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
Now calls WebResourceLoadStatisticsManager::registerUserDefaultsIfNeeded().
* WebKit2.xcodeproj/project.pbxproj:
2017-05-11 Claudio Saavedra <csaavedra@igalia.com>
[GTK] Remove notifications guards from GTK API layer
https://bugs.webkit.org/show_bug.cgi?id=170014
Reviewed by Michael Catanzaro.
ENABLE_NOTIFICATIONS in the GTK port is a private option and
disabling it is unsupported, hence remove its guards from the GTK API
layer.
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):
2017-05-11 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.2 release.
* gtk/NEWS: Add release notes for 2.17.2.
2017-05-11 Claudio Saavedra <csaavedra@igalia.com>
[GTK] JavaScript prompt uses title of page to be loaded rather than title of current page
https://bugs.webkit.org/show_bug.cgi?id=152690
Reviewed by Michael Catanzaro.
webkit_web_view_get_uri() returns the page to be loaded, use
internal api for this.
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewCreateJavaScriptDialog):
2017-05-10 Tim Horton <timothy_horton@apple.com>
Null deref in WebPage::dictionaryPopupInfoForRange
https://bugs.webkit.org/show_bug.cgi?id=171959
<rdar://problem/20886282>
Reviewed by Beth Dakin.
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::dictionaryPopupInfoForRange):
Speculative fix for non-reproducible crash when the startContainer of
the range is in an anonymous node.
2017-05-09 Sam Weinig <sam@webkit.org>
Remove support for legacy Notifications
https://bugs.webkit.org/show_bug.cgi?id=171487
Reviewed by Jon Lee.
* Configurations/FeatureDefines.xcconfig:
* Shared/WebProcessCreationParameters.cpp:
* Shared/WebProcessCreationParameters.h:
* UIProcess/WebProcessPool.cpp:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
* WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
* WebProcess/Notifications/NotificationPermissionRequestManager.h:
* WebProcess/Notifications/WebNotificationManager.cpp:
* WebProcess/Notifications/WebNotificationManager.h:
* WebProcess/WebCoreSupport/WebNotificationClient.cpp:
* WebProcess/WebCoreSupport/WebNotificationClient.h:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebProcess.cpp:
Remove legacy notification specific code.
2017-05-10 Tim Horton <timothy_horton@apple.com>
Add an experimental feature flag for viewport-fit
https://bugs.webkit.org/show_bug.cgi?id=171948
<rdar://problem/31995518>
Reviewed by Simon Fraser.
* Shared/WebPreferencesDefinitions.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Add an experimental feature flag.
2017-05-10 Alex Christensen <achristensen@webkit.org>
Include headers in WebKit.h
https://bugs.webkit.org/show_bug.cgi?id=171943
Reviewed by Dan Bernstein.
* Shared/API/Cocoa/WebKit.h:
2017-05-10 Timothy Horton <timothy_horton@apple.com>
Disable block selection for dynamic selection granularity
https://bugs.webkit.org/show_bug.cgi?id=171908
<rdar://problem/32098024>
Reviewed by Enrica Casucci.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _allowsBlockSelection]):
(-[WKWebViewConfiguration _setAllowsBlockSelection:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
Add a private configuration parameter to re-enable block selection.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _allowsBlockSelection]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/Cocoa/VersionChecks.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::allowsBlockSelection):
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:
Plumb allowsBlockSelection through from WKWebViewConfiguration to WebPage.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView useSelectionAssistantWithGranularity:]):
(-[WKContentView _startAssistingKeyboard]):
(-[WKContentView _stopAssistingKeyboard]):
(toUIWebSelectionMode): Deleted.
(-[WKContentView useSelectionAssistantWithMode:]): Deleted.
Stop needlessly converting to UIWebSelectionMode.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::shouldSwitchToBlockModeForHandle):
Don't switch to block selection unless allowsBlockSelection is set.
2017-05-10 Tim Horton <timothy_horton@apple.com>
Add an experimental feature flag for constant properties
https://bugs.webkit.org/show_bug.cgi?id=171913
<rdar://problem/31995518>
Reviewed by Ryosuke Niwa.
* Shared/WebPreferencesDefinitions.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Add an experimental feature flag.
2017-05-09 Dean Jackson <dino@apple.com>
Disable WebGL2 by default
https://bugs.webkit.org/show_bug.cgi?id=171894
<rdar://problem/32089917>
Reviewed by Tim Horton.
Some WASM and WebGL2 content is failing because it
detects our WebGL2RenderingContext, but doesn't realise
that we don't implement enough of it to be useful.
* Shared/WebPreferencesDefinitions.h:
2017-05-10 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r216563.
Revision caused 2 api failures
Reverted changeset:
"[MediaStream] deviceId constraint doesn't work with
getUserMedia"
https://bugs.webkit.org/show_bug.cgi?id=171877
http://trac.webkit.org/changeset/216563
2017-05-10 Claudio Saavedra <csaavedra@igalia.com>
[GTK] HTTP authentication dialog should focus on first input field
https://bugs.webkit.org/show_bug.cgi?id=151349
Reviewed by Michael Catanzaro.
Setting focus on a widget before it's mapped does nothing. Move
the call to the right place.
* UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
(webkitAuthenticationDialogInitialize):
(webkitAuthenticationDialogMap):
2017-05-10 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] -Wmissing-field-initializers triggered by RemoteInspectorServer.cpp:128
https://bugs.webkit.org/show_bug.cgi?id=171273
Reviewed by Carlos Garcia Campos.
* UIProcess/glib/RemoteInspectorClient.cpp:
(WebKit::RemoteInspectorClient::RemoteInspectorClient):
2017-05-09 Eric Carlson <eric.carlson@apple.com>
[MediaStream] deviceId constraint doesn't work with getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=171877
<rdar://problem/31899730>
Reviewed by Jer Noble.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<MediaConstraintsData>::encode): Encode deviceIDHashSalt.
(IPC::ArgumentCoder<MediaConstraintsData>::decode): Decode deviceIDHashSalt.
* UIProcess/UserMediaPermissionCheckProxy.cpp:
(WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): Initialize
completion handler, frame ID, and security origins.
(WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): Complete by calling
completion handler because we now sometimes request access info before calling gUM.
(WebKit::UserMediaPermissionCheckProxy::invalidate): Clear completion handler.
* UIProcess/UserMediaPermissionCheckProxy.h:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::FrameAuthorizationState::FrameAuthorizationState): Take security origins, not
UserMediaPermissionRequestProxy, so it can be constructed with a UserMediaPermissionCheckProxy.
(WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual): Ditto. Clear has salt
when origins don't match.
(WebKit::UserMediaPermissionRequestManagerProxy::stateForRequest): Templatize.
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): Fix typo.
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Ditto.
Don't set state for empty UIDs. Pass hash salt to web process.
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
The device ID hash salt is now required to validate constraints, so get it first.
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Helper
method used to get the device ID hash salt.
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Restructure
to use getUserMediaPermissionInfo.
(WebKit::UserMediaPermissionRequestManagerProxy::didCompleteUserMediaPermissionCheck): Deleted.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted): Add device ID
hash salt parameter.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::userMediaAccessWasGranted): Ditto.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::createCaptureSource): Use new MediaConstraintsData
constructor.
2017-05-09 Alex Christensen <achristensen@webkit.org>
Buffer media in NetworkProcess to reduce IPC overhead
https://bugs.webkit.org/show_bug.cgi?id=171834
<rdar://problem/31485485>
Reviewed by Jer Noble.
I have measured a significant CPU usage reduction when buffering media data in the NetworkProcess,
especially on arm64 processors. Buffering data in the NetworkProcess introduces no additional data
copies after r215686, and it reduces the number of messages sent from the NetworkProcess to the WebProcess,
each of which must also be forwarded to mediaserverd by AVFoundation. This reduces the number of messages
from thousands per second to a maximum of 20 per second. This adds 1/20 second additional latency in
media loading, which will probably not be noticed by most users. This also adds the possibility of large
allocations when decoding IPC messages in the WebProcess, and if that becomes the source of crashes we can
add a maximum buffered amount in addition to a maximum buffered time, but we are likely not to receive
so much data in 1/20 second to have problems allocating the buffer.
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::maximumBufferingTime):
Buffer data in the NetworkProcess for up to 50ms before sending it to the WebProcess in one message.
This value is used in NetworkResourceLoader::didReceiveBuffer to append to m_bufferedData instead of
sending the small chunks immediately.
2017-05-09 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r216545.
https://bugs.webkit.org/show_bug.cgi?id=171889
Caused a test failure (Requested by eric_carlson on #webkit).
Reverted changeset:
"[MediaStream] deviceId constraint doesn't work with
getUserMedia"
https://bugs.webkit.org/show_bug.cgi?id=171877
http://trac.webkit.org/changeset/216545
2017-05-09 Eric Carlson <eric.carlson@apple.com>
[MediaStream] deviceId constraint doesn't work with getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=171877
<rdar://problem/31899730>
Reviewed by Jer Noble.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<MediaConstraintsData>::encode): Encode deviceIDHashSalt.
(IPC::ArgumentCoder<MediaConstraintsData>::decode): Decode deviceIDHashSalt.
* UIProcess/UserMediaPermissionCheckProxy.cpp:
(WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): Initialize
completion handler, frame ID, and security origins.
(WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): Complete by calling
completion handler because we now sometimes request access info before calling gUM.
(WebKit::UserMediaPermissionCheckProxy::invalidate): Clear completion handler.
* UIProcess/UserMediaPermissionCheckProxy.h:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::FrameAuthorizationState::FrameAuthorizationState): Take security origins, not
UserMediaPermissionRequestProxy, so it can be constructed with a UserMediaPermissionCheckProxy.
(WebKit::FrameAuthorizationState::ensureSecurityOriginsAreEqual): Ditto. Clear has salt
when origins don't match.
(WebKit::UserMediaPermissionRequestManagerProxy::stateForRequest): Templatize.
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): Fix typo.
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Ditto.
Don't set state for empty UIDs. Pass hash salt to web process.
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
The device ID hash salt is now required to validate constraints, so get it first.
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): Helper
method used to get the device ID hash salt.
(WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): Restructure
to use getUserMediaPermissionInfo.
(WebKit::UserMediaPermissionRequestManagerProxy::didCompleteUserMediaPermissionCheck): Deleted.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted): Add device ID
hash salt parameter.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::userMediaAccessWasGranted): Ditto.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::createCaptureSource): Use new MediaConstraintsData
constructor.
2017-05-10 Dean Jackson <dino@apple.com>
Restrict SVG filters to accessible security origins
https://bugs.webkit.org/show_bug.cgi?id=118689
<rdar://problem/27362159>
Reviewed by Brent Fulgham.
Update parameter lists.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::paint):
* WebProcess/Plugins/PluginView.h:
2017-05-09 Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com>
[Coordinated Graphics] Debug Visuals don't hide
https://bugs.webkit.org/show_bug.cgi?id=162704
Reviewed by Žan Doberšek.
* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
(IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::encode):
(IPC::ArgumentCoder<CoordinatedGraphicsLayerState>::decode):
(IPC::ArgumentCoder<DebugVisuals>::encode):
(IPC::ArgumentCoder<DebugVisuals>::decode):
The encoder and decoder for DebugVisuals have been added.
* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.h:
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::setLayerState):
Update the debug visuals of a layer according to the DebugVisuals information
if the debugVisualsChanged flag is set to true.
2017-05-09 Zan Dobersek <zdobersek@igalia.com>
Upstream the WPE port
https://bugs.webkit.org/show_bug.cgi?id=171110
Reviewed by Alex Christensen.
webkit-dev thread:
https://lists.webkit.org/pipermail/webkit-dev/2017-April/028923.html
Existing files changed to properly use PLATFORM(WPE) build guards or other
WPE-specific additions (e.g. pasteboard support).
In-file changes removed from this ChangeLog entry for brevity.
* Platform/IPC/glib/GSocketMonitor.cpp:
* PlatformWPE.cmake: Added.
* Scripts/generate-forwarding-headers.pl:
* Shared/API/c/WKBase.h:
* Shared/API/c/wpe/WKBaseWPE.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* Shared/API/c/wpe/WebKit.h: Added.
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* Shared/DrawingAreaInfo.h:
* Shared/NativeWebKeyboardEvent.h:
* Shared/NativeWebMouseEvent.h:
* Shared/NativeWebTouchEvent.h:
* Shared/NativeWebWheelEvent.h:
* Shared/WebCoreArgumentCoders.cpp:
* Shared/WebCoreArgumentCoders.h:
* Shared/WebPreferencesDefinitions.h:
* Shared/wpe/NativeWebKeyboardEventWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* Shared/wpe/NativeWebMouseEventWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* Shared/wpe/NativeWebTouchEventWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* Shared/wpe/NativeWebWheelEventWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* Shared/wpe/ProcessExecutablePathWPE.cpp: Added.
* Shared/wpe/WebEventFactory.cpp: Added.
* Shared/wpe/WebEventFactory.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/wpe/WKAPICastWPE.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/API/C/wpe/WKView.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/API/C/wpe/WKView.h: Copied from Source/WebKit2/Shared/NativeWebWheelEvent.h.
* UIProcess/API/wpe/CompositingManagerProxy.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/API/wpe/CompositingManagerProxy.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/API/wpe/CompositingManagerProxy.messages.in: Added.
* UIProcess/API/wpe/DrawingAreaProxyWPE.cpp: Added.
* UIProcess/API/wpe/DrawingAreaProxyWPE.h: Copied from Source/WebKit2/Shared/NativeWebWheelEvent.h.
* UIProcess/API/wpe/PageClientImpl.cpp: Added.
* UIProcess/API/wpe/PageClientImpl.h: Added.
* UIProcess/API/wpe/ScrollGestureController.cpp: Added.
* UIProcess/API/wpe/ScrollGestureController.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/API/wpe/WPEView.cpp: Added.
* UIProcess/API/wpe/WPEView.h: Added.
* UIProcess/API/wpe/WPEViewClient.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/API/wpe/WPEViewClient.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/API/wpe/WebKit2InspectorGResourceBundle.xml: Added.
* UIProcess/ChildProcessProxy.cpp:
* UIProcess/Launcher/ProcessLauncher.h:
* UIProcess/Launcher/wpe/ProcessLauncherWPE.cpp: Added.
* UIProcess/WebInspectorProxy.h:
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
* UIProcess/wpe/TextCheckerWPE.cpp: Added.
* UIProcess/wpe/WebInspectorProxyWPE.cpp: Added.
* UIProcess/wpe/WebPageProxyWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/wpe/WebPasteboardProxyWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* UIProcess/wpe/WebPreferencesWPE.cpp: Copied from Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h.
* UIProcess/wpe/WebProcessPoolWPE.cpp: Added.
* WebKit2.xcodeproj/project.pbxproj:
* WebKit2Prefix.h:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebCoreSupport/wpe/WebContextMenuClientWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp: Added.
* WebProcess/WebCoreSupport/wpe/WebPopupMenuWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
* WebProcess/WebPage/DrawingArea.cpp:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/wpe/CompositingManager.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* WebProcess/WebPage/wpe/CompositingManager.h: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* WebProcess/WebPage/wpe/DrawingAreaWPE.cpp: Added.
* WebProcess/WebPage/wpe/DrawingAreaWPE.h: Added.
* WebProcess/WebPage/wpe/WebInspectorUIWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* WebProcess/WebPage/wpe/WebInspectorWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* WebProcess/WebPage/wpe/WebPageWPE.cpp: Copied from Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h.
* WebProcess/wpe/WebProcessMainWPE.cpp: Copied from Source/WebKit2/Shared/DrawingAreaInfo.h.
* wpe/wpe-webkit.pc.in: Added.
2017-05-09 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Building Webkit2Gtk without OpenGL fails.
https://bugs.webkit.org/show_bug.cgi?id=170959
Reviewed by Žan Doberšek.
* UIProcess/gtk/HardwareAccelerationManager.cpp:
(WebKit::HardwareAccelerationManager::HardwareAccelerationManager):
2017-05-08 Youenn Fablet <youenn@apple.com>
Follow-up to bug 171710: use more references and reject if either audio or video source creation is failing
https://bugs.webkit.org/show_bug.cgi?id=171824
Reviewed by Alex Christensen.
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
2017-05-08 Brent Fulgham <bfulgham@apple.com>
REGRESSION(r213564): Flash video playback failures
https://bugs.webkit.org/show_bug.cgi?id=171840
<rdar://problem/32041569>
Reviewed by Alexey Proskuryakov.
The sandbox restrictions added in r213564 to prevent access to unused iokit properties
blocked some items needed for Flash video playback. This change relaxes the sandbox
to allow this software to run properly.
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
2017-05-08 Alex Christensen <achristensen@webkit.org>
Reduce PassRefPtr use in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=171831
Reviewed by Chris Dumez.
* UIProcess/API/C/WKPageGroup.cpp:
(WKPageGroupCreateWithIdentifier):
* UIProcess/GenericCallback.h:
(WebKit::GenericCallback::create):
(WebKit::CallbackMap::put):
* UIProcess/StatisticsRequest.cpp:
(WebKit::StatisticsRequest::StatisticsRequest):
* UIProcess/StatisticsRequest.h:
(WebKit::StatisticsRequest::create):
* UIProcess/TextChecker.h:
* UIProcess/TextCheckerCompletion.cpp:
(WebKit::TextCheckerCompletion::create):
* UIProcess/TextCheckerCompletion.h:
* UIProcess/WebColorPicker.h:
(WebKit::WebColorPicker::create):
* UIProcess/WebConnectionToWebProcess.cpp:
(WebKit::WebConnectionToWebProcess::create):
* UIProcess/WebConnectionToWebProcess.h:
* UIProcess/WebContextInjectedBundleClient.cpp:
(WebKit::WebContextInjectedBundleClient::getInjectedBundleInitializationUserData):
* UIProcess/WebContextInjectedBundleClient.h:
* UIProcess/WebContextMenuListenerProxy.h:
(WebKit::WebContextMenuListenerProxy::create):
* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::create):
* UIProcess/WebCookieManagerProxy.h:
* UIProcess/WebEditCommandProxy.h:
(WebKit::WebEditCommandProxy::create):
* UIProcess/WebFormSubmissionListenerProxy.h:
(WebKit::WebFormSubmissionListenerProxy::create):
* UIProcess/WebFrameListenerProxy.h:
* UIProcess/WebFrameProxy.h:
(WebKit::WebFrameProxy::create):
* UIProcess/WebFullScreenManagerProxy.cpp:
(WebKit::WebFullScreenManagerProxy::create):
* UIProcess/WebFullScreenManagerProxy.h:
* UIProcess/WebGeolocationManagerProxy.cpp:
(WebKit::WebGeolocationManagerProxy::create):
* UIProcess/WebGeolocationManagerProxy.h:
* UIProcess/WebIconDatabase.cpp:
(WebKit::WebIconDatabase::create):
(WebKit::WebIconDatabase::iconDataForPageURL):
* UIProcess/WebIconDatabase.h:
* UIProcess/WebMediaSessionFocusManager.cpp:
(WebKit::WebMediaSessionFocusManager::create):
* UIProcess/WebMediaSessionFocusManager.h:
* UIProcess/WebOpenPanelResultListenerProxy.h:
(WebKit::WebOpenPanelResultListenerProxy::create):
* UIProcess/WebPageGroup.cpp:
(WebKit::WebPageGroup::create):
* UIProcess/WebPageGroup.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::forceRepaint):
(WebKit::WebPageProxy::computePagesForPrinting):
(WebKit::WebPageProxy::drawRectToImage):
(WebKit::WebPageProxy::drawPagesToPDF):
(WebKit::WebPageProxy::drawPagesForPrinting):
(WebKit::WebPageProxy::callAfterNextPresentationUpdate):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::TextChecker::requestCheckingOfString):
* UIProcess/mac/TextCheckerMac.mm:
(WebKit::TextChecker::requestCheckingOfString):
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
* UIProcess/mac/WKPrintingView.mm:
(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
(-[WKPrintingView _drawPreview:]):
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
(WebKit::NetscapePlugin::loadURL):
(WebKit::NetscapePlugin::manualStreamDidReceiveResponse):
* WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:
(WebKit::NetscapePluginStream::NetscapePluginStream):
* WebProcess/Plugins/Netscape/NetscapePluginStream.h:
(WebKit::NetscapePluginStream::create):
* WebProcess/WebCoreSupport/SessionStateConversion.cpp:
(WebKit::toFormData):
2017-05-08 Youenn Fablet <youenn@apple.com>
Add support for reading and writing settings from UIProcess audio capture
https://bugs.webkit.org/show_bug.cgi?id=171633
Reviewed by Eric Carlson.
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
(WebKit::UserMediaCaptureManagerProxy::applyConstraints):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::setSettings):
(WebKit::UserMediaCaptureManager::Source::applyConstraintsSucceeded):
(WebKit::UserMediaCaptureManager::Source::applyConstraintsFailed):
(WebKit::UserMediaCaptureManager::createCaptureSource):
(WebKit::UserMediaCaptureManager::sourceSettingsChanged):
(WebKit::UserMediaCaptureManager::applyConstraints):
(WebKit::UserMediaCaptureManager::applyConstraintsSucceeded):
(WebKit::UserMediaCaptureManager::applyConstraintsFailed):
(WebKit::UserMediaCaptureManager::Source::setMuted): Deleted.
(WebKit::UserMediaCaptureManager::Source::setEnabled): Deleted.
* WebProcess/cocoa/UserMediaCaptureManager.h:
* WebProcess/cocoa/UserMediaCaptureManager.messages.in:
2017-05-08 Alex Christensen <achristensen@webkit.org>
Reduce PassRefPtr use
https://bugs.webkit.org/show_bug.cgi?id=171809
Reviewed by Chris Dumez.
* PluginProcess/PluginControllerProxy.cpp:
(WebKit::PluginControllerProxy::setInitializationReply):
* PluginProcess/PluginControllerProxy.h:
* PluginProcess/WebProcessConnection.cpp:
(WebKit::WebProcessConnection::destroyPlugin):
(WebKit::WebProcessConnection::createPlugin):
* PluginProcess/WebProcessConnection.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::runOpenPanel):
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::registerUndoStep):
* WebProcess/WebPage/VisitedLinkTableController.cpp:
(WebKit::VisitedLinkTableController::getOrCreate):
* WebProcess/WebPage/VisitedLinkTableController.h:
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::hitTest):
(WebKit::WebFrame::createSelectionSnapshot):
* WebProcess/WebPage/WebFrame.h:
* WebProcess/WebPage/WebOpenPanelResultListener.cpp:
(WebKit::WebOpenPanelResultListener::create):
(WebKit::WebOpenPanelResultListener::WebOpenPanelResultListener):
* WebProcess/WebPage/WebOpenPanelResultListener.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::unapplyEditCommand):
(WebKit::WebPage::reapplyEditCommand):
* WebProcess/WebPage/WebPageGroupProxy.cpp:
(WebKit::WebPageGroupProxy::create):
* WebProcess/WebPage/WebPageGroupProxy.h:
* WebProcess/WebPage/WebUndoStep.cpp:
(WebKit::WebUndoStep::create):
* WebProcess/WebPage/WebUndoStep.h:
(WebKit::WebUndoStep::step):
(WebKit::WebUndoStep::WebUndoStep):
* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::create):
(WebKit::PlatformCALayerRemote::clone):
(WebKit::PlatformCALayerRemote::animationForKey):
(WebKit::PlatformCALayerRemote::createCompatibleLayer):
* WebProcess/WebPage/mac/PlatformCALayerRemote.h:
* WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h:
* WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:
(WebKit::PlatformCALayerRemoteCustom::create):
(WebKit::PlatformCALayerRemoteCustom::clone):
2017-05-08 Jer Noble <jer.noble@apple.com>
[Mac] Audio capture fails when shouldCaptureAudioInUIProcess is set.
https://bugs.webkit.org/show_bug.cgi?id=171710
Reviewed by Eric Carlson.
RealtimeMediaSourceCenterMac's setUseAVFoundationAudioCapture() is now accessed via a singleton.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs):
2017-05-08 Andy Estes <aestes@apple.com>
[macOS] com.macromedia.Flash Player ESR.plugin.sb is installed outside of PlugInSandboxProfiles
https://bugs.webkit.org/show_bug.cgi?id=171774
Reviewed by Dan Bernstein.
* WebKit2.xcodeproj/project.pbxproj:
2017-05-08 Youenn Fablet <youenn@apple.com>
Clean UserMediaCaptureManager::capabilities return value
https://bugs.webkit.org/show_bug.cgi?id=171808
Reviewed by Eric Carlson.
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::capabilities):
* WebProcess/cocoa/UserMediaCaptureManager.h:
2017-05-08 Chris Dumez <cdumez@apple.com>
Move 'style' from Element to HTMLElement / SVGElement and make it settable
https://bugs.webkit.org/show_bug.cgi?id=171795
Reviewed by Alex Christensen.
Build fix.
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::shouldApplyStyle):
2017-05-07 Simon Fraser <simon.fraser@apple.com>
[iOS] REGRESSION (r209409): getBoundingClientRect is wrong for fixed-position elements in resize/orientationchange
https://bugs.webkit.org/show_bug.cgi?id=171140
rdar://problem/31765167
Reviewed by Sam Weinig.
WebPage::dynamicViewportSizeUpdate() is called during rotation, and does a layout which needs to have
an up-to-date layout viewport, since the layout viewport state is detectable in orientationchange and
resize events via fetching the client rect of fixed elements. Normally we send in the layout viewport
from the UI process, but in this case we need to compute one in the web process. So factor code
into FrameView to do the computation, called from both places.
* UIProcess/WebPageProxy.h:
* UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxy::customFixedPositionRect):
* UIProcess/ios/WKContentView.mm:
(-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::computeCustomFixedPositionRect):
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::dynamicViewportSizeUpdate):
2017-05-07 Youenn Fablet <youenn@apple.com>
[MediaStream] r216197 caused some webrtc tests to fail
https://bugs.webkit.org/show_bug.cgi?id=171728
Reviewed by Eric Carlson.
* UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Removing muting streams of the page requesting
additional capture streams. This is now done in the WebProcess.
2017-05-07 Tim Horton <timothy_horton@apple.com>
Clean up some WebProcessProxy, WebPage, and message handler includes
https://bugs.webkit.org/show_bug.cgi?id=171791
Reviewed by Sam Weinig.
This is worth another ~10% off WebKit2 clean build time on Mac.
This time, the most impactful change is the removal of
UserMediaPermissionRequestManager.h from WebPage.h, which completely
eradicates JSC's VM.h (which is enormous) from WebPage.h (at least on Mac).
* Scripts/webkit/messages.py:
(headers_for_type):
Stop specializing CompositionUnderline now that it has its own file.
* Shared/API/c/WKDeprecatedFunctions.cpp:
* Shared/WebCoreArgumentCoders.cpp:
* UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
* UIProcess/Gamepad/UIGamepadProvider.cpp:
* UIProcess/HiddenPageThrottlingAutoIncreasesCounter.h: Added.
* UIProcess/HighPerformanceGraphicsUsageSampler.cpp:
* UIProcess/Network/NetworkProcessProxy.cpp:
* UIProcess/PerActivityStateCPUUsageSampler.cpp:
* UIProcess/UserContent/WebUserContentControllerProxy.cpp:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::toWebCore):
* UIProcess/VisibleWebPageCounter.h: Added.
* UIProcess/VisitedLinkStore.h:
* UIProcess/WebPageGroup.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessLifetimeTracker.cpp:
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.h:
Remove WebPageProxy and forward-declare a whole bunch of things.
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::userMediaAccessWasGranted):
(WebKit::WebPage::userMediaAccessWasDenied):
(WebKit::WebPage::didCompleteMediaDeviceEnumeration):
(WebKit::WebPage::grantUserMediaDeviceSandboxExtensions):
(WebKit::WebPage::revokeUserMediaDeviceSandboxExtensions):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::userMediaPermissionRequestManager):
* WebProcess/WebPage/ios/FindControllerIOS.mm:
* WebProcess/WebPage/ios/WebPageIOS.mm:
* WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
(WebKit::RemoteLayerTreeContext::deviceScaleFactor): Deleted.
(WebKit::RemoteLayerTreeContext::layerHostingMode): Deleted.
* WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::deviceScaleFactor):
(WebKit::RemoteLayerTreeContext::layerHostingMode):
2017-05-06 Chris Dumez <cdumez@apple.com>
Align our IDL files with the latest DOM specification
https://bugs.webkit.org/show_bug.cgi?id=171777
Reviewed by Sam Weinig.
GTK build fix.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
(webkit_dom_document_get_ready_state):
2017-05-06 Tim Horton <timothy_horton@apple.com>
Reduce the number of includes in WebPage.h and WebProcess.h
https://bugs.webkit.org/show_bug.cgi?id=171779
Reviewed by Sam Weinig.
* WebProcess/InjectedBundle/API/APIInjectedBundleEditorClient.h:
* WebProcess/Network/NetworkProcessConnection.cpp:
* WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
* WebProcess/Network/webrtc/LibWebRTCResolver.cpp:
* WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
* WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
* WebProcess/WebPage/FindController.cpp:
* WebProcess/WebPage/WebFrame.cpp:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::disableEnumeratingAllNetworkInterfaces):
(WebKit::WebPage::enableEnumeratingAllNetworkInterfaces):
(WebKit::WebPage::didReceivePolicyDecision):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::disableEnumeratingAllNetworkInterfaces): Deleted.
(WebKit::WebPage::enableEnumeratingAllNetworkInterfaces): Deleted.
* WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h:
* WebProcess/WebProcess.cpp:
* WebProcess/WebProcess.h:
In my measurement, this improves WebKit2 debug clean build time by
~10% for Mac and ~5% for iOS. The most valuable change is the one to
remove LibWebRTC headers..
2017-05-06 Alexey Proskuryakov <ap@apple.com>
REGRESSION (r216294): The new test fails on WebKit1
https://bugs.webkit.org/show_bug.cgi?id=171780
Rolling back https://trac.webkit.org/r216294, https://trac.webkit.org/r216296,
https://trac.webkit.org/216299, https://trac.webkit.org/216330
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::paint):
* WebProcess/Plugins/PluginView.h:
2017-05-06 Simon Fraser <simon.fraser@apple.com>
[iOS WK2] Make rotation tests more reliable
https://bugs.webkit.org/show_bug.cgi?id=171778
Reviewed by Tim Horton.
Switching between "safari-style" rotation and normal rotation left state on the WKWebView
that would cause later viewport-sensitive tests to fail. The WKWebView would be left
with override layout parameters, and an override orientation, and these caused viewport
size to leak into later tests, and WebCore orientation to not get reset correctly.
Also, WKWebView was unregistering for UIWindowDidRotateNotification notifications when
an override orientation was set, and would never re-register, causing lost orientationchanged
events.
Fix by exposing WKWebView SPI to clear the various bits of overide state. Also don't unregister
from the UIWindowDidRotateNotification notification; it's already ignored anyway if it fires.
Also wait for a visible content rect update after resizing the WKWebVeiw between tests, to make sure
the WebProcess is caught up before proceeding with the test.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setInterfaceOrientationOverride:]):
(-[WKWebView _clearInterfaceOrientationOverride]):
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
(-[WKWebView _clearOverrideLayoutParameters]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
2017-05-06 Konstantin Tokarev <annulen@yandex.ru>
Remove unused lambda capture
https://bugs.webkit.org/show_bug.cgi?id=171772
Reviewed by Yusuke Suzuki.
* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::fetchWebsiteData):
2017-05-06 David Kilzer <ddkilzer@apple.com>
messages_unittest.py should support a [-r|--reset-results] switch
<https://webkit.org/b/171627>
Reviewed by Daniel Bates.
This change adds support for a [-r|--reset-results] switch when
running messages_unittest.py to make it easy to update the
expected file results.
This also cleans up a lot of duplicate code in
messages_unittest.py by extracting common code into new methods
and by pushing code down into methods where it's actually used.
* Scripts/webkit/LegacyMessageReceiver-expected.cpp:
* Scripts/webkit/LegacyMessages-expected.h:
* Scripts/webkit/MessageReceiver-expected.cpp:
* Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
* Scripts/webkit/Messages-expected.h:
* Scripts/webkit/MessagesSuperclass-expected.h:
- Update expected files using the new --reset-results switch.
* Scripts/webkit/messages_unittest.py:
- Remove what appears to be a debugging print statement.
- Replace the code that reads in expected files with variables
that contain the expected file names. The code to read in the
contents moved into
GeneratedFileContentsTest.assertGeneratedFileContentsEqual().
(ParsingTest.check_message):
- Drive-by fix to change "!= None" to "is not None".
(GeneratedFileContentsTest.assertGeneratedFileContentsEqual):
- Add support for [-r|--reset-results] switch here. This will
write out updated expected file contents when the switch is
used.
- Push down most of the global code that reads in file contents
into this method.
- Change use of split('\n') into splitlines(False).
(GeneratedFileContentsTest.assertHeaderEqual): Add.
- Extracts common code from test_receiver_headers().
(GeneratedFileContentsTest.assertImplementationEqual): Add.
- Extracts common code from test_receiver_implementations().
(HeaderTest):
(HeaderTest.test_receiver_headers):
- Rename from HeaderTest.test_header().
- Simplify by calling assertHeaderEqual().
(ReceiverImplementationTest):
(ReceiverImplementationTest.test_receiver_implementations):
- Rename from
ReceiverImplementationTest.test_receiver_implementation().
- Simplify by calling assertImplementationEqual().
(add_reset_results_to_unittest_help): Add.
- Inserts help text for [-r|--reset-results] switch.
(parse_sys_argv): Add.
- Parses [-r|--reset-results] switch, and then removes it from
sys.argv. We do this instead of using argparse so that the
original help for the unittest module is still shown when
using --help.
2017-05-05 Timothy Horton <timothy_horton@apple.com>
[Mac] Adjust cursor position for dragged link (and stop it from moving based on how fast you are dragging)
https://bugs.webkit.org/show_bug.cgi?id=171764
<rdar://problem/32005865>
Reviewed by Simon Fraser.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::dragImageForView):
Always use the last mouse down event to originate the drag; this was a 2004 hack
to work around a seemingly-fixed macOS bug that somehow propagated into WebKit2.
With WebKit2, this would cause trouble because currentEvent could move on
during the bounce to the Web Content process and back, causing the delta between
clientPoint and the mouse point to be dependent on timing, and thus causing the
link to sit at timing-dependent distance from the cursor, instead of exactly
where dragOffsetForLinkDragImage placed it.
2017-05-05 Brady Eidson <beidson@apple.com>
API test WebKit2.WebsiteDataStoreCustomPaths is failing on ios-simulator.
<rdar://problem/31977294> and https://bugs.webkit.org/show_bug.cgi?id=171513
Reviewed by Andy Estes.
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::syncAllCookies):
2017-05-05 Dean Jackson <dino@apple.com>
Restrict SVG filters to accessible security origins
https://bugs.webkit.org/show_bug.cgi?id=118689
<rdar://problem/27362159>
Reviewed by Brent Fulgham.
Update parameter lists.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::paint):
* WebProcess/Plugins/PluginView.h:
2017-05-05 Beth Dakin <bdakin@apple.com>
Ensure NSColorPickerTouchBarItem only uses sRGB colors
https://bugs.webkit.org/show_bug.cgi?id=171758
-and corresponding-
rdar://problem/28314183
Reviewed by Tim Horton.
* UIProcess/Cocoa/WebViewImpl.mm:
(-[WKTextTouchBarItemController itemForIdentifier:]):
2017-05-05 Brent Fulgham <bfulgham@apple.com>
[WK2][iOS][macOS] Expand sandbox to access vm.footprint_suspend
https://bugs.webkit.org/show_bug.cgi?id=171749
<rdar://problem/32019494>
Reviewed by Geoffrey Garen.
The 'sysctl' whitelist needs to be extended to support an additional VM-related feature.
* DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
* Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb:
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* WebProcess/com.apple.WebProcess.sb.in:
2017-05-05 John Wilander <wilander@apple.com>
Resource Load Statistics: Don't cover in-memory and disk caches during website data removal
https://bugs.webkit.org/show_bug.cgi?id=171741
<rdar://problem/32020691>
Reviewed by Brent Fulgham.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
No longer removes WebsiteDataType::DiskCache or WebsiteDataType::MemoryCache.
2017-05-05 Brian Burg <bburg@apple.com>
CrashTracer: [USER] com.apple.WebKit.WebContent.Development at com.apple.WebCore: WebCore::commonVMSlow + 57
https://bugs.webkit.org/show_bug.cgi?id=171669
<rdar://problem/31967684>
Reviewed by Mark Lam.
safaridriver's AutomaticInspection capability causes us to call WebInspectorProxy::connect()
underneath the Automation.inspectBrowsingContext command. This fires a NeedDebuggerBreak
interrupt for the web content's VM, but this is racy because the web content process may
not yet be fully initialized when this interrupt is handled.
To work around this, just don't deliver any interrupts if the VM singleton is still null.
This is a reliable signal that the web content process is not fully initialized yet. Not delivering
is harmless; the interrupt only exists to break out of infinite loops in JS code, but there
could not be any such infinite loop yet if the web content process is not fully initialized.
* WebProcess/WebPage/WebInspectorInterruptDispatcher.cpp:
(WebKit::WebInspectorInterruptDispatcher::notifyNeedDebuggerBreak):
2017-05-05 Brian Burg <bburg@apple.com>
Web Automation: cookie-related commands don't work correctly
https://bugs.webkit.org/show_bug.cgi?id=171713
<rdar://problem/29829930>
Reviewed by Alexey Proskuryakov.
Commands that use WebCookieManager directly should complete when
the manager's completion handler is called. Otherwise, this will race
with subsequent accesses to cookies via the web process (document.cookie).
Also, these commands need to use the active browsing context's session ID.
They currently use the process pool's storage session, which is wrong
since we specially configure automation instances with an ephemeral store.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):
2017-05-05 Chris Dumez <cdumez@apple.com>
Rename webProcessDidCrashWithReason callback to webProcessDidTerminate and stop calling webProcessDidCrash for client terminations
https://bugs.webkit.org/show_bug.cgi?id=171624
Reviewed by Dan Bernstein.
Follow-up fixes after r216129 based on feedback I have received:
- Rename webProcessDidCrashWithReason callback function to webProcessDidTerminate given that this is called
for non-crashes (e.g. terminations requested by the client).
- Rename WKProcessCrashReason / ProcessCrashReason to WKProcessTerminationReason / ProcessTerminationReason
for consistency with the new naming.
- Stop calling processDidCrash / webProcessDidCrash for terminations requested by the client, to maintain
pre-r216129 behavior. Those are not crashes (The client used an API such as WKPageTerminateProcess()).
webProcessDidTerminate will still be called though.
- Fix a bug where - for terminations due to resource limits - WebPageProxy::processDidCrash() was getting
called twice: First by WebProcessProxy::requestTermination() with reason "RequestedByClient" then a
second time by WebProcessProxy::terminateProcessDueToResourceLimits() with the proper reason.
* Shared/ProcessTerminationReason.h: Renamed from Source/WebKit2/Shared/ProcessCrashReason.h.
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::processDidTerminate):
* UIProcess/API/C/WKAPICast.h:
(WebKit::toAPI):
* UIProcess/API/C/WKPage.cpp:
(WKPageTerminate):
(WKPageSetPageNavigationClient):
* UIProcess/API/C/WKPageNavigationClient.h:
* UIProcess/API/C/WKProcessTerminationReason.h: Renamed from Source/WebKit2/UIProcess/API/C/WKProcessCrashReason.h.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _killWebContentProcessAndResetState]):
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::processDidTerminate):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::processDidTerminate):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::requestTermination):
(WebKit::WebProcessProxy::logDiagnosticMessageForResourceLimitTermination):
(WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedBackgroundCPULimit):
* UIProcess/WebProcessProxy.h:
* WebKit2.xcodeproj/project.pbxproj:
2017-05-05 Derek Schuff <dschuff@chromium.org>
Mac cmake buildfix after r216037
https://bugs.webkit.org/show_bug.cgi?id=171558
Reviewed by JF Bastien.
* PlatformMac.cmake:
2017-05-05 Carlos Alberto Lopez Perez <clopez@igalia.com>
[GTK] Enable runtime flag for MediaDevices with enable-media-stream property.
https://bugs.webkit.org/show_bug.cgi?id=171730
Reviewed by Michael Catanzaro.
After r215939 the MediaDevices runtime setting has to be enabled
also to use MediaStream / WebRTC.
Enable it as part of the enable-media-stream property of the
WebKitGTK+ API.
* UIProcess/API/gtk/WebKitSettings.cpp:
(webkit_settings_set_enable_media_stream):
2017-05-05 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Assertion failure in Inspector::RemoteInspector::setRemoteInspectorClient when disposing WebKitWebContext
https://bugs.webkit.org/show_bug.cgi?id=171644
Reviewed by Michael Catanzaro.
Ensure that it's not possible to enable automation in more than one WebKitWebContext at the same time. Instead
of creating the AutomationClient unconditionally when the context is constructed, it's now created only when
automation is enabled, and deleted if it's disabled.
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):
(webkit_web_context_is_automation_allowed):
(webkit_web_context_set_automation_allowed):
* UIProcess/Cocoa/AutomationClient.mm:
(WebKit::AutomationClient::AutomationClient):
(WebKit::AutomationClient::~AutomationClient):
2017-05-04 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r216206.
https://bugs.webkit.org/show_bug.cgi?id=171714
Multiple LayoutTests crashing in Document::page() (Requested
by ap on #webkit).
Reverted changeset:
"Remove support for legacy Notifications"
https://bugs.webkit.org/show_bug.cgi?id=171487
http://trac.webkit.org/changeset/216206
2017-05-04 Mark Lam <mark.lam@apple.com>
NeverDestroyed<String>(ASCIILiteral(...)) is not thread safe.
https://bugs.webkit.org/show_bug.cgi?id=171586
<rdar://problem/31873190>
Reviewed by Yusuke Suzuki.
* Shared/API/APIError.cpp:
(API::Error::webKitErrorDomain):
(API::Error::webKitNetworkErrorDomain):
(API::Error::webKitPolicyErrorDomain):
(API::Error::webKitPluginErrorDomain):
(API::Error::webKitDownloadErrorDomain):
(API::Error::webKitPrintErrorDomain):
* Shared/WebPreferencesKeys.cpp:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::executeEditCommand):
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::didBeginEditing):
(WebKit::WebEditorClient::respondToChangedContents):
(WebKit::WebEditorClient::respondToChangedSelection):
(WebKit::WebEditorClient::didEndEditing):
2017-05-04 Jeremy Jones <jeremyj@apple.com>
Add mute to WebPlaybackSessionModel.
https://bugs.webkit.org/show_bug.cgi?id=171592
rdar://problem/31814074
Reviewed by Jer Noble.
Plumb through muted.
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::toggleMuted):
(WebKit::WebPlaybackSessionModelContext::setMuted):
(WebKit::WebPlaybackSessionManagerProxy::setMuted):
(WebKit::WebPlaybackSessionManagerProxy::toggleMuted):
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.messages.in:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionInterfaceContext::mutedChanged):
(WebKit::WebPlaybackSessionManager::mutedChanged):
(WebKit::WebPlaybackSessionManager::toggleMuted):
2017-05-04 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Image action sheets sometimes do not dismiss when beginning data interaction
https://bugs.webkit.org/show_bug.cgi?id=171687
<rdar://problem/31996534>
Reviewed by Beth Dakin.
When presenting an image sheet using WKActionSheetAssistant, we may present the popover asynchronously. In this
case, even if -cleanupSheet is invoked after -showImageSheet, the popover will still be presented. To fix this,
add a flag, _hasPendingActionSheet, that is set to true when an image action sheet will be presented in the
future.
In cleanupSheet, we revert this flag to NO, and in the sheet presentation block, we first check to see if there
is a pending action sheet. If there is not, then simply do not invoke the image sheet presentation block.
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant showImageSheet]):
(-[WKActionSheetAssistant cleanupSheet]):
2017-05-04 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Add support for keeping the selection in a focused editable element when dragging begins
https://bugs.webkit.org/show_bug.cgi?id=171585
<rdar://problem/31544320>
Reviewed by Beth Dakin and Zalan Bujtas.
Minor adjustments and refactoring in WebKit2. See WebCore ChangeLog for more details.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::startDrag):
(WebKit::WebPageProxy::didStartDrag):
Factor out code in WebPageProxy that sends a WebPage::DidStartDrag message to the web process into a separate
helper, and tweak the places where we directly send this IPC message to the web process to instead call this
helper.
* UIProcess/WebPageProxy.h:
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setDragImage):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didStartDrag):
(WebKit::WebPage::dragCancelled):
Clear out state in the web process and call out to the EventHandler to handle drag cancellation and the drag
start response from the UI process.
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::didStartDrag): Deleted.
(WebKit::WebPage::dragCancelled): Deleted.
2017-05-04 Sam Weinig <sam@webkit.org>
Remove support for legacy Notifications
https://bugs.webkit.org/show_bug.cgi?id=171487
Reviewed by Jon Lee.
* Configurations/FeatureDefines.xcconfig:
* Shared/WebProcessCreationParameters.cpp:
* Shared/WebProcessCreationParameters.h:
* UIProcess/WebProcessPool.cpp:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
* WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
* WebProcess/Notifications/NotificationPermissionRequestManager.h:
* WebProcess/Notifications/WebNotificationManager.cpp:
* WebProcess/Notifications/WebNotificationManager.h:
* WebProcess/WebCoreSupport/WebNotificationClient.cpp:
* WebProcess/WebCoreSupport/WebNotificationClient.h:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebProcess.cpp:
Remove legacy notification specific code.
2017-05-04 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Allow host application to enable/disable media capture
https://bugs.webkit.org/show_bug.cgi?id=171292
<rdar://problem/31821492>
Reviewed by Jer Noble.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetMediaCaptureEnabled): New.
(WKPageGetMediaCaptureEnabled): New.
* UIProcess/API/C/WKPagePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setMediaCaptureEnabled:]): New.
(-[WKWebView _mediaCaptureEnabled]): New.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate): Initialize webViewRequestUserMediaAuthorizationForDevicesURLMainFrameURLDecisionHandler
and webViewCheckUserMediaPermissionForURLMainFrameURLFrameIdentifierDecisionHandler on macOS
and iOS.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
Initialize the rejection timer.
(WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
Call invalidatePendingRequests.
(WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests): Invalidate all
pending requests.
(WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): New.
(WebKit::UserMediaPermissionRequestManagerProxy::rejectionTimerFired): Reject a promise and
schedule the timer if there are any others pending.
(WebKit::UserMediaPermissionRequestManagerProxy::scheduleNextRejection):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Don't
prompt the user if capture is disabled.
(WebKit::UserMediaPermissionRequestManagerProxy::invalidateRequests): Deleted.
(WebKit::UserMediaPermissionRequestManagerProxy::clearCachedState): Deleted.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Stop capture in the current
page on iOS.
(WebKit::UserMediaProcessManager::setCaptureEnabled):
* UIProcess/UserMediaProcessManager.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setMediaCaptureEnabled):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::mediaCaptureEnabled):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::cancelPendingRequests): New, cancel all pending
requests.
(WebKit::UserMediaPermissionRequestManager::cancelUserMediaRequest): Deny the request.
(WebKit::UserMediaPermissionRequestManager::cancelMediaDevicesEnumeration):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::stopMediaCapture):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2017-05-04 Konstantin Tokarev <annulen@yandex.ru>
Fix compilation with ICU 59.1
https://bugs.webkit.org/show_bug.cgi?id=171612
Reviewed by Mark Lam.
ICU 59.1 has broken source compatibility. Now it defines UChar as
char16_t, which does not allow automatic type conversion from unsigned
short in C++ code.
* Shared/API/c/WKString.cpp:
(WKStringGetCharacters):
2017-05-04 Dan Bernstein <mitz@apple.com>
[Cocoa] -[WKWebsiteDataStore httpCookieStore] is declared in the main @interface but implemented in a category
https://bugs.webkit.org/show_bug.cgi?id=171657
Reviewed by Sam Weinig.
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore httpCookieStore]): Moved from the WKPrivate category into the main
@implementation block.
2017-05-04 Andy Estes <aestes@apple.com>
[Cocoa] Add an optional width parameter to -[WKWebProcessPlugInNodeHandle renderedImageWithOptions:]
https://bugs.webkit.org/show_bug.cgi?id=171646
<rdar://problem/30306321>
Reviewed by Tim Horton.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
(-[WKWebProcessPlugInNodeHandle renderedImageWithOptions:]): Called
-renderedImageWithOptions:width: with a nil width.
(-[WKWebProcessPlugInNodeHandle renderedImageWithOptions:width:]): Passed an optional width
to InjectedBundleNodeHandle::renderedImage().
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
(WebKit::imageForRect): If a width is specified, create an image graphics context at that
width, preserving the aspect ratio of paintingRect.
(WebKit::InjectedBundleNodeHandle::renderedImage):
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:
2017-05-04 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r216172.
https://bugs.webkit.org/show_bug.cgi?id=171654
FTBFS for iOS due to missing WebPageProxy::stopMediaCapture()
implementation. (Requested by ddkilzer on #webkit).
Reverted changeset:
"[MediaStream] Allow host application to enable/disable media
capture"
https://bugs.webkit.org/show_bug.cgi?id=171292
http://trac.webkit.org/changeset/216172
2017-05-04 Carlos Garcia Campos <cgarcia@igalia.com>
[Threaded Compositor] SHOULD NEVER BE REACHED in WebKit::CompositingRunLoop::updateCompleted
https://bugs.webkit.org/show_bug.cgi?id=171336
Reviewed by Michael Catanzaro.
We are assuming that all calls to ThreadedCompositor::renderLayerTree() happen because of an scheduled update,
but that's not true in the case of ThreadedCompositor::forceRepaint(). In that case we never want to call
CompositingRunLoop::updateCompleted().
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::forceRepaint):
(WebKit::ThreadedCompositor::sceneUpdateFinished):
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
2017-05-04 David Kilzer <ddkilzer@apple.com>
check-webkit-style exits with an error while parsing Source/WebKit2/Scripts/webkit/ directory: KeyError: 'st'
<https://bugs.webkit.org/show_bug.cgi?id=171510>
Reviewed by Daniel Bates.
The problem was that 'import parser' was ambiguous since there
is a built-in parser module that comes with Python. Changing
'import parser' to 'from webkit import parser' fixed the error
in check-webkit-style (and pylint) by forcing it to load the
local 'parser' module, but then running messages_unittest.py
directly would fail because .../Source/WebKit2/Scripts was not
in the module search path by default. This is fixed by using
sys.path.append() to add .../Source/WebKit2/Scripts to the
module search path based on the path to messages_unittest.py.
As an added bonus, this patch also fixes all webkit-style issues
in Source/WebKit2/Scripts/webkit/*.py files.
* Scripts/webkit/messages.py:
- Separate local module imports from built-in modules for
consistency.
- Fix whitespace issues for check-webkit-style, and remove stray
semi-colon.
* Scripts/webkit/messages_unittest.py:
- Update sys.path to find the 'webkit' module based on the path
to messages_unittest.py. This makes 'from webkit import ...'
statements work when running messages_unittest.py directly.
- Change 'messages' and 'parser' modules to use
'from webkit import ...' format for consistency.
- Fix whitespace issues for check-webkit-style.
* Scripts/webkit/model.py:
- Fix whitespace issue for check-webkit-style.
* Scripts/webkit/parser.py:
- Fix whitespace issue for check-webkit-style.
2017-05-03 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Allow host application to enable/disable media capture
https://bugs.webkit.org/show_bug.cgi?id=171292
<rdar://problem/31821492>
Reviewed by Jer Noble.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetMediaCaptureEnabled): New.
(WKPageGetMediaCaptureEnabled): New.
* UIProcess/API/C/WKPagePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setMediaCaptureEnabled:]): New.
(-[WKWebView _mediaCaptureEnabled]): New.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate): Initialize webViewRequestUserMediaAuthorizationForDevicesURLMainFrameURLDecisionHandler
and webViewCheckUserMediaPermissionForURLMainFrameURLFrameIdentifierDecisionHandler on macOS
and iOS.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
Initialize the rejection timer.
(WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
Call invalidatePendingRequests.
(WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests): Invalidate all
pending requests.
(WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): New.
(WebKit::UserMediaPermissionRequestManagerProxy::rejectionTimerFired): Reject a promise and
schedule the timer if there are any others pending.
(WebKit::UserMediaPermissionRequestManagerProxy::scheduleNextRejection):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Don't
prompt the user if capture is disabled.
(WebKit::UserMediaPermissionRequestManagerProxy::invalidateRequests): Deleted.
(WebKit::UserMediaPermissionRequestManagerProxy::clearCachedState): Deleted.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Stop capture in the current
page on iOS.
(WebKit::UserMediaProcessManager::setCaptureEnabled):
* UIProcess/UserMediaProcessManager.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setMediaCaptureEnabled):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::mediaCaptureEnabled):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::cancelPendingRequests): New, cancel all pending
requests.
(WebKit::UserMediaPermissionRequestManager::cancelUserMediaRequest): Deny the request.
(WebKit::UserMediaPermissionRequestManager::cancelMediaDevicesEnumeration):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::stopMediaCapture):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2017-05-03 John Wilander <wilander@apple.com>
Resource Load Statistics: Remove all statistics for modifiedSince website data removals
https://bugs.webkit.org/show_bug.cgi?id=171584
<rdar://problem/24702576>
Reviewed by Brent Fulgham.
These are all test infrastructure changes.
* UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
(WKResourceLoadStatisticsManagerClearInMemoryAndPersistentStoreModifiedSinceHours):
* UIProcess/API/C/WKResourceLoadStatisticsManager.h:
* UIProcess/WebResourceLoadStatisticsManager.cpp:
(WebKit::WebResourceLoadStatisticsManager::clearInMemoryAndPersistentStoreModifiedSinceHours):
* UIProcess/WebResourceLoadStatisticsManager.h:
2017-05-03 Timothy Horton <timothy_horton@apple.com>
Maintain interaction information imageURL as a URL, not a string
https://bugs.webkit.org/show_bug.cgi?id=171639
Reviewed by Sam Weinig.
* Shared/ios/InteractionInformationAtPosition.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _dataForPreviewItemController:atPosition:type:]):
(-[WKContentView _previewItemController:commitPreview:]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getPositionInformation):
2017-05-03 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r216160 and r216161.
https://bugs.webkit.org/show_bug.cgi?id=171640
These changes broke the iOS build. (Requested by mlewis13 on
#webkit).
Reverted changesets:
"[MediaStream] Allow host application to enable/disable media
capture"
https://bugs.webkit.org/show_bug.cgi?id=171292
http://trac.webkit.org/changeset/216160
"[MediaStream] Allow host application to enable/disable media
capture"
https://bugs.webkit.org/show_bug.cgi?id=171292
http://trac.webkit.org/changeset/216161
2017-05-03 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Allow host application to enable/disable media capture
https://bugs.webkit.org/show_bug.cgi?id=171292
<rdar://problem/31821492>
Unreviewed build fix.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::clearUserMediaState):
* UIProcess/WebPageProxy.h:
2017-05-03 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Allow host application to enable/disable media capture
https://bugs.webkit.org/show_bug.cgi?id=171292
<rdar://problem/31821492>
Reviewed by Jer Noble.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetMediaCaptureEnabled): New.
(WKPageGetMediaCaptureEnabled): New.
(WKPageClearUserMediaState): Deleted, unused.
* UIProcess/API/C/WKPagePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setMediaCaptureEnabled:]): New.
(-[WKWebView _mediaCaptureEnabled]): New.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate): Initialize webViewRequestUserMediaAuthorizationForDevicesURLMainFrameURLDecisionHandler
and webViewCheckUserMediaPermissionForURLMainFrameURLFrameIdentifierDecisionHandler on macOS
and iOS.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy):
Initialize the rejection timer.
(WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
Call invalidatePendingRequests.
(WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests): Invalidate all
pending requests.
(WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): New.
(WebKit::UserMediaPermissionRequestManagerProxy::rejectionTimerFired): Reject a promise and
schedule the timer if there are any others pending.
(WebKit::UserMediaPermissionRequestManagerProxy::scheduleNextRejection):
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): Don't
prompt the user if capture is disabled.
(WebKit::UserMediaPermissionRequestManagerProxy::invalidateRequests): Deleted.
(WebKit::UserMediaPermissionRequestManagerProxy::clearCachedState): Deleted.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Stop capture in the current
page on iOS.
(WebKit::UserMediaProcessManager::setCaptureEnabled):
* UIProcess/UserMediaProcessManager.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setMediaCaptureEnabled):
(WebKit::WebPageProxy::clearUserMediaState): Deleted.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::mediaCaptureEnabled):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::cancelPendingRequests): New, cancel all pending
requests.
(WebKit::UserMediaPermissionRequestManager::cancelUserMediaRequest): Deny the request.
(WebKit::UserMediaPermissionRequestManager::cancelMediaDevicesEnumeration):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::stopMediaCapture):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2017-05-03 Tim Horton <timothy_horton@apple.com>
Maintain interaction information URL as a URL, not a string
https://bugs.webkit.org/show_bug.cgi?id=171623
Reviewed by Simon Fraser.
* Shared/ios/InteractionInformationAtPosition.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _showAttachmentSheet]):
(-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
(-[WKContentView _dataForPreviewItemController:atPosition:type:]):
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView annotation:isBeingPressedAtPoint:controller:]):
(-[WKPDFView actionSheetAssistant:performAction:]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getPositionInformation):
2017-05-03 Simon Fraser <simon.fraser@apple.com>
Have WKWebView call _updateVisibleContentRects for the current transaction if possible, rather than always delaying
https://bugs.webkit.org/show_bug.cgi?id=171619
Also fixes webkit.org/b/170153 and webkit.org/b/170195
Reviewed by Tim Horton.
In r214391 we started adding the pre-commit handler in a dispatch_async() to ensure that
the handler would always run, since we couldn't reliably test the phase of the current
transaction. Now that problem has been solved (rdar://problem/31253952) we can go back to
checking the transaction phase on newer iOS versions. If we're too late for the current transaction
we still need to dispatch_async() to get into the next one.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _addUpdateVisibleContentRectPreCommitHandler]):
(-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):
2017-05-03 Chris Dumez <cdumez@apple.com>
REGRESSION (r216129): ASSERTION FAILED: m_process->state() == WebProcessProxy::State::Terminated
https://bugs.webkit.org/show_bug.cgi?id=171616
Reviewed by Brady Eidson.
Stop calling resetStateAfterProcessExited() in WebPageProxy::terminateProcess() as the call to
WebProcessProxy::requestTermination() already causes WebPageProxy::processDidCrash() to be called
after r216129. WebPageProxy::processDidCrash() already takes care of calling
resetStateAfterProcessExited().
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::terminateProcess):
2017-05-03 Brady Eidson <beidson@apple.com>
Handle KVO updating of the "hasOnlySecureContent" before a page results in an HTTP auth challenge.
https://bugs.webkit.org/show_bug.cgi?id=171607
Reviewed by Andy Estes.
To test this fix we'd need the combination of an HTTPD inside API tests, so no test for now.
* UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::hasOnlySecureContent): If the state is provisional, check the provisional URL instead.
2017-05-03 Chris Dumez <cdumez@apple.com>
[WK2] Extend processDidCrash delegate to let the client know the reason for the crash
https://bugs.webkit.org/show_bug.cgi?id=171565
<rdar://problem/31204417>
Reviewed by Sam Weinig.
Extend processDidCrash delegate to let the client know the reason for the crash. This
is needed by some clients to distinguish actual crashes from terminations due to
resource limits.
* Shared/ProcessCrashReason.h: Added.
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::processDidCrash):
* UIProcess/API/C/WKAPICast.h:
(WebKit::toAPI):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageNavigationClient):
* UIProcess/API/C/WKPageNavigationClient.h:
* UIProcess/API/C/WKProcessCrashReason.h: Added.
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::processDidCrash):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::processDidCrash):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::requestTermination):
(WebKit::diagnosticLoggingKeyForTerminationReason):
(WebKit::toProcessCrashReason):
(WebKit::WebProcessProxy::terminateProcessDueToResourceLimits):
(WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedBackgroundCPULimit):
* UIProcess/WebProcessProxy.h:
* WebKit2.xcodeproj/project.pbxproj:
2017-05-03 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Add GTK+ implementation of WebAutomationSession
https://bugs.webkit.org/show_bug.cgi?id=171431
Reviewed by Michael Catanzaro.
Add platform dependent methods for GTK+ to synthesize events.
* PlatformGTK.cmake:
* UIProcess/API/gtk/WebKitUIClient.cpp: Always resize the window for web views controlled by automation.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
(WebKit::WebAutomationSession::performMouseInteraction):
(WebKit::WebAutomationSession::performKeyboardInteractions):
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp: Added.
(WebKit::modifiersToEventState):
(WebKit::mouseButtonToGdkButton):
(WebKit::doMouseEvent):
(WebKit::doMotionEvent):
(WebKit::WebAutomationSession::platformSimulateMouseInteraction):
(WebKit::doKeyStrokeEvent):
(WebKit::keyCodeForVirtualKey):
(WebKit::WebAutomationSession::platformSimulateKeyStroke):
(WebKit::WebAutomationSession::platformSimulateKeySequence):
(WebKit::WebAutomationSession::platformGetBase64EncodedPNGData):
2017-05-03 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.1 release.
* gtk/NEWS: Add release notes for 2.17.1.
2017-05-03 Carlos Garcia Campos <cgarcia@igalia.com>
[Soup] Add request headers to network load metrics
https://bugs.webkit.org/show_bug.cgi?id=171545
Reviewed by Sergio Villar Senin.
This will make the headers to appear in the web inspector.
Fixes: http/tests/inspector/network/resource-request-headers.html
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::didGetHeaders):
2017-05-02 Simon Fraser <simon.fraser@apple.com>
Dynamically added position:fixed element is in the wrong place
https://bugs.webkit.org/show_bug.cgi?id=170280
rdar://problem/31374008
Reviewed by Tim Horton.
Layers for position:fixed elements have their positions reconciled after scrolls
via AsyncScrollingCoordinator::reconcileViewportConstrainedLayerPositions() and GraphicsLayerCA::syncPosition(),
which updates the GraphicsLayer's position, but does not push it to the PlatformCALayer.
This bug was a case where a position:fixed element gained a fixed ancestor, so had a GraphicsLayerCA whose
position had been updated via syncPosition() in the past. A subsequent layout updated the GraphicsLayerCA position,
but to a value that was the same as its pre-sync position, so the PlatformCALayerRemote's position didn't change,
but there was no signal to the UI process to restore the layer's pre-scrolled position.
Fix by avoiding the early return in PlatformCALayerRemote::setPosition(), to ensure that GraphicsLayerCA
geometry updates in the web process always send new positions to the UI process.
* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::setPosition):
2017-05-02 Gwang Yoon Hwang <yoon@igalia.com>
[GTK] Drop coordinated surfaces from the compositing thread as soon as possible
https://bugs.webkit.org/show_bug.cgi?id=171544
Reviewed by Žan Doberšek.
Released coordinated surface from the main thread didn't be freed until
next commit message because the deletion of coordinated surfaces is
considered as a part of scene state. We need to release corresponding
surfaces whenever the compositing coordinator drops update atlases to
reduce memory usages.
No new tests, only an optimization.
* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
Remove atlasesToRemove from the GraphicsState. it is not a commit
state anymore.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::syncUpdateAtlases):
(WebKit::CoordinatedGraphicsScene::releaseUpdateAtlases):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::CompositingCoordinator::releaseAtlases): Pass the list of
released update atlases to the compositing thread right after cleaning
up deactivated update atlases.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::clearPendingStateChanges):
(WebKit::CompositingCoordinator::removeUpdateAtlas):
(WebKit::CompositingCoordinator::releaseAtlases):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::releaseUpdateAtlases):
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
2017-05-02 Timothy Horton <timothy_horton@apple.com>
Inform clients when viewport-fit state changes, so they can recompute insets
https://bugs.webkit.org/show_bug.cgi?id=171573
<rdar://problem/31947614>
Reviewed by Simon Fraser.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didChangeAvoidsUnsafeArea]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didChangeAvoidsUnsafeArea):
For clients who use setObscuredInsets/setUnobscuredSafeAreaInsets
themselves, we need to let them know when the current state of
viewport-fit changes so that they can recompute the insets.
2017-05-02 Gwang Yoon Hwang <yoon@igalia.com>
[GTK] Recycle textures while handling tiles
https://bugs.webkit.org/show_bug.cgi?id=171541
Reviewed by Žan Doberšek.
* Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
(WebKit::CoordinatedBackingStoreTile::swapBuffers):
Whenever we create new tiles or delete tiles, CoordGfx creates and
deletes textures accordingly. We should avoid this kind of heavy
operations whenever possible. This patch modifies to use the texture
pool to reduce texture allocations. Also this patch reduces number of
resetting textures, which is also expensive operation.
* Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:
(WebKit::WebCoordinatedSurface::copyToTexture):
Modified to pass BitmapTexture as a reference.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp:
(WebKit::ThreadSafeCoordinatedSurface::copyToTexture): Ditto.
2017-05-02 David Kilzer <ddkilzer@apple.com>
Stop using strcpy() in WebProcess::registerWithStateDumper() in WebProcessCocoa.mm
<https://webkit.org/b/171520>
Reviewed by Chris Dumez.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::registerWithStateDumper): Switch from
strcpy() to strlcpy(), removing comment in the process.
2017-05-02 Andrew Gold <agold@apple.com>
MediaDevices is not enabled for MobileSafari
https://bugs.webkit.org/show_bug.cgi?id=171433
<rdar://problem/31923178>
Reviewed by Youenn Fablet.
Added the Cocoa API for toggling this feature and removed API for toggling
MediaStreamEnabled since it will always be on.
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _mediaDevicesEnabled]):
(-[WKPreferences _setMediaDevicesEnabled:]):
(-[WKPreferences _mediaStreamEnabled]): Deleted.
(-[WKPreferences _setMediaStreamEnabled:]): Deleted.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
2017-05-02 Andy Estes <aestes@apple.com>
REGRESSION (r213036): Crash in -[WKContentView _webTouchEventsRecognized:] when a touch event arrives after a WebPageProxy has been invalidated
https://bugs.webkit.org/show_bug.cgi?id=171539
<rdar://problem/31614982>
Reviewed by Tim Horton.
Prior to r213036, the layer tree transaction at last touch start was tracked by
WebPageProxy::handleTouchEventSynchronously(), which would ask the drawing area proxy for
its most recent transaction ID after ensuring that the WebPageProxy was valid.
r213036 moved the tracking up to -[WKContentView _webTouchEventsRecognized:], but failed to
check if _page was valid before asking for its drawing area proxy's last transaction ID; the
drawing area proxy is set to null on WebPageProxy invalidation.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _webTouchEventsRecognized:]): Added an early return if _page isn't valid.
2017-05-02 Carlos Garcia Campos <cgarcia@igalia.com>
Web Automation: generate resizeWindowOfBrowsingContext and moveWindowOfBrowsingContext for all platforms
https://bugs.webkit.org/show_bug.cgi?id=171107
Reviewed by Brian Burg.
The implementation is actually cross-platform, so it could be moved from WebAutomationSessionMac.mm to
WebAutomationSession.cpp and simply return a NotImplemented error for iOS. This will allow to use these methods
in other platforms.
* UIProcess/Automation/Automation.json:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/mac/WebAutomationSessionMac.mm:
(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext): Deleted.
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext): Deleted.
2017-05-01 Chris Dumez <cdumez@apple.com>
Use RELEASE_LOG_ERROR() to do process termination logging
https://bugs.webkit.org/show_bug.cgi?id=171521
Reviewed by Andreas Kling.
Use RELEASE_LOG_ERROR() to do process termination logging instead of RELEASE_LOG().
This makes the issue more visible in Console.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didExceedActiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedInactiveMemoryLimit):
(WebKit::WebProcessProxy::didExceedBackgroundCPULimit):
2017-05-01 Brady Eidson <beidson@apple.com>
Only try to get sandbox extension handle for IndexedDB directory if it is set.
rdar://problem/31925828 and https://bugs.webkit.org/show_bug.cgi?id=171522
Reviewed by Andy Estes.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
2017-05-01 Timothy Horton <timothy_horton@apple.com>
Expose viewport-fit instead of clip-to-safe-area
https://bugs.webkit.org/show_bug.cgi?id=171503
<rdar://problem/31918249>
Reviewed by Simon Fraser.
* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::VisibleContentRectUpdateInfo::encode):
(WebKit::VisibleContentRectUpdateInfo::decode):
(WebKit::operator<<):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::unobscuredSafeAreaInsets):
(WebKit::operator==):
Plumb the safe area insets down from the UI process to the Web Content
process inside the visible content rect update, alongside the obscured
insets.
* Shared/mac/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::avoidsUnsafeArea):
(WebKit::RemoteLayerTreeTransaction::setAvoidsUnsafeArea):
* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::encode):
(WebKit::RemoteLayerTreeTransaction::decode):
(WebKit::RemoteLayerTreeTransaction::description):
* UIProcess/PageClient.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didChangeAvoidsUnsafeArea):
(WebKit::PageClientImpl::didChangeClipToSafeArea): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didCommitLayerTree):
* UIProcess/mac/PageClientImpl.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::didChangeClipToSafeArea): Deleted.
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::willCommitLayerTree):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::viewportConfigurationChanged):
(WebKit::WebPage::updateVisibleContentRects):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::setAvoidsUnsafeArea):
(WebKit::WebPageProxy::setClipToSafeArea): Deleted.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::avoidsUnsafeArea):
(WebKit::WebPageProxy::clipToSafeArea): Deleted.
* UIProcess/WebPageProxy.messages.in:
Plumb the effective value of viewport-fit (whether or not to avoid
the safe area for layout purposes) from the Web Content process
to the UI process inside the layer tree transaction.
Also, remove clip-to-safe-area plumbing.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _computedContentInset]):
(-[WKWebView _computedUnobscuredSafeAreaInset]):
(-[WKWebView _updateVisibleContentRects]):
(-[WKWebView _updateScrollViewInsetAdjustmentBehavior]):
(-[WKWebView _safeAreaShouldAffectObscuredInsets]):
(-[WKWebView _unobscuredSafeAreaInsets]):
(-[WKWebView _setUnobscuredSafeAreaInsets:]):
(-[WKWebView _contentMayDrawInObscuredInsets]): Deleted.
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Make use of the effective value of viewport-fit to decide whether to
take the safe area into account when computing the obscured insets,
and expose this to clients (in the case that they need to know
because they push their own obscured insets down). Also expose a
safe area inset setter for that case as well.
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView updateFixedClippingView:]):
(-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
Remove a piece of the clip-to-safe-area implementation, and plumb
safe area insets into the visible content rect update info.
* UIProcess/ios/WKScrollView.h:
* UIProcess/ios/WKScrollView.mm:
(-[WKScrollView initWithFrame:]):
(-[WKScrollView _contentInsetAdjustmentBehaviorWasExternallyOverridden]):
(-[WKScrollView _setContentInsetAdjustmentBehavior:]):
(-[WKScrollView _setContentInsetAdjustmentBehaviorInternal:]):
Keep track of whether the client has ever touched the content inset adjustment
behavior; if they have, we won't manage it ourselves.
2017-05-01 Brady Eidson <beidson@apple.com>
Update names in WKURLSchemeHandler/WKURLSchemeHandlerTask APIs.
<rdar://problem/31824838> and https://bugs.webkit.org/show_bug.cgi?id=171508
Reviewed by Andy Estes.
This patch:
- Renames WKURLSchemeHandlerTask to WKURLSchemeTask
- Renames the method "startTask" to "startURLSchemeTask"
- Renames the method "stopTask" to "stopURLSchemeTask"
To those effects it's basically a global replace.
* Shared/API/APIObject.h:
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* UIProcess/API/APIURLSchemeTask.cpp: Renamed from Source/WebKit2/UIProcess/API/APIURLSchemeHandlerTask.cpp.
(API::URLSchemeTask::create):
(API::URLSchemeTask::URLSchemeTask):
* UIProcess/API/APIURLSchemeTask.h: Renamed from Source/WebKit2/UIProcess/API/APIURLSchemeHandlerTask.h.
* UIProcess/API/Cocoa/WKURLSchemeHandler.h:
* UIProcess/API/Cocoa/WKURLSchemeTask.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTask.h.
* UIProcess/API/Cocoa/WKURLSchemeTask.mm: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm.
(raiseExceptionIfNecessary):
(-[WKURLSchemeTaskImpl request]):
(-[WKURLSchemeTaskImpl didReceiveResponse:]):
(-[WKURLSchemeTaskImpl didReceiveData:]):
(-[WKURLSchemeTaskImpl didFinish]):
(-[WKURLSchemeTaskImpl didFailWithError:]):
(-[WKURLSchemeTaskImpl _apiObject]):
* UIProcess/API/Cocoa/WKURLSchemeTaskInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTaskInternal.h.
(WebKit::wrapper):
* UIProcess/Cocoa/WebURLSchemeHandlerCocoa.h:
* UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm:
(WebKit::WebURLSchemeHandlerCocoa::platformStartTask):
(WebKit::WebURLSchemeHandlerCocoa::platformStopTask):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::startURLSchemeTask):
(WebKit::WebPageProxy::stopURLSchemeTask):
(WebKit::WebPageProxy::startURLSchemeHandlerTask): Deleted.
(WebKit::WebPageProxy::stopURLSchemeHandlerTask): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebURLSchemeHandler.cpp:
(WebKit::WebURLSchemeHandler::startTask):
* UIProcess/WebURLSchemeHandler.h:
* UIProcess/WebURLSchemeTask.cpp: Renamed from Source/WebKit2/UIProcess/WebURLSchemeHandlerTask.cpp.
(WebKit::WebURLSchemeTask::create):
(WebKit::WebURLSchemeTask::WebURLSchemeTask):
(WebKit::WebURLSchemeTask::didReceiveResponse):
(WebKit::WebURLSchemeTask::didReceiveData):
(WebKit::WebURLSchemeTask::didComplete):
(WebKit::WebURLSchemeTask::pageDestroyed):
(WebKit::WebURLSchemeTask::stop):
* UIProcess/WebURLSchemeTask.h: Renamed from Source/WebKit2/UIProcess/WebURLSchemeHandlerTask.h.
(WebKit::WebURLSchemeTask::identifier):
(WebKit::WebURLSchemeTask::request):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::addURLSchemeTaskProxy):
(WebKit::WebLoaderStrategy::removeURLSchemeTaskProxy):
(WebKit::WebLoaderStrategy::remove):
(WebKit::WebLoaderStrategy::addURLSchemeHandlerTaskProxy): Deleted.
(WebKit::WebLoaderStrategy::removeURLSchemeHandlerTaskProxy): Deleted.
* WebProcess/Network/WebLoaderStrategy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::urlSchemeTaskDidReceiveResponse):
(WebKit::WebPage::urlSchemeTaskDidReceiveData):
(WebKit::WebPage::urlSchemeTaskDidComplete):
(WebKit::WebPage::urlSchemeHandlerTaskDidReceiveResponse): Deleted.
(WebKit::WebPage::urlSchemeHandlerTaskDidReceiveData): Deleted.
(WebKit::WebPage::urlSchemeHandlerTaskDidComplete): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
(WebKit::WebURLSchemeHandlerProxy::startNewTask):
(WebKit::WebURLSchemeHandlerProxy::taskDidComplete):
(WebKit::WebURLSchemeHandlerProxy::taskDidStopLoading):
* WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp: Renamed from Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.cpp.
(WebKit::WebURLSchemeTaskProxy::WebURLSchemeTaskProxy):
(WebKit::WebURLSchemeTaskProxy::startLoading):
(WebKit::WebURLSchemeTaskProxy::stopLoading):
(WebKit::WebURLSchemeTaskProxy::didReceiveResponse):
(WebKit::WebURLSchemeTaskProxy::didReceiveData):
(WebKit::WebURLSchemeTaskProxy::didComplete):
(WebKit::WebURLSchemeTaskProxy::hasLoader):
* WebProcess/WebPage/WebURLSchemeTaskProxy.h: Renamed from Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.h.
(WebKit::WebURLSchemeTaskProxy::request):
(WebKit::WebURLSchemeTaskProxy::identifier):
2017-05-01 Chris Dumez <cdumez@apple.com>
Tweak how long we allow a process to go over its background CPU limit
https://bugs.webkit.org/show_bug.cgi?id=170460
<rdar://problem/31433141>
Reviewed by Geoffrey Garen.
Tweak how long we allow a process to go over its background CPU limit. We now use 8 minutes
intervals (instead of previously 15). This is less conservative and aligned with our memory
kills.
* WebProcess/cocoa/WebProcessCocoa.mm:
2017-05-01 Beth Dakin <bdakin@apple.com>
On-screen panel for candidate bar is in the wrong place when the caret is at the
start of a paragraph
https://bugs.webkit.org/show_bug.cgi?id=171453
-and corresponding-
rdar://problem/29779764
Reviewed by Tim Horton.
This bug only happens when the caret is at the beginning of the paragraph, and it
is because Range::absoluteTextQuads() returns no quads in this case. I think it
might be correct that absoluteTextQuads() returns no quads in this case, so this
patch fixes the bug at the call site by using absoluteCaretBounds() in this case.
SPI for testing.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _candidateRect]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Bug fix.
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::platformEditorState):
2017-05-01 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Add automation session API
https://bugs.webkit.org/show_bug.cgi?id=171428
Reviewed by Carlos Alberto Lopez Perez.
Add new API to allow WebKitGTK+ to be controlled by automation. By default it's disabled, applications have to
explicitly call webkit_web_context_set_automation_allowed() to enabled it. When a new automation session is
requested, the signal WebKitWebContext::automation-started is emitted with a newly created
WebKitAutomationSession, similar to how WebKitWebContext::download-started works. The user should connect to it
have access to the WebKitAutomationSession and connect it its signals. When a new web view is requested to be
created in a WebKitAutomationSession, the signal WebKitAutomationSession::create-web-view is emitted. The user
should connect to it and return a WebKitWebView. The web views used for automation are special ones and need to
be created with the new WebKitWebView:is-controlled-by-automation construct property enabled, otherwise we will
refuse to create the requested browsing context.
* PlatformGTK.cmake:
* UIProcess/API/gtk/WebKitAutomationSession.cpp: Added.
(webkitAutomationSessionSetProperty):
(webkitAutomationSessionConstructed):
(webkit_automation_session_class_init):
(webkitAutomationSessionCreate):
(webkitAutomationSessionGetSession):
(webkit_automation_session_get_id):
* UIProcess/API/gtk/WebKitAutomationSession.h: Added.
* UIProcess/API/gtk/WebKitAutomationSessionPrivate.h: Added.
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):
(webkit_web_context_class_init):
(webkit_web_context_is_automation_allowed):
(webkit_web_context_set_automation_allowed):
(webkitWebContextCreatePageForWebView):
* UIProcess/API/gtk/WebKitWebContext.h:
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewConstructed):
(webkitWebViewSetProperty):
(webkitWebViewGetProperty):
(webkit_web_view_class_init):
(webkit_web_view_is_controlled_by_automation):
* UIProcess/API/gtk/WebKitWebView.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/gtk/docs/webkit2gtk-4.0.types:
* UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
* UIProcess/API/gtk/webkit2.h:
2017-05-01 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix GTK+ debug build after r216002.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
(WebKit::wrapClientRectList):
2017-04-30 Chris Dumez <cdumez@apple.com>
Drop support for legacy ClientRect / ClientRectList
https://bugs.webkit.org/show_bug.cgi?id=171418
Reviewed by Sam Weinig.
GTK build fix.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
(WebKit::kit):
(WebKit::core):
(WebKit::wrapClientRect):
(webkit_dom_client_rect_constructed):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
(ClientRectList::create):
(ClientRectList::items):
(ClientRectList::ClientRectList):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectListPrivate.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectPrivate.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
(webkit_dom_element_get_bounding_client_rect):
(webkit_dom_element_get_client_rects):
2017-04-30 Brady Eidson <beidson@apple.com>
More fixing after r215991
https://bugs.webkit.org/show_bug.cgi?id=171483
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::syncAllCookies):
2017-04-30 Brady Eidson <beidson@apple.com>
Fix r215991
https://bugs.webkit.org/show_bug.cgi?id=171483
Unreviewed.
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::syncAllCookies):
2017-04-30 Dan Bernstein <mitz@apple.com>
[Cocoa] Replaces uses of [get…() alloc] with alloc…Instance()
https://bugs.webkit.org/show_bug.cgi?id=171485
Reviewed by Geoffrey Garen.
* Platform/mac/MenuUtilities.mm:
(WebKit::menuItemForTelephoneNumber):
(WebKit::menuForTelephoneNumber):
2017-04-30 Brady Eidson <beidson@apple.com>
Updates to _WKWebsiteDataStoreConfiguration cookie storage location SPI.
<rdar://problem/31906397> and https://bugs.webkit.org/show_bug.cgi?id=171483
Reviewed by Geoff Garen (and kind of Andy Estes).
Updates include:
-Taking a file path as the config argument instead of a directory.
-Proper sandbox extension handling.
-Proper and thorough API test.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::syncAllCookies):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::syncAllCookies):
* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::encode):
(WebKit::WebsiteDataStoreParameters::decode):
* Shared/WebsiteDataStoreParameters.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _syncNetworkProcessCookies]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _initWithConfiguration:]):
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration _cookieStoragePath]):
(-[_WKWebsiteDataStoreConfiguration _setCookieStoragePath:]):
(-[_WKWebsiteDataStoreConfiguration _cookieStorageDirectory]): Deleted.
(-[_WKWebsiteDataStoreConfiguration _setCookieStorageDirectory:]): Deleted.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::syncNetworkProcessCookies):
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::resolvedCookieStoragePath):
(WebKit::WebsiteDataStore::resolvedCookieStorageDirectory): Deleted.
2017-04-30 Brady Eidson <beidson@apple.com>
Regression (r215941) Unexpected logging causes perf tests to fail.
<rdar://problem/31907269> and https://bugs.webkit.org/show_bug.cgi?id=171482
Reviewed by Alexey Proskuryakov.
* Shared/mac/SandboxExtensionMac.mm:
(WebKit::resolveAndCreateReadWriteDirectoryForSandboxExtension):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::networkingCachesDirectory):
(WebKit::WebProcessPool::webContentCachesDirectory):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): Only resolve the cookie storage directory
if a custom one has been set.
2017-04-29 Youenn Fablet <youenn@apple.com>
Readd assertion removed accidentally in r215955
https://bugs.webkit.org/show_bug.cgi?id=171466
Reviewed by Eric Carlson.
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::WebBackForwardListProxy::addItemFromUIProcess):
2017-04-29 Andy Estes <aestes@apple.com>
[macOS] Picture-in-picture should be disabled in WebPlaybackControlsManager during external media playback
https://bugs.webkit.org/show_bug.cgi?id=171468
<rdar://problem/31900349>
Reviewed by Eric Carlson.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateMediaTouchBar): Set canTogglePictureInPicture to YES by default
on WebPlaybackControlsManager.
2017-04-29 Yusuke Suzuki <utatane.tea@gmail.com>
Move WebCore CPUTime to WTF and implement it in all the platforms
https://bugs.webkit.org/show_bug.cgi?id=171477
Reviewed by Chris Dumez.
We now hold Seconds in CPUTime instead of int64_t. It finally sends
Seconds through WebKit2 IPC. We do not need to specialize ArgumentCoder
for Seconds since Seconds just holds double.
* UIProcess/PerActivityStateCPUUsageSampler.cpp:
(WebKit::PerActivityStateCPUUsageSampler::PerActivityStateCPUUsageSampler):
(WebKit::PerActivityStateCPUUsageSampler::reportWebContentCPUTime):
(WebKit::PerActivityStateCPUUsageSampler::loggingTimerFired):
* UIProcess/PerActivityStateCPUUsageSampler.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::reportWebContentCPUTime):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessPool.messages.in:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::reportProcessCPUTime):
* WebProcess/WebCoreSupport/WebChromeClient.h:
2017-04-28 Brady Eidson <beidson@apple.com>
Teach the DatabaseProcess to be fully SessionID aware
https://bugs.webkit.org/show_bug.cgi?id=171451
Reviewed by Geoffrey Garen.
SessionIDs were already at the periphery of IDB and the DatabaseProcess.
Getting a separate IDBServer per SessionID is a pretty straightforward improvement.
* DatabaseProcess/DatabaseProcess.cpp:
(WebKit::DatabaseProcess::idbServer):
(WebKit::DatabaseProcess::initializeWebsiteDataStore):
(WebKit::DatabaseProcess::fetchWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteDataForOrigins):
(WebKit::DatabaseProcess::indexedDatabaseOrigins):
(WebKit::DatabaseProcess::initializeDatabaseProcess): Deleted.
(WebKit::DatabaseProcess::ensureIndexedDatabaseRelativePathExists): Deleted.
(WebKit::DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath): Deleted.
* DatabaseProcess/DatabaseProcess.h:
(WebKit::DatabaseProcess::indexedDatabaseDirectory): Deleted.
* DatabaseProcess/DatabaseProcess.messages.in:
* DatabaseProcess/DatabaseToWebProcessConnection.cpp:
(WebKit::DatabaseToWebProcessConnection::establishIDBConnectionToServer):
* DatabaseProcess/DatabaseToWebProcessConnection.h:
* DatabaseProcess/DatabaseToWebProcessConnection.messages.in:
* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:
(WebKit::WebIDBConnectionToClient::create):
(WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
(WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
(WebKit::WebIDBConnectionToClient::deleteDatabase):
(WebKit::WebIDBConnectionToClient::openDatabase):
(WebKit::WebIDBConnectionToClient::abortTransaction):
(WebKit::WebIDBConnectionToClient::commitTransaction):
(WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction):
(WebKit::WebIDBConnectionToClient::createObjectStore):
(WebKit::WebIDBConnectionToClient::deleteObjectStore):
(WebKit::WebIDBConnectionToClient::renameObjectStore):
(WebKit::WebIDBConnectionToClient::clearObjectStore):
(WebKit::WebIDBConnectionToClient::createIndex):
(WebKit::WebIDBConnectionToClient::deleteIndex):
(WebKit::WebIDBConnectionToClient::renameIndex):
(WebKit::WebIDBConnectionToClient::putOrAdd):
(WebKit::WebIDBConnectionToClient::getRecord):
(WebKit::WebIDBConnectionToClient::getAllRecords):
(WebKit::WebIDBConnectionToClient::getCount):
(WebKit::WebIDBConnectionToClient::deleteRecord):
(WebKit::WebIDBConnectionToClient::openCursor):
(WebKit::WebIDBConnectionToClient::iterateCursor):
(WebKit::WebIDBConnectionToClient::establishTransaction):
(WebKit::WebIDBConnectionToClient::databaseConnectionPendingClose):
(WebKit::WebIDBConnectionToClient::databaseConnectionClosed):
(WebKit::WebIDBConnectionToClient::abortOpenAndUpgradeNeeded):
(WebKit::WebIDBConnectionToClient::didFireVersionChangeEvent):
(WebKit::WebIDBConnectionToClient::openDBRequestCancelled):
(WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer):
(WebKit::WebIDBConnectionToClient::getAllDatabaseNames):
* DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h:
* Shared/Databases/DatabaseProcessCreationParameters.cpp:
(WebKit::DatabaseProcessCreationParameters::encode):
(WebKit::DatabaseProcessCreationParameters::decode):
* Shared/Databases/DatabaseProcessCreationParameters.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureDatabaseProcess):
(WebKit::WebProcessPool::resolvePathsForSandboxExtensions):
(WebKit::WebProcessPool::pageAddedToProcess):
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
(WebKit::WebsiteDataStore::databaseProcessParameters):
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::resolvedIndexedDatabaseDirectory):
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::create):
(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
* WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
(WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession):
2017-04-28 Youenn Fablet <youenn@apple.com>
getUserMedia video streams should follow device orientation
https://bugs.webkit.org/show_bug.cgi?id=171284
Reviewed by Eric Carlson.
Refactoring to specialize CaptureFactory in VideoCaptureFactory and AudioCaptureFactory.
Refactoring to return a CaptureSourceOrError instead of passing an out parameter in addition to returning a RefPtr.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::createCaptureSource):
(WebKit::UserMediaCaptureManager::createMediaSourceForCaptureDeviceWithConstraints): Deleted.
* WebProcess/cocoa/UserMediaCaptureManager.h:
2017-04-28 Chris Dumez <cdumez@apple.com>
[iOS] We should not take a background assertion for the UIProcess when app is MobileMail
https://bugs.webkit.org/show_bug.cgi?id=171435
<rdar://problem/31132330>
Reviewed by Geoffrey Garen.
Add SPI to disable taking on background process assertions in the UIProcess.
This is useful for MobileMail.
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration shouldTakeUIBackgroundAssertion]):
(-[_WKProcessPoolConfiguration setShouldTakeUIBackgroundAssertion:]):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::NetworkProcessProxy):
* UIProcess/ProcessAssertion.h:
(WebKit::ProcessAssertion::setClient):
* UIProcess/ProcessThrottler.cpp:
(WebKit::ProcessThrottler::ProcessThrottler):
(WebKit::m_shouldTakeUIBackgroundAssertion):
(WebKit::ProcessThrottler::didConnectToProcess):
* UIProcess/ProcessThrottler.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::WebProcessProxy):
2017-04-28 Chris Dumez <cdumez@apple.com>
Unreviewed attempt to fix iOS build after r215943.
* Configurations/Base.xcconfig:
2017-04-28 Andy Estes <aestes@apple.com>
[macOS] WebPlaybackControlsManager needs to know when the selected text or audio track changes
https://bugs.webkit.org/show_bug.cgi?id=171434
<rdar://problem/31887922>
Reviewed by Eric Carlson.
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::setAudioMediaSelectionIndex): Set
m_audioMediaSelectedIndex and notified clients.
(WebKit::WebPlaybackSessionModelContext::setLegibleMediaSelectionIndex): Ditto for
m_legibleMediaSelectedIndex.
(WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionIndex): Called
WebPlaybackSessionModelContext::setAudioMediaSelectionIndex().
(WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionIndex): Called
WebPlaybackSessionModelContext::setLegibleMediaSelectionIndex().
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionInterfaceContext::audioMediaSelectionIndexChanged): Called
WebPlaybackSessionManager:: audioMediaSelectionIndexChanged().
(WebKit::WebPlaybackSessionInterfaceContext::legibleMediaSelectionIndexChanged): Called
WebPlaybackSessionManager::legibleMediaSelectionIndexChanged().
(WebKit::WebPlaybackSessionManager::audioMediaSelectionIndexChanged): Sent
WebPlaybackSessionManagerProxy::SetAudioMediaSelectionIndex().
(WebKit::WebPlaybackSessionManager::legibleMediaSelectionIndexChanged): Sent
WebPlaybackSessionManagerProxy::SetLegibleMediaSelectionIndex().
2017-04-28 Brady Eidson <beidson@apple.com>
Start of support for multiple WebsiteDataStore/SessionIDs per process
https://bugs.webkit.org/show_bug.cgi?id=171422
Reviewed by Geoffrey Garen.
* CMakeLists.txt:
* WebKit2.xcodeproj/project.pbxproj:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::destroyPrivateBrowsingSession): Deleted.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/RemoteNetworkingContext.h:
* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* Shared/WebsiteDataStoreParameters.cpp: Copied from Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h.
(WebKit::WebsiteDataStoreParameters::WebsiteDataStoreParameters):
(WebKit::WebsiteDataStoreParameters::encode):
(WebKit::WebsiteDataStoreParameters::decode):
* Shared/WebsiteDataStoreParameters.h: Copied from Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h.
* UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::defaultDataStore):
(API::WebsiteDataStore::createLegacy):
(API::WebsiteDataStore::WebsiteDataStore):
(API::WebsiteDataStore::create): Deleted.
* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _initWithConfiguration:]):
* UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:
(webkitWebsiteDataManagerCreate):
(webkitWebsiteDataManagerGetDataStore):
* UIProcess/WebPageProxy.cpp:
(WebKit::m_weakPtrFactory):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
(WebKit::WebProcessPool::pageAddedToProcess):
(WebKit::WebProcessPool::pageRemovedFromProcess):
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::create):
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
(WebKit::WebsiteDataStore::parameters):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
(WebKit::WebFrameNetworkingContext::storageSession):
* WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
* WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::addWebsiteDataStore):
(WebKit::WebProcess::destroySession):
(WebKit::WebProcess::destroyPrivateBrowsingSession): Deleted.
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
2017-04-28 Youenn Fablet <youenn@apple.com>
Adding a runtime flag specific to MediaDevices
https://bugs.webkit.org/show_bug.cgi?id=171433
Reviewed by Geoffrey Garen.
Adding a preference for MediaDevices.
Setting media devices runtime flag to false by default.
Setting peer connection and media stream flags to true by default.
Sending microphone sandbox extension based on media devices and not media stream flag.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetMediaDevicesEnabled):
(WKPreferencesGetMediaDevicesEnabled):
* UIProcess/API/C/WKPreferencesRef.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-04-28 Brady Eidson <beidson@apple.com>
Teach WebProcessPool to track a map of SessionIDs to WebPageProxys to manage their lifetime
https://bugs.webkit.org/show_bug.cgi?id=171408
Reviewed by Alex Christensen.
* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::sessionID):
* UIProcess/API/APIPageConfiguration.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::close):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::pageAddedToProcess):
(WebKit::WebProcessPool::pageRemovedFromProcess):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::createWebPage):
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::removeWebPage):
* UIProcess/WebProcessProxy.h:
2017-04-27 Carlos Garcia Campos <cgarcia@igalia.com>
Move UUID from WebCore/platform to WTF
https://bugs.webkit.org/show_bug.cgi?id=171372
Reviewed by Michael Catanzaro.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::handleForWebPageProxy):
(WebKit::WebAutomationSession::handleForWebFrameID):
* UIProcess/gtk/WaylandCompositor.cpp:
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::createUUID):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::openWithNativeApplication):
2017-04-27 Chris Dumez <cdumez@apple.com>
Align colspan/rowspan limits with the latest HTML specification
https://bugs.webkit.org/show_bug.cgi?id=171322
Reviewed by Darin Adler.
GTK build fix.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:
(webkit_dom_html_table_cell_element_get_col_span):
(webkit_dom_html_table_cell_element_set_col_span):
2017-04-27 Wenson Hsieh <wenson_hsieh@apple.com>
WKUIDelegatePrivate needs a hook to vend data used to initialize item providers for data interaction
https://bugs.webkit.org/show_bug.cgi?id=171386
<rdar://problem/31557237>
Reviewed by Beth Dakin.
Add a new WKUIDelegate hook, _webView:adjustedDataInteractionItemProvidersForItemProvider:representingObjects:additionalData:.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
2017-04-27 Brady Eidson <beidson@apple.com>
Refactor SessionID to support multiple non-ephemeral (persistent) sessions.
https://bugs.webkit.org/show_bug.cgi?id=171367
Reviewed by Andy Estes.
* Shared/ChildProcess.cpp:
(WebKit::ChildProcess::initialize): Child processes should never be generating new SessionIDs,
so enable generation protection.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<SessionID>::encode): Deleted.
(IPC::ArgumentCoder<SessionID>::decode): Deleted.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::createNonPersistent):
(WebKit::generateNonPersistentSessionID): Deleted.
2017-04-27 Said Abou-Hallawa <sabouhallawa@apple.com>
REGRESSION(r213764): Async decoding of animated images is disabled for ImageDocument
https://bugs.webkit.org/show_bug.cgi?id=170333
Reviewed by Simon Fraser.
Disbale the async decoding for large images for now.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-04-27 Brent Fulgham <bfulgham@apple.com>
[WK2][macOS] Allow multi-touch related iokit-get-properties
https://bugs.webkit.org/show_bug.cgi?id=171355
<rdar://problem/31851928>
Reviewed by Alexey Proskuryakov.
During testing I've noticed Sandbox Violations being generated during some 'Force Touch' track pad use.
The sandbox should allow these IOKit properties to be accessed.
* WebProcess/com.apple.WebProcess.sb.in:
2017-04-27 Alex Christensen <achristensen@webkit.org>
Add stub SPI for setting cookie storage path on _WKWebsiteDataStoreConfiguration
https://bugs.webkit.org/show_bug.cgi?id=171399
Reviewed by Brady Eidson.
This SPI isn't hooked up yet, but it has a test that will need to be updated once it works.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _initWithConfiguration:]):
* UIProcess/API/Cocoa/_WKDraggableElementInfo.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration _cookieStorageDirectory]):
(-[_WKWebsiteDataStoreConfiguration _setCookieStorageDirectory:]):
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::resolvedCookieStorageDirectory):
2017-04-27 Chris Dumez <cdumez@apple.com>
Element.getBoundingClientRect() / getClientRects() should return a DOMRect types
https://bugs.webkit.org/show_bug.cgi?id=171226
Reviewed by Simon Fraser.
GTK build fix.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
(toClientRect):
(webkit_dom_element_get_bounding_client_rect):
(webkit_dom_element_get_client_rects):
2017-04-27 Brady Eidson <beidson@apple.com>
Update NetworkStorageSession to support multiple persistent sessions and explicitly set cookie storages.
https://bugs.webkit.org/show_bug.cgi?id=171365
Reviewed by Andy Estes.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
2017-04-27 Alex Christensen <achristensen@webkit.org>
Modernize Frame.h
https://bugs.webkit.org/show_bug.cgi?id=171357
Reviewed by Andy Estes.
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::isSelectTrailingWhitespaceEnabled):
* WebProcess/WebCoreSupport/WebEditorClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::contextMenuAtPointInWindow):
(WebKit::handleContextMenuEvent):
(WebKit::WebPage::isSelectTrailingWhitespaceEnabled):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::selectWithGesture):
(WebKit::WebPage::selectPositionAtPoint):
(WebKit::WebPage::selectPositionAtBoundaryWithDirection):
(WebKit::WebPage::rangeForGranularityAtPoint):
(WebKit::WebPage::selectTextWithGranularityAtPoint):
(WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
(WebKit::WebPage::updateSelectionWithExtentPoint):
2017-04-27 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Remote inspector should support inspecting targets with previous version of backend commands
https://bugs.webkit.org/show_bug.cgi?id=171267
Reviewed by Michael Catanzaro.
There's a FIXME for this in the code. The remote inspector proxy allows to pass a backend commands URL when
inspecting a target. That URL, if not empty, is used as Protocol/InspectorBackendCommands.js in the inspector
code instead of the local copy. We are currently assuming that both ends use the same version of that file.
* UIProcess/glib/RemoteInspectorClient.cpp:
(WebKit::RemoteInspectorProxy::load): Pass RemoteInspectorClient::backendCommandsURL() to load().
(WebKit::RemoteInspectorClient::setupConnection): Get the local backend commands hash and pass it to
SetupInspectorClient method. Extract the server backend commands from the result and call setBackendCommands().
(WebKit::RemoteInspectorClient::setBackendCommands): Create a data URL for the server backend commands file
conents if needed.
* UIProcess/glib/RemoteInspectorClient.h:
(WebKit::RemoteInspectorClient::backendCommandsURL):
2017-04-26 Wenson Hsieh <wenson_hsieh@apple.com>
WebItemProviderPasteboard should not synchronously load provided data
https://bugs.webkit.org/show_bug.cgi?id=171341
<rdar://problem/31614010>
Reviewed by Tim Horton.
Adds plumbing for updatePreferredTypeIdentifiers through the WebPasteboardProxy. This allows the web process to
signal to the UI process what UTIs the current drop target should accept and load. See WebCore ChangeLog for more
details.
* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::updatePreferredTypeIdentifiers):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::updatePreferredTypeIdentifiers):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
2017-04-26 Youenn Fablet <youenn@apple.com>
Unauthenticated CORS preflight requests should not use client certificates
https://bugs.webkit.org/show_bug.cgi?id=171298
Reviewed by Alex Christensen.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Ensuring that session dedicated to requests that do not want to use credentials do not look for client credentials.
2017-04-26 Eric Carlson <eric.carlson@apple.com>
The current page is given a muted state when starting a media stream on iOS.
https://bugs.webkit.org/show_bug.cgi?id=171290
<rdar://problem/31821427>
Reviewed by Jer Noble.
* UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Don't mute the current
page on iOS either, that will prevent the new media stream from playing.
2017-04-26 Alex Christensen <achristensen@webkit.org>
Make user script injection more robust
https://bugs.webkit.org/show_bug.cgi?id=171339
<rdar://problem/30643691>
Reviewed by Geoffrey Garen.
* WebProcess/UserContent/WebUserContentController.cpp:
(WebKit::WebUserContentController::forEachUserScript):
(WebKit::WebUserContentController::forEachUserStyleSheet):
(WebKit::WebUserContentController::forEachUserMessageHandler):
* WebProcess/UserContent/WebUserContentController.h:
2017-04-26 Zalan Bujtas <zalan@apple.com>
RTL: recent searches popover is displayed in incorrect location
https://bugs.webkit.org/show_bug.cgi?id=171338
<rdar://problem/31377807>
Reviewed by Dean Jackson.
Add RTL support for the pop-under branch.
* UIProcess/mac/WebPopupMenuProxyMac.mm:
(WebKit::WebPopupMenuProxyMac::showPopupMenu):
2017-04-26 Antti Koivisto <antti@apple.com>
Enable expired-only reload policy on Mac and iOS
https://bugs.webkit.org/show_bug.cgi?id=171264
<rdar://problem/31807637>
Reviewed by Andreas Kling.
Enable the reload policy where only expired subresources are revalidated on Mac and iOS.
The behavor is enabled in Safari and for other clients based on SDK version check.
* UIProcess/API/C/WKPage.cpp:
(WKPageReload):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView reload]):
* UIProcess/Cocoa/VersionChecks.h:
2017-04-26 Andy Estes <aestes@apple.com>
[macOS] Add picture-in-picture support to WebPlaybackControlsManager
https://bugs.webkit.org/show_bug.cgi?id=171328
<rdar://problem/29875010>
Reviewed by Jer Noble.
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::togglePictureInPicture): Added. Calls
WebPlaybackSessionManagerProxy::togglePictureAndPicture().
(WebKit::WebPlaybackSessionManagerProxy::togglePictureInPicture): Added. Sends
TogglePictureInPicture to WebPlaybackSessionManager.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateMediaTouchBar): Called
-[WebPlaybackControlsManager setAllowsPictureInPicturePlayback:YES] if
WebPreferences::allowsPictureInPictureMediaPlayback() is true.
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.messages.in:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionManager::togglePictureInPicture): Added. Sets a
UserGestureIndicator and calls WebPlaybackSessionModel::togglePictureInPicture().
2017-04-26 Tim Horton <timothy_horton@apple.com>
WebKit calls AppKit NSCell API from a background queue
https://bugs.webkit.org/show_bug.cgi?id=171318
<rdar://problem/31798317>
Reviewed by Anders Carlsson.
* UIProcess/mac/ServicesController.mm:
(WebKit::ServicesController::refreshExistingServices):
Synchronously bounce to the main thread to do non-thread-safe NSCell related work.
2017-04-25 Alex Christensen <achristensen@webkit.org>
Encoded filename should be decoded for WKContentExtension.identifier
https://bugs.webkit.org/show_bug.cgi?id=171316
Reviewed by Andy Estes.
* UIProcess/API/APIContentExtensionStore.cpp:
(API::createExtension):
(API::ContentExtensionStore::lookupContentExtension):
(API::ContentExtensionStore::getAvailableContentExtensionIdentifiers):
2017-04-26 Andrew Gold <agold@apple.com>
Move mediaCaptureEnabled from WKWebViewConfiguration to WKPreferences
https://bugs.webkit.org/show_bug.cgi?id=171294
Reviewed by Eric Carlson.
Since we now want the ability to toggle this setting dynamically, I have
moved it from WKWebViewConfiguration to WKPreferences.
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _mediaStreamEnabled]):
(-[WKPreferences _setMediaStreamEnabled:]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]): No longer set mediaStream enabled from
the configuration.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _mediaStreamEnabled]): Deleted.
(-[WKWebViewConfiguration _setMediaStreamEnabled:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
2017-04-25 Alex Christensen <achristensen@webkit.org>
REGRESSION(206450): WebKit2PlatformMouseEvent m_modifierFlags not set
https://bugs.webkit.org/show_bug.cgi?id=171297
<rdar://problem/31530719>
Reviewed by Geoffrey Garen.
* Shared/WebEventConversion.cpp:
(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
2017-04-25 Wenson Hsieh <wenson_hsieh@apple.com>
Unreviewed, speculative build fix
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
For the time being, remove all references to UIItemProviders from this private header.
This should be fixed to use unavailability macros in a followup. See <rdar://problem/31827095>.
2017-04-25 Brent Fulgham <bfulgham@apple.com>
Limit allowed size of document.title to avoid locking WebKit clients
https://bugs.webkit.org/show_bug.cgi?id=165113
<rdar://problem/28324389>
Reviewed by Darin Adler.
When a web application attempts to set an extremely long title, truncate the
title to a more reasonable size.
We do this at at the presentation layer, rather than in the DOM, so that we do
not affect script function. Instead, we merely limit display to a level that is
reasonable for normal GUI widgets. Anything else needs to be truncated in the UI
layer, so it is a waste of effort to send across IPC.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
2017-04-25 John Wilander <wilander@apple.com>
Resource Load Statistics: Introduce shorter time-to-live for cookie partition whitelisting
https://bugs.webkit.org/show_bug.cgi?id=171295
<rdar://problem/31823818>
Reviewed by Brent Fulgham.
* UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:
(WKResourceLoadStatisticsManagerSetTimeToLiveCookiePartitionFree):
(WKResourceLoadStatisticsManagerFireShouldPartitionCookiesHandler):
(WKResourceLoadStatisticsManagerFireShouldPartitionCookiesHandlerForOneDomain):
Changes and additions to test infrastructure.
* UIProcess/API/C/WKResourceLoadStatisticsManager.h:
* UIProcess/WebResourceLoadStatisticsManager.cpp:
(WebKit::WebResourceLoadStatisticsManager::setTimeToLiveCookiePartitionFree):
(WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandler):
(WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandlerForOneDomain):
(WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
Changes and additions to test infrastructure.
* UIProcess/WebResourceLoadStatisticsManager.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
No longer sends a boolean parameter to
WebCore::ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler().
2017-04-25 Simon Fraser <simon.fraser@apple.com>
REGRESSION (r213719): WebGL content on cubeslam.com is 1/4 expected size
https://bugs.webkit.org/show_bug.cgi?id=171300
rdar://problem/31051538
Reviewed by Dean Jackson.
Propagating the contentsScale to the UI process for canvas content layers causes
scaling issues, so don't do it for contents-provided layers.
No test because WebGL can't be tested in the iOS simulator.
* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::PlatformCALayerRemote):
2017-04-25 Brady Eidson <beidson@apple.com>
Update WebProcess(Pool) to assume there's always a WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=171299
Reviewed by Alex Christensen.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcess):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::warmInitialProcess):
(WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
(WebKit::WebProcessPool::createWebPage):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::create):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::m_userMediaCaptureManagerProxy):
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::websiteDataStore):
2017-04-25 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r215730.
The LayoutTest for this change is a flaky timeout on mac-wk1
debug.
Reverted changeset:
"Enable expired-only reload policy on Mac and iOS"
https://bugs.webkit.org/show_bug.cgi?id=171264
http://trac.webkit.org/changeset/215730
2017-04-24 Matt Rajca <mrajca@apple.com>
Indicate presence of audio when handling autoplay events.
https://bugs.webkit.org/show_bug.cgi?id=171227
Reviewed by Alex Christensen.
* UIProcess/API/APIUIClient.h:
(API::UIClient::handleAutoplayEvent):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/C/WKPageUIClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::handleAutoplayEvent):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::handleAutoplayEvent):
* WebProcess/WebCoreSupport/WebChromeClient.h:
2017-04-25 Daniel Bates <dabates@apple.com>
[Cocoa][Win] Enable of X-Content-Type-Options: nosniff header
https://bugs.webkit.org/show_bug.cgi?id=136452
<rdar://problem/23412620>
Reviewed by Brent Fulgham.
Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.
* Configurations/FeatureDefines.xcconfig:
2017-04-25 John Wilander <wilander@apple.com>
Resource Load Statistics: Clear network process cache when clearing store
https://bugs.webkit.org/show_bug.cgi?id=171256
<rdar://problem/31802347>
Reviewed by Brent Fulgham.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
Now takes and passes on the boolean parameter clearFirst to
WebCore::NetworkStorageSession::setShouldPartitionCookiesForHosts().
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
The message ShouldPartitionCookiesForTopPrivatelyOwnedDomains now
takes the boolean parameter clearFirst.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
Now takes and passes on the boolean parameter clearFirst to
Messages::NetworkProcess::ShouldPartitionCookiesForTopPrivatelyOwnedDomains.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
The message ShouldPartitionCookiesForTopPrivatelyOwnedDomains now
takes the boolean parameter clearFirst.
* UIProcess/WebResourceLoadStatisticsManager.cpp:
(WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandler):
Now uses the boolean parameter clearFirst when calling
WebCore::ResourceLoadObserver::fireShouldPartitionCookiesHandler().
(WebKit::WebResourceLoadStatisticsManager::clearInMemoryAndPersistentStore):
No longer uses the deleted store getter.
(WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
No longer uses the deleted store getter.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
No sends the boolean parameter clearFirst to
ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler().
(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
Now expects a handler with the boolean parameter clearFirst.
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
* UIProcess/WebResourceLoadStatisticsStore.h:
Now uses the new WebCore::ResourceLoadObserver::clearInMemoryStore().
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
Now takes and passes on the boolean parameter clearFirst in its
message to the network process.
(WebKit::WebsiteDataStore::registerSharedResourceLoadObserver):
Now expects a handler with the boolean parameter clearFirst.
* UIProcess/WebsiteData/WebsiteDataStore.h:
2017-04-25 Chris Dumez <cdumez@apple.com>
Content-Disposition header filename is ignored when 'download' attribute is specified in HTML
https://bugs.webkit.org/show_bug.cgi?id=171239
<rdar://problem/31789855>
Reviewed by Alex Christensen.
Content-Disposition header filename is ignored when 'download' attribute is specified in HTML.
This is not as per HTML specification:
- https://html.spec.whatwg.org/#as-a-download (Step 2)
Content-Disposition header filename is supposed to override the value of the download attribute.
Firefox and Chrome follow the specification.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::findPendingDownloadLocation):
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::didReceiveResponse):
2017-04-25 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Add WebKitInspectorWindow to create inspector windows from local and remote inspector
https://bugs.webkit.org/show_bug.cgi?id=171261
Reviewed by Michael Catanzaro.
The code is currently duplicated in WebInspectorProxyGtk.cpp and RemoteWebInspectorProxyGtk.cpp. We can simplify
it by using a common widget in both places.
This patch also fixes the build when using GTK+ < 3.16.
* PlatformGTK.cmake:
* UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp:
(WebKit::RemoteWebInspectorProxy::updateWindowTitle):
(WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::createInspectorWindow):
(WebKit::WebInspectorProxy::updateInspectorWindowTitle):
* UIProcess/gtk/WebKitInspectorWindow.cpp: Added.
(webkit_inspector_window_class_init):
(webkit_inspector_window_init):
(webkitInspectorWindowNew):
(webkitInspectorWindowSetSubtitle):
* UIProcess/gtk/WebKitInspectorWindow.h: Added.
2017-04-25 Antti Koivisto <antti@apple.com>
Enable expired-only reload policy on Mac and iOS
https://bugs.webkit.org/show_bug.cgi?id=171264
<rdar://problem/31807637>
Reviewed by Andreas Kling.
Enable the reload policy where only expired subresources are revalidated on Mac and iOS.
The behavor is enabled in Safari and for other clients based on SDK version check.
* UIProcess/API/C/WKPage.cpp:
(WKPageReload):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView reload]):
* UIProcess/Cocoa/VersionChecks.h:
2017-04-25 Wenson Hsieh <wenson_hsieh@apple.com>
Support reading NSURL titles from the pasteboard when performing data interaction
https://bugs.webkit.org/show_bug.cgi?id=171156
<rdar://problem/31356937>
Reviewed by Tim Horton.
Adjust for interface changes in WebCore to support plumbing the title of an NSURL from the platform pasteboard
back to WebCore. Additionally, implement WebEditorClient::hasRichlyEditableSelection (which previously returned
false) to check whether the current selection is richly editable, or the drop caret is in richly editable content.
See WebCore ChangeLog for more details.
* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::readURLFromPasteboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
(WebKit::WebEditorClient::hasRichlyEditableSelection):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::hasRichlyEditableSelection):
* WebProcess/WebPage/WebPage.h:
2017-04-24 Wenson Hsieh <wenson_hsieh@apple.com>
Respect fidelity order when reading web content from item providers
https://bugs.webkit.org/show_bug.cgi?id=171155
<rdar://problem/31356937>
Reviewed by Tim Horton.
Adjusts for changes in WebCore by adding plumbing to support Pasteboard::getTypesByFidelityForItemAtIndex. See
WebCore/ChangeLog for more details.
* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::getPasteboardTypesByFidelityForItemAtIndex):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::getTypesByFidelityForItemAtIndex):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
2017-04-24 Brady Eidson <beidson@apple.com>
WebProcessPools should always have a WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=171252
Reviewed by Alex Christensen.
* UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::registerSharedResourceLoadObserver): Deleted.
* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextGetWebsiteDataStore):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitialize):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::createWebPage):
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::isAssociatedProcessPool):
2017-04-24 Youenn Fablet <youenn@apple.com>
Set defaults video getUserMedia constraints
https://bugs.webkit.org/show_bug.cgi?id=171127
Reviewed by Eric Carlson.
Updated to cope with MediaStreamConstraintsImpl refactoring.
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
2017-04-24 Chris Dumez <cdumez@apple.com>
Allow tabs with capturing audio or video to exceed background CPU limit
https://bugs.webkit.org/show_bug.cgi?id=171249
<rdar://problem/31796314>
Reviewed by Geoffrey Garen.
Allow tabs with capturing audio or video to exceed background CPU limit as this
is a legit case of potentially high background CPU use.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didExceedBackgroundCPULimit):
2017-04-24 Andy Estes <aestes@apple.com>
Try to fix the 32-bit macOS build.
* UIProcess/Cocoa/WebViewImpl.mm:
2017-04-24 Andy Estes <aestes@apple.com>
[macOS] Enable media selection button on AVTouchBarScrubber
https://bugs.webkit.org/show_bug.cgi?id=171149
<rdar://problem/29875010>
Reviewed by Beth Dakin.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateMediaTouchBar):
2017-04-24 Alex Christensen <achristensen@webkit.org>
Reduce copies and allocations in SharedBuffer::append
https://bugs.webkit.org/show_bug.cgi?id=170956
Reviewed by Andreas Kling.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]):
* Platform/IPC/DataReference.cpp:
(IPC::SharedBufferDataReference::encode):
* Shared/ShareableResource.cpp:
(WebKit::ShareableResource::wrapInSharedBuffer):
* UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm:
(-[WKURLSchemeHandlerTaskImpl didReceiveData:]):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::addArchiveResource):
(WebKit::PDFPlugin::liveResourceData):
(WebKit::PDFPlugin::writeItemsToPasteboard):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::redeliverManualStream):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteDragImage):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::cachedResponseDataForURL):
2017-04-24 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Switch to use ENABLE_REMOTE_INSPECTOR instead of ENABLE_INSPECTOR_SERVER for the remote inspector
https://bugs.webkit.org/show_bug.cgi?id=166680
Reviewed by Michael Catanzaro.
Remove INSPECTOR_SERVER code and add new classes to implement REMOTE_INSPECTOR. The WebKitWebContext registers a
custom protocol "inspector" that loads a page with the list of debuggable targets.
* PlatformGTK.cmake: Add new files to compilation and remove the old ones.
* UIProcess/API/gtk/WebKit2InspectorGResourceBundle.xml: Removed.
* UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: Added.
(WebKit::RemoteInspectorProtocolHandler::RemoteInspectorProtocolHandler):
(WebKit::RemoteInspectorProtocolHandler::~RemoteInspectorProtocolHandler):
(WebKit::RemoteInspectorProtocolHandler::webViewDestroyed):
(WebKit::RemoteInspectorProtocolHandler::userContentManagerDestroyed):
(WebKit::RemoteInspectorProtocolHandler::handleRequest):
(WebKit::RemoteInspectorProtocolHandler::inspect):
(WebKit::RemoteInspectorProtocolHandler::targetListChanged):
(WebKit::RemoteInspectorProtocolHandler::connectionClosed):
* UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.h: Added.
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):
* UIProcess/InspectorServer/HTTPRequest.cpp: Add missing ENABLE(INSPECTOR_SERVER) ifdefs.
* UIProcess/InspectorServer/HTTPRequest.h:
* UIProcess/InspectorServer/WebInspectorServer.h:
* UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp: Removed.
* UIProcess/RemoteWebInspectorProxy.cpp:
* UIProcess/RemoteWebInspectorProxy.h:
* UIProcess/WebProcessPool.cpp:
* UIProcess/glib/RemoteInspectorClient.cpp: Added.
(WebKit::RemoteInspectorClient::RemoteInspectorClient):
(WebKit::RemoteInspectorClient::~RemoteInspectorClient):
(WebKit::dbusConnectionCallAsyncReadyCallback):
(WebKit::RemoteInspectorClient::connectionClosedCallback):
(WebKit::RemoteInspectorClient::setupConnection):
(WebKit::RemoteInspectorClient::connectionClosed):
(WebKit::RemoteInspectorClient::inspect):
(WebKit::RemoteInspectorClient::sendMessageToBackend):
(WebKit::RemoteInspectorClient::closeFromFrontend):
(WebKit::RemoteInspectorClient::setTargetList):
(WebKit::RemoteInspectorClient::sendMessageToFrontend):
* UIProcess/glib/RemoteInspectorClient.h: Added.
(WebKit::RemoteInspectorObserver::~RemoteInspectorObserver):
(WebKit::RemoteInspectorClient::targets):
(WebKit::RemoteInspectorClient::hostAndPort):
* UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp: Added.
(WebKit::RemoteWebInspectorProxy::updateWindowTitle):
(WebKit::inspectorViewDestroyed):
(WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
(WebKit::RemoteWebInspectorProxy::platformCloseFrontendPageAndWindow):
(WebKit::RemoteWebInspectorProxy::platformBringToFront):
(WebKit::RemoteWebInspectorProxy::platformSave):
(WebKit::RemoteWebInspectorProxy::platformAppend):
(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag):
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab):
* UIProcess/gtk/WebProcessPoolGtk.cpp:
(WebKit::initializeRemoteInspectorServer):
(WebKit::WebProcessPool::platformInitialize):
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
(didReceiveMessageToPage): Updated after the GRefPtr hash traitds changes.
* config.h:
2017-04-23 Dan Bernstein <mitz@apple.com>
[macOS] WKWebInspectorProxyObjCAdapter has a public ivar
https://bugs.webkit.org/show_bug.cgi?id=171200
Reviewed by Geoffrey Garen.
* UIProcess/API/C/mac/WKInspectorPrivateMac.h: Made ivar private.
2017-04-23 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r215657 and r215676.
https://bugs.webkit.org/show_bug.cgi?id=171201
Broke the build (Requested by ap on #webkit).
Reverted changesets:
"[macOS] Enable media selection button on AVTouchBarScrubber"
https://bugs.webkit.org/show_bug.cgi?id=171149
http://trac.webkit.org/changeset/215657
"Build fix after r215657."
http://trac.webkit.org/changeset/215676
2017-04-23 Alexey Proskuryakov <ap@apple.com>
Build fix after r215657.
* UIProcess/Cocoa/WebViewImpl.mm:
2017-04-23 Andy Estes <aestes@apple.com>
[macOS] AVTouchBarMediaSelectionOptions should be created with the correct type
https://bugs.webkit.org/show_bug.cgi?id=171192
<rdar://problem/29875010>
Reviewed by Wenson Hsieh.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<MediaSelectionOption>::encode):
(IPC::ArgumentCoder<MediaSelectionOption>::decode):
* Shared/WebCoreArgumentCoders.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::setAudioMediaSelectionOptions):
(WebKit::WebPlaybackSessionModelContext::setLegibleMediaSelectionOptions):
(WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionOptions):
(WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionOptions):
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionInterfaceContext::audioMediaSelectionOptionsChanged):
(WebKit::WebPlaybackSessionInterfaceContext::legibleMediaSelectionOptionsChanged):
(WebKit::WebPlaybackSessionManager::audioMediaSelectionOptionsChanged):
(WebKit::WebPlaybackSessionManager::legibleMediaSelectionOptionsChanged):
2017-04-21 Wenson Hsieh <wenson_hsieh@apple.com>
Support writing link titles to the pasteboard when beginning data interaction on a link
https://bugs.webkit.org/show_bug.cgi?id=171154
<rdar://problem/31356937>
Reviewed by Andy Estes.
Adds support for setting the _title attribute of NSURLs written to the pasteboard. See WebCore ChangeLog for more details.
* Scripts/webkit/messages.py:
(headers_for_type):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PasteboardURL>::encode):
(IPC::ArgumentCoder<PasteboardURL>::decode):
* Shared/WebCoreArgumentCoders.h:
Teach PasteboardURL to be serialized in IPC. For now, we just send across the absolute string of the link and
its title.
* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::writeURLToPasteboard):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
Add IPC plumbing for writing PasteboarURLs to the pasteboard.
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::writeToPasteboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
2017-04-21 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, rolling out r215608.
Hundreds of test failures on GTK bot
Reverted changeset:
"Reduce copies and allocations in SharedBuffer::append"
https://bugs.webkit.org/show_bug.cgi?id=170956
http://trac.webkit.org/changeset/215608
2017-04-21 Andy Estes <aestes@apple.com>
[macOS] Enable media selection button on AVTouchBarScrubber
https://bugs.webkit.org/show_bug.cgi?id=171149
<rdar://problem/29875010>
Reviewed by Beth Dakin.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateMediaTouchBar):
2017-04-21 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Add delegate hooks for overriding unhanded data interaction operations
https://bugs.webkit.org/show_bug.cgi?id=171005
<rdar://problem/31669646>
Reviewed by Tim Horton.
Adds support for overriding data interaction operations through two new delegate methods:
_webView:willUpdateDataInteractionOperationToOperation:forSession:, and
_webView:dataInteractionOperationWasHandled:forSession:. The former may be overridden to return a different
operation type than what WebKit would originally have returned, and the latter may be overridden to run custom
logic after the web process has handled a data interaction operation.
Additionally, includes some minor cleanup around WKContentViewInteraction. With the new
_webView:dataInteractionOperationWasHandled:forSession: delegate method, the last method on _WKTestingDelegate
may be removed. This means _WKTestingDelegate is no longer needed, so this patch removes its header entirely.
Also, relocates some state variables formerly on WKContentView to WKContentView's WKDataInteractionState struct
instead, so that all state associated with data interaction may be cleaned up at the same time.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _testingDelegate]): Deleted.
(-[WKWebView _setTestingDelegate:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/_WKTestingDelegate.h: Removed.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
Add a new "handled" IPC argument to DidPerformDataInteractionControllerOperation. This lets the UI process
know whether or not the data interaction operation was handled by the web process, and is eventually plumbed
through to the UI delegate via the new SPI.
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didPerformDataInteractionControllerOperation):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanupInteraction]):
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didPerformDataInteractionControllerOperation):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::performDragControllerAction):
2017-04-21 Anders Carlsson <andersca@apple.com>
Stop using deprecated APIs, part 5
https://bugs.webkit.org/show_bug.cgi?id=171134
rdar://problem/31589635
Reviewed by Tim Horton.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toPKPaymentAuthorizationStatus):
Remove this and add a new version that doesn't use any deprecated values.
(WebKit::toPKPaymentAuthorizationStatus):
New function that takes a WebCore::PaymentAuthorizationResult and converts it to a status, for older OSes.
(WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession):
Use the new toPKPaymentAuthorizationStatus versions.
(WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
Ditto.
(WebKit::status): Deleted.
2017-04-21 David Kilzer <ddkilzer@apple.com>
Switch from -std=gnu++11 to -std=gnu++14 for consistency in DerivedSources.make
<https://webkit.org/b/171122>
Reviewed by Brent Fulgham.
* DerivedSources.make: Switch to -std=gnu++14 for preprocessing
headers to check for build settings.
2017-04-21 Jer Noble <jer.noble@apple.com>
[WK2][MediaCapture] Pass muted and enabled state across process boundary when capturing in UIProcess
https://bugs.webkit.org/show_bug.cgi?id=170846
Reviewed by Jon Lee.
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::setMuted):
(WebKit::UserMediaCaptureManagerProxy::setEnabled):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::setMuted):
(WebKit::UserMediaCaptureManager::Source::setEnabled):
(WebKit::UserMediaCaptureManager::setMuted):
(WebKit::UserMediaCaptureManager::setEnabled):
* WebProcess/cocoa/UserMediaCaptureManager.h:
2017-04-21 Jer Noble <jer.noble@apple.com>
[WK2][MediaCapture] Remove now-unused WKWebViewConfiguration property for shouldCaptureAudioInUIProcess
https://bugs.webkit.org/show_bug.cgi?id=170847
Reviewed by Jon Lee.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _shouldCaptureAudioInUIProcess]): Deleted.
(-[WKWebViewConfiguration _setShouldCaptureAudioInUIProcess:]): Deleted.
2017-04-21 Anders Carlsson <andersca@apple.com>
Stop using deprecated APIs, part 4
https://bugs.webkit.org/show_bug.cgi?id=171125
rdar://problem/31589635
Reviewed by Tim Horton.
It doesn't really matter what we pass to these completion functions, since the sheet has already been dismissed at this point
so just remove the status parameter.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]):
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]):
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]):
2017-04-21 Andrew Gold <agold@apple.com>
-[WKUIDelegatePrivate _webView:requestUserMediaAuthorizationForMicrophone:camera:url:mainFrameURL:decisionHandler:]
decision handler should only have one parameter.
https://bugs.webkit.org/show_bug.cgi?id=171081
Reviewed by Tim Horton.
Because user media authorization is all or nothing, we should not have separate booleans
to indicate authorization. Additionally, rather than passing two separate booleans to the
UIDelegate, we now pass an NS_OPTIONS parameter.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h: Added _WKCaptureDevice NS_OPTIONS.
* UIProcess/Cocoa/UIDelegate.mm:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate): Uses new WKUIDelegatePrivate method.
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Ditto.
2017-04-21 Konstantin Tokarev <annulen@yandex.ru>
Unreviewed, added missing file to PlatformMac.cmake
* PlatformMac.cmake:
2017-04-21 Konstantin Tokarev <annulen@yandex.ru>
Unreviewed follow-up for r215609
* UIProcess/API/Cocoa/WKWebView.mm: Move internal header include too.
2017-04-21 Konstantin Tokarev <annulen@yandex.ru>
Include iOS-specific headers inside preprocessor guard
https://bugs.webkit.org/show_bug.cgi?id=171104
Reviewed by Michael Catanzaro.
This patch should fix Mac cmake build.
* UIProcess/API/Cocoa/WKWebView.mm:
2017-04-21 Alex Christensen <achristensen@webkit.org>
Reduce copies and allocations in SharedBuffer::append
https://bugs.webkit.org/show_bug.cgi?id=170956
Reviewed by Andreas Kling.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]):
* Platform/IPC/DataReference.cpp:
(IPC::SharedBufferDataReference::encode):
* Shared/ShareableResource.cpp:
(WebKit::ShareableResource::wrapInSharedBuffer):
* UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm:
(-[WKURLSchemeHandlerTaskImpl didReceiveData:]):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::addArchiveResource):
(WebKit::PDFPlugin::liveResourceData):
(WebKit::PDFPlugin::writeItemsToPasteboard):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::redeliverManualStream):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteDragImage):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::cachedResponseDataForURL):
2017-04-20 Konstantin Tokarev <annulen@yandex.ru>
[cmake] Define FORWARDING_HEADERS_DIR in WebKitFS and use it everywhere
https://bugs.webkit.org/show_bug.cgi?id=171071
Reviewed by Michael Catanzaro.
"${DERIVED_SOURCES_DIR}/ForwardingHeaders" path occurs very often in the
build system files. GTK-specifc FORWARDING_HEADERS_DIR variable should
be available for all ports.
* CMakeLists.txt:
* PlatformMac.cmake:
2017-04-20 Brady Eidson <beidson@apple.com>
WebContent process becomes unresponsive after returning nil from async version of -webView:createWebViewWithConfiguration:...
<rdar://problem/31739023> and https://bugs.webkit.org/show_bug.cgi?id=171090
Reviewed by Andy Estes.
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::createNewPageCommon): Handle the perfectly valid "nil webView" case correctly.
2017-04-20 Dan Bernstein <mitz@apple.com>
Disable header postprocessing when building for Sierra
Absolutely rubber-stamped by Anders Carlsson.
* Configurations/WebKit.xcconfig:
2017-04-20 Matt Rajca <mrajca@apple.com>
Cocoa: add private API for suppressing first responder changes
https://bugs.webkit.org/show_bug.cgi?id=171069
<rdar://problem/31658967>
Reviewed by Tim Horton.
Some clients may not want the web view to be programmatically made the first responder
and invoking -makeFirstResponder: unconditionally posts 'first responder did change'
notifications.
Added API test.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setShouldSuppressFirstResponderChanges:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setShouldSuppressFirstResponderChanges):
* UIProcess/PageClient.h:
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::makeFirstResponder):
2017-04-20 Eric Carlson <eric.carlson@apple.com>
[MediaStream iOS] Hold process assertion while media capture is active
https://bugs.webkit.org/show_bug.cgi?id=171017
<rdar://problem/31719177>
Reviewed by Dean Jackson.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateActivityState): Update IsCapturingMedia when necessary.
(WebKit::WebPageProxy::updateThrottleState): Hold a token when capture is active.
(WebKit::WebPageProxy::setMuted): Capture state may change when the page is muted,
so pass IsCapturingMedia to activityStateDidChange.
(WebKit::WebPageProxy::isPlayingMediaDidChange): Ditto.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateThrottleState): Don't allow page suppression when capture
is active.
2017-04-20 Anders Carlsson <andersca@apple.com>
Fix build.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession):
2017-04-20 Brady Eidson <beidson@apple.com>
Add CompletionHandlerCallChecker to SPI added in r215545.
https://bugs.webkit.org/show_bug.cgi?id=171067
Reviewed by Dan Bernstein.
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::createNewPageCommon):
2017-04-20 Anders Carlsson <andersca@apple.com>
Replace isFinalStateStatus with isFinalStateResult
https://bugs.webkit.org/show_bug.cgi?id=171072
rdar://problem/31589635
Reviewed by Tim Horton.
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
(WebKit::WebPaymentCoordinatorProxy::completePaymentSession):
2017-04-20 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] -[WKContentView doAfterPositionInformationUpdate:atPosition:] should be robust against synchronous reentrancy
https://bugs.webkit.org/show_bug.cgi?id=170922
<rdar://problem/31634990>
Reviewed by Tim Horton.
Refactors part of the asynchronous position information mechanism introduced in
<https://trac.webkit.org/changeset/215171>, and introduces infrastructure for unit testing UI-side position
information requests.
_invokeAndRemovePendingHandlersValidForCurrentPositionInformation is a helper method on WKContentView
responsible for invoking queued position information handlers after receiving a position information response
from the web process. Previously, this method would iterate over the list of pending callbacks and invoke all
callbacks whose requests are satisfied by the incoming position information update, saving the indices of these
handled callbacks in the process. At the end, it would then remove callbacks at these indices from the array of
pending callbacks. This is problematic when a synchronous position update (via
ensurePositionInformationIsUpToDate:) is triggered from within one of these callbacks, since
_invokeAndRemovePendingHandlersValidForCurrentPositionInformation will be called from within itself, and then we
will attempt to remove a callback at the same index twice.
To fix this, we change the array of pending position information handlers to be an array of optionals instead.
When invoking and removing pending handlers after a position information response arrives, we now mark callbacks
as handled by setting them to std::nullopt. Then, when the top-level invocation to
_invokeAndRemovePendingHandlersValidForCurrentPositionInformation is finished, we remove all marked handlers
from the pending vector.
Covered by 6 new unit tests:
- PositionInformationTests.FindDraggableLinkAtPosition
- PositionInformationTests.RequestDraggableLinkAtPosition
- PositionInformationTests.FindDraggableLinkAtDifferentPositionWithinRequestBlock
- PositionInformationTests.FindDraggableLinkAtSamePositionWithinRequestBlock
- PositionInformationTests.RequestDraggableLinkAtSamePositionWithinRequestBlock
- PositionInformationTests.RequestDraggableLinkAtDifferentPositionWithinRequestBlock
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView draggableElementAtPosition:]):
(-[WKWebView requestDraggableElementAtPosition:completionBlock:]):
Uses WKContentView's position information request helpers to search for draggable elements on the page. There
are both synchronous and asynchronous versions of this, both of which retrieve a _WKDraggableElementInfo.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/_WKDraggableElementInfo.h: Added.
* UIProcess/API/Cocoa/_WKDraggableElementInfo.mm: Added.
Exposes what elements are draggable at a given position as SPI (only for use in testing code, at the moment).
(-[_WKDraggableElementInfo initWithInteractionInformationAtPosition:]):
(-[_WKDraggableElementInfo copyWithZone:]):
* UIProcess/API/Cocoa/_WKDraggableElementInfoInternal.h: Added.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView currentPositionInformation]):
(-[WKContentView doAfterPositionInformationUpdate:forRequest:]):
(-[WKContentView _invokeAndRemovePendingHandlersValidForCurrentPositionInformation]):
* WebKit2.xcodeproj/project.pbxproj:
2017-04-20 Anders Carlsson <andersca@apple.com>
Fix a PassKit function declaration typo
https://bugs.webkit.org/show_bug.cgi?id=171068
rdar://problem/31635008
Reviewed by Tim Horton.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
2017-04-20 Jer Noble <jer.noble@apple.com>
[MediaCapture] gUM() with CoreAudio fails if capturing audio in the UIProcess.
https://bugs.webkit.org/show_bug.cgi?id=171021
Reviewed by Eric Carlson.
Pass a deviceID rather than a CaptureDevice across the process boundary.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::createMediaSourceForCaptureDeviceWithConstraints):
* WebProcess/cocoa/UserMediaCaptureManager.h:
2017-04-20 Alex Christensen <achristensen@webkit.org>
Fix assertions in webProcessProxyFromConnection
https://bugs.webkit.org/show_bug.cgi?id=171025
<rdar://problem/31184073>
Reviewed by Brady Eidson.
* UIProcess/WebProcessPool.cpp:
(WebKit::webProcessProxyFromConnection):
If we have a Connection, then we have a valid process attached to that connection,
unless it's a Connection to a different type of child process.
Calling ChildProcessProxy::connection on other web processes that are in State::Launching,
then we get an assertion. Luckily, ChildProcessProxy::hasConnection was introduced in r210861
for this reason.
2017-04-20 Brent Fulgham <bfulgham@apple.com>
[WK2][macOS] Allow iokit-get-properties for IOAudioControlValue
https://bugs.webkit.org/show_bug.cgi?id=171020
<rdar://problem/30878974>
Reviewed by Alexey Proskuryakov.
* WebProcess/com.apple.WebProcess.sb.in: Add missing property name.
2017-04-19 Joseph Pecoraro <pecoraro@apple.com>
Remove WebKitTestRunner code for enabling features that are already enabled by default
https://bugs.webkit.org/show_bug.cgi?id=171033
Reviewed by Ryosuke Niwa.
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
2017-04-19 Youenn Fablet <youenn@apple.com>
[Mac] Allow customizing H264 encoder
https://bugs.webkit.org/show_bug.cgi?id=170829
Reviewed by Alex Christensen.
* Configurations/FeatureDefines.xcconfig:
* WebKit2.xcodeproj/project.pbxproj:
2017-04-19 Brady Eidson <beidson@apple.com>
Add asynchronous equivalent of -[<WKUIDelegate> webView:createWebViewWithConfiguration:...].
<rdar://problem/30699851> and https://bugs.webkit.org/show_bug.cgi?id=171018
Reviewed by Tim Horton.
* UIProcess/API/APIUIClient.h:
(API::UIClient::createNewPageAsync):
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::createNewPageCommon):
(WebKit::UIDelegate::UIClient::createNewPage):
(WebKit::UIDelegate::UIClient::createNewPageAsync):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::createNewPage):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
2017-04-19 Anders Carlsson <andersca@apple.com>
Stop using deprecated APIs, part 3
https://bugs.webkit.org/show_bug.cgi?id=171003
rdar://problem/31589635
Reviewed by Tim Horton.
* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<WebCore::ShippingMethodUpdate>::encode):
(IPC::ArgumentCoder<WebCore::ShippingMethodUpdate>::decode):
Don't encode/decode status.
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
(WebKit::WebPaymentCoordinatorProxy::cancelPaymentSession):
Hide the UI and report back.
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
Add new member.
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in:
Add new message.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingMethodSelection):
Always pass success in the old code path. Stop using the deprecated method.
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::cancelPaymentSession):
Send a message to the UI process.
* WebProcess/ApplePay/WebPaymentCoordinator.h:
Add new member.
2017-04-19 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Limit capture to one tab at a time
https://bugs.webkit.org/show_bug.cgi?id=171009
Reviewed by Jon Lee.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): Deleted, not used.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
* UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Mute media streams
on other pages.
(WebKit::UserMediaProcessManager::willCreateMediaStream): Call willEnableMediaStreamInPage.
* UIProcess/UserMediaProcessManager.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setMuted): If media streams in the page will be unmuted, call
willEnableMediaStreamInPage so streams in other pages are muted first.
2017-04-19 Brady Eidson <beidson@apple.com>
REGRESSION (r213168): An extra Web Content process is spun up on launch and is never closed.
<rdar://problem/30774839> and https://bugs.webkit.org/show_bug.cgi?id=171002
Reviewed by Alex Christensen.
The original change unnecessarily avoided using the initial warmed process if an explicit
data store was set on the new WKWebView.
Fixing that fixes the regression.
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _webProcessCount]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createWebPage):
2017-04-19 Anders Carlsson <andersca@apple.com>
Rename cancelPayment to cancelPaymentSession
https://bugs.webkit.org/show_bug.cgi?id=171007
Reviewed by Tim Horton.
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
(WebKit::WebPaymentCoordinatorProxy::showPaymentUI):
(WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession):
(WebKit::WebPaymentCoordinatorProxy::didCancelPayment): Deleted.
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewControllerDidFinish:]):
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::didCancelPaymentSession):
(WebKit::WebPaymentCoordinator::didCancelPayment): Deleted.
* WebProcess/ApplePay/WebPaymentCoordinator.h:
* WebProcess/ApplePay/WebPaymentCoordinator.messages.in:
2017-04-19 David Kilzer <ddkilzer@apple.com>
Stop using strcpy() in WebKit::EnvironmentUtilities::stripValuesEndingWithString()
<https://webkit.org/b/170994>
<rdar://problem/29889932>
Reviewed by Brent Fulgham.
* Platform/unix/EnvironmentUtilities.cpp:
(WebKit::EnvironmentUtilities::stripValuesEndingWithString):
Switch from using strcpy() to strlcpy(). Also switch from using
strstr() to strnstr().
* Platform/unix/EnvironmentUtilities.h: Switch to #pragma once.
(WebKit::EnvironmentUtilities::stripValuesEndingWithString):
Export function for testing.
* WebKit2.xcodeproj/project.pbxproj:
(EnvironmentUtilitiesTest.h): Make header private for testing.
2017-04-19 Eric Carlson <eric.carlson@apple.com>
Provide a way for clients to unmute a media stream.
https://bugs.webkit.org/show_bug.cgi?id=170855
<rdar://problem/31656855>
Unreviewed, fix a typo missed in the review of r215420.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setPageMuted:]):
2017-04-19 Adrian Perez de Castro <aperez@igalia.com>
[GTK] WebKitAutocleanups.h regression in v2.16.1 release
https://bugs.webkit.org/show_bug.cgi?id=170987
Reviewed by Carlos Garcia Campos.
* UIProcess/API/gtk/WebKitAutocleanups.h: Remove stray semicolon.
2017-04-18 Per Arne Vollan <pvollan@apple.com>
Dragging a few items over MiniBrowser has 0 in the red indicator.
https://bugs.webkit.org/show_bug.cgi?id=170874
Reviewed by Tim Horton.
When WebKit does not accept the drag items, the drag count badge should not be updated.
Also, if WebKit changes the drag count badge, it should be restored to its original
value when the drag exits.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::draggingEntered):
(WebKit::WebViewImpl::draggingUpdated):
(WebKit::WebViewImpl::draggingExited):
2017-04-18 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Add infrastructure and unit tests for file uploads using data interaction
https://bugs.webkit.org/show_bug.cgi?id=170903
<rdar://problem/31314689>
Reviewed by Tim Horton.
See Tools/ChangeLog for more details. Makes a small adjustment to _simulateDataInteractionUpdated: to return a
BOOL indicating whether or not to allow the operation to proceed. This is necessary for testing scenarios where
multiple files are being "data interacted" onto an element. See <https://bugs.webkit.org/show_bug.cgi?id=170880>
for more details about the change this patch is testing.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _simulateDataInteractionUpdated:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/ios/WKContentViewInteraction.h:
2017-04-18 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Support DataTransfer::files() when performing a DHTML data interaction
https://bugs.webkit.org/show_bug.cgi?id=170880
<rdar://problem/31314689>
Reviewed by Tim Horton.
See the WebCore ChangeLog for more details.
* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::getFilenamesForDataInteraction):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didPerformDragControllerAction):
(WebKit::WebPageProxy::resetCurrentDragInformation):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::documentIsHandlingNonDefaultDrag):
* UIProcess/WebPageProxy.messages.in:
Adds an IPC argument to DidPerformDragControllerAction specifying whether the page prevented the default behavior.
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
Adds IPC plumbing for the new filenamesForDataInteraction Pasteboard codepath.
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::getFilenamesForDataInteraction):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::performDragControllerAction):
2017-04-18 John Wilander <wilander@apple.com>
Resource Load Statistics: Check both origins and cookieHostNames for domain matches in data removal
https://bugs.webkit.org/show_bug.cgi?id=170763
<rdar://problem/31573091>
Reviewed by Alex Christensen.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores):
Move semantics for topPrivatelyControlledDomains vector.
(WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyOwnedDomainsInAllPersistentDataStores): Deleted.
Renamed 'PrivatelyControlled' instead of 'PrivatelyOwned.'
* UIProcess/WebProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
Move semantics for prevalentResourceDomains vector.
* UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::hostIsInDomain):
Static convenience function.
(WebKit::WebsiteDataRecord::matchesTopPrivatelyControlledDomain):
Checks for matching cookieHostNames if types contains WebsiteDataType::Cookies.
Also checks origins.
* UIProcess/WebsiteData/WebsiteDataRecord.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains):
Now makes use of the new function
WebKit::WebsiteDataRecord::validForTopPrivatelyControlledDomain().
(WebKit::WebsiteDataStore::removeDataForTopPrivatelyControlledDomains):
Move semantics for topPrivatelyControlledDomains vector.
(WebKit::WebsiteDataStore::fetchDataForTopPrivatelyOwnedDomains): Deleted.
Renamed 'PrivatelyControlled' instead of 'PrivatelyOwned.'
(WebKit::WebsiteDataStore::removeDataForTopPrivatelyOwnedDomains): Deleted.
Renamed 'PrivatelyControlled' instead of 'PrivatelyOwned.'
* UIProcess/WebsiteData/WebsiteDataStore.h:
2017-04-18 Brent Fulgham <bfulgham@apple.com>
[iOS][WK2] Prevent ephemeral files from being backed up
https://bugs.webkit.org/show_bug.cgi?id=170963
<rdar://problem/30470332>
Reviewed by Brady Eidson.
Tell the OS to skip temporary data files when performing backups.
* UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm: Added.
(WebKit::WebResourceLoadStatisticsStore::platformExcludeFromBackup): Added.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk):
(WebKit::WebResourceLoadStatisticsStore::platformExcludeFromBackup): Add stub for
non-iOS platforms.
* UIProcess/WebResourceLoadStatisticsStore.h:
* WebKit2.xcodeproj/project.pbxproj: Add new file.
2017-04-18 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Cannot select text on nytimes.com when the selection granularity is WKSelectionGranularityCharacter
https://bugs.webkit.org/show_bug.cgi?id=170968
<rdar://problem/31692560>
Reviewed by Dan Bernstein.
Makes a small adjustment to textInteractionGesture:shouldBeginAtPoint:. When determining whether to allow the
text interaction assistant to recognize at a given point, instead of depending on whether or not the hit node is
the same as the assisted node, only enforce this restriction when editing an assisted node. Otherwise, default
to allowing the selection gesture.
Note that character granularity selection was working on most pages before, due to the fact that
nodeAtPositionIsAssistedNode was true in many cases when there is no assisted node at all. This is because, in
WebPage.mm, we compute the hit-tested node responding to click events to be null, and then set
nodeAtPositionIsAssistedNode to be equal to hitNode == m_assistedNode, which ends up being true because both of
these values are null.
This allowed text selection to work in the simple case when selection granularity character is used, but not
when the node containing the selected point actually does respond to click events, since the comparison returns
false.
New layout test: LayoutTests/editing/selection/character-granularity-select-text-with-click-handler.html.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
2017-04-18 Keith Rollin <krollin@apple.com>
Add additional information when logging URL disposition in WebLoaderStrategy::scheduleLoad
https://bugs.webkit.org/show_bug.cgi?id=170813
Reviewed by Alex Christensen.
There are a few logging statements in WebLoaderStrategy::scheduleLoad
that report, for example, "URL will be loaded as data". These
statements also log the address of the frame doing the loading and the
identifier of the resource. For consistency with other logging and to
make scripted analysis of the logs more robust, also include the
pageID and frameID in the logging.
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):
2017-04-18 Anders Carlsson <andersca@apple.com>
Stop using deprecated APIs, part 2
https://bugs.webkit.org/show_bug.cgi?id=170965
Reviewed by Tim Horton.
* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<WebCore::ShippingContactUpdate>::encode):
(IPC::ArgumentCoder<WebCore::ShippingContactUpdate>::decode):
Remove the status member variable.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::status):
New function to be used by older OSes. This will recreate a PKPaymentAuthorizationStatus given a ShippingContactUpdate.
(WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
Stop using the deprecated API.
2017-04-18 Timothy Horton <timothy_horton@apple.com>
Force scroll view insets to be respected regardless of rubber-banding state
https://bugs.webkit.org/show_bug.cgi?id=170937
<rdar://problem/31412788>
Reviewed by Simon Fraser.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
2017-04-18 Carlos Garcia Campos <cgarcia@igalia.com>
[GLIB] Define priorities also for async network IO tasks
https://bugs.webkit.org/show_bug.cgi?id=170905
Reviewed by Žan Doberšek.
* NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
(WebKit::NetworkCache::inputStreamReadReadyCallback):
(WebKit::NetworkCache::IOChannel::read):
(WebKit::NetworkCache::outputStreamWriteReadyCallback):
(WebKit::NetworkCache::IOChannel::write):
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::skipInputStreamForRedirection):
(WebKit::NetworkDataTaskSoup::read):
(WebKit::NetworkDataTaskSoup::requestNextPart):
(WebKit::NetworkDataTaskSoup::writeDownload):
(WebKit::NetworkDataTaskSoup::didFinishDownload):
* UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
(webkitURISchemeRequestReadCallback):
(webkit_uri_scheme_request_finish):
2017-04-17 Timothy Horton <timothy_horton@apple.com>
Plumb all four obscured insets to WebCore, instead of just top/left
https://bugs.webkit.org/show_bug.cgi?id=170913
Reviewed by Wenson Hsieh.
* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::VisibleContentRectUpdateInfo::encode):
(WebKit::VisibleContentRectUpdateInfo::decode):
(WebKit::operator<<):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::obscuredInsets):
(WebKit::operator==):
(WebKit::VisibleContentRectUpdateInfo::obscuredInset): Deleted.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<FloatRectInsets>::encode):
(IPC::ArgumentCoder<FloatRectInsets>::decode):
* Shared/WebCoreArgumentCoders.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didCommitLayerTree:]):
(-[WKWebView _restorePageScrollPosition:scrollOrigin:previousObscuredInset:scale:]):
(-[WKWebView _updateVisibleContentRects]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
* 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:obscuredInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
(-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::restorePageState):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::restorePageState):
(WebKit::WebPage::updateVisibleContentRects):
Adopt FloatBoxExtent for obscuredInsets (and adjust pluralization).
2017-04-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Doesn't show size of compressed content correctly
https://bugs.webkit.org/show_bug.cgi?id=155112
<rdar://problem/25006728>
Reviewed by Alex Christensen and Timothy Hatcher.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::sendResultForCacheEntry):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
Include size information in network load metrics.
2017-04-17 Youenn Fablet <youenn@apple.com>
com.apple.WebKit.Networking.Development crashed in com.apple.WebKit: WebKit::NetworkRTCProvider::resolvedName
https://bugs.webkit.org/show_bug.cgi?id=170889
Reviewed by Alex Christensen.
* NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::Resolver::~Resolver): Unschedule the host resolution in addition to cancelling it.
Providing a test would need to stop the resolver between the time the resolver is created and gets
data in the network process. Or we would need to change Resolver to be instantiated/tested on its own.
* NetworkProcess/webrtc/NetworkRTCProvider.h:
2017-04-17 Brady Eidson <beidson@apple.com>
Make WKHTTPCookieStore public.
<rdar://problem/31024691> and https://bugs.webkit.org/show_bug.cgi?id=170920
Reviewed by Geoffrey Garen.
* UIProcess/API/Cocoa/WKHTTPCookieStore.h:
* UIProcess/API/Cocoa/WKHTTPCookieStore.mm:
(-[WKHTTPCookieStore getAllCookies:]):
(-[WKHTTPCookieStore allCookies:]): Deleted.
* UIProcess/API/Cocoa/WKWebsiteDataStore.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore httpCookieStore]):
(-[WKWebsiteDataStore _httpCookieStore]): Deleted.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* WebKit2.xcodeproj/project.pbxproj:
2017-04-17 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Fix typo in UIDelegate::mediaCaptureStateDidChange
https://bugs.webkit.org/show_bug.cgi?id=170911
Reviewed by Youenn Fablet.
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::mediaCaptureStateDidChange): Fix typo.
2017-04-17 Keith Rollin <krollin@apple.com>
Move and update WebLoaderStrategy logging statement
https://bugs.webkit.org/show_bug.cgi?id=170140
Reviewed by Alex Christensen.
WebLoaderStrategy::scheduleLoad has a logging statement that says, in
part: "Resource has been queued for scheduling with the
NetworkProcess". This statement is emitted after the
ScheduleResourceLoad message has been successfully sent to the
NetworkProcess. The logging statement was added at this location to
indicate that the resource-load had been successfully handed off; it
pairs a similar logging statement that is emitted if the sending of
the ScheduleResourceLoad message fails.
I think it would be better to move this logging statement before the
ScheduleResourceLoad message is sent to the NetworkProcess (and change
its wording to "Resource is being scheduled with the NetworkProcess").
The reason for this change is to help make sure that the sequence of
logging statements is more deterministic. In the current form, the
message "Resource has been queued for scheduling with the
NetworkProcess" normally appears before any NetworkProcess logging
statements that indicate that the resource-loading is continuing
there, but in rare occasions the logging statements can be reversed.
This change in the ordering of the statements has caused a problem in
a script I've written that examines the resource-loading process and
looks for errors. By ensuring that the WebLoaderStrategy statement
always appears before the NetworkResourceLoader statement, the flow
makes better sense and the script can be more robust.
In making this change, we are probably not giving up any assurance
that the ScheduleResourceLoad message has been sent to the
NetworkResourceLoader. If the message is successfully sent, we'll see
logging in the NetworkProcess. If the message has not been sent, we'll
see WebLoaderStrategy logging an error.
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):
2017-04-17 Anders Carlsson <andersca@apple.com>
Stop using deprecated APIs, part 1
https://bugs.webkit.org/show_bug.cgi?id=170915
rdar://problem/31589635
Reviewed by Tim Horton.
Stop using the PKPaymentRequestPaymentMethodUpdate initializer that takes a status, it's been deprecated
and we always passed PKPaymentAuthorizationStatusSuccess anyway.
* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::encode):
(IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::decode):
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodSelection):
2017-04-17 Youenn Fablet <youenn@apple.com>
Disable outdated WritableStream API
https://bugs.webkit.org/show_bug.cgi?id=170749
<rdar://problem/31446233>
Reviewed by Alex Christensen.
Replacing READABLE_STREAM_API, READABLE_BYTE_STREAM_API and WRITABLE_STREAM_API compilation flag by:
- A STREAMS_API compilation flag.
- A ReadableByteStreamAPI and WritableStreamAPI runtime flags, turned off except for RWT and DRT.
* Configurations/FeatureDefines.xcconfig:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
2017-04-17 Tim Horton <timothy_horton@apple.com>
Provide a viewport parameter to disable clipping to the safe area
https://bugs.webkit.org/show_bug.cgi?id=170766
<rdar://problem/31564634>
Reviewed by Beth Dakin.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::setClipToSafeArea):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::clipToSafeArea):
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::didChangeClipToSafeArea):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/PageClient.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didChangeClipToSafeArea):
* UIProcess/mac/PageClientImpl.h:
Forward clip-to-safe-area changes from ChromeClient to WKWebView.
Update visible content rects when it changes, which will
result in a call to updateFixedClippingView, as below.
Keep track of the current state in the UI process.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _contentMayDrawInObscuredInsets]):
Expose the current state of the clip-to-safe-area bit as SPI.
* UIProcess/ios/WKContentView.mm:
(-[WKContentView updateFixedClippingView:]):
Disable fixed clipping when clip-to-safe-area is disabled.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::viewportConfigurationChanged):
Push the viewport's clip-to-safe-area bit onto the main frame's FrameView.
2017-04-17 Dan Bernstein <mitz@apple.com>
[Cocoa] Move isNullFunctionPointer down into WTF
https://bugs.webkit.org/show_bug.cgi?id=170892
Reviewed by Sam Weinig.
* Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp:
(WebKit::ResourceLoadStatisticsClassifierCocoa::canUseCorePrediction): Changed to use
WTF::isNullFunctionPointer.
(WebKit::isNullFunctionPointer): Deleted.
2017-04-17 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Respect a new internal setting for defaulting to character selection granularity
https://bugs.webkit.org/show_bug.cgi?id=170904
<rdar://problem/31364280>
Reviewed by Dan Bernstein.
Respect a new WebKitDebugDefaultSelectionGranularityCharacter user default by initializing
WKWebViewConfiguration with WKSelectionGranularityCharacter, but only when linked on or after the first iOS to
use WKSelectionGranularityCharacter by default.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
* UIProcess/Cocoa/VersionChecks.h:
2017-04-17 Eric Carlson <eric.carlson@apple.com>
Provide a way for clients to unmute a media stream.
https://bugs.webkit.org/show_bug.cgi?id=170855
<rdar://problem/31656855>
Reviewed by Jon Lee.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setPageMuted:]): New.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
2017-04-17 Jeremy Jones <jeremyj@apple.com>
Refactor enumerateDevices to allow separate CaptureDeviceManagers for audio and video.
https://bugs.webkit.org/show_bug.cgi?id=170778
Reviewed by Tim Horton.
setUseAVFoundationAudioCapture is moved from AVCaptureDeviceManager to RealtimeMediaSourceCenterMac.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs):
2017-04-15 Keith Rollin <krollin@apple.com>
Include resource size in some existing logging
https://bugs.webkit.org/show_bug.cgi?id=170866
Reviewed by Alex Christensen.
In order to correlate resource load times with resource size, we log
when the resource is starting to be loaded and when the resource is
finished loading. In NetworkResourceLoader::didReceiveResponse, we
also log the expected resource length. However, we can only log the
length if it is provided in Content-Length, which is not always the
case. If it's not provided, we end up logging "length = -1". To make
up for this, change NetworkResourceLoader::didFinishLoading and
WebResourceLoader:: didFinishLoading to log the length once we know
it.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didReceiveBuffer):
(WebKit::NetworkResourceLoader::didFinishLoading):
* NetworkProcess/NetworkResourceLoader.h:
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didFinishResourceLoad):
* WebProcess/Network/WebResourceLoader.h:
2017-04-15 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Support data interaction of files into file inputs
https://bugs.webkit.org/show_bug.cgi?id=170803
<rdar://problem/31286130>
Reviewed by Tim Horton.
Implements remaining support for performing data interaction onto file inputs. There are two main changes at
this layer: plumbing the number of files in the pasteboard to the web process, and pulling the implementation of
createSandboxExtensionsIfNeeded out of Mac-specific WebViewImpl::createSandboxExtensionsIfNeeded and into
WebPageProxy::createSandboxExtensionsIfNeeded.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<DragData>::encode):
(IPC::ArgumentCoder<DragData>::decode):
Relax special-casing of encoding and decoding filenames to be PLATFORM(COCOA) rather than PLATFORM(MAC).
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::createSandboxExtensionsIfNeeded):
* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::getNumberOfFiles):
More boilerplate plumbing to deliver the number of files in the pasteboard to the web process.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):
(WebKit::WebViewImpl::createSandboxExtensionsIfNeeded): Deleted.
Move the logic in WebViewImpl::createSandboxExtensionsIfNeeded over to WebPageProxy::createSandboxExtensionsIfNeeded.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::getNumberOfFiles):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
2017-04-14 Mark Lam <mark.lam@apple.com>
Update architectures in xcconfig files.
https://bugs.webkit.org/show_bug.cgi?id=170867
<rdar://problem/31628104>
Reviewed by Joseph Pecoraro.
* Configurations/FeatureDefines.xcconfig:
2017-04-14 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Support Icon creation from file URLs on iOS
https://bugs.webkit.org/show_bug.cgi?id=170809
<rdar://problem/31286130>
Reviewed by Tim Horton.
Refactors file icon generation logic to support showing an Icon representing the content at a list of file paths
on iOS. Pulls out logic in WKFileUploadPanel responsible for generating the thumbnail image for a file input into
separate helpers in WebIconUtilities, and then uses these utilities in both WKFileUploadPanel and
WebChromeClientIOS.
* Shared/ios/WebIconUtilities.h: Added.
* Shared/ios/WebIconUtilities.mm: Added.
(WebKit::squareCropRectForSize):
(WebKit::squareImage):
(WebKit::thumbnailSizedImageForImage):
(WebKit::fallbackIconForFile):
(WebKit::iconForImageFile):
(WebKit::iconForVideoFile):
(WebKit::iconForFile):
Add logic for generating thumbnail icons, moved from WKFileUploadPanel.mm.
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(squareCropRectForSize): Deleted.
(squareImage): Deleted.
(thumbnailSizedImageForImage): Deleted.
(fallbackIconForFile): Deleted.
(iconForImageFile): Deleted.
(iconForVideoFile): Deleted.
(iconForFile): Deleted.
Remove logic for generating thumbnail icons.
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::loadIconForFiles):
(WebKit::WebChromeClient::createIconForFiles):
Rather than call Icon::createIconForFiles directly, loadIconForFiles now consults ChromeClient::createIconForFiles
instead. On other platforms, this just turns around and calls Icon::createIconForFiles, but on iOS, we use the
utilities introduced in WebIconUtilities to generate a file icon.
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
(WebKit::WebChromeClient::createIconForFiles):
2017-04-14 Brady Eidson <beidson@apple.com>
Fix basic WKURLSchemeHandler bugs.
<rdar://problem/30647559> and https://bugs.webkit.org/show_bug.cgi?id=170862
Reviewed by Andy Estes.
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/WebURLSchemeHandlerTask.cpp:
(WebKit::WebURLSchemeHandlerTask::didReceiveResponse):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::addURLSchemeHandlerTaskProxy):
(WebKit::WebLoaderStrategy::removeURLSchemeHandlerTaskProxy):
(WebKit::WebLoaderStrategy::remove):
* WebProcess/Network/WebLoaderStrategy.h:
* WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
(WebKit::WebURLSchemeHandlerProxy::startNewTask):
(WebKit::WebURLSchemeHandlerProxy::taskDidComplete):
(WebKit::WebURLSchemeHandlerProxy::taskDidStopLoading):
* WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
* WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.cpp:
(WebKit::WebURLSchemeHandlerTaskProxy::WebURLSchemeHandlerTaskProxy):
(WebKit::WebURLSchemeHandlerTaskProxy::stopLoading):
(WebKit::WebURLSchemeHandlerTaskProxy::didReceiveResponse):
(WebKit::WebURLSchemeHandlerTaskProxy::didReceiveData):
(WebKit::WebURLSchemeHandlerTaskProxy::didComplete):
(WebKit::WebURLSchemeHandlerTaskProxy::hasLoader):
* WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.h:
(WebKit::WebURLSchemeHandlerTaskProxy::identifier):
2017-04-14 Jer Noble <jer.noble@apple.com>
[MediaSource] Push capabilities across process boundary during UIProcess capture.
https://bugs.webkit.org/show_bug.cgi?id=170814
Reviewed by Eric Carlson.
Make a new synchronous getter for capabilities(), moderated by only requesting the capabilities() cross-process
the first time called.
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::capabilities):
(WebKit::UserMediaCaptureManagerProxy::supportedConstraints):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::setCapabilities):
(WebKit::UserMediaCaptureManager::capabilities):
* WebProcess/cocoa/UserMediaCaptureManager.h:
2017-04-13 Dan Bernstein <mitz@apple.com>
[Cocoa] Allow clients to specify in _WKProcessPoolConfiguration additional directory sandbox extensions
https://bugs.webkit.org/show_bug.cgi?id=170387
Reviewed by Sam Weinig.
Test: TestWebKitAPI/Tests/WebKit2Cocoa/AdditionalReadAccessAllowedURLs.mm
Added an additionalReadAccessAllowedURLs property to _WKProcessPoolConfiguration.
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode): Encode the new
additionalSandboxExtensionHandles member.
(WebKit::WebProcessCreationParameters::decode): Decode it.
* Shared/WebProcessCreationParameters.h: Added additionalSandboxExtensionHandles member.
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy): Copy new m_additionalReadAccessAllowedPaths member.
* UIProcess/API/APIProcessPoolConfiguration.h: Added m_additionalReadAccessAllowedPaths
member and accessor functions.
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: Declared new
additionalReadAccessAllowedURLs property whose value is an array of URLs to which the Web
Content process will be given read access.
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration additionalReadAccessAllowedURLs]): New getter that returns
an array of file URLs from the ProcessPoolConfiguration’s additionalReadAccessAllowedPaths().
(-[_WKProcessPoolConfiguration setAdditionalReadAccessAllowedURLs:]): New setter that checks
that the given URLs are file URLs and populates the ProcessPoolConfiguration’s
additionalReadAccessAllowedPaths with their paths.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::resolvePathsForSandboxExtensions): Populate the new
m_resolvedPaths.additionalWebProcessSandboxExtensionPaths with resolved paths from the
ProcessPoolConfiguration’s additionalReadAccessAllowedPaths.
(WebKit::WebProcessPool::createNewWebProcess): Populate the WebProcessCreationParameters’s
additionalSandboxExtensionHandles member with read-only sandbox extensions created from
the resolved paths.
* UIProcess/WebProcessPool.h: Added additionalWebProcessSandboxExtensionPaths member to
the Paths struct.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess): Consume the additional sandbox extensions.
2017-04-13 Alex Christensen <achristensen@webkit.org>
Fix CMake build
https://bugs.webkit.org/show_bug.cgi?id=170815
Reviewed by Beth Dakin.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration _setShouldCaptureAudioInUIProcess:]):
2017-04-12 Dan Bernstein <mitz@apple.com>
[Mac] Future-proof .xcconfig files
https://bugs.webkit.org/show_bug.cgi?id=170802
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/FeatureDefines.xcconfig:
* Configurations/Version.xcconfig:
2017-04-12 Brady Eidson <beidson@apple.com>
QuotaExceededError when saving to localStorage in private mode.
https://bugs.webkit.org/show_bug.cgi?id=157010
Reviewed by Alex Christensen.
* WebProcess/Storage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::StorageAreaMap::~StorageAreaMap):
* WebProcess/Storage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::storageArea):
(WebKit::StorageNamespaceImpl::ephemeralLocalStorageArea):
(WebKit::StorageNamespaceImpl::copy):
* WebProcess/Storage/StorageNamespaceImpl.h:
* WebProcess/Storage/WebStorageNamespaceProvider.cpp:
(WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace):
* WebProcess/Storage/WebStorageNamespaceProvider.h:
2017-04-12 Yusuke Suzuki <utatane.tea@gmail.com>
Unreviewed, fix build failure on Ubuntu LTS GTK bot
https://bugs.webkit.org/show_bug.cgi?id=170781
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
2017-04-12 Eric Carlson <eric.carlson@apple.com>
[MediaStream] rename -[WKWebView _stopMediaCapture]
https://bugs.webkit.org/show_bug.cgi?id=170791
<rdar://problem/31589204>
Reviewed by Youenn Fablet.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _muteMediaCapture]):
(-[WKWebView _stopMediaCapture]): Deleted.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
2017-04-12 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed build fix.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]):
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]):
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]):
(WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingMethodSelection):
(WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
(WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentMethodSelection):
2017-04-12 Jer Noble <jer.noble@apple.com>
[WK2] Add a C-API for creating a WKContextConfigurationRef with legacy options.
https://bugs.webkit.org/show_bug.cgi?id=170790
Reviewed by Alex Christensen.
* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCreate):
(WKContextConfigurationCreateWithLegacyOptions):
* UIProcess/API/C/WKContextConfigurationRef.h:
2017-04-12 Jer Noble <jer.noble@apple.com>
[WK2] Do not pass microphone sandbox extension to WebProcess if capturing is happening in UIProcess.
https://bugs.webkit.org/show_bug.cgi?id=170781
Reviewed by Alex Christensen.
Simultaneously, allow clients to configure whether capturing will occur in the UIProcess through
_WKProcessPoolConfiguration.
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationShouldCaptureAudioInUIProcess):
(WKContextConfigurationSetShouldCaptureAudioInUIProcess):
* UIProcess/API/C/WKContextConfigurationRef.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _shouldCaptureAudioInUIProcess]):
(-[WKWebViewConfiguration _setShouldCaptureAudioInUIProcess:]):
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration shouldCaptureAudioInUIProcess]):
(-[_WKProcessPoolConfiguration setShouldCaptureAudioInUIProcess:]):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
2017-04-12 Keith Rollin <krollin@apple.com>
Add some missing NetworkResourceLoader logging
https://bugs.webkit.org/show_bug.cgi?id=170139
Reviewed by Alex Christensen.
Once execution enters the lambda in
NetworkResourceLoader::retrieveCacheEntry, there is little indication
of which exit point was taken. If flow enters into startNetworkLoad,
we'll get some logging from that function, but not from the others.
Add some logging so that we know what the result was from looking up
the resource in the cache.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
2017-04-12 Anders Carlsson <andersca@apple.com>
Tweak WebCore::setMetadataURL function
https://bugs.webkit.org/show_bug.cgi?id=170786
Reviewed by Beth Dakin.
Update for WebCore changes.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::namesOfPromisedFilesDroppedAtDestination):
2017-04-12 Brent Fulgham <bfulgham@apple.com>
[WK2][Mac] Stop allowing access to disk arbitration process
https://bugs.webkit.org/show_bug.cgi?id=170517
<rdar://problem/31071151>
Reviewed by Alex Christensen.
* WebProcess/com.apple.WebProcess.sb.in:
2017-04-12 Beth Dakin <bdakin@apple.com>
32-bit build fix.
* UIProcess/API/mac/WKView.mm:
(-[WKView _mediaPlaybackControlsView]):
2017-04-12 Beth Dakin <bdakin@apple.com>
More 32-bit build fix.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _mediaPlaybackControlsView]):
(-[WKWebView _addMediaPlaybackControlsView:]):
* UIProcess/API/mac/WKView.mm:
(-[WKView _mediaPlaybackControlsView]):
(-[WKView _addMediaPlaybackControlsView:]):
2017-04-12 Beth Dakin <bdakin@apple.com>
Another 32 bit build fix.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::mediaPlaybackControlsView):
2017-04-12 Alex Christensen <achristensen@webkit.org>
Stop using didReceiveDataArray callback on El Capitan
https://bugs.webkit.org/show_bug.cgi?id=170780
Reviewed by Brady Eidson.
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::supportsDataArray): Deleted.
(WebKit::NetworkLoad::didReceiveDataArray): Deleted.
* NetworkProcess/NetworkLoad.h:
2017-04-12 Beth Dakin <bdakin@apple.com>
Speculative build fix.
* UIProcess/API/Cocoa/WKViewPrivate.h:
2017-04-12 Beth Dakin <bdakin@apple.com>
Attempted build fix.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
2017-04-12 Beth Dakin <bdakin@apple.com>
Adopt AVKit name change from AVFunctionBar* to AVTouchBar*
https://bugs.webkit.org/show_bug.cgi?id=170693
-and corresponding-
rdar://problem/31230018
Reviewed by Sam Weinig.
Since the new names only apply to some versions of macOS, this patch uses typedefs
for the older OS’s. SO:
AVFunctionBarScrubber is now AVTouchBarScrubber
AVFunctionBarPlaybackControlsProvider is now AVTouchBarPlaybackControlsProvider
AVFunctionBarMediaSelectionOption is now AVTouchBarMediaSelectionOption
And the protocol AVFunctionBarPlaybackControlsControlling is now
AVTouchBarPlaybackControlsControlling
Use the new name.
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _mediaPlaybackControlsView]):
(-[WKWebView _addMediaPlaybackControlsView:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/mac/WKView.mm:
(-[WKView _mediaPlaybackControlsView]):
(-[WKView _addMediaPlaybackControlsView:]):
* UIProcess/Cocoa/WebViewImpl.h:
Soft links and allocations cannot use the typedefs.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::mediaPlaybackControlsView):
(WebKit::WebViewImpl::updateMediaTouchBar):
2017-04-12 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Audio source in UI process not identified as capture source
https://bugs.webkit.org/show_bug.cgi?id=170776
Reviewed by Youenn Fablet.
* WebProcess/cocoa/UserMediaCaptureManager.cpp: Override isCaptureSource.
2017-04-12 Andrew Gold <agold@apple.com>
Allow iOS to toggle webRTCAPI legacy flag.
https://bugs.webkit.org/show_bug.cgi?id=170735
Reviewed by Eric Carlson.
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _webRTCLegacyAPIEnabled]):
(-[WKPreferences _setWebRTCLegacyAPIEnabled:]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
2017-04-12 Yusuke Suzuki <utatane.tea@gmail.com>
Unreviewed, build fix for GTK port after r215262
https://bugs.webkit.org/show_bug.cgi?id=170758
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::didRead):
2017-04-12 Yusuke Suzuki <utatane.tea@gmail.com>
[WTF] Introduce Thread class and use RefPtr<Thread> and align Windows Threading implementation semantics to Pthread one
https://bugs.webkit.org/show_bug.cgi?id=170502
Reviewed by Mark Lam.
Mechanical change. Use Thread:: APIs.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
(WebKit::NetworkCache::IOChannel::readSyncInThread):
* Platform/IPC/Connection.cpp:
(IPC::Connection::processIncomingMessage):
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
(WebKit::XPCServiceInitializer):
* UIProcess/linux/MemoryPressureMonitor.cpp:
(WebKit::MemoryPressureMonitor::MemoryPressureMonitor):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
2017-04-10 Antti Koivisto <antti@apple.com>
Cache small media resources in disk cache
https://bugs.webkit.org/show_bug.cgi?id=170676
<rdar://problem/31532649>
Reviewed by Andreas Kling.
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::makeRetrieveDecision):
Allow retrieving media resources.
(WebKit::NetworkCache::expectedTotalResourceSizeFromContentRange):
(WebKit::NetworkCache::expectedTotalResourceSize):
(WebKit::NetworkCache::makeStoreDecision):
Store media resource if we can figure out its total size and it is less than 5MB
(and it is cacheable by the usual rules).
2017-04-12 Alex Christensen <achristensen@webkit.org>
Modernize vector adoption
https://bugs.webkit.org/show_bug.cgi?id=170758
Reviewed by Geoffrey Garen.
* NetworkProcess/capture/NetworkCaptureEvent.cpp:
(WebKit::NetworkCapture::JSONCoder<WebCore::SharedBuffer>::decode):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::bufferForType):
2017-04-12 Zan Dobersek <zdobersek@igalia.com>
Unreviewed GTK+ debug build fix. Drop an unused debug-only member
variable in the CompositingRunLoop class.
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
2017-04-11 Zan Dobersek <zdobersek@igalia.com>
[GTK] Use the DisplayRefreshMonitor facilities
https://bugs.webkit.org/show_bug.cgi?id=170599
Reviewed by Carlos Garcia Campos.
ThreadedCompositor gains a DisplayRefreshMonitor member that it can use
to better coordinate display refresh callbacks on the main thread. Still,
because currently the GTK+ port doesn't have a reliable way of notifying
the ThreadedCompositor of a vsync event, a timer targeting 60FPS is used
in order to keep the updates at a reasonable rate. When the timer is fired,
the ThreadedCompositor decides how to proceed based on state changes that
might have occurred during composition or whether there's any display
refresh callbacks that require handling on the main thread.
CompositingRunLoop now stores its state in an atomic variable that's then
inspected whenever a new update is scheduled or completed. When scheduled,
if there's no update in progress, a new update is requested through the
timer. If there's already an update in progress, a new update is marked
as pending after the current one completes. In that case, when the update
is completed, a new update is requested through the timer.
ThreadedDisplayRefreshMonitor is used to coordinate updates between the
main and the composition thread whenever the CoordinatedGraphics state
demands it, or whenever there are clients registered to that monitor that
require an update (e.g. a requestAnimationFrame() callback). After the
update on the composition thread is finished, and the DisplayRefreshMonitor
object requires an update, a callback at the same priority as the layer
flush timer is scheduled on the main thread. In that callback we handle
any clients registered for this DisplayRefreshMonitor before proceeding
to handle any changes to the CoordinatedGraphics scene. In case the
DisplayRefreshMonitor clients or the layer flushes already queued up
any changes to the state, we immediately ask the ThreadedCompositor for
an update.
* PlatformGTK.cmake:
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::updateViewport):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::CompositingRunLoop):
(WebKit::CompositingRunLoop::isActive):
(WebKit::CompositingRunLoop::scheduleUpdate):
(WebKit::CompositingRunLoop::stopUpdates):
(WebKit::CompositingRunLoop::updateCompleted):
(WebKit::CompositingRunLoop::updateTimerFired):
(WebKit::CompositingRunLoop::isCurrent):
(WebKit::CompositingRunLoop::startUpdateTimer): Deleted.
(WebKit::CompositingRunLoop::stopUpdateTimer): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
(): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::m_displayRefreshMonitor):
(WebKit::ThreadedCompositor::invalidate):
(WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing):
(WebKit::ThreadedCompositor::updateViewport):
(WebKit::ThreadedCompositor::scheduleDisplayImmediately):
(WebKit::ThreadedCompositor::renderLayerTree):
(WebKit::ThreadedCompositor::sceneUpdateFinished):
(WebKit::ThreadedCompositor::updateSceneState):
(WebKit::ThreadedCompositor::displayRefreshMonitor):
(WebKit::ThreadedCompositor::renderNextFrameIfNeeded):
(WebKit::ThreadedCompositor::completeCoordinatedUpdateIfNeeded):
(WebKit::ThreadedCompositor::coordinateUpdateCompletionWithClient):
(WebKit::ThreadedCompositor::performFrameCompletion):
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp: Added.
(WebKit::ThreadedDisplayRefreshMonitor::ThreadedDisplayRefreshMonitor):
(WebKit::ThreadedDisplayRefreshMonitor::requestRefreshCallback):
(WebKit::ThreadedDisplayRefreshMonitor::requiresDisplayRefreshCallback):
(WebKit::ThreadedDisplayRefreshMonitor::dispatchDisplayRefreshCallback):
(WebKit::ThreadedDisplayRefreshMonitor::invalidate):
(WebKit::ThreadedDisplayRefreshMonitor::displayRefreshCallback):
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.h: Copied from Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h.
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::createDisplayRefreshMonitor):
* WebProcess/WebPage/AcceleratedDrawingArea.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::createDisplayRefreshMonitor):
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
* WebProcess/WebPage/LayerTreeHost.h:
(WebKit::LayerTreeHost::createDisplayRefreshMonitor):
2017-04-11 Alex Christensen <achristensen@webkit.org>
Modernize and clean up code
https://bugs.webkit.org/show_bug.cgi?id=170752
Reviewed by Sam Weinig.
* NetworkProcess/NetworkResourceLoader.h:
* Shared/WebPreferencesStore.h:
* UIProcess/API/APIHitTestResult.cpp:
(API::HitTestResult::create):
* UIProcess/API/APIHitTestResult.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesCreate):
(WKPreferencesCreateWithIdentifier):
(WKPreferencesCreateCopy):
* UIProcess/Authentication/AuthenticationChallengeProxy.h:
* UIProcess/WebPreferences.cpp:
(WebKit::WebPreferences::createWithLegacyDefaults):
(WebKit::WebPreferences::copy):
* UIProcess/WebPreferences.h:
* WebProcess/Network/WebLoaderStrategy.h:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::requestCheckingOfString):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::addTextCheckingRequest):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::rangeForWebSelectionAtPosition):
(WebKit::WebPage::rangeForBlockAtPoint):
(WebKit::WebPage::expandedRangeFromHandle):
(WebKit::WebPage::contractedRangeFromHandle):
(WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle):
(WebKit::WebPage::changeBlockSelection):
(WebKit::WebPage::rangeForGranularityAtPoint):
(WebKit::WebPage::computePagesForPrintingAndDrawToPDF):
2017-04-11 Dean Jackson <dino@apple.com>
Disable outdated WritableStream API
https://bugs.webkit.org/show_bug.cgi?id=170749
<rdar://problem/31446233>
Reviewed by Tim Horton.
The API we implement is no longer accurate. Disable it until we
are compatible with the new specification
* Configurations/FeatureDefines.xcconfig:
2017-04-11 Dan Bernstein <mitz@apple.com>
[Cocoa] WebKit unnecessarily soft-links CorePrediction
https://bugs.webkit.org/show_bug.cgi?id=170644
Reviewed by Sam Weinig.
* Configurations/BaseTarget.xcconfig: Defined HAVE_CORE_PREDICTION and added
HAVE_CORE_PREDICTION to the preprocessor defintions when the former is YES.
* Configurations/WebKit.xcconfig: Have the linker link against CorePrediction where
available. On macOS, use weak linking, because CorePrediction is not available in the
Base System.
* Platform/classifier/cocoa/CorePredictionSoftLink.h: Removed.
* Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp: Guarded with
#if HAVE(CORE_PREDICTION).
(WebKit::isNullFunctionPointer): Added this helper.
(WebKit::ResourceLoadStatisticsClassifierCocoa::canUseCorePrediction): Replaced
dlopen()-based runtime check with a null check.
* Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.h: Guarded with #if
HAVE(CORE_PREDICTION).
* Platform/spi/Cocoa/CorePredictionSPI.h: Added.
* UIProcess/WebResourceLoadStatisticsStore.h: Updated guards to include HAVE(CORE_PREDICTION).
* WebKit2.xcodeproj/project.pbxproj: pdated file references for removal and addition.
2017-04-11 David Quesada <david_quesada@apple.com>
Add SPI for handling geolocation authorization requests
https://bugs.webkit.org/show_bug.cgi?id=170362
rdar://problem/17508627
Reviewed by Alex Christensen.
Add a new WKUIDelegate method for the WKGeolocationProviderIOS to call when a web page
requests geolocation access. To support testing this change, make it possible to override
the CoreLocation abstraction WKGeolocationProviderIOS uses. There is now a configurable
object on the process pool that implements a protocol for providing location updates for
web views in the process pool. If the client doesn't provide this object,
WKGeolocationProviderIOS falls back to an object that wraps the existing WebKit1
WebGeolocationCoreLocationProvider and conforms to the new protocol.
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* Shared/WebGeolocationPosition.h:
(WebKit::WebGeolocationPosition::create):
* UIProcess/API/C/WKGeolocationPosition.cpp:
(WKGeolocationPositionCreate_b):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _coreLocationProvider]):
(-[WKProcessPool _setCoreLocationProvider:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/_WKGeolocationCoreLocationProvider.h: Copied from Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp.
* UIProcess/API/Cocoa/_WKGeolocationPosition.h: Copied from Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp.
* UIProcess/API/Cocoa/_WKGeolocationPosition.mm: Added.
(WebKit::if):
(-[_WKGeolocationPosition dealloc]):
(-[_WKGeolocationPosition _apiObject]):
* UIProcess/API/Cocoa/_WKGeolocationPositionInternal.h: Copied from Source/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp.
(WebKit::wrapper):
* UIProcess/ios/WKGeolocationProviderIOS.mm:
(kit):
(-[WKGeolocationProviderIOS initWithProcessPool:]):
(-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
(-[WKGeolocationProviderIOS positionChanged:]):
(-[WKLegacyCoreLocationProvider setListener:]):
(-[WKLegacyCoreLocationProvider requestGeolocationAuthorization]):
(-[WKLegacyCoreLocationProvider start]):
(-[WKLegacyCoreLocationProvider stop]):
(-[WKLegacyCoreLocationProvider setEnableHighAccuracy:]):
(-[WKLegacyCoreLocationProvider geolocationAuthorizationGranted]):
(-[WKLegacyCoreLocationProvider geolocationAuthorizationDenied]):
(-[WKLegacyCoreLocationProvider positionChanged:]):
(-[WKLegacyCoreLocationProvider errorOccurred:]):
(-[WKLegacyCoreLocationProvider resetGeolocation]):
Implement a new class that bridges the currently used WebGeolocationCoreLocationProvider
to conform to the _WKGeolocationCoreLocationProvider protocol that WKGeolocationProviderIOS
expects.
* WebKit2.xcodeproj/project.pbxproj:
2017-04-11 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Set correct audio session category when capturing audio
https://bugs.webkit.org/show_bug.cgi?id=170736
<rdar://problem/31559405>
Reviewed by Jer Noble.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::isPlayingMediaDidChange):
2017-04-11 Youenn Fablet <youenn@apple.com>
Activate WebRTC data channel tests for WK1
https://bugs.webkit.org/show_bug.cgi?id=170710
Reviewed by Eric Carlson.
* WebProcess/Network/webrtc/LibWebRTCProvider.h: Making sure networking is not done in the Web process.
2017-04-11 Chris Fleizach <cfleizach@apple.com>
AX: PDF plugin needs to support PDF-DOM Mode
https://bugs.webkit.org/show_bug.cgi?id=170589
Reviewed by Tim Horton.
Provide access to DOM objects with PDF document. This mean:
1) Support a different set of attributes for WKPDFPluginAccessibilityObject.
WKPDFPluginAccessibilityObject is now a group instead of forwarding attribute calls to the pdf layer.
2) Connect the focused UI element to the active annotation if possible.
3) Mark the PDF associated nodes with an attribute so they can be identified later so their correct parent can be found.
* WebProcess/Plugins/PDF/PDFLayerControllerSPI.h:
* WebProcess/Plugins/PDF/PDFPlugin.h:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(-[WKPDFPluginAccessibilityObject pdfLayerController]):
(-[WKPDFPluginAccessibilityObject setPdfLayerController:]):
(-[WKPDFPluginAccessibilityObject convertRectToScreenSpace:]):
(-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:]):
(-[WKPDFPluginAccessibilityObject accessibilityAttributeNames]):
(-[WKPDFPluginAccessibilityObject accessibilityActionNames]):
(-[WKPDFPluginAccessibilityObject accessibilityParameterizedAttributeNames]):
(-[WKPDFPluginAccessibilityObject accessibilityFocusedUIElement]):
(-[WKPDFPluginAccessibilityObject accessibilityAssociatedControlForAnnotation:]):
(-[WKPDFPluginAccessibilityObject accessibilityHitTest:]):
(WebKit::PDFPlugin::convertFromRootViewToPDFView):
(WebKit::PDFPlugin::convertFromPDFViewToScreen):
(WebKit::PDFPlugin::pluginHandlesContentOffsetForAccessibilityHitTest):
(WebKit::PDFPlugin::axObjectCache):
(WebKit::PDFPlugin::accessibilityShadowPluginParentForElement):
* WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
(WebKit::PDFPluginAnnotation::attach):
* WebProcess/Plugins/Plugin.h:
(WebKit::Plugin::accessibilityShadowPluginParentForElement):
(WebKit::Plugin::pluginHandlesContentOffsetForAccessibilityHitTest):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::accessibilityShadowPluginParentForElement):
* WebProcess/Plugins/PluginView.h:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
(-[WKAccessibilityWebPageObject accessibilityHitTest:]):
2017-04-11 Adrian Perez de Castro <aperez@igalia.com>
[GTK] Attach popup menu to web view widget
https://bugs.webkit.org/show_bug.cgi?id=145866
Use gtk_menu_attach_to_widget() to let GTK+ know that popup menus belong to a certain web view.
This improves the positioning choices that the toolkit can do, and solves a long-standing issue
that caused long popup menus to hang outside of the available display area under Wayland.
Based on a patch by Jonas Ådahl <jadahl@gmail.com>.
Reviewed by Carlos Garcia Campos.
* UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
(WebKit::WebPopupMenuProxyGtk::showPopupMenu):
2017-04-10 Alex Christensen <achristensen@webkit.org>
Revert r215217
https://bugs.webkit.org/show_bug.cgi?id=170703
* Configurations/FeatureDefines.xcconfig:
2017-04-10 Alex Christensen <achristensen@webkit.org>
Continue enabling WebRTC
https://bugs.webkit.org/show_bug.cgi?id=170703
Reviewed by Youenn Fablet.
* Configurations/FeatureDefines.xcconfig:
2017-04-10 Alex Christensen <achristensen@webkit.org>
REGRESSION(r195479) First main resource load in new WebProcess bypasses content extensions
https://bugs.webkit.org/show_bug.cgi?id=170707
<rdar://problem/27788755>
Reviewed by Tim Horton.
We fix this by sending the UserContentController with the WebPageCreationParameters
instead of in a IPC message immediately following creation. By the time the WebPage
receives its second message, it has already started loading the first main resource.
I also changed all instances of calling ChildProcessProxy::connection() to send a message
in favor of calling ChildProcessProxy::send, which does the same thing except if a child
process has not started, it will put the message in a queue and send it when the process
is finished launching. This was necessary because the UserContentController is now connected
to the process sooner, so there were some API tests that would try to send messages between
initiating a process launch and finishing a process launch, and this change preserves the
existing behavior in those cases.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/Databases/DatabaseProcessProxy.cpp:
(WebKit::DatabaseProcessProxy::getDatabaseProcessConnection):
(WebKit::DatabaseProcessProxy::didFinishLaunching):
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::cancel):
(WebKit::DownloadProxy::canAuthenticateAgainstProtectionSpace):
(WebKit::DownloadProxy::willSendRequest):
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync):
* UIProcess/UserContent/WebUserContentControllerProxy.cpp:
(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::addUserContentWorldUse):
(WebKit::WebUserContentControllerProxy::removeUserContentWorldUses):
(WebKit::WebUserContentControllerProxy::addUserScript):
(WebKit::WebUserContentControllerProxy::removeUserScript):
(WebKit::WebUserContentControllerProxy::removeAllUserScripts):
(WebKit::WebUserContentControllerProxy::addUserStyleSheet):
(WebKit::WebUserContentControllerProxy::removeUserStyleSheet):
(WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets):
(WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler):
(WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName):
(WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers):
(WebKit::WebUserContentControllerProxy::addContentExtension):
(WebKit::WebUserContentControllerProxy::removeContentExtension):
(WebKit::WebUserContentControllerProxy::removeAllContentExtensions):
* UIProcess/UserContent/WebUserContentControllerProxy.h:
* UIProcess/VisitedLinkStore.cpp:
(WebKit::VisitedLinkStore::removeAll):
(WebKit::VisitedLinkStore::pendingVisitedLinksTimerFired):
(WebKit::VisitedLinkStore::sendTable):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::finishInitializingWebPageAfterProcessLaunch):
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::addWebUserContentControllerProxy):
* UIProcess/WebProcessProxy.h:
* WebProcess/UserContent/WebUserContentController.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_backgroundCPULimit):
2017-04-10 Alex Christensen <achristensen@webkit.org>
Add API to get available content extension identifiers in a WKContentExtensionStore
https://bugs.webkit.org/show_bug.cgi?id=170093
Reviewed by Geoffrey Garen.
* UIProcess/API/APIContentExtensionStore.cpp:
(API::constructedPathPrefix):
(API::constructedPathFilter):
(API::constructedPath):
(API::ContentExtensionStore::getAvailableContentExtensionIdentifiers):
* UIProcess/API/APIContentExtensionStore.h:
* UIProcess/API/Cocoa/WKContentExtensionStore.h:
* UIProcess/API/Cocoa/WKContentExtensionStore.mm:
(-[WKContentExtensionStore _compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:releasesArgument:]):
(-[WKContentExtensionStore lookUpContentExtensionForIdentifier:completionHandler:]):
(-[WKContentExtensionStore getAvailableContentExtensionIdentifiers:]):
(-[WKContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]):
2017-04-10 Jeremy Jones <jeremyj@apple.com>
Add CoreAudioCaptureSource.
https://bugs.webkit.org/show_bug.cgi?id=170112
rdar://problem/30293338
Reviewed by Tim Horton.
Add UseAVFoundationAudioCapture preference to switch back from the new default of CoreAudio.
* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetUseAVFoundationAudioCapture):
(WKPreferencesGetUseAVFoundationAudioCapture):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2017-04-10 Brent Fulgham <bfulgham@apple.com>
[WK2][macOS] Block access to Apple Events before launch.
https://bugs.webkit.org/show_bug.cgi?id=170626
<rdar://problem/16079334>
Reviewed by Alexey Proskuryakov.
Clear the environment of the AppleEvent server name before initializing
AppKit so we never bother connecting.
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
(main):
2017-04-10 Adrian Perez de Castro <aperez@igalia.com>
[GTK] Misplaced right click menu on web page due to deprecated gtk_menu_popup()
https://bugs.webkit.org/show_bug.cgi?id=170553
Reviewed by Michael Catanzaro.
Use gtk_menu_popup_at_pointer() and gtk_menu_popup_at_rect() when building with GTK+ 3.22 or
newer. This allows the Wayland GTK+ backend to properly position popup menus, and also avoids
using functions which were deprecated starting at that GTK+ release.
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::show): Use gtk_menu_popup_at_pointer() as there is always a
pointer event that can be passed to it.
* UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
(WebKit::WebPopupMenuProxyGtk::showPopupMenu): Use gtk_menu_popup_at_rect(), using the coordinates
of the control passed as reference rectangle. Some conditional code is needed because with newer
GTK+ versions a relative offset instead of an absolute position is needed.
2017-04-10 Adrian Perez de Castro <aperez@igalia.com>
[GTK] Opening a popup menu does not pre-select the active item
https://bugs.webkit.org/show_bug.cgi?id=170680
Reviewed by Michael Catanzaro.
* UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
(WebKit::WebPopupMenuProxyGtk::showPopupMenu): Use gtk_menu_shell_select_item() to
ensure that the active item appears selected right after popping up the menu.
2017-04-10 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Enable DOM timer throttling and CSS animations suspension
https://bugs.webkit.org/show_bug.cgi?id=170669
Reviewed by Žan Doberšek.
* Shared/WebPreferencesDefinitions.h:
2017-04-10 Chris Dumez <cdumez@apple.com>
Drop Timer::startOneShot() overload taking a double
https://bugs.webkit.org/show_bug.cgi?id=170659
Reviewed by Yusuke Suzuki.
Drop Timer::startOneShot() overload taking a double as people should use Seconds type now.
* NetworkProcess/PingLoad.h:
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::startTimeout):
* Platform/IPC/Connection.h:
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::ConnectionTerminationWatchdog::createConnectionTerminationWatchdog):
(IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog):
(IPC::Connection::terminateSoon):
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::setMinimumLifetime):
* PluginProcess/PluginProcess.h:
* Shared/ChildProcess.cpp:
(WebKit::ChildProcess::ChildProcess):
* Shared/ChildProcess.h:
(WebKit::ChildProcess::setTerminationTimeout):
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::startUpdateTimer):
* Shared/Plugins/PluginProcessCreationParameters.h:
* Shared/WebMemorySampler.cpp:
(WebKit::WebMemorySampler::initializeTimers):
* Shared/WebProcessCreationParameters.h:
* UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:
(API::SharedJSContext::ensureContext):
* UIProcess/ChildProcessProxy.cpp:
(WebKit::ChildProcessProxy::shutDownProcess):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::didChangeIsLoading):
* UIProcess/Cocoa/ViewGestureController.cpp:
(WebKit::ViewGestureController::SnapshotRemovalTracker::startWatchdog):
* UIProcess/Cocoa/ViewGestureController.h:
* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::discardBackingStoreSoon):
(WebKit::DrawingAreaProxyImpl::DrawingMonitor::start):
(WebKit::DrawingAreaProxyImpl::DrawingMonitor::didDraw):
* UIProcess/Gamepad/UIGamepadProvider.cpp:
* UIProcess/Plugins/PluginProcessProxy.cpp:
* UIProcess/ProcessThrottler.cpp:
* UIProcess/ResponsivenessTimer.cpp:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
* UIProcess/gtk/GestureController.cpp:
(WebKit::GestureController::DragGesture::begin):
* UIProcess/mac/WebInspectorProxyMac.mm:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeNow):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::scheduleAnimation):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::determinePrimarySnapshottedPlugIn):
* WebProcess/WebProcess.cpp:
2017-04-09 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Add infrastructure to perform actions after an asynchronous position information request finishes
https://bugs.webkit.org/show_bug.cgi?id=170658
<rdar://problem/31431450>
Reviewed by Tim Horton.
Introduces doAfterPositionInformationUpdate:forRequest:, which WKContentView can use internally to perform
an action requiring InteractionInformationAtPosition asynchronously. See below for additional details.
New API unit test: DataInteractionTests.UnresponsivePageDoesNotHangUI.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _actionForLongPressFromPositionInformation:]):
(-[WKContentView _actionForLongPress]):
(-[WKContentView doAfterPositionInformationUpdate:forRequest:]):
If current position information satisfies the request, then perform the given block immediately; otherwise, we
save the block and request as a pair in a list of pending position information handlers, and then make a new
request to the web process for position information if the currently outgoing request does not already satisfy
the given request.
(-[WKContentView ensurePositionInformationIsUpToDate:]):
Fire all asynchronous position information handlers that are satisfied by the incoming position information.
(-[WKContentView requestAsynchronousPositionInformationUpdate:]):
(-[WKContentView _currentPositionInformationIsValidForRequest:]):
(-[WKContentView _hasValidOutstandingPositionInformationRequest:]):
Pulled out common logic for managing InteractionInformationRequests into separate helper methods.
(-[WKContentView _invokeAndRemovePendingHandlersValidForCurrentPositionInformation]):
(-[WKContentView gestureRecognizerShouldBegin:]):
Refactored to use ensurePositionInformationIsUpToDate:. There is no behavior change here, but it makes sure that
this particular request will also any valid pending position information handlers.
(-[WKContentView _positionInformationDidChange:]):
Fire all asynchronous position information handlers that are satisfied by the incoming position information.
(-[WKContentView pointIsInDataInteractionContent:]): Deleted.
We should no longer use this method, since it makes a synchronous request to the web process -- see
positionInformationMayStartDataInteraction.
2017-04-09 Chris Dumez <cdumez@apple.com>
Drop Timer::startRepeating() overload taking a double
https://bugs.webkit.org/show_bug.cgi?id=170656
Reviewed by Yusuke Suzuki.
Drop Timer::startRepeating() overload taking a double as people should use Seconds type now.
* Shared/WebMemorySampler.cpp:
(WebKit::WebMemorySampler::initializeTimers):
* UIProcess/Cocoa/ViewGestureController.cpp:
* UIProcess/HighPerformanceGraphicsUsageSampler.cpp:
* UIProcess/PerActivityStateCPUUsageSampler.cpp:
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
(WebKit::NetscapePlugin::Timer::start):
* WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::scheduleReleaseInactiveAtlases):
2017-04-09 Jon Lee <jonlee@apple.com>
[WK2][iOS] Add CoreMedia entitlement for WebProcess
https://bugs.webkit.org/show_bug.cgi?id=170623
rdar://problem/30020073
Reviewed by Youenn Fablet.
* Configurations/WebContent-iOS.entitlements: Update entitlement to an array of strings instead of bool.
2017-04-09 Chris Dumez <cdumez@apple.com>
Start dropping Timer API dealing with double
https://bugs.webkit.org/show_bug.cgi?id=170649
Reviewed by Yusuke Suzuki.
Start dropping Timer API dealing with double as people should use Seconds now.
* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::scheduleFailure):
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::resume):
* PluginProcess/PluginControllerProxy.cpp:
(WebKit::PluginControllerProxy::destroy):
(WebKit::PluginControllerProxy::startPaintTimer):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseScheduleUpdateActivityState):
* UIProcess/DrawingAreaProxy.cpp:
(WebKit::DrawingAreaProxy::setViewExposedRect):
* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::DrawingMonitor::start):
* UIProcess/Plugins/gtk/PluginInfoCache.cpp:
(WebKit::PluginInfoCache::updatePluginInfo):
* UIProcess/VisitedLinkStore.cpp:
(WebKit::VisitedLinkStore::addVisitedLinkHash):
* UIProcess/WebProcessPool.cpp:
(WebKit::m_hiddenPageThrottlingAutoIncreasesCounter):
* UIProcess/gtk/GestureController.cpp:
(WebKit::GestureController::ZoomGesture::scaleChanged):
* UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
(WebKit::WebPopupMenuProxyGtk::menuUnmappedCallback):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleInternallyFailedLoad):
* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
(WebKit::NPRuntimeObjectMap::addToInvalidationQueue):
* WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:
(WebKit::NetscapePluginStream::deliverDataToPlugin):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::pendingURLRequestsTimerFired):
(WebKit::PluginView::loadURL):
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::exitAcceleratedCompositingModeSoon):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::scheduleLayerFlush):
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::scheduleDisplay):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateIsInWindow):
(WebKit::WebPage::addPluginView):
(WebKit::WebPage::setMayStartMediaWhenInWindow):
(WebKit::WebPage::didFinishLoad):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::activityStateDidChange):
2017-04-08 Chris Dumez <cdumez@apple.com>
Drop std::chrono support from Timer class
https://bugs.webkit.org/show_bug.cgi?id=170645
Reviewed by Sam Weinig.
Drop std::chrono support from Timer class now that we prefer using Seconds type.
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::Throttle::Throttle):
(WebKit::NetworkLoad::didReceiveResponseNetworkSession):
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::loadThrottleLatency):
* NetworkProcess/NetworkProcessCreationParameters.cpp:
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::startNetworkLoad):
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
* NetworkProcess/cache/NetworkCacheStatistics.cpp:
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::dispatchReadOperation):
(WebKit::NetworkCache::Storage::store):
* Shared/CacheModel.cpp:
(WebKit::calculateMemoryCacheSizes):
* Shared/CacheModel.h:
* Shared/mac/RemoteLayerBackingStoreCollection.mm:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::maximumBufferingTime):
* WebProcess/Plugins/PluginView.cpp:
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlushImmediately):
(WebKit::RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush):
* WebProcess/WebProcess.cpp:
(WebKit::m_resourceLoadStatisticsStore):
(WebKit::WebProcess::setCacheModel):
2017-04-08 Chris Dumez <cdumez@apple.com>
Unreviewed attempt to fix GTK build after r215138.
* UIProcess/API/gtk/WebKitUIClient.cpp:
2017-04-08 Youenn Fablet <youenn@apple.com>
WebRTC tests gardening
https://bugs.webkit.org/show_bug.cgi?id=170508
Reviewed by Eric Carlson.
* Configurations/FeatureDefines.xcconfig:
2017-04-08 Chris Dumez <cdumez@apple.com>
Timer's nextFireInterval() / repeatInterval() should return Seconds
https://bugs.webkit.org/show_bug.cgi?id=170639
Reviewed by Simon Fraser.
Timer's nextFireInterval() / repeatInterval() should return Seconds, not double.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::layerVolatilityTimerFired):
(WebKit::WebPage::markLayersVolatile):
2017-04-07 Alex Christensen <achristensen@webkit.org>
Modernize WebPage.h
https://bugs.webkit.org/show_bug.cgi?id=170633
Reviewed by Joseph Pecoraro.
* UIProcess/API/APIUIClient.h:
(API::UIClient::createNewPage):
* UIProcess/API/C/WKPage.cpp:
(WebKit::RunBeforeUnloadConfirmPanelResultListener::create):
(WebKit::RunJavaScriptAlertResultListener::create):
(WebKit::RunJavaScriptConfirmResultListener::create):
(WebKit::RunJavaScriptConfirmResultListener::RunJavaScriptConfirmResultListener):
(WebKit::RunJavaScriptPromptResultListener::create):
(WebKit::RunJavaScriptPromptResultListener::RunJavaScriptPromptResultListener):
(WKPageSetPageUIClient):
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::createNewPage):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadDataImpl):
(WebKit::WebPage::loadStringImpl):
(WebKit::WebPage::loadData):
(WebKit::WebPage::scaledSnapshotWithOptions):
(WebKit::WebPage::SandboxExtensionTracker::willPerformLoadDragDestinationAction):
(WebKit::WebPage::SandboxExtensionTracker::setPendingProvisionalSandboxExtension):
* WebProcess/WebPage/WebPage.h:
2017-04-07 Alex Christensen <achristensen@webkit.org>
Use audit_token_t instead of pid_t for checking sandbox of other processes
https://bugs.webkit.org/show_bug.cgi?id=170616
<rdar://problem/31158189>
Reviewed by Daniel Bates.
pid's can be reused, so it's theoretically unsafe to use the pid of another process to check whether it's sandboxed.
Use an audit_token_t instead to be more sure that we are not mistakenly checking a new process that has reused the
old process's pid. For the current process, though, we have no xpc_connection_t to the process because we are the process.
* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::PluginProcess::initializeSandbox):
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
(WebKit::XPCServiceInitializerDelegate::isClientSandboxed):
* Shared/mac/SandboxUtilities.h:
* Shared/mac/SandboxUtilities.mm:
(WebKit::currentProcessIsSandboxed):
(WebKit::connectedProcessIsSandboxed):
(WebKit::processIsSandboxed): Deleted.
* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::platformIsBeingDebugged):
* UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
(WebKit::PluginInfoStore::shouldUsePlugin):
* UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
(WebKit::PluginProcessProxy::platformGetLaunchOptions):
2017-04-07 Brent Fulgham <bfulgham@apple.com>
[WK2][iOS] Add CoreMedia entitlement for WebProcess
https://bugs.webkit.org/show_bug.cgi?id=170623
<rdar://problem/30020073>
Reviewed by Youenn Fablet.
Add new "com.apple.tcc.delegated-services" entitlement to allow CoreMedia
to work properly in WebRTC.
* Configurations/WebContent-iOS.entitlements:
2017-04-07 Alex Christensen <achristensen@webkit.org>
Private browsing sessions should not look in keychain for client certificates
https://bugs.webkit.org/show_bug.cgi?id=170618
<rdar://problem/18457427>
Reviewed by Dan Bernstein.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::configurationForSessionID):
2017-04-07 Chris Dumez <cdumez@apple.com>
We should log how much CPU a background process was using when killing it due to CPU limiting
https://bugs.webkit.org/show_bug.cgi?id=170619
Reviewed by Andreas Kling.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::updateBackgroundCPUMonitorState):
2017-04-07 Wenson Hsieh <wenson_hsieh@apple.com>
Missing conversion from window to content coordinates when adjusting unobscured content rects for input view
https://bugs.webkit.org/show_bug.cgi?id=170603
Reviewed by Simon Fraser.
Refactors -[WKContentView _computeUnobscuredContentRectRespectingInputViewBounds:unobscuredContentRect:inputViewBounds:scale:]
to convert the input view bounds into content coordinates instead of using the zoom scale to adjust the height of inputViewBounds.
Covered by the existing LayoutTest, fixed-element-on-bottom-with-keyboard.html.
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _computeUnobscuredContentRectRespectingInputViewBounds:unobscuredContentRect:inputViewBounds:scale:]):
2017-04-07 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] Various build errors when plugin support is disabled
https://bugs.webkit.org/show_bug.cgi?id=170015
Reviewed by Carlos Garcia Campos.
* PluginProcess/unix/PluginControllerProxyUnix.cpp:
* UIProcess/API/gtk/WebKitWebsiteData.cpp:
(recordContainsSupportedDataTypes):
(toWebKitWebsiteDataTypes):
* UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:
(toWebsiteDataTypes):
2017-04-07 John Wilander <wilander@apple.com>
WebSocket streams should have network usage attributed to correct process
https://bugs.webkit.org/show_bug.cgi?id=170322
<rdar://problem/26413551>
Reviewed by Alex Christensen.
Changes here are due to the added WebCore::SourceApplicationAuditToken parameter
in WebCore::SocketStreamHandleImpl::create().
WebKit::NetworkSocketStream takes it and passes it on.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::createSocketStream):
* NetworkProcess/NetworkSocketStream.cpp:
(WebKit::NetworkSocketStream::create):
(WebKit::NetworkSocketStream::NetworkSocketStream):
* NetworkProcess/NetworkSocketStream.h:
2017-04-07 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix missing return value warning
* UIProcess/WebProcessProxy.cpp:
(WebKit::diagnosticLoggingKeyForSimulatedCrashReason):
2017-04-07 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Update the priorities used in glib main loop sources
https://bugs.webkit.org/show_bug.cgi?id=170457
Reviewed by Žan Doberšek.
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::CompositingRunLoop):
* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::DrawingAreaProxyImpl):
(WebKit::DrawingAreaProxyImpl::DrawingMonitor::DrawingMonitor):
* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::createWaylandLoopSource):
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::CompositingCoordinator):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::CoordinatedLayerTreeHost):
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::DrawingAreaImpl):
2017-04-06 Alex Christensen <achristensen@webkit.org>
Add WKContentExtensionStore.h and WKContentExtension.h to public WebKit.h
https://bugs.webkit.org/show_bug.cgi?id=170533
Reviewed by Daniel Bates.
* Shared/API/Cocoa/WebKit.h:
In r213696 I added two public headers. All public headers in WebKit are included with
#import <WebKit/WebKit.h>
2017-04-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Hangs when loading under SpeculativeLoad::shouldCaptureExtraNetworkLoadMetrics
https://bugs.webkit.org/show_bug.cgi?id=170575
Rubber-stamped by Brian Burg.
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::shouldCaptureExtraNetworkLoadMetrics): Deleted.
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
m_networkLoad is a wrapper around `this` as the client, so we would infinite loop here.
2017-04-06 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r214973.
https://bugs.webkit.org/show_bug.cgi?id=170578
Causes issues in Safari (Requested by bradee-oh on #webkit).
Reverted changeset:
"Refactor so WebsiteDataStores always have a StorageManager."
https://bugs.webkit.org/show_bug.cgi?id=170521
http://trac.webkit.org/changeset/214973
2017-04-06 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r215046.
This change broke internal builds.
Reverted changeset:
"WebRTC tests gardening"
https://bugs.webkit.org/show_bug.cgi?id=170508
http://trac.webkit.org/changeset/215046
2017-04-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Only Capture Extra Network Load Metrics when there is a Web Inspector Frontend
https://bugs.webkit.org/show_bug.cgi?id=170525
Reviewed by Youenn Fablet.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
Only collect extra metrics if the WebProcess this load is for has enabled
collecting extra metrics.
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::setCaptureExtraNetworkLoadMetricsEnabled):
* WebProcess/Network/WebLoaderStrategy.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled):
* NetworkProcess/NetworkConnectionToWebProcess.h:
(WebKit::NetworkConnectionToWebProcess::captureExtraNetworkLoadMetricsEnabled):
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
New bool state toggled through the loader policy.
* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTaskClient::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/NetworkLoadClient.h:
(WebKit::NetworkLoadClient::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::shouldCaptureExtraNetworkLoadMetrics):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
Default handling for network loads is to not include extra data. Thread
client messages back from the NetworkLoads / SpeculativeLoads to check
the NetworkConnectionToWebProcess state on whether or not we should collect
extra metrics.
2017-04-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Show all headers in the Request Headers section of the Resource details sidebar
https://bugs.webkit.org/show_bug.cgi?id=16531
<rdar://problem/5712895>
Reviewed by Timothy Hatcher.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
Include a complete list of the request headers sent for this load.
There may be headers that WebCore did not know about and developer
tools should be informed of.
2017-04-06 Anders Carlsson <andersca@apple.com>
OptionSet options need to be powers of two
https://bugs.webkit.org/show_bug.cgi?id=170565
Reviewed by Chris Dumez.
Change Cache::Option to be powers of two.
* NetworkProcess/cache/NetworkCache.h:
2017-04-06 Youenn Fablet <youenn@apple.com>
WebRTC tests gardening
https://bugs.webkit.org/show_bug.cgi?id=170508
Reviewed by Eric Carlson.
* Configurations/FeatureDefines.xcconfig:
2017-04-06 Antti Koivisto <antti@apple.com>
Implement testing mode for disk cache
https://bugs.webkit.org/show_bug.cgi?id=170547
Reviewed by Andreas Kling.
Disable read timeouts and cache shrinking in TestRunner to eliminate potential sources of randomness.
Cache directories are deleted by TestRunner so lack of shrinking does not consume the disk.
This is enabled by the existing WKContextUseTestingNetworkSession SPI.
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::initialize):
* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::open):
(WebKit::NetworkCache::Storage::Storage):
(WebKit::NetworkCache::Storage::dispatchReadOperation):
(WebKit::NetworkCache::Storage::shrinkIfNeeded):
* NetworkProcess/cache/NetworkCacheStorage.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
2017-04-06 Chris Dumez <cdumez@apple.com>
[WK2] Add C private API to toggle invisibleAutoplayNotPermitted setting
https://bugs.webkit.org/show_bug.cgi?id=170524
<rdar://problem/31461472>
Reviewed by Eric Carlson.
Add C private API to toggle invisibleAutoplayNotPermitted setting.
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetInvisibleMediaAutoplayPermitted):
(WKPreferencesGetInvisibleMediaAutoplayPermitted):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
2017-04-06 Adrian Perez de Castro <aperez@igalia.com>
[GTK] Fix build with MEDIA_CAPTURE enabled
https://bugs.webkit.org/show_bug.cgi?id=170539
Reviewed by Carlos Garcia Campos.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp:
(webkit_dom_html_input_element_get_capture): Add missing namespace in usage of WebCore::MediaCaptureTypeNone.
2017-04-05 Brent Fulgham <bfulgham@apple.com>
[WK2][iOS] Remove access to features not present on iOS
https://bugs.webkit.org/show_bug.cgi?id=170531
<rdar://problem/31352258>
Reviewed by Alexey Proskuryakov.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2017-04-05 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Host application should be able to mute and unmute media streams
https://bugs.webkit.org/show_bug.cgi?id=170519
<rdar://problem/31174326>
Reviewed by Youenn Fablet.
* UIProcess/API/C/WKPage.cpp:
(WKPageGetMediaState): Support new media stream state flags.
* UIProcess/API/C/WKPagePrivate.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h: Ditto.
* UIProcess/Cocoa/UIDelegate.mm: Ditto.
2017-04-05 Brady Eidson <beidson@apple.com>
Refactor so WebsiteDataStores always have a StorageManager.
https://bugs.webkit.org/show_bug.cgi?id=170521
Reviewed by Geoff Garen.
This basically involves teaching StorageManager how to work without a LocalStorageDatabaseTracker,
since there will never be ephemeral bits on disk to track.
* UIProcess/Storage/StorageManager.cpp:
(WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded):
(WebKit::StorageManager::createEphemeral):
(WebKit::StorageManager::StorageManager):
(WebKit::StorageManager::getLocalStorageOrigins):
(WebKit::StorageManager::getLocalStorageOriginDetails):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
* UIProcess/Storage/StorageManager.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::WebsiteDataStore):
2017-04-05 Brent Fulgham <bfulgham@apple.com>
[WK2][iOS] Add entitlements to enable audio/video capture in WebProcess
https://bugs.webkit.org/show_bug.cgi?id=170507
<rdar://problem/31121248>
Reviewed by Youenn Fablet.
Add two entitlements that are required to access audio/video capture on iOS.
* Configurations/WebContent-iOS.entitlements:
2017-04-05 Carlos Garcia Campos <cgarcia@igalia.com>
Show a log message when an invalid message is received in non cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=170506
Reviewed by Michael Catanzaro.
We just crash, but without knowing the details about the message it's impossible to debug.
* Shared/ChildProcess.cpp:
(WebKit::ChildProcess::didReceiveInvalidMessage):
2017-04-04 Carlos Garcia Campos <cgarcia@igalia.com>
Move WebErrors from WebProcess to Shared and get rid of ErrorsGtk in WebCore
https://bugs.webkit.org/show_bug.cgi?id=156974
Reviewed by Sam Weinig.
WebErrors are not only used by the frame loader client in the web process, but also by the network process. So,
move them to Shared make most of the implementation cross-platform.
* CMakeLists.txt: Add new files to compilation.
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::download): Use WebErrors directly instead of platform methods that are no longer needed.
(WebKit::NetworkDataTaskSoup::writeDownloadCallback): Ditto.
(WebKit::NetworkDataTaskSoup::didFinishDownload): Ditto.
(WebKit::NetworkDataTaskSoup::didFail): Ditto.
* PlatformGTK.cmake: Add new files to compilation and remove DownloadSoupErrorsGtk.cpp
* PlatformMac.cmake:
* Shared/API/APIError.cpp: Add error domains used by glib based ports.
(API::Error::webKitNetworkErrorDomain):
(API::Error::webKitPolicyErrorDomain):
(API::Error::webKitPluginErrorDomain):
(API::Error::webKitDownloadErrorDomain):
(API::Error::webKitPrintErrorDomain):
* Shared/API/APIError.h:
* Shared/Cocoa/WebErrorsCocoa.mm: Copied from Source/WebKit2/WebProcess/WebCoreSupport/WebErrors.h.
(WebKit::createNSError):
(WebKit::cancelledError):
(WebKit::fileDoesNotExistError):
* Shared/WebErrors.cpp: Copied from Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebErrorsGtk.cpp.
(WebKit::blockedError):
(WebKit::blockedByContentBlockerError):
(WebKit::cannotShowURLError):
(WebKit::interruptedForPolicyChangeError):
(WebKit::blockedByContentFilterError):
(WebKit::cannotShowMIMETypeError):
(WebKit::pluginWillHandleLoadError):
(WebKit::internalError):
* Shared/WebErrors.h: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebErrors.h.
* Shared/glib/WebErrorsGlib.cpp: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebErrorsGtk.cpp.
(WebKit::cancelledError):
(WebKit::fileDoesNotExistError):
* Shared/gtk/WebErrorsGtk.cpp: Copied from Source/WebKit2/NetworkProcess/Downloads/gtk/DownloadSoupErrorsGtk.cpp.
(WebKit::printError):
(WebKit::printerNotFoundError):
(WebKit::invalidPageRangeToPrint):
* Shared/soup/WebErrorsSoup.cpp: Renamed from Source/WebKit2/NetworkProcess/Downloads/gtk/DownloadSoupErrorsGtk.cpp.
(WebKit::downloadNetworkError):
(WebKit::downloadCancelledByUserError):
(WebKit::downloadDestinationError):
* UIProcess/API/gtk/WebKitDownload.cpp:
* UIProcess/API/gtk/WebKitError.cpp:
(webkit_network_error_quark):
(webkit_policy_error_quark):
(webkit_plugin_error_quark):
(webkit_download_error_quark):
(webkit_print_error_quark):
* UIProcess/API/gtk/WebKitPrivate.cpp:
(toWebKitError):
(toWebCoreError):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/mac/WebErrorsMac.mm: Removed.
* WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
2017-04-04 Youenn Fablet <youenn@apple.com>
[Mac] Add back web audio support for getUserMedia MediaStreamTrack
https://bugs.webkit.org/show_bug.cgi?id=170482
Reviewed by Eric Carlson.
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::setStorage):
2017-04-04 Tim Horton <timothy_horton@apple.com>
[Mac] -[WKWebView findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:] invokes the resultCollector with didWrap = NO even when it wraps
https://bugs.webkit.org/show_bug.cgi?id=165801
<rdar://problem/29649535>
Reviewed by Wenson Hsieh.
Previously, when doing an incremental find that wrapped, we would
say that it did not, leading NSTextFinder to not provide its usual
wrapping UI, and other clients of the NSTextFinderClient protocol to
get confused by the lack of wrapping.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didFindString):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/API/APIFindClient.h:
(API::FindClient::didFindString):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageFindClient):
* UIProcess/Cocoa/FindClient.h:
* UIProcess/Cocoa/FindClient.mm:
(WebKit::FindClient::didFindString):
* WebProcess/WebPage/FindController.cpp:
(WebKit::FindController::updateFindUIAfterPageScroll):
(WebKit::FindController::findString):
* WebProcess/WebPage/FindController.h:
Plumb DidWrap from FindController's call to findString back through
the DidFindString message.
* UIProcess/mac/WKTextFinderClient.mm:
(-[WKTextFinderClient didFindStringMatchesWithRects:didWrapAround:]):
(-[WKTextFinderClient didFindStringMatchesWithRects:]): Deleted.
Make use of the new DidWrap information to stop lying to NSTextFinder
about whether a wrap actually occurred.
2017-04-03 Wenson Hsieh <wenson_hsieh@apple.com>
Data interaction should register type identifiers in order of priority
https://bugs.webkit.org/show_bug.cgi?id=170428
<rdar://problem/30633296>
Reviewed by Tim Horton.
Serialize PasteboardWebContent.dataInAttributedStringFormat when sending over IPC. Refer to WebCore ChangeLog
for more details.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PasteboardWebContent>::encode):
(IPC::ArgumentCoder<PasteboardWebContent>::decode):
* UIProcess/API/Cocoa/WKWebView.mm:
2017-04-03 Joseph Pecoraro <pecoraro@apple.com>
Remove no longer needed forward declarations
https://bugs.webkit.org/show_bug.cgi?id=170415
Reviewed by Dan Bernstein.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
2017-04-03 Anders Carlsson <andersca@apple.com>
Tweak ApplePaySession API
https://bugs.webkit.org/show_bug.cgi?id=170409
rdar://problem/31405459
Reviewed by Tim Horton.
Update for WebCore changes.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toNSError):
2017-04-03 Carlos Garcia Campos <cgarcia@igalia.com>
[SOUP] URI Fragment is lost after redirect
https://bugs.webkit.org/show_bug.cgi?id=170058
Reviewed by Michael Catanzaro.
In case of redirection check if the current request has a fragment identifier and apply it to the redirection
only when it doesn't have a fragment identifier yet.
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::createRequest):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
* NetworkProcess/soup/NetworkDataTaskSoup.h:
2017-04-03 Antti Koivisto <antti@apple.com>
Mutex may be freed too late in NetworkCache::Storage::traverse
https://bugs.webkit.org/show_bug.cgi?id=170400
<rdar://problem/30515865>
Reviewed by Carlos Garcia Campos and Andreas Kling.
Fix a race.
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::traverse):
Ensure the mutex is not accessed after we dispatch to the main thread.
The main thread call deletes the owning TraverseOperation.
2017-04-01 Dan Bernstein <mitz@apple.com>
[iOS] <input type=file> label should be specified using plural rules
https://bugs.webkit.org/show_bug.cgi?id=170388
Reviewed by Alexey Proskuryakov.
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel _processMediaInfoDictionaries:atIndex:processedResults:processedImageCount:processedVideoCount:successBlock:failureBlock:]):
Instead of calling -_displayStringForPhotos:videos:, use
+[NSString localizedStringWithFormat:] with the new format string "%lu photo(s) and
%lu video(s)" for which there are plural rules.
(-[WKFileUploadPanel _displayStringForPhotos:videos:]): Deleted.
2017-04-01 Dan Bernstein <mitz@apple.com>
[Xcode] In engineering builds, linker warns about libwebrtc.dylib’s install name being invalid
https://bugs.webkit.org/show_bug.cgi?id=170385
Reviewed by Tim Horton.
* Configurations/WebKit.xcconfig: When WebKit is relocatable, tell the linker that it’s
not going to be in the shared cache, even if its install name implies that it might be.
2017-03-31 Simon Fraser <simon.fraser@apple.com>
Remove a logging statement left in by mistake.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::restoreViewState):
2017-03-31 Wenson Hsieh <wenson_hsieh@apple.com>
Address post-review feedback after r214692
https://bugs.webkit.org/show_bug.cgi?id=170328
Reviewed by Dan Bernstein.
Clearing the selection when UIKit calls into WKContentView to set its selected text range to nil is a rule
that should be applied when using a text interaction assistant, not just when using character granularity
for selecting text.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setSelectedTextRange:]):
2017-03-31 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Tapping away to dismiss the selection does not update the selected DOM range using character granularity
https://bugs.webkit.org/show_bug.cgi?id=170328
<rdar://problem/30904558>
Reviewed by Tim Horton.
When UIKit clears the selection while in text interaction mode, it notifies its document view (i.e., the
WKContentView) by setting its selected text range to nil. When character granularity selection is enabled, use
this as a cue to notify the web process that the selection is being cleared out.
-setSelectedTextRange: is a noop in the general case because the web process acts as the source of truth for what
the selection currently consists of, and notifies the UI process and UIKit via WKTextPosition and WKTextRange.
However, in the case of character granularity selections, tapping away to clear the selection is handled by
UIKit's text gesture recognizer cluster, which then informs the document (via -setSelectedTextRange:) that the
selection should be cleared out.
Adds a new Layout test: editing/selection/character-granularity-selected-range-after-dismissing-selection.html.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setSelectedTextRange:]):
2017-03-31 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Tapping editable text inside of a range selection no longer changes the selection to a caret
https://bugs.webkit.org/show_bug.cgi?id=170327
<rdar://problem/31363816>
Reviewed by Tim Horton.
Currently, we're forcing all text interaction gestures to duck in lieu of data interaction gestures
when we should only be doing so for gestures that begin a loupe. This prevents other gestures, such as
single taps, from changing the selection when they should be allowed to.
Hooks into new UIKit SPI to make this tweak.
Introduces a new LayoutTest: editing/selection/caret-after-tap-in-editable-selection.html.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView pointIsInAssistedNode:]):
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
2017-03-31 Tim Horton <timothy_horton@apple.com>
Mail can get stuck underneath FindController::findStringMatches after searching in a long message
https://bugs.webkit.org/show_bug.cgi?id=170326
<rdar://problem/30330395>
Reviewed by Simon Fraser.
* UIProcess/mac/WKTextFinderClient.mm:
(-[WKTextFinderClient findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:]):
Cap the number of find matches at 1000, the same maximum that Safari uses.
2017-03-31 Brady Eidson <beidson@apple.com>
Clean up the "StorageType" enum.
https://bugs.webkit.org/show_bug.cgi?id=170349
Reviewed by Tim Horton.
* WebProcess/Storage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::StorageAreaMap::dispatchStorageEvent):
(WebKit::StorageAreaMap::dispatchSessionStorageEvent):
(WebKit::StorageAreaMap::dispatchLocalStorageEvent):
* WebProcess/Storage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
(WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::createTransientLocalStorageNamespace):
2017-03-31 Tim Horton <timothy_horton@apple.com>
Remove bundle checks for attachmentElementEnabled
https://bugs.webkit.org/show_bug.cgi?id=170329
<rdar://problem/25135244>
Reviewed by Simon Fraser.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
Remove bundle checks.
2017-03-29 Anders Carlsson <andersca@apple.com>
Adopt PKCanMakePaymentsWithMerchantIdentifierAndDomainAndSourceApplication
https://bugs.webkit.org/show_bug.cgi?id=170257
rdar://problem/31289764
Reviewed by Beth Dakin.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
2017-03-31 Csaba Osztrogonác <ossy@webkit.org>
Mac cmake buildfix after r214403
https://bugs.webkit.org/show_bug.cgi?id=170346
Unreviewed speculative buildfix.
* UIProcess/API/Cocoa/WKWebView.mm:
2017-03-31 Brady Eidson <beidson@apple.com>
Remove erroneously committed changes from r214078
Unreviewed.
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess): Whoops!
2017-03-31 Carlos Garcia Campos <cgarcia@igalia.com>
Modern media controls should never be enabled in non cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=170338
Reviewed by Michael Catanzaro.
It's currently enabled, because it uses the default value for all other runtime features, but modern media
controls are not a cross-platform feature. I think this is why media/video-click-dblckick-standalone.html
started to fail in GTK+ port after r214426. I can't reprouduce the failure locally, so I can't confirm it,
though.
* Shared/WebPreferencesDefinitions.h:
2017-03-30 Zan Dobersek <zdobersek@igalia.com>
Unreviewed GTK+ build fix. List WebCore before JavaScriptCore as the
two WebKit2 dependency libraries to avoid WTF directiories being
listed for inclusion before WebCore directories at compile-time.
* CMakeLists.txt:
2017-03-30 Megan Gardner <megan_gardner@apple.com>
Allow for extended color in snapshots
https://bugs.webkit.org/show_bug.cgi?id=170314
<rdar://problem/28676092> WKImageCreateCGImage should support WideGamut in WebKit2 on macOS
Reviewed by Simon Fraser.
Piping options through snapshots to allow for wide gamut support.
* Shared/API/c/WKImage.h:
* Shared/API/c/WKSharedAPICast.h:
(WebKit::snapshotOptionsFromImageOptions):
* Shared/ImageOptions.h:
(WebKit::snapshotOptionsToImageOptions):
* Shared/WebImage.cpp:
(WebKit::WebImage::create):
2017-03-30 Sam Weinig <sam@webkit.org>
Expose the WKView SPI, _prepareForMoveToWindow:withCompletionHandler as WKWebView SPI
<rdar://problem/31350588>
https://bugs.webkit.org/show_bug.cgi?id=170315
Reviewed by Simon Fraser.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _prepareForMoveToWindow:completionHandler:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Copy SPI to WKWebView. Remove 'with' prefix to match conventions.
2017-03-30 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Touches should not cancel when showing a custom action sheet while data interaction is active
https://bugs.webkit.org/show_bug.cgi?id=170291
<rdar://problem/31301388>
Reviewed by Tim Horton.
Currently, when presenting a custom popover, we will cancel all touches in the application. This makes data
interaction when a custom popover is shown impossible -- to address this, we should only cancel touches when
the view is not an active data interaction source.
New API test: DataInteractionTests.CustomActionSheetPopover.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView actionSheetAssistant:showCustomSheetForElement:]):
2017-03-30 Youenn Fablet <youenn@apple.com>
NetworkConnectionToWebProcess should stop web sockets when being destroyed
https://bugs.webkit.org/show_bug.cgi?id=170286
Reviewed by Brady Eidson.
* NetworkProcess/NetworkSocketStream.cpp:
(WebKit::NetworkSocketStream::~NetworkSocketStream): Stopping the socket handle if not done already.
* NetworkProcess/NetworkSocketStream.h:
2017-03-29 Tim Horton <timothy_horton@apple.com>
Remove unused PageClient::removeNavigationGestureSnapshot
https://bugs.webkit.org/show_bug.cgi?id=170249
Reviewed by Beth Dakin.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::removeNavigationGestureSnapshot): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::removeNavigationGestureSnapshot): Deleted.
2017-03-29 Antti Koivisto <antti@apple.com>
Increment the last stable network cache version on Mac
https://bugs.webkit.org/show_bug.cgi?id=170248
<rdar://problem/31326040>
Reviewed by Chris Dumez.
Bump to the latest release.
* NetworkProcess/cache/NetworkCacheStorage.h:
2017-03-28 Timothy Horton <timothy_horton@apple.com>
Stop overriding scroll view inset defaults
https://bugs.webkit.org/show_bug.cgi?id=170221
<rdar://problem/31260325>
Reviewed by Simon Fraser.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
The default behavior is sufficient for us.
2017-03-28 Timothy Horton <timothy_horton@apple.com>
Safari crashes when attempting to close tab that is displaying PDF
https://bugs.webkit.org/show_bug.cgi?id=170201
<rdar://problem/31242019>
Reviewed by Wenson Hsieh.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _doAfterNextStablePresentationUpdate:]):
Adopt BlockPtr to fix a leak.
(-[WKWebView _firePresentationUpdateForPendingStableStatePresentationCallbacks]):
dispatch_async in the doAfterNextPresentationUpdate callback; since this
recursively calls itself, in cases where doAfterNextPresentationUpdate
returns synchronously (e.g. if the Web Process is missing), we would
recurse infinitely.
2017-03-27 Youenn Fablet <youenn@apple.com>
Remove WebPage::m_shouldDoICECandidateFiltering
https://bugs.webkit.org/show_bug.cgi?id=170150
Reviewed by Sam Weinig.
It is redundant with RTCController::m_shouldFilterICECandidates.
Manually tested on webrtc test samples.
This code path is currently untested by rwt as we hook it to getUserMedia which is mocked in rwt.
Additional testing will be added as a follow-up patch.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::disableICECandidateFiltering):
(WebKit::WebPage::enableICECandidateFiltering):
* WebProcess/WebPage/WebPage.h:
2017-03-27 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] UIKit assertion when rotating device after dismissing popover
https://bugs.webkit.org/show_bug.cgi?id=170159
<rdar://problem/31283829>
Reviewed by Tim Horton.
Ensure that when we are finished presenting a WKActionSheet, we unregister with the shared notifications center.
* UIProcess/ios/WKActionSheet.mm:
(-[WKActionSheet dealloc]):
(-[WKActionSheet _cleanup]):
(-[WKActionSheet doneWithSheet:]):
2017-03-27 Andy Estes <aestes@apple.com>
[iOS] Suppress page count recalc when setting a snapshot paper rect
https://bugs.webkit.org/show_bug.cgi?id=170156
<rdar://problem/30787872>
Reviewed by Tim Horton.
When _WKWebViewPrintFormatter computes a page count for snapshotting, it updates the paper
rect, which triggers UIKit to ask for the page count again while we're in the middle of
printing, putting us in a bad state.
Suppress page count recalc while setting the new paper rect, since we know this will not
cause it to change.
* UIProcess/_WKWebViewPrintFormatter.mm:
(-[_WKWebViewPrintFormatter _setSnapshotPaperRect:]): Temporarily set
_suppressPageCountRecalc to YES before updating the paper rect.
(-[_WKWebViewPrintFormatter _setNeedsRecalc]): Only call [super _setNeedsRecalc] if
_suppressPageCountRecalc is NO.
* UIProcess/_WKWebViewPrintFormatterInternal.h: Declared -_setNeedsRecalc.
2017-03-26 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Callout Bar should be dismissed during data interaction
https://bugs.webkit.org/show_bug.cgi?id=170109
<rdar://problem/31171570>
Reviewed by Tim Horton.
Minor tweak to get the callout bar to duck during data interaction. Import a new UIKit SPI header in WebKit2.
* Platform/spi/ios/UIKitSPI.h:
2017-03-27 Keith Rollin <krollin@apple.com>
Update NetworkResourceLoader logging statement
https://bugs.webkit.org/show_bug.cgi?id=170126
Reviewed by Alex Christensen.
NetworkResourceLoader contains a logging statement that prints, in
part: "start: Retrieving resource from cache". This is misleading,
since it's not necessarily the case that the resource will be loaded
from the cache. What is actually happening at the point where that is
logged is that the cache is being checked for the resource. It still
remains to be seen if the resource will be found in it. To address
this, change the logging to say "start: Checking cache for resource".
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::start):
2017-03-27 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Saving files should not suggest the top level directory
https://bugs.webkit.org/show_bug.cgi?id=170085
<rdar://problem/30197794>
Reviewed by Matt Baker.
* UIProcess/mac/RemoteWebInspectorProxyMac.mm:
(WebKit::RemoteWebInspectorProxy::platformSave):
* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::platformSave):
Don't set panel.directoryURL unless we have a good suggestion.
2017-03-27 Yongjun Zhang <yongjun_zhang@apple.com>
Add delegate method to let an WebKit client provide a custom image preview controller.
https://bugs.webkit.org/show_bug.cgi?id=170076
rdar://problem/31153051
Add a new delegate method (_webView:previewViewControllerForImage:alternateURL:defaultActions:elementInfo:) to
WKUIDelegatePrivate, an client can use this method to provide a custom image preview view controller if the image
has alternated URL or custom image info.
Reviewed by Beth Dakin.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Add delegate method _webView:previewViewControllerForImage:alternateURL:defaultActions:elementInfo:.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _presentedViewControllerForPreviewItemController:]): If the image has alternated URL or custom info, try to use the client-provided
preview view controller. Otherwise, use the default WKImagePreviewViewController.
2017-03-27 Anders Carlsson <andersca@apple.com>
Fix uses of deprecated API
https://bugs.webkit.org/show_bug.cgi?id=170138
rdar://problem/28882449
Reviewed by Tim Horton.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::toPKContactFields):
(WebKit::toPKAddressField):
(WebKit::toPKPaymentRequest):
Don't use deprecated APIs.
(WebKit::toNSError):
Don't try to insert nil in a dictionary.
2017-03-27 Alex Christensen <achristensen@webkit.org>
Make WebSockets work in network process
https://bugs.webkit.org/show_bug.cgi?id=169930
Reviewed by Youenn Fablet.
This adds WebSocketStream, which is a SocketStreamHandle that sends asynchronous
messages to a NetworkSocketStream in the NetworkProcess. WebKit1 uses a SocketStreamHandleImpl
still, but WebKit2 now has a SocketStreamHandleImpl in the NetworkProcess owned by the
NetworkSocketStream, which is a SocketStreamHandleClient that sends asynchronous messages back
to the WebProcess. WebSocketStream's implementation of SocketStreamHandle::platformSend is special
because it stores the completion handler in a map and asynchronously reports to the caller whether
it succeeded or not. If the network processes crashes before the completion handlers are called,
then they are called indicating failure and an error is reported, but that never happens, right?
* CMakeLists.txt:
* DerivedSources.make:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::createSocketStream):
(WebKit::NetworkConnectionToWebProcess::destroySocketStream):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::setAllowsAnySSLCertificateForWebSocket):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkSocketStream.cpp: Added.
(WebKit::NetworkSocketStream::create):
(WebKit::NetworkSocketStream::NetworkSocketStream):
(WebKit::NetworkSocketStream::sendData):
(WebKit::NetworkSocketStream::close):
(WebKit::NetworkSocketStream::didOpenSocketStream):
(WebKit::NetworkSocketStream::didCloseSocketStream):
(WebKit::NetworkSocketStream::didReceiveSocketStreamData):
(WebKit::NetworkSocketStream::didFailToReceiveSocketStreamData):
(WebKit::NetworkSocketStream::didUpdateBufferedAmount):
(WebKit::NetworkSocketStream::didFailSocketStream):
(WebKit::NetworkSocketStream::messageSenderConnection):
(WebKit::NetworkSocketStream::messageSenderDestinationID):
* NetworkProcess/NetworkSocketStream.h: Added.
* NetworkProcess/NetworkSocketStream.messages.in: Added.
* UIProcess/API/C/WKContext.cpp:
(WKContextSetAllowsAnySSLCertificateForWebSocketTesting):
(WKContextTerminateNetworkProcess):
* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::sendSyncToNetworkingProcess):
(WebKit::WebProcessPool::setAllowsAnySSLCertificateForWebSocket):
(WebKit::WebProcessPool::terminateNetworkProcess):
* UIProcess/WebProcessPool.h:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didReceiveMessage):
* WebProcess/Network/WebSocketProvider.cpp:
(WebKit::WebSocketProvider::createSocketStreamHandle):
* WebProcess/Network/WebSocketStream.cpp: Added.
(WebKit::globalWebSocketStreamMap):
(WebKit::WebSocketStream::streamWithIdentifier):
(WebKit::WebSocketStream::networkProcessCrashed):
(WebKit::WebSocketStream::create):
(WebKit::WebSocketStream::WebSocketStream):
(WebKit::WebSocketStream::~WebSocketStream):
(WebKit::WebSocketStream::messageSenderConnection):
(WebKit::WebSocketStream::messageSenderDestinationID):
(WebKit::WebSocketStream::platformSend):
(WebKit::WebSocketStream::didSendData):
(WebKit::WebSocketStream::platformClose):
(WebKit::WebSocketStream::bufferedAmount):
(WebKit::WebSocketStream::didOpenSocketStream):
(WebKit::WebSocketStream::didCloseSocketStream):
(WebKit::WebSocketStream::didReceiveSocketStreamData):
(WebKit::WebSocketStream::didFailToReceiveSocketStreamData):
(WebKit::WebSocketStream::didUpdateBufferedAmount):
(WebKit::WebSocketStream::didFailSocketStream):
* WebProcess/Network/WebSocketStream.h: Added.
* WebProcess/Network/WebSocketStream.messages.in: Added.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::networkProcessConnectionClosed):
2017-03-27 Adrian Perez de Castro <aperez@igalia.com>
[GTK] NetscapePluginX11::m_windowID is unused/unneeded
https://bugs.webkit.org/show_bug.cgi?id=170115
Reviewed by Michael Catanzaro.
* WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:
(WebKit::NetscapePluginX11::NetscapePluginX11):
Remove the unneeded NetscapePluginX11::m_windowID member.
* WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h:
Remove the unneeded NetscapePluginX11::m_windowID member.
2017-03-25 Andy Estes <aestes@apple.com>
[iOS] Use snapshotting instead of printing to draw single-page PDFs
https://bugs.webkit.org/show_bug.cgi?id=170103
<rdar://problem/30542960>
Reviewed by Tim Horton.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::paintSnapshotAtSize): Moved the painting logic from WebPage::snapshotAtSize() to here.
(WebKit::WebPage::snapshotAtSize): Changed to call paintSnapshotAtSize() with the
WebImage's graphics context.
(WebKit::WebPage::pdfSnapshotAtSize): Created a CGPDFGraphicsContext, passed it to
paintSnapshotAtSize(), and returned the context's data.
* WebProcess/WebPage/WebPage.h: Made snapshotAtSize() and snapshotNode() private, changed
their return values from PassRefPtr to RefPtr, and declared pdfSnapshotAtSize().
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::computePagesForPrintingAndDrawToPDF): If snapshotting the first page,
returned a page count of 1 and created a PDF using pdfSnapshotAtSize().
2017-03-25 John Wilander <wilander@apple.com>
Re-enable the web process' keychain access to fix client certificate authentication
https://bugs.webkit.org/show_bug.cgi?id=170074
<rdar://problem/31095987>
Reviewed by Brent Fulgham.
This is a follow-up patch to
https://trac.webkit.org/changeset/214389/webkit
since according to Alexey Proskuryakov, resource
loading has always required identical sandbox
rules in WebContent and Networking processes.
* WebProcess/com.apple.WebProcess.sb.in:
Reverted remaining change from
https://trac.webkit.org/changeset/208702/webkit and
https://trac.webkit.org/changeset/208707/webkit.
2017-03-24 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Add a UI delegate SPI hook to enable or disable navigation on drop
https://bugs.webkit.org/show_bug.cgi?id=169168
<rdar://problem/30688374>
Reviewed by Tim Horton.
Support customizing the set of allowed actions on drop in WebKit2 by introducing a new method to WKUIDelegatePrivate
that returns a WKDragDestinationAction given platform dragging info. These flags are then used to initialize the
DragData sent over to the web process, where they update DragController's view of the allowed destination actions.
Moving forward, the default action mask for WKWebViews will include everything except WKDragDestinationActionLoad,
though for applciations linked on or before 10.12, we will still default to WKDragDestinationActionAny to mitigate
any compatibility risk.
* Shared/API/Cocoa/WKDragDestinationAction.h:
Introduce WK2 client-facing versions of WebCore::DragDestinationAction flags.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<DragData>::encode):
(IPC::ArgumentCoder<DragData>::decode):
Serialize DragData's destination actions when sending DragData over IPC.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _web_dragDestinationActionForDraggingInfo:]):
For WKWebView, allow all drag destination actions except for loading (i.e. drop-to-navigate).
* UIProcess/API/mac/WKView.mm:
(-[WKView _web_dragDestinationActionForDraggingInfo:]):
For WKView, allow all types of drag destination actions.
* UIProcess/Cocoa/VersionChecks.h:
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::draggingEntered):
(WebKit::WebViewImpl::draggingUpdated):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebDragClient.cpp:
(WebKit::WebDragClient::actionMaskForDrag):
* WebProcess/WebCoreSupport/WebDragClient.h:
2017-03-24 Simon Fraser <simon.fraser@apple.com>
[iOS WK2] Move from a pre-commit handler to dispatch_async for visible content rect updates
https://bugs.webkit.org/show_bug.cgi?id=170091
rdar://problem/30682584
Reviewed by Tim Horton.
[CATransaction addCommitHandler:forPhase:] is sometimes not called when running inside another
commit callback (rdar://problem/31253952), and we don't yet have a reliable way to detect this.
So dispatch_async() to postpone the call to [CATransaction addCommitHandler:forPhase:] to a known-
good time.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _scheduleVisibleContentRectUpdateAfterScrollInView:]):
2017-03-24 John Wilander <wilander@apple.com>
Re-enable the network process' keychain access to fix client certificate authentication
https://bugs.webkit.org/show_bug.cgi?id=170074
<rdar://problem/31095987>
Reviewed by Brent Fulgham.
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
Reverted remaining change from
https://trac.webkit.org/changeset/208702/webkit and
https://trac.webkit.org/changeset/208707/webkit.
2017-03-24 Eric Carlson <eric.carlson@apple.com>
[MediaStream] "ideal" constraints passed to getUserMedia should affect fitness score
https://bugs.webkit.org/show_bug.cgi?id=170056
Reviewed by Youenn Fablet.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): When
short-circuiting the user prompt because the page is already authorized, return the first
audio and/or video device because so the page gets the one with the best fitness distance.
2017-03-24 Simon Fraser <simon.fraser@apple.com>
Make UI-side compositing on macOS a bit more usable
https://bugs.webkit.org/show_bug.cgi?id=170073
Reviewed by Tim Horton.
Mach port as layer contents doesn't work on macOS, so don't use it there.
Also remove two assertions that hit with UI-side compositing in MiniBrowser.
* UIProcess/DrawingAreaProxy.cpp:
(WebKit::DrawingAreaProxy::createFence):
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::requestScroll):
* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::updateLayerTree):
2017-03-24 Alex Christensen <achristensen@webkit.org>
Fix assertions after r214358.
https://bugs.webkit.org/show_bug.cgi?id=169167
* UIProcess/API/APIContentExtensionStore.cpp:
(API::ContentExtensionStore::compileContentExtension):
AtomicString::init must be called for the first time from the main thread.
We were calling it for the first time from a non-main thread sometimes.
Call it from the main thread before initiating compiling on another thread.
== Rolled over to ChangeLog-2017-03-23 ==