| 2020-05-22 James Savage <james.savage@apple.com> |
| |
| Create Swift overlay for WebKit framework |
| https://bugs.webkit.org/show_bug.cgi?id=211270 |
| <rdar://problem/60549174> |
| |
| Reviewed by Brady Eidson. |
| |
| Provides Swift-only overlay methods for our NS_REFINED_FOR_SWIFT API. |
| The overlay does not provide different API than its Objective-C counterparts, |
| so overlay testing focuses on ensuring that the overlay produces the |
| expected interface, and provides the expected mappings to and from ObjC. |
| |
| The overlay is defined in a separate Xcode project (from WebKit) by |
| recommendation from the Swift team. Due to build system constraints this |
| project cannot be a sibbling of WebKit.xcodeproj, and must live in a |
| subdirectory. However, because it generally acts as part of the WebKit |
| framework, it still uses the same Version.xcconfig and source file |
| locations as standard WebKit sources. |
| |
| * SwiftOverlay/Configurations/Base.xcconfig: Added. Set some default |
| warnings and product configuration. |
| * SwiftOverlay/Configurations/WebKitSwiftOverlay-maccatalyst.xcconfig: Added. |
| Override SDK configurations to build for Catalyst. |
| * SwiftOverlay/Configurations/WebKitSwiftOverlay.xcconfig: Added. |
| These flags were all provided by the Xcode template. |
| * SwiftOverlay/Configurations/WebKitSwiftOverlayTests-maccatalyst.xcconfig: Added. |
| See above. |
| * SwiftOverlay/Configurations/WebKitSwiftOverlayTests.xcconfig: Added. |
| See above. |
| * SwiftOverlay/SwiftOverlay/install-swiftmodules.sh: Added. Provided by the |
| Swift team. |
| * SwiftOverlay/Tests/WebKitSwiftOverlayTests-Info.plist: Added. |
| * SwiftOverlay/Tests/WebKitTests.swift: Added. |
| (WebKitTests.testAPI): This ensures that the function names come through as we |
| expect them to. It also ensures that the functions were correctly set to |
| public visiblity. |
| (WebKitTests.testWKPDFConfigurationRect): This does the same as the above, but |
| also exercises the null <-> nil conversion, and that regular values are |
| correctly round tripped to Objective-C. |
| * SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj: Added. |
| * SwiftOverlay/WebKitSwiftOverlay.xcodeproj/xcshareddata/xcschemes/Everything (Catalyst).xcscheme: Added. |
| * SwiftOverlay/WebKitSwiftOverlay.xcodeproj/xcshareddata/xcschemes/Everything.xcscheme: Added. |
| * UIProcess/API/Cocoa/WebKitSwiftOverlay.swift: Added. |
| (WKPDFConfiguration.rect): Provide mapping of CGRect.null to nil for Swift. |
| (WKWebView.callAsyncJavaScript(_:arguments:in:completion:)): Provide a Result |
| in the completion handler, and default value for arguments. |
| (WKWebView.evaluateJavaScript(_:in:completion:)): Ditto. |
| (WKWebView.createPDF(configuration:completionHandler:)): Provide a Swift function |
| that takes a Result<Data, Error> instead of (Data?, Error?) tuple. Provide |
| a default value for the configuration. |
| (WKWebView.createWebArchiveData(completionHandler:)): See above. |
| (WKWebView.find(_:configuration:completionHandler:)): See above. |
| |
| 2020-05-22 Chris Dumez <cdumez@apple.com> |
| |
| RELEASE_ASSERT() that InitializeWebKit2() is getting called on the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=212283 |
| |
| Reviewed by Alex Christensen. |
| |
| RELEASE_ASSERT() that InitializeWebKit2() is getting called on the main thread, behind |
| a linked-on-after check. In r217137, we tried to add a dispatch_sync() to the main thread to |
| work around the issue but it was a hack and it can cause deadlocks. It is best to force |
| developers to fix their code by crashing. |
| |
| * Shared/Cocoa/WebKit2InitializeCocoa.mm: |
| (WebKit::runInitializationCode): |
| (WebKit::InitializeWebKit2): |
| * UIProcess/Cocoa/VersionChecks.h: |
| |
| 2020-05-22 Alex Christensen <achristensen@webkit.org> |
| |
| Make download resume workaround forgiving of changes in CFNetwork |
| https://bugs.webkit.org/show_bug.cgi?id=212273 |
| |
| Reviewed by Geoffrey Garen. |
| |
| They broke my workaround. See rdar://problem/63512518 |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:]): |
| |
| 2020-05-22 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [IPC] Add support for specifying `Async WantsConnection` in message files |
| https://bugs.webkit.org/show_bug.cgi?id=212276 |
| |
| Reviewed by Alex Christensen. |
| |
| Augments the IPC message receiver generation script to allow for "Async WantsConnection" in `.message.in` files. |
| Currently, specifying this in a message causes the `connection` argument to be passed twice when handling the |
| IPC message. This is because normal async IPC messages without replies normally don't have the `IPC::Connection` |
| argument, and use the overloaded `handleMessage(Connection& connection, ...)` version of `handleMessage` when |
| `WantsConnection` is specified. |
| |
| However, in the `Async` reply case, we already pass in the `IPC::Connection`. Instead of overloading the method |
| signature, we introduce a different method instead, named `handleMessageAsyncWantsConnection`, which forwards |
| the given `IPC::Connection` along to the member function. |
| |
| Test: TestAsyncMessageWithConnection |
| |
| * Platform/IPC/HandleMessage.h: |
| (IPC::handleMessageAsyncWantsConnection): |
| |
| Add another variant of the message receiver template, for the case where the message receiver wants a connection. |
| This is similar to handleMessageSynchronousWantsConnection, above. |
| |
| * Scripts/test-superclassMessageReceiver.cpp: |
| (Messages::WebPage::TestAsyncMessageWithConnection::callReply): |
| (Messages::WebPage::TestAsyncMessageWithConnection::cancelReply): |
| (Messages::WebPage::TestAsyncMessageWithConnection::send): |
| (WebKit::WebPage::didReceiveMessage): |
| * Scripts/test-superclassMessages.h: |
| (Messages::WebPage::TestAsyncMessageWithConnection::name): |
| (Messages::WebPage::TestAsyncMessageWithConnection::asyncMessageReplyName): |
| (Messages::WebPage::TestAsyncMessageWithConnection::TestAsyncMessageWithConnection): |
| (Messages::WebPage::TestAsyncMessageWithConnection::arguments const): |
| * Scripts/webkit/messages.py: |
| * Scripts/webkit/messages_unittest.py: |
| * Scripts/webkit/test-superclass.messages.in: |
| |
| 2020-05-22 Tim Horton <timothy_horton@apple.com> |
| |
| Excessive hang time in iOS Safari under waitForDidUpdateActivityState |
| https://bugs.webkit.org/show_bug.cgi?id=212272 |
| <rdar://problem/62787789> |
| |
| Reviewed by Andy Estes. |
| |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState): |
| Make the view state change timeout equivalent on iOS and macOS. |
| |
| We believe that it is preferable to paint white than block the UI |
| process main thread for half a second. Reduce the timeout on iOS |
| to be the same as it has been for years on macOS. |
| |
| 2020-05-22 Alex Christensen <achristensen@webkit.org> |
| |
| Add SPI to unblock third party cookies from WKWebViews with ResourceLoadStatistics turned on |
| https://bugs.webkit.org/show_bug.cgi?id=212058 |
| <rdar://problem/60595539> |
| |
| Reviewed by John Wilander. |
| |
| This value makes NetworkDataTaskCocoa::blockCookies() not do anything for certain WKWebViews. |
| |
| * NetworkProcess/NetworkDataTask.cpp: |
| (WebKit::NetworkDataTask::create): |
| * NetworkProcess/NetworkLoadParameters.h: |
| * NetworkProcess/NetworkResourceLoadParameters.cpp: |
| (WebKit::NetworkResourceLoadParameters::encode const): |
| (WebKit::NetworkResourceLoadParameters::decode): |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::blockCookies): |
| (WebKit::NetworkDataTaskCocoa::unblockCookies): |
| (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| * UIProcess/API/APIPageConfiguration.cpp: |
| (API::PageConfiguration::copy const): |
| * UIProcess/API/APIPageConfiguration.h: |
| (API::PageConfiguration::setAllowAllThirdPartyCookies): |
| (API::PageConfiguration::allowAllThirdPartyCookies const): |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration _allowAllThirdPartyCookies]): |
| (-[WKWebViewConfiguration _setAllowAllThirdPartyCookies:]): |
| * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::creationParameters): |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::addParametersShared): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_limitsNavigationsToAppBoundDomains): |
| |
| 2020-05-22 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r254859) DOM storage event gets fired at the frame that caused the storage modification |
| https://bugs.webkit.org/show_bug.cgi?id=211503 |
| <rdar://problem/62983284> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| r254859 refactored StorageAreaMap's dispatchSessionStorageEvent() & |
| dispatchLocalStorageEvent() to share more code by moving that code to |
| a new framesForEventDispatching() static function. However, |
| framesForEventDispatching() was always using the session storage no |
| matter the call site. It should be using the local storage when called |
| from dispatchLocalStorageEvent(). |
| |
| Test: storage/domstorage/events/storage-event-not-in-originator.html |
| |
| * WebProcess/WebStorage/StorageAreaMap.cpp: |
| (WebKit::framesForEventDispatching): |
| (WebKit::StorageAreaMap::dispatchSessionStorageEvent): |
| (WebKit::StorageAreaMap::dispatchLocalStorageEvent): |
| |
| 2020-05-22 Tim Horton <timothy_horton@apple.com> |
| |
| REGRESSION (r261978): Cannot click on links with trackpad on iPad |
| https://bugs.webkit.org/show_bug.cgi?id=212262 |
| |
| Reviewed by Andy Estes. |
| |
| No new tests; our current WKMouseGestureRecognizer testing strategy |
| unfortunately bypasses this particular problem. |
| |
| * UIProcess/ios/WKMouseGestureRecognizer.mm: |
| (-[WKMouseGestureRecognizer _hoverEntered:withEvent:]): |
| (-[WKMouseGestureRecognizer _hoverMoved:withEvent:]): |
| (-[WKMouseGestureRecognizer _hoverExited:withEvent:]): |
| (-[WKMouseGestureRecognizer _hoverCancelled:withEvent:]): |
| Don't call super in any of the hover callbacks now that we derive from |
| UIHoverGestureRecognizer. We want to wholly own the state of the gesture, |
| including differences from UIHoverGestureRecognizer behavior such as |
| remaining in the recognizing state while the trackpad button is pressed. |
| We don't need any of the code in the default implementation, so just |
| override it entirely. This returns behavior to what it was like before r261978. |
| |
| 2020-05-21 Sam Weinig <weinig@apple.com> |
| |
| Extended Color Cleanup: Move Color coder definitions to Color to allow for future encaspulation improvements |
| https://bugs.webkit.org/show_bug.cgi?id=212247 |
| |
| Reviewed by Simon Fraser. |
| |
| Move IPC encoder/decoder definitions from WebKit down into Color itself to move closer |
| to making Color::rgb() private. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::ArgumentCoder<Color>::encode): Deleted. |
| (IPC::ArgumentCoder<Color>::decode): Deleted. |
| * Shared/WebCoreArgumentCoders.h: |
| |
| 2020-05-21 Peng Liu <peng.liu6@apple.com> |
| |
| Fix issues of the Picture-in-Picture API under stress tests |
| https://bugs.webkit.org/show_bug.cgi?id=212191 |
| |
| Reviewed by Eric Carlson. |
| |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: |
| (WebKit::VideoFullscreenManagerProxy::enterFullscreen): |
| Mock the behavior of the VideoFullscreenInterface[AVKit|Mac] regarding |
| the Picture-in-Picture mode support. |
| |
| * WebProcess/cocoa/VideoFullscreenManager.mm: |
| (WebKit::VideoFullscreenManager::didEnterFullscreen): |
| (WebKit::VideoFullscreenManager::didCleanupFullscreen): |
| Add callbacks for the end of entering/exiting fullscreen. |
| |
| 2020-05-21 Tyler Wilcock <twilco.o@protonmail.com> |
| |
| Fix misspelling -- m_releaseNetwrokActivityTimer --> m_releaseNetworkActivityTimer |
| https://bugs.webkit.org/show_bug.cgi?id=212237 |
| |
| Reviewed by Simon Fraser. |
| |
| No new tests required -- simply fixing a misspelling. |
| |
| * UIProcess/Cocoa/NavigationState.h: Rename m_releaseNetwrokActivityTimer to m_releaseNetworkActivityTimer |
| * UIProcess/Cocoa/NavigationState.mm: Rename m_releaseNetwrokActivityTimer to m_releaseNetworkActivityTimer |
| (WebKit::NavigationState::NavigationState): |
| (WebKit::NavigationState::releaseNetworkActivity): |
| (WebKit::NavigationState::didChangeIsLoading): |
| |
| 2020-05-21 Sam Weinig <weinig@apple.com> |
| |
| Extended Color Cleanup: Remove trivial uses of Color::rgb() |
| https://bugs.webkit.org/show_bug.cgi?id=212231 |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/API/ios/WKWebViewIOS.mm: |
| (scrollViewBackgroundColor): |
| Replace colorWithOverrideAlpha() with Color::colorWithAlphaUsingAlternativeRounding() to avoid |
| unnecessary use of Color::rgb() |
| |
| 2020-05-21 Alex Christensen <achristensen@webkit.org> |
| |
| Use an OptionSet instead of uint8_t for MessageFlags |
| https://bugs.webkit.org/show_bug.cgi?id=212230 |
| <rdar://problem/63496543> |
| |
| Reviewed by Darin Adler. |
| |
| I also reduce the encoding size of OptionSet. |
| |
| * Platform/IPC/ArgumentCoders.h: |
| (IPC::ArgumentCoder<OptionSet<T>>::encode): |
| (IPC::ArgumentCoder<OptionSet<T>>::decode): |
| * Platform/IPC/Decoder.cpp: |
| (IPC::Decoder::isSyncMessage const): |
| (IPC::Decoder::shouldDispatchMessageWhenWaitingForSyncReply const): |
| (IPC::Decoder::shouldUseFullySynchronousModeForTesting const): |
| * Platform/IPC/Decoder.h: |
| * Platform/IPC/Encoder.cpp: |
| (IPC::Encoder::isSyncMessage const): |
| (IPC::Encoder::shouldDispatchMessageWhenWaitingForSyncReply const): |
| (IPC::Encoder::setIsSyncMessage): |
| (IPC::Encoder::setShouldDispatchMessageWhenWaitingForSyncReply): |
| (IPC::Encoder::setFullySynchronousModeForTesting): |
| (IPC::Encoder::messageFlags): |
| (IPC::Encoder::messageFlags const): |
| * Platform/IPC/Encoder.h: |
| * Platform/IPC/MessageFlags.h: |
| (): Deleted. |
| |
| 2020-05-21 John Wilander <wilander@apple.com> |
| |
| Storage Access API: Allow configurable storage access scope |
| https://bugs.webkit.org/show_bug.cgi?id=212114 |
| <rdar://problem/63423063> |
| |
| Reviewed by Alex Christensen. |
| |
| The scope of storage access as per-frame or per-page was discussed in the |
| standards process here: https://github.com/privacycg/storage-access/issues/3 |
| |
| The decision was to have per-page storage access by default. Recent feedback |
| from Google and conversation with Mozilla suggest that we might want to |
| support the caller choosing the scope. |
| |
| This patch adds support for different scope configurations while keeping the |
| existing default as per-frame. A later patch will switch the default and add |
| test cases for per-page scope. |
| |
| Most of the changes is piping through the new enum |
| WebCore::StorageAccessScope from the call side to encode per-frame and |
| per-page access, and piping through the new struct |
| WebCore::RequestStorageAccessResult on the return side which carries full |
| information about the storage access request result. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::CompletionHandler<void): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): |
| (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): |
| (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): |
| (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): |
| (WebKit::WebResourceLoadStatisticsStore::requestStorageAccessEphemeral): |
| (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): |
| (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessEphemeral): |
| (WebKit::WebResourceLoadStatisticsStore::grantStorageAccessInStorageSession): |
| Renamed from WebResourceLoadStatisticsStore::grantStorageAccess() |
| to reduce confusion since we already have another function called |
| WebResourceLoadStatisticsStore::grantStorageAccess(). |
| (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * Scripts/webkit/messages.py: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::requestStorageAccess): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::requestStorageAccess): |
| * WebProcess/WebPage/WebPage.h: |
| |
| 2020-05-21 Yoshiaki Jitsukawa <yoshiaki.jitsukawa@sony.com> |
| |
| [PlayStation] Add minimal WKView API to enable TestWebKitAPI |
| https://bugs.webkit.org/show_bug.cgi?id=211868 |
| |
| Reviewed by Alex Christensen. |
| |
| Enable TestWebKitAPI |
| |
| * Platform/IPC/Connection.h: |
| * Platform/IPC/unix/ConnectionUnix.cpp: |
| (IPC::Connection::platformInvalidate): |
| (IPC::Connection::open): |
| Add SocketMonitor to monitor received messages. |
| |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| Add PlayStation specific members: WebProcess and NetworkProcess paths, and user ID. |
| |
| * UIProcess/Launcher/ProcessLauncher.h: |
| Add PlayStation specific members: Process path and user ID. |
| |
| * NetworkProcess/EntryPoint/playstation/NetworkProcessMain.cpp: Copied from Tools\TestWebKitAPI\playstation\main.cpp. |
| (loadLibraryOrExit): |
| (main): |
| * PlatformPlayStation.cmake: |
| * Shared/API/c/playstation/WKEventPlayStation.cpp: Added. |
| (WKKeyboardEventMake): |
| (WKMouseEventMake): |
| (WKWheelEventMake): |
| * Shared/API/c/playstation/WKEventPlayStation.h: Added. |
| * UIProcess/API/C/playstation/WKAPICastPlayStation.h: |
| (WebKit::toAPI<>): |
| (WebKit::toImpl<>): |
| * UIProcess/API/C/playstation/WKContextConfigurationPlayStation.cpp: Copied from Tools\TestWebKitAPI\playstation\PlatformUtilitiesPlayStation.cpp. |
| (WKContextConfigurationSetWebProcessPath): |
| (WKContextConfigurationCopyWebProcessPath): |
| (WKContextConfigurationSetNetworkProcessPath): |
| (WKContextConfigurationCopyNetworkProcessPath): |
| (WKContextConfigurationSetUserId): |
| (WKContextConfigurationGetUserId): |
| * UIProcess/API/C/playstation/WKContextConfigurationPlayStation.h: Copied from Source\WebKit\UIProcess\API\C\playstation\WKView.h. |
| * UIProcess/API/C/playstation/WKPagePrivatePlayStation.cpp: Added. |
| (WKPageHandleKeyboardEvent): |
| (WKPageHandleMouseEvent): |
| (WKPageHandleWheelEvent): |
| * UIProcess/API/C/playstation/WKPagePrivatePlayStation.h: Copied from Source\WebKit\UIProcess\API\C\playstation\WKView.h. |
| * UIProcess/API/C/playstation/WKView.cpp: Copied from Source\WebKit\WebProcess\InjectedBundle\playstation\InjectedBundlePlayStation.cpp. |
| (WKViewCreate): |
| (WKViewGetPage): |
| * UIProcess/API/C/playstation/WKView.h: |
| * UIProcess/Launcher/playstation/ProcessLauncherPlayStation.cpp: |
| (WebKit::defaultProcessPath): |
| (WebKit::ProcessLauncher::launchProcess): |
| (WebKit::ProcessLauncher::terminateProcess): |
| (WebKit::ProcessLauncher::platformInvalidate): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::getLaunchOptions): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::getLaunchOptions): |
| * UIProcess/playstation/PageClientImpl.cpp: Added. |
| (WebKit::PageClientImpl::PageClientImpl): |
| (WebKit::PageClientImpl::createDrawingAreaProxy): |
| (WebKit::PageClientImpl::setViewNeedsDisplay): |
| (WebKit::PageClientImpl::requestScroll): |
| (WebKit::PageClientImpl::viewScrollPosition): |
| (WebKit::PageClientImpl::viewSize): |
| (WebKit::PageClientImpl::isViewWindowActive): |
| (WebKit::PageClientImpl::isViewFocused): |
| (WebKit::PageClientImpl::isViewVisible): |
| (WebKit::PageClientImpl::isViewInWindow): |
| (WebKit::PageClientImpl::processDidExit): |
| (WebKit::PageClientImpl::didRelaunchProcess): |
| (WebKit::PageClientImpl::pageClosed): |
| (WebKit::PageClientImpl::preferencesDidChange): |
| (WebKit::PageClientImpl::toolTipChanged): |
| (WebKit::PageClientImpl::didCommitLoadForMainFrame): |
| (WebKit::PageClientImpl::handleDownloadRequest): |
| (WebKit::PageClientImpl::didChangeContentSize): |
| (WebKit::PageClientImpl::setCursor): |
| (WebKit::PageClientImpl::setCursorHiddenUntilMouseMoves): |
| (WebKit::PageClientImpl::didChangeViewportProperties): |
| (WebKit::PageClientImpl::registerEditCommand): |
| (WebKit::PageClientImpl::clearAllEditCommands): |
| (WebKit::PageClientImpl::canUndoRedo): |
| (WebKit::PageClientImpl::executeUndoRedo): |
| (WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore): |
| (WebKit::PageClientImpl::convertToDeviceSpace): |
| (WebKit::PageClientImpl::convertToUserSpace): |
| (WebKit::PageClientImpl::screenToRootView): |
| (WebKit::PageClientImpl::rootViewToScreen): |
| (WebKit::PageClientImpl::accessibilityScreenToRootView): |
| (WebKit::PageClientImpl::rootViewToAccessibilityScreen): |
| (WebKit::PageClientImpl::doneWithKeyEvent): |
| (WebKit::PageClientImpl::createPopupMenuProxy): |
| (WebKit::PageClientImpl::enterAcceleratedCompositingMode): |
| (WebKit::PageClientImpl::exitAcceleratedCompositingMode): |
| (WebKit::PageClientImpl::updateAcceleratedCompositingMode): |
| (WebKit::PageClientImpl::fullScreenManagerProxyClient): |
| (WebKit::PageClientImpl::didFinishLoadingDataForCustomContentProvider): |
| (WebKit::PageClientImpl::navigationGestureDidBegin): |
| (WebKit::PageClientImpl::navigationGestureWillEnd): |
| (WebKit::PageClientImpl::navigationGestureDidEnd): |
| (WebKit::PageClientImpl::willRecordNavigationSnapshot): |
| (WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot): |
| (WebKit::PageClientImpl::didFirstVisuallyNonEmptyLayoutForMainFrame): |
| (WebKit::PageClientImpl::didFinishLoadForMainFrame): |
| (WebKit::PageClientImpl::didFailLoadForMainFrame): |
| (WebKit::PageClientImpl::didSameDocumentNavigationForMainFrame): |
| (WebKit::PageClientImpl::didChangeBackgroundColor): |
| (WebKit::PageClientImpl::isPlayingAudioWillChange): |
| (WebKit::PageClientImpl::isPlayingAudioDidChange): |
| (WebKit::PageClientImpl::refView): |
| (WebKit::PageClientImpl::derefView): |
| (WebKit::PageClientImpl::didRestoreScrollPosition): |
| (WebKit::PageClientImpl::userInterfaceLayoutDirection): |
| (WebKit::PageClientImpl::requestDOMPasteAccess): |
| * UIProcess/playstation/PageClientImpl.h: Added. |
| * UIProcess/playstation/WebProcessPoolPlayStation.cpp: |
| (WebKit::WebProcessPool::platformInitialize): |
| * UIProcess/playstation/PlayStationWebView.cpp: Copied from Source\WebKit\UIProcess\playstation\WebProcessPoolPlayStation.cpp. |
| (WebKit::PlayStationWebView::create): |
| (WebKit::PlayStationWebView::PlayStationWebView): |
| (WebKit::PlayStationWebView::~PlayStationWebView): |
| (WebKit::PlayStationWebView::isActive const): |
| (WebKit::PlayStationWebView::isFocused const): |
| (WebKit::PlayStationWebView::isVisible const): |
| * UIProcess/playstation/PlayStationWebView.h: Copied from Source\WebKit\WebProcess\InjectedBundle\playstation\InjectedBundlePlayStation.cpp. |
| (WebKit::PlayStationWebView::page): |
| * WebProcess/EntryPoint/playstation/WebProcessMain.cpp: Copied from Tools\TestWebKitAPI\playstation\main.cpp. |
| (loadLibraryOrExit): |
| (main): |
| * WebProcess/InjectedBundle/playstation/InjectedBundlePlayStation.cpp: |
| (WebKit::InjectedBundle::initialize): |
| (WebKit::InjectedBundle::setBundleParameter): |
| * WebProcess/WebPage/AcceleratedSurface.cpp: |
| (WebKit::AcceleratedSurface::create): |
| |
| 2020-05-21 Chris Dumez <cdumez@apple.com> |
| |
| Address post review comments from Mitz after r262004. |
| |
| * Shared/mac/AuxiliaryProcessMac.mm: |
| (WebKit::sandboxDataVaultParentDirectory): |
| |
| 2020-05-21 Chris Dumez <cdumez@apple.com> |
| |
| [WK2] WebKit abandons compiled sandbox profiles |
| https://bugs.webkit.org/show_bug.cgi?id=212177 |
| <rdar://problem/54613619> |
| |
| Reviewed by Saam Barati. |
| |
| WebKit generates new compiled sandbox profiles whenever sandbox profiles are updated or |
| whenever webkit directories change (which is super common for WebKitTestRunner). Previous |
| compiled sandbox profiles do not get deleted and therefore may accumulate. |
| |
| To address the issue, we now save compiled sandbox profiles under _CS_DARWIN_USER_TEMP_DIR |
| instead of _CS_DARWIN_USER_CACHE_DIR. The system takes care of deleting the files under |
| _CS_DARWIN_USER_TEMP_DIR upon reboot or if they have not been accessed for 3 days. |
| |
| * Shared/mac/AuxiliaryProcessMac.mm: |
| (WebKit::sandboxDataVaultParentDirectory): |
| |
| 2020-05-21 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Unreviewed, fix the iOS 13.4 build after r261978 |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| |
| Only declare `_UIHoverEventRespondable` if HAVE(UI_HOVER_EVENT_RESPONDABLE) is defined. |
| |
| * UIProcess/ios/WKMouseGestureRecognizer.mm: |
| |
| If `_UIHoverEventRespondable` is not present, fall back to declaring internal methods on |
| `UIHoverGestureRecognizer`. |
| |
| 2020-05-21 Yoshiaki JITSUKAWA <yoshiaki.jitsukawa@sony.com> |
| |
| [ConnectionUnix] Set MSG_NOSIGNAL to avoid SIGPIPE |
| https://bugs.webkit.org/show_bug.cgi?id=211719 |
| |
| Reviewed by Don Olmstead. |
| |
| Set MSG_NOSIGNAL to sendmsg()/resvmsg() in order to avoid |
| SIGPIPE when the other process disappears. |
| * Platform/IPC/unix/ConnectionUnix.cpp: |
| (IPC::readBytesFromSocket): |
| (IPC::Connection::sendOutputMessage): |
| |
| 2020-05-21 Enrique Ocaña González <eocanha@igalia.com> |
| |
| [GStreamer][GTK][WPE] Expose and honor the media content types requiring hardware support setting |
| https://bugs.webkit.org/show_bug.cgi?id=211950 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Expose mediaContentTypesRequiringHardwareSupport as a setting on WPE and WebKitGTK. |
| |
| * UIProcess/API/glib/WebKitSettings.cpp: |
| (_WebKitSettingsPrivate::_WebKitSettingsPrivate): |
| (webKitSettingsSetProperty): |
| (webKitSettingsGetProperty): |
| (webkit_settings_class_init): |
| (webkit_settings_get_media_content_types_requiring_hardware_support): |
| (webkit_settings_set_media_content_types_requiring_hardware_support): |
| * UIProcess/API/gtk/WebKitSettings.h: |
| * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: |
| * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: |
| * UIProcess/API/wpe/WebKitSettings.h: |
| * UIProcess/API/wpe/docs/wpe-1.0-sections.txt: |
| |
| 2020-05-20 Darin Adler <darin@apple.com> |
| |
| Dictation context should be an object identifier, not a type-punned pointer |
| https://bugs.webkit.org/show_bug.cgi?id=212174 |
| |
| Reviewed by Anders Carlsson. |
| |
| * Scripts/webkit/messages.py: Added DictationContext to the list of types that are |
| not C++ classes. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::ArgumentCoder<DictationAlternative>::encode): Updated for change to |
| DictationAlternative structure. |
| (IPC::ArgumentCoder<DictationAlternative>::decode): Ditto. |
| |
| * UIProcess/Cocoa/PageClientImplCocoa.h: Use DictationContext instead of uint64_t. |
| * UIProcess/Cocoa/PageClientImplCocoa.mm: |
| (WebKit::PageClientImplCocoa::addDictationAlternatives): Ditto. |
| (WebKit::PageClientImplCocoa::removeDictationAlternatives): Ditto. |
| (WebKit::PageClientImplCocoa::dictationAlternatives): Ditto. |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::insertDictatedTextAsync): Ditto. |
| * UIProcess/PageClient.h: Ditto. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::showDictationAlternativeUI): Ditto. |
| (WebKit::WebPageProxy::removeDictationAlternatives): Ditto. |
| (WebKit::WebPageProxy::dictationAlternatives): Ditto. |
| * UIProcess/WebPageProxy.h: Ditto. |
| * UIProcess/WebPageProxy.messages.in: Ditto. |
| * UIProcess/ios/PageClientImplIOS.h: Ditto. |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::showDictationAlternativeUI): Ditto. |
| * UIProcess/mac/PageClientImplMac.h: Ditto. |
| * UIProcess/mac/PageClientImplMac.mm: |
| (WebKit::PageClientImpl::showDictationAlternativeUI): Ditto. |
| |
| * UIProcess/mac/WebPageProxyMac.mm: Removed unneeded include of |
| DictationAlternative.h. |
| |
| * WebProcess/WebCoreSupport/WebAlternativeTextClient.h: Use DictationContext |
| instead of uint64_t. Also marked class final and made everything private. |
| * WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp: |
| (WebKit::WebAlternativeTextClient::removeDictationAlternatives): Ditto. |
| (WebKit::WebAlternativeTextClient::showDictationAlternativeUI): Ditto. |
| (WebKit::WebAlternativeTextClient::dictationAlternatives): Ditto. |
| |
| 2020-05-20 Tim Horton <timothy_horton@apple.com> |
| |
| WKMouseGestureRecognizer should be implemented without using UIKit internals |
| https://bugs.webkit.org/show_bug.cgi?id=212173 |
| <rdar://problem/61163726> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView gestureRecognizer:shouldReceiveTouch:]): |
| * UIProcess/ios/WKMouseGestureRecognizer.h: |
| * UIProcess/ios/WKMouseGestureRecognizer.mm: |
| (-[WKMouseGestureRecognizer _hoverEntered:withEvent:]): |
| (-[WKMouseGestureRecognizer initWithTarget:action:]): Deleted. |
| (-[WKMouseGestureRecognizer setView:]): Deleted. |
| (-[WKMouseGestureRecognizer _wantsHoverEvents]): Deleted. |
| (-[WKMouseGestureRecognizer canPreventGestureRecognizer:]): Deleted. |
| (-[WKMouseGestureRecognizer canBePreventedByGestureRecognizer:]): Deleted. |
| Reimplement WKMouseGestureRecognizer as a UIHoverGestureRecognizer subclass, |
| so we can decouple ourselves a bit from UIKit internals. |
| |
| 2020-05-20 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Fix message filter sandbox violation |
| https://bugs.webkit.org/show_bug.cgi?id=212100 |
| <rdar://problem/63407155> |
| |
| Reviewed by Brent Fulgham. |
| |
| A message needs to be added to the message filter in the WebContent sandbox on iOS. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-05-20 Sam Weinig <weinig@apple.com> |
| |
| Replace Color::getHSL() with sRGBToHSL to ensure it at least gives somewhat sensible results for ExtendedColors and reduce code duplication |
| https://bugs.webkit.org/show_bug.cgi?id=212143 |
| |
| Reviewed by Simon Fraser. |
| |
| * UIProcess/API/ios/WKWebViewIOS.mm: |
| (-[WKWebView _updateScrollViewBackground]): |
| Switch to using Color::lightness(). |
| |
| 2020-05-20 Megan Gardner <megan_gardner@apple.com> |
| |
| Hide password echo when screen is being captured. |
| https://bugs.webkit.org/show_bug.cgi?id=212060 |
| <rdar://problem/47653578> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Use the UIScreen state and notification to determine if the |
| screen is being shared or captured. This flag is for all |
| capture methods, Air Play, Screen Recording, etc. If the screen is |
| being captured, turn off the password echo to prevent the password from |
| being leaked. |
| |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _commonInitializationWithProcessPool:configuration:]): |
| (-[WKContentView _screenCapturedDidChange:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::setIsScreenCaptured): |
| * WebProcess/WebCoreSupport/WebEditorClient.h: |
| * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm: |
| (WebKit::WebEditorClient::isScreenCaptured const): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::isScreenCaptured const): |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::setIsScreenCaptured): |
| |
| 2020-05-20 ChangSeok Oh <changseok@webkit.org> |
| |
| [GTK] Implement connected and disconnected events of GAMEPAD API with libmanette |
| https://bugs.webkit.org/show_bug.cgi?id=133854 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| This patch brings initial GAMEPAD API support to the gtk port. We use libmanette, |
| a simple GObject game controller library to handle gamepad connection and input. |
| |
| * SourcesGTK.txt: |
| * UIProcess/Gamepad/UIGamepadProvider.cpp: Add a build flag to void default interface |
| * UIProcess/Gamepad/gtk/UIGamepadProviderGtk.cpp: Added to retrieve WebPageProxy to which |
| a gamepad connects. The returned WebPageProxy handles input events from the gamepad. |
| (WebKit::getWebPageProxy): |
| (WebKit::UIGamepadProvider::platformWebPageProxyForGamepadInput): |
| * UIProcess/Gamepad/manette/UIGamepadProviderManette.cpp: Added. |
| (WebKit::UIGamepadProvider::platformSetDefaultGamepadProvider): |
| (WebKit::UIGamepadProvider::platformWebPageProxyForGamepadInput): |
| (WebKit::UIGamepadProvider::platformStopMonitoringInput): |
| (WebKit::UIGamepadProvider::platformStartMonitoringInput): |
| |
| 2020-05-20 Kate Cheney <katherine_cheney@apple.com> |
| |
| Support operating dates in ResourceLoadStatisticsDatabaseStore |
| https://bugs.webkit.org/show_bug.cgi?id=212034 |
| <rdar://problem/63349242> |
| |
| Reviewed by Brent Fulgham. |
| |
| Tests: http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-database.html |
| http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed.html |
| http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed-database.html |
| http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed.html |
| |
| Patch to support Operating Dates in the ResourceLoadStatisticsDatabaseStore. |
| Moves functions out of ResourceLoadStatisticsStore now that each store |
| needs its own implementation. |
| |
| Adds a new function for testing which inserts an expired statistic |
| and makes sure the proper behavior occurs depending on additional |
| parameters. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::createTableQueries): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::checkForMissingTablesInSchema): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::createUniqueIndices): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::createSchema): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::getLeastRecentOperatingDate): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::mergeOperatingDates): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::includeTodayAsOperatingDateIfNecessary): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasStatisticsExpired const): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting): |
| Migrated Operating Dates functions from ResourceLoadStatisticsStore and implemented |
| them using SQLite instead of a vector. Functionality is |
| identical to the original in-memory implementation. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore): |
| (WebKit::ResourceLoadStatisticsMemoryStore::mergeOperatingDates): |
| (WebKit::ResourceLoadStatisticsMemoryStore::includeTodayAsOperatingDateIfNecessary): |
| (WebKit::ResourceLoadStatisticsMemoryStore::hasStatisticsExpired const): |
| (WebKit::ResourceLoadStatisticsMemoryStore::insertExpiredStatisticForTesting): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: |
| Migrated Operating Dates functions from ResourceLoadStatisticsStore |
| now that the database store does not use them. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp: |
| (WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk): |
| Spelling error. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::ResourceLoadStatisticsStore): |
| (WebKit::ResourceLoadStatisticsStore::updateCookieBlockingForDomains): |
| (WebKit::ResourceLoadStatisticsStore::statisticsEpirationTime const): Deleted. |
| (WebKit::ResourceLoadStatisticsStore::mergeOperatingDates): Deleted. |
| (WebKit::ResourceLoadStatisticsStore::includeTodayAsOperatingDateIfNecessary): Deleted. |
| (WebKit::ResourceLoadStatisticsStore::hasStatisticsExpired const): Deleted. |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| (WebKit::OperatingDate::year const): |
| (WebKit::OperatingDate::month const): |
| (WebKit::OperatingDate::monthDay const): |
| These functions should be public now that they are needed outside |
| of this file after migrating OperatingDates functions. |
| |
| (WebKit::ResourceLoadStatisticsStore::parameters const): |
| (WebKit::ResourceLoadStatisticsStore::operatingDates const): Deleted. |
| (WebKit::ResourceLoadStatisticsStore::clearOperatingDates): Deleted. |
| Moved OperatingDates functions to the memory store. Moved |
| operatingDatesWindow constexpr variables to the header file so that |
| the database and memory stores can both use them. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::insertExpiredStatisticForTesting): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::insertExpiredStatisticForTesting): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetStatisticsExpiredStatistic): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::insertExpiredStatisticForTesting): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::mergeStatisticForTesting): |
| (WebKit::WebsiteDataStore::insertExpiredStatisticForTesting): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| Function to add expired statistic to the ITP store. |
| |
| 2020-05-20 Chris Dumez <cdumez@apple.com> |
| |
| Deprecate WKBundlePageSetPolicyClient() Injected bundle C API |
| https://bugs.webkit.org/show_bug.cgi?id=212166 |
| |
| Reviewed by Alex Christensen. |
| |
| Deprecate WKBundlePageSetPolicyClient() Injected bundle C API. Approving navigations from |
| the injected bundle can lead to WebProcess terminations like in <rdar://problem/60340647> |
| because the WebProcess is not in a position to do sandbox checks when navigating to file |
| URLs. |
| |
| * WebProcess/InjectedBundle/API/c/WKBundlePage.h: |
| |
| 2020-05-20 Simon Fraser <simon.fraser@apple.com> |
| |
| Plumb the display's nominal refresh rate down to ScrollingTree for use in scroll synchronization |
| https://bugs.webkit.org/show_bug.cgi?id=212159 |
| |
| Reviewed by Tim Horton. |
| |
| Plumb an Optional<unsigned> down windowScreenDidChange, which contains the nominal |
| display refresh rate (as frames per second) if available. On macOS, we get this |
| from CVDisplayLinkGetNominalOutputVideoRefreshPeriod(). |
| |
| To read it, WebProcessPool::nominalFramesPerSecondForDisplay() makes a DisplayLink |
| that doesn't get any observers, but that DisplayLink will very likely get used |
| as soon as we schedule a rendering update. |
| |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::nominalFramesPerSecondForDisplay): |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::windowDidChangeScreen): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::windowScreenDidChange): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/mac/DisplayLink.cpp: |
| (WebKit::DisplayLink::DisplayLink): |
| (WebKit::DisplayLink::nominalFramesPerSecond const): |
| * UIProcess/mac/DisplayLink.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::windowScreenDidChange): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-05-20 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| [iPadOS] -webkit-text-size-adjust:percentage doesn't work in native apps |
| https://bugs.webkit.org/show_bug.cgi?id=212122 |
| <rdar://problem/54560875> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * Shared/WebsitePoliciesData.cpp: |
| (WebKit::WebsitePoliciesData::encode const): |
| (WebKit::WebsitePoliciesData::decode): |
| (WebKit::WebsitePoliciesData::applyToDocumentLoader): |
| * Shared/WebsitePoliciesData.h: |
| * UIProcess/API/APIWebsitePolicies.cpp: |
| (API::WebsitePolicies::copy const): |
| (API::WebsitePolicies::data): |
| * UIProcess/API/APIWebsitePolicies.h: |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): |
| |
| 2020-05-20 Kate Cheney <katherine_cheney@apple.com> |
| |
| REGRESSION (r261892) [ Mac Debug ] 4 API tests failing related to ResourceLoadStatistics |
| https://bugs.webkit.org/show_bug.cgi?id=212153 |
| <rdar://problem/63452541> |
| |
| Reviewed by Sihui Liu. |
| |
| Accidentally deleted necessary reset() call for a SQLite statement |
| when converting stored statements to SQLiteStatementAutoResetScope in |
| https://trac.webkit.org/changeset/261892/webkit. |
| |
| This statement is used in a loop with multiple bind() calls so it must be reset. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::checkForMissingTablesInSchema): |
| |
| 2020-05-20 Eric Carlson <eric.carlson@apple.com> |
| |
| Update some media logging |
| https://bugs.webkit.org/show_bug.cgi?id=212109 |
| <rdar://problem/63424816> |
| |
| Unreviewed, remove a change unintentionally included in r261899. |
| |
| * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: |
| (-[WKFullScreenWindowController _interactivePinchDismissChanged:]): |
| |
| 2020-05-20 Andy Estes <aestes@apple.com> |
| |
| [Mac] UI processes spin when creating the "Share" context menu item |
| https://bugs.webkit.org/show_bug.cgi?id=212137 |
| <rdar://problem/54498394> |
| |
| Reviewed by Wenson Hsieh. |
| |
| On Mac, WebKit has been using the +[NSMenuItem standardShareMenuItemForItems:] SPI to create |
| the "Share" context submenu and menu item. This call performs synchronous IPC and can result |
| in UI process spins. |
| |
| Where available, switch to using the asynchronous |
| -[NSSharingServicePicker getMenuWithCompletion:] SPI instead. This method only creates the |
| submenu, not the menu item, so when using this new method we must create the "Share" menu |
| item ourselves. |
| |
| * UIProcess/mac/WebContextMenuProxyMac.h: |
| * UIProcess/mac/WebContextMenuProxyMac.mm: |
| (WebKit::getStandardShareMenuItem): |
| (WebKit::WebContextMenuProxyMac::getShareMenuItem): |
| (WebKit::WebContextMenuProxyMac::getContextMenuFromItems): |
| (WebKit::WebContextMenuProxyMac::getContextMenuItem): |
| (WebKit::WebContextMenuProxyMac::showContextMenuWithItems): |
| (WebKit::WebContextMenuProxyMac::createShareMenuItem): Deleted. |
| (WebKit::WebContextMenuProxyMac::createContextMenuFromItems): Deleted. |
| (WebKit::WebContextMenuProxyMac::createContextMenuItem): Deleted. |
| |
| 2020-05-20 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix GTK4 build with GTK 3.98.4 |
| |
| * PlatformGTK.cmake: |
| * UIProcess/API/gtk/WebKitPrintOperation.cpp: |
| (webkitPrintOperationRunDialog): |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseAddDialog): |
| (webkitWebViewBaseRemoveChild): |
| (webkitWebViewBaseContainerForall): |
| (webkitWebViewBaseAddWebInspector): |
| (webkitWebViewBaseRemoveWebInspector): |
| (webkitWebViewBaseDispose): |
| (webkitWebViewBaseSizeAllocate): |
| (webkitWebViewBaseConstructed): |
| (webkit_web_view_base_class_init): |
| * UIProcess/API/gtk/WebKitWebViewBase.h: Removed. |
| * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: |
| * UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp: |
| (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow): |
| (WebKit::RemoteWebInspectorProxy::platformSave): |
| * UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp: |
| (WebKit::WebInspectorProxy::platformCreateFrontendWindow): |
| (WebKit::WebInspectorProxy::platformAttach): |
| (WebKit::WebInspectorProxy::platformDetach): |
| (WebKit::WebInspectorProxy::platformSave): |
| * UIProcess/gtk/WebContextMenuProxyGtk.cpp: |
| (WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): |
| |
| 2020-05-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Add support for drag and drop operations |
| https://bugs.webkit.org/show_bug.cgi?id=211779 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| * UIProcess/API/gtk/DragSource.h: |
| * UIProcess/API/gtk/DragSourceGtk4.cpp: |
| (WebKit::DragSource::begin): |
| * UIProcess/API/gtk/DropTarget.h: |
| * UIProcess/API/gtk/DropTargetGtk4.cpp: |
| (WebKit::DropTarget::DropTarget): |
| (WebKit::DropTarget::~DropTarget): |
| (WebKit::DropTarget::accept): |
| (WebKit::DropReadAsyncData::DropReadAsyncData): |
| (WebKit::DropTarget::loadData): |
| (WebKit::DropTarget::didLoadData): |
| (WebKit::DropTarget::enter): |
| (WebKit::DropTarget::update): |
| (WebKit::DropTarget::didPerformAction): |
| (WebKit::DropTarget::leave): |
| (WebKit::DropTarget::drop): |
| |
| 2020-05-19 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| REGRESSION (r258919): fast/events/ios/key-events-comprehensive/key-events-control tests are failing |
| https://bugs.webkit.org/show_bug.cgi?id=212124 |
| <rdar://problem/60893744> |
| |
| Reviewed by Tim Horton. |
| |
| After the changes in r258919, WKContentView's text input traits report that we're in a single line input, even |
| when there is no editable focused element. This prevents UIKit from allowing WebKit to handle the `CTRL + M` |
| key command, which is interpreted at the system level as inserting a line break in a multi-line editable area. |
| |
| It seems odd to consider ourselves in a single line input when there isn't even an editable element focused |
| element; for now, we can fix these failing tests by just going with the default value for the text input traits' |
| `setIsSingleLineDocument` property, but not explicitly setting it to either `NO` or `YES` when no element is |
| focused. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView textInputTraits]): |
| |
| 2020-05-19 Sam Weinig <weinig@apple.com> |
| |
| Remove almost always incorrect Color::getRGBA |
| https://bugs.webkit.org/show_bug.cgi?id=212059 |
| |
| Reviewed by Darin Adler and Simon Fraser. |
| |
| * UIProcess/API/wpe/WebKitColor.cpp: |
| (webkitColorFillFromWebCoreColor): |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::ViewGestureController::beginSwipeGesture): |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::getDocumentBackgroundColor): |
| Replace Color::getRGBA with Color::toSRGBAComponentsLossy() |
| |
| 2020-05-19 Simon Fraser <simon.fraser@apple.com> |
| |
| Use an ObjectIdentifier<> for DisplayLink observer IDs |
| https://bugs.webkit.org/show_bug.cgi?id=212112 |
| |
| Reviewed by Per Arne Vollan. |
| |
| Replace unsigned observerID with DisplayLinkObserverID, which is a typesafe ObjectIdentifier<>. |
| |
| Use PlatformDisplayID in more places. |
| |
| * Scripts/webkit/messages.py: |
| * Shared/DisplayLinkObserverID.h: Copied from Source/WebKit/UIProcess/mac/DisplayLink.h. |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::startDisplayLink): |
| (WebKit::WebProcessPool::stopDisplayLink): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebProcessProxy.messages.in: |
| * UIProcess/mac/DisplayLink.cpp: |
| (WebKit::DisplayLink::addObserver): |
| (WebKit::DisplayLink::removeObserver): |
| * UIProcess/mac/DisplayLink.h: |
| * UIProcess/mac/WebProcessProxyMac.mm: |
| (WebKit::WebProcessProxy::startDisplayLink): |
| (WebKit::WebProcessProxy::stopDisplayLink): |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebPage/mac/DrawingAreaMac.cpp: |
| (WebKit::DisplayRefreshMonitorMac::DisplayRefreshMonitorMac): |
| |
| 2020-05-19 Alex Christensen <achristensen@webkit.org> |
| |
| Add _WKDownloadDelegate callback including totalBytesWritten |
| https://bugs.webkit.org/show_bug.cgi?id=212110 |
| <rdar://problem/63358981> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Without this new callback, after resuming a download, a client has no way to tell whether the download was successfully |
| resumed by a server that has proper etag and range request support or whether the download began at the beginning again. |
| A client was guessing that the download did not restart, causing incorrect reported download sizes when the download did restart. |
| Luckily, the data on disk was not corrupted, just the UI. This allows us to fix the UI. |
| |
| Testing covered by expanding the API test for resuming downloads. |
| |
| * NetworkProcess/Downloads/Download.cpp: |
| (WebKit::Download::didReceiveData): |
| * NetworkProcess/Downloads/Download.h: |
| * NetworkProcess/NetworkDataTaskBlob.cpp: |
| (WebKit::NetworkDataTaskBlob::writeDownload): |
| * NetworkProcess/NetworkDataTaskBlob.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]): |
| * UIProcess/API/APIDownloadClient.h: |
| (API::DownloadClient::didReceiveData): |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetDownloadClient): |
| * UIProcess/API/Cocoa/_WKDownloadDelegate.h: |
| * UIProcess/Cocoa/DownloadClient.h: |
| * UIProcess/Cocoa/DownloadClient.mm: |
| (WebKit::DownloadClient::DownloadClient): |
| (WebKit::DownloadClient::didReceiveResponse): |
| (WebKit::DownloadClient::didReceiveData): |
| * UIProcess/Downloads/DownloadProxy.cpp: |
| (WebKit::DownloadProxy::didReceiveData): |
| * UIProcess/Downloads/DownloadProxy.h: |
| (WebKit::DownloadProxy::expectedContentLength const): Deleted. |
| (WebKit::DownloadProxy::setExpectedContentLength): Deleted. |
| (WebKit::DownloadProxy::bytesLoaded const): Deleted. |
| (WebKit::DownloadProxy::setBytesLoaded): Deleted. |
| * UIProcess/Downloads/DownloadProxy.messages.in: |
| |
| 2020-05-19 Kate Cheney <katherine_cheney@apple.com> |
| |
| ITP database should finalize all prepared statements before closing |
| https://bugs.webkit.org/show_bug.cgi?id=211929 |
| <rdar://problem/63246945> |
| |
| Reviewed by John Wilander. |
| |
| No new tests, behavior confirmed by existing tests. |
| |
| Convert all SQLite statement objects to be unique pointers to better |
| manage the lifetime of each statement object. Only initialize and |
| prepare an object when it is needed instead of preparing all objects |
| at once. Set each statement to null before closing the database |
| because ~SQLiteStatement() will finalize the statement. |
| |
| This patch removes all reset() commands now that we initialize |
| each statement using SQLiteStatementAutoResetScope. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::close): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::getScopedStatement const): |
| Function to initialize and prepare a statement. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationship): |
| This function is not used and can be deleted. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::checkForMissingTablesInSchema): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::isMigrationNecessary): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::isEmpty const): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::destroyStatements): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::insertObservedDomain): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::relationshipExists const): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::domainID const): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::merge): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::mergeStatistic): |
| (WebKit::CompletionHandler<void): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::prepareStatements): Deleted. |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| Updated all statement variables to end with "Statement" to follow the |
| established pattern. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore): |
| |
| 2020-05-19 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Fix message filter sandbox violation |
| https://bugs.webkit.org/show_bug.cgi?id=212100 |
| <rdar://problem/63407155> |
| |
| Reviewed by Andy Estes. |
| |
| A message needs to be added to the message filter in the WebContent sandbox on iOS. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-05-19 Kate Cheney <katherine_cheney@apple.com> |
| |
| Revert WebKitTestRunner to reset ITP to the memory store between all tests. |
| https://bugs.webkit.org/show_bug.cgi?id=212094 |
| <rdar://problem/63405806> |
| |
| Reviewed by Chris Dumez. |
| |
| Changing this in https://bugs.webkit.org/show_bug.cgi?id=211637 caused |
| test flakiness. |
| |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreStatisticsResetToConsistentState): |
| |
| 2020-05-19 Simon Fraser <simon.fraser@apple.com> |
| |
| Push a PlatformDisplayID to scrolling trees, and allow the scrolling thread to get displayDidRefresh notifications |
| https://bugs.webkit.org/show_bug.cgi?id=211034 |
| |
| Reviewed by Sam Weinig. |
| |
| Prep work for webkit.org/b210884. |
| |
| Have EventDispatcher call displayDidRefresh() on each scrolling tree it knows about. It calls this |
| on the EventDispatcher thread; the scrolling tree is responsible for bouncing that to the scrolling thread. |
| |
| * WebProcess/WebPage/EventDispatcher.cpp: |
| (WebKit::EventDispatcher::displayDidRefreshOnScrollingThread): |
| (WebKit::EventDispatcher::displayWasRefreshed): |
| * WebProcess/WebPage/EventDispatcher.h: |
| |
| 2020-05-19 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macOS] Drag and drop within a contenteditable area duplicates attachment-backed images |
| https://bugs.webkit.org/show_bug.cgi?id=212075 |
| <rdar://problem/62434146> |
| |
| Reviewed by Andy Estes. |
| |
| When the attachment API is enabled, starting a drag on an attachment-element-backed image within a |
| contenteditable area sometimes causes the ranged selection to collapse. This is because `WebViewImpl::startDrag` |
| has a separate codepath for starting a drag with attachment metadata that doesn't invoke `NSView`'s deprecated |
| `-dragImage:at:offset:event:pasteboar:source:slideBack:` method, but instead uses |
| `-beginDraggingSessionWithItems:event:source:`. While the former spins the runloop until the end of the drag |
| session, the latter does not and returns immediately after beginning the drag. As a result, |
| `WebPageProxy::didStartDrag()` is actually invoked after the drag ends when dragging non-attachment content, |
| whereas `WebPageProxy::didStartDrag()` is invoked immediately after beginning the drag when starting a drag in |
| an attachment or attachment-backed image element. |
| |
| This call to `didStartDrag()` is used to inform the web process that dragging has begun, and sets the |
| `m_isStartingDrag` flag on `WebPage` to false. As a result, `m_isStartingDrag` is true over the course of the |
| drag session when dragging non-attachment elements, but it's only true while starting the drag when dragging |
| attachments. This flag is consulted in `WebPage::mouseEvent()` to determine whether we should avoid handling the |
| incoming mouse event when beginning a drag. This prevents these incoming mouse events from triggering selection |
| changes while dragging (for more details, refer to <http://trac.webkit.org/r176687>). |
| |
| Now, if we combine this with the fact that mouse events can be queued up in the UI process (refer to |
| <https://trac.webkit.org/r230817>), it's possible to end up handling these queued mouse events in the web |
| process after `m_isStartingDrag` has been set back to false when dragging an attachment. This doesn't happen |
| when dragging non-attachment content, since we don't call `didStartDrag()` until the drag has already ended, so |
| any queued mouse events are sent to the web process and immediately dropped on the floor since |
| `m_isStartingDrag` is true. |
| |
| To address this, we make a couple of minor adjustments: |
| |
| 1. Invoke `didStartDrag()` right before calling into `-dragImage:at:offset:event:pasteboar:source:slideBack:`, |
| so that we don't wait until the drag ends to set `m_isStartingDrag` to false. This makes the behavior of |
| both codepaths for starting a drag (attachment and non-attachment) consistent, and also makes it consistent |
| with iOS. |
| |
| 2. In `didStartDrag()`, discard any queued mouse events to prevent them from being handled by the page (e.g. |
| causing the selection to change immediately after starting the drag). We already have identical logic to do |
| this when showing a context menu, so we can factor this out into a private `WebPageProxy` helper and call it |
| from both places. |
| |
| Test: WKAttachmentTestsMac.DraggingAttachmentBackedImagePreservesRangedSelection |
| |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::startDrag): |
| |
| Invoke `didStartDrag()` earlier when starting a drag using the deprecated method, such that we don't wait until |
| the drag ends to set `m_isStartingDrag` to false in the web process. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::discardQueuedMouseEvents): |
| |
| Refactor logic to discard all queued mouse events into a separate private helper. |
| |
| (WebKit::WebPageProxy::didStartDrag): |
| |
| Use the above helper to empty queued mouse events when starting a drag. |
| |
| (WebKit::WebPageProxy::showContextMenu): |
| * UIProcess/WebPageProxy.h: |
| |
| 2020-05-19 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] Add testing and logging for ApplePaySetup |
| https://bugs.webkit.org/show_bug.cgi?id=211972 |
| <rdar://problem/63291965> |
| |
| Reviewed by Alex Christensen. |
| |
| * Shared/ApplePay/PaymentSetupConfiguration.mm: |
| (WebKit::toPlatformConfiguration): |
| (WebKit::PaymentSetupConfiguration::PaymentSetupConfiguration): |
| * Shared/ApplePay/PaymentSetupConfigurationWebKit.h: |
| * WebProcess/ApplePay/WebPaymentCoordinator.cpp: |
| (WebKit::WebPaymentCoordinator::getSetupFeatures): |
| (WebKit::WebPaymentCoordinator::beginApplePaySetup): |
| * WebProcess/ApplePay/WebPaymentCoordinator.h: |
| |
| 2020-05-19 Brent Fulgham <bfulgham@apple.com> |
| |
| REGRESSION(r243149): createMediaElementSource not working |
| https://bugs.webkit.org/show_bug.cgi?id=211394 |
| <rdar://problem/62866132> |
| |
| Reviewed by Per Arne Vollan. |
| |
| I removed access to some Audio services in r243149, because we believed they were already |
| blocked by a global deny command. However, Sandbox rules override generic rules with |
| explicit rules, so the imported sandbox rules were not being blocked. |
| |
| This patch re-adds the rules needed to support these audio routines on iOS hardware. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::mediaRelatedMachServices): |
| |
| 2020-05-19 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Port Foreground process assertion to RunningBoard |
| https://bugs.webkit.org/show_bug.cgi?id=211795 |
| <rdar://problem/61831863> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Port Foreground process assertion to RunningBoard now that <rdar://problem/62614429> |
| has been fixed. |
| |
| * Configurations/WebKit.xcconfig: |
| * UIProcess/ProcessAssertion.h: |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (WebKit::runningBoardNameForAssertionType): |
| (WebKit::ProcessAssertion::ProcessAssertion): |
| (WebKit::ProcessAssertion::~ProcessAssertion): |
| (WebKit::ProcessAssertion::isValid const): |
| |
| 2020-05-19 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] Add testing and logging for ApplePaySetup |
| https://bugs.webkit.org/show_bug.cgi?id=211972 |
| <rdar://problem/63291965> |
| |
| Reviewed by Alex Christensen. |
| |
| * Shared/ApplePay/PaymentSetupConfiguration.mm: |
| (WebKit::toPlatformConfiguration): |
| (WebKit::PaymentSetupConfiguration::PaymentSetupConfiguration): |
| * Shared/ApplePay/PaymentSetupConfigurationWebKit.h: |
| * WebProcess/ApplePay/WebPaymentCoordinator.cpp: |
| (WebKit::WebPaymentCoordinator::getSetupFeatures): |
| (WebKit::WebPaymentCoordinator::beginApplePaySetup): |
| * WebProcess/ApplePay/WebPaymentCoordinator.h: |
| |
| 2020-05-19 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| [GTK] Add WEBKIT_EDITING_COMMAND_PASTE_AS_PLAIN_TEXT |
| https://bugs.webkit.org/show_bug.cgi?id=212038 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/gtk/WebKitEditingCommands.h: |
| * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: |
| * UIProcess/API/wpe/WebKitEditingCommands.h: |
| * UIProcess/API/wpe/docs/wpe-1.0-sections.txt: |
| |
| 2020-05-18 David Kilzer <ddkilzer@apple.com> |
| |
| Replace TextIndicatorOptions with OptionSet<TextIndicatorOption> |
| <https://webkit.org/b/212051> |
| <rdar://problem/63368556> |
| |
| Reviewed by Simon Fraser. |
| |
| Use OptionSet<TextIndicatorOption> everywhere |
| TextIndicatorOptions was previously used, plus: |
| - Make TextIndicatorOption an enum class. Remove |
| "TextIndicatorOption" prefix so TextIndicatorOptionBar becomes |
| TextIndicatorOption::Bar. |
| - Remove TextIndicatorOptionDefault because OptionSet<> |
| initializes to zero. |
| - Replace static variables (including two globals in WebCore) |
| with constexpr variables. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::ArgumentCoder<TextIndicatorData>::encode): |
| (IPC::ArgumentCoder<TextIndicatorData>::decode): |
| * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: |
| (WebKit::WebPage::dictionaryPopupInfoForRange): |
| * WebProcess/WebPage/FindController.cpp: |
| (WebKit::FindController::updateFindIndicator): |
| * WebProcess/WebPage/ios/FindControllerIOS.mm: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::insertDroppedImagePlaceholders): |
| (WebKit::WebPage::computeAndSendEditDragSnapshot): |
| (WebKit::linkIndicatorPositionInformation): |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::performImmediateActionHitTestAtLocation): |
| |
| 2020-05-18 Andy Estes <aestes@apple.com> |
| |
| http/tests/ssl/applepay/ApplePayInstallmentConfiguration.https.html fails in public SDK builds |
| https://bugs.webkit.org/show_bug.cgi?id=212000 |
| <rdar://problem/63323082> |
| |
| Reviewed by Youenn Fablet. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h: |
| * Shared/WebCoreArgumentCoders.h: |
| |
| 2020-05-18 Tim Horton <timothy_horton@apple.com> |
| |
| Rare crash under -[WKContentView resignFirstResponderForWebView] |
| https://bugs.webkit.org/show_bug.cgi?id=212050 |
| <rdar://problem/60187111> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView resignFirstResponderForWebView]): |
| Reorganize this block so that it always takes a strong reference /before/ |
| null checking and using the pointer. Also, add a _page null check. |
| This is a speculative fix for an unreproducible low-rate crash. |
| |
| In theory the existing time-of-check race here should not be a problem, |
| since WKWebView is supposed to be freed on the main thread, and this code |
| runs on the main thread, but we have ample evidence of WKWebView |
| being freed off the main thread in various clients. |
| |
| 2020-05-18 David Kilzer <ddkilzer@apple.com> |
| |
| Use default initializers in TextIndicatorData |
| <https://webkit.org/b/212039> |
| <rdar://problem/63355619> |
| |
| Reviewed by Alex Christensen. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::ArgumentCoder<TextIndicatorData>::encode): |
| (IPC::ArgumentCoder<TextIndicatorData>::decode): |
| - Switch from decodeEnum() and encodeEnum() to modern |
| equivalents that check for valid enum values. |
| |
| 2020-05-18 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Replace uses of +self with +class |
| https://bugs.webkit.org/show_bug.cgi?id=212041 |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/API/Cocoa/_WKFrameHandle.mm: |
| (-[_WKFrameHandle isEqual:]): |
| (-[_WKFrameHandle initWithCoder:]): |
| * Shared/Cocoa/APIObject.mm: |
| (API::Object::newObject): |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration _setAttachmentFileWrapperClass:]): |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): |
| * UIProcess/Cocoa/PageClientImplCocoa.mm: |
| (WebKit::PageClientImplCocoa::allocFileWrapperInstance const): |
| (WebKit::PageClientImplCocoa::serializableFileWrapperClasses const): |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (+[WKTransformView layerClass]): |
| (+[WKSimpleBackdropView layerClass]): Deleted. |
| (+[WKShapeView layerClass]): Deleted. |
| (-[WKRemoteView initWithFrame:contextID:]): Deleted. |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: |
| (WebKit::ScrollingTreeScrollingNodeDelegateIOS::~ScrollingTreeScrollingNodeDelegateIOS): |
| (WebKit::ScrollingTreeScrollingNodeDelegateIOS::resetScrollViewDelegate): |
| (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollView const): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView selectFormAccessoryPickerRow:]): |
| (-[WKContentView selectFormPopoverTitle]): |
| |
| 2020-05-18 Alex Christensen <achristensen@webkit.org> |
| |
| WebPageProxy::DidCommitLoadForFrame should use FrameLoadType instead of casting to/from uint32_t for IPC |
| https://bugs.webkit.org/show_bug.cgi?id=212028 |
| <rdar://problem/63343021> |
| |
| Reviewed by David Kilzer. |
| |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::didCommitLoadForFrame): |
| * UIProcess/ProvisionalPageProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::commitProvisionalPage): |
| (WebKit::WebPageProxy::didCommitLoadForFrame): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad): |
| |
| 2020-05-18 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Single selection <select> with <optgroups> shows multiple selected options |
| https://bugs.webkit.org/show_bug.cgi?id=199485 |
| <rdar://problem/52757531> |
| |
| Reviewed by Megan Gardner. |
| |
| Fixes a long-standing bug in WKMultipleSelectPicker. Prior to this patch, we rely on the delegate method |
| `-pickerView:row:column:checked:` to be called twice whenever an item is selected: one time for the item that is |
| no longer checked, and another for the newly checked item. This method is responsible for updating the cached |
| `FocusedElementInformation` that determines the data model for the select menu, with the expectation that the |
| unchecked item would be updated to have `isSelected = false;`, and the new checked item would have `isSelected` |
| `= true;`. |
| |
| However, `-pickerView:row:column:checked:` is only called for visible item cells. This means that if the user |
| checks an item, scrolls the select menu items down so that the checked item is offscreen, and then checks a |
| different item, we only get notified that the new item is checked, and as a result, fail to uncheck the previous |
| item. |
| |
| To address this, tweak our logic for handling a single select so that when an item is checked, we additionally |
| update the previously checked item to not be selected. Also, fix what seems to be a bug in the logic for |
| updating `_singleSelectionIndex`, which is currently updated even when the item is unchecked. It seems to work |
| out at the moment, because `-pickerView:row:column:checked:` seems to be called with `checked := YES` after the |
| previous item was unchecked (assuming that it was visible). |
| |
| Test: fast/forms/ios/no-stale-checked-items-in-select-picker.html |
| |
| * UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h: |
| * UIProcess/API/ios/WKWebViewTestingIOS.mm: |
| (-[WKWebView selectFormAccessoryHasCheckedItemAtRow:]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView selectFormAccessoryHasCheckedItemAtRow:]): |
| |
| Add plumbing for a new testing hook. |
| |
| * UIProcess/ios/forms/WKFormSelectControl.h: |
| * UIProcess/ios/forms/WKFormSelectControl.mm: |
| (-[WKFormSelectControl selectFormAccessoryHasCheckedItemAtRow:]): |
| * UIProcess/ios/forms/WKFormSelectPicker.mm: |
| (-[WKMultipleSelectPicker pickerView:viewForRow:forComponent:reusingView:]): |
| (-[WKMultipleSelectPicker pickerView:row:column:checked:]): |
| (-[WKMultipleSelectPicker selectRow:inComponent:extendingSelection:]): |
| |
| Also, fix an existing bug in this testing helper method that crashed the test runner due to calling an |
| unimplemented selector. Instead of trying to invoke `-pickerView:didSelectRow:inComponent:`, we should be using |
| `-pickerView:row:column:checked:` instead for multiple select pickers (which, somewhat confusingly, are still |
| used for single select elements that have `optgroup`s.) |
| |
| (-[WKMultipleSelectPicker selectFormAccessoryHasCheckedItemAtRow:]): |
| |
| 2020-05-18 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] Unexpected capitalization of next word after repositioning caret |
| https://bugs.webkit.org/show_bug.cgi?id=211969 |
| <rdar://problem/62605526> |
| |
| Reviewed by Alex Christensen. |
| |
| The changes in r242551 refactored synchronous autocorrection context request logic such that it uses |
| `waitForAndDispatchImmediately` instead of `sendSync`, in order to make it interruptible by unbounded sync IPC |
| sent from the web process. If the UI process receives sync IPC, it will immediately cancel the autocorrection |
| context request (returning an empty context), before proceeding to handle the incoming sync IPC. |
| |
| In a more recent version of iOS, other changes around spellchecking have caused the synchronous message |
| `WebPageProxy::checkTextOfParagraph` to be sent from the web process in such a way that it now frequently |
| coincides with the synchronous autocorrection context request being sent from the UI process. The result is that |
| we now frequently end up cancelling autocorrection requests early by responding with empty contexts. This |
| manifests in the keyboard sometimes losing information about its autocapitalization context and believing that |
| it is in an empty text field, which reverts to default autocorrection suggestions and autocapitalizes the |
| software keyboard. |
| |
| To fix this, instead of using the `InterruptWaitingIfSyncMessageArrives` option when waiting for the IPC |
| response, add and use a new flag that allows us to process an incoming sync IPC message if we're waiting for |
| the sync message response. We use this new IPC flag when waiting synchronously for HandleAutocorrectionContext. |
| |
| Test: editing/selection/ios/changing-selection-does-not-trigger-autocapitalization.html |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::processIncomingMessage): |
| |
| If the new IPC flag is set and the incoming message is synchronous, allow it to immediately dispatch the sync |
| message by enqueueing it and then waking up `m_waitForMessageCondition` so that it can process the message. |
| |
| * Platform/IPC/Connection.h: |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]): |
| |
| Use `DispatchIncomingSyncMessagesWhileWaiting` instead of `InterruptWaitingIfSyncMessageArrives`. |
| |
| 2020-05-18 Lauro Moura <lmoura@igalia.com> |
| |
| webkitpy: Update test data after r261776 |
| https://bugs.webkit.org/show_bug.cgi?id=212008 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by existing tests. |
| |
| * Scripts/test-legacyMessageReceiver.cpp: |
| * Scripts/test-legacyMessages.h: |
| (Messages::WebPage::DidCreateWebProcessConnection::DidCreateWebProcessConnection): |
| * Scripts/webkit/messages_unittest.py: |
| * Scripts/webkit/test-legacy.messages.in: |
| |
| 2020-05-18 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Update OptionsGTK.cmake and NEWS for 2.29.1 release |
| |
| * gtk/NEWS: Add release notes for 2.29.1. |
| |
| 2020-05-18 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Move iOS files from Source/WebKit/Sources.txt to Source/WebKit/SourcesCocoa.txt |
| https://bugs.webkit.org/show_bug.cgi?id=212014 |
| |
| Unreviewed. Move platform specific files to the platform sources file. |
| |
| * Sources.txt: |
| * SourcesCocoa.txt: |
| |
| 2020-05-18 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] "ASSERTION FAILED: !m_adoptionIsRequired" when double clicking on a word |
| https://bugs.webkit.org/show_bug.cgi?id=211957 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Remove WebSelectionData wrapper since we can just encode/decode WebCore::SelectionData. |
| |
| * Shared/WebCoreArgumentCoders.h: |
| * Shared/gtk/ArgumentCodersGtk.cpp: |
| (IPC::ArgumentCoder<SelectionData>::decode): Use modern decoder. |
| * Shared/gtk/ArgumentCodersGtk.h: |
| * Shared/gtk/WebSelectionData.cpp: Removed. |
| * Shared/gtk/WebSelectionData.h: Removed. |
| * SourcesGTK.txt: |
| * UIProcess/API/gtk/DragSource.h: |
| * UIProcess/API/gtk/DragSourceGtk3.cpp: |
| (WebKit::DragSource::DragSource): |
| (WebKit::DragSource::begin): |
| * UIProcess/API/gtk/DragSourceGtk4.cpp: |
| (WebKit::DragSource::begin): |
| * UIProcess/API/gtk/DropTarget.h: |
| * UIProcess/API/gtk/DropTargetGtk3.cpp: |
| (WebKit::DropTarget::accept): |
| (WebKit::DropTarget::enter): |
| (WebKit::DropTarget::update): |
| (WebKit::DropTarget::leaveTimerFired): |
| (WebKit::DropTarget::drop): |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::startDrag): |
| * UIProcess/API/gtk/PageClientImpl.h: |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseStartDrag): |
| * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: |
| * UIProcess/PageClient.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::performDragControllerAction): |
| (WebKit::WebPageProxy::startDrag): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/WebPasteboardProxy.h: |
| * UIProcess/WebPasteboardProxy.messages.in: |
| * UIProcess/gtk/Clipboard.h: |
| * UIProcess/gtk/ClipboardGtk3.cpp: |
| (WebKit::WriteAsyncData::WriteAsyncData): |
| (WebKit::Clipboard::write): |
| * UIProcess/gtk/ClipboardGtk4.cpp: |
| (WebKit::Clipboard::write): |
| * UIProcess/gtk/WebPasteboardProxyGtk.cpp: |
| (WebKit::WebPasteboardProxy::writeToClipboard): |
| (WebKit::WebPasteboardProxy::writeCustomData): |
| * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: |
| (WebKit::WebPlatformStrategies::writeToClipboard): |
| * WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp: |
| (WebKit::WebDragClient::startDrag): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::performDragControllerAction): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-05-18 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Add WebKitContextMenuItemType for paste as plaintext |
| https://bugs.webkit.org/show_bug.cgi?id=177638 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Add WEBKIT_CONTEXT_MENU_ACTION_PASTE_AS_PLAIN_TEXT. |
| |
| * Shared/API/glib/WebKitContextMenuActions.cpp: |
| (webkitContextMenuActionGetActionTag): |
| (webkitContextMenuActionGetForContextMenuItem): |
| (webkitContextMenuActionGetLabel): |
| * UIProcess/API/gtk/WebKitContextMenuActions.h: |
| * UIProcess/gtk/KeyBindingTranslator.cpp: |
| |
| 2020-05-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Move to new Pasteboard API |
| https://bugs.webkit.org/show_bug.cgi?id=177633 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Enable custom pasteboard data. |
| |
| * Shared/WebPreferencesDefaultValues.h: |
| * Shared/gtk/ArgumentCodersGtk.cpp: |
| (IPC::ArgumentCoder<SelectionData>::encode): |
| (IPC::ArgumentCoder<SelectionData>::decode): |
| * UIProcess/WebPasteboardProxy.cpp: |
| * UIProcess/gtk/ClipboardGtk3.cpp: |
| (WebKit::Clipboard::write): Add support for writing URI list and custom data. |
| * UIProcess/gtk/ClipboardGtk4.cpp: |
| (WebKit::Clipboard::write): Ditto. |
| * UIProcess/gtk/WebPasteboardProxyGtk.cpp: |
| (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite): |
| (WebKit::WebPasteboardProxy::writeCustomData): |
| |
| 2020-05-16 Andy Estes <aestes@apple.com> |
| |
| REGRESSION (r260717): installmentConfiguration member is no longer available on ApplePayPaymentRequest |
| https://bugs.webkit.org/show_bug.cgi?id=211911 |
| <rdar://problem/63236367> |
| |
| Reviewed by Tim Horton. |
| |
| * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: |
| (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::encode): |
| (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode): |
| (IPC::finishDecoding): Deleted. |
| (IPC::finishEncoding): Deleted. |
| |
| 2020-05-16 Yury Semikhatsky <yurys@chromium.org> |
| |
| [GTK] Do not leak pages created by window.open |
| https://bugs.webkit.org/show_bug.cgi?id=211970 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Previously webkitWebViewCreateNewPage created unbalanced refence to WebPageProxy and returned |
| it as a raw pointer. That raw pointer was later wrapped in a RefPtr in WebKitUIClient. |
| This change ensures that all refs are balanced by returnin RefPtr instead of |
| a raw pointer. |
| |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkitWebViewCreateNewPage): |
| * UIProcess/API/glib/WebKitWebViewPrivate.h: |
| |
| 2020-05-15 Alex Christensen <achristensen@webkit.org> |
| |
| Use enum serialization instead of casting to/from uint32_t |
| https://bugs.webkit.org/show_bug.cgi?id=211885 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * Scripts/webkit/messages.py: |
| * Shared/DocumentEditingContext.h: |
| * Shared/ios/GestureTypes.h: |
| * UIProcess/API/C/WKAPICast.h: |
| (WebKit::toWebGLLoadPolicy): |
| (WebKit::toAPI): |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::toWebCoreWebGLLoadPolicy): |
| (WebKit::NavigationState::NavigationClient::webGLLoadPolicy const): |
| (WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::webGLPolicyForURL): |
| (WebKit::WebPageProxy::resolveWebGLPolicyForURL): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView selectForWebView:]): |
| (toUIWKSelectionFlags): |
| (toSelectionFlags): |
| (toWKTextGranularity): |
| (toWKSelectionDirection): |
| (selectionChangedWithGesture): |
| (selectionChangedWithTouch): |
| (-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]): |
| (-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:withFlags:]): |
| (-[WKContentView changeSelectionWithTouchesFrom:to:withGesture:withState:]): |
| (-[WKContentView selectWordForReplacement]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::gestureCallback): |
| (WebKit::WebPageProxy::touchesCallback): |
| (WebKit::WebPageProxy::selectWithGesture): |
| (WebKit::WebPageProxy::updateSelectionWithTouches): |
| (WebKit::WebPageProxy::selectTextWithGranularityAtPoint): |
| (WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection): |
| (WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection): |
| (WebKit::WebPageProxy::selectWithTwoTouches): |
| (WebKit::WebPageProxy::extendSelection): |
| (WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset): |
| * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm: |
| (-[WKDOMRange rangeByExpandingToWordBoundaryByCharacters:inDirection:]): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::webGLPolicyForURL const): |
| (WebKit::WebFrameLoaderClient::resolveWebGLPolicyForURL const): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::webGLPolicyForURL): |
| (WebKit::WebPage::resolveWebGLPolicyForURL): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::getPlatformEditorState const): |
| (WebKit::WebPage::getSelectionContext): |
| (WebKit::WebPage::selectWithGesture): |
| (WebKit::rangeAtWordBoundaryForPosition): |
| (WebKit::WebPage::updateSelectionWithTouches): |
| (WebKit::WebPage::selectWithTwoTouches): |
| (WebKit::WebPage::extendSelection): |
| (WebKit::WebPage::selectWordBackward): |
| (WebKit::WebPage::moveSelectionByOffset): |
| (WebKit::WebPage::getRectsForGranularityWithSelectionOffset): |
| (WebKit::WebPage::selectPositionAtBoundaryWithDirection): |
| (WebKit::WebPage::moveSelectionAtBoundaryWithDirection): |
| (WebKit::WebPage::rangeForGranularityAtPoint): |
| (WebKit::WebPage::selectTextWithGranularityAtPoint): |
| (WebKit::WebPage::beginSelectionInDirection): |
| (WebKit::WebPage::updateSelectionWithExtentPointAndBoundary): |
| (WebKit::WebPage::requestDictationContext): |
| (WebKit::WebPage::applyAutocorrectionInternal): |
| (WebKit::WebPage::autocorrectionContext): |
| (WebKit::dataDetectorLinkPositionInformation): |
| (WebKit::moveByGranularityRespectingWordBoundary): |
| (WebKit::WebPage::requestDocumentEditingContext): |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::webGLPolicyForURL): |
| (WebKit::WebPage::resolveWebGLPolicyForURL): |
| |
| 2020-05-15 Alex Christensen <achristensen@webkit.org> |
| |
| [iOS Simulator] TestWebKitAPI._WKDownload.Resume is a flaky crash |
| https://bugs.webkit.org/show_bug.cgi?id=211786 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:]): |
| |
| 2020-05-15 Alex Christensen <achristensen@webkit.org> |
| |
| Regression (iOS 13.4, r249142): WKWebView.loading is never reset after a Back navigation in an iframe |
| https://bugs.webkit.org/show_bug.cgi?id=211449 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Always call clearPendingAPIRequest in WebPageProxy::didStartProvisionalLoadForFrameShared. |
| r249142 regressed this and caused more "loading appears to continue forever" bugs fixed in r249890. |
| This should fix both, by removing the problematic half of r249142. |
| |
| Covered by an API test. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared): |
| |
| 2020-05-15 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK3] Bring back usage of GtkMenu for context menus |
| https://bugs.webkit.org/show_bug.cgi?id=211557 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (contextMenuDismissed): Removed. |
| (webkitWebViewPopulateContextMenu): Use WebContextMenuProxyGtk::widgetDismissedSignal |
| and move the code from contextMenuDismissed() into an inline lambda. |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (activeContextMenuClosed): Removed. |
| (webkitWebViewBaseSetActiveContextMenuProxy): Use WebContextMenuProxyGtk::widgetDismissedSignal |
| and move the code from activeContextMenuClosed() into an inline lambda. |
| * UIProcess/gtk/WebContextMenuProxyGtk.cpp: Add helper functions to manipulate the actual |
| widget used for context menus depending on whether GTK3 or GTK4 is being used. The GTK3 |
| versions bring back bits of code removed in r260889. |
| (WebKit::createMenuWidget): Added. |
| (WebKit::popupMenuWidget): Added. |
| (WebKit::popdownMenuWidget): Added. |
| (WebKit::menuWidgetHasItems): Added. |
| (WebKit::bindModelToMenuWidget): Added. |
| (WebKit::WebContextMenuProxyGtk::populate): Use context menu widget helper functions. |
| (WebKit::WebContextMenuProxyGtk::showContextMenuWithItems): Ditto. |
| (WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): Ditto. Also handle the |
| signal triggered when the context menu is dismissed and arrange to call |
| webkitWebViewContextMenuDismissed() and webkitWebViewBaseContextMenuDismissed(). |
| (WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): Use helper functions. |
| * UIProcess/gtk/WebContextMenuProxyGtk.h: Add WebContextMenuProxyGtk::widgetDismissedSignal |
| constant. |
| |
| 2020-05-14 Kate Cheney <katherine_cheney@apple.com> |
| |
| Attribute non-network loads and loads with html strings as automatically app-bound |
| https://bugs.webkit.org/show_bug.cgi?id=211913 |
| <rdar://problem/63157801 |
| |
| Reviewed by Brent Fulgham. |
| |
| Move logic from WebsiteDataStoreCocoa to WebPageProxy to check for |
| special app-bound protocols and set m_limitsNavigationToAppBoundDomains |
| to force these WebViews into app-bound mode. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _isForcedIntoAppBoundMode:]): |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| Testing SPI to see whether m_limitsNavigationsToAppBoundDomains was |
| set. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::loadData): |
| Check for html string loads and force WebView into app-bound mode if needed. |
| No need to worry about setting this variable even if the app hasn't |
| opted in because setIsNavigatingToAppBoundDomainAndCheckIfPermitted |
| does an early return before checking this variable if |
| WKAppBoundDomains does not exist. |
| |
| (WebKit::shouldTreatURLProtocolAsAppBound): |
| Adds javascript protocols to this check. |
| |
| (WebKit::WebPageProxy::setIsNavigatingToAppBoundDomainAndCheckIfPermitted): |
| Check for special protocols here and force WebView into app-bound mode. |
| |
| (WebKit::WebPageProxy::isForcedIntoAppBoundModeTesting): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::beginAppBoundDomainCheck): |
| (WebKit::shouldTreatURLProtocolAsAppBound): Deleted. |
| |
| 2020-05-14 Timothy Hatcher <timothy@apple.com> |
| |
| Add baseURL version of _WKUserStyleSheet forWKWebView. |
| https://bugs.webkit.org/show_bug.cgi?id=211926 |
| rdar://problem/62074675 |
| |
| Reviewed by Devin Rousso. |
| |
| * UIProcess/API/Cocoa/_WKUserStyleSheet.h: |
| * UIProcess/API/Cocoa/_WKUserStyleSheet.mm: |
| (-[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:baseURL:level:userContentWorld:]): Added. |
| (-[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:level:userContentWorld:]): Clean up WebCore::UserStyleSheet initializer. |
| (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:]): Ditto. |
| (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:userContentWorld:]): Ditto. |
| (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]): Ditto. |
| (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:level:userContentWorld:]): Ditto. |
| |
| 2020-05-14 John Wilander <wilander@apple.com> |
| |
| Add quirk for cookie blocking latch mode aolmail.com redirecting to aol.com under aol.com |
| https://bugs.webkit.org/show_bug.cgi?id=211925 |
| <rdar://problem/61901041> |
| |
| Reviewed by Brent Fulgham. |
| |
| No new tests. Just a new quirk for a pair of domains added by request. |
| |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::needsFirstPartyCookieBlockingLatchModeQuirk const): |
| |
| 2020-05-14 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r261163) Causes crashes on builds without libwebrtc.dylib |
| https://bugs.webkit.org/show_bug.cgi?id=211924 |
| <rdar://problem/63206792> |
| |
| Reviewed by Jer Noble. |
| |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::NetworkProcessConnection): |
| |
| 2020-05-14 Timothy Hatcher <timothy@apple.com> |
| |
| Add sourceURL to _evaluateJavaScript: so the scripts appear in Web Inspector. |
| https://bugs.webkit.org/show_bug.cgi?id=211904 |
| rdar://problem/62074376 |
| |
| Reviewed by Devin Rousso. |
| |
| Added sourceURL version of _evaluateJavaScript: that passes the sourceURL to RunJavaScriptParameters. |
| If the sourceURL is invalid, generate a unique user script URL so the source code errors are not showing |
| up with the frame's document URL and bogus locations. |
| |
| * UIProcess/API/C/WKPage.cpp: |
| (WKPageRunJavaScriptInMainFrame): pass API::UserScript::generateUniqueURL() for the sourceURL. |
| * UIProcess/API/Cocoa/WKUserScript.mm: |
| (-[WKUserScript initWithSource:injectionTime:forMainFrameOnly:]): Clean up WebCore::UserScript initializer. |
| (-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:userContentWorld:]): Ditto. |
| (-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:userContentWorld:]): Ditto. |
| (-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:contentWorld:]): Ditto. |
| (-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:contentWorld:]): Ditto. |
| (-[WKUserScript _initWithSource:injectionTime:forMainFrameOnly:legacyWhitelist:legacyBlacklist:associatedURL:contentWorld:deferRunningUntilNotification:]): Ditto. |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _evaluateJavaScript:asAsyncFunction:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]): Renamed to add sourceURL. |
| (-[WKWebView _evaluateJavaScript:asAsyncFunction:withSourceURL:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]): Added sourceURL. |
| (-[WKWebView _evaluateJavaScript:withSourceURL:inFrame:inContentWorld:completionHandler:]): Added. Pass sourceURL through. |
| (-[WKWebView evaluateJavaScript:completionHandler:]): Call new method with sourceURL as nil. |
| (-[WKWebView evaluateJavaScript:inContentWorld:completionHandler:]): Ditto. |
| (-[WKWebView callAsyncJavaScript:arguments:inContentWorld:completionHandler:]): Ditto. |
| (-[WKWebView _callAsyncJavaScript:arguments:inFrame:inContentWorld:completionHandler:]): Ditto. |
| (-[WKWebView _evaluateJavaScript:inFrame:inContentWorld:completionHandler:]): Ditto. |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| |
| 2020-05-14 Chris Dumez <cdumez@apple.com> |
| |
| WebsiteDataStore functions should only send IPC to WebProcesses that are associated with its session |
| https://bugs.webkit.org/show_bug.cgi?id=211917 |
| |
| Reviewed by Alex Christensen. |
| |
| WebsiteDataStore functions should only send IPC to WebProcesses that are associated with its session. |
| setResourceLoadStatisticsEnabled() / clearResourceLoadStatisticsInWebProcesses() were talking to all |
| WebProcesses, even those associated with other sessions, which was wrong. |
| |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::clearResourceLoadStatistics): Deleted. |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled): |
| (WebKit::WebsiteDataStore::clearResourceLoadStatisticsInWebProcesses): |
| |
| 2020-05-14 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Remove dead dictation code |
| https://bugs.webkit.org/show_bug.cgi?id=211871 |
| |
| Reviewed by Wenson Hsieh. |
| |
| UIKit has long removed all callers that would call -nextUnperturbedDictationResultBoundaryFromPosition |
| and -previousUnperturbedDictationResultBoundaryFromPosition. So, remove the implementations. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView previousUnperturbedDictationResultBoundaryFromPosition:]): Deleted. |
| (-[WKContentView nextUnperturbedDictationResultBoundaryFromPosition:]): Deleted. |
| |
| 2020-05-14 Brady Eidson <beidson@apple.com> |
| |
| Crash in PDFPlugin::ensureDataBufferLength |
| <rdar://problem/62932155> and https://bugs.webkit.org/show_bug.cgi?id=211818 |
| |
| Reviewed by Tim Horton. |
| |
| There's some currently unreproducible case(s) where a range request finishes |
| while there's no m_data to append it to. |
| |
| It's fair hardening to handle that case. |
| |
| * WebProcess/Plugins/PDF/PDFPlugin.mm: |
| (WebKit::PDFPlugin::getResourceBytesAtPositionMainThread): Handle null m_data. |
| (WebKit::PDFPlugin::ensureDataBufferLength): Ditto. |
| |
| 2020-05-14 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Update message filtering rules in the WebContent process' sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=211188 |
| |
| Reviewed by Brent Fulgham. |
| |
| Based on telemetry and local testing, update the message filtering rules in the WebContent process' sandbox on iOS. |
| Messages that have not been observed being in use, should be denied. |
| |
| No new tests, covered by existing tests. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-05-14 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Non-unified build fixed, mid May 2020 edition |
| https://bugs.webkit.org/show_bug.cgi?id=211859 |
| |
| Unreviewed build fix. |
| |
| * UIProcess/gtk/Clipboard.cpp: Add missing includes for <mutex>, wtf/NeverDestroyed.h, and |
| wtf/text/WTFString.h. |
| * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: Add missing |
| SharedBufferDataReference.h include. |
| * WebProcess/WebCoreSupport/WebPlatformStrategies.h: Add missing namespace to usage of |
| the WebCore::SharedBuffer type. |
| |
| 2020-05-13 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC] Use templates to reduce duplicate code in IPC::Decoder and IPC::Encoder classes |
| <https://webkit.org/b/211861> |
| <rdar://problem/62360390> |
| |
| Reviewed by Alex Christensen. |
| |
| In broad strokes, this change fixes the following issues: |
| - Change `unsigned` type to `size_t` for `alignment` parameters |
| for consistency on 32-bit platforms. |
| - Templatize Encoder::encode(), Decoder::decode() and |
| Decoder::operator>>() methods to reduce duplicate code. This |
| deleted code in source files, added template methods to header |
| files, and required a few changes to existing templates in |
| header files to disambiguate std::is_arithmetic parameter |
| types. |
| - Use `typename E` for all template methods that handle enum |
| types. |
| - Use `typename T` for all other template method types. |
| - Move WARN_UNUSED_RETURN to same line as `bool` return type. |
| - Add FIXME comments to validate enum values. |
| |
| * Platform/IPC/Decoder.cpp: |
| (IPC::roundUpToAlignment): |
| (IPC::Decoder::alignBufferPosition): |
| (IPC::Decoder::bufferIsLargeEnoughToContain const): |
| (IPC::Decoder::decodeFixedLengthData): |
| (IPC::decodeValueFromBuffer): Delete. |
| (IPC::Decoder::getOptional): Delete. |
| (IPC::Decoder::operator>>): Delete. |
| (IPC::Decoder::decode): Delete. |
| * Platform/IPC/Decoder.h: |
| (IPC::Decoder::decode): |
| (IPC::Decoder::operator>>): |
| (IPC::Decoder::decodeEnum): |
| * Platform/IPC/Encoder.cpp: |
| (IPC::roundUpToAlignment): |
| (IPC::Encoder::grow): |
| (IPC::Encoder::encodeFixedLengthData): |
| (IPC::copyValueToBuffer): Delete. |
| (IPC::Encoder::encode): Delete. |
| * Platform/IPC/Encoder.h: |
| |
| 2020-05-13 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: `RuntimeEnabledFeatures` should also be enabled when remotely inspecting |
| https://bugs.webkit.org/show_bug.cgi?id=211874 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * WebProcess/Inspector/WebInspectorUI.h: |
| * WebProcess/Inspector/WebInspectorUI.cpp: |
| (WebKit::WebInspectorUI::enableFrontendFeatures): Added. |
| (WebKit::WebInspectorUI::WebInspectorUI): |
| * WebProcess/Inspector/RemoteWebInspectorUI.cpp: |
| (WebKit::RemoteWebInspectorUI::RemoteWebInspectorUI): |
| |
| 2020-05-13 Megan Gardner <megan_gardner@apple.com> |
| |
| Unreviewed Build Fix. |
| |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::setMouseEventPolicy): |
| * UIProcess/ios/forms/WKDateTimeInputControl.mm: |
| (-[WKDateTimePicker dealloc]): |
| (-[WKDateTimePicker controlBeginEditing]): |
| (-[WKDateTimePicker controlEndEditing]): |
| |
| 2020-05-13 Kate Cheney <katherine_cheney@apple.com> |
| |
| SHOULD NEVER BE REACHED in WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary |
| https://bugs.webkit.org/show_bug.cgi?id=211637 |
| <rdar://problem/63031185> |
| |
| Reviewed by John Wilander. |
| |
| No new tests, behavior confirmed by existing tests. |
| |
| Stop reseting ITP to use the memory store between tests. This results |
| in consecutive calls to NetworkSession::recreateResourceLoadStatisticStore |
| if two database tests occur in a row, which can set the m_resourceLoadStatistics |
| object before a previous call to WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore |
| is done. |
| |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreStatisticsResetToConsistentState): |
| |
| 2020-05-13 Megan Gardner <megan_gardner@apple.com> |
| |
| Change Date/Time popovers to contextMenus. |
| https://bugs.webkit.org/show_bug.cgi?id=211825 |
| <rdar://problem/63102524> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Update the Date/Time picker to use UIContextMenus instead of popovers. |
| Removed all the unneeded popover code. |
| Renamed WKFormInputControl to WKDateTimeInputControl because it was only used |
| for date and time controls, unneccessary abstraction. |
| We need to ensure the poisition information is up to date before presenting |
| the context menu, or the position it will be presented from can be stale. |
| |
| * SourcesCocoa.txt: |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _shouldShowAutomaticKeyboardUIIgnoringInputMode]): |
| (-[WKContentView requiresAccessoryView]): |
| (-[WKContentView _updateAccessory]): |
| (mayContainSelectableText): |
| (createInputPeripheralWithView): |
| (-[WKContentView inputLabelText]): |
| (-[WKContentView _removeContextMenuViewIfPossible]): |
| (-[WKContentView inputLabelTextForViewController:]): |
| (-[WKContentView formInputControl]): |
| (-[WKContentView setTimePickerValueToHour:minute:]): |
| (-[WKContentView timePickerValueHour]): |
| (-[WKContentView timePickerValueMinute]): |
| * UIProcess/ios/forms/WKDateTimeInputControl.h: Renamed from Source/WebKit/UIProcess/ios/forms/WKFormInputControl.h. |
| * UIProcess/ios/forms/WKDateTimeInputControl.mm: Renamed from Source/WebKit/UIProcess/ios/forms/WKFormInputControl.mm. |
| (-[WKDateTimeContextMenuViewController init]): |
| (-[WKDateTimeContextMenuViewController preferredContentSize]): |
| (-[WKDateTimePicker initWithView:datePickerMode:]): |
| (-[WKDateTimePicker contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): |
| (-[WKDateTimePicker _contextMenuInteraction:styleForMenuWithConfiguration:]): |
| (-[WKDateTimePicker contextMenuInteraction:configurationForMenuAtLocation:]): |
| (-[WKDateTimePicker contextMenuInteraction:willEndForConfiguration:animator:]): |
| (-[WKDateTimePicker removeContextMenuInteraction]): |
| (-[WKDateTimePicker ensureContextMenuInteraction]): |
| (-[WKDateTimePicker showDateTimePicker]): |
| (-[WKDateTimePicker reset:]): |
| (-[WKDateTimePicker calendarType]): |
| (-[WKDateTimePicker dealloc]): |
| (-[WKDateTimePicker setDateTimePickerToInitialValue]): |
| (-[WKDateTimePicker controlBeginEditing]): |
| (-[WKDateTimePicker viewController]): |
| (-[WKDateTimePicker controlEndEditing]): |
| (-[WKDateTimeInputControl initWithView:]): |
| (-[WKDateTimeInputControl setTimePickerHour:minute:]): |
| (-[WKDateTimeInputControl dateTimePickerCalendarType]): |
| (-[WKDateTimeInputControl timePickerValueHour]): |
| (-[WKDateTimeInputControl timePickerValueMinute]): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-05-13 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Unreviewed, fix tvOS and watchOS builds after r261638 |
| |
| `-[UIPasteboard itemProviders]` is not present on watchOS and tvOS. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _writePromisedAttachmentToPasteboard:]): |
| |
| 2020-05-13 Timothy Horton <timothy_horton@apple.com> |
| |
| Build fix. |
| |
| * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: |
| |
| 2020-05-13 Jer Noble <jer.noble@apple.com> |
| |
| Replace isNullFunctionPointer with real weak-linking support |
| https://bugs.webkit.org/show_bug.cgi?id=211751 |
| |
| Reviewed by Sam Weinig. |
| |
| Use the new WTF_WEAK_LINK_FORCE_IMPORT macro. |
| |
| * Platform/classifier/cocoa/ResourceLoadStatisticsClassifierCocoa.cpp: |
| (WebKit::ResourceLoadStatisticsClassifierCocoa::canUseCorePrediction): |
| |
| 2020-05-13 Tim Horton <timothy_horton@apple.com> |
| |
| Add SPI for reverting to touch events for iPad trackpad interactions |
| https://bugs.webkit.org/show_bug.cgi?id=211824 |
| <rdar://problem/61363084> |
| |
| Reviewed by Megan Gardner. |
| |
| New Test: IOSMouseSupport.WebsiteMouseEventPolicies |
| |
| Plumb a "mouse event policy" WKWebpagePreference, which has two values: |
| |
| - Default, which means that WebKit decides whether or not indirect |
| pointing devices send mouse or touch events. |
| |
| - SynthesizeTouchEvents, which ensures that WebKit will always send |
| touch events from indirect pointing devices. |
| This value is only available on platforms that implement touch events. |
| |
| We use the WKWebpagePreferences mechanism in order to make it easy to |
| implement it as a "per-site" quirk, but unlike most WKWebpagePreferences, |
| it turns around and changes UI process state (the enablement of the |
| WKMouseGestureRecgonizer). |
| |
| * Scripts/webkit/messages.py: |
| * Shared/WebsitePoliciesData.cpp: |
| (WebKit::WebsitePoliciesData::encode const): |
| (WebKit::WebsitePoliciesData::decode): |
| (WebKit::WebsitePoliciesData::applyToDocumentLoader): |
| * Shared/WebsitePoliciesData.h: |
| * UIProcess/API/APIWebsitePolicies.cpp: |
| (API::WebsitePolicies::copy const): |
| (API::WebsitePolicies::data): |
| * UIProcess/API/APIWebsitePolicies.h: |
| * UIProcess/API/Cocoa/WKWebpagePreferences.mm: |
| (WebKit::mouseEventPolicy): |
| (WebKit::coreMouseEventPolicy): |
| (-[WKWebpagePreferences _setMouseEventPolicy:]): |
| (-[WKWebpagePreferences _mouseEventPolicy]): |
| * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: |
| * UIProcess/PageClient.h: |
| (WebKit::PageClient::setMouseEventPolicy): |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::didCommitLoadForFrame): |
| * UIProcess/ProvisionalPageProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::commitProvisionalPage): |
| (WebKit::WebPageProxy::didCommitLoadForFrame): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::setMouseEventPolicy): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView shouldUseMouseGestureRecognizer]): |
| (-[WKContentView setUpMouseGestureRecognizer]): |
| (-[WKContentView _configureMouseGestureRecognizer]): |
| (-[WKContentView _setMouseEventPolicy:]): |
| * UIProcess/ios/WKMouseGestureRecognizer.mm: |
| (-[WKMouseGestureRecognizer setEnabled:]): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad): |
| |
| 2020-05-13 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] "Copy" context menu action for attachment element does not work in Mail |
| https://bugs.webkit.org/show_bug.cgi?id=211817 |
| <rdar://problem/58043110> |
| |
| Reviewed by Tim Horton. |
| |
| Implements support for copying an attachment element, via context menu actions. To achieve this, we first |
| refactor code in WebCore that is currently responsible for converting an attachment element into a |
| PromisedAttachmentInfo, which provides a handle to an UI-process-side API attachment object. We then use this |
| helper in WebKit to send PromisedAttachmentInfo back to the UI process when handling the copy action from the |
| context menu on iOS. |
| |
| On iOS, we then take this promised attachment info in the UI process, map it to an API::Attachment object, and |
| use the file handle to create and write an NSItemProvider to the general pasteboard. (In the future, similar |
| logic could be implemented on macOS as well to handle copying attachment elements by implementing a version of |
| writePromisedAttachmentToPasteboard in PageClientImplMac. Currently, we fall back to treating this case as if |
| we're copying a text selection containing a single attachment element). |
| |
| * UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h: |
| |
| Add a new helper function to simulate an element action (_WKElementActionType) for an element at the given |
| location. This is used by the new API test. |
| |
| * UIProcess/API/ios/WKWebViewTestingIOS.mm: |
| (-[WKWebView _simulateElementAction:atLocation:]): |
| * UIProcess/PageClient.h: |
| (WebKit::PageClient::writePromisedAttachmentToPasteboard): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::writePromisedAttachmentToPasteboard): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| |
| Add an IPC message for the UI process to receive a PromisedAttachmentInfo, and copy it to the system pasteboard |
| if it maps to an actual API::Attachment. For now, we only support copying data if the attachment is backed by |
| a file wrapper in the UI process (as opposed to blob data written by the web process). |
| |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::writePromisedAttachmentToPasteboard): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (createItemProvider): |
| |
| Create a helper function to convert PromisedAttachmentInfo into an NSItemProvider. This is similar to |
| `-_prepareToDragPromisedAttachment:`, but with a couple differences: (1) we only create an NSItemProvider |
| instead of going through `WebItemProviderRegistrationInfoList`; (2) since there's no opportunity to clean up |
| temporary after pasting, serialize the attachment data using `-serializedRepresentation`, and provide the |
| attachment data instead of a file URL. |
| |
| Ideally, we would offer the data directly to the pasteboard so that even if Mail terminates, the contents of the |
| pasteboard can still be provided when pasting; however, it doesn't seem like we can do this while being able to |
| offer a suggested name for the item we're writing. Some other apps work around this limitation by writing the |
| file name as plain text on the pasteboard, but this doesn't work then attempting to copy a plain text file that |
| has a file name. |
| |
| (-[WKContentView _writePromisedAttachmentToPasteboard:]): |
| (-[WKContentView _simulateElementAction:atLocation:]): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::performActionOnElement): |
| |
| 2020-05-13 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Update message filtering rules in the WebContent process' sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=211188 |
| |
| Reviewed by Brent Fulgham. |
| |
| Based on telemetry and local testing, update the message filtering rules in the WebContent process' sandbox on iOS. |
| Messages that have not been observed being in use, should be denied. |
| |
| No new tests, covered by existing tests. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-05-13 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] In CFPrefs direct mode, the WebContent sandbox needs to allow access to plist files |
| https://bugs.webkit.org/show_bug.cgi?id=211782 |
| |
| Reviewed by Brent Fulgham. |
| |
| Since preference files will be read directly in CFPrefs direct mode, the WebContent sandbox on iOS needs to allow reading these files. |
| |
| No new tests. There is API test coverage for this in PreferenceChanges.mm, but these tests are only run on simulator, not device. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-05-13 Peng Liu <peng.liu6@apple.com> |
| |
| Add the feature flags plist file back |
| https://bugs.webkit.org/show_bug.cgi?id=211816 |
| |
| Reviewed by Jer Noble. |
| |
| Add the WebKit.plist file to the WebKit project and use it instead of the one from the WebKitAdditions. |
| |
| * FeatureFlags/WebKit.plist: Added. |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-05-13 Youenn Fablet <youenn@apple.com> |
| |
| Allow WebAudioBufferList to dynamically change its number of frames |
| https://bugs.webkit.org/show_bug.cgi?id=211720 |
| |
| Reviewed by Eric Carlson. |
| |
| * WebProcess/cocoa/RemoteCaptureSampleManager.cpp: |
| (WebKit::RemoteCaptureSampleManager::RemoteAudio::setStorage): |
| (WebKit::RemoteCaptureSampleManager::RemoteAudio::audioSamplesAvailable): |
| * WebProcess/cocoa/RemoteCaptureSampleManager.h: |
| |
| 2020-05-13 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed compile fix after r261584. |
| |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| |
| 2020-05-13 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r261254): Broke Apple Pay on macOS |
| https://bugs.webkit.org/show_bug.cgi?id=211826 |
| <rdar://problem/63161750> |
| |
| Reviewed by Alex Christensen. |
| |
| r261254 dropped the code needed to add the WebPaymentCoordinatorProxy as an IPC message receiver. |
| This patch re-introduces the code in order to address the regression. |
| |
| No new tests, tested manually on https://applepaydemo.apple.com. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAddMessageReceiver): |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorRemoveMessageReceiver): |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.h: |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): |
| (WebKit::WebPaymentCoordinatorProxy::~WebPaymentCoordinatorProxy): |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::paymentCoordinatorAddMessageReceiver): |
| (WebKit::WebPageProxy::paymentCoordinatorRemoveMessageReceiver): |
| * UIProcess/WebPageProxy.h: |
| |
| 2020-05-13 Zan Dobersek <zdobersek@igalia.com> |
| |
| REGRESSION(r260571): RequestedScrollPosition doesn't have its scroll change applied to layers anymore |
| https://bugs.webkit.org/show_bug.cgi?id=211374 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Use WebPage::finalizeRenderingUpdate() to perform the compositing state flush |
| and the scrolling tree layer positioning, instead of doing things half-baked |
| by manually invoking the FrameView method. |
| |
| Additional WebPage calls (updateRendering(), flushPendingEditorStateUpdate()) |
| are moved into CompositingCoordinator::flushPendingLayerChanges() from the |
| LayerTreeHost::layerFlushTimerFired() method for consistency. The additional |
| CompositingCoordinator::syncDisplayState() method call is removed -- this call |
| triggered any necessary layout, but that's already done through WebPage::updateRendering(). |
| |
| CompositingCoordinator::flushPendingLayerChanges() doesn't rely on the |
| FrameView flush return value since that's not available anymore -- instead, |
| true is returned always. |
| |
| * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp: |
| (WebKit::CompositingCoordinator::flushPendingLayerChanges): |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: |
| (WebKit::LayerTreeHost::layerFlushTimerFired): |
| |
| 2020-05-13 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed compile fix after r261584. |
| |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| |
| 2020-05-13 Tomoki Imai <Tomoki.Imai@sony.com> |
| |
| Selected element on Web Inspector is not highlighted with CPU Rendering. |
| https://bugs.webkit.org/show_bug.cgi?id=195933 |
| |
| Reviewed by Devin Rousso. |
| |
| Since WebInspectorClient::drawHighlight was not called while non accelerated compositing mode, we cannot see element highlight on web inspector. |
| This patch adds WebInspectorClient::drawHighlight call in WebPage::drawRect, which draws webpage image while non accelerated compositing mode, to overlay the highlight. |
| WebInspectorClient::highlight and WebInspectorClient::hideHighlight currently requests re-paint whole web page, but it should be able to optimize by only updating dirty rects in the future. |
| |
| * WebProcess/Inspector/WebInspectorClient.cpp: |
| (WebKit::WebInspectorClient::highlight): If it's not acceleratedCompositingEnabled, then just request repaint. |
| (WebKit::WebInspectorClient::hideHighlight): If it's not acceleratedCompositingEnabled, then just request repaint. |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::drawRect): Draw inspector overlay here if it's not accelerated compositing mode. |
| |
| 2020-05-13 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix GTK debug build after r261554 |
| |
| Remove writeToClipboard that receives a const SelectionData& that is no longer used. |
| |
| * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: |
| * WebProcess/WebCoreSupport/WebPlatformStrategies.h: |
| |
| 2020-05-12 Peng Liu <peng.liu6@apple.com> |
| |
| Add the feature flag plist file parser |
| https://bugs.webkit.org/show_bug.cgi?id=211457 |
| |
| Reviewed by Tim Horton. |
| |
| WebKit needs to parse the feature flags plist by itself in some cases. |
| |
| * Shared/Cocoa/WebPreferencesDefaultValuesCocoa.mm: Added. |
| (WebKit::featureFlagEnabled): |
| * Shared/WebPreferencesDefaultValues.cpp: |
| (WebKit::defaultAsyncFrameAndOverflowScrollingEnabled): |
| (WebKit::defaultUseGPUProcessForMedia): |
| (WebKit::defaultRenderCanvasInGPUProcessEnabled): |
| (WebKit::defaultCaptureAudioInGPUProcessEnabled): |
| (WebKit::defaultCaptureVideoInGPUProcessEnabled): |
| (WebKit::defaultWebRTCCodecsInGPUProcess): |
| (WebKit::defaultWebGL2Enabled): |
| (WebKit::defaultWebGPUEnabled): |
| (WebKit::defaultInAppBrowserPrivacy): |
| (WebKit::defaultIncrementalPDFEnabled): |
| (WebKit::defaultWebXREnabled): |
| * Shared/WebPreferencesDefaultValues.h: |
| * SourcesCocoa.txt: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-05-12 Alex Christensen <achristensen@webkit.org> |
| |
| Give some NetworkLoadMetrics to WebCoreNSURLSession's delegate |
| https://bugs.webkit.org/show_bug.cgi?id=211759 |
| <rdar://problem/62909440> |
| |
| Reviewed by Jer Noble. |
| |
| This also reduces duplicate lookups in RemoteMediaResourceManager |
| |
| * GPUProcess/media/RemoteMediaResource.cpp: |
| (WebKit::RemoteMediaResource::loadFinished): |
| * GPUProcess/media/RemoteMediaResource.h: |
| * GPUProcess/media/RemoteMediaResourceManager.cpp: |
| (WebKit::RemoteMediaResourceManager::responseReceived): |
| (WebKit::RemoteMediaResourceManager::redirectReceived): |
| (WebKit::RemoteMediaResourceManager::dataSent): |
| (WebKit::RemoteMediaResourceManager::dataReceived): |
| (WebKit::RemoteMediaResourceManager::accessControlCheckFailed): |
| (WebKit::RemoteMediaResourceManager::loadFailed): |
| (WebKit::RemoteMediaResourceManager::loadFinished): |
| * GPUProcess/media/RemoteMediaResourceManager.h: |
| * GPUProcess/media/RemoteMediaResourceManager.messages.in: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]): |
| * WebProcess/GPU/media/RemoteMediaResourceProxy.cpp: |
| (WebKit::RemoteMediaResourceProxy::loadFinished): |
| * WebProcess/GPU/media/RemoteMediaResourceProxy.h: |
| |
| 2020-05-12 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Don't assume extensions always exist |
| https://bugs.webkit.org/show_bug.cgi?id=211760 |
| <rdar://problem/61217642> |
| |
| Reviewed by Brent Fulgham. |
| |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| (WebKit::WebCore::processGoogleLegacyAppIdSupportExtension): |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp: |
| (WebKit::CtapAuthenticator::processGoogleLegacyAppIdSupportExtension): |
| |
| 2020-05-12 Chris Dumez <cdumez@apple.com> |
| |
| [WK2] Neuter WKFrameIsFrameSet() / WKPageGetFrameSetLargestFrame() C API |
| https://bugs.webkit.org/show_bug.cgi?id=211808 |
| |
| Reviewed by Darin Adler. |
| |
| Neuter WKFrameIsFrameSet() / WKPageGetFrameSetLargestFrame() C API. This is only SPI and is only used for slightly |
| different printing behavior in Safari. Framesets are no longer supported in HTML5 and are now super rare. Support |
| for this C API adds quite a bit of code complexity and crashes such as <rdar://problem/60322282>, it just does not |
| seem worth it anymore. |
| |
| * UIProcess/API/C/WKFrame.cpp: |
| (WKFrameIsFrameSet): |
| * UIProcess/API/C/WKPage.cpp: |
| (WKPageGetFrameSetLargestFrame): |
| * UIProcess/WebFrameProxy.cpp: |
| (WebKit::WebFrameProxy::didCommitLoad): |
| * UIProcess/WebFrameProxy.h: |
| (WebKit::WebFrameProxy::setIsFrameSet): Deleted. |
| (WebKit::WebFrameProxy::isFrameSet const): Deleted. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::resetState): |
| (WebKit::WebPageProxy::frameDidBecomeFrameSet): Deleted. |
| (WebKit::WebPageProxy::frameSetLargestFrameChanged): Deleted. |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::focusedFrame const): |
| (WebKit::WebPageProxy::frameSetLargestFrame const): Deleted. |
| * UIProcess/WebPageProxy.messages.in: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::contentsSizeChanged const): |
| (WebKit::findLargestFrameInFrameSet): Deleted. |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::dispatchDidBecomeFrameset): Deleted. |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| |
| 2020-05-12 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Rebuild MobileGestalt cache if needed |
| https://bugs.webkit.org/show_bug.cgi?id=211739 |
| |
| Reviewed by Darin Adler. |
| |
| This patch was written by Geoff Garen and myself. Rebuild the MobileGestalt cache in the UI process if the |
| MobileGestalt cache is stale. This should be done before starting a new WebContent process. If the cache |
| is not rebuilt, every MobileGestalt query in the WebContent process will fail, since access to the daemon |
| is denied. |
| |
| No new tests, since testing this is not trivial. It would involve deleting the MobileGestalt cache and |
| making sure it is rebuilt afterwards. This could be an API test, but API tests are not supported on iOS |
| devices. |
| |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| |
| 2020-05-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Rework drag and drop handling in preparation for GTK4 |
| https://bugs.webkit.org/show_bug.cgi?id=211723 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Split DragAndDropHelper class into DragSource and DropTarget classes. This separates the source and destination |
| parts making it easier to follow. This patch also adds PageClient::didPerformDragControllerAction() to notify |
| back the view when an operation is done to update the result. |
| |
| * SourcesGTK.txt: |
| * UIProcess/API/gtk/DragSource.h: Added. |
| * UIProcess/API/gtk/DragSourceGtk3.cpp: Added. |
| (WebKit::DragSource::DragSource): |
| (WebKit::DragSource::~DragSource): |
| (WebKit::DragSource::begin): |
| * UIProcess/API/gtk/DropTarget.h: Added. |
| * UIProcess/API/gtk/DropTargetGtk3.cpp: Added. |
| (WebKit::DropTarget::DropTarget): |
| (WebKit::DropTarget::~DropTarget): |
| (WebKit::DropTarget::accept): |
| (WebKit::DropTarget::enter): |
| (WebKit::DropTarget::update): |
| (WebKit::DropTarget::dataReceived): |
| (WebKit::DropTarget::didPerformAction): |
| (WebKit::DropTarget::leaveTimerFired): |
| (WebKit::DropTarget::leave): |
| (WebKit::DropTarget::drop): |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::startDrag): |
| (WebKit::PageClientImpl::didPerformDragControllerAction): |
| * UIProcess/API/gtk/PageClientImpl.h: |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseConstructed): |
| (webkit_web_view_base_class_init): |
| (webkitWebViewBaseStartDrag): |
| (webkitWebViewBaseDidPerformDragControllerAction): |
| * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: |
| * UIProcess/PageClient.h: |
| (WebKit::PageClient::didPerformDragControllerAction): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::didPerformDragControllerAction): |
| * UIProcess/gtk/DragAndDropHandler.cpp: Removed. |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::performDragControllerAction): |
| * WebProcess/WebPage/gtk/WebPageGtk.cpp: |
| |
| 2020-05-12 Jacob Uphoff <jacob_uphoff@apple.com> |
| |
| Unreviewed, reverting r261557. |
| |
| This commit caused testing to exit early due to too many |
| crashes on macOS Catalina Asan |
| |
| Reverted changeset: |
| |
| "Allow WebAudioBufferList to dynamically change its number of |
| frames" |
| https://bugs.webkit.org/show_bug.cgi?id=211720 |
| https://trac.webkit.org/changeset/261557 |
| |
| 2020-05-12 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed crash fix. |
| |
| Use correct global name for icon service in RELEASE_ASSERT. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::didChooseFilesForOpenPanelWithDisplayStringAndIcon): |
| |
| 2020-05-12 Youenn Fablet <youenn@apple.com> |
| |
| Allow WebAudioBufferList to dynamically change its number of frames |
| https://bugs.webkit.org/show_bug.cgi?id=211720 |
| |
| Reviewed by Eric Carlson. |
| |
| * WebProcess/cocoa/RemoteCaptureSampleManager.cpp: |
| (WebKit::RemoteCaptureSampleManager::RemoteAudio::setStorage): |
| (WebKit::RemoteCaptureSampleManager::RemoteAudio::audioSamplesAvailable): |
| * WebProcess/cocoa/RemoteCaptureSampleManager.h: |
| |
| 2020-05-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Add support for clipboard operations |
| https://bugs.webkit.org/show_bug.cgi?id=211561 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| * UIProcess/gtk/Clipboard.h: |
| * UIProcess/gtk/ClipboardGtk4.cpp: |
| (WebKit::Clipboard::Clipboard): |
| (WebKit::Clipboard::type const): |
| (WebKit::Clipboard::formats): |
| (WebKit::ReadTextAsyncData::ReadTextAsyncData): |
| (WebKit::Clipboard::readText): |
| (WebKit::ReadFilePathsAsyncData::ReadFilePathsAsyncData): |
| (WebKit::Clipboard::readFilePaths): |
| (WebKit::ReadBufferAsyncData::ReadBufferAsyncData): |
| (WebKit::Clipboard::readBuffer): |
| (WebKit::Clipboard::write): |
| (WebKit::Clipboard::clear): |
| |
| 2020-05-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Rework clipboard handling in preparation for GTK4 |
| https://bugs.webkit.org/show_bug.cgi?id=211511 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Use async APIs to avoid blocking the UI process during the communication with the clipboard. In GTK4 only async |
| APIs are available. Add Clipboard class to handle the communication with the clipboard with the GTK |
| implementation in ClipboardGtk3 and ClipboardGtk4 files. |
| |
| * Shared/gtk/WebSelectionData.cpp: |
| (WebKit::WebSelectionData::WebSelectionData): Add constructor receivnig an rvalue reference. |
| * Shared/gtk/WebSelectionData.h: |
| * SourcesGTK.txt: |
| * UIProcess/WebPasteboardProxy.h: |
| * UIProcess/WebPasteboardProxy.messages.in: |
| * UIProcess/gtk/Clipboard.cpp: Added. |
| (WebKit::clipboard): |
| (WebKit::primary): |
| (WebKit::Clipboard::get): |
| * UIProcess/gtk/Clipboard.h: Added. |
| * UIProcess/gtk/ClipboardGtk3.cpp: Added. |
| (WebKit::Clipboard::Clipboard): |
| (WebKit::isPrimaryClipboard): |
| (WebKit::Clipboard::type const): |
| (WebKit::FormatsAsyncData::FormatsAsyncData): |
| (WebKit::Clipboard::formats): |
| (WebKit::ReadTextAsyncData::ReadTextAsyncData): |
| (WebKit::Clipboard::readText): |
| (WebKit::ReadFilePathsAsyncData::ReadFilePathsAsyncData): |
| (WebKit::Clipboard::readFilePaths): |
| (WebKit::ReadBufferAsyncData::ReadBufferAsyncData): |
| (WebKit::Clipboard::readBuffer): |
| (WebKit::Clipboard::write): |
| (WebKit::Clipboard::clear): |
| * UIProcess/gtk/ClipboardGtk4.cpp: Added. |
| (WebKit::Clipboard::Clipboard): |
| (WebKit::Clipboard::type const): |
| (WebKit::Clipboard::formats): |
| (WebKit::Clipboard::readText): |
| (WebKit::Clipboard::readFilePaths): |
| (WebKit::Clipboard::readBuffer): |
| (WebKit::Clipboard::write): |
| (WebKit::Clipboard::clear): |
| * UIProcess/gtk/WebPasteboardProxyGtk.cpp: |
| (WebKit::WebPasteboardProxy::getTypes): |
| (WebKit::WebPasteboardProxy::readText): |
| (WebKit::WebPasteboardProxy::readFilePaths): |
| (WebKit::WebPasteboardProxy::readBuffer): |
| (WebKit::WebPasteboardProxy::writeToClipboard): |
| (WebKit::WebPasteboardProxy::clearClipboard): |
| * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: |
| (WebKit::WebPlatformStrategies::types): |
| (WebKit::WebPlatformStrategies::readTextFromClipboard): |
| (WebKit::WebPlatformStrategies::readFilePathsFromClipboard): |
| (WebKit::WebPlatformStrategies::readBufferFromClipboard): |
| (WebKit::WebPlatformStrategies::writeToClipboard): |
| (WebKit::WebPlatformStrategies::clearClipboard): |
| * WebProcess/WebCoreSupport/WebPlatformStrategies.h: |
| |
| 2020-05-12 Youenn Fablet <youenn@apple.com> |
| |
| Introduce a RealtimeMediaSource video sample observer |
| https://bugs.webkit.org/show_bug.cgi?id=211718 |
| |
| Reviewed by Eric Carlson. |
| |
| * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: |
| (WebKit::UserMediaCaptureManagerProxy::SourceProxy::SourceProxy): |
| (WebKit::UserMediaCaptureManagerProxy::SourceProxy::~SourceProxy): |
| * WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp: |
| (WebKit::MediaRecorderPrivate::MediaRecorderPrivate): |
| (WebKit::MediaRecorderPrivate::~MediaRecorderPrivate): |
| (WebKit::MediaRecorderPrivate::videoSampleAvailable): |
| (WebKit::MediaRecorderPrivate::stopRecording): |
| (WebKit::MediaRecorderPrivate::sampleBufferUpdated): Deleted. |
| * WebProcess/GPU/webrtc/MediaRecorderPrivate.h: |
| |
| 2020-05-12 Mark Lam <mark.lam@apple.com> |
| |
| Wasm::enableFastMemory() was called too late. |
| https://bugs.webkit.org/show_bug.cgi?id=211773 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| Previously, we were calling Wasm::enableFastMemory() in WebProcess::initializeWebProcess(). |
| By then, it is too late because the JSC::Config and WTF::Config have already been |
| frozen. There is nothing special about Wasm::enableFastMemory() that it needs to |
| be called this late. This patch moves it into JSC::initializeThreading() where |
| it belongs. |
| |
| This change also make the initialization of Wasm fast memory consistent with how |
| we have always done it for the jsc shell i.e. it is initialized at the end of |
| JSC::initializeThreading(). |
| |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::initializeWebProcess): |
| |
| 2020-05-11 Darin Adler <darin@apple.com> |
| |
| Fix problems caught by replacing WTF::Optional with std::optional |
| https://bugs.webkit.org/show_bug.cgi?id=211703 |
| |
| Reviewed by Chris Dumez. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::plainTextForContext): Clarified ambiguous overload resolution by writing |
| the conversion from a live range to a SimpleRange out explicitly. Also fixed a typo |
| where there was a missing "&" in a "const&" argument. |
| |
| 2020-05-11 Simon Fraser <simon.fraser@apple.com> |
| |
| [ macOS ] scrollingcoordinator/mac/latching/scrolling-select-should-not-latch-mainframe.html is a flaky failure |
| https://bugs.webkit.org/show_bug.cgi?id=211747 |
| |
| Reviewed by Tim Horton. |
| |
| Add an option to monitorWheelEvents to reset latching. |
| |
| * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: |
| (WKBundlePageStartMonitoringScrollOperations): |
| * WebProcess/InjectedBundle/API/c/WKBundlePage.h: |
| |
| 2020-05-11 Kate Cheney <katherine_cheney@apple.com> |
| |
| Fail navigations to non app-bound domains after use of app-bound APIs |
| https://bugs.webkit.org/show_bug.cgi?id=211647 |
| <rdar://problem/62978159> |
| |
| Reviewed by Brent Fulgham. |
| |
| A lot of this patch is deleting the unnecessary variable/function |
| hasNavigatedAwayFromAppBoundDomain now that navigating away from an |
| app-bound domain is not possible. |
| |
| To address the bug, this sets the default isNavigatingToAppBoundDomain |
| value to be WTF::nullopt. This will allow app-bound behaviors until |
| a navigation has been attempted, in which case it will fail or will |
| update isNavigatingToAppBoundDomain to the correct value. |
| |
| |
| * Shared/LoadParameters.cpp: |
| (WebKit::LoadParameters::encode const): |
| (WebKit::LoadParameters::decode): |
| * Shared/LoadParameters.h: |
| * Shared/PolicyDecision.h: |
| (WebKit::PolicyDecision::encode const): |
| (WebKit::PolicyDecision::decode): |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::loadData): |
| (WebKit::ProvisionalPageProxy::loadRequest): |
| (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync): |
| * UIProcess/ProvisionalPageProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::loadRequest): |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadData): |
| (WebKit::WebPageProxy::loadDataWithNavigationShared): |
| (WebKit::WebPageProxy::receivedPolicyDecision): |
| (WebKit::WebPageProxy::continueNavigationInNewProcess): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionSyncShared): |
| (WebKit::WebPageProxy::hasNavigatedAwayFromAppBoundDomain const): Deleted. |
| Remove hasNavigatedAwayFromAppBoundDomain. |
| |
| (WebKit::WebPageProxy::setIsNavigatingToAppBoundDomainAndCheckIfPermitted): |
| Check for new m_hasExecutedAppBoundBehaviorBeforeNavigation parameter |
| and fail the navigation if a WebView has used app-bound behavior then |
| tries to navigate to a non app-bound domain. |
| |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| Update error message to be more general now that more than one error |
| can occur. |
| |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::setHasExecutedAppBoundBehaviorBeforeNavigation): |
| * UIProcess/WebPageProxy.messages.in: |
| New parameter to indicate a WebView has used app-bound APIs before |
| navigating. |
| |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse): |
| (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): |
| (WebKit::WebFrameLoaderClient::shouldEnableInAppBrowserPrivacyProtections): |
| (WebKit::WebFrameLoaderClient::hasNavigatedAwayFromAppBoundDomain): Deleted. |
| (WebKit::WebFrameLoaderClient::needsInAppBrowserPrivacyQuirks const): Deleted. |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| Combined two functions into a simpler function: |
| shouldEnableInAppBrowserPrivacyProtections(). |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_limitsNavigationsToAppBoundDomains): |
| (WebKit::WebPage::updatePreferences): |
| Store the special app-bound domain flag to gate the service worker |
| API. This should be stored separately from |
| m_isNavigatingToAppBoundDomain, because in the WebPage constructor we |
| don't yet know whether the WKAppBoundDomains key exists. |
| |
| (WebKit::WebPage::loadRequest): |
| (WebKit::WebPage::loadDataImpl): |
| (WebKit::WebPage::loadData): |
| (WebKit::WebPage::loadAlternateHTML): |
| (WebKit::WebPage::didReceivePolicyDecision): |
| Remove hasNavigatedAwayFromAppBoundDomain. |
| |
| (WebKit::WebPage::runJavaScript): |
| (WebKit::WebPage::setIsNavigatingToAppBoundDomain): |
| (WebKit::WebPage::shouldEnableInAppBrowserPrivacyProtections): |
| If m_needsInAppBrowserPrivacyQuirks are on for testing, don't enable |
| protections. Only notify the WebPageProxy of app-bound behavior if |
| a navigation has not occured and we know the webView is not app-bound |
| (in order to limit IPC). |
| |
| (WebKit::m_isNavigatingToAppBoundDomain): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::isNavigatingToAppBoundDomain const): |
| (WebKit::WebPage::setIsNavigatingToAppBoundDomain): Deleted. |
| (WebKit::WebPage::hasNavigatedAwayFromAppBoundDomain const): Deleted. |
| (WebKit::WebPage::setHasNavigatedAwayFromAppBoundDomain): Deleted. |
| (WebKit::WebPage::needsInAppBrowserPrivacyQuirks const): Deleted. |
| |
| 2020-05-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Remove some unnecessary indirection when getting Document’s Editor |
| https://bugs.webkit.org/show_bug.cgi?id=211744 |
| |
| Reviewed by Geoffrey Garen. |
| |
| See WebCore ChangeLog for more information. No change in behavior. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::performActionOnElement): |
| |
| 2020-05-11 Simon Fraser <simon.fraser@apple.com> |
| |
| Fix possible crash in ViewGestureController on macOS |
| https://bugs.webkit.org/show_bug.cgi?id=211745 |
| |
| Reviewed by Tim Horton. |
| |
| When ViewGestureController::resetState() clears m_swipeCancellationTracker, it should set it to canceled so that |
| any pending -trackSwipeEventWithOptions:... which is holding a reference to the WKSwipeCancellationTracker knows |
| to stop. |
| |
| * UIProcess/mac/ViewGestureControllerMac.mm: |
| (WebKit::ViewGestureController::resetState): |
| (WebKit::ViewGestureController::reset): |
| |
| 2020-05-11 Peng Liu <peng.liu6@apple.com> |
| |
| Enable the mock video presentation mode in related layout tests and fix test failures |
| https://bugs.webkit.org/show_bug.cgi?id=211645 |
| |
| Reviewed by Darin Adler. |
| |
| Fix the mistake in VideoFullscreenManager::supportsVideoFullscreen() introduced in r202274. |
| |
| * WebProcess/cocoa/VideoFullscreenManager.mm: |
| (WebKit::VideoFullscreenManager::supportsVideoFullscreen const): |
| |
| 2020-05-11 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Update message filtering rules in the WebContent process' sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=211188 |
| <rdar://problem/60922910> |
| |
| Reviewed by Brent Fulgham. |
| |
| Based on telemetry and local testing, update the message filtering rules in the WebContent process' sandbox on iOS. |
| Messages that have not been observed being in use, should be denied. |
| |
| No new tests, covered by existing tests. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-05-11 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] WKWebView.evaluateJavaScript should run at foreground priority when app is foreground |
| https://bugs.webkit.org/show_bug.cgi?id=211734 |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::runJavaScriptInFrameInScriptWorld): |
| |
| 2020-05-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| REGRESSION (r253267): issues on touchstart/touchend/touchmove (pointerdown/pointerup/pointermove) events |
| https://bugs.webkit.org/show_bug.cgi?id=211521 |
| <rdar://problem/62942374> |
| |
| Reviewed by Darin Adler. |
| |
| As a brief refresher, deferring gesture recognizers allow us to handle otherwise blocking touch events |
| asynchronously by having all preventable native gesture recognizers require the deferring gesture recognizer to |
| fail; we only fail the deferring gesture recognizer once the web process has handled the touch event, and did |
| not call `preventDefault()`. |
| |
| These additional failure requirements can cause preventable gestures to be linked together in the same gesture |
| dependency subgraph; since each subgraph is reset only once all gestures in the subgraph have failed or ended, |
| this might cause some gestures to be reset after a delay (rather than being reset immediately). To mitigate |
| this, we divide the set of preventable gestures into multiple (currently, 2) subgraphs: one for gestures that |
| are reset after a delay, and another for gestures that are immediately resettable. This way, immediately |
| resettable gestures are able to reset and recognize again, without having to wait for other slower preventable |
| gesture recognizers to reset. |
| |
| When fast-clicking is disabled (e.g. when loading a desktop web page on a mobile form factor, or when the |
| viewport has been zoomed in), the blocking synthetic double tap gesture recognizer (that is, `WKContentView`'s |
| `_doubleTapGestureRecognizer`) is enabled, and adds itself as a dynamic failure requirement to the content |
| view's synthetic single tap gesture recognizer (`_singleTapGestureRecognizer`). In terms of the gesture |
| dependency graph, this causes the single tap gesture to form an edge with the double tap gesture, which ends up |
| uniting both deferring gesture recognizers under the same subgraph. This means UIWebTouchEventsGestureRecognizer, |
| which should be one of the gestures in the immediately resettable subgraph, is now connected to the rest of the |
| delayed resettable gestures, meaning that it cannot recognize until "slowly resettable" gestures such as the |
| tap-and-half text selection gesture have also been reset. This delay causes touch events to be dropped, as is |
| the case in this bug. |
| |
| To fix this, simply quarantine the single tap and double tap gestures inside their own subgraph by introducing a |
| separate deferring gesture recognizer for them. When fast-clicking is enabled, this does not hinder the ability |
| for the single tap gesture to fire in rapid succession, since the double tap gesture is disabled (and thus, not |
| a part of the graph at all). when fast-clicking is disabled, then the double tap gesture will prevent the single |
| tap gesture from being immediately reset anyways, due to the direct failure requirement between the double and |
| single tap gesture. |
| |
| Doing this ensures that no other immediately resettable gesture (`UIWebTouchEventsGestureRecognizer` included) |
| is accidentally blocked from immediately resetting due to being linked to the delayed resettable gestures by way |
| of the synthetic single and double tap gestures. |
| |
| Test: fast/events/touch/ios/tap-and-half-when-viewport-is-not-responsive.html |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| |
| Add a dedicated deferring gesture recognizer for the synthetic single tap and double tap gesture recognizers. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setUpInteraction]): |
| (-[WKContentView cleanUpInteraction]): |
| |
| Use -_deferringGestureRecognizers instead of hard-coding logic for each deferring gesture. |
| |
| (-[WKContentView _removeDefaultGestureRecognizers]): Ditto. |
| (-[WKContentView _addDefaultGestureRecognizers]): Ditto. |
| (-[WKContentView _deferringGestureRecognizers]): |
| |
| We now have 3 distinct deferring gestures; instead of handling the three deferring gestures individually in |
| various places in this file, group them all behind a getter that returns an array of deferring gestures, and use |
| this instead. |
| |
| (-[WKContentView _doneDeferringNativeGestures:]): Ditto. |
| (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): Ditto. |
| (-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]): |
| |
| Partition the synthetic single tap and double tap gestures into their own subgraph. |
| |
| 2020-05-11 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed, reverting r261296. |
| |
| Rolling r260769 back in, since this was not causing a |
| regression. |
| |
| Reverted changeset: |
| |
| "Unreviewed, reverting r260769." |
| https://bugs.webkit.org/show_bug.cgi?id=211578 |
| https://trac.webkit.org/changeset/261296 |
| |
| 2020-05-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Unreviewed, fix the watchOS build after r261457 |
| |
| Put -[WKActionSheetAssistant suggestedActionsForContextMenuWithPositionInformation:] behind a USE(UICONTEXTMENU) |
| compiler guard; currently, it is declared everywhere, but only implemented if ENABLE(DATA_DETECTION) && |
| USE(UICONTEXTMENU). However, WKContentView only invokes it behind code that is guarded by USE(UICONTEXTMENU). |
| |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant suggestedActionsForContextMenuWithPositionInformation:]): |
| |
| 2020-05-11 Philippe Normand <pnormand@igalia.com> |
| |
| [GTK] Media and audio permission request unit tests are timing out |
| https://bugs.webkit.org/show_bug.cgi?id=158257 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Add new private API to disable secure capture device contexts. |
| This is needed for the API tests. |
| |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkitWebViewSetMediaCaptureRequiresSecureConnection): |
| * UIProcess/API/glib/WebKitWebViewPrivate.h: |
| |
| 2020-05-10 Basuke Suzuki <basuke.suzuki@sony.com> |
| |
| Add ENABLE_PERIODIC_MEMORY_MONITOR flag. |
| https://bugs.webkit.org/show_bug.cgi?id=211704 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| No new tests because there's no behavior change. |
| |
| Replace PLATFORM() macros with ENABLE() macro. |
| |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::initializeWebProcess): |
| |
| 2020-05-10 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| REGRESSION(r261270): Broke build with python3 |
| https://bugs.webkit.org/show_bug.cgi?id=211699 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| Remove the problematic print statement. It causes the script to fail. If fixed, it spams the |
| build output. We only print messages during the build when there are problems to be fixed. |
| |
| * Scripts/generate-message-receiver.py: |
| (main): |
| |
| 2020-05-10 Tim Horton <timothy_horton@apple.com> |
| |
| Clicking a tel:// link on iPad with a trackpad presents different UI than tapping on it |
| https://bugs.webkit.org/show_bug.cgi?id=211686 |
| <rdar://problem/57941589> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Previously, iOS WebKit had code in handleTap, handleTwoFingerTapAtPoint, and commitPotentialTap, |
| which introspected the hit element /before/ dispatching the tap (or synthetic click) to the DOM, |
| short circuiting all normal event handling machinery in order to prevent the default action |
| and present the Data Detectors UI for the given link. |
| |
| There's one immediate problem with this, which is that there is no similar code in the direct |
| click event handler path, which we now use for trackpad/mouse input on iPad. There's also a |
| secondary problem (which we have not seen in practice), which is that pages cannot preventDefault |
| to avoid launching the Data Detectors UI on a link, like they could to prevent an ordinary |
| link from being followed. |
| |
| In order to resolve both issues and reduce duplication of logic, move the code that introspects |
| the element and invokes Data Detectors UI from high-level WebKit event dispatch code (where it |
| doesn't really belong) down to WebCore's default click event handler for anchors, right next to |
| the code that would ordinarily cause a navigation. This way, no matter how we get here, whether |
| by synthetic click or real click, we'll invoke the Data Detectors UI. |
| |
| One alternative considered at length: we could actually let the navigation happen, and instead |
| handle the switch in navigation policy code, but there are a few reasons that did not seem ideal: |
| 1) We'd need to plumb platform-specific data structures through a ton of FrameLoader code. |
| 2) Clients often block non-HTTP(S) navigations, so in order to keep the feature functional, |
| we'd have to disregard the client's policy decision, defeating much of the purpose of making |
| use of the navigation mechanism in the first place. |
| |
| * UIProcess/PageClient.h: |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::showDataDetectorsUIForPositionInformation): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::showDataDetectorsUIForPositionInformation): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm: |
| (WebKit::WebChromeClient::showDataDetectorsUIForElement): |
| Plumb showDataDetectorsUIForPositionInformation from iOS WebKit's ChromeClient |
| implementation all the way to WKContentView. |
| |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant showDataDetectorsUIForPositionInformation:]): |
| (-[WKActionSheetAssistant contextMenuInteraction:configurationForMenuAtLocation:]): |
| (-[WKActionSheetAssistant contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): |
| (-[WKActionSheetAssistant showDataDetectorsSheet]): Deleted. |
| Make it possible to push InteractionInformationAtPosition into WKActionSheetAssistant, |
| instead of having it always pull a fresh one upon invocation, so that we can use the |
| position information passed along with the showDataDetectorsUIForPositionInformation message. |
| |
| (-[WKActionSheetAssistant _contextMenuInteraction:overrideSuggestedActionsForConfiguration:]): |
| (-[WKActionSheetAssistant suggestedActionsForContextMenuWithPositionInformation:]): |
| Fix an existing bug where Data Detectors context menus would show extra default actions, |
| by moving our implementation of the -_contextMenuInteraction:overrideSuggestedActionsForConfiguration: |
| delegate here, sharing it with WKContentViewInteraction. |
| |
| In a future patch, we should reconsider having three separate UIContextMenuInteractions. |
| |
| Also, remove the contextMenuPresentationLocationForActionSheetAssistant: delegate, |
| since it will be wrong in the case of pushed-in position information, and instead |
| use the position information's original hit test point. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _showDataDetectorsUI]): |
| (-[WKContentView _showDataDetectorsUIForPositionInformation:]): |
| (-[WKContentView _actionForLongPressFromPositionInformation:]): |
| (-[WKContentView _didNotHandleTapAsClick:]): |
| (-[WKContentView dataDetectionContextForPositionInformation:]): |
| (-[WKContentView dataDetectionContextForActionSheetAssistant:positionInformation:]): |
| (-[WKContentView _showDataDetectorsSheet]): Deleted. |
| (-[WKContentView currentPositionInformation]): Deleted. |
| (-[WKContentView dataDetectionContextForActionSheetAssistant:]): Deleted. |
| Instead of exposing an unnecessary -currentPositionInformation getter on WKActionSheetAssistant, |
| provide it as an argument to the WKActionSheetAssistantDelegate methods that actually need it. |
| |
| (-[WKContentView contextMenuPresentationLocationForActionSheetAssistant:]): Deleted. |
| (-[WKContentView _contextMenuInteraction:overrideSuggestedActionsForConfiguration:]): |
| Adopt WKActionSheetAssistant's suggestedActions mechanism so we can share code. |
| |
| * UIProcess/ios/WKPDFView.mm: |
| (-[WKPDFView _showActionSheetForURL:atLocation:withAnnotationRect:]): |
| (-[WKPDFView dataDetectionContextForActionSheetAssistant:positionInformation:]): |
| (-[WKPDFView dataDetectionContextForActionSheetAssistant:]): Deleted. |
| Adapt to some WKActionSheetAssistantDelegate changes. |
| |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleTap): |
| (WebKit::WebPage::handleTwoFingerTapAtPoint): |
| (WebKit::WebPage::commitPotentialTap): |
| Remove the aforementioned short-circuiting paths for Data Detectors links. |
| 2020-05-09 David Kilzer <ddkilzer@apple.com> |
| |
| Attempt #2 to fix internal iOS build |
| |
| * UIProcess/ios/WKMouseGestureRecognizer.mm: |
| - Use ALLOW_DEPRECATED_IMPLEMENTATIONS_{BEGIN,END}. |
| |
| 2020-05-09 David Kilzer <ddkilzer@apple.com> |
| |
| Attemp to fix internal iOS build |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| - Define @class UIHoverEvent using header if available, else |
| fall back to local class definition. |
| - Define methods separately from class definition. |
| * UIProcess/ios/WKMouseGestureRecognizer.mm: |
| (-[WKMouseGestureRecognizer setView:]): |
| - Use new method if it is available. |
| |
| 2020-05-09 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r261389. |
| https://bugs.webkit.org/show_bug.cgi?id=211678 |
| |
| Introduced page loading regression. (Requested by perarne on |
| #webkit). |
| |
| Reverted changeset: |
| |
| "[iOS] Update message filtering rules in the WebContent |
| process' sandbox" |
| https://bugs.webkit.org/show_bug.cgi?id=211188 |
| https://trac.webkit.org/changeset/261389 |
| |
| 2020-05-09 David Kilzer <ddkilzer@apple.com> |
| |
| Adapt LocalCurrentGraphicsContext for iOS |
| <https://webkit.org/b/211660> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::convertPlatformImageToBitmap): |
| - Use LocalCurrentGraphicsContext for both iOS and Mac code |
| paths. |
| |
| * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm: |
| - Switch from PLATFORM(MAC) and PLATFORM(IOS_FAMIY) to |
| USE(APPKIT) to separate platform code. |
| (WebKit::convertDragImageToBitmap): |
| (WebKit::convertImageToBitmap): Delete. |
| (WebKit::convertCGImageToBitmap): Delete. |
| - Combine Mac-specific convertImageToBitmap() and iOS-specific |
| convertCGImageToBitmap() into a single method using DragImage |
| type and special-casing one line of code. |
| (WebKit::WebDragClient::startDrag): |
| (WebKit::WebDragClient::didConcludeEditDrag): |
| - Combine iOS and Mac methods into a singe method. |
| |
| 2020-05-09 David Quesada <david_quesada@apple.com> |
| |
| Remove HAVE_UI_SCROLL_VIEW_INDICATOR_FLASHING_SPI |
| https://bugs.webkit.org/show_bug.cgi?id=211662 |
| rdar://problem/63048713 |
| |
| Reviewed by Darin Adler. |
| |
| Remove this platform conditional and unconditionally use -[UIScrolView _flashScrollIndicatorsForAxes: |
| persistingPreviousFlashes:]. All supported platforms with UIScrollView have this SPI, and the conditional |
| was excluding Mac Catalyst, making WKKeyboardScrollViewAnimator send a message to its scroll view that |
| is no longer implemented. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| Remove the declaration of the now unused -_flashScrollIndicatorsPersistingPreviousFlashes:. |
| * UIProcess/ios/WKKeyboardScrollingAnimator.mm: |
| (axesForDelta): |
| (-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]): |
| |
| 2020-05-08 David Kilzer <ddkilzer@apple.com> |
| |
| Remove empty directories from from svn.webkit.org repository |
| <https://webkit.org/b/211644> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/API/win: Removed. |
| |
| 2020-05-08 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r210945): No attachment when sharing to mail |
| https://bugs.webkit.org/show_bug.cgi?id=211651 |
| <rdar://problem/63040170> |
| |
| Reviewed by Tim Horton. |
| |
| When failing to determine foreground state, the code before r210945 was assuming |
| 'foreground', while the code in r210945 assume 'background'. This causes things |
| to not render properly when we fail to determine the foreground state. |
| |
| This patch merely restores pre-r210945 behavior. I will investigate why we are |
| unable to determinate the host application PID for the MailCompositionService. |
| |
| * UIProcess/ApplicationStateTracker.mm: |
| (WebKit::isApplicationForeground): |
| |
| 2020-05-08 Nikos Mouchtaris <nmouchtaris@apple.com> |
| |
| Implement web-share v2 for files |
| https://bugs.webkit.org/show_bug.cgi?id=209265 |
| |
| Reviewed by Andy Estes. |
| |
| Added support for passing file objects over IPC and |
| sharing of files to share sheet. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::ArgumentCoder<Vector<RawFile>>::encode): |
| (IPC::ArgumentCoder<Vector<RawFile>>::decode): |
| (IPC::ArgumentCoder<ShareDataWithParsedURL>::encode): |
| (IPC::ArgumentCoder<ShareDataWithParsedURL>::decode): |
| * Shared/WebCoreArgumentCoders.h: |
| * UIProcess/Cocoa/ShareableFileWrite.h: Added. |
| * UIProcess/Cocoa/ShareableFileWrite.mm: Added. |
| (+[WKShareableFileWrite getSharingDirectoryPath]): |
| (+[WKShareableFileWrite getFileDirectoryForSharing]): |
| (+[WKShareableFileWrite removeFileDirectoryForSharing]): |
| (+[WKShareableFileWrite setQuarantineInformationForFilePath:]): |
| (+[WKShareableFileWrite applyQuarantineSandboxAndDownloadFlagsToFileAtPath:]): |
| (+[WKShareableFileWrite createFilename:]): |
| (+[WKShareableFileWrite writeFileToShareableURL:data:]): |
| * UIProcess/Cocoa/WKShareSheet.mm: |
| (-[WKShareSheet presentWithParameters:inRect:completionHandler:]): |
| (-[WKShareSheet _didCompleteWithSuccess:]): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-05-08 Brent Fulgham <bfulgham@apple.com> |
| |
| Revise sandbox to stop logging some commonly-used properties |
| https://bugs.webkit.org/show_bug.cgi?id=211636 |
| <rdar://problem/63014244> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Further living on and testing has shown a handful of sysctl entries that are in regular use, and do not need |
| to be logged or considered for removal. This patch has no change in behavior, just reduces logging. |
| |
| * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in: |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: |
| |
| 2020-05-08 Chris Dumez <cdumez@apple.com> |
| |
| Make WKWebViewConfiguration._alwaysRunsAtForegroundPriority an alias for _clientNavigationsRunAtForegroundPriority |
| https://bugs.webkit.org/show_bug.cgi?id=211632 |
| |
| Reviewed by Darin Adler. |
| |
| Make WKWebViewConfiguration._alwaysRunsAtForegroundPriority an alias for _clientNavigationsRunAtForegroundPriority. |
| _alwaysRunsAtForegroundPriority is a frequent source of process assertion leaks that get blamed on WebKit. Clients |
| are using this in order to be able to do loads in background views so _clientNavigationsRunAtForegroundPriority |
| should suffice and is not leak prone since the process assertion is released after the navigation has completed. |
| |
| * UIProcess/API/APIPageConfiguration.cpp: |
| (API::PageConfiguration::copy const): |
| * UIProcess/API/APIPageConfiguration.h: |
| (API::PageConfiguration::alwaysRunsAtForegroundPriority const): Deleted. |
| (API::PageConfiguration::setAlwaysRunsAtForegroundPriority): Deleted. |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration _alwaysRunsAtForegroundPriority]): |
| (-[WKWebViewConfiguration _setAlwaysRunsAtForegroundPriority:]): |
| * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::close): |
| (WebKit::WebPageProxy::updateThrottleState): |
| (WebKit::WebPageProxy::resetStateAfterProcessExited): |
| * UIProcess/WebPageProxy.h: |
| |
| 2020-05-08 Alex Christensen <achristensen@webkit.org> |
| |
| Revert r260390 |
| https://bugs.webkit.org/show_bug.cgi?id=210759 |
| <rdar://problem/62608140> |
| |
| r260390 was intended to stop hitting some assertions in ~PendingFrameLoad, but it seems to have caused a regression. |
| Reverting it and removing the invalid assertions. |
| |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: |
| (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::~PendingFrameLoad): |
| (WebKit::NetworkCache::SpeculativeLoadManager::~SpeculativeLoadManager): |
| |
| 2020-05-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] caret appears in the middle of a search field when field is focused on agoda.com |
| https://bugs.webkit.org/show_bug.cgi?id=211591 |
| <rdar://problem/60605873> |
| |
| Reviewed by Antoine Quint. |
| |
| The main search field on the mobile version of this website begins offscreen, with a CSS transform that moves it |
| to the far right; tapping the button element that (visually) has a search-field-like appearance on the front |
| page programmatically focuses the real offscreen search field, and animates it onscreen by changing the CSS |
| transform attribute to remove the x-axis translation. |
| |
| On iOS, the caret rect is computed and sent to the UI process via editor state updates; however, the editor |
| state is computed immediately after focusing the input field. As such, the caret rect at this moment is computed |
| in the middle of the animation, leaving it stuck in an unpredictable location. |
| |
| To fix this, add plumbing to call into the WebKit client layer when an animation has ended. On iOS, if the |
| selection is visible (i.e. a ranged selection, or editable caret), then check to see whether the element that |
| has finished animating contains either endpoint of the selection. If so, then schedule a followup editor state |
| update to push updated selection information to the UI process. |
| |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::animationDidFinishForElement): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| |
| Add a new client hook for when animations end. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::animationDidFinishForElement): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| |
| Add logic to schedule a new editor state update if needed, after an animation ends that might affect either |
| the start or end of the selection. |
| |
| (WebKit::WebPage::animationDidFinishForElement): |
| |
| 2020-05-08 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r260228): Linker warning about limitsNavigationsToAppBoundDomains property overriding instance methods from class |
| <https://webkit.org/b/211393> |
| |
| Reviewed by Brent Fulgham. |
| |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration limitsNavigationsToAppBoundDomains]): |
| (-[WKWebViewConfiguration setLimitsNavigationsToAppBoundDomains:]): |
| - Move from WKPrivate category to main category to fix linker |
| warnings. |
| |
| 2020-05-08 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION(r259209) Webview's pending URL is null after restoring session state |
| https://bugs.webkit.org/show_bug.cgi?id=211626 |
| <rdar://problem/62992262> |
| |
| Reviewed by Alex Christensen. |
| |
| The issue was that WebPageProxy::goToBackForwardItem() would behave differently whether |
| the page has a running process or not. In particular, when the page did not have a |
| running process, goToBackForwardItem() would return early and call launchProcessWithItem() |
| instead. Unlike goToBackForwardItem(), launchProcessWithItem() would fail to set the |
| pending API request. |
| |
| To address the issue, I am getting rid of launchProcessWithItem() and merging its logic |
| into goToBackForwardItem() instead. Both methods shared a lot of code anyway and having |
| 2 separate code paths that may diverge is error prone. |
| |
| Change is covered by new API test. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::goToBackForwardItem): |
| (WebKit::WebPageProxy::launchProcessWithItem): Deleted. |
| * UIProcess/WebPageProxy.h: |
| |
| 2020-05-08 Alex Christensen <achristensen@webkit.org> |
| |
| WKWebView.title should be safe browsing warning's title during a safe browsing warning |
| https://bugs.webkit.org/show_bug.cgi?id=211403 |
| |
| Reviewed by Tim Horton. |
| |
| Add a new property to PageLoadState, which allows the title to be set underneath it. |
| That way, once the safe browsing warning is closed, we can update the title to what it would've been, |
| including any changes that happened while the warning was open. |
| |
| Covered by an API test. I also manually verified this fixes rdar://problem/56201982 |
| |
| * UIProcess/PageLoadState.cpp: |
| (WebKit::PageLoadState::commitChanges): |
| (WebKit::PageLoadState::reset): |
| (WebKit::PageLoadState::didCommitLoad): |
| (WebKit::PageLoadState::title const): |
| (WebKit::PageLoadState::setTitleFromSafeBrowsingWarning): |
| * UIProcess/PageLoadState.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| |
| 2020-05-08 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Update message filtering rules in the WebContent process' sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=211188 |
| |
| Reviewed by Brent Fulgham. |
| |
| Based on telemetry and local testing, update the message filtering rules in the WebContent process' sandbox on iOS. |
| Messages that have not been observed being in use should be denied. |
| |
| No new tests, covered by existing tests. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-05-08 Chris Dumez <cdumez@apple.com> |
| |
| Turn processDidBecomeUnresponsive logging into error logging |
| https://bugs.webkit.org/show_bug.cgi?id=211629 |
| |
| Reviewed by Youenn Fablet. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::processDidBecomeUnresponsive): |
| |
| 2020-05-08 Per Arne Vollan <pvollan@apple.com> |
| |
| [Cocoa] Close connections to Launch Services after revoking extension |
| https://bugs.webkit.org/show_bug.cgi?id=211594 |
| |
| Reviewed by Brent Fulgham. |
| |
| In <https://trac.webkit.org/changeset/258915/webkit>, connections to the Launch Services database mapping |
| services were denied, by creating a temporary extension. After revoking this extension in the WebContent |
| process, it is important to close any open connections to Launch Services initiated by the mapping. |
| |
| No new tests, covered by existing UTI/MIME type tests. |
| |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| |
| 2020-05-08 Youenn Fablet <youenn@apple.com> |
| |
| Handle remote audio capture IPC messages in a background thread |
| https://bugs.webkit.org/show_bug.cgi?id=211583 |
| |
| Reviewed by Eric Carlson. |
| |
| We introduce RemoteCaptureSampleManager which is responsible to get remote capture sample IPC messages and treat them from a background thread. |
| It is currently used to handle audio capture IPC messages. |
| We move UserMediaCaptureManager::Source in its own file and rename it to RemoteRealtimeMediaSource. |
| |
| Covered by existing tests. |
| |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * PlatformMac.cmake: |
| * SourcesCocoa.txt: |
| * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/cocoa/RemoteCaptureSampleManager.cpp: Added. |
| (WebKit::RemoteCaptureSampleManager::RemoteCaptureSampleManager): |
| (WebKit::RemoteCaptureSampleManager::~RemoteCaptureSampleManager): |
| (WebKit::RemoteCaptureSampleManager::setConnection): |
| (WebKit::RemoteCaptureSampleManager::addSource): |
| (WebKit::RemoteCaptureSampleManager::removeSource): |
| (WebKit::RemoteCaptureSampleManager::dispatchToThread): |
| (WebKit::RemoteCaptureSampleManager::storageChanged): |
| (WebKit::RemoteCaptureSampleManager::audioSamplesAvailable): |
| * WebProcess/cocoa/RemoteCaptureSampleManager.h: Added. |
| * WebProcess/cocoa/RemoteCaptureSampleManager.messages.in: Added. |
| * WebProcess/cocoa/RemoteRealtimeMediaSource.cpp: Added. |
| (WebKit::RemoteRealtimeMediaSource::RemoteRealtimeMediaSource): |
| (WebKit::RemoteRealtimeMediaSource::~RemoteRealtimeMediaSource): |
| (WebKit::RemoteRealtimeMediaSource::whenReady): |
| (WebKit::RemoteRealtimeMediaSource::didFail): |
| (WebKit::RemoteRealtimeMediaSource::setAsReady): |
| (WebKit::RemoteRealtimeMediaSource::clone): |
| (WebKit::RemoteRealtimeMediaSource::setCapabilities): |
| (WebKit::RemoteRealtimeMediaSource::setSettings): |
| (WebKit::RemoteRealtimeMediaSource::remoteAudioSamplesAvailable): |
| (WebKit::RemoteRealtimeMediaSource::remoteVideoSampleAvailable): |
| (WebKit::RemoteRealtimeMediaSource::connection): |
| (WebKit::RemoteRealtimeMediaSource::startProducingData): |
| (WebKit::RemoteRealtimeMediaSource::stopProducingData): |
| (WebKit::RemoteRealtimeMediaSource::setShouldApplyRotation): |
| (WebKit::RemoteRealtimeMediaSource::capabilities): |
| (WebKit::RemoteRealtimeMediaSource::applyConstraints): |
| (WebKit::RemoteRealtimeMediaSource::applyConstraintsSucceeded): |
| (WebKit::RemoteRealtimeMediaSource::applyConstraintsFailed): |
| (WebKit::RemoteRealtimeMediaSource::hasEnded): |
| (WebKit::RemoteRealtimeMediaSource::stopBeingObserved): |
| (WebKit::RemoteRealtimeMediaSource::requestToEnd): |
| * WebProcess/cocoa/RemoteRealtimeMediaSource.h: Added. |
| (WebKit::RemoteRealtimeMediaSource::identifier const): |
| (WebKit::RemoteRealtimeMediaSource::settings const): |
| (WebKit::RemoteRealtimeMediaSource::setShouldCaptureInGPUProcess): |
| (WebKit::RemoteRealtimeMediaSource::shouldCaptureInGPUProcess const): |
| * WebProcess/cocoa/UserMediaCaptureManager.cpp: |
| (WebKit::UserMediaCaptureManager::createCaptureSource): |
| (WebKit::UserMediaCaptureManager::cloneSource): |
| (WebKit::UserMediaCaptureManager::cloneVideoSource): |
| (WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource): |
| (WebKit::UserMediaCaptureManager::AudioFactory::setShouldCaptureInGPUProcess): |
| (WebKit::UserMediaCaptureManager::VideoFactory::createVideoCaptureSource): |
| (WebKit::UserMediaCaptureManager::DisplayFactory::createDisplayCaptureSource): |
| * WebProcess/cocoa/UserMediaCaptureManager.h: |
| * WebProcess/cocoa/UserMediaCaptureManager.messages.in: |
| |
| 2020-05-08 Youenn Fablet <youenn@apple.com> |
| |
| Video capture does not get unmuted in case of tab switch on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=211509 |
| |
| Reviewed by Eric Carlson. |
| |
| Remove no longer needed code. |
| |
| * WebProcess/cocoa/UserMediaCaptureManager.cpp: |
| (WebKit::UserMediaCaptureManager::VideoFactory::setActiveSource): |
| * WebProcess/cocoa/UserMediaCaptureManager.h: |
| |
| 2020-05-08 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix GTK4 build after r261370 |
| |
| * UIProcess/API/gtk/WebKitScriptDialogGtk.cpp: |
| (webkitScriptDialogIsUserHandled): |
| |
| 2020-05-08 Lauro Moura <lmoura@igalia.com> |
| |
| [WPE][WebDriver] Implement user prompt support |
| https://bugs.webkit.org/show_bug.cgi?id=207372 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Provide a default implementation for WebDriver dialog commands. |
| This implementation will mimic the expected browser behavior of |
| accepting/dismissing the dialogs, while not exposing any new API. |
| |
| * UIProcess/API/glib/WebKitScriptDialogPrivate.h: |
| - Expose new private function to check whether the dialog is using a |
| default implementation or is handled by the user. |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| - Avoid default WebDriver behavior if the dialog is user-handled. |
| (webkitWebViewSetCurrentScriptDialogUserInput): |
| (webkitWebViewAcceptCurrentScriptDialog): |
| (webkitWebViewDismissCurrentScriptDialog): |
| * UIProcess/API/gtk/WebKitScriptDialogGtk.cpp: |
| (webkitScriptDialogIsUserHandled): |
| - Return whether the dialog is user handled. |
| * UIProcess/API/wpe/WebKitScriptDialogWPE.cpp: |
| - Added basic behavior for the WebDriver dialog callbacks for WPE. |
| (webkitScriptDialogAccept): |
| (webkitScriptDialogDismiss): |
| (webkitScriptDialogSetUserInput): |
| (webkitScriptDialogIsUserHandled): |
| |
| * UIProcess/API/wpe/WebKitWebViewWPE.cpp: |
| (webkitWebViewScriptDialog): |
| - Hold a dialog ref if the webview is controlled by automation and ends |
| up calling the default "script-dialog" event handler. |
| |
| 2020-05-07 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Roll back newly created credentials if an error occurs |
| https://bugs.webkit.org/show_bug.cgi?id=183530 |
| <rdar://problem/43357305> |
| |
| Reviewed by Brent Fulgham. |
| |
| We should clean up any newly created credentials if an error occurs before the relying party |
| registers the identity. Otherwise we are left with a dangling credential. |
| |
| Covered by API tests. |
| |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h: |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserVerification): |
| (WebKit::LocalAuthenticator::continueGetAssertionAfterUserVerification): |
| (WebKit::LocalAuthenticator::receiveException const): |
| |
| 2020-05-07 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, reverting r261252. |
| |
| Reland r260684 now that a proper fix has landed in Reader |
| |
| Reverted changeset: |
| |
| "REGRESSION (r260684): Reader background is lost after |
| multitasking" |
| https://bugs.webkit.org/show_bug.cgi?id=211533 |
| https://trac.webkit.org/changeset/261252 |
| |
| 2020-05-07 Megan Gardner <megan_gardner@apple.com> |
| |
| Build Fix for MacCatalyst |
| https://bugs.webkit.org/show_bug.cgi?id=211601 |
| |
| Reviewed by Tim Horton. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _removeContextMenuViewIfPossible]): |
| |
| 2020-05-07 Chris Dumez <cdumez@apple.com> |
| |
| Crash under WebKit::XPCServiceMain |
| https://bugs.webkit.org/show_bug.cgi?id=211600 |
| <rdar://problem/62875458> |
| |
| Reviewed by Darin Adler. |
| |
| Made the following changes: |
| - Crash under strcmp() could in theory happen if expectedBundleVersion.UTF8String was null, which could |
| happen if expectedBundleVersion was null. I now use higher level String types for the versions, make |
| sure they are not null and use String comparison to compare them. |
| - Call CRASH() instead of __builtin_trap(), to guarantee that we crash with a SIGTRAP (see comment next |
| to CRASH() macro). |
| - Move CRASH() call to a crashDueWebKitFrameworkVersionMismatch() never inlined function to make it |
| clear when it crashes due to a framework version mismatch and distinguish from proper crashes. |
| |
| * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm: |
| (WebKit::crashDueWebKitFrameworkVersionMismatch): |
| (WebKit::XPCServiceMain): |
| |
| 2020-05-07 Youenn Fablet <youenn@apple.com> |
| |
| Remove AudioMediaStreamTrackRenderer::muted |
| https://bugs.webkit.org/show_bug.cgi?id=211289 |
| |
| Reviewed by Eric Carlson. |
| |
| muted is unnecessary since we are using start/stop instead. |
| |
| * GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp: |
| * GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.h: |
| * GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.messages.in: |
| * WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.cpp: |
| * WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.h: |
| |
| 2020-05-07 Don Olmstead <don.olmstead@sony.com> |
| |
| Remove unused USE(REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR) |
| https://bugs.webkit.org/show_bug.cgi?id=211582 |
| |
| Reviewed by Fujii Hironori. |
| |
| After r261264 all ports implemented USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR. |
| |
| * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: |
| (WebKit::ThreadedCompositor::ThreadedCompositor): |
| (WebKit::m_displayRefreshMonitor): |
| (WebKit::ThreadedCompositor::invalidate): |
| (WebKit::ThreadedCompositor::sceneUpdateFinished): |
| (WebKit::ThreadedCompositor::displayRefreshMonitor): |
| * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: |
| * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp: |
| * Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.h: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::createDisplayRefreshMonitor const): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::createDisplayRefreshMonitor): |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h: |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: |
| (WebKit::LayerTreeHost::createDisplayRefreshMonitor): |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: |
| (WebKit::LayerTreeHost::deviceOrPageScaleFactorChanged): |
| * WebProcess/WebPage/DrawingArea.cpp: |
| * WebProcess/WebPage/DrawingArea.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm: |
| * WebProcess/WebPage/mac/DrawingAreaMac.cpp: |
| |
| 2020-05-07 Darin Adler <darin@apple.com> |
| |
| Add some missing null checks for DocumentLoader |
| https://bugs.webkit.org/show_bug.cgi?id=211544 |
| rdar://62843516 |
| |
| Reviewed by Anders Carlsson. |
| |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): |
| Add a null check before calling DocumentLoader::response. |
| |
| 2020-05-07 Darin Adler <darin@apple.com> |
| |
| Remove USE(INSERTION_UNDO_GROUPING) checks in macOS platform code |
| https://bugs.webkit.org/show_bug.cgi?id=211525 |
| |
| Reviewed by Anders Carlsson. |
| |
| * UIProcess/Cocoa/WebViewImpl.mm: Use NSTextInputContextSPI.h. |
| (WebKit::WebViewImpl::validAttributesForMarkedText): Removed |
| USE(INSERTION_UNDO_GROUPING) from the macOS-specific code here. |
| (WebKit::WebViewImpl::insertText): Ditto. |
| * UIProcess/PageClient.h: Ditto. |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::registerInsertionUndoGrouping): Deleted. |
| This function is not needed at all on iOS. |
| * UIProcess/mac/PageClientImplMac.h: Removed USE(INSERTION_UNDO_GROUPING). |
| * UIProcess/mac/PageClientImplMac.mm: |
| (WebKit::PageClientImpl::registerInsertionUndoGrouping): Ditto. |
| |
| 2020-05-07 Chris Dumez <cdumez@apple.com> |
| |
| Drop dead platformPrepareToSuspend / platformProcessDidResume in NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=211579 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::prepareToSuspend): |
| (WebKit::NetworkProcess::resume): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::platformPrepareToSuspend): Deleted. |
| (WebKit::NetworkProcess::platformProcessDidResume): Deleted. |
| * NetworkProcess/curl/NetworkProcessCurl.cpp: |
| (WebKit::NetworkProcess::platformPrepareToSuspend): Deleted. |
| (WebKit::NetworkProcess::platformProcessDidResume): Deleted. |
| * NetworkProcess/soup/NetworkProcessSoup.cpp: |
| (WebKit::NetworkProcess::platformPrepareToSuspend): Deleted. |
| (WebKit::NetworkProcess::platformProcessDidResume): Deleted. |
| |
| 2020-05-07 Megan Gardner <megan_gardner@apple.com> |
| |
| ContextMenu: entire webpage pops and disappears to generate preview of embedded image |
| https://bugs.webkit.org/show_bug.cgi?id=211272 |
| <rdar://problem/62482013> |
| |
| Reviewed by Tim Horton. |
| |
| The ActionSheetAssistant is always around, so using the presence of one |
| to determine if we need to remove the _contextMenuHintContainerView is incorrect |
| and causes it to be around on the next invocation of the context menu, and |
| causing the failure of the creation of a new preview, which then will default to |
| popping the whole page. We need to ask the ActionSheetAssistant if it is actively showing |
| anything, and then correctly clean up the _contextMenuHintContainerView after the |
| end of the interactions for FileUploadMenu and ActionSheetAssistant are done with their |
| interactions. |
| |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant removeContextMenuInteraction]): |
| (-[WKActionSheetAssistant hasContextMenuInteraction]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView removeContextMenuViewIfPossibleForActionSheetAssistant:]): |
| (-[WKContentView _canRemoveContextMenuView]): |
| (-[WKContentView _removeContextMenuViewIfPossible]): |
| (-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]): |
| * UIProcess/ios/forms/WKFileUploadPanel.mm: |
| (-[WKFileUploadPanel removeContextMenuInteraction]): |
| |
| 2020-05-07 Chris Dumez <cdumez@apple.com> |
| |
| Simplify several IPC sending call sites in the UIProcess |
| https://bugs.webkit.org/show_bug.cgi?id=211575 |
| |
| Reviewed by Alex Christensen. |
| |
| Simplify several IPC sending call sites in the UIProcess by leveraging the fact |
| that WebPageProxy subclasses IPC::MessageSender. |
| |
| * UIProcess/Cocoa/TextCheckingController.mm: |
| (WebKit::TextCheckingController::replaceRelativeToSelection): |
| (WebKit::TextCheckingController::removeAnnotationRelativeToSelection): |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::performDictionaryLookupAtLocation): |
| (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): |
| (WebKit::WebPageProxy::insertDictatedTextAsync): |
| (WebKit::WebPageProxy::speakingErrorOccurred): |
| (WebKit::WebPageProxy::boundaryEventOccurred): |
| (WebKit::WebPageProxy::voicesDidChange): |
| * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: |
| (WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision): |
| * UIProcess/Inspector/RemoteWebInspectorProxy.cpp: |
| (WebKit::RemoteWebInspectorProxy::setDiagnosticLoggingAvailable): |
| * UIProcess/Inspector/WebInspectorProxy.cpp: |
| (WebKit::WebInspectorProxy::setDiagnosticLoggingAvailable): |
| * UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp: |
| (WebKit::remoteFileReplaceContentsCallback): |
| * UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp: |
| (WebKit::fileReplaceContentsCallback): |
| * UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm: |
| (WebKit::RemoteWebInspectorProxy::platformSave): |
| (WebKit::RemoteWebInspectorProxy::platformAppend): |
| * UIProcess/Inspector/mac/WebInspectorProxyMac.mm: |
| (WebKit::WebInspectorProxy::platformSave): |
| (WebKit::WebInspectorProxy::platformAppend): |
| * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: |
| (WebKit::NotificationPermissionRequestManagerProxy::createRequest): |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged): |
| (WebKit::UserMediaPermissionRequestManagerProxy::denyRequest): |
| * UIProcess/WebFrameProxy.cpp: |
| (WebKit::WebFrameProxy::collapseSelection): |
| * UIProcess/WebFullScreenManagerProxy.cpp: |
| (WebKit::WebFullScreenManagerProxy::willEnterFullScreen): |
| (WebKit::WebFullScreenManagerProxy::didEnterFullScreen): |
| (WebKit::WebFullScreenManagerProxy::willExitFullScreen): |
| (WebKit::WebFullScreenManagerProxy::didExitFullScreen): |
| (WebKit::WebFullScreenManagerProxy::setAnimatingFullScreen): |
| (WebKit::WebFullScreenManagerProxy::requestExitFullScreen): |
| (WebKit::WebFullScreenManagerProxy::saveScrollPosition): |
| (WebKit::WebFullScreenManagerProxy::restoreScrollPosition): |
| (WebKit::WebFullScreenManagerProxy::setFullscreenInsets): |
| (WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideDuration): |
| (WebKit::WebFullScreenManagerProxy::setFullscreenControlsHidden): |
| * UIProcess/gtk/WebPageProxyGtk.cpp: |
| (WebKit::WebPageProxy::getCenterForZoomGesture): |
| * UIProcess/ios/SmartMagnificationController.mm: |
| (WebKit::SmartMagnificationController::handleSmartMagnificationGesture): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView ensurePositionInformationIsUpToDate:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::handleTwoFingerTapAtPoint): |
| (WebKit::WebPageProxy::handleStylusSingleTapAtPoint): |
| (WebKit::WebPageProxy::registerUIProcessAccessibilityTokens): |
| (WebKit::WebPageProxy::willStartUserTriggeredZooming): |
| (WebKit::WebPageProxy::potentialTapAtPosition): |
| (WebKit::WebPageProxy::commitPotentialTap): |
| (WebKit::WebPageProxy::cancelPotentialTap): |
| (WebKit::WebPageProxy::tapHighlightAtPosition): |
| (WebKit::WebPageProxy::handleTap): |
| (WebKit::WebPageProxy::didRecognizeLongPress): |
| (WebKit::WebPageProxy::handleDoubleTapForDoubleClickAtPoint): |
| (WebKit::WebPageProxy::inspectorNodeSearchMovedToPosition): |
| (WebKit::WebPageProxy::inspectorNodeSearchEndedAtPosition): |
| (WebKit::WebPageProxy::blurFocusedElement): |
| (WebKit::WebPageProxy::setIsShowingInputViewForFocusedElement): |
| (WebKit::WebPageProxy::setFocusedElementValue): |
| (WebKit::WebPageProxy::setFocusedElementValueAsNumber): |
| (WebKit::WebPageProxy::setFocusedElementSelectedIndex): |
| (WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF): |
| (WebKit::WebPageProxy::contentSizeCategoryDidChange): |
| (WebKit::WebPageProxy::generateSyntheticEditingCommand): |
| * UIProcess/mac/ViewGestureControllerMac.mm: |
| (WebKit::ViewGestureController::handleMagnificationGestureEvent): |
| (WebKit::ViewGestureController::handleSmartMagnificationGesture): |
| * UIProcess/mac/WebPageProxyMac.mm: |
| (WebKit::WebPageProxy::windowAndViewFramesChanged): |
| (WebKit::WebPageProxy::setMainFrameIsScrollable): |
| (WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync): |
| (WebKit::WebPageProxy::fontAtSelection): |
| (WebKit::WebPageProxy::stringSelectionForPasteboard): |
| (WebKit::WebPageProxy::dataSelectionForPasteboard): |
| (WebKit::WebPageProxy::readSelectionFromPasteboard): |
| (WebKit::WebPageProxy::replaceSelectionWithPasteboardData): |
| (WebKit::WebPageProxy::sendComplexTextInputToPlugin): |
| (WebKit::WebPageProxy::uppercaseWord): |
| (WebKit::WebPageProxy::lowercaseWord): |
| (WebKit::WebPageProxy::capitalizeWord): |
| (WebKit::WebPageProxy::setSmartInsertDeleteEnabled): |
| (WebKit::WebPageProxy::registerUIProcessAccessibilityTokens): |
| (WebKit::WebPageProxy::shouldDelayWindowOrderingForEvent): |
| (WebKit::WebPageProxy::acceptsFirstMouse): |
| |
| 2020-05-07 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r260769. |
| https://bugs.webkit.org/show_bug.cgi?id=211578 |
| |
| Introduced regressions related to sharing (Requested by |
| perarne on #webkit). |
| |
| Reverted changeset: |
| |
| "[Cocoa] After r258891, r255119 can be reverted" |
| https://bugs.webkit.org/show_bug.cgi?id=211083 |
| https://trac.webkit.org/changeset/260769 |
| |
| 2020-05-07 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] AuxiliaryProcessProxy::sendWithAsyncReply() should prevent auxiliary process suspension while processing the IPC |
| https://bugs.webkit.org/show_bug.cgi?id=209928 |
| |
| Reviewed by Youenn Fablet. |
| |
| AuxiliaryProcessProxy::sendWithAsyncReply() should prevent auxiliary process suspension |
| on iOS while processing the IPC. If the process is suspended either before or during |
| the IPC, this could result in hangs. This is a speculative fix for the flaky timeouts |
| we see on many tests on iOS only. We know that missing activities with |
| sendWithAsyncReply has caused test timeouts in the past (Bug 211421). |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::sendMessage): |
| * UIProcess/AuxiliaryProcessProxy.h: |
| (WebKit::AuxiliaryProcessProxy::sendWithAsyncReply): |
| * UIProcess/GPU/GPUProcessProxy.cpp: |
| (WebKit::GPUProcessProxy::getGPUProcessConnection): |
| * UIProcess/GPU/GPUProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::getNetworkProcessConnection): |
| (WebKit::NetworkProcessProxy::setUseITPDatabase): |
| (WebKit::NetworkProcessProxy::resetCacheMaxAgeCapForPrevalentResources): |
| (WebKit::NetworkProcessProxy::resetParametersToDefaultValues): |
| (WebKit::NetworkProcessProxy::scheduleClearInMemoryAndPersistent): |
| (WebKit::NetworkProcessProxy::resetCrossSiteLoadsWithLinkDecorationForTesting): |
| (WebKit::NetworkProcessProxy::setAppBoundDomainsForResourceLoadStatistics): |
| (WebKit::NetworkProcessProxy::setShouldDowngradeReferrerForTesting): |
| (WebKit::NetworkProcessProxy::setThirdPartyCookieBlockingMode): |
| (WebKit::NetworkProcessProxy::setShouldEnbleSameSiteStrictEnforcementForTesting): |
| (WebKit::NetworkProcessProxy::setFirstPartyWebsiteDataRemovalModeForTesting): |
| (WebKit::NetworkProcessProxy::sendPrepareToSuspend): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Plugins/PluginProcessProxy.cpp: |
| (WebKit::PluginProcessProxy::PluginProcessProxy): |
| * UIProcess/Plugins/PluginProcessProxy.h: |
| * UIProcess/ProcessThrottler.h: |
| (WebKit::ProcessThrottler::Activity::Activity): |
| (WebKit::ProcessThrottler::Activity::isQuietActivity const): |
| (WebKit::ProcessThrottler::Activity::invalidate): |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest): |
| * UIProcess/WebBackForwardCacheEntry.cpp: |
| (WebKit::WebBackForwardCacheEntry::~WebBackForwardCacheEntry): |
| * UIProcess/WebCookieManagerProxy.cpp: |
| (WebKit::WebCookieManagerProxy::getHostnamesWithCookies): |
| (WebKit::WebCookieManagerProxy::deleteCookie): |
| (WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince): |
| (WebKit::WebCookieManagerProxy::setCookies): |
| (WebKit::WebCookieManagerProxy::getAllCookies): |
| (WebKit::WebCookieManagerProxy::getCookies): |
| (WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy): |
| (WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::getProcessDisplayName): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::setThirdPartyCookieBlockingMode): |
| (WebKit::WebProcessProxy::fetchWebsiteData): |
| (WebKit::WebProcessProxy::deleteWebsiteData): |
| (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins): |
| (WebKit::WebProcessProxy::sendPrepareToSuspend): |
| (WebKit::WebProcessProxy::activePagesDomainsForTesting): |
| (WebKit::WebProcessProxy::establishServiceWorkerContext): |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::insertTextPlaceholder): |
| (WebKit::WebPageProxy::removeTextPlaceholder): |
| (WebKit::WebPageProxy::requestAutocorrectionData): |
| (WebKit::WebPageProxy::requestEvasionRectsAboveSelection): |
| (WebKit::WebPageProxy::updateSelectionWithDelta): |
| (WebKit::WebPageProxy::requestDocumentEditingContext): |
| (WebKit::WebPageProxy::insertDroppedImagePlaceholders): |
| |
| 2020-05-07 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] REGRESSION(r260996): Pressing <Tab> in an HTTP authentication dialog makes the dialog lose focus |
| https://bugs.webkit.org/show_bug.cgi?id=211555 |
| |
| Reviewed by Philippe Normand. |
| |
| Bring back webkitWebViewBaseFocus to GTK3. I made it GTK4 only by mistake in r260996. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseFocus): |
| (webkit_web_view_base_class_init): |
| |
| 2020-05-07 Philippe Normand <pnormand@igalia.com> |
| |
| [GTK] Build warning fixes |
| |
| Rubber-stamped by Žan Doberšek. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseGrabFocus): |
| * UIProcess/GPU/GPUProcessProxy.cpp: |
| (WebKit::GPUProcessProxy::getGPUProcessConnection): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::getNetworkProcessConnection): |
| |
| 2020-05-07 Youenn Fablet <youenn@apple.com> |
| |
| Sending WebRTC network packets should not go through the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=211291 |
| |
| Reviewed by Eric Carlson. |
| |
| Following on receiving RTC packets from a background thread, we also send RTC packets from a background thread. |
| Creation of the sockets also happens in a background thread. |
| LibWebRTCNetwork is getting the connection whenever a new connection to network process is created. |
| It will then hop to the RTC network thread to set the IPC connection to the libwebrtc socket factory. |
| |
| At creation of the socket, we get the IPC connection to the network process and keep a ref in the RTC socket. |
| In case network process crashed and the IPC connection of the RTC network is null, we hop to the main thread to create a new IPC connection. |
| This will fail the creation of the socket (as well as new ones as well) as long as the IPC connection to network process is not valid again. |
| |
| Covered by existing tests. |
| |
| * WebProcess/Network/webrtc/LibWebRTCNetwork.cpp: |
| (WebKit::LibWebRTCNetwork::setAsActive): |
| (WebKit::LibWebRTCNetwork::setConnection): |
| (WebKit::LibWebRTCNetwork::dispatchToThread): |
| * WebProcess/Network/webrtc/LibWebRTCNetwork.h: |
| (WebKit::LibWebRTCNetwork::connection): |
| (WebKit::LibWebRTCNetwork::isActive const): |
| * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: |
| (WebKit::LibWebRTCProvider::startedNetworkThread): |
| * WebProcess/Network/webrtc/LibWebRTCProvider.h: |
| * WebProcess/Network/webrtc/LibWebRTCSocket.cpp: |
| (WebKit::LibWebRTCSocket::SendTo): |
| (WebKit::LibWebRTCSocket::Close): |
| (WebKit::LibWebRTCSocket::SetOption): |
| (WebKit::LibWebRTCSocket::suspend): |
| * WebProcess/Network/webrtc/LibWebRTCSocket.h: |
| * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: |
| (WebKit::LibWebRTCSocketFactory::setConnection): |
| (WebKit::LibWebRTCSocketFactory::connection): |
| (WebKit::LibWebRTCSocketFactory::createServerTcpSocket): |
| (WebKit::LibWebRTCSocketFactory::createUdpSocket): |
| (WebKit::LibWebRTCSocketFactory::createClientTcpSocket): |
| (WebKit::LibWebRTCSocketFactory::createNewConnectionSocket): |
| (WebKit::LibWebRTCSocketFactory::addSocket): |
| (WebKit::LibWebRTCSocketFactory::removeSocket): |
| (WebKit::LibWebRTCSocketFactory::forSocketInGroup): |
| * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h: |
| |
| 2020-05-07 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK4] Stop using the GtkWidget.destroy vfunc |
| https://bugs.webkit.org/show_bug.cgi?id=211553 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| No new tests needed. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseDestroy): Removed. |
| (webkitWebViewBaseDispose): Bring in the code from the removed function, adapt |
| to use g_clear_pointer() to destroy the nested dialog. |
| (webkit_web_view_base_class_init): Do not set the GtkWidget.destroy vfunc. |
| |
| 2020-05-07 Philippe Normand <pnormand@igalia.com> |
| |
| [WPE][Qt] Enable by default |
| https://bugs.webkit.org/show_bug.cgi?id=211517 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| * PlatformWPE.cmake: Fix WPEQt build. |
| |
| |
| 2020-05-06 Alex Christensen <achristensen@webkit.org> |
| |
| Fix webkitpy tests after r261254 |
| https://bugs.webkit.org/show_bug.cgi?id=211112 |
| |
| test.messages.in was accidentally deleted instead of moved, and messages_unittest.py needed to be told of the new locations of results. |
| The rest is just running the generator to update results. |
| |
| * Scripts/MessageNames.cpp: |
| (IPC::description): |
| (IPC::receiverName): |
| (IPC::isValidMessageName): |
| * Scripts/MessageNames.h: |
| * Scripts/testMessageReceiver.cpp: |
| (Messages::WebPage::GetPluginProcessConnection::send): |
| (Messages::WebPage::TestMultipleAttributes::send): |
| (WebKit::WebPage::didReceiveMessage): |
| (WebKit::WebPage::didReceiveSyncMessage): |
| * Scripts/testMessages.h: |
| (Messages::WebPage::messageReceiverName): |
| (Messages::WebPage::LoadURL::name): |
| (Messages::WebPage::LoadURL::LoadURL): |
| (Messages::WebPage::LoadURL::arguments const): |
| (Messages::WebPage::LoadSomething::name): |
| (Messages::WebPage::LoadSomething::LoadSomething): |
| (Messages::WebPage::LoadSomething::arguments const): |
| (Messages::WebPage::TouchEvent::name): |
| (Messages::WebPage::TouchEvent::TouchEvent): |
| (Messages::WebPage::TouchEvent::arguments const): |
| (Messages::WebPage::AddEvent::name): |
| (Messages::WebPage::AddEvent::AddEvent): |
| (Messages::WebPage::AddEvent::arguments const): |
| (Messages::WebPage::LoadSomethingElse::name): |
| (Messages::WebPage::LoadSomethingElse::LoadSomethingElse): |
| (Messages::WebPage::LoadSomethingElse::arguments const): |
| (Messages::WebPage::DidReceivePolicyDecision::name): |
| (Messages::WebPage::DidReceivePolicyDecision::DidReceivePolicyDecision): |
| (Messages::WebPage::DidReceivePolicyDecision::arguments const): |
| (Messages::WebPage::Close::name): |
| (Messages::WebPage::Close::arguments const): |
| (Messages::WebPage::PreferencesDidChange::name): |
| (Messages::WebPage::PreferencesDidChange::PreferencesDidChange): |
| (Messages::WebPage::PreferencesDidChange::arguments const): |
| (Messages::WebPage::SendDoubleAndFloat::name): |
| (Messages::WebPage::SendDoubleAndFloat::SendDoubleAndFloat): |
| (Messages::WebPage::SendDoubleAndFloat::arguments const): |
| (Messages::WebPage::SendInts::name): |
| (Messages::WebPage::SendInts::SendInts): |
| (Messages::WebPage::SendInts::arguments const): |
| (Messages::WebPage::CreatePlugin::name): |
| (Messages::WebPage::CreatePlugin::CreatePlugin): |
| (Messages::WebPage::CreatePlugin::arguments const): |
| (Messages::WebPage::RunJavaScriptAlert::name): |
| (Messages::WebPage::RunJavaScriptAlert::RunJavaScriptAlert): |
| (Messages::WebPage::RunJavaScriptAlert::arguments const): |
| (Messages::WebPage::GetPlugins::name): |
| (Messages::WebPage::GetPlugins::GetPlugins): |
| (Messages::WebPage::GetPlugins::arguments const): |
| (Messages::WebPage::GetPluginProcessConnection::name): |
| (Messages::WebPage::GetPluginProcessConnection::GetPluginProcessConnection): |
| (Messages::WebPage::GetPluginProcessConnection::arguments const): |
| (Messages::WebPage::TestMultipleAttributes::name): |
| (Messages::WebPage::TestMultipleAttributes::arguments const): |
| (Messages::WebPage::TestParameterAttributes::name): |
| (Messages::WebPage::TestParameterAttributes::TestParameterAttributes): |
| (Messages::WebPage::TestParameterAttributes::arguments const): |
| (Messages::WebPage::TemplateTest::name): |
| (Messages::WebPage::TemplateTest::TemplateTest): |
| (Messages::WebPage::TemplateTest::arguments const): |
| (Messages::WebPage::SetVideoLayerID::name): |
| (Messages::WebPage::SetVideoLayerID::SetVideoLayerID): |
| (Messages::WebPage::SetVideoLayerID::arguments const): |
| (Messages::WebPage::DidCreateWebProcessConnection::name): |
| (Messages::WebPage::DidCreateWebProcessConnection::DidCreateWebProcessConnection): |
| (Messages::WebPage::DidCreateWebProcessConnection::arguments const): |
| (Messages::WebPage::InterpretKeyEvent::name): |
| (Messages::WebPage::InterpretKeyEvent::InterpretKeyEvent): |
| (Messages::WebPage::InterpretKeyEvent::arguments const): |
| (Messages::WebPage::DeprecatedOperation::name): |
| (Messages::WebPage::DeprecatedOperation::DeprecatedOperation): |
| (Messages::WebPage::DeprecatedOperation::arguments const): |
| (Messages::WebPage::ExperimentalOperation::name): |
| (Messages::WebPage::ExperimentalOperation::ExperimentalOperation): |
| (Messages::WebPage::ExperimentalOperation::arguments const): |
| (Messages::None::messageReceiverName): Deleted. |
| * Scripts/testMessagesReplies.h: |
| * Scripts/webkit/messages_unittest.py: |
| * Scripts/webkit/test.messages.in: Added. |
| |
| 2020-05-06 Megan Gardner <megan_gardner@apple.com> |
| |
| Context Menus presented from the wrong location when presented from sub-frames |
| https://bugs.webkit.org/show_bug.cgi?id=211537 |
| <rdar://problem/60390846> |
| |
| Reviewed by Tim Horton. |
| |
| The calculation for bounds for selection Information did not take frames into account, |
| so if a frame was used, the location would not be correct in the context of the whole |
| page, so the presentation location ended up being way off. |
| |
| * UIProcess/ios/forms/WKFileUploadPanel.mm: |
| (-[WKFileUploadPanel showDocumentPickerMenu]): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::boundsPositionInformation): |
| (WebKit::selectionPositionInformation): |
| |
| 2020-05-06 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r260689. |
| https://bugs.webkit.org/show_bug.cgi?id=211542 |
| |
| "Caused regressions deleting text and filling password fields" |
| (Requested by ddkilzer on #webkit). |
| |
| Reverted changeset: |
| |
| "WebPasteboardProxy::getPasteboardStringsForType() and |
| WebPasteboardProxy::readURLFromPasteboard() should check |
| return value of SharedMemory::createHandle()" |
| https://bugs.webkit.org/show_bug.cgi?id=211002 |
| https://trac.webkit.org/changeset/260689 |
| |
| 2020-05-06 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentObservation] Shutterstock search bar is not activated on the first tap |
| https://bugs.webkit.org/show_bug.cgi?id=211529 |
| <rdar://problem/58843932> |
| |
| Reviewed by Simon Fraser. |
| |
| Shutterstock has a “initial click” action which converts some “actionable” elements (<a>) to some other “actionable” elements (<button>). |
| If this initial click also happens to be on an element that triggers content observation (input), we see those changes as actionable content and not proceed with the click event (stay at hover). |
| Any subsequent click works as expected. |
| It’s very difficult to eliminate such false positives since all we see is that some "actionable" content is going away while some "actionable" content is being created. |
| This quirk ensures that the first tap on the page does not trigger content observation. (It also means that any hover menu gets submitted on the first tap, but apparently |
| the Shutterstock top menu bar works fine with click events.) |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::didStartPageTransition): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleSyntheticClick): |
| |
| 2020-05-06 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Use CocoaColor in more places instead of platform defines |
| https://bugs.webkit.org/show_bug.cgi?id=211527 |
| |
| Reviewed by Darin Adler and Tim Horton. |
| |
| Use CocoaColor (added in r261247) in more places, and also introduce `CocoaFont.h` and use it to simplify some |
| existing code that uses platform ifdefs for UIFont, NSFont, UIFontDescriptor and NSFontDescriptor. |
| |
| No change in behavior. |
| |
| * Platform/cocoa/CocoaColor.h: |
| * Platform/cocoa/CocoaFont.h: Copied from Source/WebKit/Platform/cocoa/CocoaColor.h. |
| * Platform/cocoa/CocoaImage.h: |
| |
| Change `@class`es to `OBJC_CLASS`, so that this header can be safely imported in C++ code. |
| |
| * Shared/Cocoa/ArgumentCodersCocoa.mm: |
| (IPC::typeFromObject): |
| (IPC::isSerializableValue): |
| (IPC::encodeFontInternal): |
| (IPC::encodeObject): |
| (IPC::platformColorClass): Deleted. |
| (IPC::platformFontClass): Deleted. |
| * Shared/Cocoa/CoreTextHelpers.h: |
| * Shared/Cocoa/CoreTextHelpers.mm: |
| (WebKit::fontWithAttributes): |
| * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: |
| * UIProcess/Cocoa/WKSafeBrowsingWarning.h: |
| * UIProcess/Cocoa/WKSafeBrowsingWarning.mm: |
| (fontOfSize): |
| (colorForItem): |
| (-[WKSafeBrowsingBox setSafeBrowsingBackgroundColor:]): |
| (-[WKSafeBrowsingWarning showDetailsClicked]): |
| (-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]): |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::updateFontManagerIfNeeded): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-05-06 Alex Christensen <achristensen@webkit.org> |
| |
| Reduce IPC overhead for message receiver name and message name to 2 bytes |
| https://bugs.webkit.org/show_bug.cgi?id=211112 |
| |
| Reviewed by Chris Dumez. |
| |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * GPUProcess/GPUConnectionToWebProcess.cpp: |
| (WebKit::GPUConnectionToWebProcess::didReceiveInvalidMessage): |
| * GPUProcess/GPUConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): |
| (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage): |
| (WebKit::NetworkConnectionToWebProcess::didReceiveInvalidMessage): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::didReceiveMessage): |
| (WebKit::NetworkProcess::didReceiveSyncMessage): |
| * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAddMessageReceiver): Deleted. |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorRemoveMessageReceiver): Deleted. |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::WaitForMessageState::WaitForMessageState): |
| (IPC::Connection::addWorkQueueMessageReceiver): |
| (IPC::Connection::removeWorkQueueMessageReceiver): |
| (IPC::Connection::dispatchWorkQueueMessageReceiverMessage): |
| (IPC::Connection::addThreadMessageReceiver): |
| (IPC::Connection::removeThreadMessageReceiver): |
| (IPC::Connection::dispatchThreadMessageReceiverMessage): |
| (IPC::Connection::createSyncMessageEncoder): |
| (IPC::Connection::sendMessage): |
| (IPC::Connection::waitForMessage): |
| (IPC::Connection::sendSyncMessage): |
| (IPC::Connection::waitForSyncReply): |
| (IPC::Connection::processIncomingMessage): |
| (IPC::Connection::dispatchSyncMessage): |
| (IPC::Connection::dispatchDidReceiveInvalidMessage): |
| (IPC::Connection::dispatchMessage): |
| (IPC::Connection::dispatchMessageToWorkQueueReceiver): |
| (IPC::Connection::dispatchMessageToThreadReceiver): |
| (IPC::Connection::dispatchIncomingMessages): |
| * Platform/IPC/Connection.h: |
| (IPC::Connection::send): |
| (IPC::Connection::sendWithAsyncReply): |
| (IPC::Connection::sendSync): |
| (IPC::Connection::waitForAndDispatchImmediately): |
| * Platform/IPC/Decoder.cpp: |
| * Platform/IPC/Decoder.h: |
| (IPC::Decoder::messageReceiverName const): |
| (IPC::Decoder::messageName const): |
| (IPC::Decoder::decode): |
| (IPC::Decoder::operator>>): |
| * Platform/IPC/Encoder.cpp: |
| (IPC::Encoder::Encoder): |
| (IPC::Encoder::encodeHeader): |
| * Platform/IPC/Encoder.h: |
| * Platform/IPC/HandleMessage.h: |
| (IPC::handleMessageAsync): |
| * Platform/IPC/MessageReceiverMap.cpp: |
| (IPC::MessageReceiverMap::addMessageReceiver): |
| (IPC::MessageReceiverMap::removeMessageReceiver): |
| (IPC::MessageReceiverMap::dispatchMessage): |
| (IPC::MessageReceiverMap::dispatchSyncMessage): |
| * Platform/IPC/MessageReceiverMap.h: |
| * Platform/IPC/MessageSender.h: |
| * Platform/IPC/cocoa/ConnectionCocoa.mm: |
| (IPC::Connection::open): |
| (IPC::Connection::sendMessage): |
| (IPC::Connection::sendOutgoingMessage): |
| (IPC::Connection::receiveSourceEventHandler): |
| * Platform/IPC/cocoa/MachMessage.cpp: |
| (IPC::MachMessage::create): |
| (IPC::MachMessage::MachMessage): |
| * Platform/IPC/cocoa/MachMessage.h: |
| (IPC::MachMessage::messageReceiverName const): |
| (IPC::MachMessage::messageName const): |
| * PluginProcess/WebProcessConnection.cpp: |
| (WebKit::WebProcessConnection::didReceiveInvalidMessage): |
| * PluginProcess/WebProcessConnection.h: |
| * Scripts/Makefile: |
| * Scripts/generate-message-receiver.py: |
| (main): |
| * Scripts/webkit/LegacyMessages-expected.h: Removed. |
| * Scripts/webkit/LegacyMessagesReplies-expected.h: Removed. |
| * Scripts/webkit/MessageNames.cpp: Added. |
| (IPC::description): |
| * Scripts/webkit/MessageNames.h: Added. |
| (IPC::receiverName): |
| (WTF::isValidEnum): |
| * Scripts/webkit/MessageReceiver-expected.cpp: Removed. |
| * Scripts/webkit/MessageReceiverSuperclass-expected.cpp: Removed. |
| * Scripts/webkit/Messages-expected.h: Removed. |
| * Scripts/webkit/MessagesReplies-expected.h: Removed. |
| * Scripts/webkit/MessagesRepliesSuperclassReplies-expected.h: Removed. |
| * Scripts/webkit/MessagesSuperclass-expected.h: Removed. |
| * Scripts/webkit/messages.py: |
| * Scripts/webkit/test-legacy-messages.in: Removed. |
| * Scripts/webkit/test-legacy.messages.in: Copied from Source/WebKit/Scripts/webkit/test-legacy-messages.in. |
| * Scripts/webkit/test-legacyMessageReceiver.cpp: Added. |
| (Messages::WebPage::GetPluginProcessConnection::send): |
| (Messages::WebPage::TestMultipleAttributes::send): |
| (WebKit::WebPage::didReceiveWebPageMessage): |
| (WebKit::WebPage::didReceiveSyncWebPageMessage): |
| * Scripts/webkit/test-legacyMessages.h: Added. |
| (Messages::WebPage::messageReceiverName): |
| (Messages::WebPage::LoadURL::name): |
| (Messages::WebPage::LoadURL::LoadURL): |
| (Messages::WebPage::LoadURL::arguments const): |
| (Messages::WebPage::LoadSomething::name): |
| (Messages::WebPage::LoadSomething::LoadSomething): |
| (Messages::WebPage::LoadSomething::arguments const): |
| (Messages::WebPage::TouchEvent::name): |
| (Messages::WebPage::TouchEvent::TouchEvent): |
| (Messages::WebPage::TouchEvent::arguments const): |
| (Messages::WebPage::AddEvent::name): |
| (Messages::WebPage::AddEvent::AddEvent): |
| (Messages::WebPage::AddEvent::arguments const): |
| (Messages::WebPage::LoadSomethingElse::name): |
| (Messages::WebPage::LoadSomethingElse::LoadSomethingElse): |
| (Messages::WebPage::LoadSomethingElse::arguments const): |
| (Messages::WebPage::DidReceivePolicyDecision::name): |
| (Messages::WebPage::DidReceivePolicyDecision::DidReceivePolicyDecision): |
| (Messages::WebPage::DidReceivePolicyDecision::arguments const): |
| (Messages::WebPage::Close::name): |
| (Messages::WebPage::Close::arguments const): |
| (Messages::WebPage::PreferencesDidChange::name): |
| (Messages::WebPage::PreferencesDidChange::PreferencesDidChange): |
| (Messages::WebPage::PreferencesDidChange::arguments const): |
| (Messages::WebPage::SendDoubleAndFloat::name): |
| (Messages::WebPage::SendDoubleAndFloat::SendDoubleAndFloat): |
| (Messages::WebPage::SendDoubleAndFloat::arguments const): |
| (Messages::WebPage::SendInts::name): |
| (Messages::WebPage::SendInts::SendInts): |
| (Messages::WebPage::SendInts::arguments const): |
| (Messages::WebPage::CreatePlugin::name): |
| (Messages::WebPage::CreatePlugin::CreatePlugin): |
| (Messages::WebPage::CreatePlugin::arguments const): |
| (Messages::WebPage::RunJavaScriptAlert::name): |
| (Messages::WebPage::RunJavaScriptAlert::RunJavaScriptAlert): |
| (Messages::WebPage::RunJavaScriptAlert::arguments const): |
| (Messages::WebPage::GetPlugins::name): |
| (Messages::WebPage::GetPlugins::GetPlugins): |
| (Messages::WebPage::GetPlugins::arguments const): |
| (Messages::WebPage::GetPluginProcessConnection::name): |
| (Messages::WebPage::GetPluginProcessConnection::GetPluginProcessConnection): |
| (Messages::WebPage::GetPluginProcessConnection::arguments const): |
| (Messages::WebPage::TestMultipleAttributes::name): |
| (Messages::WebPage::TestMultipleAttributes::arguments const): |
| (Messages::WebPage::TestParameterAttributes::name): |
| (Messages::WebPage::TestParameterAttributes::TestParameterAttributes): |
| (Messages::WebPage::TestParameterAttributes::arguments const): |
| (Messages::WebPage::TemplateTest::name): |
| (Messages::WebPage::TemplateTest::TemplateTest): |
| (Messages::WebPage::TemplateTest::arguments const): |
| (Messages::WebPage::SetVideoLayerID::name): |
| (Messages::WebPage::SetVideoLayerID::SetVideoLayerID): |
| (Messages::WebPage::SetVideoLayerID::arguments const): |
| (Messages::WebPage::DidCreateWebProcessConnection::name): |
| (Messages::WebPage::DidCreateWebProcessConnection::DidCreateWebProcessConnection): |
| (Messages::WebPage::DidCreateWebProcessConnection::arguments const): |
| (Messages::WebPage::InterpretKeyEvent::name): |
| (Messages::WebPage::InterpretKeyEvent::InterpretKeyEvent): |
| (Messages::WebPage::InterpretKeyEvent::arguments const): |
| (Messages::WebPage::DeprecatedOperation::name): |
| (Messages::WebPage::DeprecatedOperation::DeprecatedOperation): |
| (Messages::WebPage::DeprecatedOperation::arguments const): |
| (Messages::WebPage::ExperimentalOperation::name): |
| (Messages::WebPage::ExperimentalOperation::ExperimentalOperation): |
| (Messages::WebPage::ExperimentalOperation::arguments const): |
| * Scripts/webkit/test-legacyMessagesReplies.h: Added. |
| * Scripts/webkit/test-messages.in: Removed. |
| * Scripts/webkit/test-superclass-messages.in: Removed. |
| * Scripts/webkit/test-superclass.messages.in: Copied from Source/WebKit/Scripts/webkit/test-superclass-messages.in. |
| * Scripts/webkit/test-superclassMessageReceiver.cpp: Added. |
| (Messages::WebPage::TestAsyncMessage::callReply): |
| (Messages::WebPage::TestAsyncMessage::cancelReply): |
| (Messages::WebPage::TestAsyncMessage::send): |
| (Messages::WebPage::TestAsyncMessageWithNoArguments::callReply): |
| (Messages::WebPage::TestAsyncMessageWithNoArguments::cancelReply): |
| (Messages::WebPage::TestAsyncMessageWithNoArguments::send): |
| (Messages::WebPage::TestAsyncMessageWithMultipleArguments::callReply): |
| (Messages::WebPage::TestAsyncMessageWithMultipleArguments::cancelReply): |
| (Messages::WebPage::TestAsyncMessageWithMultipleArguments::send): |
| (Messages::WebPage::TestSyncMessage::send): |
| (Messages::WebPage::TestSynchronousMessage::send): |
| (WebKit::WebPage::didReceiveMessage): |
| (WebKit::WebPage::didReceiveSyncMessage): |
| * Scripts/webkit/test-superclassMessages.h: Added. |
| (Messages::WebPage::messageReceiverName): |
| (Messages::WebPage::LoadURL::name): |
| (Messages::WebPage::LoadURL::LoadURL): |
| (Messages::WebPage::LoadURL::arguments const): |
| (Messages::WebPage::TestAsyncMessage::name): |
| (Messages::WebPage::TestAsyncMessage::asyncMessageReplyName): |
| (Messages::WebPage::TestAsyncMessage::TestAsyncMessage): |
| (Messages::WebPage::TestAsyncMessage::arguments const): |
| (Messages::WebPage::TestAsyncMessageWithNoArguments::name): |
| (Messages::WebPage::TestAsyncMessageWithNoArguments::asyncMessageReplyName): |
| (Messages::WebPage::TestAsyncMessageWithNoArguments::arguments const): |
| (Messages::WebPage::TestAsyncMessageWithMultipleArguments::name): |
| (Messages::WebPage::TestAsyncMessageWithMultipleArguments::asyncMessageReplyName): |
| (Messages::WebPage::TestAsyncMessageWithMultipleArguments::arguments const): |
| (Messages::WebPage::TestSyncMessage::name): |
| (Messages::WebPage::TestSyncMessage::TestSyncMessage): |
| (Messages::WebPage::TestSyncMessage::arguments const): |
| (Messages::WebPage::TestSynchronousMessage::name): |
| (Messages::WebPage::TestSynchronousMessage::TestSynchronousMessage): |
| (Messages::WebPage::TestSynchronousMessage::arguments const): |
| * Scripts/webkit/test-superclassMessagesReplies.h: Added. |
| * Scripts/webkit/test.messages.in: Added. |
| * Scripts/webkit/testMessageReceiver.cpp: Added. |
| * Scripts/webkit/testMessages.h: Added. |
| (Messages::None::messageReceiverName): |
| * Scripts/webkit/testMessagesReplies.h: Added. |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.h: |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): |
| (WebKit::WebPaymentCoordinatorProxy::~WebPaymentCoordinatorProxy): |
| * Shared/AuxiliaryProcess.cpp: |
| (WebKit::AuxiliaryProcess::addMessageReceiver): |
| (WebKit::AuxiliaryProcess::removeMessageReceiver): |
| (WebKit::AuxiliaryProcess::didReceiveInvalidMessage): |
| * Shared/AuxiliaryProcess.h: |
| (WebKit::AuxiliaryProcess::addMessageReceiver): |
| (WebKit::AuxiliaryProcess::removeMessageReceiver): |
| * Shared/Cocoa/AuxiliaryProcessCocoa.mm: |
| (WebKit::AuxiliaryProcess::didReceiveInvalidMessage): |
| * SourcesCocoa.txt: |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::addMessageReceiver): |
| (WebKit::AuxiliaryProcessProxy::removeMessageReceiver): |
| (WebKit::AuxiliaryProcessProxy::logInvalidMessage): |
| * UIProcess/AuxiliaryProcessProxy.h: |
| (WebKit::AuxiliaryProcessProxy::addMessageReceiver): |
| (WebKit::AuxiliaryProcessProxy::removeMessageReceiver): |
| (WebKit::AuxiliaryProcessProxy::send): |
| (WebKit::AuxiliaryProcessProxy::sendWithAsyncReply): |
| * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h: |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::paymentCoordinatorAddMessageReceiver): Deleted. |
| (WebKit::WebPageProxy::paymentCoordinatorRemoveMessageReceiver): Deleted. |
| * UIProcess/GPU/GPUProcessProxy.cpp: |
| (WebKit::GPUProcessProxy::didReceiveInvalidMessage): |
| * UIProcess/GPU/GPUProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didReceiveInvalidMessage): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Plugins/PluginProcessProxy.cpp: |
| (WebKit::PluginProcessProxy::didReceiveInvalidMessage): |
| * UIProcess/Plugins/PluginProcessProxy.h: |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::didReceiveMessage): |
| * UIProcess/SuspendedPageProxy.cpp: |
| (WebKit::messageNamesToIgnoreWhileSuspended): |
| (WebKit::SuspendedPageProxy::didReceiveMessage): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::didReceiveInvalidMessage): |
| (WebKit::WebProcessPool::addMessageReceiver): |
| (WebKit::WebProcessPool::removeMessageReceiver): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::shouldSendPendingMessage): |
| (WebKit::WebProcessProxy::didReceiveInvalidMessage): |
| * UIProcess/WebProcessProxy.h: |
| * WebProcess/GPU/GPUProcessConnection.cpp: |
| (WebKit::GPUProcessConnection::didReceiveInvalidMessage): |
| * WebProcess/GPU/GPUProcessConnection.h: |
| * WebProcess/Inspector/WebInspector.h: |
| * WebProcess/Inspector/WebInspectorUI.h: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::didReceiveInvalidMessage): |
| * WebProcess/Network/NetworkProcessConnection.h: |
| * WebProcess/Plugins/PluginProcessConnection.cpp: |
| (WebKit::PluginProcessConnection::didReceiveInvalidMessage): |
| * WebProcess/Plugins/PluginProcessConnection.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::updateRendering): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::didReceiveMessage): |
| |
| 2020-05-06 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r260684): Reader background is lost after multitasking |
| https://bugs.webkit.org/show_bug.cgi?id=211533 |
| <rdar://problem/62941837> |
| |
| Unreviewed, revert r260684 due to regression. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::setShouldFireResizeEvents): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WKApplicationStateTrackingView.mm: |
| (-[WKApplicationStateTrackingView _willBeginSnapshotSequence]): |
| (-[WKApplicationStateTrackingView _didCompleteSnapshotSequence]): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::setShouldFireResizeEvents): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-05-06 Kate Cheney <katherine_cheney@apple.com> |
| |
| ResourceLoadStatistics data summary call should create a web process pool if one doesn't exist |
| https://bugs.webkit.org/show_bug.cgi?id=211520 |
| <rdar://problem/59869619> |
| |
| Reviewed by Chris Dumez. |
| |
| Ensures that a process pool and network process exist when requesting |
| resource load statistics data. |
| |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::getResourceLoadStatisticsDataSummary): |
| |
| 2020-05-06 Keith Rollin <krollin@apple.com> |
| |
| Better surfacing of the presenting parent PID in the Network process |
| https://bugs.webkit.org/show_bug.cgi?id=211495 |
| <rdar://problem/62917205> |
| |
| Reviewed by Youenn Fablet. |
| |
| In Bug 205295, NetworkResourceLoader logging was improved, with one of |
| the changes being that the PID of parent process that invoked the |
| Network process was logged at the start of |
| NetworkResourceLoader::start(). However, there was an execution path |
| that skipped calling start() |
| (NetworkConnectionToWebProcess::scheduleResourceLoad -> |
| NetworkResourceLoader::startWithServiceWorker -> |
| serviceWorkerDidNotHandle -> restartNetworkLoad -> startNetworkLoad), |
| and so the the logging would not show the parent PID. This logging is |
| needed for diagnostic purposes, so tweak the logging a little bit more |
| in order to ensure we emit it. In this change, logging is added to |
| various loading-related NetworkConnectionToWebProcess entry points |
| (not just scheduleResourceLoad) in order to (a) ensure we emit the |
| logging we want and (b) to give a clearer picture of what operations |
| are being invoked in the Network process. |
| |
| No new tests -- no new or changed functionality. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::hasUploadStateChanged): |
| (WebKit::NetworkConnectionToWebProcess::resolveBlobReferences): |
| (WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad): |
| (WebKit::NetworkConnectionToWebProcess::performSynchronousLoad): |
| (WebKit::NetworkConnectionToWebProcess::loadPing): |
| (WebKit::NetworkConnectionToWebProcess::preconnectTo): |
| (WebKit::NetworkConnectionToWebProcess::serverToContextConnectionNoLongerNeeded): |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::start): |
| |
| 2020-05-06 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Cut and paste from Google Doc to Notes in several (non-Latin) languages doesn't work |
| https://bugs.webkit.org/show_bug.cgi?id=211498 |
| <rdar://problem/56675345> |
| |
| Reviewed by Darin Adler. |
| |
| Add a new header to allow Cocoa code to reason about UIColors and NSColors on iOS and macOS (respectively) |
| without requiring platform ifdefs. A followup patch will adopt this in several places in WebKit, where we |
| currently need ifdefs for iOS and macOS. |
| |
| * Platform/cocoa/CocoaColor.h: Added. |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-05-06 Antoine Quint <graouts@apple.com> |
| |
| pointermove event sometimes has incorrect pointerType of 'mouse' on touch interactions |
| https://bugs.webkit.org/show_bug.cgi?id=210716 |
| <rdar://problem/62084817> |
| |
| Reviewed by Darin Adler. |
| |
| Set the SyntheticClickType to OneFingerTap when creating a synthetic "mousemove" event for a synthetic "click" event as part of a tap. |
| On top of being more indicative of the actual action that triggered the synthetic event, it also has the added quality that it will |
| not yield a "pointermove" event. |
| |
| Test: pointerevents/ios/click-no-pointermove.html |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::dispatchSyntheticMouseMove): |
| |
| 2020-05-06 John Wilander <wilander@apple.com> |
| |
| Exempt app-bound domains from ITP's website data deletion and third-party cookie blocking between themselves |
| https://bugs.webkit.org/show_bug.cgi?id=210674 |
| <rdar://problem/61950767> |
| |
| Reviewed by Chris Dumez. |
| |
| This change forwards information about app-bound domains to ITP and web |
| processes so that they can be exempt from website data deletion and |
| third-party cookie blocking between themselves. |
| |
| App-bound domains are configured statically and apply to all website |
| data stores. Therefore the setting needs to be forwarded to all |
| website data stores and ITP functionality in all network and web |
| content processes. This is done through the new static function |
| WebsiteDataStore::setAppBoundDomainsForITPIfInitialized(). |
| |
| Since app-bound domains are loaded lazily from disk and on a background |
| thread, this patch forwards them in ResourceLoadStatisticsParameters if |
| they've already been loaded. Then every time app-bound domains are |
| updated, they are forwarded to ITP. This ensures that ITP will have them |
| as soon as possible. |
| |
| Setting app-bound domains for the purposes of ITP automatically switches |
| ITP's cookie blocking policy to the new |
| WebCore::ThirdPartyCookieBlockingMode::AllExceptBetweenAppBoundDomains. |
| This is done in WebResourceLoadStatisticsStore::setAppBoundDomains(). |
| |
| The C API changes are for test purposes. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::setAppBoundDomains): |
| (WebKit::ResourceLoadStatisticsStore::resetParametersToDefaultValues): |
| (WebKit::ResourceLoadStatisticsStore::shouldExemptFromWebsiteDataDeletion const): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| (WebKit::ResourceLoadStatisticsStore::standaloneApplicationDomain const): Deleted. |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::setAppBoundDomains): |
| (WebKit::WebResourceLoadStatisticsStore::resetParametersToDefaultValues): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::setAppBoundDomainsForResourceLoadStatistics): |
| (WebKit::NetworkProcess::setThirdPartyCookieBlockingMode): |
| (WebKit::NetworkProcess::setShouldBlockThirdPartyCookiesForTesting): Deleted. |
| Renamed setThirdPartyCookieBlockingMode. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * Shared/ResourceLoadStatisticsParameters.h: |
| (WebKit::ResourceLoadStatisticsParameters::encode const): |
| (WebKit::ResourceLoadStatisticsParameters::decode): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetAppBoundDomainsForTesting): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::setAppBoundDomainsForResourceLoadStatistics): |
| (WebKit::NetworkProcessProxy::setThirdPartyCookieBlockingMode): |
| (WebKit::NetworkProcessProxy::setShouldBlockThirdPartyCookiesForTesting): Deleted. |
| Renamed setThirdPartyCookieBlockingMode. |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::setThirdPartyCookieBlockingMode): |
| (WebKit::WebProcessProxy::setShouldBlockThirdPartyCookiesForTesting): Deleted. |
| Renamed setThirdPartyCookieBlockingMode. |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::initializeAppBoundDomains): |
| (WebKit::WebsiteDataStore::ensureAppBoundDomains const): |
| (WebKit::WebsiteDataStore::appBoundDomainsIfInitialized): |
| This function allows fetching of app-bound domains without triggering |
| the lazy loading. This is just to allow speculative configuration of ITP |
| right when it's created — if any app-bound domains are already configured, |
| forward them to ITP via ResourceLoadStatisticsParameters. |
| (WebKit::WebsiteDataStore::setAppBoundDomainsForTesting): |
| This function is Cocoa-specific and only accepts localhost and 127.0.0.1 |
| to be configured as app-bound domains. |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting): |
| (WebKit::WebsiteDataStore::setThirdPartyCookieBlockingMode): |
| (WebKit::WebsiteDataStore::parameters): |
| (WebKit::WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialized): |
| (WebKit::WebsiteDataStore::setAppBoundDomainsForITP): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::setThirdPartyCookieBlockingMode): |
| (WebKit::WebProcess::setShouldBlockThirdPartyCookiesForTesting): Deleted. |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebProcess.messages.in: |
| |
| 2020-05-06 Daniel Bates <dabates@apple.com> |
| |
| [iOS] ASSERTION FAILED: !(_keyboardFlags & WebEventKeyboardInputModifierFlagsChanged) in -[WebEvent charactersIgnoringModifiers] when pressing modifier on PDF |
| https://bugs.webkit.org/show_bug.cgi?id=211472 |
| |
| Reviewed by Darin Adler. |
| |
| Do not ask for event character string for a flags changed event: they don't have one. |
| |
| Test: fast/events/ios/pdf-modifer-key-down-crash.html |
| |
| * UIProcess/ios/WKKeyboardScrollingAnimator.mm: |
| (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]): |
| |
| 2020-05-06 Brent Fulgham <bfulgham@apple.com> |
| |
| [MacCatalyst] Processes should check for network entitlement as we do for macOS apps |
| https://bugs.webkit.org/show_bug.cgi?id=211474 |
| <rdar://problem/61182060> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| We should make the same entitlement checks in MacCatalyst as we do for macOS. |
| |
| * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm: |
| (WebKit::XPCServiceInitializerDelegate::checkEntitlements): |
| |
| 2020-05-06 Darin Adler <darin@apple.com> |
| |
| Eliminate checks of USE(DICTATION_ALTERNATIVES) in Cocoa-specific code |
| https://bugs.webkit.org/show_bug.cgi?id=211460 |
| |
| Reviewed by Anders Carlsson. |
| |
| * UIProcess/Cocoa/PageClientImplCocoa.h: Remove USE(DICTATION_ALTERNATIVES). |
| Also remove unnecessary use of RetainPtr. |
| * UIProcess/Cocoa/PageClientImplCocoa.mm: |
| (WebKit::PageClientImplCocoa::PageClientImplCocoa): Ditto. |
| (WebKit::PageClientImplCocoa::pageClosed): Ditto. |
| (WebKit::PageClientImplCocoa::dictationAlternatives): Ditto. |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::insertDictatedTextAsync): Ditto. |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::validAttributesForMarkedText): Ditto. |
| (WebKit::WebViewImpl::insertText): Ditto. |
| * UIProcess/PageClient.h: Ditto. |
| * UIProcess/ios/PageClientImplIOS.h: Ditto. |
| * UIProcess/ios/PageClientImplIOS.mm: Ditto. |
| * UIProcess/ios/WKContentViewInteraction.mm: Ditto. |
| * UIProcess/mac/PageClientImplMac.h: Ditto. |
| * UIProcess/mac/PageClientImplMac.mm: Ditto. |
| * WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp: Ditto. |
| |
| 2020-05-06 Lauro Moura <lmoura@igalia.com> |
| |
| [GTK] Cleanup KeyBindingTranslator on WebView disposal |
| https://bugs.webkit.org/show_bug.cgi?id=211465 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Fixes assertion in debug mode when a test failed and the widget |
| followed a destruction pattern where KeyBindingTranslator would be |
| destroyed before the container widget is cleaned up. |
| |
| Also renamed the method from 'destroyed' to 'invalidate' to try to |
| better convey the action being performed on the KeyBindingTranslator. |
| |
| Covered by existing tests. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseContainerRemove): Update method name. |
| (webkitWebViewBaseDispose): Cleanup keyBindingTranslator when |
| disposing this widget. |
| * UIProcess/gtk/KeyBindingTranslator.h: |
| (WebKit::KeyBindingTranslator::invalidate): Renamed from destroyed. |
| (WebKit::KeyBindingTranslator::destroyed): Deleted. |
| |
| 2020-05-06 Darin Adler <darin@apple.com> |
| |
| Reduce HAVE(HOSTED_CORE_ANIMATION) |
| https://bugs.webkit.org/show_bug.cgi?id=211423 |
| |
| Reviewed by Anders Carlsson. |
| |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): Removed redundant #if |
| checking both HAVE(HOSTED_CORE_ANIMATION) and !PLATFORM(IOS_FAMILY). |
| |
| * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: |
| (WebKit::PluginProcessProxy::platformInitializePluginProcess): Removed unnecessary |
| HAVE(HOSTED_CORE_ANIMATION) check in code that is only compiled for macOS. |
| |
| 2020-05-05 David Kilzer <ddkilzer@apple.com> |
| |
| Fix deprecated NSGraphicsContext methods using 'graphicsPort' |
| <https://webkit.org/b/211481> |
| |
| Reviewed by Darin Adler. |
| |
| - Replace uses of -graphicsPort with -CGContext. |
| - Replace uses of -graphicsContextWithGraphicsPort:flipped: with |
| -graphicsContextWithCGContext:flipped:. |
| - Remove ALLOW_DEPRECATED_DECLARATIONS_{BEGIN,END} if possible. |
| |
| * UIProcess/mac/WKPrintingView.mm: |
| (-[WKPrintingView _drawPDFDocument:page:atPoint:]): |
| (-[WKPrintingView _drawPreview:]): |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::drawPDFPage): |
| |
| 2020-05-05 Zalan Bujtas <zalan@apple.com> |
| |
| [Quirk] Job listing page goes blank when scrolling on stackoverflow.com |
| https://bugs.webkit.org/show_bug.cgi?id=211480 |
| <rdar://problem/62558405> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Add the option of returning "use desktop web content" on any configuration when the host application asks for content recommendation. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::desktopClassBrowsingRecommendedForRequest): |
| (WebKit::desktopClassBrowsingRecommended): |
| (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): |
| |
| 2020-05-05 Chris Dumez <cdumez@apple.com> |
| |
| Crash under _LSSetApplicationInformationItem() |
| https://bugs.webkit.org/show_bug.cgi?id=211478 |
| <rdar://problem/62201314> |
| |
| Reviewed by Alex Christensen. |
| |
| Given the crashes, I suspect it is not actually safe to call _LSSetApplicationInformationItem() |
| from a non main-thread like it was done in r238289. We still run the code asynchronously to |
| address the issue that r238289 was trying to fix but we now call _LSSetApplicationInformationItem() |
| on the main thread. |
| |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::updateProcessName): |
| (WebKit::WebProcess::updateActivePages): |
| (WebKit::setProcessNameQueue): Deleted. |
| |
| 2020-05-05 Peng Liu <peng.liu6@apple.com> |
| |
| Update WebKitTestRunner to support running multiple video fullscreen and Picture-in-Picture tests simultaneously |
| https://bugs.webkit.org/show_bug.cgi?id=203723 |
| |
| Reviewed by Jer Noble. |
| |
| When the flag MockVideoPresentationModeEnabled is true, the VideoFullscreenManagerProxy in the UI process |
| will mock the behavior of the VideoFullscreenInterface[Mac|AVKit]. |
| |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.h: |
| (WebKit::VideoFullscreenManagerProxy::setMockVideoPresentationModeEnabled): |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: |
| (WebKit::VideoFullscreenManagerProxy::requestHideAndExitFullscreen): |
| (WebKit::VideoFullscreenManagerProxy::applicationDidBecomeActive): |
| (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID): |
| (WebKit::VideoFullscreenManagerProxy::setHasVideo): |
| (WebKit::VideoFullscreenManagerProxy::setVideoDimensions): |
| (WebKit::VideoFullscreenManagerProxy::enterFullscreen): |
| (WebKit::VideoFullscreenManagerProxy::exitFullscreen): |
| (WebKit::VideoFullscreenManagerProxy::exitFullscreenWithoutAnimationToMode): |
| (WebKit::VideoFullscreenManagerProxy::setInlineRect): |
| (WebKit::VideoFullscreenManagerProxy::setHasVideoContentLayer): |
| (WebKit::VideoFullscreenManagerProxy::cleanupFullscreen): |
| (WebKit::VideoFullscreenManagerProxy::preparedToReturnToInline): |
| (WebKit::VideoFullscreenManagerProxy::preparedToExitFullscreen): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::didAttachToRunningProcess): |
| (WebKit::WebPageProxy::setMockVideoPresentationModeEnabled): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::setMockVideoPresentationModeEnabled): |
| (WebKit::WebChromeClient::setUpPlaybackControlsManager): |
| (WebKit::WebChromeClient::clearPlaybackControlsManager): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/cocoa/VideoFullscreenManager.h: |
| |
| 2020-05-05 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed fix for MotionMark regression. |
| |
| Revert minor part of r260017. Remove telemetry from IOKit filtering allow rules. This telemetry is causing higher |
| CPU usage on the system, and is not needed, since we have already confirmed these messages are being used. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-05-05 Daniel Bates <dabates@apple.com> |
| |
| Should show selection highlight during text interaction |
| https://bugs.webkit.org/show_bug.cgi?id=211362 |
| <rdar://problem/59191873> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Break out text interaction tracking into its own ivar instead of using the |
| WebKit::InteractionIsHappening selection suppression reason so that I can |
| key off it to only disallow zooming to reveal the focused element during |
| a text interaction. The selection suppression machinery does more than this. |
| It also deactivates selection assistance, painting of highlights, etc, which |
| I don't want. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView cleanUpInteraction]): Reset state. |
| (-[WKContentView becomeFirstResponderForWebView]): Activate selection assistant |
| during a text interaction if the selection assistant is not being suppressed. |
| (-[WKContentView _zoomToRevealFocusedElement]): Early return if called during a |
| text interaction. The function -_didFinishTextInteractionInTextInputContext will |
| trigger the zoom after the interaction completes. |
| (-[WKContentView _didCommitLoadForMainFrame]): Reset state. |
| |
| (-[WKContentView _willBeginTextInteractionInTextInputContext:]): |
| (-[WKContentView _didFinishTextInteractionInTextInputContext:]): |
| Update state. While I am here, text interaction is considered a gesture so |
| also update _usingGestureForSelection. This means that the selection view |
| will be updated immediately on a selection change during a text interaction |
| instead of waiting until the next layer tree commit occurs. |
| |
| 2020-05-05 Kate Cheney <katherine_cheney@apple.com> |
| |
| Check for app-bound domains should confirm WKAppBoundDomains key exists when checking for default app-bound protocols. |
| https://bugs.webkit.org/show_bug.cgi?id=211451 |
| <rdar://problem/62715316 |
| |
| Reviewed by Brent Fulgham. |
| |
| Checks for WKAppBoundDomains key before treating a protocol as |
| app-bound. This is a regression in expected behavior after making |
| In-App Browser privacy opt-in based on the presence of the key. |
| |
| Also moves the check for special protocols inside of the completion handler for |
| ensureAppBoundDomains to make sure the check for the key has finished. |
| |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::beginAppBoundDomainCheck): |
| Added a comment to clarify why we need to check for both an empty |
| app-bound domains list and the presence of the key for testing |
| purposes. |
| |
| 2020-05-05 Timothy Horton <timothy_horton@apple.com> |
| |
| "Essential Skeleton" does not respond to mouse events, only touch events |
| https://bugs.webkit.org/show_bug.cgi?id=211439 |
| <rdar://problem/62694519> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView shouldUseMouseGestureRecognizer]): |
| Add a quirk. |
| |
| 2020-05-05 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> |
| |
| Compile GPUProcess in WPE port as experimental feature |
| https://bugs.webkit.org/show_bug.cgi?id=211442 |
| |
| Reviewed by Don Olmstead. |
| |
| Enable GPU Process in WPE. |
| |
| This is compilation only. No new tests required. |
| |
| * PlatformWPE.cmake: Add Platform/generic include directory. |
| * SourcesWPE.txt: Add related source files. |
| |
| 2020-05-05 Youenn Fablet <youenn@apple.com> |
| |
| Remove LegacySchemeRegistry::canServiceWorkersHandleURLScheme |
| https://bugs.webkit.org/show_bug.cgi?id=211170 |
| |
| Reviewed by Alex Christensen. |
| |
| Remove unused parameters since they are no longer being set in UIProcess. |
| |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::initializeWebProcess): |
| |
| 2020-05-05 Darin Adler <darin@apple.com> |
| |
| Remove now-uneeded HAVE macros related to PDF |
| https://bugs.webkit.org/show_bug.cgi?id=211435 |
| |
| Reviewed by Anders Carlsson. |
| |
| * Platform/spi/ios/PDFKitSPI.h: Removed HAVE(PDFHOSTVIEWCONTROLLER_SNAPSHOTTING). |
| |
| * UIProcess/ios/WKPDFView.mm: |
| (-[WKPDFView web_initWithFrame:webView:mimeType:]): Removed |
| HAVE(PDF_HOST_VIEW_CONTROLLER_WITH_BACKGROUND_COLOR). |
| (+[WKPDFView web_requiresCustomSnapshotting]): Removed HAVE(PDFHOSTVIEWCONTROLLER_SNAPSHOTTING). |
| (-[WKPDFView web_snapshotRectInContentViewCoordinates:snapshotWidth:completionHandler:]): |
| Ditto. |
| |
| 2020-05-05 Youenn Fablet <youenn@apple.com> |
| |
| Receiving WebRTC network packets should not go through the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=211290 |
| |
| Reviewed by Alex Christensen. |
| |
| Instead of going to main thread before going to rtc network thread, we register a message receiver and dispatch directly to rtc network thread. |
| This ensures rtc packets are not blocked if main thread is busy. |
| |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp: |
| (WebKit::LibWebRTCSocketClient::signalReadPacket): |
| (WebKit::LibWebRTCSocketClient::signalSentPacket): |
| (WebKit::LibWebRTCSocketClient::signalAddressReady): |
| (WebKit::LibWebRTCSocketClient::signalConnect): |
| (WebKit::LibWebRTCSocketClient::signalClose): |
| * NetworkProcess/webrtc/NetworkRTCProvider.cpp: |
| (WebKit::NetworkRTCProvider::createSocket): |
| (WebKit::NetworkRTCProvider::createServerTCPSocket): |
| (WebKit::NetworkRTCProvider::createClientTCPSocket): |
| (WebKit::NetworkRTCProvider::newConnection): |
| (WebKit::NetworkRTCProvider::closeListeningSockets): |
| * Sources.txt: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::NetworkProcessConnection): |
| (WebKit::NetworkProcessConnection::didReceiveMessage): |
| * WebProcess/Network/webrtc/LibWebRTCNetwork.cpp: Added |
| * WebProcess/Network/webrtc/LibWebRTCNetwork.h: |
| (WebKit::LibWebRTCNetwork::connection): |
| (WebKit::LibWebRTCNetwork::~LibWebRTCNetwork): |
| (WebKit::LibWebRTCNetwork::networkProcessCrashed): |
| (WebKit::LibWebRTCNetwork::setConnection): |
| (WebKit::LibWebRTCNetwork::dispatchToThread): |
| (WebKit::LibWebRTCNetwork::signalAddressReady): |
| (WebKit::LibWebRTCNetwork::signalReadPacket): |
| (WebKit::LibWebRTCNetwork::signalSentPacket): |
| (WebKit::LibWebRTCNetwork::signalConnect): |
| (WebKit::LibWebRTCNetwork::signalClose): |
| (WebKit::LibWebRTCNetwork::signalNewConnection): |
| * WebProcess/Network/webrtc/LibWebRTCNetwork.messages.in: Added. |
| * WebProcess/Network/webrtc/LibWebRTCSocket.h: |
| * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: |
| * WebProcess/Network/webrtc/WebRTCSocket.cpp: Removed. |
| * WebProcess/Network/webrtc/WebRTCSocket.h: Removed. |
| |
| 2020-05-05 Tim Horton <timothy_horton@apple.com> |
| |
| Excessive error logging from daemons trying to use WebKit, under -[UIDevice currentDevice] |
| https://bugs.webkit.org/show_bug.cgi?id=211397 |
| <rdar://problem/61635403> |
| |
| Reviewed by Simon Fraser. |
| |
| * Shared/UserInterfaceIdiom.mm: |
| (WebKit::userInterfaceIdiomIsPad): |
| Adjust userInterfaceIdiomIsPad so that in daemons, it consults only MobileGestalt, |
| which returns the actual hardware model, and does not try to use UIDevice. |
| UIDevice is more accurate for applications because it will report that |
| the device is an iPhone when called inside an iPhone app running on iPad, |
| but it cannot be used in daemons that do not have a UIApplication. |
| |
| For the behaviors we gate on this bit, it makes sense to use iPhone |
| behaviors on iPad in the iPhone app jail, so we continue using |
| UIDevice if possible. |
| |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration init]): |
| Make use of the new mechanism instead of going straight to MobileGestalt, |
| for the aforementioned reasons. |
| |
| 2020-05-04 Tim Horton <timothy_horton@apple.com> |
| |
| Relax WKRemoteObjectRegistry signature validation for bool-equivalent types |
| https://bugs.webkit.org/show_bug.cgi?id=211419 |
| |
| Reviewed by Saam Barati. |
| |
| * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: |
| (blockSignaturesAreCompatible): |
| (replyBlockSignature): |
| (-[_WKRemoteObjectRegistry _invokeMethod:]): |
| (validateReplyBlockSignature): Deleted. |
| Relax reply block signature validation slightly, considering signed char and BOOL, |
| which are equivalent and sometimes substituted for each other, to be equal. |
| |
| This is still stricter than NSXPC's validation, but this is one of the |
| exceptions that they make. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| [Mac] Remove __MAC_OS_X_VERSION_MIN_REQUIRED checks for versions older than 10.14 |
| https://bugs.webkit.org/show_bug.cgi?id=211420 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm: |
| (WebKit::Download::resume): Remove __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400. |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Ditto. |
| * PluginProcess/mac/PluginProcessMac.mm: |
| (WebKit::PluginProcess::platformInitializePluginProcess): Ditto. |
| * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm: |
| (WebKit::XPCServiceMain): Ditto. |
| * UIProcess/mac/ServicesController.mm: |
| (WebKit::hasCompatibleServicesForItems): Ditto. |
| * UIProcess/mac/WebProcessProxyMac.mm: |
| (WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Ditto. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(SANDBOX_ISSUE_MACH/READ_EXTENSION_TO_PROCESS_BY_AUDIT_TOKEN) |
| https://bugs.webkit.org/show_bug.cgi?id=211427 |
| |
| Reviewed by Alex Christensen. |
| |
| * Shared/Cocoa/SandboxExtensionCocoa.mm: |
| (WebKit::SandboxExtensionImpl::sandboxExtensionForType): Remove #if HAVE. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(AUTHORIZATION_STATUS_FOR_MEDIA_TYPE) |
| https://bugs.webkit.org/show_bug.cgi?id=211426 |
| |
| Reviewed by Alex Christensen. |
| |
| * UIProcess/Cocoa/UIDelegate.mm: |
| (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): |
| Remove HAVE(AUTHORIZATION_STATUS_FOR_MEDIA_TYPE). |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(ACCESSIBILITY_SUPPORT) |
| https://bugs.webkit.org/show_bug.cgi?id=211425 |
| |
| Reviewed by Alex Christensen. |
| |
| * Platform/spi/Cocoa/AccessibilitySupportSPI.h: Remove HAVE(ACCESSIBILITY_SUPPORT) |
| and now-unnecessary C include guards. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(SEC_TRUST_EVALUATE_WITH_ERROR) |
| https://bugs.webkit.org/show_bug.cgi?id=211429 |
| |
| Reviewed by Alex Christensen. |
| |
| * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: |
| (-[WKFullScreenWindowController _EVOrganizationName]): |
| Remove HAVE(SEC_TRUST_EVALUATE_WITH_ERROR). |
| |
| 2020-05-04 Kate Cheney <katherine_cheney@apple.com> |
| |
| REGRESSION (r260791?): Assert not reached in ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary() and ResourceLoadStatisticsDatabaseStore::addMissingTablesIfNecessary() |
| https://bugs.webkit.org/show_bug.cgi?id=211305 |
| <rdar://problem/62737871> |
| |
| Reviewed by Alex Christensen. |
| |
| This patch adds a busy timeout for the ITP database to allow for |
| some concurrency flexibility when running many WebKitTestRunner tests, which |
| recreate the ITP database store very often to test both the memory and |
| database stores. |
| |
| With the timeout, an attempt to write to the database when another |
| thread is holding the lock will keep attempting to insert for 5 |
| seconds as long as the statement execution returns SQLITE_BUSY. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::openITPDatabase): |
| |
| 2020-05-04 Alex Christensen <achristensen@webkit.org> |
| |
| TestWebKitAPI.WebKit.CustomDisplayName is a flaky timeout |
| https://bugs.webkit.org/show_bug.cgi?id=211299 |
| |
| Reviewed by Chris Dumez. |
| |
| Use a serial queue instead of a concurrent queue to set the web process's display name to prevent race conditions. |
| |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::setProcessNameQueue): |
| (WebKit::WebProcess::updateProcessName): |
| (WebKit::WebProcess::updateActivePages): |
| |
| 2020-05-04 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK4] Header bars no longer have title and subtitle properties |
| https://bugs.webkit.org/show_bug.cgi?id=211412 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| No new tests needed. |
| |
| * UIProcess/Inspector/gtk/WebKitInspectorWindow.cpp: For GTK4 use a vertical |
| box as title widget, with two labels acting as title and subtitle. |
| (webkit_inspector_window_init): |
| (webkitInspectorWindowSetSubtitle): |
| |
| 2020-05-04 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Make sure TestController::statisticsResetToConsistentState() does not hang due to process suspension |
| https://bugs.webkit.org/show_bug.cgi?id=211421 |
| |
| Reviewed by Maciej Stachowiak. |
| |
| We have evidence of hangs in TestController::statisticsResetToConsistentState() on iOS and we suspect it |
| is due to process suspension. To address the issue, this patch updates the IPCs being sent as a result of |
| a call to statisticsResetToConsistentState() to take a background assertion while waiting for the IPC |
| response. |
| |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::setUseITPDatabase): |
| (WebKit::NetworkProcessProxy::resetCacheMaxAgeCapForPrevalentResources): |
| (WebKit::NetworkProcessProxy::resetParametersToDefaultValues): |
| (WebKit::NetworkProcessProxy::scheduleClearInMemoryAndPersistent): |
| (WebKit::NetworkProcessProxy::resetCrossSiteLoadsWithLinkDecorationForTesting): |
| (WebKit::NetworkProcessProxy::setShouldDowngradeReferrerForTesting): |
| (WebKit::NetworkProcessProxy::setShouldBlockThirdPartyCookiesForTesting): |
| (WebKit::NetworkProcessProxy::setShouldEnbleSameSiteStrictEnforcementForTesting): |
| (WebKit::NetworkProcessProxy::setFirstPartyWebsiteDataRemovalModeForTesting): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::setShouldBlockThirdPartyCookiesForTesting): |
| |
| 2020-05-04 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Tapping to focus editable elements should start caret selection at word boundary |
| https://bugs.webkit.org/show_bug.cgi?id=211409 |
| <rdar://problem/62869098> |
| |
| Reviewed by Megan Gardner. |
| |
| See WebCore/ChangeLog for more details. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::selectWithGesture): |
| |
| Rewrite this using the new VisibleUnits helper function, `wordBoundaryForPositionWithoutCrossingLine`. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Make __IPHONE_OS_VERSION_MIN_REQUIRED checks against old versions explicit about watchOS and tvOS |
| https://bugs.webkit.org/show_bug.cgi?id=211402 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * NetworkProcess/NetworkActivityTracker.h: Move from __IPHONE_OS_VERSION_MIN_REQUIRED |
| to !PLATFORM(APPLETV). There was already an explicit watchOS case here. |
| |
| * Platform/spi/ios/UIKitSPI.h: Move from __IPHONE_OS_VERSION_MIN_REQUIRED to |
| PLATFORM(IOS) in one place, and in the other removed the conditional entirely. |
| THe one place here that does PLATFORM(IOS) is for a property that is not on |
| watchOS and tvOS at this time, related to dragging. Decided not to add a comment |
| about it. |
| |
| * Shared/WebPreferencesDefaultValues.h: Move from __IPHONE_OS_VERSION_MIN_REQUIRED |
| to !PLATFORM(APPLETV). There was already an explicit watchOS case here. |
| |
| * UIProcess/API/ios/WKWebViewIOS.mm: |
| (contentOffsetBoundedInValidRange): Move from __IPHONE_OS_VERSION_MIN_REQUIRED |
| to !PLATFORM(WATCHOS) && !PLATFORM(APPLETV). |
| (-[WKWebView activeViewLayoutSize:]): Ditto. |
| (-[WKWebView _updateScrollViewInsetAdjustmentBehavior]): Ditto. |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (-[WKChildScrollView initWithFrame:]): Ditto. |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView gestureRecognizer:canBePreventedByGestureRecognizer:]): Ditto. |
| (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]): Ditto. |
| * UIProcess/ios/WKScrollView.h: Ditto. |
| * UIProcess/ios/WKScrollView.mm: |
| (-[WKScrollView initWithFrame:]): Ditto. |
| |
| 2020-05-04 Peng Liu <peng.liu6@apple.com> |
| |
| Fix the mistake on macro HAVE_SYSTEM_FEATURE_FLAGS |
| https://bugs.webkit.org/show_bug.cgi?id=211416 |
| |
| Reviewed by Tim Horton. |
| |
| We should use "#if HAVE(SYSTEM_FEATURE_FLAGS)" instead of "#if HAVE(HAVE_SYSTEM_FEATURE_FLAGS)". |
| And we have to use the function _os_feature_enabled_impl() instead of the macro os_feature_enabled() |
| because WebKit is a namespace and cannot be used in os_feature_enabled(). |
| |
| * Shared/WebPreferencesDefaultValues.cpp: |
| (WebKit::defaultAsyncFrameAndOverflowScrollingEnabled): |
| (WebKit::defaultUseGPUProcessForMedia): |
| (WebKit::defaultRenderCanvasInGPUProcessEnabled): |
| (WebKit::defaultCaptureAudioInGPUProcessEnabled): |
| (WebKit::defaultCaptureVideoInGPUProcessEnabled): |
| (WebKit::defaultWebRTCCodecsInGPUProcess): |
| (WebKit::defaultWebGL2Enabled): |
| (WebKit::defaultWebGPUEnabled): |
| (WebKit::defaultInAppBrowserPrivacy): |
| (WebKit::defaultIncrementalPDFEnabled): |
| (WebKit::defaultWebXREnabled): |
| |
| 2020-05-04 Brent Fulgham <bfulgham@apple.com> |
| |
| [macOS] Eliminate SecurityServer and OCSPD from the WebContent sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=211417 |
| <rdar://problem/46235370> |
| |
| Reviewed by Per Arne Vollan. |
| |
| We can now re-block access to these services. |
| |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2020-05-04 Timothy Horton <timothy_horton@apple.com> |
| |
| Unreviewed, reverting r261117. |
| |
| Broke lots of API tests |
| |
| Reverted changeset: |
| |
| "Excessive error logging from daemons trying to use WebKit, |
| under -[UIDevice currentDevice]" |
| https://bugs.webkit.org/show_bug.cgi?id=211397 |
| https://trac.webkit.org/changeset/261117 |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| [Cocoa] Remove a few unneeded __IPHONE_OS_VERSION_MIN_REQUIRED checks |
| https://bugs.webkit.org/show_bug.cgi?id=211383 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * UIProcess/ios/forms/WKAirPlayRoutePicker.h: Removed a check against |
| iOS 11, in code that already explicitly checks for watchOS and tvOS. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove HAVE(IOSURFACE) checks in Cocoa-platform-specific code |
| https://bugs.webkit.org/show_bug.cgi?id=211389 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * GPUProcess/webrtc/LibWebRTCCodecsProxy.mm: |
| (WebKit::LibWebRTCCodecsProxy::encodeFrame): Remove HAVE(IOSURFACE) since |
| this is Cocoa-specific code. |
| * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: |
| (WebKit::RemoteLayerBackingStore::ensureBackingStore): Ditto. |
| (WebKit::RemoteLayerBackingStore::clearBackingStore): Ditto. |
| (WebKit::RemoteLayerBackingStore::encode const): Ditto. |
| (WebKit::RemoteLayerBackingStore::decode): Ditto. |
| (WebKit::RemoteLayerBackingStore::bytesPerPixel const): Ditto. |
| (WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer): Ditto. |
| (WebKit::RemoteLayerBackingStore::display): Ditto. |
| (WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer): Ditto. |
| (WebKit::RemoteLayerBackingStore::setBufferVolatility): Ditto. |
| (WebKit::RemoteLayerBackingStore::Buffer::discard): Ditto. |
| (WebKit::RemoteLayerBackingStore::surfaceBufferFormat const): Ditto. |
| * UIProcess/API/ios/WKWebViewIOS.mm: |
| (-[WKWebView _takeViewSnapshot]): Ditto. |
| (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]): Ditto. |
| * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: Ditto. |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy): Ditto. |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: |
| (WebKit::recursivelyMapIOSurfaceBackingStore): Ditto. |
| (WebKit::RemoteLayerTreeHost::mapAllIOSurfaceBackingStore): Ditto. |
| * WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp: Ditto. |
| * WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.h: Ditto. |
| * WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp: |
| (WebKit::MediaRecorderPrivate::sampleBufferUpdated): Ditto. |
| * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: |
| (WebKit::LibWebRTCProvider::createDecoderFactory): Ditto. |
| * WebProcess/cocoa/UserMediaCaptureManager.cpp: |
| (WebKit::UserMediaCaptureManager::Source::remoteVideoSampleAvailable): Ditto. |
| (WebKit::UserMediaCaptureManager::remoteVideoSampleAvailable): Ditto. |
| |
| 2020-05-04 David Kilzer <ddkilzer@apple.com> |
| |
| Use default constructor and default initializer for SecItemRequestData |
| <https://webkit.org/b/211399> |
| <rdar://problem/62861551> |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/mac/SecItemRequestData.cpp: |
| - Remove default constructor implementation. |
| * Shared/mac/SecItemRequestData.h: |
| - Use default constructor for class. |
| - Use default initializer for m_type. |
| |
| 2020-05-04 Brent Fulgham <bfulgham@apple.com> |
| |
| REGRESSION (r259470): Accessibility Stereo to Mono is not working |
| https://bugs.webkit.org/show_bug.cgi?id=211408 |
| <rdar://problem/62847299> |
| |
| Reviewed by Per Arne Vollan. |
| |
| The changes in r259470 regressed our Accessibility features. We need to do a rollout of that |
| change to restore proper behavior. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2020-05-04 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Implement +[_WKWebAuthenticationPanel clearAllLocalAuthenticatorCredentials] |
| https://bugs.webkit.org/show_bug.cgi?id=211369 |
| <rdar://problem/60246635> |
| |
| Reviewed by Brent Fulgham. |
| |
| Adds a new SPI for UI clients to clear all existing credentials from the keychain. |
| |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h: |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm: |
| (+[_WKWebAuthenticationPanel clearAllLocalAuthenticatorCredentials]): |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h: |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| (WebKit::LocalAuthenticator::clearAllCredentials): |
| * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: |
| (WebKit::LocalConnection::createCredentialPrivateKey const): |
| |
| 2020-05-04 Tim Horton <timothy_horton@apple.com> |
| |
| Excessive error logging from daemons trying to use WebKit, under -[UIDevice currentDevice] |
| https://bugs.webkit.org/show_bug.cgi?id=211397 |
| <rdar://problem/61635403> |
| |
| Reviewed by Simon Fraser. |
| |
| * Shared/UserInterfaceIdiom.mm: |
| (WebKit::userInterfaceIdiomIsPad): |
| Adjust userInterfaceIdiomIsPad so that in daemons, it consults only MobileGestalt, |
| which returns the actual hardware model, and does not try to use UIDevice. |
| UIDevice is more accurate for applications because it will report that |
| the device is an iPhone when called inside an iPhone app running on iPad, |
| but it cannot be used in daemons that do not have a UIApplication. |
| |
| For the behaviors we gate on this bit, it makes sense to use iPhone |
| behaviors on iPad in the iPhone app jail, so we continue using |
| UIDevice if possible. |
| |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration init]): |
| Make use of the new mechanism instead of going straight to MobileGestalt, |
| for the aforementioned reasons. |
| |
| 2020-05-04 Chris Dumez <cdumez@apple.com> |
| |
| Stop hard-coding get-task-allow entitlement for simulator builds |
| https://bugs.webkit.org/show_bug.cgi?id=211392 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Stop hard-coding get-task-allow entitlement for simulator builds and let Xcode inject it as needed. |
| |
| * Configurations/BaseXPCService.xcconfig: |
| * Resources/ios/XPCService-embedded-simulator.entitlements: |
| |
| 2020-05-04 Brent Fulgham <bfulgham@apple.com> |
| |
| REGRESSION (JazzkonE): ResourceLoadStatisticsDatabaseStore checks 'hasHadUserInteraction' without ensuring the domain has been added to the ITP database (211388) |
| https://bugs.webkit.org/show_bug.cgi?id=211388 |
| <rdar://problem/62849919> |
| |
| Reviewed by John Wilander. |
| |
| A spurious log entry is created if we check 'hasHadUserInteraction' before inserting a row for the domain |
| being checked (if that domain had not previosly been observed). This patch changes the order of the two |
| commands to avoid this possibility. This makes the database implementation behave like the in-memory version. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::logUserInteraction): |
| |
| 2020-05-04 Alex Christensen <achristensen@webkit.org> |
| |
| Reduce AlternativeService assertion to debug-only assert |
| https://bugs.webkit.org/show_bug.cgi?id=211263 |
| <rdar://problem/61354813> |
| |
| Reviewed by Chris Dumez. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| This is asserting sometimes. No need to crash. Reduce to debug-only assert. |
| |
| 2020-05-04 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Throttling requestAnimationFrame should be controlled by RenderingUpdateScheduler |
| https://bugs.webkit.org/show_bug.cgi?id=204713 |
| |
| Reviewed by Simon Fraser. |
| |
| Create an IPC message on the DrawingArea to send a message from the |
| WebProcess to the UIProcess to setPreferredFramesPerSecond of the |
| DisplayRefreshMonitor. |
| |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h: |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in: |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: |
| (-[WKOneShotDisplayLinkHandler setPreferredFramesPerSecond:]): |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::setPreferredFramesPerSecond): |
| Set the preferredFramesPerSecond of the CADisplayLink. |
| |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm: |
| (WebKit::RemoteLayerTreeDisplayRefreshMonitor::setPreferredFramesPerSecond): |
| Forward the call to RemoteLayerTreeDrawingArea. |
| |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::setPreferredFramesPerSecond): |
| Send the IPC message from the WebProcess to the UIProcess. |
| |
| 2020-05-04 Alex Christensen <achristensen@webkit.org> |
| |
| TestWebKitAPI.WebKit.CustomDisplayName is a flaky timeout |
| https://bugs.webkit.org/show_bug.cgi?id=211299 |
| |
| Reviewed by Chris Dumez. |
| |
| Sometimes the task queued in WebProcess::updateProcessName happens after the one in WebProcess::updateActivePages. |
| Schedule them on the same queue so they happen in deterministic order so we get reliable process names eventually. |
| |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::updateActivePages): |
| |
| 2020-05-04 Brent Fulgham <bfulgham@apple.com> |
| |
| Remove unneeded check for Apple Media Services |
| https://bugs.webkit.org/show_bug.cgi?id=211391 |
| <rdar://problem/62853199> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Earlier in the development cycle we added an entitlement check for AppleMediaServices, that we now realize |
| we do not need. Since this is a non-zero performance cost, remove this check. |
| |
| * UIProcess/WebPageProxy.cpp: |
| |
| 2020-05-04 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: provide a way for inspector to turn on/off ITP debug mode and AdClickAttribution debug mode |
| https://bugs.webkit.org/show_bug.cgi?id=209763 |
| |
| Reviewed by Brian Burg. |
| |
| Generalize the `setMockCaptureDevicesEnabledOverride` to be `setDeveloperPreferenceOverride` |
| that uses an enum `WebCore::InspectorClient::DeveloperPreference` to know what to do. |
| |
| Communicate with the NetworkProcess (from the WebProcess via the UIProcess) in the case of: |
| - `AdClickAttributionDebugModeEnabled` |
| - `ITPDebugModeEnabled` |
| |
| * WebProcess/Inspector/WebInspectorClient.h: |
| * WebProcess/Inspector/WebInspectorClient.cpp: |
| (WebKit::WebInspectorClient::setDeveloperPreferenceOverride): Added. |
| (WebKit::WebInspectorClient::setMockCaptureDevicesEnabledOverride): Deleted. |
| * WebProcess/Inspector/WebInspector.h: |
| * WebProcess/Inspector/WebInspector.cpp: |
| (WebKit::WebInspector::setDeveloperPreferenceOverride): Added. |
| (WebKit::WebInspector::setMockCaptureDevicesEnabledOverride): Deleted. |
| |
| * UIProcess/Inspector/WebInspectorProxy.messages.in: |
| * UIProcess/Inspector/WebInspectorProxy.h: |
| * UIProcess/Inspector/WebInspectorProxy.cpp: |
| (WebKit::WebInspectorProxy::setDeveloperPreferenceOverride): Added. |
| (WebKit::WebInspectorProxy::setMockCaptureDevicesEnabledOverride): Deleted. |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::setAdClickAttributionDebugMode): Added. |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::setAdClickAttributionDebugMode): Added. |
| |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| (WebKit::NetworkProcess::setAdClickAttributionDebugMode): Added. |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode): |
| |
| 2020-05-04 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Unable to take RunningBoard process assertions in the iOS Simulator |
| https://bugs.webkit.org/show_bug.cgi?id=211254 |
| <rdar://problem/62674074> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add com.apple.runningboard.assertions.webkit entitlement to iOS Simulator builds so that |
| we can take RunningBoard assertions on those platforms too. |
| |
| While doing this, I found that we were not adding the entitlements properly for simulator |
| builds. For simulator builds, entitlements go into an __entitlements section of the binary, |
| rather than in the signature. Use CODE_SIGN_ENTITLEMENTS directive in xcconfig so that |
| XCode does the right thing for simulator builds. |
| |
| * Configurations/BaseXPCService.xcconfig: |
| * Resources/ios/XPCService-embedded-simulator.entitlements: Added. |
| * Scripts/process-entitlements.sh: |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneded HAVE(WINDOW_SERVER_OCCLUSION_NOTIFICATIONS) |
| https://bugs.webkit.org/show_bug.cgi?id=211380 |
| |
| Reviewed by Sam Weinig. |
| |
| * UIProcess/mac/WindowServerConnection.h: Don't check |
| HAVE(WINDOW_SERVER_OCCLUSION_NOTIFICATIONS) in this Mac-only header. |
| Also removed #pragma once in this header that is only included from .mm files. |
| |
| * UIProcess/mac/WindowServerConnection.mm: Wrapped the whole file in |
| PLATFORM(MAC) because this is macOS-specific code that may be compiled on |
| iOS family platforms. Could wrap it in HAVE(WINDOW_SERVER) instead, but we |
| don't have anything like that and PageClientImplMac.mm, the client of this |
| code, uses PLATFORM(MAC). |
| (WebKit::registerOcclusionNotificationHandler): Ditto. |
| (WebKit::WindowServerConnection::WindowServerConnection): Ditto. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(UI_REMOTE_VIEW) |
| https://bugs.webkit.org/show_bug.cgi?id=211382 |
| |
| Reviewed by Alex Christensen. |
| |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm: |
| (WebKit::createRemoteView): Deleted. |
| (WebKit::RemoteLayerTreeHost::makeNode): After researching to be sure the method |
| is present in the relevant versions of iOS 13, changed this code to use the |
| initWithFrame:pid:contextID: method without doing a selector check, and also |
| without a HAVE(UI_REMOTE_VIEW) conditional. |
| |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: Removed the |
| HAVE(UI_REMOTE_VIEW) conditional. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(MENU_CONTROLLER_SHOW_HIDE_API) |
| https://bugs.webkit.org/show_bug.cgi?id=211381 |
| |
| Reviewed by Alex Christensen. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _handleDOMPasteRequestWithResult:]): Use hideMenuFromView: directly. |
| (-[WKContentView _requestDOMPasteAccessWithElementRect:originIdentifier:completionHandler:]): |
| Use showMenuFromView: directly. |
| (-[WKContentView showGlobalMenuControllerInRect:]): Deleted. |
| (-[WKContentView hideGlobalMenuController]): Deleted. |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove now-unneeded HAVE(VOUCHERS) |
| https://bugs.webkit.org/show_bug.cgi?id=211379 |
| |
| Reviewed by Alex Christensen. |
| |
| * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h: |
| (WebKit::XPCServiceInitializer): Remove HAVE(VOUCHERS) checks from this |
| Cocoa-only source file. |
| |
| 2020-05-04 Alex Christensen <achristensen@webkit.org> |
| |
| TestWebKitAPI.WebKit.CustomDisplayName is a flaky timeout |
| https://bugs.webkit.org/show_bug.cgi?id=211299 |
| |
| Reviewed by Darin Adler. |
| |
| The application name is being set on a background queue, but there's nothing actually keeping the NSString alive. |
| This may fix some timeouts we were seeing. I wonder why ASAN or guard malloc didn't catch this yet. |
| |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::updateProcessName): |
| |
| 2020-05-04 Darin Adler <darin@apple.com> |
| |
| Remove no-longer-needed HAVE(UISCENE) |
| https://bugs.webkit.org/show_bug.cgi?id=211376 |
| |
| Reviewed by Chris Dumez. |
| |
| * Platform/spi/ios/UIKitSPI.h: Don't check HAVE(UISCENE) any more in this |
| iOS-family-only source file; it's always true. |
| * UIProcess/ApplicationStateTracker.h: Ditto. |
| * UIProcess/ApplicationStateTracker.mm: |
| (WebKit::ApplicationStateTracker::ApplicationStateTracker): Ditto. |
| (WebKit::ApplicationStateTracker::~ApplicationStateTracker): Ditto. |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView interfaceOrientation]): Ditto. |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView textEffectsWindow]): Ditto. |
| |
| 2020-05-04 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Unreviewed, speculative build fix for r261071 |
| https://bugs.webkit.org/show_bug.cgi?id=211274 |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| |
| 2020-05-04 Emilio Cobos Álvarez <emilio@crisal.io> |
| |
| Put lh / rlh units behind a flag until bug 211351 is sorted out. |
| https://bugs.webkit.org/show_bug.cgi?id=211356 |
| |
| Reviewed by Antti Koivisto. |
| |
| * Shared/WebPreferences.yaml: Define the runtime flag. |
| |
| 2020-05-03 David Kilzer <ddkilzer@apple.com> |
| |
| Use LocalCurrentGraphicsContext in WebKit::convertPlatformImageToBitmap() |
| <https://webkit.org/b/211274> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::convertPlatformImageToBitmap): |
| - Use LocalCurrentGraphicsContext to replace code. |
| |
| 2020-05-03 David Kilzer <ddkilzer@apple.com> |
| |
| Use default initializers and default constructors in WebEvent.h |
| <https://webkit.org/b/211354> |
| |
| Reviewed by Daniel Bates. |
| |
| * Shared/WebEvent.h: |
| (WebKit::WebWheelEvent): |
| (WebKit::WebKeyboardEvent): |
| (WebKit::WebPlatformTouchPoint): |
| (WebKit::WebTouchEvent): |
| - Change empty constructors to use `default`. |
| - Use default initializers to make sure all fields are |
| initialized. |
| |
| 2020-05-02 Simon Fraser <simon.fraser@apple.com> |
| |
| handleWheelEventPhase() should include the relevant ScrollingNodeID |
| https://bugs.webkit.org/show_bug.cgi?id=211315 |
| |
| Reviewed by Tim Horton. |
| |
| handleWheelEventPhase() is used to send information about wheel event phases |
| to the main thread, which make their way to ScrollAnimatorMac::handleWheelEventPhase() |
| and are used to update the state of overlay scrollbars. In order to talk to the |
| correct set of scrollbars with overflow:scroll, we need to send along the ScrollingNodeID |
| and map that to the appropriate ScrollableArea. |
| |
| Will be tested by future overlay scrollbar tests. |
| |
| * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp: |
| (WebKit::RemoteScrollingTree::handleWheelEventPhase): |
| * UIProcess/RemoteLayerTree/RemoteScrollingTree.h: |
| |
| 2020-05-02 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Re-inject key press events not handled by the web process |
| https://bugs.webkit.org/show_bug.cgi?id=211286 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Use gdk_display_put_event() since gtk_main_do_event() is no longer available in GTK4. Also stop forwarding key |
| release events in GTK3 case, this only makes sense for key press events and we were re-injecting every release |
| event since they are not handled by web elements in most of the cases. |
| |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::doneWithKeyEvent): |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseKeyPressEvent): |
| (webkitWebViewBaseKeyReleaseEvent): |
| (webkitWebViewBaseKeyPressed): |
| |
| 2020-05-02 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK] Specify action group name when binding context menu models |
| https://bugs.webkit.org/show_bug.cgi?id=211288 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| No new tests needed. |
| |
| * UIProcess/gtk/WebContextMenuProxyGtk.cpp: |
| (WebKit::WebContextMenuProxyGtk::append): Use the action name directly for the menu item. |
| (WebKit::WebContextMenuProxyGtk::populate): Indicate the action group name when binding the |
| menu model, which automatically adds the group name as action name prefix without needing |
| to specify it by hand when adding menu items. |
| |
| 2020-05-02 Devin Rousso <drousso@apple.com> |
| |
| [CSS Easing 1] implement `jump-*` step positions |
| https://bugs.webkit.org/show_bug.cgi?id=211271 |
| |
| Reviewed by Dean Jackson. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::ArgumentCoder<StepsTimingFunction>::encode): |
| (IPC::ArgumentCoder<StepsTimingFunction>::decode): |
| |
| 2020-05-01 Tim Horton <timothy_horton@apple.com> |
| |
| Books sometimes ends up with blank pages, especially after adjusting font size |
| https://bugs.webkit.org/show_bug.cgi?id=211265 |
| <rdar://problem/59898144> |
| |
| Reviewed by Darin Adler. |
| |
| A few problems: |
| |
| - There is short time during page creation where a WKWebView created |
| with _clipsToVisibleRect=YES would not yet have sent its viewExposedRect |
| to the Web Content process, and if we end up constructing tiles during |
| that time, we can make way too many, bogging down the process (or crashing). |
| |
| Fix this by always keeping track of the viewExposedRect (on WebPageProxy, |
| instead of the somewhat-more-transient DrawingAreaProxy) and sending it |
| to the Web Content process in the WebPage creation parameters, to entirely |
| remove this window. |
| |
| - Even when the viewExposedRect successfully gets to the Web Content |
| process, it can still end up wildly wrong: the DrawingArea was tasked with |
| watching scrolling changes, applying the scroll offset to the viewExposedRect, |
| and pushing it to FrameView in content coordinates. |
| |
| It turns out that this was all unnecessary, as we need viewExposedRect |
| in root view coordinates (same space as visibleContentRect, which we |
| intersect it with), and we just didn't notice because all clients of |
| _clipsToVisibleRect: expand the view to its layout size and insert |
| a scrolling view outside the web view, and so don't use our scrolling. |
| |
| Avoid this conversion and complexity entirely; I tested Mail and Books |
| where there is no impact (other than fixing the original bug), and also |
| a custom test app with a scrollable WKWebView inside a NSScrollView, |
| which improved significantly. |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| Plumb view exposed rect via WebPage creation parameters. |
| |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::updateViewExposedRect): |
| Send viewExposedRect changes to WebPageProxy instead of DrawingAreaProxy. |
| |
| * UIProcess/DrawingAreaProxy.cpp: |
| (WebKit::DrawingAreaProxy::didChangeViewExposedRect): |
| (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired): |
| (WebKit::DrawingAreaProxy::setViewExposedRect): Deleted. |
| * UIProcess/DrawingAreaProxy.h: |
| (WebKit::DrawingAreaProxy::viewExposedRect const): Deleted. |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h: |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::didChangeViewExposedRect): |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorLocation const): |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator): |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::setViewExposedRect): Deleted. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::setViewExposedRect): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::viewExposedRect const): |
| Maintain viewExposedRect on WebPageProxy instead of DrawingAreaProxy, |
| so that we can always store it even if we don't have a DrawingAreaProxy yet |
| (or change DrawingAreaProxies) and can send it in WebPage creation parameters. |
| |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): |
| (WebKit::RemoteLayerTreeDrawingArea::setViewExposedRect): |
| (WebKit::RemoteLayerTreeDrawingArea::updateRendering): |
| (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect): Deleted. |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: |
| (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): |
| (WebKit::TiledCoreAnimationDrawingArea::updateRendering): |
| (WebKit::TiledCoreAnimationDrawingArea::setViewExposedRect): |
| (WebKit::TiledCoreAnimationDrawingArea::scroll): Deleted. |
| (WebKit::TiledCoreAnimationDrawingArea::updateScrolledExposedRect): Deleted. |
| Plumb viewExposedRect directly to FrameView, instead of trying to apply |
| the root view -> contents mapping ourselves and pushing updates. |
| |
| 2020-05-01 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC hardening] Refactor createMessageDecoder() for clarity |
| <https://webkit.org/b/211322> |
| |
| Reviewed by Darin Adler. |
| |
| * Platform/IPC/cocoa/ConnectionCocoa.mm: |
| (IPC::createMessageDecoder): |
| - Rename `numDescriptors` to `numberOfPortDescriptors` to match |
| variable name in sendOutgoingMessage(). |
| - Add new `numberOfAttachments` variable to make it clear that |
| one port descriptor is left for an out-of-line message body. |
| - Add FIXME about another issue. |
| |
| 2020-05-01 Alex Christensen <achristensen@webkit.org> |
| |
| Add SPI to move localStorage to a different domain |
| https://bugs.webkit.org/show_bug.cgi?id=209260 |
| <rdar://problem/60285683> |
| |
| Reviewed by Brady Eidson. |
| |
| Covered by an API test. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::renameDomainInWebsiteData): |
| (WebKit::NetworkProcess::getLocalStorageOriginDetails): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: |
| (WebKit::LocalStorageNamespace::renameDomain): |
| * NetworkProcess/WebStorage/LocalStorageNamespace.h: |
| * NetworkProcess/WebStorage/StorageArea.cpp: |
| (WebKit::StorageArea::close): |
| * NetworkProcess/WebStorage/StorageArea.h: |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::renameDomain): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::renameDomain): |
| * NetworkProcess/WebStorage/StorageManagerSet.h: |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _renameDomain:to:forDataOfTypes:completionHandler:]): |
| * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::renameDomainInWebsiteData): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::renameDomainInWebsiteData): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| |
| 2020-05-01 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] ProcessThrottler fails to re-take ProcessAssertion if the previous one was invalidated |
| https://bugs.webkit.org/show_bug.cgi?id=211297 |
| <rdar://problem/62542463> |
| |
| Reviewed by Jer Noble. |
| |
| Our ProcessAssertions may get invalidated upon backgrounding of the app. When the app becomes |
| foreground and the ProcessThrottler tries to take a Foreground assertion as a result, it would |
| incorrectly think it already had such assertion and not do anything, even though the previous |
| one is no longer valid. As a result, the child processes would stay suspended even though the |
| app was foregrounded. |
| |
| To address the issue, add a isValid() method to ProcessAssertion() and check it in |
| ProcessThrottler::setAssertionType() to determine if we need to re-take an assertion or not. |
| We also invalidate all pending ProcessThrottler activities upon ProcessAssertion invalidation |
| for good measure. This way, the holders of these activities will be able to rely on |
| Activity::isValid() to determine if they need to re-take their activities or not. |
| |
| * Platform/spi/ios/AssertionServicesSPI.h: |
| * Platform/spi/ios/RunningBoardServicesSPI.h: |
| * UIProcess/ProcessAssertion.cpp: |
| (WebKit::ProcessAssertion::isValid const): |
| * UIProcess/ProcessAssertion.h: |
| (WebKit::ProcessAssertion::validity const): Deleted. |
| * UIProcess/ProcessThrottler.cpp: |
| (WebKit::ProcessThrottler::setAssertionType): |
| (WebKit::ProcessThrottler::assertionWasInvalidated): |
| * UIProcess/ProcessThrottler.h: |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (WebKit::ProcessAssertion::processAssertionWasInvalidated): |
| (WebKit::ProcessAssertion::isValid const): |
| (WebKit::ProcessAndUIAssertion::updateRunInBackgroundCount): |
| |
| 2020-05-01 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, reverting r261015. |
| |
| Seems to have broken clean builds |
| |
| Reverted changeset: |
| |
| "[iOS] Unable to take RunningBoard process assertions in the |
| iOS Simulator" |
| https://bugs.webkit.org/show_bug.cgi?id=211254 |
| https://trac.webkit.org/changeset/261015 |
| |
| 2020-05-01 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC hardening] createMessageDecoder() needs a validity check |
| <https://webkit.org/b/211260> |
| <rdar://problem/61914087> |
| |
| Reviewed by Darin Adler. |
| |
| * Platform/IPC/cocoa/ConnectionCocoa.mm: |
| (IPC::createMessageDecoder): |
| - Add validity check and early return for |
| `numDescriptors`. |
| |
| 2020-05-01 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Browser: crash when handling `disable` |
| https://bugs.webkit.org/show_bug.cgi?id=211251 |
| |
| Reviewed by Daniel Bates. |
| |
| * UIProcess/Inspector/Agents/InspectorBrowserAgent.cpp: |
| (WebKit::InspectorBrowserAgent::disable): |
| If the inspected page crashed, we won't have a `WebInspectorProxy` anymore. |
| |
| 2020-05-01 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Every running WebContent process should be granted access to frontboard services when Accessibility is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=211238 |
| |
| Reviewed by Daniel Bates. |
| |
| Currently, every WebContent process is granted access to frontboard services if Accessibility is enabled at the |
| time of startup. However, WebContent processes running at the time when Accessibility is enabled are not granted |
| access, which is a bug. |
| |
| API test: WebKit.AccessibilityHasFrontboardServiceAccess |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::sendMessage): |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * UIProcess/Cocoa/WebProcessProxyCocoa.mm: |
| (WebKit::WebProcessProxy::unblockAccessibilityServerIfNeeded): |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebProcess.messages.in: |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::unblockServicesRequiredByAccessibility): |
| (WebKit::WebProcess::unblockAccessibilityServer): Deleted. |
| |
| 2020-05-01 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Unable to take RunningBoard process assertions in the iOS Simulator |
| https://bugs.webkit.org/show_bug.cgi?id=211254 |
| <rdar://problem/62674074> |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/BaseXPCService.xcconfig: |
| Use this directive to add our entitlements: |
| CODE_SIGN_ENTITLEMENTS = $(WK_PROCESSED_XCENT_FILE); |
| instead of using: |
| OTHER_CODE_SIGN_FLAGS = --entitlements $(WK_PROCESSED_XCENT_FILE); |
| This is important because entitlements are added differently for iOS Simulator builds, |
| so that they only apply inside the simulator (and not for the host system). If we use |
| CODE_SIGN_ENTITLEMENTS, then XCode does the right thing on all platforms. |
| |
| * Scripts/process-entitlements.sh: |
| Add com.apple.runningboard.assertions.webkit entitlement to iOS Simulator builds. |
| |
| 2020-05-01 Don Olmstead <don.olmstead@sony.com> |
| |
| [GTK] Add additional exports to support hidden visibility |
| https://bugs.webkit.org/show_bug.cgi?id=211246 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * WebProcess/InjectedBundle/API/glib/WebKitWebExtensionPrivate.h: |
| |
| 2020-05-01 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Update message filtering rules in the WebContent process' sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=211188 |
| <rdar://problem/60922910> |
| |
| Reviewed by Brent Fulgham. |
| |
| Based on telemetry and local testing, update the message filtering rules in the WebContent process' sandbox on iOS. |
| Messages that have not been observed being in use, should be denied. |
| |
| No new tests, covered by existing tests. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::sendMessage): |
| |
| 2020-05-01 Peng Liu <peng.liu6@apple.com> |
| |
| A PiP window doesn’t actually dismiss after the browser navigates to a different page within the same domain |
| https://bugs.webkit.org/show_bug.cgi?id=211257 |
| |
| Reviewed by Jer Noble. |
| |
| Add the support of exitVideoFullscreenToModeWithoutAnimation() in iOS, |
| so that the Web process can request the UI process to close the PiP window |
| without exchanging IPC messages back and forth. |
| |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.h: |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in: |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: |
| (WebKit::VideoFullscreenManagerProxy::exitFullscreenWithoutAnimationToMode): |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| |
| Only stop the watchdog timer if it is active. |
| * WebProcess/cocoa/VideoFullscreenManager.mm: |
| (WebKit::VideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation): |
| |
| 2020-05-01 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r260920. |
| https://bugs.webkit.org/show_bug.cgi?id=211292 |
| |
| Sandbox compile error is no longer an issue (Requested by |
| perarne on #webkit). |
| |
| Reverted changeset: |
| |
| "Unreviewed sandbox compile fix." |
| https://trac.webkit.org/changeset/260920 |
| |
| 2020-05-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Move focus out of the web view when tab is pressed and there isn't a next element to focus |
| https://bugs.webkit.org/show_bug.cgi?id=211283 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Implement API::UIClient::takeFocus() that is called when WebCore wants to focus the chrome. |
| |
| * UIProcess/API/glib/WebKitUIClient.cpp: |
| |
| 2020-05-01 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r260214): Leak of _WKTextInputContext in -[WKContentView _isTextInputContextFocused:] |
| <https://webkit.org/b/211276> |
| <rdar://problem/62696724> |
| |
| Reviewed by Daniel Bates. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _focusTextInputContext:placeCaretAt:completionHandler:]): |
| - Use RetainPtr<> to pass the copy of _WKTextInputContext into |
| the block to fix the leak. |
| |
| 2020-05-01 Saam Barati <sbarati@apple.com> |
| |
| We can't cast toLength result to unsigned |
| https://bugs.webkit.org/show_bug.cgi?id=211205 |
| <rdar://problem/62625562> |
| |
| Reviewed by Yusuke Suzuki. |
| |
| * WebProcess/Plugins/Netscape/NPJSObject.cpp: |
| (WebKit::NPJSObject::hasProperty): |
| (WebKit::NPJSObject::getProperty): |
| (WebKit::NPJSObject::removeProperty): |
| |
| 2020-05-01 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK4] Disable arrow on context menu popover |
| https://bugs.webkit.org/show_bug.cgi?id=211241 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/gtk/WebContextMenuProxyGtk.cpp: |
| (WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): Disable the menu popover arrow. |
| |
| 2020-04-30 Ross Kirsling <ross.kirsling@sony.com> |
| |
| TriState should be an enum class and use "Indeterminate" instead of "Mixed" |
| https://bugs.webkit.org/show_bug.cgi?id=211268 |
| |
| Reviewed by Mark Lam. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::validateCommand): |
| |
| * WebProcess/WebPage/glib/WebPageGLib.cpp: |
| (WebKit::WebPage::getPlatformEditorState const): |
| |
| 2020-04-30 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Require user gestures for LocalAuthenticator |
| https://bugs.webkit.org/show_bug.cgi?id=182893 |
| <rdar://problem/43357293> |
| |
| Reviewed by Brent Fulgham. |
| |
| Covered by API tests. |
| |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| (WebKit::AuthenticatorManager::filterTransports const): |
| (WebKit::AuthenticatorManager::getTransports const): |
| Checks UserGesture here. Since filterTransports will be overrided in mock testings, |
| all mock tests don't require user gestures. |
| |
| * UIProcess/WebAuthentication/WebAuthenticationRequestData.h: |
| * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp: |
| (WebKit::WebAuthenticatorCoordinatorProxy::makeCredential): |
| (WebKit::WebAuthenticatorCoordinatorProxy::getAssertion): |
| * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h: |
| * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in: |
| * WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp: |
| (WebKit::WebAuthenticatorCoordinator::makeCredential): |
| (WebKit::WebAuthenticatorCoordinator::getAssertion): |
| Adds user gesture corresponding fields. |
| |
| 2020-04-30 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Unreviewed, fix the Mac Catalyst build after r260979 |
| |
| The presence of `_contextMenuInteraction` is conditional not only on `USE(UICONTEXTMENU)`, but also |
| `HAVE(LINK_PREVIEW)`. Guard logic in `-deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:` with the |
| latter as well. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]): |
| |
| 2020-04-30 Simon Fraser <simon.fraser@apple.com> |
| |
| Clean up some EventHandler coordinate-related naming and fix ScrollableArea::lastKnownMousePosition() conversions |
| https://bugs.webkit.org/show_bug.cgi?id=211259 |
| |
| Reviewed by Zalan Bujtas. |
| |
| * Shared/WebEvent.h: |
| (WebKit::WebMouseEvent::position const): |
| * Shared/WebMouseEvent.cpp: |
| (WebKit::WebMouseEvent::WebMouseEvent): |
| * WebProcess/Plugins/PDF/PDFPlugin.h: |
| |
| 2020-04-30 David Kilzer <ddkilzer@apple.com> |
| |
| [iOS] Fix confusing idiom for releasing _selectionRects in -[WKTextRange dealloc] |
| <https://webkit.org/b/211269> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKTextRange dealloc]): |
| - Switch to more common idiom to release an instance variable. |
| This fixes a false positive warning from the clang static |
| analyzer about releasing a variable not owned by the caller. |
| |
| 2020-04-30 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| REGRESSION: Double tap dispatches one click event on iOS 13.4 when it would dispatch two on iOS 13.3 |
| https://bugs.webkit.org/show_bug.cgi?id=211179 |
| <rdar://problem/62594779> |
| |
| Reviewed by Tim Horton. |
| |
| https://trac.webkit.org/r253267 introduced deferring gesture recognizers as a way to handle preventable (non- |
| passive) touchstart events without blocking the UI process. These deferring gesture recognizers work by having |
| other gesture recognizers at or below WKWebView (with few exceptions) require the failure of these deferring |
| gestures. These gestures transition to possible state when beginning a touch inside a non-passive touch event |
| handling region, and transition to either failed or ended state (depending on whether `preventDefault()` was |
| called) after the web content process finished handling the touch event. |
| |
| However, this means that the resulting dependency graph now has an edge between each gesture under WKWebView and |
| one of the deferring gesture recognizers, due to these new failure requirements. Since gestures that have been |
| recognized or have failed don't get reset until all other gestures in the same dependency subgraph have also |
| recognized or failed, some gestures (such as the synthetic single tap gesture recognizer in this bug) might not |
| be resetting as soon after ending as they did before, since they may be connected to other gesture recognizers |
| that are still in possible state by way of the failure requirements added by the new deferring gestures. |
| |
| I was already aware of this problem in r253267, and attempted to solve this by bisecting the gesture dependency |
| graph into two subgraphs: one containing all the one-finger multi-tap gestures that are reset after a lengthy |
| delay, and another containing everything else. To do this, I added two different deferring gesture recognizers: |
| one for immediately resettable gestures (meant for gestures in the latter subgraph), and another for gestures |
| that are reset after a delay (meant for gestures in the former subgraph). |
| |
| Unfortunately, unrelated changes around text interactions in UIKit in iOS 13.4 caused the tap-and-a-half |
| gesture for selecting a range of text to now have a delayed reset; this means that gestures in the "immediately |
| resettable" gesture subgraph are all forced to wait on the tap-and-a-half text interaction gesture before |
| resetting, which causes the bug here, since the synthetic single tap gesture is in this "immediately resettable" |
| gesture subgraph. |
| |
| To mitigate this, this patch pushes the tap-and-a-half text selection gesture, along with the loupe gesture, |
| context menu relationship gesture, and drag lift gestures (i.e. the other gestures that are connected to the |
| tap-and-a-half gesture via failure requirements) out of the "immediately resettable" subgraph, and into the |
| "delayed" subgraph. |
| |
| Test: fast/events/touch/ios/two-click-events-after-double-tap-with-touch-handler.html |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]): |
| |
| 2020-04-30 Brent Fulgham <bfulgham@apple.com> |
| |
| REGRESSION (r260932): ASSERTION FAILED: ok in webkit::SandboxExtension::consumePermanently for 3 tests |
| https://bugs.webkit.org/show_bug.cgi?id=211253 |
| <rdar://problem/62673727> |
| |
| Reviewed by Per Arne Vollan. |
| |
| In r260932 I added an assertion to confirm that a sandbox extension was successfully consumed. This triggered three |
| test failures because those tests attempt to pass a sandbox extension from the WebContent process to the UIProcess. |
| |
| After speaking with the Sandbox team, I learned that an unsandboxed program that attempts to consume a valid |
| sandbox extension will return 0. Sandboxed processes either receive -1 (for error), or a handle representing the |
| newly added extension (so that it can be removed when no longer needed). |
| |
| Since the TestWebKitAPI (and WebKitTestRunner) processes are not sandboxed they receive a zero return value here. |
| |
| We should recognize this as a valid and expected result. We should also consider making some form of sandboxed |
| driver for WebKit. |
| |
| * Shared/Cocoa/SandboxExtensionCocoa.mm: |
| (WebKit::SandboxExtensionImpl::consume): Recognize a 0 handle as valid. |
| |
| 2020-04-30 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Optimize LocalAuthenticator |
| https://bugs.webkit.org/show_bug.cgi?id=183534 |
| <rdar://problem/43357408> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch implements the following small optimizations: |
| 1. Replacing local constants with ones from FidoConstants.h; |
| 2. Merging m_assertionResponses and m_existingCredentials by replacing HashSet with Vector in Authenticator::Observer::selectAssertionResponse; |
| 3. Using Base64 encoded strings as the keys of the HashSet in produceHashSet() instead of the old casting hack; |
| 4. Invaliding the LAContext in LocalConnection::~LocalConnection() such that any displaying LocalAuthentication dialogs can be dismissed after the object is destroyed; |
| 5. Sorting existing credentials according to LRU before returning to UI clients; |
| 6. Improving the LocalAuthentication dialog titles for iOS. |
| |
| * UIProcess/WebAuthentication/Authenticator.h: |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| (WebKit::AuthenticatorManager::selectAssertionResponse): |
| * UIProcess/WebAuthentication/AuthenticatorManager.h: |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.h: |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| (WebKit::LocalAuthenticatorInternal::produceHashSet): |
| (WebKit::LocalAuthenticatorInternal::toNSData): |
| (WebKit::LocalAuthenticatorInternal::getExistingCredentials): |
| (WebKit::LocalAuthenticator::makeCredential): |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserVerification): |
| (WebKit::LocalAuthenticator::getAssertion): |
| (WebKit::LocalAuthenticator::continueGetAssertionAfterUserVerification): |
| * UIProcess/WebAuthentication/Cocoa/LocalConnection.h: |
| (WebKit::LocalConnection::filterResponses const): |
| * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: |
| (WebKit::WebCore::bundleName): |
| (WebKit::LocalConnection::~LocalConnection): |
| (WebKit::LocalConnection::verifyUser): |
| (WebKit::LocalConnection::verifyUser const): Deleted. |
| * UIProcess/WebAuthentication/Mock/MockLocalConnection.h: |
| * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm: |
| (WebKit::MockLocalConnection::verifyUser): |
| (WebKit::MockLocalConnection::filterResponses const): |
| (WebKit::MockLocalConnection::verifyUser const): Deleted. |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp: |
| (WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived): |
| (WebKit::CtapAuthenticator::continueGetNextAssertionAfterResponseReceived): |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.h: |
| |
| 2020-04-30 Kate Cheney <katherine_cheney@apple.com> |
| |
| Change default of "inAppBrowserPrivacyQuirks" testing toggle to use it for tests only |
| https://bugs.webkit.org/show_bug.cgi?id=211209 |
| <rdar://problem/62619659> |
| |
| Reviewed by Brent Fulgham. |
| |
| No new tests, behavior confirmed by existing tests. |
| |
| * Shared/WebPreferences.yaml: |
| |
| 2020-04-30 Devin Rousso <drousso@apple.com> |
| |
| Unreviewed, add missing parenthesis |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::handleMediaEvent): |
| |
| 2020-04-30 Chris Dumez <cdumez@apple.com> |
| |
| [iOS][WK2] Add timeout for "Client navigation" foreground assertion |
| https://bugs.webkit.org/show_bug.cgi?id=211202 |
| |
| Reviewed by Alex Christensen. |
| |
| Add a 30s timeout for "Client navigation" foreground assertion. Foreground assertions do not timeout |
| at RunningBoard level and we thus need to make sure we release them to avoid power leaks. |
| |
| * UIProcess/API/APINavigation.cpp: |
| (API::Navigation::Navigation): |
| * UIProcess/API/APINavigation.h: |
| (API::Navigation::setClientNavigationActivity): |
| (API::Navigation::setForegroundActivity): Deleted. |
| * UIProcess/ProcessThrottler.cpp: |
| (WebKit::ProcessThrottler::TimedActivity::TimedActivity): |
| (WebKit::ProcessThrottler::TimedActivity::operator=): |
| (WebKit::ProcessThrottler::TimedActivity::activityTimedOut): |
| (WebKit::ProcessThrottler::TimedActivity::updateTimer): |
| * UIProcess/ProcessThrottler.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::loadRequest): |
| (WebKit::WebPageProxy::loadFile): |
| (WebKit::WebPageProxy::loadData): |
| (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::didFinishLoadForFrame): |
| (WebKit::WebPageProxy::didFailLoadForFrame): |
| |
| 2020-04-30 Alex Christensen <achristensen@webkit.org> |
| |
| Add SPI to change a WKWebView's CORS disabling pattern after initialization |
| https://bugs.webkit.org/show_bug.cgi?id=211211 |
| <rdar://problem/61837474> |
| |
| Reviewed by Chris Dumez. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _corsDisablingPatterns]): |
| (-[WKWebView _setCORSDisablingPatterns:]): |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::corsDisablingPatterns const): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::parseAndAllowAccessToCORSDisablingPatterns): |
| (WebKit::m_isNavigatingToAppBoundDomain): |
| (WebKit::WebPage::updateCORSDisablingPatterns): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-04-30 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Implement -markedTextRange |
| https://bugs.webkit.org/show_bug.cgi?id=211148 |
| <rdar://problem/57865890> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Return the UITextRange-like object for the marked text range. Clients can use this range to |
| access the selection rects or query for the caret rect at the start or end of the range, |
| if desired. |
| |
| * Shared/EditorState.cpp: |
| (WebKit::EditorState::PostLayoutData::encode const): |
| (WebKit::EditorState::PostLayoutData::decode): |
| Encode and decode the marked text selection rects and caret rects at the state and end |
| of the marked text range. This is the same information that we compute in order to |
| implement -selectedTextRange. I thought about collecting these details into class and |
| having editor state hold two instances of it: one for selected text and one for marked text. |
| However I decided against it because this class is unlikely to find use outside of what is |
| needed to implement -selectedTextRange and -markedTextRange. This is because only those |
| functions require such details so as to return an opaque UITextRange-derived object that |
| can be passed to- or its sub-objects can be passed to WKContentView's -caretRectForPosition |
| and -selectionRectsForRange. Literally, WKContentView does not support other UITextInput |
| functions that operate on UITextRange or UITextPosition. I didn't pursue fixing this in |
| general because 1) I don't need it to solve my problem and 2) UIWKDocumentContext SPI seems |
| to be the new general-purpose solution. |
| |
| (WebKit::operator<<): Pretty print all the new marked text details we collect. While I am here, |
| use Vector::isEmpty() instead of Vector::size() to check if there are selection rects. |
| * Shared/EditorState.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView textFirstRect]): |
| (-[WKContentView textLastRect]): |
| Update code now that the marked text rects are in the post layout data sub-object. |
| |
| (-[WKContentView _scaledCaretRectForSelectionStart:]): Extracted from -selectedTextRange. |
| (-[WKContentView _scaledCaretRectForSelectionEnd:]): Ditto. |
| (-[WKContentView selectedTextRange]): Write in terms of -_scaledCaretRectForSelectionStart |
| and -_scaledCaretRectForSelectionEnd. Also modernize the code while I am here. |
| (-[WKContentView markedTextRange]): Added. |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::getPlatformEditorState const): Collect the marked text rects and the caret |
| rects at the start and end of the range. |
| |
| 2020-04-30 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4][X11] Add support for rendering web view contents |
| https://bugs.webkit.org/show_bug.cgi?id=211189 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Use GdkDisplayX11::xevent signal instead of filtering events that is no longer available in GTK4. GdkVisual no |
| longer exists either, so we get the X visual from the PlatformDisplay. |
| |
| * UIProcess/gtk/AcceleratedBackingStoreX11.cpp: |
| (WebKit::XDamageNotifier::add): |
| (WebKit::XDamageNotifier::remove): |
| (WebKit::XDamageNotifier::filterXDamageEvent): |
| (WebKit::AcceleratedBackingStoreX11::~AcceleratedBackingStoreX11): |
| (WebKit::AcceleratedBackingStoreX11::update): |
| (WebKit::AcceleratedBackingStoreX11::snapshot): |
| * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp: |
| (WebKit::AcceleratedSurfaceX11::AcceleratedSurfaceX11): |
| (WebKit::AcceleratedSurfaceX11::createPixmap): |
| |
| 2020-04-30 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Add support click events |
| https://bugs.webkit.org/show_bug.cgi?id=211175 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Handle button pressed and released events using a GtkGestureClick. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (ClickCounter::currentClickCountForGdkButtonEvent): |
| (webkitWebViewBaseButtonPressed): |
| (webkitWebViewBaseButtonReleased): |
| (webkitWebViewBaseConstructed): |
| (webkitWebViewBaseResetClickCounter): |
| |
| 2020-04-29 Simon Fraser <simon.fraser@apple.com> |
| |
| Use initializers in PlatformMouseEvent and WebEvent |
| https://bugs.webkit.org/show_bug.cgi?id=211217 |
| |
| Reviewed by Tim Horton. |
| |
| Use initializers im WebEvent. |
| |
| * Shared/WebEvent.h: |
| * Shared/WebMouseEvent.cpp: |
| |
| 2020-04-29 Brent Fulgham <bfulgham@apple.com> |
| |
| Improve SandboxExtension::HandleArray to reduce boilerplate |
| https://bugs.webkit.org/show_bug.cgi?id=211103 |
| <rdar://problem/62533632> |
| |
| Reviewed by Per Arne Vollan. |
| |
| There are a number of boilerplate patterns needed when using SandboxExtension::HandleArray. |
| We could make these simpler and less error prone by improving the class. |
| |
| This patch: |
| 1. Adds convenience methods to create and consume HandleArrays. |
| 2. Updates uses of HandleArray to use the convenience methods. |
| |
| Tested by existing tests. |
| |
| * Platform/IPC/FormDataReference.h: |
| (IPC::FormDataReference::decode): |
| * Shared/Cocoa/SandboxExtensionCocoa.mm: |
| (WebKit::SandboxExtension::createHandlesForFiles): |
| (WebKit::SandboxExtension::createHandlesForMachLookup): |
| (WebKit::SandboxExtension::consumePermanently): |
| * Shared/SandboxExtension.h: |
| (WebKit::createHandlesForFiles): |
| (WebKit::SandboxExtension::consumePermanently): |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * UIProcess/Cocoa/WebProcessProxyCocoa.mm: |
| (WebKit::WebProcessProxy::unblockPreferenceServiceIfNeeded): |
| * UIProcess/WebPageProxy.cpp: |
| * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: |
| (WebKit::WebPlatformStrategies::getPathnamesForType): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::extendSandboxForFilesFromOpenPanel): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::initializeWebProcess): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| (WebKit::WebProcess::unblockPreferenceService): |
| |
| 2020-04-29 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION(r260791) Network process fails to suspend promptly |
| https://bugs.webkit.org/show_bug.cgi?id=211207 |
| <rdar://problem/62620454> |
| |
| Reviewed by Alex Christensen. |
| |
| After r260791, all WebResourceLoadStatisticsStore instances share a single WorkQueue. |
| As a result, the logic to suspend WebResourceLoadStatisticsStore's WorkQueues in |
| NetworkProcess::prepareToSuspend() needs to get updated to reflect this. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::suspend): |
| (WebKit::WebResourceLoadStatisticsStore::resume): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::prepareToSuspend): |
| (WebKit::NetworkProcess::resume): |
| |
| 2020-04-29 Adrian Perez de Castro <aperez@igalia.com> |
| |
| REGRESSION(r260889): TestContextMenu:/webkit/WebKitWebView/populate-menu no longer passes |
| https://bugs.webkit.org/show_bug.cgi?id=211203 |
| |
| Reviewed by Aakash Jain. |
| |
| No new tests needed. |
| |
| * UIProcess/gtk/WebContextMenuProxyGtk.cpp: |
| (WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): Attach the correct action |
| group to the popover widget, instead of a temporary which will always be empty. |
| |
| 2020-04-29 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r246395): Leak of ARQuickLookPreviewItem and ARQuickLookWebKitItem in -[_WKPreviewControllerDataSource previewController:previewItemAtIndex:] |
| <https://webkit.org/b/211197> |
| <rdar://problem/62612483> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: |
| (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]): |
| - Use RetainPtr<> and adoptNS() to fix leaks. |
| |
| 2020-04-29 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed sandbox compile fix. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-04-29 Alex Christensen <achristensen@webkit.org> |
| |
| Add WKNavigationDelegate API shouldAllowDeprecatedTLS |
| https://bugs.webkit.org/show_bug.cgi?id=210981 |
| <rdar://problem/61742976> |
| |
| Reviewed by Geoffrey Garen. |
| |
| * UIProcess/API/Cocoa/WKNavigationDelegate.h: |
| * UIProcess/Cocoa/NavigationState.h: |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::setNavigationDelegate): |
| (WebKit::NavigationState::NavigationClient::shouldAllowLegacyTLS): |
| |
| 2020-04-29 Chris Dumez <cdumez@apple.com> |
| |
| [iOS][WK2] Temporarily stop using RunningBoard for the foreground process assertion |
| https://bugs.webkit.org/show_bug.cgi?id=211196 |
| <rdar://problem/62535822> |
| |
| Reviewed by Tim Horton. |
| |
| Temporarily stop using RunningBoard for the foreground process assertion. On recent iOS builds, there |
| are issues where this assertion can time out after 30 seconds, even though the process is still |
| foreground. |
| |
| * Configurations/WebKit.xcconfig: |
| * UIProcess/ProcessAssertion.h: |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (WebKit::runningBoardNameForAssertionType): |
| (WebKit::ProcessAssertion::ProcessAssertion): |
| (WebKit::ProcessAssertion::~ProcessAssertion): |
| |
| 2020-04-29 Youenn Fablet <youenn@apple.com> |
| |
| Set _STAttributionDisplayName to iOS WebContent Info plist |
| https://bugs.webkit.org/show_bug.cgi?id=210772 |
| <rdar://problem/62075201> |
| |
| Reviewed by Eric Carlson. |
| |
| Set _STAttributionDisplayName to 'Website' value. |
| |
| * WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist: |
| |
| 2020-04-29 Kate Cheney <katherine_cheney@apple.com> |
| |
| Refactor layout tests after updates to In-App Browser Privacy |
| https://bugs.webkit.org/show_bug.cgi?id=211146 |
| <rdar://problem/62524127> |
| |
| Reviewed by Brent Fulgham. |
| |
| Tests: http/tests/in-app-browser-privacy/app-bound-domain-gets-app-bound-session.html |
| http/tests/in-app-browser-privacy/non-app-bound-domain-does-not-get-app-bound-session.html |
| |
| Removes setInAppBrowserPrivacyEnabled, which is no longer needed by |
| layout tests. Setting this in TestOptions is enough. |
| getWebViewCategory is not needed because this patch deletes the only test |
| which uses it. Lastly, adds a new function to clear app-bound sessions |
| now that multiple tests are checking for them. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::clearAppBoundSession): |
| (WebKit::NetworkProcess::setInAppBrowserPrivacyEnabled): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/NetworkSession.h: |
| (WebKit::NetworkSession::clearAppBoundSession): |
| (WebKit::NetworkSession::setInAppBrowserPrivacyEnabled): Deleted. |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::appBoundSession): |
| (WebKit::NetworkSessionCocoa::clearAppBoundSession): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreClearAppBoundSession): |
| (WKWebsiteDataStoreSetInAppBrowserPrivacyEnabled): Deleted. |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _getWebViewCategoryFor:completionHandler:]): Deleted. |
| * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::clearAppBoundSession): |
| (WebKit::NetworkProcessProxy::setInAppBrowserPrivacyEnabled): Deleted. |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::clearAppBoundSession): |
| (WebKit::WebsiteDataStore::setInAppBrowserPrivacyEnabled): Deleted. |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| |
| 2020-04-29 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> |
| |
| [GPUP][GTK] compile GPUProcess in GTK port |
| https://bugs.webkit.org/show_bug.cgi?id=208814 |
| |
| Reviewed by Don Olmstead. |
| |
| Enable GPUProcess compilation in WebKitGTK as an experimental |
| feature |
| |
| No new tests required. |
| |
| * GPUProcess/GPUConnectionToWebProcess.cpp: guard |
| UserMediaCaptureManagerProxy for Cocoa platform only. |
| (WebKit::GPUConnectionToWebProcess::dispatchMessage): guard |
| messages from UserMediaCaptureManagerProxy for Cocoa platform, |
| moving up this guard from video track messages. |
| (WebKit::GPUConnectionToWebProcess::mediaKeyStorageDirectory): |
| removed guard for this function of ENCRYPTED_MEDIA leaving only |
| LEGACY_ENCRYPTED_MEDIA, since it's were it is defined. |
| (WebKit::GPUConnectionToWebProcess::setOrientationForMediaCapture): |
| guard the content of this function for Cocoa platform, since it is |
| calling a UserMediaCaptureManagerProxy object. |
| * GPUProcess/GPUProcess.cpp: Replace the included header to match |
| with the used symbols in file. |
| * GPUProcess/gstreamer/GPUProcessGStreamer.cpp: Added. |
| (WebKit::GPUProcess::initializeProcess): Empty function. |
| (WebKit::GPUProcess::initializeProcessName): Empty function. |
| (WebKit::GPUProcess::initializeSandbox): Empty function. |
| * GPUProcess/gstreamer/GPUProcessMainGStreamer.cpp: Added. |
| (WebKit::initializeAuxiliaryProcess<GPUProcess>): New function. |
| (WebKit::GPUProcessMain): New function. |
| * GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp: changed guard |
| for this file from ENCRYPTED_MEDIA to LEGACY_ENCRYPTED_MEDIA to |
| match with its header file. |
| * GPUProcess/media/gstreamer/RemoteMediaPlayerProxyGStreamer.cpp: Added. |
| (WebKit::RemoteMediaPlayerProxy::prepareForPlayback): |
| New function that raises noImplemented() |
| (WebKit::RemoteMediaPlayerProxy::mediaPlayerFirstVideoFrameAvailable): |
| New function that raises noImplemented() |
| (WebKit::RemoteMediaPlayerProxy::mediaPlayerRenderingModeChanged): |
| New function that raises noImplemented() |
| (WebKit::RemoteMediaPlayerProxy::enterFullscreen): New function |
| that raises noImplemented() |
| (WebKit::RemoteMediaPlayerProxy::exitFullscreen): New function |
| that raises noImplemented() |
| * PlatformGTK.cmake: add Platform/generic header directory. |
| * SourcesGTK.txt: Add the new files and |
| GPUProcess/media/RemoteAudioDestinationManager.cpp |
| * WebProcess/GPU/GPUProcessConnection.cpp: guard |
| UserMediaCaptureManager for Cocoa platform only. |
| (WebKit::GPUProcessConnection::dispatchMessage): guard messages |
| from UserMediaCaptureManager for Cocoa platform, moving up this |
| guard applied also for video track. |
| * WebProcess/GPU/media/RemoteCDM.cpp: include missing header |
| GPUProcessConnection.h |
| * WebProcess/GPU/media/gstreamer/VideoLayerRemoteGStreamer.cpp: Added. |
| (WebKit::createVideoLayerRemote): New function |
| that raises noImplemented() |
| |
| 2020-04-29 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK4] Unreviewed compile-warning fixes |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseSetEnableBackForwardNavigationGesture): |
| (webkitWebViewBaseWillSwapWebProcess): |
| |
| 2020-04-29 Rob Buis <rbuis@igalia.com> |
| |
| Make PolicyChecker an inner class of FrameLoader |
| https://bugs.webkit.org/show_bug.cgi?id=211138 |
| |
| Reviewed by Alex Christensen. |
| |
| Adapt to PolicyChecker::ShouldContinue change. |
| |
| * GPUProcess/media/RemoteMediaResource.cpp: |
| (WebKit::RemoteMediaResource::responseReceived): |
| * GPUProcess/media/RemoteMediaResource.h: |
| * GPUProcess/media/RemoteMediaResourceManager.cpp: |
| (WebKit::RemoteMediaResourceManager::responseReceived): |
| * GPUProcess/media/RemoteMediaResourceManager.h: |
| * GPUProcess/media/RemoteMediaResourceManager.messages.in: |
| * Scripts/webkit/messages.py: |
| * WebProcess/GPU/media/RemoteMediaResourceProxy.cpp: |
| (WebKit::RemoteMediaResourceProxy::responseReceived): |
| * WebProcess/GPU/media/RemoteMediaResourceProxy.h: |
| |
| 2020-04-29 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 Carlos Garcia Campos. |
| |
| Replace GtkMenuShell with a GtkPopoverMenu for context menus. The former is not available |
| at all in GTK4, and the later allows for simplifying the positioning code: it is enough |
| to provide a point in WebKitWebView widget where to place the popup, and GTK takes care |
| of everything. This removes the custom positioning code (as it is not needed anymore), |
| which did GdkScreen-relative calculations that GTK4 does not support. |
| |
| No new tests needed. |
| |
| * Shared/glib/WebContextMenuItemGlib.h: |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (contextMenuDismissed): Change parameter from GtkMenuShell to GtkMenuShell to GtkWidget. |
| (webkitWebViewPopulateContextMenu): Connect to the GtkPopover::closed signal instead of |
| GtkMenuShell::deactivate. |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (activeContextMenuClosed): Renamed from activeContextMenuUnmapped(), changed parameter |
| from GtkMenuShell to GtkWidget, and compare with WebContextMenuProxyGtk::gtkWidget(). |
| (activeContextMenuUnmapped): Renamed to activeContextMenuClosed(). |
| (webkitWebViewBaseSetActiveContextMenuProxy): Connect to the GtkPopover::closed signal |
| instead of GtkMenuShell::deactivate. |
| (webkitWebViewBaseGetActiveContextMenuProxy): |
| * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: |
| * UIProcess/API/gtk/WebKitWebViewGtk.cpp: |
| * UIProcess/gtk/WebContextMenuProxyGtk.cpp: Arrange to use GtkPopoverMenu instead of |
| GtkMenuShell. |
| * UIProcess/gtk/WebContextMenuProxyGtk.cpp: |
| (WebKit::WebContextMenuProxyGtk::populate): |
| (WebKit::WebContextMenuProxyGtk::showContextMenuWithItems): Simplify using |
| m_context.menuLocation() to obtain the location where to make the context menu popup |
| next to, which allows removing the ::menuPositionFunction() callback as well. |
| (WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): |
| (WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): |
| * UIProcess/gtk/WebContextMenuProxyGtk.h: Remove declarations for ::menuPositionFunction() |
| and ::m_popupPosition, which are now unneeded. |
| (WebKit::WebContextMenuProxyGtk::gtkWidget const): Renamed from ::gtkMenu(), and made it |
| return a GtkWidget. |
| |
| 2020-04-29 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, reverting r260650. |
| https://bugs.webkit.org/show_bug.cgi?id=211172 |
| |
| It is breaking internal bots (Requested by youenn on #webkit). |
| |
| Reverted changeset: |
| |
| "Call STDynamicActivityAttributionPublisher in the WebProcess" |
| https://bugs.webkit.org/show_bug.cgi?id=210772 |
| https://trac.webkit.org/changeset/260650 |
| |
| 2020-04-29 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Uncaught Exception: SyntaxError: Unexpected identifier 'E'. Expected either a closing ']' or a ',' following an array element. |
| https://bugs.webkit.org/show_bug.cgi?id=211163 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * WebProcess/Inspector/WebInspectorUI.cpp: |
| (WebKit::WebInspectorUI::updateFindString): |
| * WebProcess/Inspector/RemoteWebInspectorUI.cpp: |
| (WebKit::RemoteWebInspectorUI::updateFindString): |
| Use the newly exposed `JSON::Value::escapeString` to ensure that the `findString` will not |
| throw a JavaScript exception when placed in the `InspectorFrontendAPI` call. |
| |
| 2020-04-28 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Add support for key events |
| https://bugs.webkit.org/show_bug.cgi?id=211128 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Handle key-pressed and key-released events using a GtkEventControllerKey. To receive key events the widget needs |
| to be focused, so also implement GtkWidgetClass::grab_focus and handle enter and leave focus events. GTK4 needs |
| the widget used by the key bindings translator to be added to a parent to be able to forward key events, so it's |
| now added as a child internal widget of the WebKitWeViewBase. |
| |
| * Shared/gtk/WebEventFactory.cpp: |
| (WebKit::WebEventFactory::createWebKeyboardEvent): |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewChildIsInternalWidget): |
| (webkitWebViewBaseContainerRemove): |
| (webkitWebViewBaseContainerForall): |
| (webkitWebViewBaseFocusEnter): |
| (webkitWebViewBaseFocusLeave): |
| (webkitWebViewBaseKeyPressed): |
| (webkitWebViewBaseKeyReleased): |
| (webkitWebViewBaseGrabFocus): |
| (webkitWebViewBaseConstructed): |
| (webkit_web_view_base_class_init): |
| * UIProcess/gtk/KeyBindingTranslator.cpp: |
| (WebKit::KeyBindingTranslator::KeyBindingTranslator): |
| (WebKit::KeyBindingTranslator::~KeyBindingTranslator): |
| (WebKit::handleCustomKeyBindings): |
| (WebKit::KeyBindingTranslator::commandsForKeyEvent): |
| * UIProcess/gtk/KeyBindingTranslator.h: |
| (WebKit::KeyBindingTranslator::widget const): |
| (WebKit::KeyBindingTranslator::destroyed): |
| |
| 2020-04-28 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Text manipulation] Add a userInfo dictionary to _WKTextManipulationToken |
| https://bugs.webkit.org/show_bug.cgi?id=211151 |
| <rdar://problem/62329534> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (createUserInfo): |
| (-[WKWebView _startTextManipulationsWithConfiguration:completion:]): |
| (-[WKWebView _completeTextManipulation:completion:]): |
| (-[WKWebView _completeTextManipulationForItems:completion:]): |
| * UIProcess/API/Cocoa/_WKTextManipulationToken.h: |
| * UIProcess/API/Cocoa/_WKTextManipulationToken.mm: |
| (-[_WKTextManipulationToken setUserInfo:]): |
| (-[_WKTextManipulationToken userInfo]): |
| |
| Add a new `userInfo` dictionary to `_WKTextManipulationToken`, which contains several named |
| `NSString` keys. |
| |
| (-[_WKTextManipulationToken isEqualToTextManipulationToken:includingContentEquality:]): |
| (-[_WKTextManipulationToken _descriptionPreservingPrivacy:]): |
| |
| 2020-04-28 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r260407): Over-release of NSGraphicsContext in WebKit::convertPlatformImageToBitmap() |
| <https://webkit.org/b/211160> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::convertPlatformImageToBitmap): Use retainPtr() instead |
| of adoptNS() to fix the over-release. |
| |
| 2020-04-28 David Kilzer <ddkilzer@apple.com> |
| |
| IPC::Decoder::isValid() should just be a nullptr check |
| <https://webkit.org/b/211152> |
| <rdar://problem/62552699> |
| |
| Reviewed by Darin Adler. |
| |
| * Platform/IPC/Decoder.h: |
| (IPC::Decoder::isValid const): Change to nullptr check. I |
| reviewed the code in Decoder.{cpp,h}, and I didn't see |
| m_bufferPos being set without a bounds check. Also added |
| WARN_UNUSED_RETURN to make sure the result is always checked. |
| |
| 2020-04-28 Daniel Bates <dabates@apple.com> |
| |
| Move WebPage::textInputContextsInRect() to WebPageIOS.mm |
| https://bugs.webkit.org/show_bug.cgi?id=211136 |
| |
| Reviewed by Eric Carlson. |
| |
| The function WebPage::textInputContextsInRect is very specific to a client on iOS. |
| Although it's tempting to keep this cross-platform because its implementation does |
| not make use of iOS-specific technologies it does a very specific operation, the |
| result of which is a list of contexts to editable elements on the page. The contexts |
| provide enough info for the specific iOS client, but not enough to ever be useful |
| to any other client. Therefore move it to WebPageIOS.mm. |
| |
| Only Mac and iOS were ever using this function. The former only for testing purposes |
| that have since been removed. |
| |
| A side effect of this change is that I also move WebPageProxy::textInputContextsInRect() |
| from WebPageProxy.cpp to WebPageProxyIOS.mm. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::textInputContextsInRect): Deleted; moved to WebPageProxyIOS.mm. |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::textInputContextsInRect): Moved from WebPageProxy.cpp. |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::textInputContextsInRect): Deleted; moved to WebPageIOS.mm. |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::textInputContextsInRect): Moved from WebPage.cpp. |
| |
| 2020-04-28 Chris Dumez <cdumez@apple.com> |
| |
| [iOS][WK2] Drop process assertion logic for holding locked files |
| https://bugs.webkit.org/show_bug.cgi?id=206910 |
| |
| Reviewed by Alex Christensen. |
| |
| Drop process assertion logic for holding locked files as it is causing issues and |
| should no longer be needed. |
| |
| The intention of this code was that the Network Process would send a |
| SetIsHoldingLockedFiles(bool) IPC to the UIProcess whenever there are pending |
| SQLite transactions and the UIProcess would then take a process assertion on behalf |
| of the WebProcess (or release it) to prevent / allow suspension. |
| |
| This approach has some issues: |
| 1. It was noisy in terms of IPC |
| 2. Because it relies on an IPC to the UIProcess to keep running, it was inherently |
| racy |
| 3. We already have logic to deal with suspension in the network / web processes. |
| The UIProcess sends a PrepareForSuspension IPC to its child processes. In turn, |
| those processes will make sure to suspend their database threads to prevent any |
| further database work. The child processes would then respond to the |
| PrepareForSuspension IPC to let the UIProcess know they are ready to suspend. |
| The 2 approaches were conflicting, because after the PrepareForSuspension IPC is |
| sent, the child process could process a transaction and send the |
| SetIsHoldingLockedFiles() IPC to the UIProcess which would incorrectly cancel the |
| suspension. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::NetworkProcess): |
| (WebKit::m_messagePortChannelRegistry): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * Shared/WebSQLiteDatabaseTracker.cpp: Removed. |
| * Shared/WebSQLiteDatabaseTracker.h: Removed. |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didClose): |
| (WebKit::NetworkProcessProxy::didSetAssertionState): |
| (WebKit::NetworkProcessProxy::setIsHoldingLockedFiles): Deleted. |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::shutDown): |
| (WebKit::WebProcessProxy::setIsHoldingLockedFiles): Deleted. |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebProcessProxy.messages.in: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::m_nonVisibleProcessCleanupTimer): |
| (WebKit::m_webSQLiteDatabaseTracker): Deleted. |
| * WebProcess/WebProcess.h: |
| |
| 2020-04-28 Noam Rosenthal <noam@webkit.org> |
| |
| Implement FCP (first contentful paint) |
| https://bugs.webkit.org/show_bug.cgi?id=208499 |
| |
| Reviewed by Simon Fraser. |
| |
| Add an experimental runtime flag for paint-timing (paintTimingEnabled). |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetPaintTimingEnabled): |
| (WKPreferencesGetPaintTimingEnabled): |
| * UIProcess/API/C/WKPreferencesRefPrivate.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::updatePreferencesStore): |
| |
| 2020-04-28 Ross Kirsling <ross.kirsling@sony.com> |
| |
| [JSC] Align upon the name isCallable instead of isFunction |
| https://bugs.webkit.org/show_bug.cgi?id=211140 |
| |
| Reviewed by Darin Adler. |
| |
| * WebProcess/Plugins/Netscape/NPJSObject.cpp: |
| (WebKit::NPJSObject::hasMethod): |
| |
| 2020-04-28 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: find dialog does not populate search string from system find pasteboard |
| https://bugs.webkit.org/show_bug.cgi?id=113588 |
| <rdar://problem/19281466> |
| |
| Reviewed by Brian Burg. |
| |
| * UIProcess/Inspector/mac/WKInspectorWKWebView.h: |
| * UIProcess/Inspector/mac/WKInspectorWKWebView.mm: |
| (-[WKInspectorWKWebView dealloc]): Added. |
| (-[WKInspectorWKWebView setInspectorWKWebViewDelegate:]): |
| (-[WKInspectorWKWebView becomeFirstResponder]): Added. |
| (-[WKInspectorWKWebView _handleWindowDidBecomeKey:]): Added. |
| * UIProcess/Inspector/mac/WKInspectorViewController.h: |
| * UIProcess/Inspector/mac/WKInspectorViewController.mm: |
| (-[WKInspectorViewController inspectorWKWebViewDidBecomeActive:]): Added. |
| * UIProcess/Inspector/WebInspectorProxy.h: |
| * UIProcess/Inspector/mac/WebInspectorProxyMac.mm: |
| (-[WKWebInspectorProxyObjCAdapter inspectorViewControllerDidBecomeActive:]): Added. |
| (WebKit::WebInspectorProxy::didBecomeActive): Added. |
| * UIProcess/Inspector/RemoteWebInspectorProxy.h: |
| * UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm: |
| (-[WKRemoteWebInspectorProxyObjCAdapter inspectorWKWebViewDidBecomeActive:]): Added. |
| (WebKit::RemoteWebInspectorProxy::didBecomeActive): Added. |
| Add a new delegate call chain that notifies the inspector proxy about when the inspector web |
| view becomes active, at which point the inspector proxy can get the current find string and |
| sent it to the inspector page. |
| |
| * WebProcess/Inspector/WebInspectorUI.messages.in: |
| * WebProcess/Inspector/WebInspectorUI.h: |
| * WebProcess/Inspector/WebInspectorUI.cpp: |
| (WebKit::WebInspectorUI::updateFindString): Added. |
| * WebProcess/Inspector/RemoteWebInspectorUI.messages.in: |
| * WebProcess/Inspector/RemoteWebInspectorUI.h: |
| * WebProcess/Inspector/RemoteWebInspectorUI.cpp: |
| (WebKit::RemoteWebInspectorUI::updateFindString): Added. |
| Pass along the new find string to the frontend via `InspectorFrontendAPI.updateFindString`. |
| |
| 2020-04-28 Daniel Bates <dabates@apple.com> |
| |
| Remove unused WebPage::focusTextInputContext() |
| https://bugs.webkit.org/show_bug.cgi?id=211135 |
| |
| Reviewed by Anders Carlsson. |
| |
| I accidentally forgot to remove the WebPage message and WebPage implementation that |
| backed -_focusTextInputContext when I removed it in r260225. Now the implementation |
| is unused. Let's remove it. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::focusTextInputContext): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-04-28 Christopher Reid <chris.reid@sony.com> |
| |
| [Win] Bundle Inspector Resources in Release builds |
| https://bugs.webkit.org/show_bug.cgi?id=210942 |
| |
| Reviewed by Fujii Hironori. |
| |
| Move CMake logic for the inspector resource copy script to |
| Source/WebInspectorUI so it can be shared with Win and other platforms. |
| |
| * InspectorGResources.cmake: |
| * PlatformWPE.cmake: |
| * PlatformWin.cmake: |
| |
| 2020-04-28 David Kilzer <ddkilzer@apple.com> |
| |
| [MacCatalyst] Add missing symlinks to WebKit.frameworks |
| <https://webkit.org/b/211102> |
| <rdar://problem/62137758> |
| |
| Reviewed by Brent Fulgham. |
| |
| * WebKit.xcodeproj/project.pbxproj: |
| (Make Frameworks Symbolic Link): |
| - Update logic to run for macOS and macCatalyst builds. |
| - Add output path. |
| (Check For Inappropriate Objective-C Class Names): |
| - Let Xcode have its way with the project file by adding a |
| newline to the end of the script. |
| (Check For Weak VTables and Externals): Ditto. |
| (Add XPCServices symlink): |
| - Update logic to run for macOS and macCatalyst builds. |
| |
| 2020-04-28 Kate Cheney <katherine_cheney@apple.com> |
| |
| Create a mechanism to add missing ITP Database tables when the schema is updated |
| https://bugs.webkit.org/show_bug.cgi?id=211004 |
| <rdar://problem/62261187> |
| |
| Reviewed by John Wilander. |
| |
| This patch updates the ITP database to better handle added tables to |
| the schema. Currently the database store deletes and re-creates the |
| database when any schema change is encountered. This is simple but |
| would result in ITP data loss during schema updates, so this patch |
| searches the schema for missing tables and adds any it finds. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::createTableQueries): |
| Convert the tables array to a mapping of table names to their |
| respective CREATE TABLE queries so we can add missing tables on the |
| fly. |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::openITPDatabase): |
| Remove call to createSchema() from the constructor. It makes more |
| sense to base this on whether the file is new as opposed to whether |
| one table exists. |
| (WebKit::ResourceLoadStatisticsDatabaseStore::checkForMissingTablesInSchema): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToNewTablesIfNecessary): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::addMissingTablesIfNecessary): |
| Checks for missing tables and adds them using a best-effort approach. |
| Call createUniqueIndices() to call all CREATE UNIQUE INDEX queries, |
| even though we may not need them all. It is much simpler than to |
| associate each query with its table, and it doesn't hurt to call |
| again. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary): |
| Add missing tables instead of deleting the old database file. Changed |
| the function name to reflect this. Deleted a FIXME which this patch |
| addresses but added a new FIXME for migrating data when adding new |
| columns, which this patch does not address. |
| (WebKit::ResourceLoadStatisticsDatabaseStore::isCorrectTableSchema): Deleted. |
| (WebKit::ResourceLoadStatisticsDatabaseStore::openAndDropOldDatabaseIfNecessary): Deleted. |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::statisticsDatabaseHasAllTables): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::statisticsDatabaseHasAllTables): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _statisticsDatabaseHasAllTables:]): |
| * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::statisticsDatabaseHasAllTables): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::statisticsDatabaseHasAllTables): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| Added an SPI call to test that the database schema includes all |
| tables. This tests the database is not dropped when a new |
| table is added upon opening the database. |
| |
| 2020-04-28 Per Arne Vollan <pvollan@apple.com> |
| |
| [Cocoa] Global preferences are not accessible in the WebContent process when CFPrefs direct mode is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=211075 |
| <rdar://problem/61866711> |
| |
| Reviewed by Brent Fulgham. |
| |
| Global preferences in the domain 'kCFPreferencesAnyApplication' are not readable in the WebContent process when CFPrefs direct mode |
| is enabled. Fix this by transferring a select set of global preferences to the WebContent process on startup. |
| |
| API test: WebKit.GlobalPreferences |
| |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::setGlobalPreferences): |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| |
| 2020-04-28 Peng Liu <peng.liu6@apple.com> |
| |
| Remove the WebKit.plist for Feature Flags |
| https://bugs.webkit.org/show_bug.cgi?id=210534 |
| |
| Unreviewed project file clean-up. |
| |
| A follow-up patch for r260599. Remove the reference to the WebKit.plist from project.pbxproj. |
| |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-04-28 Alex Christensen <achristensen@webkit.org> |
| |
| Fix iOS API tests after r260790 |
| https://bugs.webkit.org/show_bug.cgi?id=211093 |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::sendMessage): |
| Only call the completion handler once. |
| |
| 2020-04-28 Jer Noble <jer.noble@apple.com> |
| |
| [Mac] Adopt kMTSupportNotification_ShouldPlayHDRVideoChanged notification |
| https://bugs.webkit.org/show_bug.cgi?id=211028 |
| |
| Reviewed by Eric Carlson. |
| |
| Adopt a new notification which signals that the receiver should re-query for HDR support. |
| |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::webProcessPoolHighDynamicRangeDidChangeCallback): |
| (WebKit::WebProcessPool::registerHighDynamicRangeChangeCallback): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::registerHighDynamicRangeChangeCallback): |
| (WebKit::WebProcessPool::initializeNewWebProcess): |
| * UIProcess/WebProcessPool.h: |
| |
| 2020-04-28 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK] Unreviewed build fix for Clang 10 |
| |
| * UIProcess/API/gtk/WebKitInputMethodContextImplGtk.cpp: |
| (webkitInputMethodContextImplGtkGetPreedit): Use the "f" suffix to make constants float to |
| prevent a narrowing double-to-float narrowing issue which Clang 10 considers an error. This |
| only happens with GTK4 because GdkRGBA now has float members. Using float constants is fine |
| with GTK3, because promoting floats to doubles never loses precision. |
| |
| 2020-04-28 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Marked text editor state only needs to be set when layout is up-to-date |
| https://bugs.webkit.org/show_bug.cgi?id=211087 |
| |
| Reviewed by Darin Adler. |
| |
| Organize the code to reflect reality: editor state only has marked text rects if layout is |
| up-to-date. So, move these fields to from EditorState to EditorState::PostLayoutData. |
| |
| While I am in this area of the code I also moved the editor state originIdentifierForPasteboard |
| to the top of the struct as it is aesthetically more pleasing to me to have the post layout |
| data last. It likely also produces better bit packing though this wasn't my primary motivation. |
| |
| * Shared/EditorState.cpp: |
| (WebKit::EditorState::encode const): |
| (WebKit::EditorState::decode): |
| (WebKit::EditorState::PostLayoutData::encode const): |
| (WebKit::EditorState::PostLayoutData::decode): |
| Move encoding and decoding of marked test fields from EditorState to EditorState::PostLayoutData. |
| |
| (WebKit::operator<<): Fix up code now that marked text fields are in PostLayoutData. |
| * Shared/EditorState.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView textFirstRect]): Update code now that this data is in the post layout data struct. |
| (-[WKContentView textLastRect]): Ditto. |
| (-[WKContentView _updateChangedSelection:]): Ditto. |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::convertContentToRootViewSelectionRects): Added. |
| (WebKit::WebPage::getPlatformEditorState const): Update now that marked text fields are in the |
| post layout data struct. Simplify the early return as well: only continue if we're not missing post |
| layout data. If we're missing post layout data then we either do not have a frame view or layout is |
| not up-to-data. Either way we don't want to do anything. I also stored the FrameView in a Ref<> to |
| future proof the code should future code cause view detachment and destruction. Note that layout |
| could cause this, but the code currently covers this case. So, taking a Ref<> is about future proofing. |
| (WebKit::WebPage::getRectsForGranularityWithSelectionOffset): Update to use convertContentToRootViewSelectionRects(). |
| (WebKit::WebPage::getRectsAtSelectionOffsetWithText): Ditto. |
| (WebKit::WebPage::requestAutocorrectionData): Use Vector::map() to convert the selection rects to |
| from content to root view FloatRects. |
| (WebKit::WebPage::convertSelectionRectsToRootView): Deleted. |
| |
| 2020-04-28 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Fix sandbox violation when uploading a file |
| https://bugs.webkit.org/show_bug.cgi?id=210937 |
| |
| Reviewed by Darin Adler. |
| |
| On iOS, the file chooser needs access to frontboard and icon services in the WebContent process. Create and |
| consume extensions for these services when choosing files. When done, the extensions should be revoked. This |
| patch also fixes an out-of-bounds array exception when running the test created for this patch. Additionally, |
| the function thumbnailSizedImageForImage should return a RetainPtr<UIImage>, since it seems unsafe to not |
| retain the UIImage after the image context is released in that function. |
| |
| Test: fast/forms/file/open-file-panel-crash.html |
| |
| * Shared/ios/WebIconUtilities.h: |
| * Shared/ios/WebIconUtilities.mm: |
| (WebKit::thumbnailSizedImageForImage): |
| (WebKit::fallbackIconForFile): |
| (WebKit::iconForImageFile): |
| (WebKit::iconForVideoFile): |
| (WebKit::iconForFile): |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/ios/forms/WKFileUploadPanel.mm: |
| (-[_WKFileUploadItem displayImage]): |
| (-[_WKImageFileUploadItem displayImage]): |
| (-[_WKVideoFileUploadItem displayImage]): |
| (-[WKFileUploadPanel documentPicker:didPickDocumentsAtURLs:]): |
| (-[WKFileUploadPanel imagePickerController:didFinishPickingMediaWithInfo:]): |
| (-[WKFileUploadPanel imagePickerController:didFinishPickingMultipleMediaWithInfo:]): |
| * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm: |
| (WebKit::WebChromeClient::createIconForFiles): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::didChooseFilesForOpenPanelWithDisplayStringAndIcon): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-04-27 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Add support for motion events |
| https://bugs.webkit.org/show_bug.cgi?id=211073 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Handle enter, leave and motion events using a GtkEventControllerMotion. |
| |
| * Shared/NativeWebMouseEvent.h: |
| * Shared/gtk/NativeWebMouseEventGtk.cpp: |
| (WebKit::NativeWebMouseEvent::NativeWebMouseEvent): |
| * Shared/gtk/WebEventFactory.cpp: |
| (WebKit::WebEventFactory::createWebMouseEvent): |
| * Shared/gtk/WebEventFactory.h: |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseEnter): |
| (webkitWebViewBaseMotion): |
| (webkitWebViewBaseLeave): |
| (webkitWebViewBaseConstructed): |
| |
| 2020-04-28 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Non-unified build fixes late April 2020 edition |
| https://bugs.webkit.org/show_bug.cgi?id=211099 |
| |
| Unreviewed build fix. |
| |
| * NetworkProcess/NetworkLoad.cpp: Add mising WebCoreArgumentCoders.h header. |
| * WebProcess/Automation/WebAutomationDOMWindowObserver.cpp: |
| (WebKit::WebAutomationDOMWindowObserver::WebAutomationDOMWindowObserver): Add namespace to |
| WebCore::DOMWindow usage. |
| |
| 2020-04-26 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Add support for scroll events |
| https://bugs.webkit.org/show_bug.cgi?id=211045 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Use an event controller to connect to scroll signal and get the GdkEvent. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseHandleWheelEvent): |
| (webkitWebViewBaseScroll): |
| (webkitWebViewBaseConstructed): |
| |
| 2020-04-28 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4][Wayland] Add support for rendering web view contents |
| https://bugs.webkit.org/show_bug.cgi?id=211021 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Implement GtkWidgetClass::snapshot and GtkWidgetClass::measure instead of GtkWidgetClass::draw and |
| GtkWidgetClass::get_preferred_width|height. Add AcceleratedBackingStore::snapshot() pure virtual to be used with |
| GTK4 instead of AcceleratedBackingStore::paint(), and implement it for Wayland. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseSnapshot): Call AcceleratedBackingStore::snapshot(). |
| (webkitWebViewBaseMeasure): Return the natural width/height for the WebView. |
| (webkit_web_view_base_class_init): Add implementations for snapshot and measure vfuncs. |
| * UIProcess/gtk/AcceleratedBackingStore.h: |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: |
| (WebKit::AcceleratedBackingStoreWayland::tryEnsureGLContext): Always try to realize the context here, since that |
| can fail too. |
| (WebKit::AcceleratedBackingStoreWayland::tryEnsureTexture): Helper to share the code to prepare the texture. |
| (WebKit::AcceleratedBackingStoreWayland::downloadTexture): Helper to share the code to download the texture. |
| (WebKit::AcceleratedBackingStoreWayland::snapshot): Use gtk_snapshot_append_texture(). |
| (WebKit::AcceleratedBackingStoreWayland::paint): Use new helpers. |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.h: |
| * UIProcess/gtk/AcceleratedBackingStoreX11.cpp: |
| (WebKit::AcceleratedBackingStoreX11::snapshot): |
| * UIProcess/gtk/AcceleratedBackingStoreX11.h: |
| * UIProcess/gtk/HardwareAccelerationManager.cpp: |
| (WebKit::HardwareAccelerationManager::HardwareAccelerationManager): Force accelerated compositing mode for GTK4. |
| |
| 2020-04-27 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Storage: can see third-party cookies |
| https://bugs.webkit.org/show_bug.cgi?id=211092 |
| <rdar://problem/62469078> |
| |
| Reviewed by Chris Dumez. |
| |
| Test: http/tests/inspector/page/get-cookies.html |
| |
| After r259649, Web Inspector no longer incorrectly bails when attempting to get cookies if |
| the last resource loaded by a given frame does not have cookie access. We also need to check |
| whether the resource we're attempting to get cookies for is first-party or third-party so as |
| to reflect the current cookie policy. |
| |
| * WebProcess/WebPage/WebCookieJar.cpp: |
| (WebKit::shouldBlockCookies): |
| |
| 2020-04-27 Brent Fulgham <bfulgham@apple.com> |
| |
| Follow-up change after r260798. |
| |
| Allow iOS to consume the 'com.apple.cfprefsd.agent' endpoint if issued by the UIProcess. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-04-27 Brent Fulgham <bfulgham@apple.com> |
| |
| [MacCatalyst] Dynamic access to accessibility services is incomplete |
| https://bugs.webkit.org/show_bug.cgi?id=211100 |
| <rdar://problem/62133491> |
| |
| Reviewed by Darin Adler. |
| |
| Testing of MacCatalyst-based apps shows that using dynamic sandbox extensions to support accessibility |
| features is incomplete. In addition to the 'com.apple.cfprefsd.daemon' process needed on macOS and iOS, |
| we also need access to 'com.apple.cfprefsd.agent'. |
| |
| This can only be tested manually in a MacCatlyst build, though existing accessibility tests will |
| confirm no regressions in iOS and macOS. |
| |
| The changes are as follows: |
| 1. Change WebProcessCreationParameters::preferencesExtensionHandle to a handle array. |
| 2. Register (and unregister) for the accessibility enabled notification in MacCatalyst. |
| 3. Open a connection 'com.apple.cfprefsd.agent' (in addition to the existing 'com.apple.cfprefsd.daemon') |
| in MacCatalyst builds. |
| |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| (WebKit::WebProcessPool::registerNotificationObservers): |
| (WebKit::WebProcessPool::unregisterNotificationObservers): |
| * UIProcess/Cocoa/WebProcessProxyCocoa.mm: |
| (WebKit::WebProcessProxy::unblockPreferenceServiceIfNeeded): |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebProcess.messages.in: |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| (WebKit::WebProcess::unblockPreferenceService): |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2020-04-27 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Prevent WebPasteboardProxy IPC messages from unconditionally requesting pasteboard types |
| https://bugs.webkit.org/show_bug.cgi?id=211061 |
| <rdar://problem/62088185> |
| |
| Reviewed by Tim Horton. |
| |
| Tighten IPC message handling in WebPasteboardProxy, such that a web content process is unable to arbitrarily |
| request pasteboard types (and other metadata that depends on pasteboard types, such as the number of files |
| on the pasteboard). |
| |
| This extends the mechanisms added in r259151 by distinguishing between allowing the web process to request |
| type information from the pasteboard, and allowing the web process to request both types and data. In the |
| case of drag and drop, the former is required by the web process from the moment the drag session enters |
| the platform web view; however, the latter is required only after a drop is performed. |
| |
| We utilize this new check, `canAccessPasteboardTypes`, in seven existing IPC message handlers that either |
| directly return the list of types, or return metadata from which pasteboard types may be deduced. |
| |
| See below for more details; covered by existing API and layout tests. |
| |
| * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm: |
| (WebKit::WebPasteboardProxy::grantAccessToCurrentTypes): |
| (WebKit::WebPasteboardProxy::grantAccessToCurrentData): |
| |
| Split the pasteboard access check into two helpers: one to determine whether the web process is allowed to |
| request pasteboard types, and another to determine whether the web process is allowed to request pasteboard |
| data (in addition to types). |
| |
| (WebKit::WebPasteboardProxy::grantAccess): |
| (WebKit::WebPasteboardProxy::revokeAccess): |
| |
| Refactor these to use `PasteboardAccessInformation`; see below for more details. |
| |
| (WebKit::WebPasteboardProxy::canAccessPasteboardTypes const): |
| |
| Return true as long as the accessType is nonnull; this is because either `Types` or `TypesAndData` is |
| sufficient for access to pasteboard types. |
| |
| (WebKit::WebPasteboardProxy::canAccessPasteboardData const): |
| (WebKit::WebPasteboardProxy::accessType const): |
| |
| Add a private helper method to return the access type (`nullopt` for no access, `PasteboardAccessType::Types` |
| for access to types only, and `PasteboardAccessType::TypesAndData` for access to data in addition to types) |
| for the given named pasteboard. |
| |
| (WebKit::WebPasteboardProxy::didModifyContentsOfPasteboard): |
| |
| Refactor this to use `PasteboardAccessInformation`. |
| |
| (WebKit::WebPasteboardProxy::getPasteboardTypes): |
| (WebKit::WebPasteboardProxy::getPasteboardPathnamesForType): |
| |
| Adopt canAccessPasteboardTypes here, and update the FIXME to state that we should really be using |
| canAccessPasteboardData instead. This is blocked on refactoring some more drag and drop code, such |
| that accessing the list of file names on the pasteboard isn't necessary before the drop is handled. |
| |
| (WebKit::WebPasteboardProxy::containsURLStringSuitableForLoading): |
| (WebKit::WebPasteboardProxy::getNumberOfFiles): |
| (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite): |
| (WebKit::WebPasteboardProxy::allPasteboardItemInfo): |
| (WebKit::WebPasteboardProxy::informationForItemAtIndex): |
| (WebKit::WebPasteboardProxy::getPasteboardItemsCount): |
| (WebKit::WebPasteboardProxy::containsStringSafeForDOMToReadForType): |
| |
| Adopt the canAccessPasteboardTypes check in various places. |
| |
| (WebKit::WebPasteboardProxy::PasteboardAccessInformation::grantAccess): |
| (WebKit::WebPasteboardProxy::PasteboardAccessInformation::revokeAccess): |
| (WebKit::WebPasteboardProxy::PasteboardAccessInformation::accessType const): |
| |
| Introduce PasteboardAccessInformation, which replaces the current `std::pair<uint64_t, WeakHashSet<WebProcessProxy>>` |
| that is used to represent which web processes are allowed to access certain changeCounts, for a given pasteboard name. |
| Instead of maintaining a changeCount and set of processes, we now maintain a changeCount and list of (process, access |
| type) pairs. Each item in this list tracks whether the process that has been granted access should be allowed to read |
| only pasteboard types, or both types and data. |
| |
| (WebKit::WebPasteboardProxy::revokeAccessToAllData): Deleted. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::dragEntered): |
| (WebKit::WebPageProxy::dragUpdated): |
| |
| When updating the drag session (i.e. as the user drags over the web view), ensure that the web content |
| process is able to request pasteboard types. |
| |
| * UIProcess/WebPasteboardProxy.cpp: |
| (WebKit::WebPasteboardProxy::allPasteboardItemInfo): |
| (WebKit::WebPasteboardProxy::informationForItemAtIndex): |
| (WebKit::WebPasteboardProxy::getPasteboardItemsCount): |
| (WebKit::WebPasteboardProxy::containsStringSafeForDOMToReadForType): |
| (WebKit::WebPasteboardProxy::containsURLStringSuitableForLoading): |
| |
| Update these method signatures. |
| |
| * UIProcess/WebPasteboardProxy.h: |
| * UIProcess/WebPasteboardProxy.messages.in: |
| |
| Mark more IPC messages as `WantsConnection` so that we can use the `IPC::Connection` argument in the message handlers. |
| |
| 2020-04-27 Alex Christensen <achristensen@webkit.org> |
| |
| Stop waiting for a BinarySemaphore on the main thread in the NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=211080 |
| <rdar://problem/62377357> |
| |
| Reviewed by Darin Adler and Chris Dumez. |
| |
| There was an out-of-date comment suggesting we needed to use a semaphore, but we've since added these in the destructor: |
| RELEASE_ASSERT(!m_statisticsStore); |
| RELEASE_ASSERT(!m_persistentStorage); |
| This indicates that flushAndDestroyPersistentStore is called before the destructor, at which time it is safe to add a reference to keep it alive. |
| WebResourceLoadStatisticsStore is also marked as WTF::DestructionThread::Main so this should do everything we need. |
| We also flush these databases to disk before closing like we did cookies. |
| |
| In order to keep tests working as they are, I needed to make recreateResourceLoadStatisticStore have a CompletionHandler and have all |
| WebResourceLoadStatisticsStores share the same queue to serialize background tasks between WebResourceLoadStatisticsStores with and without database stores |
| sequentially to avoid opening a SQLiteDatabase before the previous WebResourceLoadStatisticsStore had closed it. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::sharedStatisticsQueue): |
| (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): |
| (WebKit::WebResourceLoadStatisticsStore::didDestroyNetworkSession): |
| (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore): |
| (WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate): Deleted. |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::didClose): |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::~NetworkSession): |
| (WebKit::NetworkSession::destroyResourceLoadStatistics): |
| (WebKit::NetworkSession::setResourceLoadStatisticsEnabled): |
| (WebKit::NetworkSession::recreateResourceLoadStatisticStore): |
| * NetworkProcess/NetworkSession.h: |
| |
| 2020-04-27 Alex Christensen <achristensen@webkit.org> |
| |
| Fix tests after r260764 |
| https://bugs.webkit.org/show_bug.cgi?id=211093 |
| |
| Some tests were asserting in takeAsyncReplyHandler. |
| Calling addAsyncReplyHandler before sending the message fixes it. |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::sendMessage): |
| |
| 2020-04-27 Chris Dumez <cdumez@apple.com> |
| |
| [iOS][WK2] Drop "com.apple.WebKit.DatabaseActivity" UIKit background activity |
| https://bugs.webkit.org/show_bug.cgi?id=211084 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Drop "com.apple.WebKit.DatabaseActivity" UIKit background activity in the UIProcess now that local storage |
| has been moved to the network process. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _initializeWithConfiguration:]): |
| (-[WKWebView _setUpSQLiteDatabaseTrackerClient]): Deleted. |
| |
| 2020-04-27 Ryan Haddad <ryanhaddad@apple.com> |
| |
| [Cocoa] stop using out arguments for document attributes when converting to attributed strings |
| https://bugs.webkit.org/show_bug.cgi?id=211048 |
| |
| Unreviewed partial revert of r260739 to remove unexpected logging that broke Catalina-Release-WK2-Perf tests. |
| |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::updateTaskWithFirstPartyForSameSiteCookies): |
| |
| 2020-04-27 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r219050): Remove more code only needed for building with OS X Yosemite |
| <https://webkit.org/b/211088> |
| <rdar://problem/62452487> |
| |
| Reviewed by Chris Dumez. |
| |
| * Platform/IPC/cocoa/ConnectionCocoa.mm: |
| (IPC::Connection::receiveSourceEventHandler): |
| * Platform/mac/MachUtilities.cpp: |
| (setMachPortQueueLength): |
| (machExceptionPort): Deleted. |
| (setMachExceptionPort): Deleted. |
| * Platform/mac/MachUtilities.h: |
| - Delete unused code. |
| |
| 2020-04-27 Per Arne Vollan <pvollan@apple.com> |
| |
| [Cocoa] After r258891, r255119 can be reverted |
| https://bugs.webkit.org/show_bug.cgi?id=211083 |
| |
| Unreviewed revert of r255119. |
| |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| |
| 2020-04-27 Brent Fulgham <bfulgham@apple.com> |
| |
| Unreviewed MacCatalyst build fix after r260739. |
| |
| * UIProcess/Cocoa/TextCheckingController.mm: |
| (WebKit::TextCheckingController::replaceRelativeToSelection): |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: |
| |
| 2020-04-27 Darin Adler <darin@apple.com> |
| |
| Another try at fixing the ENABLE(PLATFORM_DRIVEN_TEXT_CHECKING) build |
| |
| * UIProcess/Cocoa/TextCheckingController.mm: |
| (WebKit::TextCheckingController::replaceRelativeToSelection): |
| Convert an NSAttributedString to a WebCore::AttributedString using |
| argument list syntax. |
| |
| 2020-04-27 Alex Christensen <achristensen@webkit.org> |
| |
| Fix assertion after r260709 |
| https://bugs.webkit.org/show_bug.cgi?id=211007 |
| <rdar://problem/62457303> |
| |
| * WebProcess/Plugins/PluginView.cpp: |
| (WebKit::PluginView::performJavaScriptURLRequest): |
| Not only did I spell javascript wrong, I should've used the special protocolIsJavaScript() method. |
| |
| 2020-04-27 Alex Christensen <achristensen@webkit.org> |
| |
| Reduce use of WebPageProxy::VoidCallback |
| https://bugs.webkit.org/show_bug.cgi?id=210944 |
| |
| Reviewed by Darin Adler. |
| |
| Use sendWithAsyncReply and CompletionHandler<void()> instead. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _executeEditCommand:argument:completion:]): |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::becomeFirstResponder): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::setInitialFocus): |
| (WebKit::WebPageProxy::executeEditCommand): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::focusNextFocusedElement): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView pasteWithCompletionHandler:]): |
| (-[WKContentView moveByOffset:]): |
| (-[WKContentView _selectPositionAtPoint:stayingWithinFocusedElement:completionHandler:]): |
| (-[WKContentView selectPositionAtBoundary:inDirection:fromPoint:completionHandler:]): |
| (-[WKContentView moveSelectionAtBoundary:inDirection:completionHandler:]): |
| (-[WKContentView selectTextWithGranularity:atPoint:completionHandler:]): |
| (-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]): |
| (-[WKContentView accessoryTab:]): |
| (-[WKContentView executeEditCommandWithCallback:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::selectTextWithGranularityAtPoint): |
| (WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection): |
| (WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection): |
| (WebKit::WebPageProxy::selectPositionAtPoint): |
| (WebKit::WebPageProxy::moveSelectionByOffset): |
| (WebKit::WebPageProxy::focusNextFocusedElement): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::executeEditCommandWithCallback): |
| (WebKit::WebPage::setInitialFocus): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::moveSelectionByOffset): |
| (WebKit::WebPage::selectPositionAtPoint): |
| (WebKit::WebPage::selectPositionAtBoundaryWithDirection): |
| (WebKit::WebPage::moveSelectionAtBoundaryWithDirection): |
| (WebKit::WebPage::selectTextWithGranularityAtPoint): |
| (WebKit::WebPage::focusNextFocusedElement): |
| |
| 2020-04-27 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed sandbox compile fix. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-04-27 Philippe Normand <pnormand@igalia.com> |
| |
| [GTK] ENABLE(OPENGL) remmants... |
| https://bugs.webkit.org/show_bug.cgi?id=211077 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| ENABLE(OPENGL) was renamed to ENABLE(GRAPHICS_CONTEXT_GL) in |
| r254064 but not in all the code base... |
| |
| * UIProcess/gtk/HardwareAccelerationManager.cpp: |
| (WebKit::HardwareAccelerationManager::HardwareAccelerationManager): |
| |
| 2020-04-27 Daniel Bates <dabates@apple.com> |
| |
| Caret may be placed in the wrong spot for text input context that is a form control |
| https://bugs.webkit.org/show_bug.cgi?id=210939 |
| <rdar://problem/61943089> |
| |
| Reviewed by Darin Adler. |
| |
| Find the closest editable position in the element for the point using the |
| newly introduced closestEditablePositionInElementForAbsolutePoint(). |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::focusTextInputContextAndPlaceCaret): |
| |
| 2020-04-27 Darin Adler <darin@apple.com> |
| |
| Fix ENABLE(PLATFORM_DRIVEN_TEXT_CHECKING) build |
| |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h: |
| Change "class AttributedString" to "struct AttributedString". |
| |
| 2020-04-27 Philippe Normand <pnormand@igalia.com> |
| |
| [WPE] about:gpu page is incomplete |
| https://bugs.webkit.org/show_bug.cgi?id=211076 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| ENABLE(OPENGL) was renamed to ENABLE(GRAPHICS_CONTEXT_GL) in |
| r254064 but not in all the code base... |
| |
| * UIProcess/API/glib/WebKitProtocolHandler.cpp: |
| (WebKit::WebKitProtocolHandler::handleGPU): |
| |
| 2020-04-26 Darin Adler <darin@apple.com> |
| |
| Replace more uses of live ranges with SimpleRange |
| https://bugs.webkit.org/show_bug.cgi?id=211058 |
| |
| Reviewed by Antti Koivisto. |
| |
| * Shared/API/Cocoa/WKDataDetectorTypesInternal.h: |
| (fromWKDataDetectorTypes): Updated since DataDetectorTypes |
| is now an enum class. Also got rid of special "none" and "all" values. |
| |
| * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.mm: |
| (-[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]): Updated |
| since DataDetection now takes a SimpleRange. |
| |
| * WebProcess/WebPage/ViewGestureGeometryCollector.cpp: |
| (WebKit::ViewGestureGeometryCollector::computeTextLegibilityScales): |
| Use SimpleRange. |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::detectDataInAllFrames): Ditto. |
| |
| * WebProcess/WebPage/WebPage.h: Removed unneeded include of DataDetection.h. |
| |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::performImmediateActionHitTestAtLocation): Use SimpleRange. |
| |
| 2020-04-27 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Make it possible to build with GTK4 without errors |
| https://bugs.webkit.org/show_bug.cgi?id=210967 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Add ifdefs when needed to make it possible to complete a build with GTK4. This way we can continue working on |
| every feature individually and checking it actually works. Move public headers containing API specific to GTK3 |
| and GTK4 into their own gtk3 and gtk4 directory. |
| |
| * PlatformGTK.cmake: |
| * Shared/API/glib/WebKitContextMenuItem.cpp: |
| * Shared/NativeWebKeyboardEvent.h: |
| * Shared/NativeWebMouseEvent.h: |
| * Shared/NativeWebWheelEvent.h: |
| * Shared/glib/WebContextMenuItemGlib.cpp: |
| (WebKit::WebContextMenuItemGlib::WebContextMenuItemGlib): |
| (WebKit::WebContextMenuItemGlib::buildActionName const): |
| (WebKit::WebContextMenuItemGlib::createActionIfNeeded): |
| * Shared/glib/WebContextMenuItemGlib.h: |
| * Shared/gtk/NativeWebKeyboardEventGtk.cpp: |
| * Shared/gtk/NativeWebMouseEventGtk.cpp: |
| (WebKit::NativeWebMouseEvent::NativeWebMouseEvent): |
| * Shared/gtk/NativeWebTouchEventGtk.cpp: |
| (WebKit::NativeWebTouchEvent::NativeWebTouchEvent): |
| * Shared/gtk/NativeWebWheelEventGtk.cpp: |
| * Shared/gtk/WebEventFactory.cpp: |
| (WebKit::buttonForEvent): |
| (WebKit::WebEventFactory::createWebMouseEvent): |
| (WebKit::WebEventFactory::createWebKeyboardEvent): |
| (WebKit::WebEventFactory::createWebTouchEvent): |
| * Shared/gtk/WebEventFactory.h: |
| * SourcesGTK.txt: |
| * UIProcess/API/C/WKNativeEvent.h: |
| * UIProcess/API/glib/InputMethodFilter.cpp: |
| (WebKit::InputMethodFilter::filterKeyEvent): |
| * UIProcess/API/glib/InputMethodFilter.h: |
| * UIProcess/API/glib/WebKitInstallMissingMediaPluginsPermissionRequest.cpp: |
| (createGstInstallPluginsContext): |
| * UIProcess/API/glib/WebKitPrivate.cpp: |
| * UIProcess/API/glib/WebKitUIClient.cpp: |
| (UIClient::setWindowFrameTimerFired): |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextGetProperty): |
| (webkitWebContextSetProperty): |
| (webkit_web_context_class_init): |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkitWebViewRunAsModal): |
| (webkitWebViewPopulateContextMenu): |
| * UIProcess/API/gtk/InputMethodFilterGtk.cpp: |
| (WebKit::InputMethodFilter::platformEventKeyIsKeyPress const): |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::setViewNeedsDisplay): |
| (WebKit::PageClientImpl::setCursor): |
| (WebKit::PageClientImpl::doneWithKeyEvent): |
| (WebKit::PageClientImpl::createPopupMenuProxy): |
| (WebKit::PageClientImpl::createDataListSuggestionsDropdown): |
| (WebKit::PageClientImpl::startDrag): |
| (WebKit::PageClientImpl::doneWithTouchEvent): |
| (WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore): |
| * UIProcess/API/gtk/WebKitAuthenticationDialog.cpp: |
| * UIProcess/API/gtk/WebKitAuthenticationDialog.h: |
| * UIProcess/API/gtk/WebKitEmojiChooser.cpp: |
| * UIProcess/API/gtk/WebKitEmojiChooser.h: |
| * UIProcess/API/gtk/WebKitInputMethodContextGtk.cpp: |
| (webkit_input_method_context_filter_key_event): |
| * UIProcess/API/gtk/WebKitInputMethodContextImplGtk.cpp: |
| (webkitInputMethodContextImplGtkFilterKeyEvent): |
| (webkitInputMethodContextImplGtkSetClientWindow): |
| * UIProcess/API/gtk/WebKitPopupMenu.cpp: |
| (WebKit::WebKitPopupMenu::WebKitPopupMenu): |
| (WebKit::WebKitPopupMenu::showPopupMenu): |
| (WebKit::WebKitPopupMenu::hidePopupMenu): |
| (WebKit::WebKitPopupMenu::cancelTracking): |
| * UIProcess/API/gtk/WebKitPopupMenu.h: |
| * UIProcess/API/gtk/WebKitPrintOperation.cpp: |
| * UIProcess/API/gtk/WebKitScriptDialogGtk.cpp: |
| (webkitScriptDialogAccept): |
| (webkitScriptDialogDismiss): |
| (webkitScriptDialogSetUserInput): |
| * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp: |
| * UIProcess/API/gtk/WebKitScriptDialogImpl.h: |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (ClickCounter::currentClickCountForGdkButtonEvent): |
| (_WebKitWebViewBasePrivate::_WebKitWebViewBasePrivate): |
| (webkitWebViewBaseSetToplevelOnScreenWindow): |
| (webkitWebViewBaseRealize): |
| (webkitWebViewBaseContainerForall): |
| (webkitWebViewBaseDispose): |
| (webkitWebViewBaseConstructed): |
| (webkitWebViewBaseSizeAllocate): |
| (webkitWebViewBaseKeyPressEvent): |
| (webkitWebViewBaseKeyReleaseEvent): |
| (webkitWebViewBaseSetEnableBackForwardNavigationGesture): |
| (webkitWebViewBaseBeginBackSwipeForTesting): |
| (webkitWebViewBaseCompleteBackSwipeForTesting): |
| (webkit_web_view_base_class_init): |
| (webkitWebViewBaseWillSwapWebProcess): |
| (webkitWebViewBaseDidExitWebProcess): |
| (webkitWebViewBaseDidRelaunchWebProcess): |
| (webkitWebViewBaseTakeViewSnapshot): |
| (webkitWebViewBaseDidStartProvisionalLoadForMainFrame): |
| (webkitWebViewBaseDidFirstVisuallyNonEmptyLayoutForMainFrame): |
| (webkitWebViewBaseDidFinishLoadForMainFrame): |
| (webkitWebViewBaseDidFailLoadForMainFrame): |
| (webkitWebViewBaseDidSameDocumentNavigationForMainFrame): |
| (webkitWebViewBaseDidRestoreScrollPosition): |
| (webkitWebViewBaseShowEmojiChooser): |
| (webkitWebViewBaseRequestPointerLock): |
| (webkitWebViewBaseDidLosePointerLock): |
| (webkitWebViewBaseSynthesizeCompositionKeyPress): |
| * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: |
| * UIProcess/API/gtk/WebKitWebViewDialog.cpp: |
| * UIProcess/API/gtk/WebKitWebViewDialog.h: |
| * UIProcess/API/gtk/WebKitWebViewGtk.cpp: |
| (webkitWebViewAuthenticate): |
| (webkitWebViewScriptDialog): |
| (webkitWebViewRunFileChooser): |
| (webkitWebViewMaximizeWindow): |
| (webkitWebViewMinimizeWindow): |
| (webkitWebViewRestoreWindow): |
| * UIProcess/API/gtk3/WebKitContextMenuItem.h: Copied from Source/WebKit/UIProcess/API/gtk/WebKitContextMenuItem.h. |
| * UIProcess/API/gtk3/WebKitInputMethodContext.h: Copied from Source/WebKit/UIProcess/API/gtk/WebKitInputMethodContext.h. |
| * UIProcess/API/gtk4/WebKitContextMenuItem.h: Renamed from Source/WebKit/UIProcess/API/gtk/WebKitContextMenuItem.h. |
| * UIProcess/API/gtk4/WebKitInputMethodContext.h: Renamed from Source/WebKit/UIProcess/API/gtk/WebKitInputMethodContext.h. |
| * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp: |
| (WebKit::WebAutomationSession::platformSimulateMouseInteraction): |
| (WebKit::WebAutomationSession::platformSimulateKeyboardInteraction): |
| (WebKit::WebAutomationSession::platformSimulateKeySequence): |
| * UIProcess/Inspector/gtk/RemoteWebInspectorProxyGtk.cpp: |
| (WebKit::RemoteWebInspectorProxy::platformSave): |
| * UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp: |
| (WebKit::WebInspectorProxy::platformSave): |
| * UIProcess/Inspector/gtk/WebKitInspectorWindow.cpp: |
| (webkit_inspector_window_init): |
| (webkitInspectorWindowNew): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/cairo/BackingStoreCairo.cpp: |
| (WebKit::BackingStore::createBackend): |
| * UIProcess/glib/WebProcessPoolGLib.cpp: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: |
| (WebKit::AcceleratedBackingStoreWayland::tryEnsureGLContext): |
| (WebKit::AcceleratedBackingStoreWayland::paint): |
| * UIProcess/gtk/AcceleratedBackingStoreX11.cpp: |
| (WebKit::AcceleratedBackingStoreX11::~AcceleratedBackingStoreX11): |
| (WebKit::AcceleratedBackingStoreX11::update): |
| * UIProcess/gtk/DragAndDropHandler.cpp: |
| * UIProcess/gtk/DragAndDropHandler.h: |
| * UIProcess/gtk/GestureController.cpp: |
| * UIProcess/gtk/GestureController.h: |
| * UIProcess/gtk/KeyBindingTranslator.cpp: |
| (WebKit::KeyBindingTranslator::KeyBindingTranslator): |
| (WebKit::KeyBindingTranslator::commandsForKeyEvent): |
| * UIProcess/gtk/KeyBindingTranslator.h: |
| * UIProcess/gtk/PointerLockManager.cpp: |
| (WebKit::PointerLockManager::lock): |
| (WebKit::PointerLockManager::unlock): |
| * UIProcess/gtk/PointerLockManager.h: |
| * UIProcess/gtk/PointerLockManagerWayland.cpp: |
| (WebKit::PointerLockManagerWayland::lock): |
| * UIProcess/gtk/PointerLockManagerX11.cpp: |
| (WebKit::PointerLockManagerX11::didReceiveMotionEvent): |
| * UIProcess/gtk/WebColorPickerGtk.cpp: |
| * UIProcess/gtk/WebContextMenuProxyGtk.cpp: |
| (WebKit::WebContextMenuProxyGtk::show): |
| (WebKit::WebContextMenuProxyGtk::showContextMenuWithItems): |
| (WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): |
| (WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): |
| * UIProcess/gtk/WebContextMenuProxyGtk.h: |
| * UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp: |
| * UIProcess/gtk/WebDataListSuggestionsDropdownGtk.h: |
| * UIProcess/gtk/WebPageProxyGtk.cpp: |
| * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: |
| * UIProcess/gtk/WebPopupMenuProxyGtk.h: |
| * WebProcess/Plugins/PluginController.h: |
| * WebProcess/Plugins/PluginView.cpp: |
| * WebProcess/Plugins/PluginView.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::close): |
| (WebKit::WebPage::mainFrameDidLayout): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp: |
| (WebKit::AcceleratedSurfaceX11::AcceleratedSurfaceX11): |
| (WebKit::AcceleratedSurfaceX11::createPixmap): |
| * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: |
| (WebKit::WebPrintOperationGtk::print): |
| |
| 2020-04-27 Rob Buis <rbuis@igalia.com> |
| |
| Make loadURLIntoChildFrame private and non-exported |
| https://bugs.webkit.org/show_bug.cgi?id=211051 |
| |
| Reviewed by Darin Adler. |
| |
| Adapt createFrame to strictly create a subframe and |
| not load anything. |
| |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::createFrame): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| |
| 2020-04-27 Ross Kirsling <ross.kirsling@sony.com> |
| |
| [JSC] CallData/ConstructData should include CallType/ConstructType |
| https://bugs.webkit.org/show_bug.cgi?id=211059 |
| |
| Reviewed by Darin Adler. |
| |
| * WebProcess/Plugins/Netscape/JSNPObject.cpp: |
| (WebKit::JSNPObject::getCallData): |
| (WebKit::JSNPObject::getConstructData): |
| * WebProcess/Plugins/Netscape/JSNPObject.h: |
| * WebProcess/Plugins/Netscape/NPJSObject.cpp: |
| (WebKit::NPJSObject::hasMethod): |
| (WebKit::NPJSObject::construct): |
| (WebKit::NPJSObject::invoke): |
| |
| 2020-04-27 Diego Pino Garcia <dpino@igalia.com> |
| |
| Unreviewed, reverting r260672. |
| |
| [GTK] WebInspector tests are timing out after r260672 |
| |
| Reverted changeset: |
| |
| "[Win] Bundle Inspector Resources in Release builds" |
| https://bugs.webkit.org/show_bug.cgi?id=210942 |
| https://trac.webkit.org/changeset/260672 |
| |
| 2020-04-27 Diego Pino Garcia <dpino@igalia.com> |
| |
| Unreviewed, reverting r260696. |
| |
| Build fix after r260672, no needed since r260672 is also being reverted. |
| |
| Reverted changeset: |
| |
| "REGRESSION(210942): [GTK][WPE] Unreviewed, EWS build bots |
| fail in compile-webkit step" |
| https://bugs.webkit.org/show_bug.cgi?id=211014 |
| https://trac.webkit.org/changeset/260696 |
| |
| 2020-04-26 Darin Adler <darin@apple.com> |
| |
| [Cocoa] stop using out arguments for document attributes when converting to attributed strings |
| https://bugs.webkit.org/show_bug.cgi?id=211048 |
| |
| Reviewed by Sam Weinig. |
| |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::updateTaskWithFirstPartyForSameSiteCookies): Use init instead of initWithString:@"". |
| |
| * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: |
| (IPC::ArgumentCoder<WebCore::AttributedString>::encode): Moved here from AttributedString.mm. |
| (IPC::ArgumentCoder<WebCore::AttributedString>::decode): Ditto. |
| |
| * Shared/DocumentEditingContext.h: Updated to use WebCore::AttributeString. |
| * Shared/DocumentEditingContext.mm: |
| (IPC::ArgumentCoder<WebKit::DocumentEditingContext>::decode): Ditto. |
| |
| * Shared/WebCoreArgumentCoders.h: Added coder for WebCore::AttributedString. |
| |
| * Shared/mac/AttributedString.h: Removed. |
| * Shared/mac/AttributedString.mm: Removed. |
| |
| * SourcesCocoa.txt: Removed AttributedString.mm. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: Updated to use WebCore::AttributedString. |
| * UIProcess/Cocoa/TextCheckingController.mm: Ditto. |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::attributedSubstringForProposedRange): Ditto. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::getContentsAsAttributedString): Ditto. |
| * UIProcess/WebPageProxy.h: Ditto. |
| * UIProcess/WebPageProxy.messages.in: Ditto. |
| * UIProcess/mac/WebPageProxyMac.mm: |
| (WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync): Ditto. |
| (WebKit::WebPageProxy::attributedStringForCharacterRangeCallback): Ditto. |
| |
| * WebKit.xcodeproj/project.pbxproj: Removed AttributedString.h and AttributedString.mm. |
| |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h: Updated to use WebCore::AttributedString. |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.messages.in: Ditto. |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: |
| (WebKit::TextCheckingControllerProxy::replaceRelativeToSelection): Ditto. |
| (WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions): Ditto. |
| |
| * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: |
| (WebKit::WebPage::dictionaryPopupInfoForRange): Updated since editingAttributedString |
| returns a struct. |
| (WebKit::WebPage::getContentsAsAttributedString): Updated to use SimpleRange and |
| since attributedString returns a struct. |
| |
| * WebProcess/WebPage/WebPage.h: Updated to use WebCore::AttributedString. |
| * WebProcess/WebPage/WebPage.messages.in: Ditto. |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::requestDocumentEditingContext): Ditto. |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::attributedSubstringForCharacterRangeAsync): Ditto. |
| (WebKit::WebPage::handleSelectionServiceClick): Ditto. |
| |
| 2020-04-26 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Rendering update steps should use Seconds for the timestamps |
| https://bugs.webkit.org/show_bug.cgi?id=210990 |
| |
| Reviewed by Daniel Bates. |
| |
| * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp: |
| (WebKit::CompositingCoordinator::timestamp const): |
| |
| 2020-04-26 Peng Liu <peng.liu6@apple.com> |
| |
| Remove unused class PlaybackSessionInterface |
| https://bugs.webkit.org/show_bug.cgi?id=211031 |
| |
| Reviewed by Daniel Bates. |
| |
| * WebProcess/cocoa/PlaybackSessionManager.h: |
| |
| 2020-04-11 Darin Adler <darin@apple.com> |
| |
| Stop using live ranges in functions that return range of the selection |
| https://bugs.webkit.org/show_bug.cgi?id=210396 |
| |
| Reviewed by Sam Weinig. |
| |
| * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp: |
| (WebKit::WebEditorClient::updateGlobalSelection): Remove use of live range. |
| |
| * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: |
| (WebKit::WebPage::dictionaryPopupInfoForRange): Updated for changes |
| to attributedString functions. |
| (WebKit::WebPage::getContentsAsAttributedString): Ditto. |
| |
| * WebProcess/WebPage/FindController.cpp: |
| (WebKit::FindController::updateFindUIAfterPageScroll): Use createLiveRange. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::getSelectedRangeAsync): Ditto. |
| (WebKit::WebPage::currentSelectionAsRange): Ditto. |
| |
| * WebProcess/WebPage/WebPage.h: Change m_rangeForDropSnapshot |
| to use a SimpleRange instead of a live range. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::plainTextForContext): Overloaded for SimpleRange and |
| Optional<SimpleRange> as needed by code below. |
| (WebKit::plainTextForDisplay): Ditto. |
| (WebKit::WebPage::getPlatformEditorState const): Use createLiveRange. |
| (WebKit::WebPage::getSelectionContext): Remove use of live range. |
| (WebKit::WebPage::didConcludeDrop): Ditto. |
| (WebKit::WebPage::didConcludeEditDrag): Use createLiveRange. |
| (WebKit::WebPage::computeAndSendEditDragSnapshot): Ditto. |
| (WebKit::WebPage::startAutoscrollAtPosition): Remove use of |
| live range. |
| (WebKit::WebPage::requestEvasionRectsAboveSelection): Use |
| createLiveRange. |
| (WebKit::WebPage::requestDictationContext): Remove use of live range. |
| (WebKit::WebPage::replaceSelectedText): Use createLiveRange. |
| (WebKit::WebPage::applyAutocorrectionInternal): Ditto. |
| (WebKit::WebPage::autocorrectionContext): Remove use of live range. |
| (WebKit::WebPage::requestDocumentEditingContext): Use createLiveRange. |
| |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::getPlatformEditorState const): Remove use of |
| live range. |
| (WebKit::WebPage::attributedSubstringForCharacterRangeAsync): |
| Updated for change to HTMLConverter functions. |
| (WebKit::WebPage::handleSelectionServiceClick): Ditto. |
| (WebKit::WebPage::performImmediateActionHitTestAtLocation): |
| Remove use of live range. |
| |
| 2020-04-25 Alex Christensen <achristensen@webkit.org> |
| |
| Fix internal iOS build. |
| https://bugs.webkit.org/show_bug.cgi?id=210521 |
| |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::WebPaymentCoordinatorProxy::platformBeginApplePaySetup): |
| |
| 2020-04-25 Alex Christensen <achristensen@webkit.org> |
| |
| Move ApplePay code from WebKitAdditions to WebCore and WebKit |
| https://bugs.webkit.org/show_bug.cgi?id=210521 |
| |
| 2020-04-25 Alex Christensen <achristensen@webkit.org> |
| |
| Move ApplePay code from WebKitAdditions to WebCore and WebKit |
| https://bugs.webkit.org/show_bug.cgi?id=210521 |
| |
| Reviewed by Andy Estes. |
| |
| * DerivedSources.make: |
| * Scripts/webkit/messages.py: |
| * Shared/ApplePay/ApplePayPaymentSetupFeatures.h: Added. |
| (WebKit::PaymentSetupFeatures::platformFeatures const): |
| * Shared/ApplePay/ApplePayPaymentSetupFeatures.mm: Added. |
| (WebKit::PaymentSetupFeatures::PaymentSetupFeatures): |
| (WebKit::PaymentSetupFeatures::encode const): |
| (WebKit::PaymentSetupFeatures::decode): |
| (WebKit::PaymentSetupFeatures::operator Vector<Ref<WebCore::ApplePaySetupFeature>> const): |
| * Shared/ApplePay/PaymentSetupConfiguration.h: Added. |
| (WebKit::PaymentSetupConfiguration::platformConfiguration const): |
| * Shared/ApplePay/PaymentSetupConfiguration.mm: Added. |
| (WebKit::toPlatformConfiguration): |
| (WebKit::PaymentSetupConfiguration::PaymentSetupConfiguration): |
| (WebKit::PaymentSetupConfiguration::encode const): |
| (WebKit::PaymentSetupConfiguration::decode): |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.h: |
| (WebKit::WebPaymentCoordinatorProxy::finishConstruction): Deleted. |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: |
| * Shared/ApplePay/cocoa/PaymentSetupConfiguration.mm: Added. |
| (WebKitAdditions::toPlatformConfiguration): |
| (WebKitAdditions::PaymentSetupConfiguration::PaymentSetupConfiguration): |
| (WebKitAdditions::PaymentSetupConfiguration::encode const): |
| (WebKitAdditions::PaymentSetupConfiguration::decode): |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::finishCreating): |
| (WebKit::WebPaymentCoordinatorProxy::getSetupFeatures): |
| (WebKit::WebPaymentCoordinatorProxy::beginApplePaySetup): |
| (WebKit::WebPaymentCoordinatorProxy::endApplePaySetup): |
| (WebKit::WebPaymentCoordinatorProxy::platformBeginApplePaySetup): |
| (WebKit::WebPaymentCoordinatorProxy::platformEndApplePaySetup): |
| * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: |
| (IPC::finishDecoding): |
| (IPC::finishEncoding): |
| (IPC::ArgumentCoder<WebCore::PaymentInstallmentConfiguration>::encode): |
| (IPC::ArgumentCoder<WebCore::PaymentInstallmentConfiguration>::decode): |
| * SourcesCocoa.txt: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/ApplePay/WebPaymentCoordinator.cpp: |
| (WebKit::WebPaymentCoordinator::getSetupFeatures): |
| (WebKit::WebPaymentCoordinator::beginApplePaySetup): |
| (WebKit::WebPaymentCoordinator::endApplePaySetup): |
| * WebProcess/ApplePay/WebPaymentCoordinator.h: |
| |
| 2020-04-25 Darin Adler <darin@apple.com> |
| |
| [Cocoa] Deal with another round of Xcode upgrade checks |
| https://bugs.webkit.org/show_bug.cgi?id=211027 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * WebKit.xcodeproj/project.pbxproj: Bump the upgrade check version. |
| Add a base localization. |
| |
| 2020-04-25 Alex Christensen <achristensen@webkit.org> |
| |
| Prepare to remove automatic URL->String conversion operators |
| https://bugs.webkit.org/show_bug.cgi?id=211007 |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/API/APIError.h: |
| (API::Error::failingURL const): |
| * Shared/API/c/WKSharedAPICast.h: |
| (WebKit::toCopiedURLAPI): |
| * UIProcess/API/Cocoa/WKBrowsingContextController.mm: |
| (setUpPagePolicyClient): |
| * UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm: |
| (WebKit::reportAnErrorURL): |
| * UIProcess/Cocoa/UIDelegate.mm: |
| (WebKit::requestUserMediaAuthorizationForFrame): |
| (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin): |
| * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm: |
| (WebKit::WebPasteboardProxy::readURLFromPasteboard): |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::cancel): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadAlternateHTML): |
| (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::didExplicitOpenForFrame): |
| (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared): |
| (WebKit::WebPageProxy::didSameDocumentNavigationForFrame): |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| (WebKit::WebPageProxy::createNewPage): |
| * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: |
| (-[WKWebProcessPlugInFrame URL]): |
| * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: |
| (WebKit::NetscapePluginStream::didReceiveResponse): |
| * WebProcess/Plugins/PDF/PDFPlugin.mm: |
| (WebKit::PDFPlugin::clickedLink): |
| (WebKit::PDFPlugin::openWithNativeApplication): |
| * WebProcess/Plugins/PluginView.cpp: |
| (WebKit::PluginView::performURLRequest): |
| (WebKit::PluginView::performJavaScriptURLRequest): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect): |
| (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad): |
| (WebKit::WebFrameLoaderClient::shouldForceUniversalAccessFromLocalURL): |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::info const): |
| * WebProcess/WebStorage/StorageAreaMap.cpp: |
| (WebKit::StorageAreaMap::setItem): |
| (WebKit::StorageAreaMap::removeItem): |
| (WebKit::StorageAreaMap::clear): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::origin): |
| |
| 2020-04-25 Darin Adler <darin@apple.com> |
| |
| Move URL to use StringView when returning substrings of the URL |
| https://bugs.webkit.org/show_bug.cgi?id=210431 |
| |
| Reviewed by Anders Carlsson. |
| |
| * NetworkProcess/NetworkLoadChecker.cpp: |
| (WebKit::NetworkLoadChecker::checkRedirection): Use hasCredentials. |
| (WebKit::NetworkLoadChecker::applyHTTPSUpgradeIfNeeded const): |
| Remove use of ASCIILiteral for setProtocol. |
| |
| * NetworkProcess/curl/NetworkDataTaskCurl.cpp: |
| (WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl): Updated for |
| password name change. |
| (WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection): Ditto. |
| |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Updated |
| for password name change. |
| (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection): Ditto. |
| |
| * NetworkProcess/soup/NetworkDataTaskSoup.cpp: |
| (WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup): Updated for |
| password name change. |
| (WebKit::NetworkDataTaskSoup::applyAuthenticationToRequest): Ditto. |
| (WebKit::NetworkDataTaskSoup::continueHTTPRedirection): Ditto. |
| (WebKit::NetworkDataTaskSoup::shouldAllowHSTSPolicySetting const): |
| Use != to compare hosts, rather than hostsAreEqual. |
| (WebKit::NetworkDataTaskSoup::shouldAllowHSTSProtocolUpgrade const): |
| Refactored to use || to match the function above. |
| |
| * Shared/API/APIURL.h: |
| (API::URL::host const): Removed validity check; WTF::URL::host |
| returns null if the URL is invalid. |
| (API::URL::protocol const): Ditto. |
| (API::URL::path const): Ditto. |
| (API::URL::lastPathComponent const): Ditto. Also added toString |
| since WTF::URL::lastPathComponent now returns a StringView. |
| |
| * UIProcess/Cocoa/DownloadClient.mm: |
| (WebKit::DownloadClient::didFinish): Use hasFragmentIdentifier. |
| |
| * UIProcess/DeviceIdHashSaltStorage.cpp: |
| (WebKit::DeviceIdHashSaltStorage::loadStorageFromDisk): |
| Refactored a bit and use fileURLWithFileSystemPath and |
| updated since lastPathComponent returns a StringView. |
| |
| * UIProcess/Plugins/PluginInfoStore.cpp: |
| (WebKit::pathExtension): Updated since lastPathComponent |
| returns a StringView. Refactored a little. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| Use truncatedForUseAsBase. |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| Use != to compare hosts, rather than hostsAreEqual. |
| (WebKit::WebPageProxy::decidePolicyForNewWindowAction): Ditto. |
| (WebKit::WebPageProxy::createNewPage): Ditto. |
| |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::assumeReadAccessToBaseURL): |
| Use truncatedForUseAsBase. |
| |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::initializeAppBoundDomains): |
| Don't use ASCIILiteral for argument to setProtocol. |
| |
| * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp: |
| (WebKit::WebMediaKeyStorageManager::getMediaKeyOrigins): |
| Use fileURLWithFileSystemPath, also refactored a bit. |
| |
| * WebProcess/Plugins/PDF/PDFPlugin.mm: |
| (WebKit::PDFPlugin::installPDFDocument): Updated since |
| fragmentIdentifier returns a StringView. |
| |
| * WebProcess/WebCoreSupport/WebContextMenuClient.cpp: |
| (WebKit::WebContextMenuClient::searchWithGoogle): Streamlined |
| the implementation a bit. |
| |
| * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm: |
| (WebKit::WebDragClient::declareAndWriteDragImage): |
| Updated since lastPathComponent returns a StringView. |
| |
| 2020-04-25 David Kilzer <ddkilzer@apple.com> |
| |
| IPC::Decoder::isInvalid() should be renamed to isValid() |
| <https://webkit.org/b/211000> |
| |
| Reviewed by Darin Adler. |
| |
| Negative logic is more difficult to reason about than positive |
| logic. |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::dispatchMessage): |
| (IPC::Connection::dispatchWorkQueueMessageReceiverMessage): |
| (IPC::Connection::dispatchThreadMessageReceiverMessage): |
| (IPC::Connection::dispatchSyncMessage): |
| * Platform/IPC/Connection.h: |
| (IPC::Connection::sendWithAsyncReply): |
| * Platform/IPC/Decoder.cpp: |
| (IPC::Decoder::create): |
| * Platform/IPC/Decoder.h: |
| (IPC::Decoder::isValid const): Rename from isInvalid() |
| and invert logic. |
| (IPC::Decoder::isInvalid const): Rename to isValid(). |
| * Platform/IPC/MessageSender.h: |
| * UIProcess/AuxiliaryProcessProxy.h: |
| (WebKit::AuxiliaryProcessProxy::sendWithAsyncReply): |
| - Change Decoder::isInvalid() to Decoder::isValid() and reverse |
| the Boolean logic. |
| |
| 2020-04-25 Diego Pino Garcia <dpino@igalia.com> |
| |
| REGRESSION(210942): [GTK][WPE] EWS build bots fail in compile-webkit step |
| https://bugs.webkit.org/show_bug.cgi?id=211014 |
| |
| Make command that generates 'InspectorGResourceBundle.xml' depend on target |
| WebInspectorUI, instead of file 'inspector-resources.stamp'. |
| |
| * InspectorGResources.cmake: |
| |
| 2020-04-24 Diego Pino Garcia <dpino@igalia.com> |
| |
| [WPE][Debug] Unreviewed, fix build after r260063 |
| https://bugs.webkit.org/show_bug.cgi?id=211009 |
| |
| r260063 removed include of WebProcess.h in WebSocketProvider.cpp, |
| which broke unified builds in WPE Debug. |
| |
| * WebProcess/Network/WebSocketProvider.cpp: |
| |
| 2020-04-24 David Kilzer <ddkilzer@apple.com> |
| |
| WebPasteboardProxy::getPasteboardStringsForType() and WebPasteboardProxy::readURLFromPasteboard() should check return value of SharedMemory::createHandle() |
| <https://webkit.org/b/211002> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm: |
| (WebKit::WebPasteboardProxy::getPasteboardBufferForType): |
| (WebKit::WebPasteboardProxy::readBufferFromPasteboard): |
| - Check result of SharedMemory::createHandle() and return early |
| on failure. |
| |
| 2020-04-24 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Unable to sign up on twitter.com |
| https://bugs.webkit.org/show_bug.cgi?id=211003 |
| <rdar://problem/58804852> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WKApplicationStateTrackingView.mm: |
| (-[WKApplicationStateTrackingView _willBeginSnapshotSequence]): |
| (-[WKApplicationStateTrackingView _didCompleteSnapshotSequence]): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::setShouldFireEvents): |
| (WebKit::WebPage::setShouldFireResizeEvents): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-04-24 Christopher Reid <chris.reid@sony.com> |
| |
| [Win] Bundle Inspector Resources in Release builds |
| https://bugs.webkit.org/show_bug.cgi?id=210942 |
| |
| Reviewed by Fujii Hironori. |
| |
| Move CMake logic for the inspector resource copy script to |
| Source/WebInspectorUI so it can be shared with Win and other platforms. |
| |
| * InspectorGResources.cmake: |
| * PlatformWPE.cmake: |
| * PlatformWin.cmake: |
| |
| 2020-04-24 Kate Cheney <katherine_cheney@apple.com> |
| |
| Removing website data for a domain should delete corresponding ITP entry |
| https://bugs.webkit.org/show_bug.cgi?id=210864 |
| <rdar://problem/59473193> |
| |
| Reviewed by John Wilander. |
| |
| Tests: http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-database.html |
| http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration.html |
| http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries-database.html |
| http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries.html |
| http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-database.html |
| http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads.html |
| |
| In the database store: deletes domain from the ObservedDomains table |
| when website data is deleted for that domain. This deletes every |
| instance of the domainID in the database due to cascading deletions. |
| |
| In the memory store: deletes every instance of the domain in the |
| statistics map, which will update the plist. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::removeDataForDomain): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::domainIDExistsInDatabase): |
| Needed a new function to check for the existence of domainID in any |
| table. Existing queries rely on the ObservedDomains entry, which means |
| testing using those could result in a false positive if the domainID |
| was deleted from ObservedDomains but is floating around in another |
| table. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::removeDataForDomain): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::domainIDExistsInDatabase): |
| (WebKit::WebResourceLoadStatisticsStore::removeDataForDomain): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::domainIDExistsInDatabase): |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): |
| Pass RegistrableDomains vector to deleteWebsiteDataForOrigins, |
| captured based on the WebsiteData display name. |
| |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreRemoveITPDataForDomain): |
| (WKWebsiteDataStoreDoesStatisticsDomainIDExistInDatabase): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins): |
| (WebKit::NetworkProcessProxy::domainIDExistsInDatabase): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::removeData): |
| (WebKit::WebsiteDataStore::domainIDExistsInDatabase): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| |
| 2020-04-24 David Kilzer <ddkilzer@apple.com> |
| |
| Use CocoaImage platform abstraction for NSImage/UIImage |
| <https://webkit.org/b/210974> |
| |
| Reviewed by Darin Adler. |
| |
| * Platform/cocoa/CocoaImage.h: Add. |
| - Define CocoaImage here for cross-platform use. Don't use |
| OBJC_CLASS() here because this is an Objective-C header. |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView takeSnapshotWithConfiguration:completionHandler:]): |
| - Combine separate platform-specific methods into one method. |
| * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm: |
| - Combine separate platform-specific instance variables into |
| one instance variable. |
| (-[_WKActivatedElementInfo image]): |
| - Combine separate methods into one platform-specific method. |
| * UIProcess/QuickLookThumbnailLoader.h: |
| - Move cross-platform definition to CocoaImge.h. |
| * UIProcess/QuickLookThumbnailLoader.mm: |
| - Drive-by fix of soft-linking header include order. |
| * WebKit.xcodeproj/project.pbxproj: |
| - Add CocoaImage.h to the project. |
| * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm: |
| (-[WKWebProcessPlugInNodeHandle renderedImageWithOptions:]): |
| (-[WKWebProcessPlugInNodeHandle renderedImageWithOptions:width:]): |
| - Combine separate platform-specific methods into one method. |
| |
| 2020-04-24 David Kilzer <ddkilzer@apple.com> |
| |
| IPC::Decoder should use create() pattern |
| <https://webkit.org/b/210949> |
| <rdar://problem/62144409> |
| |
| Reviewed by Geoffrey Garen. |
| |
| * Platform/IPC/Decoder.cpp: |
| (IPC::Decoder::create): Add implementation. Returns nullptr if |
| Decoder constructor returns an invalid object. |
| (IPC::Decoder::Decoder): Mark invalid if m_buffer is not 64-bit |
| aligned. |
| (IPC::Decoder::unwrapForTesting): Switch to Decoder::create(). |
| * Platform/IPC/Decoder.h: |
| (IPC::Decoder::create): Add declaration. |
| (IPC::Decoder::Decoder): Make explicit. (Can't be made private |
| since we use std::unique_ptr<Decoder>.) |
| * Platform/IPC/cocoa/ConnectionCocoa.mm: |
| (IPC::createMessageDecoder): Switch to Decoder::create(). |
| |
| 2020-04-24 Tim Horton <timothy_horton@apple.com> |
| |
| iPad: "Pocket City" interaction does not work with trackpad |
| https://bugs.webkit.org/show_bug.cgi?id=210985 |
| <rdar://problem/62273077> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView shouldUseMouseGestureRecognizer]): |
| Add another app to the list who fall back to touch event synthesis until rebuilt. |
| |
| 2020-04-24 Alex Christensen <achristensen@webkit.org> |
| |
| SPI clients using fastServerTrustEvaluationEnabled need SPI to inform them of modern TLS negotiation |
| https://bugs.webkit.org/show_bug.cgi?id=210533 |
| |
| Reviewed by Brady Eidson. |
| |
| * NetworkProcess/NetworkDataTask.h: |
| (WebKit::NetworkDataTaskClient::didNegotiateModernTLS): |
| * NetworkProcess/NetworkLoad.cpp: |
| (WebKit::NetworkLoad::didNegotiateModernTLS): |
| * NetworkProcess/NetworkLoad.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::didNegotiateModernTLS): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): |
| * UIProcess/API/APINavigationClient.h: |
| (API::NavigationClient::didNegotiateModernTLS): |
| * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: |
| * UIProcess/Cocoa/NavigationState.h: |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::setNavigationDelegate): |
| (WebKit::NavigationState::NavigationClient::didNegotiateModernTLS): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didNegotiateModernTLS): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| |
| 2020-04-24 Brian Burg <bburg@apple.com> |
| |
| Web Automation: timeout underneath Automation.evaluateJavaScriptFunction in Selenium test frame_switching_tests.py::testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs[Safari] |
| https://bugs.webkit.org/show_bug.cgi?id=210162 |
| <rdar://problem/60561009> |
| |
| Reviewed by Devin Rousso. |
| |
| When an iframe is detached from the DOM, it is no longer exposed as a browsing context |
| and it's not possible to Evaluate JavaScript or perform other commands with it. This |
| patch adds frame lifecycle monitoring so that pending script evaluations are cancelled |
| with FrameNotFound as soon as the iframe is detached from the DOM. This change also avoids |
| running more commands with the frame if it's detached from its DOMWindow and ready to be GC'd. |
| |
| * Sources.txt: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/Automation/WebAutomationDOMWindowObserver.h: Added. |
| * WebProcess/Automation/WebAutomationDOMWindowObserver.cpp: Added. |
| (WebKit::WebAutomationDOMWindowObserver::WebAutomationDOMWindowObserver): |
| (WebKit::WebAutomationDOMWindowObserver::~WebAutomationDOMWindowObserver): |
| (WebKit::WebAutomationDOMWindowObserver::frame const): |
| (WebKit::WebAutomationDOMWindowObserver::willDestroyGlobalObjectInCachedFrame): |
| (WebKit::WebAutomationDOMWindowObserver::willDestroyGlobalObjectInFrame): |
| (WebKit::WebAutomationDOMWindowObserver::willDetachGlobalObjectFromFrame): |
| This class is a stripped-down copy of DOMWindowExtension, which is the only other |
| client of DOMWindow::Observer interface. When a frame is detached, destroyed, or |
| navigates (global object detached), then call the callback and unregister. |
| |
| * WebProcess/Automation/WebAutomationSessionProxy.h: |
| * WebProcess/Automation/WebAutomationSessionProxy.cpp: |
| (WebKit::WebAutomationSessionProxy::~WebAutomationSessionProxy): |
| (WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): |
| (WebKit::WebAutomationSessionProxy::willDestroyGlobalObjectForFrame): |
| (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): |
| (WebKit::WebAutomationSessionProxy::ensureObserverForFrame): For non-main frames, |
| ensure we add a frame observer if we are about to evaluate JavaScript upon the frame. |
| This acts as a watchdog in case the frame becomes detached while waiting for pending |
| JS evaluations. When a frame is detached, the JS evaluation may or may not complete. |
| |
| (WebKit::WebAutomationSessionProxy::selectOptionElement): Fix hilarious typo. |
| |
| * WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp: |
| * WebProcess/GPU/media/WebMediaStrategy.cpp: |
| (WebKit::WebMediaStrategy::clearNowPlayingInfo): |
| (WebKit::WebMediaStrategy::setNowPlayingInfo): |
| Adding a new file seems to have exposed a few missing includes and namespace qualifiers. |
| This is due to unified sources chunking. |
| |
| 2020-04-24 Alex Christensen <achristensen@webkit.org> |
| |
| Use sendWithAsyncReply for ShareSheet related messages |
| https://bugs.webkit.org/show_bug.cgi?id=210828 |
| <rdar://problem/61800730> |
| |
| Reviewed by Brent Fulgham. |
| |
| * Platform/IPC/MessageSender.cpp: |
| We need to call addAsyncReplyHandler before sendMessage in case this is the first async message from this process. |
| Otherwise the reply from the first message is dropped sometimes. |
| * Shared/ShareSheetCallbackID.h: Removed. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::showShareSheet): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::showShareSheet): |
| (WebKit::nextShareSheetCallbackID): Deleted. |
| (WebKit::WebPage::didCompleteShareSheet): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-04-24 Youenn Fablet <youenn@apple.com> and Luming Yin <luming_yin@apple.com> |
| |
| Call STDynamicActivityAttributionPublisher in the WebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=210772 |
| <rdar://problem/62075201> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Call STDynamicActivityAttributionPublisher in WebProcess to make use of the newly added plist entry. |
| Use of a sandbox extension to protect this call. |
| |
| * Configurations/WebKit.xcconfig: |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| * Scripts/process-entitlements.sh: |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist: |
| * WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/InfoPlist.strings: Added. |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| |
| 2020-04-24 Simon Fraser <simon.fraser@apple.com> |
| |
| Move some post-renderingUpdate code into WebCore |
| https://bugs.webkit.org/show_bug.cgi?id=210952 |
| |
| Reviewed by Antti Koivisto. |
| |
| Factor some code called by the various DrawingArea subclasses into Page::finalizeRenderingUpdate(), |
| with some flags to control behavior that differs between drawing areas. |
| |
| ScrollingCoordinator::commitTreeStateIfNeeded() is a no-op for RemoteScrollingCoordinator so |
| it's fine to always call it. |
| |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::updateRendering): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::finalizeRenderingUpdate): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: |
| (WebKit::TiledCoreAnimationDrawingArea::updateRendering): |
| |
| 2020-04-24 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Stop using legacy BKSApplicationStateMonitor |
| https://bugs.webkit.org/show_bug.cgi?id=210945 |
| |
| Reviewed by Tim Horton. |
| |
| Stop using legacy BKSApplicationStateMonitor and use RunningBoard API instead. |
| |
| * Configurations/WebKit.xcconfig: |
| Stop linking against ApplicationServices when using iOS 14 SDK now that we are |
| fully transitioned to RunningBoard. |
| |
| * Platform/spi/ios/RunningBoardServicesSPI.h: |
| * UIProcess/ApplicationStateTracker.h: |
| * UIProcess/ApplicationStateTracker.mm: |
| (WebKit::ApplicationStateTracker::ApplicationStateTracker): |
| (WebKit::isApplicationForeground): |
| (WebKit::ApplicationStateTracker::~ApplicationStateTracker): |
| (WebKit::isBackgroundState): Deleted. |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::isApplicationVisible): |
| |
| 2020-04-23 Simon Fraser <simon.fraser@apple.com> |
| |
| Bounce displayWasRefreshed() via EventDispatcher |
| https://bugs.webkit.org/show_bug.cgi?id=208778 |
| |
| Reviewed by Antti Koivisto. |
| |
| Allow the WebContent process to be notified of display refresh off the main thread, so other |
| threads like the scrolling thread can respond without being blocked. Achieve this |
| by having EventDispatcher receive the IPC message, then bounce it to the main thread. |
| |
| * UIProcess/mac/DisplayLink.cpp: |
| (WebKit::DisplayLink::displayLinkCallback): |
| * WebProcess/WebPage/EventDispatcher.cpp: |
| (WebKit::EventDispatcher::displayWasRefreshed): |
| * WebProcess/WebPage/EventDispatcher.h: |
| * WebProcess/WebPage/EventDispatcher.messages.in: |
| * WebProcess/WebProcess.h: |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::displayWasRefreshed): |
| |
| 2020-04-23 David Kilzer <ddkilzer@apple.com> |
| |
| Clean up QuickLookThumbnailLoader |
| <https://webkit.org/b/210814> |
| |
| Reviewed by Darin Adler. |
| |
| The following items are cleaned up: |
| - Extract `using PlatformImage` into QuickLookThumbnailLoader.h, |
| rename to `CocoaImage` and use to get rid of duplicate |
| code. |
| - Change `id` to `instancetype` for -init methods. |
| - Add `atomic` keyword to @property definitions that were using |
| it as the default. (Use of atomic properties is rare in |
| WebKit, so being explicit avoids a scenario where it looks |
| like `nonatomic` was left off by accident.) |
| - Change @property definitions to `readonly` that are never |
| written to outside of QuickLookThumbnailLoader.mm. |
| - Delete unused @property definitions. |
| - Change method declarations into read-only @property |
| definitions. |
| - Re-declare atomic read-only @property definitions in |
| QuickLookThumbnailLoader.h as read-write definitions in |
| QuickLookThumbnailLoader.mm if they are written to. |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::convertPlatformImageToBitmap): |
| * UIProcess/QuickLookThumbnailLoader.h: |
| - Rename qlThumbnailGenerationQueue @property to just `queue`. |
| - Remove `contentType` @property. It is not used anywhere. |
| This also fixes a theoretical leak found by the clang static |
| analyzer. |
| - Remove `shouldWrite` @property. It is only used within |
| QuickLookThumbnailLoader.mm. |
| - Change `identifier` and `thumbnail` to @property declarations. |
| * UIProcess/QuickLookThumbnailLoader.mm: |
| - Change WKQLThumbnailLoadOperation._identifier type from |
| NSMutableString to NSString. There was no reason for it to |
| be mutable. |
| (-[WKQLThumbnailQueueManager init]): |
| (-[WKQLThumbnailQueueManager dealloc]): |
| - Release `_queue` to fix theoretical leak found by the clang |
| static analyzer. |
| (-[WKQLThumbnailLoadOperation initWithAttachment:identifier:]): |
| (-[WKQLThumbnailLoadOperation initWithURL:identifier:]): |
| (-[WKQLThumbnailLoadOperation start]): |
| - Rename `req` to `request`. |
| - Change separate #if macros to #if/#else since only one version |
| of this code can be used at a time. |
| (-[WKQLThumbnailLoadOperation thumbnail]): |
| - Use CocoaImage to use one copy of the method. |
| |
| 2020-04-23 Megan Gardner <megan_gardner@apple.com> |
| |
| Long pressing attachments in Notes does not activate Context Menu. |
| https://bugs.webkit.org/show_bug.cgi?id=210936 |
| <rdar://problem/61171576> |
| |
| Reviewed by Tim Horton. |
| |
| Not having the ID available for notes makes their code to create the context |
| menu and its items fail. We should probably be passing this information on |
| for any element if we have it. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::selectionPositionInformation): |
| |
| 2020-04-23 Brent Fulgham <bfulgham@apple.com> |
| |
| Allow "kern.osversion" sysctl read |
| https://bugs.webkit.org/show_bug.cgi?id=210929 |
| <rdar://problem/62256013> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Libdispatch checks "kern.osversion" as part of the code path we use for launching our XPC services. |
| We already allow it for some services (Network Process), and should be doing so for our other |
| helper processes. |
| |
| * GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in: |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb: |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2020-04-23 Peng Liu <peng.liu6@apple.com> |
| |
| Remove the WebKit.plist for Feature Flags |
| https://bugs.webkit.org/show_bug.cgi?id=210534 |
| |
| Reviewed by Simon Fraser. |
| |
| * FeatureFlags/WebKit.plist: Removed. |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-04-23 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Crash on RunningBoard process assertion invalidation |
| https://bugs.webkit.org/show_bug.cgi?id=210873 |
| <rdar://problem/62194917> |
| |
| Unreviewed, nil out the observer only after we've removed it to fix crashes on the bots. |
| |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (WebKit::ProcessAssertion::~ProcessAssertion): |
| |
| 2020-04-23 Kate Cheney <katherine_cheney@apple.com> |
| |
| All ITP database tables should reference the ObservedDomains table on DELETE CASCADE |
| https://bugs.webkit.org/show_bug.cgi?id=210874 |
| <rdar://problem/62209438> |
| |
| Reviewed by Brady Eidson. |
| |
| This makes it easier to delete an ITP entry from the entire database. |
| An entry shouldn't really exist outside of ObservedDomains anyways, |
| because that table holds all data about the domain, so this is a good |
| change to make regardless of the deletion use case. |
| |
| (WebKit::needsNewCreateTableSchema): |
| Function to check for old CREATE TABLE queries. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::enableForeignKeys): |
| Must enable foreign keys to use DELETE CASCADE. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::isMigrationNecessary): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToNewTablesIfNecessary): |
| Since this is a schema change that is executed when a table is created, we |
| need to check if the current schema is out of date. If so, we can |
| create new tables using the proper reference and migrate the data. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::openAndDropOldDatabaseIfNecessary): |
| We only need to migrate the data if there were no issues with the |
| schema (otherwise the entire database will already have been created |
| with the correct CREATE TABLE queries). |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| |
| 2020-04-23 Don Olmstead <don.olmstead@sony.com> |
| |
| [CMake] CMAKE_BINARY_DIR should always be a PRIVATE include directory |
| https://bugs.webkit.org/show_bug.cgi?id=196717 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Include CMAKE_BINARY_DIR either directly or through WebKit_PRIVATE_INCLUDE_DIRECTORIES. |
| |
| * PlatformGTK.cmake: |
| * PlatformWPE.cmake: |
| |
| 2020-04-23 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Regression after r260359 ([GTK][WPE] lowWatermarkPages() in MemoryPressureMonitor.cpp only searches the "low" value inside the first "Node" section) |
| https://bugs.webkit.org/show_bug.cgi?id=210916 |
| |
| Reviewed by Carlos Alberto Lopez Perez. |
| |
| Switch over to using a FileHandle type based on std::unique_ptr with a custom deleter and an |
| utility function for opening files. This makes easier to follow the logic inside the polling |
| loop for opening files and retrying when needed. This also fixes exiting the thread when the |
| systemMemoryUsedAsPercentage() function would return -1, to loop restart instead to keep |
| trying. |
| |
| Thanks to Pablo Saavedra for his help in making this patch. |
| |
| No new tests needed. |
| |
| * UIProcess/linux/MemoryPressureMonitor.cpp: |
| (WebKit::FileHandleDeleter::operator()): Add deleter to use with std::unique_ptr<>. |
| (WebKit::tryOpeningForUnbufferedReading): Add utility function to open a file handle if |
| needed and configuring its buffering upon opening. |
| (WebKit::MemoryPressureMonitor::start): Use FileHandle to ensure that handles are always |
| closed properly, and fix logic retry opening files on failure. |
| |
| 2020-04-23 Nikos Mouchtaris <nmouchtaris@apple.com> |
| |
| Soft link QuickLookThumbnailing framework |
| https://bugs.webkit.org/show_bug.cgi?id=210894 |
| |
| Reviewed by Megan Gardner. |
| |
| Soft link QuickLookThumbnailing framework to solve build error. |
| |
| No new tests. Unnecessary. |
| |
| * Configurations/WebKit.xcconfig: |
| * UIProcess/QuickLookThumbnailLoader.mm: |
| (-[WKQLThumbnailLoadOperation initWithURL:identifier:]): |
| (-[WKQLThumbnailLoadOperation start]): |
| * UIProcess/QuickLookThumbnailingSPI.h: Added. |
| * UIProcess/QuickLookThumbnailingSoftLink.h: Added. |
| * UIProcess/QuickLookThumbnailingSoftLink.mm: Added. |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-04-23 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Port MediaPlayback process assertion to RunningBoard |
| https://bugs.webkit.org/show_bug.cgi?id=210212 |
| <rdar://problem/61476951> |
| |
| Reviewed by Geoff Garen. |
| |
| Port MediaPlayback process assertion to RunningBoard instead of the legacy BKSProcessAssertion. |
| We can now #ifdef out the legacy BKSProcessAssertion on recent iOS builds. |
| |
| * UIProcess/ProcessAssertion.h: |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (WebKit::runningBoardNameForAssertionType): |
| (WebKit::ProcessAssertion::ProcessAssertion): |
| (WebKit::ProcessAssertion::~ProcessAssertion): |
| |
| 2020-04-23 John Frankish <john.frankish@outlook.com> |
| |
| [GTK] Crash in cairo_surface_mark_dirty_rectangle() in accelerated compositing mode under X11 |
| https://bugs.webkit.org/show_bug.cgi?id=210636 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| When cairo is configured to use xcb instead of xlib, it might use an image surface attached to the xlib one as |
| snapshot. In that case a flush is needed to detach that snapshot after we have drawn the surface in the |
| context. |
| |
| * UIProcess/gtk/AcceleratedBackingStoreX11.cpp: |
| (WebKit::AcceleratedBackingStoreX11::paint): Call cairo_surface_flush() after drawing. |
| |
| 2020-04-23 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, reverting r260133. |
| |
| We can use RunningBoard foreground assertion again now that |
| <rdar://problem/61830390> has been fixed |
| |
| Reverted changeset: |
| |
| "REGRESSION (r259610): WebGL does not work at all on iOS (was: |
| Google Maps tiles turn black after initial load)" |
| https://trac.webkit.org/changeset/260133 |
| |
| 2020-04-22 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, reverting r260553. |
| |
| Broke iOS and Catalina builds. |
| |
| Reverted changeset: |
| |
| "Soft link QuickLookThumbnailing framework" |
| https://bugs.webkit.org/show_bug.cgi?id=210894 |
| https://trac.webkit.org/changeset/260553 |
| |
| 2020-04-22 Darin Adler <darin@apple.com> |
| |
| [Cocoa] Build with UChar as char16_t even in builds that use Apple's internal SDK |
| https://bugs.webkit.org/show_bug.cgi?id=210845 |
| |
| Reviewed by Anders Carlsson. |
| |
| * Configurations/BaseTarget.xcconfig: Move ICU-configuring macros to Platform.h. |
| |
| * Platform/unix/EnvironmentUtilities.h: Removed unneeded includes. |
| This sidesteps a problem with Apple's internal InstallAPI tool that happens |
| if StringView.h is included and Platform.h is not included first. |
| |
| * UIProcess/API/cpp/WKRetainPtr.h: Removed unneeded includes, and used |
| #pragma once. |
| |
| * UIProcess/Cocoa/PreferenceObserver.h: Moved most things out of the header, |
| since they don't need to be there. |
| * UIProcess/Cocoa/PreferenceObserver.mm: Moved them here including using a |
| class extension for the data member of WKPreferenceObserver. |
| |
| * UIProcess/ios/fullscreen/FullscreenTouchSecheuristicParameters.h: |
| Removed unneeded WTF prefix. |
| |
| 2020-04-22 Nikos Mouchtaris <nmouchtaris@apple.com> |
| |
| Soft link QuickLookThumbnailing framework |
| https://bugs.webkit.org/show_bug.cgi?id=210894 |
| |
| Reviewed by Tim Horton. |
| |
| Soft link QuickLookThumbnailing framework to solve build error. |
| |
| No new tests. Unnecessary. |
| |
| * Configurations/WebKit.xcconfig: |
| * UIProcess/QuickLookThumbnailLoader.mm: |
| (-[WKQLThumbnailLoadOperation initWithURL:identifier:]): |
| (-[WKQLThumbnailLoadOperation start]): |
| * UIProcess/QuickLookThumbnailingSPI.h: Added. |
| * UIProcess/QuickLookThumbnailingSoftLink.h: Added. |
| * UIProcess/QuickLookThumbnailingSoftLink.mm: Added. |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2020-04-22 Daniel Bates <dabates@apple.com> |
| |
| Support toggling debug overlay for touch action region and editable element region independent from non-fast scrollable region |
| https://bugs.webkit.org/show_bug.cgi?id=210774 |
| |
| Reviewed by Dean Jackson. |
| |
| Expose two new enumerators to toggle touch action region and editable element region |
| overlay painting. |
| |
| * UIProcess/API/C/WKPreferencesRef.h: |
| * UIProcess/API/Cocoa/WKPreferencesPrivate.h: |
| |
| 2020-04-22 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Expose -_webView:willGoToBackForwardListItem:inPageCache: |
| https://bugs.webkit.org/show_bug.cgi?id=210878 |
| <rdar://problem/62202276> |
| |
| Reviewed by Alex Christensen. |
| |
| Expose -_webView:willGoToBackForwardListItem:inPageCache: on iOS. |
| |
| * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: |
| * UIProcess/Cocoa/NavigationState.h: |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::setNavigationDelegate): |
| (WebKit::NavigationState::NavigationClient::willGoToBackForwardListItem): |
| |
| 2020-04-22 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Crash on RunningBoard process assertion invalidation |
| https://bugs.webkit.org/show_bug.cgi?id=210873 |
| <rdar://problem/62194917> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (-[WKRBSAssertionDelegate assertion:didInvalidateWithError:]): |
| Capture a weak pointer to self and make sure we only access the invalidation handler on |
| the main thread if |self| is still alive. |
| |
| (WebKit::ProcessAssertion::~ProcessAssertion): |
| Null out the WKRBSAssertionDelegate's observer in the ProcessAssertion destructor, to |
| make sure processAssertionWasInvalidated() cannot get called after the ProcessAssertion |
| has been destroyed. |
| |
| 2020-04-22 David Kilzer <ddkilzer@apple.com> |
| |
| IPC::decodeSharedBuffer() should check the return value of SharedMemory::map() |
| <https://webkit.org/b/210844> |
| <rdar://problem/60773120> |
| |
| Reviewed by Geoffrey Garen. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::decodeSharedBuffer): |
| - Add nullptr check and early return. |
| |
| 2020-04-22 Brent Fulgham <bfulgham@apple.com> |
| |
| Switch from debug ASSERT to RELEASE_ASSERT in toNPJSObject |
| https://bugs.webkit.org/show_bug.cgi?id=210823 |
| <rdar://problem/61774056> |
| |
| Reviewed by David Kilzer. |
| |
| * WebProcess/Plugins/Netscape/NPJSObject.h: |
| (WebKit::NPJSObject::toNPJSObject): |
| |
| 2020-04-22 Youenn Fablet <youenn@apple.com> |
| |
| Simplify SWServerWorker::whenActivated logic |
| https://bugs.webkit.org/show_bug.cgi?id=210795 |
| |
| Reviewed by Alex Christensen. |
| |
| Improve logging and update code according whenActivated implementation. |
| Add an early check for timeouts so that we return earlier in that case. |
| |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: |
| (WebKit::WebSWServerConnection::createFetchTask): |
| (WebKit::WebSWServerConnection::startFetch): |
| |
| 2020-04-21 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, reverting r260478. |
| |
| Caused TestWebKitAPI.WKAttachmentTests crashes on Catalina |
| |
| Reverted changeset: |
| |
| "Clean up QuickLookThumbnailLoader" |
| https://bugs.webkit.org/show_bug.cgi?id=210814 |
| https://trac.webkit.org/changeset/260478 |
| |
| 2020-04-21 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, reverting r260410. |
| |
| Caused crashes in Safari |
| |
| Reverted changeset: |
| |
| "SPI clients using fastServerTrustEvaluationEnabled need SPI |
| to inform them of modern TLS negotiation" |
| https://bugs.webkit.org/show_bug.cgi?id=210533 |
| https://trac.webkit.org/changeset/260410 |
| |
| 2020-04-21 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, reverting r260475. |
| |
| New assert caused layout tests to exit early on iOS and macOS |
| |
| Reverted changeset: |
| |
| "REGRESSION(r260410) Frequent Network process crashes" |
| https://bugs.webkit.org/show_bug.cgi?id=210825 |
| https://trac.webkit.org/changeset/260475 |
| |
| 2020-04-21 David Kilzer <ddkilzer@apple.com> |
| |
| IPC::Encoder::reserve() can be private |
| <https://webkit.org/b/210833> |
| <rdar://problem/62124193> |
| |
| Reviewed by Darin Adler. |
| |
| * Platform/IPC/Encoder.h: |
| (IPC::Encoder::reserve): |
| - Move from public to private. |
| |
| 2020-04-21 Stephan Szabo <stephan.szabo@sony.com> |
| |
| [PlayStation] Fix GPU Process build for VIDEO_PRESENTATION_MODE changes |
| https://bugs.webkit.org/show_bug.cgi?id=210836 |
| |
| Reviewed by Darin Adler. |
| |
| Build fix, no new tests. |
| |
| * GPUProcess/media/playstation/RemoteMediaPlayerProxyPlayStation.cpp: |
| |
| 2020-04-21 Peng Liu <peng.liu6@apple.com> |
| |
| Fix MACCATALYST build failures |
| https://bugs.webkit.org/show_bug.cgi?id=210815 |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * UIProcess/API/ios/WKWebViewIOS.mm: |
| (-[WKWebView _isShowingVideoPictureInPicture]): |
| (-[WKWebView _mayAutomaticallyShowVideoPictureInPicture]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::applicationDidBecomeActive): |
| |
| 2020-04-19 Darin Adler <darin@apple.com> |
| |
| [Cocoa] Use createNSArray in many more places that build NSArray objects from C++ collections |
| https://bugs.webkit.org/show_bug.cgi?id=210702 |
| |
| Reviewed by Alex Christensen. |
| |
| * Platform/cocoa/PaymentAuthorizationPresenter.mm: |
| (WebKit::toNSErrors): Use createNSArray and return a RetainPtr to cut down |
| on autorelease. |
| (WebKit::toPKShippingMethods): Ditto. |
| (WebKit::PaymentAuthorizationPresenter::completePaymentSession): Updated for RetainPtr. |
| (WebKit::PaymentAuthorizationPresenter::completeShippingContactSelection): Ditto. |
| |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): Use createNSArray. |
| Also removed code to support platforms without -setThumbnailURLs: since we don't |
| have those any more. |
| |
| * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm: |
| (WebKit::RemoteLayerTreePropertyApplier::updateChildren): Use createNSArray. |
| * UIProcess/API/Cocoa/WKHTTPCookieStore.mm: |
| (coreCookiesToNSCookies); Ditto. |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (+[WKProcessPool _allProcessPoolsForTesting]): Ditto. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _startTextManipulationsWithConfiguration:completion:]): Cut down on |
| repeated code by adding a lambda to create a _WKTextManipulationItem and by using |
| createNSArray. |
| (wkTextManipulationErrors): Use createNSArray. Also tighten up the code that maps |
| WebCore::TextManipulationController::ManipulationFailureType to the |
| _WKTextManipulationItemError code. |
| |
| * UIProcess/API/Cocoa/WKWebpagePreferences.mm: |
| (-[WKWebpagePreferences _customHeaderFields]): Use createNSArray. |
| * UIProcess/API/Cocoa/WKWebsiteDataRecord.mm: |
| (-[WKWebsiteDataRecord _originsStrings]): Ditto. |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _getResourceLoadStatisticsDataSummary:]): Ditto. |
| * UIProcess/API/Cocoa/_WKDownload.mm: |
| (-[_WKDownload redirectChain]): Ditto. |
| * UIProcess/API/Cocoa/_WKFrameTreeNode.mm: |
| (-[_WKFrameTreeNode childFrames]): Ditto. |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration additionalReadAccessAllowedURLs]): Ditto. |
| * UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdParty.mm: |
| (-[_WKResourceLoadStatisticsThirdParty underFirstParties]): Ditto. |
| * UIProcess/API/ios/WKWebViewIOS.mm: |
| (-[WKWebView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]): Ditto. |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::NavigationClient::didChangeBackForwardList): Ditto. |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeScrollingPerformanceData.mm: |
| (WebKit::RemoteLayerTreeScrollingPerformanceData::data): Ditto. |
| * UIProcess/ios/DragDropInteractionState.mm: |
| (WebKit::createTargetedDragPreview): Ditto. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _updateTapHighlight]): Removed uneeded RetainPtr local variable. |
| Use createNSArray. Refactored to make the "all rectilinear" case more parallel |
| to the general case. |
| (-[WKContentView webSelectionRectsForSelectionRects:]): Use createNSArray. |
| (wkTextSelectionRects): Ditto. |
| (createTargetedPreview): Ditto. |
| (-[WKContentView _presentationRectsForPreviewItemController:]): Ditto. |
| |
| * UIProcess/mac/WKTextFinderClient.mm: |
| (-[WKTextFinderClient didFindStringMatchesWithRects:didWrapAround:]): Use createNSArray. |
| |
| * UIProcess/mac/WKTextInputWindowController.mm: |
| (-[WKTextInputView validAttributesForMarkedText]): Use +[NSArray arrayByAddingObject:]. |
| |
| * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: |
| (collectIcons): Use createNSArray. |
| |
| * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: |
| (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): Marked class here |
| as final. Cut down on local variables a bit. Use createNSArray. |
| |
| * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm: |
| (WebKit::addAnimationToLayer): Removed unnecessary use of RetainPtr. Use createNSArray. |
| |
| * WebProcess/WebPage/WebBackForwardListProxy.cpp: |
| (WebKit::WebBackForwardListProxy::WebBackForwardListProxy): Addd a FIXME about |
| a problem I noticed, unrelated to the rest of the changes. |
| |
| * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm: |
| (-[WKAccessibilityWebPageObject accessibilityParameterizedAttributeNames]): Use createNSArray. |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::registerWithStateDumper): Ditto. |
| (WebKit::activePagesOrigins): Ditto. |
| |
| 2020-04-21 David Kilzer <ddkilzer@apple.com> |
| |
| Clean up QuickLookThumbnailLoader |
| <https://webkit.org/b/210814> |
| |
| Reviewed by Darin Adler. |
| |
| The following items are cleaned up: |
| - Extract `using PlatformImage` into QuickLookThumbnailLoader.h, |
| rename to `CocoaImage` and use to get rid of duplicate |
| code. |
| - Change `id` to `instancetype` for -init methods. |
| - Add `atomic` keyword to @property definitions that were using |
| it as the default. (Use of atomic properties is rare in |
| WebKit, so being explicit avoids a scenario where it looks |
| like `nonatomic` was left off by accident.) |
| - Change @property definitions to `readonly` that are never |
| written to outside of QuickLookThumbnailLoader.mm. |
| - Delete unused @property definitions. |
| - Change method declarations into read-only @property |
| definitions. |
| - Re-declare atomic read-only @property definitions in |
| QuickLookThumbnailLoader.h as read-write definitions in |
| QuickLookThumbnailLoader.mm if they are written to. |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::convertPlatformImageToBitmap): |
| * UIProcess/QuickLookThumbnailLoader.h: |
| - Rename qlThumbnailGenerationQueue @property to just `queue`. |
| - Remove `contentType` @property. It is not used anywhere. |
| This also fixes a theoretical leak found by the clang static |
| analyzer. |
| - Remove `shouldWrite` @property. It is only used within |
| QuickLookThumbnailLoader.mm. |
| - Change `identifier` and `thumbnail` to @property declarations. |
| * UIProcess/QuickLookThumbnailLoader.mm: |
| - Change WKQLThumbnailLoadOperation._identifier type from |
| NSMutableString to NSString. There was no reason for it to |
| be mutable. |
| (-[WKQLThumbnailQueueManager init]): |
| (-[WKQLThumbnailQueueManager dealloc]): |
| - Release `_queue` to fix theoretical leak found by the clang |
| static analyzer. |
| (-[WKQLThumbnailLoadOperation initWithAttachment:identifier:]): |
| (-[WKQLThumbnailLoadOperation initWithURL:identifier:]): |
| (-[WKQLThumbnailLoadOperation start]): |
| - Rename `req` to `request` and use RetainPtr<>. |
| - Change separate #if macros to #if/#else since only one version |
| of this code can be used at a time. |
| (-[WKQLThumbnailLoadOperation thumbnail]): |
| - Use CocoaImage to use one copy of the method. |
| |
| 2020-04-21 David Kilzer <ddkilzer@apple.com> |
| |
| Fix extra/missing #undef statements |
| <https://webkit.org/b/210818> |
| <rdar://problem/61973329> |
| |
| Reviewed by Chris Dumez. |
| |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| - Remove #undef MESSAGE_CHECK_URL. It is no longer used. |
| * UIProcess/WebPageProxy.cpp: |
| - Add missing #undef MESSAGE_CHECK_COMPLETION. |
| - Sort #undef in reverse order of #define. |
| * UIProcess/mac/WebPageProxyMac.mm: |
| - Add missing #undef MESSAGE_CHECK_WITH_RETURN_VALUE. |
| - Sort #undef in reverse order of #define. |
| |
| 2020-04-21 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION(r260410) Frequent Network process crashes |
| https://bugs.webkit.org/show_bug.cgi?id=210825 |
| |
| Reviewed by Alex Christensen. |
| |
| The webPageProxyID in the NetworkProcessProxy::DidNegotiateModernTLS() IPC was invalid because |
| NetworkProcessProxy::preconnectTo() was failing to initialize NetworkLoadParameters::webPageProxyID. |
| This patch addresses the issue. |
| |
| No new tests, added new assertion that would be tripped by existing tests. |
| |
| * NetworkProcess/NetworkLoad.cpp: |
| (WebKit::NetworkLoad::NetworkLoad): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::preconnectTo): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::preconnectTo): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::preconnectTo): |
| |
| 2020-04-21 Jer Noble <jer.noble@apple.com> |
| |
| PiP buttons shows up in element fullscreen when PiP is disabled in WKWebViewConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=210813 |
| |
| Reviewed by Eric Carlson. |
| |
| Not currently testable; entering fullscreen never completes in the iOS TestWebKitAPI app |
| because that process is not a UI Application. |
| |
| * UIProcess/ios/fullscreen/WKFullScreenViewController.mm: |
| (-[WKFullScreenViewController videoControlsManagerDidChange]): |
| |
| 2020-04-21 Brent Fulgham <bfulgham@apple.com> |
| |
| [Cocoa] Don't bother compiling UpdateInfo since it's not used |
| https://bugs.webkit.org/show_bug.cgi?id=210819 |
| <rdar://problem/61774766> |
| |
| Reviewed by Darin Adler. |
| |
| Since we don't use the UpdateInfo class in Cocoa builds, let's not |
| bother building it. |
| |
| * Shared/UpdateInfo.cpp: |
| * Shared/UpdateInfo.h: |
| * UIProcess/DrawingAreaProxy.h: |
| |
| 2020-04-21 Timothy Horton <timothy_horton@apple.com> |
| |
| One more build fix after r260407 |
| |
| * Configurations/WebKit.xcconfig: |
| |
| 2020-04-21 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Provide better names for ProcessThrottler process assertions |
| https://bugs.webkit.org/show_bug.cgi?id=210808 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Provide better names for ProcessThrottler process assertions, to facilitate debugging. |
| |
| * UIProcess/GPU/GPUProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/ProcessAssertion.cpp: |
| (WebKit::ProcessAssertion::ProcessAssertion): |
| * UIProcess/ProcessAssertion.h: |
| * UIProcess/ProcessThrottler.cpp: |
| (WebKit::ProcessThrottler::assertionName const): |
| (WebKit::ProcessThrottler::setAssertionType): |
| * UIProcess/ProcessThrottler.h: |
| * UIProcess/ProcessThrottlerClient.h: |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (WebKit::ProcessAssertion::ProcessAssertion): |
| (WebKit::ProcessAndUIAssertion::ProcessAndUIAssertion): |
| |
| 2020-04-21 Daniel Bates <dabates@apple.com> |
| |
| [iOS] -_didFinishTextInteractionInTextInputContext should only zoom to reveal focused element if it changed |
| https://bugs.webkit.org/show_bug.cgi?id=210697 |
| <rdar://problem/60997530> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Add a new state variable to use to track whether -_focusTextInputContext invoked during a |
| text interaction actually focused an element. Then in -_didFinishTextInteractionInTextInputContext |
| condition marking the page to reveal the focused element on this state. |
| |
| * UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h: |
| * UIProcess/API/ios/WKWebViewTestingIOS.mm: |
| (-[WKWebView _willBeginTextInteractionInTextInputContext:]): Turn around and call the same |
| function on the content view. |
| (-[WKWebView _didFinishTextInteractionInTextInputContext:]): Ditto. |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView cleanUpInteraction]): Reset state. |
| (-[WKContentView _didCommitLoadForMainFrame]): Ditto. |
| (-[WKContentView _focusTextInputContext:placeCaretAt:completionHandler:]): Update state to |
| indicate whether the focusd element did change or not. I use bitwise ORing instead of strict |
| assignment to update it because this function can be called multiple times by an internal |
| Apple client during a text interaction (e.g. <rdar://problem/59430806>). I thought about |
| making this a FIXME, but this function is otherwise capable of handling multiple invocations |
| so I didn't. |
| (-[WKContentView _willBeginTextInteractionInTextInputContext:]): Reset added state. |
| (-[WKContentView _didFinishTextInteractionInTextInputContext:]): Check if state was set to |
| indicate that a focus change happened. If so, do what we do now + reset state. Otherwise, |
| do everything we do now except for marking the page as needing to reveal the focused element |
| on the next editor state update. |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::focusTextInputContextAndPlaceCaret): Check that the target is focusable |
| before calling FocusController::setFocusedElement() because it ultimately calls Document::setFocusedElement() |
| that can return true for a non-focusable element. I added a comment in Document.h to explain |
| this subtlety. I also decided not to check the return value of FocusController::setFocusedElement(). |
| Instead I am checking the more important condition that the focused element is the target |
| element. Passing true to visiblePositionInFocusedNodeForPoint() will ultimately assert this |
| to be true. Note that setFocusedElement() may not have done anything as m_focusedElement |
| could have already been equal to the target element. This is OK and I still update the |
| caret position. |
| |
| 2020-04-21 Timothy Hatcher <timothy@apple.com> |
| |
| Reset m_userScriptsNotified when web process crashes. |
| https://bugs.webkit.org/show_bug.cgi?id=210807 |
| |
| Reviewed by Alex Christensen. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebPageProxy::resetStateAfterProcessExited): Set m_userScriptsNotified to false. |
| |
| 2020-04-21 Timothy Horton <timothy_horton@apple.com> |
| |
| Fix the build |
| |
| * Configurations/WebKit.xcconfig: |
| |
| 2020-04-21 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC hardening] ShareableResource::create() should validate its parameters |
| <https://webkit.org/b/210779> |
| <rdar://problem/60887693> |
| |
| Reviewed by Chris Dumez. |
| |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::Cache::store): |
| * NetworkProcess/cache/NetworkCacheEntry.cpp: |
| (WebKit::NetworkCache::Entry::initializeShareableResourceHandleFromStorageRecord const): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::didFinishLoadForQuickLookDocumentInMainFrame): |
| - Handle nullptr returned from ShareableResource::create(). |
| |
| * Shared/ShareableResource.cpp: |
| (WebKit::ShareableResource::create): |
| - Change to return RefPtr<>. |
| - Validate parameters before calling constructor. Return |
| nullptr on failure. |
| (WebKit::ShareableResource::ShareableResource): |
| - Remove assert and comment since checks are now done in |
| ShareableResource::create(). |
| * Shared/ShareableResource.h: |
| (WebKit::ShareableResource::create): |
| - Change to return RefPtr<>. |
| |
| 2020-04-21 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Cocoa] Tighten up some more IPC message checks in WebPasteboardProxy |
| https://bugs.webkit.org/show_bug.cgi?id=210780 |
| <rdar://problem/62088479> |
| |
| Reviewed by Alex Christensen. |
| |
| Adjust some existing IPC message checks in WebPasteboardProxy, and also introduces some new ones. See below for |
| more details. |
| |
| * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm: |
| (WebKit::WebPasteboardProxy::didModifyContentsOfPasteboard): |
| |
| Move the `pasteboardName` check here out of `didModifyContentsOfPasteboard`, and into each call site, such that |
| we bail and kill the web process before invoking `didModifyContentsOfPasteboard` in the case where the name is |
| empty. |
| |
| (WebKit::WebPasteboardProxy::getPasteboardPathnamesForType): |
| (WebKit::WebPasteboardProxy::getPasteboardStringForType): |
| (WebKit::WebPasteboardProxy::getPasteboardStringsForType): |
| (WebKit::WebPasteboardProxy::getPasteboardBufferForType): |
| (WebKit::WebPasteboardProxy::addPasteboardTypes): |
| (WebKit::WebPasteboardProxy::setPasteboardTypes): |
| (WebKit::WebPasteboardProxy::setPasteboardURL): |
| (WebKit::WebPasteboardProxy::setPasteboardColor): |
| (WebKit::WebPasteboardProxy::setPasteboardStringForType): |
| |
| Add message checks for empty pasteboard types. |
| |
| (WebKit::WebPasteboardProxy::setPasteboardBufferForType): |
| (WebKit::WebPasteboardProxy::writeCustomData): |
| (WebKit::WebPasteboardProxy::readStringFromPasteboard): |
| (WebKit::WebPasteboardProxy::readBufferFromPasteboard): |
| (WebKit::WebPasteboardProxy::writeURLToPasteboard): |
| (WebKit::WebPasteboardProxy::writeWebContentToPasteboard): |
| (WebKit::WebPasteboardProxy::writeImageToPasteboard): |
| (WebKit::WebPasteboardProxy::writeStringToPasteboard): |
| |
| Add a message check for empty pasteboard types, but only when the string is also empty; this is because iOS |
| clears pasteboard data by writing an empty pasteboard string and type. |
| |
| 2020-04-21 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK][CMake] Make gtk-unix-print a component of FindGTK.cmake |
| https://bugs.webkit.org/show_bug.cgi?id=210792 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| No new tests needed. |
| |
| * PlatformGTK.cmake: Use the GTK::UnixPrint imported target. |
| |
| 2020-04-21 Philippe Normand <pnormand@igalia.com> |
| |
| [CMake] gst-build-backed build fails |
| https://bugs.webkit.org/show_bug.cgi?id=210742 |
| |
| Reviewed by Xabier Rodriguez-Calvar. |
| |
| * PlatformWPE.cmake: |
| |
| 2020-04-21 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Non-unified build fixes late February 2020 edition |
| https://bugs.webkit.org/show_bug.cgi?id=210767 |
| |
| Unreviewed build fix. |
| |
| * NetworkProcess/NetworkResourceLoadMap.h: Add missing wtf/Function.h header. |
| |
| 2020-04-20 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Classes marked final should not use protected access specifier |
| https://bugs.webkit.org/show_bug.cgi?id=210775 |
| |
| Reviewed by Daniel Bates. |
| |
| * Shared/API/APIDictionary.h: |
| * WebProcess/GPU/media/TextTrackPrivateRemote.h: |
| * WebProcess/Plugins/Netscape/JSNPMethod.h: |
| * WebProcess/Plugins/Netscape/JSNPObject.h: |
| |
| 2020-04-20 Peng Liu <peng.liu6@apple.com> |
| |
| Fix build failures when video fullscreen and picture-in-picture is disabled |
| https://bugs.webkit.org/show_bug.cgi?id=210777 |
| |
| Reviewed by Eric Carlson. |
| |
| Wrap video fullscreen and picture-in-picture related code with "#if ENABLE(VIDEO_PRESENTATION_MODE)". |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * GPUProcess/media/RemoteMediaPlayerProxy.cpp: |
| (WebKit::RemoteMediaPlayerProxy::setVideoFullscreenGravity): |
| (WebKit::RemoteMediaPlayerProxy::updateVideoFullscreenInlineImage): |
| (WebKit::RemoteMediaPlayerProxy::setVideoFullscreenMode): |
| (WebKit::RemoteMediaPlayerProxy::videoFullscreenStandbyChanged): |
| (WebKit::RemoteMediaPlayerProxy::setBufferingPolicy): |
| * GPUProcess/media/RemoteMediaPlayerProxy.h: |
| * GPUProcess/media/RemoteMediaPlayerProxy.messages.in: |
| * GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm: |
| (WebKit::RemoteMediaPlayerProxy::prepareForPlayback): |
| * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: |
| (WebKit::MediaPlayerPrivateRemote::prepareForPlayback): |
| |
| 2020-04-20 Alex Christensen <achristensen@webkit.org> |
| |
| SPI clients using fastServerTrustEvaluationEnabled need SPI to inform them of modern TLS negotiation |
| https://bugs.webkit.org/show_bug.cgi?id=210533 |
| |
| Reviewed by Brady Eidson. |
| |
| * NetworkProcess/NetworkDataTask.h: |
| (WebKit::NetworkDataTaskClient::didNegotiateModernTLS): |
| * NetworkProcess/NetworkLoad.cpp: |
| (WebKit::NetworkLoad::didNegotiateModernTLS): |
| * NetworkProcess/NetworkLoad.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::didNegotiateModernTLS): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): |
| * UIProcess/API/APINavigationClient.h: |
| (API::NavigationClient::didNegotiateModernTLS): |
| * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: |
| * UIProcess/Cocoa/NavigationState.h: |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::setNavigationDelegate): |
| (WebKit::NavigationState::NavigationClient::didNegotiateModernTLS): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didNegotiateModernTLS): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| |
| 2020-04-20 Kate Cheney <katherine_cheney@apple.com> |
| |
| App-bound domain behavior should abide by the limitsNavigationsToAppBoundDomains argument in WKWebView configuration |
| https://bugs.webkit.org/show_bug.cgi?id=210769 |
| <rdar://problem/62065241> |
| |
| Reviewed by Brent Fulgham. |
| |
| Changes app-bound domain behavior to be triggered by the value of |
| limitsNavigationsToAppBoundDomains, a WebView configuration flag. |
| If the WebView has this parameter set and is currently navigating to |
| an app bound domain, then app-bound privileges will be granted. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::setIsNavigatingToAppBoundDomainAndCheckIfPermitted): |
| Update this function to return a boolean to indicate whether the |
| navigation should fail. A failure should occur if a WebView has set |
| the limitsNavigationsToAppBoundDomains flag and attempts to navigate |
| away from an app-bound domain. |
| |
| If the limitsNavigationsToAppBoundDomains value has not been set to |
| true, maintain non-app bound behavior regardless of whether the domain |
| is app-bound or not. |
| |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| Check the result of setIsNavigatingToAppBoundDomainAndCheckIfPermitted and fail the |
| navigation if needed, with both RELEASE logging and an appropriate |
| error message. |
| |
| (WebKit::WebPageProxy::setIsNavigatingToAppBoundDomain): Deleted. |
| * UIProcess/WebPageProxy.h: |
| Renamed for clarity. |
| |
| 2020-04-20 Nikos Mouchtaris <nmouchtaris@apple.com> |
| |
| WK2 Quicklook for attachments |
| https://bugs.webkit.org/show_bug.cgi?id=208891 |
| |
| Reviewed by Darin Adler. |
| |
| Allow attachment elements to render QuickLook thumbnail generated |
| from contents of the file as its icon, rather than the default |
| icons associated with each mime type. |
| |
| * Configurations/WebKit.xcconfig: |
| Link QuickLook thumbnailing framework. |
| * UIProcess/API/APIAttachment.h: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _insertAttachmentWithFileWrapper:contentType:completion:]): |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| Create thumbnail request and add to queue. |
| (WebKit::convertNSImageToBitmap): |
| (WebKit::convertUIImageToBitmap): |
| (WebKit::WebPageProxy::getQLThumbnailForGenerationRequestion): |
| (WebKit::WebPageProxy::getQLThumbnailForFileWrapper): |
| (WebKit::WebPageProxy::getQLThumbnailForAttachment): |
| * UIProcess/QLThumbnailLoad.h: Added. |
| * UIProcess/QLThumbnailLoad.mm: Added. |
| Add code to request thumbnail for file data. |
| (-[WKQLThumbnailQueueManager init]): |
| (+[WKQLThumbnailQueueManager sharedInstance]): |
| (-[WKQLThumbnailLoadOperation initWithAttachment:identifier:]): |
| (-[WKQLThumbnailLoadOperation initWithURL:identifier:]): |
| (-[WKQLThumbnailLoadOperation start]): |
| (-[WKQLThumbnailLoadOperation isAsynchronous]): |
| (-[WKQLThumbnailLoadOperation isExecuting]): |
| (-[WKQLThumbnailLoadOperation setExecuting:]): |
| (-[WKQLThumbnailLoadOperation isFinished]): |
| (-[WKQLThumbnailLoadOperation setFinished:]): |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::updateAttachmentIcon): |
| Set thumbnail of attachment element |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| Thumbnail request message. |
| |
| 2020-04-20 Kate Cheney <katherine_cheney@apple.com> |
| |
| Unreviewed macCatalyst build fix. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::disableServiceWorkerEntitlementInNetworkProcess): |
| (WebKit::WebPageProxy::clearServiceWorkerEntitlementOverride): |
| |
| 2020-04-20 Simon Fraser <simon.fraser@apple.com> |
| |
| Scrolling with background-attachment: fixed needs to trigger repaints |
| https://bugs.webkit.org/show_bug.cgi?id=193893 |
| <rdar://problem/47587017> |
| |
| Reviewed by Dean Jackson. |
| |
| When scrolling an overflow scroll which has "background-atttachment:fixed" in the content, |
| the node will have non-empty synchronous scrolling reasons. In this case we need to |
| send the scroll to the main thread, and trigger a repaint on scroll. |
| |
| If handling the wheel event on the scrolling thread determines that the scroll must be sent |
| to the main thread, EventDispatcher::wheelEvent() does so in the callback function. |
| |
| To trigger the repaint, RenderLayer::scrollTo() asks the composited layers backing whether |
| the node has synchronous scrolling reasons; this is implemented by asking the scrolling |
| coordinator. |
| |
| * WebProcess/WebPage/EventDispatcher.cpp: |
| (WebKit::EventDispatcher::wheelEvent): |
| |
| 2020-04-20 Megan Gardner <megan_gardner@apple.com> |
| |
| Date and Time form controls not showing correct initial values on immediate second invocation. |
| https://bugs.webkit.org/show_bug.cgi?id=210613 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Updating the webprocess with the newly picked time did not update the local store of that data in the |
| UI process, so when the control was activated a second time, and we skipped the round trip to the |
| webprocess to get the data we were certian we already had, we did not start the popover in the |
| correct state. We now update the webprocess and the local UI stored variable at the same time. |
| |
| Test: fast/forms/ios/time-picker-value-change.html |
| |
| * UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h: |
| * UIProcess/API/ios/WKWebViewTestingIOS.mm: |
| (-[WKWebView timePickerValueHour]): |
| (-[WKWebView timePickerValueMinute]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView updateValueAsNumberForViewController:]): |
| (-[WKContentView updateValueForViewController:]): |
| (-[WKContentView setTimePickerValueToHour:minute:]): |
| (-[WKContentView timePickerValueHour]): |
| (-[WKContentView timePickerValueMinute]): |
| * UIProcess/ios/forms/WKFormInputControl.h: |
| * UIProcess/ios/forms/WKFormInputControl.mm: |
| (-[WKDateTimePicker hour]): |
| (-[WKDateTimePicker minute]): |
| (-[WKDateTimePicker _dateChangedSetAsNumber]): |
| (-[WKDateTimePicker _dateChangedSetAsString]): |
| (-[WKDateTimePicker setHour:minute:]): |
| (-[WKFormInputControl setTimePickerHour:minute:]): |
| (-[WKFormInputControl timePickerValueHour]): |
| (-[WKFormInputControl timePickerValueMinute]): |
| (-[WKDateTimePopover setHour:minute:]): |
| (-[WKDateTimePopover hour]): |
| (-[WKDateTimePopover minute]): |
| |
| 2020-04-20 Timothy Horton <timothy_horton@apple.com> |
| |
| Try to fix the macCatalyst build after r260366 |
| |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h: |
| |
| 2020-04-20 Stephan Szabo <stephan.szabo@sony.com> |
| |
| Fix build when !ENABLE(RESOURCE_LOAD_STATISTICS) |
| https://bugs.webkit.org/show_bug.cgi?id=210757 |
| |
| Reviewed by Ross Kirsling. |
| |
| Build fix, no new tests |
| |
| * NetworkProcess/NetworkDataTask.cpp: |
| Add ENABLE(RESOURCE_LOAD_STATISTICS) around block |
| using NetworkSession functions only declared when |
| that is enabled. |
| |
| 2020-04-20 Alex Christensen <achristensen@webkit.org> |
| |
| When SpeculativeLoadManager is destroyed, properly clean up its PendingFrameLoads |
| https://bugs.webkit.org/show_bug.cgi?id=210759 |
| <rdar://problem/62056856> |
| |
| Reviewed by Darin Adler. |
| |
| Recent work on the resourceLoadStatistics layout tests increased the amount we swap out the WebsiteDataStore. |
| When this happens, the NetworkSession is eventually destroyed in the NetworkProcess, sometimes when running the next test. |
| An assertion was firing in the PendingFrameLoad destructor because it hadn't been marked as complete when it was destroyed. |
| Rather than remove the assertion, when we destroy the SpeculativeLoadManager (which only happens when a WebsiteDataStore |
| is destroyed) during a speculative pending frame load, just mark the pending frame load as complete because it is being cancelled. |
| Marking the pending frame load as complete can tell the SpeculativeLoadManager to mutate m_pendingFrameLoads, which we don't want |
| to do while iterating, so copy the RefPtrs into a Vector first then iterate that to get them all. |
| |
| This fixes an assertion that was sometimes hit in http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database.html |
| but only after running other tests that had initiated speculative pending frame loads. This was ostensibly started by r260322 but is quite unrelated. |
| |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: |
| (WebKit::NetworkCache::SpeculativeLoadManager::~SpeculativeLoadManager): |
| |
| 2020-04-20 Stephan Szabo <stephan.szabo@sony.com> |
| |
| [PlayStation] Fix build after r260277 |
| https://bugs.webkit.org/show_bug.cgi?id=210756 |
| |
| Reviewed by Don Olmstead. |
| |
| Build fix, no new tests. |
| |
| * PlatformPlayStation.cmake: |
| |
| 2020-04-20 Chris Dumez <cdumez@apple.com> |
| |
| Sending beacons when Fetch KeepAlive feature is disabled crashes the WebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=210753 |
| <rdar://problem/61896221> |
| |
| Reviewed by Geoffrey Garen. |
| |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::startPingLoad): |
| Make sure NetworkResourceLoadParameters's webPageProxyID / webPageID / webFrameID are properly |
| initialized before sending the IPC or IPC decoding will fail. |
| |
| 2020-04-20 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC hardening] Use ObjectIdentifier<> for geolocationID |
| <https://webkit.org/b/210680> |
| <rdar://problem/58892340> |
| |
| Reviewed by Chris Dumez. |
| |
| Replace uses of uint64_t with GeolocationIdentifier. |
| |
| * Scripts/webkit/messages.py: |
| * UIProcess/GeolocationIdentifier.h: Add. |
| * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: |
| (WebKit::GeolocationPermissionRequestManagerProxy::createRequest): |
| (WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision): |
| * UIProcess/GeolocationPermissionRequestManagerProxy.h: |
| * UIProcess/GeolocationPermissionRequestProxy.cpp: |
| (WebKit::GeolocationPermissionRequestProxy::GeolocationPermissionRequestProxy): |
| * UIProcess/GeolocationPermissionRequestProxy.h: |
| (WebKit::GeolocationPermissionRequestProxy::create): |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp: |
| (WebKit::GeolocationPermissionRequestManager::startRequestForGeolocation): |
| (WebKit::GeolocationPermissionRequestManager::cancelRequestForGeolocation): |
| (WebKit::GeolocationPermissionRequestManager::didReceiveGeolocationPermissionDecision): |
| (WebKit::generateGeolocationID): Delete. |
| - Replace with GeolocationIdentifier::generate(). |
| * WebProcess/Geolocation/GeolocationPermissionRequestManager.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::didReceiveGeolocationPermissionDecision): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-04-20 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Refactor WebKit media playback process assertion logic to minimize chances of leaking them |
| https://bugs.webkit.org/show_bug.cgi?id=210670 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Refactor WebKit media playback process assertion logic to minimize chances of leaking them. In particular, |
| the following changes were made: |
| 1. Instead of the WebProcessPool having a HashMap of media playback process assertions for |
| the WebProcess, we now store the assertion on the WebProcessProxy object itself. This is |
| less likely to get out of sync and leak. |
| 2. Add a RefCounter to the WebProcessPool to count WebProcesses that have audible media. |
| Whenever a WebProcess starts or stops playing audible media, it merely grabs a RefCounter |
| token or releases it. The WebProcessPool relies on this counter to decide whether or not |
| to take a media playback assertion on behalf of the UIProcess. Since this is token-based |
| and the token is stored on the WebProcessProxy object, it makes it less likely to leak |
| the assertion. |
| 3. The WebProcessProxy object now has a AudibleMediaActivity data structure wrapping both |
| its media playback assertion and its WebProcessWithAudibleMediaToken that it got from |
| the WebProcessPool. When the WebProcess shuts down (normally or due to crash/termination), |
| we make sure to clear this data structure. |
| 4. Make sure that the WebProcessProxy updates its AudibleMediaActivity whenever a page is |
| removed from the WebProcess. |
| |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::m_webProcessWithAudibleMediaCounter): |
| (WebKit::WebProcessPool::disconnectProcess): |
| (WebKit::WebProcessPool::webProcessWithAudibleMediaToken const): |
| (WebKit::WebProcessPool::updateAudibleMediaAssertions): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::shutDown): |
| (WebKit::WebProcessProxy::removeWebPage): |
| (WebKit::WebProcessProxy::updateAudibleMediaAssertions): |
| * UIProcess/WebProcessProxy.h: |
| |
| 2020-04-20 Kate Cheney <katherine_cheney@apple.com> |
| |
| <rdar://problem/62059046> |
| |
| Unreviewed macCatalyst build fix. |
| |
| * NetworkProcess/NetworkProcess.messages.in: |
| |
| 2020-04-20 Darin Adler <darin@apple.com> |
| |
| Use #import instead of #include in Objective-C and don't use #pragma once |
| https://bugs.webkit.org/show_bug.cgi?id=210724 |
| |
| Reviewed by David Kilzer. |
| |
| * mac/MigrateHeadersFromWebKitLegacy.make: Delete stale MemoryMeasure.h |
| forwarding header from incremental WebKit builds and ignore when generating |
| new forwarding headers. |
| |
| * Platform/foundation/LoggingFoundation.mm: |
| (WebKit::logLevelString): Use string directly instead of a named constant. |
| |
| * UIProcess/mac/WebColorPickerMac.h: Mark class final. |
| |
| * GPUProcess/webrtc/LibWebRTCCodecsProxy.mm: |
| * NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm: |
| * NetworkProcess/cache/NetworkCacheDataCocoa.mm: |
| * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm: |
| * NetworkProcess/cocoa/NetworkActivityTrackerCocoa.mm: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| * NetworkProcess/webrtc/NetworkRTCProvider.mm: |
| * Platform/spi/Cocoa/DeviceManagementSPI.h: |
| * Platform/spi/Cocoa/LocalAuthenticationSPI.h: |
| * Platform/spi/Cocoa/NearFieldSPI.h: |
| * Platform/spi/Cocoa/SafeBrowsingSPI.h: |
| * Platform/spi/mac/AppKitSPI.h: |
| * Shared/API/Cocoa/RemoteObjectInvocation.mm: |
| * Shared/API/Cocoa/WKMain.mm: |
| * Shared/APIWebArchive.mm: |
| * Shared/APIWebArchiveResource.mm: |
| * Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.mm: |
| * Shared/Cocoa/LoadParametersCocoa.mm: |
| * Shared/Cocoa/SandboxInitialiationParametersCocoa.mm: |
| * Shared/Cocoa/WKNSData.mm: |
| * Shared/DocumentEditingContext.mm: |
| * Shared/Plugins/mac/PluginSandboxProfile.mm: |
| * Shared/RemoteLayerTree/WKAnimationDelegate.h: |
| * Shared/UserInterfaceIdiom.mm: |
| * Shared/ios/WebIconUtilities.mm: |
| * Shared/mac/CodeSigning.mm: |
| * Shared/mac/ColorSpaceData.mm: |
| * Shared/mac/HangDetectionDisablerMac.mm: |
| * Shared/mac/PDFKitImports.mm: |
| * UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm: |
| * UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm: |
| * UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm: |
| * UIProcess/API/Cocoa/WKContentRuleList.mm: |
| * UIProcess/API/Cocoa/WKMenuItemIdentifiers.mm: |
| * UIProcess/API/Cocoa/WKNavigationActionPrivate.h: |
| * UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.mm: |
| * UIProcess/API/Cocoa/WKWebViewInternal.h: |
| * UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h: |
| * UIProcess/API/Cocoa/_WKApplicationManifest.h: |
| * UIProcess/API/Cocoa/_WKAttachment.h: |
| * UIProcess/API/Cocoa/_WKResourceLoadInfoInternal.h: |
| * UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstPartyInternal.h: |
| * UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdPartyInternal.h: |
| * UIProcess/API/Cocoa/_WKTextManipulationExclusionRule.mm: |
| * UIProcess/API/Cocoa/_WKUserContentFilter.mm: |
| * UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponseInternal.h: |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h: |
| * UIProcess/Authentication/mac/WebCredentialMac.mm: |
| * UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm: |
| * UIProcess/Cocoa/IconLoadingDelegate.mm: |
| * UIProcess/Cocoa/MediaUtilities.mm: |
| * UIProcess/Cocoa/PreferenceObserver.h: |
| * UIProcess/Cocoa/PreferenceObserver.mm: |
| * UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.mm: |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationNSURLExtras.h: |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: |
| * UIProcess/Cocoa/SOAuthorization/WKSOAuthorizationDelegate.h: |
| * UIProcess/Cocoa/WKEditCommand.h: |
| * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.h: |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| * UIProcess/Gamepad/cocoa/UIGamepadProviderCocoa.mm: |
| * UIProcess/Inspector/mac/WKInspectorViewController.h: |
| * UIProcess/Inspector/mac/WKInspectorWKWebView.h: |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h: |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h: |
| * UIProcess/RemoteLayerTree/mac/ScrollerMac.mm: |
| * UIProcess/RemoteLayerTree/mac/ScrollerPairMac.mm: |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| * UIProcess/WebAuthentication/Cocoa/WKNFReaderSessionDelegate.h: |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| * UIProcess/ios/WKDeferringGestureRecognizer.h: |
| * UIProcess/ios/WKHighlightLongPressGestureRecognizer.h: |
| * UIProcess/ios/WebDataListSuggestionsDropdownIOS.h: |
| * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm: |
| * UIProcess/ios/forms/WKDatePickerViewController.h: |
| * UIProcess/ios/forms/WKDatePickerViewController.mm: |
| * UIProcess/ios/forms/WKFocusedFormControlView.h: |
| * UIProcess/ios/forms/WKFocusedFormControlView.mm: |
| * UIProcess/ios/forms/WKFormColorPicker.mm: |
| * UIProcess/ios/forms/WKNumberPadViewController.h: |
| * UIProcess/ios/forms/WKNumberPadViewController.mm: |
| * UIProcess/ios/forms/WKQuickboardListViewController.h: |
| * UIProcess/ios/forms/WKQuickboardListViewController.mm: |
| * UIProcess/ios/forms/WKSelectMenuListViewController.h: |
| * UIProcess/ios/forms/WKTimePickerViewController.h: |
| * UIProcess/ios/forms/WKTimePickerViewController.mm: |
| * UIProcess/ios/fullscreen/WKFullScreenViewController.h: |
| * UIProcess/ios/fullscreen/WKFullscreenStackView.h: |
| * UIProcess/ios/fullscreen/WKFullscreenStackView.mm: |
| * UIProcess/mac/PageClientImplMac.mm: |
| * UIProcess/mac/WKSharingServicePickerDelegate.h: |
| * WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm: |
| * WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.h: |
| * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm: |
| * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm: |
| * WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm: |
| * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp: |
| * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm: |
| * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp: |
| * WebProcess/WebPage/WKAccessibilityWebPageObjectIOS.h: |
| * WebProcess/WebPage/mac/PageBannerMac.mm: |
| * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h: |
| * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.h: |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| More #import, less #pragma once. |
| |
| 2020-04-20 Pablo Saavedra <psaavedra@igalia.com> |
| |
| [GTK][WPE] lowWatermarkPages() in MemoryPressureMonitor.cpp only searches the "low" value inside the first "Node" section |
| https://bugs.webkit.org/show_bug.cgi?id=210345 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| * UIProcess/linux/MemoryPressureMonitor.cpp: |
| (WebKit::lowWatermarkPages): |
| |
| 2020-04-20 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] Enable resource load statistics |
| https://bugs.webkit.org/show_bug.cgi?id=210184 |
| |
| Reviewed by Žan Doberšek. |
| |
| * NetworkProcess/NetworkDataTask.cpp: |
| (WebKit::NetworkDataTask::create): Pass page and frame identifiers to the constructor. |
| (WebKit::NetworkDataTask::isThirdPartyRequest const): Moved from NetworkDataTaskCocoa.mm. |
| (WebKit::NetworkDataTask::restrictRequestReferrerToOriginIfNeeded): Ditto. |
| * NetworkProcess/NetworkDataTask.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| * NetworkProcess/soup/NetworkDataTaskSoup.cpp: |
| (WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup): Initialize m_frameID and m_pageID. |
| (WebKit::NetworkDataTaskSoup::createRequest): Add WasBlockingCookies parameter. Call |
| restrictRequestReferrerToOriginIfNeeded() and disable cookies in the soup message if cookies should be blocked. |
| (WebKit::NetworkDataTaskSoup::clearRequest): Reset m_isBlockingCookies. |
| (WebKit::NetworkDataTaskSoup::continueHTTPRedirection): Pass WasBlockingCookies to createRequest(). |
| * NetworkProcess/soup/NetworkDataTaskSoup.h: |
| * UIProcess/API/C/WKPage.cpp: |
| (WKPageLoadedThirdPartyDomains): Added for tests. |
| (WKPageClearLoadedThirdPartyDomains): Ditto. |
| * UIProcess/API/C/WKPagePrivate.h: |
| * UIProcess/glib/WebsiteDataStoreGLib.cpp: |
| (WebKit::WebsiteDataStore::defaultResourceLoadStatisticsDirectory): Use lowercase for consistency with other |
| default directories. |
| |
| 2020-04-20 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r259610): Leak of RBSAssertionInvalidationCallbackType due to missing -dealloc |
| <https://webkit.org/b/210711> |
| <rdar://problem/61993361> |
| |
| Reviewed by Geoffrey Garen. |
| |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (-[WKRBSAssertionDelegate dealloc]): Add. |
| - Release _invalidationCallback to fix the leak. |
| |
| 2020-04-19 Brady Eidson <beidson@apple.com> |
| |
| Add WKScriptMessageHandler API that asynchronously responds with a promise. |
| rdar://problem/57243492 and https://bugs.webkit.org/show_bug.cgi?id=206398 |
| |
| Reviewed by Andy Estes. |
| |
| Change webkit.messageHandlers.<name>.postMessage() to return a promise instead of undefined. |
| |
| Allow for that promise to be resolved by an asynchronous reply block up in the API client. |
| This is like the spiritual opposite version of [WKWebView callAsyncFunction:...] |
| |
| And while we're adding a new script message handler variant, we're adding it sandboxed by WKContentWorld. |
| |
| * Shared/API/APISerializedScriptValue.h: |
| * UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm: |
| (API::validateObject): |
| (API::coreValueFromNSObject): |
| (API::SerializedScriptValue::createFromNSObject): |
| (API::SerializedScriptValue::wireBytesFromNSObject): Deleted. |
| |
| * UIProcess/API/Cocoa/WKScriptMessage.h: Now that script message handlers can be per-world, messages |
| declare which world they were posted from. |
| * UIProcess/API/Cocoa/WKScriptMessage.mm: |
| (-[WKScriptMessage _initWithBody:webView:frameInfo:name:world:]): |
| (-[WKScriptMessage world]): |
| (-[WKScriptMessage _initWithBody:webView:frameInfo:name:]): Deleted. |
| * UIProcess/API/Cocoa/WKScriptMessageInternal.h: |
| |
| * UIProcess/API/Cocoa/WKScriptMessageHandlerWithReply.h: Added. |
| Declare the new protocol for a script message handler that can reply to messages asynchronously. |
| |
| * UIProcess/API/Cocoa/WKUserContentController.h: |
| * UIProcess/API/Cocoa/WKUserContentController.mm: |
| (-[WKUserContentController _addScriptMessageHandler:]): |
| (-[WKUserContentController addScriptMessageHandler:name:]): |
| (-[WKUserContentController addScriptMessageHandler:contentWorld:name:]): |
| (-[WKUserContentController addScriptMessageHandlerWithReply:contentWorld:name:]): |
| (-[WKUserContentController removeScriptMessageHandlerForName:contentWorld:]): |
| (-[WKUserContentController removeAllScriptMessageHandlersFromContentWorld:]): |
| (-[WKUserContentController removeAllScriptMessageHandlers]): |
| * UIProcess/API/Cocoa/WKUserContentControllerInternal.h: |
| * UIProcess/API/Cocoa/WKUserContentControllerPrivate.h: |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _evaluateJavaScript:asAsyncFunction:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]): |
| Update for new shared API::SerializedScriptValue initialization. |
| |
| * UIProcess/API/glib/WebKitUserContentManager.cpp: |
| * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: |
| * UIProcess/Inspector/socket/RemoteInspectorProtocolHandler.cpp: |
| |
| * UIProcess/UserContent/WebScriptMessageHandler.h: |
| * UIProcess/UserContent/WebUserContentControllerProxy.cpp: |
| (WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers): |
| (WebKit::WebUserContentControllerProxy::didPostMessage): |
| * UIProcess/UserContent/WebUserContentControllerProxy.h: |
| * UIProcess/UserContent/WebUserContentControllerProxy.messages.in: |
| |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp: |
| (webkit_dom_dom_window_webkit_message_handlers_post_message): |
| |
| * WebProcess/UserContent/WebUserContentController.cpp: |
| (WebKit::WebUserContentController::removeAllUserScriptMessageHandlers): |
| (WebKit::WebUserContentController::removeAllUserScriptMessageHandlersForWorlds): |
| * WebProcess/UserContent/WebUserContentController.h: |
| * WebProcess/UserContent/WebUserContentController.messages.in: |
| |
| 2020-04-19 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r244091): Leak of TaskStateChangedCallbackType due to missing -dealloc |
| <https://webkit.org/b/210710> |
| <rdar://problem/61992856> |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/Cocoa/ProcessTaskStateObserver.mm: |
| (-[WKProcessTaskStateObserverDelegate dealloc]): Add. |
| - Release _taskStateChangedCallback to fix the leak. |
| |
| 2020-04-19 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC hardening] Use MESSAGE_CHECK in WebPageProxy::loadRecentSearches() and WebPageProxy::saveRecentSearches() |
| <https://webkit.org/b/210683> |
| <rdar://problem/59240446> |
| |
| Reviewed by Geoffrey Garen. |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (MESSAGE_CHECK): Add. |
| (MESSAGE_CHECK_COMPLETION): Add. |
| (WebKit::WebPageProxy::saveRecentSearches): |
| (WebKit::WebPageProxy::loadRecentSearches): |
| - Replace boolean check of const String& with MESSAGE_CHECK. |
| |
| 2020-04-18 Darin Adler <darin@apple.com> |
| |
| Update header postprocessing version cutoff to keep Apple internal builds working |
| https://bugs.webkit.org/show_bug.cgi?id=210708 |
| |
| Reviewed by Brady Eidson. |
| |
| * Configurations/WebKit.xcconfig: Update versions to make building with older |
| Apple internal SDKs continue to work. |
| |
| * Shared/API/Cocoa/WKFoundation.h: |
| * Shared/API/Cocoa/_WKFrameHandle.h: |
| * Shared/API/Cocoa/_WKRemoteObjectInterface.h: |
| * UIProcess/API/Cocoa/WKContentWorld.h: |
| * UIProcess/API/Cocoa/WKFindConfiguration.h: |
| * UIProcess/API/Cocoa/WKFindResult.h: |
| * UIProcess/API/Cocoa/WKFrameInfoPrivate.h: |
| * UIProcess/API/Cocoa/WKHTTPCookieStorePrivate.h: |
| * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: |
| * UIProcess/API/Cocoa/WKPDFConfiguration.h: |
| * UIProcess/API/Cocoa/WKPreferences.h: |
| * UIProcess/API/Cocoa/WKPreferencesPrivate.h: |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: |
| * UIProcess/API/Cocoa/WKURLSchemeTaskPrivate.h: |
| * UIProcess/API/Cocoa/WKUserScriptPrivate.h: |
| * UIProcess/API/Cocoa/WKWebView.h: |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.h: |
| * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h: |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/API/Cocoa/WKWebpagePreferences.h: |
| * UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: |
| * UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h: |
| * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: |
| * UIProcess/API/Cocoa/_WKDownload.h: |
| * UIProcess/API/Cocoa/_WKFrameTreeNode.h: |
| * UIProcess/API/Cocoa/_WKInputDelegate.h: |
| * UIProcess/API/Cocoa/_WKInspectorDebuggableInfo.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h: |
| * UIProcess/API/Cocoa/_WKResourceLoadDelegate.h: |
| * UIProcess/API/Cocoa/_WKResourceLoadInfo.h: |
| * UIProcess/API/Cocoa/_WKResourceLoadStatisticsFirstParty.h: |
| * UIProcess/API/Cocoa/_WKResourceLoadStatisticsThirdParty.h: |
| * UIProcess/API/Cocoa/_WKTextManipulationConfiguration.h: |
| * UIProcess/API/Cocoa/_WKTextManipulationExclusionRule.h: |
| * UIProcess/API/Cocoa/_WKTextManipulationItem.h: |
| * UIProcess/API/Cocoa/_WKTextManipulationToken.h: |
| * UIProcess/API/Cocoa/_WKUserContentWorld.h: |
| * UIProcess/API/Cocoa/_WKUserStyleSheet.h: |
| * UIProcess/API/Cocoa/_WKWebAuthenticationAssertionResponse.h: |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsitePolicies.h: |
| Because the way we do post-processing of headers in the legacy Xcode |
| build system won't work once the files have been processed once, touch |
| each file that has WK_MAC_TBA, WK_IOS_TBA, or |
| WK_FRAMEWORK_HEADER_POSTPROCESSING_ENABLED in it. Found something to |
| change in each file. This is likely unnecessary in the new Xcode build |
| system, but I wasn't able to test that locally. |
| |
| * WebKit.xcodeproj/project.pbxproj: |
| (postprocess-header-rule): Added dependencies so that post-processing will be |
| redone if Configurations/WebKit.xcconfig is touched, since that is where |
| WK_FRAMEWORK_HEADER_POSTPROCESSING_DISABLED is set, or if |
| Scripts/postprocess-header-rule is touched, since that is where the |
| post-processing code is. If either of those files changes it could affect the |
| output of post-processing. This should make a change like this work in the |
| new Xcode build system without touching files as is done above. |
| |
| 2020-04-18 Brady Eidson <beidson@apple.com> |
| |
| Fix WebUserContentControllerProxy vs ContentWorld lifetime |
| https://bugs.webkit.org/show_bug.cgi?id=210700 |
| |
| Reviewed by Alex Christensen. |
| |
| Covered by API test. |
| |
| WebUserContentControllerProxy currently keeps all of its associated API::ContentWorlds alive via RefPtrs. |
| |
| This is despite the fact that all of the associated WebScriptMessageHandlers, UserScripts, and |
| UserStyleSheets already keep their associated API::ContentWorlds alive. |
| |
| It then decideds to tell WebProcesses to forget a content world after all of its clients are removed. |
| |
| Unfortunately, content worlds are used for more than just content controller stuff. They're used for direct |
| JavaScript evaluation as well. |
| |
| So a client could: |
| - Add a script message handler in a content world. |
| - Evaluate JavaScript in that content world, setting up some persistent state. |
| - Remove the script message handler. |
| - Find that their persistent state from the JavaScript evaluation is gone from that world, even though they |
| still retain a usable handle to that world. |
| |
| The only party who has any business managing the lifetime of an API::ContentWorld is the API::ContentWorld itself. |
| |
| Making this change is: |
| 1 - Nice cleanup |
| 2 - Fixes the above mentioned bug |
| |
| * UIProcess/API/APIContentWorld.cpp: |
| (API::ContentWorld::worldForIdentifier): |
| (API::ContentWorld::ContentWorld): |
| (API::ContentWorld::sharedWorldWithName): |
| (API::ContentWorld::~ContentWorld): |
| (API::ContentWorld::addAssociatedUserContentControllerProxy): |
| (API::ContentWorld::userContentControllerProxyDestroyed): |
| * UIProcess/API/APIContentWorld.h: |
| |
| * UIProcess/UserContent/WebUserContentControllerProxy.cpp: |
| (WebKit::WebUserContentControllerProxy::parameters const): |
| (WebKit::WebUserContentControllerProxy::addContentWorld): |
| (WebKit::WebUserContentControllerProxy::contentWorldDestroyed): |
| (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::addContentWorldUse): Deleted. |
| (WebKit::WebUserContentControllerProxy::shouldSendRemoveContentWorldsMessage): Deleted. |
| (WebKit::WebUserContentControllerProxy::removeContentWorldUses): Deleted. |
| * UIProcess/UserContent/WebUserContentControllerProxy.h: |
| |
| 2020-04-18 David Kilzer <ddkilzer@apple.com> |
| |
| Attempt #4 to fix tvOS build |
| |
| Unreviewed. |
| |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| - Add #if ENABLE(VIDEO_PRESENTATION_MODE)/#endif to protect |
| function defined in WebCore/PictureInPictureSupport.h. |
| - See previous build fixes in r260307, r260308 and r260313. |
| |
| 2020-04-18 Alex Christensen <achristensen@webkit.org> |
| |
| Fix client certificate authentication when using non-default WKWebsiteDataStores |
| https://bugs.webkit.org/show_bug.cgi?id=210681 |
| |
| Reviewed by Brady Eidson. |
| |
| NetworkProcessProxy was trying to keep a map of WebsiteDataStores, but it wasn't as accurate as the one WebsiteDataStore was maintaining. |
| Use the latter map instead and client certificate authentication works. Otherwise, the credential isn't serialized correctly. |
| I found this while working on <rdar://problem/60340449> but this was unrelated so I put it in a different change. |
| This may fix <rdar://problem/60910392>. |
| |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::websiteDataStoreFromSessionID): |
| |
| 2020-04-18 Pablo Saavedra <psaavedra@igalia.com> |
| |
| [GTK][WPE] Replace evil strtok() calls with fscanf() in MemoryPressureMonitor.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=210346 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| * UIProcess/linux/MemoryPressureMonitor.cpp: |
| (WebKit::lowWatermarkPages): |
| (WebKit::getCgroupControllerPath): |
| (WebKit::systemMemoryUsedAsPercentage): |
| (WebKit::CGroupMemoryController::getCgroupFileValue): |
| |
| 2020-04-18 Rob Buis <rbuis@igalia.com> |
| |
| Reduce parameter list of the FrameLoadRequest constructor |
| https://bugs.webkit.org/show_bug.cgi?id=210668 |
| |
| Reviewed by Darin Adler. |
| |
| Adapt to API change. |
| |
| * WebProcess/Inspector/WebInspector.cpp: |
| (WebKit::WebInspector::openInNewTab): |
| * WebProcess/Plugins/PluginView.cpp: |
| (WebKit::PluginView::performFrameLoadURLRequest): |
| (WebKit::PluginView::loadURL): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::loadURLInFrame): |
| (WebKit::WebPage::loadDataInFrame): |
| (WebKit::WebPage::loadRequest): |
| (WebKit::WebPage::loadDataImpl): |
| |
| 2020-04-18 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC hardening] Use MESSAGE_CHECK in WebPasteboardProxy |
| <https://webkit.org/b/210684> |
| <rdar://problem/59906721> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/Cocoa/WebPasteboardProxyCocoa.mm: |
| - Add missing #undef of MESSAGE_CHECK_COMPLETION and |
| MESSAGE_CHECK_WITH_RETURN_VALUE. |
| (WebKit::WebPasteboardProxy::getPasteboardPathnamesForType): |
| (WebKit::WebPasteboardProxy::getPasteboardStringForType): |
| (WebKit::WebPasteboardProxy::getPasteboardStringsForType): |
| (WebKit::WebPasteboardProxy::getPasteboardBufferForType): |
| (WebKit::WebPasteboardProxy::setPasteboardStringForType): |
| (WebKit::WebPasteboardProxy::setPasteboardBufferForType): |
| (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite): |
| (WebKit::WebPasteboardProxy::readStringFromPasteboard): |
| (WebKit::WebPasteboardProxy::readBufferFromPasteboard): |
| - Replace existing code with MESSAGE_CHECK_COMPLETION macros. |
| |
| * UIProcess/WebPasteboardProxy.cpp: |
| (WebKit::WebPasteboardProxy::typesSafeForDOMToReadAndWrite): |
| * UIProcess/WebPasteboardProxy.h: |
| * UIProcess/WebPasteboardProxy.messages.in: |
| - Add IPC::Connection to TypesSafeForDOMToReadAndWrite. |
| |
| 2020-04-17 Kate Cheney <katherine_cheney@apple.com> |
| |
| Enable service workers for app-bound domains |
| https://bugs.webkit.org/show_bug.cgi?id=210451 |
| <rdar://problem/61479474> |
| |
| Reviewed by Brent Fulgham. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::createFetchTask): |
| (WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad): |
| (WebKit::NetworkConnectionToWebProcess::swConnection): |
| (WebKit::NetworkConnectionToWebProcess::isServiceWorkerAllowed const): Deleted. |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| Removed ASSERTS and service worker entitlement checks which are now done along with app-bound |
| domain checks in SWServer.cpp. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| (WebKit::NetworkProcess::addWebsiteDataStore): |
| Remove the check for parentProcessHasServiceWorkerEntitlement() before |
| adding a serviceWorkerSession. This doesn't do anything except add an |
| entry to a map, and simplifies the case where we need a session for |
| app-bound instances which should have service workers but have no entitlement. |
| |
| Pass the entitlement and a new callback to request app-bound domains |
| from the UI Process to the SWServer. This will make sure the server |
| checks for the entitlement or list of app-bound domains before completing a load. |
| |
| (WebKit::NetworkProcess::registerSWServerConnection): |
| Remove unnecessary ASSERT for entitlement. |
| |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/ios/NetworkProcessIOS.mm: |
| (WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const): |
| (WebKit::NetworkProcess::disableServiceWorkerEntitlement): |
| (WebKit::NetworkProcess::clearServiceWorkerEntitlementOverride): |
| In order to test this thoroughly, TestWebKitAPI needed a way to |
| temporarily disable the service worker entitlement. This function |
| overrides the check for the entitlement if the bool is set, disabling |
| the entitlement. |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| WebPage needs to know if it is app-bound when created so it can update |
| the service worker preferences key accordingly. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/Cocoa/WKPreferences.mm: |
| (-[WKPreferences _serviceWorkerEntitlementDisabledForTesting]): |
| (-[WKPreferences _setServiceWorkerEntitlementDisabledForTesting:]): |
| * UIProcess/API/Cocoa/WKPreferencesPrivate.h: |
| Disable entitlement for testing. |
| |
| * UIProcess/API/APIPageConfiguration.cpp: |
| (API::PageConfiguration::copy const): |
| * UIProcess/API/APIPageConfiguration.h: |
| (API::PageConfiguration::limitsNavigationsToAppBoundDomains const): |
| (API::PageConfiguration::setLimitsNavigationsToAppBoundDomains): |
| (API::PageConfiguration::limitsNavigationToAppBoundDomains const): Deleted. |
| (API::PageConfiguration::setLimitsNavigationToAppBoundDomains): Deleted. |
| (-[WKWebViewConfiguration limitsNavigationsToAppBoundDomains]): |
| (-[WKWebViewConfiguration setLimitsNavigationsToAppBoundDomains:]): |
| (-[WKWebViewConfiguration limitsNavigationToAppBoundDomains]): Deleted. |
| (-[WKWebViewConfiguration setLimitsNavigationToAppBoundDomains:]): Deleted. |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| Inconsistent naming (Navigation vs Navigations). |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _setupPageConfiguration:]): |
| Check for entitlement or app-bound webview. |
| |
| (-[WKWebView _serviceWorkersEnabled:]): |
| (-[WKWebView _clearServiceWorkerEntitlementOverride:]): |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| Testing SPIs. |
| |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::getAppBoundDomains): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| Sends the app-bound domains to the Network Process. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::m_limitsNavigationsToAppBoundDomains): |
| (WebKit::m_limitsNavigationToAppBoundDomains): Deleted. |
| Naming inconsistency. |
| |
| (WebKit::WebPageProxy::disableServiceWorkerEntitlementInNetworkProcess): |
| (WebKit::WebPageProxy::clearServiceWorkerEntitlementOverride): |
| * UIProcess/WebPageProxy.h: |
| Disable entitlement for testing. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_isNavigatingToAppBoundDomain): |
| Set this parameter in the constructor so it will be accurate when |
| updating preferences. |
| |
| (WebKit::WebPage::updatePreferences): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::clearServiceWorkerEntitlementOverride): |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::parentProcessHasServiceWorkerEntitlement const): |
| (WebKit::WebPage::disableServiceWorkerEntitlement): |
| (WebKit::WebPage::clearServiceWorkerEntitlementOverride): |
| Disable entitlement for testing. |
| |
| 2020-04-17 Alex Christensen <achristensen@webkit.org> |
| |
| NetworkSessionCocoa should request client certificate only once per host/port |
| https://bugs.webkit.org/show_bug.cgi?id=210626 |
| <rdar://problem/60340449> |
| |
| Reviewed by Geoffrey Garen. |
| |
| NSURLSession creates more than one TCP connection to a server when using HTTP 1.1. |
| Each TCP connection with TLS generates a didReceiveChallenge to do the server trust evaluation of the certificate chain. |
| If the server requests a client certificate in the TLS handshake, it also generates a didReceiveChallenge to request client |
| certificates as well. This is an implementation detail of our networking. We should not actually ask the WKNavigationDelegate |
| for client certificates more than once per host/port. We should remember the credential and give it to NSURLSession immediately |
| if we have used this credential in the past for a task that has received bytes (either a response or a redirect). If the TLS |
| handshake fails, we should not reuse that same certificate automatically. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]): |
| (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): |
| (-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]): |
| (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]): |
| (WebKit::NetworkSessionCocoa::clientCertificateSuggestedForHost): |
| (WebKit::NetworkSessionCocoa::taskReceivedBytes): |
| (WebKit::NetworkSessionCocoa::taskFailed): |
| (WebKit::NetworkSessionCocoa::successfulClientCertificateForHost const): |
| |
| 2020-04-17 David Kilzer <ddkilzer@apple.com> |
| |
| Bug 210646: REGRESSION (r260112): createArchiveList() leaks malloc memory on early returns due to an error |
| <https://webkit.org/b/210646> |
| <rdar://problem/61928031> |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/mac/WebCoreArgumentCodersMac.mm: |
| (IPC::createArchiveList): |
| - Move early returns for protocolProperties, protocolProperties |
| and mimeType above memory allocation to fix the memory leak. |
| |
| 2020-04-17 Brady Eidson <beidson@apple.com> |
| |
| Pass sandbox extensions for back/forward list navigations after the policy is decided at process-swap time. |
| <rdar://problem/59535167> and https://bugs.webkit.org/show_bug.cgi?id=210623 |
| |
| Reviewed by Geoff Garen. |
| |
| Covered by almost all existing tests, and a new API test. |
| |
| Instead of granting a sandbox extension when updating the back/forward cursor for a pending |
| back/forward list traversal, do so after the client decides the policy. |
| (Which is also along with a process swap in interesting cases) |
| |
| * Shared/PolicyDecision.h: |
| (WebKit::PolicyDecision::encode const): |
| (WebKit::PolicyDecision::decode): |
| |
| * Shared/WebPageCreationParameters.h: |
| |
| * UIProcess/API/APINavigation.cpp: |
| (API::Navigation::Navigation): |
| * UIProcess/API/APINavigation.h: |
| (API::Navigation::create): |
| (API::Navigation::reloadItem const): |
| |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::backForwardGoToItem): |
| * UIProcess/ProvisionalPageProxy.h: |
| |
| * UIProcess/WebNavigationState.cpp: |
| (WebKit::WebNavigationState::createReloadNavigation): |
| * UIProcess/WebNavigationState.h: |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::launchProcessForReload): |
| (WebKit::WebPageProxy::reload): |
| (WebKit::WebPageProxy::receivedNavigationPolicyDecision): |
| (WebKit::WebPageProxy::receivedPolicyDecision): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::receivedPolicyDecision): |
| * UIProcess/WebPageProxy.messages.in: |
| |
| * WebProcess/WebPage/WebBackForwardListProxy.cpp: |
| (WebKit::WebBackForwardListProxy::goToItem): |
| |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::didReceivePolicyDecision): |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::SandboxExtensionTracker::didStartProvisionalLoad): |
| |
| 2020-04-17 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r234105): [iOS] WKColorButton leaks a UIColor |
| <https://webkit.org/b/210658> |
| <rdar://problem/61938137> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/ios/forms/WKFormColorPicker.mm: |
| (-[WKColorButton dealloc]): Add. |
| - Release _color instance variable to fix leak. |
| |
| 2020-04-17 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Deny iokit open access of unused class in the WebContent sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=210669 |
| |
| Reviewed by Brent Fulgham. |
| |
| Telemetry shows that iokit open access of an iokit class can be removed from the WebContent sandbox. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-04-17 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Refactor WebKit uploads process assertion logic to minimize chances of leaking them |
| https://bugs.webkit.org/show_bug.cgi?id=210664 |
| <rdar://problem/61751982> |
| |
| Reviewed by Geoff Garen. |
| |
| To minimize chances of leaking "WebKit uploads" process assertion, the following refactoring |
| was done: |
| 1. WebKit upload assertions are now held by NetworkProcessProxy instead of the WebProcessPool. |
| This makes more sense since uploads are tied to a particular network process. In base of |
| a network process crash, we would not want those assertions to persist for example. |
| 2. Store all upload assertions (UIProcess + NetworkProcess + WebProcesses) into a single |
| UploadActivity data structure that can easily be cleared. Make sure we clear it on network |
| process crash. |
| 3. No longer on the WebProcess to send IPC whenever its has pending uploads or not. Instead, |
| have the network process send such IPC. This makes more sense, especially now that all |
| webkit upload process assertions are now stored on NetworkProcessProxy. It also makes it |
| so that we deal properly with WebProcess crashes. In case of a WebProcess crash, its |
| connection to the network process will get closed. NetworkConnectionToWebProcess::didClose() |
| gets called and causes all NetworkResourceLoader objects for this connection to get |
| destroyed. As a result, the network process will properly notify the UIProcess that this |
| process no longer has any upload in progress. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess): |
| (WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess): |
| (WebKit::NetworkConnectionToWebProcess::hasUploadStateChanged): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkResourceLoadMap.cpp: |
| (WebKit::NetworkResourceLoadMap::NetworkResourceLoadMap): |
| (WebKit::NetworkResourceLoadMap::~NetworkResourceLoadMap): |
| (WebKit::NetworkResourceLoadMap::add): |
| (WebKit::NetworkResourceLoadMap::clear): |
| (WebKit::NetworkResourceLoadMap::take): |
| (WebKit::NetworkResourceLoadMap::setHasUpload): |
| * NetworkProcess/NetworkResourceLoadMap.h: |
| (WebKit::NetworkResourceLoadMap::hasUpload const): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didClose): |
| (WebKit::NetworkProcessProxy::setWebProcessHasUploads): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/ProcessAssertion.cpp: |
| (WebKit::ProcessAssertion::ProcessAssertion): |
| * UIProcess/ProcessAssertion.h: |
| (WebKit::ProcessAssertion::pid const): |
| * UIProcess/WebProcessPool.cpp: |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessPool.messages.in: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::~WebProcessProxy): |
| * UIProcess/WebProcessProxy.h: |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| (WebKit::WebLoaderStrategy::remove): |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| * WebProcess/Network/WebLoaderStrategy.h: |
| |
| 2020-04-17 Jer Noble <jer.noble@apple.com> |
| |
| Bring Fullscreen API + alert() behavior from iOS to macOS |
| https://bugs.webkit.org/show_bug.cgi?id=210662 |
| |
| Reviewed by Eric Carlson. |
| |
| When a page is showing an alert(), all non-synchronous messages will be blocked until the sync XPC for alert() |
| ends. And when exiting fullscreen, we block completing the fullscreen exit animation until a repaint XPC completes. |
| So a page that is showing an alert() will never fully exit element fullscreen mode. |
| |
| On iOS, we fixed this behavior by exiting fullscreen mode whenever the page shows an alert() or prompt(). We should |
| bring this behavior to macOS as well. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::runJavaScriptAlert): |
| (WebKit::WebPageProxy::runJavaScriptConfirm): |
| (WebKit::WebPageProxy::runJavaScriptPrompt): |
| |
| 2020-04-17 Don Olmstead <don.olmstead@sony.com> |
| |
| [CMake] Add WebKit::WebCore target |
| https://bugs.webkit.org/show_bug.cgi?id=210445 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Use the WebKit::WebCore target within the WebKit target. |
| |
| * CMakeLists.txt: |
| * PlatformGTK.cmake: |
| * PlatformWPE.cmake: |
| * PlatformWin.cmake: |
| |
| 2020-04-17 Simon Fraser <simon.fraser@apple.com> |
| |
| Turn async frame and overflow scrolling on by default on macOS |
| https://bugs.webkit.org/show_bug.cgi?id=210661 |
| rdar://problem/60420037 |
| |
| Reviewed by Tim Horton. |
| |
| Flip the plist value and the default value for macOS which is outside of the feature flag #ifdef. |
| |
| Testing keeps async overflow scrolling off by default, so this should not affect testing. |
| |
| This only impacts WebKit2. |
| |
| * FeatureFlags/WebKit.plist: |
| * Shared/WebPreferencesDefaultValues.cpp: |
| (WebKit::defaultAsyncFrameAndOverflowScrollingEnabled): |
| |
| 2020-04-17 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Add telemetry to some mach lookup sandbox extensions |
| https://bugs.webkit.org/show_bug.cgi?id=210657 |
| |
| Reviewed by Darin Adler. |
| |
| Add telemetry in order to learn more about how some of the mach lookup extensions are being used in the WebContent process on iOS. |
| |
| No new tests, since this patch does not change any behavior. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-04-17 Youenn Fablet <youenn@apple.com> |
| |
| Validate socket in NetworkRTCProvider::wrapNewTCPConnection |
| https://bugs.webkit.org/show_bug.cgi?id=210594 |
| |
| Reviewed by Eric Carlson. |
| |
| * NetworkProcess/webrtc/NetworkRTCProvider.cpp: |
| (WebKit::NetworkRTCProvider::wrapNewTCPConnection): |
| Add a null check in case the identifier does not relate to an existing pending socket. |
| |
| 2020-04-17 Peng Liu <peng.liu6@apple.com> |
| |
| Cleanup the macros for video fullscreen and picture-in-picture |
| https://bugs.webkit.org/show_bug.cgi?id=210638 |
| |
| Reviewed by Eric Carlson. |
| |
| Replace some "#if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))" |
| and all "#if (PLATFORM(IOS_FAMILY) && HAVE(AVKIT)) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))" |
| with "#if ENABLE(VIDEO_PRESENTATION_MODE)". |
| |
| * GPUProcess/media/RemoteMediaPlayerProxy.cpp: |
| (WebKit::RemoteMediaPlayerProxy::setVideoFullscreenGravity): |
| (WebKit::RemoteMediaPlayerProxy::updateVideoFullscreenInlineImage): |
| (WebKit::RemoteMediaPlayerProxy::setVideoFullscreenMode): |
| (WebKit::RemoteMediaPlayerProxy::videoFullscreenStandbyChanged): |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.h: |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in: |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::didAttachToRunningProcess): |
| (WebKit::WebPageProxy::viewDidLeaveWindow): |
| (WebKit::WebPageProxy::exitFullscreenImmediately): |
| * UIProcess/WebPageProxy.h: |
| * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp: |
| * WebProcess/GPU/media/MediaPlayerPrivateRemote.h: |
| * WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::~WebPage): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/cocoa/VideoFullscreenManager.h: |
| * WebProcess/cocoa/VideoFullscreenManager.messages.in: |
| * WebProcess/cocoa/VideoFullscreenManager.mm: |
| |
| 2020-04-17 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK] Update for GdkKeymap API changes |
| https://bugs.webkit.org/show_bug.cgi?id=210642 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| No new tests needed. |
| |
| gdk_keymap_get_default() is deprecated in GTK+ 3.22, so use |
| gdk_keymap_get_for_display() instead. Since in GTK4 this method is |
| removed to gdk_display_get_keymap(), add a helper to |
| GtkVersioning.h to avoid cluttering with ifdefs all over the |
| place. |
| |
| * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp: |
| (WebKit::doKeyStrokeEvent): |
| |
| 2020-04-17 Antoine Quint <graouts@apple.com> |
| |
| Allow the UserStyleLevel to be set through _WKUserStyleSheet |
| https://bugs.webkit.org/show_bug.cgi?id=210653 |
| <rdar://problem/60506645> |
| |
| Reviewed by Tim Horton. |
| |
| Add a new _WKUserStyleLevel enum such that we may provide the specificity level of the backing UserStyleSheet, represented by the UserStyleLevel enum in WebCore. |
| |
| * UIProcess/API/Cocoa/_WKUserStyleSheet.h: |
| * UIProcess/API/Cocoa/_WKUserStyleSheet.mm: |
| (-[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:level:userContentWorld:]): |
| (-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:level:userContentWorld:]): |
| (-[_WKUserStyleSheet initWithSource:forWKWebView:forMainFrameOnly:userContentWorld:]): Deleted. |
| * UIProcess/API/Cocoa/_WKUserStyleSheetInternal.h: |
| (API::toWebCoreUserStyleLevel): |
| |
| 2020-04-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][X11] REGRESSION(r259944): Wrong position of select popup menu in X11 |
| https://bugs.webkit.org/show_bug.cgi?id=210603 |
| |
| Reviewed by Michael Catanzaro. |
| |
| gdk_window_move_to_rect expects the given rectangle in coordinates relative to the top-left corner of the window |
| that the popup window is transient for. We were using screen coordinates. |
| |
| * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: |
| (WebKit::WebPopupMenuProxyGtk::showPopupMenu): Translate widget coordinates to window coordinates before passing |
| the rectangle to gdk_window_move_to_rect(). |
| |
| 2020-04-17 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r256756): -[WKUserDefaults initWithSuiteName:]: Instance variable used while 'self' is not set to the result of '[(super or self) init...]' |
| <https://webkit.org/b/210647> |
| <rdar://problem/61928289> |
| |
| Reviewed by Anders Carlsson. |
| |
| * UIProcess/Cocoa/PreferenceObserver.mm: |
| (-[WKUserDefaults initWithSuiteName:]): |
| - Call `[self initWithSuite:]` and set `self` to fix the clang |
| static analyzer warning. |
| - Fix camelCase of `suitename` parameter. |
| |
| 2020-04-17 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Deny iokit open access to graphics related classes |
| https://bugs.webkit.org/show_bug.cgi?id=210616 |
| |
| Reviewed by Darin Adler. |
| |
| Deny iokit open access to graphics related classes in the WebContent process on iOS, but issue |
| extensions for these for some devices which still need access to them. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| * Shared/Cocoa/SandboxExtensionCocoa.mm: |
| (WebKit::SandboxExtensionImpl::sandboxExtensionForType): |
| (WebKit::SandboxExtension::createHandleForIOKitClassExtension): |
| * Shared/SandboxExtension.h: |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h: |
| * UIProcess/API/ios/WKWebViewTestingIOS.mm: |
| (-[WKWebView _setDeviceHasAGXCompilerServiceForTesting]): |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| (WebKit::deviceHasAGXCompilerService): Deleted. |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::setDeviceHasAGXCompilerServiceForTesting const): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| |
| 2020-04-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] UI process crash when entering compositing mode when WPE_RENDERER is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=209118 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Check if EGL_WL_bind_wayland_display extension is available when using WPE_RENDERER, since we don't suport the |
| SHM interface. |
| |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: |
| (WebKit::AcceleratedBackingStoreWayland::checkRequirements): Return false if EGL_WL_bind_wayland_display is not present. |
| |
| 2020-04-17 Rob Buis <rbuis@igalia.com> |
| |
| Move allowPlugins to FrameLoader |
| https://bugs.webkit.org/show_bug.cgi?id=205876 |
| |
| Reviewed by Darin Adler. |
| |
| Adapt to API change. |
| |
| * WebProcess/Plugins/WebPluginInfoProvider.cpp: |
| (WebKit::WebPluginInfoProvider::pluginInfo): |
| (WebKit::WebPluginInfoProvider::populatePluginCache): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::objectContentType): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::createPlugin): |
| (WebKit::WebPage::canPluginHandleResponse): |
| (WebKit::WebPage::canShowMIMEType const): |
| |
| 2020-04-16 Peng Liu <peng.liu6@apple.com> |
| |
| Cleanup the usage of ENABLE_FULLSCREEN_API |
| https://bugs.webkit.org/show_bug.cgi?id=210630 |
| |
| Reviewed by Daniel Bates. |
| |
| Replace "#if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API" with |
| "#if ENABLE(FULLSCREEN_API)". |
| |
| No new tests, no functional change |
| |
| * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: |
| (WKBundlePageSetFullScreenClient): |
| (WKBundlePageWillEnterFullScreen): |
| (WKBundlePageDidEnterFullScreen): |
| (WKBundlePageWillExitFullScreen): |
| (WKBundlePageDidExitFullScreen): |
| |
| 2020-04-16 Kate Cheney <katherine_cheney@apple.com> |
| |
| Distinguish between an empty WKAppBoundDomains array and a missing entry |
| https://bugs.webkit.org/show_bug.cgi?id=210628 |
| <rdar://problem/61909669> |
| |
| Reviewed by Brent Fulgham. |
| |
| Currently we treat a missing WKAppBoundDomains key the same as an empty |
| key, which is incorrect. Having the key present, even with no entries, |
| should opt an app into app-bound domain behavior. |
| |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::initializeAppBoundDomains): |
| (WebKit::WebsiteDataStore::beginAppBoundDomainCheck): |
| |
| 2020-04-16 Brent Fulgham <bfulgham@apple.com> |
| |
| Add a new 'limitNavigationsToAppBoundDomains' property to WKWebViewConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=210620 |
| <rdar://problem/61903225> |
| |
| Reviewed by Andy Estes. |
| |
| Follow-up fix. The property exposed by WKWebViewConfiguration should not |
| use a local BOOL; it simply exposes the APIPageConfiguration value. |
| |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration init]): |
| (-[WKWebViewConfiguration copyWithZone:]): |
| (-[WKWebViewConfiguration limitsNavigationToAppBoundDomains]): |
| (-[WKWebViewConfiguration setLimitsNavigationToAppBoundDomains:]): |
| (-[WKWebViewConfiguration _setIgnoresAppBoundDomains:]): |
| |
| 2020-04-16 Brent Fulgham <bfulgham@apple.com> |
| |
| Switch NetworkProcess and NetworkProcessProxy messages to use CallbackID class |
| https://bugs.webkit.org/show_bug.cgi?id=210566 |
| <rdar://problem/61791784> |
| |
| Reviewed by David Kilzer. |
| |
| Instead of using the raw uint64_t type to represent callbacks, use the purpose |
| built WebKit::CallbackID type. |
| |
| Tested by existing cases. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::fetchWebsiteData): |
| (WebKit::NetworkProcessProxy::deleteWebsiteData): |
| (WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins): |
| (WebKit::NetworkProcessProxy::didFetchWebsiteData): |
| (WebKit::NetworkProcessProxy::didDeleteWebsiteData): |
| (WebKit::NetworkProcessProxy::didDeleteWebsiteDataForOrigins): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| |
| 2020-04-16 Timothy Horton <timothy_horton@apple.com> |
| |
| Try to fix the macCatalyst build |
| |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (uiImageForImage): |
| (createTargetedPreview): |
| (createFallbackTargetedPreview): |
| (-[WKContentView _createTargetedContextMenuHintPreviewIfPossible]): |
| |
| 2020-04-16 David Kilzer <ddkilzer@apple.com> |
| |
| Re-land: [IPC Hardening] MachMessage::create() should use checked arithmetic |
| <https://webkit.org/b/210572> |
| <rdar://problem/61729947> |
| |
| Reviewed by Chris Dumez. |
| |
| * Platform/IPC/cocoa/ConnectionCocoa.mm: |
| (IPC::Connection::sendOutgoingMessage): |
| - Add nullptr check since MachMessage::create() can return an |
| empty std::unique_ptr<> now. |
| * Platform/IPC/cocoa/MachMessage.cpp: |
| (IPC::MachMessage::create): |
| - Use CheckedSize to compute the buffer size. |
| |
| 2020-04-16 Brent Fulgham <bfulgham@apple.com> |
| |
| Add a new 'limitNavigationsToAppBoundDomains' property to WKWebViewConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=210620 |
| <rdar://problem/61903225> |
| |
| Reviewed by Andy Estes. |
| |
| Provide a way for Developers to opt-in to AppBound domains through a new WKWebViewConfiguration |
| property. |
| |
| This patch only creates the property and exposes the flag to the APIPageConfiguration and |
| WebPageProxy. A separate patch will take action based on its value. |
| |
| * UIProcess/API/APIPageConfiguration.cpp: |
| (API::PageConfiguration::copy const): |
| * UIProcess/API/APIPageConfiguration.h: |
| (API::PageConfiguration::limitsNavigationToAppBoundDomains const): |
| (API::PageConfiguration::setLimitsNavigationToAppBoundDomains): |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.h: |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration init]): |
| (-[WKWebViewConfiguration copyWithZone:]): |
| (-[WKWebViewConfiguration limitsNavigationToAppBoundDomains]): |
| (-[WKWebViewConfiguration setLimitsNavigationToAppBoundDomains:]): |
| (-[WKWebViewConfiguration _setIgnoresAppBoundDomains:]): Keep the new property in |
| sync with this internal flag. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::m_limitsNavigationToAppBoundDomains): |
| * UIProcess/WebPageProxy.h: |
| |
| 2020-04-16 Sergio Villar Senin <svillar@igalia.com> |
| |
| Unreviewed build fix for non unified builds. |
| |
| * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp: Added missing include. |
| |
| 2020-04-16 Daniel Bates <dabates@apple.com> |
| |
| Remove unused -_focusTextInputContext |
| https://bugs.webkit.org/show_bug.cgi?id=210619 |
| |
| Reviewed by Darin Adler. |
| |
| While this function was in the "SPI" header, there is no software at Apple that was using |
| this funciton and I will assume no non-Apple software was using it either. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _focusTextInputContext:completionHandler:]): Deleted. |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| |
| 2020-04-16 Brent Fulgham <bfulgham@apple.com> |
| |
| [macOS] Switch unused IOKit classes from allow-with-report to deny-with-report |
| https://bugs.webkit.org/show_bug.cgi?id=210136 |
| <rdar://problem/61403216> |
| |
| Reviewed by Per Arne Vollan. |
| |
| After tracking telemetry for several weeks, we can now safely switch the default state |
| of a number of IOKit classes from 'allow with telemetry' to 'deny with telemetry'. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-04-16 Daniel Bates <dabates@apple.com> |
| |
| Fix the iOS build when building without EDITABLE_REGION after r260192 |
| (https://bugs.webkit.org/show_bug.cgi?id=210398) |
| |
| Have -_mayContainEditableElementsInRect compile-time conditionally call WebKit::mayContainEditableElementsInRect(). |
| If ENABLE(EDITABLE_REGION) is not enabled then return NO. |
| |
| * UIProcess/API/ios/WKWebViewTestingIOS.mm: |
| (-[WKWebView _mayContainEditableElementsInRect:]): |
| |
| 2020-04-16 David Kilzer <ddkilzer@apple.com> |
| |
| Rollout: [IPC Hardening] MachMessage::create() should use checked arithmetic |
| <https://webkit.org/b/210572> |
| <rdar://problem/61729947> |
| |
| Unreviewed rollout of r260160. |
| |
| Appears to have caused 8 API test failures on iOS. |
| |
| * Platform/IPC/cocoa/ConnectionCocoa.mm: |
| (IPC::Connection::sendOutgoingMessage): |
| * Platform/IPC/cocoa/MachMessage.cpp: |
| (IPC::MachMessage::create): |
| |
| 2020-04-16 Brent Fulgham <bfulgham@apple.com> |
| |
| REGRESSION(r260081) Broke iOS PLT due to InjectedBundle initialization (edit) |
| https://bugs.webkit.org/show_bug.cgi?id=210582 |
| <rdar://problem/61838584> |
| |
| Reviewed by Darin Adler. |
| |
| The changes in r260081 began enforcing NSSecureCoding best practices, triggering |
| a bug in InjectedBundleMac.mm, which is used by iOS as well. |
| |
| This patch does the following: |
| |
| 1. Delays parameter decoding until we use the appropriate InjectedBundle mechanism |
| for expressing the valid classes to use in the Unarchiver. |
| 2. Removes a temporary workaround needed to get PLT running on iOS again. |
| |
| This patch also moves the check of the CFBundleGetFunctionPointerForName slightly earlier |
| so we can use a single function pointer check, and only invoke the parameter decoding |
| if we are using the C API. |
| |
| If not, we delay parameter decoding until we have constructed the WKWebProcessPlugIn |
| object so we can consume it's 'additionalClassesForParameterCoder' before calling |
| its initialization method. |
| |
| * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm: |
| (WebKit::InjectedBundle::decodeBundleParameters): Remove temporary workaround |
| needed to get PLT working again. Instead of using a debug assert, return as |
| a decoding failure if the resulting object is not an NSDictionary. |
| (WebKit::InjectedBundle::initialize): Delay decoding the bundle parameters on |
| iOS until the Plugin's additionalClassesForParameterCoder method can be called. |
| |
| 2020-04-16 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Add a way to focus a text input and place a caret |
| https://bugs.webkit.org/show_bug.cgi?id=210611 |
| <rdar://problem/61893062> |
| |
| Reviewed by Darin Adler. |
| |
| Add some IPI that will be used by code in WebKitAdditions to focus a text input context |
| and place the caret in it. This will replace the existing -focusTextInput SPI, which I |
| will remove in a subsequent commit. |
| |
| * UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h: |
| * UIProcess/API/ios/WKWebViewTestingIOS.mm: |
| (-[WKWebView _requestTextInputContextsInRect:completionHandler:]): Fix up code style |
| of signature while I am here. |
| (-[WKWebView _focusTextInputContext:placeCaretAt:completionHandler:]): Added. |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _isTextInputContextFocused:]): Added. |
| (-[WKContentView _focusTextInputContext:placeCaretAt:completionHandler:]): Added. |
| (-[WKContentView _requestTextInputContextsInRect:completionHandler:]): Fix up code style |
| of signature while I am here. |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::focusTextInputContextAndPlaceCaret): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::focusTextInputContext): Use auto now that elementForContext() returns a RefPtr. |
| (WebKit::WebPage::elementForContext const): Have it return a RefPtr instead of a raw |
| pointer so callers don't have to remember to take out a ref of otherwise be mindful |
| of the element's lifetime. |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::removeTextPlaceholder): Use auto now that elementForContext() returns a RefPtr. |
| (WebKit::WebPage::requestDocumentEditingContext): Ditto. |
| (WebKit::WebPage::focusTextInputContextAndPlaceCaret): Added. |
| |
| 2020-04-16 Chris Dumez <cdumez@apple.com> |
| |
| Use safeRoundPage() instead of round_page() in SharedMemory |
| https://bugs.webkit.org/show_bug.cgi?id=210608 |
| <rdar://problem/60600443> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Use new safeRoundPage() instead of round_page() in SharedMemory, to deal safely with overflows. |
| |
| * Platform/cocoa/SharedMemoryCocoa.cpp: |
| (WebKit::SharedMemory::allocate): |
| (WebKit::makeMemoryEntry): |
| (WebKit::SharedMemory::~SharedMemory): |
| (WebKit::SharedMemory::createHandle): |
| |
| 2020-04-16 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Non-unified build fixes mid April 2020 edition |
| https://bugs.webkit.org/show_bug.cgi?id=210599 |
| |
| Unreviewed build fix. |
| |
| * UIProcess/DeviceIdHashSaltStorage.cpp: Add missing Logging.h header. |
| * UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp: |
| (WebKit::WebInspectorProxy::platformSetForcedAppearance): Add missing WebCore:: namespace |
| prefix. |
| * UIProcess/linux/MemoryPressureMonitor.h: Add missing wtf/text/CString.h header. |
| |
| 2020-04-16 Daniel Bates <dabates@apple.com> |
| |
| REGRESSION (r259762): Should always hit test for editable elements if the WKWebView is fully editable |
| https://bugs.webkit.org/show_bug.cgi?id=210558 |
| <rdar://problem/61798347> |
| |
| Reviewed by Wenson Hsieh. |
| |
| If the entire WKWebView is marked editable (via SPI -[WKWebView _setEditable]) then |
| always ask the web process to hit test the page because every element is considered |
| editable. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _requestTextInputContextsInRect:completionHandler:]): |
| |
| 2020-04-16 Daniel Bates <dabates@apple.com> |
| |
| Move -_requestTextInputContextsInRect to WKContentView to simplify implementation |
| https://bugs.webkit.org/show_bug.cgi?id=210398 |
| <rdar://problem/61656931> |
| |
| Reviewed by Darin Adler. |
| |
| -_requestTextInputContextsInRect is not needed on Mac, but supporting it complicates |
| its implementation: it has to deal with coordinate space differences due to differences |
| in what is the root view on Mac and iOS + it has to know about iOS's custom content views. |
| While this function was in the "SPI" header, there is no software at Apple that was using |
| these outside of WebKit, and I will assume no non-Apple software was using them either. |
| Moving this function to WKContentView lets me simplify the implementation. |
| |
| * Platform/spi/ios/UIKitSPI.h: Add more forward declarations. |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _convertRectFromRootViewCoordinates:]): Deleted. |
| (-[WKWebView _convertRectToRootViewCoordinates:]): Deleted. |
| (-[WKWebView _mayContainEditableElementsInRect:]): Deleted; moved to WKWebViewTestingIOS.mm. |
| (-[WKWebView _requestTextInputContextsInRect:completionHandler:]): Deleted; moved to WKContentViewInteraction.mm. |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h: |
| * UIProcess/API/ios/WKWebViewTestingIOS.mm: |
| (-[WKWebView _requestTextInputContextsInRect:completionHandler:]): Added. Turns around and |
| calls the function of the same name on the WKContentView. It takes care to convert the specified |
| rect from WKWebView coordinates to WKContentView coordinates and fixes up the bounding rects |
| for the returned contexts to be in WKWebView coordinates. This keeps existings tests passing |
| as mekes using this function intuitive since callers specify and get rects in WKWebView coordinates. |
| (-[WKWebView _requestDocumentContext:completionHandler:]): Added. |
| (-[WKWebView _adjustSelectionWithDelta:completionHandler:]): Added. |
| (-[WKWebView _mayContainEditableElementsInRect:]): Moved from WKWebView.mm. |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _requestTextInputContextsInRect:completionHandler:]): Moved from WKWebView.mm and simplified. |
| |
| 2020-04-16 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC Hardening] Use ObjectIdentifier<> for LegacyCustomProtocol |
| <https://webkit.org/b/210580> |
| <rdar://problem/61791686> |
| |
| Reviewed by Chris Dumez. |
| |
| Replace uses of uint64_t with LegacyCustomProtocolID. |
| |
| * NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm: |
| (WebKit::LegacyCustomProtocolManager::didFailWithError): |
| (WebKit::LegacyCustomProtocolManager::didLoadData): |
| (WebKit::LegacyCustomProtocolManager::didReceiveResponse): |
| (WebKit::LegacyCustomProtocolManager::didFinishLoading): |
| (WebKit::LegacyCustomProtocolManager::wasRedirectedToRequest): |
| (WebKit::LegacyCustomProtocolManager::protocolForID): |
| * NetworkProcess/CustomProtocols/LegacyCustomProtocolID.h: Add. |
| * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp: |
| (WebKit::LegacyCustomProtocolManager::addCustomProtocol): |
| (WebKit::LegacyCustomProtocolManager::removeCustomProtocol): |
| (WebKit::LegacyCustomProtocolManager::startLoading): |
| (WebKit::LegacyCustomProtocolManager::stopLoading): |
| (WebKit::generateCustomProtocolID): Delete. |
| - Replace with LegacyCustomProtocolID::generate(). |
| * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h: |
| * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.messages.in: |
| * Scripts/webkit/messages.py: |
| * UIProcess/API/APICustomProtocolManagerClient.h: |
| (API::CustomProtocolManagerClient::startLoading): |
| (API::CustomProtocolManagerClient::stopLoading): |
| * UIProcess/Cocoa/LegacyCustomProtocolManagerClient.h: |
| * UIProcess/Cocoa/LegacyCustomProtocolManagerClient.mm: |
| (-[WKCustomProtocolLoader initWithLegacyCustomProtocolManagerProxy:customProtocolID:request:]): |
| (WebKit::LegacyCustomProtocolManagerClient::startLoading): |
| (WebKit::LegacyCustomProtocolManagerClient::stopLoading): |
| * UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.cpp: |
| (WebKit::LegacyCustomProtocolManagerProxy::startLoading): |
| (WebKit::LegacyCustomProtocolManagerProxy::stopLoading): |
| (WebKit::LegacyCustomProtocolManagerProxy::wasRedirectedToRequest): |
| (WebKit::LegacyCustomProtocolManagerProxy::didReceiveResponse): |
| (WebKit::LegacyCustomProtocolManagerProxy::didLoadData): |
| (WebKit::LegacyCustomProtocolManagerProxy::didFailWithError): |
| (WebKit::LegacyCustomProtocolManagerProxy::didFinishLoading): |
| * UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h: |
| - Remove unused typedef and instance variable. |
| * UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.messages.in: |
| * WebKit.xcodeproj/project.pbxproj: |
| - Add LegacyCustomProtocolID.h to project. |
| |
| 2020-04-16 Tim Horton <timothy_horton@apple.com> |
| |
| REGRESSION (r259898): WebKit-based Books views are all blank |
| https://bugs.webkit.org/show_bug.cgi?id=210590 |
| <rdar://problem/61791109> |
| |
| Reviewed by Chris Dumez. |
| |
| * UIProcess/Cocoa/WebViewImpl.h: |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::enterAcceleratedCompositingWithRootLayer): |
| (WebKit::WebViewImpl::setAcceleratedCompositingRootLayer): |
| (WebKit::WebViewImpl::setAcceleratedCompositingRootLayerAfterFlush): Deleted. |
| * UIProcess/mac/PageClientImplMac.mm: |
| (WebKit::PageClientImpl::enterAcceleratedCompositingMode): |
| (WebKit::PageClientImpl::didFirstLayerFlush): |
| The changes to setAcceleratedCompositingRootLayer in r259898 proved |
| to be wrong in a second way (the first being fixed in r260104): when |
| setAcceleratedCompositingRootLayer is called from updateAcceleratedCompositingMode, |
| because the layer hosting mode changed (Books appears to use app-hosted layers), |
| it incorrectly identified the root layer change as a process swap, resulting |
| in the correct layer never being unhidden. |
| |
| This is enough mistakes that I'm going to try a different approach: |
| put setAcceleratedCompositingRootLayer back to the way it was before, where |
| it immediately updates the layer without any smarts, remove |
| setAcceleratedCompositingRootLayerAfterFlush, because it's no longer necessary, |
| and add enterAcceleratedCompositingWithRootLayer, which is specifically only |
| called in the case where DrawingArea will for-sure send us a follow-up |
| (didFirstLayerFlush) that will unhide the root layer. |
| |
| 2020-04-16 Eric Carlson <eric.carlson@apple.com> |
| |
| [macOS] Update ScreenTime as playback state changes |
| https://bugs.webkit.org/show_bug.cgi?id=210518 |
| <rdar://problem/61181092> |
| |
| Reviewed by Jer Noble. |
| |
| Add a manager that gets media element state changes, and a Cocoa-specific |
| implementation that passes that state to ScreenTime. |
| |
| * Scripts/webkit/messages.py: |
| * Sources.txt: |
| * SourcesCocoa.txt: |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::mediaUsageManager): |
| (WebKit::WebPageProxy::addMediaUsageManagerSession): |
| (WebKit::WebPageProxy::updateMediaUsageManagerSessionState): |
| (WebKit::WebPageProxy::removeMediaUsageManagerSession): |
| * UIProcess/Media/MediaUsageManager.cpp: Added. |
| (WebKit::MediaUsageManager::create): |
| (WebKit::reset): |
| (WebKit::MediaUsageManager::addMediaSession): |
| (WebKit::MediaUsageManager::removeMediaSession): |
| (WebKit::MediaUsageManager::updateMediaUsage): |
| * UIProcess/Media/MediaUsageManager.h: Added. |
| * UIProcess/Media/cocoa/MediaUsageManagerCocoa.h: Added. |
| (WebKit::MediaUsageManagerCocoa::SessionMediaUsage::SessionMediaUsage): |
| * UIProcess/Media/cocoa/MediaUsageManagerCocoa.mm: Added. |
| (WebKit::usageTrackingAvailable): |
| (WebKit::MediaUsageManager::create): |
| (WebKit::MediaUsageManagerCocoa::~MediaUsageManagerCocoa): |
| (WebKit::MediaUsageManagerCocoa::reset): |
| (WebKit::MediaUsageManagerCocoa::addMediaSession): |
| (WebKit::MediaUsageManagerCocoa::removeMediaSession): |
| (WebKit::MediaUsageManagerCocoa::updateMediaUsage): |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm: |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::addMediaUsageManagerSession): |
| (WebKit::WebChromeClient::updateMediaUsageManagerSessionState): |
| (WebKit::WebChromeClient::removeMediaUsageManagerSession): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::addMediaUsageManagerSession): |
| (WebKit::WebPage::updateMediaUsageManagerSessionState): |
| (WebKit::WebPage::removeMediaUsageManagerSession): |
| * WebProcess/WebPage/WebPage.h: |
| |
| 2020-04-16 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC hardening] DrawingArea::updateBackingStoreState() is not used on Apple platforms |
| <https://webkit.org/b/210585> |
| <rdar://problem/61802011> |
| |
| Reviewed by Geoffrey Garen. |
| |
| * UIProcess/DrawingAreaProxy.h: |
| * UIProcess/DrawingAreaProxy.messages.in: |
| * WebProcess/WebPage/DrawingArea.h: |
| (WebKit::DrawingArea::updateBackingStoreState): |
| * WebProcess/WebPage/DrawingArea.messages.in: |
| - Use USE(COORDINATED_GRAPHICS) || USE(TEXTURE_MAPPER) to |
| protect code not used on Apple platforms. |
| |
| 2020-04-16 Carlos Alberto Lopez Perez <clopez@igalia.com> |
| |
| [GTK] MiniBrowser opens new windows too small causing failures on some WPT tests |
| https://bugs.webkit.org/show_bug.cgi?id=210206 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Provide the size of the default window (if is set) when windowRect is called |
| before the window is shown. |
| |
| * UIProcess/API/glib/WebKitUIClient.cpp: |
| |
| 2020-04-16 Tomoki Imai <Tomoki.Imai@sony.com> |
| |
| TextureMapper renders video element with "object-fit: cover" incorrectly |
| https://bugs.webkit.org/show_bug.cgi?id=210544 |
| |
| Reviewed by Žan Doberšek. |
| |
| Propagate GraphicsLayer::contentsClippingRect information to TextureMapperLayer |
| to properly clip the outside of DOM element when the element has "object-fit: cover". |
| |
| Unfortunately, the test is disabled on WebKitGTK due to bug 177536, bug 163528. |
| Test: compositing/video/video-object-fit.html |
| |
| * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: |
| (WebKit::CoordinatedGraphicsScene::updateSceneState): |
| |
| 2020-04-15 Jer Noble <jer.noble@apple.com> |
| |
| REGRESSION (r260102): ASSERTION FAILED: m_arbitrators.contains(proxy) in WebKit::SharedArbitrator::endRoutingArbitrationForArbitrator |
| https://bugs.webkit.org/show_bug.cgi?id=210589 |
| <rdar://problem/61844208> |
| |
| Reviewed by Eric Carlson. |
| |
| Protect against an assertion in the SharedArbitrator in case where a WebProcess is terminated before it can call |
| endRoutingArbitration(). |
| |
| * UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp: |
| (WebKit::AudioSessionRoutingArbitratorProxy::processDidTerminate): |
| * UIProcess/Media/AudioSessionRoutingArbitratorProxy.h: |
| * UIProcess/Media/cocoa/AudioSessionRoutingArbitratorProxyCocoa.mm: |
| (WebKit::SharedArbitrator::isInRoutingArbitrationForArbitrator): |
| (WebKit::SharedArbitrator::beginRoutingArbitrationForArbitrator): |
| (WebKit::SharedArbitrator::endRoutingArbitrationForArbitrator): |
| (WebKit::AudioSessionRoutingArbitratorProxy::processDidTerminate): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch): |
| |
| 2020-04-15 Tim Horton <timothy_horton@apple.com> |
| |
| REGRESSION (r258337): Crash when right clicking on link that uses the system UI font with optimizeLegibility on Mojave |
| https://bugs.webkit.org/show_bug.cgi?id=210575 |
| <rdar://problem/61646717> |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/Cocoa/ArgumentCodersCocoa.mm: |
| (-[WKSecureCodingFontAttributeNormalizer archiver:willEncodeObject:]): |
| (IPC::encodeSecureCodingInternal): |
| The workaround introduced in r250640 and r251086 for archiving NSFonts |
| with optical sizing attributes is still incomplete, which was recently |
| revealed by making decoding failures more apparent (in r258337). |
| |
| Specifically, the workaround was not applied to fonts encoded inside |
| NSAttributedStrings, which are encoded using a keyed archiver... only |
| to fonts encoded directly with CoreIPC. |
| |
| Use a NSKeyedArchiver delegate to apply our fix-up to the optical sizing |
| attribute when any NSFont is being encoded, and only on platforms |
| that still exhibit the bug. |
| |
| * Shared/Cocoa/CoreTextHelpers.h: |
| * Shared/Cocoa/CoreTextHelpers.mm: |
| (WebKit::fontWithAttributes): |
| (WebKit::fontDescriptorWithFontAttributes): Deleted. |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::updateFontManagerIfNeeded): |
| * UIProcess/mac/WebPopupMenuProxyMac.mm: |
| (WebKit::WebPopupMenuProxyMac::showPopupMenu): |
| Refactor fontDescriptorWithFontAttributes to just return a font since that's what all callers actually want. |
| |
| 2020-04-15 John Wilander <wilander@apple.com> |
| |
| Add SPI to configure WebsiteDataStores with a URL for standalone web applications and use it to disable first-party website data removal in ITP |
| https://bugs.webkit.org/show_bug.cgi?id=209634 |
| <rdar://problem/60943970> |
| |
| Reviewed by Alex Christensen. |
| |
| This change adds a new property to _WKWebsiteDataStoreConfiguration.h called |
| standaloneApplicationURL with which the hosting application can inform the |
| website data store that it's running as a standalone web application. |
| |
| This change also forwards an existing standaloneApplicationURL as a |
| WebCore::RegistrableDomain into ITP so that explicit exemptions can be made |
| to first parties of standalone web applications. The exemptions made here |
| all for all of ITP's website data removal. This part of the change is |
| covered by the new layout tests. |
| |
| Tests: http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html |
| http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion.html |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| (WebKit::ResourceLoadStatisticsStore::setStandaloneApplicationDomain): |
| (WebKit::ResourceLoadStatisticsStore::standaloneApplicationDomain const): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::setStandaloneApplicationDomain): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| (WebKit::NetworkSession::forwardResourceLoadStatisticsSettings): |
| * NetworkProcess/NetworkSession.h: |
| * Shared/ResourceLoadStatisticsParameters.h: |
| (WebKit::ResourceLoadStatisticsParameters::encode const): |
| (WebKit::ResourceLoadStatisticsParameters::decode): |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration standaloneApplicationURL]): |
| (-[_WKWebsiteDataStoreConfiguration setStandaloneApplication:]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::platformSetNetworkParameters): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy const): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::standaloneApplicationURL const): |
| (WebKit::WebsiteDataStoreConfiguration::setStandaloneApplicationURL): |
| |
| 2020-04-15 Chris Dumez <cdumez@apple.com> |
| |
| [IPC Hardening] MachMessage::messageSize() should use checked arithmetic |
| https://bugs.webkit.org/show_bug.cgi?id=210567 |
| <rdar://problem/61734355> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Replace call to round_msg() call with a call to our new safeRoundMsg() which does |
| the same alignment up but using checked arithmetic to protect against overflows. |
| |
| * Platform/IPC/cocoa/MachMessage.cpp: |
| (IPC::safeRoundMsg): |
| (IPC::MachMessage::messageSize): |
| |
| 2020-04-15 David Kilzer <ddkilzer@apple.com> |
| |
| [IPC Hardening] MachMessage::create() should use checked arithmetic |
| <https://webkit.org/b/210572> |
| <rdar://problem/61729947> |
| |
| Reviewed by Chris Dumez. |
| |
| * Platform/IPC/cocoa/ConnectionCocoa.mm: |
| (IPC::Connection::sendOutgoingMessage): |
| - Add nullptr check since MachMessage::create() can return an |
| empty std::unique_ptr<> now. |
| * Platform/IPC/cocoa/MachMessage.cpp: |
| (IPC::MachMessage::create): |
| - Use CheckedSize to compute the buffer size. |
| |
| 2020-04-15 Brent Fulgham <bfulgham@apple.com> |
| |
| Unreviewed PLT fix after r260081. |
| |
| * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm: |
| (WebKit::InjectedBundle::decodeBundleParameters): |
| |
| 2020-04-15 Ben Nham <nham@apple.com> |
| |
| DidFirstLayerFlush IPC can be head-of-line-blocked and delay first paint by 200+ ms on process swap |
| https://bugs.webkit.org/show_bug.cgi?id=210571 |
| |
| Reviewed by Geoffrey Garen. |
| |
| When we process swap, the layer swap/unhiding for the new hosted layer is gated by the |
| DidFirstLayerFlush IPC. But actually sending this IPC can be head-of-line blocked for an |
| arbitrarily long time because we append it to the queue of messages for the main run loop to |
| process. In some cases, e.g. for the NYT PLT content, this blocks first paint by 200 ms |
| while the WebProcess main thread is busy doing other things (like executing deferred |
| scripts). |
| |
| To fix this, use a CATransaction commit handler to send the IPC right after we commit. |
| |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: |
| (WebKit::TiledCoreAnimationDrawingArea::sendDidFirstLayerFlushIfNeeded): |
| |
| 2020-04-15 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Unreviewed, fix the watchOS and tvOS builds after r260146 |
| |
| Move some code for controlling the presentation of context menus on iOS behind USE(UICONTEXTMENU). |
| |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| |
| 2020-04-15 Peng Liu <peng.liu6@apple.com> |
| |
| Video elements don't return to the correct position when exiting fullscreen |
| https://bugs.webkit.org/show_bug.cgi?id=210529 |
| |
| Reviewed by Jer Noble. |
| |
| Some web pages use the "resize" event handler to calculate the element size after |
| they exit fullscreen, and the calculation is based on the container element size which |
| might be affected by the fullscreen mode. |
| |
| We need to call WebPageProxy::setNeedsDOMWindowResizeEvent() to fire the "resize" event |
| in the repaint callback after the exiting fullscreen process is completed and the |
| possible layout change due to exiting fullscreen is done. Otherwise the size calculation |
| might be wrong. |
| |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: |
| (-[WKFullScreenWindowController _completedExitFullScreen]): |
| * UIProcess/mac/WKFullScreenWindowController.mm: |
| (-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::setNeedsDOMWindowResizeEvent): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2020-04-15 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iPadOS] Some pages indefinitely zoom in and out due to idempotent text autosizing |
| https://bugs.webkit.org/show_bug.cgi?id=210551 |
| <rdar://problem/56820674> |
| |
| Reviewed by Tim Horton. |
| |
| On a non-responsive web page with one or lines of non-wrapping text of a specific length (just under 1920px), |
| it's possible for the combination of idempotent text autosizing heuristics and viewport shrink-to-fit to cause |
| the single line of text to grow and shrink in size indefinitely, and additionally cause the initial scale to |
| thrash between multiple values indefinitely. This manifests in the entire page repeatedly zooming in and out |
| immediately after page load. |
| |
| Consider the following scenario: |
| |
| (1) A viewport configuration change (e.g. due to parsing the viewport meta tag) schedules the timer to reset |
| idempotent text autosizing. Let's suppose the page has a really long line of non-wrapping 12px text that is |
| below 1920px wide. |
| |
| (2) The timer fires, invalidating styles and recomputing text autosizing given the current initial scale. The |
| current initial scale is below 1, since ViewportConfiguration will attempt to shrink to fit the page to |
| avoid horizontal scrolling. This causes text autosizing to boost the long line of text to a larger value |
| (let's say 17px). |
| |
| (3) The next time we perform style recomputation and layout, we discover that the content width of the page is |
| now larger than 1920px, which is the maximum width which we'll attempt to shrink to fit; when computing |
| initial scale, we give up trying to shrink down to avoid making the inital scale too small, and instead just |
| keep it at 1. |
| |
| (4) This change in viewport configuration then schedules another idempotent text autosizing reset. When this |
| timer fires, it sees that the initial scale is now 1, which means that the text is no longer boosted, so we |
| make the single line of text small again (12px). |
| |
| (5) After the next style recomputation and layout, this causes the content width of the page to dip below the |
| 1920px threshold, causing the initial scale to dip below 1 again. As detailed above, this schedules another |
| idempotent text autosizing update, which now boosts font size once again, and the cycle continues. |
| |
| To fix this, instead of consulting the initial scale (`ViewportConfiguration::initialScale()`) when computing |
| the boosted font size for idempotent text autosizing, we can instead ask for the initial scale ignoring content |
| size (`ViewportConfiguration::initialScaleIgnoringContentSize()`). This prevents changes in content size due to |
| idempotent autosizing from affecting the idempotent autosizing heuristic (through the different initial scale), |
| and ensures that this method of text autosizing actually remains idempotent. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::resetIdempotentTextAutosizingIfNeeded): |
| (WebKit::WebPage::viewportConfigurationChanged): |
| |
| 2020-04-14 Megan Gardner <megan_gardner@apple.com> |
| |
| Data Detected Actions sheets are presented from odd locations. |
| https://bugs.webkit.org/show_bug.cgi?id=210531 |
| <rdar://problem/60941346> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Use the existing context menu targeted preview code to ensure that the |
| data detected menus are presented in a good location. |
| |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]): |
| |
| 2020-04-15 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Potential crash under WebProcess::platformInitializeWebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=210547 |
| |
| Reviewed by Brent Fulgham. |
| |
| If the UI process fails to issue an extension to the runningboard service, the WebContent process will crash |
| while trying to consume this extension. |
| |
| No new tests, since the test runners are unsandboxed, so issuing the extension will always succeed. |
| |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| |
| 2020-04-15 Brent Fulgham <bfulgham@apple.com> |
| |
| [Cocoa] Remove generic parameter serialization fallback |
| https://bugs.webkit.org/show_bug.cgi?id=210509 |
| <rdar://problem/55522650> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Tested by BundleFormDelegate parameter serialization tests... |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _setInputDelegate:]): |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::elementDidFocus): |
| |
| 2020-04-15 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r259610): WebGL does not work at all on iOS (was: Google Maps tiles turn black after initial load) |
| <rdar://problem/61794480> |
| |
| Unreviewed, partial revert of r259610 because it broke Google Maps. |
| Stop using RunningBoard for the "Foreground" assertion because it fails to |
| give the target GPU access. |
| |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (WebKit::runningBoardNameForAssertionType): |
| |
| 2020-04-15 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK4] Fix use of gtk init functions |
| https://bugs.webkit.org/show_bug.cgi?id=210550 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Include GtkVersioning.h instead of gtk.h |
| |
| * WebProcess/gtk/WebProcessMainGtk.cpp: |
| |
| 2020-04-15 Peng Liu <peng.liu6@apple.com> |
| |
| Adopt interface AVAudioRoutingArbiter for Mac |
| https://bugs.webkit.org/show_bug.cgi?id=210167 |
| |
| Reviewed by Jer Noble. |
| |
| A follow-up patch to fix a build error. |
| |
| * UIProcess/Media/cocoa/AudioSessionRoutingArbitratorProxyCocoa.mm: |
| (WebKit::SharedArbitrator::beginRoutingArbitrationForArbitrator): |
| |
| 2020-04-15 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK4] Provide an alternative to gtk_widget_{get,is}_toplevel() |
| https://bugs.webkit.org/show_bug.cgi?id=210463 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/glib/WebKitUIClient.cpp: Adapt to take into account that GTK4 does not |
| provide the GtkWidget.configure-event signal. |
| |
| 2020-04-15 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| Unreviewed, reverting r259891. |
| |
| Causes significant iOS MotionMark regression |
| |
| Reverted changeset: |
| |
| "Switch unused IOKit classes from allow-with-report to deny- |
| with-report" |
| https://bugs.webkit.org/show_bug.cgi?id=210136 |
| https://trac.webkit.org/changeset/259891 |
| |
| 2020-04-14 Megan Gardner <megan_gardner@apple.com> |
| |
| File Upload Menus presented from odd locations. |
| https://bugs.webkit.org/show_bug.cgi?id=210523 |
| <rdar://problem/60390846> |
| |
| Use the existing context menu targeted preview code to ensure that the |
| file menus are presented in a good location. |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/forms/WKFileUploadPanel.mm: |
| (-[WKFileUploadPanel contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): |
| |
| 2020-04-14 David Kilzer <ddkilzer@apple.com> |
| |
| dictionaryValueOfType() in WebCoreArgumentCodersMac.mm can be replaced with dynamic_cf_cast<>() |
| <https://webkit.org/b/210456> |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/mac/WebCoreArgumentCodersMac.mm: |
| (IPC::dictionaryValueOfType): Delete. |
| (IPC::extractDictionaryValue): Add. |
| - Use dynamic_cf_cast<>() in place of manually checking the |
| CFTypeID of each object. |
| (IPC::createArchiveList): |
| - Call new extractDictionaryValue() template function to verify |
| values are the correct types in the dictionary and to set the |
| output variables. |
| |
| 2020-04-14 David Kilzer <ddkilzer@apple.com> |
| |
| Use CFArrayGetValues() in createArchiveList() in WebCoreArgumentCodersMac.mm |
| <https://webkit.org/b/210519> |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/mac/WebCoreArgumentCodersMac.mm: |
| (IPC::createArchiveList): |
| - Use CFArrayGetValues() to copy array more efficiently. |
| |
| 2020-04-14 Tim Horton <timothy_horton@apple.com> |
| |
| REGRESSION (r259898): Tabs occasionally go blank and get stuck that way |
| https://bugs.webkit.org/show_bug.cgi?id=210520 |
| <rdar://problem/61776830> |
| |
| Reviewed by Simon Fraser. |
| |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::setAcceleratedCompositingRootLayer): |
| setThumbnailView calls setAcceleratedCompositingRootLayer in order to reconnect the |
| existing root layer. After r259898, this would cause us to go down the |
| process-swap path, and hide the root layer, and nothing would ever |
| come along and fix it. |
| |
| If setAcceleratedCompositingRootLayer is called with the existing root |
| layer, that cannot be a process swap, so ignore it and proceed as before. |
| |
| 2020-04-14 Jer Noble <jer.noble@apple.com> |
| |
| Adopt interface AVAudioRoutingArbiter for Mac |
| https://bugs.webkit.org/show_bug.cgi?id=210167 |
| <rdar://problem/59113994> |
| |
| Reviewed by Eric Carlson. |
| |
| Add a new cross-process object pair, AudioSessionRouterAbitrator/Proxy which passes routing |
| arbitration commands from WebContent -> UIProcess. Because the UIProcess can represent |
| multiple WebContent processes, it must track all outstanding arbitration requests globally. |
| |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * GPUProcess/GPUProcess.cpp: |
| (WebKit::GPUProcess::initializeGPUProcess): |
| * Sources.txt: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::mediaRelatedMachServices): |
| * UIProcess/Media/AudioSessionRoutingArbitratorProxy.cpp: Added. |
| (WebKit::AudioSessionRoutingArbitratorProxy::AudioSessionRoutingArbitratorProxy): |
| (WebKit::AudioSessionRoutingArbitratorProxy::~AudioSessionRoutingArbitratorProxy): |
| (WebKit::AudioSessionRoutingArbitratorProxy::beginRoutingArbitrationWithCategory): |
| (WebKit::AudioSessionRoutingArbitratorProxy::leaveRoutingArbitration): |
| * UIProcess/Media/AudioSessionRoutingArbitratorProxy.h: Added. |
| (WebKit::AudioSessionRoutingArbitratorProxy::category const): |
| (WebKit::AudioSessionRoutingArbitratorProxy::destinationId): |
| * UIProcess/Media/AudioSessionRoutingArbitratorProxy.messages.in: Added. |
| * UIProcess/Media/cocoa/AudioSessionRoutingArbitratorProxyCocoa.mm: Added. |
| (WebKit::SharedArbitrator::sharedInstance): |
| (WebKit::SharedArbitrator::beginRoutingArbitrationForArbitrator): |
| (WebKit::SharedArbitrator::leaveRoutingArbitrationForArbitrator): |
| (WebKit::AudioSessionRoutingArbitratorProxy::AudioSessionRoutingArbitratorProxy): |
| (WebKit::AudioSessionRoutingArbitratorProxy::~AudioSessionRoutingArbitratorProxy): |
| (WebKit::AudioSessionRoutingArbitratorProxy::beginRoutingArbitrationWithCategory): |
| (WebKit::AudioSessionRoutingArbitratorProxy::leaveRoutingArbitration): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::WebProcessProxy): |
| * UIProcess/WebProcessProxy.h: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_processDisplayName): |
| * WebProcess/WebProcess.cpp: |
| * WebProcess/cocoa/AudioSessionRoutingArbitrator.cpp: Added. |
| (WebKit::AudioSessionRoutingArbitrator::AudioSessionRoutingArbitrator): |
| (WebKit::AudioSessionRoutingArbitrator::supplementName): |
| (WebKit::AudioSessionRoutingArbitrator::beginRoutingArbitrationWithCategory): |
| (WebKit::AudioSessionRoutingArbitrator::leaveRoutingAbritration): |
| * WebProcess/cocoa/AudioSessionRoutingArbitrator.h: Added. |
| * WebProcess/cocoa/UserMediaCaptureManager.cpp: |
| (WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource): |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2020-04-14 David Kilzer <ddkilzer@apple.com> |
| |
| createArchiveList() in WebCoreArgumentCodersMac.mm should do more validity checks |
| <https://webkit.org/b/210448> |
| <rdar://problem/61677029> |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/mac/WebCoreArgumentCodersMac.mm: |
| (IPC::createArchiveList): Add more validity checks. |
| |
| 2020-04-14 Brent Fulgham <bfulgham@apple.com> |
| |
| Do more checking before reusing precompiled sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=210304 |
| <rdar://problem/61155623> |
| |
| Reviewed by Darin Adler. |
| |
| We recently discovered that the system sandbox framework version does not always change |
| when breaking changes in the sandbox format are made. This can lead to the precompiled |
| version of a sandbox not working properly when a sandbox version changes. |
| |
| To guard against this, make the following changes: |
| |
| 1. Compare the SANDBOX_BUILD_ID in place when the sandbox was compiled to the value on |
| the current system. SANDBOX_BUILD_ID, which is a GUID, is always regenerated when the |
| sandbox framework is rebuilt. |
| |
| 2. Compare the OS version in place when the sandbox was compiled to the value on the current |
| system. This will trigger us recompiling sandboxes even when the sandbox framework did not |
| change, but this is a small performance cost that would only happen after a software update. |
| |
| * Shared/mac/AuxiliaryProcessMac.mm: |
| (WebKit::compileAndCacheSandboxProfile): |
| (WebKit::tryApplyCachedSandbox): |
| |
| 2020-04-14 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Content filtering needs access to the frontboard service |
| https://bugs.webkit.org/show_bug.cgi?id=210505 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Content filtering in the WebContent process needs access to the frontboard service on iOS. Issue an extension |
| to this service when content filtering is enabled. |
| |
| API test: WebKit.WebFilterFeatureHasFrontboardServiceAccess |
| |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| |
| 2020-04-14 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iPadOS] Wikipedia articles lay out incorrectly in 1/3 multitasking window |
| https://bugs.webkit.org/show_bug.cgi?id=210501 |
| <rdar://problem/54856323> |
| |
| Reviewed by Tim Horton. |
| |
| Apply the viewport quirk if needed; see WebCore/ChangeLog for more details. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::updateVisibleContentRects): |
| |
| 2020-04-14 Brent Fulgham <bfulgham@apple.com> |
| |
| InjectedBundle parameters often need initialization function called before unarchiving |
| https://bugs.webkit.org/show_bug.cgi?id=189709 |
| <rdar://problem/44573653> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Handle the case where the InjectedBundle parameters do not successfully decode because they contain |
| an unexpected class from the embedding program. If this happens, try decoding the bundle parameters |
| after the bundle initialiation function runs, which gives the embedding program the opportunity to |
| register additional classes that are safe for serialization. |
| |
| Extend WKWebProcessPlugIn with a method that returns the names of any custom classes that need |
| to be serialized by the InjectedBundle. |
| |
| Create a new 'decodeBundleParameters' method that contains the logic that used to live in 'initialize'. |
| Revise 'initialize' to call this new method. |
| |
| * WebProcess/InjectedBundle/InjectedBundle.h: |
| * WebProcess/InjectedBundle/mac/InjectedBundleMac.mm: |
| (WebKit::InjectedBundle::initialize): Use the new method. |
| (WebKit::InjectedBundle::decodeBundleParameters): Added. |
| (WebKit::InjectedBundle::setBundleParameters): Use 'decodeObjectOfClasses' with the more complete |
| 'classesForCoder' method to unarchive the passed bundle parameters, rather than the |
| NSDictionary-specific method, since InjectedBundles often encode other types of objects, and the |
| NSDictionary object may itself hold other kinds of objects. |
| * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.h: |
| (WebKit::WKWebProcessPlugIn::additionalClassesForParameterCoder): Added. |
| |
| 2020-04-14 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Address review comments after r260035 |
| https://bugs.webkit.org/show_bug.cgi?id=210440 |
| |
| Reviewed by David Kilzer. |
| |
| Omit unused argument names. |
| |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetIgnoreViewportScalingConstraints): |
| (WKPreferencesGetIgnoreViewportScalingConstraints): |
| |
| 2020-04-14 Megan Gardner <megan_gardner@apple.com> |
| |
| YouTube sometimes navigates unexpectedly when invoking a context menu on a video link. |
| https://bugs.webkit.org/show_bug.cgi?id=210467 |
| <rdar://problem/58841584> |
| |
| Reviewed by Tim Horton. |
| |
| Cancel any outstanding touches tracked by WebTouchEventsGestureRecognizer, so that we dispatch |
| `touchcancel` to the page instead of `touchend`, so that the page does not misinterpret |
| context menu invocation as a tap. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): |
| |
| 2020-04-14 Youenn Fablet <youenn@apple.com> |
| |
| Do not process RTC Network messages coming from NetworkProcess if LibWebRTCNetwork is not active |
| https://bugs.webkit.org/show_bug.cgi?id=207376 |
| <rdar://problem/59238611> |
| |
| Unreviewed. |
| Post-commit review update, change variable name to network. |
| No change of behavior. |
| |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::didReceiveMessage): |
| |
| 2020-04-14 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Bring back support for rendering scrollbars using the system appearance |
| https://bugs.webkit.org/show_bug.cgi?id=209805 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Add WebKitWebContext:use-system-appearance-for-scrollbars property. It's enabled by default to keep backwards |
| compatibility. |
| |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): Encode useSystemAppearanceForScrollbars. |
| (WebKit::WebProcessCreationParameters::decode): Decode useSystemAppearanceForScrollbars. |
| * Shared/WebProcessCreationParameters.h: |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): Copy m_useSystemAppearanceForScrollbars; |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextGetProperty): |
| (webkitWebContextSetProperty): |
| (webkitWebContextConstructed): |
| (webkit_web_context_class_init): |
| (webkit_web_context_set_use_system_appearance_for_scrollbars): |
| (webkit_web_context_get_use_system_appearance_for_scrollbars): |
| * UIProcess/API/gtk/WebKitWebContext.h: |
| * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: |
| * UIProcess/glib/WebProcessPoolGLib.cpp: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): Initialize useSystemAppearanceForScrollbars parameter. |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebProcess.messages.in: |
| * WebProcess/glib/WebProcessGLib.cpp: |
| (WebKit::WebProcess::platformInitializeWebProcess): Call setUseSystemAppearanceForScrollbars to set |
| useSystemAppearanceForScrollbars parameter. |
| (WebKit::WebProcess::setUseSystemAppearanceForScrollbars): Call ScrollbarThemeGtk::setUseSystemAppearance(). |
| |
| 2020-04-14 Youenn Fablet <youenn@apple.com> |
| |
| WebSocketChannel should remove itself from its manager map |
| https://bugs.webkit.org/show_bug.cgi?id=210424 |
| |
| Reviewed by Alex Christensen. |
| |
| WebSocketChannelManager was never removing any entry from its map. |
| To fix this, the manager is now keeping a WeakPtr to each channel. |
| When the channel is destroyed, it will remove itself from its channel manager. |
| |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::WebSocketChannel::WebSocketChannel): |
| (WebKit::WebSocketChannel::~WebSocketChannel): |
| * WebProcess/Network/WebSocketChannel.h: |
| * WebProcess/Network/WebSocketChannelManager.cpp: |
| (WebKit::WebSocketChannelManager::addChannel): |
| (WebKit::WebSocketChannelManager::createWebSocketChannel): Deleted. |
| * WebProcess/Network/WebSocketChannelManager.h: |
| (WebKit::WebSocketChannelManager::removeChannel): |
| * WebProcess/Network/WebSocketProvider.cpp: |
| (WebKit::WebSocketProvider::createWebSocketChannel): |
| |
| 2020-04-14 Youenn Fablet <youenn@apple.com> |
| |
| Add logging in case of WebRTC socket error |
| https://bugs.webkit.org/show_bug.cgi?id=210428 |
| |
| Reviewed by Eric Carlson. |
| |
| Add some release logging in case of error when sending, setting option or closing a socket. |
| |
| * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp: |
| (WebKit::LibWebRTCSocketClient::sendTo): |
| (WebKit::LibWebRTCSocketClient::close): |
| (WebKit::LibWebRTCSocketClient::setOption): |
| |
| 2020-04-13 David Kilzer <ddkilzer@apple.com> |
| |
| Replace use of Checked<size_t, RecordOverflow> with CheckedSize |
| <https://webkit.org/b/210461> |
| |
| Reviewed by Mark Lam. |
| |
| * Platform/IPC/cocoa/MachMessage.cpp: |
| (IPC::MachMessage::messageSize): |
| * Platform/IPC/cocoa/MachMessage.h: |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::WebSocketChannel::increaseBufferedAmount): |
| |
| 2020-04-13 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Update message filters in the WebContent sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=210455 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Update message filters in the WebContent sandbox on iOS with required messages. |
| |
| No new tests, since this patch should not introduce a behavior change. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-04-13 Brent Fulgham <bfulgham@apple.com> |
| |
| Add roblox.com to the desktop class quirks list |
| https://bugs.webkit.org/show_bug.cgi?id=210452 |
| <rdar://problem/58859657> |
| |
| Reviewed by Zalan Bujtas. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::desktopClassBrowsingRecommendedForRequest): |
| |
| 2020-04-13 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Remove the "IgnoreViewportScalingConstraints" debug WebKit feature |
| https://bugs.webkit.org/show_bug.cgi?id=210440 |
| |
| Reviewed by Tim Horton. |
| |
| Remove the internal WebKit2 feature; this was introduced around iOS 9 to unconditionally force pages to shrink |
| to fit if they specified a responsive viewport, to avoid horizontal scrolling. |
| |
| Nowadays, this behavior is instead controlled by the `-[WKWebView _allowsViewportShrinkToFit]` SPI, which |
| ensures that this shrink-to-fit preference is updated in sync with the visible content rect update lifecycle; it |
| is currently used by Safari to scale web pages down to fit in smaller multitasking viewports. |
| |
| In contrast, this preference has no internal clients. Instead of maintaining two different ways for clients to |
| control shrink-to-fit behavior, remove support for the preference and make it a no-op. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetIgnoreViewportScalingConstraints): |
| (WKPreferencesGetIgnoreViewportScalingConstraints): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::updatePreferences): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| |
| Remove this redundant mechanism for shrinking web pages down to fit. |
| |
| (WebKit::WebPage::updateVisibleContentRects): |
| |
| 2020-04-13 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Remove unused UTType swizzler code |
| https://bugs.webkit.org/show_bug.cgi?id=210435 |
| |
| Unreviewed rollout of r258120. |
| |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| |
| 2020-04-13 Kate Cheney <katherine_cheney@apple.com> |
| |
| Turn all instances of NavigatingToAppBoundDomain into Optionals |
| https://bugs.webkit.org/show_bug.cgi?id=210363 |
| <rdar://problem/61612861> |
| |
| Reviewed by Brent Fulgham. |
| |
| NavigatingToAppBoundDomain should be an Optional when passed to the |
| Network Process to distinguish the case of an empty app-bound domain |
| list versus an actual app-bound domain navigation. An empty list and |
| an app-bound navigation should have the same behavior in NetworkSessionCocoa, |
| but we will need distinguished behavior in the future. |
| |
| * NetworkProcess/Downloads/DownloadManager.cpp: |
| (WebKit::DownloadManager::startDownload): |
| * NetworkProcess/Downloads/DownloadManager.h: |
| (WebKit::DownloadManager::startDownload): |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::startDownload): |
| (WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| (WebKit::NetworkConnectionToWebProcess::startDownload): |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkLoadParameters.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::preconnectTo): |
| (WebKit::NetworkProcess::downloadRequest): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/NetworkResourceLoadParameters.cpp: |
| (WebKit::NetworkResourceLoadParameters::decode): |
| * NetworkProcess/NetworkResourceLoadParameters.h: |
| * NetworkProcess/cache/AsyncRevalidation.cpp: |
| (WebKit::NetworkCache::AsyncRevalidation::AsyncRevalidation): |
| * NetworkProcess/cache/AsyncRevalidation.h: |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::Cache::startAsyncRevalidationIfNeeded): |
| (WebKit::NetworkCache::Cache::retrieve): |
| * NetworkProcess/cache/NetworkCache.h: |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: |
| (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: |
| (WebKit::NetworkCache::SpeculativeLoadManager::registerLoad): |
| (WebKit::NetworkCache::SpeculativeLoadManager::preconnectForSubresource): |
| (WebKit::NetworkCache::SpeculativeLoadManager::revalidateSubresource): |
| (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry): |
| (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation): |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::sessionWrapperForTask): |
| We should treat an empty WKAppBoundDomains list like an app-bound domain |
| navigation in the network session, so this sets |
| NavigatingToAppBoundDomain to Yes if the Optional is WTF::nullopt. |
| |
| (WebKit::NetworkSessionCocoa::appBoundSession): Deleted. |
| (WebKit::NetworkSessionCocoa::isolatedSession): Deleted. |
| (WebKit::NetworkSessionCocoa::hasIsolatedSession const): Deleted. |
| (WebKit::NetworkSessionCocoa::clearIsolatedSessions): Deleted. |
| (WebKit::NetworkSessionCocoa::invalidateAndCancel): Deleted. |
| (WebKit::NetworkSessionCocoa::clearCredentials): Deleted. |
| (WebKit::certificatesMatch): Deleted. |
| (WebKit::NetworkSessionCocoa::allowsSpecificHTTPSCertificateForHost): Deleted. |
| (WebKit::NetworkSessionCocoa::continueDidReceiveChallenge): Deleted. |
| (WebKit::NetworkSessionCocoa::deviceManagementPolicyMonitor): Deleted. |
| (WebKit::NetworkSessionCocoa::createWebSocketTask): Deleted. |
| (WebKit::NetworkSessionCocoa::addWebSocketTask): Deleted. |
| (WebKit::NetworkSessionCocoa::removeWebSocketTask): Deleted. |
| (WebKit::NetworkSessionCocoa::hostNamesWithAlternativeServices const): Deleted. |
| (WebKit::NetworkSessionCocoa::deleteAlternativeServicesForHostNames): Deleted. |
| (WebKit::NetworkSessionCocoa::clearAlternativeServices): Deleted. |
| * Shared/LoadParameters.h: |
| * Shared/PolicyDecision.h: |
| (WebKit::PolicyDecision::decode): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::preconnectTo): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::loadData): |
| (WebKit::ProvisionalPageProxy::loadRequest): |
| * UIProcess/ProvisionalPageProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadDataWithNavigationShared): |
| (WebKit::WebPageProxy::setIsNavigatingToAppBoundDomain): |
| Set this to WTF::nullopt instead of NavigatingToAppBoundDomain::Yes |
| so the two cases are distinguished. |
| |
| (WebKit::WebPageProxy::isNavigatingToAppBoundDomainTesting): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::isNavigatingToAppBoundDomain const): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::download): |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::startDownload): |
| (WebKit::WebFrame::convertMainResourceLoadToDownload): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::loadDataImpl): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::setIsNavigatingToAppBoundDomain): |
| (WebKit::WebPage::isNavigatingToAppBoundDomain const): |
| |
| 2020-04-13 David Kilzer <ddkilzer@apple.com> |
| |
| Fix clang static analyzer warnings about unused instance variables in WebIconDatabase, WKView |
| <https://webkit.org/b/210427> |
| |
| Reviewed by Alex Christensen. |
| |
| * UIProcess/API/Cocoa/WKView.h: |
| (WKView._unused): |
| - Use WK_UNUSED_INSTANCE_VARIABLE to ignore unused instance |
| variable. |
| |
| 2020-04-13 David Kilzer <ddkilzer@apple.com> |
| |
| Add WARN_UNUSED_RETURN to decode methods in Source/WebKit |
| <https://webkit.org/b/210423> |
| <rdar://problem/61715582> |
| |
| Reviewed by Alex Christensen. |
| |
| * GPUProcess/GPUProcessCreationParameters.h: |
| * NetworkProcess/Downloads/DownloadID.h: |
| (IPC::ArgumentCoder<WebKit::DownloadID>::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * NetworkProcess/cache/NetworkCacheKey.h: |
| (WebKit::NetworkCache::DataKey::decode): |
| * NetworkProcess/cache/NetworkCacheStorage.cpp: |
| (WebKit::NetworkCache::decodeRecordMetaData): |
| (WebKit::NetworkCache::decodeRecordHeader): |
| * Platform/SharedMemory.h: |
| * PluginProcess/PluginCreationParameters.h: |
| * Shared/API/APIData.h: |
| * Shared/API/APIError.h: |
| * Shared/API/APIFrameHandle.h: |
| * Shared/API/APIGeometry.h: |
| * Shared/API/APINumber.h: |
| (API::Number::decode): |
| * Shared/API/APIPageGroupHandle.h: |
| * Shared/API/APIPageHandle.h: |
| * Shared/API/APIURL.h: |
| (API::URL::decode): |
| * Shared/API/APIURLRequest.h: |
| * Shared/API/APIURLResponse.h: |
| * Shared/API/Cocoa/RemoteObjectInvocation.h: |
| * Shared/Cocoa/ArgumentCodersCocoa.h: |
| * Shared/ContextMenuContextData.h: |
| * Shared/Databases/IndexedDB/WebIDBResult.h: |
| * Shared/EditorState.h: |
| * Shared/FocusedElementInformation.h: |
| * Shared/FontInfo.h: |
| * Shared/LayerTreeContext.h: |
| * Shared/LoadParameters.h: |
| * Shared/OptionalCallbackID.h: |
| (WebKit::OptionalCallbackID::decode): |
| * Shared/PlatformPopupMenuData.h: |
| * Shared/Plugins/PluginProcessCreationParameters.h: |
| * Shared/PrintInfo.h: |
| * Shared/RemoteLayerTree/RemoteLayerBackingStore.h: |
| * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h: |
| * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: |
| * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.h: |
| * Shared/SessionState.h: |
| * Shared/ShareableBitmap.h: |
| * Shared/ShareableResource.h: |
| * Shared/TouchBarMenuData.h: |
| * Shared/UpdateInfo.h: |
| * Shared/VisibleContentRectUpdateInfo.h: |
| * Shared/WebEvent.h: |
| * Shared/WebHitTestResultData.h: |
| * Shared/WebNavigationDataStore.h: |
| (WebKit::WebNavigationDataStore::decode): |
| * Shared/WebPreferencesStore.h: |
| * Shared/WebProcessCreationParameters.h: |
| * Shared/WebsiteData/WebsiteData.h: |
| * Shared/cf/ArgumentCodersCF.h: |
| * Shared/gtk/ArgumentCodersGtk.cpp: |
| (IPC::decodeImage): |
| (IPC::decodeGKeyFile): |
| * Shared/gtk/ArgumentCodersGtk.h: |
| * Shared/gtk/WebSelectionData.h: |
| * Shared/ios/InteractionInformationAtPosition.h: |
| * Shared/ios/InteractionInformationRequest.h: |
| * Shared/mac/ColorSpaceData.h: |
| * Shared/mac/ObjCObjectGraph.h: |
| * Shared/mac/SecItemRequestData.h: |
| * Shared/mac/WebGestureEvent.h: |
| * UIProcess/Cocoa/SessionStateCoding.h: |
| * UIProcess/LegacySessionStateCoding.h: |
| * UIProcess/mac/LegacySessionStateCoding.cpp: |
| (WebKit::decodeSessionHistoryEntryData): |
| (WebKit::decodeSessionHistoryEntry): |
| (WebKit::decodeSessionHistoryEntries): |
| (WebKit::decodeV0SessionHistory): |
| (WebKit::decodeV1SessionHistory): |
| (WebKit::decodeSessionHistory): |
| * WebProcess/GPU/GPUProcessConnectionInfo.h: |
| (WebKit::GPUProcessConnectionInfo::decode): |
| * WebProcess/GPU/media/RemoteAudioBusData.h: |
| (WebKit::RemoteAudioBusData::decode): |
| * WebProcess/MediaStream/MediaDeviceSandboxExtensions.h: |
| * WebProcess/Network/NetworkProcessConnectionInfo.h: |
| (WebKit::NetworkProcessConnectionInfo::decode): |
| * WebProcess/Plugins/Plugin.h: |
| - Add WARN_UNUSED_RETURN to all decode functions. |
| |
| 2020-04-13 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Add message filtering to all iokit open rules |
| https://bugs.webkit.org/show_bug.cgi?id=210352 |
| |
| Reviewed by Sam Weinig. |
| |
| Apply message filtering with reports and telemetry to all iokit-open rules in the WebContent process' sandbox on iOS |
| to gain a better understanding of which iokit-open rules we can investigate. |
| |
| No new tests, since adding telemetry will not introduce a change in behavior. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-04-13 Joonghun Park <jh718.park@samsung.com> |
| |
| Unreviewed. Remove redundant move in return statement. |
| |
| Return statement already returns rvalue, |
| so we don't need move here. |
| |
| This patch removes the build warning below since r259922. |
| warning: redundant move in return statement [-Wredundant-move] |
| |
| * NetworkProcess/cache/NetworkCacheCoders.cpp: |
| (WTF::Persistence::Coder<WebCore::HTTPHeaderMap>::decode): |
| |
| 2020-04-13 Michael Catanzaro <mcatanzaro@gnome.org> |
| |
| Fix various build warnings |
| https://bugs.webkit.org/show_bug.cgi?id=210429 |
| |
| Reviewed by Mark Lam. |
| |
| Use private-code instead of deprecated code command to build the Wayland protocol. |
| |
| * PlatformGTK.cmake: |
| |
| 2020-04-12 Darin Adler <darin@apple.com> |
| |
| Fix some strange uses of start/endOfDocument |
| https://bugs.webkit.org/show_bug.cgi?id=210408 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::replaceDictatedText): Pass the document to startOfDocument, |
| rather than getting the documentelement, because the function works on any |
| node, so there's no reason to write code to get a particular one. |
| (WebKit::WebPage::applyAutocorrectionInternal): Ditto. |
| |
| 2020-04-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Use gdk_window_move_to_rect() to position popup menus |
| https://bugs.webkit.org/show_bug.cgi?id=210069 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: |
| (WebKit::WebPopupMenuProxyGtk::showPopupMenu): |
| |
| 2020-04-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Page is not drawn with PSON, hardware acceleration and address typed in URL bar |
| https://bugs.webkit.org/show_bug.cgi?id=208091 |
| |
| Reviewed by Michael Catanzaro. |
| |
| This happens only when accelerated compositing mode policy is set to always. In this case, the |
| bindSurfaceToWebPage wayland message is received before the WebPageProxy has updated the web page identifier. We |
| should always check if there's a provisional page and get its web page identifier. |
| |
| * UIProcess/gtk/WaylandCompositor.cpp: |
| (WebKit::WaylandCompositor::bindSurfaceToWebPage): |
| |
| 2020-04-12 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][PSON] Crash in WaylandCompositor::Surface destructor with USE_WPE_RENDERER disabled |
| https://bugs.webkit.org/show_bug.cgi?id=209345 |
| |
| Reviewed by Michael Catanzaro. |
| |
| In case of PSON the web page identifier can change fo the same web page proxy. When swapping processes the new |
| web page calls bindSurfaceToWebPage(), but we still have the web page proxy bound to the previous surface. We |
| just need to unbind the current surface before binding the new one. |
| |
| * UIProcess/gtk/WaylandCompositor.cpp: |
| (WebKit::WaylandCompositor::bindSurfaceToWebPage): |
| |
| 2020-04-11 David Kilzer <ddkilzer@apple.com> |
| |
| Follow-up: Add WARN_UNUSED_RETURN to decode methods in Source/WebKit/Platform/IPC |
| <https://webkit.org/b/210316> |
| <rdar://problem/61559305> |
| |
| Changes based on feedback from Alex Christensen and Darin Adler: |
| - Remove WARN_UNUSED_RETURN from methods returning Optional<>. |
| - Place WARN_UNUSED_RETURN consistently before the return type. |
| |
| * Platform/IPC/ArgumentCoder.h: |
| * Platform/IPC/ArgumentCoders.cpp: |
| * Platform/IPC/ArgumentCoders.h: |
| (IPC::ArgumentCoder<OptionSet<T>>::decode): |
| (IPC::ArgumentCoder<Optional<T>>::decode): |
| (IPC::ArgumentCoder<Box<T>>::decode): |
| (IPC::TupleDecoderImpl::decode): |
| (IPC::TupleDecoderImpl<Type>::decode): |
| (IPC::TupleDecoder::decode): |
| (IPC::TupleDecoder<0>::decode): |
| (IPC::VariantCoder::decode): |
| * Platform/IPC/Attachment.h: |
| * Platform/IPC/DataReference.h: |
| * Platform/IPC/Decoder.h: |
| * Platform/IPC/FormDataReference.h: |
| (IPC::FormDataReference::decode): |
| * Platform/IPC/ImageDataReference.h: |
| (IPC::ImageDataReference::decode): |
| * Platform/IPC/SharedBufferDataReference.h: |
| (IPC::SharedBufferDataReference::decode): |
| * Platform/IPC/StringReference.h: |
| |
| 2020-04-11 David Kilzer <ddkilzer@apple.com> |
| |
| Follow-up: Add WARN_UNUSED_RETURN to decode methods in WebCoreArgumentCoders |
| <https://webkit.org/b/210322> |
| <rdar://problem/61565148> |
| |
| Changes based on feedback from Alex Christensen and Darin Adler: |
| - Remove WARN_UNUSED_RETURN from methods returning Optional<>. |
| - Place WARN_UNUSED_RETURN consistently before the return type. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| * Shared/WebCoreArgumentCoders.h: |
| |
| 2020-04-11 Daniel Bates <dabates@apple.com> |
| |
| Add text interaction delegate functions |
| https://bugs.webkit.org/show_bug.cgi?id=210395 |
| <rdar://problem/61650549> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Implement some delegate callbacks that are used to toggle selection reveal, |
| placeholder text, and selection assistance. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _willBeginTextInteractionInTextInputContext:]): Added. |
| (-[WKContentView _didFinishTextInteractionInTextInputContext:]): Added. |
| |
| 2020-04-10 Darin Adler <darin@apple.com> |
| |
| Move more from live range to SimpleRange: callers of absoluteTextRects |
| https://bugs.webkit.org/show_bug.cgi?id=210369 |
| |
| Reviewed by Anders Carlsson. |
| |
| * WebProcess/InjectedBundle/API/mac/WKDOMNode.mm: |
| (-[WKDOMNode textRects]): Moved implementation here. There's no reason for Node |
| to have a textRects function, since it's a layout/rendering operation and a |
| single node is also an unusual special case, but for now at least we will keep |
| this legacy method. |
| * WebProcess/InjectedBundle/API/mac/WKDOMRange.mm: |
| (-[WKDOMRange textRects]): Changed to call RenderObject::absoluteTextRects |
| instead of Range::absoluteTextRects. |
| |
| * WebProcess/WebPage/FindController.cpp: |
| (WebKit::FindController::updateFindUIAfterPageScroll): Use |
| RenderObject::absoluteTextRects instead of Range::absoluteRectRects. |
| (WebKit::FindController::findStringMatches): Ditto. |
| |
| 2020-04-10 Pablo Saavedra <psaavedra@igalia.com> |
| |
| [GTK][WPE] Replace fopen/fclose by fopen/fseek functions in MemoryPressureMonitor |
| https://bugs.webkit.org/show_bug.cgi?id=209942 |
| |
| Reviewed by Adrian Perez de Castro. |
| |
| Replacing the open()/close() logic to get the data from /proc/meminfo, |
| /proc/self/cgroup, ... with a new logic where the files are just |
| opened once and we just perform a seek to the initial position of |
| of an unbuffered file. |
| |
| Also refactoring of some logic: |
| |
| - Added the CGroupMemoryController class what encapsulates the logic |
| to calculate the the total memory and the memory usage with |
| cgroups. |
| - CGroupMemoryController encpasulates the FILE pointers to the |
| relative files to cgroups. |
| - The memInfoFile, zoneInfoFile and cgroupControllerFile are now |
| opened once in the Thread::create() invoked by the |
| MemoryPressureMonitor::start(). |
| |
| * UIProcess/linux/MemoryPressureMonitor.cpp: |
| (WebKit::lowWatermarkPages): |
| (WebKit::calculateMemoryAvailable): |
| (WebKit::getCgroupFile): |
| (WebKit::getCgroupControllerPath): |
| (WebKit::systemMemoryUsedAsPercentage): |
| (WebKit::MemoryPressureMonitor::start): |
| (WebKit::CGroupMemoryController::setMemoryControllerPath): |
| (WebKit::CGroupMemoryController::disposeMemoryController): |
| (WebKit::CGroupMemoryController::getCgroupFileValue): |
| (WebKit::CGroupMemoryController::getMemoryTotalWithCgroup): |
| (WebKit::CGroupMemoryController::getMemoryUsageWithCgroup): |
| (WebKit::getCgroupFileValue): Deleted. |
| (WebKit::getMemoryTotalWithCgroup): Deleted. |
| (WebKit::getMemoryUsageWithCgroup): Deleted. |
| * UIProcess/linux/MemoryPressureMonitor.h: |
| (WebKit::CGroupMemoryController::isActive): |
| (WebKit::CGroupMemoryController::~CGroupMemoryController): |
| |
| 2020-04-10 Alex Christensen <achristensen@webkit.org> |
| |
| PersistentCoders should use modern decoding syntax |
| https://bugs.webkit.org/show_bug.cgi?id=207497 |
| |
| Reviewed by Darin Adler. |
| |
| * NetworkProcess/cache/CacheStorageEngineCache.cpp: |
| (WebKit::CacheStorage::decodeDOMCacheRecord): |
| (WebKit::CacheStorage::Cache::decodeRecordHeader): |
| * NetworkProcess/cache/CacheStorageEngineCaches.cpp: |
| (WebKit::CacheStorage::Caches::readOrigin): |
| (WebKit::CacheStorage::decodeCachesNames): |
| * NetworkProcess/cache/NetworkCacheCoders.cpp: |
| (WTF::Persistence::Coder<WebCore::HTTPHeaderMap>::decode): |
| * NetworkProcess/cache/NetworkCacheEntry.cpp: |
| (WebKit::NetworkCache::Entry::decodeStorageRecord): |
| * NetworkProcess/cache/NetworkCacheKey.cpp: |
| (WebKit::NetworkCache::Key::decode): |
| * NetworkProcess/cache/NetworkCacheKey.h: |
| * NetworkProcess/cache/NetworkCacheStorage.cpp: |
| (WebKit::NetworkCache::decodeRecordMetaData): |
| * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: |
| (WebKit::NetworkCache::SubresourceInfo::encode const): |
| (WebKit::NetworkCache::SubresourceInfo::decode): |
| (WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord): |
| * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h: |
| * Shared/UserData.cpp: |
| (WebKit::UserData::decode): |
| * UIProcess/API/APIContentRuleListStore.cpp: |
| (API::decodeContentRuleListMetaData): |
| |
| 2020-04-10 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: add `broadcastConsoleMessage` calls for new ITPDebug logs after r259275 |
| https://bugs.webkit.org/show_bug.cgi?id=210362 |
| |
| Reviewed by John Wilander. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::logFrameNavigation): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation): |
| (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor): |
| |
| 2020-04-10 Chris Dumez <cdumez@apple.com> |
| |
| [IPC Hardening] WebHitTestResultData IPC decoder should validate imageSharedMemory / imageSize |
| https://bugs.webkit.org/show_bug.cgi?id=210361 |
| <rdar://problem/60758280> |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebHitTestResultData IPC decoder should validate imageSharedMemory / imageSize to make sure they are consistent. |
| |
| * Shared/WebHitTestResultData.cpp: |
| (WebKit::WebHitTestResultData::decode): |
| |
| 2020-04-10 Alex Christensen <achristensen@webkit.org> |
| |
| Add SPI to handle proxy authentication and require secure proxy connections |
| https://bugs.webkit.org/show_bug.cgi?id=210343 |
| <rdar://problem/61546396> <rdar://problem/61546519> and <rdar://problem/61546658> |
| |
| Reviewed by Geoffrey Garen. |
| |
| I also use WKWebViewConfiguration.connectionProxyDictionary instead of CFURLRequestSetProxySettings |
| to set proxy settings. The equivalence of this behavior is covered by the API tests. |
| |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration preventsSystemHTTPProxyAuthentication]): |
| (-[_WKWebsiteDataStoreConfiguration setPreventsSystemHTTPProxyAuthentication:]): |
| (-[_WKWebsiteDataStoreConfiguration requiresSecureHTTPSProxyConnection]): |
| (-[_WKWebsiteDataStoreConfiguration setRequiresSecureHTTPSProxyConnection:]): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy const): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::preventsSystemHTTPProxyAuthentication const): |
| (WebKit::WebsiteDataStoreConfiguration::setPreventsSystemHTTPProxyAuthentication): |
| (WebKit::WebsiteDataStoreConfiguration::requiresSecureHTTPSProxyConnection const): |
| (WebKit::WebsiteDataStoreConfiguration::setRequiresSecureHTTPSProxyConnection): |
| |
| 2020-04-10 Chris Dumez <cdumez@apple.com> |
| |
| [IPC Hardening] WebDeviceOrientationAndMotionAccessController::shouldAllowAccess() should not crash on invalid input |
| https://bugs.webkit.org/show_bug.cgi?id=210359 |
| <rdar://problem/60092453> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make sure the security origin is a valid HashMap key before trying to do a HashMap lookup. |
| The security origin is coming from IPC and thus cannot be trusted. |
| |
| * UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.cpp: |
| (WebKit::WebDeviceOrientationAndMotionAccessController::cachedDeviceOrientationPermission const): |
| |
| 2020-04-10 John Wilander <wilander@apple.com> |
| |
| Add capability to opt in specific domains into SameSite=strict bounce tracking protection |
| https://bugs.webkit.org/show_bug.cgi?id=210347 |
| <rdar://problem/61593323> |
| |
| Reviewed by Brent Fulgham. |
| |
| This change adds an additional opt-in condition to the shouldEnforceSameSiteStrictFor() |
| functions in both ResourceLoadStatisticsMemoryStore and ResourceLoadStatisticsDatabaseStore. |
| |
| No new tests. This adds domain specific logic, quirk-style. The logFrameNavigation() |
| changes are covered by existing tests. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::logFrameNavigation): |
| Now only captures real redirects for the purposes of the SameSite=strict rule. |
| (WebKit::ResourceLoadStatisticsDatabaseStore::shouldEnforceSameSiteStrictFor): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation): |
| Now only captures real redirects for the purposes of the SameSite=strict rule. |
| (WebKit::ResourceLoadStatisticsMemoryStore::shouldEnforceSameSiteStrictFor): |
| (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor): |
| Removed stray newline. |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::shouldEnforceSameSiteStrictForSpecificDomain const): |
| The new function with domains to subject to the new rule. |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| |
| 2020-04-10 Chris Dumez <cdumez@apple.com> |
| |
| First render after a process swap does not use accelerated rendering |
| https://bugs.webkit.org/show_bug.cgi?id=210297 |
| <rdar://problem/61432515> |
| |
| Reviewed by Antti Koivisto. |
| |
| To prevent flashing on navigation when process-swapping, we were delaying the |
| DrawingAreaProxy::EnterAcceleratedCompositingMode IPC message from the WebProcess |
| to the UIProcess, until the new page is ready to display. The reason we did this |
| is that the EnterAcceleratedCompositingMode IPC message ends up setting the root |
| CALayer so the new content would become visible on screen. However, another side |
| effect of this is that we would also delay the point until which we get |
| accelerated rendering, which would negatively impact early page load performance. |
| |
| To address the issue, the following changes were made: |
| 1. We no longer delay the DrawingAreaProxy::EnterAcceleratedCompositingMode IPC. |
| In non process-swap cases, we send it as soon as the DrawingArea is constructed. |
| In process-swap cases, we send it as soon as we commit the load since this is |
| when the provisional drawing area gets committed and happens before we have |
| any content to paint. |
| 2. In the UIProcess, when we get the DrawingAreaProxy::EnterAcceleratedCompositingMode |
| IPC and we already have a root layer, we add the new one behind the existing one |
| instead of replacing the existing one. As a result, the new layer will get |
| accelerated compositing but will not be visible on screen yet. |
| 3. Introduce a new DrawingAreaProxy::DidFirstLayerFlush IPC which gets send at the |
| point where we used to send the EnterAcceleratedCompositingMode IPC, meaning where |
| the new content is ready to display. When the UIProcess receives this IPC, it |
| actually replaces the root layer with the new layer so that the new content visible. |
| |
| After this patch, our CALayers get accelerated compositing right away after a |
| process-swap but we still do not see any blank-flashing on navigation. |
| |
| * UIProcess/Cocoa/WebViewImpl.h: |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::setAcceleratedCompositingRootLayer): |
| (WebKit::WebViewImpl::setAcceleratedCompositingRootLayerAfterFlush): |
| * UIProcess/DrawingAreaProxy.h: |
| (WebKit::DrawingAreaProxy::didFirstLayerFlush): |
| * UIProcess/DrawingAreaProxy.messages.in: |
| * UIProcess/PageClient.h: |
| (WebKit::PageClient::didFirstLayerFlush): |
| * UIProcess/SuspendedPageProxy.cpp: |
| (WebKit::SuspendedPageProxy::SuspendedPageProxy): |
| (WebKit::SuspendedPageProxy::pageDidFirstLayerFlush): |
| (WebKit::SuspendedPageProxy::closeWithoutFlashing): |
| * UIProcess/SuspendedPageProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::suspendCurrentPageIfPossible): |
| (WebKit::WebPageProxy::commitProvisionalPage): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/mac/PageClientImplMac.h: |
| * UIProcess/mac/PageClientImplMac.mm: |
| (WebKit::PageClientImpl::didFirstLayerFlush): |
| * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h: |
| * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm: |
| (WebKit::TiledCoreAnimationDrawingAreaProxy::didFirstLayerFlush): |
| * WebProcess/WebPage/DrawingArea.h: |
| (WebKit::DrawingArea::sendEnterAcceleratedCompositingModeIfNeeded): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::didCommitLoad): |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: |
| (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): |
| (WebKit::TiledCoreAnimationDrawingArea::sendDidFirstLayerFlushIfNeeded): |
| (WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded): |
| (WebKit::TiledCoreAnimationDrawingArea::updateRendering): |
| |
| 2020-04-10 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] Unable to select text by tap-hold or double tap-hold when allowsLinkPreview property is set to NO |
| https://bugs.webkit.org/show_bug.cgi?id=210191 |
| <rdar://problem/60454016> |
| |
| Reviewed by Tim Horton. |
| |
| In iOS 13.4, UIWKTextInteractionAssistant no longer uses the (misleadingly-named) "force press" gesture to drive |
| text selection when performing a long press. Instead, it now uses the UIVariableDelayLoupeGestureRecognizer, |
| i.e. the text interaction assistant's loupe gesture recognizer. |
| |
| The highlight long press gesture, which is only enabled when `allowsLinkPreview` is set to `NO`, is currently |
| allowed to recognize alongside the force press gesture but not the loupe gesture. This means that when link |
| previews are disabled, we'll end up allowing the highlight long press gesture to prevent text selection. A |
| similar issue already exists for the tap-and-half gesture as well. |
| |
| To fix this, we allow the highlight long press gesture to recognize alongside both gestures. |
| |
| Test: editing/selection/ios/select-text-with-link-preview-disabled.html |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (tapAndAHalfRecognizerClass): |
| |
| While UITapAndAHalfRecognizer is declared in a UIKit private header, it is (perhaps unintentionally) not |
| exported, so attempting to call +[UITapAndAHalfRecognizer class] leads to a linker error. Work around this by |
| dynamically grabbing the `Class` from the class name. |
| |
| The tap and half gesture recognizer is private in UIKit and only used for text interaction gestures, so we |
| always want the highlight long press gesture to be able to recognize alongside it. |
| |
| (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): |
| |
| Also clean up some existing code by replacing `.get().`s with Objective-C bracket operators. |
| |
| 2020-04-10 Brent Fulgham <bfulgham@apple.com> |
| |
| Switch unused IOKit classes from allow-with-report to deny-with-report |
| https://bugs.webkit.org/show_bug.cgi?id=210136 |
| <rdar://problem/61403216> |
| |
| Reviewed by Per Arne Vollan. |
| |
| After tracking telemetry for several weeks, we can now safely switch the default state |
| of a number of IOKit classes from 'allow with telemetry' to 'deny with telemetry'. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2020-04-10 Daniel Bates <dabates@apple.com> |
| |
| mayContainEditableElementsInRect() can terminate search once the search rect is wholly contained inside a layer |
| https://bugs.webkit.org/show_bug.cgi?id=210340 |
| |
| Reviewed by Simon Fraser. |
| |
| Reduce false positives. This makes mayContainEditableElementsInRect() return false when the |
| search rect is wholly contained inside a higher paint order layer with no editable elements |
| that overlaps a layer with editable elements. |
| |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (WebKit::mayContainEditableElementsInRect): |
| |
| 2020-04-10 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] Add routines to message filter in the WebContent sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=210338 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add required routines to the message filter in the WebContent sandbox on iOS. These have been observed |
| being in use during local testing. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2020-04-10 Simon Fraser <simon.fraser@apple.com> |
| |
| Reset view navigation gesture state between tests |
| https://bugs.webkit.org/show_bug.cgi?id=210283 |
| |
| Re-land r259818 with a null-check on m_webPageProxyForBackForwardListForCurrentSwipe. |
| |
| * UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h: |
| * UIProcess/API/Cocoa/WKWebViewTesting.mm: |
| (-[WKWebView _resetNavigationGestureStateForTesting]): |
| * UIProcess/ViewGestureController.cpp: |
| (WebKit::ViewGestureController::willBeginGesture): |
| (WebKit::ViewGestureController::didEndGesture): |
| (WebKit::ViewGestureController::PendingSwipeTracker::handleEvent): |
| (WebKit::ViewGestureController::PendingSwipeTracker::eventWasNotHandledByWebCore): |
| * UIProcess/ViewGestureController.h: |
| * UIProcess/ios/ViewGestureControllerIOS.mm: |
| (WebKit::ViewGestureController::removeSwipeSnapshot): |
| (WebKit::ViewGestureController::resetState): |
| (WebKit::ViewGestureController::reset): |
| * UIProcess/mac/ViewGestureControllerMac.mm: |
| (WebKit::ViewGestureController::removeSwipeSnapshot): |
| (WebKit::ViewGestureController::resetState): |
| (WebKit::ViewGestureController::reset): |
| |
| 2020-04-10 David Kilzer <ddkilzer@apple.com> |
| |
| Add WARN_UNUSED_RETURN to decode methods in WebCoreArgumentCoders |
| <https://webkit.org/b/210322> |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::decodeSharedBuffer): |
| (IPC::decodeTypesAndData): |
| (IPC::decodeImage): |
| (IPC::decodeOptionalImage): |
| (IPC::decodeNativeImage): |
| (IPC::decodeOptionalNativeImage): |
| * Shared/WebCoreArgumentCoders.h: |
| * Shared/mac/WebCoreArgumentCodersMac.mm: |
| (IPC::decodeNSError): |
| |
| 2020-04-10 Peng Liu <peng.liu6@apple.com> |
| |
| Add null pointer checkings in WebFullScreenManager |
| https://bugs.webkit.org/show_bug.cgi?id=210291 |
| |
| Reviewed by Daniel Bates. |
| |
| Add null pointer checkings for "element" and "m_element" in WebFullScreenManager. |
| |
| * WebProcess/FullScreen/WebFullScreenManager.cpp: |
| (WebKit::screenRectOfContents): |
| (WebKit::WebFullScreenManager::enterFullScreenForElement): |
| (WebKit::WebFullScreenManager::willEnterFullScreen): |
| (WebKit::WebFullScreenManager::didEnterFullScreen): |
| (WebKit::WebFullScreenManager::willExitFullScreen): |
| (WebKit::WebFullScreenManager::didExitFullScreen): |
| (WebKit::WebFullScreenManager::setAnimatingFullScreen): |
| (WebKit::WebFullScreenManager::requestExitFullScreen): |
| |
| == Rolled over to ChangeLog-2020-04-10 == |