| 2019-10-08 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed. Restabilize non-unified build. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| |
| 2019-10-08 Dean Jackson <dino@apple.com> |
| |
| Sort Internal and Experimental features by human readable name |
| https://bugs.webkit.org/show_bug.cgi?id=202667 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Sort the statically generated vectors of internal and |
| experimental features by their human readable name, rather than |
| the feature key, so that looking at them in the Settings app |
| doesn't make people who like alphabetical order angry. |
| |
| * Scripts/GeneratePreferences.rb: Add an extra sort call to the list generation. |
| |
| 2019-10-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [Clipboard API] Introduce bindings for the async Clipboard API |
| https://bugs.webkit.org/show_bug.cgi?id=202622 |
| <rdar://problem/56038126> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Adds a new experimental feature flag. See WebCore ChangeLog for more details. |
| |
| * Shared/WebPreferences.yaml: |
| |
| 2019-10-08 Alexander Mikhaylenko <alexm@gnome.org> |
| |
| [GTK] Navigation gesture improvements |
| https://bugs.webkit.org/show_bug.cgi?id=202645 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Measure velocity threshold in pixels per second rather than distance (range [0-1]) |
| per second. The value is the same as it was on touchpads, since a fixed distance is |
| used, but is now consistent on touchscreens, regardless of the webview width. |
| |
| Add a threshold for cancelling gesture when the page is more than halfway |
| through, so that it's symmetric with the first half. |
| |
| Align the moving page to pixel grid on hidpi devices correctly. Just |
| rounding the position doesn't work correctly, since the cairo context is |
| pre-scaled. Multiplying by scale factor, rounding and then dividing by |
| scale factor fixes this. |
| |
| * UIProcess/ViewGestureController.h: |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::ViewGestureController::SwipeProgressTracker::reset): |
| (WebKit::ViewGestureController::SwipeProgressTracker::handleEvent): |
| (WebKit::ViewGestureController::SwipeProgressTracker::shouldCancel): |
| (WebKit::ViewGestureController::draw): |
| |
| 2019-10-08 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Remove unused WebKitSoupRequestGeneric after r250597 |
| |
| * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h: |
| |
| 2019-10-08 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [WPE][GTK] Build fails with ENABLE_WEBDRIVER=OFF |
| https://bugs.webkit.org/show_bug.cgi?id=202658 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp: Add missing |
| ENABLE(WEBDRIVER_MOUSE_INTERACTIONS) and ENABLE(WEBDRIVER_KEYBOARD_INTERACTIONS) |
| preprocessor guards. |
| * UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp: Ditto. |
| |
| 2019-10-07 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Add IDL for requestIdleCallback |
| https://bugs.webkit.org/show_bug.cgi?id=202653 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * Shared/WebPreferences.yaml: |
| |
| 2019-10-07 Kate Cheney <katherine_cheney@apple.com> |
| |
| Domain relationships in the ITP Database should be inserted in a single query and ignore repeat insert attempts. (202604) |
| https://bugs.webkit.org/show_bug.cgi?id=202604 |
| <rdar://problem/55995831> |
| |
| Reviewed by Chris Dumez. |
| |
| This patch addresses two clean-ups for the ITP SQLite Database Store. |
| First, by using INSERT OR IGNORE as opposed to INSERT, it eliminates |
| the need to check if a relationship already exists in the database |
| before inserting it. Second, instead of looping through domain lists |
| and inserting each relationship as a separate query, this patch now |
| converts lists to a string which SQLite can use to insert multiple |
| rows into a database using a single query. |
| |
| Some Exists queries could not be deleted because they were being |
| used for testing. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::prepareStatements): |
| Removed old insert queries and replaced them with queries able to |
| insert string-lists of domains in a single query. Also reorganized |
| the queries by functionality to make them easier to find and edit. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::createUniqueIndices): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::createSchema): |
| In order to properly take advantage of the INSERT OR IGNORE |
| functionality, unique indices must be established so the SQLite table |
| is aware of what patterns to look for when ignoring a new insert. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ensureAndmakeDomainList): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationshipList): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): |
| Looping through the domain list is no longer needed with the new query |
| changes. Additionally, ensuring a domain is in the Observed Domains |
| table of the database must be done before utilizing any inserting of |
| relationships because the relationship queries rely on fetching the |
| topFrame domainID from the ObservedDomains table. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::logFrameNavigation): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::logCrossSiteLoadWithLinkDecoration): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setSubframeUnderTopFrameDomain): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setSubresourceUnderTopFrameDomain): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setSubresourceUniqueRedirectTo): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setSubresourceUniqueRedirectFrom): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setTopFrameUniqueRedirectTo): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setTopFrameUniqueRedirectFrom): |
| With the ensure check being done once in the ensureAndmakeDomainList |
| function, these functions no longer have to make that check before |
| inserting. |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::mergeStatisticForTesting): |
| (WebKit::WebResourceLoadStatisticsStore::isRelationshipOnlyInDatabaseOnce): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| Changes in WeResourceLoadStatisticsStore were for testing only. This |
| patch updated the merge statistic testing to also test this change by |
| having a topFrameDomain list with more than one domain. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::mergeStatisticForTesting): |
| (WebKit::NetworkProcess::isRelationshipOnlyInDatabaseOnce): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetStatisticsMergeStatistic): |
| (WKWebsiteDataStoreIsStatisticsOnlyInDatabaseOnce): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::mergeStatisticForTesting): |
| (WebKit::NetworkProcessProxy::isRelationshipOnlyInDatabaseOnce): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::mergeStatisticForTesting): |
| (WebKit::WebsiteDataStore::isRelationshipOnlyInDatabaseOnce): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| Added a new function for testing that there are no repeat inserts |
| into the database. Updated mergeStatistics to test the list-insert |
| functionality. |
| |
| 2019-10-07 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| [JSC] Change signature of HostFunction to (JSGlobalObject*, CallFrame*) |
| https://bugs.webkit.org/show_bug.cgi?id=202569 |
| |
| Reviewed by Saam Barati. |
| |
| * WebProcess/Plugins/Netscape/JSNPMethod.cpp: |
| (WebKit::callMethod): |
| * WebProcess/Plugins/Netscape/JSNPObject.cpp: |
| (WebKit::callNPJSObject): |
| (WebKit::constructWithConstructor): |
| * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h: |
| |
| 2019-10-07 Megan Gardner <megan_gardner@apple.com> |
| |
| Switch to WKShareSheet for WKPDFView |
| https://bugs.webkit.org/show_bug.cgi?id=202338 |
| |
| Reviewed by Tim Horton. |
| |
| Switch to WKShareSheet from the share sheet in UIWKSelectionAssistant, since this is the only instance |
| of UIWKSelectionAssistant any more. This will keep all our share sheet code together, and allow |
| us to eliminate this class that will be completely unused with this change. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKPDFView.h: |
| * UIProcess/ios/WKPDFView.mm: |
| (-[WKPDFView dealloc]): |
| (-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]): |
| (-[WKPDFView shareSheetDidDismiss:]): |
| |
| 2019-10-07 Per Arne Vollan <pvollan@apple.com> |
| |
| [macOS] Layering violation in AuxiliaryProcessProxy::didFinishLaunching |
| https://bugs.webkit.org/show_bug.cgi?id=201617 |
| |
| Reviewed by Brent Fulgham. |
| |
| The commit <https://trac.webkit.org/changeset/249649> introduced a layering violation in AuxiliaryProcessProxy::didFinishLaunching |
| where we inspect the pending message queue looking for a local file load message which needs the PID to create a sandbox extension |
| for the WebContent process. The layering violation can be fixed by creating a virtual method in AuxiliaryProcessProxy and override |
| the method in the WebProcessProxy to do the work needed to replace the message with a load request message containing a sandbox |
| extension created using the PID of the WebContent process. No new tests have been created, since this is covered by existing tests. |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::didFinishLaunching): |
| * UIProcess/AuxiliaryProcessProxy.h: |
| (WebKit::AuxiliaryProcessProxy::shouldSendPendingMessage): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::shouldSendPendingMessage): |
| * UIProcess/WebProcessProxy.h: |
| |
| 2019-10-07 Dean Jackson <dino@apple.com> |
| |
| Provide options for DTTZ to happen in more situations |
| https://bugs.webkit.org/show_bug.cgi?id=202634 |
| <rdar://problem/55732762> |
| |
| Reviewed by Antoine Quint. |
| |
| Add two options that can be enabled to trigger double tap zooming |
| in more places. |
| |
| Firstly, an option to keep listening for a double-tap-to-zoom if the |
| first tap found a click handler on the body or document element. The |
| tap will still be dispatched. This is probably the most common case |
| for disabling a DTTZ. |
| |
| Secondly, an option to always keep listening for a double-tap-to-zoom, |
| even if there was a clickable (non-root) element under the first tap. |
| |
| * Shared/WebPreferences.yaml: Add ZoomOnDoubleTapWhenRoot and AlwaysZoomOnDoubleTap. |
| * UIProcess/PageClient.h: The message from the WebProcess now tells the UIProcess if |
| the tapped element was a root-level (document or body). |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::handleSmartMagnificationInformationForPotentialTap): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _endPotentialTapAndEnableDoubleTapGesturesIfNecessary]): |
| (-[WKContentView _handleSmartMagnificationInformationForPotentialTap:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:nodeIsRootLevel:]): |
| Handle the two new options. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::handleSmartMagnificationInformationForPotentialTap): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::potentialTapAtPosition): Check if the tap was on a root-level element. |
| |
| 2019-10-07 Matt Mokary <mmokary@apple.com> |
| |
| foundStringMatchIndex in FindController::findString gets reset on page scroll |
| https://bugs.webkit.org/show_bug.cgi?id=201773 |
| <rdar://problem/55351892> |
| |
| Reviewed by Tim Horton. |
| |
| Decouple hiding of the find indicator from resetting match index, and only reset match index when there is not |
| an active match. |
| |
| * WebProcess/WebPage/FindController.cpp: |
| (WebKit::FindController::updateFindUIAfterPageScroll): |
| (WebKit::FindController::hideFindUI): |
| (WebKit::FindController::hideFindIndicator): |
| (WebKit::FindController::resetMatchIndex): |
| * WebProcess/WebPage/FindController.h: |
| * WebProcess/WebPage/ios/FindControllerIOS.mm: |
| (WebKit::FindController::hideFindIndicator): |
| (WebKit::FindController::resetMatchIndex): |
| |
| 2019-10-07 youenn fablet <youenn@apple.com> |
| |
| WebPageProxy::updatePlayingMediaDidChange should protect from a null m_userMediaPermissionRequestManager |
| https://bugs.webkit.org/show_bug.cgi?id=202628 |
| <rdar://problem/55935091> |
| |
| Reviewed by Eric Carlson. |
| |
| On process swap on navigation or process crash, m_userMediaPermissionRequestManager is made null. |
| At the same time, the media state is set back to not playing. |
| Future calls of updatePlayingMediaDidChange should not have any capture state change until getUserMedia/getDisplayMedia |
| is called, which would create m_userMediaPermissionRequestManager. |
| But this assumption is not always true given that the media state is computed as process-wide in MediaStreamTrack::captureState on iOS. |
| The above behavior is fixed as part of https://bugs.webkit.org/show_bug.cgi?id=202627. |
| Since the call to updatePlayingMediaDidChange is triggered straight from IPC, it should not be trusted and a null check should be added. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::updatePlayingMediaDidChange): |
| |
| 2019-10-04 Dean Jackson <dino@apple.com> |
| |
| Use a better name than allowFastClicksEverywhere |
| https://bugs.webkit.org/show_bug.cgi?id=202607 |
| <rdar://problem/55997133> |
| |
| Reviewed by Tim Horton. |
| |
| This preference name is quite confusing. Change it to |
| PreferFasterClickOverDoubleTap. |
| |
| * Shared/WebPreferences.yaml: |
| * Shared/WebPreferencesDefaultValues.h: |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::preferFasterClickOverDoubleTap const): |
| (WebKit::WebPageProxy::allowsFastClicksEverywhere const): Deleted. |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _handleSmartMagnificationInformationForPotentialTap:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): |
| |
| 2019-10-04 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Socket-based RWI should base64-encode backend commands on client, not server |
| https://bugs.webkit.org/show_bug.cgi?id=202605 |
| |
| Reviewed by Don Olmstead. |
| |
| * UIProcess/socket/RemoteInspectorClient.cpp: |
| (WebKit::RemoteInspectorClient::setBackendCommands): |
| |
| 2019-10-04 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Unreviewed, build fix after r250729 |
| |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm: |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h: |
| |
| 2019-10-04 Keith Rollin <krollin@apple.com> |
| |
| Fix determination of the top-level resource |
| https://bugs.webkit.org/show_bug.cgi?id=202491 |
| <rdar://problem/50780648> |
| |
| Reviewed by Youenn Fablet. |
| |
| When loading the resources associated with a page, the Networking |
| process needs to know the main resource for the main frame. It uses |
| this information to keep track of page loads and the resources that |
| are loaded in those pages. By keeping track of this information, |
| WebKit can track and report difficult (slow or incomplete) resource |
| loads and their impact on the overall page. |
| |
| The initial determination of the top resource only looked at whether |
| the resource was the "main" resource of a frame or not. However, this |
| determination was insufficient, and would confuse the tracking |
| mechanism when sub-frames also had main frames. Therefore, augment the |
| test by also looking to see if the hosting frame is the main frame. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::startTrackingResourceLoad): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::start): |
| |
| 2019-10-04 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed WinCairo build fix for r250717. |
| |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: |
| (WebKit::LayerTreeHost::invalidate): Deleted. |
| |
| 2019-10-04 Alex Christensen <achristensen@webkit.org> |
| |
| Stop sending list of display-isolated schemes to NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=202557 |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| (WebKit::NetworkProcess::registerURLSchemeAsDisplayIsolated const): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::registerURLSchemeAsDisplayIsolated): |
| |
| 2019-10-04 Alex Christensen <achristensen@webkit.org> |
| |
| Rename SchemeRegistry to LegacySchemeRegistry |
| https://bugs.webkit.org/show_bug.cgi?id=202586 |
| |
| Reviewed by Tim Horton. |
| |
| * NetworkProcess/NetworkLoadChecker.cpp: |
| (WebKit::NetworkLoadChecker::doesNotNeedCORSCheck const): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::registerURLSchemeAsSecure const): |
| (WebKit::NetworkProcess::registerURLSchemeAsBypassingContentSecurityPolicy const): |
| (WebKit::NetworkProcess::registerURLSchemeAsLocal const): |
| (WebKit::NetworkProcess::registerURLSchemeAsNoAccess const): |
| (WebKit::NetworkProcess::registerURLSchemeAsDisplayIsolated const): |
| (WebKit::NetworkProcess::registerURLSchemeAsCORSEnabled const): |
| (WebKit::NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest const): |
| * Shared/AuxiliaryProcess.cpp: |
| (WebKit::AuxiliaryProcess::registerURLSchemeServiceWorkersCanHandle const): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (+[WKWebView handlesURLScheme:]): |
| * UIProcess/API/glib/WebKitSecurityManager.cpp: |
| (registerSecurityPolicyForURIScheme): |
| (checkSecurityPolicyForURIScheme): |
| * WebProcess/Plugins/WebPluginInfoProvider.cpp: |
| (WebKit::WebPluginInfoProvider::webVisiblePluginInfo): |
| * WebProcess/Storage/WebServiceWorkerProvider.cpp: |
| (WebKit::WebServiceWorkerProvider::handleFetch): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::canHandleRequest): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::registerURLSchemeAsEmptyDocument): |
| (WebKit::WebProcess::registerURLSchemeAsSecure const): |
| (WebKit::WebProcess::registerURLSchemeAsBypassingContentSecurityPolicy const): |
| (WebKit::WebProcess::setDomainRelaxationForbiddenForURLScheme const): |
| (WebKit::WebProcess::registerURLSchemeAsLocal const): |
| (WebKit::WebProcess::registerURLSchemeAsNoAccess const): |
| (WebKit::WebProcess::registerURLSchemeAsDisplayIsolated const): |
| (WebKit::WebProcess::registerURLSchemeAsCORSEnabled const): |
| (WebKit::WebProcess::registerURLSchemeAsAlwaysRevalidated const): |
| (WebKit::WebProcess::registerURLSchemeAsCachePartitioned const): |
| (WebKit::WebProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest const): |
| * WebProcess/WebStorage/StorageAreaImpl.cpp: |
| |
| 2019-10-04 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Implement _WKWebAuthenticationPanel SPI |
| https://bugs.webkit.org/show_bug.cgi?id=202559 |
| <rdar://problem/55932094> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch implements _WKWebAuthenticationPanel SPI. Here is the structure: |
| 1) API::WebAuthenticationPanel is the APIObject of _WKWebAuthenticationPanel. It is owned by AuthenticatorManager. |
| The lifetime of _WKWebAuthenticationPanel on the other hand is managed by clients. This binding is the surface |
| where clients could interact with WebKit's WebAuthentication implementation. |
| 2) API::WebAuthenticationPanelClient is a base class representing _WKWebAuthenticationPanelDelegate. Its subclass |
| WebKit::WebAuthenticationPanelClient implements bridges to _WKWebAuthenticationPanelDelegate methods. It is owned by |
| API::WebAuthenticationPanel. A weak pointer of WebKit::WebAuthenticationPanelClient is kept in _WKWebAuthenticationPanel |
| to get the _WKWebAuthenticationPanelDelegate set by clients or nil otherwise. This binding is the surface where WebKit |
| interacts with clients. |
| 3) WebAuthenticationPanelFlags is the mirror of enums within _WKWebAuthenticationPanel. |
| |
| Implementation wise, this patch implements: |
| 1) -[WKUIDelegatePrivate webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:], this is bridged from |
| the regular UIDelegate route. Noted, WKFrameInfo is nil for now, a follow up on Bug 202563 will take care of it. This |
| will be called from AuthenticatorManager::runPanel() which gates the start of discovery on the callback. For clients |
| that don't implement the delegate, the callback will always be called with _WKWebAuthenticationPanelResultUnavailable |
| to allow WebKit run on non-UI mode. A specific C API hack is added to always return _WKWebAuthenticationPanelResultPresented |
| in WebKitTestRunner for layout tests. |
| 2) -[_WKWebAuthenticationPanelDelegate panel:updateWebAuthenticationPanel:] will be implemented in Bug 200932. |
| 3) -[_WKWebAuthenticationPanelDelegate panel:dismissWebAuthenticationPanelWithResult:], this is bridged from |
| API::WebAuthenticationPanel/API::WebAuthenticationPanelClient. This will be called whenever AuthenticatorManager::m_pendingCompletionHandler |
| is invoked. Depending on the respond, _WKWebAuthenticationResult will be returned accordingly. To facilitate that, |
| invokePendingCompletionHandler is crafted to bundle those two operations. |
| 4) -[_WKWebAuthenticationPanel cancel] will be implemented in Bug 191523. |
| |
| Besides the above, this patch also silents the NFC action sheet. |
| |
| * Platform/spi/Cocoa/NearFieldSPI.h: |
| * Shared/API/APIObject.h: |
| * Shared/Cocoa/APIObject.mm: |
| (API::Object::newObject): |
| * Sources.txt: |
| * SourcesCocoa.txt: |
| * UIProcess/API/APIUIClient.h: |
| (API::UIClient::runWebAuthenticationPanel): |
| * UIProcess/API/APIWebAuthenticationPanel.cpp: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm. |
| (API::WebAuthenticationPanel::create): |
| (API::WebAuthenticationPanel::WebAuthenticationPanel): |
| (API::WebAuthenticationPanel::setClient): |
| * UIProcess/API/APIWebAuthenticationPanel.h: Copied from Source/WebKit/UIProcess/WebAuthentication/WebAuthenticationRequestData.h. |
| * UIProcess/API/APIWebAuthenticationPanelClient.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h. |
| (API::WebAuthenticationPanelClient::dismissPanel const): |
| * UIProcess/API/C/WKPage.cpp: |
| (WKPageSetPageUIClient): |
| * UIProcess/API/C/WKPageUIClient.h: |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm: |
| (-[_WKWebAuthenticationPanel dealloc]): |
| (-[_WKWebAuthenticationPanel relyingPartyID]): |
| (-[_WKWebAuthenticationPanel delegate]): |
| (-[_WKWebAuthenticationPanel setDelegate:]): |
| (-[_WKWebAuthenticationPanel _apiObject]): |
| (-[_WKWebAuthenticationPanel _initWithRelayingPartyID:]): Deleted. |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h: |
| * UIProcess/Cocoa/UIDelegate.h: |
| * UIProcess/Cocoa/UIDelegate.mm: |
| (WebKit::UIDelegate::setDelegate): |
| (WebKit::webAuthenticationPanelResult): |
| (WebKit::UIDelegate::UIClient::runWebAuthenticationPanel): |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| (WebKit::WebCore::isFeatureEnabled): |
| (WebKit::WebCore::getRpId): |
| (WebKit::AuthenticatorManager::handleRequest): |
| (WebKit::AuthenticatorManager::respondReceived): |
| (WebKit::AuthenticatorManager::startDiscovery): |
| (WebKit::AuthenticatorManager::initTimeOutTimer): |
| (WebKit::AuthenticatorManager::timeOutTimerFired): |
| (WebKit::AuthenticatorManager::runPanel): |
| (WebKit::AuthenticatorManager::startRequest): |
| (WebKit::AuthenticatorManager::invokePendingCompletionHandler): |
| (WebKit::AuthenticatorManagerInternal::collectTransports): Deleted. |
| (WebKit::AuthenticatorManagerInternal::processGoogleLegacyAppIdSupportExtension): Deleted. |
| * UIProcess/WebAuthentication/AuthenticatorManager.h: |
| (WebKit::AuthenticatorManager::pendingCompletionHandler): Deleted. |
| * UIProcess/WebAuthentication/Cocoa/NfcConnection.mm: |
| (WebKit::NfcConnection::NfcConnection): |
| * UIProcess/WebAuthentication/Cocoa/NfcService.mm: |
| (WebKit::NfcService::platformStartDiscovery): |
| * UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.h: Copied from Source/WebKit/UIProcess/WebAuthentication/WebAuthenticationRequestData.h. |
| * UIProcess/WebAuthentication/Cocoa/WebAuthenticationPanelClient.mm: Copied from Source/WebKit/UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp. |
| (WebKit::WebAuthenticationPanelClient::WebAuthenticationPanelClient): |
| (WebKit::wkWebAuthenticationResult): |
| (WebKit::WebAuthenticationPanelClient::dismissPanel const): |
| * UIProcess/WebAuthentication/Mock/MockAuthenticatorManager.cpp: |
| (WebKit::MockAuthenticatorManager::respondReceivedInternal): |
| * UIProcess/WebAuthentication/WebAuthenticationPanelFlags.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h. |
| * UIProcess/WebAuthentication/WebAuthenticationRequestData.h: |
| * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp: |
| (WebKit::WebAuthenticatorCoordinatorProxy::makeCredential): |
| (WebKit::WebAuthenticatorCoordinatorProxy::getAssertion): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-10-04 Alex Christensen <achristensen@webkit.org> |
| |
| Move WKProcessPool._registerURLSchemeServiceWorkersCanHandle to _WKWebsiteDataStoreConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=202553 |
| |
| Reviewed by Youenn Fablet. |
| |
| It was only used for testing, and all the tests that use it still pass with the new SPI. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| (WebKit::NetworkProcess::addWebsiteDataStore): |
| (WebKit::NetworkProcess::swServerForSession): |
| (WebKit::NetworkProcess::addServiceWorkerSession): |
| * NetworkProcess/NetworkProcess.h: |
| * Shared/AuxiliaryProcess.cpp: |
| (WebKit::AuxiliaryProcess::registerURLSchemeServiceWorkersCanHandle const): Deleted. |
| * Shared/AuxiliaryProcess.h: |
| * Shared/AuxiliaryProcess.messages.in: |
| * Shared/WebsiteDataStoreParameters.cpp: |
| (WebKit::WebsiteDataStoreParameters::encode const): |
| (WebKit::WebsiteDataStoreParameters::decode): |
| * Shared/WebsiteDataStoreParameters.h: |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _registerURLSchemeServiceWorkersCanHandle:]): Deleted. |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration registerURLSchemeServiceWorkersCanHandleForTesting:]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::initializeNewWebProcess): |
| (WebKit::WebProcessPool::registerURLSchemeServiceWorkersCanHandle): Deleted. |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::serviceWorkerRegisteredSchemes const): |
| (WebKit::WebsiteDataStoreConfiguration::registerServiceWorkerScheme): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::initializeWebProcess): |
| |
| 2019-10-04 youenn fablet <youenn@apple.com> |
| |
| Allow to suspend RTCPeerConnection when not connected |
| https://bugs.webkit.org/show_bug.cgi?id=202403 |
| |
| Reviewed by Chris Dumez. |
| |
| Implement suspend/resume of sockets by doing the following: |
| - For UDP sockets, we simulate as if being sent data is queued when being suspended. |
| the webrtc backend will then stop sending packets until the queue is emptied. |
| At resume time, we do as if the queue is emptied and packets sent (even though packets are not sent). |
| For incoming traffic, we ignore it when being suspended. |
| - For TCP sockets, we close them at suspend time. We then notify at resume time that an error happeneded |
| for these sockets to the webrtc backend. We cannot simulate packet dropping like in the UDP case. |
| |
| To manage resume/suspend, each socket now has a isSuspended state and a socket group. |
| The socket group is per peer connection. |
| A peer connection will notify the factory that it is suspended/resumed. |
| The factory will iterate through all sockets and will suspend/resume each socket of the socket group. |
| |
| * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: |
| (WebKit::RTCSocketFactory::RTCSocketFactory): |
| (WebKit::RTCSocketFactory::CreateUdpSocket): |
| (WebKit::RTCSocketFactory::CreateServerTcpSocket): |
| (WebKit::RTCSocketFactory::CreateClientTcpSocket): |
| (WebKit::RTCSocketFactory::CreateAsyncResolver): |
| (WebKit::RTCSocketFactory::suspend): |
| (WebKit::RTCSocketFactory::resume): |
| (WebKit::LibWebRTCProvider::createSocketFactory): |
| * WebProcess/Network/webrtc/LibWebRTCProvider.h: |
| * WebProcess/Network/webrtc/LibWebRTCSocket.cpp: |
| (WebKit::LibWebRTCSocket::LibWebRTCSocket): |
| (WebKit::LibWebRTCSocket::~LibWebRTCSocket): |
| (WebKit::LibWebRTCSocket::signalReadPacket): |
| (WebKit::LibWebRTCSocket::signalSentPacket): |
| (WebKit::LibWebRTCSocket::SendTo): |
| (WebKit::LibWebRTCSocket::Close): |
| (WebKit::LibWebRTCSocket::SetOption): |
| (WebKit::LibWebRTCSocket::resume): |
| (WebKit::LibWebRTCSocket::suspend): |
| * WebProcess/Network/webrtc/LibWebRTCSocket.h: |
| * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: |
| (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: |
| |
| 2019-10-04 Alex Christensen <achristensen@webkit.org> |
| |
| Simplify sandbox enabling macros |
| https://bugs.webkit.org/show_bug.cgi?id=202536 |
| |
| Reviewed by Brent Fulgham. |
| |
| ENABLE_WEB_PROCESS_SANDBOX was always on for Cocoa platforms and only used in WebProcessCocoa.mm, so it did nothing. |
| ENABLE_MANUAL_SANDBOXING was on for sdk=macosx* which I made more explicit in the code by using PLATFORM(MAC) || PLATFORM(MAACCATALYST) |
| ENABLE_MANUAL_NETWORK_SANDBOXING was always off and hiding dead code we do not intend to use because iOS sandboxes are always on and never manual. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * NetworkProcess/ios/NetworkProcessIOS.mm: |
| (WebKit::NetworkProcess::initializeSandbox): |
| * Shared/ios/AuxiliaryProcessIOS.mm: |
| (WebKit::AuxiliaryProcess::initializeSandbox): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::initializeSandbox): |
| |
| 2019-10-04 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Update OptionsGTK.cmake and NEWS for 2.27.1 release |
| |
| * gtk/NEWS: Add release notes for 2.27.1. |
| |
| 2019-10-04 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Crash in WebChromeClient::createDisplayRefreshMonitor |
| https://bugs.webkit.org/show_bug.cgi?id=202551 |
| |
| Reviewed by Žan Doberšek. |
| |
| The crash happens when the drawing area is destroyed due to a page close. The layer tree host is invalidated |
| causing a layer flush that ends up trying to create a display refresh monitor, which requires the drawing |
| area. We need to null-check the drawing area in WebChromeClient::createDisplayRefreshMonitor() but we should |
| also ensure that layer flush is not performed after layer tree host is destroyed. |
| |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::createDisplayRefreshMonitor const): Null-check drawing area before using it. |
| * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp: |
| (WebKit::CompositingCoordinator::CompositingCoordinator): Receive a WebPage instead of a WebCore::Page and |
| create the root layer here. |
| (WebKit::CompositingCoordinator::~CompositingCoordinator): Do not purge backing stores again, invalidate should |
| always be called right before the object is destroyed. |
| (WebKit::CompositingCoordinator::flushPendingLayerChanges): Get WebCore::Page from WebPage. |
| (WebKit::CompositingCoordinator::timestamp const): Ditto. |
| (WebKit::CompositingCoordinator::syncDisplayState): Ditto. |
| (WebKit::CompositingCoordinator::notifyFlushRequired): Do not continue if m_rootLayer is nullptr. |
| (WebKit::CompositingCoordinator::deviceScaleFactor const): Get WebCore::Page from WebPage. |
| (WebKit::CompositingCoordinator::pageScaleFactor const): Ditto. |
| (WebKit::CompositingCoordinator::createGraphicsLayer): Call attachLayer() instead of duplicating the code. |
| (WebKit::CompositingCoordinator::setVisibleContentsRect): Get WebCore::Page from WebPage. |
| * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h: |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::discardPreviousLayerTreeHost): Do not call LayerTreeHost::invalidate() |
| that has been removed. |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: |
| (WebKit::LayerTreeHost::LayerTreeHost): Construct the coordinator after the sceneIntegration. |
| (WebKit::LayerTreeHost::~LayerTreeHost): Invalidate everything here now. We don't really need invalidate() |
| method since LayerTreeHost is not refcounted and we always called invalidate right before deleting the object. |
| (WebKit::LayerTreeHost::layerFlushTimerFired): This can't happen on invalid state anymore. |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: |
| |
| 2019-10-04 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] REGRESSION(r250673): connection to network process is broken after r250673 |
| https://bugs.webkit.org/show_bug.cgi?id=202575 |
| |
| Reviewed by Carlos Alberto Lopez Perez. |
| |
| The file descriptor is now closed when the IPC::Attachment is destroyed in NetworkProcessConnectionInfo |
| destructor. In case of unix domain sockets we need to transfer the ownership of the fd to |
| NetworkProcessConnection, but NetworkProcessConnectionInfo is ow keeping the ownership. |
| |
| * WebProcess/Network/NetworkProcessConnectionInfo.h: |
| (WebKit::NetworkProcessConnectionInfo::releaseIdentifier): Use IPC::Attachment::releaseFileDescriptor() in case |
| of unix domain sockets. |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::ensureNetworkProcessConnection): Use NetworkProcessConnectionInfo::releaseIdentifier() when |
| passing the identifier to NetworkProcessConnection. |
| |
| 2019-10-04 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix GTK distcheck |
| |
| * webkitglib-symbols.map: Remove symbols that are no longer in lib. |
| |
| 2019-10-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] WebAutomation: make setWindowRect synchronous |
| https://bugs.webkit.org/show_bug.cgi?id=202530 |
| |
| Reviewed by Carlos Alberto Lopez Perez. |
| |
| Move/resize window is asynchronous in GTK, but automation expects it to be synchronous so that get window rect |
| after setting it always returns the value set. Use a nested run loop to wait for the configure events after the |
| move/resize. |
| |
| * UIProcess/API/glib/WebKitUIClient.cpp: |
| (UIClient::windowConfigureEventCallback): |
| (UIClient::setWindowFrameTimerFired): |
| |
| 2019-10-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Address review comments after r250646. |
| |
| I forgot to include the documentation improvements suggested. |
| |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkit_web_context_class_init): |
| |
| 2019-10-03 Christopher Reid <chris.reid@sony.com> |
| |
| [WinCairo] Remote inspector client target list is racy |
| https://bugs.webkit.org/show_bug.cgi?id=202169 |
| |
| Reviewed by Ross Kirsling. |
| |
| Original patch by Basuke Suzuki. |
| |
| Use LoaderClient to defer javascript target update calls to until after the page finished load. |
| |
| * UIProcess/socket/RemoteInspectorProtocolHandler.cpp: |
| * UIProcess/socket/RemoteInspectorProtocolHandler.h: |
| |
| 2019-10-03 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Socket RWI client should acquire backend commands from server |
| https://bugs.webkit.org/show_bug.cgi?id=202421 |
| |
| Reviewed by Devin Rousso. |
| |
| * UIProcess/socket/RemoteInspectorClient.cpp: |
| (WebKit::RemoteInspectorClient::dispatchMap): |
| (WebKit::RemoteInspectorClient::setBackendCommands): |
| * UIProcess/socket/RemoteInspectorClient.h: |
| Receive "BackendCommands" message from server (which is already base64-encoded) and hand it over to RWIProxy. |
| |
| * UIProcess/win/WebProcessPoolWin.cpp: |
| (WebKit::backendCommandsPath): |
| (WebKit::initializeRemoteInspectorServer): |
| On Windows, initialize server with the path to InspectorBackendCommands.js from the CFBundle. |
| |
| 2019-10-03 Alex Christensen <achristensen@webkit.org> |
| |
| Replace _WKProcessPoolConfiguration.suppressesConnectionTerminationOnSystemChange with SPI on _WKWebsiteDataStoreConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=202544 |
| |
| Reviewed by Tim Horton. |
| |
| The _WKProcessPoolConfiguration SPI was originally introduced in rdar://problem/40650244 |
| Keep both working during the transition period, but we need it to not be on the process pool. |
| |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration suppressesConnectionTerminationOnSystemChange]): |
| (-[_WKWebsiteDataStoreConfiguration setSuppressesConnectionTerminationOnSystemChange:]): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::suppressesConnectionTerminationOnSystemChange const): |
| (WebKit::WebsiteDataStoreConfiguration::setSuppressesConnectionTerminationOnSystemChange): |
| |
| 2019-10-03 Per Arne Vollan <pvollan@apple.com> |
| |
| REGRESSION(249649): Unable to open local files in MiniBrowser on macOS |
| https://bugs.webkit.org/show_bug.cgi?id=201798 |
| |
| Reviewed by Brent Fulgham. |
| |
| The commit <https://trac.webkit.org/changeset/249649> introduced a MiniBrowser regression on macOS where MiniBrowser |
| is not able to open local files. The change set r249649 fixed a problem where the WebContent process PID was not ready |
| to be used when creating a sandbox extension. This happened in the cases where the WebContent process had not finished |
| launching when the load started. The WebContent process is also creating sandbox extensions for the Networking process |
| for the files being loaded, and also needs to be passing the audit token of the Networking process when creating these. |
| This patch implements getting the audit token for the Networking process when the WebProcess is sending a message to |
| the UI process to establish the Networking process connection. The audit token is stored in the NetworkProcessConnection |
| object, and passed to the NetworkLoadParameters object when the load is started. Finally, when encoding the Network |
| resources load parameters, the audit token is used to create an extension for the Networking process. |
| |
| API test: WKWebView.LoadFileWithLoadRequest |
| |
| * NetworkProcess/NetworkLoadParameters.h: |
| * NetworkProcess/NetworkResourceLoadParameters.cpp: |
| (WebKit::NetworkResourceLoadParameters::encode const): |
| * Platform/IPC/ArgumentCoders.cpp: |
| (IPC::ArgumentCoder<audit_token_t>::encode): |
| (IPC::ArgumentCoder<audit_token_t>::decode): |
| * Platform/IPC/ArgumentCoders.h: |
| * Shared/Cocoa/SandboxExtensionCocoa.mm: |
| (WebKit::SandboxExtensionImpl::create): |
| (WebKit::SandboxExtensionImpl::sandboxExtensionForType): |
| (WebKit::SandboxExtensionImpl::SandboxExtensionImpl): |
| (WebKit::SandboxExtension::createHandleForMachLookupByPid): |
| (WebKit::SandboxExtension::createHandleForReadByPid): |
| (WebKit::SandboxExtension::createHandleForReadByAuditToken): |
| * Shared/SandboxExtension.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::openNetworkProcessConnection): |
| * UIProcess/WebProcessProxy.messages.in: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/Network/NetworkProcessConnection.h: |
| (WebKit::NetworkProcessConnection::setNetworkProcessAuditToken): |
| (WebKit::NetworkProcessConnection::networkProcessAuditToken const): |
| * WebProcess/Network/NetworkProcessConnectionInfo.h: Added. |
| (WebKit::NetworkProcessConnectionInfo::identifier): |
| (WebKit::NetworkProcessConnectionInfo::encode const): |
| (WebKit::NetworkProcessConnectionInfo::decode): |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| (WebKit::WebLoaderStrategy::startPingLoad): |
| (WebKit::WebLoaderStrategy::preconnectTo): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::getNetworkProcessConnection): |
| (WebKit::WebProcess::ensureNetworkProcessConnection): |
| |
| 2019-10-03 Konstantin Tokarev <annulen@yandex.ru> |
| |
| CMake-built WebKit.framework should launch XPC services successfully |
| https://bugs.webkit.org/show_bug.cgi?id=202490 |
| |
| Reviewed by Carlos Alberto Lopez Perez. |
| |
| target_link_options() requires CMake 3.10, however we can avoid |
| raising required CMake version by moving it to PlatformMac.cmake, |
| also avoid introduction of new CMake variable. |
| |
| * CMakeLists.txt: |
| * PlatformMac.cmake: |
| |
| 2019-10-03 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Support googleLegacyAppidSupport extension |
| https://bugs.webkit.org/show_bug.cgi?id=202427 |
| <rdar://problem/55887473> |
| |
| Reviewed by Brent Fulgham. |
| |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| (WebKit::AuthenticatorManagerInternal::collectTransports): |
| (WebKit::AuthenticatorManagerInternal::processGoogleLegacyAppIdSupportExtension): |
| (WebKit::AuthenticatorManager::handleRequest): |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp: |
| (WebKit::CtapAuthenticator::makeCredential): |
| (WebKit::CtapAuthenticator::processGoogleLegacyAppIdSupportExtension): |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.h: |
| * UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp: |
| (WebKit::U2fAuthenticator::continueRegisterCommandAfterResponseReceived): |
| |
| 2019-10-03 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Implement dummy _WKWebAuthenticationPanel SPI |
| https://bugs.webkit.org/show_bug.cgi?id=202507 |
| <rdar://problem/55918793> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch implements dummy _WKWebAuthenticationPanel SPI to unblock Safari. |
| |
| Here are the illustrations for each SPI: |
| 1) -[WKUIDelegatePrivate webView:runWebAuthenticationPanel:initiatedByFrame:completionHandler:] is used at the beginning of |
| any WebAuthn ceremonies. A WKFrameInfo is provided for more info of the initiating frame so clients could decide either show |
| the RP ID or the origin of the frame which may or may not be the RP ID. A callback of _WKWebAuthenticationPanelResult is |
| provided such that clients could inform WebKit to continue the ceremony or not. Case like rate limiting of a modular dialog |
| could result in _WKWebAuthenticationPanelResultDidNotPresent. Then WebKit will abort the operation. |
| _WKWebAuthenticationPanelResultUnavailable tells WebKit the client has no UI implemented and therefore WebKit will operate |
| in a non UI mode which basically will only enable HID authenticators, and is the current behavior of macOS Safari. |
| 2) -[_WKWebAuthenticationPanelDelegate panel:updateWebAuthenticationPanel:] is primarily to instruct users to do some |
| actionable thing to recover from some error state. However, it could be used for pure info as well. For |
| _WKWebAuthenticationPanelInfoMultipleNFCTagPresents, users can be instructed to only hold one NFC tag to the scanner. For |
| _WKWebAuthenticationPanelInfoNoCredentialsFound, users can potentially switch to another security key that could hit a match. |
| 3) -[_WKWebAuthenticationPanelDelegate panel:dismissWebAuthenticationPanelWithResult:] is to dismiss UI. |
| _WKWebAuthenticationResult is provided such that client could show different animations as a hint to the user. The reasons for |
| failure could either be timeout or InvalidStateError which will be reported to the page as well. InvalidStateError signals a |
| credential matching an entry of the exclude list (excludeCredentials) is found on the authenticator. |
| 4) -[_WKWebAuthenticationPanel cancel] is the way clients tell WebKit a user cancel. |
| |
| * SourcesCocoa.txt: |
| * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanel.h: Added. |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm: Added. |
| (-[_WKWebAuthenticationPanel _initWithRelayingPartyID:]): |
| (-[_WKWebAuthenticationPanel relyingPartyID]): |
| (-[_WKWebAuthenticationPanel cancel]): |
| * UIProcess/API/Cocoa/_WKWebAuthenticationPanelInternal.h: Added. |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-10-03 Zan Dobersek <zdobersek@igalia.com> |
| |
| [GTK][WPE] Enable async scrolling |
| https://bugs.webkit.org/show_bug.cgi?id=202449 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| For WPE, explicitly enable the threaded scrolling preference on the |
| WebPreferences object. For GTK, the same preference is enabled in |
| parallel with the forced-compositing preference, as the async scrolling |
| feature depends on always-on AC mode. |
| |
| To help with quick evaluation of potential issues around async scrolling |
| the feature can still be disabled via the WEBKIT_DISABLE_ASYNC_SCROLLING |
| environment variable, though this only works in DEVELOPER_MODE builds. |
| |
| * Shared/WebPreferencesDefaultValues.h: Default-enable async frame and |
| overflow scrolling on Nicosia-using ports. |
| * UIProcess/API/glib/WebKitSettings.cpp: |
| (webkit_settings_set_hardware_acceleration_policy): |
| * UIProcess/API/wpe/WPEView.cpp: |
| (WKWPE::m_backend): |
| * UIProcess/gtk/WebPreferencesGtk.cpp: |
| (WebKit::WebPreferences::platformInitializeStore): |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::DrawingAreaCoordinatedGraphics): |
| (WebKit::DrawingAreaCoordinatedGraphics::updatePreferences): |
| (WebKit::DrawingAreaCoordinatedGraphics::supportsAsyncScrolling): |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h: |
| |
| 2019-10-03 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Nicosia] Enable runtime checks and triggers for async non-main-frame scrolling |
| https://bugs.webkit.org/show_bug.cgi?id=202509 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| Allow the non-main-frame compositing trigger for the Nicosia-using ports |
| as well. This will enable non-main-frame compositing if the related |
| setting is also enabled. |
| |
| 2019-10-03 Alexander Mikhaylenko <alexm@gnome.org> |
| |
| [GTK] Don't hardcode swipe navigation gesture style |
| https://bugs.webkit.org/show_bug.cgi?id=202447 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Use GTK foreign drawing to draw swipe gesture dimming and shadow instead of |
| hardcoded opacity and gradient values. |
| |
| Have separate elements for dimming and shadow. Additionally, add border |
| and outline. Dimming layer opacity always matches progress, shadow opacity |
| is 1 except when the page is almost completely retracted. Border and outline |
| opacity is always 1. Outline is drawn above the top page. For determining |
| shadow, border and outline width, 'min-width' property is used. |
| |
| Each element also has .right or .left style class depending on text direction. |
| |
| Creating patterns is relatively expensive, so do it once a gesture |
| starts and clear them once it ends. Style changes are currently not |
| handled, since it's unlikely anything would change while the gesture |
| is done. Dimming layer is created with the same width as webview and is |
| clipped when drawing. |
| |
| Translate existing dimming and shadow into css as is, add subtle border and |
| outline. Since it's controlled via css, downstreams can override the style. |
| |
| Set WebKitWebView css name to 'webkitwebview', and only apply styles for |
| elements directly preceded by it, otherwise the selectors are too generic. |
| |
| * PlatformGTK.cmake: Add gtk.css to gresource bundle. |
| * Resources/gtk/gtk-theme.css: Added. |
| (webkitwebview > dimming): |
| (webkitwebview > shadow): |
| (webkitwebview > shadow.right): |
| (webkitwebview > shadow.left): |
| (webkitwebview > border): |
| (webkitwebview > outline): |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkit_web_view_base_class_init): Set css name to 'webkitwebview'. |
| * UIProcess/ViewGestureController.h: |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::ViewGestureController::createStyleContext): |
| (WebKit::createElementPattern): |
| (WebKit::elementWidth): |
| (WebKit::ViewGestureController::beginSwipeGesture): Create helper patterns. |
| (WebKit::ViewGestureController::draw): Rework drawing to use the patterns. |
| (WebKit::ViewGestureController::removeSwipeSnapshot): Clear the patterns. |
| |
| 2019-10-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Make PSON optional |
| https://bugs.webkit.org/show_bug.cgi?id=200967 |
| |
| Reviewed by Michael Catanzaro. |
| |
| It's not possible to enable PSON by default and keep backwards compatibility, applications might need to use new |
| API to monitor the page ID changes in the Web view. So, this patch adds a construct only property to |
| WebKitWebContext to enable PSON. |
| |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextGetProperty): |
| (webkitWebContextSetProperty): |
| (webkitWebContextConstructed): |
| (webkit_web_context_class_init): |
| |
| 2019-10-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] Add WebKitWebView:page-id property |
| https://bugs.webkit.org/show_bug.cgi?id=201642 |
| |
| Reviewed by Michael Catanzaro. |
| |
| The page ID of a WebKitWebView can now change, so we need a way to get notified when it changes. |
| |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkitWebViewGetProperty): Add getter for page-id. |
| (webkit_web_view_class_init): Add page-id property |
| (webkitWebViewDidChangePageID): Emit notify::page-id. |
| * UIProcess/API/glib/WebKitWebViewPrivate.h: |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::didChangeWebPageID const): Call webkitWebViewDidChangePageID(). |
| * UIProcess/API/gtk/PageClientImpl.h: |
| * UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: |
| * UIProcess/API/wpe/APIViewClient.h: |
| (API::ViewClient::didChangePageID): Added virtual method. |
| * UIProcess/API/wpe/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::didChangeWebPageID const): Call WKWPE::View::didChangePageID(). |
| * UIProcess/API/wpe/PageClientImpl.h: |
| * UIProcess/API/wpe/WPEView.cpp: |
| (WKWPE::View::didChangePageID): Call API::ViewClient::didChangePageID(). |
| * UIProcess/API/wpe/WPEView.h: |
| * UIProcess/PageClient.h: |
| (WebKit::PageClient::didChangeWebPageID const): Added virtual method. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::swapToWebProcess): Call PageClient::didChangeWebPageID(). |
| |
| 2019-10-02 Andy Estes <aestes@apple.com> |
| |
| [iOS] When hit testing for a context menu interaction, do not consider whether the element is contenteditable |
| https://bugs.webkit.org/show_bug.cgi?id=202498 |
| <rdar://problem/54723131> |
| |
| Reviewed by Tim Horton. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::startInteractionWithElementAtPosition): Changed to call |
| WebCore::Frame::nodeRespondingToInteraction. |
| |
| 2019-10-02 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| REGRESSION (r245672): <select> dropdown with text-rendering: optimizeLegibility freezes Safari |
| https://bugs.webkit.org/show_bug.cgi?id=202198 |
| |
| Reviewed by Tim Horton. |
| |
| NSFont has a bug where passing "auto" to kCTFontOpticalSizeAttribute |
| causes an exception to be thrown. We don't catch the exception, so we |
| pop up back to the runloop, which confuses the UI process. |
| |
| The solution is twofold: 1) Workaround the bug by passing the font size |
| to kCTFontOpticalSizeAttribute instead, and 2) catch any exceptions that |
| this part of the code might throw. |
| |
| * UIProcess/mac/WebPopupMenuProxyMac.mm: |
| (WebKit::WebPopupMenuProxyMac::showPopupMenu): |
| |
| 2019-10-02 Alex Christensen <achristensen@webkit.org> |
| |
| [CMake] Don't link WebKit.framework with SecItemShim |
| https://bugs.webkit.org/show_bug.cgi?id=202490 |
| |
| * PlatformMac.cmake: |
| Otherwise everything that uses the Security framework crashes immediately. |
| We only need it in the NetworkProcess. |
| |
| 2019-10-02 Alex Christensen <achristensen@webkit.org> |
| |
| CMake-built WebKit.framework should launch XPC services successfully |
| https://bugs.webkit.org/show_bug.cgi?id=202490 |
| |
| Rubber-stamped by Tim Horton. |
| |
| * CMakeLists.txt: |
| * PlatformMac.cmake: |
| |
| 2019-10-02 Kate Cheney <katherine_cheney@apple.com> |
| |
| Updated resource load statistics are never merged into the SQLite Database backend (202372). |
| https://bugs.webkit.org/show_bug.cgi?id=202372 |
| <rdar://problem/55854542> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch has a lot of changes to the test infrastructure to be able |
| to test the mergeStatistics function. Merging functionality mimics |
| that of the ResourceLoadStatisticsMemoryStore and the merge() function in |
| ResourceLoadStatistics.cpp. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): |
| Added new SQLite queries that are needed to merge new statistics. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::prepareStatements): |
| Added new prepare statements for new SQLite queries. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::insertObservedDomain): |
| Updated to use domainID() instead of confirmDomainDoesNotExist which |
| was deleted. Changed the insert bind parameters |
| to utilize new enum of Observed Domain table indices which will help |
| reduce errors in the future if the database schema changes. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::relationshipExists const): |
| Changed {public} to {private} in logging statement to avoid leaking |
| sensitive information when logging the query error. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::confirmDomainDoesNotExist const): Deleted. |
| This function essentially does the exact same thing as domainID and |
| we can reduce code duplication by deleting it and transitioning all |
| other functions to use domainID instead. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::domainID const): |
| Changed {public} to {private} in logging statement to avoid leaking |
| sensitive information when logging the query error. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): |
| In order to reuse this code for the merge statistics function, I added |
| a check before each insert call to ensure the relationship does not |
| already exist in the database. This was not needed before because it |
| was only called on an empty database. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::merge): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::mergeStatistic): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::mergeStatistics): |
| Merges new statistic. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::incrementRecordsDeletedCountForDomains): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::recursivelyFindNonPrevalentDomainsThatRedirectedToThisDomain): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::markAsPrevalentIfHasRedirectedToPrevalent): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::grandfatherDataForDomains): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ensurePrevalentResourcesForDebugMode): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setUserInteraction): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clearUserInteraction): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setDomainsAsPrevalent): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::predicateValueForDomain const): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clearPrevalentResource): |
| Changed {public} to {private} in logging statement to avoid leaking |
| sensitive information when logging the query error. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setGrandfathered): |
| Fix a bug uncovered by the new test cases. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ensureResourceStatisticsForRegistrableDomain): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clearDatabaseContents): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::cookieTreatmentForOrigin const): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clearExpiredUserInteractions): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clearGrandfathering): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::pruneStatisticsIfNeeded): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::updateLastSeen): |
| Changed {public} to {private} in logging statement to avoid leaking |
| sensitive information when logging the query error. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::updateDataRecordsRemoved): |
| A new function that utilizes a query needed for the merging of two |
| statistics. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::confirmDomainDoesNotExist const): Deleted. |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::mergeStatistics): |
| (WebKit::ResourceLoadStatisticsMemoryStore::wasAccessedAsFirstPartyDueToUserInteraction const): Deleted. |
| Removed the check for updating times accessed due to first party |
| interaction, which is data no longer needed in updated ITP. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| Added the mergeStatistics function (previously only in the memory |
| store) to the parent class now that it is used by both stores. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated): |
| This function now calls mergeStatistics on the database store if |
| enabled. |
| |
| (WebKit::WebResourceLoadStatisticsStore::mergeStatisticForTesting): |
| This function builds a vector from the sample data to test the |
| mergeStatistics() function of the database store. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::mergeStatisticForTesting): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetStatisticsMergeStatistic): |
| Fixed bug where isGrandfathered function in WKWebsiteDataStoreRef |
| was calling hasHadUserInteraction by mistake. |
| |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::mergeStatisticForTesting): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| This code is for testing the mergeStatistics() function. |
| |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::isGrandfathered): |
| (WebKit::WebsiteDataStore::mergeStatisticForTesting): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| Added this function which contacts the networkProcess to retrieve the |
| grandfathered value for a domain. This was not included before because |
| of a bug in WKWebsiteDataStoreRef. |
| |
| 2019-10-02 Dean Jackson <dino@apple.com> |
| |
| Provide originating website URL to AR QuickLook |
| https://bugs.webkit.org/show_bug.cgi?id=202451 |
| |
| Reviewed by Antoine Quint. |
| |
| Declare the setAdditionalParameters method and |
| call it with the originating page URL if available. |
| |
| * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: |
| |
| 2019-10-02 Keith Rollin <krollin@apple.com> |
| |
| Properly mark canceled resources in NetworkActivityTracker |
| https://bugs.webkit.org/show_bug.cgi?id=202440 |
| <rdar://problem/55843651> |
| |
| Reviewed by Brent Fulgham. |
| |
| The nw_activity facility tracking resource loads did not originally |
| have support for reporting resources that were canceled. It now has |
| that support (since late MacOS 14-aligned SDKs), so add support for it |
| in NetworkActivityTracker and use it in places where we were |
| previously reporting the status of canceled resources as "None". |
| |
| * NetworkProcess/NetworkActivityTracker.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::stopAllNetworkActivityTracking): |
| (WebKit::NetworkConnectionToWebProcess::stopAllNetworkActivityTrackingForPage): |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::cleanup): |
| * NetworkProcess/cocoa/NetworkActivityTrackerCocoa.mm: |
| (WebKit::NetworkActivityTracker::complete): |
| |
| 2019-10-02 Zan Dobersek <zdobersek@igalia.com> |
| |
| Unreviewed build fix for non-Mac ports after r250600. |
| |
| * UIProcess/WebProcessPool.cpp: |
| Make the CoreGraphicsSPI.h header include exclusive to the Mac port. |
| |
| 2019-10-02 Antoine Quint <graouts@apple.com> |
| |
| Unreviewed build fix for macOS, broken by r250595. |
| |
| * UIProcess/WebProcessPool.cpp: |
| |
| 2019-10-02 youenn fablet <youenn@apple.com> |
| |
| Use strongly typed identifiers for webrtc sockets |
| https://bugs.webkit.org/show_bug.cgi?id=202400 |
| |
| Reviewed by Chris Dumez. |
| |
| Refactoring to use LibWebRTCSocketIdentifier instead of uint64_t. |
| |
| * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp: |
| (WebKit::LibWebRTCSocketClient::LibWebRTCSocketClient): |
| * NetworkProcess/webrtc/LibWebRTCSocketClient.h: |
| * NetworkProcess/webrtc/NetworkRTCProvider.cpp: |
| (WebKit::NetworkRTCProvider::createSocket): |
| (WebKit::NetworkRTCProvider::createUDPSocket): |
| (WebKit::NetworkRTCProvider::createServerTCPSocket): |
| (WebKit::NetworkRTCProvider::createClientTCPSocket): |
| (WebKit::NetworkRTCProvider::wrapNewTCPConnection): |
| (WebKit::NetworkRTCProvider::addSocket): |
| (WebKit::NetworkRTCProvider::takeSocket): |
| (WebKit::NetworkRTCProvider::newConnection): |
| (WebKit::NetworkRTCProvider::didReceiveNetworkRTCSocketMessage): |
| (WebKit::NetworkRTCProvider::closeListeningSockets): |
| (WebKit::NetworkRTCProvider::callSocket): |
| * NetworkProcess/webrtc/NetworkRTCProvider.h: |
| * NetworkProcess/webrtc/NetworkRTCProvider.messages.in: |
| * NetworkProcess/webrtc/NetworkRTCSocket.cpp: |
| (WebKit::NetworkRTCSocket::NetworkRTCSocket): |
| * NetworkProcess/webrtc/NetworkRTCSocket.h: |
| * Scripts/webkit/messages.py: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::didReceiveMessage): |
| * WebProcess/Network/webrtc/LibWebRTCNetwork.h: |
| (WebKit::LibWebRTCNetwork::socket): |
| * WebProcess/Network/webrtc/LibWebRTCSocket.cpp: |
| (WebKit::LibWebRTCSocket::LibWebRTCSocket): |
| * WebProcess/Network/webrtc/LibWebRTCSocket.h: |
| * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: |
| (WebKit::LibWebRTCSocketFactory::createServerTcpSocket): |
| (WebKit::LibWebRTCSocketFactory::createUdpSocket): |
| (WebKit::LibWebRTCSocketFactory::createClientTcpSocket): |
| (WebKit::LibWebRTCSocketFactory::createNewConnectionSocket): |
| * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h: |
| (WebKit::LibWebRTCSocketFactory::socket): |
| (WebKit::LibWebRTCSocketFactory::resolver): |
| (WebKit::LibWebRTCSocketFactory::takeResolver): |
| (WebKit::LibWebRTCSocketFactory::disableNonLocalhostConnections): |
| * WebProcess/Network/webrtc/WebRTCSocket.cpp: |
| (WebKit::WebRTCSocket::signalOnNetworkThread): |
| (WebKit::WebRTCSocket::WebRTCSocket): |
| (WebKit::WebRTCSocket::signalSentPacket): |
| (WebKit::WebRTCSocket::signalConnect): |
| (WebKit::WebRTCSocket::signalClose): |
| (WebKit::WebRTCSocket::signalNewConnection): |
| * WebProcess/Network/webrtc/WebRTCSocket.h: |
| * WebProcess/Network/webrtc/WebRTCSocket.messages.in: |
| |
| 2019-10-02 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] Stop using legacy custom protocol implementation |
| https://bugs.webkit.org/show_bug.cgi?id=202407 |
| |
| Reviewed by Žan Doberšek. |
| |
| Use the new approach, which is simpler and doesn't require to go to the network process to load custom |
| protocols. |
| |
| * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp: Removed. |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::m_messagePortChannelRegistry): |
| * NetworkProcess/soup/WebKitSoupRequestInputStream.cpp: Removed. |
| * NetworkProcess/soup/WebKitSoupRequestInputStream.h: Removed. |
| * PlatformGTK.cmake: |
| * PlatformWPE.cmake: |
| * SourcesGTK.txt: |
| * SourcesWPE.txt: |
| * UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp: Removed. |
| * UIProcess/API/glib/WebKitCustomProtocolManagerClient.h: Removed. |
| * UIProcess/API/glib/WebKitURISchemeRequest.cpp: |
| (webkitURISchemeRequestCreate): |
| (webkit_uri_scheme_request_get_scheme): |
| (webkit_uri_scheme_request_get_uri): |
| (webkit_uri_scheme_request_get_path): |
| (webkit_uri_scheme_request_get_web_view): |
| (webkitURISchemeRequestReadCallback): |
| (webkit_uri_scheme_request_finish_error): |
| * UIProcess/API/glib/WebKitURISchemeRequestPrivate.h: |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextConstructed): |
| (webkitWebContextDispose): |
| (webkit_web_context_register_uri_scheme): |
| (webkitWebContextCreatePageForWebView): |
| * UIProcess/API/glib/WebKitWebContextPrivate.h: |
| * UIProcess/WebURLSchemeTask.h: |
| (WebKit::WebURLSchemeTask::request const): |
| * UIProcess/soup/WebProcessPoolSoup.cpp: |
| |
| 2019-10-02 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Nicosia] Enable async scrolling at build-time for Nicosia-using ports |
| https://bugs.webkit.org/show_bug.cgi?id=202397 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * Shared/WebEvent.h: |
| Enable WebWheelEvent phasing for WPE, as required by the |
| ASYNC_SCROLLING code. |
| |
| 2019-10-01 Tim Horton <timothy_horton@apple.com> |
| |
| Clean up some includes to make the build a bit faster |
| https://bugs.webkit.org/show_bug.cgi?id=202444 |
| |
| Reviewed by Geoff Garen. |
| |
| * UIProcess/API/Cocoa/_WKThumbnailView.mm: |
| |
| 2019-10-01 Alex Christensen <achristensen@webkit.org> |
| |
| Progress towards a functioning CMake build on Mac |
| https://bugs.webkit.org/show_bug.cgi?id=202443 |
| |
| Rubber-stamped by Tim Horton. |
| |
| * CMakeLists.txt: |
| * PlatformMac.cmake: |
| |
| 2019-10-01 John Wilander <wilander@apple.com> |
| |
| Storage Access API: document.hasStorageAccess() should return true when the cookie policy allows access |
| https://bugs.webkit.org/show_bug.cgi?id=202435 |
| <rdar://problem/55718526> |
| |
| Reviewed by Brent Fulgham. |
| |
| WebKit's Storage Access API implementation has so far only looked at whether ITP is |
| blocking cookie access or not. However, the default cookie policy is still in |
| effect underneath ITP. document.hasStorageAccess() should return true if the |
| third-party: |
| a) is not classified by ITP, and |
| b) has cookies which implies it can use cookies as third-party according to the |
| default cookie policy. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::hasStorageAccess): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::hasCookies): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): |
| |
| 2019-10-01 Antti Koivisto <antti@apple.com> |
| |
| [CSS Shadow Parts] Parse 'part' attribute |
| https://bugs.webkit.org/show_bug.cgi?id=202409 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * Shared/WebPreferences.yaml: |
| |
| Add experimental feature, default to disabled for now. |
| |
| 2019-10-01 Alex Christensen <achristensen@webkit.org> |
| |
| Progress towards successful CMake build on Mac |
| https://bugs.webkit.org/show_bug.cgi?id=202426 |
| |
| Rubber-stamped by Tim Horton. |
| |
| * Platform/cocoa/PaymentAuthorizationPresenter.h: |
| * Platform/cocoa/PaymentAuthorizationPresenter.mm: |
| * Platform/cocoa/PaymentAuthorizationViewController.h: |
| * Platform/cocoa/PaymentAuthorizationViewController.mm: |
| * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: |
| * PlatformMac.cmake: |
| * Shared/SandboxExtension.h: |
| (WebKit::SandboxExtension::createHandleForReadByPid): |
| * SourcesCocoa.txt: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _hasRegisteredServiceWorker]): |
| * UIProcess/API/mac/WKView.mm: |
| * UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.mm: |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: |
| * UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm: |
| * UIProcess/Cocoa/WKShareSheet.mm: |
| (-[WKShareSheet delegate]): |
| (-[WKShareSheet setDelegate:]): |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| * UIProcess/Cocoa/WebViewImpl.h: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: |
| * WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.h: |
| * WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.cpp: |
| |
| 2019-10-01 Tim Horton <timothy_horton@apple.com> |
| |
| Clean up some includes to make the build a bit faster |
| https://bugs.webkit.org/show_bug.cgi?id=202417 |
| |
| Reviewed by Jer Noble. |
| |
| * WebProcess/Plugins/Netscape/NetscapePlugin.h: |
| * WebProcess/Plugins/Plugin.h: |
| Fix the build. |
| |
| 2019-10-01 Alex Christensen <achristensen@webkit.org> |
| |
| Fix GTK build after r250558 |
| https://bugs.webkit.org/show_bug.cgi?id=202390 |
| |
| * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp: |
| (webkit_dom_dom_window_confirm): |
| |
| 2019-10-01 Alex Christensen <achristensen@webkit.org> |
| |
| Fix an internal build. |
| |
| Ignore some deprecation warnings. We'll adopt new SPI soon. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]): |
| |
| 2019-10-01 youenn fablet <youenn@apple.com> |
| |
| Remove races condition when validating capture sandbox extension revocation |
| https://bugs.webkit.org/show_bug.cgi?id=202133 |
| <rdar://problem/55660905> |
| |
| Reviewed by Eric Carlson. |
| |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy): |
| Explicitly ask the page to stop capture. |
| This will make sure capture is stopped when revoking sandbox extensions. |
| |
| 2019-09-30 Alex Christensen <achristensen@webkit.org> |
| |
| Resurrect Mac CMake build |
| https://bugs.webkit.org/show_bug.cgi?id=202384 |
| |
| Rubber-stamped by Tim Horton. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| * PlatformMac.cmake: |
| * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| * WebKit2Prefix.h: |
| |
| 2019-09-30 Christopher Reid <chris.reid@sony.com> |
| |
| [WinCairo] Move Remote Inspector Server initialization out of WebView |
| https://bugs.webkit.org/show_bug.cgi?id=202369 |
| |
| Reviewed by Ross Kirsling. |
| |
| Move Remote Inspector Server initialization to Windows WebProcessPool initialization. |
| |
| * UIProcess/win/WebProcessPoolWin.cpp: |
| * UIProcess/win/WebView.cpp: |
| |
| 2019-09-30 Alex Christensen <achristensen@webkit.org> |
| |
| Move DownloadMonitor test speed multiplier from WebProcessPool to WebsiteDataStoreConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=202339 |
| |
| Reviewed by Youenn Fablet. |
| |
| This was only used for some unit tests, which still are accelerated so they pass in the same amount of time as before. |
| I need this value to not be process-global in the NetworkProcess. |
| |
| * NetworkProcess/Downloads/Download.cpp: |
| (WebKit::Download::Download): |
| * NetworkProcess/Downloads/Download.h: |
| (WebKit::Download::Download): |
| (WebKit::Download::testSpeedMultiplier const): |
| * NetworkProcess/Downloads/DownloadManager.cpp: |
| (WebKit::DownloadManager::resumeDownload): |
| * NetworkProcess/Downloads/DownloadManager.h: |
| * NetworkProcess/Downloads/DownloadMonitor.cpp: |
| (WebKit::DownloadMonitor::applicationDidEnterBackground): |
| (WebKit::DownloadMonitor::testSpeedMultiplier const): |
| (WebKit::DownloadMonitor::timerFired): |
| (WebKit::DownloadMonitor::speedMultiplier const): Deleted. |
| * NetworkProcess/Downloads/DownloadMonitor.h: |
| * NetworkProcess/NetworkDataTaskBlob.cpp: |
| (WebKit::NetworkDataTaskBlob::download): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| * NetworkProcess/NetworkSession.h: |
| (WebKit::NetworkSession::testSpeedMultiplier const): |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration downloadMonitorSpeedMultiplierForTesting]): Deleted. |
| (-[_WKProcessPoolConfiguration setDownloadMonitorSpeedMultiplierForTesting:]): Deleted. |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration testSpeedMultiplier]): |
| (-[_WKWebsiteDataStoreConfiguration setTestSpeedMultiplier:]): |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeNetworkProcess): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::testSpeedMultiplier const): |
| (WebKit::WebsiteDataStoreConfiguration::setTestSpeedMultiplier): |
| |
| 2019-09-30 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] IconDatabase is not thread-safe |
| https://bugs.webkit.org/show_bug.cgi?id=201303 |
| |
| Reviewed by Žan Doberšek. |
| |
| Rewrite the IconDatabase implementation. Now that we are the only users of this code, we can simply it a lot and |
| design it specifically for our API, which implementation has been simplified a lot too. There's no change in |
| the database schema nor in behavior from the API point of view. |
| |
| * UIProcess/API/glib/IconDatabase.cpp: |
| (WebKit::IconDatabase::IconDatabase): |
| (WebKit::IconDatabase::~IconDatabase): |
| (WebKit::IconDatabase::createTablesIfNeeded): |
| (WebKit::IconDatabase::populatePageURLToIconURLMap): |
| (WebKit::IconDatabase::clearStatements): |
| (WebKit::IconDatabase::pruneTimerFired): |
| (WebKit::IconDatabase::startPruneTimer): |
| (WebKit::IconDatabase::clearLoadedIconsTimerFired): |
| (WebKit::IconDatabase::startClearLoadedIconsTimer): |
| (WebKit::IconDatabase::iconIDForIconURL): |
| (WebKit::IconDatabase::setIconIDForPageURL): |
| (WebKit::IconDatabase::iconData): |
| (WebKit::IconDatabase::addIcon): |
| (WebKit::IconDatabase::updateIconTimestamp): |
| (WebKit::IconDatabase::deleteIcon): |
| (WebKit::IconDatabase::checkIconURLAndSetPageURLIfNeeded): |
| (WebKit::IconDatabase::loadIconForPageURL): |
| (WebKit::IconDatabase::iconURLForPageURL): |
| (WebKit::IconDatabase::setIconForPageURL): |
| (WebKit::IconDatabase::clear): |
| * UIProcess/API/glib/IconDatabase.h: |
| (WebKit::IconDatabase::create): |
| * UIProcess/API/glib/WebKitFaviconDatabase.cpp: |
| (webkitFaviconDatabaseCreate): |
| (webkitFaviconDatabaseIsOpen): |
| (webkitFaviconDatabaseOpen): |
| (webkitFaviconDatabaseClose): |
| (webkitFaviconDatabaseGetLoadDecisionForIcon): |
| (webkitFaviconDatabaseSetIconForPageURL): |
| (webkitFaviconDatabaseGetFaviconInternal): |
| (webkit_favicon_database_get_favicon): |
| (webkit_favicon_database_get_favicon_finish): |
| (webkit_favicon_database_get_favicon_uri): |
| (webkit_favicon_database_clear): |
| * UIProcess/API/glib/WebKitFaviconDatabasePrivate.h: |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextDispose): |
| (webkit_web_context_set_favicon_database_directory): |
| (webkitWebContextCreatePageForWebView): |
| (webkitWebContextWebViewDestroyed): |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkitWebViewRequestFavicon): |
| (webkitWebViewGetLoadDecisionForIcon): |
| (webkitWebViewSetIcon): |
| |
| 2019-09-30 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] Add about:gpu |
| https://bugs.webkit.org/show_bug.cgi?id=202305 |
| |
| Reviewed by Žan Doberšek. |
| |
| A builtin protocol handler to show information about hardware acceleration. This is useful information we need |
| from people reporting issues in accelerated compositing mode. |
| |
| * SourcesGTK.txt: |
| * SourcesWPE.txt: |
| * UIProcess/API/glib/WebKitProtocolHandler.cpp: Added. |
| (WebKit::WebKitProtocolHandler::WebKitProtocolHandler): |
| (WebKit::WebKitProtocolHandler::handleRequest): |
| (WebKit::webkitPortName): |
| (WebKit::hardwareAccelerationPolicy): |
| (WebKit::webGLEnabled): |
| (WebKit::openGLAPI): |
| (WebKit::nativeInterface): |
| (WebKit::WebKitProtocolHandler::handleGPU): |
| * UIProcess/API/glib/WebKitProtocolHandler.h: Added. |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextConstructed): |
| |
| 2019-09-30 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r250291. |
| https://bugs.webkit.org/show_bug.cgi?id=202359 |
| |
| it is failing |
| TestWebKitAPI.ProcessSwap.GetUserMediaCaptureState (Requested |
| by youenn on #webkit). |
| |
| Reverted changeset: |
| |
| "Delay capture sandbox extension revocation to after the page |
| close message is sent" |
| https://bugs.webkit.org/show_bug.cgi?id=202133 |
| https://trac.webkit.org/changeset/250291 |
| |
| 2019-09-29 Zan Dobersek <zdobersek@igalia.com> |
| |
| ScrollingTreeScrollingNode: use LayerRepresentation for scroll container, scrolled contents layers |
| https://bugs.webkit.org/show_bug.cgi?id=202256 |
| <rdar://problem/55772092> |
| |
| Reviewed by Simon Fraser. |
| |
| * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: |
| (WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations): |
| Use static casts to retrieve the CALayer pointers from the |
| LayerRepresentation objects due to the explicit operators. |
| |
| 2019-09-29 Zan Dobersek <zdobersek@igalia.com> |
| |
| Tighten up LayerRepresentation operators |
| https://bugs.webkit.org/show_bug.cgi?id=202344 |
| |
| Reviewed by Simon Fraser. |
| |
| With LayerRepresentation operators now being explicit, we require |
| to manually specify conversion to CALayer pointers or |
| GraphicsLayer::PlatformLayerID values. |
| |
| * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: |
| (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers): |
| * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: |
| (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers): |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: |
| (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren): |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: |
| (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren): |
| * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: |
| (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::commitStateBeforeChildren): |
| * UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp: |
| (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::commitStateBeforeChildren): |
| |
| 2019-09-27 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK][WPE] Fixes for non-unified builds after r249714 |
| https://bugs.webkit.org/show_bug.cgi?id=202304 |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/NetworkLoadChecker.h: Add missing inclusion of the pal/SessionID.h header. |
| * NetworkProcess/NetworkResourceLoadMap.cpp: Add missing inclusion of the |
| NetworkResourceLoader.h header. |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp: |
| (WKWebsiteDataStoreConfigurationCreate): Add missing namespace to usage of the |
| WebKit::IsPersistent::Yes value. |
| * UIProcess/WebPageProxy.cpp: Add missing inclusion of the LegacyGlobalSettings.h header. |
| |
| 2019-09-27 Tim Horton <timothy_horton@apple.com> |
| |
| Adopt new UIWebGeolocationPolicyDecider SPI to pass a view instead of a window |
| https://bugs.webkit.org/show_bug.cgi?id=202329 |
| <rdar://problem/25963823> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKGeolocationProviderIOS.mm: |
| (-[WKGeolocationProviderIOS geolocationAuthorizationGranted]): |
| * UIProcess/ios/WKGeolocationProviderIOSObjCSecurityOrigin.mm: |
| (WebKit::decidePolicyForGeolocationRequestFromOrigin): |
| Switch to newer SPI that takes a UIView instead of a UIWindow, so that |
| UIWebGeolocationPolicyDecider can find the correct presenting view controller. |
| |
| 2019-09-27 Zalan Bujtas <zalan@apple.com> |
| |
| [iPadOS] Can’t use RalphLauren.com on iPad because hover menus don’t stay up |
| https://bugs.webkit.org/show_bug.cgi?id=202331 |
| <rdar://problem/55629493> |
| |
| Reviewed by Tim Horton. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleSyntheticClick): |
| (WebKit::nodeTriggersFastPath): Deleted. |
| |
| 2019-09-27 Alex Christensen <achristensen@webkit.org> |
| |
| Move shouldUseTestingNetworkSession from NetworkProcessCreationParameters to NetworkSessionCreationParameters |
| https://bugs.webkit.org/show_bug.cgi?id=202327 |
| |
| Reviewed by Tim Horton. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| (WebKit::NetworkProcess::ensureSession): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa): |
| * NetworkProcess/curl/RemoteNetworkingContextCurl.cpp: |
| (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession): |
| * NetworkProcess/mac/RemoteNetworkingContext.mm: |
| (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession): |
| * NetworkProcess/soup/RemoteNetworkingContextSoup.cpp: |
| (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession): |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp: |
| (WKWebsiteDataStoreConfigurationSetPerOriginStorageQuota): |
| (WKWebsiteDataStoreConfigurationSetNetworkCacheSpeculativeValidationEnabled): |
| (WKWebsiteDataStoreConfigurationGetTestingSessionEnabled): |
| (WKWebsiteDataStoreConfigurationSetTestingSessionEnabled): |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::testingSessionEnabled const): |
| (WebKit::WebsiteDataStoreConfiguration::setTestingSessionEnabled): |
| |
| 2019-09-27 Alex Christensen <achristensen@webkit.org> |
| |
| Move legacy custom protocol registration from process pool to NetworkProcessProxy |
| https://bugs.webkit.org/show_bug.cgi?id=202315 |
| |
| Reviewed by Tim Horton. |
| |
| Legacy custom protocol registration is a global thing, which is why it's legacy and we're trying to get rid of it. |
| In the meantime, we don't want it to be in the set of things the NetworkProcess depends on the WebProcessPool for, which should be an empty set. |
| |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::registerGlobalURLSchemeAsHavingCustomProtocolHandlers): |
| (WebKit::WebProcessPool::unregisterGlobalURLSchemeAsHavingCustomProtocolHandlers): |
| (WebKit::WebProcessPool::registerSchemeForCustomProtocol): Deleted. |
| (WebKit::WebProcessPool::unregisterSchemeForCustomProtocol): Deleted. |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-09-27 Alex Christensen <achristensen@webkit.org> |
| |
| Layout Test http/tests/cache-storage/cache-records-persistency.https.html is failing |
| https://bugs.webkit.org/show_bug.cgi?id=202323 |
| |
| Reviewed by Tim Horton. |
| |
| This reverts most of r250351. |
| It turns out NetworkProcessProxy::addSession has some side effects in the UIProcess that are useful for NetworkProcess resumption after crashes. Let's keep that. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| |
| 2019-09-27 Jer Noble <jer.noble@apple.com> |
| |
| Unreviewed build-fix: wrap the AssertionServicesSPI.h in an IOS_FAMILY check. |
| |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| |
| 2019-09-27 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| [iOS]: When inserting a photo and then inserting auto-corrected text, the photo is removed |
| https://bugs.webkit.org/show_bug.cgi?id=202294 |
| |
| Reviewed by Wenson Hsieh. |
| |
| WebPage::applyAutocorrectionInternal() calls wordRangeFromPosition() to |
| calculate the range of the word to be replaced with the auto-corrected |
| word. But if the text of the range does not match the original text, |
| applyAutocorrectionInternal() tries to correct the range by moving it |
| forward such that the length of the text range matches the length of the |
| original text. |
| |
| Another case, which should correct the range also, is: the range does not |
| have a text but it is not collapsed. In this case, we should set the range |
| back to the selection range so non-text nodes is removed. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::applyAutocorrectionInternal): |
| |
| 2019-09-27 John Wilander <wilander@apple.com> |
| |
| Storage Access API: document.hasStorageAccess() should return false by default |
| https://bugs.webkit.org/show_bug.cgi?id=202281 |
| <rdar://problem/55718526> |
| |
| Reviewed by Alex Christensen. |
| |
| document.hasStorageAccess() should return false by default so that it only |
| returns true if the context has asked for and been granted storage access. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasStorageAccess): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::hasStorageAccess): |
| |
| 2019-09-27 Jer Noble <jer.noble@apple.com> |
| |
| [iOS] Lock screen controls can fail to play web content |
| https://bugs.webkit.org/show_bug.cgi?id=202279 |
| |
| Reviewed by Chris Dumez. |
| |
| When playback is paused from the lock screen via Now Playing controls, the WebProcess, |
| UIProcess, and Network Process will all be suspended. MediaRemote will take an assertion |
| and wake up the WebProcess when a remote control command to "play" is sent via the Now |
| Playing controls. However, if a synchronous message to the (suspended) Network or UIProcess |
| is issued before the notification that the process was unexpectedly unsuspended can be |
| issued (which will subsequently unsuspend the UIProcess and Network process), we can get |
| into a deadlocked state where the main thread is blocked on the sync message to a suspended |
| process. |
| |
| To work around this problem, move all the processing from ProcessTaskStateObserver to a |
| WorkQueue / background thread. This requires making the ProcessTaskStateObserver thread-safe, |
| though its only current client is a Singleton (the WebProcess class), and so the risk of |
| thread safety issues is currently minimal. Regardless, access to the Client pointer must be |
| guarded by a Lock, and the Client itself must become ref-counted, so that the |
| ProcessTaskStateObserver can ref its Client (the WebProcess) during callback processing. |
| |
| Unfortunately, sendWithAsyncReply() is not thread safe, nor is ProcessAssertion, so instead |
| just use send() and set a 5-second timeout before expiring the assertion, and just use |
| BKSProcessStateAssertion directly. |
| |
| * Shared/Cocoa/ProcessTaskStateObserver.h: |
| (WebKit::ProcessTaskStateObserver::Client::ref): |
| (WebKit::ProcessTaskStateObserver::Client::deref): |
| (WebKit::ProcessTaskStateObserver::setClient): Deleted. |
| (WebKit::ProcessTaskStateObserver::client): Deleted. |
| * Shared/Cocoa/ProcessTaskStateObserver.mm: |
| (-[WKProcessTaskStateObserverDelegate process:taskStateDidChange:]): |
| (WebKit::ProcessTaskStateObserver::create): |
| (WebKit::ProcessTaskStateObserver::ProcessTaskStateObserver): |
| (WebKit::ProcessTaskStateObserver::~ProcessTaskStateObserver): |
| (WebKit::ProcessTaskStateObserver::invalidate): |
| (WebKit::ProcessTaskStateObserver::client): |
| (WebKit::ProcessTaskStateObserver::setTaskState): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::m_taskStateObserver): |
| * WebProcess/WebProcess.h: |
| * UIProcess/Cocoa/WebProcessProxyCocoa.mm: |
| (WebKit::WebProcessProxy::processWasUnexpectedlyUnsuspended): |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebProcessProxy.messages.in: |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::processTaskStateDidChange): |
| |
| 2019-09-27 Alex Christensen <achristensen@webkit.org> |
| |
| Move service worker process termination delay disabling from process pool to website data store |
| https://bugs.webkit.org/show_bug.cgi?id=202308 |
| |
| Reviewed by Chris Dumez. |
| |
| It's only there for a test, which still works quickly. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| (WebKit::NetworkProcess::addWebsiteDataStore): |
| (WebKit::NetworkProcess::destroySession): |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): |
| (WebKit::NetworkProcess::swServerForSession): |
| (WebKit::NetworkProcess::addServiceWorkerSession): |
| (WebKit::NetworkProcess::disableServiceWorkerProcessTerminationDelay): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * Shared/WebsiteDataStoreParameters.cpp: |
| (WebKit::WebsiteDataStoreParameters::encode const): |
| (WebKit::WebsiteDataStoreParameters::decode): |
| * Shared/WebsiteDataStoreParameters.h: |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _disableServiceWorkerProcessTerminationDelay]): Deleted. |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration serviceWorkerProcessTerminationDelayEnabled]): |
| (-[_WKWebsiteDataStoreConfiguration setServiceWorkerProcessTerminationDelayEnabled:]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::disableServiceWorkerProcessTerminationDelay): Deleted. |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::serviceWorkerProcessTerminationDelayEnabled const): |
| (WebKit::WebsiteDataStoreConfiguration::setServiceWorkerProcessTerminationDelayEnabled): |
| |
| 2019-09-27 Alex Christensen <achristensen@webkit.org> |
| |
| Enable and disable ResourceLoadStatistics only by session |
| https://bugs.webkit.org/show_bug.cgi?id=202298 |
| |
| Reviewed by Chris Dumez. |
| |
| This is needed to keep per-session things per-session and per-process-pool things per-process-pool. |
| This was a strange case where we would take the current session's value and apply it globally. |
| This has no change in behavior because it is globally enabled and disabled by API clients anyways. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::setResourceLoadStatisticsEnabled): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _initializeWithConfiguration:]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::setResourceLoadStatisticsEnabled): Deleted. |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled): |
| |
| 2019-09-27 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused WebProcessPool::setCanHandleHTTPSServerTrustEvaluation |
| https://bugs.webkit.org/show_bug.cgi?id=202285 |
| |
| Reviewed by Youenn Fablet. |
| |
| The SPI to set this was deprecated in r250377 with a replacement that was adopted in rdar://problem/55731135 |
| I removed a layout test using the old SPI and replaced it with a more precise API test verifying the behavior of the new SPI |
| before and after the introduction of NSURLSession's _strictTrustEvaluate:queue:completionHandler: |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| (WebKit::NetworkProcess::setCanHandleHTTPSServerTrustEvaluation): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::canHandleHTTPSServerTrustEvaluation const): Deleted. |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): |
| (canNSURLSessionTrustEvaluate): Deleted. |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetCanHandleHTTPSServerTrustEvaluation): |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _setCanHandleHTTPSServerTrustEvaluation:]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::setCanHandleHTTPSServerTrustEvaluation): Deleted. |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-09-27 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused APIProcessPoolConfiguration::diskCacheSpeculativeValidationEnabled |
| https://bugs.webkit.org/show_bug.cgi?id=202290 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| The SPI to set this was deprecated in r250377 with a replacement that was adopted in rdar://problem/55731135 |
| |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa): |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetDiskCacheSpeculativeValidationEnabled): |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp: |
| (WKWebsiteDataStoreConfigurationGetNetworkCacheSpeculativeValidationEnabled): |
| (WKWebsiteDataStoreConfigurationSetNetworkCacheSpeculativeValidationEnabled): |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration diskCacheSpeculativeValidationEnabled]): |
| (-[_WKProcessPoolConfiguration setDiskCacheSpeculativeValidationEnabled:]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| |
| 2019-09-27 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordinatedGraphics] support bounds origin |
| https://bugs.webkit.org/show_bug.cgi?id=198998 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: |
| (WebKit::CoordinatedGraphicsScene::updateSceneState): |
| Apply bounds origin value to the TextureMapperLayer object. |
| |
| 2019-09-27 Youenn Fablet <youenn@apple.com> |
| |
| Make IsNSURLSessionWebSocketEnabled an experimental flag |
| https://bugs.webkit.org/show_bug.cgi?id=202135 |
| <rdar://problem/55694721> |
| |
| Reviewed by Geoff Garen. |
| |
| Add C API to switch off this feature in WTR. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetIsNSURLSessionWebSocketEnabled): |
| (WKPreferencesGetIsNSURLSessionWebSocketEnabled): |
| * UIProcess/API/C/WKPreferencesRefPrivate.h: |
| |
| 2019-09-27 Jiewen Tan <jiewen_tan@apple.com> |
| |
| SubFrameSOAuthorizationSession should ensure messages are posted in the right order to the parent frame |
| https://bugs.webkit.org/show_bug.cgi?id=202061 |
| <rdar://problem/55485666> |
| |
| Reviewed by Youenn Fablet. |
| |
| This patch ensures messages that signal the process of SOAuthorization interception are posted in |
| the right order to the parent frame. Before this patch, there are chances that SOAuthorizationDidCancel |
| could be posted to the parent before SOAuthorizationDidStart. There are few causes that lead to |
| this race condition: |
| 1) SubFrameSOAuthorizationSession::beforeStart posts SOAuthorizationDidStart in the next runloop. So |
| extension could have the chance to invoke SubFrameSOAuthorizationSession::fallBackToWebPathInternal |
| before SOAuthorizationDidStart is posted. |
| 2) Even if the order is right in the UI process, it is not guaranteed that Web process will strictly |
| follow the order as the loading process is async. |
| |
| To fix the issue: |
| 1) SubFrameSOAuthorizationSession::beforeStart now posts SOAuthorizationDidStart in the same runloop. |
| 2) Observer is introduced in FrameLoadState such that SubFrameSOAuthorizationSession could know if |
| the loading is finished. With this new capacity, SubFrameSOAuthorizationSession can ensure it only |
| posts next message when the previous message has been posted. |
| |
| Implementation wise, a deque to queue requests is provided to maintain order. |
| 1) When new request is added to the deque, SubFrameSOAuthorizationSession will only load the request |
| if it is the only element in the deque. Otherwise, it does nothing. |
| 2) When SubFrameSOAuthorizationSession receives didFinishLoad, it pops the head of the queue and loads |
| the next request in the queue if any. |
| The above design should guarantee all requests are loaded in sequence. |
| |
| * UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.h: |
| * UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm: |
| (WebKit::SubFrameSOAuthorizationSession::SubFrameSOAuthorizationSession): |
| (WebKit::SubFrameSOAuthorizationSession::~SubFrameSOAuthorizationSession): |
| (WebKit::SubFrameSOAuthorizationSession::fallBackToWebPathInternal): |
| (WebKit::SubFrameSOAuthorizationSession::completeInternal): |
| (WebKit::SubFrameSOAuthorizationSession::beforeStart): |
| (WebKit::SubFrameSOAuthorizationSession::didFinishLoad): |
| (WebKit::SubFrameSOAuthorizationSession::appendRequestToLoad): |
| (WebKit::SubFrameSOAuthorizationSession::loadRequestToFrame): |
| (WebKit::SubFrameSOAuthorizationSession::loadDataToFrame): Deleted. |
| (WebKit::SubFrameSOAuthorizationSession::postDidCancelMessageToParent): Deleted. |
| * UIProcess/FrameLoadState.cpp: |
| (WebKit::FrameLoadState::addObserver): |
| (WebKit::FrameLoadState::removeObserver): |
| (WebKit::FrameLoadState::didFinishLoad): |
| * UIProcess/FrameLoadState.h: |
| |
| 2019-09-26 Kate Cheney <katherine_cheney@apple.com> |
| |
| Resource Load Statistics: Downgrade all third-party referrer headers |
| https://bugs.webkit.org/show_bug.cgi?id=201353 |
| <rdar://problem/54895650> |
| |
| Majority of this patch was written by John Wilander <wilander@apple.com>. |
| |
| Reviewed by Brent Fulgham. |
| |
| When tracking protections are enabled, we should downgrade all third-party |
| referrers to their origins. Note that this downgrade will be specific to |
| Cocoa so other ports will have to adopt as they see fit. |
| |
| Cocoa already does this downgrade in ephemeral sessions (shipping). |
| |
| The majority of these changes are test infrastructure. The functional |
| change is in WebKit::NetworkDataTaskCocoa and WebKit::NetworkSession. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::setShouldDowngradeReferrerForTesting): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::isResourceLoadStatisticsEnabled const): |
| (WebKit::NetworkSession::setShouldDowngradeReferrerForTesting): |
| (WebKit::NetworkSession::shouldDowngradeReferrer const): |
| * NetworkProcess/NetworkSession.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::isThirdPartyRequest const): |
| (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): |
| (WebKit::NetworkDataTaskCocoa::restrictRequestReferrerToOriginIfNeeded): |
| (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection): |
| (WebKit::NetworkDataTaskCocoa::isThirdPartyRequest): Deleted. |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetResourceLoadStatisticsShouldDowngradeReferrerForTesting): |
| (WKWebsiteDataStoreStatisticsResetToConsistentState): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::setShouldDowngradeReferrerForTesting): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldDowngradeReferrerForTesting): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| |
| 2019-09-26 Eric Carlson <eric.carlson@apple.com> |
| |
| REGRESSION (iOS 13): Trying to record just audio using HTML Media Capture crashes Safari |
| https://bugs.webkit.org/show_bug.cgi?id=202039 |
| <rdar://problem/55566628> |
| |
| Reviewed by Jer Noble. |
| |
| * UIProcess/ios/forms/WKFileUploadPanel.mm: |
| (-[WKFileUploadPanel _mediaTypesForPickerSourceType:]): UIImagePickerController doesn't |
| support audio-only recording, so show the video recorder for "audio/*". |
| |
| 2019-09-26 Tim Horton <timothy_horton@apple.com> |
| |
| Add some logging to help diagnose blank or stuck WKWebViews |
| https://bugs.webkit.org/show_bug.cgi?id=202297 |
| <rdar://problem/55763610> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Our current logging is insufficient to rule out some of the potential |
| causes of stuck/blank WKWebViews in <rdar://problem/53399054>. Add |
| some new logging, and improve some existing logging, to aid in diagnosis. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _willInvokeUIScrollViewDelegateCallback]): |
| (-[WKWebView _didInvokeUIScrollViewDelegateCallback]): |
| Rename _delayUpdateVisibleContentRects to be more specific that it |
| was due to us being underneath a UIScrollView delegate callback. |
| |
| (-[WKWebView _processWillSwapOrDidExit]): |
| (-[WKWebView _didCommitLayerTree:]): |
| Add a log when we receive an incoming commit while visible content rect |
| updates are being deferred. Also, include the current transaction ID |
| and the transaction ID that _needsResetViewState... is waiting for, to |
| help rule out a class of potential problems. |
| |
| Add a log when we receive an incoming commit more than 5 seconds after |
| a visible content rect update. |
| |
| (-[WKWebView _updateVisibleContentRects]): |
| Keep track of when we defer visual content rect updates for any reason, |
| and log the first time we do an update after deferring them. This will make |
| it MUCH easier at-a-glance to tell if one of the "bailing" messages |
| represents a long-term state (a problem), or is expected. |
| |
| Keep track of how long it's been since we sent a visible content rect update |
| and didn't get a commit back from the Web Content process; if it's been |
| more than 5 seconds, start logging. |
| |
| (-[WKWebView _cancelAnimatedResize]): |
| (-[WKWebView _didCompleteAnimatedResize]): |
| (-[WKWebView _beginAnimatedResizeWithUpdates:]): |
| (-[WKWebView _endAnimatedResize]): |
| (-[WKWebView _resizeWhileHidingContentWithUpdates:]): |
| Turn animated resize logging into release logging. It is a common culprit |
| for many kinds of bugs, while also not being high volume, so this is well worth it. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::freezeLayerTree): |
| (WebKit::WebPage::unfreezeLayerTree): |
| Show the current value of m_layerTreeFreezeReasons in addition to the old value and delta, |
| so you don't have to manually compute the current value when reading logs. |
| |
| 2019-09-26 Dean Jackson <dino@apple.com> |
| |
| ContextMenu on a link in an email no longer shows web preview |
| https://bugs.webkit.org/show_bug.cgi?id=201120 |
| <rdar://54353617> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Only go down the image path if we are not also a link. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView continueContextMenuInteraction:]): |
| |
| 2019-09-26 Chris Dumez <cdumez@apple.com> |
| |
| Stop using testRunner.overridePreference() to turn on Page Cache |
| https://bugs.webkit.org/show_bug.cgi?id=202274 |
| |
| Reviewed by Alex Christensen. |
| |
| * WebProcess/InjectedBundle/InjectedBundle.cpp: |
| (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): |
| |
| 2019-09-26 Andy Estes <aestes@apple.com> |
| |
| Crash under WebPage::beginPrinting when m_printContext becomes null due to synchronous layout |
| https://bugs.webkit.org/show_bug.cgi?id=202171 |
| <rdar://problem/49731211> |
| |
| Reviewed by Tim Horton. |
| |
| Speculatively fix a null pointer dereference crash in WebPage::beginPrinting. |
| |
| WebPage::beginPrinting creates a PrintContext, stores it in m_printContext, then calls |
| PrintContext::begin which forces a synchronous, paginated layout. If a post-layout task |
| executes script, that might result in the WebPage being closed and m_printContext being set |
| to nullptr. |
| |
| Guard against this in WebPage::beginPrinting by adding a null check before calling |
| PrintContext::computePageRects. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::beginPrinting): |
| |
| 2019-09-26 Kate Cheney <katherine_cheney@apple.com> |
| |
| Enable LayoutTests using ResourceLoadStatistics SQLite backend (195420) |
| https://bugs.webkit.org/show_bug.cgi?id=195420 |
| <rdar://problem/54213551> |
| |
| Reviewed by Brent Fulgham. |
| |
| Changed all RELEASE_LOG_ERROR() calls involving domain strings to |
| RELEASE_LOG_ERROR_IF_ALLOWED() to prevent leaking information about |
| the domain strings only if sessionID.isAlwaysOnLoggingAllowed(). |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): |
| Added autovacuuming to the constructor to avoid manually calling |
| runVacuumCommand(). Changed constructor to take in sessionID so it |
| can use RELEASE_LOG_ERROR_IF_ALLOWED which requires the sessionID. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::prepareStatements): |
| Added 2 statements that were not being prepared. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::relationshipExists const): |
| Corrected incorrect capitalization. Added check for nullopt in case |
| domainID is for a domain not in the database yet. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::domainID const): |
| Changed return value to Optional<unsigned>. Some tests were directly |
| checking for subframes under top frame domains on domains that had |
| not been inserted yet. Now, domainID() won't crash but will return |
| a nullopt value which can be checked to know that the tests failed. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): |
| Added a check to assure domainID exists and updated the domainID |
| interactions to work as Optionals. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::populateFromMemoryStore): |
| Moved the prepareStatements() call after the vacuum command in the case |
| where the database is empty. Otherwise called it before returning. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::recursivelyFindNonPrevalentDomainsThatRedirectedToThisDomain): |
| Added a space to the SQL commands to correct the syntax. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::findNotVeryPrevalentResources): |
| Corrected a bug in the SQL command for querying |
| subframeUnderTopFrameDomain. The old query was asking for subresource. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::reclassifyResources): |
| Spelling fix. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): |
| Changed string concatenation to binding. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::grandfatherDataForDomains): |
| The grandfathering.html test was failing because domains were being |
| "set" to grandfathered in the database before being inserted. This fix |
| ensures all domains before setting the grandfathering flag. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::logFrameNavigation): |
| Multiple tests were failing because the query to insert the relationship |
| for the source domain relies on the target domain being in the |
| ObservedDomains table. This patch ensures all domains are added before |
| performing the query. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setUserInteraction): |
| Added a != SQLITE_OK check to make sure an error is logged if the |
| statement fails to bind. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clearUserInteraction): |
| Changed string concatenation to binding. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction): |
| The SQL statement was being bound to a value and not being reset. This |
| patch resets the statement after binding. Additionally, the step() |
| function was being compared to SQLITE_DONE instead of SQLITE_ROW, |
| causing an error if the query returned results. The |
| ASSERT_NOT_REACHED() was causing null searches to crash instead of |
| returning false (i.e. if a domain is not in the database it should |
| return that it has no user interaction instead of crashing). |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource): |
| Updated domainID call to act as an Optional. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::predicateValueForDomain const): |
| The SQL statement was being bound to a value and not being reset. This |
| patch resets the statement after binding. SQLITE_DONE changed to |
| SQLITE_ROW to return non-empty query results. ASSERT_NOT_REACHED() |
| removed for the same reasons as above. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ensureResourceStatisticsForRegistrableDomain): |
| Fixed the release log statement which was logging the wrong function |
| name. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clearDatabaseContents): |
| Clears the database and rebuilds the tables on a clear command to |
| match the functionality in the Memory Store. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clear): |
| Call the clearDatabaseContents function to match the functionality |
| in the Memory Store. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): |
| Updated domainID call to act as an Optional. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUnexpiredRecentUserInteraction): |
| Tests were failing because shouldRemoveAllWebsiteDataFor() was not |
| checking for expired user interaction. Matched functionality in the |
| Memory Store. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllWebsiteDataFor): |
| Tests were failing because shouldRemoveAllWebsiteDataFor() was not |
| checking for expired user interaction. Matched functionality in the |
| Memory Store. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor): |
| Spelling fix. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::pruneStatisticsIfNeeded): |
| Last seen should be sorted in ascending order because you want to |
| prune the older statistics first, which will have a lower lastSeen |
| field (secondsSinceEpoch() will be lower for older values). |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllWebsiteDataFor const): Deleted. |
| Deleted const specifier because the function needs to clear the |
| database. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| Declared new functions. Updated spelling error (registerable --> |
| registrable). Updated constructor to take sessionID. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): |
| ITP database flag now is stored in the NetworkProcess. |
| * NetworkProcess/NetworkProcess.cpp: |
| |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| Set the ITP database flag which is now stored in the Network Process. |
| |
| (WebKit::NetworkProcess::setUseITPDatabase): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::isITPDatabaseEnabled const): |
| * NetworkProcess/NetworkProcess.messages.in: |
| Passed the setUseITPDatabase flag to the initialization function |
| of the statistics store to enable the database backend. |
| |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| SandboxExtension::consumePermanently was not getting called on the |
| WebKitTestRunner resourceLoadStatistics path. This was preventing |
| the database file from opening. |
| |
| (WebKit::NetworkSession::recreateResourceLoadStatisticStore): |
| Destroy old WebResourceLoadStatisticsStore and create a new one using |
| the ITP database. |
| |
| * NetworkProcess/NetworkSession.h: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetUseITPDatabase): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::setUseITPDatabase): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::setUseITPDatabase): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| Passed the setUseITPDatabase flag to the initialization function |
| of the statistics store to enable the database backend. |
| |
| 2019-09-26 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS 13] Tapping on a non-editable text selection should toggle callout bar visibility instead of clearing selection |
| https://bugs.webkit.org/show_bug.cgi?id=202254 |
| <rdar://problem/54410263> |
| |
| Reviewed by Megan Gardner. |
| |
| In iOS 13, tapping a text selection should toggle callout bar visibility (i.e. "selection commands" in UIKit). |
| This currently does not work for non-editable text, since the synthetic click gesture simultaneously fires |
| alongside the text interaction assistant's non-editable tap gesture, which dispatches a click to the page which |
| then clears the selection. |
| |
| To remedy this and match platform behavior, we avoid recognizing clicks that occur over the text selection, but |
| only in the case where the bounding rect of the text selection doesn't cover a large portion of the visible |
| content rect of the web view. This ensures that the user doesn't get stuck in a state where it's impossible to |
| dismiss a very large text selection (e.g. after selecting all the content on the page). |
| |
| Tests: editing/selection/ios/clear-selection-after-tap-in-large-selected-non-editable-text.html |
| editing/selection/ios/toggle-callout-bar-after-tap-in-selected-non-editable-text.html |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _shouldToggleSelectionCommandsAfterTapAt:]): |
| |
| Check the last known selection rects (on _lastSelectionDrawingInfo) to see if the tapped point lies within at |
| least one of the selection rects. |
| |
| (-[WKContentView gestureRecognizerShouldBegin:]): |
| |
| 2019-09-26 Patrick Griffis <pgriffis@igalia.com> |
| |
| [GTK] Fix logic of dark theme detection |
| https://bugs.webkit.org/show_bug.cgi?id=202276 |
| |
| - If GTK_THEME is set it has a higher priority to GtkSettings. |
| - GTK_THEME may be a -dark theme or :dark variant, handle both. |
| |
| Reviewed by Michael Catanzaro. |
| |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::effectiveAppearanceIsDark const): |
| |
| 2019-09-25 Alex Christensen <achristensen@webkit.org> |
| |
| Add replacement SPI on _WKWebsiteDataStoreConfiguration for enabling speculative cache validation and IPC-free server trust evaluation |
| https://bugs.webkit.org/show_bug.cgi?id=202251 |
| |
| Reviewed by Tim Horton. |
| |
| These are two performance optimizations that are currently per-ProcessPool that need to be per-WebsiteDataStore. |
| This makes replacement SPI and deprecates the old SPI. I'm going to adopt the new SPI then remove the old SPI. |
| |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * UIProcess/API/C/WKContextPrivate.h: |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration networkCacheSpeculativeValidationEnabled]): |
| (-[_WKWebsiteDataStoreConfiguration setNetworkCacheSpeculativeValidationEnabled:]): |
| (-[_WKWebsiteDataStoreConfiguration fastServerTrustEvaluationEnabled]): |
| (-[_WKWebsiteDataStoreConfiguration setFastServerTrustEvaluationEnabled:]): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::fastServerTrustEvaluationEnabled const): |
| (WebKit::WebsiteDataStoreConfiguration::setFastServerTrustEvaluationEnabled): |
| (WebKit::WebsiteDataStoreConfiguration::networkCacheSpeculativeValidationEnabled const): |
| (WebKit::WebsiteDataStoreConfiguration::setNetworkCacheSpeculativeValidationEnabled): |
| |
| 2019-09-25 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Fix failing layout tests after trac.webkit.org/r250183 |
| https://bugs.webkit.org/show_bug.cgi?id=202053 |
| <rdar://problem/54542190> |
| |
| Reviewed by Tim Horton. |
| |
| Followup to r250183: move the implementation of -gestureRecognizer:shouldReceiveTouch: out of |
| ENABLE(TOUCH_EVENTS) and into ENABLE(POINTER_EVENTS) instead. This logic is necessary in order for scrolling |
| via pan gestures to work on iOS, in the case where ENABLE(POINTER_EVENTS) is on but ENABLE(TOUCH_EVENTS) is off. |
| This is because the new swipe gesture recognizers added in r250183 will otherwise always take priority over the |
| scroll view's pan gestures. |
| |
| Fixes the following layout tests: |
| - fast/scrolling/ios/reconcile-layer-position-recursive.html |
| - fast/scrolling/ios/click-events-during-momentum-scroll-in-main-frame.html |
| - fast/scrolling/ios/click-events-after-long-press-during-momentum-scroll-in-main-frame.html |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| |
| 2019-09-25 Megan Gardner <megan_gardner@apple.com> |
| |
| Update selections after scrolling for iframes and hide selections while iframes and overflow scrolls are scrolling. |
| https://bugs.webkit.org/show_bug.cgi?id=202125 |
| |
| Reviewed by Tim Horton. |
| |
| Add additional calls into UIKit differentiate between main frame scrolling and overflow/iframe scrolling. |
| Add piping for iframe specific scrolling. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _willStartScrollingOrZooming]): |
| (-[WKContentView _didEndScrollingOrZooming]): |
| * WebProcess/WebCoreSupport/WebEditorClient.cpp: |
| (WebKit::WebEditorClient::subFrameScrollPositionChanged): |
| * WebProcess/WebCoreSupport/WebEditorClient.h: |
| * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm: |
| (WebKit::WebEditorClient::subFrameScrollPositionChanged): |
| |
| 2019-09-25 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Page temporarily jumps to an excessively small viewport scale while loading usatoday.com |
| https://bugs.webkit.org/show_bug.cgi?id=202224 |
| <rdar://problem/52906640> |
| |
| Reviewed by Tim Horton. |
| |
| Tweaks the content-aware shrink-to-fit algorithm to bail in the case where the content width is extremely large, |
| such that it bails instead of attempting to fit the entire content of the page. See WebCore ChangeLog for more |
| details. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::immediatelyShrinkToFitContent): |
| |
| 2019-09-25 Alex Christensen <achristensen@webkit.org> |
| |
| Don't fall back to default session if session can't be found for cookie operations |
| https://bugs.webkit.org/show_bug.cgi?id=202222 |
| |
| Reviewed by Geoff Garen. |
| |
| Apparently, during teardown of private browsing sessions, there is sometimes a race condition and cookies from a torn-down session are requested. |
| In this case, just fail like we do all other operations in this file. Otherwise, it's a breach of privacy. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::storageSession): |
| (WebKit::NetworkConnectionToWebProcess::cookiesForDOM): |
| (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM): |
| (WebKit::NetworkConnectionToWebProcess::cookiesEnabled): |
| (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue): |
| (WebKit::NetworkConnectionToWebProcess::getRawCookies): |
| (WebKit::NetworkConnectionToWebProcess::deleteCookie): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| |
| 2019-09-25 Alex Christensen <achristensen@webkit.org> |
| |
| Remove duplicate WebsiteDataStoreConfiguration copying code |
| https://bugs.webkit.org/show_bug.cgi?id=202215 |
| |
| Reviewed by Tim Horton. |
| |
| WKWebsiteDataStore's _initWithConfiguration was duplicating the functionality of WebsiteDataStoreConfiguration::copy. |
| The former should just call the latter. |
| This move has the side effect of making _WKWebsiteDataStoreConfiguration's paths readable, which I think is desirable so I added a unit test verifying it is so. |
| |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp: |
| (WKWebsiteDataStoreConfigurationCreate): |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _initWithConfiguration:]): |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration init]): |
| (-[_WKWebsiteDataStoreConfiguration initNonPersistentConfiguration]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::mayHaveRegisteredServiceWorkers): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::createNonPersistent): |
| (WebKit::WebsiteDataStore::defaultDataStore): |
| (WebKit::WebsiteDataStore::defaultDataStoreConfiguration): Deleted. |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration): |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::create): |
| (WebKit::WebsiteDataStoreConfiguration::isPersistent const): |
| (WebKit::WebsiteDataStoreConfiguration::setPersistent): Deleted. |
| |
| 2019-09-25 Alex Christensen <achristensen@webkit.org> |
| |
| Replace WebsiteDataStoreParameters::privateSessionParameters with re-initializing all sessions immediately upon NetworkProcess resumption |
| https://bugs.webkit.org/show_bug.cgi?id=202211 |
| |
| Reviewed by Tim Horton. |
| |
| Re-adding an ephemeral session after a NetworkProcess crash based on guessing that all its parameters are empty was added in r227590 with a test. |
| That test passes even when that re-adding code is removed because we re-add all sessions with parameters from the UIProcess when we restart a NetworkProcess. |
| I move the addition of non-default sessions to the initialization message instead of messages after the initialization message to remove race conditions that |
| might cause loads to happen before the NetworkProcess has received its second message from the UIProcess. I also add a unit test to verify that session |
| resumption also works with non-default persistent WebsiteDataStores. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::startNetworkLoad): |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::privateSessionParameters): Deleted. |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * Shared/WebsiteDataStoreParameters.cpp: |
| (WebKit::WebsiteDataStoreParameters::privateSessionParameters): Deleted. |
| * Shared/WebsiteDataStoreParameters.h: |
| (WebKit::WebsiteDataStoreParameters::legacyPrivateSessionParameters): Deleted. |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| |
| 2019-09-25 Alex Christensen <achristensen@webkit.org> |
| |
| Replace _WKProcessPoolConfiguration.CTDataConnectionServiceType with _WKWebsiteDataStoreConfiguration.dataConnectionServiceType |
| https://bugs.webkit.org/show_bug.cgi?id=202174 |
| |
| Reviewed by Tim Horton. |
| |
| _WKProcessPoolConfiguration.CTDataConnectionServiceType is used in one place and needs a replacement so we can |
| start a NetworkProcess without a WKProcessPool. Since this SPI only does something in the low-level networking code, |
| I verified that the new SPI sets the String the way the old one does, and the old one keeps working in the interim. |
| |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _initWithConfiguration:]): |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration dataConnectionServiceType]): |
| (-[_WKWebsiteDataStoreConfiguration setDataConnectionServiceType:]): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::dataConnectionServiceType const): |
| (WebKit::WebsiteDataStoreConfiguration::setDataConnectionServiceType): |
| |
| 2019-09-25 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r250336. |
| https://bugs.webkit.org/show_bug.cgi?id=202210 |
| |
| it is creating failures on iOS bots (Requested by youenn on |
| #webkit). |
| |
| Reverted changeset: |
| |
| "Make IsNSURLSessionWebSocketEnabled an experimental flag" |
| https://bugs.webkit.org/show_bug.cgi?id=202135 |
| https://trac.webkit.org/changeset/250336 |
| |
| 2019-09-25 Youenn Fablet <youenn@apple.com> |
| |
| Creation of a service worker connection for a service worker job should be based on the job scope |
| https://bugs.webkit.org/show_bug.cgi?id=202185 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::swServerForSession): |
| Assert that registrable domain is not empty. |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: |
| (WebKit::WebSWServerConnection::scheduleJobInServer): |
| Use the scope URL instead of the script URL which may be empty in case of an unregister job. |
| |
| 2019-09-25 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iPadOS] [DataActivation] Focus moves away after focusing input fields on www.att.com |
| https://bugs.webkit.org/show_bug.cgi?id=202167 |
| <rdar://problem/55185021> |
| |
| Reviewed by Tim Horton. |
| |
| When using the data activation page on www.att.com, one of the sections on the page contains several select |
| elements; in the case where the user agent: |
| |
| 1. contains the string "iPad", and |
| 2. does not contain the string "Safari" |
| |
| ...www.att.com's data activation page will opt into a mode where it adds blur event listeners to the select |
| elements; in this blur event listener, www.att.com proceeds to programmatically focus a non-editable div element |
| after a 1 second timeout. The reasons for this behavior remain unclear to me, though it's worth noting that the |
| blur event handler name is "screenReaderFocus", which suggests that this is in place to ensure compatibility |
| with screen readers. |
| |
| In iOS 12, dismissing the popover would blur the focused select menu with an animation. Since the animation |
| would take a slightly less than 1 second, www.att.com's logic would have the effect of moving focus to the div |
| element shortly after dismissing the select menu. However, after r243808, we no longer attempt to blur the |
| focused select element when dismissing the popover. This means that the select element is only blurred the next |
| time the user activates another focused element, such as one of the input fields on the page, or a different |
| select element. Consequently, the logic to move focus into a div element now occurs only after a different |
| element has already been focused; this results in focus moving away from newly focused elements after 1 second |
| in the case where a select element has previously focused. |
| |
| To mitigate this, restore iOS 12 behavior behind a site- and app-specific quirk. See comments below for more |
| details. |
| |
| * Shared/FocusedElementInformation.cpp: |
| (WebKit::FocusedElementInformation::encode const): |
| (WebKit::FocusedElementInformation::decode): |
| * Shared/FocusedElementInformation.h: |
| |
| Add a new behavioral quirk flag to FocusedElementInformation to determine whether we should use "legacy" select |
| popover dismissal behavior (i.e. blurring the focused select element when dismissing the select popover, as well |
| as dismissing the popover with animation). |
| |
| * Shared/WebPreferences.yaml: |
| |
| Enable site-specific quirks by default in WKWebView. With regards to this bug, this change allows for |
| site-specific hacks (namely, legacy select popover dismissal) in DataActivation. However, this also fixes |
| various known bugs that are otherwise addressed in Safari only, via site-specific quirks. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _initializeWithConfiguration:]): |
| |
| For apps linked on or before iOS 13 and macOS 10.15, revert the default of value of NeedsSiteSpecificQuirks to |
| false. This is done here instead of in a default value function in WebPreferencesDefaultValues to prevent the |
| default values of NeedsSiteSpecificQuirks in the web process and UI process from going out of sync, since the |
| web process is not necessarily linked against the same SDK as the application. |
| |
| * UIProcess/Cocoa/VersionChecks.h: |
| |
| Add a new DYLD version check for the first version of iOS and macOS where site-specific quirks are enabled by |
| default. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView endEditingAndUpdateFocusAppearanceWithReason:]): |
| (-[WKContentView _elementDidBlur]): |
| (-[WKContentView _shouldUseLegacySelectPopoverDismissalBehavior]): |
| |
| We only use "legacy" select popover dismissal behavior in the case where the site-specific quirk flag is on, a |
| select popover is used (i.e. the device is an iPad and a select element is focused), and the application bundle |
| is "com.apple.DataActivation". |
| |
| * UIProcess/ios/forms/WKFormSelectPopover.mm: |
| (-[WKSelectTableViewController shouldDismissWithAnimation]): |
| |
| Keyed off of _shouldUseLegacySelectPopoverDismissalBehavior. |
| |
| (-[WKSelectPopover controlEndEditing]): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::getFocusedElementInformation): |
| |
| 2019-09-25 Jonathan Bedard <jbedard@apple.com> |
| |
| Unreviewed, rolling out r250324. |
| |
| Broke many mac wk2 layout tests |
| |
| Reverted changeset: |
| |
| "Enable LayoutTests using ResourceLoadStatistics SQLite |
| backend (195420)" |
| https://bugs.webkit.org/show_bug.cgi?id=195420 |
| https://trac.webkit.org/changeset/250324 |
| |
| 2019-09-25 Youenn Fablet <youenn@apple.com> |
| |
| Make IsNSURLSessionWebSocketEnabled an experimental flag |
| https://bugs.webkit.org/show_bug.cgi?id=202135 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * Shared/WebPreferences.yaml: |
| |
| 2019-09-24 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] Regression(r249703) frequent 'kill() returned unexpected error' log messages |
| https://bugs.webkit.org/show_bug.cgi?id=202173 |
| |
| Reviewed by Geoffrey Garen. |
| |
| The kill(pid, 0) command actually fails with an EPERM error when there is a process |
| running with the given pid, and this is causing us to log a lot of errors. The good |
| news is that we merely want to know that there is no process with the given PID and |
| we correctly get a ESRCH error in this case. I renamed the function from |
| isRunningProcessPID() to wasTerminated() and only check for ESRCH error now. I no |
| longer log any error otherwise since this is expected. |
| |
| Also, for performance reason, I no longer call kill(pid, 0) from inside |
| AuxiliaryProcessProxy::state() as it gets called a lot. I instead only call it from |
| AuxiliaryProcessProxy::wasTerminated() and call it from |
| WebProcessPool::tryTakePrewarmedProcess(). |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::state const): |
| (WebKit::AuxiliaryProcessProxy::wasTerminated const): |
| (WebKit::AuxiliaryProcessProxy::isRunningProcessPID): Deleted. |
| * UIProcess/AuxiliaryProcessProxy.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::tryTakePrewarmedProcess): |
| |
| 2019-09-24 Christopher Reid <chris.reid@sony.com> |
| |
| [WinCairo] Start RemoteInspectorServer |
| https://bugs.webkit.org/show_bug.cgi?id=199938 |
| <rdar://problem/53323048> |
| |
| Reviewed by Fujii Hironori. |
| |
| Enable the remote inspector client on WinCairo. |
| The inspector server will run if the WEBKIT_INSPECTOR_SERVER environment variable is set. |
| WEBKIT_INSPECTOR_SERVER needs to be set in the form of <ip>:port e.g. WEBKIT_INSPECTOR_SERVER=127.0.0.1:1234. |
| |
| Updated the protocol handler to update the target list with DOM manipulation. |
| |
| * UIProcess/socket/RemoteInspectorClient.cpp: |
| * UIProcess/socket/RemoteInspectorClient.h: |
| * UIProcess/socket/RemoteInspectorProtocolHandler.cpp: |
| * UIProcess/socket/RemoteInspectorProtocolHandler.h: |
| * UIProcess/win/WebView.cpp: |
| |
| 2019-09-24 Kate Cheney <katherine_cheney@apple.com> |
| |
| Enable LayoutTests using ResourceLoadStatistics SQLite backend (195420) |
| https://bugs.webkit.org/show_bug.cgi?id=195420 |
| <rdar://problem/54213551> |
| |
| Reviewed by Brent Fulgham. |
| |
| Changed all RELEASE_LOG_ERROR() calls involving domain strings to |
| RELEASE_LOG_ERROR_IF_ALLOWED() to prevent leaking information about |
| the domain strings only if sessionID.isAlwaysOnLoggingAllowed(). |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore): |
| Added autovacuuming to the constructor to avoid manually calling |
| runVacuumCommand(). Changed constructor to take in sessionID so it |
| can use RELEASE_LOG_ERROR_IF_ALLOWED which requires the sessionID. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::prepareStatements): |
| Added 2 statements that were not being prepared. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::relationshipExists const): |
| Corrected incorrect capitalization. Added check for nullopt in case |
| domainID is for a domain not in the database yet. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::domainID const): |
| Changed return value to Optional<unsigned>. Some tests were directly |
| checking for subframes under top frame domains on domains that had |
| not been inserted yet. Now, domainID() won't crash but will return |
| a nullopt value which can be checked to know that the tests failed. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationships): |
| Added a check to assure domainID exists and updated the domainID |
| interactions to work as Optionals. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::populateFromMemoryStore): |
| Moved the prepareStatements() call after the vacuum command in the case |
| where the database is empty. Otherwise called it before returning. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::recursivelyFindNonPrevalentDomainsThatRedirectedToThisDomain): |
| Added a space to the SQL commands to correct the syntax. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::findNotVeryPrevalentResources): |
| Corrected a bug in the SQL command for querying |
| subframeUnderTopFrameDomain. The old query was asking for subresource. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::reclassifyResources): |
| Spelling fix. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): |
| Changed string concatenation to binding. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::grandfatherDataForDomains): |
| The grandfathering.html test was failing because domains were being |
| "set" to grandfathered in the database before being inserted. This fix |
| ensures all domains before setting the grandfathering flag. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::logFrameNavigation): |
| Multiple tests were failing because the query to insert the relationship |
| for the source domain relies on the target domain being in the |
| ObservedDomains table. This patch ensures all domains are added before |
| performing the query. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setUserInteraction): |
| Added a != SQLITE_OK check to make sure an error is logged if the |
| statement fails to bind. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clearUserInteraction): |
| Changed string concatenation to binding. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction): |
| The SQL statement was being bound to a value and not being reset. This |
| patch resets the statement after binding. Additionally, the step() |
| function was being compared to SQLITE_DONE instead of SQLITE_ROW, |
| causing an error if the query returned results. The |
| ASSERT_NOT_REACHED() was causing null searches to crash instead of |
| returning false (i.e. if a domain is not in the database it should |
| return that it has no user interaction instead of crashing). |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource): |
| Updated domainID call to act as an Optional. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::predicateValueForDomain const): |
| The SQL statement was being bound to a value and not being reset. This |
| patch resets the statement after binding. SQLITE_DONE changed to |
| SQLITE_ROW to return non-empty query results. ASSERT_NOT_REACHED() |
| removed for the same reasons as above. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ensureResourceStatisticsForRegistrableDomain): |
| Fixed the release log statement which was logging the wrong function |
| name. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clearDatabaseContents): |
| Clears the database and rebuilds the tables on a clear command to |
| match the functionality in the Memory Store. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clear): |
| Call the clearDatabaseContents function to match the functionality |
| in the Memory Store. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt const): |
| Updated domainID call to act as an Optional. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUnexpiredRecentUserInteraction): |
| Tests were failing because shouldRemoveAllWebsiteDataFor() was not |
| checking for expired user interaction. Matched functionality in the |
| Memory Store. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllWebsiteDataFor): |
| Tests were failing because shouldRemoveAllWebsiteDataFor() was not |
| checking for expired user interaction. Matched functionality in the |
| Memory Store. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor): |
| Spelling fix. |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::pruneStatisticsIfNeeded): |
| Last seen should be sorted in ascending order because you want to |
| prune the older statistics first, which will have a lower lastSeen |
| field (secondsSinceEpoch() will be lower for older values). |
| |
| (WebKit::ResourceLoadStatisticsDatabaseStore::shouldRemoveAllWebsiteDataFor const): Deleted. |
| Deleted const specifier because the function needs to clear the |
| database. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| Declared new functions. Updated spelling error (registerable --> |
| registrable). Updated constructor to take sessionID. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): |
| ITP database flag now is stored in the NetworkProcess. |
| * NetworkProcess/NetworkProcess.cpp: |
| |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| Set the ITP database flag which is now stored in the Network Process. |
| |
| (WebKit::NetworkProcess::addWebsiteDataStore): |
| SandboxExtension::consumePermanently was not getting called on the |
| WebKitTestRunner resourceLoadStatistics path. This was preventing |
| the database file from opening. |
| |
| (WebKit::NetworkProcess::setUseITPDatabase): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::isITPDatabaseEnabled const): |
| * NetworkProcess/NetworkProcess.messages.in: |
| Passed the setUseITPDatabase flag to the initialization function |
| of the statistics store to enable the database backend. |
| |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::recreateResourceLoadStatisticStore): |
| Destroy old WebResourceLoadStatisticsStore and create a new one using |
| the ITP database. |
| |
| * NetworkProcess/NetworkSession.h: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetUseITPDatabase): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::setUseITPDatabase): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::setUseITPDatabase): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| Passed the setUseITPDatabase flag to the initialization function |
| of the statistics store to enable the database backend. |
| |
| 2019-09-24 Alex Christensen <achristensen@webkit.org> |
| |
| Make iOS WebProcessPool directory getters static |
| https://bugs.webkit.org/show_bug.cgi?id=202157 |
| |
| Reviewed by Tim Horton. |
| |
| No change in behavior. This just cuts another dependency the NetworkProcessProxy has on its owning WebProcessPool. |
| |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::cookieStorageDirectory): |
| (WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions): |
| (WebKit::WebProcessPool::parentBundleDirectory): |
| (WebKit::WebProcessPool::networkingCachesDirectory): |
| (WebKit::WebProcessPool::webContentCachesDirectory): |
| (WebKit::WebProcessPool::containerTemporaryDirectory): |
| (WebKit::WebProcessPool::cookieStorageDirectory const): Deleted. |
| (WebKit::WebProcessPool::parentBundleDirectory const): Deleted. |
| (WebKit::WebProcessPool::networkingCachesDirectory const): Deleted. |
| (WebKit::WebProcessPool::webContentCachesDirectory const): Deleted. |
| (WebKit::WebProcessPool::containerTemporaryDirectory const): Deleted. |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-09-24 Patrick Griffis <pgriffis@igalia.com> |
| |
| [GTK][WPE] Minor code cleanup in BubblewrapLauncher |
| https://bugs.webkit.org/show_bug.cgi?id=201906 |
| |
| This just cleans up string handling and some |
| whitespace fixes. |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/Launcher/glib/BubblewrapLauncher.cpp: |
| (WebKit::XDGDBusProxyLauncher::setAddress): |
| (WebKit::XDGDBusProxyLauncher::launch): |
| (WebKit::XDGDBusProxyLauncher::makeProxyPath): |
| (WebKit::XDGDBusProxyLauncher::dbusAddressToPath): |
| |
| 2019-09-24 Zalan Bujtas <zalan@apple.com> |
| |
| [iPadOs] The second click event is missing on double tap when dblclick handler is not present |
| https://bugs.webkit.org/show_bug.cgi?id=202006 |
| <rdar://problem/51706828> |
| |
| Reviewed by Wenson Hsieh. |
| |
| While double tapping, |
| 1. the first tap triggers a click event through the normal _singleTapIdentified/_singleTapRecognized codepath. |
| 2. and the second tap should trigger either |
| a second single click event or |
| a second single click followed by a dblclick event when dblclick handler is present. |
| However the second click is dropped on the floor when the node under the cursor does not have a dblclick handler (see handleDoubleTapForDoubleClickAtPoint()) -so we end up sending one click event. |
| |
| This patch fixes this case by sending the second tap through the normal single tap flow when the dblclick handler is not present. |
| |
| * Shared/ios/InteractionInformationAtPosition.h: |
| * Shared/ios/InteractionInformationAtPosition.mm: |
| (WebKit::InteractionInformationAtPosition::encode const): |
| (WebKit::InteractionInformationAtPosition::decode): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView gestureRecognizerShouldBegin:]): |
| (WebKit::WebPage::positionInformation): |
| (WebKit::WebPage::requestPositionInformation): |
| |
| 2019-09-24 Alex Christensen <achristensen@webkit.org> |
| |
| Move HSTS storage directory to LegacyGlobalSettings |
| https://bugs.webkit.org/show_bug.cgi?id=202059 |
| |
| Reviewed by Tim Horton. |
| |
| I continue my lamentation begun in r245075. |
| Remove the glib setting of it on the WebKitWebContext because they use it on the WebsiteDataStore. We should do that too when we can. |
| |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration setHSTSStorageDirectory:]): |
| (-[_WKProcessPoolConfiguration hstsStorageDirectory]): |
| * UIProcess/LegacyGlobalSettings.h: |
| (WebKit::LegacyGlobalSettings::setHSTSStorageDirectory): |
| (WebKit::LegacyGlobalSettings::hstsStorageDirectory const): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| |
| 2019-09-24 Keith Rollin <krollin@apple.com> |
| |
| Coalesce or remove PLATFORM(MAC) || PLATFORM(IOS_FAMILY) |
| https://bugs.webkit.org/show_bug.cgi?id=202119 |
| <rdar://problem/55638792> |
| |
| Reviewed by Alex Christensen. |
| |
| After refactoring and other code evolution, some platform checks have |
| ended up looking like PLATFORM(MAC) || PLATFORM(IOS_FAMILY) (or |
| vice-versa). These can be converted into the equivalent |
| PLATFORM(COCOA). Where the instance occurs in a Cocoa-only file, the |
| check can be removed altogether (along with any "#else" branches). |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| |
| 2019-09-24 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| FocusPreservationTests.ChangingFocusedNodeResetsFocusPreservationState triggers a debug assertion |
| https://bugs.webkit.org/show_bug.cgi?id=202145 |
| <rdar://problem/51273128> |
| |
| Reviewed by Tim Horton. |
| |
| Fixes an assertion in -tableView:cellForRowAtIndexPath: to only require the cell to have a non-zero |
| width in the case where the table view itself has a non-empty width. When run under TestWebKitAPI, |
| this assertion currently fires because the view controller used to show the popover isn't actually |
| presented, so the view controller's view (i.e. the UITableView) ends up being empty. This causes all |
| of its table view cells to subsequently become empty upon reuse. |
| |
| * UIProcess/ios/forms/WKFormSelectPopover.mm: |
| (-[WKSelectTableViewController tableView:cellForRowAtIndexPath:]): |
| |
| 2019-09-24 Alex Christensen <achristensen@webkit.org> |
| |
| Require a WebsiteDataStore when creating or resuming downloads |
| https://bugs.webkit.org/show_bug.cgi?id=202081 |
| |
| Reviewed by Youenn Fablet. |
| |
| No change in behavior, but I'll have to move Safari to the new SPI. |
| This makes it so there are no cases where we guess we need to use the default session, |
| and it allows downloads to function correctly once there is a NetworkProcess singleton. |
| Removing the unused WebProcessPool& in the callbacks will allow us to eventually have |
| downloads only associated with a WebsiteDataStore and not a WebProcessPool. |
| |
| * UIProcess/API/APIDownloadClient.h: |
| (API::DownloadClient::didStart): |
| (API::DownloadClient::didReceiveAuthenticationChallenge): |
| (API::DownloadClient::didReceiveResponse): |
| (API::DownloadClient::didReceiveData): |
| (API::DownloadClient::decideDestinationWithSuggestedFilename): |
| (API::DownloadClient::didCreateDestination): |
| (API::DownloadClient::didFinish): |
| (API::DownloadClient::didFail): |
| (API::DownloadClient::didCancel): |
| (API::DownloadClient::processDidCrash): |
| (API::DownloadClient::willSendRequest): |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetDownloadClient): |
| (WKContextDownloadURLRequest): |
| (WKContextResumeDownload): |
| * UIProcess/API/C/WKContext.h: |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _setDownloadDelegate:]): |
| (-[WKProcessPool _downloadURLRequest:originatingWebView:]): |
| (-[WKProcessPool _resumeDownloadFromData:path:originatingWebView:]): |
| (-[WKProcessPool _downloadURLRequest:websiteDataStore:originatingWebView:]): |
| (-[WKProcessPool _resumeDownloadFromData:websiteDataStore:path:originatingWebView:]): |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/API/glib/WebKitDownloadClient.cpp: |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextDispose): |
| (webkitWebContextStartDownload): |
| * UIProcess/Cocoa/DownloadClient.h: |
| * UIProcess/Cocoa/DownloadClient.mm: |
| (WebKit::DownloadClient::didStart): |
| (WebKit::DownloadClient::didReceiveResponse): |
| (WebKit::DownloadClient::didReceiveData): |
| (WebKit::DownloadClient::didReceiveAuthenticationChallenge): |
| (WebKit::DownloadClient::didCreateDestination): |
| (WebKit::DownloadClient::processDidCrash): |
| (WebKit::DownloadClient::decideDestinationWithSuggestedFilename): |
| (WebKit::DownloadClient::didFinish): |
| (WebKit::DownloadClient::didFail): |
| (WebKit::DownloadClient::didCancel): |
| (WebKit::DownloadClient::willSendRequest): |
| * UIProcess/Downloads/DownloadProxy.cpp: |
| (WebKit::DownloadProxy::create): |
| (WebKit::DownloadProxy::DownloadProxy): |
| (WebKit::DownloadProxy::invalidate): |
| (WebKit::DownloadProxy::processDidClose): |
| (WebKit::DownloadProxy::didStart): |
| (WebKit::DownloadProxy::didReceiveAuthenticationChallenge): |
| (WebKit::DownloadProxy::willSendRequest): |
| (WebKit::DownloadProxy::didReceiveResponse): |
| (WebKit::DownloadProxy::didReceiveData): |
| (WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync): |
| (WebKit::DownloadProxy::didCreateDestination): |
| (WebKit::DownloadProxy::didFinish): |
| (WebKit::DownloadProxy::didFail): |
| (WebKit::DownloadProxy::didCancel): |
| * UIProcess/Downloads/DownloadProxy.h: |
| * UIProcess/Downloads/DownloadProxyMap.cpp: |
| (WebKit::DownloadProxyMap::createDownloadProxy): |
| * UIProcess/Downloads/DownloadProxyMap.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::createDownloadProxy): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::receivedPolicyDecision): |
| (WebKit::WebPageProxy::contextMenuItemSelected): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::WebProcessPool): |
| (WebKit::WebProcessPool::setDownloadClient): |
| (WebKit::WebProcessPool::download): |
| (WebKit::WebProcessPool::resumeDownload): |
| (WebKit::WebProcessPool::createDownloadProxy): |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-09-24 Youenn Fablet <youenn@apple.com> |
| |
| Delay capture sandbox extension revocation to after the page close message is sent |
| https://bugs.webkit.org/show_bug.cgi?id=202133 |
| |
| Reviewed by Eric Carlson. |
| |
| This ensures that the sandbox extension is removed once no longer useful |
| and makes our WebProcess assertions fine. |
| |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy): |
| |
| 2019-09-23 Chris Dumez <cdumez@apple.com> |
| |
| Drop unnecessary SessionID.h header includes |
| https://bugs.webkit.org/show_bug.cgi?id=202129 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/AdClickAttributionManager.h: |
| * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: |
| * NetworkProcess/NetworkLoadParameters.h: |
| * NetworkProcess/RemoteNetworkingContext.h: |
| * NetworkProcess/cache/CacheStorageEngine.cpp: |
| * NetworkProcess/cache/CacheStorageEngine.h: |
| * NetworkProcess/cache/NetworkCache.h: |
| * NetworkProcess/webrtc/NetworkRTCProvider.h: |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.h: |
| * Shared/Authentication/AuthenticationManager.h: |
| * Shared/WebCoreArgumentCoders.cpp: |
| * Shared/WebProcessCreationParameters.h: |
| * UIProcess/API/APIPageConfiguration.h: |
| * WebProcess/Cache/WebCacheStorageProvider.h: |
| * WebProcess/Databases/WebDatabaseProvider.cpp: |
| * WebProcess/InjectedBundle/InjectedBundle.cpp: |
| * WebProcess/InjectedBundle/InjectedBundle.h: |
| * WebProcess/Network/WebSocketChannel.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| * WebProcess/Storage/WebServiceWorkerProvider.cpp: |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: |
| * WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.h: |
| * WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h: |
| * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp: |
| * WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h: |
| * WebProcess/WebPage/WebFrame.h: |
| |
| 2019-09-23 Chris Dumez <cdumez@apple.com> |
| |
| PlugInClient::didStartFromOrigin() does not need a sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=202127 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * WebProcess/WebCoreSupport/WebPlugInClient.cpp: |
| (WebKit::WebPlugInClient::didStartFromOrigin): |
| * WebProcess/WebCoreSupport/WebPlugInClient.h: |
| |
| 2019-09-23 Chris Dumez <cdumez@apple.com> |
| |
| FrameSpecificStorageAccessIdentifier does not need a sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=202093 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::requestStorageAccess): |
| |
| 2019-09-23 Tim Horton <timothy_horton@apple.com> |
| |
| macOS: <datalist> dropdown shadow is cropped, looks nothing like NSComboBox |
| https://bugs.webkit.org/show_bug.cgi?id=199350 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Improve the appearance of the macOS <datalist> dropdown, adopting the |
| roundly-cornered and backdrop-ful appearance of the current NSComboBox style. |
| |
| Use the proper window shadow instead of our own inside the window, both |
| so that we match the system and so that it doesn't get clipped. |
| |
| Allow vertical rubber-banding, because NSComboBox does. |
| |
| Don't highlight on hover, because NSComboBox doesn't. Do use NSTableView's |
| selection mechanism instead of rolling our own for highlights driven by |
| keyboard-based navigation. |
| |
| Make use of NSTableCellView, since it has some smarts around pixel alignment |
| that we don't need to duplicate (and things are blurry on 1x displays without). |
| |
| Also rename some classes to make it a bit more clear what's going on: |
| WKDataListSuggestionCell -> WKDataListSuggestionView (it's a NSView, not an NSCell) |
| WKDataListSuggestionsView -> WKDataListSuggestionsController (it's not a view at all) |
| |
| * Platform/spi/mac/AppKitSPI.h: |
| * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm: |
| (WebKit::WebDataListSuggestionsDropdownMac::show): |
| (-[WKDataListSuggestionWindow initWithContentRect:styleMask:backing:defer:]): |
| (-[WKDataListSuggestionWindow canBecomeKeyWindow]): |
| (-[WKDataListSuggestionWindow hasKeyAppearance]): |
| (-[WKDataListSuggestionWindow shadowOptions]): |
| (-[WKDataListSuggestionView initWithFrame:]): |
| (-[WKDataListSuggestionView setText:]): |
| (-[WKDataListSuggestionView setBackgroundStyle:]): |
| (-[WKDataListSuggestionTableRowView drawSelectionInRect:]): |
| (-[WKDataListSuggestionTableView initWithElementRect:]): |
| (-[WKDataListSuggestionTableView layout]): |
| (-[WKDataListSuggestionTableView reload]): |
| (-[WKDataListSuggestionsController initWithInformation:inView:]): |
| (-[WKDataListSuggestionsController currentSelectedString]): |
| (-[WKDataListSuggestionsController updateWithInformation:]): |
| (-[WKDataListSuggestionsController moveSelectionByDirection:]): |
| (-[WKDataListSuggestionsController invalidate]): |
| (-[WKDataListSuggestionsController dropdownRectForElementRect:]): |
| (-[WKDataListSuggestionsController showSuggestionsDropdown:]): |
| (-[WKDataListSuggestionsController tableView:rowViewForRow:]): |
| (-[WKDataListSuggestionsController tableView:viewForTableColumn:row:]): |
| (-[WKDataListSuggestionCell initWithFrame:]): Deleted. |
| (-[WKDataListSuggestionCell setText:]): Deleted. |
| (-[WKDataListSuggestionCell setActive:]): Deleted. |
| (-[WKDataListSuggestionCell drawRect:]): Deleted. |
| (-[WKDataListSuggestionCell mouseEntered:]): Deleted. |
| (-[WKDataListSuggestionCell mouseExited:]): Deleted. |
| (-[WKDataListSuggestionCell acceptsFirstResponder]): Deleted. |
| (-[WKDataListSuggestionTable initWithElementRect:]): Deleted. |
| (-[WKDataListSuggestionTable setVisibleRect:]): Deleted. |
| (-[WKDataListSuggestionTable currentActiveRow]): Deleted. |
| (-[WKDataListSuggestionTable setActiveRow:]): Deleted. |
| (-[WKDataListSuggestionTable reload]): Deleted. |
| (-[WKDataListSuggestionTable acceptsFirstResponder]): Deleted. |
| (-[WKDataListSuggestionTable enclosingScrollView]): Deleted. |
| (-[WKDataListSuggestionTable removeFromSuperviewWithoutNeedingDisplay]): Deleted. |
| (-[WKDataListSuggestionsView initWithInformation:inView:]): Deleted. |
| (-[WKDataListSuggestionsView currentSelectedString]): Deleted. |
| (-[WKDataListSuggestionsView updateWithInformation:]): Deleted. |
| (-[WKDataListSuggestionsView moveSelectionByDirection:]): Deleted. |
| (-[WKDataListSuggestionsView invalidate]): Deleted. |
| (-[WKDataListSuggestionsView dropdownRectForElementRect:]): Deleted. |
| (-[WKDataListSuggestionsView showSuggestionsDropdown:]): Deleted. |
| (-[WKDataListSuggestionsView selectedRow:]): Deleted. |
| (-[WKDataListSuggestionsView numberOfRowsInTableView:]): Deleted. |
| (-[WKDataListSuggestionsView tableView:heightOfRow:]): Deleted. |
| (-[WKDataListSuggestionsView tableView:viewForTableColumn:row:]): Deleted. |
| |
| 2019-09-23 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] Drop animation when dragging images from Photos to WebKit2 Mail compose is incorrect |
| https://bugs.webkit.org/show_bug.cgi?id=201674 |
| <rdar://problem/51250952> |
| |
| Reviewed by Tim Horton. |
| |
| Our current logic for handling dropped content in editable elements on iOS works like this in the ideal case: |
| |
| (1) UIKit asks us for a targeted preview for each UIDragItem. We don't know (and can't determine this |
| synchronously without blocking on the web process) so we simply retarget the preview to animate to the |
| last known caret location. |
| |
| (2) Soonafter, UIKit hands us a drop preview update block, which may be used to retarget the drop preview |
| once, as long as the drop animation is less than 90% complete. We stash these update blocks for now. |
| |
| (3) -dropInteraction:performDrop: is then called, and we start loading item provider data right away. |
| |
| (4) When the data has finished loading, we perform the drop in the web process. After any inserted images |
| have finished loading, we take snapshots (of the dropped content as well as surrounding web content |
| minus the dropped content), and deliver these images to the UI process via TextIndicatorData. |
| |
| (5) Upon receiving the TextIndicatorData sent in (4), we use the image data to create updated targeted drag |
| previews, and use these to invoke the preview update blocks we stored earlier in (2). We also obscure |
| the entire web view with a snapshot of the view minus any dropped content, such that the updated drop |
| previews may animate into place without also showing the final content. |
| |
| (6) When the drop animation ends, we remove the unselected content snapshot view added in (5) simultaneously |
| as the targeted previews disappear, revealing the actual dropped content on the page. The drop is now |
| complete. |
| |
| However, note that the drag update block we invoke in (5) doesn't work if the drop animation is already more |
| than 90% complete. Since the lifecycle of the drop animation is distinct from that of item provider loading, if |
| the delay between (3) and (4) exceeds 90% of the total drop animation time, we'll fail to update the targeted |
| previews, such that the user only sees the initial drag preview fly on top of the caret and disappear. While we |
| typically win this race for data dragged from other WebKit apps, we almost always lose when dragging from Photos |
| and end up with a janky drop animation. This is especially true for any images that aren't locally available, |
| and need to be fetched from iCloud. An additional problem is that in step (5), we use the same final snapshot to |
| update the drop preview of every item, since we don't have a snapshot for the fragment corresponding to each |
| individual dropped item. |
| |
| To address these issues for Mail in the case where the user drops images with known sizes (i.e. -[NSItemProvider |
| preferredPresentationSize] is specified), we introduce an alternate codepath for handling dropped images that |
| performs the drop immediately upon receiving -dropInteraction:performDrop: in the UI process. Since the data has |
| yet to arrive, we instead handle the drop by inserting placeholder image elements at the drag caret position, |
| which initially have no source but are sized to fit their expected final image sizes. After doing so, we |
| snapshot the page (minus the dropped content range, as usual) and deliver this snapshot to the UI process, along |
| with the rects (in root view coordinates) of each placeholder image that was inserted. In the UI process, we |
| then take this snapshot and obscure the content view with it, and also use each of the placeholder rects to |
| provide an updated target for each drag preview, such that the drop previews now animate to their final |
| locations on the page. |
| |
| When the data eventually arrives, we handle the drop by detecting the placeholder elements we inserted earlier, |
| and using the dropped data to update the source attribute and attachment backing for each of these placeholder |
| elements instead of attempting to insert new content. |
| |
| Note that this codepath is currently only enabled for SPI clients that set -[WKWebView _editable] to YES, since |
| it involves us performing the editing action for the drop (thus changing the DOM) prior to the preventable drop |
| event, and prior to us having any data at all. However, the drop event can't come before the editing action, |
| since we need to have already loaded data from the item providers to expose it via the dataTransfer of the drop |
| event. This contradiction means that this image placeholder hack is only for _editable SPI clients that, at the |
| very least, will not require preventing default behavior when dropping only images with predetermined sizes. |
| |
| Covered by 2 new API tests. See comments below for more detail. |
| |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/DragDropInteractionState.h: |
| * UIProcess/ios/DragDropInteractionState.mm: |
| (WebKit::DragDropInteractionState::setDefaultDropPreview): |
| |
| Add a way to keep track of default drop previews that we observed during each call to |
| -dropInteraction:previewForDroppingItem:withDefault:. In the image placeholder drop scenario, we use these |
| default drop previews later on to create retargeted drop previews after the placeholders have been inserted. |
| |
| (WebKit::DragDropInteractionState::defaultDropPreview const): |
| (WebKit::DragDropInteractionState::deliverDelayedDropPreview): |
| |
| Add an alternate version of deliverDelayedDropPreview that is used when inserting image placeholders. Rather |
| than use text indicator data of the final dropped content on the page, use the root-view-coordinate rects of |
| each of the placeholder elements to reposition the default drop previews. |
| |
| There's additional logic here to handle the case where the final image is taller than the height of the |
| unobscured content rect, in which case we clip the drop preview using UIDragPreviewParameter's visiblePath to |
| prevent the drop preview from being shown outside of the bounds of the web view. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _deliverDelayedDropPreviewIfPossible:]): |
| (sizesOfPlaceholderElementsToInsertWhenDroppingItems): |
| |
| Collects the list of expected image sizes for the dropped item providers, or an empty list in the case where |
| any of the item providers may not be represented as inline images or do not have predetermined sizes. |
| |
| (-[WKContentView _handleDropByInsertingImagePlaceholders:session:]): |
| |
| If possible, handles the drop by inserting image placeholders instead of waiting for the data to finish loading |
| before dropping. Returns whether or not we decided to proceed with the image placeholder drop. |
| |
| (-[WKContentView dropInteraction:performDrop:]): |
| (-[WKContentView dropInteraction:item:willAnimateDropWithAnimator:]): |
| |
| Fixes a bug where the unselected content snapshot view could linger around on the web view forever after a drop |
| where the data doesn't load in time for the drop to finish by keeping track of whether there is an actively |
| animating drag item, and only applying the unselected content snapshot if so. |
| |
| (-[WKContentView dropInteraction:previewForDroppingItem:withDefault:]): |
| |
| Stash the default drop preview away here. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::insertDroppedImagePlaceholders): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::insertDroppedImagePlaceholders): |
| |
| See WebCore ChangeLog for more information. |
| |
| (WebKit::WebPage::didFinishLoadingImageForElement): |
| |
| If the image that finished loading is a dropped image placeholder, allow DragController to "finalize" it by |
| stripping away some styles that were temporarily added. |
| |
| 2019-09-23 Alex Christensen <achristensen@webkit.org> |
| |
| REGRESSION(250143) Disk cache should be enabled for Safari |
| https://bugs.webkit.org/show_bug.cgi?id=202117 |
| |
| Reviewed by Brady Eidson. |
| |
| r250143 made it so in Safari, when setCacheModel is called for the first time in NetworkProcess::initializeNetworkProcess, |
| it didn't have a path to check available disk space. This resulted in disabling the disk cache in Safari, which caused a |
| huge performance regression. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| (WebKit::NetworkProcess::setCacheModel): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::setCacheModel): |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::setCacheModel): |
| |
| 2019-09-16 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] LocalAuthenticator tests are failing on internal bots |
| https://bugs.webkit.org/show_bug.cgi?id=201844 |
| <rdar://problem/54278693> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch adds a way for mock tests to select a credential in getAssertion |
| ceremonies such that a test can ensure it always uses the credential it manages. |
| Credentials managed by other test could be deleted at anytime. |
| |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration): |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| (WebKit::LocalAuthenticator::getAssertion): |
| * UIProcess/WebAuthentication/Cocoa/LocalConnection.h: |
| * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: |
| (WebKit::LocalConnection::selectCredential const): |
| * UIProcess/WebAuthentication/Mock/MockLocalConnection.h: |
| * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm: |
| (WebKit::MockLocalConnection::selectCredential const): |
| * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h: |
| |
| 2019-09-23 David Quesada <david_quesada@apple.com> |
| |
| [iOS] REGRESSION(r250151): Occasional assertion failures in ShareableBitmap::~ShareableBitmap() |
| https://bugs.webkit.org/show_bug.cgi?id=202112 |
| rdar://problem/55624598 |
| |
| Reviewed by Chris Dumez. |
| |
| * Shared/cg/ShareableBitmapCG.cpp: |
| (WebKit::ShareableBitmap::releaseDataProviderData): |
| It is possible and valid for a UIImage created from a ShareableBitmap's CGImage representation |
| to be deallocated on a background thread. When this happens, releaseDataProviderData() should |
| ensure it's running on the main thread before deref'ing the ShareableBitmap. Otherwise the |
| bitmap can be deallocated on the background thread, violating an assertion added in r250151. |
| |
| 2019-09-23 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Improve the Uncaught Exception View file a bug link |
| https://bugs.webkit.org/show_bug.cgi?id=201717 |
| |
| Reviewed by Devin Rousso. |
| |
| * UIProcess/WebInspectorProxy.cpp: |
| (WebKit::WebInspectorProxy::bringInspectedPageToFront): |
| * UIProcess/WebInspectorProxy.h: |
| * UIProcess/WebInspectorProxy.messages.in: |
| Provide a way to bring the inspected page to the foreground. |
| |
| * WebProcess/WebPage/WebInspectorUI.cpp: |
| (WebKit::WebInspectorUI::openInNewTab): |
| Use it when opening a new tab beside the inspected page. |
| |
| 2019-09-23 Brent Fulgham <bfulgham@apple.com> |
| |
| Unreviewed build fix after r250169 and r250236. |
| |
| * NetworkProcess/curl/NetworkDataTaskCurl.cpp: |
| (WebKit::NetworkDataTaskCurl::createCurlRequest): |
| * UIProcess/API/C/curl/WKWebsiteDataStoreRefCurl.cpp: |
| (WKWebsiteDataStoreEnableDefaultNetworkProxySettings): |
| (WKWebsiteDataStoreEnableCustomNetworkProxySettings): |
| (WKWebsiteDataStoreDisableNetworkProxySettings): |
| |
| 2019-09-23 David Kilzer <ddkilzer@apple.com> |
| |
| clang-tidy: Fix unnecessary copy/ref churn of for loop variables in WebKit |
| <https://webkit.org/b/202096> |
| |
| Reviewed by Darin Adler. |
| |
| Fix unwanted copying/ref churn of loop variables by making them |
| const references. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::domainsToString): |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant presentationRectForElementUsingClosestIndicatedRect]): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _singleTapDidReset:]): |
| * UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm: |
| (-[WKDataListSuggestionsControl textSuggestions]): |
| |
| 2019-09-23 Chris Dumez <cdumez@apple.com> |
| |
| WebPage::sessionID() does not need to get the sessionID from there WebCore Page |
| https://bugs.webkit.org/show_bug.cgi?id=202094 |
| |
| Reviewed by Youenn Fablet. |
| |
| WebPage::sessionID() does not need to get the sessionID from there WebCore Page, it can |
| simply get the sessionID from the WebProcess singleton, now that we have a single session |
| per WebProcess. This will avoid potential crashes trying to dereference m_page to get the |
| sessionID, since m_page can be null. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::sessionID const): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::sessionID const): Deleted. |
| |
| 2019-09-23 Youenn Fablet <youenn@apple.com> |
| |
| Simplify UserMediaPermissionRequestManager management of UserMediaRequest |
| https://bugs.webkit.org/show_bug.cgi?id=201688 |
| |
| Reviewed by Eric Carlson. |
| |
| Instead of having two maps to go from ID to request and request to ID, |
| Make request own its ID and keep a single ID to request map. |
| Rename it to m_ongoingUserMediaRequests. |
| |
| Rename requests that are not processed because the document cannot start media as m_pendingUserMediaRequests. |
| In case the request is cancelled following the stopping of active dom objects, we just remove it from m_pendingUserMediaRequests |
| instead of denying the request. This matches Chrome and Firefox behavior. |
| |
| * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp: |
| (WebKit::UserMediaPermissionRequestManager::startUserMediaRequest): |
| (WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest): |
| (WebKit::UserMediaPermissionRequestManager::cancelUserMediaRequest): |
| (WebKit::UserMediaPermissionRequestManager::mediaCanStart): |
| (WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted): |
| (WebKit::UserMediaPermissionRequestManager::userMediaAccessWasDenied): |
| (WebKit::UserMediaPermissionRequestManager::addDeviceChangeObserver): |
| (WebKit::generateRequestID): Deleted. |
| (WebKit::UserMediaPermissionRequestManager::removeMediaRequestFromMaps): Deleted. |
| * WebProcess/MediaStream/UserMediaPermissionRequestManager.h: |
| |
| 2019-09-23 Patrick Griffis <pgriffis@igalia.com> |
| |
| [GTK][WPE] Don't use prgname in dbus-proxy socket path |
| https://bugs.webkit.org/show_bug.cgi?id=201979 |
| |
| The path length for the socket is limited to 108 bytes so it is easy for a long |
| prgname to cause it to get truncated and fail. Since we only allow the socket |
| path into the sandbox the unique directory isn't necessary. |
| |
| Reviewed by Michael Catanzaro. |
| |
| * UIProcess/Launcher/glib/BubblewrapLauncher.cpp: |
| (WebKit::XDGDBusProxyLauncher::setAddress): |
| |
| 2019-09-23 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [SOUP] Stop setting G_TLS_GNUTLS_PRIORITY |
| https://bugs.webkit.org/show_bug.cgi?id=172154 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Nowadays, I maintain glib-networking. WebKit doesn't need to override its defaults to be |
| secure anymore. By overriding glib-networking's default priority, WebKit is force-reenabling |
| TLS 1.0 and TLS 1.1 even when glib-networking has disabled them. |
| |
| * NetworkProcess/EntryPoint/unix/NetworkProcessMain.cpp: |
| (main): |
| * WebProcess/EntryPoint/unix/WebProcessMain.cpp: |
| (main): |
| |
| 2019-09-21 Dan Bernstein <mitz@apple.com> |
| |
| Fix an assertion failure introduced in r250186. |
| |
| * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: |
| (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes): Corrected the |
| assertion. |
| |
| 2019-09-21 Chris Dumez <cdumez@apple.com> |
| |
| Reduce use of SessionID::defaultSessionID() in WebKit |
| https://bugs.webkit.org/show_bug.cgi?id=202080 |
| |
| Reviewed by Alex Christensen. |
| |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::convertMainResourceLoadToDownload): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::convertMainResourceLoadToDownload): |
| * WebProcess/WebPage/WebFrame.h: |
| |
| 2019-09-21 Chris Dumez <cdumez@apple.com> |
| |
| Drop unnecessary NetworkProcess::m_sessionByConnection |
| https://bugs.webkit.org/show_bug.cgi?id=202088 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| * NetworkProcess/NetworkProcess.h: |
| |
| 2019-09-21 Chris Dumez <cdumez@apple.com> |
| |
| WebIDBConnectionToClient does not need to be RefCounted or a SessionID |
| https://bugs.webkit.org/show_bug.cgi?id=202089 |
| |
| Reviewed by Alex Christensen. |
| |
| WebIDBConnectionToClient does not need to be RefCounted, the ref() / deref() virtual function |
| it implemented from its interface were dead code. We now stop subclassing RefCounted and have |
| the NetworkConnectionToWebProcess fully own the WebIDBConnectionToClient. Instead of the |
| WebIDBConnectionToClient having 3 data members for the NetworkProcess, the sessionID and the IPC |
| connection, use a single data member to its NetworkConnectionToWebProcess parent. It can get |
| everything it needs from its parent. |
| |
| * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp: |
| (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient): |
| (WebKit::WebIDBConnectionToClient::idbServer): |
| (WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess): |
| (WebKit::WebIDBConnectionToClient::messageSenderConnection const): |
| (WebKit::WebIDBConnectionToClient::connectionToClient): |
| (WebKit::WebIDBConnectionToClient::deleteDatabase): |
| (WebKit::WebIDBConnectionToClient::openDatabase): |
| (WebKit::WebIDBConnectionToClient::abortTransaction): |
| (WebKit::WebIDBConnectionToClient::commitTransaction): |
| (WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction): |
| (WebKit::WebIDBConnectionToClient::createObjectStore): |
| (WebKit::WebIDBConnectionToClient::deleteObjectStore): |
| (WebKit::WebIDBConnectionToClient::renameObjectStore): |
| (WebKit::WebIDBConnectionToClient::clearObjectStore): |
| (WebKit::WebIDBConnectionToClient::createIndex): |
| (WebKit::WebIDBConnectionToClient::deleteIndex): |
| (WebKit::WebIDBConnectionToClient::renameIndex): |
| (WebKit::WebIDBConnectionToClient::putOrAdd): |
| (WebKit::WebIDBConnectionToClient::getRecord): |
| (WebKit::WebIDBConnectionToClient::getAllRecords): |
| (WebKit::WebIDBConnectionToClient::getCount): |
| (WebKit::WebIDBConnectionToClient::deleteRecord): |
| (WebKit::WebIDBConnectionToClient::openCursor): |
| (WebKit::WebIDBConnectionToClient::iterateCursor): |
| (WebKit::WebIDBConnectionToClient::establishTransaction): |
| (WebKit::WebIDBConnectionToClient::databaseConnectionPendingClose): |
| (WebKit::WebIDBConnectionToClient::databaseConnectionClosed): |
| (WebKit::WebIDBConnectionToClient::abortOpenAndUpgradeNeeded): |
| (WebKit::WebIDBConnectionToClient::didFireVersionChangeEvent): |
| (WebKit::WebIDBConnectionToClient::openDBRequestCancelled): |
| (WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer): |
| (WebKit::WebIDBConnectionToClient::getAllDatabaseNames): |
| * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| |
| 2019-09-21 Chris Dumez <cdumez@apple.com> |
| |
| Regression(iOS 13) web views do not deal properly with their window's UIScene changing |
| https://bugs.webkit.org/show_bug.cgi?id=202070 |
| <rdar://problem/55580699> |
| |
| Reviewed by Tim Horton. |
| |
| Web views do not deal properly with their window's UIScene changing. If a Safari window is in the |
| background for 1 minute, its UIScene will be detached and the window will get a new UIScene if |
| the user later switches to this window. Our web views listen to UIScene notifications to determine |
| their visibility and currently stop receiving visibility updates once the window’s UIScene has |
| changed. This causes view freezes because our WebContent process does not know its view is visible |
| and keeps its layer tree frozen. |
| |
| Previously, when our view would be added to a window, we would get this window's UIScene and listen |
| for UISceneDidEnterBackgroundNotification / UISceneWillEnterForegroundNotification for this UIScene |
| object. Instead, we now listen to these notifications for ALL the application's UIScenes. Our handler |
| then checks if the notification's UIScene object matches the current window's UIScene before |
| forwarding the notification to the rest of WebKit. |
| |
| * UIProcess/ApplicationStateTracker.mm: |
| (WebKit::ApplicationStateTracker::ApplicationStateTracker): |
| (WebKit::ApplicationStateTracker::~ApplicationStateTracker): |
| |
| 2019-09-21 Dan Bernstein <mitz@apple.com> |
| |
| Safari 13 may launch leftover 32-bit plug-in process from Safari 12’s WebKit, which crashes |
| https://bugs.webkit.org/show_bug.cgi?id=202077 |
| <rdar://problem/55547063> |
| |
| Reviewed by Sam Weinig. |
| |
| * Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm: |
| (WebKit::getPluginArchitecture): Removed support for i386 plug-ins. |
| |
| * UIProcess/Launcher/mac/ProcessLauncherMac.mm: |
| (WebKit::serviceName): Assert that the requested process type is not Plugin32. |
| |
| * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: |
| (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes): Assert that the |
| plug-in architecture is x86_64. |
| |
| 2019-09-21 Antoine Quint <graouts@apple.com> |
| |
| [Pointer Events] touch-action set to pan-x or pan-y alone should disable scrolling altogether if the intial gesture is in the disallowed direction |
| https://bugs.webkit.org/show_bug.cgi?id=202053 |
| <rdar://problem/54542190> |
| |
| Reviewed by Tim Horton. |
| |
| Although the Pointer Events specification does not specify this clearly (see https://github.com/w3c/pointerevents/issues/303), setting "touch-action" to a value |
| that only allows scrolling a specific direction ("pan-x" or "pan-y") should disable scrolling in the specified direction if the panning gesture initially is directed |
| in the opposite direction. In practice, this means that setting "touch-action: pan-y" on an element should disable scrolling if the user initially pans horizontally, |
| even if later on in the gesture the user pans vertically. This allows for sites that want to offer a programmatic horizontal scroller to disable vertical scrolling |
| if the user pans horizontally. |
| |
| In order to support this, we add four UISwipeGestureRecognizers, one for each direction, and we selectively allows touches to be recognizer for them based on the |
| "touch-action" value specified at the initial touch location for a given gesture. In the case of "touch-action: pan-y" we only allow the left and right swipe recognizers |
| to be enabled, and in the case of "touch-action: pan-x" we only allow the up and down swipe recognizers to be enabled. If any of those gesture recognizers is recognized, |
| scrolling will be disabled for the duration of this gesture. If a UIScrollView panning gesture recognizer is recognized prior to a swipe, they won't have a chance to be |
| recognized. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView cleanupInteraction]): |
| (-[WKContentView _removeDefaultGestureRecognizers]): |
| (-[WKContentView _addDefaultGestureRecognizers]): |
| (-[WKContentView gestureRecognizer:shouldReceiveTouch:]): |
| |
| 2019-09-19 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] Clean up handling of summary items and payment method updates |
| https://bugs.webkit.org/show_bug.cgi?id=202018 |
| <rdar://problem/55470632> |
| |
| Reviewed by Tim Horton. |
| |
| Now that PaymentMethodUpdate knows how to convert itself to a |
| PKPaymentRequestPaymentMethodUpdate, PaymentAuthorizationPresenter can merely pass the |
| converted update directly to the platform delegate rather than passing the individual |
| components and relying on the delegate to instantiate the platform update itself. Added |
| FIXMEs for applying a similar treatment to ShippingContactUpdate and ShippingMethodUpdate. |
| |
| * Platform/cocoa/PaymentAuthorizationPresenter.h: |
| * Platform/cocoa/PaymentAuthorizationPresenter.mm: |
| (WebKit::PaymentAuthorizationPresenter::completePaymentMethodSelection): |
| (WebKit::PaymentAuthorizationPresenter::completeShippingContactSelection): |
| (WebKit::PaymentAuthorizationPresenter::completeShippingMethodSelection): |
| * Platform/cocoa/WKPaymentAuthorizationDelegate.h: |
| * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: |
| (-[WKPaymentAuthorizationDelegate completePaymentMethodSelection:]): |
| (-[WKPaymentAuthorizationDelegate completeShippingContactSelection:]): |
| (-[WKPaymentAuthorizationDelegate completeShippingMethodSelection:]): |
| (-[WKPaymentAuthorizationDelegate _didSelectPaymentMethod:completion:]): |
| (-[WKPaymentAuthorizationDelegate _didSelectShippingContact:completion:]): |
| (-[WKPaymentAuthorizationDelegate _didSelectShippingMethod:completion:]): |
| (-[WKPaymentAuthorizationDelegate completeShippingContactSelection:summaryItems:shippingMethods:errors:]): Deleted. |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.h: |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.h: |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): |
| (WebKit::toPKPaymentSummaryItemType): Deleted. |
| (WebKit::toPKPaymentSummaryItem): Deleted. |
| (WebKit::toPKPaymentSummaryItems): Deleted. |
| * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: |
| (IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::encode): |
| (IPC::ArgumentCoder<WebCore::PaymentMethodUpdate>::decode): |
| |
| 2019-09-20 Keith Rollin <krollin@apple.com> |
| |
| Remove some support for < iOS 13 |
| https://bugs.webkit.org/show_bug.cgi?id=202027 |
| <rdar://problem/55547109> |
| |
| Reviewed by Alex Christensen. |
| |
| Remove some support for iOS versions less than 13.0. |
| |
| Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED |
| and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have |
| values >= 130000. This means that expressions like |
| "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and |
| "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True. |
| |
| After version checks have been removed, there are some cases where the |
| preprocessor conditional looks like "#if PLATFORM(MAC) || |
| PLATFORM(IOS_FAMILY)". These can be collapsed into "#if |
| PLATFORM(COCOA)". This additional cleanup will be performed in a |
| subsequent patch. |
| |
| This removal is part of a series of patches effecting the removal of |
| dead code for old versions of iOS. This particular pass involves |
| changes in which Joe Pecoraro was involved. These changes are isolated |
| from other similar changes in order to facilitate the reviewing |
| process. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]): |
| |
| 2019-09-20 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unnecessary abstractions around WebsiteDataStore |
| https://bugs.webkit.org/show_bug.cgi?id=201655 |
| |
| Reviewed by Chris Dumez. |
| |
| * PlatformFTW.cmake: |
| * PlatformWin.cmake: |
| * Sources.txt: |
| * SourcesCocoa.txt: |
| * SourcesGTK.txt: |
| * SourcesWPE.txt: |
| * UIProcess/API/APIHTTPCookieStore.cpp: |
| * UIProcess/API/APIHTTPCookieStore.h: |
| * UIProcess/API/APIPageConfiguration.cpp: |
| (API::PageConfiguration::websiteDataStore): |
| (API::PageConfiguration::setWebsiteDataStore): |
| * UIProcess/API/APIPageConfiguration.h: |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| * UIProcess/API/APIWebsiteDataStore.cpp: Removed. |
| * UIProcess/API/APIWebsiteDataStore.h: Removed. |
| * UIProcess/API/APIWebsitePolicies.cpp: |
| (API::WebsitePolicies::WebsitePolicies): |
| (API::WebsitePolicies::setWebsiteDataStore): |
| (API::WebsitePolicies::data): |
| * UIProcess/API/APIWebsitePolicies.h: |
| * UIProcess/API/C/WKAPICast.h: |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetCacheModel): |
| (WKContextGetCacheModel): |
| * UIProcess/API/C/WKFramePolicyListener.cpp: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreGetTypeID): |
| (WKWebsiteDataStoreGetDefaultDataStore): |
| (WKWebsiteDataStoreCreateNonPersistentDataStore): |
| (WKWebsiteDataStoreCreateWithConfiguration): |
| (WKWebsiteDataStoreGetHTTPCookieStore): |
| (WKWebsiteDataStoreSetResourceLoadStatisticsDebugModeWithCompletionHandler): |
| (WKWebsiteDataStoreSetResourceLoadStatisticsPrevalentResourceForDebugMode): |
| (WKWebsiteDataStoreSetStatisticsLastSeen): |
| (WKWebsiteDataStoreSetStatisticsPrevalentResource): |
| (WKWebsiteDataStoreSetStatisticsVeryPrevalentResource): |
| (WKWebsiteDataStoreDumpResourceLoadStatistics): |
| (WKWebsiteDataStoreIsStatisticsPrevalentResource): |
| (WKWebsiteDataStoreIsStatisticsVeryPrevalentResource): |
| (WKWebsiteDataStoreIsStatisticsRegisteredAsSubresourceUnder): |
| (WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder): |
| (WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo): |
| (WKWebsiteDataStoreSetStatisticsHasHadUserInteraction): |
| (WKWebsiteDataStoreIsStatisticsHasHadUserInteraction): |
| (WKWebsiteDataStoreSetStatisticsGrandfathered): |
| (WKWebsiteDataStoreIsStatisticsGrandfathered): |
| (WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin): |
| (WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin): |
| (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectTo): |
| (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectFrom): |
| (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectTo): |
| (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectFrom): |
| (WKWebsiteDataStoreSetStatisticsCrossSiteLoadWithLinkDecoration): |
| (WKWebsiteDataStoreSetStatisticsTimeToLiveUserInteraction): |
| (WKWebsiteDataStoreStatisticsProcessStatisticsAndDataRecords): |
| (WKWebsiteDataStoreStatisticsUpdateCookieBlocking): |
| (WKWebsiteDataStoreStatisticsSubmitTelemetry): |
| (WKWebsiteDataStoreSetStatisticsNotifyPagesWhenDataRecordsWereScanned): |
| (WKWebsiteDataStoreSetStatisticsIsRunningTest): |
| (WKWebsiteDataStoreSetStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval): |
| (WKWebsiteDataStoreSetStatisticsNotifyPagesWhenTelemetryWasCaptured): |
| (WKWebsiteDataStoreSetStatisticsMinimumTimeBetweenDataRecordsRemoval): |
| (WKWebsiteDataStoreSetStatisticsGrandfatheringTime): |
| (WKWebsiteDataStoreSetStatisticsMaxStatisticsEntries): |
| (WKWebsiteDataStoreSetStatisticsPruneEntriesDownTo): |
| (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore): |
| (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours): |
| (WKWebsiteDataStoreStatisticsClearThroughWebsiteDataRemoval): |
| (WKWebsiteDataStoreStatisticsDeleteCookiesForTesting): |
| (WKWebsiteDataStoreStatisticsHasLocalStorage): |
| (WKWebsiteDataStoreSetStatisticsCacheMaxAgeCap): |
| (WKWebsiteDataStoreStatisticsHasIsolatedSession): |
| (WKWebsiteDataStoreStatisticsResetToConsistentState): |
| (WKWebsiteDataStoreRemoveAllFetchCaches): |
| (WKWebsiteDataStoreRemoveFetchCacheForOrigin): |
| (WKWebsiteDataStoreRemoveAllIndexedDatabases): |
| (WKWebsiteDataStoreRemoveLocalStorage): |
| (WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations): |
| (WKWebsiteDataStoreGetFetchCacheOrigins): |
| (WKWebsiteDataStoreGetFetchCacheSizeForOrigin): |
| (WKWebsiteDataStoreCopyServiceWorkerRegistrationDirectory): |
| (WKWebsiteDataStoreSetServiceWorkerRegistrationDirectory): |
| (WKWebsiteDataStoreClearAllDeviceOrientationPermissions): |
| (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration): |
| (WKWebsiteDataStoreClearAdClickAttributionsThroughWebsiteDataRemoval): |
| * UIProcess/API/C/WKWebsitePolicies.cpp: |
| * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm: Removed. |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (+[WKWebsiteDataStore defaultDataStore]): |
| (+[WKWebsiteDataStore nonPersistentDataStore]): |
| (-[WKWebsiteDataStore dealloc]): |
| (-[WKWebsiteDataStore httpCookieStore]): |
| (-[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:]): |
| (-[WKWebsiteDataStore removeDataOfTypes:forDataRecords:completionHandler:]): |
| (+[WKWebsiteDataStore _defaultDataStoreExists]): |
| (+[WKWebsiteDataStore _deleteDefaultDataStoreForTesting]): |
| (-[WKWebsiteDataStore _initWithConfiguration:]): |
| (-[WKWebsiteDataStore _fetchDataRecordsOfTypes:withOptions:completionHandler:]): |
| (-[WKWebsiteDataStore _resourceLoadStatisticsEnabled]): |
| (-[WKWebsiteDataStore _setResourceLoadStatisticsEnabled:]): |
| (-[WKWebsiteDataStore _resourceLoadStatisticsDebugMode]): |
| (-[WKWebsiteDataStore _setResourceLoadStatisticsDebugMode:]): |
| (-[WKWebsiteDataStore _cacheStorageDirectory]): |
| (-[WKWebsiteDataStore _setCacheStorageDirectory:]): |
| (-[WKWebsiteDataStore _serviceWorkerRegistrationDirectory]): |
| (-[WKWebsiteDataStore _setServiceWorkerRegistrationDirectory:]): |
| (-[WKWebsiteDataStore _setBoundInterfaceIdentifier:]): |
| (-[WKWebsiteDataStore _boundInterfaceIdentifier]): |
| (-[WKWebsiteDataStore _setAllowsCellularAccess:]): |
| (-[WKWebsiteDataStore _allowsCellularAccess]): |
| (-[WKWebsiteDataStore _setProxyConfiguration:]): |
| (-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]): |
| (-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]): |
| (-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]): |
| (-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]): |
| (-[WKWebsiteDataStore _proxyConfiguration]): |
| (-[WKWebsiteDataStore _indexedDBDatabaseDirectory]): |
| (-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldSubmitTelemetry:]): |
| (-[WKWebsiteDataStore _setResourceLoadStatisticsTestingCallback:]): |
| (-[WKWebsiteDataStore _getAllStorageAccessEntriesFor:completionHandler:]): |
| (-[WKWebsiteDataStore _scheduleCookieBlockingUpdate:]): |
| (-[WKWebsiteDataStore _setPrevalentDomain:completionHandler:]): |
| (-[WKWebsiteDataStore _getIsPrevalentDomain:completionHandler:]): |
| (-[WKWebsiteDataStore _clearPrevalentDomain:completionHandler:]): |
| (-[WKWebsiteDataStore _processStatisticsAndDataRecords:]): |
| (-[WKWebsiteDataStore _hasRegisteredServiceWorker]): |
| (-[WKWebsiteDataStore _delegate]): |
| (-[WKWebsiteDataStore set_delegate:]): |
| * UIProcess/API/Cocoa/WKWebsiteDataStoreInternal.h: |
| * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp: Removed. |
| * UIProcess/API/glib/WebKitWebsiteDataManager.cpp: |
| (webkitWebsiteDataManagerSetProperty): |
| (webkitWebsiteDataManagerGetDataStore): |
| (webkit_website_data_manager_get_local_storage_directory): |
| (webkit_website_data_manager_get_disk_cache_directory): |
| (webkit_website_data_manager_get_offline_application_cache_directory): |
| (webkit_website_data_manager_get_indexeddb_directory): |
| (webkit_website_data_manager_get_websql_directory): |
| (webkit_website_data_manager_get_hsts_cache_directory): |
| (webkit_website_data_manager_fetch): |
| (webkit_website_data_manager_remove): |
| (webkit_website_data_manager_clear): |
| (webkitWebsiteDataManagerCreate): Deleted. |
| * UIProcess/API/glib/WebKitWebsiteDataManagerPrivate.h: |
| * UIProcess/API/win/APIWebsiteDataStoreWin.cpp: Removed. |
| * UIProcess/Cocoa/NavigationState.mm: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::NetworkProcessProxy): |
| (WebKit::NetworkProcessProxy::websiteDataStoreFromSessionID): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebFramePolicyListenerProxy.cpp: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::WebPageProxy): |
| (WebKit::WebPageProxy::receivedNavigationPolicyDecision): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::m_webProcessCache): |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess): |
| (WebKit::WebProcessPool::tryTakePrewarmedProcess): |
| (WebKit::WebProcessPool::processDidFinishLaunching): |
| (WebKit::WebProcessPool::processForRegistrableDomain): |
| (WebKit::WebProcessPool::createWebPage): |
| (WebKit::WebProcessPool::mayHaveRegisteredServiceWorkers): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::defaultApplicationCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultCacheStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultNetworkCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultMediaCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultIndexedDBDatabaseDirectory): |
| (WebKit::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory): |
| (WebKit::WebsiteDataStore::defaultLocalStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultMediaKeysStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultWebSQLDatabaseDirectory): |
| (WebKit::WebsiteDataStore::defaultResourceLoadStatisticsDirectory): |
| (WebKit::WebsiteDataStore::defaultJavaScriptConfigurationDirectory): |
| (WebKit::WebsiteDataStore::tempDirectoryFileSystemRepresentation): |
| (WebKit::WebsiteDataStore::cacheDirectoryFileSystemRepresentation): |
| (WebKit::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::globalDefaultDataStore): |
| (WebKit::WebsiteDataStore::defaultDataStore): |
| (WebKit::WebsiteDataStore::deleteDefaultDataStoreForTesting): |
| (WebKit::WebsiteDataStore::defaultDataStoreExists): |
| (WebKit::WebsiteDataStore::defaultDataStoreConfiguration): |
| (WebKit::WebsiteDataStore::isAssociatedProcessPool const): |
| (WebKit::WebsiteDataStore::defaultMediaCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultJavaScriptConfigurationDirectory): |
| (WebKit::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| * UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp: |
| (WebKit::WebsiteDataStore::defaultApplicationCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultCacheStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultNetworkCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultIndexedDBDatabaseDirectory): |
| (WebKit::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory): |
| (WebKit::WebsiteDataStore::defaultLocalStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultMediaKeysStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultWebSQLDatabaseDirectory): |
| (WebKit::WebsiteDataStore::defaultResourceLoadStatisticsDirectory): |
| (WebKit::WebsiteDataStore::cacheDirectoryFileSystemRepresentation): |
| (WebKit::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): |
| * UIProcess/glib/WebProcessProxyGLib.cpp: |
| (WebKit::WebProcessProxy::platformGetLaunchOptions): |
| * UIProcess/glib/WebsiteDataStoreGLib.cpp: Copied from Source/WebKit/UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp. |
| (API::WebsiteDataStore::defaultApplicationCacheDirectory): Deleted. |
| (API::WebsiteDataStore::defaultNetworkCacheDirectory): Deleted. |
| (API::WebsiteDataStore::defaultCacheStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultIndexedDBDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory): Deleted. |
| (API::WebsiteDataStore::defaultLocalStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultMediaKeysStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultWebSQLDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::defaultHSTSDirectory): Deleted. |
| (API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory): Deleted. |
| (API::WebsiteDataStore::cacheDirectoryFileSystemRepresentation): Deleted. |
| (API::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): Deleted. |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp: |
| (WebKit::WebMediaKeyStorageManager::setWebsiteDataStore): |
| |
| 2019-09-20 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (iOS 13): rAF stops firing when navigating away cross-origin and then back |
| https://bugs.webkit.org/show_bug.cgi?id=201767 |
| <rdar://problem/55350854> |
| |
| Reviewed by Tim Horton. |
| |
| This is a follow-up to r249961 to address crashes when navigating back cross-origin to a page |
| that uses requestAnimationFrame. r249961 took care of moving RemoteLayerTreeDisplayRefreshMonitor |
| objects from one RemoteLayerTreeDrawingArea to another but failed to tell those monitors |
| about their new drawingArea. As a result, RemoteLayerTreeDrawingArea::willDestroyDisplayRefreshMonitor() |
| would not get called on the new drawing area when it should have. |
| |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm: |
| (WebKit::RemoteLayerTreeDisplayRefreshMonitor::updateDrawingArea): |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::adoptDisplayRefreshMonitorsFromDrawingArea): |
| |
| 2019-09-20 Keith Rollin <krollin@apple.com> |
| |
| Remove some support for < iOS 13 |
| https://bugs.webkit.org/show_bug.cgi?id=201967 |
| <rdar://problem/55504738> |
| |
| Reviewed by Andy Estes. |
| |
| Remove some support for iOS versions less than 13.0. |
| |
| Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED |
| and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have |
| values >= 130000. This means that expressions like |
| "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and |
| "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True. |
| |
| After version checks have been removed, there are some cases where the |
| preprocessor conditional looks like "#if PLATFORM(MAC) || |
| PLATFORM(IOS_FAMILY)". These can be collapsed into "#if |
| PLATFORM(COCOA)". This additional cleanup will be performed in a |
| subsequent patch. |
| |
| This removal is part of a series of patches effecting the removal of |
| dead code for old versions of iOS. This particular pass involves |
| changes in which Andy Estes was involved. These changes are isolated |
| from other similar changes in order to facilitate the reviewing |
| process. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _dataForPreviewItemController:atPosition:type:]): |
| * UIProcess/ios/forms/WKFileUploadPanel.mm: |
| (-[WKFileUploadPanel _uploadItemFromMediaInfo:successBlock:failureBlock:]): |
| |
| 2019-09-20 Tim Horton <timothy_horton@apple.com> |
| |
| Sanitize suggested filenames used for saving PDFs |
| https://bugs.webkit.org/show_bug.cgi?id=202034 |
| <rdar://problem/53183075> |
| |
| Reviewed by Chris Dumez. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::didFinishLoadingDataForCustomContentProvider): |
| (WebKit::WebPageProxy::saveDataToFileInDownloadsFolder): |
| (WebKit::WebPageProxy::savePDFToFileInDownloadsFolder): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::savePDFToTemporaryFolderAndOpenWithNativeApplicationRaw): Deleted. |
| * UIProcess/mac/WebPageProxyMac.mm: |
| (WebKit::WebPageProxy::savePDFToTemporaryFolderAndOpenWithNativeApplication): |
| (WebKit::WebPageProxy::savePDFToTemporaryFolderAndOpenWithNativeApplicationRaw): Deleted. |
| Sanitize suggested filenames to ensure that they comprise only one path component |
| when concatenated with their destination directory. |
| |
| 2019-09-20 Chris Dumez <cdumez@apple.com> |
| |
| Add release logging for when a view is added / removed from a window |
| https://bugs.webkit.org/show_bug.cgi?id=202050 |
| |
| Reviewed by Tim Horton. |
| |
| Add release logging for when a view is added / removed from a window to help determine the |
| view's visibility in the logs. |
| |
| * UIProcess/ios/WKApplicationStateTrackingView.mm: |
| (-[WKApplicationStateTrackingView willMoveToWindow:]): |
| (-[WKApplicationStateTrackingView didMoveToWindow]): |
| |
| 2019-09-20 Chris Dumez <cdumez@apple.com> |
| |
| ApplicationStateTracker::m_isBackground initialization does not account for UIScenes |
| https://bugs.webkit.org/show_bug.cgi?id=202048 |
| |
| Reviewed by Geoffrey Garen. |
| |
| ApplicationStateTracker::m_isBackground initialization does not account for UIScenes, it merely checks |
| the visibility state of the whole app. It should instead check the visibility state of the window's |
| UIScene. |
| |
| This patch also refactors the code a little bit to reduce #ifdef'ing. |
| |
| * UIProcess/ApplicationStateTracker.mm: |
| (WebKit::ApplicationStateTracker::ApplicationStateTracker): |
| |
| 2019-09-20 Chris Dumez <cdumez@apple.com> |
| |
| Document no longer needs to store a SessionID |
| https://bugs.webkit.org/show_bug.cgi?id=202024 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Document no longer needs to store a SessionID, now that we have a single |
| session per WebProcess. It can simply get its sessionID from its Page. |
| |
| * WebProcess/WebPage/WebCookieJar.cpp: |
| (WebKit::WebCookieJar::cookieRequestHeaderFieldValue const): |
| * WebProcess/WebPage/WebCookieJar.h: |
| |
| 2019-09-20 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] ASSERTION FAILED: Unsafe to ref/deref of ShareableBitmap from different threads |
| https://bugs.webkit.org/show_bug.cgi?id=201712 |
| <rdar://problem/55289916> |
| |
| Reviewed by Tim Horton. |
| |
| Make sure ShareableBitmap objects are always ref'd / deref'd on the main thread by dispatching to |
| the main thread in ShareableBitmap::releaseBitmapContextData() before calling deref(). |
| |
| * Shared/ShareableBitmap.cpp: |
| (WebKit::ShareableBitmap::ShareableBitmap): |
| (WebKit::ShareableBitmap::~ShareableBitmap): |
| * Shared/cg/ShareableBitmapCG.cpp: |
| (WebKit::ShareableBitmap::createGraphicsContext): |
| (WebKit::ShareableBitmap::releaseBitmapContextData): |
| |
| 2019-09-20 Alex Christensen <achristensen@webkit.org> |
| |
| Begin moving WebsiteDataStore setters to WebsiteDataStoreConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=202025 |
| |
| Reviewed by Chris Dumez. |
| |
| Most of these were only needed before initNonPersistentConfiguration existed. |
| |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp: |
| (WKWebsiteDataStoreConfigurationGetPerOriginStorageQuota): |
| (WKWebsiteDataStoreConfigurationSetPerOriginStorageQuota): |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetPerOriginStorageQuota): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _initWithConfiguration:]): |
| (-[WKWebsiteDataStore _perOriginStorageQuota]): |
| (-[WKWebsiteDataStore _setPerOriginStorageQuota:]): |
| * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration perOriginStorageQuota]): |
| (-[_WKWebsiteDataStoreConfiguration setPerOriginStorageQuota:]): |
| (-[_WKWebsiteDataStoreConfiguration boundInterfaceIdentifier]): |
| (-[_WKWebsiteDataStoreConfiguration setBoundInterfaceIdentifier:]): |
| (-[_WKWebsiteDataStoreConfiguration allowsCellularAccess]): |
| (-[_WKWebsiteDataStoreConfiguration setAllowsCellularAccess:]): |
| (-[_WKWebsiteDataStoreConfiguration proxyConfiguration]): |
| (-[_WKWebsiteDataStoreConfiguration setProxyConfiguration:]): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::WebsiteDataStore): |
| (WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier): |
| (WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| (WebKit::WebsiteDataStore::setBoundInterfaceIdentifier): |
| (WebKit::WebsiteDataStore::boundInterfaceIdentifier): |
| (WebKit::WebsiteDataStore::sourceApplicationBundleIdentifier const): |
| (WebKit::WebsiteDataStore::sourceApplicationSecondaryIdentifier const): |
| (WebKit::WebsiteDataStore::setAllowsCellularAccess): |
| (WebKit::WebsiteDataStore::allowsCellularAccess): |
| (WebKit::WebsiteDataStore::setProxyConfiguration): |
| (WebKit::WebsiteDataStore::proxyConfiguration): |
| (WebKit::WebsiteDataStore::setPerOriginStorageQuota): Deleted. |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::boundInterfaceIdentifier const): |
| (WebKit::WebsiteDataStoreConfiguration::setBoundInterfaceIdentifier): |
| (WebKit::WebsiteDataStoreConfiguration::allowsCellularAccess const): |
| (WebKit::WebsiteDataStoreConfiguration::setAllowsCellularAccess): |
| (WebKit::WebsiteDataStoreConfiguration::proxyConfiguration const): |
| (WebKit::WebsiteDataStoreConfiguration::setProxyConfiguration): |
| |
| 2019-09-20 Alex Christensen <achristensen@webkit.org> |
| |
| Introduce LegacyGlobalSettings for settings the NetworkProcess needs from a WebProcessPool |
| https://bugs.webkit.org/show_bug.cgi?id=201970 |
| |
| Reviewed by Geoff Garen. |
| |
| I'm starting by moving the cache model to this new abstraction. |
| We were using it in tests to disable the page cache, which should be done with a boolean on the pool configuration, not by changing the cache model. |
| We were also using it in WKContextSetCacheModel which has several clients that won't change quickly, so this abstraction is used to maintain existing behavior. |
| I need this so I can make a NetworkProcess not depend on anything from a WebProcessPool when starting. |
| |
| * Sources.txt: |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetCacheModel): |
| (WKContextGetCacheModel): |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration pageCacheEnabled]): |
| (-[_WKProcessPoolConfiguration setPageCacheEnabled:]): |
| * UIProcess/LegacyGlobalSettings.cpp: Added. |
| (WebKit::LegacyGlobalSettings::singleton): |
| (WebKit::LegacyGlobalSettings::setCacheModel): |
| * UIProcess/LegacyGlobalSettings.h: Added. |
| (WebKit::LegacyGlobalSettings::cacheModel const): |
| * UIProcess/WebProcessCache.cpp: |
| (WebKit::WebProcessCache::updateCapacity): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::initializeNewWebProcess): |
| (WebKit::WebProcessPool::updateMaxSuspendedPageCount): |
| (WebKit::WebProcessPool::setCacheModel): |
| * UIProcess/WebProcessPool.h: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-09-20 Alex Christensen <achristensen@webkit.org> |
| |
| Deprecate unused C API aliases for WebsiteDataStore |
| https://bugs.webkit.org/show_bug.cgi?id=202029 |
| |
| Reviewed by Chris Dumez. |
| |
| This is a piece of r249768. |
| |
| * UIProcess/API/C/WKApplicationCacheManager.cpp: |
| (WKApplicationCacheManagerGetTypeID): |
| (WKApplicationCacheManagerGetApplicationCacheOrigins): |
| (WKApplicationCacheManagerDeleteEntriesForOrigin): |
| (WKApplicationCacheManagerDeleteAllEntries): |
| * UIProcess/API/C/WKApplicationCacheManager.h: |
| * UIProcess/API/C/WKKeyValueStorageManager.cpp: |
| (WKKeyValueStorageManagerGetTypeID): |
| (WKKeyValueStorageManagerGetOriginKey): |
| (WKKeyValueStorageManagerGetCreationTimeKey): |
| (WKKeyValueStorageManagerGetModificationTimeKey): |
| (WKKeyValueStorageManagerGetKeyValueStorageOrigins): |
| (WKKeyValueStorageManagerGetStorageDetailsByOrigin): |
| (WKKeyValueStorageManagerDeleteEntriesForOrigin): |
| (WKKeyValueStorageManagerDeleteAllEntries): |
| * UIProcess/API/C/WKKeyValueStorageManager.h: |
| * UIProcess/API/C/WKResourceCacheManager.cpp: |
| (WKResourceCacheManagerGetTypeID): |
| (WKResourceCacheManagerGetCacheOrigins): |
| (WKResourceCacheManagerClearCacheForOrigin): |
| (WKResourceCacheManagerClearCacheForAllOrigins): |
| (toWebsiteDataTypes): Deleted. |
| * UIProcess/API/C/WKResourceCacheManager.h: |
| |
| 2019-09-20 Alex Christensen <achristensen@webkit.org> |
| |
| Remove functionality to disable TLS fallback |
| https://bugs.webkit.org/show_bug.cgi?id=201998 |
| |
| Reviewed by Geoff Garen. |
| |
| Since r249019 it is not used. It was a useful experiment and I'm glad we didn't see any regressions. |
| |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::privateSessionParameters): |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _setAllowsTLSFallback:]): |
| (-[WKWebsiteDataStore _allowsTLSFallback]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::setAllowsTLSFallback): Deleted. |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| (WebKit::WebsiteDataStore::allowsTLSFallback const): Deleted. |
| |
| 2019-09-20 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused storage paths on APIProcessPoolConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=202028 |
| |
| Reviewed by Chris Dumez. |
| |
| This is a piece of r249768. |
| There is no way to set these paths and they have been replaced by WebsiteDataStore paths. |
| There was one remaining use of the global disk cache directory in NetworkProcess::setCacheModel, |
| which I replaced with the default session's disk cache directory, which is equivalent. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::setCacheModel): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::diskCacheDirectory const): Deleted. |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| (WebKit::NetworkProcessCreationParameters::NetworkProcessCreationParameters): Deleted. |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::Cache::open): |
| (WebKit::NetworkCache::Cache::Cache): |
| * NetworkProcess/cache/NetworkCache.h: |
| (WebKit::NetworkCache::Cache::storageDirectory): |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa): |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration): Deleted. |
| (API::ProcessPoolConfiguration::ProcessPoolConfiguration): Deleted. |
| (API::ProcessPoolConfiguration::~ProcessPoolConfiguration): Deleted. |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextConstructed): |
| (webkit_web_context_set_disk_cache_directory): |
| (websiteDataStoreConfigurationForWebProcessPoolConfiguration): Deleted. |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::resolvePathsForSandboxExtensions): |
| (WebKit::WebProcessPool::webProcessDataStoreParameters): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::processPools const): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| |
| 2019-09-20 Keith Rollin <krollin@apple.com> |
| |
| Remove some support for < iOS 13 |
| https://bugs.webkit.org/show_bug.cgi?id=202032 |
| <rdar://problem/55548468> |
| |
| Reviewed by Alex Christensen. |
| |
| Remove some support for iOS versions less than 13.0. |
| |
| Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED |
| and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have |
| values >= 130000. This means that expressions like |
| "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and |
| "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True. |
| |
| This removal is part of a series of patches effecting the removal of |
| dead code for old versions of iOS. This particular pass involves |
| changes in which Dan Bates was involved. These changes are isolated |
| from other similar changes in order to facilitate the reviewing |
| process. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _interpretKeyEvent:isCharEvent:]): |
| |
| 2019-09-20 Keith Rollin <krollin@apple.com> |
| |
| Remove some support for < iOS 13 |
| https://bugs.webkit.org/show_bug.cgi?id=201973 |
| <rdar://problem/55506966> |
| |
| Reviewed by Alex Christensen. |
| |
| Remove some support for iOS versions less than 13.0. |
| |
| Update conditionals that reference __IPHONE_OS_VERSION_MIN_REQUIRED |
| and __IPHONE_OS_VERSION_MAX_ALLOWED, assuming that they both have |
| values >= 130000. This means that expressions like |
| "__IPHONE_OS_VERSION_MIN_REQUIRED < 101300" are always False and |
| "__IPHONE_OS_VERSION_MIN_REQUIRED >= 101300" are always True. |
| |
| This removal is part of a series of patches effecting the removal of |
| dead code for old versions of iOS. This particular pass involves |
| changes in which Chris Dumez was involved. These changes are isolated |
| from other similar changes in order to facilitate the reviewing |
| process. |
| |
| * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm: |
| (WebKit::Download::resume): |
| |
| 2019-09-20 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, fix confusing release logging under WebPageProxy::loadRequestWithNavigationShared(). |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| |
| 2019-09-20 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r248832): Unable to quicklook HTML files in Mail |
| https://bugs.webkit.org/show_bug.cgi?id=202012 |
| <rdar://problem/55285295> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Follow-up to fix bug in r250110. Now that loadFile() calls |
| maybeInitializeSandboxExtensionHandle(), it no longer needs to |
| call assumeReadAccessToBaseURL(). This is because maybeInitializeSandboxExtensionHandle() |
| already take care of it. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::loadFile): |
| |
| 2019-09-20 Joonghun Park <pjh0718@gmail.com> |
| |
| Unreviewed. Remove duplicated HashMap iteration since r248734. |
| |
| ASSERT statement already exists for |storageNamespaceID|, |
| so |HashMap.get| for the parameter is not needed. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::destroySessionStorageNamespace): |
| |
| 2019-09-20 Joonghun Park <pjh0718@gmail.com> |
| |
| Unreviewed. Fix Build warning below since r248734. |
| |
| warning: unused variable ‘foo’ [-Wunused-variable] |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::destroySessionStorageNamespace): |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::add): |
| (WebKit::StorageManagerSet::waitUntilTasksFinished): |
| |
| 2019-09-19 Brent Fulgham <bfulgham@apple.com> |
| |
| [FTW, WinCairo] Support running tests in Release mode |
| https://bugs.webkit.org/show_bug.cgi?id=202021 |
| |
| Reviewed by Don Olmstead. |
| |
| In Bug 201597, we added new features to better lock down JSC features in the |
| potentially untrusted WebContent process. |
| |
| Unfortunately, this change included XPC Dictionary items used at startup to |
| lock down JSC features before entering the main execution of the process. These |
| changes were not done for the WinCairo or FTW ports. |
| |
| We need to pass the state of the JIT and whether to enable certain JSC features |
| at process launch. Since the XPC mechanisms we use on macOS and iOS do not exist |
| on Windows, I am implementing them as command-line flags. |
| |
| -configure-jsc-for-testing: Sets the JSC in testing mode. |
| -disable-jit: Disables the JIT. |
| |
| See r249808 for the equivalent changes on macOS and iOS. |
| |
| * PlatformFTW.cmake: Add some missing header files needed when building tests. |
| * Shared/win/AuxiliaryProcessMainWin.cpp: |
| (WebKit::AuxiliaryProcessMainBase::parseCommandLine): |
| * UIProcess/Launcher/win/ProcessLauncherWin.cpp: |
| (WebKit::ProcessLauncher::launchProcess): |
| |
| 2019-09-19 Chris Dumez <cdumez@apple.com> |
| |
| Add better logging for when the view visibility state changes |
| https://bugs.webkit.org/show_bug.cgi?id=202008 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * UIProcess/ApplicationStateTracker.mm: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::updateActivityState): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::applicationDidEnterBackground): |
| (WebKit::WebPageProxy::applicationWillEnterForeground): |
| |
| 2019-09-19 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r248832): Unable to quicklook HTML files in Mail |
| https://bugs.webkit.org/show_bug.cgi?id=202012 |
| <rdar://problem/55285295> |
| |
| Reviewed by Geoff Garen and Brent Fulgham. |
| |
| r248832 inadvertently reverted the fix for Mail that landed in r247400 by not using |
| the same logic to initialize the sandbox extension if the process had already |
| finished launching or not. In particular, the new code path that happens on process |
| launch unconditionally used '/' as resource directory for the sandbox extension if |
| the client did not provide one. The logic in maybeInitializeSandboxExtensionHandle() |
| would use the file URL's base URL as resource directory when creating a sandbox |
| extension for '/' would fail (which it often does). |
| |
| To address the issue, have the logic that runs on process launch call |
| maybeInitializeSandboxExtensionHandle() so avoid duplicating code and make sure |
| both cases now have the Mail fix. |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::didFinishLaunching): |
| * UIProcess/AuxiliaryProcessProxy.h: |
| (WebKit::AuxiliaryProcessProxy::isLaunching const): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadFile): |
| * UIProcess/WebPageProxy.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2019-09-19 Tim Horton <timothy_horton@apple.com> |
| |
| macCatalyst apps crash under TextCheckingControllerProxy::replaceRelativeToSelection when spell checking |
| https://bugs.webkit.org/show_bug.cgi?id=202010 |
| <rdar://problem/54974971> |
| |
| Reviewed by Beth Dakin. |
| |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: |
| (WebKit::TextCheckingControllerProxy::replaceRelativeToSelection): |
| relativeReplacementRange is in the coordinate space of the document's text, |
| not the replacement string. We need to adjust into replacement string |
| coordinates before slicing the replacement, or we'll throw an exception |
| trying to read past the end of the string, in the case where the |
| replacement string is shorter than the replaced string (by more than 2 characters). |
| |
| 2019-09-19 Yury Semikhatsky <yurys@chromium.org> |
| |
| WebStorageNamespaceProvider / StorageNamespaceImpl no longer need SessionIDs |
| https://bugs.webkit.org/show_bug.cgi?id=201922 |
| <rdar://problem/55505906> |
| |
| Reviewed by Chris Dumez. |
| |
| Fix GTK Debug compilation after https://trac.webkit.org/changeset/250083: |
| ../../Source/WebKit/WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:75:55: error: no member named 'singleton' in namespace 'WebCore::Process' |
| ASSERT_UNUSED(sessionID, sessionID == WebProcess::singleton().sessionID()); |
| ~~~~~~~~~~~~^ |
| |
| * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp: |
| |
| 2019-09-19 Chris Dumez <cdumez@apple.com> |
| |
| WorkerGlobalScope does not need a SessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201991 |
| |
| Reviewed by Alex Christensen. |
| |
| WorkerGlobalScope does not need a SessionID, now that we have a single session |
| per WebProcess. |
| |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::installServiceWorker): |
| * WebProcess/Storage/WebServiceWorkerProvider.cpp: |
| (WebKit::WebServiceWorkerProvider::serviceWorkerConnection): |
| (WebKit::WebServiceWorkerProvider::existingServiceWorkerConnection): |
| (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession): Deleted. |
| (WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession): Deleted. |
| * WebProcess/Storage/WebServiceWorkerProvider.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::updateThrottleState): |
| |
| 2019-09-19 Brent Fulgham <bfulgham@apple.com> |
| |
| Create InjectedBundle SPI to better support NSSecureCoding |
| https://bugs.webkit.org/show_bug.cgi?id=201810 |
| <rdar://problem/55265713> |
| |
| The encoding/decoding routines used by WebKit’s InjectedBundles are based on NSCoding. |
| While we have changed WebKit internals to use NSSecureCoding, there are a number of |
| injected bundles that need to serialize custom classes between the InjectedBundle and |
| the relevant WebKit UIProcess. |
| |
| We need to lock down this communications channel by enforcing NSSecureCoding. |
| |
| This patch creates new SPI to allow the UIProcess to specify classes that it will accept |
| in messages from the WebContet Process (and Injected Bundle). |
| |
| It adds the following property to the WKProcessPoolConfiguration: |
| |
| @property (nonatomic, copy) NSSet<Class> *customClassesForParameterCoder; |
| |
| If no custom classes are specified, the standard serialization primitives are supported: |
| NSArray, NSData, NSDate, NSDictionary, NSNull, NSNumber, NSSet, NSString, |
| NSTimeZone, NSURL, and NSUUID. |
| |
| Reviewed by Brady Eidson. |
| |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): Copy any custom classes. |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/C/WKContextConfigurationRef.cpp: |
| (WKContextConfigurationCopyCustomClassesForParameterCoder): Added. |
| (WKContextConfigurationSetCustomClassesForParameterCoder): Added. |
| * UIProcess/API/C/WKContextConfigurationRef.h: |
| * UIProcess/API/Cocoa/WKProcessGroup.h: |
| * UIProcess/API/Cocoa/WKProcessGroup.mm: |
| (toStringVector): Added. |
| (-[WKProcessGroup initWithInjectedBundleURL:andCustomClassesForParameterCoder:]): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _setInputDelegate:]): Restrict serialization to allowed classes. |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration customClassesForParameterCoder]): Added. |
| (-[_WKProcessPoolConfiguration setCustomClassesForParameterCoder:]): Added. |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitialize): Register any custom classes |
| provided in the configuraton. |
| (WebKit::WebProcessPool::initializeClassesForParameterCoding): Added. |
| (WebKit::WebProcessPool::allowedClassesForParameterCoding const): Added. |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::elementDidFocus): Restrict serialization to allowed |
| classes only. |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPC should not need to pass a SessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201962 |
| |
| Reviewed by Geoffrey Garen. |
| |
| AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPC from the WebProcess to the UIProcess |
| should not need to pass a SessionID, since the UIProcess already knows the SessionID of a given WebProcess. |
| |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::addPlugInAutoStartOriginHash): Deleted. |
| (WebKit::WebProcessPool::plugInDidReceiveUserInteraction): Deleted. |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessPool.messages.in: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::addPlugInAutoStartOriginHash): |
| (WebKit::WebProcessProxy::plugInDidReceiveUserInteraction): |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebProcessProxy.messages.in: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::plugInDidStartFromOrigin): |
| (WebKit::WebProcess::plugInDidReceiveUserInteraction): |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| WebStorageNamespaceProvider / StorageNamespaceImpl no longer need SessionIDs |
| https://bugs.webkit.org/show_bug.cgi?id=201922 |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebStorageNamespaceProvider / StorageNamespaceImpl no longer need SessionIDs, now that |
| we have a single session per WebProcess. |
| |
| * WebProcess/WebStorage/StorageAreaMap.cpp: |
| (WebKit::StorageAreaMap::connect): |
| * WebProcess/WebStorage/StorageNamespaceImpl.cpp: |
| (WebKit::StorageNamespaceImpl::createSessionStorageNamespace): |
| (WebKit::StorageNamespaceImpl::createLocalStorageNamespace): |
| (WebKit::StorageNamespaceImpl::createTransientLocalStorageNamespace): |
| (WebKit::StorageNamespaceImpl::StorageNamespaceImpl): |
| (WebKit::StorageNamespaceImpl::sessionID const): |
| (WebKit::StorageNamespaceImpl::copy): |
| * WebProcess/WebStorage/StorageNamespaceImpl.h: |
| (): Deleted. |
| * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp: |
| (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace): |
| (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace): |
| (WebKit::WebStorageNamespaceProvider::createTransientLocalStorageNamespace): |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| Decrease use of sessionID in WebLoaderStrategy |
| https://bugs.webkit.org/show_bug.cgi?id=201961 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::loadResource): |
| (WebKit::WebLoaderStrategy::scheduleLoad): |
| (WebKit::WebLoaderStrategy::tryLoadingUsingURLSchemeHandler): |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| * WebProcess/Network/WebLoaderStrategy.h: |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| WebSocketStream does not need a SessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201960 |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebSocketStream does not need a SessionID, now that we have a single session per WebProcess. |
| |
| * WebProcess/Network/WebSocketProvider.cpp: |
| (WebKit::WebSocketProvider::createSocketStreamHandle): |
| * WebProcess/Network/WebSocketStream.cpp: |
| (WebKit::WebSocketStream::create): |
| (WebKit::WebSocketStream::WebSocketStream): |
| * WebProcess/Network/WebSocketStream.h: |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| LibWebRTCProvider does not need sessionIDs anymore |
| https://bugs.webkit.org/show_bug.cgi?id=201959 |
| |
| Reviewed by Geoffrey Garen. |
| |
| LibWebRTCProvider does not need sessionIDs anymore, now that we have a single session per WebProcess. |
| |
| * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: |
| (WebKit::LibWebRTCProvider::registerMDNSName): |
| (WebKit::LibWebRTCProvider::createSocketFactory): |
| * WebProcess/Network/webrtc/LibWebRTCProvider.h: |
| |
| 2019-09-18 Yury Semikhatsky <yurys@chromium.org> |
| |
| [GTK] Compilation errors when GL is disabled |
| https://bugs.webkit.org/show_bug.cgi?id=200223 |
| |
| Fix following compilation error when building with ENABLE_OPENGL=OFF |
| ../../Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp:123:51: error: use of undeclared identifier 'WaylandCompositor' |
| parameters.waylandCompositorDisplayName = WaylandCompositor::singleton().displayName(); |
| ^ |
| Reviewed by Philippe Normand. |
| |
| * UIProcess/glib/WebProcessPoolGLib.cpp: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): only make a call when using EGL, this matches |
| guards in WaylandCompositor.h. The condition was changed in r245807. |
| |
| 2019-09-18 Timothy Hatcher <timothy@apple.com> |
| |
| Eagerly create and add the m_layerHostingView to WKWebView. |
| https://bugs.webkit.org/show_bug.cgi?id=201942 |
| |
| Reviewed by Tim Horton. |
| |
| Some apps will add subviews to WKWebView, and by the time we add our m_layerHostingView view we might be |
| adding it behind a view that should have been added behind our layer hosting view subview. This affected |
| the Spark email app, due to changes in order of loading delegate calls and when compositing is enabled. |
| Instead of delayed creation of m_layerHostingView, always create it and add it to to the WKWebView. |
| This ensures proper ordering of subviews when clients add a view behind all existing subviews. |
| |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::WebViewImpl): Create and add m_layerHostingView here. |
| (WebKit::WebViewImpl::setAcceleratedCompositingRootLayer): Remove creation and removal of m_layerHostingView. |
| Just set the sublayers of m_layerHostingView's layer here. |
| |
| 2019-09-18 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Can't drag undocked Inspector window by its title text |
| https://bugs.webkit.org/show_bug.cgi?id=190886 |
| <rdar://problem/44574547> |
| |
| Reviewed by Tim Horton. |
| |
| * UIProcess/mac/WKInspectorWKWebView.mm: |
| (-[WKInspectorWKWebView _opaqueRectForWindowMoveWhenInTitlebar]): |
| Legendary. |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| BlobRegistry no longer needs SessionIDs |
| https://bugs.webkit.org/show_bug.cgi?id=201936 |
| |
| Reviewed by Geoffrey Garen. |
| |
| BlobRegistry no longer needs SessionIDs, now that we have a single session per WebProcess. |
| |
| * NetworkProcess/NetworkProcessPlatformStrategies.cpp: |
| (WebKit::NetworkProcessPlatformStrategies::createBlobRegistry): |
| * WebProcess/FileAPI/BlobRegistryProxy.cpp: |
| (WebKit::BlobRegistryProxy::registerFileBlobURL): |
| (WebKit::BlobRegistryProxy::registerBlobURL): |
| (WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked): |
| (WebKit::BlobRegistryProxy::unregisterBlobURL): |
| (WebKit::BlobRegistryProxy::registerBlobURLForSlice): |
| (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles): |
| * WebProcess/FileAPI/BlobRegistryProxy.h: |
| |
| 2019-09-18 Benjamin Nham <nham@apple.com> |
| |
| NetworkLoadParameters shouldn't store sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201921 |
| |
| Reviewed by Chris Dumez. |
| |
| Now that there's a single session id per WebProcess, we don't need to |
| store the session id in NetworkLoadParameters anymore. Clients can just |
| directly ask NetworkConnectionToWebProcess for the WebProcess's session |
| ID instead. |
| |
| * NetworkProcess/AdClickAttributionManager.cpp: |
| (WebKit::AdClickAttributionManager::fireConversionRequest): |
| * NetworkProcess/Downloads/DownloadManager.cpp: |
| (WebKit::DownloadManager::startDownload): |
| * NetworkProcess/NetworkCORSPreflightChecker.cpp: |
| (WebKit::NetworkCORSPreflightChecker::startPreflight): |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::preconnectTo): |
| * NetworkProcess/NetworkLoadParameters.h: |
| * NetworkProcess/NetworkResourceLoadMap.h: |
| * NetworkProcess/NetworkResourceLoadParameters.cpp: |
| (WebKit::NetworkResourceLoadParameters::encode const): |
| (WebKit::NetworkResourceLoadParameters::decode): |
| * NetworkProcess/NetworkResourceLoadParameters.h: |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::m_shouldCaptureExtraNetworkLoadMetrics): |
| (WebKit::NetworkResourceLoader::startNetworkLoad): |
| (WebKit::NetworkResourceLoader::convertToDownload): |
| * NetworkProcess/NetworkResourceLoader.h: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| * NetworkProcess/PingLoad.cpp: |
| (WebKit::PingLoad::PingLoad): |
| (WebKit::PingLoad::loadRequest): |
| (WebKit::PingLoad::didReceiveChallenge): |
| * NetworkProcess/PingLoad.h: |
| * NetworkProcess/PreconnectTask.cpp: |
| (WebKit::PreconnectTask::PreconnectTask): |
| * NetworkProcess/PreconnectTask.h: |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: |
| (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| (WebKit::WebLoaderStrategy::startPingLoad): |
| (WebKit::WebLoaderStrategy::preconnectTo): |
| |
| 2019-09-18 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] Tell websites why a session was cancelled |
| https://bugs.webkit.org/show_bug.cgi?id=201912 |
| <rdar://problem/55469706> |
| |
| Reviewed by Brady Eidson. |
| |
| Remembered the error passed to -[WKPaymentAuthorizationDelegate _willFinishWithError:] and |
| sent it to the WebContent process in Messages::WebPaymentCoordinator::DidCancelPaymentSession. |
| |
| * Platform/cocoa/PaymentAuthorizationPresenter.h: |
| * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: |
| (-[WKPaymentAuthorizationDelegate _didFinish]): |
| (-[WKPaymentAuthorizationDelegate _willFinishWithError:]): |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: |
| (WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession): |
| (WebKit::WebPaymentCoordinatorProxy::presenterDidFinish): |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.h: |
| (WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession): |
| * Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm: |
| * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: |
| (IPC::ArgumentCoder<WebCore::PaymentSessionError>::encode): |
| (IPC::ArgumentCoder<WebCore::PaymentSessionError>::decode): |
| * Shared/WebCoreArgumentCoders.h: |
| * WebProcess/ApplePay/WebPaymentCoordinator.cpp: |
| (WebKit::WebPaymentCoordinator::networkProcessConnectionClosed): |
| (WebKit::WebPaymentCoordinator::didCancelPaymentSession): |
| * WebProcess/ApplePay/WebPaymentCoordinator.h: |
| * WebProcess/ApplePay/WebPaymentCoordinator.messages.in: |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| WebSWContextManagerConnection::installServiceWorker IPC no longer need a sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201882 |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebSWContextManagerConnection::installServiceWorker IPC no longer need a sessionID now that we have a single |
| sessionID per WebProcess. |
| |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: |
| (WebKit::WebSWServerToContextConnection::installServiceWorkerContext): |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::ServiceWorkerFrameLoaderClient::ServiceWorkerFrameLoaderClient): |
| (WebKit::ServiceWorkerFrameLoaderClient::sessionID const): |
| (WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection): |
| (WebKit::WebSWContextManagerConnection::installServiceWorker): |
| * WebProcess/Storage/WebSWContextManagerConnection.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.messages.in: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| Stop passing sessionIDs to NetworkProcessConnection methods |
| https://bugs.webkit.org/show_bug.cgi?id=201886 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Stop passing sessionIDs to NetworkProcessConnection methods. This is no longer |
| necessary now that we have a single session per WebProcess. |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): |
| * WebProcess/Databases/WebDatabaseProvider.cpp: |
| (WebKit::WebDatabaseProvider::idbConnectionToServerForSession): |
| * WebProcess/FileAPI/BlobRegistryProxy.cpp: |
| (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles): |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles): |
| (WebKit::NetworkProcessConnection::didCacheResource): |
| (WebKit::NetworkProcessConnection::idbConnectionToServer): |
| (WebKit::NetworkProcessConnection::idbConnectionToServerForSession): Deleted. |
| * WebProcess/Network/NetworkProcessConnection.h: |
| * WebProcess/Network/NetworkProcessConnection.messages.in: |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| CacheStorageProvider::createCacheStorageConnection() does not need to take in a SessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201920 |
| |
| Reviewed by Geoffrey Garen. |
| |
| CacheStorageProvider::createCacheStorageConnection() does not need to take in a SessionID. |
| This sessionID is no longer used now that we have a session per WebProcess. |
| |
| * NetworkProcess/NetworkProcessPlatformStrategies.cpp: |
| (WebKit::NetworkProcessPlatformStrategies::createBlobRegistry): |
| * WebProcess/Cache/WebCacheStorageConnection.cpp: |
| (WebKit::WebCacheStorageConnection::sessionID const): Deleted. |
| * WebProcess/Cache/WebCacheStorageConnection.h: |
| * WebProcess/Cache/WebCacheStorageProvider.cpp: |
| (WebKit::WebCacheStorageProvider::createCacheStorageConnection): |
| * WebProcess/Cache/WebCacheStorageProvider.h: |
| * WebProcess/FileAPI/BlobRegistryProxy.cpp: |
| (WebKit::BlobRegistryProxy::blobSize): |
| * WebProcess/FileAPI/BlobRegistryProxy.h: |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| Drop FrameLoaderClient::sessionID() |
| https://bugs.webkit.org/show_bug.cgi?id=201916 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Drop FrameLoaderClient::sessionID(). The Frame can get the sessionID from its page (Which is |
| what the FrameLoaderClient::sessionID() ended up doing) and other call sites at WebKit2 layer |
| can get the sessionID from the WebProcess singleton. |
| |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoad): |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::ServiceWorkerFrameLoaderClient::ServiceWorkerFrameLoaderClient): |
| (WebKit::WebSWContextManagerConnection::installServiceWorker): |
| * WebProcess/Storage/WebSWContextManagerConnection.h: |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| WebServiceWorkerProvider::handleFetch() does not need to take in a sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201917 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoad): |
| * WebProcess/Storage/WebServiceWorkerProvider.cpp: |
| (WebKit::WebServiceWorkerProvider::handleFetch): |
| * WebProcess/Storage/WebServiceWorkerProvider.h: |
| |
| 2019-09-18 Chris Dumez <cdumez@apple.com> |
| |
| WebSWServerToContextConnection::PostMessageToServiceWorkerClient IPC no longer needs to take a sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201883 |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebSWServerToContextConnection::PostMessageToServiceWorkerClient IPC no longer needs to take a sessionID, |
| now that we have a single session per WebProcess. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: |
| (WebKit::WebSWServerToContextConnection::postMessageToServiceWorkerClient): |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerClient): |
| * WebProcess/Storage/WebSWContextManagerConnection.h: |
| |
| 2019-09-18 Carlos Alberto Lopez Perez <clopez@igalia.com> |
| |
| [GTK][WPE] bubblewrap sandbox should be disabled when running inside docker |
| https://bugs.webkit.org/show_bug.cgi?id=201914 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Detect if running inside Docker by checking the file /.dockerenv |
| In that case, disable the sandbox. |
| |
| * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: |
| (WebKit::isInsideDocker): |
| (WebKit::ProcessLauncher::launchProcess): |
| |
| 2019-09-17 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed WinCairo build fix following r249985. |
| |
| * Shared/WebProcessDataStoreParameters.h: |
| |
| 2019-09-17 Dean Jackson <dino@apple.com> |
| |
| Remove the "Show Link Previews" and "Hide Link Previews" action menus in the preview platter |
| https://bugs.webkit.org/show_bug.cgi?id=201864 |
| <rdar://55190038> |
| |
| Reviewed by Simon Fraser. |
| |
| * UIProcess/ios/WKActionSheetAssistant.mm: Remove the toggle action from the |
| default values. |
| (-[WKActionSheetAssistant defaultActionsForLinkSheet:]): |
| * UIProcess/ios/WKContentViewInteraction.mm: No longer try to add a toggle when |
| it isn't there. |
| (-[WKContentView assignLegacyDataForContextMenuInteraction]): |
| (menuWithShowLinkPreviewAction): Deleted. |
| |
| 2019-09-17 Chris Dumez <cdumez@apple.com> |
| |
| Stop calling Page::setSessionID() from WebKit2 |
| https://bugs.webkit.org/show_bug.cgi?id=201888 |
| |
| Reviewed by Alex Christensen. |
| |
| Stop calling Page::setSessionID() from WebKit2 since Page's sessionID can never change when |
| using WebKit2 (We process-swap and create a new Page in a new process when changing data |
| store). Instead, we now pass the sessionID ID when constructing the Page, as part of the |
| PageConfiguration structure. |
| |
| * Shared/WebsitePoliciesData.cpp: |
| (WebKit::WebsitePoliciesData::applyToDocumentLoader): |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::installServiceWorker): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| (WebKit::WebPage::setSessionID): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| |
| 2019-09-17 Mark Lam <mark.lam@apple.com> |
| |
| Use constexpr instead of const in symbol definitions that are obviously constexpr. |
| https://bugs.webkit.org/show_bug.cgi?id=201879 |
| |
| Rubber-stamped by Joseph Pecoraro. |
| |
| * WebProcess/Plugins/Netscape/JSNPObject.h: |
| |
| 2019-09-17 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed restabilization of non-unified build. |
| |
| * UIProcess/WebProcessProxy.cpp: |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: |
| |
| 2019-09-17 Chris Dumez <cdumez@apple.com> |
| |
| WebProcess class methods should not need to take a sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201881 |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebProcess class methods should not need to take a sessionID given that we have a single |
| session per WebProcess now. |
| |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * Shared/WebProcessDataStoreParameters.h: |
| (WebKit::WebProcessDataStoreParameters::encode const): |
| (WebKit::WebProcessDataStoreParameters::decode): |
| * UIProcess/Plugins/PlugInAutoStartProvider.cpp: |
| (WebKit::PlugInAutoStartProvider::addAutoStartOriginHash): |
| (WebKit::PlugInAutoStartProvider::autoStartOriginHashesCopy const): |
| (WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest): |
| (WebKit::PlugInAutoStartProvider::didReceiveUserInteraction): |
| * UIProcess/Plugins/PlugInAutoStartProvider.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::webProcessDataStoreParameters): |
| (WebKit::WebProcessPool::initializeNewWebProcess): |
| * UIProcess/WebProcessPool.h: |
| (WebKit::WebProcessPool::sendToAllProcesses): |
| (WebKit::WebProcessPool::sendToAllProcessesForSession): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::fetchWebsiteData): |
| (WebKit::WebProcessProxy::deleteWebsiteData): |
| (WebKit::WebProcessProxy::deleteWebsiteDataForOrigins): |
| (WebKit::WebProcessProxy::establishServiceWorkerContext): |
| * WebProcess/Plugins/PluginView.cpp: |
| (WebKit::PluginView::pluginDidReceiveUserInteraction): |
| * WebProcess/WebCoreSupport/WebPlugInClient.cpp: |
| (WebKit::WebPlugInClient::didStartFromOrigin): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::close): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::initializeWebProcess): |
| (WebKit::WebProcess::setWebsiteDataStoreParameters): |
| (WebKit::WebProcess::removeWebPage): |
| (WebKit::WebProcess::isPlugInAutoStartOriginHash): |
| (WebKit::WebProcess::shouldPlugInAutoStartFromOrigin): |
| (WebKit::WebProcess::plugInDidStartFromOrigin): |
| (WebKit::WebProcess::didAddPlugInAutoStartOriginHash): |
| (WebKit::WebProcess::resetPlugInAutoStartOriginHashes): |
| (WebKit::WebProcess::plugInDidReceiveUserInteraction): |
| (WebKit::WebProcess::fetchWebsiteData): |
| (WebKit::WebProcess::deleteWebsiteData): |
| (WebKit::WebProcess::deleteWebsiteDataForOrigins): |
| (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebProcess.messages.in: |
| |
| 2019-09-17 Chris Dumez <cdumez@apple.com> |
| |
| WebMDNSRegister no longer needs to be provided sessionIDs |
| https://bugs.webkit.org/show_bug.cgi?id=201876 |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebMDNSRegister no longer needs to be provided sessionIDs, now that we |
| have one session per WebProcess. |
| |
| * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: |
| (WebKit::NetworkMDNSRegister::registerMDNSName): |
| (WebKit::NetworkMDNSRegister::sessionID const): |
| * NetworkProcess/webrtc/NetworkMDNSRegister.h: |
| * NetworkProcess/webrtc/NetworkMDNSRegister.messages.in: |
| * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: |
| (WebKit::LibWebRTCProvider::registerMDNSName): |
| (WebKit::LibWebRTCProvider::createSocketFactory): |
| * WebProcess/Network/webrtc/WebMDNSRegister.cpp: |
| (WebKit::WebMDNSRegister::registerMDNSName): |
| * WebProcess/Network/webrtc/WebMDNSRegister.h: |
| |
| 2019-09-17 Chris Dumez <cdumez@apple.com> |
| |
| WebSWServerConnection does not need to store a sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201878 |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebSWServerConnection does not need to store a sessionID, it can simply get it from its SWServer. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection): |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: |
| (WebKit::WebSWServerConnection::WebSWServerConnection): |
| (WebKit::WebSWServerConnection::startFetch): |
| (WebKit::WebSWServerConnection::sessionID const): |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.h: |
| |
| 2019-09-17 Chris Dumez <cdumez@apple.com> |
| |
| WebPaymentCoordinatorProxy does not need sessionIDs |
| https://bugs.webkit.org/show_bug.cgi?id=201875 |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebPaymentCoordinatorProxy does not need sessionIDs so let's stop passing them around. |
| |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: |
| (WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard): |
| (WebKit::WebPaymentCoordinatorProxy::showPaymentUI): |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.h: |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard): |
| (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): |
| * Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm: |
| (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): |
| * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: |
| (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): |
| * WebProcess/ApplePay/WebPaymentCoordinator.cpp: |
| (WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCard): |
| (WebKit::WebPaymentCoordinator::showPaymentUI): |
| |
| 2019-09-17 Chris Dumez <cdumez@apple.com> |
| |
| There should be a single CacheStorageConnection per WebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=201874 |
| |
| Reviewed by Geoffrey Garen. |
| |
| There should be a single CacheStorageConnection per WebProcess now that we have a single session |
| per WebProcess. This invariant allows us to simplify the code. |
| |
| * NetworkProcess/cache/CacheStorageEngineConnection.cpp: |
| (WebKit::CacheStorageEngineConnection::~CacheStorageEngineConnection): |
| (WebKit::CacheStorageEngineConnection::open): |
| (WebKit::CacheStorageEngineConnection::remove): |
| (WebKit::CacheStorageEngineConnection::caches): |
| (WebKit::CacheStorageEngineConnection::retrieveRecords): |
| (WebKit::CacheStorageEngineConnection::deleteMatchingRecords): |
| (WebKit::CacheStorageEngineConnection::putRecords): |
| (WebKit::CacheStorageEngineConnection::reference): |
| (WebKit::CacheStorageEngineConnection::dereference): |
| (WebKit::CacheStorageEngineConnection::clearMemoryRepresentation): |
| (WebKit::CacheStorageEngineConnection::engineRepresentation): |
| (WebKit::CacheStorageEngineConnection::sessionID const): |
| * NetworkProcess/cache/CacheStorageEngineConnection.h: |
| * NetworkProcess/cache/CacheStorageEngineConnection.messages.in: |
| * WebProcess/Cache/WebCacheStorageConnection.cpp: |
| (WebKit::WebCacheStorageConnection::WebCacheStorageConnection): |
| (WebKit::WebCacheStorageConnection::open): |
| (WebKit::WebCacheStorageConnection::remove): |
| (WebKit::WebCacheStorageConnection::retrieveCaches): |
| (WebKit::WebCacheStorageConnection::retrieveRecords): |
| (WebKit::WebCacheStorageConnection::batchDeleteOperation): |
| (WebKit::WebCacheStorageConnection::batchPutOperation): |
| (WebKit::WebCacheStorageConnection::reference): |
| (WebKit::WebCacheStorageConnection::dereference): |
| (WebKit::WebCacheStorageConnection::clearMemoryRepresentation): |
| (WebKit::WebCacheStorageConnection::engineRepresentation): |
| (WebKit::WebCacheStorageConnection::updateQuotaBasedOnSpaceUsage): |
| (WebKit::WebCacheStorageConnection::sessionID const): |
| * WebProcess/Cache/WebCacheStorageConnection.h: |
| * WebProcess/Cache/WebCacheStorageProvider.cpp: |
| (WebKit::WebCacheStorageProvider::createCacheStorageConnection): |
| * WebProcess/Cache/WebCacheStorageProvider.h: |
| |
| 2019-09-17 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed attempt to fix internal build after r249962. |
| |
| * UIProcess/API/C/WKPreferencesRef.h: |
| |
| 2019-09-17 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r249923): ASSERTION FAILED: sessionID == WebProcess::singleton().sessionID() in WebCore::SWClientConnection *WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession(PAL::SessionID) |
| https://bugs.webkit.org/show_bug.cgi?id=201859 |
| <rdar://problem/55426742> |
| |
| Reviewed by Alex Christensen. |
| |
| Drop support for the WKPreferencesSetPrivateBrowsingEnabled() C API (Mark as deprecated and make it a no-op) as it |
| was changing a WebContent process's sessionID, which is no longer supported. This was also using the legacy private |
| browsing session, which we're trying to get rid of. There is suitable C API to do private browsing (WKWebsiteDataStoreRef). |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetPrivateBrowsingEnabled): |
| (WKPreferencesGetPrivateBrowsingEnabled): |
| * UIProcess/API/C/WKPreferencesRef.h: |
| * UIProcess/API/C/mac/WKPagePrivateMac.mm: |
| (WKPageIsURLKnownHSTSHost): |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::isURLKnownHSTSHost const): |
| * UIProcess/WebPreferences.cpp: |
| (WebKit::WebPreferences::addPage): |
| (WebKit::WebPreferences::removePage): |
| (WebKit::WebPreferences::updateBoolValueForKey): |
| * UIProcess/WebPreferences.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| * UIProcess/WebProcessPool.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::updatePreferences): |
| |
| 2019-09-17 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (iOS 13): rAF stops firing when navigating away cross-origin and then back |
| https://bugs.webkit.org/show_bug.cgi?id=201767 |
| <rdar://problem/55350854> |
| |
| Reviewed by Geoffrey Garen. |
| |
| When navigating back and restoring a SuspendedPage, WebPage::reinitializeWebPage() ends up |
| reconstructing a new DrawingArea to match the identifier of the DrawingAreaProxy that the |
| UIProcess created. The issue is that when reconstructing the DrawingArea, we were losing |
| the DisplayRefreshMonitors that had been registered on the previous drawing area. To |
| address the issue, we now make sure to transfer the DisplayRefreshMonitors over from the |
| old to the new drawing area. This patch is kept as small as possible to faciliate cherry |
| picking to a branch. However, I think we should consider refactoring the code so that |
| we no longer need to re-create the DrawingArea in the WebProcess in this case. |
| |
| * WebProcess/WebPage/DrawingArea.h: |
| (WebKit::DrawingArea::adoptDisplayRefreshMonitorsFromDrawingArea): |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::adoptDisplayRefreshMonitorsFromDrawingArea): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::reinitializeWebPage): |
| |
| 2019-09-17 Truitt Savell <tsavell@apple.com> |
| |
| Unreviewed, rolling out r249950. |
| |
| Broke the iOS build. |
| |
| Reverted changeset: |
| |
| "Remove the "Show Link Previews" and "Hide Link Previews" |
| action menus in the preview platter" |
| https://bugs.webkit.org/show_bug.cgi?id=201864 |
| https://trac.webkit.org/changeset/249950 |
| |
| 2019-09-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Initial view loading is slow |
| https://bugs.webkit.org/show_bug.cgi?id=201451 |
| |
| Reviewed by Sergio Villar Senin. |
| |
| The problem is that now we are always calling DrawingAreaProxy::waitForBackingStoreUpdateOnNextPaint() after a |
| new process is launched and we used to do that only when launching a new process after a crash. This makes |
| m_hasReceivedFirstUpdate useless, because it's always set to true right after a process is launched. Then, we |
| wait up to half a second (which is usually the case for the initial load) until the first update. We only want |
| to do that when recovering from a crash or when swapping processes to avoid flashing effect. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::launchProcess): Add ProcessLaunchReason parameter and pass it to |
| finishAttachingToWebProcess instead of IsProcessSwap. |
| (WebKit::WebPageProxy::swapToWebProcess): Pass ProcessLaunchReason::ProcessSwap to |
| finishAttachingToWebProcess(). |
| (WebKit::WebPageProxy::finishAttachingToWebProcess): Do not call |
| DrawingAreaProxy::waitForBackingStoreUpdateOnNextPaint() when process launch reason is ProcessLaunchReason::InitialProcess. |
| (WebKit::WebPageProxy::launchProcessForReload): Pass ProcessLaunchReason::Reload to launchProcess(). |
| * UIProcess/WebPageProxy.h: Remove IsProcessSwap and add ProcessLaunchReason instead that is passed to |
| launchProcess and finishAttachingToWebProcess. |
| |
| 2019-09-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r249275): [GTK][WPE] WebPage injected bundle messages no longer work |
| https://bugs.webkit.org/show_bug.cgi?id=201865 |
| |
| Reviewed by Žan Doberšek. |
| |
| We use them to implement the web resources API. This is another regression of r249275 because we are using the |
| page proxy identifier when we really want to the web page identifier. |
| |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextGetWebViewForPage): Use WebPageProxy::webPageID() instead of WebPageProxy::identifier(). |
| |
| 2019-09-17 Dean Jackson <dino@apple.com> |
| |
| Remove the "Show Link Previews" and "Hide Link Previews" action menus in the preview platter |
| https://bugs.webkit.org/show_bug.cgi?id=201864 |
| <rdar://55190038> |
| |
| Reviewed by Simon Fraser. |
| |
| * UIProcess/ios/WKActionSheetAssistant.mm: Remove the toggle action from the |
| default values. |
| (-[WKActionSheetAssistant defaultActionsForLinkSheet:]): |
| * UIProcess/ios/WKContentViewInteraction.mm: No longer try to add a toggle when |
| it isn't there. |
| (-[WKContentView assignLegacyDataForContextMenuInteraction]): |
| (menuWithShowLinkPreviewAction): Deleted. |
| |
| 2019-09-17 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Use WebPreferences instead of RuntimeEnabledFeatures in UIProcess |
| https://bugs.webkit.org/show_bug.cgi?id=198176 |
| <rdar://problem/55285709> |
| |
| Reviewed by Youenn Fablet. |
| |
| This patch does the following two things: |
| 1) It merges WebAuthenticationRequestData::creationOptions and requestOptions into a variant, and therefore |
| merges code paths that involve WebAuthenticationRequestData. |
| 2) It teaches WebAuthenticationRequestData to store a WebPreferences such that AuthenticatorManager could utilize |
| runtime feature flags to turn features on or off. |
| |
| * UIProcess/WebAuthentication/Authenticator.cpp: |
| (WebKit::Authenticator::handleRequest): |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| (WebKit::AuthenticatorManager::handleRequest): |
| (WebKit::AuthenticatorManager::clearState): |
| (WebKit::AuthenticatorManager::authenticatorAdded): |
| (WebKit::AuthenticatorManager::startDiscovery): |
| (WebKit::AuthenticatorManager::makeCredential): Deleted. |
| (WebKit::AuthenticatorManager::getAssertion): Deleted. |
| * UIProcess/WebAuthentication/AuthenticatorManager.h: |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| (WebKit::LocalAuthenticator::makeCredential): |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented): |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested): |
| (WebKit::LocalAuthenticator::getAssertion): |
| (WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented): |
| * UIProcess/WebAuthentication/Cocoa/LocalService.mm: |
| (WebKit::LocalService::isAvailable): |
| Don't check RuntimeEnabledFeatures given it is for WebCore. |
| * UIProcess/WebAuthentication/WebAuthenticationRequestData.h: |
| (): Deleted. |
| * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp: |
| (WebKit::WebAuthenticatorCoordinatorProxy::makeCredential): |
| (WebKit::WebAuthenticatorCoordinatorProxy::getAssertion): |
| (WebKit::WebAuthenticatorCoordinatorProxy::handleRequest): |
| * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h: |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp: |
| (WebKit::CtapAuthenticator::makeCredential): |
| (WebKit::CtapAuthenticator::continueMakeCredentialAfterResponseReceived const): |
| (WebKit::CtapAuthenticator::getAssertion): |
| * UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp: |
| (WebKit::U2fAuthenticator::makeCredential): |
| (WebKit::U2fAuthenticator::checkExcludeList): |
| (WebKit::U2fAuthenticator::issueRegisterCommand): |
| (WebKit::U2fAuthenticator::getAssertion): |
| (WebKit::U2fAuthenticator::issueSignCommand): |
| (WebKit::U2fAuthenticator::continueRegisterCommandAfterResponseReceived): |
| (WebKit::U2fAuthenticator::continueSignCommandAfterResponseReceived): |
| |
| 2019-09-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Keeps running obsolete WebProcess-es for too long |
| https://bugs.webkit.org/show_bug.cgi?id=201492 |
| |
| Reviewed by Chris Dumez. |
| |
| That's how the web process cache is expected to work, but it's true that it probably only makes sense to use it |
| when cache model is primary web browser. |
| |
| * UIProcess/WebProcessCache.cpp: |
| (WebKit::WebProcessCache::updateCapacity): Disable the web process cache when cache model is not primary web browser. |
| |
| 2019-09-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Crash closing web view while hardware acceleration is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=200856 |
| |
| Reviewed by Michael Catanzaro. |
| |
| The crash happens when destroying the WaylandCompositor::Surface because the web view GL context is used to |
| release the texture, but the GL context is no longer valid after web view |
| unrealize. AcceleratedBackingStoreWayland should handle the web view unrealize to destroy the GL context. It |
| will be created on demand again after the web view is realized. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseRealize): Notify AcceleratedBackingStore. |
| (webkitWebViewBaseUnrealize): Ditto. |
| * UIProcess/gtk/AcceleratedBackingStore.h: |
| (WebKit::AcceleratedBackingStore::realize): Added. |
| (WebKit::AcceleratedBackingStore::unrealize): Added. |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: |
| (WebKit::AcceleratedBackingStoreWayland::realize): In case of using WaylandCompositor, call |
| WaylandCompositor::bindWebPage() to bind the WebPageProxy to the Wayland surface. |
| (WebKit::AcceleratedBackingStoreWayland::unrealize): Destroy GL resources and the GL context. |
| (WebKit::AcceleratedBackingStoreWayland::tryEnsureGLContext): Do not try to create the GL context if the web |
| view is not realized. |
| (WebKit::AcceleratedBackingStoreWayland::displayBuffer): Remove the code to initialize the texture. |
| (WebKit::AcceleratedBackingStoreWayland::paint): And add it here. |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.h: |
| * UIProcess/gtk/WaylandCompositor.cpp: |
| (WebKit::WaylandCompositor::Surface::setWebPage): Return early if given page is the current one already. |
| (WebKit::WaylandCompositor::bindWebPage): Set the surface WebPageProxy. |
| (WebKit::WaylandCompositor::unbindWebPage): Unset the surface WebPageProxy. |
| * UIProcess/gtk/WaylandCompositor.h: |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): When restoring a previous layer tree |
| host, always call resumeRendering() to balance the suspendRendering() called in exitAcceleratedCompositingMode(). |
| |
| 2019-09-16 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r249910. |
| |
| Caused layout test failures and timeouts on Catalina |
| |
| Reverted changeset: |
| |
| "REGRESSION(249649): Unable to open local files in MiniBrowser |
| on macOS" |
| https://bugs.webkit.org/show_bug.cgi?id=201798 |
| https://trac.webkit.org/changeset/249910 |
| |
| 2019-09-16 Chris Dumez <cdumez@apple.com> |
| |
| Drop sessionID / websiteDataStoreID from WebPageCreationParameters |
| https://bugs.webkit.org/show_bug.cgi?id=201847 |
| |
| Reviewed by Youenn Fablet. |
| |
| Drop sessionID / websiteDataStoreID from WebPageCreationParameters now that we have |
| one session per WebProcess. |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| (WebKit::WebPageCreationParameters::WebPageCreationParameters): Deleted. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::creationParameters): |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::createWindow): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::createWebPage): |
| |
| 2019-09-16 Dean Jackson <dino@apple.com> |
| |
| Provide a prototype for AR QuickLook to trigger processing in the originating page |
| https://bugs.webkit.org/show_bug.cgi?id=201371 |
| |
| Hopefully fix the public iOS 13 build. |
| |
| * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: |
| |
| 2019-09-16 David Kilzer <ddkilzer@apple.com> |
| |
| [WebAuthn] Name instance variables consistently in WKMockNFTag |
| <https://webkit.org/b/201845> |
| |
| Reviewed by Jiewen Tan. |
| |
| * UIProcess/WebAuthentication/Mock/MockNfcService.mm: |
| Make all @synthesize instance variables use a leading underscore |
| for their name. |
| |
| 2019-09-16 Dean Jackson <dino@apple.com> |
| |
| REGRESSION: iPad: Safari becomes unresponsive after context menu on 1-800-MY-APPLE phone number, tapping 'Add to Contacts' |
| https://bugs.webkit.org/show_bug.cgi?id=201816 |
| <rdar://55105827> |
| |
| Reviewed by Darin Adler. |
| |
| When generating the DataDetectorsContext for a position, we should |
| also provide the source rectangle for the link in root view coordinates. |
| This allows DataDetectors to show any modal dialogs in the right |
| position. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: Use either the bounds of the positionInformation |
| or the text bounding rectangle. |
| (-[WKContentView dataDetectionContextForPositionInformation:]): |
| |
| 2019-09-16 Chris Dumez <cdumez@apple.com> |
| |
| NetworkProcessConnection does not need HashMaps of sessionIDs for Service Workers and IDB |
| https://bugs.webkit.org/show_bug.cgi?id=201830 |
| |
| Reviewed by Geoffrey Garen. |
| |
| NetworkProcessConnection does not need HashMaps of sessionIDs for Service Workers and IDB, since |
| we now have one sessionID per WebContent process. |
| |
| * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.h: |
| * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: |
| (WebKit::WebIDBConnectionToServer::create): |
| (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer): |
| * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: |
| * WebProcess/Databases/WebDatabaseProvider.cpp: |
| (WebKit::WebDatabaseProvider::idbConnectionToServerForSession): |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::didReceiveMessage): |
| (WebKit::NetworkProcessConnection::didClose): |
| (WebKit::NetworkProcessConnection::idbConnectionToServerForSession): |
| (WebKit::NetworkProcessConnection::serviceWorkerConnectionForSession): |
| * WebProcess/Network/NetworkProcessConnection.h: |
| (WebKit::NetworkProcessConnection::existingIDBConnectionToServer const): |
| (WebKit::NetworkProcessConnection::existingServiceWorkerConnectionForSession): |
| * WebProcess/Storage/WebServiceWorkerProvider.cpp: |
| (WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession): |
| (WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession): |
| (WebKit::WebServiceWorkerProvider::handleFetch): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::networkProcessConnectionClosed): |
| |
| 2019-09-16 Brent Fulgham <bfulgham@apple.com> |
| |
| [FTW] Correct lifespan of other SharedBitmaps |
| https://bugs.webkit.org/show_bug.cgi?id=201800 |
| |
| Reviewed by Dean Jackson. |
| |
| The pop-up menu code creates its own SharedBitmap in the WebContent process, |
| which needs to release its handle before destruction, otherwise the UIProcess |
| will be unable to access the GPU texture (since it will have been cleaned up). |
| |
| Since WebPopupMenuProxyWin has its own HWND and WinProc, it needs its own |
| swapChain to handle syncing of content to the screen. |
| |
| This patch also audits other uses of SharedBitmap to make sure a similar |
| problem doesn't exist elsewhere. |
| |
| * Shared/ShareableBitmap.h: |
| * Shared/win/ShareableBitmapDirect2D.cpp: |
| (WebKit::ShareableBitmap::paint): |
| (WebKit::ShareableBitmap::createDirect2DSurface): |
| * UIProcess/win/WebPopupMenuProxyWin.cpp: |
| (WebKit::WebPopupMenuProxyWin::showPopupMenu): Add Direct2D code paths. |
| (WebKit::WebPopupMenuProxyWin::paint): Update for Direct2D. |
| (WebKit::WebPopupMenuProxyWin::setupSwapChain): Added. |
| (WebKit::WebPopupMenuProxyWin::configureBackingStore): Added. |
| * UIProcess/win/WebPopupMenuProxyWin.h: |
| * UIProcess/win/WebView.cpp: |
| (WebKit::WebView::setupSwapChain): Move some implementation code to the |
| Direct2DUtilities file. |
| * UIProcess/win/WebView.h: |
| (WebKit::WebView::d3dDevice const): |
| (WebKit::WebView::d3dImmediateContext const): |
| (WebKit::WebView::d3dDevice): Deleted. |
| * WebProcess/WebCoreSupport/WebPopupMenu.cpp: |
| (WebKit::WebPopupMenu::show): |
| * WebProcess/WebPage/FindController.cpp: |
| (WebKit::FindController::getImageForFindMatch): Prevent WebContent process from |
| destroying SharedBitmap before the UIProcess can receive it. |
| |
| 2019-09-16 Chris Dumez <cdumez@apple.com> |
| |
| Simplify WebResourceLoadObserver now that we have one WebProcess per session |
| https://bugs.webkit.org/show_bug.cgi?id=201821 |
| |
| Reviewed by Brent Fulgham. |
| |
| Simplify WebResourceLoadObserver now that we have one WebProcess per session. |
| No need to pass sessionIDs around or store statistics per sessionID. |
| Also, only initialize the WebResourceLoadObserver if both ITP is enabled and |
| we're not in a WebContent process used for an ephemeral session. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: |
| (WebKit::WebResourceLoadObserver::requestStorageAccessUnderOpener): |
| (WebKit::WebResourceLoadObserver::ensureResourceStatisticsForRegistrableDomain): |
| (WebKit::WebResourceLoadObserver::scheduleNotificationIfNeeded): |
| (WebKit::WebResourceLoadObserver::statisticsForURL): |
| (WebKit::WebResourceLoadObserver::takeStatistics): |
| (WebKit::WebResourceLoadObserver::clearState): |
| (WebKit::WebResourceLoadObserver::logFontLoad): |
| (WebKit::WebResourceLoadObserver::logCanvasRead): |
| (WebKit::WebResourceLoadObserver::logCanvasWriteOrMeasure): |
| (WebKit::WebResourceLoadObserver::logNavigatorAPIAccessed): |
| (WebKit::WebResourceLoadObserver::logScreenAPIAccessed): |
| (WebKit::WebResourceLoadObserver::logSubresourceLoading): |
| (WebKit::WebResourceLoadObserver::logWebSocketLoading): |
| (WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution): |
| * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::setWebsiteDataStoreParameters): |
| |
| 2019-09-16 David Kilzer <ddkilzer@apple.com> |
| |
| Fix build failure in MockNfcService.mm |
| <https://webkit.org/b/201839> |
| |
| Reviewed by Brady Eidson. |
| |
| * UIProcess/WebAuthentication/Mock/MockNfcService.mm: |
| Specify instance variable names for @synthesized variables that |
| need to be manually released in -dealloc under MRR. |
| |
| 2019-09-16 Per Arne Vollan <pvollan@apple.com> |
| |
| REGRESSION(249649): Unable to open local files in MiniBrowser on macOS |
| https://bugs.webkit.org/show_bug.cgi?id=201798 |
| |
| Reviewed by Brent Fulgham. |
| |
| The commit <https://trac.webkit.org/changeset/249649> introduced a MiniBrowser regression on macOS where |
| MiniBrowser is not able to open local files. The change set r249649 fixed a problem where the WebContent |
| process PID was not ready to be used when creating a sandbox extension. This happened in the cases where |
| the WebContent process had not finished launching when the load started. The WebContent process is also |
| creating sandbox extensions for the Networking process for the files being loaded, and also needs to be |
| passing the PID of the Networking process when creating these. This patch is addressing this by getting |
| the PID of the Networking process when the WebContent process is initially getting the connection to the |
| Networking process. The PID is then stored in the NetworkProcessConnection class, from where it is passed |
| to the NetworkLoadParameters, and used when creating the sandbox extension for the Networking process. |
| |
| * NetworkProcess/NetworkLoadParameters.h: |
| * NetworkProcess/NetworkResourceLoadParameters.cpp: |
| (WebKit::NetworkResourceLoadParameters::encode const): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::~NetworkProcessProxy): |
| (WebKit::NetworkProcessProxy::openNetworkProcessConnection): |
| (WebKit::NetworkProcessProxy::networkProcessCrashed): |
| (WebKit::NetworkProcessProxy::didFinishLaunching): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| * UIProcess/WebProcessProxy.messages.in: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::NetworkProcessConnection): |
| * WebProcess/Network/NetworkProcessConnection.h: |
| (WebKit::NetworkProcessConnection::create): |
| (WebKit::NetworkProcessConnection::networkProcessPID const): |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::getNetworkProcessConnection): |
| (WebKit::WebProcess::ensureNetworkProcessConnection): |
| |
| 2019-09-16 David Kilzer <ddkilzer@apple.com> |
| |
| [WebAuthn] REGRESSION (r249059): Leak of WKMockNFTag objects and WKMockNFTag instance variables |
| <https://webkit.org/b/201813> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/WebAuthentication/Mock/MockNfcService.mm: |
| (-[WKMockNFTag dealloc]): Add method and release instance |
| variables to fix leaks. |
| (WebKit::MockNfcService::detectTags const): Use adoptNS() to fix |
| leaks of WKMockNFTag objects. |
| |
| 2019-09-16 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r243113): Leak of multiple instance variable blocks when deallocating _WKAttributedStringNavigationDelegate |
| <https://webkit.org/b/201812> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * UIProcess/API/Cocoa/NSAttributedString.mm: |
| (-[_WKAttributedStringNavigationDelegate dealloc]): Add method |
| to release instance variable blocks to fix potential leaks. |
| |
| 2019-09-16 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Unreviewed build fix. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.h: Add missing forward |
| declaration of the NetworkSession class. |
| |
| 2019-09-16 Chris Dumez <cdumez@apple.com> |
| |
| Store sessionID on the NetworkConnectionToWebProcess now that there is one session per WebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=201789 |
| |
| Reviewed by Alex Christensen. |
| |
| Store sessionID on the NetworkConnectionToWebProcess now that there is one session per WebProcess. |
| As a result, we no longer need to pass the sessionID in each IPC from the WebProcess to the |
| NetworkProcess. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::create): |
| (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess): |
| (WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess): |
| (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): |
| (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage): |
| (WebKit::NetworkConnectionToWebProcess::didClose): |
| (WebKit::NetworkConnectionToWebProcess::createSocketStream): |
| (WebKit::NetworkConnectionToWebProcess::createSocketChannel): |
| (WebKit::NetworkConnectionToWebProcess::networkSession): |
| (WebKit::NetworkConnectionToWebProcess::resolveBlobReferences): |
| (WebKit::NetworkConnectionToWebProcess::storageSession): |
| (WebKit::NetworkConnectionToWebProcess::startDownload): |
| (WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload): |
| (WebKit::NetworkConnectionToWebProcess::cookiesForDOM): |
| (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM): |
| (WebKit::NetworkConnectionToWebProcess::cookiesEnabled): |
| (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue): |
| (WebKit::NetworkConnectionToWebProcess::getRawCookies): |
| (WebKit::NetworkConnectionToWebProcess::deleteCookie): |
| (WebKit::NetworkConnectionToWebProcess::registerFileBlobURL): |
| (WebKit::NetworkConnectionToWebProcess::registerBlobURL): |
| (WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL): |
| (WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked): |
| (WebKit::NetworkConnectionToWebProcess::registerBlobURLForSlice): |
| (WebKit::NetworkConnectionToWebProcess::unregisterBlobURL): |
| (WebKit::NetworkConnectionToWebProcess::blobSize): |
| (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles): |
| (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame): |
| (WebKit::NetworkConnectionToWebProcess::clearPageSpecificDataForResourceLoadStatistics): |
| (WebKit::NetworkConnectionToWebProcess::logUserInteraction): |
| (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): |
| (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): |
| (WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener): |
| (WebKit::NetworkConnectionToWebProcess::startTrackingResourceLoad): |
| (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer): |
| (WebKit::NetworkConnectionToWebProcess::unregisterSWConnection): |
| (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection): |
| (WebKit::NetworkConnectionToWebProcess::establishSWContextConnection): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| (WebKit::NetworkConnectionToWebProcess::sessionID const): |
| (WebKit::NetworkConnectionToWebProcess::startDownload): |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::createNetworkConnectionToWebProcess): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::start): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::openNetworkProcessConnection): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::sessionID const): |
| * UIProcess/WebProcessProxy.h: |
| * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: |
| (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer): |
| * WebProcess/FileAPI/BlobRegistryProxy.cpp: |
| (WebKit::BlobRegistryProxy::registerFileBlobURL): |
| (WebKit::BlobRegistryProxy::registerBlobURL): |
| (WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked): |
| (WebKit::BlobRegistryProxy::unregisterBlobURL): |
| (WebKit::BlobRegistryProxy::registerBlobURLForSlice): |
| (WebKit::BlobRegistryProxy::blobSize): |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles): |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::WebSocketChannel::connect): |
| * WebProcess/Network/WebSocketStream.cpp: |
| (WebKit::WebSocketStream::WebSocketStream): |
| * WebProcess/Storage/WebSWClientConnection.cpp: |
| (WebKit::WebSWClientConnection::WebSWClientConnection): |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::m_userAgent): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::detachedFromParent2): |
| (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument): |
| * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: |
| (WebKit::WebResourceLoadObserver::requestStorageAccessUnderOpener): |
| (WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution): |
| * WebProcess/WebPage/WebCookieJar.cpp: |
| (WebKit::WebCookieJar::cookies const): |
| (WebKit::WebCookieJar::setCookies): |
| (WebKit::WebCookieJar::cookiesEnabled const): |
| (WebKit::WebCookieJar::cookieRequestHeaderFieldValue const): |
| (WebKit::WebCookieJar::getRawCookies const): |
| (WebKit::WebCookieJar::deleteCookie): |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::startDownload): |
| (WebKit::WebFrame::convertMainResourceLoadToDownload): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::close): |
| (WebKit::WebPage::hasStorageAccess): |
| (WebKit::WebPage::requestStorageAccess): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::createWebPage): |
| (WebKit::WebProcess::removeWebPage): |
| * WebProcess/WebProcess.h: |
| (WebKit::WebProcess::sessionID const): |
| |
| 2019-09-16 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r249142): [GTK] Epiphany delayed page loads continue indefinitely |
| https://bugs.webkit.org/show_bug.cgi?id=201544 |
| |
| Reviewed by Michael Catanzaro. |
| |
| WebPageProxy::loadAlternateHTML() is an exception, because it's an API request but always sets the navigationID |
| to 0. We always want to reset the pending API request URL when alternate HTML load starts. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared): Check also that it's an API alternate HTML load |
| to reset the pending API request URL. |
| |
| 2019-09-15 David Kilzer <ddkilzer@apple.com> |
| |
| REGRESSION (r248592): Leak of CFDictionaryRef in WebKit::NetworkRTCProvider::proxyInfoFromSession() |
| <https://webkit.org/b/201811> |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/webrtc/NetworkRTCProvider.mm: |
| (WebKit::NetworkRTCProvider::proxyInfoFromSession): Use |
| RetainPtr<> to fix the leak. |
| |
| 2019-09-14 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK][WPE] Check for a Snap sandbox a bit harder |
| https://bugs.webkit.org/show_bug.cgi?id=201793 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: |
| (WebKit::isInsideSnap): Check whether the SNAP_NAME and SNAP_REVISION |
| environment variables are defined as well. |
| |
| 2019-09-14 Youenn Fablet <youenn@apple.com> |
| |
| Add release logging in WebLoaderStrategy to check that a load is going through service worker |
| https://bugs.webkit.org/show_bug.cgi?id=201761 |
| |
| Reviewed by Chris Dumez. |
| |
| This allows identifying whether a load remains pending on the service worker fetch path. |
| |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoad): |
| |
| 2019-09-13 Youenn Fablet <youenn@apple.com> |
| |
| [MacOS/iOS] imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-abort.https.html is sometimes crashing in Debug |
| https://bugs.webkit.org/show_bug.cgi?id=201686 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| A load might be cancelled shortly after being started in network process. |
| In that case, NetworkDataTaskCocoa might be destroyed, thus removed from the ID to task map |
| but some handlers might still be called until the NSURLSessionTask is finished cancelling. |
| This happens for authentication challenges. |
| In case where the NSURLSessionTask is cancelling, return early instead of processing the challenge. |
| |
| Covered by LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/window/cache-abort.https.html and LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-abort.https.html no longer crashing in debug. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): |
| |
| 2019-09-11 Dean Jackson <dino@apple.com> |
| |
| Provide a prototype for AR QuickLook to trigger processing in the originating page |
| https://bugs.webkit.org/show_bug.cgi?id=201371 |
| <rdar://54904781> |
| |
| Reviewed by Simon Fraser. |
| |
| Provide a way for a Web page to know if an action in the AR scene |
| was performed, if and only if the system AR library calls a delegate with |
| particular parameters. Post a message to the originating frame so |
| the page can detect the action. |
| |
| * Scripts/webkit/messages.py: Include the right header for SystemPreviewInfo. |
| |
| * Shared/WebCoreArgumentCoders.cpp: Use SystemPreviewInfo. |
| (IPC::ArgumentCoder<ResourceRequest>::encode): |
| (IPC::ArgumentCoder<ResourceRequest>::decode): |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _triggerSystemPreviewActionOnFrame:page:]): New helper/test function |
| to trigger the system preview action. |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| |
| * UIProcess/Cocoa/DownloadClient.mm: Use new type. |
| (WebKit::DownloadClient::didStart): |
| |
| * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Implement the delegate so that |
| we can detect an action. When it happens, tell the WebPageProxy to send a message. |
| |
| * UIProcess/Downloads/DownloadProxy.h: Use SystemPreviewInfo type. |
| (WebKit::DownloadProxy::systemPreviewDownloadInfo const): |
| (WebKit::DownloadProxy::systemPreviewDownloadRect const): Deleted. |
| |
| * UIProcess/SystemPreviewController.h: |
| (WebKit::SystemPreviewController::previewInfo const): |
| |
| * UIProcess/WebPageProxy.cpp: Send it over to the Web Process. |
| (WebKit::WebPageProxy::systemPreviewActionTriggered const): |
| * UIProcess/WebPageProxy.h: |
| |
| * WebProcess/WebPage/WebPage.cpp: Check the destination still exists, and then talk |
| to the Document. |
| (WebKit::WebPage::systemPreviewActionTriggered): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2019-09-13 Youenn Fablet <youenn@apple.com> |
| |
| Partition processes running service workers by session ID |
| https://bugs.webkit.org/show_bug.cgi?id=201643 |
| |
| Reviewed by Chris Dumez. |
| |
| Remove the management of server context connections from NetworkProcess. |
| The WebProcessPool service worker process map is now keyed by both registrable domain and sessionID. |
| Update WebProcessPool to only expose the number of service worker processes instead of the full map. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::didClose): |
| (WebKit::NetworkConnectionToWebProcess::establishSWContextConnection): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::swServerForSession): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::swServerForSessionIfExists): |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: |
| (WebKit::WebSWServerConnection::startFetch): |
| (WebKit::WebSWServerConnection::postMessageToServiceWorker): |
| (WebKit::WebSWServerConnection::scheduleJobInServer): |
| (WebKit::WebSWServerConnection::updateThrottleState): |
| (WebKit::WebSWServerConnection::contextConnectionCreated): |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.h: |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: |
| (WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection): |
| (WebKit::WebSWServerToContextConnection::~WebSWServerToContextConnection): |
| (WebKit::WebSWServerToContextConnection::connectionIsNoLongerNeeded): |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _webPageContentProcessCount]): |
| (-[WKProcessPool _serviceWorkerProcessCount]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess): |
| (WebKit::WebProcessPool::disconnectProcess): |
| * UIProcess/WebProcessPool.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection): |
| (WebKit::m_userAgent): |
| * WebProcess/Storage/WebSWContextManagerConnection.h: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): |
| |
| 2019-09-13 Alex Christensen <achristensen@webkit.org> |
| |
| AuxiliaryProcessProxy::sendWithAsyncReply should queue up messages if sent while the process is starting like it does messages without replies |
| https://bugs.webkit.org/show_bug.cgi?id=201746 |
| |
| Reviewed by Youenn Fablet. |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::sendMessage): |
| (WebKit::AuxiliaryProcessProxy::didFinishLaunching): |
| * UIProcess/AuxiliaryProcessProxy.h: |
| (WebKit::AuxiliaryProcessProxy::sendWithAsyncReply): |
| |
| 2019-09-13 Youenn Fablet <youenn@apple.com> |
| |
| Use WebProcess processIdentifier to identify Service Worker connections |
| https://bugs.webkit.org/show_bug.cgi?id=201459 |
| |
| Reviewed by Chris Dumez. |
| |
| Make WebSWServerConnection be stored in NetworkConnectionToWebProcess. |
| They are now keyed by session IDs hence why WebSWClientConnection is using the session ID as message connection ID. |
| Creation no longer requires a sync IPC since the connection is uniquely identified by its session ID and its process ID. |
| These IDs are stable over network process crash. |
| Within NetworkProcess, a server connection is managed by a SWServer which is session ID specific. |
| In that case, the process identifier uniquely identifies the connection. |
| |
| Move WebSWServerToContextConnection be owned by NetworkConnectionToWebProcess. |
| Instead of creating it when webprocess is connecting to network process, use a dedicated IPC message. |
| This is similar to WebSWServerConnection once WebProcess asks to create it. |
| This will allow existing WebProcess, in cache or running pages, to run service workers as well. |
| A context connection map is kept in Network Process to reuse context connections since these connections are not sessionID specific. |
| |
| Migrate from a single boolean to a HashSet to track whether some connections are in the process of being created. |
| Previously if two requests to create connections were done shortly one after the other on different registrable |
| domains, the second request would not be processed. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): |
| (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage): |
| (WebKit::NetworkConnectionToWebProcess::didClose): |
| (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection): |
| (WebKit::NetworkConnectionToWebProcess::establishSWContextConnection): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::didReceiveMessage): |
| (WebKit::NetworkProcess::createNetworkConnectionToWebProcess): |
| (WebKit::NetworkProcess::forEachSWServer): |
| (WebKit::NetworkProcess::needsServerToContextConnectionForRegistrableDomain const): |
| (WebKit::NetworkProcess::createServerToContextConnection): |
| (WebKit::NetworkProcess::postMessageToServiceWorkerClient): |
| (WebKit::NetworkProcess::registerSWServerConnection): |
| (WebKit::NetworkProcess::unregisterSWServerConnection): |
| (WebKit::NetworkProcess::registerSWContextConnection): |
| (WebKit::NetworkProcess::unregisterSWContextConnection): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: |
| (WebKit::WebSWServerConnection::WebSWServerConnection): |
| (WebKit::WebSWServerConnection::postMessageToServiceWorkerClient): |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.h: |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: |
| (WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection): |
| (WebKit::WebSWServerToContextConnection::~WebSWServerToContextConnection): |
| (WebKit::WebSWServerToContextConnection::postMessageToServiceWorkerClient): |
| (WebKit::WebSWServerToContextConnection::connectionMayNoLongerBeNeeded): |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::openNetworkProcessConnection): |
| (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::establishServiceWorkerContext): |
| * UIProcess/WebProcessProxy.h: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::didReceiveMessage): |
| (WebKit::NetworkProcessConnection::didClose): |
| (WebKit::NetworkProcessConnection::serviceWorkerConnectionForSession): |
| * WebProcess/Network/NetworkProcessConnection.h: |
| * WebProcess/Storage/WebSWClientConnection.cpp: |
| (WebKit::WebSWClientConnection::WebSWClientConnection): |
| (WebKit::WebSWClientConnection::~WebSWClientConnection): |
| (WebKit::WebSWClientConnection::messageSenderConnection const): |
| (WebKit::WebSWClientConnection::scheduleJobInServer): |
| (WebKit::WebSWClientConnection::finishFetchingScriptInServer): |
| (WebKit::WebSWClientConnection::addServiceWorkerRegistrationInServer): |
| (WebKit::WebSWClientConnection::removeServiceWorkerRegistrationInServer): |
| (WebKit::WebSWClientConnection::postMessageToServiceWorker): |
| (WebKit::WebSWClientConnection::registerServiceWorkerClient): |
| (WebKit::WebSWClientConnection::unregisterServiceWorkerClient): |
| (WebKit::WebSWClientConnection::didResolveRegistrationPromise): |
| (WebKit::WebSWClientConnection::matchRegistration): |
| (WebKit::WebSWClientConnection::runOrDelayTaskForImport): |
| (WebKit::WebSWClientConnection::whenRegistrationReady): |
| (WebKit::WebSWClientConnection::getRegistrations): |
| (WebKit::WebSWClientConnection::startFetch): |
| (WebKit::WebSWClientConnection::cancelFetch): |
| (WebKit::WebSWClientConnection::continueDidReceiveFetchResponse): |
| (WebKit::WebSWClientConnection::connectionToServerLost): |
| (WebKit::WebSWClientConnection::clear): |
| (WebKit::WebSWClientConnection::syncTerminateWorker): |
| (WebKit::WebSWClientConnection::updateThrottleState): |
| (WebKit::WebSWClientConnection::storeRegistrationsOnDiskForTesting): |
| * WebProcess/Storage/WebSWClientConnection.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection): |
| (WebKit::m_userAgent): |
| (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerClient): |
| * WebProcess/Storage/WebSWContextManagerConnection.h: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebProcess.messages.in: |
| |
| 2019-09-12 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r249801. |
| |
| Caused two servier worker layout tests to become flaky. |
| |
| Reverted changeset: |
| |
| "Use WebProcess processIdentifier to identify Service Worker |
| connections" |
| https://bugs.webkit.org/show_bug.cgi?id=201459 |
| https://trac.webkit.org/changeset/249801 |
| |
| 2019-09-12 Chris Dumez <cdumez@apple.com> |
| |
| Pass sessionID to WebProcess with other WebProcessDataStoreParameters |
| https://bugs.webkit.org/show_bug.cgi?id=201730 |
| |
| Reviewed by Alex Christensen. |
| |
| Pass sessionID to WebProcess with other WebProcessDataStoreParameters and store |
| it on the WebProcess object. In follow-up patches, I will use this sessionID |
| more and leverage the fact that we have one sessionID per Webprocess to simplify |
| the WebKit2-layer code. |
| |
| * Shared/WebProcessCreationParameters.cpp: |
| (WebKit::WebProcessCreationParameters::encode const): |
| (WebKit::WebProcessCreationParameters::decode): |
| * Shared/WebProcessCreationParameters.h: |
| * Shared/WebProcessDataStoreParameters.h: |
| (WebKit::WebProcessDataStoreParameters::encode const): |
| (WebKit::WebProcessDataStoreParameters::decode): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::tryTakePrewarmedProcess): |
| (WebKit::WebProcessPool::webProcessDataStoreParameters): |
| (WebKit::WebProcessPool::initializeNewWebProcess): |
| (WebKit::WebProcessPool::sendWebProcessDataStoreParameters): Deleted. |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::setWebsiteDataStore): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::initializeWebProcess): |
| (WebKit::WebProcess::setWebsiteDataStoreParameters): |
| * WebProcess/WebProcess.h: |
| (WebKit::WebProcess::sessionID const): |
| |
| 2019-09-12 Chris Dumez <cdumez@apple.com> |
| |
| [WKTR] Drop TestRunner.setPrivateBrowsingEnabled_DEPRECATED() |
| https://bugs.webkit.org/show_bug.cgi?id=201546 |
| |
| Reviewed by Alex Christensen. |
| |
| Drop TestRunner.setPrivateBrowsingEnabled_DEPRECATED() from WebKitTestRunner as it does not do |
| the right thing for WebKit2 and tests have been rewritten to not use it. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession): Deleted. |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * WebProcess/InjectedBundle/API/c/WKBundle.cpp: |
| (WKBundleSetPrivateBrowsingEnabled): Deleted. |
| * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: |
| * WebProcess/InjectedBundle/InjectedBundle.cpp: |
| (WebKit::InjectedBundle::setPrivateBrowsingEnabled): Deleted. |
| * WebProcess/InjectedBundle/InjectedBundle.h: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::ensureLegacyPrivateBrowsingSessionInNetworkProcess): Deleted. |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebStorage/StorageNamespaceImpl.cpp: |
| (WebKit::StorageNamespaceImpl::setSessionIDForTesting): |
| |
| 2019-09-12 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK][WPE] webkit_settings_set_user_agent() allows content forbidden in HTTP headers |
| https://bugs.webkit.org/show_bug.cgi?id=201077 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/glib/WebKitSettings.cpp: |
| (webkit_settings_set_user_agent): Check the passed string using the new |
| WebCore::isValidUserAgentHeaderValue() function, and return early without |
| changing the setting if the string is not usable in the User-Agent HTTP |
| header. |
| |
| 2019-09-12 Mark Lam <mark.lam@apple.com> |
| |
| Harden JSC against the abuse of runtime options. |
| https://bugs.webkit.org/show_bug.cgi?id=201597 |
| <rdar://problem/55167068> |
| |
| Reviewed by Filip Pizlo. |
| |
| Linux parts contributed by Carlos Garcia Campos <cgarcia@igalia.com>. |
| |
| 1. Add plumbing to allow WK2 tests to configureJSCForTesting(). |
| 2. Removed the call enable Options::useBigInt in WebInspectorUI. |
| WebInspectorUI doesn't really need it for now. |
| |
| * PluginProcess/unix/PluginProcessMainUnix.cpp: |
| * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h: |
| (WebKit::XPCServiceInitializer): |
| * Shared/unix/AuxiliaryProcessMain.cpp: |
| (WebKit::AuxiliaryProcessMainBase::parseCommandLine): |
| * Shared/unix/AuxiliaryProcessMain.h: |
| (WebKit::AuxiliaryProcessMain): |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/C/WKContextConfigurationRef.cpp: |
| (WKContextConfigurationSetShouldConfigureJSCForTesting): |
| * UIProcess/API/C/WKContextConfigurationRef.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration configureJSCForTesting]): |
| (-[_WKProcessPoolConfiguration setConfigureJSCForTesting:]): |
| * UIProcess/Launcher/ProcessLauncher.h: |
| (WebKit::ProcessLauncher::Client::shouldConfigureJSCForTesting const): |
| * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: |
| (WebKit::ProcessLauncher::launchProcess): |
| * UIProcess/Launcher/mac/ProcessLauncherMac.mm: |
| (WebKit::ProcessLauncher::launchProcess): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::shouldConfigureJSCForTesting const): |
| * UIProcess/WebProcessProxy.h: |
| * WebProcess/WebPage/WebInspectorUI.cpp: |
| (WebKit::WebInspectorUI::WebInspectorUI): |
| |
| 2019-09-12 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Fix accidental copies in NetworkLoadChecker.cpp |
| https://bugs.webkit.org/show_bug.cgi?id=199528 |
| |
| Reviewed by Youenn Fablet. |
| |
| Coverity noticed that we are copying a ResourceRequest and a ContentExtensionResultOrError |
| in NetworkLoadChecker::checkRequest by mistake, when the intent was to move them as rvalue |
| references. |
| |
| * NetworkProcess/NetworkLoadChecker.cpp: |
| (WebKit::NetworkLoadChecker::checkRequest): |
| * NetworkProcess/NetworkLoadChecker.h: |
| |
| 2019-09-12 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Crashes when intercept response continues with original content |
| https://bugs.webkit.org/show_bug.cgi?id=201707 |
| <rdar://problem/55261857> |
| |
| Reviewed by David Kilzer. |
| |
| * WebProcess/Network/WebResourceLoader.cpp: |
| (WebKit::WebResourceLoader::didReceiveData): |
| Copy the data for the callback since the deferral may run it much later. |
| |
| 2019-09-12 Youenn Fablet <youenn@apple.com> |
| |
| Use typed identifiers for IDB connection identifiers |
| https://bugs.webkit.org/show_bug.cgi?id=201682 |
| |
| Reviewed by Chris Dumez. |
| |
| Remove no longer needed conversion from process identifier to idb connection identifier. |
| |
| * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: |
| * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: |
| (WebKit::WebIDBConnectionToServer::identifier const): |
| * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: |
| |
| 2019-09-12 Charlie Turner <cturner@igalia.com> |
| |
| [GTK] Allow CacheStore::destroyEngine to destroy default engine for soup. |
| https://bugs.webkit.org/show_bug.cgi?id=201690 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * NetworkProcess/cache/CacheStorageEngine.cpp: |
| (WebKit::CacheStorage::Engine::destroyEngine): As we do for |
| NetworkProcess::destroySession, also allow destroying the engine |
| for the default session for the same reason. |
| |
| 2019-09-12 Youenn Fablet <youenn@apple.com> |
| |
| Use WebProcess processIdentifier to identify Service Worker connections |
| https://bugs.webkit.org/show_bug.cgi?id=201459 |
| |
| Reviewed by Chris Dumez. |
| |
| Make WebSWServerConnection be stored in NetworkConnectionToWebProcess. |
| They are now keyed by session IDs hence why WebSWClientConnection is using the session ID as message connection ID. |
| Creation no longer requires a sync IPC since the connection is uniquely identified by its session ID and its process ID. |
| These IDs are stable over network process crash. |
| Within NetworkProcess, a server connection is managed by a SWServer which is session ID specific. |
| In that case, the process identifier uniquely identifies the connection. |
| |
| Move WebSWServerToContextConnection be owned by NetworkConnectionToWebProcess. |
| Instead of creating it when webprocess is connecting to network process, use a dedicated IPC message. |
| This is similar to WebSWServerConnection once WebProcess asks to create it. |
| This will allow existing WebProcess, in cache or running pages, to run service workers as well. |
| A context connection map is kept in Network Process to reuse context connections since these connections are not sessionID specific. |
| |
| Migrate from a single boolean to a HashSet to track whether some connections are in the process of being created. |
| Previously if two requests to create connections were done shortly one after the other on different registrable |
| domains, the second request would not be processed. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): |
| (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage): |
| (WebKit::NetworkConnectionToWebProcess::didClose): |
| (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection): |
| (WebKit::NetworkConnectionToWebProcess::establishSWContextConnection): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::didReceiveMessage): |
| (WebKit::NetworkProcess::createNetworkConnectionToWebProcess): |
| (WebKit::NetworkProcess::forEachSWServer): |
| (WebKit::NetworkProcess::needsServerToContextConnectionForRegistrableDomain const): |
| (WebKit::NetworkProcess::createServerToContextConnection): |
| (WebKit::NetworkProcess::postMessageToServiceWorkerClient): |
| (WebKit::NetworkProcess::registerSWServerConnection): |
| (WebKit::NetworkProcess::unregisterSWServerConnection): |
| (WebKit::NetworkProcess::registerSWContextConnection): |
| (WebKit::NetworkProcess::unregisterSWContextConnection): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: |
| (WebKit::WebSWServerConnection::WebSWServerConnection): |
| (WebKit::WebSWServerConnection::postMessageToServiceWorkerClient): |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.h: |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: |
| (WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection): |
| (WebKit::WebSWServerToContextConnection::~WebSWServerToContextConnection): |
| (WebKit::WebSWServerToContextConnection::postMessageToServiceWorkerClient): |
| (WebKit::WebSWServerToContextConnection::connectionMayNoLongerBeNeeded): |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::openNetworkProcessConnection): |
| (WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::establishServiceWorkerContext): |
| * UIProcess/WebProcessProxy.h: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::didReceiveMessage): |
| (WebKit::NetworkProcessConnection::didClose): |
| (WebKit::NetworkProcessConnection::serviceWorkerConnectionForSession): |
| * WebProcess/Network/NetworkProcessConnection.h: |
| * WebProcess/Storage/WebSWClientConnection.cpp: |
| (WebKit::WebSWClientConnection::WebSWClientConnection): |
| (WebKit::WebSWClientConnection::~WebSWClientConnection): |
| (WebKit::WebSWClientConnection::messageSenderConnection const): |
| (WebKit::WebSWClientConnection::scheduleJobInServer): |
| (WebKit::WebSWClientConnection::finishFetchingScriptInServer): |
| (WebKit::WebSWClientConnection::addServiceWorkerRegistrationInServer): |
| (WebKit::WebSWClientConnection::removeServiceWorkerRegistrationInServer): |
| (WebKit::WebSWClientConnection::postMessageToServiceWorker): |
| (WebKit::WebSWClientConnection::registerServiceWorkerClient): |
| (WebKit::WebSWClientConnection::unregisterServiceWorkerClient): |
| (WebKit::WebSWClientConnection::didResolveRegistrationPromise): |
| (WebKit::WebSWClientConnection::matchRegistration): |
| (WebKit::WebSWClientConnection::runOrDelayTaskForImport): |
| (WebKit::WebSWClientConnection::whenRegistrationReady): |
| (WebKit::WebSWClientConnection::getRegistrations): |
| (WebKit::WebSWClientConnection::startFetch): |
| (WebKit::WebSWClientConnection::cancelFetch): |
| (WebKit::WebSWClientConnection::continueDidReceiveFetchResponse): |
| (WebKit::WebSWClientConnection::connectionToServerLost): |
| (WebKit::WebSWClientConnection::clear): |
| (WebKit::WebSWClientConnection::syncTerminateWorker): |
| (WebKit::WebSWClientConnection::updateThrottleState): |
| (WebKit::WebSWClientConnection::storeRegistrationsOnDiskForTesting): |
| * WebProcess/Storage/WebSWClientConnection.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection): |
| (WebKit::m_userAgent): |
| (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerClient): |
| * WebProcess/Storage/WebSWContextManagerConnection.h: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebProcess.messages.in: |
| |
| 2019-09-11 Keith Rollin <krollin@apple.com> |
| |
| Log timeoutValue passed on to CFNetwork |
| https://bugs.webkit.org/show_bug.cgi?id=201701 |
| <rdar://problem/55279683> |
| |
| Reviewed by Chris Dumez. |
| |
| We occasionally see cases where resource-loads into CFNetwork take a |
| long time. Rather than timing out after the default of 60s, they stay |
| pending for many minutes. To better understand why this is happening, |
| log the timeoutValue we pass to CFNetwork when loading resources. |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::startNetworkLoad): |
| |
| 2019-09-11 Youenn Fablet <youenn@apple.com> |
| |
| Protect UserMediaRequest when stopping it |
| https://bugs.webkit.org/show_bug.cgi?id=201687 |
| <rdar://problem/55241215> |
| |
| Reviewed by Eric Carlson. |
| |
| By removing the request from the map, we may destroy the request. |
| To make sure it stays alive, take the request from the map. |
| |
| * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp: |
| (WebKit::UserMediaPermissionRequestManager::cancelUserMediaRequest): |
| |
| 2019-09-11 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r249768. |
| |
| Caused 4 API tests to assert, perf test failures, and layout |
| test crashes under ASan |
| |
| Reverted changeset: |
| |
| "Remove unnecessary abstractions around WebsiteDataStore" |
| https://bugs.webkit.org/show_bug.cgi?id=201655 |
| https://trac.webkit.org/changeset/249768 |
| |
| 2019-09-11 Simon Fraser <simon.fraser@apple.com> |
| |
| REGRESSION (iOS 13): Top fixed element on apple.com flickers in size while pinching in |
| https://bugs.webkit.org/show_bug.cgi?id=201668 |
| rdar://problem/51934041 |
| |
| Reviewed by Frédéric Wang. |
| |
| The UI process can have transient state that pushes scrolling-tree-managed layers into custom |
| locations while pinch-zooming. We have to apply this state both when the visible rects |
| in the UI process change (existing code in -[WKContentView didUpdateVisibleRect:...]) and when |
| we get new layers from the web process (added in RemoteLayerTreeDrawingAreaProxy::commitLayerTree() |
| in this patch). |
| |
| Move some code into WebPageProxy to create functions that we can call from both places. |
| |
| For manual testing, visit a page with fixed banners, pinch in slightly, then pinch out and, |
| while keeping your fingers down, move the contents around. |
| |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView didUpdateVisibleRect:unobscuredRect:contentInsets:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::unconstrainedLayoutViewportRect const): |
| (WebKit::WebPageProxy::adjustLayersForLayoutViewport): |
| |
| 2019-09-11 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION (245006): can't scroll in "read more" view in Eventbrite app |
| https://bugs.webkit.org/show_bug.cgi?id=201683 |
| <rdar://problem/54582602> |
| |
| Reviewed by Simon Fraser. |
| |
| Content <body> has 'overflow:hidden'. |
| |
| * UIProcess/Cocoa/VersionChecks.h: |
| * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: |
| (WebKit::RemoteScrollingCoordinatorProxy::hasScrollableMainFrame const): |
| |
| Fix by adding an app specific LinkedOnOrAfter quirk that always allows main frame scrolling. |
| |
| 2019-09-11 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unnecessary abstractions around WebsiteDataStore |
| https://bugs.webkit.org/show_bug.cgi?id=201655 |
| |
| Reviewed by Chris Dumez. |
| |
| This patch does four things to simplify WebsiteDataStore code: |
| 1. It removes API::WebsiteDataStore, which was just an unnecessary wrapper around WebKit::WebsiteDataStore. |
| 2. It deprecates the unused aliases of WebsiteDataStore, WKApplicationCacheManagerRef and WKKeyValueStorageManagerRef |
| 3. It removes the unused APIProcessPoolConfiguration properties that have been moved to WebsiteDataStore. |
| 4. It makes WKWebsiteDataStore._delegate weak instead of strong, as already annotated in WKWebsiteDataStorePrivate.h |
| There should be no change in behavior from this patch. |
| |
| * PlatformFTW.cmake: |
| * PlatformWin.cmake: |
| * Sources.txt: |
| * SourcesCocoa.txt: |
| * SourcesGTK.txt: |
| * SourcesWPE.txt: |
| * UIProcess/API/APIHTTPCookieStore.cpp: |
| * UIProcess/API/APIHTTPCookieStore.h: |
| * UIProcess/API/APIPageConfiguration.cpp: |
| (API::PageConfiguration::websiteDataStore): |
| (API::PageConfiguration::setWebsiteDataStore): |
| * UIProcess/API/APIPageConfiguration.h: |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::ProcessPoolConfiguration): |
| (API::ProcessPoolConfiguration::copy): |
| (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration): Deleted. |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/APIWebsiteDataStore.cpp: Removed. |
| * UIProcess/API/APIWebsiteDataStore.h: Removed. |
| * UIProcess/API/APIWebsitePolicies.cpp: |
| (API::WebsitePolicies::data): |
| * UIProcess/API/APIWebsitePolicies.h: |
| * UIProcess/API/C/WKAPICast.h: |
| * UIProcess/API/C/WKApplicationCacheManager.cpp: |
| (WKApplicationCacheManagerGetTypeID): |
| (WKApplicationCacheManagerGetApplicationCacheOrigins): |
| (WKApplicationCacheManagerDeleteEntriesForOrigin): |
| (WKApplicationCacheManagerDeleteAllEntries): |
| * UIProcess/API/C/WKApplicationCacheManager.h: |
| * UIProcess/API/C/WKFramePolicyListener.cpp: |
| (useWithPolicies): |
| * UIProcess/API/C/WKKeyValueStorageManager.cpp: |
| (WKKeyValueStorageManagerGetTypeID): |
| (WKKeyValueStorageManagerGetOriginKey): |
| (WKKeyValueStorageManagerGetCreationTimeKey): |
| (WKKeyValueStorageManagerGetModificationTimeKey): |
| (WKKeyValueStorageManagerGetKeyValueStorageOrigins): |
| (WKKeyValueStorageManagerGetStorageDetailsByOrigin): |
| (WKKeyValueStorageManagerDeleteEntriesForOrigin): |
| (WKKeyValueStorageManagerDeleteAllEntries): |
| * UIProcess/API/C/WKKeyValueStorageManager.h: |
| * UIProcess/API/C/WKResourceCacheManager.cpp: |
| (WKResourceCacheManagerGetTypeID): |
| (WKResourceCacheManagerGetCacheOrigins): |
| (WKResourceCacheManagerClearCacheForOrigin): |
| (WKResourceCacheManagerClearCacheForAllOrigins): |
| (toWebsiteDataTypes): Deleted. |
| * UIProcess/API/C/WKResourceCacheManager.h: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreGetTypeID): |
| (WKWebsiteDataStoreGetDefaultDataStore): |
| (WKWebsiteDataStoreCreateNonPersistentDataStore): |
| (WKWebsiteDataStoreCreateWithConfiguration): |
| (WKWebsiteDataStoreGetHTTPCookieStore): |
| (WKWebsiteDataStoreSetResourceLoadStatisticsDebugModeWithCompletionHandler): |
| (WKWebsiteDataStoreSetResourceLoadStatisticsPrevalentResourceForDebugMode): |
| (WKWebsiteDataStoreSetStatisticsLastSeen): |
| (WKWebsiteDataStoreSetStatisticsPrevalentResource): |
| (WKWebsiteDataStoreSetStatisticsVeryPrevalentResource): |
| (WKWebsiteDataStoreDumpResourceLoadStatistics): |
| (WKWebsiteDataStoreIsStatisticsPrevalentResource): |
| (WKWebsiteDataStoreIsStatisticsVeryPrevalentResource): |
| (WKWebsiteDataStoreIsStatisticsRegisteredAsSubresourceUnder): |
| (WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder): |
| (WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo): |
| (WKWebsiteDataStoreSetStatisticsHasHadUserInteraction): |
| (WKWebsiteDataStoreIsStatisticsHasHadUserInteraction): |
| (WKWebsiteDataStoreSetStatisticsGrandfathered): |
| (WKWebsiteDataStoreIsStatisticsGrandfathered): |
| (WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin): |
| (WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin): |
| (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectTo): |
| (WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectFrom): |
| (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectTo): |
| (WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectFrom): |
| (WKWebsiteDataStoreSetStatisticsCrossSiteLoadWithLinkDecoration): |
| (WKWebsiteDataStoreSetStatisticsTimeToLiveUserInteraction): |
| (WKWebsiteDataStoreStatisticsProcessStatisticsAndDataRecords): |
| (WKWebsiteDataStoreStatisticsUpdateCookieBlocking): |
| (WKWebsiteDataStoreStatisticsSubmitTelemetry): |
| (WKWebsiteDataStoreSetStatisticsNotifyPagesWhenDataRecordsWereScanned): |
| (WKWebsiteDataStoreSetStatisticsIsRunningTest): |
| (WKWebsiteDataStoreSetStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval): |
| (WKWebsiteDataStoreSetStatisticsNotifyPagesWhenTelemetryWasCaptured): |
| (WKWebsiteDataStoreSetStatisticsMinimumTimeBetweenDataRecordsRemoval): |
| (WKWebsiteDataStoreSetStatisticsGrandfatheringTime): |
| (WKWebsiteDataStoreSetStatisticsMaxStatisticsEntries): |
| (WKWebsiteDataStoreSetStatisticsPruneEntriesDownTo): |
| (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore): |
| (WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours): |
| (WKWebsiteDataStoreStatisticsClearThroughWebsiteDataRemoval): |
| (WKWebsiteDataStoreStatisticsDeleteCookiesForTesting): |
| (WKWebsiteDataStoreStatisticsHasLocalStorage): |
| (WKWebsiteDataStoreSetStatisticsCacheMaxAgeCap): |
| (WKWebsiteDataStoreStatisticsHasIsolatedSession): |
| (WKWebsiteDataStoreStatisticsResetToConsistentState): |
| (WKWebsiteDataStoreRemoveAllFetchCaches): |
| (WKWebsiteDataStoreRemoveFetchCacheForOrigin): |
| (WKWebsiteDataStoreRemoveAllIndexedDatabases): |
| (WKWebsiteDataStoreRemoveLocalStorage): |
| (WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations): |
| (WKWebsiteDataStoreGetFetchCacheOrigins): |
| (WKWebsiteDataStoreGetFetchCacheSizeForOrigin): |
| (WKWebsiteDataStoreCopyServiceWorkerRegistrationDirectory): |
| (WKWebsiteDataStoreSetServiceWorkerRegistrationDirectory): |
| (WKWebsiteDataStoreSetPerOriginStorageQuota): |
| (WKWebsiteDataStoreClearAllDeviceOrientationPermissions): |
| (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration): |
| (WKWebsiteDataStoreClearAdClickAttributionsThroughWebsiteDataRemoval): |
| * UIProcess/API/C/WKWebsitePolicies.cpp: |
| * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm: Removed. |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (+[WKWebsiteDataStore defaultDataStore]): |
| (+[WKWebsiteDataStore nonPersistentDataStore]): |
| (-[WKWebsiteDataStore dealloc]): |
| (-[WKWebsiteDataStore httpCookieStore]): |
| (-[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:]): |
| (-[WKWebsiteDataStore removeDataOfTypes:forDataRecords:completionHandler:]): |
| (+[WKWebsiteDataStore _defaultDataStoreExists]): |
| (+[WKWebsiteDataStore _deleteDefaultDataStoreForTesting]): |
| (-[WKWebsiteDataStore _initWithConfiguration:]): |
| (-[WKWebsiteDataStore _fetchDataRecordsOfTypes:withOptions:completionHandler:]): |
| (-[WKWebsiteDataStore _resourceLoadStatisticsEnabled]): |
| (-[WKWebsiteDataStore _setResourceLoadStatisticsEnabled:]): |
| (-[WKWebsiteDataStore _resourceLoadStatisticsDebugMode]): |
| (-[WKWebsiteDataStore _setResourceLoadStatisticsDebugMode:]): |
| (-[WKWebsiteDataStore _perOriginStorageQuota]): |
| (-[WKWebsiteDataStore _setPerOriginStorageQuota:]): |
| (-[WKWebsiteDataStore _cacheStorageDirectory]): |
| (-[WKWebsiteDataStore _setCacheStorageDirectory:]): |
| (-[WKWebsiteDataStore _serviceWorkerRegistrationDirectory]): |
| (-[WKWebsiteDataStore _setServiceWorkerRegistrationDirectory:]): |
| (-[WKWebsiteDataStore _setBoundInterfaceIdentifier:]): |
| (-[WKWebsiteDataStore _boundInterfaceIdentifier]): |
| (-[WKWebsiteDataStore _setAllowsCellularAccess:]): |
| (-[WKWebsiteDataStore _allowsCellularAccess]): |
| (-[WKWebsiteDataStore _setProxyConfiguration:]): |
| (-[WKWebsiteDataStore _sourceApplicationBundleIdentifier]): |
| (-[WKWebsiteDataStore _setSourceApplicationBundleIdentifier:]): |
| (-[WKWebsiteDataStore _sourceApplicationSecondaryIdentifier]): |
| (-[WKWebsiteDataStore _setSourceApplicationSecondaryIdentifier:]): |
| (-[WKWebsiteDataStore _setAllowsTLSFallback:]): |
| (-[WKWebsiteDataStore _allowsTLSFallback]): |
| (-[WKWebsiteDataStore _proxyConfiguration]): |
| (-[WKWebsiteDataStore _indexedDBDatabaseDirectory]): |
| (-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldSubmitTelemetry:]): |
| (-[WKWebsiteDataStore _setResourceLoadStatisticsTestingCallback:]): |
| (-[WKWebsiteDataStore _getAllStorageAccessEntriesFor:completionHandler:]): |
| (-[WKWebsiteDataStore _scheduleCookieBlockingUpdate:]): |
| (-[WKWebsiteDataStore _setPrevalentDomain:completionHandler:]): |
| (-[WKWebsiteDataStore _getIsPrevalentDomain:completionHandler:]): |
| (-[WKWebsiteDataStore _clearPrevalentDomain:completionHandler:]): |
| (-[WKWebsiteDataStore _processStatisticsAndDataRecords:]): |
| (-[WKWebsiteDataStore _hasRegisteredServiceWorker]): |
| (-[WKWebsiteDataStore _delegate]): |
| (-[WKWebsiteDataStore set_delegate:]): |
| * UIProcess/API/Cocoa/WKWebsiteDataStoreInternal.h: |
| * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp: Removed. |
| * UIProcess/API/win/APIWebsiteDataStoreWin.cpp: |
| (API::WebsiteDataStore::defaultApplicationCacheDirectory): Deleted. |
| (API::WebsiteDataStore::defaultCacheStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultNetworkCacheDirectory): Deleted. |
| (API::WebsiteDataStore::defaultIndexedDBDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory): Deleted. |
| (API::WebsiteDataStore::defaultLocalStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultMediaKeysStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultWebSQLDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory): Deleted. |
| (API::WebsiteDataStore::cacheDirectoryFileSystemRepresentation): Deleted. |
| (API::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): Deleted. |
| * UIProcess/Automation/WebAutomationSession.cpp: |
| (WebKit::WebAutomationSession::addSingleCookie): |
| (WebKit::WebAutomationSession::deleteAllCookies): |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::NetworkProcessProxy): |
| (WebKit::NetworkProcessProxy::websiteDataStoreFromSessionID): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebFramePolicyListenerProxy.cpp: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::WebPageProxy): |
| (WebKit::WebPageProxy::receivedNavigationPolicyDecision): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::m_webProcessCache): |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess): |
| (WebKit::WebProcessPool::resolvePathsForSandboxExtensions): |
| (WebKit::WebProcessPool::tryTakePrewarmedProcess): |
| (WebKit::WebProcessPool::sendWebProcessDataStoreParameters): |
| (WebKit::WebProcessPool::processDidFinishLaunching): |
| (WebKit::WebProcessPool::processForRegistrableDomain): |
| (WebKit::WebProcessPool::createWebPage): |
| (WebKit::WebProcessPool::mayHaveRegisteredServiceWorkers): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::defaultApplicationCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultCacheStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultNetworkCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultMediaCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultIndexedDBDatabaseDirectory): |
| (WebKit::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory): |
| (WebKit::WebsiteDataStore::defaultLocalStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultMediaKeysStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultWebSQLDatabaseDirectory): |
| (WebKit::WebsiteDataStore::defaultResourceLoadStatisticsDirectory): |
| (WebKit::WebsiteDataStore::defaultJavaScriptConfigurationDirectory): |
| (WebKit::WebsiteDataStore::tempDirectoryFileSystemRepresentation): |
| (WebKit::WebsiteDataStore::cacheDirectoryFileSystemRepresentation): |
| (WebKit::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::globalDefaultDataStore): |
| (WebKit::WebsiteDataStore::defaultDataStore): |
| (WebKit::WebsiteDataStore::deleteDefaultDataStoreForTesting): |
| (WebKit::WebsiteDataStore::defaultDataStoreExists): |
| (WebKit::WebsiteDataStore::defaultDataStoreConfiguration): |
| (WebKit::WebsiteDataStore::isAssociatedProcessPool const): |
| (WebKit::WebsiteDataStore::processPools const): |
| (WebKit::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::WebsiteDataStoreConfiguration): |
| * UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp: |
| (WebKit::WebsiteDataStore::defaultApplicationCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultCacheStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultNetworkCacheDirectory): |
| (WebKit::WebsiteDataStore::defaultIndexedDBDatabaseDirectory): |
| (WebKit::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory): |
| (WebKit::WebsiteDataStore::defaultLocalStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultMediaKeysStorageDirectory): |
| (WebKit::WebsiteDataStore::defaultWebSQLDatabaseDirectory): |
| (WebKit::WebsiteDataStore::defaultResourceLoadStatisticsDirectory): |
| (WebKit::WebsiteDataStore::cacheDirectoryFileSystemRepresentation): |
| (WebKit::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): |
| * UIProcess/glib/WebsiteDataStoreGLib.cpp: Copied from Source/WebKit/UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp. |
| (API::WebsiteDataStore::defaultApplicationCacheDirectory): Deleted. |
| (API::WebsiteDataStore::defaultNetworkCacheDirectory): Deleted. |
| (API::WebsiteDataStore::defaultCacheStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultIndexedDBDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory): Deleted. |
| (API::WebsiteDataStore::defaultLocalStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultMediaKeysStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultDeviceIdHashSaltsStorageDirectory): Deleted. |
| (API::WebsiteDataStore::defaultWebSQLDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::defaultHSTSDirectory): Deleted. |
| (API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory): Deleted. |
| (API::WebsiteDataStore::cacheDirectoryFileSystemRepresentation): Deleted. |
| (API::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation): Deleted. |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-09-11 Antoine Quint <graouts@apple.com> |
| |
| REGRESSION: Scrubbing on ted.com does not work well |
| https://bugs.webkit.org/show_bug.cgi?id=201635 |
| <rdar://problem/51463649> |
| |
| Reviewed by Dean Jackson. |
| |
| This website uses custom media controls that simply don't work well on iOS when the User-Agent string is the desktop one, so we default to the mobile UA. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::desktopClassBrowsingRecommendedForRequest): |
| |
| 2019-09-10 Tim Horton <timothy_horton@apple.com> |
| |
| REGRESSION (r233780): After swiping to navigate back, pinching to zoom in on webcontent snaps back to zoomed out when letting go |
| https://bugs.webkit.org/show_bug.cgi?id=201671 |
| <rdar://problem/50488372> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::didCommitLoad): |
| Reset m_lastTransactionIDWithScaleChange, since it is not guaranteed |
| to only march forward. Otherwise, we can get stuck with a very large |
| m_lastTransactionIDWithScaleChange, and will not allow stable-state |
| user-driven zooms until the current transactionID exceeds it. |
| |
| 2019-09-10 Chris Dumez <cdumez@apple.com> |
| |
| Nullptr crash in Page::sessionID() via WebKit::WebFrameLoaderClient::detachedFromParent2() |
| https://bugs.webkit.org/show_bug.cgi?id=201625 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| This is based on a patch from Ryosuke Niwa. |
| |
| The crash was caused by WebFrameLoaderClient::sessionID() calling WebPage::sessionID() without |
| checking the nullity of WebPage::m_page which can be null. Added a null check. |
| |
| Because passing a wrong session to RemoveStorageAccessForFrame could result in a leak, this patch |
| also replaces m_hasFrameSpecificStorageAccess boolean with an optioanl struct which stores |
| session ID, frame ID, and page ID even after WebCore::Frame or WebCore::Page had been cleared |
| or before WebFrameLoaderClient::m_frame is set. |
| |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::sessionID const): |
| (WebKit::WebFrameLoaderClient::setHasFrameSpecificStorageAccess): |
| (WebKit::WebFrameLoaderClient::detachedFromParent2): |
| (WebKit::WebFrameLoaderClient::dispatchWillChangeDocument): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| * WebProcess/WebPage/WebFrame.h: |
| (WebKit::WebFrame::frameLoaderClient const): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::requestStorageAccess): |
| |
| 2019-09-10 Brady Eidson <beidson@apple.com> |
| |
| Add SPI to save a PDF from the contents of a WKWebView. |
| <rdar://problem/48955900> and https://bugs.webkit.org/show_bug.cgi?id=195765 |
| |
| Reviewed by Tim Horton. |
| |
| This is refactoring a combination of "snapshotFirstPage" PDF printing code and the |
| "takeSnapshot" API code to capture the on-screen visible page to a PDF at full fidelity. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _takePDFSnapshotWithConfiguration:completionHandler:]): |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::drawToPDF): |
| (WebKit::WebPageProxy::drawToPDFCallback): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _wk_pageCountForPrintFormatter:]): |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::drawToPDFCallback): Move to cross platform WebPageProxy. |
| |
| * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: |
| (WebKit::WebPage::pdfSnapshotAtSize): |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::pdfSnapshotAtSize): Instead of assuming 1 page capped at 200 inches, |
| paginate every 200 inches. |
| (WebKit::WebPage::drawToPDF): |
| (WebKit::paintSnapshotAtSize): Deleted. |
| (WebKit::WebPage::pdfSnapshotAtSize): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2019-09-10 Chris Dumez <cdumez@apple.com> |
| |
| Hangs on Swiss.com due to the web process being blocked on StorageAreaMap::LoadValuesIfNeeded |
| https://bugs.webkit.org/show_bug.cgi?id=201644 |
| <rdar://problem/54942761> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Mark the StorageManagerSet::GetValues sync IPC from the WebContent process to the Network |
| process with a UnboundedSynchronousIPCScope so that it will process critical sync IPC |
| from the UIProcess (such as WebPage::GetPositionInformation) while waiting for a reply. |
| |
| * WebProcess/WebStorage/StorageAreaMap.cpp: |
| (WebKit::StorageAreaMap::loadValuesIfNeeded): |
| |
| 2019-09-10 David Quesada <david_quesada@apple.com> |
| |
| Remove a leftover reference to the StorageProcess |
| https://bugs.webkit.org/show_bug.cgi?id=192759 |
| |
| Reviewed by Alex Christensen. |
| |
| * WebKit.xcodeproj/project.pbxproj: |
| Remove com.apple.WebKit.Storage.sb as an input file to the "Copy iOS Sandbox Profiles |
| for Manual Sandboxing" build phase. The file no longer exists. |
| |
| 2019-09-10 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK][WPE] Fixes for non-unified builds after r249022 |
| https://bugs.webkit.org/show_bug.cgi?id=201610 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * NetworkProcess/NetworkCORSPreflightChecker.h: Add missing inclusion of the WebPageProxyIdentifier.h header. |
| * NetworkProcess/NetworkLoadChecker.h: Add missing inclusion of the WebPageProxyIdentifier.h header. |
| |
| 2019-09-10 Youenn Fablet <youenn@apple.com> |
| |
| UserMediaProcessManager is revoking sandbox extensions too aggressively |
| https://bugs.webkit.org/show_bug.cgi?id=201638 |
| |
| Reviewed by Eric Carlson. |
| |
| Sandbox revocation was sometimes happening when a page is being closed while another page from the same process is starting capture. |
| In that case, revocation might happen while it should not. |
| To prevent this, we do not revoke sandbox extensions if there are pending captures for a page of the process. |
| Whenever a page does not have any pending capture, sandbox extensions may be revoked. |
| |
| Covered by OnDeviceChangeCrash API test in debug mode. |
| |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest): |
| * UIProcess/UserMediaPermissionRequestManagerProxy.h: |
| (WebKit::UserMediaPermissionRequestManagerProxy::hasPendingCapture const): |
| * UIProcess/UserMediaProcessManager.cpp: |
| (WebKit::UserMediaProcessManager::revokeSandboxExtensionsIfNeeded): |
| |
| 2019-09-09 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] We sometimes attempt to use a terminated prewarmed WebContent process |
| https://bugs.webkit.org/show_bug.cgi?id=201614 |
| <rdar://problem/54714507> |
| |
| Reviewed by Geoffrey Garen. |
| |
| On iOS, it is possible for our processes to get terminated (e.g. jetsammed) while the UIProcess |
| is suspended. Upon resuming, it takes a little while for the UIProcess to get the notification |
| that the mac connection to its child process has been severed and the UIProcess may try to use |
| it for a load. This is especially problematic for prewarmed process because the client will end |
| up showing a crash banner and reloading when we could have used a new process rather the prewarmed |
| one if we had known it was dead. |
| |
| This patch makes 2 improvements: |
| 1. It makes AuxiliaryProcessProxy::state() return Terminated if we still have a connection but |
| the PID is not the PID of a running process. I also added a check in tryTakePrewarmedProcess() |
| to not use the prewarmed process if it state() is Terminated. |
| 2. When the UIProcess is about to get suspended, have the process pools terminate their non-critical |
| processes (i.e. prewarmed + the ones used for PageCache). This makes WebKit friendlier with |
| other apps on the system when suspended with regards to memory. Also, it makes it less likely |
| useful WebContent processes will get jetsammed. |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::state const): |
| (WebKit::AuxiliaryProcessProxy::isRunningProcessPID): |
| * UIProcess/AuxiliaryProcessProxy.h: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::applicationIsAboutToSuspend): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::tryTakePrewarmedProcess): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (-[WKProcessAssertionBackgroundTaskManager init]): |
| (-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]): |
| |
| 2019-09-09 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION: http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations.html is frequently timing out on iOS EWS bots |
| https://bugs.webkit.org/show_bug.cgi?id=201550 |
| |
| Reviewed by Alex Christensen. |
| |
| * WebProcess/InjectedBundle/API/c/WKBundle.cpp: |
| (WKBundleResourceLoadStatisticsNotifyObserver): |
| * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: |
| |
| 2019-09-09 Alex Christensen <achristensen@webkit.org> |
| |
| Disable TLS 1.0 and 1.1 in WebSockets |
| https://bugs.webkit.org/show_bug.cgi?id=201573 |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa): |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _allowAnyTLSCertificateForWebSocketTesting]): |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeNetworkProcess): |
| |
| 2019-09-09 Tim Horton <timothy_horton@apple.com> |
| |
| Clarify some macCatalyst feature flags |
| https://bugs.webkit.org/show_bug.cgi?id=201619 |
| <rdar://problem/54615618> |
| |
| Reviewed by Megan Gardner. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView cleanupInteraction]): |
| (-[WKContentView _removeDefaultGestureRecognizers]): |
| (-[WKContentView _addDefaultGestureRecognizers]): |
| (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): |
| (-[WKContentView _showShareSheet:inRect:completionHandler:]): |
| We prefer specific flags over platform checks. |
| |
| 2019-09-09 Chris Dumez <cdumez@apple.com> |
| |
| Stop using testRunner.setPrivateBrowsingEnabled_DEPRECATED() in http/tests/adClickAttribution/conversion-disabled-in-ephemeral-session.html |
| https://bugs.webkit.org/show_bug.cgi?id=201596 |
| |
| Reviewed by Alex Christensen. |
| |
| Allow WKFramePolicyListenerUseWithPolicies() C API to switch to a persistent non-default session. |
| This is important since WebKitTestRunner is not using the default session anymore and I need to |
| be able to switch it back to its normal session after going to an ephemeral one. |
| |
| * UIProcess/API/C/WKFramePolicyListener.cpp: |
| (useWithPolicies): |
| |
| 2019-09-09 Alex Christensen <achristensen@webkit.org> |
| |
| Deprecate unused SPI to preconnect to a server |
| https://bugs.webkit.org/show_bug.cgi?id=201558 |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::preconnectTo): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextPreconnectToServer): |
| * UIProcess/API/C/WKContextPrivate.h: |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _preconnectToServer:]): |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::preconnectToServer): Deleted. |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-09-09 Per Arne Vollan <pvollan@apple.com> |
| |
| Unreviewed Windows build fix. |
| |
| * WebProcess/WebPage/WebPage.h: |
| |
| 2019-09-09 Per Arne Vollan <pvollan@apple.com> |
| |
| [macOS] Pid is sometimes invalid when creating sandbox extensions by pid. |
| https://bugs.webkit.org/show_bug.cgi?id=201543 |
| <rdar://problem/54733465> |
| |
| Reviewed by Brent Fulgham. |
| |
| There is a race condition when starting a load of a local file, where the WebContent process has not finished |
| launching yet, and its pid is not available. When we try to create a sandbox extension by using the pid of the |
| WebContent process, it is not available in the cases where the WebContent process has just launched and has not |
| finished launching yet. This patch creates a new dummy Web page message, 'LoadRequestWaitingForPID', which will |
| be sent instead of a normal 'LoadRequest' message, and only when the WebContent process has not finished |
| launching. When the WebContent process has finished launching, and we are about to actually send the pending |
| messages, we can detect that a 'LoadRequestWaitingForPID' has been appended for sending, and replace it with a |
| normal 'LoadReqest' message where we have created the sandbox extension issue with a valid pid. The message |
| 'LoadRequestWaitingForPID' is never intended to reach the WebContent process, it is just there to replace with |
| a normal 'LoadRequest' message with a new sandbox extension. In the implementation of the message handler on |
| the WebContent process side, we assert that the method is never called. This patch makes sure the ordering of |
| the Web page messages are the same, even when we modify the message. |
| |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::didFinishLaunching): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadFile): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::fileLoadRequest): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2019-09-09 Youenn Fablet <youenn@apple.com> |
| |
| Remove ServiceWorkerProcessProxy |
| https://bugs.webkit.org/show_bug.cgi?id=201506 |
| |
| Reviewed by Chris Dumez. |
| |
| Instead of using a specific ServiceWorkerProcessProxy, move the logic directly in WebProcessProxy. |
| This will allow us in the future to run a service worker in a process that already runs a web page, |
| thus saving the need to spin off a new process. |
| |
| This patch adds a new WebProcessProxy::createForServiceWorkers method instead of creating a |
| ServiceWorkerProcessProxy. The behavior is then similar: a process running a service worker cannot run a page. |
| |
| * Sources.txt: |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _hasRegisteredServiceWorker]): |
| * UIProcess/BackgroundProcessResponsivenessTimer.cpp: |
| (WebKit::BackgroundProcessResponsivenessTimer::shouldBeActive const): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::openNetworkProcessConnection): |
| * UIProcess/ServiceWorkerProcessProxy.cpp: Removed. |
| * UIProcess/ServiceWorkerProcessProxy.h: Removed. |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess): |
| (WebKit::WebProcessPool::disconnectProcess): |
| (WebKit::WebProcessPool::processForRegistrableDomain): |
| (WebKit::WebProcessPool::createWebPage): |
| (WebKit::WebProcessPool::updateServiceWorkerUserAgent): |
| (WebKit::WebProcessPool::mayHaveRegisteredServiceWorkers): |
| (WebKit::WebProcessPool::updateProcessAssertions): |
| (WebKit::WebProcessPool::isServiceWorkerPageID const): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::createForServiceWorkers): |
| (WebKit::WebProcessProxy::getLaunchOptions): |
| (WebKit::WebProcessProxy::didBecomeUnresponsive): |
| (WebKit::WebProcessProxy::canBeAddedToWebProcessCache const): |
| (WebKit::WebProcessProxy::didSetAssertionState): |
| (WebKit::WebProcessProxy::didExceedCPULimit): |
| (WebKit::WebProcessProxy::establishServiceWorkerContext): |
| (WebKit::WebProcessProxy::setServiceWorkerUserAgent): |
| (WebKit::WebProcessProxy::updateServiceWorkerPreferencesStore): |
| * UIProcess/WebProcessProxy.h: |
| (WebKit::WebProcessProxy::isRunningServiceWorkers const): |
| (WebKit::WebProcessProxy::hasServiceWorkerPageProxy): |
| * UIProcess/glib/WebProcessPoolGLib.cpp: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-09-09 Youenn Fablet <youenn@apple.com> |
| |
| Use WebProcess processIdentifier to identify IDB connections between WebProcess and NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=201419 |
| |
| Reviewed by Alex Christensen. |
| |
| We change from an identifier generated by NetworkProcess to WebProcess identifier. |
| A WebProcess identifier is unique globally and is stable even in case of NetworkProcess crash. |
| This removes the need for a sync IPC and makes things more easy to handle in case of NetworkProcess crash. |
| |
| * NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp: |
| (WebKit::WebIDBConnectionToClient::create): |
| (WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient): |
| (WebKit::WebIDBConnectionToClient::getAllDatabaseNames): |
| * NetworkProcess/IndexedDB/WebIDBConnectionToClient.h: |
| * NetworkProcess/IndexedDB/WebIDBConnectionToClient.messages.in: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp: |
| (WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer): |
| (WebKit::WebIDBConnectionToServer::identifier const): |
| (WebKit::WebIDBConnectionToServer::coreConnectionToServer): |
| (WebKit::WebIDBConnectionToServer::getAllDatabaseNames): |
| * WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::didReceiveMessage): |
| (WebKit::NetworkProcessConnection::didClose): |
| (WebKit::NetworkProcessConnection::idbConnectionToServerForSession): |
| * WebProcess/Network/NetworkProcessConnection.h: |
| (WebKit::NetworkProcessConnection::existingIDBConnectionToServer const): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::networkProcessConnectionClosed): |
| |
| 2019-09-09 Youenn Fablet <youenn@apple.com> |
| |
| Move checkProcessLocalPortForActivity from provider to registry |
| https://bugs.webkit.org/show_bug.cgi?id=201400 |
| |
| Reviewed by Alex Christensen. |
| |
| Implement registry callback at NetworkProcess level. |
| Remove NetworkMessagePortChannelProvider since only a registry is now needed. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| * NetworkProcess/NetworkMessagePortChannelProvider.cpp: Removed. |
| * NetworkProcess/NetworkMessagePortChannelProvider.h: Removed. |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::createMessagePortChannelRegistry): |
| (WebKit::m_messagePortChannelRegistry): |
| (WebKit::m_messagePortChannelProvider): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::messagePortChannelRegistry): |
| * Sources.txt: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp: |
| (WebKit::WebMessagePortChannelProvider::checkProcessLocalPortForActivity): Deleted. |
| * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h: |
| |
| 2019-09-08 David Quesada <david_quesada@apple.com> |
| |
| Remove some unused constants in VersionChecks.h |
| https://bugs.webkit.org/show_bug.cgi?id=201599 |
| |
| Reviewed by Youenn Fablet. |
| |
| * UIProcess/Cocoa/VersionChecks.h: |
| Remove two macros that are unused as of r244512. |
| |
| 2019-09-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macCatalyst] The last typed character in password fields shouldn't be echoed |
| https://bugs.webkit.org/show_bug.cgi?id=201595 |
| <rdar://problem/55166367> |
| |
| Reviewed by Tim Horton. |
| |
| Disable password echoing on macCatalyst, to better match behavior on macOS. |
| |
| * Shared/WebPreferencesDefaultValues.h: |
| |
| 2019-09-07 Chris Dumez <cdumez@apple.com> |
| |
| Rewrite http/tests/workers/service/serviceworker-private-browsing.https.html as an API test |
| https://bugs.webkit.org/show_bug.cgi?id=201574 |
| |
| Reviewed by Alex Christensen. |
| |
| Update Service Workers so that they obey the "secureContextChecksEnabled" preference. |
| This was needed to allow my service worker to access self.caches in my API test. |
| |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::updatePreferencesStore): |
| |
| 2019-09-07 Tim Horton <timothy_horton@apple.com> |
| |
| Marking up a note on iOS results in a PDF with no contents |
| https://bugs.webkit.org/show_bug.cgi?id=201530 |
| <rdar://problem/53686019> |
| |
| Unreviewed follow-up. |
| |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _waitForDrawToPDFCallback]): |
| Remove an ASSERT_NOT_REACHED that fires if the synchronous wait for printing |
| times out. This is a totally legitimite situation that can occur if the process |
| crashes; there's no need for an assert there. |
| |
| 2019-09-07 Alex Christensen <achristensen@webkit.org> |
| |
| Null check m_client in NetworkDataTask::didReceiveResponse |
| https://bugs.webkit.org/show_bug.cgi?id=201587 |
| <rdar://problem/54743444> |
| |
| Reviewed by Chris Dumez. |
| |
| clearClient can be called at any time. We null check it everyhere else we use it, |
| and we are seeing crashes at this call site. Let's not crash. |
| |
| * NetworkProcess/NetworkDataTask.cpp: |
| (WebKit::NetworkDataTask::didReceiveResponse): |
| |
| 2019-09-07 Alex Christensen <achristensen@webkit.org> |
| |
| Remove WebsiteDataStore::legacyDefaultDataStoreConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=200054 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Its last needed use was removed in rdar://problem/47030981 |
| This changes WKContextConfigurationCreateWithLegacyOptions to be equal to WKContextConfigurationCreate, |
| but it has no remaining clients so it is only being retained for binary compabibility. |
| This also changes WKContextCreateWithInjectedBundlePath and WKContextCreate to be equal to WKContextCreateWithConfiguration, |
| and after rdar://problem/47030981 there are no meaningful clients of those functions, also. |
| There is one existing client of WKContextCreateWithInjectedBundlePath in rdar://problem/50323967 but our current implementation |
| is compatible enough for them because it uses their injected bundle still. |
| |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| (API::ProcessPoolConfiguration::createWithLegacyOptions): Deleted. |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/APIWebsiteDataStore.cpp: |
| (API::WebsiteDataStore::createLegacy): Deleted. |
| (API::WebsiteDataStore::legacyDefaultDataStoreConfiguration): Deleted. |
| * UIProcess/API/APIWebsiteDataStore.h: |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextCreate): |
| (WKContextCreateWithInjectedBundlePath): |
| (WKContextGetWebsiteDataStore): |
| * UIProcess/API/C/WKContextConfigurationRef.cpp: |
| (WKContextConfigurationCreate): |
| (WKContextConfigurationCreateWithLegacyOptions): |
| * UIProcess/API/C/WKContextConfigurationRef.h: |
| * UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm: |
| (API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultLocalStorageDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultMediaCacheDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory): Deleted. |
| * UIProcess/API/Cocoa/WKProcessGroup.mm: |
| (-[WKProcessGroup initWithInjectedBundleURL:]): |
| * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp: |
| (API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultLocalStorageDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultMediaCacheDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory): Deleted. |
| * UIProcess/API/win/APIWebsiteDataStoreWin.cpp: |
| (API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultLocalStorageDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultMediaCacheDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultDeviceIdHashSaltsStorageDirectory): Deleted. |
| (API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory): Deleted. |
| * UIProcess/WebInspectorUtilities.cpp: |
| (WebKit::inspectorProcessPool): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::m_webProcessCache): |
| (WebKit::legacyWebsiteDataStoreConfiguration): Deleted. |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-09-07 Alex Christensen <achristensen@webkit.org> |
| |
| Fix Windows build |
| https://bugs.webkit.org/show_bug.cgi?id=201517 |
| |
| * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: |
| |
| 2019-09-07 Alex Christensen <achristensen@webkit.org> |
| |
| Remove calls to WKContextGetWebsiteDataStore missed in r249614 |
| https://bugs.webkit.org/show_bug.cgi?id=200050 |
| |
| It turns out I didn't need to introduce another way of clearing all cookies between tests. |
| I just needed to make the call to WKHTTPCookieStoreDeleteAllCookies use the right WebsiteDataStore. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::clearCachedCredentials): |
| * NetworkProcess/NetworkSession.h: |
| (WebKit::NetworkSession::clearCredentials): |
| (WebKit::NetworkSession::clearCookies): Deleted. |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::clearCookies): Deleted. |
| |
| 2019-09-07 Alex Christensen <achristensen@webkit.org> |
| |
| Fix Windows build. |
| https://bugs.webkit.org/show_bug.cgi?id=200050 |
| |
| * PlatformWin.cmake: |
| |
| 2019-09-07 Alex Christensen <achristensen@webkit.org> |
| |
| Fix Windows build. |
| https://bugs.webkit.org/show_bug.cgi?id=201517 |
| |
| * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: |
| |
| 2019-09-07 Alex Christensen <achristensen@webkit.org> |
| |
| Deprecate WKContextGetWebsiteDataStore |
| https://bugs.webkit.org/show_bug.cgi?id=200050 |
| |
| Reviewed by Geoff Garen. |
| |
| The last use of it was removed in rdar://problem/47030981 |
| In order to remove its use in WebKitTestRunner, I needed to make WKWebsiteDataStoreConfigurationRef |
| to replace the WKContextConfigurationRef members that should've been associated with the WebsiteDataStore the whole time. |
| There is one use of WKContextGetWebsiteDataStore in TestWebKitAPI still I'll investigate later. |
| |
| * Shared/API/c/WKBase.h: |
| * Sources.txt: |
| * UIProcess/API/APIWebsiteDataStore.cpp: |
| (API::WebsiteDataStore::create): |
| * UIProcess/API/APIWebsiteDataStore.h: |
| * UIProcess/API/C/WKAPICast.h: |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextGetApplicationCacheManager): |
| (WKContextGetKeyValueStorageManager): |
| (WKContextGetResourceCacheManager): |
| * UIProcess/API/C/WKContext.h: |
| * UIProcess/API/C/WKContextConfigurationRef.cpp: |
| (WKContextConfigurationCopyDiskCacheDirectory): |
| (WKContextConfigurationSetDiskCacheDirectory): |
| (WKContextConfigurationCopyApplicationCacheDirectory): |
| (WKContextConfigurationSetApplicationCacheDirectory): |
| (WKContextConfigurationCopyIndexedDBDatabaseDirectory): |
| (WKContextConfigurationSetIndexedDBDatabaseDirectory): |
| (WKContextConfigurationCopyLocalStorageDirectory): |
| (WKContextConfigurationSetLocalStorageDirectory): |
| (WKContextConfigurationCopyWebSQLDatabaseDirectory): |
| (WKContextConfigurationSetWebSQLDatabaseDirectory): |
| (WKContextConfigurationCopyMediaKeysStorageDirectory): |
| (WKContextConfigurationSetMediaKeysStorageDirectory): |
| (WKContextConfigurationCopyResourceLoadStatisticsDirectory): |
| (WKContextConfigurationSetResourceLoadStatisticsDirectory): |
| * UIProcess/API/C/WKContextConfigurationRef.h: |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.cpp: Added. |
| (WKWebsiteDataStoreConfigurationGetTypeID): |
| (WKWebsiteDataStoreConfigurationCreate): |
| (WKWebsiteDataStoreConfigurationCopyApplicationCacheDirectory): |
| (WKWebsiteDataStoreConfigurationSetApplicationCacheDirectory): |
| (WKWebsiteDataStoreConfigurationCopyNetworkCacheDirectory): |
| (WKWebsiteDataStoreConfigurationSetNetworkCacheDirectory): |
| (WKWebsiteDataStoreConfigurationCopyIndexedDBDatabaseDirectory): |
| (WKWebsiteDataStoreConfigurationSetIndexedDBDatabaseDirectory): |
| (WKWebsiteDataStoreConfigurationCopyLocalStorageDirectory): |
| (WKWebsiteDataStoreConfigurationSetLocalStorageDirectory): |
| (WKWebsiteDataStoreConfigurationCopyWebSQLDatabaseDirectory): |
| (WKWebsiteDataStoreConfigurationSetWebSQLDatabaseDirectory): |
| (WKWebsiteDataStoreConfigurationCopyMediaKeysStorageDirectory): |
| (WKWebsiteDataStoreConfigurationSetMediaKeysStorageDirectory): |
| (WKWebsiteDataStoreConfigurationCopyResourceLoadStatisticsDirectory): |
| (WKWebsiteDataStoreConfigurationSetResourceLoadStatisticsDirectory): |
| * UIProcess/API/C/WKWebsiteDataStoreConfigurationRef.h: Added. |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreCreateWithConfiguration): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-09-06 Mark Lam <mark.lam@apple.com> |
| |
| Harden protection of the Gigacage Config parameters. |
| https://bugs.webkit.org/show_bug.cgi?id=201570 |
| <rdar://problem/55134229> |
| |
| Reviewed by Saam Barati. |
| |
| Just renaming a function name here. |
| |
| * WebProcess/WebProcess.cpp: |
| |
| 2019-09-06 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Incorrect selection rect revealed after pasting images in a contenteditable element |
| https://bugs.webkit.org/show_bug.cgi?id=201549 |
| <rdar://problem/50956429> |
| |
| Reviewed by Simon Fraser. |
| |
| Tweak some existing logic to use the new visibleImageElementsInRangeWithNonLoadedImages helper function. See |
| WebCore for more details. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::didConcludeEditDrag): |
| |
| 2019-09-06 Chris Dumez <cdumez@apple.com> |
| |
| Move the ResourceLoadObserver logic to WebKit2 |
| https://bugs.webkit.org/show_bug.cgi?id=201517 |
| |
| Reviewed by Brent Fulgham. |
| |
| Move the ResourceLoadObserver logic to WebKit2 since it is not used by WebKit1. This allows us to simplify |
| code. |
| |
| In a follow-up patch, I will simplify the code even further by leveraging the fact that a WebContent process |
| is always associated with a single WebsiteDataStore / sessionID: |
| - No need for a HashMap of sessionIDs |
| - No need to even allocate the ResourceLoadObserver if the WebProcess is associated with an ephemeral session. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * Sources.txt: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp: Copied from Source/WebCore/loader/ResourceLoadObserver.cpp. |
| (WebKit::is3xxRedirect): |
| (WebKit::WebResourceLoadObserver::WebResourceLoadObserver): |
| (WebKit::WebResourceLoadObserver::shouldLog const): |
| (WebKit::WebResourceLoadObserver::requestStorageAccessUnderOpener): |
| (WebKit::WebResourceLoadObserver::ensureResourceStatisticsForRegistrableDomain): |
| (WebKit::WebResourceLoadObserver::scheduleNotificationIfNeeded): |
| (WebKit::WebResourceLoadObserver::updateCentralStatisticsStore): |
| (WebKit::WebResourceLoadObserver::statisticsForURL): |
| (WebKit::WebResourceLoadObserver::takeStatistics): |
| (WebKit::WebResourceLoadObserver::clearState): |
| (WebKit::WebResourceLoadObserver::nonNullOwnerURL const): |
| (WebKit::WebResourceLoadObserver::logFontLoad): |
| (WebKit::WebResourceLoadObserver::logCanvasRead): |
| (WebKit::WebResourceLoadObserver::logCanvasWriteOrMeasure): |
| (WebKit::WebResourceLoadObserver::logNavigatorAPIAccessed): |
| (WebKit::WebResourceLoadObserver::logScreenAPIAccessed): |
| (WebKit::WebResourceLoadObserver::logSubresourceLoading): |
| (WebKit::WebResourceLoadObserver::logWebSocketLoading): |
| (WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution): |
| * WebProcess/WebCoreSupport/WebResourceLoadObserver.h: Added. |
| * WebProcess/WebProcess.cpp: |
| |
| 2019-09-06 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Make WebAuthn default off and let clients turn it on at will |
| https://bugs.webkit.org/show_bug.cgi?id=201439 |
| <rdar://problem/54998154> |
| |
| Reviewed by Youenn Fablet. |
| |
| This patch makes WebAuthn default off such that clients that have the right entitlements |
| could turn it on and we don't risk at turning on a Web API that does nothing by default. |
| |
| This patch doesn't add any SPI to turn the feature on as it is currently doable via |
| - [WKPreferencesPrivate _setEnabled:forExperimentalFeature:]. |
| |
| * Shared/WebPreferences.yaml: |
| * Shared/WebPreferencesDefaultValues.cpp: |
| (WebKit::defaultWebAuthenticationEnabled): Deleted. |
| * Shared/WebPreferencesDefaultValues.h: |
| |
| 2019-09-06 Alex Christensen <achristensen@webkit.org> |
| |
| Deprecate all WKCookieManagerRef functions |
| https://bugs.webkit.org/show_bug.cgi?id=201473 |
| |
| Reviewed by Chris Dumez. |
| |
| Their use was removed in rdar://problem/55039275 |
| Created replacement C API that more closely resembles the public ObjC API for WebKitTestRunner. |
| |
| * Shared/API/c/WKBase.h: |
| * Sources.txt: |
| * UIProcess/API/APIHTTPCookieStore.cpp: |
| (API::HTTPCookieStore::deleteAllCookies): |
| (API::HTTPCookieStore::setHTTPCookieAcceptPolicy): |
| (API::HTTPCookieStore::deleteCookiesInDefaultUIProcessCookieStore): |
| (API::HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore): |
| * UIProcess/API/APIHTTPCookieStore.h: |
| * UIProcess/API/C/WKAPICast.h: |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetStorageAccessAPIEnabled): |
| * UIProcess/API/C/WKContext.h: |
| * UIProcess/API/C/WKCookieManager.cpp: |
| (WKCookieManagerGetTypeID): |
| (WKCookieManagerSetClient): |
| (WKCookieManagerGetHostnamesWithCookies): |
| (WKCookieManagerDeleteCookiesForHostname): |
| (WKCookieManagerDeleteAllCookies): |
| (WKCookieManagerDeleteAllCookiesModifiedAfterDate): |
| (WKCookieManagerSetHTTPCookieAcceptPolicy): |
| (WKCookieManagerGetHTTPCookieAcceptPolicy): |
| (WKCookieManagerSetStorageAccessAPIEnabled): |
| (WKCookieManagerStartObservingCookieChanges): |
| (WKCookieManagerStopObservingCookieChanges): |
| * UIProcess/API/C/WKCookieManager.h: |
| * UIProcess/API/C/WKHTTPCookieStoreRef.cpp: Added. |
| (WKHTTPCookieStoreGetTypeID): |
| (WKHTTPCookieStoreDeleteAllCookies): |
| (WKHTTPCookieStoreSetHTTPCookieAcceptPolicy): |
| * UIProcess/API/C/WKHTTPCookieStoreRef.h: Added. |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreGetHTTPCookieStore): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm: |
| (API::HTTPCookieStore::deleteCookiesInDefaultUIProcessCookieStore): |
| (API::toNSHTTPCookieAcceptPolicy): |
| (API::HTTPCookieStore::setHTTPCookieAcceptPolicyInDefaultUIProcessCookieStore): |
| * UIProcess/WebCookieManagerProxy.cpp: |
| (WebKit::WebCookieManagerProxy::setStorageAccessAPIEnabled): Deleted. |
| * UIProcess/WebCookieManagerProxy.h: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-09-06 Darryl Pogue <darryl@dpogue.ca> |
| |
| REGRESSION(iOS 12): Keyboard dismissal leaves WKWebView viewport-fit=cover content offscreen |
| https://bugs.webkit.org/show_bug.cgi?id=192564 |
| |
| Reviewed by Tim Horton. |
| |
| The new keyboard height was being read into a variable after the scrollview had already been |
| adjusted. This worked when the keyboard was opening, because the scrollview is adjusted with |
| the correct value a second time when the keyboard animation has finished. However, when the |
| keyboard is closed, the adjustment was being made before the correct height was stored, |
| leading to the scrollview being positioned as if the keyboard were still open. |
| |
| * UIProcess/ios/WKScrollView.mm: |
| (-[WKScrollView _adjustForAutomaticKeyboardInfo:animated:lastAdjustment:]): |
| |
| 2019-09-06 Tim Horton <timothy_horton@apple.com> |
| |
| Marking up a note on iOS results in a PDF with no contents |
| https://bugs.webkit.org/show_bug.cgi?id=201530 |
| <rdar://problem/53686019> |
| |
| Reviewed by Andy Estes. |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::Connection): |
| (IPC::Connection::waitForMessage): |
| (IPC::Connection::connectionDidClose): |
| * Platform/IPC/Connection.h: |
| If the main thread is blocked when the Web Content process dies, and |
| something eventually calls waitForAndDispatchImmediately without |
| returning control to the main run loop, we will wait for the full timeout, |
| because a) the code to mark the connection invalid is dispatched |
| to the main thread, and b) the secondary thread that is informed of |
| the Web Content process dying did not yet have a "waiting for" message |
| to mark as interrupted (because it wasn't waiting yet). |
| |
| Fix this race by adding a bit that is set under the waitForMessage lock |
| on the secondary thread when the connection is invalidated, identically |
| to m_shouldWaitForSyncReplies, which solves the same problem for sync |
| messages. |
| |
| Read the new bit when we are about to start waiting, and bail if it is set. |
| It's OK to not read it inside the loop because we are guaranteed to have |
| waitForMessage set at that point, so the normal interruption bit will work. |
| |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _processDidExit]): |
| Reset _isPrintingToPDF; the Web Content process is never going to get |
| back to us if it crashes. |
| |
| (-[WKContentView _wk_pageCountForPrintFormatter:]): |
| Do not bail from starting a printing operation if one is already occurring. |
| This fixes the original bug, because Markup ends up invalidating the page |
| count at least one extra time before asking for the printed document. |
| Instead of maintaining the fragile requirement that you cannot recompute |
| the page count while printing, just let it happen. In order to make this |
| work safely, synchronously wait for the previous printed result before |
| continuing with the next print. |
| |
| We could do more coalescing here if need be, but calls to -_recalcPageCount |
| are not high in volume. |
| |
| 2019-09-06 Alex Christensen <achristensen@webkit.org> |
| |
| Fix unused argument warning from GCC. |
| |
| * Platform/IPC/ArgumentCoders.h: |
| (IPC::TupleDecoder<0>::decode): |
| There was indeed an unused argument. |
| |
| 2019-09-06 Alex Christensen <achristensen@webkit.org> |
| |
| When disabling legacy private browsing for testing, change the SessionID back to what it was, not the defaultSessionID |
| https://bugs.webkit.org/show_bug.cgi?id=201480 |
| |
| Reviewed by Youenn Fablet. |
| |
| * WebProcess/InjectedBundle/InjectedBundle.cpp: |
| (WebKit::InjectedBundle::setPrivateBrowsingEnabled): |
| * WebProcess/InjectedBundle/InjectedBundle.h: |
| |
| 2019-09-06 Patrick Griffis <pgriffis@igalia.com> |
| |
| [GTK][WPE] Do not enable the sandbox in Snap |
| https://bugs.webkit.org/show_bug.cgi?id=201486 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Running inside of Snap adds its own complications and is simply |
| not supported for now. |
| |
| Also update isInsideFlatpak() for consistency. |
| |
| * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: |
| (WebKit::isInsideFlatpak): |
| (WebKit::isInsideSnap): |
| (WebKit::ProcessLauncher::launchProcess): |
| |
| 2019-09-05 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Crashes when intercept response is a 404 |
| https://bugs.webkit.org/show_bug.cgi?id=201514 |
| |
| Reviewed by Alex Christensen. |
| |
| * WebProcess/Network/WebResourceLoader.cpp: |
| (WebKit::WebResourceLoader::didReceiveResponse): |
| Ensure the WebResourceLoader stays around during intercepts. |
| |
| (WebKit::WebResourceLoader::didReceiveData): |
| (WebKit::WebResourceLoader::didFinishResourceLoad): |
| (WebKit::WebResourceLoader::didFailResourceLoad): |
| Only perform the work if the m_coreLoader is still alive. |
| |
| 2019-09-05 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Win] Add support for MouseEvent.buttons |
| https://bugs.webkit.org/show_bug.cgi?id=201445 |
| |
| Reviewed by Brent Fulgham. |
| |
| * Shared/win/WebEventFactory.cpp: |
| (WebKit::WebEventFactory::createWebMouseEvent): |
| Set m_buttons. |
| |
| 2019-09-05 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION: http/tests/adClickAttribution/second-attribution-converted-with-higher-priority.html and http/tests/adClickAttribution/second-attribution-converted-with-lower-priority.html are flaky timeouts |
| https://bugs.webkit.org/show_bug.cgi?id=201440 |
| <rdar://problem/54998427> |
| |
| Reviewed by Alex Christensen. |
| |
| Add private WKBundlePage API to query if the WebPage is currently suspended or not. |
| |
| * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: |
| (WKBundlePageIsSuspended): |
| * WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h: |
| |
| 2019-09-05 Sihui Liu <sihui_liu@apple.com> |
| |
| Remove StorageArea pointers in StorageManagerSet when removing StorageManagers that own them |
| https://bugs.webkit.org/show_bug.cgi?id=201324 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: |
| (WebKit::LocalStorageNamespace::storageAreaIdentifiers const): |
| * NetworkProcess/WebStorage/LocalStorageNamespace.h: |
| * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: |
| (WebKit::SessionStorageNamespace::storageAreaIdentifiers const): |
| * NetworkProcess/WebStorage/SessionStorageNamespace.h: |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::allStorageAreaIdentifiers const): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::remove): |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: |
| (WebKit::TransientLocalStorageNamespace::storageAreaIdentifiers const): |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.h: |
| |
| 2019-09-05 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r249275): [GTK][WPE] wrong page ID returned by webkit_web_view_get_page_id() |
| https://bugs.webkit.org/show_bug.cgi?id=201504 |
| |
| Reviewed by Michael Catanzaro. |
| |
| We want to return the page identifier not the web page proxy id. |
| |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkit_web_view_get_page_id): |
| |
| 2019-09-05 Pablo Saavedra <psaavedra@igalia.com> |
| |
| Build failure after r249501 for ports with SERVICE_WORKER set OFF |
| https://bugs.webkit.org/show_bug.cgi?id=201503 |
| |
| Reviewed by Youenn Fablet. |
| |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoad): |
| |
| 2019-09-04 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| MobileSafari may crash when invoking the C++ lambda in -[WKContentView _shareForWebView:] |
| https://bugs.webkit.org/show_bug.cgi?id=201479 |
| <rdar://problem/51511834> |
| |
| Reviewed by Tim Horton. |
| |
| Fix the crash by making -_shareForWebView: robust in the case where there are no selection rects |
| known in the UI process when -[WKContentView _share:] is invoked. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _shareForWebView:]): |
| |
| 2019-09-04 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Replace defaultCustomPasteboardDataEnabled by an equivalent macro |
| https://bugs.webkit.org/show_bug.cgi?id=201477 |
| |
| Reviewed by Wenson Hsieh. |
| |
| r227282 introduced defaultCustomPasteboardDataEnabled() to disable the custom pasteboard data on |
| apps linked against old SDKs. However, this had a bug that the check inside WebContent process |
| would always return true because WebContent process is always linked against the latest SDKs. |
| Because WebPreferences values aren't propagated from UI process to WebContent process unless |
| there is a value change, it meant that custom pasteboard data is always enabled. |
| |
| This patch replaces this function with a simple macro which always enables the custom pasteboard |
| data on iOS family and macOS as it has always been the case before and after r227282. |
| |
| * Shared/WebPreferences.yaml: |
| * Shared/WebPreferencesDefaultValues.cpp: |
| (WebKit::defaultCustomPasteboardDataEnabled): Deleted. |
| * Shared/WebPreferencesDefaultValues.h: |
| |
| 2019-09-04 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| -[WKContentView selectedText] returns an empty string when selecting more than 200 characters |
| https://bugs.webkit.org/show_bug.cgi?id=201471 |
| <rdar://problem/55039227> |
| |
| Reviewed by Tim Horton. |
| |
| The fix for <rdar://problem/54308019> is contingent on -[WKContentView selectedText] returning a non-empty |
| result in the case where text is selected. However, in WebKit, if more than 200 characters are selected, |
| -selectedText ends up returning nothing. |
| |
| This is due to logic added in trac.webkit.org/r167624 that was intended to return the selected text in |
| PostLayoutData's wordAtSelection, up to a maximum of 200 characters, likely for performance and/or security |
| reasons. However, instead of truncating at 200 characters, the change simply drops wordAtSelection altogether. |
| This patch fixes this issue by taking the first 200 characters of the selected text. |
| |
| Test: EditorStateTests.SelectedText |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::platformEditorState const): |
| |
| 2019-09-04 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Local Overrides - Provide substitution content for resource loads (URL based) |
| https://bugs.webkit.org/show_bug.cgi?id=201262 |
| <rdar://problem/13108764> |
| |
| Reviewed by Devin Rousso. |
| |
| * Sources.txt: |
| * WebKit.xcodeproj/project.pbxproj: |
| New sources. |
| |
| * WebProcess/Network/WebResourceLoader.h: |
| * WebProcess/Network/WebResourceLoader.cpp: |
| (WebKit::WebResourceLoader::didReceiveResponse): |
| (WebKit::WebResourceLoader::didReceiveData): |
| (WebKit::WebResourceLoader::didFinishResourceLoad): |
| (WebKit::WebResourceLoader::didFailResourceLoad): |
| On receiving a response, check with the inspector if an active |
| frontend will override the response content. |
| |
| * WebProcess/Network/WebResourceInterceptController.h: |
| * WebProcess/Network/WebResourceInterceptController.cpp: |
| (WebKit::WebResourceInterceptController::isIntercepting const): |
| (WebKit::WebResourceInterceptController::beginInterceptingResponse): |
| (WebKit::WebResourceInterceptController::continueResponse): |
| (WebKit::WebResourceInterceptController::interceptedResponse): |
| (WebKit::WebResourceInterceptController::defer): |
| Buffer networking callbacks for an ongoing intercept. |
| |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::havePerformedSecurityChecks const): |
| Handle new response source. |
| |
| 2019-09-04 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed minor follow-up fix after r249501 to address crashes in debug. |
| |
| * NetworkProcess/cache/NetworkCache.h: |
| (WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::constructDeletedValue): |
| (WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::isDeletedValue): |
| |
| 2019-09-04 Chris Dumez <cdumez@apple.com> |
| |
| Expose WebPageProxy identifier to the Network Process |
| https://bugs.webkit.org/show_bug.cgi?id=201467 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Expose WebPageProxy identifier to the Network Process (similarly to WebPage / WebFrame identifiers) |
| so that it can use it whenever it IPCs the UIProcess. The IPCs from the network process were the |
| last one requiring the UIProcess to lookup a WebPageProxy object from a WebPageIdentifier (rather |
| than a WebPageProxyIdentifier). |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkCORSPreflightChecker.cpp: |
| (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge): |
| * NetworkProcess/NetworkCORSPreflightChecker.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkLoad.cpp: |
| (WebKit::NetworkLoad::didReceiveChallenge): |
| * NetworkProcess/NetworkLoadChecker.cpp: |
| (WebKit::NetworkLoadChecker::NetworkLoadChecker): |
| (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight): |
| * NetworkProcess/NetworkLoadChecker.h: |
| * NetworkProcess/NetworkLoadParameters.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::didCommitCrossSiteLoadWithDataTransfer): |
| (WebKit::NetworkProcess::logDiagnosticMessage): |
| (WebKit::NetworkProcess::logDiagnosticMessageWithResult): |
| (WebKit::NetworkProcess::logDiagnosticMessageWithValue): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/NetworkResourceLoadParameters.cpp: |
| (WebKit::NetworkResourceLoadParameters::encode const): |
| (WebKit::NetworkResourceLoadParameters::decode): |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::m_shouldCaptureExtraNetworkLoadMetrics): |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| (WebKit::NetworkResourceLoader::startNetworkLoad): |
| (WebKit::NetworkResourceLoader::didReceiveResponse): |
| * NetworkProcess/NetworkResourceLoader.h: |
| * NetworkProcess/PingLoad.cpp: |
| (WebKit::PingLoad::PingLoad): |
| (WebKit::PingLoad::didReceiveChallenge): |
| * NetworkProcess/cache/NetworkCache.h: |
| (WebKit::NetworkCache::GlobalFrameID::hash const): |
| (WebKit::NetworkCache::operator==): |
| (WTF::GlobalFrameIDHash::hash): |
| (WTF::GlobalFrameIDHash::equal): |
| (WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::emptyValue): |
| (WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::constructDeletedValue): |
| (WTF::HashTraits<WebKit::NetworkCache::GlobalFrameID>::isDeletedValue): |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: |
| (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: |
| (WebKit::NetworkCache::logSpeculativeLoadingDiagnosticMessage): |
| * Shared/Authentication/AuthenticationManager.cpp: |
| (WebKit::AuthenticationManager::shouldCoalesceChallenge const): |
| (WebKit::AuthenticationManager::didReceiveAuthenticationChallenge): |
| * Shared/Authentication/AuthenticationManager.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge): |
| (WebKit::NetworkProcessProxy::logDiagnosticMessage): |
| (WebKit::NetworkProcessProxy::logDiagnosticMessageWithResult): |
| (WebKit::NetworkProcessProxy::logDiagnosticMessageWithValue): |
| (WebKit::NetworkProcessProxy::requestStorageAccessConfirm): |
| (WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransfer): |
| (WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource): |
| (WebKit::NetworkProcessProxy::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/ServiceWorkerProcessProxy.cpp: |
| (WebKit::ServiceWorkerProcessProxy::start): |
| * UIProcess/ServiceWorkerProcessProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::didCommitLoadForFrame): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::isServiceWorkerPageID const): |
| (WebKit::WebProcessPool::didCommitCrossSiteLoadWithDataTransfer): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.cpp: |
| * UIProcess/WebProcessProxy.h: |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoad): |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| (WebKit::WebLoaderStrategy::preconnectTo): |
| * WebProcess/Network/WebResourceLoader.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::ServiceWorkerFrameLoaderClient::ServiceWorkerFrameLoaderClient): |
| (WebKit::ServiceWorkerFrameLoaderClient::createDocumentLoader): |
| (WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection): |
| (WebKit::WebSWContextManagerConnection::installServiceWorker): |
| * WebProcess/Storage/WebSWContextManagerConnection.h: |
| (isType): |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::webPageProxyID const): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::requestStorageAccess): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebProcess.messages.in: |
| |
| 2019-09-04 Tim Horton <timothy_horton@apple.com> |
| |
| macCatalyst: Re-enable iOS WKWebView printing API |
| https://bugs.webkit.org/show_bug.cgi?id=201392 |
| <rdar://problem/54690252> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _webViewPrintFormatter]): |
| * UIProcess/API/Cocoa/WKWebViewInternal.h: |
| * UIProcess/_WKWebViewPrintFormatter.mm: |
| * UIProcess/_WKWebViewPrintFormatterInternal.h: |
| * UIProcess/ios/WKContentView.mm: |
| _WKWwebViewPrintFormatter was disabled during bringup because requisite |
| UIKit bits were missing, but they are not anymore (and have not been for |
| quite some time), so remove these unnecessary platform ifdefs. |
| |
| 2019-09-04 Patrick Griffis <pgriffis@igalia.com> |
| |
| [WPE][GTK] Fix sandbox parsing DISPLAY on X11 |
| https://bugs.webkit.org/show_bug.cgi?id=201462 |
| |
| Reviewed by Michael Catanzaro. |
| |
| On some setups the DISPLAY env var was incorrectly parsed. |
| |
| * UIProcess/Launcher/glib/BubblewrapLauncher.cpp: |
| (WebKit::bindX11): |
| |
| 2019-09-04 Brian Burg <bburg@apple.com> |
| |
| Selenium test 'interactions_tests.py::testContextClick' is hanging |
| https://bugs.webkit.org/show_bug.cgi?id=201161 |
| <rdar://problem/54728541> |
| |
| Reviewed by Chris Dumez. |
| |
| A web page should not show native context menus if user interactions are being simulated for WebDriver. |
| Showing a native context menu spawns a nested run loop. Since there's no way to interact |
| with native UI via WebDriver, the test will hang until the context menu is manually dismissed. |
| |
| To fix this, pretend to show the context menu in UIProcess and dismiss it immediately. |
| This is necessary to trigger oncontextmenu events appropriately and resume handling mouse events. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::showContextMenu): Hook into isControlledByAutomation here. |
| We could short circuit this on the WebProcess side, but the check would be more crude |
| and suppress context menus even if user interaction isn't being simulated. This would be |
| problematic for a user who wants to interrupt their test session and interact with it. |
| The main use case for this is right clicking on the test page and choose "Inspect". |
| |
| 2019-09-04 Youenn Fablet <youenn@apple.com> |
| |
| Abstract out WebSocketChannel message queue |
| https://bugs.webkit.org/show_bug.cgi?id=201359 |
| |
| Reviewed by Alex Christensen. |
| |
| Make use of newly added NetworkSendQueue. |
| |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::WebSocketChannel::createMessageQueue): |
| (WebKit::WebSocketChannel::WebSocketChannel): |
| (WebKit::WebSocketChannel::send): |
| (WebKit::WebSocketChannel::disconnect): |
| * WebProcess/Network/WebSocketChannel.h: |
| |
| 2019-09-04 Youenn Fablet <youenn@apple.com> |
| |
| Move MessageRegistry to NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=201299 |
| |
| Reviewed by Alex Christensen. |
| |
| Move message registry to NetworkProcess. |
| Take benefit of this move to use async reply IPC as much as possible. |
| This also allows to remove the IPC message to UIProcess when doing postMessage with service workers. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::createNewMessagePortChannel): |
| (WebKit::NetworkConnectionToWebProcess::entangleLocalPortInThisProcessToRemote): |
| (WebKit::NetworkConnectionToWebProcess::messagePortDisentangled): |
| (WebKit::NetworkConnectionToWebProcess::messagePortClosed): |
| (WebKit::NetworkConnectionToWebProcess::nextMessageBatchIdentifier): |
| (WebKit::NetworkConnectionToWebProcess::takeAllMessagesForPort): |
| (WebKit::NetworkConnectionToWebProcess::didDeliverMessagePortMessages): |
| (WebKit::NetworkConnectionToWebProcess::postMessageToRemote): |
| (WebKit::NetworkConnectionToWebProcess::checkRemotePortForActivity): |
| (WebKit::NetworkConnectionToWebProcess::checkProcessLocalPortForActivity): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkMessagePortChannelProvider.cpp: Added. |
| (WebKit::NetworkMessagePortChannelProvider::NetworkMessagePortChannelProvider): |
| (WebKit::NetworkMessagePortChannelProvider::createNewMessagePortChannel): |
| (WebKit::NetworkMessagePortChannelProvider::entangleLocalPortInThisProcessToRemote): |
| (WebKit::NetworkMessagePortChannelProvider::messagePortDisentangled): |
| (WebKit::NetworkMessagePortChannelProvider::messagePortClosed): |
| (WebKit::NetworkMessagePortChannelProvider::takeAllMessagesForPort): |
| (WebKit::NetworkMessagePortChannelProvider::postMessageToRemote): |
| (WebKit::NetworkMessagePortChannelProvider::checkRemotePortForActivity): |
| (WebKit::NetworkMessagePortChannelProvider::checkProcessLocalPortForActivity): |
| * NetworkProcess/NetworkMessagePortChannelProvider.h: Added. |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::m_messagePortChannelProvider): |
| (WebKit::NetworkProcess::webProcessConnection const): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::messagePortChannelRegistry): |
| * Sources.txt: |
| * UIProcess/Downloads/DownloadProxyMap.cpp: |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebProcessPool.cpp: |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessPool.messages.in: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::~WebProcessProxy): |
| (WebKit::WebProcessProxy::shutDown): |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebProcessProxy.messages.in: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::initializeSWClientConnection): |
| (WebKit::NetworkProcessConnection::messagesAvailableForPort): |
| (WebKit::NetworkProcessConnection::checkProcessLocalPortForActivity): |
| * WebProcess/Network/NetworkProcessConnection.h: |
| * WebProcess/Network/NetworkProcessConnection.messages.in: |
| * WebProcess/Storage/WebSWClientConnection.cpp: |
| (WebKit::WebSWClientConnection::postMessageToServiceWorker): |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerClient): |
| * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp: |
| (WebKit::networkProcessConnection): |
| (WebKit::WebMessagePortChannelProvider::createNewMessagePortChannel): |
| (WebKit::WebMessagePortChannelProvider::entangleLocalPortInThisProcessToRemote): |
| (WebKit::WebMessagePortChannelProvider::messagePortDisentangled): |
| (WebKit::WebMessagePortChannelProvider::messagePortClosed): |
| (WebKit::WebMessagePortChannelProvider::takeAllMessagesForPort): |
| (WebKit::WebMessagePortChannelProvider::postMessageToRemote): |
| (WebKit::WebMessagePortChannelProvider::checkRemotePortForActivity): |
| * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h: |
| * WebProcess/WebProcess.cpp: |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebProcess.messages.in: |
| |
| 2019-09-03 Per Arne Vollan <pvollan@apple.com> |
| |
| [macOS] Unable to open local file from favorites bar |
| https://bugs.webkit.org/show_bug.cgi?id=201444 |
| |
| Reviewed by Brent Fulgham. |
| |
| The sandbox extension handle should be created providing the pid of the receiving process. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| |
| 2019-09-03 Chris Dumez <cdumez@apple.com> |
| |
| FrameLoader::FrameProgressTracker::progressCompleted() does not need a pageID |
| https://bugs.webkit.org/show_bug.cgi?id=201431 |
| |
| Reviewed by Antti Koivisto. |
| |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::pageLoadCompleted): |
| * WebProcess/Network/WebLoaderStrategy.h: |
| |
| 2019-09-03 Tim Horton <timothy_horton@apple.com> |
| |
| Null deref under -[WKWebView _addUpdateVisibleContentRectPreCommitHandler]'s handler block |
| https://bugs.webkit.org/show_bug.cgi?id=201436 |
| <rdar://problem/40640475> |
| |
| Reviewed by Simon Fraser. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView dealloc]): |
| (-[WKWebView _addUpdateVisibleContentRectPreCommitHandler]): |
| We crash sending a message to a deallocated WKWebView inside the handler block |
| passed to +[CATransaction addCommitHandler:]. This seems impossible, because |
| we carefully retain it, but it's possible that it could be the result of |
| the handler block being installed under -dealloc (in which case retaining |
| the WKWebView wouldn't actually extend its lifetime). -[WKWebView dealloc] |
| is fairly sizable, and it's hard to follow all paths from it, so instead |
| add a RELEASE_LOG_FAULT, so we'll get simulated crash logs, and bail, |
| so we'll stop actually crashing (if this is the cause). |
| |
| This is just a speculative fix, but a hopeful one, since intentionally calling |
| -_addUpdateVisibleContentRectPreCommitHandler: from dealloc yields a similar-looking |
| crash under the handler block. |
| |
| 2019-09-03 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Enable WebAuthn by default for MobileSafari and SafariViewService |
| https://bugs.webkit.org/show_bug.cgi?id=201369 |
| <rdar://problem/54903724> |
| |
| Reviewed by Brent Fulgham. |
| |
| Communications to security keys require entitlements, which are not guaranteed to be present in third party |
| WKWebView clients. Therefore, only enable WebAuthn by default for MobileSafari and SafariViewService. |
| |
| * Shared/WebPreferences.yaml: |
| * Shared/WebPreferencesDefaultValues.cpp: |
| (WebKit::defaultWebAuthenticationEnabled): |
| * Shared/WebPreferencesDefaultValues.h: |
| |
| 2019-09-03 Chris Dumez <cdumez@apple.com> |
| |
| Rename WebPage::pageID() to WebPage::identifier() |
| https://bugs.webkit.org/show_bug.cgi?id=201428 |
| |
| Reviewed by Antti Koivisto. |
| |
| * Shared/API/Cocoa/WKBrowsingContextHandle.mm: |
| (-[WKBrowsingContextHandle _initWithPage:]): |
| * WebProcess/ApplePay/WebPaymentCoordinator.cpp: |
| (WebKit::WebPaymentCoordinator::WebPaymentCoordinator): |
| (WebKit::WebPaymentCoordinator::showPaymentUI): |
| (WebKit::WebPaymentCoordinator::messageSenderDestinationID const): |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| (WebKit::WebLoaderStrategy::preconnectTo): |
| * WebProcess/Notifications/WebNotificationManager.cpp: |
| (WebKit::WebNotificationManager::show): |
| (WebKit::WebNotificationManager::cancel): |
| (WebKit::WebNotificationManager::clearNotifications): |
| (WebKit::WebNotificationManager::didDestroyNotification): |
| * WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp: |
| (WebKit::WebAuthenticatorCoordinator::WebAuthenticatorCoordinator): |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::windowRect): |
| (WebKit::WebChromeClient::focusedFrameChanged): |
| (WebKit::WebChromeClient::createWindow): |
| (WebKit::WebChromeClient::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| (WebKit::WebChromeClient::toolbarsVisible): |
| (WebKit::WebChromeClient::statusbarVisible): |
| (WebKit::WebChromeClient::menubarVisible): |
| (WebKit::WebChromeClient::wrapCryptoKey const): |
| (WebKit::WebChromeClient::unwrapCryptoKey const): |
| (WebKit::WebChromeClient::signedPublicKeyAndChallengeString const): |
| * WebProcess/WebCoreSupport/WebColorChooser.cpp: |
| (WebKit::WebColorChooser::WebColorChooser): |
| (WebKit::WebColorChooser::reattachColorChooser): |
| (WebKit::WebColorChooser::setSelectedColor): |
| (WebKit::WebColorChooser::endChooser): |
| * WebProcess/WebCoreSupport/WebDataListSuggestionPicker.cpp: |
| (WebKit::WebDataListSuggestionPicker::handleKeydownWithIdentifier): |
| (WebKit::WebDataListSuggestionPicker::close): |
| (WebKit::WebDataListSuggestionPicker::displayWithActivationType): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::pageID const): |
| (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad): |
| (WebKit::WebFrameLoaderClient::dispatchDidFailLoad): |
| * WebProcess/WebCoreSupport/WebPopupMenu.cpp: |
| (WebKit::WebPopupMenu::show): |
| (WebKit::WebPopupMenu::hide): |
| * WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp: |
| (WebKit::WebSearchPopupMenu::saveRecentSearches): |
| (WebKit::WebSearchPopupMenu::loadRecentSearches): |
| * WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm: |
| (WebKit::WebFrameLoaderClient::createPreviewLoaderClient): |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: |
| (WebKit::TextCheckingControllerProxy::TextCheckingControllerProxy): |
| (WebKit::TextCheckingControllerProxy::~TextCheckingControllerProxy): |
| * WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.cpp: |
| (WebKit::WebRemoteObjectRegistry::WebRemoteObjectRegistry): |
| (WebKit::WebRemoteObjectRegistry::close): |
| * WebProcess/WebPage/EventDispatcher.cpp: |
| (WebKit::EventDispatcher::addScrollingTreeForPage): |
| (WebKit::EventDispatcher::removeScrollingTreeForPage): |
| (WebKit::EventDispatcher::clearQueuedTouchEventsForPage): |
| (WebKit::EventDispatcher::getQueuedTouchEventsForPage): |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): |
| (WebKit::RemoteLayerTreeDrawingArea::flushLayers): |
| * WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm: |
| (WebKit::RemoteScrollingCoordinator::RemoteScrollingCoordinator): |
| (WebKit::RemoteScrollingCoordinator::~RemoteScrollingCoordinator): |
| * WebProcess/WebPage/RemoteWebInspectorUI.cpp: |
| (WebKit::RemoteWebInspectorUI::sendMessageToBackend): |
| (WebKit::RemoteWebInspectorUI::changeSheetRect): |
| (WebKit::RemoteWebInspectorUI::startWindowDrag): |
| (WebKit::RemoteWebInspectorUI::bringToFront): |
| (WebKit::RemoteWebInspectorUI::closeWindow): |
| (WebKit::RemoteWebInspectorUI::reopen): |
| (WebKit::RemoteWebInspectorUI::resetState): |
| (WebKit::RemoteWebInspectorUI::openInNewTab): |
| (WebKit::RemoteWebInspectorUI::save): |
| (WebKit::RemoteWebInspectorUI::append): |
| (WebKit::RemoteWebInspectorUI::showCertificate): |
| * WebProcess/WebPage/ViewGestureGeometryCollector.cpp: |
| (WebKit::ViewGestureGeometryCollector::ViewGestureGeometryCollector): |
| (WebKit::ViewGestureGeometryCollector::~ViewGestureGeometryCollector): |
| * WebProcess/WebPage/WebBackForwardListProxy.cpp: |
| (WebKit::WebBackForwardListProxy::itemAtIndex): |
| (WebKit::WebBackForwardListProxy::backListCount const): |
| (WebKit::WebBackForwardListProxy::forwardListCount const): |
| * WebProcess/WebPage/WebInspector.cpp: |
| (WebKit::WebInspector::openLocalInspectorFrontend): |
| (WebKit::WebInspector::closeFrontendConnection): |
| (WebKit::WebInspector::bringToFront): |
| (WebKit::WebInspector::elementSelectionChanged): |
| (WebKit::WebInspector::timelineRecordingChanged): |
| (WebKit::WebInspector::setMockCaptureDevicesEnabledOverride): |
| (WebKit::WebInspector::updateDockingAvailability): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::WebPage): |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| (WebKit::WebPage::messageSenderDestinationID const): |
| (WebKit::WebPage::close): |
| (WebKit::WebPage::goToBackForwardItem): |
| (WebKit::WebPage::setFixedLayoutSize): |
| (WebKit::WebPage::freezeLayerTree): |
| (WebKit::WebPage::unfreezeLayerTree): |
| (WebKit::WebPage::restoreSessionInternal): |
| (WebKit::WebPage::setCurrentHistoryItemForReattach): |
| (WebKit::WebPage::updateIsInWindow): |
| (WebKit::WebPage::setActivityState): |
| (WebKit::WebPage::mainFrameDidLayout): |
| (WebKit::WebPage::didCommitLoad): |
| (WebKit::WebPage::hasStorageAccess): |
| (WebKit::WebPage::requestStorageAccess): |
| (WebKit::WebPage::textInputContextsInRect): |
| (WebKit::WebPage::elementForTextInputContext): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::identifier const): |
| (WebKit::WebPage::pageID const): Deleted. |
| * WebProcess/WebPage/WebPageInspectorTarget.cpp: |
| (WebKit::WebPageInspectorTarget::identifier const): |
| * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm: |
| (-[WKAccessibilityWebPageObjectBase setWebPage:]): |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::executeKeypressCommandsInternal): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::transformObjectsToHandles): |
| * WebProcess/WebStorage/StorageNamespaceImpl.cpp: |
| (WebKit::StorageNamespaceImpl::copy): |
| * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp: |
| (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace): |
| * WebProcess/cocoa/PlaybackSessionManager.mm: |
| (WebKit::PlaybackSessionManager::PlaybackSessionManager): |
| (WebKit::PlaybackSessionManager::~PlaybackSessionManager): |
| (WebKit::PlaybackSessionManager::invalidate): |
| * WebProcess/cocoa/VideoFullscreenManager.mm: |
| (WebKit::VideoFullscreenManager::VideoFullscreenManager): |
| (WebKit::VideoFullscreenManager::~VideoFullscreenManager): |
| (WebKit::VideoFullscreenManager::invalidate): |
| |
| 2019-09-03 Antoine Quint <graouts@apple.com> |
| |
| [iOS] Treat a two-finger single tap as if the user tapped with the Cmd key pressed |
| https://bugs.webkit.org/show_bug.cgi?id=201420 |
| <rdar://problem/53207786> |
| |
| Reviewed by Simon Fraser. |
| |
| Set the metaKey modifier to true when generating a click event based on a two-finger single tap. This is important so that sites like Google and DuckDuckGo |
| correctly open links in their search results page in a new tab in Safari on iOS. This currently doesn't work because those sites will call preventDefault() |
| if the metaKey flag isn't set on a "click" event, and if it is set, they let the browser handle the navigation themselves. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _twoFingerSingleTapGestureRecognized:]): |
| |
| 2019-08-28 Brent Fulgham <bfulgham@apple.com> |
| |
| [macOS] Correct sandbox violation in Flash plugin |
| https://bugs.webkit.org/show_bug.cgi?id=201228 |
| <rdar://problem/54347503> |
| |
| Reviewed by Alex Christensen. |
| |
| * PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in: |
| |
| 2019-09-03 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [WPE][GTK] Deprecate nonfunctional process limit APIs |
| https://bugs.webkit.org/show_bug.cgi?id=193749 |
| |
| Reviewed by Žan Doberšek. |
| |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextConstructed): |
| (webkit_web_context_set_process_model): |
| (webkit_web_context_get_process_model): |
| (webkit_web_context_set_web_process_count_limit): |
| (webkit_web_context_get_web_process_count_limit): |
| * UIProcess/API/gtk/WebKitWebContext.h: |
| * UIProcess/API/wpe/WebKitWebContext.h: |
| |
| 2019-09-02 Youenn Fablet <youenn@apple.com> |
| |
| Make NetworkConnectionToWebProcess keyed by their WebProcess identifier |
| https://bugs.webkit.org/show_bug.cgi?id=201300 |
| |
| Reviewed by Alex Christensen. |
| |
| Make sure to create each NetworkConnectionToWebProcess for a given WebProcess. |
| Pass the process identifier at creation time. |
| This will allow to have the message registry be moved to NetworkProcess |
| so as to check port activity between processes. |
| This identifier might also be used in the future for other connections like |
| service worker context/client/server identifiers. |
| |
| No observable change of behavior. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::create): |
| (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| (WebKit::NetworkConnectionToWebProcess::webProcessIdentifier const): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::removeNetworkConnectionToWebProcess): |
| (WebKit::NetworkProcess::createNetworkConnectionToWebProcess): |
| (WebKit::NetworkProcess::actualPrepareToSuspend): |
| (WebKit::NetworkProcess::resume): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * Platform/IPC/Connection.h: |
| (IPC::Connection::sendWithAsyncReply): |
| Allow to pass send options. |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::NetworkProcessProxy): |
| (WebKit::NetworkProcessProxy::getNetworkProcessConnection): |
| Make use of async reply to simplify the handling of lambdas. |
| (WebKit::NetworkProcessProxy::openNetworkProcessConnection): |
| (WebKit::NetworkProcessProxy::didFinishLaunching): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| |
| 2019-09-02 Youenn Fablet <youenn@apple.com> |
| |
| Introduce WorkerMessagePortChannelRegistry |
| https://bugs.webkit.org/show_bug.cgi?id=201333 |
| |
| Reviewed by Alex Christensen. |
| |
| By introducing WorkerMessagePortChannelRegistry, we are making |
| sure UIMessagePortChannelProvider is only called from the main thread. |
| This will help when moving the registry to network process. |
| |
| * UIProcess/UIMessagePortChannelProvider.cpp: |
| (WebKit::UIMessagePortChannelProvider::takeAllMessagesForPort): |
| (WebKit::UIMessagePortChannelProvider::checkRemotePortForActivity): |
| * UIProcess/UIMessagePortChannelProvider.h: |
| * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp: |
| (WebKit::WebMessagePortChannelProvider::takeAllMessagesForPort): |
| (WebKit::WebMessagePortChannelProvider::didTakeAllMessagesForPort): |
| (WebKit::WebMessagePortChannelProvider::didCheckRemotePortForActivity): |
| (WebKit::WebMessagePortChannelProvider::checkRemotePortForActivity): |
| * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h: |
| |
| 2019-09-01 Youenn Fablet <youenn@apple.com> |
| |
| Abstract out LibWebRTCSocketClient so that rtc sockets can be implemented without libwebrtc sockets |
| https://bugs.webkit.org/show_bug.cgi?id=201302 |
| |
| Reviewed by Alex Christensen. |
| |
| Introduce NetworkRTCProvider::Socket to be able to implement RTC socket support with non libwebrtc API |
| |
| * NetworkProcess/webrtc/LibWebRTCSocketClient.h: |
| * NetworkProcess/webrtc/NetworkRTCProvider.cpp: |
| (WebKit::NetworkRTCProvider::createSocket): |
| (WebKit::NetworkRTCProvider::createUDPSocket): |
| (WebKit::NetworkRTCProvider::createServerTCPSocket): |
| (WebKit::NetworkRTCProvider::proxyInfoFromSession): |
| (WebKit::NetworkRTCProvider::createClientTCPSocket): |
| (WebKit::NetworkRTCProvider::wrapNewTCPConnection): |
| (WebKit::NetworkRTCProvider::addSocket): |
| (WebKit::NetworkRTCProvider::takeSocket): |
| (WebKit::NetworkRTCProvider::newConnection): |
| (WebKit::NetworkRTCProvider::closeListeningSockets): |
| (WebKit::NetworkRTCProvider::callSocket): |
| * NetworkProcess/webrtc/NetworkRTCProvider.h: |
| * NetworkProcess/webrtc/NetworkRTCProvider.mm: |
| (WebKit::NetworkRTCProvider::createClientTCPSocket): |
| * NetworkProcess/webrtc/NetworkRTCSocket.cpp: |
| (WebKit::NetworkRTCSocket::sendTo): |
| (WebKit::NetworkRTCSocket::close): |
| (WebKit::NetworkRTCSocket::setOption): |
| |
| 2019-09-01 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Cairo] out-of-bounds read in ShareableBitmap::paint if a fractional device scale factor is used |
| https://bugs.webkit.org/show_bug.cgi?id=196340 |
| |
| Reviewed by Brent Fulgham. |
| |
| In ShareableBitmap::paint, srcRectScaled can be out-of-bounds of |
| the surface if a fractional device scale factor is used. |
| |
| * Shared/cairo/ShareableBitmapCairo.cpp: |
| (WebKit::ShareableBitmap::paint): Use cairoSurfaceSetDeviceScale |
| to set a device scale factor to the surface instead of multiplying |
| srcRect with a device scale factor. |
| |
| 2019-09-01 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| Unreviewed, rolling out r249366. |
| |
| WinCairo WebKit2 crashes in some websites and the device scale |
| factor is not correct in high DPI. |
| |
| Reverted changeset: |
| |
| "[WinCairo, FTW] Properly handle device scale factor" |
| https://bugs.webkit.org/show_bug.cgi?id=201361 |
| https://trac.webkit.org/changeset/249366 |
| |
| 2019-09-01 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Long presses that interrupt accelerated scrolling dispatch clicks on apps linked against iOS 12 or earlier |
| https://bugs.webkit.org/show_bug.cgi?id=201346 |
| <rdar://problem/54885784> |
| |
| Reviewed by Dean Jackson. |
| |
| For apps that are linked on or after iOS 13, we add a context menu interaction to the content view, which |
| requires us to disable (or avoid adding) the highlight long press gesture recognizer. However, for apps that are |
| linked on the iOS 12 SDK or prior, this gesture is still present, and fires when long pressing for (roughly) up |
| to 0.75 seconds if a tap gesture was not recognized instead. Firing this gesture sends a click event to the |
| page; this brings back some form of <rdar://problem/53889373>, but only when holding for slightly longer than a |
| normal tap, and also only in apps linked on iOS 12 or earlier. To fix this, we apply a similar solution as in |
| r248433 and detect whether a long press gesture interrupted scroll view deceleration in |
| -gestureRecognizerShouldBegin:. If so, we return NO to avoid clicking. See per-method comments below for more |
| details. |
| |
| Testing this bug as-is was tricky, since there's no way in layout tests to simulate being linked on or before a |
| given SDK version. Luckily, recall that: |
| 1. This bug occurs when the highlight gesture recognizer is enabled and added to the content view. |
| 2. The highlight gesture recognizer only needs to be disabled or removed when context menu interaction is added. |
| As such, we should be able to restore the highlight gesture recognizer by suppressing the context menu |
| interaction in an app linked-on-or-after iOS 13, by setting allowsLinkPreview to NO. Unfortunately, this doesn't |
| quite work, since we currently always avoid adding the highlight gesture recognizer if the app is linked on |
| iOS 13 or later. |
| |
| However, this means that the highlight gesture recognizer is absent from the content view in apps linked against |
| iOS 13 that disable link previews, even though its absence is not required. This means that long pressing a |
| clickable element in a web view that disables link previews does not show a tap highlight on iOS 13, whereas it |
| would on iOS 12; this is a regression, albeit a very subtle one. To fix this subtle issue and make it possible |
| to write a test for this bug, we refactor some logic for creating and configuring the highlight long press |
| gesture, such that we now unconditionally add the highlight gesture, but only enable it in apps linked on or |
| after iOS 13 if link previews (i.e. context menu interaction) are not allowed. |
| |
| Test: fast/scrolling/ios/click-events-after-long-press-during-momentum-scroll-in-overflow.html |
| |
| * SourcesCocoa.txt: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView setAllowsLinkPreview:]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| |
| Refactor our gesture setup logic to always create and add the long press and highlight long press gestures, but |
| conditionally disable them based on whether or not (1) the context menu is available, and (2) WKWebView's |
| allowsLinkPreview property. |
| |
| (-[WKContentView _didChangeLinkPreviewAvailability]): |
| (-[WKContentView _updateLongPressAndHighlightLongPressGestures]): |
| |
| Add a new helper to update the enabled state of the long press and highlight long press gestures, by consulting |
| -_shouldUseContextMenu and -allowsLinkPreview. This is called when setting up the gestures, as well as whenever |
| -allowsLinkPreview changes. |
| |
| (-[WKContentView gestureRecognizerShouldBegin:]): |
| |
| Factor out logic to ascend the view hierarchy in search of a UIScrollView that was interrupted while |
| decelerating into a local lambda function; use this for both the highlight gesture and the single tap gesture, |
| to determine whether they should begin. |
| |
| * UIProcess/ios/WKHighlightLongPressGestureRecognizer.h: Added. |
| * UIProcess/ios/WKHighlightLongPressGestureRecognizer.mm: Added. |
| |
| In order to remember the UIScrollView (if any) tracked by the highlight long press gesture, we subclass |
| _UIWebHighlightLongPressGestureRecognizer. While UILongPressGestureRecognizer does have SPI to ask for a list of |
| UITouches, by the time the gesture has been recognized and the gesture delegates are invoked, these UITouches |
| no longer correspond to UIViews. As such, the only time we have access to the list of UITouches with their |
| UIViews is during the touches* subclass hooks. |
| |
| (-[WKHighlightLongPressGestureRecognizer reset]): |
| |
| Clear out the tracked UIScrollView here, when the gesture is reset (i.e. after ending, or being canceled). |
| |
| (-[WKHighlightLongPressGestureRecognizer touchesBegan:withEvent:]): |
| |
| Remember the last touched UIScrollView here. |
| |
| (-[WKHighlightLongPressGestureRecognizer lastTouchedScrollView]): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-30 Brent Fulgham <bfulgham@apple.com> |
| |
| [WinCairo, FTW] Properly handle device scale factor |
| https://bugs.webkit.org/show_bug.cgi?id=201361 |
| |
| Reviewed by Don Olmstead. |
| |
| Update the WebView and WebProcess to correctly handle |
| the device scale factor. |
| |
| * UIProcess/win/WebView.cpp: |
| (WebKit::WebView::WebView): Tell the page the current device scale factor. |
| * WebProcess/win/WebProcessMainWin.cpp: |
| (WebKit::WebProcessMainWin): Tell the process to be aware of device scale. |
| |
| 2019-08-31 Chris Dumez <cdumez@apple.com> |
| |
| DocumentStorageAccess::hasStorageAccess() / requestStorageAccess() don't need to know about pageID / frameID |
| https://bugs.webkit.org/show_bug.cgi?id=201364 |
| |
| Reviewed by John Wilander. |
| |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::hasStorageAccess): |
| (WebKit::WebChromeClient::requestStorageAccess): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::hasStorageAccess): |
| (WebKit::WebPage::requestStorageAccess): |
| * WebProcess/WebPage/WebPage.h: |
| |
| 2019-08-30 Chris Dumez <cdumez@apple.com> |
| |
| WebPage::fromCorePage() to take and return a C++ reference |
| https://bugs.webkit.org/show_bug.cgi?id=201367 |
| |
| Reviewed by Antti Koivisto. |
| |
| * WebProcess/InjectedBundle/InjectedBundle.cpp: |
| (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): |
| * WebProcess/WebPage/VisitedLinkTableController.cpp: |
| (WebKit::VisitedLinkTableController::addVisitedLink): |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::page const): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::fromCorePage): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPageOverlay.cpp: |
| (WebKit::WebPageOverlay::willMoveToPage): |
| (WebKit::WebPageOverlay::didMoveToPage): |
| * WebProcess/WebStorage/StorageNamespaceImpl.cpp: |
| (WebKit::StorageNamespaceImpl::copy): |
| * WebProcess/WebStorage/StorageNamespaceImpl.h: |
| * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp: |
| (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace): |
| |
| 2019-08-30 Chris Dumez <cdumez@apple.com> |
| |
| [PSON] We no longer need to throw away suspended pages in a process before using it for a navigation |
| https://bugs.webkit.org/show_bug.cgi?id=201344 |
| |
| Reviewed by Antti Koivisto. |
| |
| We no longer need to throw away suspended pages in a process before using it for a navigation, now that |
| Bug 201225 has been fixed. WebPage objects (suspended or live) in the process now have distinct |
| identifiers and can coexist. |
| |
| * Shared/API/Cocoa/RemoteObjectRegistry.h: |
| * Shared/API/Cocoa/RemoteObjectRegistry.mm: |
| (WebKit::RemoteObjectRegistry::RemoteObjectRegistry): |
| * UIProcess/Cocoa/UIRemoteObjectRegistry.cpp: |
| (WebKit::UIRemoteObjectRegistry::UIRemoteObjectRegistry): |
| * WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.cpp: |
| (WebKit::WebRemoteObjectRegistry::WebRemoteObjectRegistry): |
| (WebKit::WebRemoteObjectRegistry::close): |
| |
| 2019-08-30 Chris Dumez <cdumez@apple.com> |
| |
| Assertion hit when saving to PDF from printing dialog |
| https://bugs.webkit.org/show_bug.cgi?id=201351 |
| |
| Reviewed by Tim Horton. |
| |
| [WKPrintingView knowsPageRange:] may get called from a background thread and ends up calling |
| WeakPtr::get() which asserts because it is generally unsafe to get the raw pointer from a |
| WeakPtr to an object owned by another thread. However, the methods here merely want to null |
| check it so add a thread-safe method (pageIsClosed()) to WebFrameProxy for it. |
| |
| * UIProcess/WebFrameProxy.h: |
| (WebKit::WebFrameProxy::pageIsClosed const): |
| * UIProcess/mac/WKPrintingView.mm: |
| (-[WKPrintingView knowsPageRange:]): |
| |
| 2019-08-30 Alex Christensen <achristensen@webkit.org> |
| |
| Remove HAVE_CFNETWORK_WITH_AUTO_ADDED_HTTP_HEADER_SUPPRESSION_SUPPORT conditional |
| https://bugs.webkit.org/show_bug.cgi?id=201280 |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| |
| 2019-08-30 Alex Christensen <achristensen@webkit.org> |
| |
| Remove HAVE_CFNETWORK_WITH_IGNORE_HSTS conditional |
| https://bugs.webkit.org/show_bug.cgi?id=201279 |
| |
| Reviewed by Darin Adler. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (ignoreHSTS): |
| (updateIgnoreStrictTransportSecuritySettingIfNecessary): |
| (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]): |
| (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]): |
| |
| 2019-08-30 Alex Christensen <achristensen@webkit.org> |
| |
| Allow process cache to cache processes when using a non-default persistent WebsiteDataStore |
| https://bugs.webkit.org/show_bug.cgi?id=201329 |
| |
| Reviewed by Chris Dumez. |
| |
| Treat all persistent sessions the same when deciding whether to clear all cached web processes using a particular website data store. |
| This removes a huge performance regression on warm plt when switching to using a non-default persistent session. |
| I also removed a call to removeSession which is redundant with the one in the WebsiteDataStore destructor, which is where it should be. |
| |
| * UIProcess/WebProcessCache.cpp: |
| (WebKit::WebProcessCache::canCacheProcess const): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore): |
| (WebKit::WebProcessPool::pageEndUsingWebsiteDataStore): |
| |
| 2019-08-30 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Caret does not appear in text field inside a transformed, overflow: hidden container |
| https://bugs.webkit.org/show_bug.cgi?id=201317 |
| <rdar://problem/54859264> |
| |
| Reviewed by Simon Fraser. |
| |
| Adjust isTransparentOrFullyClipped to use the new methods in RenderLayer and RenderObject. See WebCore ChangeLog |
| for more details. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::isTransparentOrFullyClipped const): |
| |
| 2019-08-30 Simon Fraser <simon.fraser@apple.com> |
| |
| Add system tracing points for compositing updates, and touch-event dispatching |
| https://bugs.webkit.org/show_bug.cgi?id=201327 |
| |
| Reviewed by Alex Christensen. |
| |
| TraceScope in EventDispatcher::dispatchTouchEvents(). |
| |
| * WebProcess/WebPage/EventDispatcher.cpp: |
| (WebKit::EventDispatcher::dispatchTouchEvents): |
| |
| 2019-08-30 Brent Fulgham <bfulgham@apple.com> |
| |
| [FTW] Use DirectX SharedResource as basis for SharedBitmap |
| https://bugs.webkit.org/show_bug.cgi?id=201157 |
| |
| Reviewed by Alex Christensen. |
| |
| Currently an ID2D1Bitmap is used as the backing store for the SharedBitmap that is the |
| base type for sharing data between the WebContent Process and the UIProcess. However, this |
| involves moving GPU memory to local memory, copying that memory into the SharedMemory member |
| of the SharedBitmap, then building a new GPU bitmap on the UIProcess side from that SharedMemory. |
| |
| Profiling indicates that this is the single largest place FTW WebKit spends its time. |
| |
| Instead, we should use Direct2D's ability to render to an IDXGISurface, which can be shared |
| between multiple processes. This should avoid the GPU->CPU copy, the Direct2D-allocated |
| CPU->Shared Memory copy, and the shared memory to GPU copy. |
| |
| Reviewed by Alex Christensen. |
| |
| * Platform/SharedMemory.h: |
| * Platform/win/SharedMemoryWin.cpp: |
| (WebKit::SharedMemory::Handle::encodeHandle): Added. |
| (WebKit::SharedMemory::Handle::encode const): Use new helper function. |
| (WebKit::SharedMemory::Handle::decodeHandle): Added. |
| (WebKit::SharedMemory::Handle::decode): Use new helper function. |
| * PlatformFTW.cmake: Add D3X11 libraries. |
| * Shared/ShareableBitmap.cpp: |
| (WebKit::ShareableBitmap::Configuration::encode const): Encode shared resource handle for DX texture. |
| (WebKit::ShareableBitmap::Configuration::decode): Ditto (but decode). |
| (WebKit::ShareableBitmap::ShareableBitmap): Create SharedResource (if needed). |
| (WebKit::ShareableBitmap::~ShareableBitmap): Add cleanup code for SharedResoure. |
| (WebKit::ShareableBitmap::numBytesForSize): Only allocate a small memory store when using GPU textures. |
| * Shared/ShareableBitmap.h: |
| (WebKit::ShareableBitmap::dxSurface): |
| * Shared/win/ShareableBitmapDirect2D.cpp: |
| (WebKit::ShareableBitmap::createSharedResource): Added. |
| (WebKit::ShareableBitmap::disposeSharedResource): Added. |
| (WebKit::ShareableBitmap::leakSharedResource): Added. |
| (WebKit::ShareableBitmap::createGraphicsContext): Update for new data types. |
| (WebKit::ShareableBitmap::paint): Ditto. |
| (WebKit::ShareableBitmap::createDirect2DSurface): Update for new data types. |
| (WebKit::ShareableBitmap::createImage): Ditto. |
| (WebKit::createSurfaceFromData): Deleted. |
| (WebKit::ShareableBitmap::sync): Deleted. |
| * UIProcess/BackingStore.cpp: |
| * UIProcess/BackingStore.h: |
| * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/win/BackingStoreDirect2D.cpp: |
| (WebKit::BackingStore::createBackend): |
| (WebKit::BackingStore::paint): |
| (WebKit::BackingStore::incorporateUpdate): |
| * UIProcess/win/PageClientImpl.cpp: |
| * UIProcess/win/WebPageProxyWin.cpp: |
| (WebKit::WebPageProxy::device const): |
| (WebKit::WebPageProxy::setDevice): |
| * UIProcess/win/WebView.cpp: |
| (WebKit::WebView::WebView): Initialize DirectX stuff. |
| (WebKit::WebView::paint): Use new DiretX drawing logic. |
| (WebKit::WebView::onSizeEvent): Update SwapChain's buffer sizes when resizing. |
| (WebKit::WebView::setupSwapChain): Added. |
| (WebKit::WebView::configureBackingStore): Added. |
| * UIProcess/win/WebView.h: |
| (WebKit::WebView::d3dDevice): |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::display): |
| |
| 2019-08-30 Chris Dumez <cdumez@apple.com> |
| |
| [PSON] Bump the WebPage's identifier every time we process-swap |
| https://bugs.webkit.org/show_bug.cgi?id=201225 |
| |
| Reviewed by Alex Christensen. |
| |
| Every time we create a new WebPage object in a provisional process, we now assign it a new |
| identifier, instead of using the identifier of the WebPage in the committed process. This |
| will address issues with IPC when navigating back and forth between processes since we will |
| no longer be confused as to which WebPage the IPC is coming from. Also, this will allow |
| suspended WebPages to keep living in the process, even if we use the process for a new load |
| (will be done in a follow-up patch) since we will no longer have an identifier conflict. |
| |
| * Scripts/webkit/messages.py: |
| * Shared/API/APIPageHandle.cpp: |
| (API::PageHandle::create): |
| (API::PageHandle::createAutoconverting): |
| (API::PageHandle::PageHandle): |
| (API::PageHandle::encode const): |
| (API::PageHandle::decode): |
| * Shared/API/APIPageHandle.h: |
| (API::PageHandle::pageProxyID const): |
| (API::PageHandle::webPageID const): |
| * Shared/API/Cocoa/WKBrowsingContextHandle.mm: |
| (-[WKBrowsingContextHandle _initWithPageProxy:]): |
| (-[WKBrowsingContextHandle _initWithPage:]): |
| (-[WKBrowsingContextHandle _initWithPageProxyID:andWebPageID:]): |
| (-[WKBrowsingContextHandle hash]): |
| (-[WKBrowsingContextHandle isEqual:]): |
| (-[WKBrowsingContextHandle encodeWithCoder:]): |
| (-[WKBrowsingContextHandle initWithCoder:]): |
| * Shared/API/Cocoa/WKBrowsingContextHandleInternal.h: |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| * Shared/mac/ObjCObjectGraph.mm: |
| (WebKit::ObjCObjectGraph::encode): |
| (WebKit::ObjCObjectGraph::decode): |
| * UIProcess/API/Cocoa/WKBrowsingContextController.mm: |
| (-[WKBrowsingContextController handle]): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView dealloc]): |
| (-[WKWebView _remoteObjectRegistry]): |
| (-[WKWebView _handle]): |
| * UIProcess/API/glib/WebKitURISchemeRequest.cpp: |
| (webkitURISchemeRequestCreate): |
| * UIProcess/Cocoa/WebProcessProxyCocoa.mm: |
| (WebKit::WebProcessProxy::transformHandlesToObjects): |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::~WebViewImpl): |
| (WebKit::WebViewImpl::remoteObjectRegistry): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge): |
| (WebKit::NetworkProcessProxy::logDiagnosticMessage): |
| (WebKit::NetworkProcessProxy::logDiagnosticMessageWithResult): |
| (WebKit::NetworkProcessProxy::logDiagnosticMessageWithValue): |
| (WebKit::NetworkProcessProxy::requestStorageAccessConfirm): |
| (WebKit::NetworkProcessProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource): |
| (WebKit::NetworkProcessProxy::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): |
| (WebKit::ProvisionalPageProxy::loadData): |
| (WebKit::ProvisionalPageProxy::loadRequest): |
| (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync): |
| (WebKit::ProvisionalPageProxy::decidePolicyForResponse): |
| (WebKit::ProvisionalPageProxy::startURLSchemeTask): |
| (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync): |
| * UIProcess/ProvisionalPageProxy.h: |
| (WebKit::ProvisionalPageProxy::webPageID const): |
| * UIProcess/SuspendedPageProxy.h: |
| * UIProcess/UserContent/WebUserContentControllerProxy.cpp: |
| (WebKit::WebUserContentControllerProxy::didPostMessage): |
| * UIProcess/UserContent/WebUserContentControllerProxy.h: |
| * UIProcess/UserContent/WebUserContentControllerProxy.messages.in: |
| * UIProcess/VisitedLinkStore.cpp: |
| (WebKit::VisitedLinkStore::addVisitedLinkHashFromPage): |
| * UIProcess/VisitedLinkStore.h: |
| * UIProcess/VisitedLinkStore.messages.in: |
| * UIProcess/WebInspectorProxy.cpp: |
| (WebKit::WebInspectorProxy::createFrontendPage): |
| (WebKit::WebInspectorProxy::openLocalInspectorFrontend): |
| (WebKit::WebInspectorProxy::closeFrontendPageAndWindow): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::swapToWebProcess): |
| (WebKit::WebPageProxy::loadRequest): |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadData): |
| (WebKit::WebPageProxy::loadDataWithNavigationShared): |
| (WebKit::WebPageProxy::commitProvisionalPage): |
| (WebKit::WebPageProxy::continueNavigationInNewProcess): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared): |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionSync): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionSyncShared): |
| (WebKit::WebPageProxy::decidePolicyForResponse): |
| (WebKit::WebPageProxy::decidePolicyForResponseShared): |
| (WebKit::WebPageProxy::createNewPage): |
| (WebKit::WebPageProxy::creationParameters): |
| (WebKit::WebPageProxy::startURLSchemeTask): |
| (WebKit::WebPageProxy::startURLSchemeTaskShared): |
| (WebKit::WebPageProxy::loadSynchronousURLSchemeTask): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::webPageFromCorePageIdentifier): |
| (WebKit::WebProcessProxy::didReceiveMessage): |
| (WebKit::WebProcessProxy::transformHandlesToObjects): |
| (WebKit::WebProcessProxy::transformObjectsToHandles): |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebURLSchemeHandler.cpp: |
| (WebKit::WebURLSchemeHandler::startTask): |
| (WebKit::WebURLSchemeHandler::taskCompleted): |
| * UIProcess/WebURLSchemeHandler.h: |
| * UIProcess/WebURLSchemeTask.cpp: |
| (WebKit::WebURLSchemeTask::create): |
| (WebKit::WebURLSchemeTask::WebURLSchemeTask): |
| (WebKit::WebURLSchemeTask::didPerformRedirection): |
| (WebKit::WebURLSchemeTask::didReceiveResponse): |
| (WebKit::WebURLSchemeTask::didReceiveData): |
| (WebKit::WebURLSchemeTask::didComplete): |
| (WebKit::WebURLSchemeTask::pageDestroyed): |
| * UIProcess/WebURLSchemeTask.h: |
| (WebKit::WebURLSchemeTask::pageProxyID const): |
| (WebKit::WebURLSchemeTask::webPageID const): |
| * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: |
| (-[WKWebProcessPlugInBrowserContextController handle]): |
| (+[WKWebProcessPlugInBrowserContextController lookUpBrowsingContextFromHandle:]): |
| * WebProcess/UserContent/WebUserContentController.cpp: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::createWindow): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): |
| * WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.cpp: |
| (WebKit::WebRemoteObjectRegistry::WebRemoteObjectRegistry): |
| (WebKit::WebRemoteObjectRegistry::close): |
| * WebProcess/WebPage/VisitedLinkTableController.cpp: |
| (WebKit::VisitedLinkTableController::addVisitedLink): |
| * WebProcess/WebPage/WebInspectorUI.cpp: |
| (WebKit::WebInspectorUI::establishConnection): |
| * WebProcess/WebPage/WebInspectorUI.h: |
| * WebProcess/WebPage/WebInspectorUI.messages.in: |
| * WebProcess/WebPage/WebPage.cpp: |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::sessionStorageNamespaceIdentifier const): |
| (WebKit::WebPage::webPageProxyIdentifier const): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::didReceiveMessage): |
| (WebKit::WebProcess::transformHandlesToObjects): |
| (WebKit::WebProcess::transformObjectsToHandles): |
| * WebProcess/WebStorage/StorageNamespaceImpl.cpp: |
| (WebKit::StorageNamespaceImpl::createSessionStorageNamespace): |
| (WebKit::StorageNamespaceImpl::createLocalStorageNamespace): |
| (WebKit::StorageNamespaceImpl::createTransientLocalStorageNamespace): |
| (WebKit::StorageNamespaceImpl::StorageNamespaceImpl): |
| (WebKit::StorageNamespaceImpl::copy): |
| (WebKit::StorageNamespaceImpl::sessionStoragePageID const): |
| * WebProcess/WebStorage/StorageNamespaceImpl.h: |
| * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp: |
| (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::transformHandlesToObjects): |
| |
| 2019-08-30 Keith Rollin <krollin@apple.com> |
| |
| Remove AppKitCompatibilityDeclarations.h |
| https://bugs.webkit.org/show_bug.cgi?id=201283 |
| <rdar://problem/54822042> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| The two copies of these files -- on in WTF, one in MiniBrowser -- are |
| empty and can be removed. |
| |
| * WebKit2Prefix.h: |
| |
| 2019-08-30 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [WPE][GTK] New API to remove a filter from an user content manager given its identifier |
| https://bugs.webkit.org/show_bug.cgi?id=200479 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/glib/WebKitUserContentManager.cpp: |
| (webkit_user_content_manager_remove_filter_by_id): Add new public API function. |
| * UIProcess/API/gtk/WebKitUserContentManager.h: Add declaration for |
| webkit_user_content_manager_remove_filter_by_id(). |
| * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: List new function. |
| * UIProcess/API/wpe/WebKitUserContentManager.h: Add declaration for |
| webkit_user_content_manager_remove_filter_by_id(). |
| * UIProcess/API/wpe/docs/wpe-1.0-sections.txt: List new function. |
| |
| 2019-08-30 Pablo Saavedra <psaavedra@igalia.com> |
| |
| [GTK] Build failure in Debian Stable and Ubuntu LTS bots |
| https://bugs.webkit.org/show_bug.cgi?id=201337 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/gtk/WaylandCompositor.cpp: |
| (WebKit::WaylandCompositor::bindSurfaceToWebPage): |
| |
| 2019-08-30 Philippe Normand <pnormand@igalia.com> |
| |
| [WPE][Qt] loadingChanged signal parameter is unusable |
| https://bugs.webkit.org/show_bug.cgi?id=201301 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/wpe/qt/WPEQtView.h: Explicitely name signal |
| parameter. It is a runtime requirement for QML. |
| |
| 2019-08-29 Keith Rollin <krollin@apple.com> |
| |
| Remove HAVE_PASSKIT_GRANULAR_ERRORS conditional |
| https://bugs.webkit.org/show_bug.cgi?id=201278 |
| <rdar://problem/54821052> |
| |
| Reviewed by Alex Christensen. |
| |
| HAVE_PASSKIT_GRANULAR_ERRORS is always True, so remove the conditional |
| tests, keeping the True branches and removing the False branches. |
| |
| * Platform/cocoa/PaymentAuthorizationPresenter.mm: |
| (WebKit::PaymentAuthorizationPresenter::completePaymentSession): |
| (WebKit::PaymentAuthorizationPresenter::completeShippingContactSelection): |
| * Platform/cocoa/PaymentAuthorizationViewController.mm: |
| (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didAuthorizePayment:completion:]): Deleted. |
| (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:completion:]): Deleted. |
| (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:completion:]): Deleted. |
| (-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:completion:]): Deleted. |
| * Platform/cocoa/WKPaymentAuthorizationDelegate.h: |
| * Platform/cocoa/WKPaymentAuthorizationDelegate.mm: |
| (-[WKPaymentAuthorizationDelegate completePaymentMethodSelection:]): |
| (-[WKPaymentAuthorizationDelegate completePaymentSession:errors:didReachFinalState:]): |
| (-[WKPaymentAuthorizationDelegate completeShippingContactSelection:summaryItems:shippingMethods:errors:]): |
| (-[WKPaymentAuthorizationDelegate completeShippingMethodSelection:]): |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard): |
| (WebKit::toPKContactFields): |
| (WebKit::toNSSet): |
| (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): |
| (WebKit::toPKAddressField): Deleted. |
| |
| 2019-08-29 Chris Dumez <cdumez@apple.com> |
| |
| Add "IsolatedCopy" in the name of String getters that call isolatedCopy() on the string |
| https://bugs.webkit.org/show_bug.cgi?id=201318 |
| |
| Reviewed by Alex Christensen. |
| |
| Add "IsolatedCopy" in the name of String getters that call isolatedCopy() on the string, for clarity. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp: |
| (WebKit::ResourceLoadStatisticsPersistentStorage::storageDirectoryPathIsolatedCopy const): |
| (WebKit::ResourceLoadStatisticsPersistentStorage::resourceLogFilePath const): |
| (WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.h: |
| * NetworkProcess/cache/NetworkCacheBlobStorage.cpp: |
| (WebKit::NetworkCache::BlobStorage::blobDirectoryPathIsolatedCopy const): |
| (WebKit::NetworkCache::BlobStorage::synchronize): |
| (WebKit::NetworkCache::BlobStorage::blobPathForHash const): |
| * NetworkProcess/cache/NetworkCacheBlobStorage.h: |
| * NetworkProcess/cache/NetworkCacheStorage.cpp: |
| (WebKit::NetworkCache::Storage::basePathIsolatedCopy const): |
| (WebKit::NetworkCache::Storage::versionPath const): |
| (WebKit::NetworkCache::Storage::recordsPathIsolatedCopy const): |
| (WebKit::NetworkCache::Storage::synchronize): |
| (WebKit::NetworkCache::Storage::recordDirectoryPathForKey const): |
| (WebKit::NetworkCache::Storage::traverse): |
| (WebKit::NetworkCache::Storage::clear): |
| (WebKit::NetworkCache::Storage::shrink): |
| (WebKit::NetworkCache::Storage::deleteOldVersions): |
| * NetworkProcess/cache/NetworkCacheStorage.h: |
| |
| 2019-08-29 Keith Rollin <krollin@apple.com> |
| |
| Update .xcconfig symbols to reflect the current set of past and future product versions. |
| https://bugs.webkit.org/show_bug.cgi?id=200720 |
| <rdar://problem/54305032> |
| |
| Reviewed by Alex Christensen. |
| |
| Remove version symbols related to old OS's we no longer support, |
| ensure that version symbols are defined for OS's we do support. |
| |
| * Configurations/Base.xcconfig: |
| * Configurations/DebugRelease.xcconfig: |
| * Configurations/Version.xcconfig: |
| |
| 2019-08-29 Keith Rollin <krollin@apple.com> |
| |
| Invalid XPCServices symlinks are being created |
| https://bugs.webkit.org/show_bug.cgi?id=201320 |
| <rdar://problem/54719612> |
| |
| Reviewed by Dan Bernstein. |
| |
| When performing incremental builds, errant XPCServices symlinks can be |
| created. For example, in the following, the second symlink is the |
| correct one. The first symlink gets created when the build process |
| tries to create the symlink and it already exists. When it already |
| exists, the command to create the symlink actually follows the |
| existing symlink and creates the (second) symlink at the location |
| where the first symlink points. |
| |
| WebKit.framework/Versions/A/XPCServices/XPCServices@ -> Versions/Current/XPCServices |
| WebKit.framework/XPCServices@ -> Versions/Current/XPCServices |
| |
| Address this by specifying -h to the `ln` command, which will cause it |
| to not follow symlinks if they already exist at the target. |
| |
| Also, fix a benign issue where the Xcode build variable WRAPPER_NAME |
| was being referenced in a context where it wasn't defined. |
| |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-29 Alex Christensen <achristensen@webkit.org> |
| |
| Speculative loads should use the NetworkSession owning their Cache |
| https://bugs.webkit.org/show_bug.cgi?id=201314 |
| |
| Reviewed by Chris Dumez. |
| |
| This provides a performance improvement when using non-default persistent WKWebsiteDataStores. |
| |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::Cache::open): |
| (WebKit::NetworkCache::Cache::Cache): |
| * NetworkProcess/cache/NetworkCache.h: |
| (WebKit::NetworkCache::Cache::sessionID const): |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: |
| (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): |
| |
| 2019-08-29 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS 13] Caret does not appear in text field if the body element is translated completely out of the viewport |
| https://bugs.webkit.org/show_bug.cgi?id=201287 |
| <rdar://problem/54780864> |
| |
| Reviewed by Tim Horton. |
| |
| During EditorState computation, we use the hidden editable element heuristic to determine whether we should |
| begin suppressing selection gestures and UI. Currently, we use the editable root of the selection range to |
| determine where in the layer tree we should start our ascent, in search of a completely transparent or |
| completely clipped container. |
| |
| However, in the case where the selection is inside a focused text field, this causes us to walk up the layer |
| tree starting at the RenderLayer corresponding to the text field's inner contenteditable div, which is different |
| than the text field's enclosing RenderLayer in the case where the containing block is transformed, such that no |
| part of it is within the visible viewport. This scenario is exercised by the below test case, in which the caret |
| after transforming the body horizontally by -100vw is hidden due to a false positive in the hidden editable area |
| heuristic. |
| |
| Fix this by starting the layer tree ascent from the enclosing layer of the text form control if applicable, |
| instead of the inner editable area under the shadow root of the form control. |
| |
| Test: editing/selection/ios/show-selection-in-transformed-container.html |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::platformEditorState const): |
| |
| 2019-08-29 Youenn Fablet <youenn@apple.com> |
| |
| Skip fetch event dispatching if no fetch event handler is added at script evaluation time |
| https://bugs.webkit.org/show_bug.cgi?id=201174 |
| |
| Reviewed by Chris Dumez. |
| |
| Store whether a fetch event handler is set at script evaluation time. |
| If not, we skip the fetch event entirely so that the network load can start sooner. |
| If fetch event is skipped, we trigger soft update, as defined in |
| https://w3c.github.io/ServiceWorker/#handle-fetch step 16. |
| |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.cpp: |
| (WebKit::WebSWServerConnection::startFetch): |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp: |
| (WebKit::WebSWServerToContextConnection::softUpdate): |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h: |
| * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::serviceWorkerStarted): |
| (WebKit::WebSWContextManagerConnection::serviceWorkerFailedToStart): |
| (WebKit::WebSWContextManagerConnection::softUpdate): |
| * WebProcess/Storage/WebSWContextManagerConnection.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.messages.in: |
| |
| 2019-08-29 Keith Rollin <krollin@apple.com> |
| |
| Remove support for macOS < 10.13 (part 3) |
| https://bugs.webkit.org/show_bug.cgi?id=201224 |
| <rdar://problem/54795934> |
| |
| Reviewed by Darin Adler. |
| |
| Remove symbols in WebKitTargetConditionals.xcconfig related to macOS |
| 10.13, including WK_MACOS_1013 and WK_MACOS_BEFORE_1013, and suffixes |
| like _MACOS_SINCE_1013. |
| |
| * Configurations/WebKitTargetConditionals.xcconfig: |
| |
| 2019-08-29 Youenn Fablet <youenn@apple.com> |
| |
| Use WebPageProxy callbacks in case of authentication challenge received from Service Worker |
| https://bugs.webkit.org/show_bug.cgi?id=201177 |
| |
| Reviewed by Alex Christensen. |
| |
| Send topOrigin for every possible load to NetworkProcess. |
| Send topOrigin as part of authentication challenge to UIProcess. |
| |
| If there is no corresponding page for the pageID, try getting a page |
| related to the service worker using the topOrigin and send the challenge to it. |
| |
| * NetworkProcess/NetworkCORSPreflightChecker.cpp: |
| (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge): |
| * NetworkProcess/NetworkCORSPreflightChecker.h: |
| * NetworkProcess/NetworkLoad.cpp: |
| (WebKit::NetworkLoad::didReceiveChallenge): |
| * NetworkProcess/NetworkLoadChecker.cpp: |
| (WebKit::NetworkLoadChecker::NetworkLoadChecker): |
| (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight): |
| * NetworkProcess/NetworkLoadChecker.h: |
| * NetworkProcess/NetworkLoadParameters.h: |
| * NetworkProcess/NetworkResourceLoadParameters.cpp: |
| (WebKit::NetworkResourceLoadParameters::encode const): |
| (WebKit::NetworkResourceLoadParameters::decode): |
| * NetworkProcess/NetworkResourceLoadParameters.h: |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::m_shouldCaptureExtraNetworkLoadMetrics): |
| * NetworkProcess/PingLoad.cpp: |
| (WebKit::PingLoad::PingLoad): |
| (WebKit::PingLoad::didReceiveChallenge): |
| * Shared/Authentication/AuthenticationManager.cpp: |
| (WebKit::AuthenticationManager::didReceiveAuthenticationChallenge): |
| * Shared/Authentication/AuthenticationManager.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::processAuthenticationChallenge): |
| (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy): |
| * UIProcess/WebPageProxy.h: |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| (WebKit::WebLoaderStrategy::startPingLoad): |
| |
| 2019-08-29 Chris Dumez <cdumez@apple.com> |
| |
| Dissociate the WebPageProxy's identifier from the WebPage's |
| https://bugs.webkit.org/show_bug.cgi?id=201233 |
| |
| Reviewed by Alex Christensen. |
| |
| Dissociate the WebPageProxy's identifier from the WebPage's. This will allow bumping the |
| WebPage's identifier everytime we create a WebPage in a new process in case of process |
| swap on navigation (Bug 201225). |
| |
| * Shared/WebBackForwardListItem.cpp: |
| (WebKit::WebBackForwardListItem::create): |
| (WebKit::WebBackForwardListItem::WebBackForwardListItem): |
| * Shared/WebBackForwardListItem.h: |
| (WebKit::WebBackForwardListItem::pageID const): |
| * UIProcess/API/C/WKPage.cpp: |
| (WKPageSetPageLoaderClient): |
| * UIProcess/API/Cocoa/WKBrowsingContextController.mm: |
| (-[WKBrowsingContextController handle]): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView dealloc]): |
| (-[WKWebView _didCommitLayerTree:]): |
| (-[WKWebView _dispatchSetViewLayoutSize:]): |
| (-[WKWebView _cancelAnimatedResize]): |
| (-[WKWebView _remoteObjectRegistry]): |
| (-[WKWebView _handle]): |
| (-[WKWebView _focusTextInputContext:completionHandler:]): |
| (-[WKWebView _endAnimatedResize]): |
| (-[WKWebView _resizeWhileHidingContentWithUpdates:]): |
| (-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:maximumUnobscuredSizeOverride:]): |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _getAllStorageAccessEntriesFor:completionHandler:]): |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextGetWebViewForPage): |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkit_web_view_get_page_id): |
| * UIProcess/Automation/WebAutomationSession.cpp: |
| (WebKit::WebAutomationSession::handleForWebPageProxy): |
| (WebKit::WebAutomationSession::switchToBrowsingContext): |
| (WebKit::WebAutomationSession::waitForNavigationToCompleteOnPage): |
| (WebKit::WebAutomationSession::respondToPendingPageNavigationCallbacksWithTimeout): |
| (WebKit::WebAutomationSession::navigationOccurredForFrame): |
| (WebKit::WebAutomationSession::documentLoadedForFrame): |
| (WebKit::WebAutomationSession::inspectorFrontendLoaded): |
| (WebKit::WebAutomationSession::mouseEventsFlushedForPage): |
| (WebKit::WebAutomationSession::keyboardEventsFlushedForPage): |
| (WebKit::WebAutomationSession::willClosePage): |
| (WebKit::WebAutomationSession::evaluateJavaScriptFunction): |
| (WebKit::WebAutomationSession::resolveChildFrameHandle): |
| (WebKit::WebAutomationSession::resolveParentFrameHandle): |
| (WebKit::WebAutomationSession::computeElementLayout): |
| (WebKit::WebAutomationSession::selectOptionElement): |
| (WebKit::WebAutomationSession::getAllCookies): |
| (WebKit::WebAutomationSession::deleteSingleCookie): |
| (WebKit::WebAutomationSession::inputDispatcherForPage): |
| (WebKit::WebAutomationSession::viewportInViewCenterPointOfElement): |
| (WebKit::WebAutomationSession::simulateMouseInteraction): |
| (WebKit::WebAutomationSession::simulateKeyboardInteraction): |
| (WebKit::WebAutomationSession::performMouseInteraction): |
| (WebKit::WebAutomationSession::performKeyboardInteractions): |
| (WebKit::WebAutomationSession::takeScreenshot): |
| * UIProcess/Automation/WebAutomationSession.h: |
| * UIProcess/Automation/mac/WebAutomationSessionMac.mm: |
| (WebKit::WebAutomationSession::inspectBrowsingContext): |
| * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: |
| (WebKit::PlaybackSessionManagerProxy::PlaybackSessionManagerProxy): |
| (WebKit::PlaybackSessionManagerProxy::invalidate): |
| * UIProcess/Cocoa/TextCheckingController.mm: |
| (WebKit::TextCheckingController::replaceRelativeToSelection): |
| (WebKit::TextCheckingController::removeAnnotationRelativeToSelection): |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: |
| (WebKit::VideoFullscreenManagerProxy::VideoFullscreenManagerProxy): |
| (WebKit::VideoFullscreenManagerProxy::invalidate): |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::performDictionaryLookupAtLocation): |
| (WebKit::WebPageProxy::performDictionaryLookupOfCurrentSelection): |
| (WebKit::WebPageProxy::paymentCoordinatorAddMessageReceiver): |
| (WebKit::WebPageProxy::paymentCoordinatorRemoveMessageReceiver): |
| (WebKit::WebPageProxy::speakingErrorOccurred): |
| (WebKit::WebPageProxy::boundaryEventOccurred): |
| (WebKit::WebPageProxy::voicesDidChange): |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::~WebViewImpl): |
| (WebKit::WebViewImpl::windowDidOrderOffScreen): |
| (WebKit::WebViewImpl::windowDidOrderOnScreen): |
| (WebKit::WebViewImpl::windowDidChangeOcclusionState): |
| (WebKit::WebViewImpl::viewDidHide): |
| (WebKit::WebViewImpl::viewDidUnhide): |
| (WebKit::WebViewImpl::activeSpaceDidChange): |
| (WebKit::WebViewImpl::remoteObjectRegistry): |
| * UIProcess/GeolocationPermissionRequestManagerProxy.cpp: |
| (WebKit::GeolocationPermissionRequestManagerProxy::didReceiveGeolocationPermissionDecision): |
| * UIProcess/InspectorTargetProxy.cpp: |
| (WebKit::InspectorTargetProxy::connect): |
| (WebKit::InspectorTargetProxy::disconnect): |
| (WebKit::InspectorTargetProxy::sendMessageToTargetBackend): |
| * UIProcess/Notifications/NotificationPermissionRequestManagerProxy.cpp: |
| (WebKit::NotificationPermissionRequestManagerProxy::createRequest): |
| * UIProcess/Notifications/WebNotificationManagerProxy.cpp: |
| (WebKit::WebNotificationManagerProxy::show): |
| (WebKit::WebNotificationManagerProxy::cancel): |
| (WebKit::WebNotificationManagerProxy::didDestroyNotification): |
| (WebKit::pageIDsMatch): |
| (WebKit::pageAndNotificationIDsMatch): |
| (WebKit::WebNotificationManagerProxy::clearNotifications): |
| (WebKit::WebNotificationManagerProxy::providerDidShowNotification): |
| (WebKit::WebNotificationManagerProxy::providerDidClickNotification): |
| * UIProcess/Notifications/WebNotificationManagerProxy.h: |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): |
| (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy): |
| (WebKit::ProvisionalPageProxy::processDidTerminate): |
| (WebKit::ProvisionalPageProxy::cancel): |
| (WebKit::ProvisionalPageProxy::initializeWebPage): |
| (WebKit::ProvisionalPageProxy::loadData): |
| (WebKit::ProvisionalPageProxy::loadRequest): |
| (WebKit::ProvisionalPageProxy::goToBackForwardItem): |
| (WebKit::ProvisionalPageProxy::didCreateMainFrame): |
| (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame): |
| (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame): |
| (WebKit::ProvisionalPageProxy::didCommitLoadForFrame): |
| * UIProcess/ProvisionalPageProxy.h: |
| * UIProcess/RemoteWebInspectorProxy.cpp: |
| (WebKit::RemoteWebInspectorProxy::load): |
| (WebKit::RemoteWebInspectorProxy::sendMessageToFrontend): |
| (WebKit::RemoteWebInspectorProxy::createFrontendPageAndWindow): |
| (WebKit::RemoteWebInspectorProxy::closeFrontendPageAndWindow): |
| * UIProcess/SuspendedPageProxy.cpp: |
| (WebKit::SuspendedPageProxy::SuspendedPageProxy): |
| (WebKit::SuspendedPageProxy::~SuspendedPageProxy): |
| (WebKit::SuspendedPageProxy::unsuspend): |
| (WebKit::SuspendedPageProxy::close): |
| (WebKit::SuspendedPageProxy::didProcessRequestToSuspend): |
| (WebKit::SuspendedPageProxy::loggingString const): |
| * UIProcess/SuspendedPageProxy.h: |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged): |
| (WebKit::UserMediaPermissionRequestManagerProxy::denyRequest): |
| (WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest): |
| * UIProcess/ViewGestureController.cpp: |
| (WebKit::ViewGestureController::ViewGestureController): |
| (WebKit::ViewGestureController::~ViewGestureController): |
| (WebKit::ViewGestureController::disconnectFromProcess): |
| (WebKit::ViewGestureController::connectToProcess): |
| (WebKit::ViewGestureController::controllerForGesture): |
| (WebKit::ViewGestureController::forceRepaintIfNeeded): |
| (WebKit::ViewGestureController::requestRenderTreeSizeNotificationIfNeeded): |
| * UIProcess/ViewGestureController.h: |
| * UIProcess/VisitedLinkStore.cpp: |
| (WebKit::VisitedLinkStore::addVisitedLinkHashFromPage): |
| * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp: |
| (WebKit::WebAuthenticatorCoordinatorProxy::WebAuthenticatorCoordinatorProxy): |
| (WebKit::WebAuthenticatorCoordinatorProxy::~WebAuthenticatorCoordinatorProxy): |
| * UIProcess/WebBackForwardList.cpp: |
| (WebKit::WebBackForwardList::itemForID): |
| (WebKit::WebBackForwardList::restoreFromState): |
| * UIProcess/WebEditCommandProxy.cpp: |
| (WebKit::WebEditCommandProxy::unapply): |
| (WebKit::WebEditCommandProxy::reapply): |
| * UIProcess/WebFrameProxy.cpp: |
| (WebKit::WebFrameProxy::loadURL): |
| (WebKit::WebFrameProxy::loadData): |
| (WebKit::WebFrameProxy::stopLoading const): |
| (WebKit::WebFrameProxy::collapseSelection): |
| * UIProcess/WebFullScreenManagerProxy.cpp: |
| (WebKit::WebFullScreenManagerProxy::WebFullScreenManagerProxy): |
| (WebKit::WebFullScreenManagerProxy::~WebFullScreenManagerProxy): |
| (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/WebInspectorProxy.cpp: |
| (WebKit::WebInspectorProxy::WebInspectorProxy): |
| (WebKit::WebInspectorProxy::invalidate): |
| (WebKit::WebInspectorProxy::sendMessageToFrontend): |
| (WebKit::WebInspectorProxy::connect): |
| (WebKit::WebInspectorProxy::close): |
| (WebKit::WebInspectorProxy::reset): |
| (WebKit::WebInspectorProxy::updateForNewPageProcess): |
| (WebKit::WebInspectorProxy::setFrontendConnection): |
| (WebKit::WebInspectorProxy::showConsole): |
| (WebKit::WebInspectorProxy::showResources): |
| (WebKit::WebInspectorProxy::showMainResourceForFrame): |
| (WebKit::WebInspectorProxy::attach): |
| (WebKit::WebInspectorProxy::detach): |
| (WebKit::WebInspectorProxy::togglePageProfiling): |
| (WebKit::WebInspectorProxy::toggleElementSelection): |
| (WebKit::WebInspectorProxy::createFrontendPage): |
| (WebKit::WebInspectorProxy::openLocalInspectorFrontend): |
| (WebKit::WebInspectorProxy::open): |
| (WebKit::WebInspectorProxy::closeFrontendPageAndWindow): |
| (WebKit::WebInspectorProxy::attachAvailabilityChanged): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::WebPageProxy): |
| (WebKit::m_resetRecentCrashCountTimer): |
| (WebKit::WebPageProxy::~WebPageProxy): |
| (WebKit::WebPageProxy::setUIClient): |
| (WebKit::WebPageProxy::setIconLoadingClient): |
| (WebKit::WebPageProxy::launchProcess): |
| (WebKit::WebPageProxy::suspendCurrentPageIfPossible): |
| (WebKit::WebPageProxy::swapToWebProcess): |
| (WebKit::WebPageProxy::launchProcessForReload): |
| (WebKit::WebPageProxy::launchProcessWithItem): |
| (WebKit::WebPageProxy::initializeWebPage): |
| (WebKit::WebPageProxy::close): |
| (WebKit::WebPageProxy::tryClose): |
| (WebKit::WebPageProxy::loadRequest): |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadFile): |
| (WebKit::WebPageProxy::loadData): |
| (WebKit::WebPageProxy::loadDataWithNavigationShared): |
| (WebKit::WebPageProxy::loadAlternateHTML): |
| (WebKit::WebPageProxy::loadWebArchiveData): |
| (WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick): |
| (WebKit::WebPageProxy::stopLoading): |
| (WebKit::WebPageProxy::reload): |
| (WebKit::WebPageProxy::goToBackForwardItem): |
| (WebKit::WebPageProxy::tryRestoreScrollPosition): |
| (WebKit::WebPageProxy::setControlledByAutomation): |
| (WebKit::WebPageProxy::setIndicating): |
| (WebKit::WebPageProxy::createInspectorTargets): |
| (WebKit::WebPageProxy::setBackgroundColor): |
| (WebKit::WebPageProxy::setTopContentInset): |
| (WebKit::WebPageProxy::setUnderlayColor): |
| (WebKit::WebPageProxy::viewWillStartLiveResize): |
| (WebKit::WebPageProxy::viewWillEndLiveResize): |
| (WebKit::WebPageProxy::activityStateDidChange): |
| (WebKit::WebPageProxy::viewDidEnterWindow): |
| (WebKit::WebPageProxy::dispatchActivityStateChange): |
| (WebKit::WebPageProxy::layerHostingModeDidChange): |
| (WebKit::WebPageProxy::setInitialFocus): |
| (WebKit::WebPageProxy::clearSelection): |
| (WebKit::WebPageProxy::restoreSelectionInFocusedEditableElement): |
| (WebKit::WebPageProxy::validateCommand): |
| (WebKit::WebPageProxy::increaseListLevel): |
| (WebKit::WebPageProxy::decreaseListLevel): |
| (WebKit::WebPageProxy::changeListType): |
| (WebKit::WebPageProxy::setBaseWritingDirection): |
| (WebKit::WebPageProxy::setNeedsFontAttributes): |
| (WebKit::WebPageProxy::scheduleFullEditorStateUpdate): |
| (WebKit::WebPageProxy::selectAll): |
| (WebKit::WebPageProxy::executeEditCommand): |
| (WebKit::WebPageProxy::requestFontAttributesAtSelectionStart): |
| (WebKit::WebPageProxy::setEditable): |
| (WebKit::WebPageProxy::performDragControllerAction): |
| (WebKit::WebPageProxy::dragEnded): |
| (WebKit::WebPageProxy::didStartDrag): |
| (WebKit::WebPageProxy::dragCancelled): |
| (WebKit::WebPageProxy::processNextQueuedMouseEvent): |
| (WebKit::WebPageProxy::sendWheelEvent): |
| (WebKit::WebPageProxy::handleKeyboardEvent): |
| (WebKit::WebPageProxy::handleGestureEvent): |
| (WebKit::WebPageProxy::handleTouchEventSynchronously): |
| (WebKit::WebPageProxy::resetPotentialTapSecurityOrigin): |
| (WebKit::WebPageProxy::handleTouchEventAsynchronously): |
| (WebKit::WebPageProxy::handleTouchEvent): |
| (WebKit::WebPageProxy::cancelPointer): |
| (WebKit::WebPageProxy::touchWithIdentifierWasRemoved): |
| (WebKit::WebPageProxy::scrollBy): |
| (WebKit::WebPageProxy::centerSelectionInVisibleArea): |
| (WebKit::WebPageProxy::commitProvisionalPage): |
| (WebKit::WebPageProxy::continueNavigationInNewProcess): |
| (WebKit::WebPageProxy::setUserAgent): |
| (WebKit::WebPageProxy::resumeActiveDOMObjectsAndAnimations): |
| (WebKit::WebPageProxy::suspendActiveDOMObjectsAndAnimations): |
| (WebKit::WebPageProxy::setCustomTextEncodingName): |
| (WebKit::WebPageProxy::restoreFromSessionState): |
| (WebKit::WebPageProxy::setTextZoomFactor): |
| (WebKit::WebPageProxy::setPageZoomFactor): |
| (WebKit::WebPageProxy::setPageAndTextZoomFactors): |
| (WebKit::WebPageProxy::scalePage): |
| (WebKit::WebPageProxy::scalePageInViewCoordinates): |
| (WebKit::WebPageProxy::scaleView): |
| (WebKit::WebPageProxy::windowScreenDidChange): |
| (WebKit::WebPageProxy::accessibilitySettingsDidChange): |
| (WebKit::WebPageProxy::setUseFixedLayout): |
| (WebKit::WebPageProxy::setFixedLayoutSize): |
| (WebKit::WebPageProxy::setAlwaysShowsHorizontalScroller): |
| (WebKit::WebPageProxy::setAlwaysShowsVerticalScroller): |
| (WebKit::WebPageProxy::listenForLayoutMilestones): |
| (WebKit::WebPageProxy::setSuppressScrollbarAnimations): |
| (WebKit::WebPageProxy::setEnableVerticalRubberBanding): |
| (WebKit::WebPageProxy::setEnableHorizontalRubberBanding): |
| (WebKit::WebPageProxy::setBackgroundExtendsBeyondPage): |
| (WebKit::WebPageProxy::setPaginationMode): |
| (WebKit::WebPageProxy::setPaginationBehavesLikeColumns): |
| (WebKit::WebPageProxy::setPageLength): |
| (WebKit::WebPageProxy::setGapBetweenPages): |
| (WebKit::WebPageProxy::setPaginationLineGridEnabled): |
| (WebKit::WebPageProxy::findStringMatches): |
| (WebKit::WebPageProxy::findString): |
| (WebKit::WebPageProxy::getImageForFindMatch): |
| (WebKit::WebPageProxy::selectFindMatch): |
| (WebKit::WebPageProxy::indicateFindMatch): |
| (WebKit::WebPageProxy::hideFindUI): |
| (WebKit::WebPageProxy::countStringMatches): |
| (WebKit::WebPageProxy::replaceMatches): |
| (WebKit::WebPageProxy::runJavaScriptInMainFrameScriptWorld): |
| (WebKit::WebPageProxy::runJavaScriptInFrame): |
| (WebKit::WebPageProxy::getRenderTreeExternalRepresentation): |
| (WebKit::WebPageProxy::getSourceForFrame): |
| (WebKit::WebPageProxy::getContentsAsString): |
| (WebKit::WebPageProxy::getContentsAsAttributedString): |
| (WebKit::WebPageProxy::getBytecodeProfile): |
| (WebKit::WebPageProxy::getSamplingProfilerOutput): |
| (WebKit::WebPageProxy::getContentsAsMHTMLData): |
| (WebKit::WebPageProxy::getSelectionOrContentsAsString): |
| (WebKit::WebPageProxy::getSelectionAsWebArchiveData): |
| (WebKit::WebPageProxy::getMainResourceDataOfFrame): |
| (WebKit::WebPageProxy::getResourceDataFromFrame): |
| (WebKit::WebPageProxy::getWebArchiveOfFrame): |
| (WebKit::WebPageProxy::forceRepaint): |
| (WebKit::WebPageProxy::preferencesDidChange): |
| (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::willPerformClientRedirectForFrame): |
| (WebKit::WebPageProxy::didCancelClientRedirectForFrame): |
| (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::didCommitLoadForFrame): |
| (WebKit::WebPageProxy::didFinishDocumentLoadForFrame): |
| (WebKit::WebPageProxy::didFinishLoadForFrame): |
| (WebKit::WebPageProxy::didFailLoadForFrame): |
| (WebKit::WebPageProxy::didSameDocumentNavigationForFrame): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared): |
| (WebKit::WebPageProxy::decidePolicyForNewWindowAction): |
| (WebKit::WebPageProxy::decidePolicyForResponseShared): |
| (WebKit::WebPageProxy::willSubmitForm): |
| (WebKit::WebPageProxy::didNavigateWithNavigationDataShared): |
| (WebKit::WebPageProxy::didPerformClientRedirectShared): |
| (WebKit::WebPageProxy::didPerformServerRedirectShared): |
| (WebKit::trySOAuthorization): |
| (WebKit::WebPageProxy::createNewPage): |
| (WebKit::WebPageProxy::showShareSheet): |
| (WebKit::WebPageProxy::setMediaVolume): |
| (WebKit::WebPageProxy::setMuted): |
| (WebKit::WebPageProxy::stopMediaCapture): |
| (WebKit::WebPageProxy::stopAllMediaPlayback): |
| (WebKit::WebPageProxy::suspendAllMediaPlayback): |
| (WebKit::WebPageProxy::resumeAllMediaPlayback): |
| (WebKit::WebPageProxy::handleMediaEvent): |
| (WebKit::WebPageProxy::setVolumeOfMediaElement): |
| (WebKit::WebPageProxy::setMayStartMediaWhenInWindow): |
| (WebKit::WebPageProxy::didChooseColor): |
| (WebKit::WebPageProxy::didEndColorPicker): |
| (WebKit::WebPageProxy::didCloseSuggestions): |
| (WebKit::WebPageProxy::didSelectOption): |
| (WebKit::WebPageProxy::setAllowsMediaDocumentInlinePlayback): |
| (WebKit::WebPageProxy::backForwardAddItem): |
| (WebKit::WebPageProxy::messageSenderDestinationID const): |
| (WebKit::WebPageProxy::valueChangedForPopupMenu): |
| (WebKit::WebPageProxy::setTextFromItemForPopupMenu): |
| (WebKit::WebPageProxy::postMessageToInjectedBundle): |
| (WebKit::WebPageProxy::failedToShowPopupMenu): |
| (WebKit::WebPageProxy::showContextMenu): |
| (WebKit::WebPageProxy::contextMenuItemSelected): |
| (WebKit::WebPageProxy::handleContextMenuKeyEvent): |
| (WebKit::WebPageProxy::didChooseFilesForOpenPanelWithDisplayStringAndIcon): |
| (WebKit::WebPageProxy::didChooseFilesForOpenPanel): |
| (WebKit::WebPageProxy::didCancelForOpenPanel): |
| (WebKit::WebPageProxy::advanceToNextMisspelling): |
| (WebKit::WebPageProxy::changeSpellingToWord): |
| (WebKit::WebPageProxy::removeEditCommand): |
| (WebKit::WebPageProxy::didFinishCheckingText): |
| (WebKit::WebPageProxy::didCancelCheckingText): |
| (WebKit::WebPageProxy::didReceiveEvent): |
| (WebKit::WebPageProxy::processDidBecomeUnresponsive): |
| (WebKit::WebPageProxy::processDidBecomeResponsive): |
| (WebKit::WebPageProxy::dispatchProcessDidTerminate): |
| (WebKit::WebPageProxy::gamepadActivity): |
| (WebKit::WebPageProxy::updateWebsitePolicies): |
| (WebKit::WebPageProxy::backForwardRemovedItem): |
| (WebKit::WebPageProxy::setCanRunModal): |
| (WebKit::WebPageProxy::beginPrinting): |
| (WebKit::WebPageProxy::endPrinting): |
| (WebKit::WebPageProxy::computePagesForPrinting): |
| (WebKit::WebPageProxy::drawRectToImage): |
| (WebKit::WebPageProxy::drawPagesToPDF): |
| (WebKit::WebPageProxy::drawPagesForPrinting): |
| (WebKit::WebPageProxy::setMinimumSizeForAutoLayout): |
| (WebKit::WebPageProxy::setAutoSizingShouldExpandToViewHeight): |
| (WebKit::WebPageProxy::setViewportSizeForCSSViewportUnits): |
| (WebKit::WebPageProxy::handleAlternativeTextUIResult): |
| (WebKit::WebPageProxy::setComposition): |
| (WebKit::WebPageProxy::confirmComposition): |
| (WebKit::WebPageProxy::cancelComposition): |
| (WebKit::WebPageProxy::setScrollPinningBehavior): |
| (WebKit::WebPageProxy::setOverlayScrollbarStyle): |
| (WebKit::WebPageProxy::addMIMETypeWithCustomContentProvider): |
| (WebKit::WebPageProxy::changeFontAttributes): |
| (WebKit::WebPageProxy::changeFont): |
| (WebKit::WebPageProxy::setTextAsync): |
| (WebKit::WebPageProxy::insertTextAsync): |
| (WebKit::WebPageProxy::hasMarkedText): |
| (WebKit::WebPageProxy::getMarkedRangeAsync): |
| (WebKit::WebPageProxy::getSelectedRangeAsync): |
| (WebKit::WebPageProxy::characterIndexForPointAsync): |
| (WebKit::WebPageProxy::firstRectForCharacterRangeAsync): |
| (WebKit::WebPageProxy::setCompositionAsync): |
| (WebKit::WebPageProxy::confirmCompositionAsync): |
| (WebKit::WebPageProxy::takeSnapshot): |
| (WebKit::WebPageProxy::requestActiveNowPlayingSessionInfo): |
| (WebKit::WebPageProxy::performImmediateActionHitTestAtLocation): |
| (WebKit::WebPageProxy::immediateActionDidUpdate): |
| (WebKit::WebPageProxy::immediateActionDidCancel): |
| (WebKit::WebPageProxy::immediateActionDidComplete): |
| (WebKit::WebPageProxy::handleAcceptedCandidate): |
| (WebKit::WebPageProxy::setUseSystemAppearance): |
| (WebKit::WebPageProxy::setHeaderBannerHeightForTesting): |
| (WebKit::WebPageProxy::setFooterBannerHeightForTesting): |
| (WebKit::WebPageProxy::setShouldDispatchFakeMouseMoveEvents): |
| (WebKit::WebPageProxy::setPlaybackTarget): |
| (WebKit::WebPageProxy::externalOutputDeviceAvailableDidChange): |
| (WebKit::WebPageProxy::setShouldPlayToPlaybackTarget): |
| (WebKit::WebPageProxy::clearWheelEventTestTrigger): |
| (WebKit::WebPageProxy::setShouldScaleViewToFitDocument): |
| (WebKit::WebPageProxy::getLoadDecisionForIcon): |
| (WebKit::WebPageProxy::setResourceCachingDisabled): |
| (WebKit::WebPageProxy::setUserInterfaceLayoutDirection): |
| (WebKit::WebPageProxy::didAllowPointerLock): |
| (WebKit::WebPageProxy::didDenyPointerLock): |
| (WebKit::WebPageProxy::requestPointerUnlock): |
| (WebKit::WebPageProxy::setURLSchemeHandlerForScheme): |
| (WebKit::WebPageProxy::didCommitCrossSiteLoadWithDataTransferFromPrevalentResource): |
| (WebKit::WebPageProxy::effectiveAppearanceDidChange): |
| (WebKit::WebPageProxy::insertAttachment): |
| (WebKit::WebPageProxy::updateAttachmentAttributes): |
| (WebKit::WebPageProxy::getApplicationManifest): |
| (WebKit::WebPageProxy::setDefersLoadingForTesting): |
| (WebKit::WebPageProxy::updateCurrentModifierState): |
| (WebKit::WebPageProxy::simulateDeviceOrientationChange): |
| (WebKit::WebPageProxy::detectDataInAllFrames): |
| (WebKit::WebPageProxy::removeDataDetectedLinks): |
| (WebKit::WebPageProxy::textInputContextsInRect): |
| (WebKit::WebPageProxy::focusTextInputContext): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::identifier const): |
| (WebKit::WebPageProxy::webPageID const): |
| * UIProcess/WebPageProxyIdentifier.h: Added. |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore): |
| (WebKit::WebProcessPool::pageEndUsingWebsiteDataStore): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::webPage): |
| (WebKit::WebProcessProxy::addExistingWebPage): |
| (WebKit::WebProcessProxy::removeWebPage): |
| (WebKit::WebProcessProxy::addVisitedLinkStoreUser): |
| (WebKit::WebProcessProxy::removeVisitedLinkStoreUser): |
| (WebKit::WebProcessProxy::hasProvisionalPageWithID const): |
| (WebKit::WebProcessProxy::isAllowedToUpdateBackForwardItem const): |
| (WebKit::WebProcessProxy::transformObjectsToHandles): |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebURLSchemeHandler.cpp: |
| (WebKit::WebURLSchemeHandler::startTask): |
| (WebKit::WebURLSchemeHandler::stopAllTasksForPage): |
| (WebKit::WebURLSchemeHandler::stopTask): |
| (WebKit::WebURLSchemeHandler::removeTaskFromPageMap): |
| * UIProcess/WebURLSchemeHandler.h: |
| * UIProcess/WebURLSchemeTask.cpp: |
| (WebKit::WebURLSchemeTask::WebURLSchemeTask): |
| (WebKit::WebURLSchemeTask::didPerformRedirection): |
| (WebKit::WebURLSchemeTask::didReceiveResponse): |
| (WebKit::WebURLSchemeTask::didReceiveData): |
| (WebKit::WebURLSchemeTask::didComplete): |
| * UIProcess/WebURLSchemeTask.h: |
| (WebKit::WebURLSchemeTask::pageID const): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::getAllStorageAccessEntries): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| * UIProcess/gtk/WebPageProxyGtk.cpp: |
| (WebKit::WebPageProxy::getCenterForZoomGesture): |
| * UIProcess/ios/EditableImageController.mm: |
| (WebKit::EditableImageController::EditableImageController): |
| (WebKit::EditableImageController::~EditableImageController): |
| * UIProcess/ios/SmartMagnificationController.mm: |
| (WebKit::SmartMagnificationController::SmartMagnificationController): |
| (WebKit::SmartMagnificationController::~SmartMagnificationController): |
| (WebKit::SmartMagnificationController::handleSmartMagnificationGesture): |
| * UIProcess/ios/ViewGestureControllerIOS.mm: |
| (WebKit::ViewGestureController::beginSwipeGesture): |
| (WebKit::ViewGestureController::endSwipeGesture): |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _wk_printedDocument]): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView ensurePositionInformationIsUpToDate:]): |
| (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::requestFocusedElementInformation): |
| (WebKit::WebPageProxy::updateVisibleContentRects): |
| (WebKit::WebPageProxy::resendLastVisibleContentRects): |
| (WebKit::WebPageProxy::dynamicViewportSizeUpdate): |
| (WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize): |
| (WebKit::WebPageProxy::setForceAlwaysUserScalable): |
| (WebKit::WebPageProxy::setMaximumUnobscuredSize): |
| (WebKit::WebPageProxy::setDeviceOrientation): |
| (WebKit::WebPageProxy::setOverrideViewportArguments): |
| (WebKit::WebPageProxy::selectWithGesture): |
| (WebKit::WebPageProxy::updateSelectionWithTouches): |
| (WebKit::WebPageProxy::replaceDictatedText): |
| (WebKit::WebPageProxy::replaceSelectedText): |
| (WebKit::WebPageProxy::requestAutocorrectionData): |
| (WebKit::WebPageProxy::applyAutocorrection): |
| (WebKit::WebPageProxy::selectTextWithGranularityAtPoint): |
| (WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection): |
| (WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection): |
| (WebKit::WebPageProxy::selectPositionAtPoint): |
| (WebKit::WebPageProxy::beginSelectionInDirection): |
| (WebKit::WebPageProxy::updateSelectionWithExtentPoint): |
| (WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary): |
| (WebKit::WebPageProxy::requestDictationContext): |
| (WebKit::WebPageProxy::requestAutocorrectionContext): |
| (WebKit::WebPageProxy::getSelectionContext): |
| (WebKit::WebPageProxy::handleTwoFingerTapAtPoint): |
| (WebKit::WebPageProxy::handleStylusSingleTapAtPoint): |
| (WebKit::WebPageProxy::selectWithTwoTouches): |
| (WebKit::WebPageProxy::requestPositionInformation): |
| (WebKit::WebPageProxy::startInteractionWithElementAtPosition): |
| (WebKit::WebPageProxy::stopInteraction): |
| (WebKit::WebPageProxy::performActionOnElement): |
| (WebKit::WebPageProxy::applicationDidEnterBackground): |
| (WebKit::WebPageProxy::applicationDidFinishSnapshottingAfterEnteringBackground): |
| (WebKit::WebPageProxy::applicationWillEnterForeground): |
| (WebKit::WebPageProxy::applicationWillResignActive): |
| (WebKit::WebPageProxy::applicationDidBecomeActive): |
| (WebKit::WebPageProxy::extendSelection): |
| (WebKit::WebPageProxy::selectWordBackward): |
| (WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset): |
| (WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText): |
| (WebKit::WebPageProxy::storeSelectionForAccessibility): |
| (WebKit::WebPageProxy::startAutoscrollAtPosition): |
| (WebKit::WebPageProxy::cancelAutoscroll): |
| (WebKit::WebPageProxy::moveSelectionByOffset): |
| (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::autofillLoginCredentials): |
| (WebKit::WebPageProxy::focusNextFocusedElement): |
| (WebKit::WebPageProxy::setFocusedElementValue): |
| (WebKit::WebPageProxy::setFocusedElementValueAsNumber): |
| (WebKit::WebPageProxy::setFocusedElementSelectedIndex): |
| (WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF): |
| (WebKit::WebPageProxy::contentSizeCategoryDidChange): |
| (WebKit::WebPageProxy::generateSyntheticEditingCommand): |
| (WebKit::WebPageProxy::hardwareKeyboardAvailabilityChanged): |
| (WebKit::WebPageProxy::requestEvasionRectsAboveSelection): |
| (WebKit::WebPageProxy::updateSelectionWithDelta): |
| (WebKit::WebPageProxy::requestDocumentEditingContext): |
| (WebKit::WebPageProxy::requestDragStart): |
| (WebKit::WebPageProxy::requestAdditionalItemsForDragSession): |
| (WebKit::WebPageProxy::didConcludeDrop): |
| (WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrameShared): |
| * UIProcess/mac/RemoteWebInspectorProxyMac.mm: |
| (WebKit::RemoteWebInspectorProxy::platformSave): |
| (WebKit::RemoteWebInspectorProxy::platformAppend): |
| * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm: |
| (WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState): |
| * UIProcess/mac/ViewGestureControllerMac.mm: |
| (WebKit::ViewGestureController::handleMagnificationGestureEvent): |
| (WebKit::ViewGestureController::handleSmartMagnificationGesture): |
| * UIProcess/mac/WKImmediateActionController.mm: |
| (-[WKImmediateActionController immediateActionRecognizerWillBeginAnimation:]): |
| * UIProcess/mac/WebInspectorProxyMac.mm: |
| (WebKit::WebInspectorProxy::platformSave): |
| (WebKit::WebInspectorProxy::platformAppend): |
| * UIProcess/mac/WebPageProxyMac.mm: |
| (WebKit::WebPageProxy::windowAndViewFramesChanged): |
| (WebKit::WebPageProxy::setMainFrameIsScrollable): |
| (WebKit::WebPageProxy::insertDictatedTextAsync): |
| (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): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-29 Chris Dumez <cdumez@apple.com> |
| |
| Use inline data member initialization in ProcessLauncher |
| https://bugs.webkit.org/show_bug.cgi?id=201247 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * UIProcess/Launcher/ProcessLauncher.cpp: |
| (WebKit::ProcessLauncher::ProcessLauncher): |
| * UIProcess/Launcher/ProcessLauncher.h: |
| |
| 2019-08-28 Tim Horton <timothy_horton@apple.com> |
| |
| Reloading a web view with a fixed-width viewport and variable content width restores the previous page scale, shouldn't |
| https://bugs.webkit.org/show_bug.cgi?id=201256 |
| <rdar://problem/54809509> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::restorePageState): |
| When restoring page state from a history item, if the saved scale was equal to the |
| initial scale at the time it was saved, ignore the saved scale and use the current |
| initial scale instead. |
| |
| Normally this doesn't matter because a given page's initial scale doesn't usually change |
| between loads, but it totally can! See the test for one example of a way an API client |
| might cause this; you could also imagine something similar happening if the actual |
| page content changed. |
| |
| 2019-08-28 Megan Gardner <megan_gardner@apple.com> |
| |
| Null check webFrame when creating a print preview to prevent a crash. |
| https://bugs.webkit.org/show_bug.cgi?id=201237 |
| <rdar://problem/51618863> |
| |
| Reviewed by Tim Horton. |
| |
| Move and expend a null check to keep from crashing when making a print preview. |
| |
| * UIProcess/mac/WKPrintingView.mm: |
| (-[WKPrintingView _drawPreview:]): |
| (-[WKPrintingView drawRect:]): |
| |
| 2019-08-28 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| All image drawing functions should take an argument of type ImagePaintingOptions |
| https://bugs.webkit.org/show_bug.cgi?id=201059 |
| |
| Reviewed by Simon Fraser. |
| |
| GraphicsContext::drawImage() now takes an ImagePaintingOptions. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::imagePositionInformation): |
| |
| 2019-08-28 Keith Rollin <krollin@apple.com> |
| |
| Remove support for macOS < 10.13 (part 2) |
| https://bugs.webkit.org/show_bug.cgi?id=201197 |
| <rdar://problem/54759985> |
| |
| Reviewed by Darin Adler. |
| |
| Update conditionals that reference WK_MACOS_1013 and suffixes like |
| _MACOS_SINCE_1013, assuming that we're always building on 10.13 or |
| later and that these conditionals are always True or False. |
| |
| See Bug 200694 for earlier changes in this area. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * Configurations/WebKit.xcconfig: |
| |
| 2019-08-28 Chris Dumez <cdumez@apple.com> |
| |
| Have WebPageProxy generate the page identifier by itself |
| https://bugs.webkit.org/show_bug.cgi?id=201223 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Have WebPageProxy generate the page identifier by itself instead of |
| having the WebProcessProxy do it. |
| |
| * UIProcess/ServiceWorkerProcessProxy.cpp: |
| (WebKit::m_serviceWorkerPageID): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::create): |
| (WebKit::WebPageProxy::WebPageProxy): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::createWebPage): |
| (WebKit::WebProcessProxy::generatePageID): Deleted. |
| * UIProcess/WebProcessProxy.h: |
| |
| 2019-08-28 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r243434): Wrong URL passed to WebKitWebView::load-failed when cancelling previous load |
| https://bugs.webkit.org/show_bug.cgi?id=201176 |
| |
| Reviewed by Žan Doberšek. |
| |
| Use the current provisional/committed url when faking an error event, instead of the current active URI that can |
| be the pending api request of a new load. |
| |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkitWebViewWillStartLoad): |
| |
| 2019-08-28 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GTK][WPE] Implement HSTS for the soup network backend |
| https://bugs.webkit.org/show_bug.cgi?id=192074 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| libsoup 2.67.1 introduced HSTS support via a SoupSessionFeature. |
| Add support to the soup network backend by adding the feature to |
| SoupNetworkSession and handling HSTS protocol upgrades, by |
| propagating the scheme change further to clients. This patch adds |
| the HSTS feature unconditionally, but it still possible to add |
| a boolean property to the web context class if desired. |
| |
| Additionally, add API to the WebKitWebsiteDataManager to specify |
| the directory where the HSTS database is saved. If the directory |
| is not set or if the data manager is ephemeral, use a |
| non-persistent, memory only HSTS enforcer. |
| |
| Implement as well the methods needed to clean-up and delete HSTS |
| policies from the storage and expose the feature in GTK+ |
| MiniBrowser's about:data. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::suppressesConnectionTerminationOnSystemChange const): |
| * NetworkProcess/soup/NetworkDataTaskSoup.cpp: |
| (WebKit::NetworkDataTaskSoup::createRequest): |
| (WebKit::NetworkDataTaskSoup::clearRequest): |
| (WebKit::NetworkDataTaskSoup::shouldAllowHSTSPolicySetting const): |
| (WebKit::NetworkDataTaskSoup::shouldAllowHSTSProtocolUpgrade const): |
| (WebKit::NetworkDataTaskSoup::protocolUpgradedViaHSTS): |
| (WebKit::NetworkDataTaskSoup::hstsEnforced): |
| * NetworkProcess/soup/NetworkDataTaskSoup.h: |
| * NetworkProcess/soup/NetworkProcessSoup.cpp: |
| (WebKit::NetworkProcess::getHostNamesWithHSTSCache): |
| (WebKit::NetworkProcess::deleteHSTSCacheForHostNames): |
| (WebKit::NetworkProcess::clearHSTSCache): |
| (WebKit::NetworkProcess::platformInitializeNetworkProcess): |
| * UIProcess/API/APIWebsiteDataStore.h: |
| * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp: |
| (API::WebsiteDataStore::defaultHSTSDirectory): |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextConstructed): |
| * UIProcess/API/glib/WebKitWebsiteData.cpp: |
| (recordContainsSupportedDataTypes): |
| (toWebKitWebsiteDataTypes): |
| * UIProcess/API/glib/WebKitWebsiteDataManager.cpp: |
| (webkitWebsiteDataManagerGetProperty): |
| (webkitWebsiteDataManagerSetProperty): |
| (webkitWebsiteDataManagerConstructed): |
| (webkit_website_data_manager_class_init): |
| (webkitWebsiteDataManagerGetDataStore): |
| (webkit_website_data_manager_get_hsts_cache_directory): |
| (toWebsiteDataTypes): |
| * UIProcess/API/gtk/WebKitWebsiteData.h: |
| * UIProcess/API/gtk/WebKitWebsiteDataManager.h: |
| * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: |
| * UIProcess/API/wpe/WebKitWebsiteData.h: |
| * UIProcess/API/wpe/WebKitWebsiteDataManager.h: |
| * UIProcess/API/wpe/docs/wpe-1.0-sections.txt: |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::hstsStorageDirectory const): |
| (WebKit::WebsiteDataStoreConfiguration::setHSTSStorageDirectory): |
| |
| 2019-08-27 Mark Lam <mark.lam@apple.com> |
| |
| Refactor to use VM& instead of VM* at as many places as possible. |
| https://bugs.webkit.org/show_bug.cgi?id=201172 |
| |
| Reviewed by Yusuke Suzuki. |
| |
| * WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMNode.cpp: |
| (webkit_dom_node_for_js_value): |
| * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: |
| (WebKit::InjectedBundleNodeHandle::getOrCreate): |
| * WebProcess/Plugins/Netscape/JSNPObject.cpp: |
| (WebKit::JSNPObject::getOwnPropertyNames): |
| * WebProcess/Plugins/Netscape/NPJSObject.cpp: |
| (WebKit::identifierFromIdentifierRep): |
| (WebKit::NPJSObject::enumerate): |
| * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: |
| (WebKit::NPRuntimeObjectMap::convertNPVariantToJSValue): |
| (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::counterValue): |
| |
| 2019-08-27 James Savage <james.savage@apple.com> |
| |
| Populate alternate URL for _WKActivatedElementInfo in UIContextMenu SPI. |
| https://bugs.webkit.org/show_bug.cgi?id=201165. |
| rdar://problem/54729648. |
| |
| Reviewed by Dean Jackson. |
| |
| * UIProcess/API/APIContextMenuElementInfo.h: |
| * UIProcess/API/APIContextMenuElementInfo.cpp: |
| (API::ContextMenuElementInfo::ContextMenuElementInfo): Initialize new memeber. |
| |
| * UIProcess/API/Cocoa/WKContextMenuElementInfo.mm: |
| (-[WKContextMenuElementInfo _activatedElementInfo]): Use new initializer. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _requestActivatedElementAtPosition:completionBlock:]): Ditto. |
| |
| * UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h: |
| * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm: |
| (+[_WKActivatedElementInfo activatedElementInfoWithInteractionInformationAtPosition:userInfo:]): |
| Ditto. |
| (-[_WKActivatedElementInfo _initWithInteractionInformationAtPosition:userInfo:]): Set new ivar. |
| (+[_WKActivatedElementInfo activatedElementInfoWithInteractionInformationAtPosition:]): Deleted. |
| (-[_WKActivatedElementInfo _initWithInteractionInformationAtPosition:]): Deleted. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView assignLegacyDataForContextMenuInteraction]): Use new initializer. |
| (-[WKContentView continueContextMenuInteraction:]): If the context menu is being generated for |
| an image, and we do not have a URL associated with the position information, try to |
| generate one using existing SPI. This change also passes through the userInfo via a new |
| property on _WKActivatedElementInfo. We only do this for the SPI version of this delegate |
| method, because the API is not called for image previews. |
| (-[WKContentView _contextMenuInteraction:overrideSuggestedActionsForConfiguration:]): Use new |
| initializer. |
| |
| 2019-08-27 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| [RemoteInspector][Socket] Restructuring the components of Socket implementation |
| https://bugs.webkit.org/show_bug.cgi?id=201079 |
| |
| Reviewed by Ross Kirsling. |
| |
| RemoteInspectorClient is now free from creation of SocketEndpoint. All communication |
| to SocketEndpoint id now the duty of super class. |
| |
| * UIProcess/socket/RemoteInspectorClient.cpp: |
| (WebKit::RemoteInspectorClient::RemoteInspectorClient): Remove direct communication to Socket Endpoint. |
| (WebKit::RemoteInspectorClient::sendWebInspectorEvent): Ditto. |
| * UIProcess/socket/RemoteInspectorClient.h: |
| |
| 2019-08-27 Chris Dumez <cdumez@apple.com> |
| |
| Introduce subclasses to RemoteObjectRegistry for the UIProcess and the WebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=201153 |
| |
| Reviewed by Alex Christensen. |
| |
| This better factoring improves code clarity. |
| |
| * PlatformMac.cmake: |
| * Shared/API/Cocoa/RemoteObjectRegistry.h: |
| (WebKit::RemoteObjectRegistry::~RemoteObjectRegistry): |
| (WebKit::RemoteObjectRegistry::takeBackgroundActivityToken): |
| * Shared/API/Cocoa/RemoteObjectRegistry.mm: |
| (WebKit::RemoteObjectRegistry::RemoteObjectRegistry): |
| (WebKit::RemoteObjectRegistry::sendInvocation): |
| (WebKit::RemoteObjectRegistry::sendReplyBlock): |
| (WebKit::RemoteObjectRegistry::sendUnusedReply): |
| * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: |
| (-[_WKRemoteObjectRegistry _initWithWebPage:]): |
| (-[_WKRemoteObjectRegistry _initWithWebPageProxy:]): |
| * SourcesCocoa.txt: |
| * UIProcess/Cocoa/UIRemoteObjectRegistry.cpp: Added. |
| (WebKit::UIRemoteObjectRegistry::takeBackgroundActivityToken): |
| (WebKit::UIRemoteObjectRegistry::UIRemoteObjectRegistry): |
| (WebKit::UIRemoteObjectRegistry::sendInvocation): |
| (WebKit::UIRemoteObjectRegistry::messageSender): |
| * UIProcess/Cocoa/UIRemoteObjectRegistry.h: Added. |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: |
| (WebKit::WebPage::setRemoteObjectRegistry): |
| (WebKit::WebPage::remoteObjectRegistry): |
| * WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.cpp: Added. |
| (WebKit::WebRemoteObjectRegistry::WebRemoteObjectRegistry): |
| (WebKit::WebRemoteObjectRegistry::~WebRemoteObjectRegistry): |
| (WebKit::WebRemoteObjectRegistry::close): |
| (WebKit::WebRemoteObjectRegistry::messageSender): |
| * WebProcess/WebPage/Cocoa/WebRemoteObjectRegistry.h: Added. |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::close): |
| * WebProcess/WebPage/WebPage.h: |
| |
| 2019-08-26 Jer Noble <jer.noble@apple.com> |
| |
| Removing fullscreen element in rAF() callback after requestFullscreen() can leave fullscreen in inconsistent state. |
| https://bugs.webkit.org/show_bug.cgi?id=201101 |
| <rdar://problem/54164587> |
| |
| Reviewed by Eric Carlson. |
| |
| Add more state to track in which direction the animation is flowing to allow in-process |
| animations to be cancelled more gracefully. |
| |
| * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: |
| (-[WKFullScreenWindowController enterFullScreen]): |
| (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]): |
| (-[WKFullScreenWindowController requestExitFullScreen]): |
| (-[WKFullScreenWindowController exitFullScreen]): |
| * WebProcess/cocoa/VideoFullscreenManager.h: |
| (WebKit::VideoFullscreenInterfaceContext::animationState const): |
| (WebKit::VideoFullscreenInterfaceContext::setAnimationState): |
| (WebKit::VideoFullscreenInterfaceContext::isAnimating const): Deleted. |
| (WebKit::VideoFullscreenInterfaceContext::setIsAnimating): Deleted. |
| * WebProcess/cocoa/VideoFullscreenManager.mm: |
| (WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement): |
| (WebKit::VideoFullscreenManager::exitVideoFullscreenForVideoElement): |
| (WebKit::VideoFullscreenManager::didEnterFullscreen): |
| (WebKit::VideoFullscreenManager::didCleanupFullscreen): |
| |
| 2019-08-27 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Do not clear the pending api request when there's no navigation ID |
| https://bugs.webkit.org/show_bug.cgi?id=201175 |
| |
| Reviewed by Chris Dumez. |
| |
| After r247851, the pending API request URL is cleared for subresources in some cases. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| |
| 2019-08-27 Zan Dobersek <zdobersek@igalia.com> |
| |
| [CoordGraphics] Delay LayerTreeHost creation in always-on AC until DrawingArea painting is enabled |
| https://bugs.webkit.org/show_bug.cgi?id=201178 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| When in always-on AC mode, the LayerTreeHost spawning should be delayed |
| until the WebPage construction (which sets up the LayerTreeHost-owning |
| DrawingArea implementation) is further done with initializing relevant |
| state, and not immediately after the DrawingArea is done with preference |
| updates. |
| |
| This is necessary in order to enable the LayerTreeHost instance to take |
| into account additional WebPage-creation attributes like the correct |
| device scale factor. Until now, when the LayerTreeHost was spawned in |
| always-on AC mode, the device scale factor was not yet updated in the |
| WebPage construction to the appropriate value, leaving the LayerTreeHost |
| with the default 1.0 value instead of the intended one. |
| |
| DrawingArea::setPaintingEnabled() is repurposed into enablePainting() |
| that is to be called once everything should be set for painting (i.e. |
| when setPaintingEnabled(true) was being called until now). Inside the |
| DrawingAreaProxyCoordinatedGraphics class (only one to provide an |
| implementation for this method), the LayerTreeHost is now spawned if |
| in always-on AC mode. At this point, all relevant state coming from |
| the owning WebPage object should be readily available for the host |
| to correctly set up initial graphics scene. |
| |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::updatePreferences): |
| (WebKit::DrawingAreaCoordinatedGraphics::enablePainting): |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h: |
| * WebProcess/WebPage/DrawingArea.h: |
| (WebKit::DrawingArea::enablePainting): |
| (WebKit::DrawingArea::setPaintingEnabled): Deleted. |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| (WebKit::WebPage::reinitializeWebPage): |
| |
| 2019-08-26 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: use more C++ keywords for defining agents |
| https://bugs.webkit.org/show_bug.cgi?id=200959 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| - make constructors `protected` when the agent isn't meant to be constructed directly |
| - add `virtual` destructors that are defined in the *.cpp so forward-declarations work |
| - use `final` wherever possible |
| - add comments to indicate where any virtual functions come from |
| |
| * UIProcess/WebPageInspectorTargetAgent.h: |
| * UIProcess/WebPageInspectorTargetAgent.cpp: |
| |
| 2019-08-26 Chris Dumez <cdumez@apple.com> |
| |
| Regression: ITP started doing a lot more IPC after its logic was moved to the network process |
| https://bugs.webkit.org/show_bug.cgi?id=201155 |
| |
| Reviewed by John Wilander. |
| |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::initializeWebProcess): |
| |
| 2019-08-26 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| REGRESSION (iOS 13): Tests that simulate multiple back-to-back single taps fail or time out |
| https://bugs.webkit.org/show_bug.cgi?id=201129 |
| <rdar://problem/51857277> |
| |
| Reviewed by Tim Horton. |
| |
| Adds a new SPI hook in WebKit to let clients know when a synthetic tap gesture that has ended has been reset. |
| See Tools/ChangeLog and LayoutTests/ChangeLog for more details. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _doAfterResettingSingleTapGesture:]): |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _singleTapDidReset:]): |
| (-[WKContentView _doAfterResettingSingleTapGesture:]): |
| |
| 2019-08-26 Brent Fulgham <bfulgham@apple.com> |
| |
| [FTW] Go back to ID2D1Bitmap as our NativeImage type |
| https://bugs.webkit.org/show_bug.cgi?id=201122 |
| |
| Reviewed by Alex Christensen. |
| |
| In Bug 200093 I switched the OS type of NativeImagePtr from ID2D1Bitmap to IWICBitmap. |
| However, this was an ill-advised approach, because it dramatically harmed performance due |
| to the heavy use of software rendering. |
| |
| I originally made this change because I thought this was the only way to get to the backing |
| bits of the bitmaps, but it turns out that a more recent Direct2D data type (ID2D1Bitmap1) |
| has the ability to map its memory to CPU-accessible memory, allowing software filter effects. |
| |
| This patch switches back to the ID2D1Bitap data type, and hooks up the ID2D1Bitmap1 data type |
| to access the underlying memory of the bitmaps when software filter effects are used. |
| |
| Reviewed by Alex Christensen. |
| |
| * Shared/ShareableBitmap.h: |
| * Shared/win/ShareableBitmapDirect2D.cpp: |
| * UIProcess/win/BackingStoreDirect2D.cpp: |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| |
| 2019-08-26 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Support HID authenticators on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=201084 |
| <rdar://problem/51908390> |
| |
| Reviewed by Youenn Fablet. |
| |
| This patch makes the macOS HID implementation available in iOS as well. |
| Mostly, it removes the PLATFORM(MAC) compile time flag. |
| |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| (WebKit::AuthenticatorManagerInternal::collectTransports): |
| * UIProcess/WebAuthentication/AuthenticatorTransportService.cpp: |
| (WebKit::AuthenticatorTransportService::create): |
| (WebKit::AuthenticatorTransportService::createMock): |
| * UIProcess/WebAuthentication/Cocoa/HidConnection.h: |
| * UIProcess/WebAuthentication/Cocoa/HidConnection.mm: |
| * UIProcess/WebAuthentication/Cocoa/HidService.h: |
| * UIProcess/WebAuthentication/Cocoa/HidService.mm: |
| * UIProcess/WebAuthentication/Cocoa/NfcConnection.mm: |
| (WebKit::NfcConnection::NfcConnection): |
| A tentative solution before there is an official UI. |
| * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp: |
| * UIProcess/WebAuthentication/Mock/MockHidConnection.h: |
| * UIProcess/WebAuthentication/Mock/MockHidService.cpp: |
| * UIProcess/WebAuthentication/Mock/MockHidService.h: |
| * UIProcess/WebAuthentication/fido/CtapHidDriver.cpp: |
| * UIProcess/WebAuthentication/fido/CtapHidDriver.h: |
| |
| 2019-08-26 Russell Epstein <repstein@apple.com> |
| |
| Unreviewed, rolling out r248961. |
| |
| Same patch was re-landed after being rolled out. Patch is |
| causing Catalina/iOS 13 test failures. Rolling out. |
| |
| Reverted changeset: |
| |
| "Verify Prefetch and credential behavior" |
| https://bugs.webkit.org/show_bug.cgi?id=200000 |
| https://trac.webkit.org/changeset/248961 |
| |
| 2019-08-26 Youenn Fablet <youenn@apple.com> |
| |
| Add a WebsiteDataStore delegate to handle AuthenticationChallenge that do not come from pages |
| https://bugs.webkit.org/show_bug.cgi?id=196870 |
| |
| Reviewed by Alex Christensen. |
| |
| Make NetworkProcess provide the session ID for any authentication challenge. |
| In case there is no associated page for the authentication challenge or this is related to a service worker, |
| ask the website data store to take a decision. |
| Add website data store delegate to allow applications to make the decision. |
| Restrict using the delegate to server trust evaluation only. |
| |
| Make ping loads reuse the same mechanism. |
| |
| Covered by service worker tests and updated beacon test. |
| |
| * NetworkProcess/NetworkCORSPreflightChecker.cpp: |
| (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge): |
| * NetworkProcess/NetworkDataTask.cpp: |
| (WebKit::NetworkDataTask::sessionID const): |
| * NetworkProcess/NetworkDataTask.h: |
| * NetworkProcess/NetworkLoad.cpp: |
| (WebKit::NetworkLoad::didReceiveChallenge): |
| * NetworkProcess/NetworkLoadChecker.h: |
| (WebKit::NetworkLoadChecker::networkProcess): |
| * NetworkProcess/PingLoad.cpp: |
| (WebKit::PingLoad::didReceiveChallenge): |
| * Shared/Authentication/AuthenticationManager.cpp: |
| (WebKit::AuthenticationManager::didReceiveAuthenticationChallenge): |
| * Shared/Authentication/AuthenticationManager.h: |
| * Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.h: Copied from Tools/WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.h. |
| * Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.mm: Copied from Source/WebKit/Shared/Authentication/cocoa/ClientCertificateAuthenticationXPCConstants.h. |
| (WebKit::toAuthenticationChallengeDisposition): |
| * SourcesCocoa.txt: |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (WebsiteDataStoreClient::WebsiteDataStoreClient): |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h: |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/ServiceWorkerProcessProxy.cpp: |
| * UIProcess/ServiceWorkerProcessProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::isServiceWorkerPageID const): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/WebsiteDataStoreClient.h: |
| (WebKit::WebsiteDataStoreClient::didReceiveAuthenticationChallenge): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-25 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2] Make a strongly-typed TransactionID to replace uint64_t transactionIDs |
| https://bugs.webkit.org/show_bug.cgi?id=199983 |
| |
| Reviewed by Dean Jackson. |
| |
| Add TransactionID which is a MonotonicObjectIdentifier<TransactionIDType>. This is modeled |
| after ObjectIdentifier<>, but we can't use that because it doesn't have a guarantee of |
| values always increasing by 1 (all derived classes share the same value source). Also, we |
| need a per-RemoteLayerTreeDrawingArea set of values, but a static seed would cause values to |
| be incremented by all RemoteLayerTreeDrawingAreas in a WebProcess. |
| |
| Replace all the bare uint64_t with TransactionID, fixing message generation codegen. |
| |
| * Scripts/webkit/messages.py: |
| * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h: |
| (WebKit::RemoteLayerTreeTransaction::transactionID const): |
| (WebKit::RemoteLayerTreeTransaction::setTransactionID): |
| * Shared/TransactionID.h: Added. |
| (WebKit::MonotonicObjectIdentifier::MonotonicObjectIdentifier): |
| (WebKit::MonotonicObjectIdentifier::isHashTableDeletedValue const): |
| (WebKit::MonotonicObjectIdentifier::encode const): |
| (WebKit::MonotonicObjectIdentifier::decode): |
| (WebKit::MonotonicObjectIdentifier::operator== const): |
| (WebKit::MonotonicObjectIdentifier::operator> const): |
| (WebKit::MonotonicObjectIdentifier::operator>= const): |
| (WebKit::MonotonicObjectIdentifier::operator< const): |
| (WebKit::MonotonicObjectIdentifier::operator<= const): |
| (WebKit::MonotonicObjectIdentifier::operator!= const): |
| (WebKit::MonotonicObjectIdentifier::increment): |
| (WebKit::MonotonicObjectIdentifier::next const): |
| (WebKit::MonotonicObjectIdentifier::toUInt64 const): |
| (WebKit::MonotonicObjectIdentifier::operator bool const): |
| (WebKit::MonotonicObjectIdentifier::loggingString const): |
| (WebKit::MonotonicObjectIdentifier::hashTableDeletedValue): |
| (WebKit::MonotonicObjectIdentifier::isValidIdentifier): |
| (WebKit::operator<<): |
| * Shared/VisibleContentRectUpdateInfo.h: |
| (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo): |
| (WebKit::VisibleContentRectUpdateInfo::lastLayerTreeTransactionID const): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _processWillSwapOrDidExit]): |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h: |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in: |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::willCommitLayerTree): |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::resetState): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView cleanupInteraction]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::commitPotentialTap): |
| (WebKit::WebPageProxy::handleTap): |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: |
| (WebKit::RemoteLayerTreeDrawingArea::nextTransactionID const): |
| (WebKit::RemoteLayerTreeDrawingArea::lastCommittedTransactionID const): |
| (WebKit::RemoteLayerTreeDrawingArea::takeNextTransactionID): |
| * WebProcess/WebPage/WebFrame.h: |
| (WebKit::WebFrame::firstLayerTreeTransactionIDAfterDidCommitLoad const): |
| (WebKit::WebFrame::setFirstLayerTreeTransactionIDAfterDidCommitLoad): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleTap): |
| (WebKit::WebPage::handlePotentialDoubleTapForDoubleClickAtPoint): |
| (WebKit::WebPage::commitPotentialTap): |
| |
| 2019-08-24 Chris Dumez <cdumez@apple.com> |
| |
| Make CacheStorageEngineCaches's decodeCachesNames() more robust against bad input data |
| https://bugs.webkit.org/show_bug.cgi?id=201102 |
| |
| Reviewed by Antti Koivisto. |
| |
| Use Vector::tryReserveCapacity() instead of Vector::reserveInitialCapacity() in CacheStorage::decodeCachesNames() |
| since the size is read from disk and thus cannot be trusted. If the size is too large, reserveInitialCapacity() |
| would end up crashing the network process. Now, we merely discard the data if tryReserveCapacity() fails because |
| the size is too large. |
| |
| * NetworkProcess/cache/CacheStorageEngineCaches.cpp: |
| (WebKit::CacheStorage::decodeCachesNames): |
| |
| 2019-08-23 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] [WebKit2] Tapping on the “I’m” text suggestion after typing “i’” does nothing |
| https://bugs.webkit.org/show_bug.cgi?id=201085 |
| <rdar://problem/53056118> |
| |
| Reviewed by Tim Horton. |
| |
| Currently, logic in applyAutocorrectionInternal only selects the range to autocorrect if the text of the range |
| matches the string to replace (delivered to us from UIKit). In the case of changing "I’" to "I’m", the string to |
| replace is "I'" (with a straight quote rather than an apostrophe), even though the DOM contains an apostrophe. |
| |
| This is because kbd believes that the document context contains straight quotes (rather than apostrophes). For |
| native text views, this works out because UIKit uses relative UITextPositions to determine the replacement |
| range rather than by checking against the contents of the document. However, WKWebView does not have the ability |
| to synchronously compute and reason about arbitrary UITextPositions relative to the selection, so we instead |
| search for the string near the current selection when applying autocorrections. |
| |
| Of course, this doesn't work in this scenario because the replacement string contains a straight quote, yet the |
| text node contains an apostrophe, so we bail and don't end up replacing any text. To address this, we repurpose |
| TextIterator helpers currently used to allow find-in-page to match straight quotes against apostrophes; instead |
| of matching the replacement string exactly, we instead match the quote-folded versions of these strings when |
| finding the range to replace. |
| |
| Test: fast/events/ios/autocorrect-with-apostrophe.html |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::applyAutocorrectionInternal): |
| |
| 2019-08-23 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Unreviewed, build fix after r249059 |
| |
| * UIProcess/WebAuthentication/Cocoa/NfcConnection.mm: |
| (WebKit::NfcConnection::NfcConnection): |
| Remove the HAVE() macro. |
| |
| 2019-08-23 Chris Dumez <cdumez@apple.com> |
| |
| [geolocation] Rename interfaces and remove [NoInterfaceObject] |
| https://bugs.webkit.org/show_bug.cgi?id=200885 |
| |
| Reviewed by Alex Christensen. |
| |
| * Shared/WebGeolocationPosition.cpp: |
| (WebKit::WebGeolocationPosition::create): |
| * Shared/WebGeolocationPosition.h: |
| (WebKit::WebGeolocationPosition::corePosition const): |
| (WebKit::WebGeolocationPosition::WebGeolocationPosition): |
| * UIProcess/API/C/WKGeolocationPosition.cpp: |
| (WKGeolocationPositionCreate_c): |
| * UIProcess/WebGeolocationManagerProxy.h: |
| (WebKit::WebGeolocationManagerProxy::lastPosition const): |
| * UIProcess/ios/WKGeolocationProviderIOS.mm: |
| (-[WKLegacyCoreLocationProvider positionChanged:]): |
| * WebProcess/Geolocation/WebGeolocationManager.cpp: |
| (WebKit::WebGeolocationManager::didChangePosition): |
| * WebProcess/Geolocation/WebGeolocationManager.h: |
| * WebProcess/Geolocation/WebGeolocationManager.messages.in: |
| * WebProcess/WebCoreSupport/WebGeolocationClient.cpp: |
| (WebKit::WebGeolocationClient::lastPosition): |
| * WebProcess/WebCoreSupport/WebGeolocationClient.h: |
| |
| 2019-08-23 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r249001. |
| |
| Caused one layout test to fail on all configurations and |
| another to time out on Catalina / iOS 13. |
| |
| Reverted changeset: |
| |
| "Add a WebsiteDataStore delegate to handle |
| AuthenticationChallenge that do not come from pages" |
| https://bugs.webkit.org/show_bug.cgi?id=196870 |
| https://trac.webkit.org/changeset/249001 |
| |
| 2019-08-23 Brian Burg <bburg@apple.com> |
| |
| REGRESSION(r248713): WebDriver commands which target the implicit main frame now hit an ASSERT |
| https://bugs.webkit.org/show_bug.cgi?id=200793 |
| <rdar://problem/54516988> |
| |
| Reviewed by Chris Dumez. |
| |
| SimulatedInputDispatcher and its callers need to support Optional<FrameIdentifier> |
| and WTF::nullopt as an encoding for the implicit main frame. |
| |
| * UIProcess/Automation/SimulatedInputDispatcher.h: |
| * UIProcess/Automation/SimulatedInputDispatcher.cpp: |
| (WebKit::SimulatedInputDispatcher::resolveLocation): |
| (WebKit::SimulatedInputDispatcher::run): |
| |
| * UIProcess/Automation/WebAutomationSession.h: |
| * UIProcess/Automation/WebAutomationSession.cpp: |
| (WebKit::WebAutomationSession::viewportInViewCenterPointOfElement): |
| (WebKit::WebAutomationSession::performInteractionSequence): |
| (WebKit::WebAutomationSession::cancelInteractionSequence): |
| |
| 2019-08-20 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Support NFC authenticators for iOS |
| https://bugs.webkit.org/show_bug.cgi?id=188624 |
| <rdar://problem/43354214> |
| |
| Reviewed by Chris Dumez. |
| |
| This patch implements support for NFC authenticators including both FIDO2 and U2F ones. It utilizes a private |
| framework called NearField instead of CoreNFC to be able to supply a custom UI later if necessary. |
| |
| The patch follows almost the same flow as previous HID and Local authenticator support. |
| 1) Discovery is via NfcService which will invoke NFHardwareManager to start a generic NFC reader session. |
| 2) Once a reader session is established, a NfcConnection is created to start the polling and register the WKNFReaderSessionDelegate |
| to wait for 'didDetectTags'. |
| 3) When tags are detected, NfcConnection will determine if it meets our requriements: { type, connectability, fido applet availability }. |
| The first tag that meets all requirement will then be returned for WebAuthn operations. |
| 4) The first WebAuthn operation is to send authenticatorGetInfo command to determine the supported protocol, and then initialize corresponding |
| authenticators. Noted, the sending/receiving of this command is now abstracted into FidoService which will be shared across HidService and NfcService. |
| 5) From then, the actual WebAuthn request, either makeCredential or getAssertion will be sent. |
| |
| For testing, this patch follows the same flow as well. |
| 1) MockNfcService overrides NfcService to mock the behavior of NFC Tags discovery. |
| 2) The same class also swizzles methods from NFReaderSession to mock tag connection and communication. |
| |
| * Platform/spi/Cocoa/NearFieldSPI.h: Added. |
| * Sources.txt: |
| * SourcesCocoa.txt: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreSetWebAuthenticationMockConfiguration): |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| (WebKit::AuthenticatorManagerInternal::collectTransports): |
| * UIProcess/WebAuthentication/AuthenticatorTransportService.cpp: |
| (WebKit::AuthenticatorTransportService::create): |
| (WebKit::AuthenticatorTransportService::createMock): |
| * UIProcess/WebAuthentication/Cocoa/HidService.h: |
| * UIProcess/WebAuthentication/Cocoa/HidService.mm: |
| (WebKit::HidService::HidService): |
| (WebKit::HidService::deviceAdded): |
| (WebKit::HidService::continueAddDeviceAfterGetInfo): Deleted. |
| * UIProcess/WebAuthentication/Cocoa/NearFieldSoftLink.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.h. |
| * UIProcess/WebAuthentication/Cocoa/NearFieldSoftLink.mm: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.h. |
| * UIProcess/WebAuthentication/Cocoa/NfcConnection.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.h. |
| * UIProcess/WebAuthentication/Cocoa/NfcConnection.mm: Added. |
| (WebKit::fido::compareVersion): |
| (WebKit::NfcConnection::NfcConnection): |
| (WebKit::NfcConnection::~NfcConnection): |
| (WebKit::NfcConnection::transact const): |
| (WebKit::NfcConnection::didDetectTags const): |
| * UIProcess/WebAuthentication/Cocoa/NfcService.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.h. |
| * UIProcess/WebAuthentication/Cocoa/NfcService.mm: Added. |
| (WebKit::NfcService::NfcService): |
| (WebKit::NfcService::~NfcService): |
| (WebKit::NfcService::didConnectTag): |
| (WebKit::NfcService::startDiscoveryInternal): |
| (WebKit::NfcService::platformStartDiscovery): |
| * UIProcess/WebAuthentication/Cocoa/WKNFReaderSessionDelegate.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.h. |
| * UIProcess/WebAuthentication/Cocoa/WKNFReaderSessionDelegate.mm: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.h. |
| (-[WKNFReaderSessionDelegate initWithConnection:]): |
| (-[WKNFReaderSessionDelegate readerSession:didDetectTags:]): |
| * UIProcess/WebAuthentication/Mock/MockHidConnection.cpp: |
| (WebKit::MockHidConnection::send): |
| (WebKit::MockHidConnection::registerDataReceivedCallbackInternal): |
| (WebKit::MockHidConnection::parseRequest): |
| (WebKit::MockHidConnection::feedReports): |
| (WebKit::MockHidConnection::shouldContinueFeedReports): |
| * UIProcess/WebAuthentication/Mock/MockNfcService.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.h. |
| * UIProcess/WebAuthentication/Mock/MockNfcService.mm: Added. |
| (-[WKMockNFTag type]): |
| (-[WKMockNFTag initWithNFTag:]): |
| (-[WKMockNFTag description]): |
| (-[WKMockNFTag isEqualToNFTag:]): |
| (-[WKMockNFTag initWithType:]): |
| (WebKit::MockNfcService::MockNfcService): |
| (WebKit::MockNfcService::transceive): |
| (WebKit::MockNfcService::platformStartDiscovery): |
| (WebKit::MockNfcService::detectTags const): |
| * UIProcess/WebAuthentication/Mock/MockWebAuthenticationConfiguration.h: |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp: |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.h: |
| * UIProcess/WebAuthentication/fido/CtapNfcDriver.cpp: Added. |
| (WebKit::CtapNfcDriver::CtapNfcDriver): |
| (WebKit::CtapNfcDriver::transact): |
| (WebKit::CtapNfcDriver::respondAsync const): |
| * UIProcess/WebAuthentication/fido/CtapNfcDriver.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.h. |
| * UIProcess/WebAuthentication/fido/FidoService.cpp: Added. |
| (WebKit::FidoService::FidoService): |
| (WebKit::FidoService::getInfo): |
| (WebKit::FidoService::continueAfterGetInfo): |
| * UIProcess/WebAuthentication/fido/FidoService.h: Copied from Source/WebKit/UIProcess/WebAuthentication/Cocoa/HidService.h. |
| * UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp: |
| * UIProcess/WebAuthentication/fido/U2fAuthenticator.h: |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-23 Kate Cheney <katherine_cheney@apple.com> |
| |
| Support ITP on a per-session basis (198923) |
| https://bugs.webkit.org/show_bug.cgi?id=198923 |
| |
| Reviewed by Chris Dumez. |
| |
| The original implementation of resourceLoadStatisticsUpdated |
| did not allow for ITP on a per session basis due to the sessionID |
| not being passed to the resourceLoadStatisticsUpdated function. |
| This patch allows access of the correct networkSession by passing |
| all resourceLoadStatistics in a new data structure of key-value |
| pairs, where the sessionID is the key. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * WebProcess/WebProcess.cpp: |
| |
| 2019-08-23 Russell Epstein <repstein@apple.com> |
| |
| Unreviewed, rolling out r249031. |
| |
| Causes multiple test failures on iOS simulator |
| |
| Reverted changeset: |
| |
| "[iOS] Should show input view when became first responder if |
| keyboard was showing when the view was resigned" |
| https://bugs.webkit.org/show_bug.cgi?id=200902 |
| https://trac.webkit.org/changeset/249031 |
| |
| 2019-08-22 Andy Estes <aestes@apple.com> |
| |
| [watchOS] Disable Content Filtering in the simulator build |
| https://bugs.webkit.org/show_bug.cgi?id=201047 |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2019-08-22 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Should show input view when became first responder if keyboard was showing when the view was resigned |
| https://bugs.webkit.org/show_bug.cgi?id=200902 |
| <rdar://problem/54231756> |
| |
| Reviewed by Wenson Hsieh. |
| |
| When resigning first responder save whether the peripheral host has an input view on screen, |
| including the software keyboard, so that we show the input view(s) again when the WKWebView |
| is made first responder. In Safari, this avoids the need for a person to explicitly focus an |
| editable element again to bring up the keyboard when returning to a tab they were previously |
| typing in. It also makes the behavior of switching tabs in Safari with a software keyboard |
| match the behavior of doing the same thing when a hardware keyboard attached. |
| |
| * UIProcess/PageClient.h: |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::focusedElementDidChangeInputMode): |
| Pass a diff of the activity state from the web process to the UI process so that we can |
| differentiate between an inputmode change as a result of page deactivation vs a change |
| caused by some other means. We need to differentiate these cases because we want to |
| ignore a page that sets inputmode "none" (i.e. a request to hide the keyboard) from inside |
| a focus event handler if the handler was called as part of the process of page activation |
| (i.e. switching to the tab). Google Docs is one example of a web site that sets inputmode |
| to "none" as a result of the page activation process. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView cleanupInteraction]): Clear out state. |
| (-[WKContentView resignFirstResponderForWebView]): Save whether the peripheral host is on screen |
| into a local before ending the editing session. We then copy the local into the ivar if we |
| actually will resign. This ordering is explicitly done because: |
| 1. Ending the editing session may dismiss the keyboard => we need to query the peripheral |
| host first. |
| 2. If the view is being resigned as a result of a keyboard dismissal (i.e. a person pressed |
| the hide keyboard button on iPad) then the user has indicated that they are finished |
| with the keyboard and we do not want to show the keyboard on page re-activation => we |
| do not want to copy the local to the ivar. |
| 3. If the view refuses to resign itself then it does not make sense to save the keyboard |
| state as responder status hasn't changed. |
| (-[WKContentView shouldShowAutomaticKeyboardUI]): Ignore inputmode="none", if needed. |
| (-[WKContentView _didCommitLoadForMainFrame]): Clear out state. |
| (-[WKContentView isFirstResponderOrBecomingFirstResponder]): Added. |
| (-[WKContentView shouldShowInputViewOnPageActivation:]): Added. |
| (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]): |
| Update ivar if this element is being focused as a result of page activation. |
| (-[WKContentView _didUpdateInputMode:activityStateChanges:]): Modified to take the activity state |
| diff. If the input mode was changed as a result of page activation then we want to update our ivar |
| so that when we call -reloadInputViews and UIKit calls us back in -shouldShowAutomaticKeyboardUI we |
| will know to ignore inputmode set to "none" when determining whether to show the automatic keyboard UI. |
| Note that we do not need to check/track whether an earlier -_elementDidFocus actually started an |
| input session as part of updating the value of our ivar because if an input session was not started, |
| say the embedding client disallowed it, then we would not have a focused element => we early return from |
| this function. Also remove duplication and improve code readbility by making use of the convenience function |
| hasFocusedElement() instead of duplicating what it does. |
| (-[WKContentView _didUpdateInputMode:]): Deleted. |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::focusedElementDidChangeInputMode): Modified to take the activity state diff |
| and pass it through. |
| (WebKit::WebPageProxy::didReleaseAllTouchPoints): Pass the empty set for the activity state diff to |
| keep our current behavior. |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::focusedElementDidChangeInputMode): Send the activity state diff to the UI process. |
| 2019-08-22 Keith Rollin <krollin@apple.com> |
| |
| Remove logging that contains a URL |
| https://bugs.webkit.org/show_bug.cgi?id=201052 |
| <rdar://problem/54613204> |
| |
| Reviewed by Chris Dumez. |
| |
| checkURLReceivedFromWebProcess in WebProcessProxy.cpp contains an old |
| logging line that logs a URL. We don't log URLs any more for privacy |
| reasons, so remove this. |
| |
| A search for WTFLogAlways.*url turns up other matches, but those are |
| either false positives or cases where the URLs are logged only on |
| demand by the developer as part of debugging. |
| checkURLReceivedFromWebProcess is the only place where a URL is logged |
| as a matter of course. |
| |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::checkURLReceivedFromWebProcess): |
| |
| 2019-08-22 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK][WPE] Fixes for non-unified builds after r248547 |
| https://bugs.webkit.org/show_bug.cgi?id=201044 |
| |
| Reviewed by Philippe Normand. |
| |
| * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp: Add missing inclusion of |
| the wtf/CrossThreadCopier.h header. |
| * WebProcess/WebStorage/StorageNamespaceImpl.h: Add missing inclusion of the |
| WebCore/PageIdentifier.h header. |
| |
| 2019-08-22 Alex Christensen <achristensen@webkit.org> |
| |
| Disable legacy TLS versions and add a temporary default to re-enable it |
| https://bugs.webkit.org/show_bug.cgi?id=200945 |
| |
| Reviewed by Brady Eidson. |
| |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::privateSessionParameters): |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeNetworkProcess): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| |
| 2019-08-17 Darin Adler <darin@apple.com> |
| |
| Use makeString and multi-argument StringBuilder::append instead of less efficient multiple appends |
| https://bugs.webkit.org/show_bug.cgi?id=200862 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * Shared/mac/AuxiliaryProcessMac.mm: |
| (WebKit::setAndSerializeSandboxParameters): Use one append instead of multiple. |
| |
| 2019-08-22 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Typing Korean in title field after typing in the body inserts extraneous characters on blog.naver.com |
| https://bugs.webkit.org/show_bug.cgi?id=201023 |
| <rdar://problem/54294794> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| After r242833, we began to avoid sending redundant ElementDidFocus updates in the case where a focused element |
| was blurred and refocused within the same runloop. This was done to prevent the input view from flickering due |
| to input view reloading, as well as scrolling to reveal the focused element, when tapping to change selection on |
| Microsoft Word online. |
| |
| However, on blog.naver.com, these ElementDidFocus messages were necessary in order to ensure that the platform |
| input context changes when moving between the title and body fields, or when tapping to change selection. This |
| is because blog.naver.com uses a hidden contenteditable area under a subframe (see WebCore ChangeLog for more |
| detail here). While text is never directly inserted into this hidden contenteditable, the events are observed |
| and used to "play back" editing in the main visible content area. |
| |
| Thus, when moving between the title and body fields (or when changing selection within either), the only hint we |
| get is that the hidden editable element is blurred and immediately refocused. Since we no longer send |
| ElementDidFocus updates in this scenario, UIKeyboardImpl and kbd are not aware that the page has effectively |
| changed input contexts. |
| |
| Combined with the fact that Korean IME on iOS may insert additional text given the document context (i.e. text |
| that the input manager, kbd, thinks we've previously inserted), this means that when typing several characters |
| into the body field on naver and then switching to edit the title, initial keystrokes may insert unexpected |
| text in the title field. |
| |
| To fix this, we add some hooks to notify the UI process when an element that was blurred has been immediately |
| refocused. Upon receiving this message, the UI process then tells UIKeyboardImpl to re-retrieve its input |
| context, which calls into -requestAutocorrectionContextWithCompletionHandler: in WKContentView. While notorious |
| for being synchronous IPC, this is mitigated by (1) being limiting to only instances where we have a hidden |
| editable area, and (2) being limited by a batching mechanism in the web process, such that if the focused |
| element is blurred, refocused, re-blurred, and refocused many times in the same runloop, we'll only send a |
| single UpdateInputContextAfterBlurringAndRefocusingElement message (as opposed to the many ElementDidFocus |
| messages we would've sent in previous releases). |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/PageClient.h: |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| |
| Add a new mechanism to update the platform input context (on iOS, UIKeyboardImpl's document state) when focus |
| moves away from and immediately returns to a hidden editable element. |
| |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::updateInputContextAfterBlurringAndRefocusingElement): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _updateInputContextAfterBlurringAndRefocusingElement]): |
| |
| Tell the active UIKeyboardImpl to refetch document state from the WKContentView. While this does result in a new |
| autocorrection context request (which, unfortunately, triggers synchronous IPC to the web process), this request |
| would've still happened anyways in the case where we would previously have sent an ElementDidFocus message. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::updateInputContextAfterBlurringAndRefocusingElement): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::elementDidFocus): |
| |
| In the case where we avoid sending a full ElementDidFocus message to the UI process due to refocusing the same |
| element, we should still notify the UI process so that it can synchronize state between the application process |
| and kbd. See above for more details. |
| |
| (WebKit::WebPage::elementDidBlur): |
| (WebKit::WebPage::updateInputContextAfterBlurringAndRefocusingElementIfNeeded): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::updateInputContextAfterBlurringAndRefocusingElementIfNeeded): |
| |
| 2019-08-22 Youenn Fablet <youenn@apple.com> |
| |
| Add a WebsiteDataStore delegate to handle AuthenticationChallenge that do not come from pages |
| https://bugs.webkit.org/show_bug.cgi?id=196870 |
| |
| Reviewed by Alex Christensen. |
| |
| Make NetworkProcess provide the session ID for any authentication challenge. |
| In case there is no associated page for the authentication challenge or this is related to a service worker, |
| ask the website data store to take a decision. |
| Add website data store delegate to allow applications to make the decision. |
| Restrict using the delegate to server trust evaluation only. |
| |
| Make ping loads reuse the same mechanism. |
| |
| Covered by service worker tests and updated beacon test. |
| |
| * NetworkProcess/NetworkCORSPreflightChecker.cpp: |
| (WebKit::NetworkCORSPreflightChecker::didReceiveChallenge): |
| * NetworkProcess/NetworkDataTask.cpp: |
| (WebKit::NetworkDataTask::sessionID const): |
| * NetworkProcess/NetworkDataTask.h: |
| * NetworkProcess/NetworkLoad.cpp: |
| (WebKit::NetworkLoad::didReceiveChallenge): |
| * NetworkProcess/NetworkLoadChecker.h: |
| (WebKit::NetworkLoadChecker::networkProcess): |
| * NetworkProcess/PingLoad.cpp: |
| (WebKit::PingLoad::didReceiveChallenge): |
| * Shared/Authentication/AuthenticationManager.cpp: |
| (WebKit::AuthenticationManager::didReceiveAuthenticationChallenge): |
| * Shared/Authentication/AuthenticationManager.h: |
| * Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.h: Copied from Tools/WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.h. |
| * Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.mm: Copied from Source/WebKit/Shared/Authentication/cocoa/ClientCertificateAuthenticationXPCConstants.h. |
| (WebKit::toAuthenticationChallengeDisposition): |
| * SourcesCocoa.txt: |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (WebsiteDataStoreClient::WebsiteDataStoreClient): |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h: |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/ServiceWorkerProcessProxy.cpp: |
| * UIProcess/ServiceWorkerProcessProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::isServiceWorkerPageID const): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/WebsiteDataStoreClient.h: |
| (WebKit::WebsiteDataStoreClient::didReceiveAuthenticationChallenge): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-22 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [SOUP] NetworkProcessSoup does not initialize CacheOptions correctly |
| https://bugs.webkit.org/show_bug.cgi?id=200886 |
| |
| Reviewed by Philippe Normand. |
| |
| r247567 wrongly initializes CacheOptions in a local variable that is never used |
| instead of using NetworkProcess's member variable, that is later used by the |
| NetworkSession to initialize the cache. |
| |
| * NetworkProcess/soup/NetworkProcessSoup.cpp: |
| (WebKit::NetworkProcess::platformInitializeNetworkProcess): |
| |
| 2019-08-21 Tim Horton <timothy_horton@apple.com> |
| |
| [Mail] Tapping top of message scrolls back to copied text instead of top of the message |
| https://bugs.webkit.org/show_bug.cgi?id=200999 |
| <rdar://problem/54564878> |
| |
| Reviewed by Wenson Hsieh. |
| |
| In the case where you have a WebCore selection but are not first responder, |
| when you tap the WKWebView to become first responder, EventHandler would |
| bail from setting the selection, assuming UIKit was going to do it. This |
| behavior was introduced in r233311. |
| |
| However, since we are not first responder, UIKit does not change the |
| selection, since it considers the view to not be editable. |
| |
| Fix this by letting WebCore set the selection in this case, as it used to. |
| |
| * WebProcess/WebCoreSupport/WebEditorClient.h: |
| * WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm: |
| (WebKit::WebEditorClient::shouldAllowSingleClickToChangeSelection const): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::isShowingInputViewForFocusedElement const): |
| Copy the logic from EventHandler, with the added caveat (which fixes the |
| aforementioned behavior) that we will allow EventHandler to change the |
| selection if we don't have a focused node in the UIKit sense, because |
| we know that the platform text interaction code will *not* change the |
| selection if that is the case, so it's up to us. |
| |
| 2019-08-21 Chris Dumez <cdumez@apple.com> |
| |
| Crash under NetworkCache::Data::mapToFile() |
| https://bugs.webkit.org/show_bug.cgi?id=200996 |
| <rdar://problem/54570421> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make sure NetworkCache::Data::mapToFile() calls makeSafeToUseMemoryMapForPath() between |
| creating the file and calling mmap(). |
| |
| * NetworkProcess/cache/NetworkCacheBlobStorage.cpp: |
| (WebKit::NetworkCache::BlobStorage::add): |
| * NetworkProcess/cache/NetworkCacheData.cpp: |
| (WebKit::NetworkCache::Data::mapToFile const): |
| |
| 2019-08-21 Chris Dumez <cdumez@apple.com> |
| |
| Have NetworkCache::store() null check its completion handler before calling it |
| https://bugs.webkit.org/show_bug.cgi?id=200994 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| Stop passing nullptr for the completion handler now that the parameter has a default value. |
| Note that passing nullptr here was likely wrong since the NetworkCache::store() implementation |
| did not null-check the completion handler before calling it. |
| |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::Cache::store): |
| Have NetworkCache::store() null check its completion handler before calling it as calling |
| a null WTF::Function crashes. |
| |
| * NetworkProcess/cache/NetworkCache.h: |
| Use nullptr as default parameter value for the completion handler. |
| |
| 2019-08-21 Rob Buis <rbuis@igalia.com> |
| |
| Verify Prefetch and credential behavior |
| https://bugs.webkit.org/show_bug.cgi?id=200000 |
| |
| Reviewed by Youenn Fablet. |
| |
| Cancel cross-origin prefetches for Vary: Cookie. |
| |
| Test: http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie.html |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| (WebKit::NetworkResourceLoader::didReceiveResponse): |
| * NetworkProcess/cache/PrefetchCache.cpp: |
| (WebKit::PrefetchCache::take): |
| |
| 2019-08-21 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Put keygen element behind a runtime flag and disable it by default |
| https://bugs.webkit.org/show_bug.cgi?id=200850 |
| |
| Reviewed by Antti Koivisto. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetKeygenElementEnabled): |
| (WKPreferencesGetKeygenElementEnabled): |
| * UIProcess/API/C/WKPreferencesRefPrivate.h: |
| |
| 2019-08-21 Chris Dumez <cdumez@apple.com> |
| |
| Crash under StringImpl::~StringImpl() in NetworkProcess::deleteWebsiteDataForRegistrableDomains() |
| https://bugs.webkit.org/show_bug.cgi?id=200986 |
| <rdar://problem/32850192> |
| |
| Reviewed by Brent Fulgham. |
| |
| Code was calling postStorageTask() with a lambda that captures Strings that are not isolated copied. |
| The lambda would get executed on another thread so this is not safe. The CrossThreadTask constructor |
| does not take care of this for you, despite its name (the createCrossThreadTask() function does though). |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): |
| |
| 2019-08-21 Chris Dumez <cdumez@apple.com> |
| |
| Add internal setting to disable SecureContext checks |
| https://bugs.webkit.org/show_bug.cgi?id=200980 |
| <rdar://problem/54438512> |
| |
| Reviewed by Alex Christensen. |
| |
| Add internal setting to disable SecureContext checks, in order to facilitate development |
| for features like Service workers or device orientation / motion. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/Cocoa/WKPreferences.mm: |
| (-[WKPreferences _secureContextChecksEnabled]): |
| (-[WKPreferences _setSecureContextChecksEnabled:]): |
| * UIProcess/API/Cocoa/WKPreferencesPrivate.h: |
| |
| 2019-08-21 Chris Dumez <cdumez@apple.com> |
| |
| registrableDomainsToRemoveWebsiteDataFor() does not need to return a HashMap |
| https://bugs.webkit.org/show_bug.cgi?id=200985 |
| |
| Reviewed by John Wilander. |
| |
| registrableDomainsToRemoveWebsiteDataFor() does not need to return a HashMap. It is more |
| efficient to simply return a Vector since we never need to look up keys. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::registrableDomainsToRemoveWebsiteDataFor): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::registrableDomainsToRemoveWebsiteDataFor): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::domainsToString): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::deleteWebsiteDataForRegistrableDomains): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::deleteCookiesForTesting): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::deleteWebsiteDataForRegistrableDomains): |
| * NetworkProcess/NetworkSession.h: |
| |
| 2019-08-21 Russell Epstein <repstein@apple.com> |
| |
| Unreviewed, rolling out r248942. |
| |
| Causes multiple layout test crashes on MacOS Bots |
| |
| Reverted changeset: |
| |
| "Verify Prefetch and credential behavior" |
| https://bugs.webkit.org/show_bug.cgi?id=200000 |
| https://trac.webkit.org/changeset/248942 |
| |
| 2019-08-21 Keith Rollin <krollin@apple.com> |
| |
| Remove support for watchOS < 6.0 |
| https://bugs.webkit.org/show_bug.cgi?id=200937 |
| <rdar://problem/54524009> |
| |
| Reviewed by Darin Adler. |
| |
| Update conditionals that reference __WATCH_OS_VERSION_MIN_REQUIRED and |
| __WATCH_OS_VERSION_MAX_ALLOWED, assuming that they both have values >= |
| 60000. This means that expressions like |
| "__WATCH_OS_VERSION_MIN_REQUIRED < 60000" are always False and |
| "__WATCH_OS_VERSION_MIN_REQUIRED >= 60000" are always True. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| |
| 2019-08-21 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK] Build failure due to unwieldy definition of “None” from X11 headers |
| https://bugs.webkit.org/show_bug.cgi?id=200984 |
| |
| Reviewed by Carlos Alberto Lopez Perez. |
| |
| * SourcesGTK.txt: Mark AcceleratedBackingStore.cpp with @no-unify |
| because it includes AcceleratedSurfaceX11.h when building with |
| ENABLE_X11_TARGET=ON, which in turn will include the X11 headers. |
| It is just lucky that most of the time the order of the generated |
| #include statements in the unified sources has been masking this |
| problem. |
| |
| 2019-08-21 Rob Buis <rbuis@igalia.com> |
| |
| Verify Prefetch and credential behavior |
| https://bugs.webkit.org/show_bug.cgi?id=200000 |
| |
| Reviewed by Youenn Fablet. |
| |
| Cancel cross-origin prefetches for Vary: Cookie. |
| |
| Test: http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie.html |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| (WebKit::NetworkResourceLoader::didReceiveResponse): |
| * NetworkProcess/cache/PrefetchCache.cpp: |
| (WebKit::PrefetchCache::take): |
| |
| 2019-08-21 Pablo Saavedra <psaavedra@igalia.com> |
| |
| [WPE] Build failure after r248846 ([WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part) |
| https://bugs.webkit.org/show_bug.cgi?id=200973 |
| |
| WPE fails to build with `-DENABLE_WPE_QT_API=ON` after changes done by r248846 in: |
| |
| Source/WebKit/UIProcess/API/wpe/qt/WPEQtView.cpp |
| Source/WebKit/UIProcess/API/wpe/qt/WPEQtViewBackend.cpp |
| |
| ; to forces FastMalloc use. |
| |
| Related to: |
| |
| https://bugs.webkit.org/show_bug.cgi?id=200611 |
| https://bugs.webkit.org/show_bug.cgi?id=200620 |
| |
| This patch puts WPEQt... classes into FastMalloc in the same way it |
| was done by many others in r248603. |
| |
| Reviewed by Philippe Normand. |
| |
| * UIProcess/API/wpe/qt/WPEQtView.cpp: |
| (WPEQtView::runJavaScript): |
| * UIProcess/API/wpe/qt/WPEQtViewBackend.h: |
| * UIProcess/API/wpe/qt/WPEQtViewLoadRequest.h: |
| |
| 2019-08-20 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| [iOS] REGRESSION (248501): gmail.com images are still not shown on some versions of iPhone iOS13 |
| https://bugs.webkit.org/show_bug.cgi?id=200948 |
| |
| Reviewed by Tim Horton. |
| |
| Apply the gmail.com quirk for all iPhone iOS versions till the gmail.com |
| bug is fixed. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::platformUserAgent const): |
| |
| 2019-08-20 Chris Dumez <cdumez@apple.com> |
| |
| WebSQLiteDatabaseTracker does not ensure it is still alive after dispatching to the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=200925 |
| |
| Reviewed by Geoffrey Garen. |
| |
| WebSQLiteDatabaseTracker does not ensure it is still alive after dispatching to the main thread, |
| which is not safe. Use WeakPtr to address the issue. |
| |
| * Shared/WebSQLiteDatabaseTracker.cpp: |
| (WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker): |
| (WebKit::WebSQLiteDatabaseTracker::willBeginFirstTransaction): |
| (WebKit::WebSQLiteDatabaseTracker::didFinishLastTransaction): |
| * Shared/WebSQLiteDatabaseTracker.h: |
| |
| 2019-08-20 Brent Fulgham <bfulgham@apple.com> |
| |
| [FTW] Fix scrolling in modern WebKit views |
| https://bugs.webkit.org/show_bug.cgi?id=200923 |
| |
| Reviewed by Don Olmstead. |
| |
| The initial implementation of scrolling in Direct2D had errors that |
| caused hilarious rendering glitches. This patch corrects the logic |
| so that page scroll is correct. |
| |
| This patch also fixes a bug that would trigger when resizing windows. |
| |
| * Shared/win/ShareableBitmapDirect2D.cpp: |
| (WebKit::ShareableBitmap::paint): |
| * UIProcess/BackingStore.h: |
| (WebKit::BackingStore::renderTarget): Deleted. |
| * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaProxyCoordinatedGraphics::sizeDidChange): |
| (WebKit::DrawingAreaProxyCoordinatedGraphics::deviceScaleFactorDidChange): |
| * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: |
| * UIProcess/win/BackingStoreDirect2D.cpp: |
| (WebKit::BackingStore::paint): |
| (WebKit::BackingStore::incorporateUpdate): |
| (WebKit::BackingStore::scroll): |
| * UIProcess/win/WebView.cpp: |
| (WebKit::WebView::paint): |
| (WebKit::WebView::onSizeEvent): |
| |
| 2019-08-20 Chris Dumez <cdumez@apple.com> |
| |
| Unsafe usage of CookieStorageObserver from a background thread |
| https://bugs.webkit.org/show_bug.cgi?id=200920 |
| |
| Reviewed by Alex Christensen. |
| |
| * UIProcess/API/APIHTTPCookieStore.h: |
| * UIProcess/API/Cocoa/APIHTTPCookieStoreCocoa.mm: |
| (API::HTTPCookieStore::startObservingChangesToDefaultUIProcessCookieStore): |
| |
| 2019-08-20 Chris Dumez <cdumez@apple.com> |
| |
| Use a strongly typed identifier for StorageNamespace's identifier |
| https://bugs.webkit.org/show_bug.cgi?id=200895 |
| |
| Reviewed by Alex Christensen and Youenn Fablet. |
| |
| Use a strongly typed identifier for StorageNamespace's identifier instead of uint64_t, to |
| avoid type confusion. |
| |
| * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: |
| (WebKit::LocalStorageNamespace::LocalStorageNamespace): |
| * NetworkProcess/WebStorage/LocalStorageNamespace.h: |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::createSessionStorageNamespace): |
| (WebKit::StorageManager::destroySessionStorageNamespace): |
| (WebKit::StorageManager::cloneSessionStorageNamespace): |
| (WebKit::StorageManager::createLocalStorageArea): |
| (WebKit::StorageManager::createTransientLocalStorageArea): |
| (WebKit::StorageManager::createSessionStorageArea): |
| (WebKit::StorageManager::getOrCreateLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateSessionStorageNamespace): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::connectToLocalStorageArea): |
| (WebKit::StorageManagerSet::connectToTransientLocalStorageArea): |
| (WebKit::StorageManagerSet::connectToSessionStorageArea): |
| (WebKit::StorageManagerSet::cloneSessionStorageNamespace): |
| * NetworkProcess/WebStorage/StorageManagerSet.h: |
| * NetworkProcess/WebStorage/StorageManagerSet.messages.in: |
| * Scripts/webkit/messages.py: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/InjectedBundle/InjectedBundle.cpp: |
| (WebKit::InjectedBundle::setPrivateBrowsingEnabled): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::sessionStorageNamespaceIdentifier const): |
| * WebProcess/WebPage/WebPageGroupProxy.h: |
| (WebKit::WebPageGroupProxy::localStorageNamespaceIdentifier const): |
| * WebProcess/WebStorage/StorageAreaMap.cpp: |
| (WebKit::StorageAreaMap::dispatchSessionStorageEvent): |
| (WebKit::StorageAreaMap::dispatchLocalStorageEvent): |
| * WebProcess/WebStorage/StorageNamespaceIdentifier.h: Copied from Source/WebKit/WebProcess/WebStorage/WebStorageNamespaceProvider.h. |
| * WebProcess/WebStorage/StorageNamespaceImpl.cpp: |
| (WebKit::StorageNamespaceImpl::createSessionStorageNamespace): |
| (WebKit::StorageNamespaceImpl::createLocalStorageNamespace): |
| (WebKit::StorageNamespaceImpl::createTransientLocalStorageNamespace): |
| (WebKit::StorageNamespaceImpl::StorageNamespaceImpl): |
| (WebKit::StorageNamespaceImpl::copy): |
| (WebKit::StorageNamespaceImpl::sessionStoragePageID const): |
| (WebKit::StorageNamespaceImpl::pageGroupID const): |
| * WebProcess/WebStorage/StorageNamespaceImpl.h: |
| (WebKit::StorageNamespaceImpl::storageNamespaceID const): |
| * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp: |
| (WebKit::WebStorageNamespaceProvider::getOrCreate): |
| (WebKit::WebStorageNamespaceProvider::WebStorageNamespaceProvider): |
| (WebKit::WebStorageNamespaceProvider::~WebStorageNamespaceProvider): |
| (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace): |
| (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace): |
| (WebKit::WebStorageNamespaceProvider::createTransientLocalStorageNamespace): |
| * WebProcess/WebStorage/WebStorageNamespaceProvider.h: |
| |
| 2019-08-20 Dean Jackson <dino@apple.com> |
| |
| REGRESSION: Open in New Tab is missing from context menu |
| https://bugs.webkit.org/show_bug.cgi?id=200909 |
| <rdar://problem/54476169> |
| |
| Reviewed by Simon Fraser. |
| |
| Don't assume the new API if webView:contextMenuWillPresentForElement: |
| is implemented. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (needsDeprecatedPreviewAPI): |
| |
| 2019-08-20 Joseph Pecoraro <pecoraro@apple.com> |
| |
| Web Inspector: Support for JavaScript BigInt |
| https://bugs.webkit.org/show_bug.cgi?id=180731 |
| <rdar://problem/36298748> |
| |
| Reviewed by Devin Rousso. |
| |
| * WebProcess/WebPage/WebInspectorUI.cpp: |
| (WebKit::WebInspectorUI::WebInspectorUI): |
| Enable BigInt in the Web Inspector process. It only makes use of |
| `globalThis.BigInt(...)` to hold the value. |
| |
| 2019-08-19 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [CMake] WebKit2.dll can't link because of missing PAL's import symbols for WinCairo port |
| https://bugs.webkit.org/show_bug.cgi?id=200910 |
| |
| Unreviewed build fix for Windows port. |
| |
| * CMakeLists.txt: Added -DSTATICALLY_LINKED_WITH_PAL=1 if PAL_LIBRARY_TYPE is STATIC. |
| |
| 2019-08-19 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| Unreviewed build fix for WinCairo port. |
| |
| The base class of NetworkDataTask has been changed in r248874. |
| |
| * NetworkProcess/curl/NetworkDataTaskCurl.h: |
| (ref): |
| (deref): |
| Call 'ref' and 'deref' of NetworkDataTask instead of RefCounted<NetworkDataTask>. |
| |
| 2019-08-19 Keith Rollin <krollin@apple.com> |
| |
| Unreviewed build fix for security entitlements. |
| |
| Bug 200242 (r248164) changed the way that entitlements were generated |
| and applied during the build. In that refactoring, the codesign |
| parameter "-o library" was dropped. This change adds it back. |
| |
| * Configurations/BaseXPCService.xcconfig: |
| |
| 2019-08-19 Chris Dumez <cdumez@apple.com> |
| |
| NetworkDataTask is being ref'd / deref'd from several threads and is not ThreadSafeRefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=200897 |
| |
| Reviewed by Geoffrey Garen. |
| |
| NetworkDataTask subclasses RefCounted and is ref'd / deref'd on the main thread. However, there |
| is code in NetworkDataTaskCocoa::resume() that was ref'ing / deref'ing it on a background thread, |
| which is unsafe. To address the issue, Have NetworkDataTask subclass ThreadSafeRefCounted, and |
| make sure it always gets destroyed on the main thread. |
| |
| * NetworkProcess/NetworkDataTask.h: |
| |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::resume): |
| Avoid some unnecessary refcounting churn. |
| |
| 2019-08-19 Alex Christensen <achristensen@webkit.org> |
| |
| Move call to initializeMainThread introduced in r248549 to after WebKit.framework has been loaded |
| https://bugs.webkit.org/show_bug.cgi?id=200896 |
| <rdar://problem/54479065> |
| |
| Reviewed by Chris Dumez. |
| |
| In XPCServiceMain we haven't been told which WebKit.framework to load yet, so when using staged frameworks it |
| causes problems if we call a function from a WebKit framework. We need to wait until after initializerFunctionPtr is called. |
| |
| * NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkServiceEntryPoint.mm: |
| (NetworkServiceInitializer): |
| * PluginProcess/EntryPoint/Cocoa/XPCService/PluginServiceEntryPoint.mm: |
| (PluginServiceInitializer): |
| * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm: |
| (WebKit::XPCServiceMain): |
| * WebProcess/EntryPoint/Cocoa/XPCService/WebContentServiceEntryPoint.mm: |
| (WebContentServiceInitializer): |
| |
| 2019-08-19 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Unreviewed, build fix for PLATFORM_DRIVEN_TEXT_CHECKING |
| https://bugs.webkit.org/show_bug.cgi?id=200620 |
| |
| It is enabled if PLATFORM(MACCATALYST) is true. |
| |
| * UIProcess/Cocoa/TextCheckingController.h: |
| |
| 2019-08-19 Sihui Liu <sihui_liu@apple.com> |
| |
| Remove IDB-specific quota |
| https://bugs.webkit.org/show_bug.cgi?id=196545 |
| <rdar://problem/54201783> |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::createIDBServer): |
| (WebKit::NetworkProcess::addIndexedDatabaseSession): |
| (WebKit::NetworkProcess::setIDBPerOriginQuota): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetIDBPerOriginQuota): Deleted. |
| * UIProcess/API/C/WKContextPrivate.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::setIDBPerOriginQuota): Deleted. |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-08-19 Youenn Fablet <youenn@apple.com> |
| |
| Remove SessionID::emptySessionID() |
| https://bugs.webkit.org/show_bug.cgi?id=200811 |
| |
| Reviewed by Alex Christensen. |
| |
| Update SessionID call sites to use toUInt64. |
| Remove debug asserts to isValid since construction of invalid session IDs can only happen in very specific cases |
| typically for HashMaps. |
| |
| * NetworkProcess/Downloads/DownloadManager.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::storageSession): |
| (WebKit::NetworkConnectionToWebProcess::logUserInteraction): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::networkSession const): |
| (WebKit::NetworkProcess::networkSessionByConnection const): |
| (WebKit::NetworkProcess::setSession): |
| (WebKit::NetworkProcess::destroySession): |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): |
| (WebKit::NetworkProcess::existingSWOriginStoreForSession const): |
| (WebKit::NetworkProcess::webProcessWasDisconnected): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::startNetworkLoad): |
| * NetworkProcess/mac/RemoteNetworkingContext.mm: |
| (WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::retrieveCacheStorageParameters): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::~WebsiteDataStore): |
| (WebKit::WebsiteDataStore::maybeRegisterWithSessionIDMap): |
| (WebKit::WebsiteDataStore::existingNonDefaultDataStoreForSessionID): |
| * WebProcess/Cache/WebCacheStorageProvider.cpp: |
| (WebKit::WebCacheStorageProvider::createCacheStorageConnection): |
| * WebProcess/Cache/WebCacheStorageProvider.h: |
| * WebProcess/Storage/WebSWClientConnection.cpp: |
| (WebKit::WebSWClientConnection::WebSWClientConnection): |
| (WebKit::WebSWClientConnection::initializeConnectionIfNeeded): |
| * WebProcess/Storage/WebServiceWorkerProvider.cpp: |
| (WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| |
| 2019-08-19 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Unreviewed, speculative build fix for GTK and WinCairo |
| https://bugs.webkit.org/show_bug.cgi?id=200620 |
| |
| * UIProcess/socket/RemoteInspectorProtocolHandler.cpp: |
| |
| 2019-08-19 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| Unreviewed, build fix in WinCairo and GTK ports |
| https://bugs.webkit.org/show_bug.cgi?id=200767 |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::enumerateMediaDevicesForFrame): |
| |
| 2019-08-19 Youenn Fablet <youenn@apple.com> |
| |
| enumerateDevices should return the same JS objects if called twice |
| https://bugs.webkit.org/show_bug.cgi?id=200767 |
| |
| Reviewed by Eric Carlson. |
| |
| Update code as enumerate device request is now gone. |
| Make use of async IPC to simplify code since we are now passing a completion handler directly. |
| |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged): |
| (WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest): |
| (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): |
| * UIProcess/UserMediaPermissionRequestManagerProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp: |
| (WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices): |
| * WebProcess/MediaStream/UserMediaPermissionRequestManager.h: |
| * WebProcess/WebCoreSupport/WebUserMediaClient.cpp: |
| (WebKit::WebUserMediaClient::enumerateMediaDevices): |
| * WebProcess/WebCoreSupport/WebUserMediaClient.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2019-08-18 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| [WTF] Add makeUnique<T>, which ensures T is fast-allocated, makeUnique / makeUniqueWithoutFastMallocCheck part |
| https://bugs.webkit.org/show_bug.cgi?id=200620 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp: |
| (WebKit::ResourceLoadStatisticsPersistentStorage::startMonitoringDisk): |
| (WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): |
| * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp: |
| * NetworkProcess/Downloads/DownloadManager.cpp: |
| (WebKit::DownloadManager::startDownload): |
| (WebKit::DownloadManager::convertNetworkLoadToDownload): |
| (WebKit::DownloadManager::resumeDownload): |
| * NetworkProcess/Downloads/DownloadMap.cpp: |
| (WebKit::DownloadMap::add): |
| * NetworkProcess/Downloads/PendingDownload.cpp: |
| (WebKit::PendingDownload::PendingDownload): |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::establishSWServerConnection): |
| * NetworkProcess/NetworkContentRuleListManager.cpp: |
| (WebKit::NetworkContentRuleListManager::addContentRuleLists): |
| * NetworkProcess/NetworkDataTaskBlob.cpp: |
| (WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob): |
| (WebKit::NetworkDataTaskBlob::download): |
| * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: |
| (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker): |
| * NetworkProcess/NetworkLoad.cpp: |
| (WebKit::NetworkLoad::didReceiveResponse): |
| * NetworkProcess/NetworkLoadChecker.cpp: |
| (WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight): |
| (WebKit::NetworkLoadChecker::contentSecurityPolicy): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::switchToNewTestingSession): |
| (WebKit::NetworkProcess::ensureSession): |
| (WebKit::NetworkProcess::swServerForSession): |
| (WebKit::NetworkProcess::initializeQuotaUsers): |
| (WebKit::NetworkProcess::storageQuotaManager): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::addSupplement): |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::m_shouldCaptureExtraNetworkLoadMetrics): |
| (WebKit::NetworkResourceLoader::startNetworkLoad): |
| * NetworkProcess/NetworkSocketChannel.cpp: |
| (WebKit::NetworkSocketChannel::create): |
| * NetworkProcess/PreconnectTask.cpp: |
| * NetworkProcess/WebStorage/LocalStorageDatabase.cpp: |
| (WebKit::LocalStorageDatabase::scheduleDatabaseUpdate): |
| * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: |
| (WebKit::LocalStorageNamespace::getOrCreateStorageArea): |
| * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: |
| (WebKit::SessionStorageNamespace::getOrCreateStorageArea): |
| * NetworkProcess/WebStorage/StorageArea.cpp: |
| (WebKit::StorageArea::clone const): |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::createSessionStorageNamespace): |
| (WebKit::StorageManager::getOrCreateLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateSessionStorageNamespace): |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::add): |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: |
| (WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea): |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::Cache::Cache): |
| (WebKit::NetworkCache::Cache::makeEntry): |
| (WebKit::NetworkCache::Cache::makeRedirectEntry): |
| (WebKit::NetworkCache::Cache::update): |
| * NetworkProcess/cache/NetworkCacheEntry.cpp: |
| (WebKit::NetworkCache::Entry::decodeStorageRecord): |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: |
| (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: |
| (WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::registerSubresourceLoad): |
| (WebKit::NetworkCache::SpeculativeLoadManager::retrieve): |
| (WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry): |
| (WebKit::NetworkCache::SpeculativeLoadManager::satisfyPendingRequests): |
| (WebKit::NetworkCache::SpeculativeLoadManager::revalidateSubresource): |
| (WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation): |
| * NetworkProcess/cache/NetworkCacheStorage.cpp: |
| (WebKit::NetworkCache::Storage::synchronize): |
| (WebKit::NetworkCache::Storage::readRecord): |
| (WebKit::NetworkCache::retrieveFromMemory): |
| (WebKit::NetworkCache::Storage::retrieve): |
| (WebKit::NetworkCache::Storage::store): |
| (WebKit::NetworkCache::Storage::traverse): |
| * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp: |
| (WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord): |
| * NetworkProcess/cache/PrefetchCache.cpp: |
| (WebKit::PrefetchCache::store): |
| (WebKit::PrefetchCache::storeRedirect): |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): |
| (WebKit::NetworkProcess::networkHTTPSUpgradeChecker): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): |
| (WebKit::NetworkSessionCocoa::create): |
| (WebKit::NetworkSessionCocoa::createWebSocketTask): |
| * NetworkProcess/curl/NetworkProcessCurl.cpp: |
| (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): |
| * NetworkProcess/curl/NetworkSessionCurl.h: |
| * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinator): |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAuthorizationPresenter): |
| * NetworkProcess/soup/NetworkDataTaskSoup.cpp: |
| (WebKit::NetworkDataTaskSoup::download): |
| * NetworkProcess/soup/NetworkProcessSoup.cpp: |
| (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): |
| * NetworkProcess/soup/NetworkSessionSoup.cpp: |
| (WebKit::NetworkSessionSoup::NetworkSessionSoup): |
| (WebKit::NetworkSessionSoup::createWebSocketTask): |
| * NetworkProcess/soup/NetworkSessionSoup.h: |
| * NetworkProcess/soup/WebKitSoupRequestInputStream.cpp: |
| (webkitSoupRequestInputStreamReadAsync): |
| * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: |
| (WebKit::NetworkMDNSRegister::registerMDNSName): |
| * NetworkProcess/webrtc/NetworkRTCMonitor.cpp: |
| (WebKit::NetworkRTCMonitor::startUpdating): |
| * NetworkProcess/webrtc/NetworkRTCProvider.cpp: |
| (WebKit::NetworkRTCProvider::NetworkRTCProvider): |
| (WebKit::NetworkRTCProvider::createSocket): |
| (WebKit::NetworkRTCProvider::wrapNewTCPConnection): |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::dispatchWorkQueueMessageReceiverMessage): |
| (IPC::Connection::createSyncMessageEncoder): |
| (IPC::Connection::enableIncomingMessagesThrottling): |
| (IPC::Connection::dispatchSyncMessage): |
| * Platform/IPC/Connection.h: |
| (IPC::Connection::send): |
| (IPC::Connection::sendWithAsyncReply): |
| * Platform/IPC/Decoder.cpp: |
| (IPC::Decoder::unwrapForTesting): |
| * Platform/IPC/HandleMessage.h: |
| (IPC::handleMessageAsync): |
| * Platform/IPC/MessageSender.h: |
| * Platform/IPC/cocoa/ConnectionCocoa.mm: |
| (IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog): |
| (IPC::Connection::open): |
| (IPC::createMessageDecoder): |
| (IPC::Connection::receiveSourceEventHandler): |
| * Platform/IPC/unix/ConnectionUnix.cpp: |
| (IPC::Connection::processMessage): |
| (IPC::Connection::sendOutputMessage): |
| * Platform/IPC/win/ConnectionWin.cpp: |
| (IPC::Connection::readEventHandler): |
| * Platform/mac/LayerHostingContext.mm: |
| (WebKit::LayerHostingContext::createForPort): |
| (WebKit::LayerHostingContext::createForExternalHostingProcess): |
| (WebKit::LayerHostingContext::createForExternalPluginHostingProcess): |
| * PluginProcess/WebProcessConnection.cpp: |
| (WebKit::WebProcessConnection::createPluginInternal): |
| * Shared/API/APIURL.h: |
| (API::URL::create): |
| (API::URL::parseURLIfNecessary const): |
| * Shared/API/Cocoa/RemoteObjectInvocation.mm: |
| (WebKit::RemoteObjectInvocation::decode): |
| * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: |
| (-[_WKRemoteObjectRegistry _initWithWebPage:]): |
| (-[_WKRemoteObjectRegistry _initWithWebPageProxy:]): |
| (-[_WKRemoteObjectRegistry _sendInvocation:interface:]): |
| * Shared/API/glib/WebKitContextMenuItem.cpp: |
| (webkitContextMenuItemCreate): |
| (webkit_context_menu_item_new): |
| (webkit_context_menu_item_new_from_gaction): |
| (webkit_context_menu_item_new_from_stock_action): |
| (webkit_context_menu_item_new_from_stock_action_with_label): |
| (webkit_context_menu_item_new_with_submenu): |
| (webkit_context_menu_item_new_separator): |
| * Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm: |
| (WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): |
| * Shared/Cocoa/SandboxExtensionCocoa.mm: |
| (WebKit::SandboxExtension::Handle::decode): |
| * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: |
| (WebKit::texmapLayer): |
| (WebKit::CoordinatedGraphicsScene::ensureRootLayer): |
| * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: |
| (WebKit::ThreadedCompositor::ThreadedCompositor): |
| * Shared/Plugins/NPRemoteObjectMap.cpp: |
| (WebKit::NPRemoteObjectMap::registerNPObject): |
| * Shared/Plugins/Netscape/NetscapePluginModule.cpp: |
| (WebKit::NetscapePluginModule::tryLoad): |
| * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm: |
| (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties): |
| (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode): |
| (WebKit::RemoteLayerTreeTransaction::decode): |
| * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: |
| (WebKit::RemoteScrollingCoordinatorTransaction::decode): |
| * Shared/cairo/ShareableBitmapCairo.cpp: |
| (WebKit::ShareableBitmap::createGraphicsContext): |
| * Shared/cg/ShareableBitmapCG.cpp: |
| (WebKit::ShareableBitmap::createGraphicsContext): |
| * Shared/win/ShareableBitmapDirect2D.cpp: |
| (WebKit::ShareableBitmap::createGraphicsContext): |
| * UIProcess/API/APIHTTPCookieStore.cpp: |
| (API::HTTPCookieStore::registerObserver): |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetInjectedBundleClient): |
| (WKContextSetHistoryClient): |
| (WKContextSetDownloadClient): |
| * UIProcess/API/C/WKGeolocationManager.cpp: |
| (WKGeolocationManagerSetProvider): |
| * UIProcess/API/C/WKNotificationManager.cpp: |
| (WKNotificationManagerSetProvider): |
| * UIProcess/API/C/WKPage.cpp: |
| (WKPageSetPageContextMenuClient): |
| (WKPageSetPageDiagnosticLoggingClient): |
| (WKPageSetPageFindClient): |
| (WKPageSetPageFindMatchesClient): |
| (WKPageSetPageFormClient): |
| (WKPageSetPageLoaderClient): |
| (WKPageSetPagePolicyClient): |
| (WKPageSetPageUIClient): |
| (WKPageSetPageStateClient): |
| * UIProcess/API/C/mac/WKPagePrivateMac.mm: |
| (-[WKObservablePageState initWithPage:]): |
| * UIProcess/API/C/wpe/WKView.cpp: |
| (WKViewSetViewClient): |
| * UIProcess/API/Cocoa/WKBrowsingContextController.mm: |
| (-[WKBrowsingContextController _initWithPageRef:]): |
| * UIProcess/API/Cocoa/WKHTTPCookieStore.mm: |
| (-[WKHTTPCookieStore addObserver:]): |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _setDownloadDelegate:]): |
| (-[WKProcessPool _setAutomationDelegate:]): |
| * UIProcess/API/Cocoa/WKUserContentController.mm: |
| (-[WKUserContentController addScriptMessageHandler:name:]): |
| (-[WKUserContentController _addScriptMessageHandler:name:userContentWorld:]): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _initializeWithConfiguration:]): |
| (-[WKWebView setAllowsBackForwardNavigationGestures:]): |
| (-[WKWebView _setInputDelegate:]): |
| * UIProcess/API/Cocoa/_WKAutomationSession.mm: |
| (-[_WKAutomationSession setDelegate:]): |
| * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm: |
| (-[_WKRemoteWebInspectorViewController init]): |
| * UIProcess/API/glib/IconDatabase.cpp: |
| (WebKit::readySQLiteStatement): |
| * UIProcess/API/glib/WebKitAutomationSession.cpp: |
| (webkitAutomationSessionConstructed): |
| * UIProcess/API/glib/WebKitContextMenuClient.cpp: |
| (attachContextMenuClientToView): |
| * UIProcess/API/glib/WebKitCustomProtocolManagerClient.cpp: |
| (attachCustomProtocolManagerClientToContext): |
| * UIProcess/API/glib/WebKitDownloadClient.cpp: |
| (attachDownloadClientToContext): |
| * UIProcess/API/glib/WebKitFaviconDatabase.cpp: |
| (webkitFaviconDatabaseOpen): |
| * UIProcess/API/glib/WebKitFindController.cpp: |
| (webkitFindControllerConstructed): |
| * UIProcess/API/glib/WebKitFormClient.cpp: |
| (attachFormClientToView): |
| * UIProcess/API/glib/WebKitGeolocationManager.cpp: |
| (webkitGeolocationManagerCreate): |
| * UIProcess/API/glib/WebKitIconLoadingClient.cpp: |
| (attachIconLoadingClientToView): |
| * UIProcess/API/glib/WebKitInjectedBundleClient.cpp: |
| (attachInjectedBundleClientToContext): |
| * UIProcess/API/glib/WebKitNotificationProvider.cpp: |
| (WebKitNotificationProvider::WebKitNotificationProvider): |
| * UIProcess/API/glib/WebKitUIClient.cpp: |
| (attachUIClientToView): |
| * UIProcess/API/glib/WebKitUserContentManager.cpp: |
| (webkit_user_content_manager_register_script_message_handler): |
| (webkit_user_content_manager_register_script_message_handler_in_world): |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextConstructed): |
| (webkit_web_context_set_automation_allowed): |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkitWebViewConstructed): |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::createDrawingAreaProxy): |
| * UIProcess/API/gtk/WebKitEmojiChooser.cpp: |
| (webkitEmojiChooserSetupEmojiSections): |
| * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: |
| (WebKit::RemoteInspectorProtocolHandler::handleRequest): |
| * UIProcess/API/gtk/WebKitWebInspector.cpp: |
| (webkitWebInspectorCreate): |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseConstructed): |
| (webkitWebViewBaseGestureController): |
| (webkitWebViewBaseDragAndDropHandler): |
| (webkitWebViewBaseDidRelaunchWebProcess): |
| * UIProcess/API/mac/WKView.mm: |
| (-[WKView maybeInstallIconLoadingClient]): |
| (-[WKView initWithFrame:processPool:configuration:]): |
| * UIProcess/API/wpe/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::PageClientImpl): |
| (WebKit::PageClientImpl::createDrawingAreaProxy): |
| * UIProcess/API/wpe/WPEView.cpp: |
| (WKWPE::View::View): |
| (WKWPE::View::setClient): |
| * UIProcess/API/wpe/qt/WPEQtView.cpp: |
| (WPEQtView::notifyLoadChangedCallback): |
| (WPEQtView::notifyLoadFailedCallback): |
| (WPEQtView::runJavaScript): |
| * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: |
| (WPEQtViewBackend::create): |
| * UIProcess/Automation/WebAutomationSession.cpp: |
| (WebKit::WebAutomationSession::WebAutomationSession): |
| * UIProcess/AuxiliaryProcessProxy.h: |
| (WebKit::AuxiliaryProcessProxy::send): |
| * UIProcess/Cocoa/IconLoadingDelegate.mm: |
| (WebKit::IconLoadingDelegate::createIconLoadingClient): |
| * UIProcess/Cocoa/UIDelegate.mm: |
| (WebKit::UIDelegate::createContextMenuClient): |
| (WebKit::UIDelegate::createUIClient): |
| * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: |
| (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitialize): |
| (WebKit::WebProcessPool::startDisplayLink): |
| * UIProcess/Cocoa/WebProcessProxyCocoa.mm: |
| (WebKit::WebProcessProxy::processWasUnexpectedlyUnsuspended): |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::WebViewImpl): |
| (WebKit::WebViewImpl::createDrawingAreaProxy): |
| (WebKit::WebViewImpl::setTextIndicator): |
| (WebKit::WebViewImpl::ensureGestureController): |
| * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaProxyCoordinatedGraphics::incorporateUpdate): |
| (WebKit::DrawingAreaProxyCoordinatedGraphics::dispatchAfterEnsuringDrawing): |
| * UIProcess/DeviceIdHashSaltStorage.cpp: |
| (WebKit::DeviceIdHashSaltStorage::getDataFromDecoder const): |
| (WebKit::DeviceIdHashSaltStorage::completeDeviceIdHashSaltForOriginCall): |
| * UIProcess/Downloads/DownloadProxyMap.cpp: |
| (WebKit::DownloadProxyMap::createDownloadProxy): |
| * UIProcess/Gamepad/UIGamepadProvider.cpp: |
| (WebKit::UIGamepadProvider::setInitialConnectedGamepads): |
| (WebKit::UIGamepadProvider::platformGamepadConnected): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::createDownloadProxy): |
| (WebKit::NetworkProcessProxy::takeUploadAssertion): |
| * UIProcess/Notifications/WebNotificationManagerProxy.cpp: |
| (WebKit::WebNotificationManagerProxy::WebNotificationManagerProxy): |
| (WebKit::WebNotificationManagerProxy::setProvider): |
| * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: |
| (WebKit::pluginRequiresGtk2): |
| * UIProcess/ProcessThrottler.cpp: |
| (WebKit::ProcessThrottler::didConnectToProcess): |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy): |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::initializeDebugIndicator): |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: |
| (WebKit::RemoteLayerTreeHost::makeNode): |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: |
| (WebKit::RemoteLayerTreeNode::createWithPlainLayer): |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm: |
| (WebKit::RemoteLayerTreeHost::makeNode): |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: |
| (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren): |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm: |
| (WebKit::ScrollingTreeOverflowScrollingNodeIOS::ScrollingTreeOverflowScrollingNodeIOS): |
| * UIProcess/RemoteLayerTree/mac/ScrollingTreeFrameScrollingNodeRemoteMac.cpp: |
| (WebKit::ScrollingTreeFrameScrollingNodeRemoteMac::ScrollingTreeFrameScrollingNodeRemoteMac): |
| * UIProcess/RemoteLayerTree/mac/ScrollingTreeOverflowScrollingNodeRemoteMac.cpp: |
| (WebKit::ScrollingTreeOverflowScrollingNodeRemoteMac::ScrollingTreeOverflowScrollingNodeRemoteMac): |
| * UIProcess/WebAuthentication/Cocoa/HidService.mm: |
| (WebKit::HidService::deviceAdded): |
| * UIProcess/WebGeolocationManagerProxy.cpp: |
| (WebKit::WebGeolocationManagerProxy::WebGeolocationManagerProxy): |
| (WebKit::WebGeolocationManagerProxy::setProvider): |
| * UIProcess/WebMediaSessionFocusManager.cpp: |
| (WebKit::WebMediaSessionFocusManager::setFocusedMediaElement): |
| * UIProcess/WebPageInspectorController.cpp: |
| (WebKit::WebPageInspectorController::WebPageInspectorController): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::WebPageProxy): |
| (WebKit::m_resetRecentCrashCountTimer): |
| (WebKit::WebPageProxy::setFormClient): |
| (WebKit::WebPageProxy::setUIClient): |
| (WebKit::WebPageProxy::setIconLoadingClient): |
| (WebKit::WebPageProxy::setFindClient): |
| (WebKit::WebPageProxy::setFindMatchesClient): |
| (WebKit::WebPageProxy::setContextMenuClient): |
| (WebKit::WebPageProxy::setInjectedBundleClient): |
| (WebKit::WebPageProxy::suspendCurrentPageIfPossible): |
| (WebKit::WebPageProxy::didAttachToRunningProcess): |
| (WebKit::WebPageProxy::setDrawingArea): |
| (WebKit::WebPageProxy::close): |
| (WebKit::WebPageProxy::loadData): |
| (WebKit::WebPageProxy::handleWheelEvent): |
| (WebKit::WebPageProxy::processNextQueuedWheelEvent): |
| (WebKit::WebPageProxy::continueNavigationInNewProcess): |
| (WebKit::WebPageProxy::setFullscreenClient): |
| (WebKit::WebPageProxy::userMediaPermissionRequestManager): |
| (WebKit::WebPageProxy::setScrollPerformanceDataCollectionEnabled): |
| (WebKit::WebPageProxy::speechSynthesisData): |
| * UIProcess/WebProcessCache.cpp: |
| (WebKit::WebProcessCache::addProcessIfPossible): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::WebProcessPool): |
| (WebKit::WebProcessPool::setInjectedBundleClient): |
| (WebKit::WebProcessPool::setHistoryClient): |
| (WebKit::WebProcessPool::setDownloadClient): |
| (WebKit::WebProcessPool::setAutomationClient): |
| (WebKit::WebProcessPool::setLegacyCustomProtocolManagerClient): |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::didCollectPrewarmInformation): |
| (WebKit::WebProcessPool::setWebProcessHasUploads): |
| (WebKit::WebProcessPool::setWebProcessIsPlayingAudibleMedia): |
| * UIProcess/WebProcessProxy.cpp: |
| * UIProcess/cairo/BackingStoreCairo.cpp: |
| (WebKit::BackingStore::createBackend): |
| * UIProcess/glib/RemoteInspectorClient.cpp: |
| (WebKit::RemoteInspectorClient::inspect): |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: |
| (WebKit::AcceleratedBackingStoreWayland::checkRequirements): |
| * UIProcess/gtk/DragAndDropHandler.cpp: |
| (WebKit::DragAndDropHandler::dragDataSelection): |
| * UIProcess/gtk/WaylandCompositor.cpp: |
| (WebKit::WaylandCompositor::initializeEGL): |
| * UIProcess/ios/EditableImageController.mm: |
| (WebKit::EditableImageController::ensureEditableImage): |
| * UIProcess/ios/WKApplicationStateTrackingView.mm: |
| (-[WKApplicationStateTrackingView didMoveToWindow]): |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _commonInitializationWithProcessPool:configuration:]): |
| (-[WKContentView initWithFrame:processPool:configuration:webView:]): |
| (-[WKContentView _createDrawingAreaProxy:]): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView becomeFirstResponderForWebView]): |
| (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::elementDidFocus): |
| (WebKit::WebPageProxy::paymentCoordinatorAuthorizationPresenter): |
| * UIProcess/mac/PageClientImplMac.mm: |
| (WebKit::PageClientImpl::PageClientImpl): |
| * UIProcess/mac/WKFullScreenWindowController.mm: |
| (-[WKFullScreenWindowController initWithWindow:webView:page:]): |
| * UIProcess/mac/WKTextFinderClient.mm: |
| (-[WKTextFinderClient initWithPage:view:usePlatformFindUI:]): |
| * UIProcess/socket/RemoteInspectorClient.cpp: |
| (WebKit::RemoteInspectorClient::inspect): |
| * UIProcess/socket/RemoteInspectorProtocolHandler.cpp: |
| (WebKit::RemoteInspectorProtocolHandler::platformStartTask): |
| * UIProcess/win/BackingStoreDirect2D.cpp: |
| (WebKit::BackingStore::createBackend): |
| * UIProcess/win/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::createDrawingAreaProxy): |
| * UIProcess/win/WebView.cpp: |
| (WebKit::WebView::WebView): |
| * WebProcess/Gamepad/WebGamepadProvider.cpp: |
| (WebKit::WebGamepadProvider::setInitialGamepads): |
| (WebKit::WebGamepadProvider::gamepadConnected): |
| * WebProcess/InjectedBundle/API/c/WKBundle.cpp: |
| (WKBundleSetClient): |
| * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: |
| (WKBundlePageSetContextMenuClient): |
| (WKBundlePageSetEditorClient): |
| (WKBundlePageSetFormClient): |
| (WKBundlePageSetPageLoaderClient): |
| (WKBundlePageSetResourceLoadClient): |
| (WKBundlePageSetUIClient): |
| * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp: |
| (WKBundlePageOverlayCreate): |
| * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm: |
| (WKBundlePageBannerCreateBannerWithCALayer): |
| * WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.cpp: |
| (WebKit::getOrCreateDOMObjectCacheFrameObserver): |
| (WebKit::DOMObjectCache::put): |
| * WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.cpp: |
| (WebKit::WebKitExtensionManager::initialize): |
| * WebProcess/InjectedBundle/API/glib/WebKitWebEditor.cpp: |
| (webkitWebEditorCreate): |
| * WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp: |
| (webkitWebExtensionCreate): |
| * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp: |
| (webkitFrameGetOrCreate): |
| (webkitWebPageCreate): |
| * WebProcess/InjectedBundle/API/mac/WKDOMTextIterator.mm: |
| (-[WKDOMTextIterator initWithRange:]): |
| * WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: |
| (-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]): |
| (-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]): |
| * WebProcess/InjectedBundle/InjectedBundle.cpp: |
| (WebKit::InjectedBundle::InjectedBundle): |
| (WebKit::InjectedBundle::setClient): |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::PendingMessage::PendingMessage): |
| (WebKit::WebSocketChannel::send): |
| * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: |
| (WebKit::LibWebRTCProvider::createPeerConnection): |
| (WebKit::LibWebRTCProvider::createSocketFactory): |
| * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: |
| (WebKit::LibWebRTCSocketFactory::createServerTcpSocket): |
| (WebKit::LibWebRTCSocketFactory::createUdpSocket): |
| (WebKit::LibWebRTCSocketFactory::createClientTcpSocket): |
| (WebKit::LibWebRTCSocketFactory::createNewConnectionSocket): |
| (WebKit::LibWebRTCSocketFactory::createAsyncResolver): |
| * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: |
| (WebKit::PluginDestructionProtector::PluginDestructionProtector): |
| * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: |
| (WebKit::NetscapePlugin::scheduleTimer): |
| * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: |
| (WebKit::NetscapePluginStream::deliverData): |
| * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: |
| (WebKit::NetscapePluginX11::create): |
| * WebProcess/Plugins/PluginProxy.cpp: |
| (WebKit::PluginProxy::initialize): |
| * WebProcess/Plugins/PluginView.cpp: |
| (WebKit::PluginView::createWebEvent const): |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::installServiceWorker): |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::createColorChooser): |
| (WebKit::WebChromeClient::createDataListSuggestionPicker): |
| * WebProcess/WebCoreSupport/WebInspectorClient.cpp: |
| (WebKit::WebInspectorClient::showPaintRect): |
| * WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp: |
| (WebKit::WebPasteboardOverrides::addOverride): |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): |
| * WebProcess/WebPage/DrawingArea.cpp: |
| (WebKit::DrawingArea::create): |
| * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp: |
| (WebKit::PlatformCALayerRemote::ensureBackingStore): |
| (WebKit::PlatformCALayerRemote::setTransform): |
| (WebKit::PlatformCALayerRemote::setSublayerTransform): |
| (WebKit::PlatformCALayerRemote::setFilters): |
| (WebKit::PlatformCALayerRemote::setShapeRoundedRect): |
| * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp: |
| (WebKit::PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking): |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): |
| (WebKit::RemoteLayerTreeDrawingArea::flushLayers): |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::createSubframe): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| (WebKit::WebPage::setInjectedBundleContextMenuClient): |
| (WebKit::WebPage::setInjectedBundleEditorClient): |
| (WebKit::WebPage::setInjectedBundleFormClient): |
| (WebKit::WebPage::setInjectedBundlePageLoaderClient): |
| (WebKit::WebPage::setInjectedBundleResourceLoadClient): |
| (WebKit::WebPage::setInjectedBundleUIClient): |
| (WebKit::WebPage::close): |
| (WebKit::WebPage::beginPrinting): |
| * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: |
| (WebKit::WebPrintOperationGtk::print): |
| * WebProcess/WebPage/ios/FindControllerIOS.mm: |
| (WebKit::FindController::updateFindIndicator): |
| * WebProcess/WebPage/mac/DrawingAreaMac.cpp: |
| (WebKit::DisplayRefreshMonitorMac::requestRefreshCallback): |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: |
| (WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::markAllLayersVolatile): |
| (WebKit::WebProcess::ensureAutomationSessionProxy): |
| (WebKit::WebProcess::libWebRTCNetwork): |
| (WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess): |
| * WebProcess/WebProcess.h: |
| (WebKit::WebProcess::addSupplement): |
| * WebProcess/cocoa/UserMediaCaptureManager.cpp: |
| (WebKit::UserMediaCaptureManager::Source::Source): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::processTaskStateDidChange): |
| (WebKit::WebProcess::updateCPUMonitorState): |
| |
| 2019-08-18 Per Arne Vollan <pvollan@apple.com> |
| |
| [Mac] Use the PID of the WebContent process when issuing local file read sandbox extensions |
| https://bugs.webkit.org/show_bug.cgi?id=200543 |
| <rdar://problem/49394015> |
| |
| Reviewed by Brent Fulgham. |
| |
| Adopt SPI to issue a process-specific sandbox extension for local file read, passing it the process |
| identifier of the WebContent process. |
| |
| * Shared/Cocoa/SandboxExtensionCocoa.mm: |
| (WebKit::SandboxExtensionImpl::sandboxExtensionForType): |
| (WebKit::SandboxExtension::createHandleForReadByPid): |
| * Shared/SandboxExtension.h: |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::createSandboxExtensionsIfNeeded): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| (WebKit::WebPageProxy::loadFile): |
| |
| 2019-08-17 Tim Horton <timothy_horton@apple.com> |
| |
| Layout tests that call resizeTo() crash when run on iOS with IOSurface support enabled |
| https://bugs.webkit.org/show_bug.cgi?id=200866 |
| <rdar://problem/50254021> |
| |
| Reviewed by Simon Fraser. |
| |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::convertToDeviceSpace): |
| (WebKit::PageClientImpl::convertToUserSpace): |
| Implement convertTo{Device,User}Space in PageClientImplIOS. |
| We don't actually do any conversion. For our purposes, the window is |
| "device" space, and we never allow iOS WebKit clients to resize the window... |
| except for in tests! So just pass the rects straight through, instead of |
| returning an empty rect. |
| |
| 2019-08-17 Eric Liang <ericliang@apple.com> |
| |
| Use bundlePath SPI in AccessibilitySupport for WebProcessLoader |
| https://bugs.webkit.org/show_bug.cgi?id=200367 |
| |
| Reviewed by Darin Adler. |
| |
| * Platform/spi/ios/AccessibilitySupportSPI.h: |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::accessibilityWebProcessLoaderBundlePath): |
| (WebKit::registerWithAccessibility): |
| |
| 2019-08-17 Sam Weinig <weinig@apple.com> |
| |
| Rename StringBuilder::flexibleAppend(...) to StringBuilder::append(...) |
| https://bugs.webkit.org/show_bug.cgi?id=200756 |
| |
| Reviewed by Darin Adler. |
| |
| Update call sites for rename from StringBuilder::flexibleAppend(...) to |
| StringBuilder::append(...). |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::dumpHistoryItem): |
| We have to explicitly access the underlying String of the URL rather than |
| relying on the implicit conversion since it is now ambiguous which append(...) |
| overload should be used. |
| |
| 2019-08-17 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: make the initial height bigger when attached |
| https://bugs.webkit.org/show_bug.cgi?id=200855 |
| |
| Reviewed by Joseph Pecoraro. |
| |
| * Shared/WebPreferences.yaml: |
| Increase the default attached height from `300px` to `500px`, which is close to the same |
| amount of area given a 15" MacBook Pro's aspect ratio (default attached width is `750px`). |
| |
| 2019-08-17 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2] Scroll indicators disappear sometimes |
| https://bugs.webkit.org/show_bug.cgi?id=200791 |
| |
| Reviewed by Tim Horton. |
| |
| _web_setSubviews: replaces all of the views subviews with the supplied array, but this blows |
| away views not managed by WebKit, including UIScrollViews scroll indicators. Fix by having |
| WebKit-managed views implement the WKWebKitControlled protocol, and only removing views |
| implementing that protocol. |
| |
| * Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm: |
| (-[UIView _web_setSubviews:]): |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h: |
| |
| 2019-08-17 Antti Koivisto <antti@apple.com> |
| |
| Content in <iframe> should override "touch-action" set in embedding document |
| https://bugs.webkit.org/show_bug.cgi?id=200204 |
| <rdar://problem/54355249> |
| |
| Reviewed by Antoine Quint. |
| |
| Subframes where content doesn't use any touch-action properties won't generate event region for their main layer. |
| As a result the touch-action property gets computed in UI process to the parent frames touch-action (instead of 'auto'). |
| |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (WebKit::touchActionsForPoint): |
| |
| If the topmost layer hit is a WKChildScrollView we know its content layer didn't have an event region. |
| This means we should return the default value 'auto'. |
| |
| 2019-08-16 Chris Dumez <cdumez@apple.com> |
| |
| Use strongly typed identifiers for StorageArea / StorageAreaImpl |
| https://bugs.webkit.org/show_bug.cgi?id=200835 |
| |
| Reviewed by Alex Christensen. |
| |
| Use strongly typed identifiers for StorageArea / StorageAreaImpl. They currently both use uint64_t |
| and are used in the same code, it is therefore very easy to confused the 2 types of identifiers. |
| |
| * NetworkProcess/WebStorage/StorageArea.cpp: |
| (WebKit::StorageArea::StorageArea): |
| (WebKit::StorageArea::setItem): |
| (WebKit::StorageArea::removeItem): |
| (WebKit::StorageArea::clear): |
| (WebKit::StorageArea::dispatchEvents const): |
| * NetworkProcess/WebStorage/StorageArea.h: |
| (WebKit::StorageArea::identifier): |
| * NetworkProcess/WebStorage/StorageAreaIdentifier.h: Copied from Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.h. |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::connectToLocalStorageArea): |
| (WebKit::StorageManagerSet::connectToTransientLocalStorageArea): |
| (WebKit::StorageManagerSet::connectToSessionStorageArea): |
| (WebKit::StorageManagerSet::disconnectFromStorageArea): |
| (WebKit::StorageManagerSet::getValues): |
| (WebKit::StorageManagerSet::setItem): |
| (WebKit::StorageManagerSet::removeItem): |
| (WebKit::StorageManagerSet::clear): |
| * NetworkProcess/WebStorage/StorageManagerSet.h: |
| * NetworkProcess/WebStorage/StorageManagerSet.messages.in: |
| * Scripts/webkit/messages.py: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::didReceiveMessage): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::registerStorageAreaMap): |
| (WebKit::WebProcess::unregisterStorageAreaMap): |
| (WebKit::WebProcess::storageAreaMap const): |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebStorage/StorageAreaImpl.cpp: |
| (WebKit::StorageAreaImpl::StorageAreaImpl): |
| * WebProcess/WebStorage/StorageAreaImpl.h: |
| * WebProcess/WebStorage/StorageAreaImplIdentifier.h: Copied from Source/WebKit/WebProcess/WebStorage/StorageAreaImpl.h. |
| * WebProcess/WebStorage/StorageAreaMap.cpp: |
| (WebKit::StorageAreaMap::StorageAreaMap): |
| (WebKit::StorageAreaMap::setItem): |
| (WebKit::StorageAreaMap::removeItem): |
| (WebKit::StorageAreaMap::clear): |
| (WebKit::StorageAreaMap::loadValuesIfNeeded): |
| (WebKit::StorageAreaMap::dispatchStorageEvent): |
| (WebKit::StorageAreaMap::dispatchSessionStorageEvent): |
| (WebKit::StorageAreaMap::dispatchLocalStorageEvent): |
| (WebKit::StorageAreaMap::disconnect): |
| * WebProcess/WebStorage/StorageAreaMap.h: |
| (WebKit::StorageAreaMap::identifier const): |
| * WebProcess/WebStorage/StorageAreaMap.messages.in: |
| |
| 2019-08-16 Chris Dumez <cdumez@apple.com> |
| |
| Drop StorageArea::setWorkQueue() member function |
| https://bugs.webkit.org/show_bug.cgi?id=200832 |
| |
| Reviewed by Alex Christensen. |
| |
| Drop StorageArea::setWorkQueue() member function and pass the WorkQueue to the StorageArea constructor instead. |
| The WorkQueue can never get updated so an explicit setter is not necessary. It also makes it clearer that the |
| m_queue data member can never be null. |
| |
| * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: |
| (WebKit::LocalStorageNamespace::getOrCreateStorageArea): |
| * NetworkProcess/WebStorage/LocalStorageNamespace.h: |
| * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: |
| (WebKit::SessionStorageNamespace::getOrCreateStorageArea): |
| * NetworkProcess/WebStorage/SessionStorageNamespace.h: |
| * NetworkProcess/WebStorage/StorageArea.cpp: |
| (WebKit::StorageArea::StorageArea): |
| (WebKit::StorageArea::clone const): |
| (WebKit::StorageArea::openDatabaseAndImportItemsIfNeeded const): |
| * NetworkProcess/WebStorage/StorageArea.h: |
| (WebKit::StorageArea::setWorkQueue): Deleted. |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::createLocalStorageArea): |
| (WebKit::StorageManager::createTransientLocalStorageArea): |
| (WebKit::StorageManager::createSessionStorageArea): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::connectToLocalStorageArea): |
| (WebKit::StorageManagerSet::connectToTransientLocalStorageArea): |
| (WebKit::StorageManagerSet::connectToSessionStorageArea): |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: |
| (WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea): |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.h: |
| |
| 2019-08-16 Chris Dumez <cdumez@apple.com> |
| |
| LocalStorageDatabaseTracker does not need to subclass ThreadSafeRefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=200825 |
| |
| Reviewed by Alex Christensen. |
| |
| LocalStorageDatabaseTracker does not need to subclass ThreadSafeRefCounted. It is currently always |
| ref'd / deref'd from the com.apple.WebKit.WebStorage serial WorkQueue, save from inside |
| LocalStorageDatabaseTracker::platformMaybeExcludeFromBackup() on iOS. However, it is probably |
| not a good idea to set FileSystem metadata from the main thread in platformMaybeExcludeFromBackup() |
| anyway. |
| |
| Note that I had to get rid of an old linked-on-after check since those are currently only safe |
| to do on the main thread. I cleared this with Brady. It has been a while since we've shipped this |
| behavior now and apps have had a chance to update. |
| |
| * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp: |
| (WebKit::LocalStorageDatabaseTracker::databasePath const): |
| * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h: |
| * NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm: |
| (WebKit::LocalStorageDatabaseTracker::platformMaybeExcludeFromBackup const): |
| * UIProcess/Cocoa/VersionChecks.h: |
| |
| 2019-08-16 Chris Dumez <cdumez@apple.com> |
| |
| LocalStorageDatabase should use inline initialization for its data members |
| https://bugs.webkit.org/show_bug.cgi?id=200828 |
| |
| Reviewed by John Wilander. |
| |
| * NetworkProcess/WebStorage/LocalStorageDatabase.cpp: |
| (WebKit::LocalStorageDatabase::LocalStorageDatabase): |
| * NetworkProcess/WebStorage/LocalStorageDatabase.h: |
| |
| 2019-08-16 Kate Cheney <katherine_cheney@apple.com> |
| |
| Functions with no parameters in WebKit/Shared/API/c and WebKit/UIProcess/API/C are |
| missing a "void" specifier in their argument list |
| https://bugs.webkit.org/show_bug.cgi?id=200826 |
| |
| Reviewed by Chris Dumez. |
| |
| Added void to indicate functions with no arguments to satisfy compiler errors. |
| This error came to light when fixing another patch. |
| |
| * Shared/API/c/WKArray.h: |
| * Shared/API/c/WKConnectionRef.h: |
| * Shared/API/c/WKContextMenuItem.h: |
| * Shared/API/c/WKData.h: |
| * Shared/API/c/WKDictionary.h: |
| * Shared/API/c/WKErrorRef.h: |
| * Shared/API/c/WKMutableArray.h: |
| * Shared/API/c/WKMutableDictionary.h: |
| * Shared/API/c/WKNumber.h: |
| * Shared/API/c/WKPluginInformation.h: |
| * Shared/API/c/WKRenderLayer.h: |
| * Shared/API/c/WKRenderObject.h: |
| * Shared/API/c/WKSecurityOriginRef.h: |
| * Shared/API/c/WKSerializedScriptValue.h: |
| * Shared/API/c/WKString.h: |
| * Shared/API/c/WKURL.h: |
| * Shared/API/c/WKURLRequest.h: |
| * Shared/API/c/WKURLResponse.h: |
| * Shared/API/c/WKUserContentURLPattern.h: |
| * UIProcess/API/C/WKBackForwardListItemRef.h: |
| * UIProcess/API/C/WKBackForwardListRef.h: |
| * UIProcess/API/C/WKContext.h: |
| * UIProcess/API/C/WKFormSubmissionListener.h: |
| * UIProcess/API/C/WKFrame.h: |
| * UIProcess/API/C/WKFramePolicyListener.h: |
| * UIProcess/API/C/WKGeolocationManager.h: |
| * UIProcess/API/C/WKGeolocationPermissionRequest.h: |
| * UIProcess/API/C/WKGeolocationPosition.h: |
| * UIProcess/API/C/WKHitTestResult.h: |
| * UIProcess/API/C/WKNavigationDataRef.h: |
| * UIProcess/API/C/WKOpenPanelParametersRef.h: |
| * UIProcess/API/C/WKOpenPanelResultListener.h: |
| * UIProcess/API/C/WKPage.h: |
| * UIProcess/API/C/WKPageConfigurationRef.h: |
| * UIProcess/API/C/WKPageGroup.h: |
| * UIProcess/API/C/WKPageUIClient.h: |
| * UIProcess/API/C/WKPreferencesRef.h: |
| * UIProcess/API/C/WKUserContentControllerRef.h: |
| * UIProcess/API/C/WKUserMediaPermissionRequest.h: |
| * UIProcess/API/C/WKUserScriptRef.h: |
| |
| 2019-08-16 Chris Dumez <cdumez@apple.com> |
| |
| LocalStorageDatabase does not need to subclass ThreadSafeRefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=200822 |
| |
| Reviewed by Geoff Garen. |
| |
| LocalStorageDatabase does not need to subclass ThreadSafeRefCounted, it is only ref'd / deref'd by the StorageArea |
| on the com.apple.WebKit.WebStorage serial WorkQueue, and in LocalStorageDatabase::scheduleDatabaseUpdate() on the |
| same WorkQueue. |
| |
| * NetworkProcess/WebStorage/LocalStorageDatabase.cpp: |
| (WebKit::LocalStorageDatabase::LocalStorageDatabase): |
| (WebKit::LocalStorageDatabase::~LocalStorageDatabase): |
| * NetworkProcess/WebStorage/LocalStorageDatabase.h: |
| |
| 2019-08-16 Chris Dumez <cdumez@apple.com> |
| |
| Many WebStorage classes do not need to subclass ThreadSafeRefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=200821 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Many WebStorage classes do not need to subclass ThreadSafeRefCounted. They never get ref'd or deref'd. |
| |
| * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: |
| (WebKit::LocalStorageNamespace::getOrCreateStorageArea): |
| (WebKit::LocalStorageNamespace::clearAllStorageAreas): |
| * NetworkProcess/WebStorage/LocalStorageNamespace.h: |
| * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: |
| (WebKit::SessionStorageNamespace::getOrCreateStorageArea): |
| * NetworkProcess/WebStorage/SessionStorageNamespace.h: |
| * NetworkProcess/WebStorage/StorageArea.cpp: |
| (WebKit::StorageArea::clone const): |
| * NetworkProcess/WebStorage/StorageArea.h: |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::createSessionStorageNamespace): |
| (WebKit::StorageManager::createLocalStorageArea): |
| (WebKit::StorageManager::createTransientLocalStorageArea): |
| (WebKit::StorageManager::createSessionStorageArea): |
| (WebKit::StorageManager::getOrCreateLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateSessionStorageNamespace): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: |
| (WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea): |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.h: |
| |
| 2019-08-16 Dean Jackson <dino@apple.com> |
| |
| Long pressing images with transparent backgrounds in dark mode causes a black background to appear around the image content |
| https://bugs.webkit.org/show_bug.cgi?id=200827 |
| <rdar://53933379> |
| |
| Reviewed by Tim Horton. |
| |
| Set a clear color when there is no provided background. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (createTargetedPreview): |
| |
| 2019-08-16 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Split tabIndex computation for DOM and the rest of WebCore |
| https://bugs.webkit.org/show_bug.cgi?id=200806 |
| |
| Reviewed by Chris Dumez. |
| |
| * WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp: |
| (webkit_dom_html_element_get_tab_index): |
| (webkit_dom_html_element_set_tab_index): |
| |
| 2019-08-16 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed restabilization of non-unified build. |
| |
| * NetworkProcess/NetworkCORSPreflightChecker.h: |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::StorageManagerSet): |
| * Shared/FrameInfoData.cpp: |
| (WebKit::FrameInfoData::decode): |
| * WebProcess/WebStorage/StorageNamespaceImpl.cpp: |
| * WebProcess/WebStorage/StorageNamespaceImpl.h: |
| |
| 2019-08-16 Chris Dumez <cdumez@apple.com> |
| |
| StorageManager does not need to subclass RefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=200818 |
| |
| Reviewed by Geoffrey Garen. |
| |
| StorageManager does not need to subclass RefCounted. It is owned by the StorageManagerSet |
| and is never ref'd / deref'd. |
| |
| * NetworkProcess/WebStorage/StorageManager.h: |
| (WebKit::StorageManager::create): Deleted. |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::add): |
| * NetworkProcess/WebStorage/StorageManagerSet.h: |
| |
| 2019-08-16 Chris Dumez <cdumez@apple.com> |
| |
| Clarify StorageManagerSet / StorageManager threading model after r248734 |
| https://bugs.webkit.org/show_bug.cgi?id=200817 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Clarify StorageManagerSet / StorageManager threading model after r248734. StorageManager is now |
| a background thread object but it still calls its completion handlers on the main thread, which |
| is very error prone. The pattern in WebKit for thread safety is that methods should always call |
| their completion handler of the thread / queue they were called on themselves. Doing differently |
| has caused so many thread-safety bugs in the past. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::getSessionStorageOrigins const): |
| (WebKit::StorageManager::deleteSessionStorageOrigins): |
| (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins): |
| (WebKit::StorageManager::getLocalStorageOrigins const): |
| (WebKit::StorageManager::getLocalStorageOriginDetails const): |
| (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): |
| (WebKit::StorageManager::getSessionStorageOrigins): Deleted. |
| (WebKit::StorageManager::getLocalStorageOrigins): Deleted. |
| (WebKit::StorageManager::getLocalStorageOriginDetails): Deleted. |
| * NetworkProcess/WebStorage/StorageManager.h: |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: |
| (WebKit::StorageManagerSet::getSessionStorageOrigins): |
| (WebKit::StorageManagerSet::deleteSessionStorage): |
| (WebKit::StorageManagerSet::deleteSessionStorageForOrigins): |
| (WebKit::StorageManagerSet::getLocalStorageOrigins): |
| (WebKit::StorageManagerSet::deleteLocalStorageModifiedSince): |
| (WebKit::StorageManagerSet::deleteLocalStorageForOrigins): |
| (WebKit::StorageManagerSet::getLocalStorageOriginDetails): |
| |
| 2019-08-16 Chris Dumez <cdumez@apple.com> |
| |
| StorageManagerSet constructor should not be public |
| https://bugs.webkit.org/show_bug.cgi?id=200816 |
| |
| Reviewed by Geoffrey Garen. |
| |
| StorageManagerSet constructor should not be public since it subclasses ThreadSafeRefCounted and |
| has a factory method. |
| |
| * NetworkProcess/WebStorage/StorageManagerSet.h: |
| |
| 2019-08-16 Timothy Hatcher <timothy@apple.com> |
| |
| REGRESSION (r248436): WKWebView doesn’t respect isOpaque setting in NIB. |
| https://bugs.webkit.org/show_bug.cgi?id=200802 |
| rdar://problem/54357818 |
| |
| Reviewed by Tim Horton. |
| |
| Tests: WKWebView.IsOpaqueDefault, WKWebView.SetOpaqueYes, WKWebView.SetOpaqueNo, WKWebView.IsOpaqueYesSubclassOverridden, |
| WKWebView.IsOpaqueNoSubclassOverridden, WKWebView.IsOpaqueYesDecodedFromArchive, WKWebView.IsOpaqueNoDecodedFromArchive, |
| WKWebView.IsOpaqueDrawsBackgroundYesConfiguration, WKWebView.IsOpaqueDrawsBackgroundNoConfiguration. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _initializeWithConfiguration:]): Call _setOpaqueInternal:NO instead of self.opaque = NO. |
| (-[WKWebView _setOpaqueInternal:]): Added. Moved code from setOpaque:. |
| (-[WKWebView setOpaque:]): Call _setOpaqueInternal:. |
| |
| 2019-08-15 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| [WTF] Add makeUnique<T>, which ensures T is fast-allocated, WTF_MAKE_FAST_ALLOCATED annotation part |
| https://bugs.webkit.org/show_bug.cgi?id=200620 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * NetworkProcess/AdClickAttributionManager.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| * NetworkProcess/Cookies/WebCookieManager.h: |
| * NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h: |
| * NetworkProcess/NetworkHTTPSUpgradeChecker.h: |
| * NetworkProcess/NetworkProcess.cpp: |
| * NetworkProcess/NetworkSession.h: |
| * NetworkProcess/NetworkSocketChannel.h: |
| * NetworkProcess/WebSocketTask.h: |
| * NetworkProcess/cache/PrefetchCache.h: |
| * NetworkProcess/cocoa/WebSocketTaskCocoa.h: |
| * NetworkProcess/soup/WebKitSoupRequestInputStream.cpp: |
| * NetworkProcess/soup/WebSocketTaskSoup.h: |
| * NetworkProcess/webrtc/LibWebRTCSocketClient.h: |
| * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: |
| * Platform/Module.h: |
| * PluginProcess/PluginControllerProxy.h: |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.h: |
| * Shared/Authentication/AuthenticationManager.h: |
| * Shared/Cocoa/SandboxExtensionCocoa.mm: |
| * Shared/Plugins/NPObjectMessageReceiver.h: |
| * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h: |
| * UIProcess/API/APIAutomationClient.h: |
| * UIProcess/API/APIAutomationSessionClient.h: |
| * UIProcess/API/APIContextMenuClient.h: |
| * UIProcess/API/APICustomProtocolManagerClient.h: |
| * UIProcess/API/APIDiagnosticLoggingClient.h: |
| * UIProcess/API/APIDownloadClient.h: |
| * UIProcess/API/APIFindClient.h: |
| * UIProcess/API/APIFindMatchesClient.h: |
| * UIProcess/API/APIFormClient.h: |
| * UIProcess/API/APIFullscreenClient.h: |
| * UIProcess/API/APIGeolocationProvider.h: |
| * UIProcess/API/APIHistoryClient.h: |
| * UIProcess/API/APIIconDatabaseClient.h: |
| * UIProcess/API/APIIconLoadingClient.h: |
| * UIProcess/API/APIInjectedBundleClient.h: |
| * UIProcess/API/APILegacyContextHistoryClient.h: |
| * UIProcess/API/APILoaderClient.h: |
| * UIProcess/API/APINavigationClient.h: |
| * UIProcess/API/APIPolicyClient.h: |
| * UIProcess/API/APIUIClient.h: |
| * UIProcess/API/C/WKPage.cpp: |
| (WKPageSetPageStateClient): |
| * UIProcess/API/Cocoa/WKUserContentController.mm: |
| * UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm: |
| * UIProcess/API/glib/IconDatabase.h: |
| * UIProcess/API/glib/WebKitAutomationSession.cpp: |
| * UIProcess/API/glib/WebKitIconLoadingClient.cpp: |
| * UIProcess/API/glib/WebKitNotificationProvider.h: |
| * UIProcess/API/glib/WebKitUserContentManager.cpp: |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: |
| * UIProcess/API/gtk/WebKitWebInspector.cpp: |
| * UIProcess/API/mac/WKView.mm: |
| (-[WKView maybeInstallIconLoadingClient]): |
| * UIProcess/API/wpe/APIViewClient.h: |
| * UIProcess/API/wpe/ScrollGestureController.h: |
| * UIProcess/ApplicationStateTracker.h: |
| * UIProcess/Cocoa/AutomationSessionClient.h: |
| * UIProcess/Cocoa/IconLoadingDelegate.h: |
| * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: |
| * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h: |
| * UIProcess/DrawingAreaProxy.h: |
| * UIProcess/HighPerformanceGraphicsUsageSampler.h: |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/PageClient.h: |
| * UIProcess/PerActivityStateCPUUsageSampler.h: |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeScrollingPerformanceData.h: |
| * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h: |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h: |
| * UIProcess/SystemPreviewController.h: |
| * UIProcess/UserMediaPermissionRequestManagerProxy.h: |
| * UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h: |
| * UIProcess/WebNavigationState.h: |
| * UIProcess/WebPageInjectedBundleClient.h: |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStoreClient.h: |
| * UIProcess/gtk/DragAndDropHandler.h: |
| * UIProcess/ios/EditableImageController.h: |
| * UIProcess/ios/InputViewUpdateDeferrer.h: |
| * UIProcess/ios/SmartMagnificationController.h: |
| * UIProcess/ios/fullscreen/WKFullScreenViewController.mm: |
| * UIProcess/mac/WKFullScreenWindowController.mm: |
| * UIProcess/mac/WKTextFinderClient.mm: |
| * WebProcess/ApplePay/WebPaymentCoordinator.h: |
| * WebProcess/Geolocation/GeolocationPermissionRequestManager.h: |
| * WebProcess/Geolocation/WebGeolocationManager.h: |
| * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp: |
| * WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm: |
| * WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.cpp: |
| * WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp: |
| * WebProcess/MediaCache/WebMediaKeyStorageManager.h: |
| * WebProcess/MediaStream/UserMediaPermissionRequestManager.h: |
| * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: |
| * WebProcess/Network/webrtc/LibWebRTCResolver.h: |
| * WebProcess/Notifications/WebNotificationManager.h: |
| * WebProcess/Plugins/Netscape/NetscapePlugin.h: |
| * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.h: |
| * WebProcess/Plugins/PluginController.h: |
| * WebProcess/Storage/WebSWOriginTable.h: |
| * WebProcess/WebCoreSupport/WebAlternativeTextClient.h: |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebCoreSupport/WebContextMenuClient.h: |
| * WebProcess/WebCoreSupport/WebDragClient.h: |
| * WebProcess/WebCoreSupport/WebEditorClient.h: |
| * WebProcess/WebCoreSupport/WebGeolocationClient.h: |
| * WebProcess/WebCoreSupport/WebInspectorClient.h: |
| * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h: |
| * WebProcess/WebCoreSupport/WebNotificationClient.h: |
| * WebProcess/WebCoreSupport/WebPlugInClient.h: |
| * WebProcess/WebCoreSupport/WebProgressTrackerClient.h: |
| * WebProcess/WebCoreSupport/WebSpeechSynthesisClient.h: |
| * WebProcess/WebCoreSupport/WebUserMediaClient.h: |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h: |
| * WebProcess/WebPage/FindController.h: |
| * WebProcess/WebPage/ViewGestureGeometryCollector.h: |
| * WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: |
| * WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h: |
| * WebProcess/WebProcess.h: |
| * WebProcess/cocoa/UserMediaCaptureManager.h: |
| |
| 2019-08-15 Brent Fulgham <bfulgham@apple.com> |
| |
| [FTW] Enable CoreFoundation use if building for Apple target |
| https://bugs.webkit.org/show_bug.cgi?id=200799 |
| |
| Reviewed by Alex Christensen. |
| |
| Fix the build and remove an unused method. |
| |
| * PlatformFTW.cmake: |
| * Shared/ShareableBitmap.h: |
| * Shared/win/ShareableBitmapDirect2D.cpp: |
| (WebKit::ShareableBitmap::createDirect2DSurface): |
| (WebKit::ShareableBitmap::releaseSurfaceData): Deleted. |
| |
| 2019-08-15 Sihui Liu <sihui_liu@apple.com> |
| |
| Some improvements on web storage |
| https://bugs.webkit.org/show_bug.cgi?id=200373 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Fix some issues in web storage architecture. For example, sessionStorageNameSpace for web page is prepared and |
| destroyed in the network process when the page comes and goes, even though the page may not use sessionStorage |
| at all. The messages about page state sent from web process to network process can be waste. |
| |
| Here are some general ideas of this patch: |
| 1. Network process owns the web storage, and web process keeps a small local copy (based on session and |
| origins that are visited). There is a virtual connection from the local copy in the web process to the original |
| copy in the network process. The connection is created by web process when some page asks for web storage. |
| 2. If connection is lost because network process is gone, storage in memory will be lost. The local copy in web |
| processs will be discarded. |
| 3. (SessionID, StorageNamespaceID, SecurityOrigin) is used to identify a storage area. If session is changed in |
| web process (like enabling private browsing in layout test now), a re-connection with different sessionID would |
| suffice to load another copy of storage. |
| 4. localStorage in ephemeral session has the same behavior as localStorage instead of sessionStorage, which |
| means different pages in the same ephemeral session share the same localStorage. |
| |
| Also, this patch introduces StorageManagerSet to network process. It handles web storage stuff, including |
| receiving storage messages from web process, on one background thread. Previously each session has its own |
| StorageManager and each StorageManager has its own WorkQueue. |
| |
| * CMakeLists.txt: |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: remove message handlers that are no longer needed. Network |
| process no longer needs to know page states from web process. |
| (WebKit::NetworkConnectionToWebProcess::didClose): |
| (WebKit::NetworkConnectionToWebProcess::webPageWasAdded): Deleted. |
| (WebKit::NetworkConnectionToWebProcess::webPageWasRemoved): Deleted. |
| (WebKit::NetworkConnectionToWebProcess::webProcessSessionChanged): Deleted. |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| |
| * NetworkProcess/NetworkProcess.cpp: NetworkProcess uses StorageManagerSet instead of StorageManager from |
| different sessions to deal with web storage. |
| (WebKit::NetworkProcess::NetworkProcess): |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| (WebKit::NetworkProcess::createNetworkConnectionToWebProcess): StorageManagerSet starts handling |
| StorageManagerSet messages from the new connection. |
| (WebKit::NetworkProcess::addWebsiteDataStore): |
| (WebKit::NetworkProcess::destroySession): |
| (WebKit::NetworkProcess::hasLocalStorage): |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::actualPrepareToSuspend): |
| (WebKit::NetworkProcess::resume): |
| (WebKit::NetworkProcess::syncLocalStorage): |
| (WebKit::NetworkProcess::clearLegacyPrivateBrowsingLocalStorage): added for clearing in-memory ephemeral |
| localStorage. |
| (WebKit::NetworkProcess::getLocalStorageOriginDetails): |
| (WebKit::NetworkProcess::connectionToWebProcessClosed): |
| (WebKit::NetworkProcess::webPageWasAdded): Deleted. |
| (WebKit::NetworkProcess::webPageWasRemoved): Deleted. |
| (WebKit::NetworkProcess::webProcessWasDisconnected): Deleted. |
| (WebKit::NetworkProcess::webProcessSessionChanged): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| |
| * NetworkProcess/NetworkSession.cpp: StorageManager is moved out of NetworkSession. It is now managed by |
| StorageManagerSet. |
| (WebKit::NetworkSession::NetworkSession): |
| (WebKit::NetworkSession::~NetworkSession): |
| * NetworkProcess/NetworkSession.h: |
| (WebKit::NetworkSession::storageManager): Deleted. |
| |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: creation parameters of StorageManager is moved out of |
| NetworkSessionCreationParameters. |
| (WebKit::NetworkSessionCreationParameters::privateSessionParameters): |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| |
| * NetworkProcess/WebStorage/LocalStorageDatabase.cpp: |
| (WebKit::LocalStorageDatabase::updateDatabase): remove an assertion that is no longer true as we can force an |
| update with syncLocalStorage now. |
| * NetworkProcess/WebStorage/LocalStorageDatabase.h: make updateDatabase public for syncLocalStorage. |
| |
| * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp: LocalStorageDatabaseTracker is created on the |
| background thread now, so it does not hold WorkQueue to do the file operation. |
| (WebKit::LocalStorageDatabaseTracker::create): |
| (WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker): |
| (WebKit::LocalStorageDatabaseTracker::~LocalStorageDatabaseTracker): |
| * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h: |
| * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: |
| (WebKit::LocalStorageNamespace::getOrCreateStorageArea): |
| (WebKit::LocalStorageNamespace::cloneTo): Deleted. |
| * NetworkProcess/WebStorage/LocalStorageNamespace.h: |
| * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: |
| (WebKit::SessionStorageNamespace::getOrCreateStorageArea): |
| (WebKit::SessionStorageNamespace::addAllowedConnection): Deleted. |
| (WebKit::SessionStorageNamespace::removeAllowedConnection): Deleted. |
| * NetworkProcess/WebStorage/SessionStorageNamespace.h: |
| (WebKit::SessionStorageNamespace::allowedConnections const): Deleted. |
| |
| * NetworkProcess/WebStorage/StorageArea.cpp: |
| (WebKit::generateStorageAreaIdentifier): each StorageArea has an identifier. StorageAreaMap in web process uses |
| this identifier to indicate which StorageArea it is connecting to. |
| (WebKit::StorageArea::StorageArea): |
| (WebKit::StorageArea::~StorageArea): StorageArea may still have listeners because StorageArea should be |
| destroyed by requests from UI process, and listeners are connections to web processses. |
| (WebKit::StorageArea::addListener): load localStorageDatabase in advance if there is some connection to this |
| LocalStorage area. |
| (WebKit::StorageArea::removeListener): |
| (WebKit::StorageArea::hasListener const): |
| (WebKit::StorageArea::clear): |
| (WebKit::StorageArea::openDatabaseAndImportItemsIfNeeded const): |
| (WebKit::StorageArea::dispatchEvents const): |
| (WebKit::StorageArea::syncToDatabase): |
| (WebKit::StorageArea::setItems): Deleted. Stop syncing from web process to network process after network process |
| is relaunched. |
| * NetworkProcess/WebStorage/StorageArea.h: |
| (WebKit::StorageArea::identifier): |
| (WebKit::StorageArea::setWorkQueue): |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: StorageManager should be accessed by only background thread now. |
| (WebKit::StorageManager::StorageManager): |
| (WebKit::StorageManager::~StorageManager): |
| (WebKit::StorageManager::createSessionStorageNamespace): |
| (WebKit::StorageManager::destroySessionStorageNamespace): this is not used now but keep it for future |
| improvement to remove in-memory sessionStorage in network process if we know some web page is gone forever. |
| (WebKit::StorageManager::cloneSessionStorageNamespace): previously each page had its own ephemeral |
| localStorageNamespace and now all pages in the same session share one localStorage, so we don't need to clone |
| localStorageNamespace. |
| (WebKit::StorageManager::getSessionStorageOrigins): |
| (WebKit::StorageManager::deleteSessionStorageOrigins): |
| (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins): |
| (WebKit::StorageManager::getLocalStorageOrigins): |
| (WebKit::StorageManager::getLocalStorageOriginDetails): |
| (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): |
| (WebKit::StorageManager::createLocalStorageArea): |
| (WebKit::StorageManager::createTransientLocalStorageArea): |
| (WebKit::StorageManager::createSessionStorageArea): |
| (WebKit::StorageManager::getOrCreateLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateSessionStorageNamespace): |
| (WebKit::StorageManager::clearStorageNamespaces): |
| (WebKit::StorageManager::addAllowedSessionStorageNamespaceConnection): Deleted. |
| (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection): Deleted. |
| (WebKit::StorageManager::processDidCloseConnection): Deleted. |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin): Deleted. |
| (WebKit::StorageManager::createLocalStorageMap): Deleted. |
| (WebKit::StorageManager::createTransientLocalStorageMap): Deleted. |
| (WebKit::StorageManager::createSessionStorageMap): Deleted. |
| (WebKit::StorageManager::destroyStorageMap): Deleted. |
| (WebKit::StorageManager::prewarm): Deleted. |
| (WebKit::StorageManager::getValues): Deleted. |
| (WebKit::StorageManager::setItem): Deleted. |
| (WebKit::StorageManager::setItems): Deleted. |
| (WebKit::StorageManager::removeItem): Deleted. |
| (WebKit::StorageManager::clear): Deleted. |
| (WebKit::StorageManager::waitUntilTasksFinished): Deleted. |
| (WebKit::StorageManager::suspend): Deleted. |
| (WebKit::StorageManager::resume): Deleted. |
| (WebKit::StorageManager::findStorageArea const): Deleted. |
| * NetworkProcess/WebStorage/StorageManager.h: |
| (WebKit::StorageManager::workQueue const): Deleted. |
| (): Deleted. |
| |
| * NetworkProcess/WebStorage/StorageManager.messages.in: Removed. Moved to StorageManagerSet.messages.in. |
| |
| * NetworkProcess/WebStorage/StorageManagerSet.cpp: Added. |
| (WebKit::StorageManagerSet::create): |
| (WebKit::StorageManagerSet::StorageManagerSet): |
| (WebKit::StorageManagerSet::~StorageManagerSet): |
| (WebKit::StorageManagerSet::add): |
| (WebKit::StorageManagerSet::remove): |
| (WebKit::StorageManagerSet::contains): |
| (WebKit::StorageManagerSet::addConnection): |
| (WebKit::StorageManagerSet::removeConnection): |
| (WebKit::StorageManagerSet::waitUntilTasksFinished): |
| (WebKit::StorageManagerSet::waitUntilSyncingLocalStorageFinished): |
| (WebKit::StorageManagerSet::suspend): |
| (WebKit::StorageManagerSet::resume): |
| (WebKit::StorageManagerSet::getSessionStorageOrigins): |
| (WebKit::StorageManagerSet::deleteSessionStorage): |
| (WebKit::StorageManagerSet::deleteSessionStorageForOrigins): |
| (WebKit::StorageManagerSet::getLocalStorageOrigins): |
| (WebKit::StorageManagerSet::deleteLocalStorageModifiedSince): |
| (WebKit::StorageManagerSet::deleteLocalStorageForOrigins): |
| (WebKit::StorageManagerSet::getLocalStorageOriginDetails): |
| (WebKit::StorageManagerSet::connectToLocalStorageArea): |
| (WebKit::StorageManagerSet::connectToTransientLocalStorageArea): |
| (WebKit::StorageManagerSet::connectToSessionStorageArea): |
| (WebKit::StorageManagerSet::disconnectFromStorageArea): |
| (WebKit::StorageManagerSet::getValues): |
| (WebKit::StorageManagerSet::setItem): |
| (WebKit::StorageManagerSet::removeItem): |
| (WebKit::StorageManagerSet::clear): |
| (WebKit::StorageManagerSet::cloneSessionStorageNamespace): |
| * NetworkProcess/WebStorage/StorageManagerSet.h: Added. |
| * NetworkProcess/WebStorage/StorageManagerSet.messages.in: Added. |
| |
| * Shared/WebsiteDataStoreParameters.cpp: creation parameters of StorageManager are moved to |
| WebsiteDataStoreParameters. |
| (WebKit::WebsiteDataStoreParameters::encode const): |
| (WebKit::WebsiteDataStoreParameters::decode): |
| (WebKit::WebsiteDataStoreParameters::privateSessionParameters): |
| * Shared/WebsiteDataStoreParameters.h: |
| * Sources.txt: |
| |
| * UIProcess/API/C/WKContext.cpp: add SPI for tests. |
| (WKContextSyncLocalStorage): |
| (WKContextClearLegacyPrivateBrowsingLocalStorage): |
| * UIProcess/API/C/WKContextPrivate.h: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreRemoveLocalStorage): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::syncLocalStorage): |
| (WebKit::WebProcessPool::clearLegacyPrivateBrowsingLocalStorage): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::parameters): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| * WebProcess/InjectedBundle/InjectedBundle.cpp: session change of web storage is done via |
| WebStorageNamespaceProvider instead of WebProcess now. |
| (WebKit::InjectedBundle::setPrivateBrowsingEnabled): |
| * WebProcess/WebProcess.cpp: web process no longer sends messsages about page state to network process. |
| (WebKit::WebProcess::createWebPage): |
| (WebKit::WebProcess::removeWebPage): |
| (WebKit::WebProcess::ensureNetworkProcessConnection): |
| (WebKit::WebProcess::networkProcessConnectionClosed): |
| (WebKit::WebProcess::storageAreaMap const): |
| (WebKit::WebProcess::enablePrivateBrowsingForTesting): Deleted. This was used for changing session via |
| WebProcess. |
| * WebProcess/WebProcess.h: |
| * WebProcess/WebStorage/StorageAreaImpl.cpp: |
| (WebKit::StorageAreaImpl::StorageAreaImpl): |
| (WebKit::StorageAreaImpl::length): |
| (WebKit::StorageAreaImpl::key): |
| (WebKit::StorageAreaImpl::item): |
| (WebKit::StorageAreaImpl::setItem): |
| (WebKit::StorageAreaImpl::removeItem): |
| (WebKit::StorageAreaImpl::clear): |
| (WebKit::StorageAreaImpl::contains): |
| (WebKit::StorageAreaImpl::storageType const): |
| (WebKit::StorageAreaImpl::incrementAccessCount): |
| (WebKit::StorageAreaImpl::decrementAccessCount): |
| (WebKit::StorageAreaImpl::prewarm): Deleted. |
| (WebKit::StorageAreaImpl::securityOrigin const): Deleted. |
| |
| * WebProcess/WebStorage/StorageAreaImpl.h: make StorageAreaImpl hold a weak reference to StorageAreaMap and |
| StorageNamespaceImpl hold a strong reference. In this way lifeime of localStorage StorageAreraMap stays align |
| with StorageNameSpaceProvider and Page. |
| |
| * WebProcess/WebStorage/StorageAreaMap.cpp: identifier of StorageAreaMap is the same as identifier of |
| StorageArea it connects to. If the identifier is 0, it means the StorageAreaMap is disconnected. |
| (WebKit::StorageAreaMap::StorageAreaMap): |
| (WebKit::StorageAreaMap::~StorageAreaMap): |
| (WebKit::StorageAreaMap::setItem): |
| (WebKit::StorageAreaMap::removeItem): |
| (WebKit::StorageAreaMap::clear): |
| (WebKit::StorageAreaMap::resetValues): |
| (WebKit::StorageAreaMap::loadValuesIfNeeded): |
| (WebKit::StorageAreaMap::applyChange): |
| (WebKit::StorageAreaMap::dispatchStorageEvent): |
| (WebKit::StorageAreaMap::dispatchSessionStorageEvent): |
| (WebKit::StorageAreaMap::dispatchLocalStorageEvent): |
| (WebKit::StorageAreaMap::connect): |
| (WebKit::StorageAreaMap::disconnect): |
| (WebKit::generateStorageMapID): Deleted. |
| (WebKit::StorageAreaMap::prewarm): Deleted. |
| (WebKit::StorageAreaMap::didGetValues): Deleted. This is useless as GetValues is a synchronous operation. |
| * WebProcess/WebStorage/StorageAreaMap.h: |
| (): Deleted. |
| |
| * WebProcess/WebStorage/StorageAreaMap.messages.in: there are two synchronous messages, one for connection and |
| one for getting values. We may merge them into one in future improvement. |
| * WebProcess/WebStorage/StorageNamespaceImpl.cpp: |
| (WebKit::StorageNamespaceImpl::createSessionStorageNamespace): |
| (WebKit::StorageNamespaceImpl::createLocalStorageNamespace): |
| (WebKit::StorageNamespaceImpl::createTransientLocalStorageNamespace): |
| (WebKit::StorageNamespaceImpl::StorageNamespaceImpl): |
| (WebKit::StorageNamespaceImpl::storageArea): |
| (WebKit::StorageNamespaceImpl::copy): |
| (WebKit::StorageNamespaceImpl::setSessionIDForTesting): |
| (WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace): Deleted. |
| * WebProcess/WebStorage/StorageNamespaceImpl.h: |
| * WebProcess/WebStorage/WebStorageNamespaceProvider.cpp: |
| (WebKit::WebStorageNamespaceProvider::createSessionStorageNamespace): |
| (WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace): |
| (WebKit::WebStorageNamespaceProvider::createTransientLocalStorageNamespace): |
| (WebKit::WebStorageNamespaceProvider::createEphemeralLocalStorageNamespace): Deleted. |
| * WebProcess/WebStorage/WebStorageNamespaceProvider.h: |
| |
| 2019-08-15 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Occasional hang under -[UIKeyboardTaskQueue lockWhenReadyForMainThread] when long-pressing non-editable text |
| https://bugs.webkit.org/show_bug.cgi?id=200731 |
| <rdar://problem/54315371> |
| |
| Reviewed by Tim Horton. |
| |
| When handling a single tap in non-editable content, keyboards logic in UIKit may attempt to wait for all |
| pending tasks in UIKeyboardTaskQueue to finish executing (e.g. by calling -waitUntilAllTasksAreFinished]). If |
| the task queue has a pending task at this moment - for example, a text selection update that is waiting for a |
| response from the web process - this will result in a permanent deadlock, since the main thread will be blocked, |
| and therefore cannot receive any IPC communication from the web process. |
| |
| One way to trigger this is to activate both the loupe gesture and non-editable text tap gesture simultaneously, |
| by tapping in a non-editable part of the web page, while an ongoing loupe gesture is driving selection updates |
| (see the layout test for more details). |
| |
| To avoid getting into this scenario, prevent the text tap gesture recognizer from firing in a few edge cases |
| that could lead to hangs under keyboard code in UIKit. See comments below. |
| |
| Test: editing/selection/ios/tap-during-loupe-gesture.html |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]): |
| |
| Don't allow the text tap gesture recognizer to fire if the user is actively modifying the text selection using |
| the loupe gesture, or if there's other pending selection change updates that are pending responses from the web |
| content process. |
| |
| (-[WKContentView selectTextWithGranularity:atPoint:completionHandler:]): |
| (-[WKContentView updateSelectionWithExtentPoint:withBoundary:completionHandler:]): |
| |
| Increment and decrement _suppressNonEditableSingleTapTextInteractionCount while handling these selection |
| updates. |
| |
| 2019-08-15 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r248440. |
| https://bugs.webkit.org/show_bug.cgi?id=200772 |
| |
| Introduced regressions related to loading of local files. |
| (Requested by perarne on #webkit). |
| |
| Reverted changeset: |
| |
| "[Mac] Use the PID of the WebContent process when issuing |
| local file read sandbox extensions" |
| https://bugs.webkit.org/show_bug.cgi?id=200543 |
| https://trac.webkit.org/changeset/248440 |
| |
| 2019-08-15 Alex Christensen <achristensen@webkit.org> |
| |
| WKUIDelegate's webView:contextMenuDidEndForElement: should be called when context menus end |
| https://bugs.webkit.org/show_bug.cgi?id=200750 |
| <rdar://problem/54232261> and <rdar://problem/52355829> |
| |
| Reviewed by Tim Horton. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]): |
| |
| 2019-08-14 Brian Burg <bburg@apple.com> |
| |
| Web Automation: mouse buttons are not correctly printed in SimulatedInputDispatcher log spew |
| https://bugs.webkit.org/show_bug.cgi?id=200729 |
| |
| Reviewed by Devin Rousso. |
| |
| This was printing out gibberish because it was trying to decode a WebMouseEvent button |
| as an Automation protocol button. The logging was less useful because of it. |
| |
| To fix this, push usage of Automation protocol-based MouseButton type alias all the way |
| to the platform-specific methods. The mouse buttons are the same for WebMouseEvent::Button |
| and the Automation protocol type, except the automation type has an auto-generated toString. |
| |
| * UIProcess/Automation/SimulatedInputDispatcher.h: |
| * UIProcess/Automation/SimulatedInputDispatcher.cpp: |
| (WebKit::SimulatedInputDispatcher::transitionInputSourceToState): |
| (WebKit::SimulatedInputDispatcher::run): |
| Fix types. |
| |
| * UIProcess/Automation/WebAutomationSession.h: |
| * UIProcess/Automation/WebAutomationSession.cpp: |
| (WebKit::WebAutomationSession::simulateMouseInteraction): |
| (WebKit::WebAutomationSession::performMouseInteraction): |
| (WebKit::WebAutomationSession::performInteractionSequence): |
| (WebKit::protocolMouseButtonToWebMouseEventButton): Deleted. |
| Fix types. |
| |
| * UIProcess/Automation/mac/WebAutomationSessionMac.mm: |
| (WebKit::automationMouseButtonToPlatformMouseButton): |
| (WebKit::WebAutomationSession::platformSimulateMouseInteraction): |
| * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp: |
| (WebKit::mouseButtonToGdkButton): |
| (WebKit::WebAutomationSession::platformSimulateMouseInteraction): |
| * UIProcess/Automation/wpe/WebAutomationSessionWPE.cpp: |
| (WebKit::mouseButtonToWPEButton): |
| (WebKit::WebAutomationSession::platformSimulateMouseInteraction): |
| Move translation between MouseButton and native button values to platform methods. |
| |
| 2019-08-15 Simon Fraser <simon.fraser@apple.com> |
| |
| Use ObjectIdentifier<FrameIdentifierType> for frameIDs |
| https://bugs.webkit.org/show_bug.cgi?id=199986 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Use the strongly-typed FrameIdentifier instead of uint64_t as frame identifiers everywhere. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::hasStorageAccess): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccess): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::hasStorageAccess): |
| (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): |
| (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess): |
| (WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess): |
| (WebKit::WebResourceLoadStatisticsStore::hasStorageAccessForFrame): |
| (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler): |
| (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): |
| (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): |
| (WebKit::WebResourceLoadStatisticsStore::callGrantStorageAccessHandler): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkCORSPreflightChecker.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::cookiesForDOM): |
| (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM): |
| (WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue): |
| (WebKit::NetworkConnectionToWebProcess::getRawCookies): |
| (WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame): |
| (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): |
| (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkLoadChecker.cpp: |
| (WebKit::NetworkLoadChecker::NetworkLoadChecker): |
| * NetworkProcess/NetworkLoadChecker.h: |
| * NetworkProcess/NetworkLoadParameters.h: |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::start): |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| (WebKit::NetworkResourceLoader::startNetworkLoad): |
| (WebKit::NetworkResourceLoader::convertToDownload): |
| (WebKit::NetworkResourceLoader::abort): |
| (WebKit::NetworkResourceLoader::didReceiveResponse): |
| (WebKit::NetworkResourceLoader::didReceiveBuffer): |
| (WebKit::NetworkResourceLoader::didFinishLoading): |
| (WebKit::NetworkResourceLoader::didFailLoading): |
| (WebKit::NetworkResourceLoader::continueWillSendRequest): |
| (WebKit::escapeIDForJSON): |
| (WebKit::logBlockedCookieInformation): |
| (WebKit::logCookieInformationInternal): |
| (WebKit::NetworkResourceLoader::logCookieInformation): |
| * NetworkProcess/NetworkResourceLoader.h: |
| * NetworkProcess/cache/NetworkCache.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): |
| (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection): |
| * Scripts/webkit/messages.py: |
| * Shared/API/APIFrameHandle.cpp: |
| (API::FrameHandle::create): |
| (API::FrameHandle::createAutoconverting): |
| (API::FrameHandle::FrameHandle): |
| (API::FrameHandle::decode): |
| * Shared/API/APIFrameHandle.h: |
| (API::FrameHandle::frameID const): |
| * Shared/API/Cocoa/_WKFrameHandle.mm: |
| (-[_WKFrameHandle hash]): |
| (-[_WKFrameHandle _frameID]): |
| (-[_WKFrameHandle initWithCoder:]): |
| (-[_WKFrameHandle encodeWithCoder:]): |
| * Shared/Authentication/AuthenticationManager.cpp: |
| (WebKit::AuthenticationManager::didReceiveAuthenticationChallenge): |
| * Shared/Authentication/AuthenticationManager.h: |
| * Shared/FrameInfoData.h: |
| * UIProcess/API/C/WKFrameHandleRef.cpp: |
| (WKFrameHandleGetFrameID): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _printOperationWithPrintInfo:forFrame:]): |
| (-[WKWebView _canChangeFrameLayout:]): |
| * UIProcess/API/Cocoa/_WKInspector.mm: |
| (-[_WKInspector showMainResourceForFrame:]): |
| * UIProcess/Automation/SimulatedInputDispatcher.cpp: |
| (WebKit::SimulatedInputDispatcher::run): |
| * UIProcess/Automation/SimulatedInputDispatcher.h: |
| * UIProcess/Automation/WebAutomationSession.cpp: |
| (WebKit::WebAutomationSession::webFrameIDForHandle): |
| (WebKit::WebAutomationSession::handleForWebFrameID): |
| (WebKit::WebAutomationSession::switchToBrowsingContext): |
| (WebKit::WebAutomationSession::waitForNavigationToComplete): |
| (WebKit::findPageForFrameID): |
| (WebKit::WebAutomationSession::respondToPendingFrameNavigationCallbacksWithTimeout): |
| (WebKit::WebAutomationSession::evaluateJavaScriptFunction): |
| (WebKit::WebAutomationSession::resolveChildFrameHandle): |
| (WebKit::WebAutomationSession::resolveParentFrameHandle): |
| (WebKit::WebAutomationSession::computeElementLayout): |
| (WebKit::WebAutomationSession::selectOptionElement): |
| (WebKit::WebAutomationSession::getAllCookies): |
| (WebKit::WebAutomationSession::deleteSingleCookie): |
| (WebKit::WebAutomationSession::viewportInViewCenterPointOfElement): |
| (WebKit::WebAutomationSession::takeScreenshot): |
| * UIProcess/Automation/WebAutomationSession.h: |
| * UIProcess/Cocoa/UIDelegate.mm: |
| (WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin): |
| * UIProcess/Cocoa/WKReloadFrameErrorRecoveryAttempter.mm: |
| (-[WKReloadFrameErrorRecoveryAttempter attemptRecovery]): |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame): |
| (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrameShared): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge): |
| (WebKit::NetworkProcessProxy::requestStorageAccessConfirm): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::validateInput): |
| (WebKit::ProvisionalPageProxy::didCreateMainFrame): |
| (WebKit::ProvisionalPageProxy::didPerformClientRedirect): |
| (WebKit::ProvisionalPageProxy::didStartProvisionalLoadForFrame): |
| (WebKit::ProvisionalPageProxy::didFailProvisionalLoadForFrame): |
| (WebKit::ProvisionalPageProxy::didCommitLoadForFrame): |
| (WebKit::ProvisionalPageProxy::didNavigateWithNavigationData): |
| (WebKit::ProvisionalPageProxy::didChangeProvisionalURLForFrame): |
| (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync): |
| (WebKit::ProvisionalPageProxy::decidePolicyForResponse): |
| (WebKit::ProvisionalPageProxy::didPerformServerRedirect): |
| (WebKit::ProvisionalPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame): |
| (WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionSync): |
| (WebKit::ProvisionalPageProxy::contentFilterDidBlockLoadForFrame): |
| * UIProcess/ProvisionalPageProxy.h: |
| * UIProcess/ServiceWorkerProcessProxy.cpp: |
| (WebKit::ServiceWorkerProcessProxy::didReceiveAuthenticationChallenge): |
| * UIProcess/ServiceWorkerProcessProxy.h: |
| * UIProcess/SuspendedPageProxy.cpp: |
| (WebKit::SuspendedPageProxy::SuspendedPageProxy): |
| * UIProcess/SuspendedPageProxy.h: |
| * UIProcess/UserMediaPermissionCheckProxy.cpp: |
| (WebKit::UserMediaPermissionCheckProxy::UserMediaPermissionCheckProxy): |
| * UIProcess/UserMediaPermissionCheckProxy.h: |
| (WebKit::UserMediaPermissionCheckProxy::create): |
| (WebKit::UserMediaPermissionCheckProxy::frameID const): |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::resetAccess): |
| (WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest const): |
| (WebKit::UserMediaPermissionRequestManagerProxy::wasRequestDenied): |
| (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): |
| (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): |
| (WebKit::UserMediaPermissionRequestManagerProxy::wasGrantedVideoOrAudioAccess): |
| (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): |
| * UIProcess/UserMediaPermissionRequestManagerProxy.h: |
| * UIProcess/UserMediaPermissionRequestProxy.cpp: |
| (WebKit::UserMediaPermissionRequestProxy::UserMediaPermissionRequestProxy): |
| * UIProcess/UserMediaPermissionRequestProxy.h: |
| (WebKit::UserMediaPermissionRequestProxy::create): |
| (WebKit::UserMediaPermissionRequestProxy::mainFrameID const): |
| (WebKit::UserMediaPermissionRequestProxy::frameID const): |
| * UIProcess/WebFrameProxy.cpp: |
| (WebKit::WebFrameProxy::WebFrameProxy): |
| * UIProcess/WebFrameProxy.h: |
| (WebKit::WebFrameProxy::create): |
| (WebKit::WebFrameProxy::frameID const): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::suspendCurrentPageIfPossible): |
| (WebKit::WebPageProxy::commitProvisionalPage): |
| (WebKit::WebPageProxy::runJavaScriptInFrame): |
| (WebKit::WebPageProxy::didCreateMainFrame): |
| (WebKit::WebPageProxy::didCreateSubframe): |
| (WebKit::WebPageProxy::didCreateWindow): |
| (WebKit::WebPageProxy::didStartProvisionalLoadForFrame): |
| (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::didExplicitOpenForFrame): |
| (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame): |
| (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::willPerformClientRedirectForFrame): |
| (WebKit::WebPageProxy::didCancelClientRedirectForFrame): |
| (WebKit::WebPageProxy::didChangeProvisionalURLForFrame): |
| (WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared): |
| (WebKit::WebPageProxy::didFailProvisionalLoadForFrame): |
| (WebKit::WebPageProxy::didFailProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::didCommitLoadForFrame): |
| (WebKit::WebPageProxy::didFinishDocumentLoadForFrame): |
| (WebKit::WebPageProxy::didFinishLoadForFrame): |
| (WebKit::WebPageProxy::didFailLoadForFrame): |
| (WebKit::WebPageProxy::didSameDocumentNavigationForFrame): |
| (WebKit::WebPageProxy::didChangeMainDocument): |
| (WebKit::WebPageProxy::didReceiveTitleForFrame): |
| (WebKit::WebPageProxy::didFirstLayoutForFrame): |
| (WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame): |
| (WebKit::WebPageProxy::didDisplayInsecureContentForFrame): |
| (WebKit::WebPageProxy::didRunInsecureContentForFrame): |
| (WebKit::WebPageProxy::didDetectXSSForFrame): |
| (WebKit::WebPageProxy::frameDidBecomeFrameSet): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionSync): |
| (WebKit::WebPageProxy::decidePolicyForNavigationActionSyncShared): |
| (WebKit::WebPageProxy::decidePolicyForNewWindowAction): |
| (WebKit::WebPageProxy::decidePolicyForResponse): |
| (WebKit::WebPageProxy::decidePolicyForResponseShared): |
| (WebKit::WebPageProxy::unableToImplementPolicy): |
| (WebKit::WebPageProxy::willSubmitForm): |
| (WebKit::WebPageProxy::didNavigateWithNavigationData): |
| (WebKit::WebPageProxy::didNavigateWithNavigationDataShared): |
| (WebKit::WebPageProxy::didPerformClientRedirect): |
| (WebKit::WebPageProxy::didPerformClientRedirectShared): |
| (WebKit::WebPageProxy::didPerformServerRedirect): |
| (WebKit::WebPageProxy::didPerformServerRedirectShared): |
| (WebKit::WebPageProxy::didUpdateHistoryTitle): |
| (WebKit::WebPageProxy::runJavaScriptAlert): |
| (WebKit::WebPageProxy::runJavaScriptConfirm): |
| (WebKit::WebPageProxy::runJavaScriptPrompt): |
| (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel): |
| (WebKit::WebPageProxy::runOpenPanel): |
| (WebKit::WebPageProxy::printFrame): |
| (WebKit::WebPageProxy::focusedFrameChanged): |
| (WebKit::WebPageProxy::frameSetLargestFrameChanged): |
| (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy): |
| (WebKit::WebPageProxy::exceededDatabaseQuota): |
| (WebKit::WebPageProxy::requestStorageSpace): |
| (WebKit::WebPageProxy::makeStorageSpaceRequest): |
| (WebKit::WebPageProxy::requestGeolocationPermissionForFrame): |
| (WebKit::WebPageProxy::requestUserMediaPermissionForFrame): |
| (WebKit::WebPageProxy::enumerateMediaDevicesForFrame): |
| (WebKit::WebPageProxy::shouldAllowDeviceOrientationAndMotionAccess): |
| (WebKit::WebPageProxy::requestStorageAccessConfirm): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::webFrame const): |
| (WebKit::WebProcessProxy::canCreateFrame const): |
| (WebKit::WebProcessProxy::frameCreated): |
| (WebKit::WebProcessProxy::didDestroyFrame): |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebProcessProxy.messages.in: |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _wk_pageCountForPrintFormatter:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF): |
| * WebProcess/Automation/WebAutomationSessionProxy.cpp: |
| (WebKit::evaluateJavaScriptCallback): |
| (WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): |
| (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): |
| (WebKit::WebAutomationSessionProxy::didEvaluateJavaScriptFunction): |
| (WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal): |
| (WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle): |
| (WebKit::WebAutomationSessionProxy::resolveChildFrameWithName): |
| (WebKit::WebAutomationSessionProxy::resolveParentFrame): |
| (WebKit::WebAutomationSessionProxy::focusFrame): |
| (WebKit::WebAutomationSessionProxy::computeElementLayout): |
| (WebKit::WebAutomationSessionProxy::selectOptionElement): |
| (WebKit::WebAutomationSessionProxy::takeScreenshot): |
| (WebKit::WebAutomationSessionProxy::getCookiesForFrame): |
| (WebKit::WebAutomationSessionProxy::deleteCookie): |
| * WebProcess/Automation/WebAutomationSessionProxy.h: |
| * WebProcess/Automation/WebAutomationSessionProxy.messages.in: |
| * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm: |
| (+[WKWebProcessPlugInFrame lookUpFrameFromHandle:]): |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoad): |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| * WebProcess/Network/WebResourceLoader.cpp: |
| (WebKit::WebResourceLoader::willSendRequest): |
| (WebKit::WebResourceLoader::didReceiveResponse): |
| (WebKit::WebResourceLoader::didReceiveData): |
| (WebKit::WebResourceLoader::didFinishResourceLoad): |
| (WebKit::WebResourceLoader::didFailResourceLoad): |
| (WebKit::WebResourceLoader::didBlockAuthenticationChallenge): |
| (WebKit::WebResourceLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied): |
| (WebKit::WebResourceLoader::didReceiveResource): |
| * WebProcess/Network/WebResourceLoader.h: |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::installServiceWorker): |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::focusedFrameChanged): |
| (WebKit::WebChromeClient::contentsSizeChanged const): |
| (WebKit::WebChromeClient::hasStorageAccess): |
| (WebKit::WebChromeClient::requestStorageAccess): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::frameID const): |
| (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad): |
| (WebKit::WebFrameLoaderClient::dispatchDidFailLoad): |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: |
| * WebProcess/WebPage/WebCookieJar.cpp: |
| (WebKit::WebCookieJar::cookies const): |
| (WebKit::WebCookieJar::setCookies): |
| (WebKit::WebCookieJar::cookieRequestHeaderFieldValue const): |
| (WebKit::WebCookieJar::getRawCookies const): |
| * WebProcess/WebPage/WebCookieJar.h: |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::WebFrame): |
| (WebKit::generateFrameID): Deleted. |
| * WebProcess/WebPage/WebFrame.h: |
| (WebKit::WebFrame::frameID const): |
| * WebProcess/WebPage/WebInspector.cpp: |
| (WebKit::WebInspector::showMainResourceForFrame): |
| * WebProcess/WebPage/WebInspector.h: |
| * WebProcess/WebPage/WebInspector.messages.in: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::loadURLInFrame): |
| (WebKit::WebPage::loadDataInFrame): |
| (WebKit::WebPage::stopLoadingFrame): |
| (WebKit::WebPage::didReceivePolicyDecision): |
| (WebKit::WebPage::continueWillSubmitForm): |
| (WebKit::WebPage::runJavaScriptInFrame): |
| (WebKit::WebPage::getSourceForFrame): |
| (WebKit::WebPage::getMainResourceDataOfFrame): |
| (WebKit::WebPage::getResourceDataFromFrame): |
| (WebKit::WebPage::getWebArchiveOfFrame): |
| (WebKit::WebPage::addConsoleMessage): |
| (WebKit::WebPage::sendCSPViolationReport): |
| (WebKit::WebPage::enqueueSecurityPolicyViolationEvent): |
| (WebKit::WebPage::beginPrinting): |
| (WebKit::WebPage::computePagesForPrinting): |
| (WebKit::WebPage::computePagesForPrintingImpl): |
| (WebKit::WebPage::drawRectToImage): |
| (WebKit::WebPage::drawPagesToPDF): |
| (WebKit::WebPage::drawPagesToPDFImpl): |
| (WebKit::WebPage::drawPagesForPrinting): |
| (WebKit::WebPage::frameBecameRemote): |
| (WebKit::WebPage::hasStorageAccess): |
| (WebKit::WebPage::requestStorageAccess): |
| (WebKit::WebPage::shouldAllowDeviceOrientationAndMotionAccess): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::computePagesForPrintingPDFDocument): |
| (WebKit::WebPage::computePagesForPrintingAndDrawToPDF): |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::computePagesForPrintingPDFDocument): |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::webFrame const): |
| (WebKit::WebProcess::addWebFrame): |
| (WebKit::WebProcess::removeWebFrame): |
| * WebProcess/WebProcess.h: |
| |
| 2019-08-14 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Remove m_blockRectForTextSelection (along with related code) |
| https://bugs.webkit.org/show_bug.cgi?id=200695 |
| |
| Reviewed by Megan Gardner. |
| |
| This member variable was consulted by block selection codepaths which no longer exist. |
| No change in behavior. |
| |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::selectTextWithGranularityAtPoint): |
| (WebKit::selectionBoxForRange): Deleted. |
| |
| 2019-08-14 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r248526. |
| |
| Caused two IndexedDB perf tests to fail |
| |
| Reverted changeset: |
| |
| "Remove IDB-specific quota" |
| https://bugs.webkit.org/show_bug.cgi?id=196545 |
| https://trac.webkit.org/changeset/248526 |
| |
| 2019-08-14 Andy Estes <aestes@apple.com> |
| |
| Fix the build when ENABLE(APPLE_PAY) is false. |
| |
| * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: |
| |
| 2019-08-14 Keith Rollin <krollin@apple.com> |
| |
| Remove support for macOS < 10.13 |
| https://bugs.webkit.org/show_bug.cgi?id=200694 |
| <rdar://problem/54278851> |
| |
| Reviewed by Youenn Fablet. |
| |
| Update conditionals that reference __MAC_OS_X_VERSION_MIN_REQUIRED and |
| __MAC_OS_X_VERSION_MAX_ALLOWED, assuming that they both have values >= |
| 101300. This means that expressions like |
| "__MAC_OS_X_VERSION_MIN_REQUIRED < 101300" are always False and |
| "__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300" are always True. |
| |
| * NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm: |
| (-[WKDownloadProgress initWithDownloadTask:download:URL:sandboxExtension:]): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]): |
| * Shared/WebPreferencesDefaultValues.cpp: |
| (WebKit::defaultCustomPasteboardDataEnabled): |
| * Shared/WebPreferencesDefaultValues.h: |
| * Shared/mac/AuxiliaryProcessMac.mm: |
| * UIProcess/Cocoa/WebViewImpl.h: |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (-[WKTextTouchBarItemController itemForIdentifier:]): |
| (WebKit::WebViewImpl::mediaPlaybackControlsView const): |
| (WebKit::WebViewImpl::updateMediaTouchBar): |
| * UIProcess/mac/WebColorPickerMac.mm: |
| * WebProcess/Plugins/PDF/PDFLayerControllerSPI.h: |
| * WebProcess/Plugins/PDF/PDFPlugin.h: |
| * WebProcess/Plugins/PDF/PDFPlugin.mm: |
| (-[WKPDFPluginAccessibilityObject setPdfLayerController:]): |
| (-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:]): |
| (-[WKPDFPluginAccessibilityObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): |
| (-[WKPDFPluginAccessibilityObject accessibilityFocusedUIElement]): |
| (-[WKPDFPluginAccessibilityObject accessibilityAssociatedControlForAnnotation:]): |
| (-[WKPDFPluginAccessibilityObject accessibilityHitTest:]): |
| (WebKit::PDFPlugin::pdfDocumentDidLoad): |
| (WebKit::PDFPlugin::handleMouseEvent): |
| (WebKit::PDFPlugin::handleMouseEnterEvent): |
| (WebKit::PDFPlugin::handleContextMenuEvent): |
| (WebKit::PDFPlugin::pluginHandlesContentOffsetForAccessibilityHitTest const): |
| (WebKit::PDFPlugin::accessibilityAssociatedPluginParentForElement const): |
| (WebKit::PDFPlugin::updateCursor): Deleted. |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::initializeWebProcess): |
| |
| 2019-08-14 Brian Burg <bburg@apple.com> |
| |
| REGRESSION(r245320): Web Automation: Perform Actions hangs when pointerdown happens near top of page |
| https://bugs.webkit.org/show_bug.cgi?id=200728 |
| <rdar://problem/54260518> |
| |
| Reviewed by Devin Rousso. |
| |
| In the last major refactoring for this code, it seems that the argument to |
| platformSimulateMouseInteraction was not unified to use viewport coordinates |
| in all code paths. This patch fixes both callers to *not* add in topContentInset, |
| and instead this is added back in when doing platform-specific event simulation. |
| |
| This has no effect on iOS since it's guarded by ENABLE(WEBDRIVER_MOUSE_INTERACTIONS), |
| which is only built on macOS. |
| |
| * UIProcess/Automation/WebAutomationSession.h: |
| * UIProcess/Automation/WebAutomationSession.cpp: |
| (WebKit::WebAutomationSession::performMouseInteraction): |
| * UIProcess/Automation/mac/WebAutomationSessionMac.mm: |
| (WebKit::WebAutomationSession::platformSimulateMouseInteraction): |
| |
| 2019-08-14 Andy Estes <aestes@apple.com> |
| |
| [Cocoa] Add some WKA extension points |
| https://bugs.webkit.org/show_bug.cgi?id=200506 |
| <rdar://problem/51682474> |
| |
| Reviewed by Tim Horton. |
| |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::finishCreating): |
| (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): |
| * Shared/Cocoa/WebCoreArgumentCodersCocoa.mm: |
| (IPC::finishDecoding): |
| (IPC::finishEncoding): |
| (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::encode): |
| (IPC::ArgumentCoder<ApplePaySessionPaymentRequest>::decode): |
| * Shared/WebCoreArgumentCoders.h: |
| |
| 2019-08-14 Luming Yin <luming_yin@apple.com> |
| |
| v3: CrashTracer: Regression : MobileSafari at UIKitCore: -[UITargetedPreview initWithView:parameters:] |
| https://bugs.webkit.org/show_bug.cgi?id=200634 |
| |
| Reviewed by Simon Fraser. |
| |
| Under rare race conditions, the WKContentView may no longer have an associated window. However, |
| UIContextMenuInteraction may still attempt initialize a UITargetedPreview with the orphaned |
| WKContentView. Speculative fix for crashes under such scenarios, so that we can continue without |
| a context menu configuration to prevent the UIKit exception. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView continueContextMenuInteraction:]): |
| |
| 2019-08-14 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentChangeObserver] Stop content change observation explicitly. |
| https://bugs.webkit.org/show_bug.cgi?id=200689 |
| <rdar://problem/54274887> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleSyntheticClick): |
| |
| 2019-08-14 Youenn Fablet <youenn@apple.com> |
| |
| Remove use of emptySessionID from NetworkLoadParameters |
| https://bugs.webkit.org/show_bug.cgi?id=200712 |
| |
| Reviewed by Alex Christensen. |
| |
| Make NetworkLoadParameters constructor take a session ID. |
| Update call sites accordingly. |
| |
| * NetworkProcess/AdClickAttributionManager.cpp: |
| (WebKit::AdClickAttributionManager::fireConversionRequest): |
| * NetworkProcess/Downloads/DownloadManager.cpp: |
| (WebKit::DownloadManager::startDownload): |
| * NetworkProcess/NetworkCORSPreflightChecker.cpp: |
| (WebKit::NetworkCORSPreflightChecker::startPreflight): |
| * NetworkProcess/NetworkLoadParameters.h: |
| (WebKit::NetworkLoadParameters::NetworkLoadParameters): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::preconnectTo): |
| * NetworkProcess/NetworkResourceLoadParameters.cpp: |
| (WebKit::NetworkResourceLoadParameters::encode const): |
| (WebKit::NetworkResourceLoadParameters::decode): |
| * NetworkProcess/NetworkResourceLoadParameters.h: |
| (WebKit::NetworkResourceLoadParameters::NetworkResourceLoadParameters): |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: |
| (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad): |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| (WebKit::WebLoaderStrategy::startPingLoad): |
| (WebKit::WebLoaderStrategy::preconnectTo): |
| |
| 2019-08-14 Youenn Fablet <youenn@apple.com> |
| |
| Remove use of emptySessionID from WebPageCreationParameters |
| https://bugs.webkit.org/show_bug.cgi?id=200708 |
| |
| Reviewed by Alex Christensen. |
| |
| Make WebPageCreationParameters constructor take a SessionID. |
| Update constructor call sites. |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| (WebKit::WebPageCreationParameters::WebPageCreationParameters): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| |
| 2019-08-14 Youenn Fablet <youenn@apple.com> |
| |
| Remove API::PageConfiguration::m_sessionID |
| https://bugs.webkit.org/show_bug.cgi?id=200670 |
| |
| Reviewed by Alex Christensen. |
| |
| We can remove this member since it is only accessed for a debug assertion that can be removed without any harm. |
| |
| * UIProcess/API/APIPageConfiguration.cpp: |
| (API::PageConfiguration::PageConfiguration): |
| (API::PageConfiguration::copy const): |
| (API::PageConfiguration::setWebsiteDataStore): |
| * UIProcess/API/APIPageConfiguration.h: |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextCreatePageForWebView): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::createWebPage): |
| |
| 2019-08-14 Youenn Fablet <youenn@apple.com> |
| |
| ThreadableBlobRegistry::blobSize should take a SessionID as parameter |
| https://bugs.webkit.org/show_bug.cgi?id=200671 |
| |
| Reviewed by Alex Christensen. |
| |
| Update WebCacheStorageConnection to implement sessionID getter. |
| Update NetworkConnectionToWebProcess to get a sessionID as parameter to blobSize computation. |
| |
| * NetworkProcess/curl/NetworkDataTaskCurl.cpp: |
| (WebKit::NetworkDataTaskCurl::createCurlRequest): |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::blobSize): |
| (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkProcessPlatformStrategies.cpp: |
| (WebKit::NetworkProcessPlatformStrategies::createBlobRegistry): |
| * WebProcess/Cache/WebCacheStorageConnection.h: |
| * WebProcess/FileAPI/BlobRegistryProxy.cpp: |
| (WebKit::BlobRegistryProxy::blobSize): |
| * WebProcess/FileAPI/BlobRegistryProxy.h: |
| |
| 2019-08-14 Youenn Fablet <youenn@apple.com> |
| |
| Remove SessionID default constructor |
| https://bugs.webkit.org/show_bug.cgi?id=200669 |
| |
| Reviewed by Alex Christensen. |
| |
| Update IPC decoder to use an Optional<SessionID>. |
| Update PageConfiguration to use emptySessionID instead of default constructor. |
| |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| * UIProcess/API/APIPageConfiguration.cpp: |
| (API::PageConfiguration::PageConfiguration): |
| (API::PageConfiguration::sessionID): Deleted. |
| (API::PageConfiguration::setSessionID): Deleted. |
| |
| 2019-08-14 Youenn Fablet <youenn@apple.com> |
| |
| Make WebSWOriginStore::m_webSWServerConnections a WeakHashSet |
| https://bugs.webkit.org/show_bug.cgi?id=200661 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/ServiceWorker/WebSWOriginStore.cpp: |
| (WebKit::WebSWOriginStore::importComplete): |
| (WebKit::WebSWOriginStore::registerSWServerConnection): |
| (WebKit::WebSWOriginStore::unregisterSWServerConnection): |
| (WebKit::WebSWOriginStore::didInvalidateSharedMemory): |
| * NetworkProcess/ServiceWorker/WebSWOriginStore.h: |
| |
| 2019-08-14 Youenn Fablet <youenn@apple.com> |
| |
| NetworkProcess::m_swServerConnections should use WeakPtr |
| https://bugs.webkit.org/show_bug.cgi?id=200660 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Use WeakPtr for SWServer connections as an extra safety measure. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::postMessageToServiceWorkerClient): |
| (WebKit::NetworkProcess::postMessageToServiceWorker): |
| (WebKit::NetworkProcess::registerSWServerConnection): |
| (WebKit::NetworkProcess::unregisterSWServerConnection): |
| * NetworkProcess/NetworkProcess.h: |
| |
| 2019-08-14 Youenn Fablet <youenn@apple.com> |
| |
| Move some WebRTC runtime flags from experimental to internal |
| https://bugs.webkit.org/show_bug.cgi?id=200672 |
| |
| Reviewed by Eric Carlson. |
| |
| * Shared/WebPreferences.yaml: |
| |
| 2019-08-13 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| shouldRespectImageOrientation should be a value in ImageOrientation |
| https://bugs.webkit.org/show_bug.cgi?id=200553 |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::imagePositionInformation): |
| |
| 2019-08-13 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Switch NSURLSession on top navigation to prevalent resource with user interaction |
| https://bugs.webkit.org/show_bug.cgi?id=200642 |
| <rdar://problem/53962073> |
| |
| Reviewed by Alex Christensen. |
| |
| Since prevalent resources with user interaction get to keep their cookies and website |
| data, we should use a different NSURLSessions for when they are first-party websites |
| and have access to that data. This patch achieves that. |
| |
| The WebKit::NetworkDataTaskCocoa constructor now checks with the network storage session |
| if the first party for this load should be isolated. The category for which this is true |
| is checked in the new function |
| WebCore:NetworkStorageSession::shouldBlockThirdPartyCookiesButKeepFirstPartyCookiesFor() |
| which in turn is backed by a new split of m_registrableDomainsToBlockCookieFor into: |
| - m_registrableDomainsToBlockAndDeleteCookiesFor |
| - m_registrableDomainsToBlockButKeepCookiesFor |
| ... in WebCore:NetworkStorageSession. |
| |
| Non-isolated sessions are now picked up through the convenience function |
| WebKit::NetworkSessionCocoa::session() whereas isolated sessions are created lazily and |
| picked up through WebKit::NetworkSessionCocoa::isolatedSession(). |
| |
| The number of isolated NSURLSessions in memory is capped to 10. When the cap is hit, |
| the session that's been unused the longest is aged out. |
| |
| The C API changes are test infrastructure. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::clear): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::domainsToBlockAndDeleteCookiesFor const): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::domainsToBlockButKeepCookiesFor const): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::updateCookieBlocking): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::domainsToBlock const): Deleted. |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::clear): |
| (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::updateCookieBlockingForDomains): |
| (WebKit::ResourceLoadStatisticsStore::debugLogDomainsInBatches): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): |
| (WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdateForDomains): Deleted. |
| (WebKit::WebResourceLoadStatisticsStore::scheduleClearBlockingStateForDomains): Deleted. |
| Dead code. |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| (WebKit::RegistrableDomainsToBlockCookiesFor::isolatedCopy const): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::updatePrevalentDomainsToBlockCookiesFor): |
| (WebKit::NetworkProcess::scheduleClearInMemoryAndPersistent): |
| (WebKit::NetworkProcess::hasIsolatedSession const): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/NetworkSession.h: |
| (WebKit::NetworkSession::shouldIsolateSessionsForPrevalentTopFrames const): |
| (WebKit::NetworkSession::hasIsolatedSession const): |
| (WebKit::NetworkSession::clearIsolatedSessions): |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| (WebKit::NetworkSessionCocoa::session): |
| (WebKit::NetworkSessionCocoa::isolatedSession): |
| (WebKit::NetworkSessionCocoa::hasIsolatedSession const): |
| (WebKit::NetworkSessionCocoa::clearIsolatedSessions): |
| (WebKit::NetworkSessionCocoa::invalidateAndCancel): |
| (WebKit::NetworkSessionCocoa::clearCredentials): |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKWebsiteDataStoreRef.cpp: |
| (WKWebsiteDataStoreStatisticsHasIsolatedSession): |
| * UIProcess/API/C/WKWebsiteDataStoreRef.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::hasIsolatedSession): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::hasLocalStorageForTesting const): |
| (WebKit::WebsiteDataStore::hasIsolatedSessionForTesting const): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| |
| 2019-08-13 Chris Dumez <cdumez@apple.com> |
| |
| Fix potential thread safety issue under WebResourceLoadStatisticsStore::hasHadUserInteraction() |
| https://bugs.webkit.org/show_bug.cgi?id=200688 |
| |
| Reviewed by Alex Christensen. |
| |
| Fix potential thread safety issue under WebResourceLoadStatisticsStore::hasHadUserInteraction(). |
| It passes a RegistrableDomain to another thread without isolated copying it. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction): |
| |
| 2019-08-13 Chris Dumez <cdumez@apple.com> |
| |
| Fix potential thread safety issue under StorageManager::getSessionStorageOrigins() |
| https://bugs.webkit.org/show_bug.cgi?id=200684 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Fix potential thread safety issue under StorageManager::getSessionStorageOrigins(). The origins are being |
| passed from the background queue to the main thread without isolated copy. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::getSessionStorageOrigins): |
| |
| 2019-08-12 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthn] Make CtapHidAuthenticator/U2fHidAuthenticator to CtapAuthenticator/U2fAuthenticator |
| https://bugs.webkit.org/show_bug.cgi?id=191527 |
| <rdar://problem/54237146> |
| |
| Reviewed by Chris Dumez. |
| |
| This patch makes an ABC CtapDriver, which services as an abstract interface for CtapAuthenticator/U2fAuthenticator to talk to |
| the actual object that implement the specific CTAP protocol that mananges communications over different transports, for example, |
| CtapHidDriver, such that CtapAuthenticator/U2fAuthenticator can be shared across different transports. |
| |
| This patch also renames CtapHidAuthenticator/U2fHidAuthenticator to CtapAuthenticator/U2fAuthenticator correspondingly. |
| |
| * Sources.txt: |
| * UIProcess/WebAuthentication/Cocoa/HidService.mm: |
| (WebKit::HidService::continueAddDeviceAfterGetInfo): |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp: Renamed from Source/WebKit/UIProcess/WebAuthentication/fido/CtapHidAuthenticator.cpp. |
| (WebKit::CtapAuthenticator::CtapAuthenticator): |
| (WebKit::CtapAuthenticator::makeCredential): |
| (WebKit::CtapAuthenticator::continueMakeCredentialAfterResponseReceived const): |
| (WebKit::CtapAuthenticator::getAssertion): |
| (WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived): |
| (WebKit::CtapAuthenticator::tryDowngrade): |
| * UIProcess/WebAuthentication/fido/CtapAuthenticator.h: Copied from Source/WebKit/UIProcess/WebAuthentication/fido/CtapHidAuthenticator.h. |
| * UIProcess/WebAuthentication/fido/CtapDriver.h: Renamed from Source/WebKit/UIProcess/WebAuthentication/fido/CtapHidAuthenticator.h. |
| * UIProcess/WebAuthentication/fido/CtapHidDriver.h: |
| (WebKit::CtapHidDriver::setProtocol): |
| * UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp: Renamed from Source/WebKit/UIProcess/WebAuthentication/fido/U2fHidAuthenticator.cpp. |
| (WebKit::U2fAuthenticator::U2fAuthenticator): |
| (WebKit::U2fAuthenticator::makeCredential): |
| (WebKit::U2fAuthenticator::checkExcludeList): |
| (WebKit::U2fAuthenticator::issueRegisterCommand): |
| (WebKit::U2fAuthenticator::getAssertion): |
| (WebKit::U2fAuthenticator::issueSignCommand): |
| (WebKit::U2fAuthenticator::issueNewCommand): |
| (WebKit::U2fAuthenticator::issueCommand): |
| (WebKit::U2fAuthenticator::responseReceived): |
| (WebKit::U2fAuthenticator::continueRegisterCommandAfterResponseReceived): |
| (WebKit::U2fAuthenticator::continueCheckOnlyCommandAfterResponseReceived): |
| (WebKit::U2fAuthenticator::continueBogusCommandAfterResponseReceived): |
| (WebKit::U2fAuthenticator::continueSignCommandAfterResponseReceived): |
| * UIProcess/WebAuthentication/fido/U2fAuthenticator.h: Renamed from Source/WebKit/UIProcess/WebAuthentication/fido/U2fHidAuthenticator.h. |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-13 Chris Dumez <cdumez@apple.com> |
| |
| Crash under IPC::Connection::markCurrentlyDispatchedMessageAsInvalid() |
| https://bugs.webkit.org/show_bug.cgi?id=200674 |
| <rdar://problem/50692748> |
| |
| Reviewed by Geoff Garen. |
| |
| When the client terminates a provisional process (e.g. via the [WKWebView _killWebContentProcessAndResetState] |
| SPI), the WebProcessProxy would notify its associated WebPageProxy objects that it had terminated but would fail |
| to notify its associated ProvisionalPageProxy objects. As a result, those objects would not get destroyed and |
| would still think that they were in the middle of a provisional load the next time a load started. This inconsistent |
| state would lead to crashes such as the one in the radar. |
| |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::cancel): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::requestTermination): |
| |
| 2019-08-13 Youenn Fablet <youenn@apple.com> |
| |
| Blob registries should be keyed by session IDs |
| https://bugs.webkit.org/show_bug.cgi?id=200567 |
| <rdar://problem/54120212> |
| |
| Reviewed by Alex Christensen. |
| |
| Move blob registry to NetworkSession so that it is partitioned by session ID. |
| In case session ID is not given through IPC, use the connection as key to get the network session. |
| This is used for blobSize. |
| |
| * NetworkProcess/Downloads/DownloadManager.cpp: |
| (WebKit::DownloadManager::startDownload): |
| * NetworkProcess/Downloads/DownloadManager.h: |
| * NetworkProcess/FileAPI/NetworkBlobRegistry.cpp: |
| * NetworkProcess/FileAPI/NetworkBlobRegistry.h: Removed. |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::didClose): |
| (WebKit::NetworkConnectionToWebProcess::resolveBlobReferences): |
| (WebKit::NetworkConnectionToWebProcess::registerFileBlobURL): |
| (WebKit::NetworkConnectionToWebProcess::registerBlobURL): |
| (WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL): |
| (WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked): |
| (WebKit::NetworkConnectionToWebProcess::registerBlobURLForSlice): |
| (WebKit::NetworkConnectionToWebProcess::unregisterBlobURL): |
| (WebKit::NetworkConnectionToWebProcess::blobSize): |
| (WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles): |
| (WebKit::NetworkConnectionToWebProcess::filesInBlob): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::blobRegistry): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcessPlatformStrategies.cpp: |
| (WebKit::NetworkProcessPlatformStrategies::createBlobRegistry): |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::startNetworkLoad): |
| * NetworkProcess/NetworkSession.h: |
| (WebKit::NetworkSession::blobRegistry): |
| * NetworkProcess/soup/NetworkDataTaskSoup.cpp: |
| (WebKit::NetworkDataTaskSoup::createRequest): |
| * NetworkProcess/soup/NetworkSessionSoup.cpp: |
| (WebKit::NetworkSessionSoup::createWebSocketTask): |
| * Sources.txt: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/FileAPI/BlobRegistryProxy.cpp: |
| (WebKit::BlobRegistryProxy::registerFileBlobURL): |
| (WebKit::BlobRegistryProxy::registerBlobURL): |
| (WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked): |
| (WebKit::BlobRegistryProxy::unregisterBlobURL): |
| (WebKit::BlobRegistryProxy::registerBlobURLForSlice): |
| (WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles): |
| * WebProcess/FileAPI/BlobRegistryProxy.h: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles): |
| * WebProcess/Network/NetworkProcessConnection.h: |
| |
| 2019-08-13 Youenn Fablet <youenn@apple.com> |
| |
| User Agent and SessionID should be given to NetworkRTCProvider to set up the correct proxy information |
| https://bugs.webkit.org/show_bug.cgi?id=200583 |
| |
| Reviewed by Eric Carlson. |
| |
| Pass session id and user agent whenever creating a TCP client socket. |
| Use this information to get the proxy information from NetworkSession and pass it to libwebrtc socket creation. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/webrtc/NetworkRTCProvider.cpp: |
| (WebKit::NetworkRTCProvider::proxyInfoFromSession): |
| (WebKit::NetworkRTCProvider::createClientTCPSocket): |
| * NetworkProcess/webrtc/NetworkRTCProvider.h: |
| * NetworkProcess/webrtc/NetworkRTCProvider.messages.in: |
| * WebKit.xcodeproj/project.pbxproj: |
| * NetworkProcess/webrtc/NetworkRTCProvider.mm: Added. |
| (WebKit::NetworkRTCProvider::proxyInfoFromSession): |
| * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: |
| (WebKit::LibWebRTCProvider::createPeerConnection): |
| (WebKit::LibWebRTCProvider::createSocketFactory): |
| * WebProcess/Network/webrtc/LibWebRTCProvider.h: |
| * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: |
| (WebKit::LibWebRTCSocketFactory::createServerTcpSocket): |
| (WebKit::LibWebRTCSocketFactory::createUdpSocket): |
| (WebKit::LibWebRTCSocketFactory::createClientTcpSocket): |
| (WebKit::LibWebRTCSocketFactory::createAsyncResolver): |
| * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h: |
| |
| 2019-08-12 Chris Dumez <cdumez@apple.com> |
| |
| Fix bad RELEASE_LOG_ERROR under ProvisionalPageProxy::ProvisionalPageProxy() |
| https://bugs.webkit.org/show_bug.cgi?id=200646 |
| |
| Reviewed by Alex Christensen. |
| |
| Fix bad RELEASE_LOG_ERROR under ProvisionalPageProxy::ProvisionalPageProxy(). Should be a |
| simple RELEASE_LOG() as this is not an error. |
| |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): |
| |
| 2019-08-12 Sam Weinig <weinig@apple.com> |
| |
| Replace multiparameter overloads of append() in StringBuilder as a first step toward standardizinging on the flexibleAppend() implementation |
| https://bugs.webkit.org/show_bug.cgi?id=200614 |
| |
| Reviewed by Darin Adler. |
| |
| Renames StringBuilder::append(const LChar*, unsigned), StringBuilder::append(const UChar*, unsigned) and |
| StringBuilder::append(const char*, unsigned) to StringBuilder::appendCharacters(...). |
| |
| Renames StringBuilder::append(const String& string, unsigned offset, unsigned length) to |
| StringBuilder::appendSubstring(...). |
| |
| * Shared/mac/AuxiliaryProcessMac.mm: |
| (WebKit::setAndSerializeSandboxParameters): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::didReceiveInvalidMessage): |
| Update for renames. |
| |
| 2019-08-12 Dean Jackson <dino@apple.com> |
| |
| Contextual menu Hide and Show Link Previews should not have a symbol |
| https://bugs.webkit.org/show_bug.cgi?id=200645 |
| <rdar://problem/54129647> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Don't use an image on the UIMenuItem. |
| |
| * UIProcess/API/Cocoa/_WKElementAction.mm: |
| (+[_WKElementAction imageForElementActionType:]): Return nil for Show/Hide Link Previews. |
| |
| 2019-08-12 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, add missing WTF::initializeMainThread() call to fix some crashes on the bots after r248533. |
| |
| * Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm: |
| (WebKit::XPCServiceMain): |
| |
| 2019-08-12 Megan Gardner <megan_gardner@apple.com> |
| |
| Fix Crash in Mail Search |
| https://bugs.webkit.org/show_bug.cgi?id=200589 |
| <rdar://problem/53666720> |
| |
| Reviewed by Tim Horton. |
| |
| If we search in Mail backwards first, for AppKit reasons |
| we get a -1 for the index of the found item. |
| Do not try and insert data in this case. |
| |
| * UIProcess/mac/WKTextFinderClient.mm: |
| |
| 2019-08-12 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [WPE][GTK] Fix building without unified sources |
| https://bugs.webkit.org/show_bug.cgi?id=200641 |
| |
| Reviewed by Žan Doberšek. |
| |
| * UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp: Add missing inclusions for headers |
| WebCore/GtkUtilities.h (for convertWidgetPointToScreenPoint), WebCore/IntPoint.h, and |
| WebPageProxy.h (the two latter to avoid usage of undefined types). |
| (WebKit::WebDataListSuggestionsDropdownGtk::show): Add namespace prefix to use |
| WebCore::IntPoint. |
| |
| 2019-08-12 Sihui Liu <sihui_liu@apple.com> |
| |
| Clear m_sessionStorageNamespaces on the background thread |
| https://bugs.webkit.org/show_bug.cgi?id=200631 |
| <rdar://problem/54149638> |
| |
| Reviewed by Chris Dumez. |
| |
| Network process receives messages about web page state from web process and destroys sessionStorageNamespace if |
| needed. It also receives messages about session state from UI process and destroys StorageManager, which owns |
| SessionStorageNamespaces, if needed. Because of the race in receiving the messages from different processes, |
| network process may decide to destroy StorageManager before destroying all SessionStorageNamespaces, and |
| SessionStorageNamespaces are destroyed with StorageManager on the main thread. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::waitUntilTasksFinished): |
| |
| 2019-08-12 Sihui Liu <sihui_liu@apple.com> |
| |
| Remove an assertion in ~StorageArea() |
| https://bugs.webkit.org/show_bug.cgi?id=200630 |
| <rdar://problem/54097722> |
| |
| Reviewed by Chris Dumez. |
| |
| In r247370, we clear the LocalStorageNamespace before the destructor of LocalStorageNamespace is invoked, to |
| make sure StorageArea gets destroyed on the background thread. |
| StorageArea can get destroyed before LocalStorageNamespace, so the assertion in ~StorageArea() is not true any |
| more. |
| |
| * NetworkProcess/WebStorage/StorageArea.cpp: |
| (WebKit::StorageArea::~StorageArea): |
| |
| 2019-08-12 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iPadOS] Web pages sometimes load at half width in Safari |
| https://bugs.webkit.org/show_bug.cgi?id=200624 |
| <rdar://problem/52694257> |
| |
| Reviewed by Simon Fraser. |
| |
| Whenever WKWebView's size changes, it normally notifies the web content process by calling into WebPageProxy:: |
| setViewportConfigurationViewLayoutSize, which remembers this view layout size using a member variable, |
| m_viewportConfigurationViewLayoutSize. Later, m_viewportConfigurationViewLayoutSize is consulted as a part of |
| constructing the creation parameters used to set up a new page. |
| |
| However, during animated resize, WKWebView avoids these calls to setViewportConfigurationViewLayoutSize via the |
| dynamic viewport update mode check in -[WKWebView _frameOrBoundsChanged]. Instead, the new view layout size is |
| pushed to the web process by calling WebPageProxy::dynamicViewportSizeUpdate. |
| |
| Since dynamicViewportSizeUpdate doesn't update m_viewportConfigurationViewLayoutSize, the next |
| WebPageCreationParameters that are created with this WebPageProxy (e.g. after a process swap, or after |
| reloading, if the process was terminated) will use the size of the WKWebView prior to the most recent animated |
| resize. |
| |
| To fix the bug, we simply make sure that m_viewportConfigurationViewLayoutSize is updated in the dynamic |
| viewport size update (i.e. animated resize) case as well. |
| |
| Test: WebKit.CreateWebPageAfterAnimatedResize |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::dynamicViewportSizeUpdate): |
| |
| 2019-08-12 Chris Dumez <cdumez@apple.com> |
| |
| Crash under NetworkResourceLoader::start() |
| https://bugs.webkit.org/show_bug.cgi?id=200628 |
| |
| Reviewed by Youenn Fablet. |
| |
| Make sure the NetworkResourceLoader is still alive when the lambda passed to NetworkLoadChecker::check() |
| gets executed. |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::start): |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| * NetworkProcess/NetworkResourceLoader.h: |
| |
| 2019-08-12 Jonathan Bedard <jbedard@apple.com> |
| |
| Tapping buttons in Data Detectors lookup previews doesn't work (Follow-up fix) |
| https://bugs.webkit.org/show_bug.cgi?id=200579 |
| <rdar://problem/54056519> |
| |
| Reviewed by Megan Gardner. |
| |
| * Platform/spi/ios/UIKitSPI.h: Add _UIContextMenuStyle SPI. |
| |
| 2019-08-12 Chris Dumez <cdumez@apple.com> |
| |
| Add threading assertions to RefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=200507 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Enable new RefCounted threading assertions for WebKit2 |
| (UIProcess + auxiliary processes). |
| |
| * Shared/AuxiliaryProcess.cpp: |
| (WebKit::AuxiliaryProcess::initialize): |
| * Shared/Cocoa/WebKit2InitializeCocoa.mm: |
| (WebKit::runInitializationCode): |
| * Shared/WebKit2Initialize.cpp: |
| (WebKit::InitializeWebKit2): |
| |
| 2019-08-12 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, rolling out r248525. |
| |
| Revert new threading assertions while I work on fixing the |
| issues they exposed |
| |
| Reverted changeset: |
| |
| "Add threading assertions to RefCounted" |
| https://bugs.webkit.org/show_bug.cgi?id=200507 |
| https://trac.webkit.org/changeset/248525 |
| |
| 2019-08-12 Youenn Fablet <youenn@apple.com> |
| |
| Remove IDB-specific quota |
| https://bugs.webkit.org/show_bug.cgi?id=196545 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::createIDBServer): |
| (WebKit::NetworkProcess::addIndexedDatabaseSession): |
| (WebKit::NetworkProcess::setIDBPerOriginQuota): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/C/WKContext.cpp: |
| (WKContextSetIDBPerOriginQuota): Deleted. |
| * UIProcess/API/C/WKContextPrivate.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::setIDBPerOriginQuota): Deleted. |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-08-11 Chris Dumez <cdumez@apple.com> |
| |
| Add threading assertions to RefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=200507 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Enable new RefCounted threading assertions for WebKit2 |
| (UIProcess + auxiliary processes). |
| |
| * Shared/AuxiliaryProcess.cpp: |
| (WebKit::AuxiliaryProcess::initialize): |
| * Shared/Cocoa/WebKit2InitializeCocoa.mm: |
| (WebKit::runInitializationCode): |
| * Shared/WebKit2Initialize.cpp: |
| (WebKit::InitializeWebKit2): |
| |
| 2019-08-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| WebPage and ViewportConfiguration have differing notions of viewLayoutSize |
| https://bugs.webkit.org/show_bug.cgi?id=200619 |
| |
| Reviewed by Tim Horton. |
| |
| The notion of a "view layout size" exists on WebPage and WebPageProxy for the purpose of specifying an intrinsic |
| content size for the entire web view on macOS. However, it also exists in ViewportConfiguration (as |
| viewLayoutSize) and WebPageProxy (under the name m_viewportConfigurationViewLayoutSize) for the purposes of |
| specifying the minimum layout size of the page's viewport. |
| |
| This is especially confusing in WebPageProxy, which has both m_viewportConfigurationViewLayoutSize and |
| m_viewLayoutSize. To remedy this, rename "*viewLayoutSize" for the purposes of specifying an intrinsic web view |
| size to "*minimumSizeForAutoLayout" instead, which is consistent with the corresponding SPI property name on |
| WKView. |
| |
| No change in behavior. |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _minimumLayoutWidth]): |
| (-[WKWebView _setMinimumLayoutWidth:]): |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::setMinimumSizeForAutoLayout): |
| (WebKit::WebViewImpl::minimumSizeForAutoLayout const): |
| (WebKit::WebViewImpl::setIntrinsicContentSize): |
| * UIProcess/DrawingAreaProxy.h: |
| (WebKit::DrawingAreaProxy::minimumSizeForAutoLayoutDidChange): |
| (WebKit::DrawingAreaProxy::viewLayoutSizeDidChange): Deleted. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::minimumSizeForAutoLayout const): |
| (WebKit::WebPageProxy::viewLayoutSize const): Deleted. |
| * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h: |
| * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm: |
| (WebKit::TiledCoreAnimationDrawingAreaProxy::minimumSizeForAutoLayoutDidChange): |
| (WebKit::TiledCoreAnimationDrawingAreaProxy::didUpdateGeometry): |
| (WebKit::TiledCoreAnimationDrawingAreaProxy::willSendUpdateGeometry): |
| (WebKit::TiledCoreAnimationDrawingAreaProxy::viewLayoutSizeDidChange): Deleted. |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| (WebKit::WebPage::reinitializeWebPage): |
| (WebKit::WebPage::setMinimumSizeForAutoLayout): |
| (WebKit::WebPage::updateIntrinsicContentSizeIfNeeded): |
| (WebKit::WebPage::setViewLayoutSize): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::minimumSizeForAutoLayout const): |
| (WebKit::WebPage::viewLayoutSize const): Deleted. |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: |
| (WebKit::TiledCoreAnimationDrawingArea::updateGeometry): |
| |
| 2019-08-10 Alex Christensen <achristensen@webkit.org> |
| |
| Disable ContentChangeObserver TouchEvent adjustment on youtube.com on iOS in mobile browsing mode |
| https://bugs.webkit.org/show_bug.cgi?id=200609 |
| <rdar://problem/54015403> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| * 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): |
| |
| 2019-08-10 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| [iOS] Add a quirk for gmail.com messages on iPhone iOS13 |
| https://bugs.webkit.org/show_bug.cgi?id=200605 |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Use WebPage::platformUserAgent() to add the gmail.com quirk. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::platformUserAgent const): |
| |
| 2019-08-10 Tim Horton <timothy_horton@apple.com> |
| |
| Remove some more unused 32-bit code |
| https://bugs.webkit.org/show_bug.cgi?id=200607 |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * Modules/OSX.modulemap: |
| |
| 2019-08-09 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS 13] Google Docs/Slides/Sheets: paste often doesn't work and sometimes produces an error |
| https://bugs.webkit.org/show_bug.cgi?id=200591 |
| <rdar://problem/54102238> |
| |
| Reviewed by Ryosuke Niwa and Tim Horton. |
| |
| Adopts UIKit SPI to avoid incrementing the general pasteboard's change count whenever an editable element is |
| focused. This is due to how, in iOS 13, UIKit temporarily writes an image to the pasteboard when showing the |
| keyboard, to determine whether or not to show the Memojis in the input view. |
| |
| This causes UIPasteboard's changeCount to increment twice due to adding and then removing the image, which means |
| that the changeCount sanity checks in the web process will race against the pasteboard gaining and then losing |
| this temporary image. |
| |
| Instead, the new -supportsImagePaste SPI may be used to short-circuit this step, and avoid updating the |
| changeCount when UIKeyboardImpl's delegate changes. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView supportsImagePaste]): |
| |
| 2019-08-09 Alex Christensen <achristensen@webkit.org> |
| |
| Remove unused Connection::sendWithReply |
| https://bugs.webkit.org/show_bug.cgi?id=200590 |
| |
| Reviewed by Chris Dumez. |
| |
| This was attempted in r245151, but rolled out in r245164 because my SecItemShim code didn't work well on non-main threads. |
| Chris found a better solution for SecItemShim in r248014, making this unused code. Let's remove it. |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::invalidate): |
| (IPC::Connection::processIncomingSyncReply): |
| (IPC::Connection::connectionDidClose): |
| (IPC::Connection::sendMessageWithReply): Deleted. |
| * Platform/IPC/Connection.h: |
| (IPC::Connection::send): |
| (IPC::Connection::sendWithReply): Deleted. |
| |
| 2019-08-09 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2] Remove context menu hints on navigation |
| https://bugs.webkit.org/show_bug.cgi?id=200588 |
| rdar://problem/54061796 |
| |
| Reviewed by Tim Horton. |
| |
| Make sure the context menu hint doesn't linger across navigations by hosting it in its |
| own container view (shared with drag previews), and hiding that view on navigation (unparenting |
| may have bad consequences). We remove the view when the animation ends. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _didCommitLoadForMainFrame]): |
| (-[WKContentView containerViewForTargetedPreviews]): |
| (-[WKContentView _hideContextMenu]): |
| (-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]): |
| |
| 2019-08-09 Alex Christensen <achristensen@webkit.org> |
| |
| Disable CSSOM View Scrolling API for IMDb iOS app |
| https://bugs.webkit.org/show_bug.cgi?id=200586 |
| <rdar://problem/53645833> |
| |
| Reviewed by Simon Fraser. |
| |
| Change the CSSOMViewScrollingAPIEnabled default value to be off for the IMDb app's WKWebViews. |
| I manually verified this is effective in those WKWebViews but no other WKWebViews and that it fixes the radar. |
| |
| * Shared/WebPreferences.yaml: |
| * Shared/WebPreferencesDefaultValues.cpp: |
| (WebKit::defaultCSSOMViewScrollingAPIEnabled): |
| * Shared/WebPreferencesDefaultValues.h: |
| |
| 2019-08-09 Tim Horton <timothy_horton@apple.com> |
| |
| Tapping buttons in Data Detectors lookup previews doesn't work |
| https://bugs.webkit.org/show_bug.cgi?id=200579 |
| <rdar://problem/54056519> |
| |
| Reviewed by Megan Gardner. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _contextMenuInteraction:styleForMenuWithConfiguration:]): |
| If a Data Detectors context menu wants the action menu style, provide it. |
| |
| (-[WKContentView contextMenuInteraction:willPerformPreviewActionForMenuWithConfiguration:animator:]): |
| If a Data Detectors context menu provides a view controller to present |
| on context menu commit, present it. We present on top of the same view |
| controller that is currently presenting the context menu, but modally |
| instead of inside the context menu. |
| |
| If a Data Detectors context menu instead provides a URL to launch on |
| context menu commit, call openURL. |
| |
| In both cases, change the commit style to pop, since we're committing |
| instead of dismissing. |
| |
| 2019-08-08 Dean Jackson <dino@apple.com> |
| |
| REGRESSION (52279987): Most of the WKUIDelegate contextMenu delegate methods are not being called |
| https://bugs.webkit.org/show_bug.cgi?id=200557 |
| <rdar://problem/53717962> |
| |
| Reviewed by Wenson Hsieh. |
| |
| UIKit changed the name of delegates recently. We ignored the warning because |
| it was still calling the old methods. However, it will only do so for applications |
| authored by Apple, breaking 3rd parties. |
| |
| The change here is just adopting the new methods in place of the old ones. |
| It does not change the API that WebKit vends (they still use the older names). |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView contextMenuInteraction:willDisplayMenuForConfiguration:animator:]): |
| (-[WKContentView contextMenuInteraction:willPerformPreviewActionForMenuWithConfiguration:animator:]): |
| (-[WKContentView contextMenuInteraction:willEndForConfiguration:animator:]): |
| (-[WKContentView contextMenuInteractionWillPresent:]): Deleted. |
| (-[WKContentView contextMenuInteraction:willCommitWithAnimator:]): Deleted. |
| (-[WKContentView contextMenuInteractionDidEnd:]): Deleted. |
| |
| 2019-08-08 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2] Hide previews when an inner overflow or frame scrollview scrolls |
| https://bugs.webkit.org/show_bug.cgi?id=200552 |
| rdar://problem/54086338 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Give UITargetedPreview the UIScrollView that the target element is inside of, |
| so it can clean up if the user starts to scroll that view. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _createTargetedPreviewIfPossible]): |
| |
| 2019-08-08 Chris Dumez <cdumez@apple.com> |
| |
| Add threading assertions to WebStorage code |
| https://bugs.webkit.org/show_bug.cgi?id=200550 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add threading assertions to WebStorage code for extra safety. |
| |
| * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: |
| (WebKit::LocalStorageNamespace::LocalStorageNamespace): |
| (WebKit::LocalStorageNamespace::~LocalStorageNamespace): |
| (WebKit::LocalStorageNamespace::getOrCreateStorageArea): |
| (WebKit::LocalStorageNamespace::clearStorageAreasMatchingOrigin): |
| (WebKit::LocalStorageNamespace::clearAllStorageAreas): |
| (WebKit::LocalStorageNamespace::ephemeralOrigins const): |
| (WebKit::LocalStorageNamespace::cloneTo): |
| * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: |
| (WebKit::SessionStorageNamespace::SessionStorageNamespace): |
| (WebKit::SessionStorageNamespace::~SessionStorageNamespace): |
| (WebKit::SessionStorageNamespace::addAllowedConnection): |
| (WebKit::SessionStorageNamespace::removeAllowedConnection): |
| (WebKit::SessionStorageNamespace::getOrCreateStorageArea): |
| (WebKit::SessionStorageNamespace::cloneTo): |
| (WebKit::SessionStorageNamespace::origins const): |
| (WebKit::SessionStorageNamespace::clearStorageAreasMatchingOrigin): |
| (WebKit::SessionStorageNamespace::clearAllStorageAreas): |
| * NetworkProcess/WebStorage/StorageArea.cpp: |
| (WebKit::StorageArea::StorageArea): |
| (WebKit::StorageArea::~StorageArea): |
| (WebKit::StorageArea::addListener): |
| (WebKit::StorageArea::removeListener): |
| (WebKit::StorageArea::hasListener const): |
| (WebKit::StorageArea::clone const): |
| (WebKit::StorageArea::setItem): |
| (WebKit::StorageArea::setItems): |
| (WebKit::StorageArea::removeItem): |
| (WebKit::StorageArea::clear): |
| (WebKit::StorageArea::items const): |
| (WebKit::StorageArea::openDatabaseAndImportItemsIfNeeded const): |
| (WebKit::StorageArea::dispatchEvents const): |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::createSessionStorageNamespace): |
| (WebKit::StorageManager::destroySessionStorageNamespace): |
| (WebKit::StorageManager::addAllowedSessionStorageNamespaceConnection): |
| (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection): |
| (WebKit::StorageManager::cloneSessionStorageNamespace): |
| (WebKit::StorageManager::processDidCloseConnection): |
| (WebKit::StorageManager::getSessionStorageOrigins): |
| (WebKit::StorageManager::deleteSessionStorageOrigins): |
| (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins): |
| (WebKit::StorageManager::getLocalStorageOrigins): |
| (WebKit::StorageManager::getLocalStorageOriginDetails): |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin): |
| (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): |
| (WebKit::StorageManager::waitUntilTasksFinished): |
| (WebKit::StorageManager::suspend): |
| (WebKit::StorageManager::resume): |
| (WebKit::StorageManager::findStorageArea const): |
| (WebKit::StorageManager::getOrCreateLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace): |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: |
| (WebKit::TransientLocalStorageNamespace::TransientLocalStorageNamespace): |
| (WebKit::TransientLocalStorageNamespace::~TransientLocalStorageNamespace): |
| (WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea): |
| (WebKit::TransientLocalStorageNamespace::origins const): |
| (WebKit::TransientLocalStorageNamespace::clearStorageAreasMatchingOrigin): |
| (WebKit::TransientLocalStorageNamespace::clearAllStorageAreas): |
| |
| 2019-08-08 Brent Fulgham <bfulgham@apple.com> |
| |
| [FTW] Get WebKit, WebKit2, and MiniBrowser building and executing |
| https://bugs.webkit.org/show_bug.cgi?id=200539 |
| <rdar://problem/54082550> |
| |
| Reviewed by Dean Jackson. |
| |
| * PlatformFTW.cmake: Added. |
| * Shared/ShareableBitmap.h: |
| * Shared/win/ShareableBitmapDirect2D.cpp: Added. |
| * UIProcess/BackingStore.cpp: |
| * UIProcess/BackingStore.h: |
| (WebKit::BackingStore::renderTarget): |
| * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: |
| * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: |
| * UIProcess/win/BackingStoreDirect2D.cpp: Added. |
| * UIProcess/win/WebInspectorProxyWin.cpp: |
| (WebKit::WebInspectorProxy::inspectorPageURL): |
| (WebKit::WebInspectorProxy::inspectorTestPageURL): |
| (WebKit::WebInspectorProxy::inspectorBaseURL): |
| * UIProcess/win/WebView.cpp: |
| (WebKit::WebView::paint): |
| * UIProcess/win/WebView.h: |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::display): |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h: |
| * WebProcess/WebPage/win/WebInspectorUIWin.cpp: |
| (WebKit::WebInspectorUI::localizedStringsURL): |
| (WebKit::RemoteWebInspectorUI::localizedStringsURL): |
| * WebProcess/win/WebProcessMainWin.cpp: |
| (WebKit::WebProcessMainWin): |
| |
| 2019-08-08 Per Arne Vollan <pvollan@apple.com> |
| |
| [Mac] Use the PID of the WebContent process when issuing local file read sandbox extensions |
| https://bugs.webkit.org/show_bug.cgi?id=200543 |
| |
| Reviewed by Brent Fulgham. |
| |
| Adopt SPI to issue a process-specific sandbox extension for local file read, passing it the process |
| identifier of the WebContent process. |
| |
| * Shared/Cocoa/SandboxExtensionCocoa.mm: |
| (WebKit::SandboxExtensionImpl::sandboxExtensionForType): |
| (WebKit::SandboxExtension::createHandleForReadByPid): |
| * Shared/SandboxExtension.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| |
| 2019-08-08 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| [iOS] Position image information should respect the image orientation |
| https://bugs.webkit.org/show_bug.cgi?id=200487 |
| |
| Reviewed by Simon Fraser. |
| |
| imagePositionInformation() should respect the image orientation when |
| drawing an Image to a ShareableBitmap context. |
| |
| boundsPositionInformation() already takes care of the image orientation |
| because it gets RenderImage::enclosingBoundingBox(). |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::imagePositionInformation): |
| |
| 2019-08-08 Timothy Hatcher <timothy@apple.com> |
| |
| Set WKWebView opaque based on drawsBackground in PageConfiguration. |
| https://bugs.webkit.org/show_bug.cgi?id=200528 |
| |
| Reviewed by Tim Horton. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _initializeWithConfiguration:]): Set self.opaque = NO when !self.opaque || !pageConfiguration->drawsBackground(). |
| It is almost impossible to have !self.opaque be NO at this point, since we are still inside initWithFrame:. A subclass could |
| override opaque and return NO, but checking pageConfiguration's drawsBackground is a good alternative. |
| * WebProcess/WebPage/WebPage.h: Remove unused m_drawsBackground member. |
| |
| 2019-08-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS 13] Taps that interrupt momentum scrolling are recognized as clicks |
| https://bugs.webkit.org/show_bug.cgi?id=200516 |
| <rdar://problem/53889373> |
| |
| Reviewed by Tim Horton. |
| |
| After <https://trac.webkit.org/r247656>, the -tracksImmediatelyWhileDecelerating property of WKScrollView and |
| WKChildScrollView is set to NO. This means that if a user interacts with the page while the scroll view is |
| decelerating (e.g. after momentum scrolling), the pan gesture recognizer will not be immediately recognized. |
| This gives other gesture recognizers, such as the synthetic click (single tap) gesture a chance to instead |
| recognize first. In this particular bug, this causes taps on the web view that are intended to only stop |
| momentum scrolling to instead activate clickable elements beneath the touch, such as links and buttons. |
| |
| To mitigate this, we add some logic to prevent the click gesture recognizer from firing in the case where the |
| tap also causes the scroll view to decelerate. This heuristic is similar to the one introduced in r219310, which |
| has the same purpose of hiding gestures that stop momentum scrolling from the page, and also consults |
| -[UIScrollView _isInterruptingDeceleration]. |
| |
| Tests: fast/scrolling/ios/click-events-during-momentum-scroll-in-main-frame.html |
| fast/scrolling/ios/click-events-during-momentum-scroll-in-overflow-after-tap-on-body.html |
| fast/scrolling/ios/click-events-during-momentum-scroll-in-overflow.html |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView gestureRecognizerShouldBegin:]): |
| |
| Return NO in the case of the single tap gesture if the UIScrollView most recently touched by the single tap |
| gesture (or one of its enclosing scroll views, up to the main WKScrollView) is being interrupted while |
| decelerating. |
| |
| * UIProcess/ios/WKSyntheticTapGestureRecognizer.h: |
| * UIProcess/ios/WKSyntheticTapGestureRecognizer.mm: |
| (-[WKSyntheticTapGestureRecognizer reset]): |
| (-[WKSyntheticTapGestureRecognizer touchesBegan:withEvent:]): |
| |
| Teach WKSyntheticTapGestureRecognizer to keep track of the last WKScrollView that was touched, for later use in |
| -gestureRecognizerShouldBegin:. To do this, we keep a weak reference to the first UIScrollView we find in the |
| set of touches. |
| |
| (-[WKSyntheticTapGestureRecognizer lastTouchedScrollView]): |
| |
| 2019-08-08 Dean Jackson <dino@apple.com> |
| |
| Use "safari" glyph for "Show Link Previews" contextual menu |
| https://bugs.webkit.org/show_bug.cgi?id=200544 |
| <rdar://problem/54087842> |
| |
| Reviewed by Tim Horton. |
| |
| Use the system image for the compass. |
| |
| * UIProcess/API/Cocoa/_WKElementAction.mm: |
| (+[_WKElementAction imageForElementActionType:]): |
| |
| 2019-08-08 Chris Dumez <cdumez@apple.com> |
| |
| Move classes declared inside StorageManager.cpp into their own headers |
| https://bugs.webkit.org/show_bug.cgi?id=200527 |
| |
| Reviewed by Alex Christensen. |
| |
| Move classes declared inside StorageManager.cpp into their own headers |
| for clarity. StorageManager.cpp was getting really big. |
| |
| * NetworkProcess/WebStorage/LocalStorageNamespace.cpp: Added. |
| (WebKit::LocalStorageNamespace::LocalStorageNamespace): |
| (WebKit::LocalStorageNamespace::~LocalStorageNamespace): |
| (WebKit::LocalStorageNamespace::getOrCreateStorageArea): |
| (WebKit::LocalStorageNamespace::clearStorageAreasMatchingOrigin): |
| (WebKit::LocalStorageNamespace::clearAllStorageAreas): |
| (WebKit::LocalStorageNamespace::ephemeralOrigins const): |
| (WebKit::LocalStorageNamespace::cloneTo): |
| * NetworkProcess/WebStorage/LocalStorageNamespace.h: Added. |
| (WebKit::LocalStorageNamespace::create): |
| (WebKit::LocalStorageNamespace::storageManager const): |
| * NetworkProcess/WebStorage/SessionStorageNamespace.cpp: Added. |
| (WebKit::SessionStorageNamespace::SessionStorageNamespace): |
| (WebKit::SessionStorageNamespace::~SessionStorageNamespace): |
| (WebKit::SessionStorageNamespace::addAllowedConnection): |
| (WebKit::SessionStorageNamespace::removeAllowedConnection): |
| (WebKit::SessionStorageNamespace::getOrCreateStorageArea): |
| (WebKit::SessionStorageNamespace::cloneTo): |
| (WebKit::SessionStorageNamespace::origins const): |
| (WebKit::SessionStorageNamespace::clearStorageAreasMatchingOrigin): |
| (WebKit::SessionStorageNamespace::clearAllStorageAreas): |
| * NetworkProcess/WebStorage/SessionStorageNamespace.h: Added. |
| (WebKit::SessionStorageNamespace::create): |
| (WebKit::SessionStorageNamespace::isEmpty const): |
| (WebKit::SessionStorageNamespace::allowedConnections const): |
| * NetworkProcess/WebStorage/StorageArea.cpp: Added. |
| (WebKit::StorageArea::StorageArea): |
| (WebKit::StorageArea::~StorageArea): |
| (WebKit::StorageArea::addListener): |
| (WebKit::StorageArea::removeListener): |
| (WebKit::StorageArea::hasListener const): |
| (WebKit::StorageArea::clone const): |
| (WebKit::StorageArea::setItem): |
| (WebKit::StorageArea::setItems): |
| (WebKit::StorageArea::removeItem): |
| (WebKit::StorageArea::clear): |
| (WebKit::StorageArea::items const): |
| (WebKit::StorageArea::openDatabaseAndImportItemsIfNeeded const): |
| (WebKit::StorageArea::dispatchEvents const): |
| * NetworkProcess/WebStorage/StorageArea.h: Added. |
| (WebKit::StorageArea::create): |
| (WebKit::StorageArea::securityOrigin const): |
| (WebKit::StorageArea::isEphemeral const): |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::createLocalStorageMap): |
| (WebKit::StorageManager::findStorageArea const): |
| (WebKit::StorageManager::getOrCreateLocalStorageNamespace): |
| (WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| (WebKit::StorageManager::create): |
| (WebKit::StorageManager::localStorageDatabaseTracker const): |
| (WebKit::StorageManager::workQueue const): |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.cpp: Added. |
| (WebKit::TransientLocalStorageNamespace::TransientLocalStorageNamespace): |
| (WebKit::TransientLocalStorageNamespace::~TransientLocalStorageNamespace): |
| (WebKit::TransientLocalStorageNamespace::getOrCreateStorageArea): |
| (WebKit::TransientLocalStorageNamespace::origins const): |
| (WebKit::TransientLocalStorageNamespace::clearStorageAreasMatchingOrigin): |
| (WebKit::TransientLocalStorageNamespace::clearAllStorageAreas): |
| * NetworkProcess/WebStorage/TransientLocalStorageNamespace.h: Added. |
| (WebKit::TransientLocalStorageNamespace::create): |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::canRequestUseSpeculativeRevalidation): |
| * Sources.txt: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-08 Rob Buis <rbuis@igalia.com> |
| |
| Add runtime flag for lazy image loading |
| https://bugs.webkit.org/show_bug.cgi?id=199794 |
| |
| Reviewed by Darin Adler. |
| |
| Add LazyImageLoading preference. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetLazyImageLoadingEnabled): |
| (WKPreferencesGetLazyImageLoadingEnabled): |
| * UIProcess/API/C/WKPreferencesRefPrivate.h: |
| |
| 2019-08-07 Chris Dumez <cdumez@apple.com> |
| |
| Turn some ITP threading ASSERTs into RELEASE_ASSERTs |
| https://bugs.webkit.org/show_bug.cgi?id=200521 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Turn some ITP threading ASSERTs into RELEASE_ASSERTs to help catch more bugs. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore): |
| (WebKit::ResourceLoadStatisticsMemoryStore::isEmpty const): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp: |
| (WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage): |
| (WebKit::ResourceLoadStatisticsPersistentStorage::~ResourceLoadStatisticsPersistentStorage): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): |
| (WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore): |
| (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore): |
| |
| 2019-08-07 Kate Cheney <katherine_cheney@apple.com> |
| |
| Adopt non-deprecated CGColorSpace API |
| https://bugs.webkit.org/show_bug.cgi?id=184358 |
| |
| Reviewed by Darin Adler. |
| |
| * Shared/mac/ColorSpaceData.mm: |
| (WebKit::ColorSpaceData::decode): |
| |
| We changed the deprecated CGColorSpaceCreateWithICCProfile function to |
| CGColorSpaceCreateWithICCData. |
| |
| 2019-08-07 Alex Christensen <achristensen@webkit.org> |
| |
| Remove speculative workaround for upload crash |
| https://bugs.webkit.org/show_bug.cgi?id=200514 |
| |
| Reviewed by Geoffrey Garen. |
| |
| This workaround didn't help anyways, and the crash has been resolved. Let's clean up. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]): |
| |
| 2019-08-07 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r247784) ResourceLoadStatisticsMemoryStore / ResourceLoadStatisticsPersistentStorage may get destroyed on the wrong thread |
| https://bugs.webkit.org/show_bug.cgi?id=200517 |
| |
| Reviewed by Geoffrey Garen. |
| |
| The issue is that WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore() is null checking |
| m_persistentStorage and m_statisticsStore on the main thread, even though those members are initialized |
| and destroyed on the background thread. As a result, if flushAndDestroyPersistentStore() is called *before* |
| the background task to initialize those members has had a chance to run, then we'd return early without |
| destroying those members. Later on, the background task would then initialize those data members and we |
| would then destroy them on the main thread when the WebResourceLoadStatisticsStore is destroyed on the |
| main thread. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore): |
| |
| 2019-08-06 Dean Jackson <dino@apple.com> |
| |
| Context menu on a universal link produces a blank preview |
| https://bugs.webkit.org/show_bug.cgi?id=200485 |
| <rdar://problem/53699620> |
| |
| Reviewed by Tim Horton. |
| |
| If the context menu is activated on an iTunesStore URL, pass it |
| on to DataDetectors, who should know how to handle it. |
| |
| Two drive-by fixes: |
| - make it clear that early returns do not produce a value. Instead call the |
| completion handler first, then return. |
| - The new API DataDetectors case doesn't need to worry about hiding link previews |
| as DataDetectors itself will handle that. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: If the URL is an iTunesStoreURL |
| (as defined by CoreServices), let DataDetectors handle it. |
| (-[WKContentView assignLegacyDataForContextMenuInteraction]): |
| (-[WKContentView continueContextMenuInteraction:]): |
| (-[WKContentView continueContextMenuInteractionWithDataDetectors:]): New method to |
| use DataDetectors if possible. |
| |
| 2019-08-08 Simon Fraser <simon.fraser@apple.com> |
| |
| Add to InteractionInformationAtPosition information about whether the element is in a subscrollable region |
| https://bugs.webkit.org/show_bug.cgi?id=200374 |
| rdar://problem/54095519 |
| |
| Reviewed by Tim Horton. |
| |
| Add InteractionInformationAtPosition.containerScrollingNodeID and initialize it in elementPositionInformation() |
| by asking the scrolling coordinator. |
| |
| Also add a way to get from a ScrollingNodeID to a UIScrollView to RemoteScrollingCoordinatorProxy, |
| which gets the scrolling node and asks the delegate for the UIView. |
| |
| * Shared/ios/InteractionInformationAtPosition.h: |
| * Shared/ios/InteractionInformationAtPosition.mm: |
| (WebKit::InteractionInformationAtPosition::encode const): |
| (WebKit::InteractionInformationAtPosition::decode): |
| * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h: |
| * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: |
| (WebKit::RemoteScrollingCoordinatorProxy::scrollViewForScrollingNodeID const): |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h: |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm: |
| (WebKit::ScrollingTreeOverflowScrollingNodeIOS::scrollView const): |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::elementPositionInformation): |
| |
| 2019-08-07 Priyanka Agarwal <pagarwal999@apple.com> |
| |
| Allow clients to toggle a text input field between being viewable and having characters hidden while maintaining |
| a yellow auto-filled appearance |
| https://bugs.webkit.org/show_bug.cgi?id=200037 |
| rdar://problem/51900961 |
| |
| Reviewed by Daniel Bates. |
| |
| * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h: |
| * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm: |
| (-[WKWebProcessPlugInNodeHandle HTMLInputElementIsAutoFilledAndViewable]): |
| Accessor function for boolean which represents if the input element is autofilled and viewable. |
| |
| (-[WKWebProcessPlugInNodeHandle setHTMLInputElementIsAutoFilledAndViewable:]): |
| Setter function for boolean which represents if the input element is autofilled and viewable. |
| |
| * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp: |
| (WKBundleNodeHandleSetHTMLInputElementAutoFilledAndViewable): |
| Accessor function for boolean which represents if the input element is autofilled and viewable. |
| |
| * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h: |
| Creating function declaration for boolean setter. |
| |
| * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: |
| Accessor function for boolean which represents if the input element is autofilled and viewable. |
| |
| (WebKit::InjectedBundleNodeHandle::isHTMLInputElementAutoFilledAndViewable const): |
| Setter function for boolean which represents if the input element is autofilled and viewable. |
| |
| (WebKit::InjectedBundleNodeHandle::setHTMLInputElementAutoFilledAndViewable): |
| Setter function for boolean which represents if the input element is autofilled and viewable. |
| |
| * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h: |
| Adding setter and getter functions for the boolean which represents if the input element is autofilled |
| and viewable. |
| |
| 2019-08-07 Chris Dumez <cdumez@apple.com> |
| |
| Add more threading assertions to ITP code |
| https://bugs.webkit.org/show_bug.cgi?id=200505 |
| |
| Reviewed by Brent Fulgham. |
| |
| Add more threading assertions to ITP code to help catch bugs and protect against future bad usage. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::isEmpty const): |
| (WebKit::ResourceLoadStatisticsMemoryStore::setPersistentStorage): |
| (WebKit::ResourceLoadStatisticsMemoryStore::incrementRecordsDeletedCountForDomains): |
| (WebKit::ResourceLoadStatisticsMemoryStore::classifyPrevalentResources): |
| (WebKit::ResourceLoadStatisticsMemoryStore::syncStorageIfNeeded): |
| (WebKit::ResourceLoadStatisticsMemoryStore::syncStorageImmediately): |
| (WebKit::ResourceLoadStatisticsMemoryStore::grandfatherDataForDomains): |
| (WebKit::ResourceLoadStatisticsMemoryStore::ensurePrevalentResourcesForDebugMode): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::statisticsEpirationTime const): |
| (WebKit::ResourceLoadStatisticsStore::mergeOperatingDates): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::hasStorageAccessForFrame): |
| (WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): |
| (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): |
| (WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate): |
| (WebKit::WebResourceLoadStatisticsStore::logFrameNavigation): |
| (WebKit::WebResourceLoadStatisticsStore::logWebSocketLoading): |
| (WebKit::WebResourceLoadStatisticsStore::logSubresourceLoading): |
| (WebKit::WebResourceLoadStatisticsStore::logSubresourceRedirect): |
| (WebKit::WebResourceLoadStatisticsStore::hasHadUserInteraction): |
| (WebKit::WebResourceLoadStatisticsStore::removePrevalentDomains): |
| (WebKit::WebResourceLoadStatisticsStore::networkSession): |
| (WebKit::WebResourceLoadStatisticsStore::invalidateAndCancel): |
| (WebKit::WebResourceLoadStatisticsStore::sendDiagnosticMessageWithValue const): |
| (WebKit::WebResourceLoadStatisticsStore::notifyPageStatisticsTelemetryFinished const): |
| |
| 2019-08-07 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r248330. |
| |
| Breaks internal builds. |
| |
| Reverted changeset: |
| |
| "Context menu on a universal link produces a blank preview" |
| https://bugs.webkit.org/show_bug.cgi?id=200485 |
| https://trac.webkit.org/changeset/248330 |
| |
| 2019-08-06 Ryosuke Niwa <rniwa@webkit.org> |
| |
| [iPadOS] slides.google.com: tapping near cursor in a slide title focuses the speaker notes |
| https://bugs.webkit.org/show_bug.cgi?id=200216 |
| |
| Reviewed by Wenson Hsieh. |
| |
| The bug was caused by a race condition between Google slides removing inputmode="none" from the hidden |
| content editable and updating the focused region upon receiving a pointerup event, which happens after |
| the Google slides had already updated its page layout & coordinates based on new visual viewport with |
| the software keyboard's boudning rect taken into account. |
| |
| Delay bringing up the software keyboard for a inputmode change until all touches are released. |
| |
| In the future, we could consider also delaying the software keyboard to be brought in general until |
| touchend / pointerup events are dispatched but this is rather risky since that could affact random |
| other websites while Google suites is the only major site to make use of inputmode="none". |
| |
| This patch also reverts r243044, which was added for Google slides, since it's no longer needed and |
| interferes with this patch by adding another way to bring up the software keyboard. |
| |
| Note: Adjusting touchend / pointerup coordinates while the keyboard is being brought up doesn't work |
| because the page had already updated the layout by then based on new visual viewport size. |
| |
| Test: fast/forms/ios/inputmode-change-update-keyboard-after-pointerup.html |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::handleTouchEventSynchronously): Call didReleaseAllTouchPoints when all |
| touches are released. |
| (WebKit::WebPageProxy::handleTouchEventAsynchronously): Ditto. |
| (WebKit::WebPageProxy::handleTouchEvent): Ditto. |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::didReleaseAllTouchPoints): Added for non-iOS platforms. |
| (WebKit::WebPageProxy::m_pendingInputModeChange): Added. Used when inputmode is changed while |
| there is an on-going touch interaction. |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::elementDidFocus): Clear m_pendingInputModeChange when a new element is focused. |
| (WebKit::WebPageProxy::elementDidBlur): Ditto for bluring. |
| (WebKit::WebPageProxy::focusedElementDidChangeInputMode): Don't bring up the software keyboard now if |
| there are on-going touches by exiting early after setting m_pendingInputModeChange. |
| (WebKit::WebPageProxy::didReleaseAllTouchPoints): Bring up the software keyboard if inputmode |
| had changed from "none" to something else. |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::dispatchTouchEvent): Removed the code added by r243044. |
| |
| 2019-08-06 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| ASSERTION FAILED: m_observers.isEmpty() if WKPageSetPageStateClient is used |
| https://bugs.webkit.org/show_bug.cgi?id=200465 |
| |
| Reviewed by Alex Christensen. |
| |
| PageLoadState::Observer should be removed before destructing |
| WebPageProxy. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::~WebPageProxy): Call |
| setPageLoadStateObserver with nullptr to remove |
| PageLoadState::Observer. |
| |
| 2019-08-06 Chris Dumez <cdumez@apple.com> |
| |
| Add release assertions to help catch a bug in our WebProcessCache implementation |
| https://bugs.webkit.org/show_bug.cgi?id=200483 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add release assertions to help catch a bug in our WebProcessCache implementation. We |
| have evidence (rdar://problem/53962494) that we have processes with a page which |
| starts a provisional load while the process is in the WebProcessCache. This should |
| not be possible. |
| |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::setIsInProcessCache): |
| (WebKit::WebProcessProxy::addExistingWebPage): |
| |
| 2019-08-06 Dean Jackson <dino@apple.com> |
| |
| Context menu on a universal link produces a blank preview |
| https://bugs.webkit.org/show_bug.cgi?id=200485 |
| <rdar://problem/53699620> |
| |
| Reviewed by Dean Jackson. |
| |
| If the context menu is activated on an iTunesStore URL, pass it |
| on to DataDetectors, who should know how to handle it. |
| |
| Two drive-by fixes: |
| - make it clear that early returns do not produce a value. Instead call the |
| completion handler first, then return. |
| - The new API DataDetectors case doesn't need to worry about hiding link previews |
| as DataDetectors itself will handle that. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: If the URL is an iTunesStoreURL |
| (as defined by CoreServices), let DataDetectors handle it. |
| (-[WKContentView assignLegacyDataForContextMenuInteraction]): |
| (-[WKContentView continueContextMenuInteraction:]): |
| (-[WKContentView continueContextMenuInteractionWithDataDetectors:]): New method to |
| use DataDetectors if possible. |
| |
| 2019-08-06 Chris Dumez <cdumez@apple.com> |
| |
| Avoid unnecessary ResourceRequest copy under NetworkResourceLoader::isCrossOriginPrefetch() |
| https://bugs.webkit.org/show_bug.cgi?id=200478 |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::isCrossOriginPrefetch const): |
| |
| 2019-08-06 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Unreviewed, a build fix after r248319 |
| |
| Use HAVE(DATA_PROTECTION_KEYCHAIN) instead of HAVE_DATA_PROTECTION_KEYCHAIN. |
| |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| (WebKit::LocalAuthenticator::makeCredential): |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented): |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested): |
| (WebKit::LocalAuthenticator::getAssertion): |
| (WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented): |
| |
| 2019-08-06 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Unreviewed, a build fix after r248308 |
| |
| Use kSecUseDataProtectionKeychain for iOS 13 and macOS Catalina or newer. |
| |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| (WebKit::LocalAuthenticator::makeCredential): |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented): |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested): |
| (WebKit::LocalAuthenticator::getAssertion): |
| (WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented): |
| |
| 2019-08-06 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, fix internal iOS build after r248308. |
| |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| (WebKit::LocalAuthenticator::makeCredential): |
| |
| 2019-08-06 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [WebAuthN] Enable LocalAuthenticator for macOS |
| https://bugs.webkit.org/show_bug.cgi?id=182772 |
| <rdar://problem/43347920> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch enables LocalAuthenticator for macOS. The majority |
| of this patch is to tweak macOS keychain to use the modern one. |
| |
| * Configurations/WebKit.xcconfig: |
| * Platform/spi/Cocoa/DeviceIdentitySPI.h: |
| * UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm: |
| (WebKit::LocalAuthenticatorInternal::toVector): |
| (WebKit::LocalAuthenticator::makeCredential): |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterUserConsented): |
| (WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested): |
| (WebKit::LocalAuthenticator::getAssertion): |
| (WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented): |
| * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: |
| (WebKit::LocalConnection::getUserConsent const): |
| (WebKit::LocalConnection::getAttestation const): |
| * UIProcess/WebAuthentication/Cocoa/LocalService.mm: |
| (WebKit::LocalService::isAvailable): |
| * UIProcess/WebAuthentication/Mock/MockLocalConnection.mm: |
| (WebKit::MockLocalConnection::getAttestation const): |
| * config.h: |
| |
| 2019-08-06 Jer Noble <jer.noble@apple.com> |
| |
| Add test for behavior introduced in r248174 |
| https://bugs.webkit.org/show_bug.cgi?id=200446 |
| |
| Reviewed by Eric Carlson. |
| |
| Add a new helper struct, FullscreenTouchSecheuristicParameters, and static getter, |
| iosParameters(), to allow the settings used by WKFullScreenViewController to be tested |
| in TestWebKitAPI. Make both of the Secheuristic classes privately exported as well. |
| |
| * UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.cpp: |
| (WebKit::FullscreenTouchSecheuristic::scoreOfNextTouch): |
| (WebKit::FullscreenTouchSecheuristic::reset): |
| (WebKit::FullscreenTouchSecheuristic::distanceScore): |
| (WebKit::FullscreenTouchSecheuristic::attenuationFactor): |
| * UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.h: |
| (WebKit::FullscreenTouchSecheuristic::setParameters): |
| (WebKit::FullscreenTouchSecheuristic::requiredScore const): |
| (WebKit::FullscreenTouchSecheuristic::setRampUpSpeed): |
| (WebKit::FullscreenTouchSecheuristic::setRampDownSpeed): |
| (WebKit::FullscreenTouchSecheuristic::setXWeight): |
| (WebKit::FullscreenTouchSecheuristic::setYWeight): |
| (WebKit::FullscreenTouchSecheuristic::setGamma): |
| (WebKit::FullscreenTouchSecheuristic::setGammaCutoff): |
| * UIProcess/ios/fullscreen/FullscreenTouchSecheuristicParameters.cpp: Copied from Source/WebKit/UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.h. |
| (WebKit::FullscreenTouchSecheuristicParameters::iosParameters): |
| * UIProcess/ios/fullscreen/FullscreenTouchSecheuristicParameters.h: Copied from Source/WebKit/UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.h. |
| * UIProcess/ios/fullscreen/WKFullScreenViewController.mm: |
| (-[WKFullScreenViewController initWithWebView:]): |
| (-[WKFullScreenViewController _touchDetected:]): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-06 Claudio Saavedra <csaavedra@igalia.com> |
| |
| [GLIB] Fix documentation typo |
| |
| Unreviewed. |
| |
| * UIProcess/API/glib/WebKitWebsiteDataManager.cpp: |
| |
| 2019-08-05 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Win][MiniBrowser][WK2] Unhandled key events should be bubbled up to the parent window |
| https://bugs.webkit.org/show_bug.cgi?id=200464 |
| |
| Reviewed by Ross Kirsling. |
| |
| * UIProcess/API/C/WKNativeEvent.h: Define WKNativeEventPtr for WIN32. |
| |
| 2019-08-05 Youenn Fablet <youenn@apple.com> |
| |
| Support RTCRtpSender.dtmf |
| https://bugs.webkit.org/show_bug.cgi?id=200431 |
| |
| Reviewed by Eric Carlson. |
| |
| * Shared/WebPreferences.yaml: |
| |
| 2019-08-05 Simon Fraser <simon.fraser@apple.com> |
| |
| iOS 13: Overflow:hidden on body prevents PDF scroll |
| https://bugs.webkit.org/show_bug.cgi?id=200435 |
| rdar://problem/53942888 |
| |
| Reviewed by Tim Horton. |
| |
| When we navigate from an overflow:hidden HTML page to a custom view (like PDF), we need |
| to make sure that the scroll view is scrollable. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _setHasCustomContentView:loadedMIMEType:]): |
| |
| 2019-08-05 John Wilander <wilander@apple.com> |
| |
| Resource Load Statistics: Re-introduce latch mode for subresource cookie blocking |
| https://bugs.webkit.org/show_bug.cgi?id=200395 |
| <rdar://problem/53869611> |
| |
| Reviewed by Darin Adler. |
| |
| Back when we had a relaxation of cookie blocking 24 hours after first-party user |
| interaction, we made sure cookie blocking could be turned on and off in subresource |
| redirect chains. The 24 hour window is now long gone. This patch simplifies the |
| cookie blocking so that once a subresource request is denied cookies, any |
| subsequent redirect of that request will also be denied cookies, regardless of the |
| classification status of the domains involved. I call it latch mode. |
| |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::blockCookies): |
| (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): |
| (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection): |
| (WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy): Deleted. |
| |
| 2019-08-05 Youenn Fablet <youenn@apple.com> |
| |
| Disable speculative loading if cache is not to be used for the load |
| https://bugs.webkit.org/show_bug.cgi?id=199644 |
| |
| Reviewed by Alex Christensen. |
| |
| When the page is reloaded, loads are instructed to not use the cache. |
| It is therefore unneeded to do speculative revalidation. |
| Allow speculative revalidation if the cache policy is either the default HTTP policy or |
| if policy is to refresh all cache data. |
| Covered by added test. |
| |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::cachePolicyValidForSpeculativeRevalidation): |
| (WebKit::NetworkCache::canRequestUseSpeculativeRevalidation): |
| |
| 2019-08-04 Konstantin Tokarev <annulen@yandex.ru> |
| |
| Remove unused lambda capture in MemoryPressureMonitor |
| https://bugs.webkit.org/show_bug.cgi?id=200420 |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/linux/MemoryPressureMonitor.cpp: |
| (WebKit::MemoryPressureMonitor::start): |
| |
| 2019-08-03 Konstantin Tokarev <annulen@yandex.ru> |
| |
| Fix compilation with disabled WebGL |
| https://bugs.webkit.org/show_bug.cgi?id=200421 |
| |
| Reviewed by Wenson Hsieh. |
| |
| After r247452 webGLStateTracker is guarded with #if ENABLE(WEBGL) |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| |
| 2019-08-02 Keith Rollin <krollin@apple.com> |
| |
| Consistently use Obj-C boolean literals |
| https://bugs.webkit.org/show_bug.cgi?id=200405 |
| <rdar://problem/53880043> |
| |
| Reviewed by Simon Fraser, Joseph Pecoraro. |
| |
| There are places where we use equivalent but different expressions for |
| Obj-C boolean objects. For example, we use both [NSNumber |
| numberWithBool:YES] and @YES. There are places where both are used in |
| the same function, such as -[WebPreferences initialize]. The boolean |
| literal is in greater use and is more succinct, so standardize on |
| that. Also, change @(YES/NO) to @YES/NO. |
| |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * UIProcess/WebAuthentication/Cocoa/LocalConnection.mm: |
| (WebKit::LocalConnection::getAttestation const): |
| |
| 2019-08-02 Sihui Liu <sihui_liu@apple.com> |
| |
| API tests using permanent credentials should clear credentials left by previous tests |
| https://bugs.webkit.org/show_bug.cgi?id=199729 |
| |
| Reviewed by Alex Christensen. |
| |
| Permanent password credentials currently are shared across processes, so we don't need to clear them from |
| network process. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::clearPermanentCredentialsForProtectionSpace): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _clearPermanentCredentialsForProtectionSpace:]): |
| (-[WKProcessPool _clearPermanentCredentialsForProtectionSpace:completionHandler:]): Deleted. |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::clearPermanentCredentialsForProtectionSpace): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::clearPermanentCredentialsForProtectionSpace): Deleted. |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-08-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Timelines: Develop > Start Timeline Recording doesn't work when focused on a detached inspector window |
| https://bugs.webkit.org/show_bug.cgi?id=200125 |
| <rdar://problem/53543008> |
| |
| Reviewed by Brian Burg. |
| |
| Always show the Timelines tab in Web Inspector whenever timeline recording starts/stops. |
| Notify the UIProcess whenever the timeline recording state changes. |
| |
| * WebProcess/WebPage/WebInspector.messages.in: |
| * WebProcess/WebPage/WebInspector.h: |
| * WebProcess/WebPage/WebInspector.cpp: |
| (WebKit::WebInspector::startPageProfiling): |
| (WebKit::WebInspector::stopPageProfiling): |
| (WebKit::WebInspector::timelineRecordingChanged): Added. |
| (WebKit::WebInspector::showTimelines): Deleted. |
| |
| * WebProcess/WebPage/WebInspectorUI.messages.in: |
| * WebProcess/WebPage/WebInspectorUI.h: |
| * WebProcess/WebPage/WebInspectorUI.cpp: |
| (WebKit::WebInspectorUI::showTimelines): Deleted. |
| |
| * WebProcess/WebCoreSupport/WebInspectorClient.h: |
| * WebProcess/WebCoreSupport/WebInspectorClient.cpp: |
| (WebKit::WebInspectorClient::timelineRecordingChanged): Added. |
| |
| * UIProcess/WebInspectorProxy.messages.in: |
| * UIProcess/WebInspectorProxy.h: |
| * UIProcess/WebInspectorProxy.cpp: |
| (WebKit::WebInspectorProxy::togglePageProfiling): |
| (WebKit::WebInspectorProxy::timelineRecordingChanged): Added. |
| (WebKit::WebInspectorProxy::showTimelines): Deleted. |
| |
| * UIProcess/API/C/WKInspector.cpp: |
| (WKInspectorTogglePageProfiling): |
| |
| * UIProcess/API/Cocoa/_WKInspector.h: |
| * UIProcess/API/Cocoa/_WKInspector.mm: |
| (-[_WKInspector showTimelines]): Deleted. |
| |
| * WebProcess/InjectedBundle/API/c/WKBundleInspector.cpp: |
| (WKBundleInspectorSetPageProfilingEnabled): |
| |
| 2019-08-02 Jer Noble <jer.noble@apple.com> |
| |
| [iPadOS] slides.google.com: Full Screen API warning is presented when swiping through slides |
| https://bugs.webkit.org/show_bug.cgi?id=200313 |
| <rdar://problem/53777001> |
| |
| Reviewed by Eric Carlson. |
| |
| Only run the secheuristic scoring during UIGestureRecognizerStateEnded, rather than both |
| UIGestureRecognizerStateEnded and UIGestureRecognizerStateBegan. The goal of the heuristic is |
| to detect fake on-screen keyboards by detecting gestures that look like "typing". Using only |
| UIGestureRecognizerStateEnded still allows us to do this (as typing will usually have identical |
| geometries for both Ended and Began) without generating false-positives during swipe gestures. |
| |
| * UIProcess/ios/fullscreen/WKFullScreenViewController.mm: |
| (-[WKFullScreenViewController _touchDetected:]): |
| |
| 2019-08-02 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macOS 10.15] Image dragged from Safari does not appear in Notes |
| https://bugs.webkit.org/show_bug.cgi?id=188490 |
| <rdar://problem/39462717> |
| |
| Reviewed by Andy Estes. |
| |
| Removes some logic that clears out the cached promised drag image in the UI process when WebKit is asked to |
| provide TIFF image data. This prevents the drop destination from asking for promised image data, if anything |
| else (e.g. the system) also asks the web view to provide the same data. Additionally, this logic didn't |
| previously guarantee that the promised image would be cleared anyways, since it is dependent on the drop target |
| actually requesting the promised image in order to perform the cleanup. |
| |
| In lieu of clearing the promised drag image when it's requested, we instead clear it out upon mainframe |
| navigation, in PageClientImpl::didCommitLoadForMainFrame. |
| |
| Test: DragAndDropTests.MultiplePromisedImageDataRequests |
| |
| * UIProcess/Cocoa/WebViewImpl.h: |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::clearPromisedDragImage): |
| (WebKit::WebViewImpl::pasteboardChangedOwner): |
| (WebKit::WebViewImpl::provideDataForPasteboard): |
| |
| Fix the bug by not immediately clearing out the promised drag image. |
| |
| * UIProcess/mac/PageClientImplMac.mm: |
| (WebKit::PageClientImpl::didCommitLoadForMainFrame): |
| |
| 2019-08-02 Keith Rollin <krollin@apple.com> |
| |
| macCatalyst build fails the first attempt, requires a second build |
| https://bugs.webkit.org/show_bug.cgi?id=200242 |
| <rdar://problem/53678481> |
| |
| macCatalyst builds fail the first time with an error like: |
| |
| Code Signing Error: The file |
| "/Users/tim_cook/Build/Debug-maccatalyst/DerivedSources/WebKit2/WebContent-macCatalyst-no-sandbox.entitlements" |
| could not be opened. Verify the value of the |
| CODE_SIGN_ENTITLEMENTS build setting for target "WebContent" is |
| correct and that the file exists on disk. |
| |
| This problem is caused by the file referenced by |
| CODE_SIGN_ENTITLEMENTS changing during the build process. For |
| macCatalyst builds, we start with the iOS entitlements files and then |
| tweak them for macCatalyst. When this occurs during a clean build, |
| Xcode sees the entitlements file being generated and complains about |
| it. Restarting the build does so with the file already existing, and |
| so Xcode does not complain about it. |
| |
| The approach of generating or tweaking entitlement files may have |
| worked in the past, but the fact is that Xcode doesn't support it. |
| |
| We had a similar problem with macOS builds. The entitlements files |
| used to be generated on the fly with scripts like |
| WebKit/Scripts/process-network-sandbox-entitlements.sh. That process |
| was reworked to avoid the issue with Xcode not allowing the files to |
| be generated (see r241135). In short: |
| |
| o The various process-*-entitlements.sh scripts were consolidated into |
| a single process-entitlements file |
| o CODE_SIGN_ENTITLEMENTS, which contains the name of the entitlements |
| file to use, was de-initialized so that Xcode would not try to |
| access our generated entitlements file |
| o CODE_SIGN_INJECT_BASE_ENTITLEMENTS (which injects some base |
| entitlements) was set to NO. If it were left set to YES, Xcode would |
| create its own entitlements file and use it as if it were specified |
| in CODE_SIGN_ENTITLEMENTS |
| o WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS was updated with an |
| "--entitlements <generated_file>" option. |
| WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS was then used to initialize |
| OTHER_CODE_SIGN_FLAGS. By specifying the entitlements file this way, |
| we avoid Xcode complaining about it. |
| |
| This approach works well for macOS, and so we now also use it to |
| address the issue with macCatalyst. While we're at it, convert the |
| rest of the platforms to use the same approach and also generate their |
| entitlements from the process-entitlements script. |
| |
| The new process was validated by performing a build with the old |
| process and the new process, and then comparing the entitlements of |
| the resulting XPC services to make sure they were the same. Builds |
| were performed for all platforms, and for Engineering and Production |
| builds. |
| |
| Reviewed by Brent Fulgham. |
| |
| * Configurations/BaseXPCService.xcconfig: |
| * Configurations/Network-iOS.entitlements: Removed. |
| * Configurations/Network-macCatalyst.entitlements: Removed. |
| * Configurations/NetworkService.xcconfig: |
| * Configurations/PluginService.64.xcconfig: |
| * Configurations/PluginService.entitlements: Removed. |
| * Configurations/WebContent-iOS.entitlements: Removed. |
| * Configurations/WebContent-macCatalyst.entitlements: Removed. |
| * Configurations/WebContentService.Development.xcconfig: |
| * Configurations/WebContentService.xcconfig: |
| * Scripts/copy-webcontent-resources-to-private-headers.sh: |
| * Scripts/process-entitlements.sh: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-08-02 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Update OptionsGTK.cmake and NEWS for 2.25.4 release |
| |
| * gtk/NEWS: Add release notes for 2.25.4. |
| |
| 2019-08-02 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] WebSockets: use SOUP_WEBSOCKET_CLOSE_NO_STATUS when closing with no status |
| https://bugs.webkit.org/show_bug.cgi?id=200338 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/soup/WebSocketTaskSoup.cpp: |
| (WebKit::WebSocketTask::close): |
| |
| 2019-08-01 Alex Christensen <achristensen@webkit.org> |
| |
| Do not send NetworkProcessProxy::LogTestingEvent message if we are not testing |
| https://bugs.webkit.org/show_bug.cgi?id=200360 |
| |
| Reviewed by Tim Horton. |
| |
| Sending this message causes instantiation of the default WebsiteDataStore in the UIProcess, |
| which causes more memory to be used than is needed if we are browsing without the default WebsiteDataStore. |
| |
| Covered by an API test. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::logTestingEvent): |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| * NetworkProcess/NetworkSession.h: |
| (WebKit::NetworkSession::enableResourceLoadStatisticsLogTestingEvent const): |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| (WebKit::WebsiteDataStore::hasStatisticsTestingCallback const): |
| |
| 2019-08-01 Alex Christensen <achristensen@webkit.org> |
| |
| Move FormData zip file generation to NetworkProcess and enable it for all WebKit clients for uploading directories |
| https://bugs.webkit.org/show_bug.cgi?id=200102 |
| <rdar://problem/53275114> |
| |
| Reviewed by Darin Adler. |
| |
| * NetworkProcess/NetworkResourceLoadParameters.cpp: |
| (WebKit::NetworkResourceLoadParameters::encode const): |
| * Platform/IPC/FormDataReference.h: |
| (IPC::FormDataReference::encode const): |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: |
| * WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h: |
| (API::InjectedBundle::PageUIClient::shouldGenerateFileForUpload): Deleted. |
| (API::InjectedBundle::PageUIClient::generateFileForUpload): Deleted. |
| * WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp: |
| (WebKit::InjectedBundlePageUIClient::shouldGenerateFileForUpload): Deleted. |
| (WebKit::InjectedBundlePageUIClient::generateFileForUpload): Deleted. |
| * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::shouldReplaceWithGeneratedFileForUpload): Deleted. |
| (WebKit::WebChromeClient::generateReplacementFile): Deleted. |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2019-08-01 Tim Horton <timothy_horton@apple.com> |
| |
| REGRESSION: HSBC Personal Banking download/print dialog is usually positioned off screen on iPad |
| https://bugs.webkit.org/show_bug.cgi?id=200356 |
| <rdar://problem/51885199> |
| |
| Reviewed by Beth Dakin. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::desktopClassBrowsingRecommendedForRequest): |
| Add HSBC domains to the list of sites that recommend mobile mode by default. |
| |
| 2019-08-01 Chris Dumez <cdumez@apple.com> |
| |
| Crash under WebProcessProxy::didBecomeUnresponsive() |
| https://bugs.webkit.org/show_bug.cgi?id=200346 |
| <rdar://problem/53795984> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Make sure the BackgroundProcessResponsivenessTimer / ResponsivenessTimer ref their client |
| while they call mayBecomeUnresponsive() / willChangeIsResponsive() / didChangeIsResponsive() |
| / didBecomeUnresponsive() on their client, in case calling one of these ends up destroying |
| the client. |
| |
| * UIProcess/BackgroundProcessResponsivenessTimer.cpp: |
| (WebKit::BackgroundProcessResponsivenessTimer::setResponsive): |
| * UIProcess/ResponsivenessTimer.cpp: |
| (WebKit::ResponsivenessTimer::timerFired): |
| * UIProcess/ResponsivenessTimer.h: |
| * UIProcess/WebProcessProxy.h: |
| |
| 2019-08-01 Youenn Fablet <youenn@apple.com> |
| |
| UserMediaPermissionRequestManagerProxy should not use audio+video denied requests to deny audio-only or video-only requests |
| https://bugs.webkit.org/show_bug.cgi?id=200317 |
| |
| Reviewed by Eric Carlson. |
| |
| Only match audio+video denied requests with new audio+video requests. |
| That will ensure that audio can still be captured if user denied access to the camera through preferences |
| and website started with a getUserMedia({audio: true, video: true}) call. |
| Covered by added API test. |
| |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::wasRequestDenied): |
| |
| 2019-08-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] WebSockets: add support for extensions when using web sockets libsoup API |
| https://bugs.webkit.org/show_bug.cgi?id=199943 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/NetworkSocketChannel.cpp: |
| (WebKit::NetworkSocketChannel::didConnect): Add extensions parameter and pass it to the IPC message. |
| * NetworkProcess/NetworkSocketChannel.h: |
| * NetworkProcess/cocoa/WebSocketTaskCocoa.mm: |
| (WebKit::WebSocketTask::didConnect): Pass empty extensions string. |
| * NetworkProcess/soup/WebSocketTaskSoup.cpp: |
| (WebKit::WebSocketTask::acceptedExtensions const): Build the accepted extensions string. |
| (WebKit::WebSocketTask::didConnect): Pass accepted extensions to NetworkSocketChannel::didConnect(). |
| * NetworkProcess/soup/WebSocketTaskSoup.h: |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::WebSocketChannel::extensions): Return the extensions string received from the network process. |
| (WebKit::WebSocketChannel::didConnect): Save the extensions string. |
| * WebProcess/Network/WebSocketChannel.h: |
| * WebProcess/Network/WebSocketChannel.messages.in: |
| |
| 2019-08-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] Switch to use libsoup WebSockets API |
| https://bugs.webkit.org/show_bug.cgi?id=200162 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Remove temporary method added for old WebSockets implementation. |
| |
| * NetworkProcess/NetworkStorageSessionProvider.h: |
| |
| 2019-07-31 Dean Jackson <dino@apple.com> |
| |
| WKImagePreviewViewController not being autoreleased |
| https://bugs.webkit.org/show_bug.cgi?id=200325 |
| <rdar://problem/53788214> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Wenson noticed I wasn't autoreleasing the WKImagePreviewViewController. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView continueContextMenuInteraction:]): |
| |
| 2019-07-31 Chris Dumez <cdumez@apple.com> |
| |
| REGRESSION (r247486?): Flaky API Test TestWebKitAPI.WKWebView.LocalStorageProcessSuspends |
| https://bugs.webkit.org/show_bug.cgi?id=200086 |
| <rdar://problem/53501721> |
| |
| Reviewed by Alex Christensen. |
| |
| The test would first send a ProcessWillSuspendImminently IPC to the NetworkProcess and then |
| run JS in the WebContent process, which would in turn send IPC to the NetworkProcess. The |
| test was flaky because it expected the network process to receive the IPC from the UIProcess |
| *before* the one from the WebContent process. However, there is no guarantee about ordering |
| from IPC messages coming from different connections. |
| |
| To address the flakiness, this patch introduces a new ProcessWillSuspendImminentlyForTesting |
| synchronous IPC and uses this instead. As a result, it is now guaranteed that the network |
| process processes this IPC *before* receiving any IPC from the WebContent process that is |
| the result of IPC from the UIProcess. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::processWillSuspendImminentlyForTestingSync): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _sendNetworkProcessWillSuspendImminently]): |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::sendProcessWillSuspendImminentlyForTesting): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::sendNetworkProcessWillSuspendImminentlyForTesting): |
| (WebKit::WebProcessPool::sendNetworkProcessWillSuspendImminently): Deleted. |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-07-31 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS 13] Safari crashes when closing a tab with a focused element if the unified field has focus |
| https://bugs.webkit.org/show_bug.cgi?id=200291 |
| <rdar://problem/53717946> |
| |
| Reviewed by Megan Gardner. |
| |
| Makes -requestAutocorrectionContextWithCompletionHandler: robust in the case where the web page has been closed, |
| and there is no Connection object to use when waiting for a sync IPC response. |
| |
| Test: AutocorrectionTests.RequestAutocorrectionContextAfterClosingPage |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]): |
| |
| 2019-07-31 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: com.apple.WebKit.WebContent at com.apple.WebKit: -[WKAccessibilityWebPageObject accessibilityParameterizedAttributeNames] |
| https://bugs.webkit.org/show_bug.cgi?id=200277 |
| <rdar://problem/49475009> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Verify Page is available before calling into it. |
| |
| * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm: |
| (-[WKAccessibilityWebPageObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): |
| |
| 2019-07-31 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Datalist element support for TextFieldInputType |
| https://bugs.webkit.org/show_bug.cgi?id=98934 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Add a WebDataListSuggestionsDropdown implementation for the GTK port using a popup window with a tree view list. |
| |
| * Sources.txt: |
| * SourcesGTK.txt: |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::createDataListSuggestionsDropdown): |
| * UIProcess/API/gtk/PageClientImpl.h: |
| * UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp: Added. |
| (WebKit::firstTimeItemSelectedCallback): |
| (WebKit::WebDataListSuggestionsDropdownGtk::WebDataListSuggestionsDropdownGtk): |
| (WebKit::WebDataListSuggestionsDropdownGtk::~WebDataListSuggestionsDropdownGtk): |
| (WebKit::WebDataListSuggestionsDropdownGtk::treeViewRowActivatedCallback): |
| (WebKit::WebDataListSuggestionsDropdownGtk::didSelectOption): |
| (WebKit::WebDataListSuggestionsDropdownGtk::show): |
| (WebKit::WebDataListSuggestionsDropdownGtk::handleKeydownWithIdentifier): |
| (WebKit::WebDataListSuggestionsDropdownGtk::close): |
| * UIProcess/gtk/WebDataListSuggestionsDropdownGtk.h: Copied from Tools/WebKitTestRunner/gtk/UIScriptControllerGtk.h. |
| |
| 2019-07-31 Tim Horton <timothy_horton@apple.com> |
| |
| Remove WebKit2 Makefile guards for pre-Snow Leopard macOS |
| https://bugs.webkit.org/show_bug.cgi?id=200294 |
| |
| Reviewed by Dan Bernstein. |
| |
| * Makefile: |
| It seems ... unlikely ... that anyone is trying to build |
| trunk WebKit for Leopard or prior. |
| |
| 2019-07-30 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [WebKit] Add PageLoadState::Observer C API |
| https://bugs.webkit.org/show_bug.cgi?id=199848 |
| |
| Reviewed by Alex Christensen. |
| |
| There is no WebKit C API to get the timing of title changed since |
| WKPageLoaderClientV0::didReceiveTitleForFrame has been removed in |
| r235398. Cocoa and glib WebKit API exist. |
| |
| * PlatformWin.cmake: |
| * UIProcess/API/C/WKPage.cpp: |
| (WKPageSetPageStateClient): |
| * UIProcess/API/C/WKPage.h: Added WKPageSetPageStateClient. |
| * UIProcess/API/C/WKPageStateClient.h: Added. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::setPageLoadStateObserver): |
| * UIProcess/WebPageProxy.h: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-07-30 Chris Dumez <cdumez@apple.com> |
| |
| Fix non-thread safe use of WeakPtr under sendSecItemRequest() |
| https://bugs.webkit.org/show_bug.cgi?id=200249 |
| |
| Reviewed by Alex Christensen. |
| |
| The function was calling globalNetworkProcess() from a background thread. This is not safe because |
| globalNetworkProcess() deferences a WeakPtr<NetworkProcess> internally and the NetworkProcess object |
| gets destroyed on the main thread. |
| |
| * Shared/mac/SecItemShim.cpp: |
| (WebKit::sendSecItemRequest): |
| |
| 2019-07-24 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] Move SoupNetworkSession ownership from NetworkStorageSession to NetworkSession |
| https://bugs.webkit.org/show_bug.cgi?id=200076 |
| |
| Reviewed by Michael Catanzaro. |
| |
| NetworkStorageSession should only own the cookie jar, since it's the only thing it handles from the session. |
| |
| * NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp: |
| (WebKit::WebCookieManager::setCookiePersistentStorage): Use the network session instead of the storage session |
| to set the peristent cookie storage. |
| * NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp: |
| (WebKit::LegacyCustomProtocolManager::registerScheme): Iterate network sessions instead of storage sessions to |
| access the SoupNetworkSession. |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated): Use |
| NetworkProcess::forEachNetworkSession() to iterate network sessions. |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::lowMemoryHandler): Ditto. |
| (WebKit::NetworkProcess::forEachNetworkSession): Added to iterate network sessions intead of exposing the map |
| that is always used to iterate the sessions. |
| (WebKit::NetworkProcess::switchToNewTestingSession): Use the new NetworkStorageSession constructor API. |
| (WebKit::NetworkProcess::ensureSession): Ditto. |
| (WebKit::NetworkProcess::destroySession): Allow to destroy the default session for soup based ports. This is |
| only called right before process exit to ensure we don't leak network resources like the cookies database. |
| (WebKit::NetworkProcess::setResourceLoadStatisticsEnabled): Use NetworkProcess::forEachNetworkSession() to |
| iterate network sessions. |
| (WebKit::NetworkProcess::fetchWebsiteData): Ditto. |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): Ditto. |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): Ditto. |
| (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): Ditto. |
| (WebKit::NetworkProcess::setCacheModel): Ditto. |
| (WebKit::NetworkProcess::actualPrepareToSuspend): Ditto. |
| (WebKit::NetworkProcess::resume): Ditto. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkStorageSessionProvider.h: |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::clearDiskCache): Ditto. |
| * NetworkProcess/ios/NetworkProcessIOS.mm: |
| (WebKit::NetworkProcess::clearCacheForAllOrigins): Ditto. |
| * NetworkProcess/soup/NetworkProcessMainSoup.cpp: Destroy the default session before process exists. |
| * NetworkProcess/soup/NetworkProcessSoup.cpp: |
| (WebKit::NetworkProcess::userPreferredLanguagesChanged): Iterate network sessions instead of storage sessions to |
| access the SoupNetworkSession. |
| (WebKit::NetworkProcess::platformCreateDefaultStorageSession const): Use the new NetworkStorageSession constructor API. |
| (WebKit::NetworkProcess::clearDiskCache): Use NetworkProcess::forEachNetworkSession() to iterate network sessions. |
| (WebKit::NetworkProcess::setNetworkProxySettings): Iterate network sessions instead of storage sessions to |
| access the SoupNetworkSession. |
| * NetworkProcess/soup/NetworkSessionSoup.cpp: |
| (WebKit::NetworkSessionSoup::NetworkSessionSoup): Create the SoupNetworkSession and setup cookies. |
| (WebKit::NetworkSessionSoup::soupSession const): Return the SoupSession of SoupNetworkSession. |
| (WebKit::NetworkSessionSoup::setCookiePersistentStorage): Setup a new cookie jar. |
| * NetworkProcess/soup/NetworkSessionSoup.h: |
| |
| 2019-07-30 Truitt Savell <tsavell@apple.com> |
| |
| Unreviewed, rolling out r247932. |
| |
| Broke 8 API tests across all platforms. |
| |
| Reverted changeset: |
| |
| "Fix non-thread safe use of WeakPtr under |
| sendSecItemRequest()" |
| https://bugs.webkit.org/show_bug.cgi?id=200249 |
| https://trac.webkit.org/changeset/247932 |
| |
| 2019-07-29 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| YouTube search field shows RTL text outside its border on iPadOS |
| https://bugs.webkit.org/show_bug.cgi?id=200253 |
| <rdar://problem/53680603> |
| |
| Reviewed by Beth Dakin. |
| |
| Limits code added in r238939 to respect the current keyboard's writing mode to only editable web views. This |
| behavior was only intended for Mail, and isn't generally compatible with web content. |
| |
| While the call to -setInitialDirection is correctly gated on an web view editability check, it appears that |
| other changes in iOS 13 now cause -setBaseWritingDirection:forRange: to be invoked directly from keyboards code. |
| This means that -setBaseWritingDirection:forRange: should additionally be guarded with the same check. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setBaseWritingDirection:forRange:]): |
| |
| 2019-07-29 Sihui Liu <sihui_liu@apple.com> |
| |
| Try fixing crash at com.apple.WebKit.Networking: NetworkProcess::setSharedHTTPCookieStorage |
| https://bugs.webkit.org/show_bug.cgi?id=200189 |
| <rdar://problem/41325767> |
| |
| Reviewed by Chris Dumez. |
| |
| The crash indicates that sharedCookieStorage is accessed before being set in network process. |
| sharedCookieStorage is set during the processing of InitializeNetworkProcess message, and access to |
| sharedCookieStorage is supposed to happen after that. Therefore, it is likely some message is received and |
| handled before InitializeNetworkProcess. |
| |
| One possible explanation is WebKit APIs get called on different threads. Because of the race in checking and |
| setting m_networkProcess, some message is sent between network process gets launched (m_networkProcess is set) |
| and InitializeNetworkProcess message is sent. To mitigate this issue, we make sure m_networkProcess is set only |
| in the main runloop and only after InitializeNetworkProcess is sent. |
| |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| |
| 2019-07-29 Chris Dumez <cdumez@apple.com> |
| |
| Fix non-thread safe use of WeakPtr under sendSecItemRequest() |
| https://bugs.webkit.org/show_bug.cgi?id=200249 |
| |
| Reviewed by Alex Christensen. |
| |
| The function was calling globalNetworkProcess() from a background thread. This is not safe because |
| globalNetworkProcess() deferences a WeakPtr<NetworkProcess> internally and the NetworkProcess object |
| gets destroyed on the main thread. |
| |
| * Shared/mac/SecItemShim.cpp: |
| (WebKit::sendSecItemRequest): |
| |
| 2019-07-29 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentChangeObserver] didFinishContentChangeObserving should include the type of content change. |
| https://bugs.webkit.org/show_bug.cgi?id=200247 |
| <rdar://problem/53681149> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm: |
| (WebKit::WebChromeClient::didFinishContentChangeObserving): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::didFinishContentChangeObserving): |
| |
| 2019-07-29 Youenn Fablet <youenn@apple.com> |
| |
| REGRESSION: WebSockets no longer work in Service Workers |
| https://bugs.webkit.org/show_bug.cgi?id=199906 |
| <rdar://problem/53516732> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Use WebSocketProvider so that network calls are done in the network process. |
| |
| * WebProcess/Storage/WebSWContextManagerConnection.cpp: |
| (WebKit::WebSWContextManagerConnection::installServiceWorker): |
| |
| 2019-07-29 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentChangeObserver] ChromeClient::observedContentChange() name is misleading |
| https://bugs.webkit.org/show_bug.cgi?id=200238 |
| <rdar://problem/53677038> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm: |
| (WebKit::WebChromeClient::didFinishContentChangeObserving): |
| (WebKit::WebChromeClient::observedContentChange): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::didFinishContentChangeObserving): |
| (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver): Deleted. |
| |
| 2019-07-26 Ryosuke Niwa <rniwa@webkit.org> |
| |
| ShareableBitmap::createGraphicsContext() should return nullptr when CGBitmapContextCreateWithData returns nil |
| https://bugs.webkit.org/show_bug.cgi?id=200185 |
| |
| Reviewed by Simon Fraser. |
| |
| We should not be creating GraphicsContext with nil CGContextRef in ShareableBitmap::createGraphicsContext() |
| as such a GraphicsContext is only used for specific purposes. |
| |
| This patch adds an early return to ShareableBitmap::createGraphicsContext() when CGBitmapContextCreateWithData |
| returns nil CGContextRef. |
| |
| * PluginProcess/PluginControllerProxy.cpp: |
| (WebKit::PluginControllerProxy::paint): |
| * Shared/API/c/cg/WKImageCG.cpp: |
| (WKImageCreateFromCGImage): |
| * Shared/ContextMenuContextData.cpp: |
| (WebKit::ContextMenuContextData::ContextMenuContextData): |
| * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: |
| (WebKit::RemoteLayerBackingStore::display): |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::encodeImage): |
| * Shared/cg/ShareableBitmapCG.cpp: |
| (WebKit::ShareableBitmap::createGraphicsContext): |
| (WebKit::ShareableBitmap::makeCGImageCopy): |
| * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: |
| (WebKit::imageForRect): |
| * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: |
| (WebKit::InjectedBundleRangeHandle::renderedImage): |
| * WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp: |
| (WebKit::InjectedBundleHitTestResult::image const): |
| * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: |
| (WebKit::NetscapePlugin::snapshot): |
| * WebProcess/Plugins/PDF/PDFPlugin.mm: |
| (WebKit::PDFPlugin::snapshot): |
| * WebProcess/Plugins/PluginProxy.cpp: |
| (WebKit::PluginProxy::paint): |
| (WebKit::PluginProxy::update): |
| * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm: |
| (WebKit::convertCGImageToBitmap): |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::display): |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::createSelectionSnapshot const): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::snapshotAtSize): |
| (WebKit::WebPage::snapshotNode): |
| (WebKit::WebPage::drawRectToImage): |
| |
| 2019-07-29 Dean Jackson <dino@apple.com> |
| |
| Contextual menu does not present when holding an embedded photo but works with link and attachments |
| https://bugs.webkit.org/show_bug.cgi?id=200239 |
| <rdar://problem/53318733> |
| |
| Reviewed by Tim Horton. |
| |
| If the user long-pressed on an image, and the client implemented the new API but did |
| not provide a configuration, we were not falling back to the default behaviour of |
| giving a menu allowing the user to copy/share/save the image. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView continueContextMenuInteraction:]): If we get through the delegates, |
| and the element is an image, return the default configuration. |
| |
| 2019-07-29 Chris Dumez <cdumez@apple.com> |
| |
| Remove unnecessary null check under WebResourceLoadStatisticsStore::hasStorageAccess() |
| https://bugs.webkit.org/show_bug.cgi?id=200229 |
| |
| Reviewed by Alex Christensen. |
| |
| Remove unnecessary null check under WebResourceLoadStatisticsStore::hasStorageAccess(). |
| There is already a null check with an early return a few lines above. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::hasStorageAccess): |
| |
| 2019-07-29 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| UI process occasionally hangs in -[UIKeyboardTaskQueue lockWhenReadyForMainThread] |
| https://bugs.webkit.org/show_bug.cgi?id=200215 |
| <rdar://problem/52976965> |
| |
| Reviewed by Tim Horton. |
| |
| To implement autocorrection on iOS, UIKit sometimes needs to request contextual information from WebKit. This is |
| handled as a sync IPC message in WebKit, since UIKit would otherwise proceed to block the main thread after |
| sending the request, preventing WebKit from handling any IPC responses in the UI process (potentially resulting |
| in deadlock if any other sync IPC messages were to arrive in the UI process during this time). |
| |
| The synchronous nature of this autocorrection request means that if any sync IPC message were to be |
| simultaneously dispatched in the opposite direction (i.e. web to UI process), we need to immediately handle the |
| incoming sync message in the UI process (otherwise, we'd end up deadlocking for 1 second until the |
| autocorrection context request hits a 1-second IPC timeout). |
| |
| One such synchronous message from the web process to the UI process is WebPageProxy::CreateNewPage, triggered as |
| a result of synchronously opening a new window. Due to Safari changes in iOS 13 (<rdar://problem/51755088>), |
| this message now calls into code which then causes UIKit to call *back into* -[WKContentView |
| requestAutocorrectionContextWithCompletionHandler:] for the newly opened web view, under the scope of the call |
| to -requestAutocorrectionContextWithCompletionHandler: in the original web view. |
| |
| This caused a crash, which was tracked in <rdar://problem/52590170>. There was an attempt to fix this in r247345 |
| by invoking the existing handler well before storing the new one; while this avoided the crash, it didn't solve |
| the root problem, which was that keyboard task queues would get into a bad state after this scenario; this would |
| manifest in a UI process hang under -[UIKeyboardTaskQueue lockWhenReadyForMainThread] during the next user |
| gesture, which is tracked by this bug (<rdar://problem/52976965>). |
| |
| As it turns out, the keyboard task queue gets into a bad state because it is architected in such a way that |
| tasks added to the queue under the scope of parent task must be finished executing before their parents; |
| otherwise, the call to -[UIKeyboardTaskExecutionContext returnExecutionToParentWithInfo:] never happens when |
| handling the child task. This has the effect of causing the keyboard task queue to end up with a |
| UIKeyboardTaskExecutionContext that can never return execution to its parent context, such that if the task |
| queue is then told to wait until any future task is finished executing, it will hang forever, waiting for these |
| stuck tasks to finish executing (which never happens, because they're all waiting to return execution to their |
| parents which are already done executing!) |
| |
| To fix this hang and avoid ever getting into this bad state, we need to invoke the autocorrection request |
| handlers in this order: |
| |
| (1) Receive outer autocorrection context request. |
| (2) Receive inner autocorrection context request. |
| (3) Invoke inner autocorrection context request completion handler. |
| (4) Invoke outer autocorrection context request completion handler. |
| |
| ...instead of swapping (3) and (4), like we do currently. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView resignFirstResponderForWebView]): |
| |
| Remove the hack added in r247345 to try and avoid reentrant autocorrection context requests; we don't need this |
| anymore, since we should now be able to handle these reentrant requests in the way UIKit expects. |
| |
| (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]): |
| |
| Add an early return in the case where the request is synchronous and there's already a pending autocorrection |
| context to ensure that the completion handler for the nested request is invoked before the outer request is |
| finished. |
| |
| 2019-07-29 Simon Fraser <simon.fraser@apple.com> |
| |
| Can't scroll on yummly.co.uk recipe (scale(0) div covers the content and hit-tests) |
| https://bugs.webkit.org/show_bug.cgi?id=200263 |
| rdar://problem/53679408 |
| |
| Reviewed by Antti Koivisto. |
| |
| The content on this page had a scale(0) div overlaying an overflow:scroll element, |
| and our UI-side hit-testing code would find this scale(0) element, because apparently |
| -[UIView convertPoint:fromView:] will happily work with non-invertible matrices, and |
| -[UIView pointInside:withEvent:] just compares the point with the view bounds. |
| |
| Since the view frame takes the transform into account, we can look for an empty frame |
| to detect these non-invertible transforms. |
| |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (WebKit::collectDescendantViewsAtPoint): |
| |
| 2019-07-29 Youenn Fablet <youenn@apple.com> |
| |
| NetworkProcess clear and fetch of cache entries might move the callback aggregator more than once |
| https://bugs.webkit.org/show_bug.cgi?id=200228 |
| |
| Reviewed by Alex Christensen. |
| |
| copyRef the callback aggregator instead of moving it. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): |
| |
| 2019-07-29 Chris Dumez <cdumez@apple.com> |
| |
| Possible use-after-move under NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated() |
| https://bugs.webkit.org/show_bug.cgi?id=200225 |
| |
| Reviewed by Brent Fulgham. |
| |
| The code was WTFMove()-ing the method parameter inside of a loop, which means that it could |
| move it several times. Instead of copying the parameters, I opted into sending the statistics |
| only to the network session that matches this WebProcess connection. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated): |
| |
| 2019-07-27 Chris Dumez <cdumez@apple.com> |
| |
| Allow more syscalls in the WebContent process' sandbox profile |
| https://bugs.webkit.org/show_bug.cgi?id=200182 |
| <rdar://problem/53594973> |
| |
| Reviewed by Geoffrey Garen. |
| |
| I reviewed all crash traces attached to the radar and found the following |
| syscalls that we not yet allowed by the WebContent process's sandbox |
| profile. |
| |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2019-07-26 Jiewen Tan <jiewen_tan@apple.com> |
| |
| NavigationSOAuthorizationSession should check the active URL of the responding page after waking up from waiting |
| https://bugs.webkit.org/show_bug.cgi?id=200150 |
| <rdar://problem/53280170> |
| |
| Reviewed by Brent Fulgham. |
| |
| NavigationSOAuthorizationSession should check the active URL of the responding page after waking up from waiting |
| as the page might have already changed the location. |
| |
| * UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.h: |
| * UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.mm: |
| (WebKit::NavigationSOAuthorizationSession::shouldStartInternal): |
| (WebKit::NavigationSOAuthorizationSession::webViewDidMoveToWindow): |
| (WebKit::NavigationSOAuthorizationSession::pageActiveURLDidChangeDuringWaiting const): |
| * UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm: |
| (WebKit::SubFrameSOAuthorizationSession::abortInternal): |
| |
| 2019-07-26 Chris Dumez <cdumez@apple.com> |
| |
| Crashes under XPCServiceMain() / mach_msg_trap() due to sandboxing |
| https://bugs.webkit.org/show_bug.cgi?id=200173 |
| <rdar://problem/53594973> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Allow a few more syscalls as they appear to be needed by mach_msg_trap(). |
| |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2019-07-26 Daniel Bates <dabates@apple.com> |
| |
| [iOS] REGRESSION: Keyboard dismisses and reappears when typing 2FA pin on appleid.apple.com |
| https://bugs.webkit.org/show_bug.cgi?id=200171 |
| <rdar://problem/50245251> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Take out an InputViewUpdateDeferrer token (if we don't already have one) to temporarily defer |
| tearing down the input view (keyboard) before bluring the previously focused element as part |
| of switching between focused elements. This avoid a noticeable flash caused by UIKit animating |
| out and animating in the keyboard should the newly focused element require the keyboard. We |
| only take out the InputViewUpdateDeferrer until we fall off the end of _elementDidFocus: (or |
| bail early). Once we fall of the end UIKit will update input view UI. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]): |
| |
| 2019-07-26 Chris Dumez <cdumez@apple.com> |
| |
| Avoid WebContent process SIGKILL when using kevent() |
| https://bugs.webkit.org/show_bug.cgi?id=200170 |
| <rdar://problem/51559921> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Avoid WebContent process SIGKILL when using kevent() by updated its sandboxing profile. |
| |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2019-07-26 Chris Dumez <cdumez@apple.com> |
| |
| [iOS] WebPage::TouchEventSync() & WebPage::GetPositionInformation() sync IPC causes UIProcess hangs |
| https://bugs.webkit.org/show_bug.cgi?id=200138 |
| <rdar://problem/52698157> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Revert most of r247822 and use an alternative approach to address hangs. In this patch, the proposal |
| is to add a SendSyncOption::ForceDispatchWhenDestinationIsWaitingForUnboundedSyncReply flag on the |
| WebPage::TouchEventSync() & WebPage::GetPositionInformation() sendSync() calls in the UIProcess. |
| Those will cause this IPCs to get dispatched right away in the WebContent process, even if the |
| WebContent process is itself currently stuck on unbounded (i.e. potentially slow) synchronous IPC |
| (JS alerts / prompts & sync XHR). Because re-entering WebCore on sync IPC is generally unsafe, this |
| patch also updates the WebPage::getPositionInformation() & WebPage::touchEventSync() to return early |
| (i.e. cancelled) if they get called while the WebContent process is stuck on a slow sendSync. |
| |
| This approach should address the UIProcess hangs caused by the WebPage::TouchEventSync() and |
| WebPage::GetPositionInformation() sync IPC messages when the WebContent process is busy on a slow XHR |
| or a JS prompt / alert. It should be safe because we do not re-enter WebCore. The only drawback is that |
| those IPCs will be cancelled (early return with default value) when the WebContent process is busy. |
| However, I am being told that this is likely acceptable in practice. |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::SyncMessageState::processIncomingMessage): |
| (IPC::Connection::sendMessage): |
| (IPC::Connection::sendSyncMessage): |
| (IPC::Connection::dispatchMessage): |
| * Platform/IPC/Connection.h: |
| (IPC::UnboundedSynchronousIPCScope::UnboundedSynchronousIPCScope): |
| (IPC::UnboundedSynchronousIPCScope::~UnboundedSynchronousIPCScope): |
| (IPC::UnboundedSynchronousIPCScope::hasOngoingUnboundedSyncIPC): |
| * Platform/IPC/Decoder.cpp: |
| (IPC::Decoder::shouldDispatchMessageWhenWaitingForSyncReply const): |
| * Platform/IPC/Decoder.h: |
| * Platform/IPC/Encoder.cpp: |
| (IPC::Encoder::shouldDispatchMessageWhenWaitingForSyncReply const): |
| (IPC::Encoder::setShouldDispatchMessageWhenWaitingForSyncReply): |
| (IPC::Encoder::wrapForTesting): |
| * Platform/IPC/Encoder.h: |
| * Platform/IPC/MessageFlags.h: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::handleTouchEventSynchronously): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView ensurePositionInformationIsUpToDate:]): |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::loadResourceSynchronously): |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| (WebKit::WebChromeClient::runJavaScriptAlert): |
| (WebKit::WebChromeClient::runJavaScriptConfirm): |
| (WebKit::WebChromeClient::runJavaScriptPrompt): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::layerVolatilityTimerFired): |
| (WebKit::WebPage::markLayersVolatile): |
| (WebKit::WebPage::cancelMarkLayersVolatile): |
| (WebKit::WebPage::touchEventSync): |
| (WebKit::WebPage::didCompletePageTransition): |
| (WebKit::WebPage::updatePreferences): |
| (WebKit::WebPage::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::sendSyncWithDelayedReply): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::getPositionInformation): |
| |
| 2019-07-26 Zalan Bujtas <zalan@apple.com> |
| |
| Unable to tap/double tap to open files/folders in Google Drive in Safari |
| https://bugs.webkit.org/show_bug.cgi?id=200096 |
| <rdar://problem/52748552> |
| |
| Reviewed by Wenson Hsieh. |
| |
| This patch reverts to the original double-tap-for-double-click implementation (see r244775 and r246347 for more information). |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| * UIProcess/PageClient.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::creationParameters): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::doubleTapForDoubleClickDelay): Deleted. |
| (WebKit::PageClientImpl::doubleTapForDoubleClickRadius): Deleted. |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView cleanupInteraction]): |
| (-[WKContentView _removeDefaultGestureRecognizers]): |
| (-[WKContentView _addDefaultGestureRecognizers]): |
| (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): Do not recognize the single and double gestures the same time. |
| (-[WKContentView gestureRecognizerShouldBegin:]): |
| (-[WKContentView _doubleTapRecognizedForDoubleClick:]): |
| (-[WKContentView _didStartProvisionalLoadForMainFrame]): |
| (-[WKContentView _ensureNonBlockingDoubleTapGestureRecognizer]): Deleted. |
| (-[WKContentView _doubleTapForDoubleClickDelay]): Deleted. |
| (-[WKContentView _doubleTapForDoubleClickRadius]): Deleted. |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::handleDoubleTapForDoubleClickAtPoint): |
| * WebProcess/WebPage/WebPage.cpp: |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint): |
| (WebKit::WebPage::commitPotentialTap): |
| (WebKit::WebPage::handlePotentialDoubleTapForDoubleClickAtPoint): Deleted. |
| |
| 2019-07-26 Eric Liang <ericliang@apple.com> |
| |
| AX: web process should load correct bundle path for MACCATALYST |
| https://bugs.webkit.org/show_bug.cgi?id=200122 |
| |
| Reviewed by Brent Fulgham. |
| |
| Added the path to accessibility bundle for Mac Catalyst. |
| Added sandbox profile to read accessibility settings. |
| |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::registerWithAccessibility): |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2019-07-26 Alexander Mikhaylenko <exalm7659@gmail.com> |
| |
| REGRESSION(r246496): [GTK] Tapping the web view scrolls up a bit |
| https://bugs.webkit.org/show_bug.cgi?id=200084 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| gdk_event_get_scroll_direction() returns false, but also sets direction to GDK_SCROLL_UP if |
| the direction was GDK_SCROLL_SMOOTH. Relying on zero deltas in this case is not correct, because |
| they can also be zero with GDK_SCROLL_SMOOTH. In this case, set the direction manually to avoid |
| that. |
| |
| See https://gitlab.gnome.org/GNOME/gtk/issues/2048 |
| |
| * Shared/gtk/WebEventFactory.cpp: |
| (WebKit::WebEventFactory::createWebWheelEvent): |
| |
| 2019-07-26 Loïc Yhuel <loic.yhuel@softathome.com> |
| |
| [WPE] Support disk cache dumping like GTK |
| https://bugs.webkit.org/show_bug.cgi?id=200157 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Creating or touching "dump" would create the dump.json. |
| |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::Cache::Cache): |
| |
| 2019-07-26 Rob Buis <rbuis@igalia.com> |
| |
| Make storing cross-origin top-level prefetches in HTTP cache optional |
| https://bugs.webkit.org/show_bug.cgi?id=199499 |
| |
| Reviewed by Youenn Fablet. |
| |
| Currently when we navigate we check if there is a cross-origin top-level |
| prefetch we can use for the navigation. The current solution uses the |
| HTTP cache as a way to store the prefetch and to immediately use it for |
| the navigation load. However this solution fails in case the prefetch is |
| not cacheable. |
| |
| Instead of this, simulate a HTTP Cache entry to process the load and |
| afterwards try to store the navigation load into the HTTP cache, where |
| normal store decisions will be applied. |
| |
| Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| (WebKit::NetworkResourceLoader::retrieveCacheEntryInternal): |
| * NetworkProcess/NetworkResourceLoader.h: |
| |
| 2019-07-25 Zan Dobersek <zdobersek@igalia.com> |
| |
| Unreviewed build fix in NetworkDataTaskSoup. |
| |
| * NetworkProcess/soup/NetworkDataTaskSoup.cpp: |
| (WebKit::NetworkDataTaskSoup::authenticateCallback): |
| Fix incorrect use of the dereferencing operator introduced in r247831. |
| |
| 2019-07-25 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Unreviewed, build fix after r247851 |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| Reverts an unnecessary change. |
| |
| 2019-07-25 Fujii Hironori <fujii.hironori@gmail.com> |
| |
| [GTK] Indistinguishable overloaded callback function inspectorViewDestroyed if RemoteWebInspectorProxyGtk.cpp and WebInspectorProxyGtk.cpp are in a unified build bundle |
| https://bugs.webkit.org/show_bug.cgi?id=200123 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp: |
| (WebKit::remoteInspectorViewDestroyed): Added. |
| (WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow): |
| (WebKit::inspectorViewDestroyed): Deleted. |
| Renamed inspectorViewDestroyed to remoteInspectorViewDestroyed. |
| |
| 2019-07-25 Jiewen Tan <jiewen_tan@apple.com> |
| |
| WebPageProxy::receivedPolicyDecision should check navigation ID before clear pendingAPIRequest |
| https://bugs.webkit.org/show_bug.cgi?id=200108 |
| <rdar://problem/53521238> |
| |
| Reviewed by Chris Dumez. |
| |
| Assuming there are two loads happening one after another. There is an issue when clients save |
| the first decisionHandler and then call WKNavigationActionPolicyCancel for it right after the |
| second decisionHandler received, -[WKWebView URL] could return a null string even though it is |
| loading the second one. |
| |
| To solve that, this patch pairs a navigationID with the pendingAPIRequestURL such that |
| WebPageProxy::receivedPolicyDecision could clear the pendingAPIRequestURL only if |
| the passed navigation ID matches the current one. |
| |
| * UIProcess/PageLoadState.cpp: |
| (WebKit::PageLoadState::reset): |
| (WebKit::PageLoadState::activeURL): |
| (WebKit::PageLoadState::estimatedProgress): |
| (WebKit::PageLoadState::pendingAPIRequestURL const): |
| (WebKit::PageLoadState::pendingAPIRequest const): |
| (WebKit::PageLoadState::setPendingAPIRequest): |
| (WebKit::PageLoadState::clearPendingAPIRequest): |
| (WebKit::PageLoadState::isLoading): |
| (WebKit::PageLoadState::setPendingAPIRequestURL): Deleted. |
| (WebKit::PageLoadState::clearPendingAPIRequestURL): Deleted. |
| * UIProcess/PageLoadState.h: |
| (WebKit::PageLoadState::setPendingAPIRequest): |
| (WebKit::PageLoadState::setPendingAPIRequestURL): Deleted. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::launchProcessForReload): |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadFile): |
| (WebKit::WebPageProxy::loadDataWithNavigationShared): |
| (WebKit::WebPageProxy::loadAlternateHTML): |
| (WebKit::WebPageProxy::loadWebArchiveData): |
| (WebKit::WebPageProxy::reload): |
| (WebKit::WebPageProxy::goToBackForwardItem): |
| (WebKit::WebPageProxy::receivedPolicyDecision): |
| (WebKit::WebPageProxy::continueNavigationInNewProcess): |
| (WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared): |
| (WebKit::WebPageProxy::didSameDocumentNavigationForFrame): |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| |
| 2019-07-25 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r247806. |
| https://bugs.webkit.org/show_bug.cgi?id=200141 |
| |
| It is regressing PLT (Requested by youenn on #webkit). |
| |
| Reverted changeset: |
| |
| "Disable speculative loading if cache is not to be used for |
| the load" |
| https://bugs.webkit.org/show_bug.cgi?id=199644 |
| https://trac.webkit.org/changeset/247806 |
| |
| 2019-07-25 Dean Jackson <dino@apple.com> |
| |
| WebKit/UIProcess/ios/WKContentViewInteraction.mm: error: implementing deprecated method contextMenuInteractionWillPresent |
| https://bugs.webkit.org/show_bug.cgi?id=200136 |
| <rdar://problem/53547698> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Ignore deprecation warnings for these UIContextMenuInteraction delegates. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView contextMenuInteractionWillPresent:]): |
| (-[WKContentView contextMenuInteraction:willCommitWithAnimator:]): |
| (-[WKContentView contextMenuInteractionDidEnd:]): |
| |
| 2019-07-25 Dean Jackson <dino@apple.com> |
| |
| Add helper for ignoring deprecated implementation warnings |
| https://bugs.webkit.org/show_bug.cgi?id=200135 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Add ALLOW_DEPRECATED_IMPLEMENTATIONS_BEGIN/END macro which |
| is IGNORE_WARNINGS_BEGIN("deprecated-implementations") |
| |
| * UIProcess/API/Cocoa/LegacyBundleForClass.mm: |
| * UIProcess/API/Cocoa/WKBrowsingContextController.mm: |
| (IGNORE_WARNINGS_BEGIN): Deleted. |
| * UIProcess/API/Cocoa/WKBrowsingContextGroup.mm: |
| (IGNORE_WARNINGS_BEGIN): Deleted. |
| * UIProcess/API/Cocoa/WKConnection.mm: |
| (IGNORE_WARNINGS_BEGIN): Deleted. |
| * UIProcess/API/Cocoa/WKPreviewElementInfo.mm: |
| * UIProcess/API/Cocoa/WKProcessGroup.mm: |
| (IGNORE_WARNINGS_BEGIN): Deleted. |
| * UIProcess/API/Cocoa/WKTypeRefWrapper.mm: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): |
| (-[WKWebView draggedImage:endedAt:operation:]): |
| (-[WKWebView accessibilityAttributeValue:]): |
| (-[WKWebView accessibilityAttributeValue:forParameter:]): |
| (-[WKWebView namesOfPromisedFilesDroppedAtDestination:]): |
| (-[WKWebView IGNORE_WARNINGS_END]): Deleted. |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): |
| (-[WKWebViewConfiguration _setWebsiteDataStore:]): |
| (-[WKWebViewConfiguration IGNORE_WARNINGS_END]): Deleted. |
| * UIProcess/API/Cocoa/_WKWebsiteDataStore.mm: |
| * UIProcess/API/mac/WKView.mm: |
| (-[WKView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): |
| (-[WKView draggedImage:endedAt:operation:]): |
| (-[WKView accessibilityAttributeValue:]): |
| (-[WKView accessibilityAttributeValue:forParameter:]): |
| (-[WKView namesOfPromisedFilesDroppedAtDestination:]): |
| (-[WKView IGNORE_WARNINGS_END]): Deleted. |
| * UIProcess/WKImagePreviewViewController.mm: |
| (-[WKImagePreviewViewController ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): |
| (-[WKImagePreviewViewController IGNORE_WARNINGS_END]): Deleted. |
| * UIProcess/ios/forms/WKAirPlayRoutePicker.mm: |
| (-[WKAirPlayRoutePicker popoverControllerDidDismissPopover:]): |
| * UIProcess/ios/forms/WKFileUploadPanel.mm: |
| (-[WKFileUploadPanel popoverControllerDidDismissPopover:]): |
| * UIProcess/ios/forms/WKFormPopover.mm: |
| (-[WKRotatingPopover popoverControllerDidDismissPopover:]): |
| * WebProcess/Plugins/PDF/PDFPlugin.mm: |
| (-[WKPDFPluginAccessibilityObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): |
| (-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:]): |
| (-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:forParameter:]): |
| (-[WKPDFPluginAccessibilityObject accessibilityPerformAction:]): |
| (-[WKPDFPluginAccessibilityObject accessibilityIsAttributeSettable:]): |
| (-[WKPDFPluginAccessibilityObject accessibilitySetValue:forAttribute:]): |
| (-[WKPDFPluginAccessibilityObject IGNORE_WARNINGS_END]): Deleted. |
| * WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm: |
| (-[WKAccessibilityWebPageObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): |
| (-[WKAccessibilityWebPageObject accessibilityIsAttributeSettable:]): |
| (-[WKAccessibilityWebPageObject accessibilitySetValue:forAttribute:]): |
| (-[WKAccessibilityWebPageObject accessibilityAttributeValue:]): |
| (-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]): |
| (-[WKAccessibilityWebPageObject IGNORE_WARNINGS_END]): Deleted. |
| |
| 2019-07-25 Youenn Fablet <youenn@apple.com> |
| |
| Make NetworkSession no longer RefCounted |
| https://bugs.webkit.org/show_bug.cgi?id=200020 |
| |
| This allows to have a simpler memory management model where |
| NetworkSession cannot live once removed from the network process session map. |
| This requires some additional null checks, especially in NetworkDataTask. |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * NetworkProcess/curl/NetworkSessionCurl.h: |
| * NetworkProcess/soup/NetworkSessionSoup.h: |
| * NetworkProcess/NetworkDataTask.cpp: |
| (WebKit::NetworkDataTask::NetworkDataTask): |
| * NetworkProcess/NetworkDataTask.h: |
| * NetworkProcess/NetworkDataTaskBlob.cpp: |
| (WebKit::NetworkDataTaskBlob::~NetworkDataTaskBlob): |
| (WebKit::NetworkDataTaskBlob::download): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::lowMemoryHandler): |
| (WebKit::NetworkProcess::setSession): |
| (WebKit::NetworkProcess::destroySession): |
| (WebKit::NetworkProcess::setResourceLoadStatisticsEnabled): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::networkSessions): |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::create): |
| * NetworkProcess/NetworkSession.h: |
| * NetworkProcess/NetworkSocketChannel.cpp: |
| (WebKit::NetworkSocketChannel::NetworkSocketChannel): |
| (WebKit::NetworkSocketChannel::~NetworkSocketChannel): |
| * NetworkProcess/NetworkSocketChannel.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded): |
| (WebKit::computeIsAlwaysOnLoggingAllowed): |
| (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): |
| (WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa): |
| (WebKit::NetworkDataTaskCocoa::resume): |
| (WebKit::NetworkDataTaskCocoa::isAlwaysOnLoggingAllowed const): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate initWithNetworkSession:withCredentials:]): |
| (WebKit::NetworkSessionCocoa::create): |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * NetworkProcess/soup/NetworkDataTaskSoup.cpp: |
| (WebKit::NetworkDataTaskSoup::createRequest): |
| (WebKit::NetworkDataTaskSoup::clearRequest): |
| (WebKit::NetworkDataTaskSoup::cancel): |
| (WebKit::NetworkDataTaskSoup::authenticateCallback): |
| (WebKit::NetworkDataTaskSoup::authenticate): |
| (WebKit::NetworkDataTaskSoup::continueAuthenticate): |
| |
| 2019-07-25 Chris Dumez <cdumez@apple.com> |
| |
| Avoid some unnecessary HashMap copies |
| https://bugs.webkit.org/show_bug.cgi?id=200129 |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::didClose): |
| * UIProcess/AuxiliaryProcessProxy.cpp: |
| (WebKit::AuxiliaryProcessProxy::connect): |
| * UIProcess/Launcher/ProcessLauncher.cpp: |
| (WebKit::ProcessLauncher::ProcessLauncher): |
| * UIProcess/Launcher/ProcessLauncher.h: |
| (WebKit::ProcessLauncher::create): |
| * WebProcess/Plugins/WebPluginInfoProvider.cpp: |
| (WebKit::WebPluginInfoProvider::setPluginLoadClientPolicy): |
| |
| 2019-07-25 Truitt Savell <tsavell@apple.com> |
| |
| Unreviewed, rolling out r247821. |
| |
| Caused two crashing Layout Tests |
| |
| Reverted changeset: |
| |
| "Make storing cross-origin top-level prefetches in HTTP cache |
| optional" |
| https://bugs.webkit.org/show_bug.cgi?id=199499 |
| https://trac.webkit.org/changeset/247821 |
| |
| 2019-07-25 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Unreviewed, fix -Wredundant-move warning spam after r247672 |
| https://bugs.webkit.org/show_bug.cgi?id=199967 |
| <rdar://problem/53351435> |
| |
| * Platform/IPC/ArgumentCoders.cpp: |
| (IPC::decodeStringText): |
| * Platform/IPC/ArgumentCoders.h: |
| |
| 2019-07-25 Chris Dumez <cdumez@apple.com> |
| |
| Avoid UI Process hangs when the WebContent process is showing JS prompts / alerts |
| https://bugs.webkit.org/show_bug.cgi?id=200107 |
| <rdar://problem/53034592> |
| |
| Reviewed by Geoffrey Garen. |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::SyncMessageState::incrementProcessIncomingSyncMessagesWhenWaitingForSyncReplyCount): |
| (IPC::Connection::SyncMessageState::decrementProcessIncomingSyncMessagesWhenWaitingForSyncReplyCount): |
| (IPC::Connection::SyncMessageState::processIncomingMessage): |
| (IPC::Connection::sendSyncMessage): |
| * Platform/IPC/Connection.h: |
| Add support for new SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply flag |
| to allow processing incoming sync messages while sending a particular sync IPC. This is the |
| default behavior in all processes except in the WebContent process, where we try to avoid |
| re-entering to prevent bugs. This flag allows the WebContent process to change its default |
| behavior for some specific IPCs, where we know it is safe to re-enter and where it benefits |
| performance to re-renter. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * UIProcess/Network/NetworkProcessProxy.cpp: |
| (WebKit::NetworkProcessProxy::didReceiveSyncMessage): |
| (WebKit::NetworkProcessProxy::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| * UIProcess/Network/NetworkProcessProxy.h: |
| * UIProcess/Network/NetworkProcessProxy.messages.in: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::testProcessIncomingSyncMessagesWhenWaitingForSyncReply): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::sendSyncWithDelayedReply): |
| * WebProcess/WebPage/WebPage.messages.in: |
| SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply |
| Add testing infrastructure for SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply |
| flag. |
| |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::runJavaScriptAlert): |
| (WebKit::WebChromeClient::runJavaScriptConfirm): |
| (WebKit::WebChromeClient::runJavaScriptPrompt): |
| Use new SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply flag when sending |
| the synchronous IPC for JS alerts / prompt / confirm. This allows the WebProcess to process |
| incoming synchronous IPC for other processes (in particular the UIProcess) while it is blocked |
| on those synchronous IPCs. It is safe to re-enter the WebContent process on these sync IPCs |
| since they are triggered by JS and we return to JS right after. This should avoid UIProcess |
| hangs when the UIProcess is sending a sync IPC to the WebContent process, which is itself |
| stuck on the sync IPC to show a JS alert. |
| |
| 2019-07-25 Rob Buis <rbuis@igalia.com> |
| |
| Make storing cross-origin top-level prefetches in HTTP cache optional |
| https://bugs.webkit.org/show_bug.cgi?id=199499 |
| |
| Reviewed by Youenn Fablet. |
| |
| Currently when we navigate we check if there is a cross-origin top-level |
| prefetch we can use for the navigation. The current solution uses the |
| HTTP cache as a way to store the prefetch and to immediately use it for |
| the navigation load. However this solution fails in case the prefetch is |
| not cacheable. |
| |
| Instead of this, simulate a HTTP Cache entry to process the load and |
| afterwards try to store the navigation load into the HTTP cache, where |
| normal store decisions will be applied. |
| |
| Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| (WebKit::NetworkResourceLoader::retrieveCacheEntryInternal): |
| * NetworkProcess/NetworkResourceLoader.h: |
| |
| 2019-07-25 Truitt Savell <tsavell@apple.com> |
| |
| Unreviewed, rolling out r247817. |
| |
| Broke 14 http/tests/paymentrequest/ tests. on iOS |
| |
| Reverted changeset: |
| |
| "Unable to tap/double tap to open files/folders in Google |
| Drive in Safari" |
| https://bugs.webkit.org/show_bug.cgi?id=200096 |
| https://trac.webkit.org/changeset/247817 |
| |
| 2019-07-24 Zalan Bujtas <zalan@apple.com> |
| |
| Unable to tap/double tap to open files/folders in Google Drive in Safari |
| https://bugs.webkit.org/show_bug.cgi?id=200096 |
| <rdar://problem/52748552> |
| |
| Reviewed by Wenson Hsieh. |
| |
| This patch reverts to the original double-tap-for-double-click implementation (see r244775 and r246347 for more information). |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| * UIProcess/PageClient.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::creationParameters): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::doubleTapForDoubleClickDelay): Deleted. |
| (WebKit::PageClientImpl::doubleTapForDoubleClickRadius): Deleted. |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView cleanupInteraction]): |
| (-[WKContentView _removeDefaultGestureRecognizers]): |
| (-[WKContentView _addDefaultGestureRecognizers]): |
| (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): Do not recognize the single and double gestures the same time. |
| (-[WKContentView gestureRecognizerShouldBegin:]): |
| (-[WKContentView _doubleTapRecognizedForDoubleClick:]): |
| (-[WKContentView _didStartProvisionalLoadForMainFrame]): |
| (-[WKContentView _ensureNonBlockingDoubleTapGestureRecognizer]): Deleted. |
| (-[WKContentView _doubleTapForDoubleClickDelay]): Deleted. |
| (-[WKContentView _doubleTapForDoubleClickRadius]): Deleted. |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::handleDoubleTapForDoubleClickAtPoint): |
| * WebProcess/WebPage/WebPage.cpp: |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint): |
| (WebKit::WebPage::commitPotentialTap): |
| (WebKit::WebPage::handlePotentialDoubleTapForDoubleClickAtPoint): Deleted. |
| |
| 2019-07-24 Yusuke Suzuki <ysuzuki@apple.com> |
| |
| [bmalloc] Add IsoHeap test to ensure that IsoHeap pages are not allocating too large VA |
| https://bugs.webkit.org/show_bug.cgi?id=200103 |
| |
| Reviewed by Mark Lam. |
| |
| Move MachVMSPI.h from PAL to WTF. |
| |
| * Platform/cocoa/SharedMemoryCocoa.cpp: |
| |
| 2019-07-24 Youenn Fablet <youenn@apple.com> |
| |
| Disable speculative loading if cache is not to be used for the load |
| https://bugs.webkit.org/show_bug.cgi?id=199644 |
| |
| Reviewed by Alex Christensen. |
| |
| When the page is reloaded, loads are instructed to not use the cache. |
| It is therefore unneeded to do speculative revalidation. |
| Allow speculative revalidation if the cache policy is either the default HTTP policy or |
| if policy is to refresh all cache data. |
| Covered by added test. |
| |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::cachePolicyValidForSpeculativeRevalidation): |
| (WebKit::NetworkCache::canRequestUseSpeculativeRevalidation): |
| |
| 2019-07-24 Priyanka Agarwal <pagarwal999@apple.com> |
| |
| Allow Clients to Add Fields to the AutoFillContext Dictionary |
| https://bugs.webkit.org/show_bug.cgi?id=199326 |
| rdar://problem/42816957 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/API/Cocoa/_WKInputDelegate.h: |
| Added function declaration for function which returns additional dictionary for autofillcontext |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| Created dictionary for additional autofillcontext |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]): |
| Populating additional dictionary for autofillcontext |
| |
| (-[WKContentView _autofillContext]): |
| Adding new dictionary to the returned autofillcontext |
| |
| 2019-07-24 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r247400): Unable to log into AIB Mobile Banking App |
| https://bugs.webkit.org/show_bug.cgi?id=200094 |
| <rdar://problem/52519818> |
| |
| Reviewed by Brent Fulgham. |
| |
| In r247400, a change was made to only set the 'app has universal sandbox access' flag |
| only when issueing the sandbox extension for / actually succeeded (it usually fails |
| in practice). Previously, AIB Mobile Banking app was relying on this behavior to |
| trigger a load for file:///login which is outside their container. However, now that |
| the 'app has universal sandbox access' flag is no longer set, it trips our security |
| checks and the load gets ignored. |
| |
| To address the issue, apply only the 'app has universal sandbox access' flag fix with |
| a linked-on-after check. |
| |
| * UIProcess/Cocoa/VersionChecks.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| |
| 2019-07-24 Tim Horton <timothy_horton@apple.com> |
| |
| Module-enabled users of WKWebProcessPlugInFrame.h fail to build; duplicate declaration |
| https://bugs.webkit.org/show_bug.cgi?id=200095 |
| <rdar://problem/53512407> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h: |
| Import <JavaScriptCore/JavaScriptCore.h> (the module header) instead of |
| <JavaScriptCore/JSContext.h> directly, otherwise we can end up getting |
| JSContext.h included twice, to the compiler's chagrin. |
| |
| 2019-07-24 Brady Eidson <beidson@apple.com> |
| |
| Crash in WebContent process with custom schemes. |
| <rdar://problem/52968793> and https://bugs.webkit.org/show_bug.cgi?id=200062 |
| |
| Reviewed by Andy Estes. |
| |
| Almost everywhere in WebURLSchemeTaskProxy where we call processNextPendingTask() we first protect the task with a ref. |
| But not in didReceiveData. |
| So lets do that. |
| |
| * WebProcess/WebPage/WebURLSchemeTaskProxy.cpp: |
| (WebKit::WebURLSchemeTaskProxy::didReceiveData): Protect this. |
| |
| 2019-07-24 Alex Christensen <achristensen@webkit.org> |
| |
| Null check CompletionHandler in WebPreviewLoaderClient::didReceivePassword |
| https://bugs.webkit.org/show_bug.cgi?id=200080 |
| <rdar://problem/37275772> |
| |
| Reviewed by Chris Dumez. |
| |
| * WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp: |
| (WebKit::WebPreviewLoaderClient::didReceivePassword): |
| |
| 2019-07-24 Chris Dumez <cdumez@apple.com> |
| |
| Crash under WebKit:WTF::Detail::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking(WTF::CompletionHandler<void ()>&&)::$_32::operator()()::'lambda'(), void>::call |
| https://bugs.webkit.org/show_bug.cgi?id=200071 |
| <rdar://problem/53335583> |
| |
| Reviewed by Brent Fulgham and Youenn Fablet. |
| |
| The WebResourceLoadStatisticsStore is a main thread object. In its destructor, it was dispatching |
| to the background queue to destroy the m_statisticsStore / m_persistentStorage data members, which |
| live on the background queue. It would then synchronously wait for the background queue to finish |
| destroying them. The idea was to guarantee that the ResourceLoadStatisticsMemoryStore and the |
| ResourceLoadStatisticsPersistentStorage would never outlive the WebResourceLoadStatisticsStore, |
| given that they keep a raw pointer back to the WebResourceLoadStatisticsStore (via m_store data |
| member). |
| |
| The issue is that *while* the WebResourceLoadStatisticsStore destructor is running on the main |
| thread, the background queue may be running code in ResourceLoadStatisticsMemoryStore or |
| ResourceLoadStatisticsPersistentStorage which refs the WebResourceLoadStatisticsStore, even |
| though its ref count has already reached 0. It is actually a common pattern in |
| ResourceLoadStatisticsMemoryStore to call RunLoop::main().dispatch() and ref their m_store in |
| the lambda, so that they can interact with the WebResourceLoadStatisticsStore. |
| |
| To address the issue, we now destroy m_statisticsStore / m_persistentStorage *before* the |
| WebResourceLoadStatisticsStore destructor runs. The NetworkSession destructor now calls |
| WebResourceLoadStatisticsStore::didDestroyNetworkSession() which takes care of destroying |
| m_statisticsStore / m_persistentStorage on the background queue, synchronously. The |
| WebResourceLoadStatisticsStore destructor will only run later, once all remaining references |
| to it are gone. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore): |
| (WebKit::WebResourceLoadStatisticsStore::didDestroyNetworkSession): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::~NetworkSession): |
| |
| 2019-07-24 Youenn Fablet <youenn@apple.com> |
| |
| SYS___pthread_markcancel is sometimes used by libwebrtc |
| https://bugs.webkit.org/show_bug.cgi?id=200087 |
| <rdar://problem/53408606> |
| |
| Reviewed by Brent Fulgham. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| Whitelist this unix-call within WebProcess as libwebrtc uses it. |
| |
| 2019-07-24 Zalan Bujtas <zalan@apple.com> |
| |
| ASSERTION FAILED: settings().textAutosizingEnabled() && settings().textAutosizingUsesIdempotentMode() in WebCore::Page::recomputeTextAutoSizingInAllFrames() |
| https://bugs.webkit.org/show_bug.cgi?id=200079 |
| <rdar://problem/53474325> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Do not reset idempotent values when the text autosizing is off. |
| |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetTextAutosizingUsesIdempotentMode): |
| (WKPreferencesGetTextAutosizingUsesIdempotentMode): |
| * UIProcess/API/C/WKPreferencesRef.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::resetIdempotentTextAutosizingIfNeeded): |
| |
| 2019-07-24 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, rolling out r247766. |
| |
| Caused an API test failure |
| |
| Reverted changeset: |
| |
| "Crash under |
| WebKit:WTF::Detail::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking(WTF::CompletionHandler<void |
| ()>&&)::$_32::operator()()::'lambda'(), void>::call" |
| https://bugs.webkit.org/show_bug.cgi?id=200071 |
| https://trac.webkit.org/changeset/247766 |
| |
| 2019-07-23 Chris Dumez <cdumez@apple.com> |
| |
| Crash under WebKit:WTF::Detail::CallableWrapper<WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking(WTF::CompletionHandler<void ()>&&)::$_32::operator()()::'lambda'(), void>::call |
| https://bugs.webkit.org/show_bug.cgi?id=200071 |
| <rdar://problem/53335583> |
| |
| Reviewed by Brent Fulgham and Youenn Fablet. |
| |
| The WebResourceLoadStatisticsStore is a main thread object. In its destructor, it was dispatching |
| to the background queue to destroy the m_statisticsStore / m_persistentStorage data members, which |
| live on the background queue. It would then synchronously wait for the background queue to finish |
| destroying them. The idea was to guarantee that the ResourceLoadStatisticsMemoryStore and the |
| ResourceLoadStatisticsPersistentStorage would never outlive the WebResourceLoadStatisticsStore, |
| given that they keep a raw pointer back to the WebResourceLoadStatisticsStore (via m_store data |
| member). |
| |
| The issue is that *while* the WebResourceLoadStatisticsStore destructor is running on the main |
| thread, the background queue may be running code in ResourceLoadStatisticsMemoryStore or |
| ResourceLoadStatisticsPersistentStorage which refs the WebResourceLoadStatisticsStore, even |
| though its ref count has already reached 0. It is actually a common pattern in |
| ResourceLoadStatisticsMemoryStore to call RunLoop::main().dispatch() and ref their m_store in |
| the lambda, so that they can interact with the WebResourceLoadStatisticsStore. |
| |
| To address the issue, we now destroy m_statisticsStore / m_persistentStorage *before* the |
| WebResourceLoadStatisticsStore destructor runs. The NetworkSession destructor now calls |
| WebResourceLoadStatisticsStore::didDestroyNetworkSession() which takes care of destroying |
| m_statisticsStore / m_persistentStorage on the background queue, synchronously. The |
| WebResourceLoadStatisticsStore destructor will only run later, once all remaining references |
| to it are gone. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore): |
| (WebKit::WebResourceLoadStatisticsStore::didDestroyNetworkSession): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::~NetworkSession): |
| |
| 2019-07-23 Alex Christensen <achristensen@webkit.org> |
| |
| Move javaScriptConfigurationDirectory SPI from _WKProcessPoolConfiguration to WKProcessPoolPrivate to make it runtime switchable |
| https://bugs.webkit.org/show_bug.cgi?id=200045 |
| |
| Reviewed by Mark Lam. |
| |
| This allows me to maintain the status quo in Safari. |
| |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _javaScriptConfigurationDirectory]): |
| (-[WKProcessPool _setJavaScriptConfigurationDirectory:]): |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration javaScriptConfigurationDirectory]): Deleted. |
| (-[_WKProcessPoolConfiguration setJavaScriptConfigurationDirectory:]): Deleted. |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::legacyWebsiteDataStoreConfiguration): |
| (WebKit::WebProcessPool::sendWebProcessDataStoreParameters): |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-07-23 Russell Epstein <repstein@apple.com> |
| |
| Unreviewed, rolling out r247745. |
| |
| This broke API test |
| TestWebKitAPI.WKProcessPool.JavaScriptConfiguration as |
| indicated by EWS |
| |
| Reverted changeset: |
| |
| "Move javaScriptConfigurationDirectory SPI from |
| _WKProcessPoolConfiguration to WKProcessPoolPrivate to make it |
| runtime switchable" |
| https://bugs.webkit.org/show_bug.cgi?id=200045 |
| https://trac.webkit.org/changeset/247745 |
| |
| 2019-07-23 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: CrashTracer: com.apple.WebKit.WebContent at WebKit: WebKit::WebSpeechSynthesisClient::speak |
| https://bugs.webkit.org/show_bug.cgi?id=199988 |
| |
| Reviewed by Per Arne Vollan. |
| |
| Improvements to WebSpeechSynthesis to avoid crashing and improve correctness. |
| - Reset and cancel speech jobs on page close or reload (otherwise the synthesizer keeps talking after your page is gone) |
| - Have a separate speech finish callback mechanism, use the start speaking callback when the synthesizer tells us. |
| - Move an assert on utterance state to only apply when we use the in process synthesizer. |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::didStartSpeaking): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::reload): |
| (WebKit::WebPageProxy::resetState): |
| (WebKit::WebPageProxy::resetSpeechSynthesizer): |
| (WebKit::WebPageProxy::speechSynthesisSetFinishedCallback): |
| (WebKit::WebPageProxy::speechSynthesisSpeak): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp: |
| (WebKit::WebSpeechSynthesisClient::speak): |
| |
| 2019-07-23 Chris Dumez <cdumez@apple.com> |
| |
| Get rid of unnecessary callback aggregators in WebResourceLoadStatisticsStore |
| https://bugs.webkit.org/show_bug.cgi?id=200042 |
| |
| Reviewed by Brent Fulgham. |
| |
| Only 1 asynchronous function is called so there is nothing to "aggregate". |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdate): |
| (WebKit::WebResourceLoadStatisticsStore::scheduleCookieBlockingUpdateForDomains): |
| (WebKit::WebResourceLoadStatisticsStore::scheduleClearBlockingStateForDomains): |
| |
| 2019-07-23 Zalan Bujtas <zalan@apple.com> |
| |
| [iOS] Tapping the search field on a search results page on zillow.com shows and immediately dismisses the keyboard |
| https://bugs.webkit.org/show_bug.cgi?id=200044 |
| <rdar://problem/53103732> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * Shared/FocusedElementInformation.cpp: |
| (WebKit::FocusedElementInformation::encode const): |
| (WebKit::FocusedElementInformation::decode): |
| * Shared/FocusedElementInformation.h: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _elementDidBlur]): |
| (-[WKContentView _shouldAvoidScrollingWhenFocusedContentIsVisible]): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::getFocusedElementInformation): |
| |
| 2019-07-23 Alex Christensen <achristensen@webkit.org> |
| |
| Move javaScriptConfigurationDirectory SPI from _WKProcessPoolConfiguration to WKProcessPoolPrivate to make it runtime switchable |
| https://bugs.webkit.org/show_bug.cgi?id=200045 |
| |
| Reviewed by Mark Lam. |
| |
| This allows me to maintain the status quo in Safari. |
| |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::copy): |
| * UIProcess/API/APIProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _javaScriptConfigurationDirectory]): |
| (-[WKProcessPool _setJavaScriptConfigurationDirectory:]): |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration javaScriptConfigurationDirectory]): Deleted. |
| (-[_WKProcessPoolConfiguration setJavaScriptConfigurationDirectory:]): Deleted. |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::legacyWebsiteDataStoreConfiguration): |
| (WebKit::WebProcessPool::sendWebProcessDataStoreParameters): |
| * UIProcess/WebProcessPool.h: |
| |
| 2019-07-24 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2] A top fixed bar can flicker when scrolling with the keyboard up |
| https://bugs.webkit.org/show_bug.cgi?id=200105 |
| rdar://problem/52871975 |
| |
| Reviewed by Wenson Hsieh. |
| |
| ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition() computes a visual viewport |
| from the current scroll position and scrollableAreaSize(). This doesn't know anything about |
| the impact of keyboards on the visual viewport, so it computes a too-large visual viewport |
| when the keyboard is up, triggering incorrect manipulations of the layout viewport. This |
| leads to the top bar flashing to position 0 when it should be hidden off the top. |
| |
| Fix by feeding into the scrolling tree the height of the visual viewport which takes |
| FrameView::visualViewportOverrideRect() into account. This is stored on ScrollingStateFrameScrollingNode/ |
| ScrollingTreeFrameScrollingNode. |
| |
| * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: |
| (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode): |
| (ArgumentCoder<ScrollingStateFrameScrollingNode>::decode): |
| |
| 2019-07-23 Alex Christensen <achristensen@webkit.org> |
| |
| Add SPI for setting media cache and key location on _WKWebsiteDataStoreConfiguration |
| https://bugs.webkit.org/show_bug.cgi?id=199972 |
| |
| Reviewed by Jer Noble. |
| |
| This is a step towards removing WebsiteDataStore::legacyDefaultDataStoreConfiguration |
| I added a unit test for the media cache location, |
| but the media key location can't reasonably be unit tested in an open source project. |
| |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _initWithConfiguration:]): |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration mediaCacheDirectory]): |
| (-[_WKWebsiteDataStoreConfiguration setMediaCacheDirectory:]): |
| (-[_WKWebsiteDataStoreConfiguration mediaKeysStorageDirectory]): |
| (-[_WKWebsiteDataStoreConfiguration setMediaKeysStorageDirectory:]): |
| |
| 2019-07-23 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macOS 10.15] Web process crashes when attempting to show the font panel via Font > Show Fonts |
| https://bugs.webkit.org/show_bug.cgi?id=200021 |
| <rdar://problem/53301325> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Always return false from canShowFontPanel in WebKit2. |
| |
| * WebProcess/WebCoreSupport/WebEditorClient.h: |
| |
| 2019-07-23 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Update OptionsGTK.cmake and NEWS for 2.25.3 release |
| |
| * gtk/NEWS: Add release notes for 2.25.3. |
| |
| 2019-07-23 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Emoji chooser is misplaced after scrolling |
| https://bugs.webkit.org/show_bug.cgi?id=199996 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Convert caret rectangle coordinates to root view. |
| |
| * WebProcess/WebPage/gtk/WebPageGtk.cpp: |
| (WebKit::WebPage::showEmojiPicker): |
| |
| 2019-07-22 Ross Kirsling <ross.kirsling@sony.com> |
| |
| Unreviewed non-unified build fix. |
| |
| * NetworkProcess/NetworkCORSPreflightChecker.h: |
| * NetworkProcess/NetworkLoadChecker.h: |
| * UIProcess/API/C/WKContext.cpp: |
| * UIProcess/API/C/WKPageConfigurationRef.cpp: |
| * UIProcess/Downloads/DownloadProxy.cpp: |
| * UIProcess/WebPageInjectedBundleClient.cpp: |
| * UIProcess/WebPreferences.cpp: |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::PendingMessage::PendingMessage): |
| |
| 2019-07-22 Megan Gardner <megan_gardner@apple.com> |
| |
| Remove Staging for scrolling bug |
| https://bugs.webkit.org/show_bug.cgi?id=199894 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKUIWKTextInteractionAssistant scrollSelectionToVisible]): Deleted. |
| |
| 2019-07-22 Brent Fulgham <bfulgham@apple.com> |
| |
| Correct web audio-related crash in seed reports |
| https://bugs.webkit.org/show_bug.cgi?id=200009 |
| <rdar://problem/51565203> |
| |
| Reviewed by Per Arne Vollan. |
| |
| Revise the iOS sandbox to allow the WebContent process to communicate with |
| the 'com.apple.coremedia.audioprocessingtap.xpc' service, which is needed by |
| some types of WebAudio. |
| |
| * WebProcess/com.apple.WebKit.WebContent.sb.in: |
| |
| 2019-07-22 Dean Jackson <dino@apple.com> |
| |
| WebKit SPI fix for [ClickyOrb] Audio continues playing after dismissing a video preview in Safari |
| https://bugs.webkit.org/show_bug.cgi?id=200011 |
| <rdar://problem/53409457> |
| |
| Reviewed by Tim Horton. |
| |
| Don't check for the SPI @selector(_webView:contextMenuDidEndForElement:) |
| on the WKUIDelegate so that clients that got caught implementing the |
| SPI before moving to the real API can still clean-up state. In other words, |
| don't force a client that only implements that method to move completely |
| to the new API. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (needsDeprecatedPreviewAPI): |
| |
| 2019-07-22 Jer Noble <jer.noble@apple.com> |
| |
| REGRESSION(rUnknown): YouTube playback pauses when switching to a new tab |
| https://bugs.webkit.org/show_bug.cgi?id=199971 |
| <rdar://problem/51951218> |
| |
| Reviewed by Alex Christensen. |
| |
| When we get a message notifying us that the view has been removed from the window, we unconditionally |
| ask the fullscreen manager to exit fullscreen, which has the side effect (on iOS) of pausing the video |
| unconditionally. Only ask the fullscreen manager to exit fullscreen if there is actually a video in |
| fullscreen mode. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::viewDidLeaveWindow): |
| |
| 2019-07-22 Youenn Fablet <youenn@apple.com> |
| |
| Make sure to unref captured lambda variables given to _strictTrustEvaluate in the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=199948 |
| |
| Reviewed by Alex Christensen. |
| |
| Use a weak pointer instead of a Ref for the NetworkSession. |
| Add a null check in processServerTrustEvaluation for extra safety if we decide to remove the data task NetworkSession ref. |
| Make sure to move the NetworkDataTask ref in the completion handler so that the unrefing is done in the main thread. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (processServerTrustEvaluation): |
| (-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]): |
| |
| 2019-07-22 Alex Christensen <achristensen@webkit.org> |
| |
| Don't always look for a JSC configuration file after r247685 |
| https://bugs.webkit.org/show_bug.cgi?id=199917 |
| |
| * UIProcess/API/APIProcessPoolConfiguration.cpp: |
| (API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration): |
| (API::ProcessPoolConfiguration::ProcessPoolConfiguration): |
| ProcessPoolConfiguration's javaScriptConfigurationDirectory wasn't used before r247685, |
| which made it always look for a file with 'JavaScriptCoreDebug' in its name. I had assumed |
| m_javaScriptConfigurationDirectory would default to a null string, but it was defaulting to |
| defaultJavaScriptConfigurationDirectory. Make it a null string instead. |
| |
| 2019-07-22 Simon Fraser <simon.fraser@apple.com> |
| |
| Make some constructors explicit |
| https://bugs.webkit.org/show_bug.cgi?id=199981 |
| |
| Reviewed by Daniel Bates. |
| |
| Make explicit public constructors of objects that take POD or String& arguments, |
| to reduce the changes of the compiler doing implicit conversions. |
| |
| * Platform/Module.h: |
| * WebProcess/WebPage/WebInspector.cpp: |
| (WebKit::WebInspector::openInNewTab): |
| |
| 2019-07-22 Daniel Bates <dabates@apple.com> |
| |
| [iOS] REGRESSION (r241734): Autocorrection highlight should hide when field becomes defocused |
| https://bugs.webkit.org/show_bug.cgi?id=199807 |
| <rdar://problem/52760259> |
| |
| Fix a bad merge of r247653. svn-apply was way too forgiving. The original patch touched |
| the non-existent function, -_didCommitLoadForMainFrame in WKContentViewInteraction.mm. Because |
| that didn't exist, svn-apply patched up -clearSelection. |
| |
| * UIProcess/ios/WKContentView.h: |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _didCommitLoadForMainFrame]): Deleted; moved to WKContentViewInteraction.mm |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView clearSelection]): Remove code that should be in -_didCommitLoadForMainFrame. |
| (-[WKContentView _didCommitLoadForMainFrame]): Moved from WKContentView.mm |
| |
| 2019-07-22 Alex Christensen <achristensen@webkit.org> |
| |
| Add SPI to _WKWebsiteDataStoreConfiguration for configuring application cache storage location |
| https://bugs.webkit.org/show_bug.cgi?id=199954 |
| |
| Reviewed by Geoff Garen. |
| |
| This is a step towards removing WebsiteDataStore::legacyDefaultDataStoreConfiguration |
| Covered by a new API test. |
| |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _initWithConfiguration:]): |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration applicationCacheDirectory]): |
| (-[_WKWebsiteDataStoreConfiguration setApplicationCacheDirectory:]): |
| (-[_WKWebsiteDataStoreConfiguration applicationCacheFlatFileSubdirectoryName]): |
| (-[_WKWebsiteDataStoreConfiguration setApplicationCacheFlatFileSubdirectoryName:]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::sendWebProcessDataStoreParameters): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| (WebKit::WebsiteDataStore::applicationCacheFlatFileSubdirectoryName const): |
| |
| 2019-07-22 Alex Christensen <achristensen@webkit.org> |
| |
| Add SPI _WKProcessPoolConfiguration.javaScriptConfigurationDirectory |
| https://bugs.webkit.org/show_bug.cgi?id=199917 |
| |
| Reviewed by Sam Weinig. |
| |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: |
| * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: |
| (-[_WKProcessPoolConfiguration javaScriptConfigurationDirectory]): |
| (-[_WKProcessPoolConfiguration setJavaScriptConfigurationDirectory:]): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::sendWebProcessDataStoreParameters): |
| |
| 2019-07-22 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] WebSockets: use new api to send text messages |
| https://bugs.webkit.org/show_bug.cgi?id=199936 |
| |
| Reviewed by Michael Catanzaro. |
| |
| New API allows to include null character in text messages. |
| |
| * NetworkProcess/soup/WebSocketTaskSoup.cpp: |
| (WebKit::WebSocketTask::didReceiveMessageCallback): Pass data size to String::fromUTF8(). |
| (WebKit::WebSocketTask::sendString): Use soup_websocket_connection_send_message() instead of |
| soup_websocket_connection_send_text() when available. Also use |
| StrictConversionReplacingUnpairedSurrogatesWithFFFD options when converting to UTF-8. |
| |
| 2019-07-21 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] [WebKit2] Add limited support for -isPosition:atBoundary:inDirection: in WKContentView |
| https://bugs.webkit.org/show_bug.cgi?id=199993 |
| <rdar://problem/49523528> |
| |
| Reviewed by Beth Dakin. |
| |
| Add support for -isPosition:atBoundary:inDirection:, only in the cases where the given position is the start or |
| and position and the given granularity is UITextGranularityParagraph. |
| |
| Test: EditorStateTests.ParagraphBoundary |
| |
| * Shared/EditorState.cpp: |
| (WebKit::EditorState::PostLayoutData::encode const): |
| (WebKit::EditorState::PostLayoutData::decode): |
| * Shared/EditorState.h: |
| |
| Add a couple of bits to indicate whether the selection start or end positions are at paragraph boundaries. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView isPosition:atBoundary:inDirection:]): |
| |
| Implement this to return selectionStartIsAtParagraphBoundary or selectionEndIsAtParagraphBoundary. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::platformEditorState const): |
| |
| 2019-07-20 Chris Dumez <cdumez@apple.com> |
| |
| Speed up HashTable decoding by reserving capacity and avoiding rehashing |
| https://bugs.webkit.org/show_bug.cgi?id=199982 |
| |
| Reviewed by Saam Barati. |
| |
| Use HashMap::reserveInitialCapacity() in the HashMap IPC decoder for |
| performance. I measured a ~35% improvement when decoding a very large |
| HashMap of Strings (~160k entries) in the context of the |
| StorageManager::GetValues IPC. |
| |
| * Platform/IPC/ArgumentCoders.h: |
| * Shared/API/c/WKDictionary.cpp: |
| (WKDictionaryCreate): |
| |
| 2019-07-20 Chris Dumez <cdumez@apple.com> |
| |
| Micro-optimize HashMap & String IPC decoding |
| https://bugs.webkit.org/show_bug.cgi?id=199967 |
| |
| Reviewed by Geoffrey Garen. |
| |
| The legacy HashMap decoder (returning a boolean) was failing to WTFMove() |
| the key & value when calling HashMap::add(). The modern decoder (returning |
| an Optional) was properly using WTFMove(). Rewrite the legacy HashMap decoder |
| to call the modern one to reduce code duplication and to get this optimization. |
| |
| Also, encode HashMap::size() as a uint32_t instead of a uint64_t since |
| HashMap::size() returns an 'unsigned int' type. Finally, update the modern |
| decoder to WTFMove(hashMap) when returning. Because the function returns an |
| Optional<HashMap> and not a HashMap, I do not believe we get return value |
| optimization (RVO). |
| |
| Do similar changes to String IPC coders. |
| |
| * Platform/IPC/ArgumentCoders.cpp: |
| (IPC::decodeStringText): |
| (IPC::ArgumentCoder<String>::decode): |
| * Platform/IPC/ArgumentCoders.h: |
| |
| 2019-07-20 Alexander Mikhaylenko <exalm7659@gmail.com> |
| |
| REGRESSION(r246033/r246496): [GTK] Kinetic scrolling doesn't work |
| https://bugs.webkit.org/show_bug.cgi?id=199322 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Check ENABLE(KINETIC_SCROLLING) instead of ENABLE(ASYNC_SCROLLING) when setting wheel event phase and momentum phase. |
| |
| * Shared/WebEventConversion.cpp: |
| (WebKit::WebKit2PlatformWheelEvent::WebKit2PlatformWheelEvent): |
| |
| 2019-07-20 Zalan Bujtas <zalan@apple.com> |
| |
| [Text autosizing] Do not nuke the style on dynamicViewportSizeUpdate |
| https://bugs.webkit.org/show_bug.cgi?id=199718 |
| <rdar://problem/53344961> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_textAutoSizingAdjustmentTimer): |
| (WebKit::WebPage::close): |
| (WebKit::WebPage::didCommitLoad): |
| (WebKit::WebPage::textAutoSizingAdjustmentTimerFired): |
| (WebKit::m_shrinkToFitContentTimer): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::dynamicViewportSizeUpdate): |
| (WebKit::WebPage::resetIdempotentTextAutosizingIfNeeded): |
| (WebKit::WebPage::resetTextAutosizing): |
| (WebKit::WebPage::viewportConfigurationChanged): |
| |
| 2019-07-19 Youenn Fablet <youenn@apple.com> |
| |
| Remote WebInspector should enable mock capture devices in UIProcess if doing it in WebProcess |
| https://bugs.webkit.org/show_bug.cgi?id=199924 |
| <rdar://problem/50552067> |
| |
| Reviewed by Devin Rousso. |
| |
| Add IPC plumbery to pass inspector override value for mock capture devices. |
| Add an override in UserMediaPermissionRequestManagerProxy so that the value stays in sync with web inspector. |
| The override will be removed when web inspector goes away. |
| |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::syncWithWebCorePrefs const): |
| * UIProcess/UserMediaPermissionRequestManagerProxy.h: |
| (WebKit::UserMediaPermissionRequestManagerProxy::setMockCaptureDevicesEnabledOverride): |
| * UIProcess/WebInspectorProxy.cpp: |
| (WebKit::WebInspectorProxy::setMockCaptureDevicesEnabled): |
| * UIProcess/WebInspectorProxy.h: |
| * UIProcess/WebInspectorProxy.messages.in: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::setMockCaptureDevicesEnabledOverride): |
| * UIProcess/WebPageProxy.h: |
| * WebProcess/WebCoreSupport/WebInspectorClient.cpp: |
| (WebKit::WebInspectorClient::setMockCaptureDevicesEnabled): |
| * WebProcess/WebCoreSupport/WebInspectorClient.h: |
| * WebProcess/WebPage/WebInspector.cpp: |
| (WebKit::WebInspector::setMockCaptureDevicesEnabled): |
| * WebProcess/WebPage/WebInspector.h: |
| |
| 2019-07-19 Tim Horton <timothy_horton@apple.com> |
| |
| Web Content process gets stuck suspended after navigating away from a system preview |
| https://bugs.webkit.org/show_bug.cgi?id=199965 |
| <rdar://problem/53109004> |
| |
| Reviewed by Dean Jackson. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _isBackground]): |
| * UIProcess/ios/WKSystemPreviewView.h: |
| * UIProcess/ios/WKSystemPreviewView.mm: |
| (-[WKSystemPreviewView web_initWithFrame:webView:mimeType:]): |
| (-[WKSystemPreviewView web_isBackground]): |
| Apply the fix from r193481 to WKSystemPreviewView as well, having it |
| become a WKApplicationStateTrackingView and plumbing that through |
| to our is-background machinery. |
| |
| We really, really should instead have WKWebView itself be the application |
| state tracking view, but that is a bigger change (and has some implications |
| for full-screen video and whatnot). |
| |
| 2019-07-19 Dean Jackson <dino@apple.com> |
| |
| Provide correct names for UIContextMenuInteraction API replacements |
| https://bugs.webkit.org/show_bug.cgi?id=199966 |
| |
| Reviewed by Tim Horton. |
| |
| We had some old incorrect names for replacements to SPI. While |
| here, I reordered and expanded the documentation for the new API. |
| |
| * UIProcess/API/Cocoa/WKUIDelegate.h: |
| * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: |
| |
| 2019-07-19 Daniel Bates <dabates@apple.com> |
| |
| [iOS] REGRESSION (r241734): Autocorrection highlight should hide when field becomes defocused |
| https://bugs.webkit.org/show_bug.cgi?id=199807 |
| <rdar://problem/52760259> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Sometimes the correction highlight may not hide when defocusing an editable field. |
| This occurs only when a person pressed a key in a non-editable element beforehand. |
| We need to reset some state to force a re-computation of whether a keyboard is still |
| needed whenever an element is defocused (blurred in web paralance). |
| |
| Following r241734 both editable and non-editable key events are handled using the same |
| code path. This is accomplished by having WKContentView's -_requiresKeyboardWhenFirstResponder |
| return YES to tell UIKit it needs a keyboard even when there is no editable element focused. |
| As a result UIKit retains all the keyboard state, including keeping the correction highlight |
| visible. Prior to r241734 WKContentView's -_requiresKeyboardWhenFirstResponder would not return |
| YES when a non-editable element was focused and hence UIKit would tear down the keyboard |
| and its state, including the correction highlight. In r245154, we made keyboard instantiate |
| for a focused non-editable element lazy as a performance optimization. Although r245154 |
| kept the r241734 behavior (just made it lazy) it re-wrote the code in such a way that we |
| can utilize it as a hook to fix this bug. In particular, we now clear the bit about a |
| seen keydown in a non-editable element whenever we are defocusing an editable element |
| before we reload the input views, as part of hiding the keyboard. On the reload, UIKit |
| will call -_requiresKeyboardWhenFirstResponder, WebKit will respond with NO now that |
| a non-editable element is focused and hence UIKit will do what it did pre r241734: tear |
| down the keyboard. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _didCommitLoadForMainFrame]): Clear the bit about a seen keydown here |
| so that we don't keep the keyboard around on a new page commit. This includes the case |
| when the same page is reloaded. There is not much advantage to keeping the keyboard |
| around across reloads and not doing so will reduce our memory footprint. |
| (-[WKContentView _elementDidBlur]): Clear the same bit as well when defocusing an |
| editable element. This will cause UIKit to tear down the keyboard on reload removing |
| the correction highlight. |
| |
| 2019-07-19 Dean Jackson <dino@apple.com> |
| |
| Add a menu item to toggle between showing and hiding link previews |
| https://bugs.webkit.org/show_bug.cgi?id=199940 |
| <rdar://problem/53032288> |
| |
| Reviewed by Beth Dakin. |
| |
| Add a new _WKElementAction that toggles the display of link previews |
| in context menus, and add it to the default set of actions we provide |
| for links. |
| |
| When a UIAction is created from this new _WKElementAction type, |
| it can be identified by WKElementActionTypeToggleShowLinkPreviewsIdentifier. |
| This allows us to check a UIMenu provided by a delegate to make sure |
| that they have provided the toggle menu item. If they haven't, we add it |
| back. |
| |
| The preference for showing links is moved from kCFPreferencesAnyApplication |
| to standard user defaults, so that it can be set no matter what the |
| hosting application is. |
| |
| * UIProcess/API/Cocoa/_WKElementAction.h: New action type. |
| * UIProcess/API/Cocoa/_WKElementAction.mm: |
| (+[_WKElementAction _elementActionWithType:customTitle:assistant:]): |
| (+[_WKElementAction imageForElementActionType:]): Use eye.fill for now. |
| I'll need to check with HI to see if there is a more appropriate glyph. |
| (elementActionTypeToUIActionIdentifier): |
| (uiActionIdentifierToElementActionType): |
| |
| * UIProcess/ios/WKActionSheetAssistant.mm: Add the toggle action to |
| the default set. |
| (-[WKActionSheetAssistant defaultActionsForLinkSheet:]): |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _registerPreview]): No need to listen for CFPreferences |
| notifications any more. |
| (-[WKContentView _unregisterPreview]): |
| (menuWithShowLinkPreviewAction): New method that adds the UIAction |
| for toggling previews to a UIMenu if necessary. |
| (-[WKContentView assignLegacyDataForContextMenuInteraction]): |
| (-[WKContentView _contextMenuInteraction:configurationForMenuAtLocation:completion:]): |
| (-[WKContentView _showLinkPreviewsPreferenceChanged:]): Deleted. |
| (titleForMenu): Deleted. URL text previews will be provided separately. |
| |
| 2019-07-19 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] Entering 2FA code on idmsa.apple.com causes unexpected scrolling |
| https://bugs.webkit.org/show_bug.cgi?id=199949 |
| <rdar://problem/49944428> |
| |
| Reviewed by Tim Horton and Megan Gardner. |
| |
| Since at least iOS 11, -[UIScrollView _adjustForAutomaticKeyboardInfo:animated:lastAdjustment:] adjusts the |
| scroll view's content offset to account for updated keyboard bottom insets. In WebKit, we call this method |
| whenever keyboard geometry changes (based on system notifications, such as UIKeyboardWillHideNotification). |
| |
| When switching between focused form fields, we hide the keyboard for the previous focused element prior to |
| showing the keyboard for the newly focused element. This means that we will actually dismiss the keyboard in the |
| process of changing the focused element, which posts keyboard geometry notifications, which causes us to scroll |
| WKScrollView. |
| |
| On iOS 12, this would be immediately followed by re-presenting the keyboard for the new focused element, which |
| causes us to adjust the scroll view back to its original position right away; this means that the scrolling that |
| happens as a result of adjusting for the keyboard insets after dismissal doesn't result in any visible change. |
| |
| However, on iOS 13, after r239441 and r244546, we now defer scrolling and zooming to reveal the focused element |
| until later; this means the scrolling that happens as a result of initially dismissing the keyboard now causes a |
| consistent jump in the scroll view's scroll position (whereas on iOS 12, this only happens rarely, and the jump |
| is also less noticeable). |
| |
| To mitigate this, we detect the case where we're moving focus from one element to another; if we're about to |
| show a keyboard for the newly focused element, then we should avoid scrolling as a result of the impending |
| "keyboard will hide" notification. |
| |
| Test: fast/forms/ios/no-scrolling-when-moving-focus-between-adjacent-fields.html |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _keyboardChangedWithInfo:adjustScrollView:]): |
| (-[WKWebView _keyboardWillHide:]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (shouldShowKeyboardForElement): |
| |
| Add a helper to determine whether we're focusing an element which presents a "keyboard" (i.e. a UIKit input |
| view, as opposed to modal select pickers, modal date pickers, or fields with inputmode="none", for which we |
| don't show an input view). |
| |
| (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]): |
| (-[WKContentView shouldIgnoreKeyboardWillHideNotification]): |
| |
| 2019-07-18 Alex Christensen <achristensen@webkit.org> |
| |
| Fix warning when importing WebKit in Swift |
| https://bugs.webkit.org/show_bug.cgi?id=199914 |
| <rdar://problem/52854930> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/API/Cocoa/NSAttributedString.h: |
| Declare NSAttributedString and update a swift name. |
| This fix was proposed by Argyrios Kyrtzidis. |
| |
| 2019-07-18 Alex Christensen <achristensen@webkit.org> |
| |
| Add and test _WKWebsiteDataStoreConfiguration.deviceIdHashSaltsStorageDirectory SPI |
| https://bugs.webkit.org/show_bug.cgi?id=199923 |
| |
| Reviewed by Youenn Fablet. |
| |
| This is a step towards us getting rid of WebsiteDataStore::legacyDefaultDataStoreConfiguration |
| |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _initWithConfiguration:]): |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration deviceIdHashSaltsStorageDirectory]): |
| (-[_WKWebsiteDataStoreConfiguration setDeviceIdHashSaltsStorageDirectory:]): |
| |
| 2019-07-18 Alex Christensen <achristensen@webkit.org> |
| |
| Move NetworkCache ownership from NetworkProcess to NetworkSession |
| https://bugs.webkit.org/show_bug.cgi?id=199817 |
| |
| Reviewed by Geoff Garen. |
| |
| I also added SPI to set the path of the NetworkCache with an API test. |
| If this new SPI is not used, it falls back to getting the cache location from the NetworkProcess to maintain compatibility. |
| We still get options, cache size, and cache model from the NetworkProcess. Those should be migrated with new SPI later. |
| Clearing the cache and other operations now iterate the NetworkSessions instead of assuming there is only one cache. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): |
| (WebKit::NetworkProcess::setCacheModel): |
| * NetworkProcess/NetworkProcess.h: |
| (WebKit::NetworkProcess::diskCacheDirectory const): |
| (WebKit::NetworkProcess::cacheOptions const): |
| (WebKit::NetworkProcess::cache): Deleted. |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::m_shouldCaptureExtraNetworkLoadMetrics): |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| * NetworkProcess/NetworkSession.h: |
| (WebKit::NetworkSession::cache): |
| * NetworkProcess/NetworkSessionCreationParameters.cpp: |
| (WebKit::NetworkSessionCreationParameters::encode const): |
| (WebKit::NetworkSessionCreationParameters::decode): |
| * NetworkProcess/NetworkSessionCreationParameters.h: |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::Cache::open): |
| (WebKit::NetworkCache::Cache::Cache): |
| * NetworkProcess/cache/NetworkCache.h: |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa): |
| (WebKit::NetworkProcess::clearDiskCache): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * NetworkProcess/curl/NetworkSessionCurl.cpp: |
| (WebKit::NetworkSessionCurl::NetworkSessionCurl): |
| * NetworkProcess/soup/NetworkSessionSoup.cpp: |
| (WebKit::NetworkSessionSoup::NetworkSessionSoup): |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _initWithConfiguration:]): |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration networkCacheDirectory]): |
| (-[_WKWebsiteDataStoreConfiguration setNetworkCacheDirectory:]): |
| * UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm: |
| (WebKit::WebsiteDataStore::parameters): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| (WebKit::WebsiteDataStore::resolvedNetworkCacheDirectory const): |
| |
| 2019-07-18 Chris Dumez <cdumez@apple.com> |
| |
| Regression(r247486) Multiple Layout Tests in http/tests/cache/* are crashing on iOS Debug WK2 |
| https://bugs.webkit.org/show_bug.cgi?id=199892 |
| <rdar://problem/53230217> |
| |
| Reviewed by Geoffrey Garen. |
| |
| The StorageManager was unregistering itself as a WorkQueueMessageReceiver on a given IPC |
| connection too early. As a result, we would sometimes receive a 'StorageManager:DestroyStorageMap' |
| IPC in NetworkConnectionToWebProcess::didReceiveMessage() with nobody to process it, which would |
| trigger an assertion. To address the issue, we stop unregistering the StorageManager as a |
| WorkQueueMessageReceiver inside removeAllowedSessionStorageNamespaceConnection(). Instead, we |
| let the logic inside processDidCloseConnection() take care of it once the connection closes. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection): |
| (WebKit::StorageManager::processDidCloseConnection): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| |
| 2019-07-18 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Crash in webkitWebViewBaseRenderHostFileDescriptor |
| https://bugs.webkit.org/show_bug.cgi?id=199402 |
| |
| Reviewed by Michael Catanzaro. |
| |
| There are two problems here: |
| |
| - We need to ensure that the checks we do in HardwareAccelerationManager to disable AC mode are the same |
| as the ones done in AcceleratedBackingStore create() methods. This is not the case for WPE renderer. |
| - Some of the places where accelerateBackingStore is used, can be called even if AC mode is disabled, so we |
| need to null-check there before using the backing store. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseDraw): Add an assert to ensure accelerateBackingStore is not nullptr here. |
| (webkitWebViewBaseEnterAcceleratedCompositingMode): Ditto. |
| (webkitWebViewBaseUpdateAcceleratedCompositingMode): Ditto. |
| (webkitWebViewBaseExitAcceleratedCompositingMode): Ditto. |
| (webkitWebViewBaseMakeGLContextCurrent): Ditto. |
| (webkitWebViewBaseDidRelaunchWebProcess): Null-check accelerateBackingStore before using it. |
| (webkitWebViewBasePageClosed): Ditto. |
| (webkitWebViewBaseRenderHostFileDescriptor): Ditto. |
| * UIProcess/gtk/AcceleratedBackingStore.cpp: |
| (WebKit::AcceleratedBackingStore::checkRequirements): Call AcceleratedBackingStoreWayland::checkRequirements() |
| or AcceleratedBackingStoreX11::checkRequirements() depending on the current display. |
| (WebKit::AcceleratedBackingStore::create): Return early if AC mode is disabled in HardwareAccelerationManager. |
| * UIProcess/gtk/AcceleratedBackingStore.h: |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: |
| (WebKit::AcceleratedBackingStoreWayland::checkRequirements): Check requirements for hardware acceleration in Wayland. |
| (WebKit::AcceleratedBackingStoreWayland::create): Assert that requirements are present. |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.h: |
| * UIProcess/gtk/AcceleratedBackingStoreX11.cpp: |
| (WebKit::AcceleratedBackingStoreX11::checkRequirements): Check requirements for hardware acceleration in X11. |
| (WebKit::AcceleratedBackingStoreX11::create): Assert that requirements are present. |
| * UIProcess/gtk/AcceleratedBackingStoreX11.h: |
| * UIProcess/gtk/HardwareAccelerationManager.cpp: |
| (WebKit::HardwareAccelerationManager::HardwareAccelerationManager): Use |
| AcceleratedBackingStore::checkRequirements() to decide whether to disable AC mode. |
| |
| 2019-07-17 Megan Gardner <megan_gardner@apple.com> |
| |
| Early Out of positionInfomation check if possible |
| https://bugs.webkit.org/show_bug.cgi?id=199885 |
| <rdar://problem/53229413> |
| |
| This is an early-out check that happens after most of the work is done. |
| Move it to happen before we make all these calls, if in the end, we will not use the information. |
| |
| Reviewed by Tim Horton. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView textInteractionGesture:shouldBeginAtPoint:]): |
| |
| 2019-07-17 Chris Dumez <cdumez@apple.com> |
| |
| Unreviewed, add debug logging to help diagnose flaky crashes on the bots. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): |
| |
| 2019-07-17 Tim Horton <timothy_horton@apple.com> |
| |
| [macCatalyst] Unable to interact with YouTube video while it's playing |
| https://bugs.webkit.org/show_bug.cgi?id=199893 |
| <rdar://problem/51871151> |
| |
| Reviewed by Simon Fraser. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (-[WKRemoteView initWithFrame:contextID:]): |
| (-[WKUIRemoteView initWithFrame:pid:contextID:]): |
| Disable remote context hit-testing for WKUIRemoteView just like we |
| already do for WKRemoteView. |
| |
| 2019-07-17 Chris Dumez <cdumez@apple.com> |
| |
| Prewarm local storage in the NetworkProcess to reduce WebContent process hangs |
| https://bugs.webkit.org/show_bug.cgi?id=199879 |
| <rdar://problem/53217757> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::prewarm): |
| (WebKit::StorageManager::getValues): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| * NetworkProcess/WebStorage/StorageManager.messages.in: |
| * WebProcess/WebStorage/StorageAreaImpl.cpp: |
| (WebKit::StorageAreaImpl::prewarm): |
| * WebProcess/WebStorage/StorageAreaImpl.h: |
| * WebProcess/WebStorage/StorageAreaMap.cpp: |
| (WebKit::StorageAreaMap::loadValuesIfNeeded): |
| (WebKit::StorageAreaMap::prewarm): |
| * WebProcess/WebStorage/StorageAreaMap.h: |
| |
| 2019-07-19 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2] Allow scrolling interaction on frames and oveflow scroll even when the main frame is rubber-banding |
| https://bugs.webkit.org/show_bug.cgi?id=199963 |
| rdar://problem/52897797 |
| |
| Reviewed by Tim Horton. |
| |
| Adopt UIKit SPI to allow for scrolling of inner UIScrollViews when the outer one is still rubber-banding. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _initializeWithConfiguration:]): |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: |
| (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren): |
| |
| 2019-07-17 Megan Gardner <megan_gardner@apple.com> |
| |
| Set WordIsNearTap flag, was not being set at all before |
| https://bugs.webkit.org/show_bug.cgi?id=199880 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::selectWithGesture): |
| |
| 2019-07-17 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Provide a NSURL cateogry to tell AppSSO Kerberos URLs |
| https://bugs.webkit.org/show_bug.cgi?id=199887 |
| <rdar://problem/52323161> |
| |
| Reviewed by Brent Fulgham. |
| |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationNSURLExtras.h: |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationNSURLExtras.mm: |
| (+[NSURL _web_willPerformSOKerberosAuthorizationWithURL:]): |
| |
| 2019-07-17 Antoine Quint <graouts@apple.com> |
| |
| Disable Pointer Events prior to watchOS 6 |
| https://bugs.webkit.org/show_bug.cgi?id=199890 |
| <rdar://problem/53206113> |
| |
| Reviewed by Dean Jackson. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2019-07-17 Daniel Bates <dabates@apple.com> |
| |
| Typing into a cell in a Google Sheet lags behind by one character |
| https://bugs.webkit.org/show_bug.cgi?id=199587 |
| <rdar://problem/51616845> |
| |
| Reviewed by Brent Fulgham. |
| |
| Remove all timers from the holding tank on text insertion or deletion (represented as an |
| editing command). Timers that were in the holding tank never stopped ticking and will now |
| be able to execute their action. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::executeEditingCommand): |
| (WebKit::WebPage::insertTextAsync): |
| (WebKit::WebPage::setCompositionAsync): |
| (WebKit::WebPage::confirmCompositionAsync): |
| Call platformWillPerformEditingCommand(). |
| |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::platformWillPerformEditingCommand): Added. |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::platformWillPerformEditingCommand): Remove all the timers from the holding |
| tank if we have a holding tank. |
| |
| 2019-07-17 Darin Adler <darin@apple.com> |
| |
| No need for isURLAllowed function in Frame |
| https://bugs.webkit.org/show_bug.cgi?id=120266 |
| |
| Reviewed by Alex Christensen. |
| |
| * WebProcess/Automation/WebAutomationSessionProxy.cpp: |
| (WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle): |
| Use is<HTMLFrameElementBase> instead of isFrameElementBase. |
| |
| 2019-07-17 Alex Christensen <achristensen@webkit.org> |
| |
| Add a runtime-disabled dialog element skeleton |
| https://bugs.webkit.org/show_bug.cgi?id=199839 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetDialogElementEnabled): |
| (WKPreferencesGetDialogElementEnabled): |
| * UIProcess/API/C/WKPreferencesRefPrivate.h: |
| Add SPI to enable the dialog element for tests. |
| |
| 2019-07-17 Ryosuke Niwa <rniwa@webkit.org> |
| |
| [iOS] Option + Up or Down Arrow key doesn’t move cursor past paragraph boundaries in WebKit2 |
| https://bugs.webkit.org/show_bug.cgi?id=199851 |
| |
| Reviewed by Wenson Hsieh. |
| |
| The bug was caused by the difference in the way AppKit and UIKit responds to Option + Up / Down. |
| |
| On macOS, AppKit sends moveForward before sending moveToStartOfParagraph and moveBackward |
| before sending moveToEndOfParagraph. As a result, when Option + Down is pressed when we are at |
| the end of a line, we would first move to the beginning of the next line (i.e. after the line break) |
| before moving or extending selection with the paragraph boundary granurality. |
| |
| On iOS, UIKit only calls _moveToStartOfParagraph without moving forward by a character. As a result, |
| moving forward by the paragraph boundary granurality immediately stops when we're starting at the |
| end of a line when Option + Down is pressed. Option + Up case is similar. |
| |
| Fix the bug on iOS by emulating what happens on macOS. Namely, move the selection forward or backward |
| by the character granurality before moving by the paragraph boundary granurality. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _moveToStartOfParagraph:withHistory:]): |
| (-[WKContentView _moveToEndOfParagraph:withHistory:]): |
| |
| 2019-07-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix GTK and WPE debug build after r247508 |
| |
| * UIProcess/API/glib/WebKitWebResource.cpp: |
| (webkitWebResourceCreate): Remove invalid assert. |
| |
| 2019-07-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [WPE][GTK] UI process crash due to NULL dereference in webkitWebViewResourceLoadStarted() |
| https://bugs.webkit.org/show_bug.cgi?id=199621 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Null-check frame received in injected bundle message to ensure the frame hasn't been destroyed. |
| |
| * UIProcess/API/glib/WebKitInjectedBundleClient.cpp: |
| * UIProcess/API/glib/WebKitWebResource.cpp: |
| (webkitWebResourceCreate): Receive a reference to the frame instead of a pointer. |
| * UIProcess/API/glib/WebKitWebResourcePrivate.h: |
| * UIProcess/API/glib/WebKitWebView.cpp: |
| (webkitWebViewResourceLoadStarted): Ditto. |
| * UIProcess/API/glib/WebKitWebViewPrivate.h: |
| |
| 2019-07-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] Do not assert when receiving invalid data in injected bundle messages |
| https://bugs.webkit.org/show_bug.cgi?id=199830 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Just silently ignore them to avoid UI process crashes. |
| |
| * UIProcess/API/glib/WebKitInjectedBundleClient.cpp: |
| |
| 2019-07-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] No web view updates after swapping web process if AC mode is forced |
| https://bugs.webkit.org/show_bug.cgi?id=199826 |
| |
| Reviewed by Michael Catanzaro. |
| |
| This is because when AC mode is forced the provisional page creates a drawing area that is always in AC |
| mode. When swapping processes, the current drawing area is destroyed (which exists AC mode) and the provisional |
| one is set. From that point the web process is in AC mode but the UI process isn't. We need to update the |
| compositing mode when swapping processes. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseDidExitWebProcess): |
| * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: |
| |
| 2019-07-16 Antoine Quint <graouts@apple.com> |
| |
| REGRESSION: fast/events/watchos/double-tap-to-zoom* tests crashing in com.apple.WebKit: -[WKContentView(WKInteraction) _singleTapDidReset:] |
| https://bugs.webkit.org/show_bug.cgi?id=199840 |
| <rdar://problem/52856531> |
| |
| Reviewed by Wenson Hsieh. |
| |
| We need to ensure the NSNumber used for -[WKSyntheticTapGestureRecognizer lastActiveTouchIdentifier] is retained. This innocent change required |
| the use of RetainPtr<>, which required the move to an Objective-C++ file, which lead to a change in the order files are unified, which lead to |
| build errors, which leads to a much bigger patch than just the source change necessary to fix the crash. |
| |
| * SourcesCocoa.txt: |
| * UIProcess/ios/WKSyntheticTapGestureRecognizer.mm: Renamed from Source/WebKit/UIProcess/ios/WKSyntheticTapGestureRecognizer.m. |
| * UIProcess/ios/forms/WKFormPeripheralBase.h: |
| * UIProcess/ios/forms/WKFormPeripheralBase.mm: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-07-16 Brent Fulgham <bfulgham@apple.com> |
| |
| Update WebContent Process sandbox based on user seed data |
| https://bugs.webkit.org/show_bug.cgi?id=199799 |
| <rdar://problem/52903477> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2019-07-16 Andy Estes <aestes@apple.com> |
| |
| [macCatalyst] Do not include WebKitLegacy.h in WebKit.h |
| https://bugs.webkit.org/show_bug.cgi?id=199833 |
| <rdar://problem/53036744> |
| |
| Reviewed by Tim Horton. |
| |
| * Shared/API/Cocoa/WebKit.h: |
| |
| 2019-07-16 Frederic Wang <fwang@igalia.com> |
| |
| Fix build warning because of missing super_class initializer |
| https://bugs.webkit.org/show_bug.cgi?id=199825 |
| |
| Reviewed by Jonathan Bedard. |
| |
| * UIProcess/ios/WKContentView.mm: |
| (keyCommandsPlaceholderHackForEvernote): |
| |
| 2019-07-16 Tim Horton <timothy_horton@apple.com> |
| |
| NSTextFinder holes don't scroll with the page |
| https://bugs.webkit.org/show_bug.cgi?id=199815 |
| <rdar://problem/52280514> |
| |
| Reviewed by Simon Fraser. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _usePlatformFindUI]): |
| (-[WKWebView _setUsePlatformFindUI:]): |
| (-[WKWebView _ensureTextFinderClient]): |
| Add a bit so that clients can choose whether they want our find UI, |
| which respects scrolling, or the system find UI, which works when |
| doing multi-document searches. Right now you can't have both. |
| |
| (-[WKWebView scrollFindMatchToVisible:]): |
| Implement and plumb scrollFindMatchToVisible. |
| |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::indicateFindMatch): |
| * UIProcess/WebPageProxy.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::indicateFindMatch): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| Plumb indicateFindMatch to FindController. |
| |
| * UIProcess/mac/WKTextFinderClient.h: |
| * UIProcess/mac/WKTextFinderClient.mm: |
| (-[WKTextFinderClient initWithPage:view:usePlatformFindUI:]): |
| Store whether or not we are using the platform find UI. |
| |
| (-[WKTextFinderClient findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:]): |
| If using WebKit find UI, turn on our UI in the options passed to findString[Matches]. |
| |
| (-[WKTextFinderClient scrollFindMatchToVisible:]): |
| If using WebKit find UI, when the platform tells us to reveal a find match, indicate it. |
| |
| (-[WKTextFinderClient didFindStringMatchesWithRects:didWrapAround:]): |
| If using WebKit find UI, lie to the platform and return no rects so that it doesn't paint a yellow rectangle. |
| |
| (-[WKTextFinderClient getImageForMatchResult:completionHandler:]): |
| If using WebKit find UI, lie to the platform and return no image so that it doesn't paint a yellow rectangle. |
| |
| (-[WKTextFinderClient initWithPage:view:]): Deleted. |
| |
| * WebProcess/WebPage/FindController.cpp: |
| (WebKit::FindController::updateFindUIAfterPageScroll): |
| Make it possible to use our find UI with 'findStringMatches'; since the platform |
| find infrastrucutre depends on knowing about all matches up front, we need |
| to use 'findStringMatches' instead of 'findString', but we had never combined |
| that with our UI. Don't throw away the other matches when we indicate one, and |
| don't send DidFindString in the case we are coming from 'findStringMatches'. |
| This all needs a bit of cleanup in the future. |
| |
| (WebKit::FindController::findString): |
| Tell updateFindUIAfterPageScroll that we are 'findString' so that it uses its normal behavior. |
| |
| (WebKit::FindController::findStringMatches): |
| Tell updateFindUIAfterPageScroll that we are 'findStringMatches' so that it uses the adjusted behavior. |
| |
| (WebKit::FindController::indicateFindMatch): |
| Add 'indicateFindMatch', which both selects the match and moves the indicator there. |
| |
| * WebProcess/WebPage/FindController.h: |
| |
| 2019-07-16 Chris Dumez <cdumez@apple.com> |
| |
| Speed up StorageManager::getValues() |
| https://bugs.webkit.org/show_bug.cgi?id=199812 |
| |
| Reviewed by Alex Christensen. |
| |
| Made the following performance improvements: |
| - Made StorageManager a WorkQueueMessageReceiver again (like it was before it |
| got moved from the UIProcess to the Network process). This avoids a lot of |
| thread hopping (IPC thread -> Main thread -> StorageManagerThread -> Main Thread) |
| and a lot of isolatedCopying of the strings. |
| - Move values around when possible to avoid copying. |
| - Add fast path to StorageMap::importItems() for when the StorageMap is |
| empty when importing (15ms -> 2.5ms). |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): |
| (WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage): |
| * NetworkProcess/WebStorage/LocalStorageDatabase.cpp: |
| (WebKit::LocalStorageDatabase::importItems): |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::addAllowedSessionStorageNamespaceConnection): |
| (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection): |
| (WebKit::StorageManager::processDidCloseConnection): |
| (WebKit::StorageManager::createLocalStorageMap): |
| (WebKit::StorageManager::createTransientLocalStorageMap): |
| (WebKit::StorageManager::createSessionStorageMap): |
| (WebKit::StorageManager::destroyStorageMap): |
| (WebKit::StorageManager::getValues): |
| (WebKit::StorageManager::setItem): |
| (WebKit::StorageManager::setItems): |
| (WebKit::StorageManager::removeItem): |
| (WebKit::StorageManager::clear): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::addWorkQueueMessageReceiver): |
| (IPC::Connection::removeWorkQueueMessageReceiver): |
| (IPC::Connection::processIncomingMessage): |
| (IPC::Connection::dispatchMessage): |
| (IPC::Connection::dispatchMessageToWorkQueueReceiver): |
| * Platform/IPC/Connection.h: |
| * WebProcess/WebStorage/StorageAreaMap.cpp: |
| (WebKit::StorageAreaMap::loadValuesIfNeeded): |
| Messages to WorkQueueMessageReceivers are normally dispatched from the IPC WorkQueue. However, there is a race if |
| a client (here StorageManager) adds itself as a WorkQueueMessageReceiver as a result of receiving an IPC message |
| on the main thread (here NetworkConnectionToWebProcess::WebPageWasAdded). |
| The message might have already been dispatched from the IPC WorkQueue to the main thread by the time the |
| client registers itself as a WorkQueueMessageReceiver. To address this, we check again for messages receivers |
| once the message arrives on the main thread. |
| |
| 2019-07-16 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentChangeObserver] Cancel ongoing content observation when tap is failed/cancelled |
| https://bugs.webkit.org/show_bug.cgi?id=199828 |
| <rdar://problem/53152696> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::commitPotentialTapFailed): |
| (WebKit::WebPage::cancelPotentialTap): |
| |
| 2019-07-15 Alex Christensen <achristensen@webkit.org> |
| |
| Remove redundant WebsiteDataStoreConfiguration member |
| https://bugs.webkit.org/show_bug.cgi?id=199820 |
| |
| Reviewed by Geoffrey Garen. |
| |
| m_webStorageDirectory was only used for _WKWebsiteDataStoreConfiguration._webStorageDirectory's backing, |
| which was copied over to m_localStorageDirectory of a new object in WKWebsiteDataStore's _initWithConfiguration. |
| This is a baby step towards cleaning up this mess with no behavior change. I see no reason to rename the SPI. |
| |
| * UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm: |
| (-[_WKWebsiteDataStoreConfiguration _webStorageDirectory]): |
| (-[_WKWebsiteDataStoreConfiguration _setWebStorageDirectory:]): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp: |
| (WebKit::WebsiteDataStoreConfiguration::copy): |
| * UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h: |
| (WebKit::WebsiteDataStoreConfiguration::webStorageDirectory const): Deleted. |
| (WebKit::WebsiteDataStoreConfiguration::setWebStorageDirectory): Deleted. |
| |
| 2019-07-15 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| Make WKURLSchemeTask thread safe |
| https://bugs.webkit.org/show_bug.cgi?id=199764 |
| |
| Unreviewed build fix for WinCairo port. |
| |
| Source\WebKit\UIProcess\socket\RemoteInspectorProtocolHandler.cpp(82): error C2039: 'request': is not a member of 'WebKit::WebURLSchemeTask' |
| |
| * UIProcess/WebURLSchemeTask.h: |
| (WebKit::WebURLSchemeTask::request const): Restored WebURLSchemeTask::request with a threading assertion. |
| |
| 2019-07-15 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r247444. |
| |
| Caused two scrolling tests to fail on iOS Simulator |
| |
| Reverted changeset: |
| |
| "Typing into a cell in a Google Sheet lags behind by one |
| character" |
| https://bugs.webkit.org/show_bug.cgi?id=199587 |
| https://trac.webkit.org/changeset/247444 |
| |
| 2019-07-15 Zalan Bujtas <zalan@apple.com> |
| |
| outlook.live.com has odd viewport with edge gap |
| https://bugs.webkit.org/show_bug.cgi?id=199822 |
| <rdar://problem/53029072> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::setViewportConfigurationViewLayoutSize): |
| (WebKit::WebPage::dynamicViewportSizeUpdate): |
| (WebKit::WebPage::resetViewportDefaultConfiguration): |
| (WebKit::WebPage::immediatelyShrinkToFitContent): |
| (WebKit::WebPage::viewLayoutSizeAdjustedForQuirks): Deleted. |
| |
| 2019-07-11 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| New York font erroneously gets synthetic bold |
| https://bugs.webkit.org/show_bug.cgi?id=199653 |
| <rdar://problem/51692592> |
| |
| Reviewed by Simon Fraser. |
| |
| Add the SPI to enable the new fonts. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetShouldAllowDesignSystemUIFonts): |
| (WKPreferencesGetShouldAllowDesignSystemUIFonts): |
| * UIProcess/API/C/WKPreferencesRefPrivate.h: |
| * UIProcess/API/Cocoa/WKPreferences.mm: |
| (-[WKPreferences _shouldAllowDesignSystemUIFonts]): |
| (-[WKPreferences _setShouldAllowDesignSystemUIFonts:]): |
| * UIProcess/API/Cocoa/WKPreferencesPrivate.h: |
| |
| 2019-07-15 Brady Eidson <beidson@apple.com> |
| |
| Make WKURLSchemeTask thread safe. |
| <rdar://problem/50471863> and https://bugs.webkit.org/show_bug.cgi?id=199764 |
| |
| Reviewed by Alex Christensen. |
| |
| Punt most of the WKURLSchemeTask operations back to the main thread. |
| Make accessing the NSURLRequest be thread safe with lock protection. |
| |
| * UIProcess/API/Cocoa/WKURLSchemeTask.mm: |
| (getExceptionTypeFromMainRunLoop): |
| (-[WKURLSchemeTaskImpl dealloc]): |
| (-[WKURLSchemeTaskImpl request]): |
| (-[WKURLSchemeTaskImpl _requestOnlyIfCached]): |
| (-[WKURLSchemeTaskImpl didReceiveResponse:]): |
| (-[WKURLSchemeTaskImpl didReceiveData:]): |
| (-[WKURLSchemeTaskImpl didFinish]): |
| (-[WKURLSchemeTaskImpl didFailWithError:]): |
| (-[WKURLSchemeTaskImpl _didPerformRedirection:newRequest:]): |
| |
| * UIProcess/WebURLSchemeTask.cpp: |
| (WebKit::WebURLSchemeTask::WebURLSchemeTask): |
| (WebKit::WebURLSchemeTask::~WebURLSchemeTask): |
| (WebKit::WebURLSchemeTask::didPerformRedirection): |
| (WebKit::WebURLSchemeTask::didReceiveResponse): |
| (WebKit::WebURLSchemeTask::didReceiveData): |
| (WebKit::WebURLSchemeTask::didComplete): |
| (WebKit::WebURLSchemeTask::pageDestroyed): |
| (WebKit::WebURLSchemeTask::stop): |
| (WebKit::WebURLSchemeTask::nsRequest const): |
| |
| * UIProcess/WebURLSchemeTask.h: |
| (WebKit::WebURLSchemeTask::identifier const): |
| (WebKit::WebURLSchemeTask::pageID const): |
| (WebKit::WebURLSchemeTask::process): |
| (WebKit::WebURLSchemeTask::process const): Deleted. |
| (WebKit::WebURLSchemeTask::request const): Deleted. |
| |
| 2019-07-15 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Followup to r247439 |
| https://bugs.webkit.org/show_bug.cgi?id=199788 |
| <rdar://problem/52142570> |
| |
| Reviewed by Tim Horton. |
| |
| As it turns out, sending modern async completion-handler based IPC messages while processing incoming sync |
| messages results in a debug assertion. Instead of migrating FontAtSelection to the new async IPC mechanism, |
| restore the older CallbackID-based async IPC. |
| |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/mac/WebPageProxyMac.mm: |
| (WebKit::WebPageProxy::fontAtSelection): |
| (WebKit::WebPageProxy::fontAtSelectionCallback): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::fontAtSelection): |
| |
| 2019-07-15 Dean Jackson <dino@apple.com> |
| |
| [WebGL] Remove software rendering and simplify context creation on macOS |
| https://bugs.webkit.org/show_bug.cgi?id=199789 |
| |
| Reviewed by Sam Weinig. |
| |
| Remove force software WebGL setting. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetForceSoftwareWebGLRendering): Deleted. |
| (WKPreferencesGetForceSoftwareWebGLRendering): Deleted. |
| * UIProcess/API/C/WKPreferencesRefPrivate.h: |
| |
| 2019-07-15 Daniel Bates <dabates@apple.com> |
| |
| Typing into a cell in a Google Sheet lags behind by one character |
| https://bugs.webkit.org/show_bug.cgi?id=199587 |
| <rdar://problem/51616845> |
| |
| Reviewed by Brent Fulgham. |
| |
| Remove all timers from the holding tank on text insertion or deletion (represented as an |
| editing command). Timers that were in the holding tank never stopped ticking and will now |
| be able to execute their action. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::executeEditingCommand): |
| (WebKit::WebPage::insertTextAsync): |
| (WebKit::WebPage::setCompositionAsync): |
| (WebKit::WebPage::confirmCompositionAsync): |
| Call platformWillPerformEditingCommand(). |
| |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::platformWillPerformEditingCommand): Added. |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::platformWillPerformEditingCommand): Remove all the timers from the holding |
| tank if we have a holding tank. |
| |
| 2019-07-15 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [macOS 10.15] Cannot unbold selected text when the system font is used |
| https://bugs.webkit.org/show_bug.cgi?id=199788 |
| <rdar://problem/52142570> |
| |
| Reviewed by Tim Horton. |
| |
| In macOS 10.15, +[NSFont fontWithName:size:] no longer recognizes system fonts (of name |
| ".SFNS-*") and returns nil instead. However, our existing implementation of |
| WebPageProxy::fontAtSelection works by grabbing the font name in the web process, and |
| sending it over to the UI process, where it is mapped to an NSFont. As a result, this always |
| results in a nil font in macOS 10.15, which causes us to never update NSFontManager's |
| selected font. In turn, this means that once selected text is bolded, it can't be unbolded |
| via NSFontManager, since NSFontManager thinks that the text is still not bold. |
| |
| To fix this, we simply encode and send a platform FontInfo instead of sending the font name. |
| This allows the UI process to reconstruct NSFonts from font attribute dictionaries instead, |
| and update the font manager. |
| |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::updateFontManagerIfNeeded): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/mac/WebPageProxyMac.mm: |
| (WebKit::WebPageProxy::fontAtSelection): |
| |
| Refactor this to send a FontInfo (containing a font attribute dictionary) instead of a font |
| name. |
| |
| (WebKit::WebPageProxy::fontAtSelectionCallback): Deleted. |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| Change FontAtSelection to use sendWithAsyncReply instead of sending a callback ID. This also |
| allows us to remove FontAtSelectionCallback. |
| |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::fontAtSelection): |
| |
| 2019-07-15 Jiewen Tan <jiewen_tan@apple.com> |
| |
| [iOS] SOAuthorizationSession should tell AppSSO whether the UIClient is capable of showing the extension UI |
| https://bugs.webkit.org/show_bug.cgi?id=199790 |
| <rdar://problem/52790112> |
| |
| Reviewed by Brent Fulgham. |
| |
| On iOS, WebKit relies on a SPI -[WKUIDelegatePrivate _presentingViewControllerForWebView:] to present the |
| extension UI. However, third party clients often don't implement this SPI. Therefore, WebKit will not be |
| able to present the extension UI for them. |
| |
| To be able to show the extension UI for third party WebKit clients, WebKit should unset SOAuthorization.enableEmbeddedAuthorizationViewController |
| whenever clients don't implement the above SPI such that AppSSO could show the UI in their UI process. |
| |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: |
| (WebKit::SOAuthorizationSession::start): |
| |
| 2019-07-15 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| REGRESSION: Chase app crashes immediately after authentication |
| https://bugs.webkit.org/show_bug.cgi?id=199798 |
| <rdar://problem/53106179> |
| |
| Reviewed by Alex Christensen. |
| |
| After r247411, we sometimes try to consult `_page` from WKWebView, before WKWebView's `_page` has been set. This |
| happens under a check for -[WKWebView _isEditable], from within -[WKContentView setupInteraction], which happens |
| if the host app is not linked on the iOS 12 SDK or earlier. To mitigate this, simply add a null check in |
| -_isEditable. |
| |
| There's currently no great way to test this, since we don't have a mechanism for simulating linked-on checks. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _isEditable]): |
| |
| 2019-07-13 Andres Gonzalez <andresg_22@apple.com> |
| |
| Add accessibility support to WKDataListSuggestionsView. |
| https://bugs.webkit.org/show_bug.cgi?id=199772 |
| <rdar://problem/47095851> |
| |
| Reviewed by Chris Fleizach. |
| |
| Added accessibility announcement notifications to show, dismiss and selection change for the datalist suggestions view. |
| * UIProcess/mac/WebDataListSuggestionsDropdownMac.mm: |
| (-[WKDataListSuggestionsView notifyAccessibilityClients:]): |
| (-[WKDataListSuggestionsView moveSelectionByDirection:]): |
| (-[WKDataListSuggestionsView invalidate]): |
| (-[WKDataListSuggestionsView showSuggestionsDropdown:]): |
| |
| 2019-07-13 Zalan Bujtas <zalan@apple.com> |
| |
| Cannot bring up custom media controls at all on v.youku.com |
| https://bugs.webkit.org/show_bug.cgi?id=199699 |
| <rdar://problem/51835327> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp: |
| (WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction): |
| * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: |
| (WebKit::WebPage::performDictionaryLookupAtLocation): |
| * WebProcess/WebPage/WebFrame.cpp: |
| (WebKit::WebFrame::hitTest const): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::handleContextMenuEvent): |
| (WebKit::WebPage::characterIndexForPointAsync): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleStylusSingleTapAtPoint): |
| (WebKit::textInteractionPositionInformation): |
| * WebProcess/WebPage/mac/WebPageMac.mm: |
| (WebKit::WebPage::shouldDelayWindowOrderingEvent): |
| (WebKit::WebPage::acceptsFirstMouse): |
| (WebKit::WebPage::performImmediateActionHitTestAtLocation): |
| |
| 2019-07-12 Andy Estes <aestes@apple.com> |
| |
| [Cocoa] -loadFileURL:allowingReadAccessToURL: should fully resolve file URLs |
| https://bugs.webkit.org/show_bug.cgi?id=199768 |
| <rdar://problem/52002206> |
| |
| Reviewed by Geoffrey Garen. |
| |
| -loadFileURL:allowingReadAccessToURL: used -_web_originalDataAsWTFString from WKNSURLExtras |
| to convert the file and read access NSURLs to strings, which under the hood calls |
| CFURLGetBytes(). CFURLGetBytes() gets the URL's string without considering the base URL, so |
| if the client creates a URL like this: |
| |
| NSURL *url = [NSURL fileURLWithPath:@"tmpfile.txt" relativeToURL:[NSURL fileURLWithPath:@"/tmp"]] |
| |
| ... then -_web_originalDataAsWTFString will merely return the string "tmpfile.txt". When |
| that is later converted back to a URL in WebPageProxy::loadFile(), we lose track of the base |
| component and refuse to load something that no longer looks like a file: URL. |
| |
| Fixed this by fully resolving the URLs passed to -loadFileURL:allowingReadAccessToURL: when |
| converting to strings by using -[NSURL absoluteString] instead of -_web_originalDataAsWTFString. |
| |
| * Shared/Cocoa/WKNSURLExtras.mm: |
| (-[NSURL _web_originalDataAsWTFString]): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView loadFileURL:allowingReadAccessToURL:]): |
| |
| 2019-07-12 Megan Gardner <megan_gardner@apple.com> |
| |
| Turn off two finger gestures for editable non-scaled content |
| https://bugs.webkit.org/show_bug.cgi?id=199739 |
| <rdar://problem/52107190> |
| |
| Reviewed by Tim Horton. |
| |
| This gesture is blocking a selection gesture. Turn it off as it is not |
| even being used in editable content. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView _didChangeWebViewEditability]): |
| |
| 2019-07-12 Jiewen Tan <jiewen_tan@apple.com> |
| |
| SOAuthorizationSession::presentViewController should check WebPageProxy::isClosed() |
| https://bugs.webkit.org/show_bug.cgi?id=199755 |
| <rdar://problem/52323585> |
| |
| Reviewed by Chris Dumez. |
| |
| WebPageProxy::pageClient() is not guaranteed to be non null all the time. Therefore, we should check |
| WebPageProxy::isClosed() before using it. |
| |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: |
| (WebKit::SOAuthorizationSession::presentViewController): |
| |
| 2019-07-12 Chris Dumez <cdumez@apple.com> |
| |
| Regression(macOS Catalina): Cannot quick look html documents in Mail |
| https://bugs.webkit.org/show_bug.cgi?id=199754 |
| <rdar://problem/51304961> |
| |
| Reviewed by Geoff Garen. |
| |
| If the client asks us to load a file URL but does not provide a resource path, WebKit |
| would fallback to issuing a sandbox extension for /. This no longer works on mac OS |
| Catalina and it would thus fail to load the file. |
| |
| To address the issue, if the attempt to create a sandbox extension for / fails, we now |
| fall back to issuing one for the file's baseURL (path of containing folder). |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| |
| 2019-07-12 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| WebBackForwardListItem::setPageState should receive pageState by rvalue reference |
| https://bugs.webkit.org/show_bug.cgi?id=199535 |
| |
| Reviewed by Alex Christensen |
| |
| Coverity is complaining here about copying PageState by value in the parameter list. It's |
| sort of a false positive, in that the PageState really does need to be copied here, so this |
| is the best we can do. But pass by value and then WTFMove() is a pretty strange way to write |
| it. Passing by rvalue reference would be better. This makes the copy more clear. |
| |
| * Shared/WebBackForwardListItem.h: |
| (WebKit::WebBackForwardListItem::setPageState): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::updateBackForwardItem): |
| |
| 2019-07-12 Youenn Fablet <youenn@apple.com> |
| |
| Add release logging for quota checks |
| https://bugs.webkit.org/show_bug.cgi?id=199697 |
| |
| Reviewed by Alex Christensen. |
| |
| Log requests made to the page and the result from the application. |
| |
| * Platform/Logging.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::requestStorageSpace): |
| |
| 2019-07-12 Youenn Fablet <youenn@apple.com> |
| |
| Remove unneeded variable in LocalStorageNamespace::getOrCreateStorageArea |
| https://bugs.webkit.org/show_bug.cgi?id=199477 |
| |
| Reviewed by Alex Christensen. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea): |
| |
| 2019-07-12 Pawel Stanek <p.stanek@metrological.com> |
| |
| Connection::waitForSyncReply() uses wall time clock for timeout |
| https://bugs.webkit.org/show_bug.cgi?id=198712 |
| Due to a nature of the system time (it might not be set, jump, be off |
| by a lot) it is better to use monotonically increasing time which is |
| exactly what's used in a similar place i.e. Connection::waitForMessage() |
| |
| Reviewed by Alex Christensen. |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::waitForSyncReply): |
| |
| 2019-07-12 Timothy Hatcher <timothy@apple.com> |
| |
| Drop DarkModeCSSEnabled as an experimental feature and always enable it. |
| https://bugs.webkit.org/show_bug.cgi?id=199725 |
| rdar://problem/52970972 |
| |
| Reviewed by Megan Gardner. |
| |
| * Shared/WebPreferences.yaml: Removed DarkModeCSSEnabled. |
| |
| 2019-07-11 Myles C. Maxfield <mmaxfield@apple.com> |
| |
| New York font erroneously gets synthetic bold |
| https://bugs.webkit.org/show_bug.cgi?id=199653 |
| <rdar://problem/51692592> |
| |
| Reviewed by Simon Fraser. |
| |
| Add the SPI to enable the new fonts. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesSetShouldAllowDesignSystemUIFonts): |
| (WKPreferencesGetShouldAllowDesignSystemUIFonts): |
| * UIProcess/API/C/WKPreferencesRefPrivate.h: |
| * UIProcess/API/Cocoa/WKPreferences.mm: |
| (-[WKPreferences _shouldAllowDesignSystemUIFonts]): |
| (-[WKPreferences _setShouldAllowDesignSystemUIFonts:]): |
| * UIProcess/API/Cocoa/WKPreferencesPrivate.h: |
| |
| 2019-07-11 Chris Dumez <cdumez@apple.com> |
| |
| ASSERTION FAILED: RunLoop::isMain() under IPC::Connection::sendWithAsyncReply() |
| https://bugs.webkit.org/show_bug.cgi?id=199734 |
| <rdar://problem/52977439> |
| |
| Reviewed by Geoffrey Garen. |
| |
| It appears WKProcessTaskStateObserverDelegate's taskStateDidChange handler can get called |
| on a background thread so we need to make sure we go back to the main thread before we |
| go into WebKit and do IPC. |
| |
| * Shared/Cocoa/ProcessTaskStateObserver.mm: |
| (-[WKProcessTaskStateObserverDelegate process:taskStateDidChange:]): |
| |
| 2019-07-11 Sihui Liu <sihui_liu@apple.com> |
| |
| StorageArea should not be destructed on the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=199713 |
| <rdar://problem/52911900> |
| |
| Reviewed by Alex Christensen. |
| |
| After r246079, LocalStorageNameSpace could be destructed on the main thread and it may hold the last reference |
| to StorageArea. Then we saw the crashes that StorageArea was wrongly destructed on the main thread. |
| |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::~NetworkSession): |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::waitUntilTasksFinished): |
| (WebKit::StorageManager::waitUntilWritesFinished): Deleted. |
| * NetworkProcess/WebStorage/StorageManager.h: |
| |
| 2019-07-11 Tim Horton <timothy_horton@apple.com> |
| |
| Null deref of Range under WebPage::startAutoscrollAtPosition |
| https://bugs.webkit.org/show_bug.cgi?id=199724 |
| <rdar://problem/41127089> |
| |
| Reviewed by Dean Jackson. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::startAutoscrollAtPosition): |
| Refactor this function to be early-return-y, and add one more |
| early return if the Range is null. |
| |
| 2019-07-11 Pablo Saavedra <psaavedra@igalia.com> |
| |
| [WPE][GTK] Build failure with ENABLE_ACCESSIBILITY=OFF |
| https://bugs.webkit.org/show_bug.cgi?id=199625 |
| |
| Added ENABLE(ACCESSIBILITY) and replaced HAVE(ACCESSIBILITY) |
| with ENABLE(ACCESSIBILITY) in the code. |
| |
| Additionally, the TestRunner code generator now honors the |
| Conditional IDL format. |
| |
| Reviewed by Konstantin Tokarev. |
| |
| * UIProcess/API/glib/WebKitWebViewAccessible.cpp: |
| * UIProcess/API/glib/WebKitWebViewAccessible.h: |
| * UIProcess/API/wpe/PageClientImpl.cpp: |
| * UIProcess/API/wpe/PageClientImpl.h: |
| * UIProcess/API/wpe/WPEView.cpp: |
| (WKWPE::m_backend): |
| (WKWPE::View::~View): |
| * UIProcess/API/wpe/WPEView.h: |
| * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: |
| (WKAccessibilityRootObject): |
| (WKAccessibilityFocusedObject): |
| (WKAccessibilityEnableEnhancedAccessibility): |
| (WKAccessibilityEnhancedAccessibilityEnabled): |
| * WebProcess/WebPage/WebPage.cpp: |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp: |
| * WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.h: |
| * WebProcess/WebPage/gtk/WebPageGtk.cpp: |
| (WebKit::WebPage::platformInitialize): |
| * WebProcess/WebPage/wpe/WebPageWPE.cpp: |
| (WebKit::WebPage::platformInitialize): |
| * WebProcess/wpe/WebProcessMainWPE.cpp: |
| |
| 2019-07-11 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r247314. |
| https://bugs.webkit.org/show_bug.cgi?id=199721 |
| |
| Caused performance regression. (Requested by deanj on |
| #webkit). |
| |
| Reverted changeset: |
| |
| "Disable speculative loading if cache is not to be used for |
| the load" |
| https://bugs.webkit.org/show_bug.cgi?id=199644 |
| https://trac.webkit.org/changeset/247314 |
| |
| 2019-07-11 Dean Jackson <dino@apple.com> |
| |
| CrashTracer: Regression : MobileSafari at UIKit: -[CALayerAccessibility__UIKit__QuartzCore setBounds:] |
| https://bugs.webkit.org/show_bug.cgi?id=199720 |
| <rdar://problem/51470469> |
| |
| Reviewed by Tim Horton. |
| |
| Speculative fix after confirming that this crash can occur when |
| a zero width/height view is used for a UITargetedPreview. We |
| already guarded against this in the default flow, but not in |
| the fallback path where we take a view snapshot. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (createFallbackTargetedPreview): Return early if rectangles are empty. |
| |
| 2019-07-11 Alex Christensen <achristensen@webkit.org> |
| |
| Use mobile UA on jsfiddle.net |
| https://bugs.webkit.org/show_bug.cgi?id=199687 |
| <rdar://problem/50839844> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| Text selection does not work on iPads using desktop UA. |
| This isn't the best solution, but it's certainly *a* solution. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::desktopClassBrowsingRecommendedForRequest): |
| |
| 2019-07-11 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2] Can't place caret or select in content that overflows a contenteditable element |
| https://bugs.webkit.org/show_bug.cgi?id=199741 |
| rdar://problem/50545233 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Various code paths for editing used renderer->absoluteBoundingBoxRect(), which is the border |
| box of the element (or a set of line boxes for inline elements) converted to absolute |
| coordinates. This excludes overflow content, but contenteditable needs to be able to |
| place the caret in overflow content, and allow selection rects to be in the overflow area |
| (if the element has visible overflow). |
| |
| Try to clean this up by adding some static helpers on WebPage for accessing the relevant |
| rects, and use them in code call from visiblePositionInFocusedNodeForPoint(), and |
| code that is input to selectionClipRect. |
| |
| This changes selectionClipRect to use the padding box (excluding borders), which is a progression. |
| |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::platformEditorState const): |
| (WebKit::elementBoundsInFrame): |
| (WebKit::constrainPoint): |
| (WebKit::WebPage::rootViewBoundsForElement): |
| (WebKit::WebPage::absoluteInteractionBoundsForElement): |
| (WebKit::WebPage::rootViewInteractionBoundsForElement): |
| (WebKit::WebPage::dispatchSyntheticMouseEventsForSelectionGesture): |
| (WebKit::WebPage::getFocusedElementInformation): |
| (WebKit::innerFrameQuad): Deleted. |
| (WebKit::elementRectInRootViewCoordinates): Deleted. |
| |
| 2019-07-11 Jonathan Bedard <jbedard@apple.com> |
| |
| [iOS 13] Enable WebKit build |
| https://bugs.webkit.org/show_bug.cgi?id=199481 |
| <rdar://problem/52619048> |
| |
| Reviewed by Tim Horton. |
| |
| * Platform/spi/ios/UIKitSPI.h: Add UITextEffectsWindow.sharedTextEffectsWindowForWindowScene SPI. |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView showGlobalMenuControllerInRect:]): setTargetRect, setMenuVisible marked depreciated in iOS 13. |
| (-[WKContentView hideGlobalMenuController]): Ditto. |
| |
| 2019-07-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| MobileSafari may crash under -[UIKeyboardTaskExecutionContext transferExecutionToMainThreadWithTask:] |
| https://bugs.webkit.org/show_bug.cgi?id=199701 |
| <rdar://problem/52590170> |
| |
| Reviewed by Tim Horton. |
| |
| Mitigates a crash wherein we end up calling the completion handler of |
| -requestAutocorrectionContextWithCompletionHandler: within a nested call |
| to -requestAutocorrectionContextWithCompletionHandler:. In this particular |
| case, a sync `window.open` from the web process to the UI process happens |
| while the UI process is already handling a sync autocorrection context |
| request. This causes the UI process to try and immediately dispatch the |
| incoming sync message to avoid deadlock. However, Safari's logic to create |
| and set up a new web view when opening a new window makes the new view the |
| first responder, which then prompts UIKit logic to request an autocorrection |
| context for the new web view. |
| |
| To avoid the issue for now, simply use -resignFirstResponder as a cue to invoke |
| pending autocorrection context handlers in the original web view before UIKit |
| tries to request autocorrection context in the newly created view. |
| |
| I attempted to write a test for this, but realized that we only end up hitting |
| the debug assertion pointed out in <https://webkit.org/b/199680>; we should be |
| able to write a test for this in the future, if we teach Connection to handle |
| multiple outgoing sync messages. |
| |
| For the time being, I've attached a manual test case to the bug. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView resignFirstResponderForWebView]): |
| (-[WKContentView _cancelPendingAutocorrectionContextHandler]): |
| |
| Add a new helper to signify that a pending autocorrection context handler should be cancelled (invoked |
| immediately with empty data). Use this in a few places where we currently explicitly pass |
| -[WKAutocorrectionContext emptyAutocorrectionContext]. |
| |
| (-[WKContentView requestAutocorrectionContextWithCompletionHandler:]): |
| |
| 2019-07-10 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2] With modal overlay and body overflow:hidden, can't access all the content |
| https://bugs.webkit.org/show_bug.cgi?id=199693 |
| rdar://problem/51930364 |
| |
| Reviewed by Tim Horton. |
| |
| A page with overflow:hidden on the root needs to be scrollable if: |
| * it's zoomed |
| * the visual viewport is smaller than the layout viewport (including visible keyboard) |
| * scrolling is required to hide MobileSafari's squishy bars |
| |
| This patch does the last two, plumbing a "visual viewport is smaller than layout viewport" |
| bit up from WebCore via the scrolling tree (that way, when it changes we automatically trigger |
| a commit), and checking for squished bars in WKWebView. |
| |
| * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: |
| (ArgumentCoder<ScrollingStateFrameScrollingNode>::encode): |
| (ArgumentCoder<ScrollingStateFrameScrollingNode>::decode): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _didCommitLayerTree:]): |
| (-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:maximumUnobscuredSizeOverride:]): |
| * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: |
| (WebKit::RemoteScrollingCoordinatorProxy::hasScrollableMainFrame const): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::maximumUnobscuredSize const): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::dynamicViewportSizeUpdate): |
| (WebKit::WebPage::updateVisibleContentRects): |
| |
| 2019-07-10 Tim Horton <timothy_horton@apple.com> |
| |
| Long pressing on attachments will crash the WebContent process |
| https://bugs.webkit.org/show_bug.cgi?id=199696 |
| <rdar://problem/52920241> |
| |
| Reviewed by Dean Jackson. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::linkIndicatorPositionInformation): |
| (WebKit::elementPositionInformation): |
| (WebKit::selectionPositionInformation): |
| (WebKit::WebPage::positionInformation): |
| Instead of one-off creating a node snapshot for <attachment>, just |
| use TextIndicator. This way, we get an estimated background color, |
| paint at the right resolution, etc. |
| |
| Also, hitNode was often null where we were previously calling |
| shareableBitmapSnapshotForNode, because it depends on the element |
| having click event handlers. selectionPositionInformation() re-hit-tests |
| more permissively to find the <attachment>, so moving this code |
| inside that function ensures that we don't try to snapshot a null node. |
| |
| 2019-07-10 Dean Jackson <dino@apple.com> |
| |
| Safari’s context menu actions are missing options |
| https://bugs.webkit.org/show_bug.cgi?id=199694 |
| <rdar://problem/52726822> |
| |
| Reviewed by Tim Horton. |
| |
| One of the most embarrassing errors I've ever made. I was returning |
| early when something existed, instead of when it didn't exist. |
| (*cough* tests *cough*) |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| |
| 2019-07-10 Jon Lee <jonlee@apple.com> |
| |
| Opt trello.com to mobile UA |
| https://bugs.webkit.org/show_bug.cgi?id=199686 |
| rdar://problem/51708119 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::desktopClassBrowsingRecommendedForRequest): Currently the desktop version |
| of the site prevents users from tapping cards to edit them. Opt trello into the mobile |
| UA for now. |
| |
| 2019-07-10 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Selection handles "Lollipops" can become gray and stay gray |
| https://bugs.webkit.org/show_bug.cgi?id=198852 |
| <rdar://problem/51736130> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Tell the text interaction assistant to update the selection UI when the tint color changes. |
| We do this by way of deactivating and activating selection. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView tintColorDidChange]): |
| |
| 2019-07-10 Dean Jackson <dino@apple.com> |
| |
| Share or Copy image from context menu does not share the correct data |
| https://bugs.webkit.org/show_bug.cgi?id=199681 |
| <rdar://problem/50538771> |
| |
| Reviewed by Tim Horton. |
| |
| The UIContextMenuInteraction calls didEndInteraction before executing the |
| actions of a selected menu item. This means we were assuming the interaction |
| had finished before performing the action triggered in the interaction, ending |
| up in the state where we had forgotten which element we were working with. |
| |
| Rather than ask for UIKit to change, I'm just starting the interaction again |
| as the action is run. Thankfully we already had the location of the interaction. |
| There is a small risk that the page has changed in the meantime, but I'm not |
| sure what to do about that. |
| |
| While here, I moved a method only used by us into _WKElementActionInternal, |
| and changed the location stored by _WKActivatedElementInfo from a CGPoint |
| to an WebCore::IntPoint (since it doesn't escape WebKit). |
| |
| * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm: Use a WebCore::IntPoint rather than a CGPoint. |
| (-[_WKActivatedElementInfo _initWithType:URL:imageURL:location:title:ID:rect:image:]): |
| (-[_WKActivatedElementInfo _initWithType:URL:imageURL:location:title:ID:rect:image:userInfo:]): |
| (-[_WKActivatedElementInfo _interactionLocation]): |
| * UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h: |
| |
| * UIProcess/API/Cocoa/_WKElementAction.h: Move uiActionForElementInfo to Internal. |
| * UIProcess/API/Cocoa/_WKElementActionInternal.h: |
| |
| * UIProcess/API/Cocoa/_WKElementAction.mm: When executing the handlers, restart the interaction |
| using the location in _WKActivatedElementInfo. |
| (+[_WKElementAction _elementActionWithType:customTitle:assistant:]): |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: Explicitly start and stop interactions at |
| the appropriate points in the UIContextMenu flow. This isn't really needed since we're |
| doing it in the handlers, but it will be correct if the UIKit delegate order changes. |
| (-[WKContentView continueContextMenuInteraction:]): |
| (-[WKContentView contextMenuInteractionDidEnd:]): |
| |
| 2019-07-10 Chris Dumez <cdumez@apple.com> |
| |
| Crash under IPC::Connection::waitForMessage() |
| https://bugs.webkit.org/show_bug.cgi?id=199680 |
| <rdar://problem/52500561> |
| |
| Reviewed by Tim Horton. |
| |
| IPC::Connection::waitForMessage() is crashing due to a null defererence of |
| m_waitingForMessage. Since m_waitingForMessage is only ever set to null in |
| waitForMessage(), this seems to imply we've re-entered waitForMessage(). |
| This is in theory possible since the loop inside waitForMessage() calls |
| SyncMessageState::singleton().dispatchMessages() on every iteration to |
| process incoming synchronous IPC messages. In theory, one of these sync |
| IPC messages could run code which ends up calling waitForAndDispatchImmediately() |
| (and thus waitForMessage()). |
| |
| We had a debug assertion to try and catch re-entrancy with a comment stating |
| "We don't support having multiple clients waiting for messages." but we |
| would not see those in release and we would crash with a null dereference |
| instead. |
| |
| To address the crashes in release, return early in case of re-entrancy |
| (we would still hit an assertion in debug). |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::Connection::Connection): |
| (IPC::Connection::waitForMessage): |
| * Platform/IPC/Connection.h: |
| |
| 2019-07-10 Tim Horton <timothy_horton@apple.com> |
| |
| Context menus are not presented for WKWebViews that don't have UIDelegates |
| https://bugs.webkit.org/show_bug.cgi?id=199678 |
| |
| Reviewed by Dean Jackson. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView continueContextMenuInteraction:]): |
| Remove this unnecessary early-return if we don't have a UIDelegate. |
| We have a default behavior that we totally want to happen. |
| Also, rename completion() to continueWithContextMenuConfiguration() |
| to reduce confusion between completion() and completionBlock() in |
| this method. |
| |
| 2019-07-10 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r247223. |
| https://bugs.webkit.org/show_bug.cgi?id=199679 |
| |
| Caused perf regression. (Requested by deanj on #webkit). |
| |
| Reverted changeset: |
| |
| "[iPadOS] Viewport pops while loading sohu.com, xinhuanet.com, |
| and various other websites" |
| https://bugs.webkit.org/show_bug.cgi?id=199575 |
| https://trac.webkit.org/changeset/247223 |
| |
| 2019-07-10 Youenn Fablet <youenn@apple.com> |
| |
| Disable speculative loading if cache is not to be used for the load |
| https://bugs.webkit.org/show_bug.cgi?id=199644 |
| |
| Reviewed by Chris Dumez. |
| |
| When the page is reloaded, loads are instructed to not use the cache. |
| It is therefore unneeded to do speculative revalidation. |
| Allow speculative revalidation if the cache policy is either the default HTTP policy or |
| if policy is to refresh all cache data. |
| Covered by added test. |
| |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::cachePolicyValidForSpeculativeRevalidation): |
| (WebKit::NetworkCache::canRequestUseSpeculativeRevalidation): |
| |
| 2019-07-10 Alex Christensen <achristensen@webkit.org> |
| |
| Fix build after Foundation changes UIEdgeInsets definition |
| https://bugs.webkit.org/show_bug.cgi?id=199660 |
| <rdar://problem/52390453> |
| |
| Reviewed by Tim Horton. |
| |
| * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: |
| * UIProcess/Cocoa/WKWebViewContentProvider.h: |
| |
| 2019-07-10 Antti Koivisto <antti@apple.com> |
| |
| Remove TouchActionData |
| https://bugs.webkit.org/show_bug.cgi?id=199668 |
| |
| Reviewed by Simon Fraser. |
| |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::ArgumentCoder<EventTrackingRegions>::encode): |
| (IPC::ArgumentCoder<EventTrackingRegions>::decode): |
| (IPC::ArgumentCoder<TouchActionData>::encode): Deleted. |
| (IPC::ArgumentCoder<TouchActionData>::decode): Deleted. |
| |
| 2019-07-09 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [WPE][GTK] GUniqueOutPtr::release should return a raw pointer |
| https://bugs.webkit.org/show_bug.cgi?id=199579 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * NetworkProcess/glib/WebKitCachedResolver.cpp: |
| (webkitCachedResolverLookupByNameAsync): |
| (webkitCachedResolverLookupByNameWithFlagsAsync): |
| * UIProcess/API/glib/WebKitFaviconDatabase.cpp: |
| (processPendingIconsForPageURL): |
| (webkit_favicon_database_get_favicon): |
| * UIProcess/API/glib/WebKitUserContentFilterStore.cpp: |
| (webkit_user_content_filter_store_save_from_file): |
| |
| 2019-07-09 Tim Horton <timothy_horton@apple.com> |
| |
| Fixed elements appear in the middle of full page screenshots taken when scrolled |
| https://bugs.webkit.org/show_bug.cgi?id=199649 |
| <rdar://problem/52476226> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::computePagesForPrintingAndDrawToPDF): |
| Temporarily expand the layout viewport to the size of the snapshotting page, |
| so that fixed elements sit against the bounds of the page instead of |
| wherever you're currently scrolled to. |
| |
| 2019-07-09 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2] Use Optional<> for two data members of WKWebView |
| https://bugs.webkit.org/show_bug.cgi?id=199637 |
| |
| Reviewed by Tim Horton. |
| |
| Use Optional<CGSize> to replace _overridesViewLayoutSize/_viewLayoutSizeOverride |
| and _overridesMaximumUnobscuredSize/_maximumUnobscuredSizeOverride. |
| |
| No behavior change. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView activeViewLayoutSize:]): |
| (-[WKWebView _frameOrBoundsChanged]): |
| (activeMaximumUnobscuredSize): |
| (-[WKWebView _minimumLayoutSizeOverride]): |
| (-[WKWebView _setViewLayoutSizeOverride:]): |
| (-[WKWebView _maximumUnobscuredSizeOverride]): |
| (-[WKWebView _setMaximumUnobscuredSizeOverride:]): |
| (-[WKWebView _beginAnimatedResizeWithUpdates:]): |
| (-[WKWebView _clearOverrideLayoutParameters]): |
| |
| 2019-07-09 Chris Dumez <cdumez@apple.com> |
| |
| Fix integer type encoding / decoding in WKRemoteObjectCoder |
| https://bugs.webkit.org/show_bug.cgi?id=199643 |
| <rdar://problem/52732342> |
| |
| Reviewed by Anders Carlsson. |
| |
| As per [1], q / Q match to long long / unsigned long long, not long / unsigned long. |
| |
| [1] https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100 |
| |
| * Shared/API/Cocoa/WKRemoteObjectCoder.mm: |
| (encodeInvocationArguments): |
| (decodeInvocationArguments): |
| |
| 2019-07-09 Chris Dumez <cdumez@apple.com> |
| |
| Cleanup uses of NetworkProcess::m_sessionByConnection |
| https://bugs.webkit.org/show_bug.cgi?id=199586 |
| |
| Reviewed by Alex Christensen. |
| |
| Avoid double HashMap lookups and call add() instead of ensure() when appropriate. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::networkSessionByConnection const): |
| (WebKit::NetworkProcess::webPageWasAdded): |
| (WebKit::NetworkProcess::webProcessWasDisconnected): |
| |
| 2019-07-09 Saagar Jha <saagarjha@apple.com> |
| |
| WKObject's minimum object alignment needs to be larger |
| https://bugs.webkit.org/show_bug.cgi?id=199523 |
| |
| Reviewed by Alex Christensen. |
| |
| WKObject's wrapped objects are currently constructed at addresses aligned to 8-byte boundaries, but some |
| classes have more stringent requirements. By querying std::aligned_storage for the alignment of an object |
| larger than anything we can construct, we should be able to satisfy alignment for any of WebKit's types. |
| |
| * Shared/Cocoa/APIObject.mm: Use std::aligned_storage in conjunction with alignof to determine |
| minimumObjectAlignment, instead of hardcoding 8. |
| |
| 2019-07-09 Megan Gardner <megan_gardner@apple.com> |
| |
| Don't strip out spaces for personalized Autocorrections |
| https://bugs.webkit.org/show_bug.cgi?id=199476 |
| <rdar://problem/50782015> |
| |
| Reviewed by Dean Jackson. |
| |
| When inserting 'autocorrections' that are really predictive |
| text suggestions based on personal data, we would remove the space |
| before the suggestion, resulting in incorrect input. |
| To fix, do not remove a space when the autocorrected text and the text it is |
| replacing do not have any length. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::applyAutocorrectionInternal): |
| |
| 2019-07-09 Truitt Savell <tsavell@apple.com> |
| |
| Unreviewed, rolling out r247230. |
| |
| Caused storage/domstorage/localstorage/private-browsing- |
| affects-storage.html to crash with an assertion. |
| |
| Reverted changeset: |
| |
| "Cleanup uses of NetworkProcess::m_sessionByConnection" |
| https://bugs.webkit.org/show_bug.cgi?id=199586 |
| https://trac.webkit.org/changeset/247230 |
| |
| 2019-07-09 Youenn Fablet <youenn@apple.com> |
| |
| XHR CORS requests logged twice in the server |
| https://bugs.webkit.org/show_bug.cgi?id=199492 |
| <rdar://problem/52757558> |
| |
| Reviewed by Chris Dumez. |
| |
| Disable speculative loading for XHR and fetch. |
| These speculative requests might have specific headers that are no longer relevant |
| when reloading the page. This might then confuse servers. |
| |
| * NetworkProcess/cache/NetworkCache.cpp: |
| (WebKit::NetworkCache::makeStoreDecision): |
| (WebKit::NetworkCache::canRequestUseSpeculativeRevalidation): |
| (WebKit::NetworkCache::Cache::retrieve): |
| |
| 2019-07-09 Chris Dumez <cdumez@apple.com> |
| |
| Fix validation of method signature in decodeInvocation() |
| https://bugs.webkit.org/show_bug.cgi?id=199629 |
| <rdar://problem/52731659> |
| |
| Reviewed by Dan Bernstein. |
| |
| The decoder was mistakenly assigning remoteMethodSignature to localMethodSignature |
| before comparing remoteMethodSignature and localMethodSignature, thus making the |
| check useless. |
| |
| * Shared/API/Cocoa/WKRemoteObjectCoder.mm: |
| (decodeInvocation): |
| |
| 2019-07-09 Youenn Fablet <youenn@apple.com> |
| |
| Revert conditional WebPageProxy check to grant universal file read sandbox upon correct sandbox creation |
| https://bugs.webkit.org/show_bug.cgi?id=199622 |
| <rdar://problem/52357508> |
| |
| Reviewed by Alex Christensen. |
| |
| On iOS, the sandbox extension to '/' will usually fail, thus the universal file read sandbox is not granted. |
| This makes WebPageProxy cancel some file:// loads to the application own container. |
| As a short term fix, go back to previous behavior. |
| Covered by testing broken app identified in rdar://problem/52357508. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| |
| 2019-07-09 Sihui Liu <sihui_liu@apple.com> |
| |
| Only allow fetching and removing session credentials from WebsiteDataStore |
| https://bugs.webkit.org/show_bug.cgi?id=199385 |
| <rdar://problem/52622080> |
| |
| Reviewed by Alex Christensen. |
| |
| Stop sending an extra message to network process for fetching or removing persistent credentials. |
| |
| Also introduce a new SPI for clearing persistent credentials created in test. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::clearPermanentCredentialsForProtectionSpace): |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::originsWithPersistentCredentials): Deleted. |
| (WebKit::NetworkProcess::removeCredentialsWithOrigins): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::originsWithPersistentCredentials): Deleted. |
| (WebKit::NetworkProcess::removeCredentialsWithOrigins): Deleted. |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (-[WKProcessPool _clearPermanentCredentialsForProtectionSpace:completionHandler:]): |
| * UIProcess/API/Cocoa/WKProcessPoolPrivate.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::clearPermanentCredentialsForProtectionSpace): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::fetchDataAndApply): |
| (WebKit::computeWebProcessAccessTypeForDataRemoval): |
| (WebKit::WebsiteDataStore::removeData): |
| |
| 2019-07-09 Antoine Quint <graouts@apple.com> |
| |
| [Pointer Events] Scroll indicators should not show for scrollable content with touch-action: none |
| https://bugs.webkit.org/show_bug.cgi?id=199618 |
| |
| Reviewed by Simon Fraser. |
| |
| Even though we correctly didn't scroll when "touch-action: none" was specified on an element, we would only apply |
| scrolling constraints after the panning gesture was recognized and the backing UIScrollView would show its scroll |
| indicators. While this is correct when only "pan-x" or "pan-y" is specified, we should not show the scroll indicators |
| at all for "touch-action: none" since no scrolling should happen. |
| |
| To do this, we add a new method to the WKTouchActionGestureRecognizerDelegate protocol to indicate whether a given |
| gesture recognizer may pan content in the WKWebView. If the gesture recognizer is the top-level scroll view or one |
| created within the page to back "overflow: scroll" content or an iframe, we correctly make that gesture recognizer |
| fail to recognize if neither "pan-x" nor "pan-y" is specified for this touch identifier. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView gestureRecognizerMayPanWebView:]): |
| * UIProcess/ios/WKTouchActionGestureRecognizer.h: |
| * UIProcess/ios/WKTouchActionGestureRecognizer.mm: |
| (-[WKTouchActionGestureRecognizer canPreventGestureRecognizer:]): |
| |
| 2019-07-09 Chris Dumez <cdumez@apple.com> |
| |
| Validate reply block signature in [WKRemoteObjectRegistry _invokeMethod] |
| https://bugs.webkit.org/show_bug.cgi?id=199584 |
| <rdar://problem/46268249> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Validate reply block signature in [WKRemoteObjectRegistry _invokeMethod] for robustness. |
| |
| * Shared/API/Cocoa/_WKRemoteObjectRegistry.mm: |
| (validateReplyBlockSignature): |
| (-[_WKRemoteObjectRegistry _invokeMethod:]): |
| |
| 2019-07-09 Alex Christensen <achristensen@webkit.org> |
| |
| UserData::decode should return false when decoding an unrecognized type |
| https://bugs.webkit.org/show_bug.cgi?id=199598 |
| <rdar://52735138> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * Shared/UserData.cpp: |
| (WebKit::UserData::decode): |
| |
| 2019-07-08 Chris Dumez <cdumez@apple.com> |
| |
| Speculative fix for crashes under LocalStorageDatabaseTracker::databasePath() |
| https://bugs.webkit.org/show_bug.cgi?id=199599 |
| <rdar://problem/31169686> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Speculative fix for crashes under LocalStorageDatabaseTracker::databasePath(): |
| - Add new localStorageDirectory() getter to LocalStorageDatabaseTracker which |
| calls isolatedCopy() on m_localStorageDirectory before returning it. |
| Use it everywhere instead of m_localStorageDirectory since it is not safe |
| to use the same String from various threads like it was done. |
| - Move localStorageDirectory when constructing the LocalStorageDatabaseTracker |
| instead of copying it. |
| - Make sure that LocalStorageDatabaseTracker and StorageManager are both |
| constructed and destroyed on the main thread. |
| |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::NetworkSession): |
| * NetworkProcess/NetworkSession.h: |
| * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp: |
| (WebKit::LocalStorageDatabaseTracker::create): |
| (WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker): |
| (WebKit::LocalStorageDatabaseTracker::localStorageDirectory const): |
| (WebKit::LocalStorageDatabaseTracker::~LocalStorageDatabaseTracker): |
| (WebKit::LocalStorageDatabaseTracker::deleteAllDatabases): |
| (WebKit::LocalStorageDatabaseTracker::origins const): |
| (WebKit::LocalStorageDatabaseTracker::databasePath const): |
| * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h: |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::create): |
| (WebKit::StorageManager::StorageManager): |
| (WebKit::StorageManager::~StorageManager): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| * NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm: |
| (WebKit::LocalStorageDatabaseTracker::platformMaybeExcludeFromBackup const): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * NetworkProcess/curl/NetworkSessionCurl.cpp: |
| (WebKit::NetworkSessionCurl::NetworkSessionCurl): |
| * NetworkProcess/soup/NetworkSessionSoup.cpp: |
| (WebKit::NetworkSessionSoup::NetworkSessionSoup): |
| |
| 2019-07-08 Chris Dumez <cdumez@apple.com> |
| |
| Use WeakHashSet for WebUserContentControllerProxy::m_processes |
| https://bugs.webkit.org/show_bug.cgi?id=199591 |
| <rdar://problem/52798721> |
| |
| Reviewed by Youenn Fablet. |
| |
| Use WeakHashSet for WebUserContentControllerProxy::m_processses for safety. In theory, a WebProcessProxy could |
| stay in the map if we failed to call WebProcessProxy::shutDown() before destroying it. |
| |
| * UIProcess/UserContent/WebUserContentControllerProxy.cpp: |
| (WebKit::WebUserContentControllerProxy::~WebUserContentControllerProxy): |
| (WebKit::WebUserContentControllerProxy::addProcess): |
| (WebKit::WebUserContentControllerProxy::removeProcess): |
| (WebKit::WebUserContentControllerProxy::addUserContentWorldUse): |
| (WebKit::WebUserContentControllerProxy::removeUserContentWorldUses): |
| (WebKit::WebUserContentControllerProxy::addUserScript): |
| (WebKit::WebUserContentControllerProxy::removeUserScript): |
| (WebKit::WebUserContentControllerProxy::removeAllUserScripts): |
| (WebKit::WebUserContentControllerProxy::addUserStyleSheet): |
| (WebKit::WebUserContentControllerProxy::removeUserStyleSheet): |
| (WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets): |
| (WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler): |
| (WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName): |
| (WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers): |
| (WebKit::WebUserContentControllerProxy::addContentRuleList): |
| (WebKit::WebUserContentControllerProxy::removeContentRuleList): |
| (WebKit::WebUserContentControllerProxy::removeAllContentRuleLists): |
| * UIProcess/UserContent/WebUserContentControllerProxy.h: |
| (WebKit::WebUserContentControllerProxy::addNetworkProcess): |
| (WebKit::WebUserContentControllerProxy::removeNetworkProcess): |
| |
| 2019-07-08 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Support select all in non-editable element |
| https://bugs.webkit.org/show_bug.cgi?id=199257 |
| <rdar://problem/52553667> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Unless we are populating the callout bar always advertise that WebKit can perform Select All |
| when building with USE(UIKIT_KEYBOARD_ADDITIONS). This way you can press Command + A to select |
| all text even in a non-editable element just like you can on Mac. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView canPerformActionForWebView:withSender:]): |
| |
| 2019-07-08 Chris Dumez <cdumez@apple.com> |
| |
| Cleanup uses of NetworkProcess::m_sessionByConnection |
| https://bugs.webkit.org/show_bug.cgi?id=199586 |
| |
| Reviewed by Alex Christensen. |
| |
| Avoid double HashMap lookups and call add() instead of ensure() when appropriate. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::networkSessionByConnection const): |
| (WebKit::NetworkProcess::webPageWasAdded): |
| (WebKit::NetworkProcess::webProcessWasDisconnected): |
| |
| 2019-07-08 Tim Horton <timothy_horton@apple.com> |
| |
| WKWebView fails to render when another view uses CoreImage filters |
| https://bugs.webkit.org/show_bug.cgi?id=199488 |
| <rdar://problem/52695825> |
| |
| Reviewed by Dean Jackson. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::layerHostingModeDidChange): |
| Update m_layerHostingMode when it changes, even if we can't message |
| the Web Content process. This ensures that the next time we launch |
| a Web Content process, WebPageCreationParameters will have the correct |
| layer hosting mode, and is the usual pattern for such things. |
| |
| 2019-07-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iPadOS] Viewport pops while loading sohu.com, xinhuanet.com, and various other websites |
| https://bugs.webkit.org/show_bug.cgi?id=199575 |
| <rdar://problem/51842220> |
| |
| Reviewed by Simon Fraser. |
| |
| Currently, the shrink-to-fit-content heuristic added to scale desktop sites fit within the viewport on iPadOS |
| only runs during two intervals: after document load, and after page load. On very script-heavy websites, this |
| may cause a visible jump, as rendering may commence well before the document is finished parsing. |
| |
| To mitigate this, we move the first opportunity for the shrink-to-fit heuristic from after document, to right |
| after the page transition has completed (before we unfreeze the layer tree). |
| |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::didCompletePageTransition): |
| (WebKit::WebPage::didFinishDocumentLoad): Deleted. |
| |
| Remove this didFinishDocumentLoad hook, which was only used to schedule the shrink-to-fit timer. |
| |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::immediatelyShrinkToFitContent): |
| |
| m_mainFrame might be null after page transition completes, so we need to ensure immediatelyShrinkToFitContent is |
| robust in this scenario. |
| |
| 2019-07-08 Chris Dumez <cdumez@apple.com> |
| |
| Add threading assertion to WTF::CompletionHandler |
| https://bugs.webkit.org/show_bug.cgi?id=199516 |
| |
| Reviewed by Alex Christensen. |
| |
| Update some MessagePort-related code to use WTF::Function instead of WTF::CompletionHandler |
| since the callback is always called on the main thread, even when it was created on a |
| worker thread. Ideally, this code would be refactored so that the callback gets called on |
| the worker thread directly. |
| |
| * UIProcess/UIMessagePortChannelProvider.cpp: |
| (WebKit::UIMessagePortChannelProvider::checkRemotePortForActivity): |
| * UIProcess/UIMessagePortChannelProvider.h: |
| * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp: |
| (WebKit::WebMessagePortChannelProvider::checkRemotePortForActivity): |
| * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h: |
| |
| 2019-07-08 Antoine Quint <graouts@apple.com> |
| |
| [Pointer Events] "touch-action: none" does not prevent double-tap-to-zoom |
| https://bugs.webkit.org/show_bug.cgi?id=199571 |
| <rdar://problem/51715002> |
| |
| Reviewed by Wenson Hsieh. |
| |
| We add a new WKTouchActionGestureRecognizerDelegate method to check whether a gesture recognizer may lead to |
| zooming the page as a result of double-tapping, which can be caused by two different gesture recognizers |
| managed by WKContentViewInteraction. If that delegate method returns true and we have "touch-action: none" |
| set for this touch, we cause those gesture recognizers to fail and prevent double-tap-to-zoom behavior. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView gestureRecognizerMayDoubleTapToZoomWebView:]): |
| * UIProcess/ios/WKTouchActionGestureRecognizer.h: |
| * UIProcess/ios/WKTouchActionGestureRecognizer.mm: |
| (-[WKTouchActionGestureRecognizer canPreventGestureRecognizer:]): |
| |
| 2019-07-08 Per Arne Vollan <pvollan@apple.com> |
| |
| [iOS] WebContent processes should not globally allow mach lookup to the AX server. |
| https://bugs.webkit.org/show_bug.cgi?id=199386 |
| <rdar://problem/52487468> |
| |
| Reviewed by Chris Fleizach. |
| |
| Instead, a mach extension for this service should be issued to the WebContent process. This has already been implemented. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2019-07-08 Claudio Saavedra <csaavedra@igalia.com> |
| |
| REGRESSION(r246671): [WPE][GTK] Crash in NetworkProcess since the DNS cache landed |
| https://bugs.webkit.org/show_bug.cgi?id=199572 |
| |
| Reviewed by Michael Catanzaro. |
| |
| The GError coming from the wrapped resolver shouldn't be freed, |
| but passed onto the caller. |
| |
| * NetworkProcess/glib/WebKitCachedResolver.cpp: |
| (webkitCachedResolverLookupByNameAsync): |
| (webkitCachedResolverLookupByNameWithFlagsAsync): |
| |
| 2019-07-07 Antoine Quint <graouts@apple.com> |
| |
| [Pointer Events] touch-action should affect the behavior of pinch-to-zoom to show tabs in Safari |
| https://bugs.webkit.org/show_bug.cgi?id=199560 |
| <rdar://problem/52742265> |
| |
| Reviewed by Dean Jackson. |
| |
| There are other UIPinchGestureRecognizer objects that may lead to pinch-to-zoom behavior, for instance pinching |
| out to show open tabs in Safari on iOS. We add a new WKUIDelegatePrivate method that will allow Safari to indicate |
| that a UIPinchGestureRecognizer considered for prevention would lead to pinch-to-zoom behavior. |
| |
| * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView gestureRecognizerMayPinchToZoomWebView:]): |
| |
| 2019-07-08 Antoine Quint <graouts@apple.com> |
| |
| [Pointer Events] Enable only on the most recent version of the supported iOS family |
| https://bugs.webkit.org/show_bug.cgi?id=199562 |
| <rdar://problem/52766511> |
| |
| Reviewed by Dean Jackson. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView cancelPointersForGestureRecognizer:]): |
| (-[WKContentView activeTouchIdentifierForGestureRecognizer:]): |
| (-[WKContentView touchActionActiveTouches]): |
| * UIProcess/ios/WKSyntheticTapGestureRecognizer.m: |
| (-[WKSyntheticTapGestureRecognizer touchesEnded:withEvent:]): |
| * UIProcess/ios/WKTouchActionGestureRecognizer.h: |
| * UIProcess/ios/WKTouchActionGestureRecognizer.mm: |
| (-[WKTouchActionGestureRecognizer canPreventGestureRecognizer:]): |
| |
| 2019-07-08 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [GTK] ViewGestureController constructor leaves m_direction uninitialized |
| https://bugs.webkit.org/show_bug.cgi?id=199532 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| This is harmless because it should never be read until after it's initialized, but still not |
| robust. Fix it by assuming Back as the default value until the first swipe begins. |
| |
| * UIProcess/ViewGestureController.h: |
| |
| 2019-07-07 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentChangeObserver] Difficult to control videos on iqiyi.com as the actions are mouse hover |
| https://bugs.webkit.org/show_bug.cgi?id=199542 |
| <rdar://problem/51886813> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleSyntheticClick): |
| |
| 2019-07-06 Antoine Quint <graouts@apple.com> |
| |
| [Pointer Events] Use a gesture recognizer to prevent pinch-to-zoom behavior |
| https://bugs.webkit.org/show_bug.cgi?id=199543 |
| |
| Reviewed by Dean Jackson. |
| |
| We used to set the "enabled" property on the main UIScrollView's UIPinchGestureRecognizer to disable pinch-to-zoom |
| behavior based on the "touch-action" CSS property. This was sub-optimal since this gesture recognizer can be publicly |
| accessible by third-party developers, but also because it set state instead of a run-time solution. |
| |
| We now introduce a new WKTouchActionGestureRecognizer dedicated to preventing clearly identified gesture recognizers |
| from being recognized to disable some built-in behavior. As a new touch starts, we record the computed touch-action |
| property for the given touch identifier on the WKTouchActionGestureRecognizer, then WKTouchActionGestureRecognizer |
| determines, by implementing -[canPreventGestureRecognizer:], whether the possibly-prevented gesture recognizer |
| is known to lead to a pinch-to-zoom behavior and whether it contains a touch that should prevent it. |
| |
| To support the WKTouchActionGestureRecognizer, WKContentViewInteraction implements the new WKTouchActionGestureRecognizerDelegate |
| protocol to indicate whether the possibly-prevented gesture recognizer is the main UIScrollView's UIPinchGestureRecognizer. |
| |
| No new test since this changes the implementation of existing behavior. |
| |
| * SourcesCocoa.txt: |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView cleanupInteraction]): |
| (-[WKContentView _removeDefaultGestureRecognizers]): |
| (-[WKContentView _addDefaultGestureRecognizers]): |
| (-[WKContentView _handleTouchActionsForTouchEvent:]): |
| (-[WKContentView gestureRecognizerMayPinchToZoomWebView:]): |
| (-[WKContentView touchActionActiveTouches]): |
| * UIProcess/ios/WKTouchActionGestureRecognizer.h: Added. |
| * UIProcess/ios/WKTouchActionGestureRecognizer.mm: Added. |
| (-[WKTouchActionGestureRecognizer initWithTouchActionDelegate:]): |
| (-[WKTouchActionGestureRecognizer setTouchActions:forTouchIdentifier:]): |
| (-[WKTouchActionGestureRecognizer clearTouchActionsForTouchIdentifier:]): |
| (-[WKTouchActionGestureRecognizer touchesBegan:withEvent:]): |
| (-[WKTouchActionGestureRecognizer touchesMoved:withEvent:]): |
| (-[WKTouchActionGestureRecognizer touchesEnded:withEvent:]): |
| (-[WKTouchActionGestureRecognizer touchesCancelled:withEvent:]): |
| (-[WKTouchActionGestureRecognizer _updateState]): |
| (-[WKTouchActionGestureRecognizer canBePreventedByGestureRecognizer:]): |
| (-[WKTouchActionGestureRecognizer canPreventGestureRecognizer:]): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-07-06 Chris Fleizach <cfleizach@apple.com> |
| |
| AX: CrashTracer: com.apple.WebKit.WebContent at WebKit: WebKit::WebSpeechSynthesisClient::speak |
| https://bugs.webkit.org/show_bug.cgi?id=199435 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Ensure we don't access null observers in speech callbacks. |
| |
| * WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp: |
| (WebKit::WebSpeechSynthesisClient::voiceList): |
| (WebKit::WebSpeechSynthesisClient::speak): |
| (WebKit::WebSpeechSynthesisClient::pause): |
| (WebKit::WebSpeechSynthesisClient::resume): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::speakingErrorOccurred): |
| (WebKit::WebPage::boundaryEventOccurred): |
| (WebKit::WebPage::voicesDidChange): |
| |
| 2019-07-05 Chris Dumez <cdumez@apple.com> |
| |
| Fix thread safety bug in WebResourceLoadStatisticsTelemetry::calculateAndSubmit() |
| https://bugs.webkit.org/show_bug.cgi?id=199536 |
| |
| Reviewed by Youenn Fablet. |
| |
| The resourceLoadStatisticsStore is an object that is created / used / destroyed on the background |
| queue. It is therefore not safe to create a WeakPtr for it and use that WeakPtr on the main thread. |
| |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp: |
| (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit): |
| |
| 2019-07-05 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Unreviewed, fix -Wswitch warning |
| |
| We don't support HTTPCookieAcceptPolicy::ExclusivelyFromMainDocumentDomain. |
| |
| Fun fact, soup's OnlyFromMainDocumentDomain functions the same as Apple's |
| ExclusivelyFromMainDocumentDomain. These should be renamed.... |
| |
| * NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp: |
| (WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy): |
| |
| 2019-07-05 Dean Jackson <dino@apple.com> |
| |
| [iOS] Context Menu - Add to Reading List does nothing |
| https://bugs.webkit.org/show_bug.cgi?id=199504 |
| <rdar://problem/52554137> |
| |
| Reviewed by Anders Carlsson. |
| |
| We were holding weak references to the _WKElementAction in |
| the handler provided to UIAction. By the time the handler was |
| called, the object had been deallocated. |
| |
| * UIProcess/API/Cocoa/_WKElementAction.mm: |
| (-[_WKElementAction uiActionForElementInfo:]): Use strong references in handler. |
| |
| 2019-07-05 Ryosuke Niwa <rniwa@webkit.org> |
| |
| [iOS] Crash in WebKit::WebPage::positionInformation via Range::startPosition |
| https://bugs.webkit.org/show_bug.cgi?id=199503 |
| |
| Reviewed by Wenson Hsieh. |
| |
| The crash was caused because focusedElementPositionInformation asssumes Editor::compositionRange is not null |
| whenever Editor::hasComposition returns true, which is not necessary the case when Editor::m_compositionNode |
| contains no text (data is of length 0). |
| |
| Fixed the crash by adding an early return for when Editor::compositionRange returns nullptr. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::focusedElementPositionInformation): |
| |
| 2019-07-05 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentChangeObserver] REGRESSION (r247015): facebook photo/video upload button is unresponsive to user interaction. |
| https://bugs.webkit.org/show_bug.cgi?id=199502 |
| <rdar://problem/52547473> |
| |
| Reviewed by Simon Fraser. |
| |
| Apparently it's a common practice to put transparent elements over visible click targets (button like divs) and use the invisible |
| elements to catch the user input (e.g. Facebook's Photo/Video button). |
| This patch modifies the original "do not trigger click on invisible targets" heuristic to a more restrictive "do not trigger |
| click if the click target was previously hidden and became visible through touch start". |
| If this still breaks some use cases, we could turn it into YouTube quirk. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleSyntheticClick): |
| |
| 2019-07-05 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r247123. |
| |
| Caused TestWebKitAPI.Challenge.BasicProposedCredential to |
| fail. |
| |
| Reverted changeset: |
| |
| "Only allow fetching and removing session credentials from |
| WebsiteDataStore" |
| https://bugs.webkit.org/show_bug.cgi?id=199385 |
| https://trac.webkit.org/changeset/247123 |
| |
| 2019-07-05 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Click events on outer page are not being dispatched correctly after touch-zooming within an iframe |
| https://bugs.webkit.org/show_bug.cgi?id=185001 |
| <rdar://problem/40569615> |
| |
| Reviewed by Simon Fraser. |
| |
| Mitigations introduced in r227759 prevent a touch inside a document of origin A to result in a click event being |
| dispatched on an element inside a document of origin B. It accomplishes this by keeping track of the security |
| origin of the last touch via m_potentialTapSecurityOrigin on WebPage. However, there exists a corner case in |
| which m_potentialTapSecurityOrigin, set after touching a document in a subframe, may persist even after the user |
| has finished interacting, causing taps in subsequent documents to not result in synthetic click events due to |
| mismatched potential tap origins. |
| |
| This may happen if the first user gesture happens inside an element in a subframe with touch event handlers, but |
| no click event handler (and the touch is additionally not over some clickable element). In this case, |
| m_potentialTapNode is set to null in WebPage::potentialTapAtPosition, and when we consult it in |
| WebPage::commitPotentialTap, we just end up calling commitPotentialTapFailed(); and return early. This means |
| that m_potentialTapNode, m_potentialTapLocation, and (importantly) m_potentialTapSecurityOrigin are not reset. |
| This causes subsequent taps in the top-level document to never dispatch click events, if the security origin |
| does not match with that of the subframe. |
| |
| To fix this, we add a new async IPC message from the UI process to the web process to ensure that our current |
| security origin is reset before attempting to handle a tap. |
| |
| Test: http/tests/events/touch/ios/click-after-handling-touch-in-cross-origin-frame.https.html |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::resetPotentialTapSecurityOrigin): |
| |
| Reset any stale potential tap security origin if needed. |
| |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _webTouchEventsRecognized:]): |
| |
| Send the new IPC message when starting a touch. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::resetPotentialTapSecurityOrigin): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2019-07-05 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Touching media controls sometimes shows software keyboard |
| https://bugs.webkit.org/show_bug.cgi?id=199490 |
| <rdar://problem/52076270> |
| |
| Reviewed by Eric Carlson. |
| |
| In r243044, we added a compatibility hack for Google Slides (and other G-suite properties) to allow the on- |
| screen keyboard to show up after a prevented touch event in the case where an element was already focused, even |
| if the touch event handler doesn't explicitly refocus the element. However, this means that if a regular text |
| field (or other form control) has been programmatically focused, then interacting with any other element that |
| prevents default on touchstart will cause us to show the keyboard for that focused element. |
| |
| To mitigate this, only fall down this refocusing codepath in the case where the focused element is a hidden |
| editable element (in the style of many Google productivity web apps). For non-hidden editable elements that are |
| already focused, this refocusing logic is not necessary, since the user should be able to interact with the |
| control to show the keyboard anyways; for hidden editable areas, this compatibility hack is actually needed, |
| since there is typically no other way for a user to focus these elements and show an on-screen keyboard. |
| |
| Tests: fast/events/touch/ios/show-keyboard-after-preventing-touchstart.html |
| fast/events/touch/ios/do-not-show-keyboard-after-preventing-touchstart.html |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::dispatchTouchEvent): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::isTransparentOrFullyClipped const): |
| |
| Renamed from enclosingLayerIsTransparentOrFullyClipped, and pulled out into a private helper method. |
| |
| (WebKit::WebPage::platformEditorState const): |
| (WebKit::WebPage::requestEvasionRectsAboveSelection): |
| (WebKit::WebPage::getFocusedElementInformation): |
| (WebKit::enclosingLayerIsTransparentOrFullyClipped): Deleted. |
| |
| 2019-07-04 Chris Dumez <cdumez@apple.com> |
| |
| Simplify logic that handles registering WebProcessProxy objects with their WebsiteDataStore |
| https://bugs.webkit.org/show_bug.cgi?id=199412 |
| <rdar://problem/51899751> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Simplify logic that handles registering WebProcessProxy objects with their WebsiteDataStore to make |
| it more maintainable and less error-prone (avoid bugs like <rdar://problem/51899751>). |
| |
| The following changes were made: |
| 1. The WebProcess now registers / unregisters itself directly with its WebsiteDataStore when needed, |
| instead of having the WebPageProxy/ProvisionalPageProxy be in charge of calling the right |
| WebProcessLifetimeTracker / WebProcessLifetimeObserver abstractions. |
| 2. The WebProcessLifetimeTracker / WebProcessLifetimeObserver abstractions were dropped. The |
| WebsiteDataStore was the only observer. |
| 3. The WebProcessProxy is now registered with its WebsiteDataStore as soon as it has a page (provisional |
| or not) instead of waiting until the process has finished launching. This simplifies the logic a |
| lot and waiting until the process has launched is not needed by the WebsiteDataStore. |
| |
| |
| * Sources.txt: |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::ProvisionalPageProxy): |
| (WebKit::ProvisionalPageProxy::~ProvisionalPageProxy): |
| * UIProcess/ProvisionalPageProxy.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::m_resetRecentCrashCountTimer): |
| (WebKit::WebPageProxy::finishAttachingToWebProcess): |
| (WebKit::WebPageProxy::close): |
| (WebKit::WebPageProxy::processDidTerminate): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/WebProcessCache.cpp: |
| (WebKit::WebProcessCache::CachedProcess::CachedProcess): |
| * UIProcess/WebProcessLifetimeObserver.cpp: Removed. |
| * UIProcess/WebProcessLifetimeObserver.h: Removed. |
| * UIProcess/WebProcessLifetimeTracker.cpp: Removed. |
| * UIProcess/WebProcessLifetimeTracker.h: Removed. |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::setWebsiteDataStore): |
| (WebKit::WebProcessProxy::updateRegistrationWithDataStore): |
| (WebKit::WebProcessProxy::addProvisionalPageProxy): |
| (WebKit::WebProcessProxy::removeProvisionalPageProxy): |
| (WebKit::WebProcessProxy::connectionWillOpen): |
| (WebKit::WebProcessProxy::processWillShutDown): |
| (WebKit::WebProcessProxy::addExistingWebPage): |
| (WebKit::WebProcessProxy::removeWebPage): |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::registerProcess): |
| (WebKit::WebsiteDataStore::unregisterProcess): |
| |
| (WebKit::WebsiteDataStore::processPoolForCookieStorageOperations): |
| Drop change that was added in r246097 to work around the fact that WebProcessProxy objects |
| were only registering themselves with their data store after their process had finished |
| launching. |
| |
| (WebKit::WebsiteDataStore::fetchDataAndApply): |
| (WebKit::WebsiteDataStore::removeData): |
| (WebKit::WebsiteDataStore::processPools const): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| (WebKit::WebsiteDataStore::processes const): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-07-04 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentChangeObserver] Limit mouseOut dispatching after synthetic click to YouTube.com |
| https://bugs.webkit.org/show_bug.cgi?id=199497 |
| <rdar://problem/52361019> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::completeSyntheticClick): |
| |
| 2019-07-03 Ryosuke Niwa <rniwa@webkit.org> |
| |
| Crash in WebDragClient::startDrag because GraphicsContext is nullptr |
| https://bugs.webkit.org/show_bug.cgi?id=199491 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Added a nullptr check. |
| |
| Unfortunately no new tests since we don't have a reproducible test case. |
| |
| * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm: |
| (WebKit::convertImageToBitmap): |
| |
| 2019-07-03 Tim Horton <timothy_horton@apple.com> |
| |
| Data Detectors are not working for context menus in clients that use the legacy preview API |
| https://bugs.webkit.org/show_bug.cgi?id=199486 |
| <rdar://problem/52117322> |
| |
| Reviewed by Dean Jackson. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView assignLegacyDataForContextMenuInteraction]): |
| The Data Detectors code in the legacy preview path is guarded by a |
| #define that did not survive upstreaming. Remove it. |
| |
| 2019-07-03 Chris Dumez <cdumez@apple.com> |
| |
| StorageManager::suspend() sometimes fails to call its completion handler |
| https://bugs.webkit.org/show_bug.cgi?id=199482 |
| |
| Reviewed by Youenn Fablet. |
| |
| Make sure the completion handler gets called in the early return cases. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::suspend): |
| |
| 2019-07-03 Youenn Fablet <youenn@apple.com> |
| |
| Make CacheStorage::Engine directory listing operations in a background thread |
| https://bugs.webkit.org/show_bug.cgi?id=199470 |
| |
| Reviewed by Chris Dumez. |
| |
| Use the io work queue to get the list of directories. |
| Then go back to main thread and trigger clear/fetch operation as currently done. |
| |
| * NetworkProcess/cache/CacheStorageEngine.cpp: |
| (WebKit::CacheStorage::ReadOriginsTaskCounter::create): |
| (WebKit::CacheStorage::ReadOriginsTaskCounter::ReadOriginsTaskCounter): |
| (WebKit::CacheStorage::Engine::getDirectories): |
| (WebKit::CacheStorage::Engine::fetchEntries): |
| (WebKit::CacheStorage::Engine::fetchDirectoryEntries): |
| (WebKit::CacheStorage::Engine::clearCachesForOriginFromDisk): |
| (WebKit::CacheStorage::Engine::clearCachesForOriginFromDirectories): |
| * NetworkProcess/cache/CacheStorageEngine.h: |
| |
| 2019-07-03 Sihui Liu <sihui_liu@apple.com> |
| |
| Only allow fetching and removing session credentials from WebsiteDataStore |
| https://bugs.webkit.org/show_bug.cgi?id=199385 |
| |
| Reviewed by Alex Christensen. |
| |
| Stop sending an extra message to network process for fetching or removing persistent credentials. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::originsWithPersistentCredentials): Deleted. |
| (WebKit::NetworkProcess::removeCredentialsWithOrigins): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::originsWithPersistentCredentials): Deleted. |
| (WebKit::NetworkProcess::removeCredentialsWithOrigins): Deleted. |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::fetchDataAndApply): |
| (WebKit::computeWebProcessAccessTypeForDataRemoval): |
| (WebKit::WebsiteDataStore::removeData): |
| |
| 2019-07-03 Tim Horton <timothy_horton@apple.com> |
| |
| UI process exception when dragging an <attachment> with no content type |
| https://bugs.webkit.org/show_bug.cgi?id=199480 |
| <rdar://problem/44351353> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/API/Cocoa/APIAttachmentCocoa.mm: |
| (API::Attachment::mimeType const): |
| (API::Attachment::utiType const): |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::startDrag): |
| Make null or empty contentType fail the drag, instead of crashing. |
| |
| 2019-07-03 Chris Dumez <cdumez@apple.com> |
| |
| Clarify threading model for WebResourceLoadStatisticsStore::dumpResourceLoadStatistics() |
| https://bugs.webkit.org/show_bug.cgi?id=199468 |
| |
| Reviewed by Youenn Fablet. |
| |
| Our convention is that the WebResourceLoadStatisticsStore is always created, used and |
| destroyed on the main thread, while the ResourceLoadStatisticsStore is always created, |
| used and destroyed on the background queue. |
| |
| r245517 broke this convention by introducing a tryDumpResourceLoadStatistics() method |
| to WebResourceLoadStatisticsStore which gets called on the background queue. This patch |
| fixes this since this has been a huge source of thread-safety bugs in the past. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::dumpResourceLoadStatistics): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::dumpResourceLoadStatistics): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h: |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::removeDataRecords): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.h: |
| (WebKit::ResourceLoadStatisticsStore::dataRecordsBeingRemoved const): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::dumpResourceLoadStatistics): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| |
| 2019-07-03 Jonathan Bedard <jbedard@apple.com> |
| |
| [Catalina] Enable WebKit build |
| https://bugs.webkit.org/show_bug.cgi?id=199209 |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.h: AppSSO is SPI. |
| * WebKit2Prefix.h: SecTask.h declares SecTaskGetCodeSignStatus(...) unavailable |
| on Mac, exclude this header. |
| |
| 2019-07-03 Daniel Bates <dabates@apple.com> |
| |
| REGRESSION (r246817): fast/events/ios/key-events-comprehensive/key-events-{control, control-shift}.html are failing |
| https://bugs.webkit.org/show_bug.cgi?id=199465 |
| <rdar://problem/52613496> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Don't advertise that WebKit can perform cursor movements when there isn't some kind of selection. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView canPerformAction:withSender:]): |
| |
| 2019-07-03 Chris Dumez <cdumez@apple.com> |
| |
| Fix a couple of thread safety issues in ResourceLoadStatisticsStore |
| https://bugs.webkit.org/show_bug.cgi?id=199463 |
| |
| Reviewed by Alex Christensen. |
| |
| The ResourceLoadStatisticsStore object is constructed / used / destroyed on a background queue. |
| It is therefore not safe to use a WeakPtr to the ResourceLoadStatisticsStore on the main thread. |
| |
| The safe pattern is to have the ResourceLoadStatisticsStore capture a Ref<> of its m_store before |
| dispatching to the main thread and use this store on the main thread instead of weakThis->m_store. |
| ResourceLoadStatisticsStore's m_store is constructed / used / destroyed on the main thread. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::removeDataRecords): |
| (WebKit::ResourceLoadStatisticsStore::processStatisticsAndDataRecords): |
| |
| 2019-07-03 Youenn Fablet <youenn@apple.com> |
| |
| Isolate CacheStorage::Engine path when hopping to a background thread |
| https://bugs.webkit.org/show_bug.cgi?id=199461 |
| |
| Reviewed by Chris Dumez. |
| |
| * NetworkProcess/cache/CacheStorageEngine.cpp: |
| (WebKit::CacheStorage::Engine::initialize): |
| |
| 2019-07-03 Jer Noble <jer.noble@apple.com> |
| |
| Unreviewed, rolling out r246053. |
| |
| This changeset caused media playback to break when the hosting app was backgrounded. |
| |
| * UIProcess/ApplicationStateTracker.mm: |
| * UIProcess/ios/ProcessAssertionIOS.mm: |
| (-[WKProcessAssertionBackgroundTaskManager init]): |
| (-[WKProcessAssertionBackgroundTaskManager _scheduleReleaseTask]): |
| (-[WKProcessAssertionBackgroundTaskManager _cancelPendingReleaseTask]): |
| (-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]): |
| (-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]): |
| |
| 2019-07-03 Alex Christensen <achristensen@webkit.org> |
| |
| Use smarter pointers in WKDownloadProgress |
| https://bugs.webkit.org/show_bug.cgi?id=199456 |
| <rdar://problem/51392926> |
| |
| Reviewed by Chris Dumez. |
| |
| There's still a problem related to our use of raw pointers. Let's just not use raw pointers. |
| |
| * NetworkProcess/Downloads/Download.h: |
| * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm: |
| (WebKit::Download::publishProgress): |
| * NetworkProcess/Downloads/cocoa/WKDownloadProgress.h: |
| * NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm: |
| (-[WKDownloadProgress performCancel]): |
| (-[WKDownloadProgress initWithDownloadTask:download:URL:sandboxExtension:]): |
| (-[WKDownloadProgress progressCancelled]): Deleted. |
| |
| 2019-07-03 Sam Weinig <weinig@apple.com> |
| |
| Adopt simple structured bindings in more places |
| https://bugs.webkit.org/show_bug.cgi?id=199247 |
| |
| Reviewed by Alex Christensen. |
| |
| Replaces simple uses of std::tie() with structured bindings. Does not touch |
| uses of std::tie() that are not initial declarations, use std::ignore or in |
| case where the binding is captured by a lambda, as structured bindings don't |
| work for those cases yet. |
| |
| * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp: |
| (WebKit::NetworkCache::printSpeculativeLoadingDiagnosticMessageCounts): |
| * NetworkProcess/cache/PrefetchCache.cpp: |
| (WebKit::PrefetchCache::clearExpiredEntries): |
| * Platform/IPC/MessageReceiverMap.cpp: |
| (IPC::MessageReceiverMap::removeMessageReceiver): |
| * UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: |
| (WebKit::PlaybackSessionManagerProxy::invalidate): |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: |
| (WebKit::VideoFullscreenManagerProxy::invalidate): |
| (WebKit::VideoFullscreenManagerProxy::requestHideAndExitFullscreen): |
| (WebKit::VideoFullscreenManagerProxy::hasMode const): |
| (WebKit::VideoFullscreenManagerProxy::mayAutomaticallyShowVideoPictureInPicture const): |
| (WebKit::VideoFullscreenManagerProxy::isPlayingVideoInEnhancedFullscreen const): |
| (WebKit::VideoFullscreenManagerProxy::applicationDidBecomeActive): |
| (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID): |
| (WebKit::VideoFullscreenManagerProxy::didCleanupFullscreen): |
| * UIProcess/ios/SmartMagnificationController.mm: |
| (WebKit::SmartMagnificationController::zoomFactorForTargetRect): |
| (WebKit::SmartMagnificationController::didCollectGeometryForSmartMagnificationGesture): |
| (WebKit::SmartMagnificationController::magnify): |
| * WebProcess/Plugins/PDF/PDFPlugin.mm: |
| (WebKit:: const): |
| * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: |
| (WebKit::WebPage::performDictionaryLookupAtLocation): |
| (WebKit::WebPage::performDictionaryLookupForSelection): |
| * WebProcess/cocoa/PlaybackSessionManager.mm: |
| (WebKit::PlaybackSessionManager::~PlaybackSessionManager): |
| (WebKit::PlaybackSessionManager::removeContext): |
| * WebProcess/cocoa/VideoFullscreenManager.mm: |
| (WebKit::VideoFullscreenManager::~VideoFullscreenManager): |
| (WebKit::VideoFullscreenManager::removeContext): |
| (WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement): |
| (WebKit::VideoFullscreenManager::requestVideoContentLayer): |
| (WebKit::VideoFullscreenManager::didSetupFullscreen): |
| (WebKit::VideoFullscreenManager::willExitFullscreen): |
| (WebKit::VideoFullscreenManager::didEnterFullscreen): |
| (WebKit::VideoFullscreenManager::didCleanupFullscreen): |
| (WebKit::VideoFullscreenManager::setVideoLayerFrameFenced): |
| |
| 2019-07-03 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentChangeObserver] REGRESSION (r244356): Drop down menus collapse without user input - Ebay.com |
| https://bugs.webkit.org/show_bug.cgi?id=199457 |
| <rdar://problem/52386563> |
| |
| Reviewed by Simon Fraser. |
| |
| There's a fixed, 32ms window for observing content changes after the tap is committed. r244356 introduced the fast-click behavior on form elements by omitting this fixed window and |
| dispatch the synthetic click on the target node. |
| This patch preserves the fast-click behavior, but now we stay at hover if the mouseMove event triggers a synchronous actionable visiblity change (as opposed to always proceed with click). |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleSyntheticClick): |
| |
| 2019-07-03 Patrick Griffis <pgriffis@igalia.com> |
| |
| [GTK][WPE] Remove Flatpak sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=199416 |
| |
| Reviewed by Michael Catanzaro. |
| |
| The flatpak-spawn based sandbox was only a proof of concept and |
| lacks flexibility for our needs so we ended up using it with very |
| permissive permissions and it still imposed limitations that our main |
| bubblewrap sandbox didn't have. |
| |
| So in order to get as many applications using the sandbox as possible we |
| will just remove this for now and focus on bubblewrap. At some point |
| it may be possible to improve flatpak-spawn to fit our needs. |
| |
| * SourcesGTK.txt: |
| * SourcesWPE.txt: |
| * UIProcess/Launcher/glib/FlatpakLauncher.cpp: Removed. |
| * UIProcess/Launcher/glib/FlatpakLauncher.h: Removed. |
| * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: |
| (WebKit::ProcessLauncher::launchProcess): |
| |
| 2019-07-03 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r246616. |
| |
| Caused http/tests/inspector/network/har/har-page.html to fail |
| on Catalina. |
| |
| Reverted changeset: |
| |
| "Web Inspector: Network: replace CFNetwork SPI with new API |
| where able" |
| https://bugs.webkit.org/show_bug.cgi?id=198762 |
| https://trac.webkit.org/changeset/246616 |
| |
| 2019-07-03 Chris Dumez <cdumez@apple.com> |
| |
| Crash under WTF::RefCounted<WebKit::TaskCounter>::deref() |
| https://bugs.webkit.org/show_bug.cgi?id=199453 |
| <rdar://problem/51991477> |
| |
| Reviewed by Youenn Fablet. |
| |
| The crash was caused by StorageManager::suspend() getting called on the main thread but calling |
| its completion handler on a background queue. The completion handler was capturing a TaskCounter |
| object which is RefCounted (not ThreadSafeRefCounted). |
| |
| Address the issue by making sure StorageManager::suspend() calls its completion handler on the |
| main thread. Also get rid of TaskCounter and use a WTF::CallbackAggregator instead. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::actualPrepareToSuspend): |
| (WebKit::TaskCounter::TaskCounter): Deleted. |
| (WebKit::TaskCounter::~TaskCounter): Deleted. |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::suspend): |
| |
| 2019-07-03 Youenn Fablet <youenn@apple.com> |
| |
| Make sure to cross-thread copy in StorageManager when hopping back to the main thread |
| https://bugs.webkit.org/show_bug.cgi?id=199423 |
| |
| Reviewed by Chris Dumez. |
| |
| Make sure to isolate copy some strings that may not be isolated in case of ephemeral sessions. |
| Small refactoring to use crossThreadCopy instead of doing vector copy ourselves. |
| |
| * NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h: |
| (WebKit::LocalStorageDatabaseTracker::OriginDetails::isolatedCopy const): |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::deleteSessionStorageEntriesForOrigins): |
| (WebKit::StorageManager::getLocalStorageOrigins): |
| (WebKit::StorageManager::getLocalStorageOriginDetails): |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): |
| |
| 2019-07-02 Joonghun Park <jh718.park@samsung.com> |
| |
| Unreviewed. Fix build break introduced in r247058. |
| |
| * UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: |
| |
| 2019-07-02 Youenn Fablet <youenn@apple.com> |
| |
| StorageManager does not need to be a WorkQueueMessageReceiver anymore |
| https://bugs.webkit.org/show_bug.cgi?id=199421 |
| |
| Reviewed by Chris Dumez. |
| |
| * NetworkProcess/WebStorage/StorageManager.h: |
| |
| 2019-07-02 Chris Dumez <cdumez@apple.com> |
| |
| ThreadSafeRefCounted<DestructionThread::Main> is not safe to use in the UIProcess |
| https://bugs.webkit.org/show_bug.cgi?id=199420 |
| <rdar://problem/52289717> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| Update IPC::Connection and DeviceIdHashSaltStorage to use DestructionThread::MainRunLoop |
| instead of DestructionThread::Main, since both classes are used in the UIProcess. |
| |
| Using DestructionThread::Main is not safe in the UIProcess because its implementation relies |
| on isMainThread() / callOnMainThread(). Those get confused about which thread is the main |
| thread when an application uses both WK1 and WK2. |
| |
| * Platform/IPC/Connection.h: |
| * UIProcess/DeviceIdHashSaltStorage.h: |
| |
| 2019-07-02 Patrick Griffis <pgriffis@igalia.com> |
| |
| [GTK][WPE] Explicitly blacklist problematic directories for sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=199367 |
| |
| Reviewed by Michael Catanzaro. |
| |
| There are some directories that simply do not make sense to bind into the sandbox |
| and will only cause issues such as `/proc` so lets just block them. |
| |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (path_is_not_blacklisted): |
| (webkit_web_context_add_path_to_sandbox): |
| |
| 2019-07-02 Tim Horton <timothy_horton@apple.com> |
| |
| REGRESSION (r243240): Unable to swipe back in Safari |
| https://bugs.webkit.org/show_bug.cgi?id=199394 |
| <rdar://problem/51137447> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _processDidExit]): |
| r243240 started nilling out the ViewGestureController, but we don't actually |
| expect that; the only time WKWebView's ViewGestureController goes away |
| is if the client turns off the gestures... and so nothing ever puts it back. |
| Instead, just always disconnect, don't nil it out. |
| |
| 2019-07-02 Chris Dumez <cdumez@apple.com> |
| |
| Protect NetworkProcess::m_networkSessions against corruption |
| https://bugs.webkit.org/show_bug.cgi?id=199418 |
| <rdar://problem/50614019> |
| |
| Reviewed by Youenn Fablet. |
| |
| I believe the most likely reason for the crash at <rdar://problem/50614019> is that NetworkProcess::m_networkSessions |
| is getting corrupted and is returning us a bad pointer. |
| |
| To harden our code, I added debug assertions to make sure that this HashMap is only used on the main thread and |
| to make sure that the sessionID used as key is always valid. I have also added if checks to avoid crashing in |
| release whenever possible. |
| |
| Note that we came to a similar conclusion for NetworkProcess::m_swServers when investigating rdar://problem/51859081, |
| so the two radars are potentially related. Both HashMaps are owned by the NetworkProcess and use a SessionID |
| as key. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::cookiesForDOM): |
| (WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM): |
| (WebKit::NetworkConnectionToWebProcess::logUserInteraction): |
| (WebKit::NetworkConnectionToWebProcess::logWebSocketLoading): |
| (WebKit::NetworkConnectionToWebProcess::logSubresourceLoading): |
| (WebKit::NetworkConnectionToWebProcess::logSubresourceRedirect): |
| (WebKit::NetworkConnectionToWebProcess::hasStorageAccess): |
| (WebKit::NetworkConnectionToWebProcess::requestStorageAccess): |
| (WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::networkSession const): |
| (WebKit::NetworkProcess::setSession): |
| (WebKit::NetworkProcess::destroySession): |
| (WebKit::NetworkProcess::addKeptAliveLoad): |
| (WebKit::NetworkProcess::removeKeptAliveLoad): |
| (WebKit::NetworkProcess::webProcessWasDisconnected): |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| (WebKit::NetworkResourceLoader::didFinishWithRedirectResponse): |
| (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry): |
| (WebKit::NetworkResourceLoader::shouldLogCookieInformation): |
| * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorBoundInterfaceIdentifier): |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorCTDataConnectionServiceType): |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorSourceApplicationBundleIdentifier): |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorSourceApplicationSecondaryIdentifier): |
| |
| 2019-07-02 Chris Dumez <cdumez@apple.com> |
| |
| VisitedLinkStore does not need to subclass WebProcessLifetimeObserver |
| https://bugs.webkit.org/show_bug.cgi?id=199407 |
| |
| Reviewed by Sam Weinig. |
| |
| VisitedLinkStore does not need to subclass WebProcessLifetimeObserver, it overrides |
| only 2 of WebProcessLifetimeObserver's functions and the implementation of those |
| overrides is empty. It also does not use WebProcessLifetimeObserver::processes() |
| since the VisitedLinkStore maintains its own list of processes. |
| |
| * UIProcess/API/mac/WKView.mm: |
| * UIProcess/Automation/WebAutomationSession.cpp: |
| * UIProcess/VisitedLinkStore.cpp: |
| * UIProcess/VisitedLinkStore.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::m_resetRecentCrashCountTimer): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| |
| 2019-07-02 Chris Dumez <cdumez@apple.com> |
| |
| Null dereference under StorageManager::destroySessionStorageNamespace() |
| https://bugs.webkit.org/show_bug.cgi?id=199388 |
| <rdar://problem/52030641> |
| |
| Reviewed by Youenn Fablet. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::createSessionStorageNamespace): |
| Call HashMap::ensure() instead of contains() + set() to avoid double hash lookup. |
| |
| (WebKit::StorageManager::destroySessionStorageNamespace): |
| Add null check to address top crasher, similarly to what was done in r246552. |
| I am keeping the debug assertion since this is not supposed to happen. |
| |
| 2019-07-02 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Cannot tab cycle through credit card fields on antonsvpatisserie.com checkout page |
| https://bugs.webkit.org/show_bug.cgi?id=196053 |
| <rdar://problem/49093034> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Allow iframes to be keyboard focusable when pressing the Tab key on the keyboard. This |
| also allow the that the focus controller to search their content document for other |
| editable elements. This makes iOS match the behavior on Mac. |
| |
| Although iframes can be focused by pressing the Tab key we maintain the current UI |
| restriction on iOS of not allowing iframes themselves to be focusable via the next and |
| previous accessory bar buttons. We do this because it's unclear what value supporting |
| such focusing brings, but it's clear that doing so makes tab cycling more confusing |
| since the default focus appearance for an iframe is indistinguishable from its non- |
| focused appearance. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::isAssistableElement): Do not consider an iframe as assistable. |
| |
| 2019-07-02 Alexander Mikhaylenko <exalm7659@gmail.com> |
| |
| [GTK] Support cancelling touchscreen back/forward gesture |
| https://bugs.webkit.org/show_bug.cgi?id=199401 |
| |
| Reviewed by Michael Catanzaro. |
| |
| It should be possible to cancel the gesture when performing it on |
| touchscreen, for example, by moving pen too far from the screen. |
| Handle this case properly. |
| |
| Only DragGesture in GestureController needs to handle this, |
| SwipeGesture simply won't emit the relevant event in this case. |
| |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| * UIProcess/ViewGestureController.h: |
| * UIProcess/gtk/GestureController.cpp: |
| (WebKit::GestureController::DragGesture::cancelDrag): |
| (WebKit::GestureController::DragGesture::cancel): |
| (WebKit::GestureController::DragGesture::DragGesture): |
| * UIProcess/gtk/GestureController.h: |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::ViewGestureController::platformTeardown): |
| (WebKit::ViewGestureController::cancelSwipe): |
| |
| 2019-07-02 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Debug: "Reset Web Inspector" should also clear the saved window size and attachment side |
| https://bugs.webkit.org/show_bug.cgi?id=198956 |
| |
| Reviewed by Matt Baker. |
| |
| * UIProcess/WebPreferences.h: |
| * UIProcess/WebPreferences.cpp: |
| (WebKit::WebPreferences::deleteKey): Added. |
| * UIProcess/gtk/WebPreferencesGtk.cpp: |
| (WebKit::WebPreferences::platformDeleteKey): Added. |
| * UIProcess/mac/WebPreferencesMac.mm: |
| (WebKit::WebPreferences::platformDeleteKey): Added. |
| * UIProcess/wpe/WebPreferencesWPE.cpp: |
| (WebKit::WebPreferences::platformDeleteKey): Added. |
| * UIProcess/win/WebPreferencesWin.cpp: |
| (WebKit::WebPreferences::platformDeleteKey): Added. |
| * Shared/WebPreferencesStore.h: |
| * Shared/WebPreferencesStore.cpp: |
| (WebKit::WebPreferencesStore::deleteKey): Added. |
| |
| * UIProcess/WebInspectorProxy.messages.in: |
| * UIProcess/WebInspectorProxy.h: |
| * UIProcess/WebInspectorProxy.cpp: |
| (WebKit::WebInspectorProxy::resetWindowState): Added. |
| (WebKit::WebInspectorProxy::platformResetWindowState): Added. |
| * UIProcess/gtk/WebInspectorProxyGtk.cpp: |
| (WebKit::WebInspectorProxy::platformResetWindowState): Added. |
| * UIProcess/mac/WebInspectorProxyMac.mm: |
| (WebKit::WebInspectorProxy::platformResetWindowState): Added. |
| * UIProcess/wpe/WebInspectorProxyWPE.cpp: |
| (WebKit::WebInspectorProxy::platformResetWindowState): Added. |
| * UIProcess/win/WebInspectorProxyWin.cpp: |
| (WebKit::WebInspectorProxy::platformResetWindowState): Added. |
| * WebProcess/WebPage/WebInspectorUI.h: |
| * WebProcess/WebPage/WebInspectorUI.cpp: |
| (WebKit::WebInspectorUI::resetWindowState): Added. |
| |
| * UIProcess/RemoteWebInspectorProxy.messages.in: |
| * UIProcess/RemoteWebInspectorProxy.h: |
| * UIProcess/RemoteWebInspectorProxy.cpp: |
| (WebKit::RemoteWebInspectorProxy::resetWindowState): Added. |
| (WebKit::RemoteWebInspectorProxy::platformResetWindowState): Added. |
| * UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp: |
| (WebKit::RemoteWebInspectorProxy::platformResetWindowState): Added. |
| * UIProcess/mac/RemoteWebInspectorProxyMac.mm: |
| (WebKit::RemoteWebInspectorProxy::platformResetWindowState): Added. |
| * UIProcess/win/RemoteWebInspectorProxyWin.cpp: |
| (WebKit::RemoteWebInspectorProxy::platformResetWindowState): Added. |
| * WebProcess/WebPage/RemoteWebInspectorUI.h: |
| * WebProcess/WebPage/RemoteWebInspectorUI.cpp: |
| (WebKit::RemoteWebInspectorUI::resetWindowState): Added. |
| |
| 2019-07-01 Chris Dumez <cdumez@apple.com> |
| |
| Remove virtual functions on WebProcessLifetimeObserver that are unused after r245540 |
| https://bugs.webkit.org/show_bug.cgi?id=199383 |
| |
| Reviewed by Alex Christensen. |
| |
| * UIProcess/WebProcessLifetimeObserver.h: |
| (WebKit::WebProcessLifetimeObserver::webProcessDidCloseConnection): |
| * UIProcess/WebProcessLifetimeTracker.cpp: |
| (WebKit::WebProcessLifetimeTracker::addObserver): |
| (WebKit::WebProcessLifetimeTracker::pageWasInvalidated): |
| |
| 2019-07-01 Chris Dumez <cdumez@apple.com> |
| |
| StorageManager::SessionStorageNamespace::allowedConnections() should not copy the HashSet |
| https://bugs.webkit.org/show_bug.cgi?id=199379 |
| |
| Reviewed by Alex Christensen. |
| |
| This was pretty inefficient. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::SessionStorageNamespace::allowedConnections const): |
| |
| 2019-07-01 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] REGRESSION (r246757): Unable to select non-editable text in subframes |
| https://bugs.webkit.org/show_bug.cgi?id=199366 |
| <rdar://problem/52460509> |
| |
| Reviewed by Tim Horton. |
| |
| r246757 removed logic in selectionPositionInformation responsible for setting the focused frame when handling a |
| position information request. As the FIXME formerly in InteractionInformationRequest.h alluded to, text |
| selection gestures on iOS were dependent on this behavior when selecting text in subframes, since text selection |
| helpers in WebPageIOS.mm assume that the focused frame already contains the selection being set. |
| |
| Rather than calling setFocusedFrame when requesting position information, we can fix this by making |
| WebPage::selectWithGesture and WebPage::selectTextWithGranularityAtPoint both set the focused frame if needed |
| before extending or moving text selections. |
| |
| Covered by layout tests that began to fail after r246757: |
| - editing/selection/ios/selection-handles-in-iframe.html |
| - editing/selection/ios/selection-handle-clamping-in-iframe.html |
| |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::selectWithGesture): |
| |
| Only call the new helper method, setFocusedFrameBeforeSelectingTextAtLocation, at the start of the gesture. |
| |
| (WebKit::WebPage::setFocusedFrameBeforeSelectingTextAtLocation): |
| (WebKit::WebPage::selectTextWithGranularityAtPoint): |
| |
| 2019-07-01 Alex Christensen <achristensen@webkit.org> |
| |
| Add new decidePolicyForNavigationAction SPI with preferences and userInfo |
| https://bugs.webkit.org/show_bug.cgi?id=199371 |
| <rdar://problem/52352905> |
| |
| Reviewed by Tim Horton. |
| |
| Also deprecate some older SPI so we may someday clean up this mess. |
| |
| * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: |
| * UIProcess/Cocoa/NavigationState.h: |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::setNavigationDelegate): |
| (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): |
| (WebKit::NavigationState::NavigationClient::shouldBypassContentModeSafeguards const): |
| |
| 2019-07-01 Alex Christensen <achristensen@webkit.org> |
| |
| Deprecate but still call _webView:showCustomSheetForElement: after transition to UIContextMenuInteraction |
| https://bugs.webkit.org/show_bug.cgi?id=199296 |
| <rdar://problem/51041960> |
| |
| Reviewed by Darin Adler. |
| |
| * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _showAttachmentSheet]): |
| (-[WKContentView actionSheetAssistant:showCustomSheetForElement:]): |
| (-[WKContentView continueContextMenuInteraction:]): |
| |
| 2019-07-01 Alex Christensen <achristensen@webkit.org> |
| |
| Add main thread assertions in sendWithAsyncReply code |
| https://bugs.webkit.org/show_bug.cgi?id=199324 |
| |
| Reviewed by Sam Weinig. |
| |
| sendWithAsyncReply can only be used on the main thread because |
| the CompletionHandler will be called on the main thread, and if it's |
| called from a background thread, then HashMap corruption will likely happen. |
| Add assertions to alert developers that they should only call sendWithAsyncReply |
| from the main thread. |
| |
| This is responding to good feedback from r237294 |
| |
| * Platform/IPC/Connection.cpp: |
| (IPC::asyncReplyHandlerMap): |
| (IPC::nextAsyncReplyHandlerID): |
| (IPC::addAsyncReplyHandler): |
| (IPC::clearAsyncReplyHandlers): |
| (IPC::CompletionHandler<void): |
| |
| 2019-07-01 Eric Carlson <eric.carlson@apple.com> |
| |
| [iOS] Exiting from fullscreen scrolls to top of page |
| https://bugs.webkit.org/show_bug.cgi?id=199338 |
| <rdar://problem/51273017> |
| |
| Reviewed by Jer Noble. |
| |
| * UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: |
| (-[WKFullScreenWindowController _completedExitFullScreen]): Restore scroll position. |
| Hide window after restoring scroll position. |
| (-[WKFullScreenWindowController _exitFullscreenImmediately]): Drive-by fix: remove code |
| already also done in _completedExitFullScreen. |
| |
| 2019-07-01 Zalan Bujtas <zalan@apple.com> |
| |
| Tapping on the bottom part of youtube video behaves as if controls were visible |
| https://bugs.webkit.org/show_bug.cgi?id=199349 |
| <rdar://problem/51955744> |
| |
| Reviewed by Simon Fraser. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::handleTouchEvent): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handleSyntheticClick): |
| (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver): |
| (WebKit::WebPage::completeSyntheticClick): |
| (WebKit::WebPage::potentialTapAtPosition): |
| |
| 2019-07-01 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| iOS: REGRESSION(async scroll): Caret doesn't scroll when scrolling textarea |
| https://bugs.webkit.org/show_bug.cgi?id=198217 |
| <rdar://problem/51097296> |
| |
| Reviewed by Simon Fraser. |
| |
| In iOS 12, when scrolling a text selection in an fast-scrolling container, editor state updates are scheduled |
| under AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll after the end of the scrolling gesture, |
| when the scrolling layer action is ScrollingLayerPositionAction::Set. This is no longer the case in iOS 13, |
| because we now bail in ScrollingTreeScrollingNode::wasScrolledByDelegatedScrolling after scroll deceleration |
| finishes since the scroll position didn't end up changing. Additionally, we no longer use |
| ScrollingLayerPositionAction::Set in the case where scrolling finished decelerating, since |
| ScrollingTreeScrollingNodeDelegateIOS::scrollViewDidScroll no longer uses to value of inUserInteraction to |
| determine whether to Set or Sync scrolling layer positions. |
| |
| To restore iOS 12 behavior, ensure that we send a scrolling tree update using ScrollingLayerPositionAction::Set |
| after scrolling ends. |
| |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: |
| (WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollViewDidScroll): |
| |
| 2019-07-01 Per Arne Vollan <pvollan@apple.com> |
| |
| Perform less work when a pre-warmed WebProcess is suspended or resumed. |
| https://bugs.webkit.org/show_bug.cgi?id=199195 |
| |
| Reviewed by Darin Adler. |
| |
| Return early from WebProcess::actualPrepareToSuspend and WebProcess::processDidResume |
| if this is a pre-warmed process. This is a confirmed improvement in page load time. |
| |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::actualPrepareToSuspend): |
| (WebKit::WebProcess::cancelPrepareToSuspend): |
| (WebKit::WebProcess::processDidResume): |
| |
| 2019-07-01 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| WebSockets: add support for sending blob messages when using web sockets platform APIs |
| https://bugs.webkit.org/show_bug.cgi?id=199189 |
| |
| Reviewed by Youenn Fablet. |
| |
| Add helper private class BlobLoader that uses FileReaderLoader to load the blobs. Since blob loads are |
| asynchronous, the messages are queued using another helper internal class PendingMessage. |
| |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::WebSocketChannel::increaseBufferedAmount): Increase the buffered amount checking we don't overlofw. |
| (WebKit::WebSocketChannel::decreaseBufferedAmount): Decrease the buffered amount. |
| (WebKit::WebSocketChannel::sendMessage): Helper class to send message to the network process and decrease the |
| buffered amount when done. |
| (WebKit::WebSocketChannel::send): Queue the message in pending queue if there are pending messages in the queue |
| for text and binary messages. For blobs, always queue the message unless it's an empty blob that we can handle |
| as empty binary data directly. |
| (WebKit::PendingMessage::PendingMessage): Helper class to queue message requests. |
| (WebKit::PendingMessage::type const): Type of message: Text, Binary, Blob. |
| (WebKit::PendingMessage::textMessage const): The text message. |
| (WebKit::PendingMessage::binaryData const): The binary data. |
| (WebKit::PendingMessage::blobLoader const): The blob loader. |
| (WebKit::WebSocketChannel::fail): Notify the client about the error to ensure onclose is emitted. |
| (WebKit::WebSocketChannel::disconnect): Clear the pending messages queue. |
| * WebProcess/Network/WebSocketChannel.h: |
| |
| 2019-07-01 Miguel Gomez <magomez@igalia.com> |
| |
| [WPE][GTK] Content disappearing when using CSS transforms |
| https://bugs.webkit.org/show_bug.cgi?id=181757 |
| |
| Reviewed by Žan Doberšek. |
| |
| Set the appropriate AnimatedBackingStoreClient to the TextureMapperLayers when required. |
| |
| * Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp: |
| (WebKit::CoordinatedGraphicsScene::updateSceneState): |
| |
| 2019-06-30 Antti Koivisto <antti@apple.com> |
| |
| Use separate variables for moving and stationary scrolling relationships in RemoteLayerTreeNode |
| https://bugs.webkit.org/show_bug.cgi?id=199348 |
| |
| Reviewed by Darin Adler. |
| |
| A layer can have only one acting scroll parent. Not using a vector for that case makes the code clearer. |
| |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h: |
| (WebKit::RemoteLayerTreeNode::actingScrollContainerID const): |
| (WebKit::RemoteLayerTreeNode::stationaryScrollContainerIDs const): |
| |
| Separate fields for the acting container and stationary containers. |
| |
| (WebKit::RemoteLayerTreeNode::setActingScrollContainerID): |
| (WebKit::RemoteLayerTreeNode::setStationaryScrollContainerIDs): |
| (WebKit::RemoteLayerTreeNode::relatedScrollContainerIDs const): Deleted. |
| (WebKit::RemoteLayerTreeNode::relatedScrollContainerPositioningBehavior const): Deleted. |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: |
| (WebKit::RemoteLayerTreeNode::setRelatedScrollContainerBehaviorAndIDs): Deleted. |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (WebKit::isScrolledBy): |
| (WebKit::findActingScrollParent): |
| * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: |
| (WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations): |
| |
| 2019-06-30 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| [Win] Multiline mode of tooltip control does word-wrapping very slowly |
| https://bugs.webkit.org/show_bug.cgi?id=198989 |
| |
| Reviewed by Ross Kirsling. |
| |
| * UIProcess/win/WebView.cpp: |
| (WebKit::truncatedString): Added. |
| (WebKit::WebView::setToolTip): Use truncatedString. |
| |
| 2019-06-30 Basuke Suzuki <Basuke.Suzuki@sony.com> |
| |
| Pass WebProcess information to platformInitializeWebProcess(). |
| https://bugs.webkit.org/show_bug.cgi?id=199345 |
| |
| Reviewed by Darin Adler. |
| |
| Add const reference to WebProcessProxy for first argument of |
| WebProcessPool::platformInitializeWebProcess(). |
| |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::initializeNewWebProcess): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/glib/WebProcessPoolGLib.cpp: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| * UIProcess/win/WebProcessPoolWin.cpp: |
| (WebKit::WebProcessPool::platformInitializeWebProcess): |
| |
| 2019-06-28 Brent Fulgham <bfulgham@apple.com> |
| |
| Revise WebContent sandbox based on seed feedback |
| https://bugs.webkit.org/show_bug.cgi?id=199339 |
| <rdar://problem/49609201> |
| |
| Reviewed by Alexey Proskuryakov. |
| |
| Unblock syscall needed by CoreText. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2019-06-28 Tim Horton <timothy_horton@apple.com> |
| |
| iOS WebKit2 find-in-page indicator doesn't move with 'overflow: scroll' |
| https://bugs.webkit.org/show_bug.cgi?id=175032 |
| <rdar://problem/29346482> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * WebProcess/WebPage/FindController.cpp: |
| (WebKit::FindController::drawRect): |
| (WebKit::FindController::didScrollAffectingFindIndicatorPosition): |
| Adopt the macOS code that notices that the find highlight doesn't match |
| its original position, but instead of hiding the highlight like we do on macOS, |
| update it. We do this asynchronously to avoid mutating the layer tree |
| in the middle of painting, which is not /truly/ unsafe, but definitely |
| non-ideal and causes fun flashes. |
| |
| * WebProcess/WebPage/FindController.h: |
| * WebProcess/WebPage/ios/FindControllerIOS.mm: |
| (WebKit::FindController::updateFindIndicator): |
| Store m_findIndicatorRect when updating the indicator, just like we do on macOS. |
| |
| 2019-06-28 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed build fix attempt after r246928. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _closeAllMediaPresentations]): |
| |
| 2019-06-28 Youenn Fablet <youenn@apple.com> |
| |
| Protect NetworkProcess::m_swServers from bad session IDs |
| https://bugs.webkit.org/show_bug.cgi?id=199298 |
| <rdar://problem/51859081> |
| |
| Reviewed by Chris Dumez. |
| |
| Protect NetworkProcess from receiving bad session IDs in service worker code path by checking for session ID validity whenever interacting with the map. |
| One of the check is done in WebProcess in which case, if the session ID is bad, the SW connection to NetworkProcess will not be made. |
| For bad session IDs, this will in that case trigger timing out of service worker operations. |
| |
| For get/clear data, exit early in case of bad session ID. |
| |
| Made some refactoring to remove swOriginStoreForSession method. |
| In the one call site where it is used, the store should already be created so we reuse existingSWOriginStoreForSession. |
| |
| Added a bunch of additional ASSERTs. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::destroySession): |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains): |
| (WebKit::NetworkProcess::registrableDomainsWithWebsiteData): |
| (WebKit::NetworkProcess::actualPrepareToSuspend): |
| (WebKit::NetworkProcess::swServerForSession): |
| (WebKit::NetworkProcess::existingSWOriginStoreForSession const): |
| (WebKit::NetworkProcess::registerSWServerConnection): |
| * NetworkProcess/NetworkProcess.h: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::initializeSWClientConnection): |
| * WebProcess/Storage/WebSWClientConnection.cpp: |
| (WebKit::WebSWClientConnection::WebSWClientConnection): |
| (WebKit::WebSWClientConnection::initializeConnectionIfNeeded): |
| (WebKit::WebSWClientConnection::ensureConnectionAndSend): |
| |
| 2019-06-28 Timothy Hatcher <timothy@apple.com> |
| |
| Rename effectiveAppearanceIsInactive and useInactiveAppearance to better match UIUserInterfaceLevel. |
| https://bugs.webkit.org/show_bug.cgi?id=199336 |
| rdar://problem/52348938 |
| |
| Reviewed by Tim Horton. |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _effectiveUserInterfaceLevelIsElevated]): |
| (-[WKWebView _effectiveAppearanceIsInactive]): Deleted. |
| * UIProcess/API/Cocoa/WKWebViewInternal.h: |
| * UIProcess/Cocoa/WebViewImpl.h: |
| * UIProcess/Cocoa/WebViewImpl.mm: |
| (WebKit::WebViewImpl::effectiveUserInterfaceLevelIsElevated): |
| (WebKit::WebViewImpl::effectiveAppearanceIsInactive): Deleted. |
| * UIProcess/PageClient.h: |
| (WebKit::PageClient::effectiveUserInterfaceLevelIsElevated const): |
| (WebKit::PageClient::effectiveAppearanceIsInactive const): Deleted. |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::creationParameters): |
| (WebKit::WebPageProxy::useElevatedUserInterfaceLevel const): |
| (WebKit::WebPageProxy::effectiveAppearanceDidChange): |
| (WebKit::WebPageProxy::useInactiveAppearance const): Deleted. |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::effectiveUserInterfaceLevelIsElevated const): |
| (WebKit::PageClientImpl::effectiveAppearanceIsInactive const): Deleted. |
| * UIProcess/mac/PageClientImplMac.h: |
| * UIProcess/mac/PageClientImplMac.mm: |
| (WebKit::PageClientImpl::effectiveUserInterfaceLevelIsElevated const): |
| (WebKit::PageClientImpl::effectiveAppearanceIsInactive const): Deleted. |
| * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: |
| (WKBundlePageSetUseDarkAppearance): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_shrinkToFitContentTimer): |
| (WebKit::WebPage::effectiveAppearanceDidChange): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2019-06-28 Jer Noble <jer.noble@apple.com> |
| |
| Unreviewed maccatalyst build fix; add ENABLE(FULLSCREEN) checks around calls to fullScreenManager(). |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _closeAllMediaPresentations]): |
| |
| 2019-06-28 Tim Horton <timothy_horton@apple.com> |
| |
| macCatalyst: Selected range sometimes wrong after autocorrection |
| https://bugs.webkit.org/show_bug.cgi?id=199299 |
| <rdar://problem/49717224> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/Cocoa/TextCheckingController.h: |
| * UIProcess/Cocoa/TextCheckingController.mm: |
| (WebKit::TextCheckingController::replaceRelativeToSelection): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView replaceSelectionOffset:length:withAnnotatedString:relativeReplacementRange:]): |
| Plumb the whole relative replacement range through to the Web Content process. |
| |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.h: |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.messages.in: |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: |
| (WebKit::TextCheckingControllerProxy::replaceRelativeToSelection): |
| Only replace the text of the substring that changed (the replacement range), |
| and fix up the selection offset math (it was really just wrong before). |
| |
| 2019-06-28 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Need a way for SPI clients to know when to avoid resizing to accommodate for the input view bounds |
| https://bugs.webkit.org/show_bug.cgi?id=199331 |
| <rdar://problem/52116170> |
| |
| Reviewed by Tim Horton. |
| |
| Expose new SPI, such that clients may check whether to avoid resizing the web view when changing input view |
| bounds. In particular, resizing the web view in this case causes toolbar menus in Microsoft Word online to |
| dismiss immediately after opening them, due to resize events fired as a result of the input view dismissing. |
| |
| * Shared/FocusedElementInformation.cpp: |
| (WebKit::FocusedElementInformation::encode const): |
| (WebKit::FocusedElementInformation::decode): |
| * Shared/FocusedElementInformation.h: |
| |
| Add a new flag to FocusedElementInformation to indicate whether we should avoid resizing the web view when an |
| input view is presented. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _shouldAvoidResizingWhenInputViewBoundsChange]): |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _elementDidBlur]): |
| |
| Reset the value of the flag. |
| |
| (-[WKContentView _shouldAvoidResizingWhenInputViewBoundsChange]): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::getFocusedElementInformation): |
| |
| 2019-06-28 Jer Noble <jer.noble@apple.com> |
| |
| Add new -[WKWebView _closeAllMediaPresentations] SPI |
| https://bugs.webkit.org/show_bug.cgi?id=199294 |
| <rdar://problem/51965958> |
| |
| Reviewed by Alex Christensen. |
| |
| Add a new SPI that will close all out-of-window media presentations, including |
| picture-in-picture, video fullscreen, and element fullscreen. |
| |
| Drive-by fixes: |
| |
| + -[WKApplicationStateTrackingView didMoveToWindow] incorrectly assumes that a WKWebView will |
| never be moved frome one window to another, and asserts. |
| |
| + -[WKFullScreenWindowController close] doesn't fire the correct 'webkitfullscreenchange' event |
| when called in the middle of animating into fullscreen. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _closeAllMediaPresentations]): |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.h: |
| * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: |
| (WebKit::VideoFullscreenManagerProxy::forEachSession): |
| * UIProcess/ios/WKApplicationStateTrackingView.mm: |
| (-[WKApplicationStateTrackingView didMoveToWindow]): |
| * UIProcess/mac/WKFullScreenWindowController.h: |
| * UIProcess/mac/WKFullScreenWindowController.mm: |
| (-[WKFullScreenWindowController exitFullScreenImmediately]): |
| (-[WKFullScreenWindowController close]): |
| |
| 2019-06-28 Antti Koivisto <antti@apple.com> |
| |
| [iOS Scrolling] Propagate scrolls to non-nested UIScrollViews |
| https://bugs.webkit.org/show_bug.cgi?id=199222 |
| |
| Reviewed by Simon Fraser. |
| |
| We may generate scrolling hierarchies where the scrolling ancestor of a layer is not |
| an ancestor in the layer tree. We handle this in most situations but there is still |
| a problem where a scroller fails to propage scroll to the ancestor when it reaches |
| the edge. |
| |
| This patch hooks up a new SPI that allows us to tell UIKit about non-ancestor scrolling |
| relations and solve this problem. |
| |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h: |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (WebKit::findActingScrollParent): |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h: |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: |
| (-[WKScrollingNodeScrollViewDelegate _actingParentScrollViewForScrollView:]): |
| |
| Hook into UIKit SPI. |
| |
| (WebKit::ScrollingTreeScrollingNodeDelegateIOS::findActingScrollParent): |
| |
| 2019-06-28 Konstantin Tokarev <annulen@yandex.ru> |
| |
| Remove traces of ENABLE_ICONDATABASE remaining after its removal in 219733 |
| https://bugs.webkit.org/show_bug.cgi?id=199317 |
| |
| Reviewed by Michael Catanzaro. |
| |
| While IconDatabase and all code using it was removed, |
| ENABLE_ICONDATABASE still exists as build option and C++ macro. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * PlatformGTK.cmake: Remove reference to unused urlIcon.png file. |
| |
| 2019-06-28 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| -[WKContentView _selectionClipRects] returns a bogus value in -reloadInputViews when focusing an element |
| https://bugs.webkit.org/show_bug.cgi?id=199310 |
| <rdar://problem/52292137> |
| |
| Reviewed by Megan Gardner. |
| |
| When reloading input views under -_elementDidFocus:, -_selectionClipRect returns the value of the previously |
| focused element; this is because _selectionClipRect depends on EditorState's post layout data, which is only |
| guaranteed to arrive during the next remote layer tree commit after the element is focused. |
| |
| However, some clients need to inspect this value under the call to -reloadInputViews when an element is focused; |
| to make this work, simply check whether we are currently waiting for post-layout EditorState data to arrive |
| following element focus; if so, return the FocusedElementInformation's elementRect, which represents the initial |
| state of the focused element. Otherwise, use the EditorState's post layout data, which is guaranteed to be more |
| up-to-date than the FocusedElementInformation's element rect. |
| |
| Test: KeyboardInputTests.SelectionClipRectsWhenPresentingInputView |
| |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::waitingForPostLayoutEditorStateUpdateAfterFocusingElement const): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _selectionClipRect]): |
| |
| 2019-06-28 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] WebSockets: runtime critical warning when closing the connection in some cases |
| https://bugs.webkit.org/show_bug.cgi?id=199265 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Ensure the connection is still open before calling soup_websocket_connection_close(). |
| |
| * NetworkProcess/soup/WebSocketTaskSoup.cpp: |
| (WebKit::WebSocketTask::close): |
| |
| 2019-06-27 Zan Dobersek <zdobersek@igalia.com> |
| |
| Unreviewed WPE build fix. |
| |
| * SourcesWPE.txt: Add WebSocketTaskSoup.cpp to the build. |
| |
| 2019-06-27 Dean Jackson <dino@apple.com> |
| |
| Provide overrides for UIKit's suggested actions in UIContextMenuInteraction |
| https://bugs.webkit.org/show_bug.cgi?id=199301 |
| <rdar://problem/52297380> |
| |
| Reviewed by Tim Horton. |
| |
| We were previously wrapping the actionMenuProvider with our own block |
| in order to ensure the correct suggestedActions were passed to the provider. |
| UIKit added API for us to override the actions separately. |
| |
| Unfortunately we can't quite yet get rid of our access into the |
| UIContextMenuConfiguration, because we still need to override the preview |
| handler in the case where the user does not want link previews. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView continueContextMenuInteraction:]): |
| (-[WKContentView _contextMenuInteraction:overrideSuggestedActionsForConfiguration:]): |
| Implement the new delegate SPI to provide our own actions. |
| |
| 2019-06-27 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Select all with existing range selection replaces range instead of selecting all text |
| https://bugs.webkit.org/show_bug.cgi?id=197950 |
| <rdar://problem/50245131> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Following <rdar://problem/47333786>, UIKit now asks WebKit whether it can handle Command + A as |
| "select all" instead of just demanding that we handle it. So, WebKit needs to be able to correctly |
| tell UIKit in advance whether it can handle it. Currenlty WebKit tells UIKit it cannot handle a |
| "select all" whenever there is an existing range selection. So, UIKit does not tell WebKit to |
| perform the "select all". Moreover, since UIKit has no other means to handle this key command |
| itself it tells WebKit the key command was not handled. So, WebKit tells the keyboard to insert |
| the "a". Instead, WebKit should tell UIKit it can handle a "select all" even when this is an |
| existing range selection. However we need to keep the current logic just for when UIKit is |
| asking us with respect to populating the callout menu to not regress platform behavior. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView canPerformActionForWebView:withSender:]): Do what we do now if we are called |
| when populating the callout menu and action is Select All. Otherwise, return YES for the Select All |
| action if we have a non-empty selection. |
| |
| 2019-06-27 Andy Estes <aestes@apple.com> |
| |
| [iOS] Stop using cached UITargetedPreviews from previous interactions when starting a new context menu interaction |
| https://bugs.webkit.org/show_bug.cgi?id=199285 |
| <rdar://problem/52074916> |
| |
| Reviewed by Tim Horton. |
| |
| WKContentView was caching the UITargetedPreview created in |
| -contextMenuInteraction:previewForHighlightingMenuWithConfiguration: for later reuse by |
| -contextMenuInteraction:previewForDismissingMenuWithConfiguration:. The cached value was |
| then cleared in -contextMenuInteractionDidEnd:. |
| |
| This was wrong, because -contextMenuInteractionDidEnd: can be called before |
| -contextMenuInteraction:previewForDismissingMenuWithConfiguration:, so we would clear the |
| cache then create and cache a new UITargetedPreview during dismissal. Then when a new |
| context menu interaction started, we'd reuse the targeted preview created for the previous |
| dismissal (which has the wrong geometry). |
| |
| Stop assuming an ordering between |
| -contextMenuInteraction:previewForDismissingMenuWithConfiguration: and |
| -contextMenuInteractionDidEnd:. Instead, always create and cache a new UITargetedPreview in |
| -contextMenuInteraction:previewForHighlightingMenuWithConfiguration:, then reuse it and |
| clear the cache in -contextMenuInteraction:previewForDismissingMenuWithConfiguration:. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _createTargetedPreviewIfPossible]): |
| (-[WKContentView contextMenuInteraction:previewForDismissingMenuWithConfiguration:]): |
| (-[WKContentView contextMenuInteractionDidEnd:]): |
| |
| 2019-06-27 Sihui Liu <sihui_liu@apple.com> |
| |
| Regression(r246526): StorageManager thread hangs |
| https://bugs.webkit.org/show_bug.cgi?id=199278 |
| <rdar://problem/52202948> |
| |
| Reviewed by Geoffrey Garen. |
| |
| r246526 adds a lock m_localStorageNamespacesMutex to protect m_localStorageNamespaces, because |
| m_localStorageNamespaces is destroyed at main thread while accesses to m_localStorageNamespaces happen in the |
| background thread. |
| After r246526, getOrCreateLocalStorageNamespace acquires lock m_localStorageNamespacesMutex when |
| m_localStorageNamespacesMutex is already acquired in cloneSessionStorageNamespace, so the StorageManager thread |
| hangs. |
| To solve this issue, we can remove the lock in getOrCreateLocalStorageNamespace, or we can remove the |
| m_localStorageNamespacesMutex. waitUntilWritesFinished() before ~StorageManager() already guarantees nothing |
| will be running in the background thread, so it is unlikely we the access to m_localStorageNamespaces in the |
| background thread would collide with the destruction of m_localStorageNamespaces. Also, we don't need |
| didDestroyStorageArea as LocalStorageNamespace can hold the last reference of StorageArea after r245881. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::StorageArea::StorageArea): |
| (WebKit::StorageManager::StorageArea::~StorageArea): |
| (WebKit::StorageManager::LocalStorageNamespace::LocalStorageNamespace): |
| (WebKit::StorageManager::cloneSessionStorageNamespace): |
| (WebKit::StorageManager::getLocalStorageOrigins): |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin): |
| (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): |
| (WebKit::StorageManager::getOrCreateLocalStorageNamespace): |
| (WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea): Deleted. |
| * NetworkProcess/WebStorage/StorageManager.h: |
| |
| 2019-06-27 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| WebSockets: avoid data copies when queuing tasks in WebSocketChannel |
| https://bugs.webkit.org/show_bug.cgi?id=199262 |
| |
| Reviewed by Alex Christensen. |
| |
| For IPC message handler arguments we can receive rvalue references instead of const references. |
| |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::WebSocketChannel::didConnect): |
| (WebKit::WebSocketChannel::didReceiveText): |
| (WebKit::WebSocketChannel::didReceiveBinaryData): |
| (WebKit::WebSocketChannel::didClose): |
| (WebKit::WebSocketChannel::didReceiveMessageError): |
| * WebProcess/Network/WebSocketChannel.h: |
| |
| 2019-06-27 Youenn Fablet <youenn@apple.com> |
| |
| Fix build after revision 246877 |
| https://bugs.webkit.org/show_bug.cgi?id=199276 |
| |
| Unreviewed. |
| |
| Pass protocol parameter to NetworkSocketChannel. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:webSocketTask:didOpenWithProtocol:]): |
| * NetworkProcess/cocoa/WebSocketTaskCocoa.h: |
| * NetworkProcess/cocoa/WebSocketTaskCocoa.mm: |
| (WebKit::WebSocketTask::didConnect): |
| |
| 2019-06-27 Beth Dakin <bdakin@apple.com> |
| |
| Upstream use of MACCATALYST |
| https://bugs.webkit.org/show_bug.cgi?id=199245 |
| rdar://problem/51687723 |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/Base.xcconfig: |
| * Configurations/FeatureDefines.xcconfig: |
| * Configurations/Network-iOSMac.entitlements: Removed. |
| * Configurations/Network-macCatalyst.entitlements: Copied from Source/WebKit/Configurations/Network-iOSMac.entitlements. |
| * Configurations/NetworkService.xcconfig: |
| * Configurations/SDKVariant.xcconfig: |
| * Configurations/WebContent-iOSMac.entitlements: Removed. |
| * Configurations/WebContent-macCatalyst.entitlements: Copied from Source/WebKit/Configurations/WebContent-iOSMac.entitlements. |
| * Configurations/WebContentService.xcconfig: |
| * Configurations/WebKit.xcconfig: |
| * NetworkProcess/ios/NetworkProcessIOS.mm: |
| * NetworkProcess/mac/NetworkProcessMac.mm: |
| (WebKit::NetworkProcess::initializeProcess): |
| (WebKit::NetworkProcess::initializeProcessName): |
| * Platform/mac/LayerHostingContext.mm: |
| (WebKit::LayerHostingContext::createForExternalHostingProcess): |
| * Platform/spi/ios/ManagedConfigurationSPI.h: |
| * Platform/spi/ios/UIKitSPI.h: |
| * Shared/WebPreferencesDefaultValues.cpp: |
| (WebKit::defaultCustomPasteboardDataEnabled): |
| * Shared/ios/AuxiliaryProcessIOS.mm: |
| (WebKit::AuxiliaryProcess::initializeSandbox): |
| * Shared/ios/InteractionInformationAtPosition.h: |
| * Shared/ios/InteractionInformationAtPosition.mm: |
| (WebKit::InteractionInformationAtPosition::encode const): |
| (WebKit::InteractionInformationAtPosition::decode): |
| * Shared/mac/AuxiliaryProcessMac.mm: |
| (WebKit::enableSandboxStyleFileQuarantine): |
| * Shared/mac/CodeSigning.mm: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _webViewPrintFormatter]): |
| * UIProcess/API/Cocoa/WKWebViewInternal.h: |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: |
| (WebKit::RemoteLayerTreeHost::updateLayerTree): |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (-[WKRemoteView initWithFrame:contextID:]): |
| * UIProcess/_WKWebViewPrintFormatter.mm: |
| * UIProcess/_WKWebViewPrintFormatterInternal.h: |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant _elementActionForDDAction:]): |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _commonInitializationWithProcessPool:configuration:]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView cleanupInteraction]): |
| (-[WKContentView _removeDefaultGestureRecognizers]): |
| (-[WKContentView _addDefaultGestureRecognizers]): |
| (-[WKContentView _showTapHighlight]): |
| (-[WKContentView gestureRecognizer:canBePreventedByGestureRecognizer:]): |
| (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): |
| (-[WKContentView canPerformActionForWebView:withSender:]): |
| (-[WKContentView _defineForWebView:]): |
| (-[WKContentView setSelectedTextRange:]): |
| (-[WKContentView closestPositionToPoint:]): |
| (-[WKContentView _showShareSheet:inRect:completionHandler:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::desktopClassBrowsingSupported): |
| (WebKit::desktopClassBrowsingRecommended): |
| * UIProcess/ios/forms/WKFileUploadPanel.mm: |
| (-[WKFileUploadPanel _showDocumentPickerMenu]): |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm: |
| * WebProcess/WebPage/Cocoa/WebPageCocoa.mm: |
| (WebKit::WebPage::dictionaryPopupInfoForRange): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::platformEditorState const): |
| (WebKit::WebPage::selectWithGesture): |
| (WebKit::selectionPositionInformation): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::initializeSandbox): |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2019-06-27 Saam Barati <sbarati@apple.com> |
| |
| Make WEBGPU enabled only on Mojave and later. |
| |
| Rubber-stamped by Myles C. Maxfield. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| |
| 2019-06-27 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK][WPE] Fix build non-unified builds after r246856 |
| https://bugs.webkit.org/show_bug.cgi?id=199263 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * UIProcess/API/C/WKMessageListener.cpp: Added missing inclusion of WKAPICast.h and usage of WebKit namespace. |
| |
| 2019-06-27 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] WebSockets: handle TLS certificate and errors |
| https://bugs.webkit.org/show_bug.cgi?id=199223 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Connect to accept-certificate signal on the WebSocket message connection to decide what to do in case of TLS errors. |
| |
| * NetworkProcess/soup/NetworkSessionSoup.cpp: |
| (WebKit::webSocketAcceptCertificateCallback): |
| (WebKit::webSocketMessageNetworkEventCallback): |
| (WebKit::NetworkSessionSoup::createWebSocketTask): |
| |
| 2019-06-27 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [SOUP] Use libsoup WebSockets API |
| https://bugs.webkit.org/show_bug.cgi?id=199151 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Use the new WebSockets code path that depends on platform specific WebSockets implementation using the libsoup |
| API. This is an initial implementation manually tested using the layout tests, which most of them fail due to |
| missing console messages, missing features in the new code path or differences in the platform |
| implementation. It will be disabled by default until it's feature complete compared to the internal WebKit |
| implementation. |
| |
| * NetworkProcess/NetworkSocketChannel.cpp: |
| (WebKit::NetworkSocketChannel::NetworkSocketChannel): Null check m_socket before using it, because |
| createWebSocketTask() can return nullptr; |
| (WebKit::NetworkSocketChannel::didConnect): Receive the protocol accepted by the server. |
| (WebKit::NetworkSocketChannel::didReceiveMessageError): Something failed in the server side. |
| * NetworkProcess/NetworkSocketChannel.h: |
| * NetworkProcess/WebSocketTask.h: |
| * NetworkProcess/soup/NetworkSessionSoup.cpp: |
| (WebKit::NetworkSessionSoup::createWebSocketTask): Create a WebSocketTask. |
| * NetworkProcess/soup/NetworkSessionSoup.h: |
| * NetworkProcess/soup/WebSocketTaskSoup.cpp: Added. |
| (WebKit::WebSocketTask::WebSocketTask): |
| (WebKit::WebSocketTask::~WebSocketTask): |
| (WebKit::WebSocketTask::didConnect): |
| (WebKit::WebSocketTask::didReceiveMessageCallback): |
| (WebKit::WebSocketTask::didReceiveErrorCallback): |
| (WebKit::WebSocketTask::didFail): |
| (WebKit::WebSocketTask::didCloseCallback): |
| (WebKit::WebSocketTask::didClose): |
| (WebKit::WebSocketTask::sendString): |
| (WebKit::WebSocketTask::sendData): |
| (WebKit::WebSocketTask::close): |
| (WebKit::WebSocketTask::cancel): |
| (WebKit::WebSocketTask::resume): |
| * NetworkProcess/soup/WebSocketTaskSoup.h: Copied from Source/WebKit/NetworkProcess/WebSocketTask.h. |
| * SourcesGTK.txt: |
| * WebProcess/Network/WebSocketChannel.cpp: |
| (WebKit::WebSocketChannel::subprotocol): Return the protocol accepted by the server. |
| (WebKit::WebSocketChannel::didConnect): Set the protocol accepted by the server. |
| (WebKit::WebSocketChannel::didReceiveMessageError): It's now an IPC message handler and receives the reason as parameter. |
| (WebKit::WebSocketChannel::networkProcessCrashed): Pass empty reason. |
| * WebProcess/Network/WebSocketChannel.h: |
| * WebProcess/Network/WebSocketChannel.messages.in: |
| |
| 2019-06-21 Konstantin Tokarev <annulen@yandex.ru> |
| |
| [cmake] Switch to built-in handling of C++ standard instead of hardcoding -std=c++17 |
| https://bugs.webkit.org/show_bug.cgi?id=199108 |
| |
| Reviewed by Don Olmstead. |
| |
| Rationale: |
| |
| 1. It provides an abstraction over exact flags of particular compilers - |
| we just specify required version of C++ standard |
| 2. External libraries (like Qt used in WPEQt) may require particular C++ |
| standard or even particular C++ features to be availabe (e.g. Qt |
| requires INTERFACE_COMPILE_FEATURES cxx_decltype, which causes cmake |
| to add -std=gnu++11 unless proper CXX_STANDARD is defined) |
| |
| * PlatformWPE.cmake: Use project-level default for CXX_STANDARD |
| property. |
| |
| 2019-06-26 Jiewen Tan <jiewen_tan@apple.com> |
| |
| SubFrameSOAuthorizationSession should preserve the referrer header when fall back to web path |
| https://bugs.webkit.org/show_bug.cgi?id=199232 |
| <rdar://problem/51718328> |
| |
| Reviewed by Youenn Fablet. |
| |
| The fall back to web path mechanism in SubFrameSOAuthorizationSession doesn't actually resume |
| the previous navigation. Instead it starts a new one. The current implementation doesn't carry |
| any information from the previous navigation. It is problematic when it comes to http referrer |
| as the server might use that to determine what kind of responses to send back. Therefore, we |
| add that information now. |
| |
| To accomplish the above, the patch teaches WebFrameProxy::loadURL to carry referrer information |
| when it is available. Then SubFrameSOAuthorizationSession can reuses the referrer from the |
| original request. |
| |
| * UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm: |
| (WebKit::SubFrameSOAuthorizationSession::fallBackToWebPathInternal): |
| * UIProcess/WebFrameProxy.cpp: |
| (WebKit::WebFrameProxy::loadURL): |
| * UIProcess/WebFrameProxy.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::loadURLInFrame): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| |
| 2019-06-26 Fujii Hironori <Hironori.Fujii@sony.com> |
| |
| testRunner.setAlwaysAcceptCookies should wait for cookie accept policy to be set |
| https://bugs.webkit.org/show_bug.cgi?id=199230 |
| <rdar://problem/52217933> |
| |
| Unreviewed build fix for WinCairo WK2 since r246856. |
| |
| * PlatformWin.cmake: Added WKMessageListener.h to WebKit_PUBLIC_FRAMEWORK_HEADERS. |
| |
| 2019-06-26 Dean Jackson <dino@apple.com> |
| |
| Add type to UIImage symbol mapping for _WKElementAction |
| https://bugs.webkit.org/show_bug.cgi?id=199255 |
| |
| Reviewed by Sam Weinig. |
| |
| Moving some code in from WebKitAdditions now |
| that the API is public. |
| |
| * UIProcess/API/Cocoa/_WKElementAction.mm: |
| (+[_WKElementAction imageForElementActionType:]): |
| (elementActionTypeToUIActionIdentifier): |
| (uiActionIdentifierToElementActionType): |
| |
| 2019-06-26 Dean Jackson <dino@apple.com> |
| |
| Expose UIAction identifiers for _WKElementActions |
| https://bugs.webkit.org/show_bug.cgi?id=199246 |
| <rdar://problem/52218950> |
| |
| Reviewed by Tim Horton. |
| |
| In order for clients to create a contextual menu, they are given |
| a set of suggested UIActions, created from _WKElementActions. |
| By associating identifiers (strings) with the UIActions, clients |
| can inspect the suggestions and make a decision on whether or |
| not to include them in the final menu. |
| |
| * UIProcess/API/Cocoa/_WKElementAction.h: Typedef UIActionIdentifier, |
| add a method to create a UIAction from an _WKElementAction, and a |
| helper to map between identifiers and types. |
| |
| * UIProcess/API/Cocoa/_WKElementAction.mm: |
| (elementActionTypeToUIActionIdentifier): Helper to convert between the two types. |
| (uiActionIdentifierToElementActionType): The inverse of above. |
| (+[_WKElementAction elementActionTypeForUIActionIdentifier:]): A client given |
| a UIAction object can use this helper method to see what _WKElementActionType it |
| corresponds to. |
| (-[_WKElementAction uiActionForElementInfo:]): Used by WKContentViewInteraction to |
| create a UIAction from this _WKElementAction. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (uiActionForLegacyPreviewAction): Renamed to make it clear this is a legacy approach. |
| (menuFromLegacyPreviewOrDefaultActions): Split these functions to separate the legacy |
| and non-legacy approach. |
| (-[WKContentView assignLegacyDataForContextMenuInteraction]): |
| (-[WKContentView continueContextMenuInteraction:]): |
| (uiActionForPreviewAction): Deleted. |
| (menuFromPreviewOrDefaults): Deleted. |
| |
| 2019-06-26 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iPadOS] Fix another crash in -[UIPreviewTarget initWithContainer:center:transform:] when generating a fallback targeted preview |
| https://bugs.webkit.org/show_bug.cgi?id=199243 |
| <rdar://problem/51554509> |
| |
| Reviewed by Tim Horton. |
| |
| Additionally make createFallbackTargetedPreview robust in the case where the content view is unparented, and |
| rename _ensureTargetedPreview to _createTargetedPreviewIfPossible, to reflect the fact that it may now return |
| nil. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (createTargetedPreview): |
| (createFallbackTargetedPreview): |
| (-[WKContentView _createTargetedPreviewIfPossible]): |
| (-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): |
| (-[WKContentView contextMenuInteraction:previewForDismissingMenuWithConfiguration:]): |
| (-[WKContentView _ensureTargetedPreview]): Deleted. |
| |
| 2019-06-26 Alex Christensen <achristensen@webkit.org> |
| |
| testRunner.setAlwaysAcceptCookies should wait for cookie accept policy to be set |
| https://bugs.webkit.org/show_bug.cgi?id=199230 |
| <rdar://51757107> |
| |
| Reviewed by Andy Estes. |
| |
| This patch adds an optional callback to WKCookieManagerSetHTTPCookieAcceptPolicy which is luckily only used for testing. |
| It also adds listener-based asynchronous versions of didReceiveSynchronousMessageFromInjectedBundle. |
| WebKitTestRunner uses these new abilities to wait for the cookie accept policy to be set in the network process while the web process is hung. |
| This removes the race condition that was causing some flakiness in tests that use testRunner.setAlwaysAcceptCookies |
| |
| * Shared/API/APIObject.h: |
| * Shared/API/c/WKBase.h: |
| * Sources.txt: |
| * UIProcess/API/APIInjectedBundleClient.h: |
| (API::InjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle): |
| * UIProcess/API/APIMessageListener.h: Copied from Source/WebKit/UIProcess/API/APIInjectedBundleClient.h. |
| (API::MessageListener::create): |
| (API::MessageListener::sendReply): |
| (API::MessageListener::MessageListener): |
| * UIProcess/API/C/WKAPICast.h: |
| * UIProcess/API/C/WKContextInjectedBundleClient.h: |
| * UIProcess/API/C/WKCookieManager.cpp: |
| (WKCookieManagerSetHTTPCookieAcceptPolicy): |
| * UIProcess/API/C/WKCookieManager.h: |
| * UIProcess/API/C/WKMessageListener.cpp: Copied from Source/WebKit/UIProcess/API/APIInjectedBundleClient.h. |
| (WKMessageListenerGetTypeID): |
| (WKMessageListenerSendReply): |
| * UIProcess/API/C/WKMessageListener.h: Copied from Source/WebKit/UIProcess/API/APIInjectedBundleClient.h. |
| * UIProcess/API/C/WKPageInjectedBundleClient.h: |
| * UIProcess/WebContextInjectedBundleClient.cpp: |
| (WebKit::WebContextInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle): |
| * UIProcess/WebContextInjectedBundleClient.h: |
| * UIProcess/WebPageInjectedBundleClient.cpp: |
| (WebKit::WebPageInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle): |
| * UIProcess/WebPageInjectedBundleClient.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::handleSynchronousMessage): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::injectedBundleClient): Deleted. |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::handleSynchronousMessage): |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-06-26 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iPadOS] eddm.usps.com scrolls horizontally due to explicit width set in viewport meta tag |
| https://bugs.webkit.org/show_bug.cgi?id=199219 |
| <rdar://problem/50425765> |
| |
| Reviewed by Tim Horton. |
| |
| Currently, the heuristic to determine whether the page should be shrunk to fit the content width after loading |
| works by checking whether the page's content is wider than the layout width we've provided for the page. |
| However, in the case where an explicit width larger than the true view width is specified by the page's meta |
| viewport, we'll end up believing that the page's content is not wider than the layout width, which is dictated |
| by the fixed meta viewport width. Instead, we can shrink the page down in this scenario by comparing the content |
| width against the scaled size of the view when computing the amount of horizontal overflow. |
| |
| Test: fast/viewport/ios/shrink-to-fit-content-large-constant-width.html |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::immediatelyShrinkToFitContent): |
| |
| 2019-06-26 Zalan Bujtas <zalan@apple.com> |
| |
| [ContentChangeObserver] Dispatch synthetic mouse event asynchronously in completePendingSyntheticClickForContentChangeObserver |
| https://bugs.webkit.org/show_bug.cgi?id=199220 |
| <rdar://problem/51787961> |
| |
| Reviewed by Simon Fraser. |
| |
| WebPage::completePendingSyntheticClickForContentChangeObserver should not dispatch mouse events synchronously. |
| Mouse events, through style updates could destroy the element that initiated this change. |
| WebPage::handleSyntheticClick() already implements this pattern. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver): |
| |
| 2019-06-25 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Implement a new SPI to inform clients about AppSSO |
| https://bugs.webkit.org/show_bug.cgi?id=199085 |
| <rdar://problem/50028246> |
| |
| Reviewed by Geoffrey Garen. |
| |
| This patch implements a new SPI to inform clients about incoming AppSSO interceptions during |
| navigations. Therefore, clients can make an informed decision about whether this is the right |
| moment to do the interception as interceptions often show native UI. Also, the SPI is designed |
| to pass along a human readable name for the extension such that clients can do whatever they |
| want to inform users about what's going on. |
| |
| Here is the new SPI: |
| - (void)_webView:(WKWebView *)webView decidePolicyForSOAuthorizationLoadWithCurrentPolicy:(_WKSOAuthorizationLoadPolicy)policy forExtension:(NSString *)extension completionHandler:(void (^)(_WKSOAuthorizationLoadPolicy policy))completionHandler; |
| |
| * UIProcess/API/APINavigationClient.h: |
| (API::NavigationClient::decidePolicyForSOAuthorizationLoad): |
| * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: |
| * UIProcess/Cocoa/NavigationState.h: |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::NavigationState::setNavigationDelegate): |
| (WebKit::soAuthorizationLoadPolicy): |
| (WebKit::wkSOAuthorizationLoadPolicy): |
| (WebKit::NavigationState::NavigationClient::decidePolicyForSOAuthorizationLoad): |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationLoadPolicy.h: Added. |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: |
| (WebKit::SOAuthorizationSession::start): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::decidePolicyForSOAuthorizationLoad): |
| * UIProcess/WebPageProxy.h: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-06-25 Simon Fraser <simon.fraser@apple.com> |
| |
| [iOS WK2 Debug] scrollingcoordinator/scrolling-tree/scroller-with-negative-z-child.html asserts |
| https://bugs.webkit.org/show_bug.cgi?id=199218 |
| |
| Reviewed by Zalan Bujtas. |
| |
| Followup to r246766; don't assert in the UI process if a ScrollingTreeOverflowScrollProxyNode |
| doesn't have a related overflow node; this is currently expected behavior with negative z-order |
| children of a scroller. |
| |
| * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: |
| (WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations): |
| |
| 2019-06-25 Daniel Bates <dabates@apple.com> |
| |
| Non-editable text selections should be modifiable with hardware keyboard |
| https://bugs.webkit.org/show_bug.cgi?id=199204 |
| <rdar://problem/51651496> |
| |
| Reviewed by Wenson Hsieh. |
| |
| UIKit changes are need for this to work, including <rdar://problem/48322899>. |
| Note that without these changes, -canPerformAction is never called for _move* |
| selectors. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView canPerformAction:withSender:]): |
| |
| 2019-06-25 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Should not process key events in non-editable elements using IME |
| https://bugs.webkit.org/show_bug.cgi?id=199122 |
| <rdar://problem/52006654> |
| |
| Reviewed by Brent Fulgham. |
| |
| Use the non-Input Method code path (the one we use for US keyboard input) for all key events |
| targeting a non-editable element. Such key events will never require Input Method support |
| (i.e. show candidate suggestions). Moreover, this behavior matches the behavior on Mac. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView handleKeyWebEvent:withCompletionHandler:]): |
| |
| 2019-06-25 Alex Christensen <achristensen@webkit.org> |
| |
| Make HTTPCookieAcceptPolicy an enum class |
| https://bugs.webkit.org/show_bug.cgi?id=199081 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Doing so reveals some interesting bugs in the C API that are also fixed: |
| WKPreferencesGetIncrementalRenderingSuppressionTimeout was using its toAPI function to convert a double to a double because HTTPCookieAcceptPolicy used to be an unsigned integer. |
| toAPI(WebCore::MouseButton) was also using the toAPI(HTTPCookieAcceptPolicy) because HTTPCookieAcceptPolicy used to be an unsigned integer. |
| Yikes! Type safety is our friend. |
| |
| * NetworkProcess/Cookies/WebCookieManager.messages.in: |
| * NetworkProcess/Cookies/mac/WebCookieManagerMac.mm: |
| (WebKit::toCFHTTPCookieStorageAcceptPolicy): |
| (WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy): |
| (WebKit::WebCookieManager::platformGetHTTPCookieAcceptPolicy): |
| * Shared/API/c/WKSharedAPICast.h: |
| (WebKit::toAPI): |
| * Shared/HTTPCookieAcceptPolicy.h: |
| (): Deleted. |
| * UIProcess/API/C/WKAPICast.h: |
| (WebKit::toHTTPCookieAcceptPolicy): |
| (WebKit::toAPI): |
| * UIProcess/API/C/WKPreferences.cpp: |
| (WKPreferencesGetIncrementalRenderingSuppressionTimeout): |
| * UIProcess/API/Cocoa/WKProcessPool.mm: |
| (toHTTPCookieAcceptPolicy): |
| * UIProcess/WebCookieManagerProxy.cpp: |
| (WebKit::WebCookieManagerProxy::didGetHTTPCookieAcceptPolicy): |
| * UIProcess/WebCookieManagerProxy.h: |
| * UIProcess/WebCookieManagerProxy.messages.in: |
| |
| 2019-06-25 Tim Horton <timothy_horton@apple.com> |
| |
| Wrong title for Data Detectors tap action menu |
| https://bugs.webkit.org/show_bug.cgi?id=199198 |
| <rdar://problem/51957842> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant showDataDetectorsSheet]): |
| Always pass the results array through to DataDetectors; they need it |
| to figure out the title too! |
| |
| 2019-06-25 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] Occasional crash under -[UIPreviewTarget initWithContainer:center:transform:] when generating a drag preview |
| https://bugs.webkit.org/show_bug.cgi?id=199192 |
| <rdar://problem/51554509> |
| |
| Reviewed by Tim Horton. |
| |
| Tweak our preview generation code (for both the context menu and dragging) to be robust in the case where the |
| content view's unscaled view is nil; this may happen in the case after the web content process is terminated |
| and -cleanupInteraction is called, but before -setupInteraction is subsequently called. |
| |
| Additionally, make our logic for creating targeted previews robust in the case where the view is removed from |
| the view hierarchy right before the platform asks for a targeted preview. |
| |
| Test: DragAndDropTests.WebProcessTerminationDuringDrag |
| DragAndDropTests.WebViewRemovedFromViewHierarchyDuringDrag |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView containerViewForTargetedPreviews]): |
| (-[WKContentView _deliverDelayedDropPreviewIfPossible:]): |
| (-[WKContentView dragInteraction:previewForLiftingItem:session:]): |
| (-[WKContentView _ensureTargetedPreview]): |
| |
| 2019-06-25 Youenn Fablet <youenn@apple.com> |
| |
| Close sockets with too high file descriptor |
| https://bugs.webkit.org/show_bug.cgi?id=199116 |
| |
| Reviewed by Eric Carlson. |
| |
| Log the case of failing to open a socket. |
| |
| * NetworkProcess/webrtc/NetworkRTCProvider.cpp: |
| (WebKit::NetworkRTCProvider::createSocket): |
| |
| 2019-06-25 Tim Horton <timothy_horton@apple.com> |
| |
| When Caps Lock is enabled on the Smart Keyboard, can't scroll with space or arrow keys |
| https://bugs.webkit.org/show_bug.cgi?id=199187 |
| <rdar://problem/51521709> |
| |
| Reviewed by Anders Carlsson. |
| |
| * UIProcess/ios/WKKeyboardScrollingAnimator.mm: |
| (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]): |
| When deciding whether a key event should start a scroll, ignore all |
| modifiers other than the ones we actually care about (including Caps Lock). |
| |
| 2019-06-25 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Fully rename WebKitGTK+ -> WebKitGTK everywhere |
| https://bugs.webkit.org/show_bug.cgi?id=199159 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp: |
| |
| 2019-06-24 Brady Eidson <beidson@apple.com> |
| |
| Null deref in WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad. |
| <rdar://problem/51535942> and https://bugs.webkit.org/show_bug.cgi?id=199123 |
| |
| Reviewed by Andy Estes. |
| |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad): Properly detect this null DocumentLoader |
| and try to learn more about the state of things. |
| |
| 2019-06-24 Chris Dumez <cdumez@apple.com> |
| |
| Pages using Google's anti-flicker optimization may take ~5 seconds to do initial paint |
| https://bugs.webkit.org/show_bug.cgi?id=199173 |
| <rdar://problem/45968770> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add experimental feature for the quirk. |
| |
| * Shared/WebPreferences.yaml: |
| |
| 2019-06-24 John Wilander <wilander@apple.com> |
| |
| Remove IsITPFirstPartyWebsiteDataRemovalEnabled as runtime check |
| https://bugs.webkit.org/show_bug.cgi?id=199164 |
| <rdar://problem/52061147> |
| |
| Reviewed by Brent Fulgham. |
| |
| We've had this toggle as a safety thing since mid-March. No need for it any longer. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveAllButCookiesFor const): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| * NetworkProcess/NetworkProcessCreationParameters.cpp: |
| (WebKit::NetworkProcessCreationParameters::encode const): |
| (WebKit::NetworkProcessCreationParameters::decode): |
| * NetworkProcess/NetworkProcessCreationParameters.h: |
| * Shared/WebPreferences.yaml: |
| * UIProcess/Cocoa/WebProcessPoolCocoa.mm: |
| (WebKit::WebProcessPool::platformInitializeNetworkProcess): |
| |
| 2019-06-24 Daniel Bates <dabates@apple.com> |
| |
| m_focusedElement != &element in WebPage::elementDidBlur() sometimes |
| https://bugs.webkit.org/show_bug.cgi?id=198928 |
| <rdar://problem/51814327> |
| |
| Reviewed by Brent Fulgham. |
| |
| This can happen when the focused editable element is inside a nested frame and a person |
| taps outside that frame. For reasons that seem lost to time, WebKit2 on iOS would mutate |
| the focused frame whenever computing selection positioning information (say, for a tap). |
| This "quirk" was added in r163476, but that code has go through multiple iterations and |
| is no longer comparable to the current code. Yet, the original mutation of the focused |
| frame remained. As a result the UI process and Web process go out of sync with respect |
| to what each thinks is the focused element and this visually manifest itself in at least |
| two ways: |
| |
| 1. A non-sensical DOM focus event would be dispatched at the frame tapped, but |
| we would keep the focused element focused. |
| |
| 2. Because we would keep the focused element focused in (1), even though its frame |
| is not focused, the keyboard would be active (software keyboard on screen or candidate bar |
| on screen if a hardware keyboard is attached), but appear unresponsive: any keys pressed |
| would not cause text to be typed into the editable field. |
| |
| Because of (1) it was possible for m_focusedElement != &element in WebPage::elementDidBlur(). |
| When this happens the UI process would never receive an ElementDidBlur message and hence would |
| not clear out the focused element state and hide the keyboard. |
| |
| We neither do this frame focus mutation in Legacy WebKit on iOS nor Mac. Let's remove this quirk. |
| If it turns out that it causes a compatibility issue then we will be in a better position to |
| understand its purpose and consider bringing this quirk back, if needed. |
| |
| * Shared/ios/InteractionInformationRequest.cpp: |
| (WebKit::InteractionInformationRequest::encode const): |
| (WebKit::InteractionInformationRequest::decode): |
| (WebKit::InteractionInformationRequest::isValidForRequest): |
| (WebKit::InteractionInformationRequest::isApproximatelyValidForRequest): |
| * Shared/ios/InteractionInformationRequest.h: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _requestActivatedElementAtPosition:completionBlock:]): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _webTouchEventsRecognized:]): |
| Remove the readOnly field. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::selectionPositionInformation): Remove code to mutate the focused frame. |
| |
| 2019-06-24 Per Arne Vollan <pvollan@apple.com> |
| |
| [Cocoa] Avoid creating a PlatformMediaSessionManager when the WebProcess is suspended or resumed |
| https://bugs.webkit.org/show_bug.cgi?id=199160 |
| |
| Reviewed by Brent Fulgham. |
| |
| When the WebProcess suspends or resumes, the PlatformMediaSessionManager is notified about this. |
| Avoid creating a new PlatformMediaSessionManager if it does not already exist. |
| |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::actualPrepareToSuspend): |
| (WebKit::WebProcess::cancelPrepareToSuspend): |
| (WebKit::WebProcess::processDidResume): |
| |
| 2019-06-24 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [WPE][GTK] Fixes for compilation with unified builds disabled |
| https://bugs.webkit.org/show_bug.cgi?id=199155 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * NetworkProcess/glib/DNSCache.cpp: Add missing inclusion of wtf/glib/RunLoopSourcePriority.h |
| * NetworkProcess/glib/DNSCache.h: Add missing forward declaration for GInetAddress |
| |
| 2019-06-24 Alexander Mikhaylenko <exalm7659@gmail.com> |
| |
| [GTK] Navigation gesture should use dark fallback bg color on dark themes |
| https://bugs.webkit.org/show_bug.cgi?id=199104 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Use theme_base_color instead of white background for swipe gesture fallback if no snapshot is found and |
| the page did not specify a color. This allows it to use dark colors for dark themes. If the color was |
| not found, still fall back to white. |
| |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::ViewGestureController::beginSwipeGesture): |
| |
| 2019-06-23 Dan Bernstein <mitz@apple.com> |
| |
| Platform font class gets needlessly initialized in the Networking process |
| https://bugs.webkit.org/show_bug.cgi?id=199140 |
| |
| Reviewed by Tim Horton. |
| |
| * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in: Revert a change that was made in |
| r246702, which is not needed anymore. |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Ditto. |
| |
| * Shared/Cocoa/ArgumentCodersCocoa.mm: |
| (IPC::platformColorClass): Added getter that uses NSClassFromString, thereby avoiding |
| initializing the class. |
| (IPC::platformFontClass): Ditto. |
| (IPC::typeFromObject): Changed to use the above getters instead of +class. |
| |
| 2019-06-23 Simon Fraser <simon.fraser@apple.com> |
| |
| [Async overflow scroll] Clipped composited layers inside overflow scroll jitter and get incorrectly clipped |
| https://bugs.webkit.org/show_bug.cgi?id=199133 |
| rdar://problem/43614439 |
| |
| Reviewed by Antti Koivisto. |
| |
| LayoutConstraints -> AbsolutePositionConstraints rename. |
| |
| * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: |
| (ArgumentCoder<ScrollingStatePositionedNode>::decode): |
| * Shared/WebCoreArgumentCoders.cpp: |
| (IPC::ArgumentCoder<AbsolutePositionConstraints>::encode): |
| (IPC::ArgumentCoder<AbsolutePositionConstraints>::decode): |
| (IPC::ArgumentCoder<LayoutConstraints>::encode): Deleted. |
| (IPC::ArgumentCoder<LayoutConstraints>::decode): Deleted. |
| * Shared/WebCoreArgumentCoders.h: |
| * Shared/WebRenderLayer.cpp: |
| (WebKit::WebRenderLayer::WebRenderLayer): |
| * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: |
| (WebKit::RemoteScrollingCoordinatorProxy::establishLayerTreeScrollingRelations): ScrollingTreeOverflowScrollProxyNode |
| have overflow scroll relations now too. |
| |
| 2019-06-23 Simon Fraser <simon.fraser@apple.com> |
| |
| Add OverflowScrollProxyNodes to the scrolling tree |
| https://bugs.webkit.org/show_bug.cgi?id=199132 |
| |
| Reviewed by Antti Koivisto. |
| |
| Add ScrollingStateOverflowScrollProxyNode and ScrollingTreeOverflowScrollProxyNode. These |
| nodes represent clip and scroll position for an overflow:scroll in the containing block chain, |
| but not the paint ancestor chain of a layer. They will be used to correctly manipulate clip |
| rects for composited layers in non-stacking-context scrollers, and in a future patch will |
| replace the functionality of "Moves" positioned nodes. |
| |
| An OverflowScrollProxyNode has the ScrollingNodeID of the scrolling node that it relates to, |
| and we use the existing "related overflow nodes" to create the back references in the scrolling tree. |
| |
| These nodes are not instantiated yet; a future patch will hook them up. |
| |
| * Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: |
| (ArgumentCoder<ScrollingStateOverflowScrollProxyNode>::encode): |
| (ArgumentCoder<ScrollingStateOverflowScrollProxyNode>::decode): |
| (WebKit::encodeNodeAndDescendants): |
| (WebKit::RemoteScrollingCoordinatorTransaction::decode): |
| (WebKit::dump): |
| * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: |
| (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers): |
| * UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp: |
| (WebKit::RemoteScrollingTree::createScrollingTreeNode): |
| * UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: |
| (WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers): |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: |
| (WebKit::ScrollingTreeScrollingNodeDelegateIOS::repositionScrollingLayers): |
| |
| 2019-06-21 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Unreviewed, a build fix after r246701 |
| |
| * Shared/LoadParameters.h: |
| Add a default value for shouldOpenExternalURLsPolicy. |
| |
| 2019-06-21 Brent Fulgham <bfulgham@apple.com> |
| |
| Adjust sandboxes based on seed feedback |
| https://bugs.webkit.org/show_bug.cgi?id=199119 |
| <rdar://problem/50164879> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Update our sandboxes to address test failures and bugs encountered during initial iOS 13 and |
| macOS Catalina testing. |
| |
| * NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in: |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| * WebProcess/com.apple.WebProcess.sb.in: |
| |
| 2019-06-21 Jiewen Tan <jiewen_tan@apple.com> |
| |
| WebPageProxy::loadData should accept ShouldOpenExternalURLsPolicy |
| https://bugs.webkit.org/show_bug.cgi?id=199114 |
| <rdar://problem/51671674> |
| |
| Reviewed by Youenn Fablet. |
| |
| This patch teaches WebPageProxy::loadData to accept ShouldOpenExternalURLsPolicy policy, |
| and then utilize it in RedirectSOAuthorizationSession. Therefore, the response loaded after |
| successful interceptions will be able to propagate the same policy from the last navigation |
| as it were continuous loading. |
| |
| Besides the above, this patch also fixes some minor issues. |
| |
| * Shared/LoadParameters.h: |
| * UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.mm: |
| (WebKit::NavigationSOAuthorizationSession::shouldStartInternal): |
| (WebKit::NavigationSOAuthorizationSession::webViewDidMoveToWindow): |
| * UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.h: |
| * UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.mm: |
| (WebKit::PopUpSOAuthorizationSession::completeInternal): |
| * UIProcess/Cocoa/SOAuthorization/RedirectSOAuthorizationSession.h: |
| * UIProcess/Cocoa/SOAuthorization/RedirectSOAuthorizationSession.mm: |
| (WebKit::shouldOpenExternalURLsPolicy): |
| (WebKit::RedirectSOAuthorizationSession::completeInternal): |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.h: |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: |
| (WebKit::SOAuthorizationSession::complete): |
| * UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.h: |
| * UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm: |
| (WebKit::SubFrameSOAuthorizationSession::fallBackToWebPathInternal): |
| (WebKit::SubFrameSOAuthorizationSession::completeInternal): |
| (WebKit::SubFrameSOAuthorizationSession::loadDataToFrame): |
| (WebKit::SubFrameSOAuthorizationSession::postDidCancelMessageToParent): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadFile): |
| (WebKit::WebPageProxy::loadData): |
| (WebKit::WebPageProxy::loadDataWithNavigationShared): |
| * UIProcess/WebPageProxy.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::loadDataImpl): |
| (WebKit::WebPage::loadData): |
| * WebProcess/WebPage/WebPage.h: |
| |
| 2019-06-21 Tim Horton <timothy_horton@apple.com> |
| |
| WebKit context menu highlights include extra padding |
| https://bugs.webkit.org/show_bug.cgi?id=199080 |
| <rdar://problem/51140126> |
| |
| Reviewed by Dean Jackson. |
| |
| * Shared/ios/InteractionInformationRequest.cpp: |
| (WebKit::InteractionInformationRequest::encode const): |
| (WebKit::InteractionInformationRequest::decode): |
| (WebKit::InteractionInformationRequest::isValidForRequest): |
| (WebKit::InteractionInformationRequest::isApproximatelyValidForRequest): |
| * Shared/ios/InteractionInformationRequest.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView gestureRecognizerShouldBegin:]): |
| (-[WKContentView positionInformationForActionSheetAssistant:]): |
| (-[WKContentView updatePositionInformationForActionSheetAssistant:]): |
| (-[WKContentView _contextMenuInteraction:configurationForMenuAtLocation:completion:]): |
| (-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::linkIndicatorPositionInformation): |
| Disable the margin going forward, but leave it if we're using the legacy |
| API, because there is no way to add margin at the platform level with |
| the legacy API. |
| |
| In the future we should always have no margin in our indicator, and just |
| apply it in whatever consumes the indicator, so that there is no |
| disagreement between clients about the size of the margin. |
| |
| 2019-06-21 Youenn Fablet <youenn@apple.com> |
| |
| WebPageProxy should use the right path for sandbox extension |
| https://bugs.webkit.org/show_bug.cgi?id=198902 |
| <rdar://problem/50772810> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Store the sandbox path, if any, in UIProcess for each page in its PageLoadState. |
| This allows proper sandbox handling for reload after crash and process swap cases. |
| Store the sandbox path, if any, in the b/w list so that the sandbox path can be properly computed |
| during b/f navigation works. |
| |
| Add SPI for test purposes to check what is the current sandbox path. |
| |
| * Shared/WebBackForwardListItem.h: |
| (WebKit::WebBackForwardListItem::resourceDirectoryURL const): |
| (WebKit::WebBackForwardListItem::setResourceDirectoryURL): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _resourceDirectoryURL]): |
| * UIProcess/API/Cocoa/WKWebViewPrivate.h: |
| * UIProcess/PageLoadState.cpp: |
| (WebKit::PageLoadState::resourceDirectoryURL const): |
| (WebKit::PageLoadState::setPendingAPIRequestURL): |
| * UIProcess/PageLoadState.h: |
| (WebKit::PageLoadState::setPendingAPIRequestURL): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle): |
| (WebKit::WebPageProxy::loadRequestWithNavigationShared): |
| (WebKit::WebPageProxy::loadFile): |
| (WebKit::WebPageProxy::reload): |
| (WebKit::WebPageProxy::backForwardAddItem): |
| (WebKit::WebPageProxy::backForwardGoToItemShared): |
| (WebKit::WebPageProxy::currentResourceDirectoryURL const): |
| * UIProcess/WebPageProxy.h: |
| |
| 2019-06-21 Antoine Quint <graouts@apple.com> |
| |
| [iOS] Compatibility mouse events aren't prevented by calling preventDefault() on pointerdown |
| https://bugs.webkit.org/show_bug.cgi?id=198124 |
| <rdar://problem/50410863> |
| |
| Reviewed by Dean Jackson. |
| |
| Ensure we wait until completion of a tap before removing the pointer ID and the preventDefault() state along with it. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _singleTapDidReset:]): |
| (-[WKContentView _commitPotentialTapFailed]): |
| (-[WKContentView _didCompleteSyntheticClick]): |
| (-[WKContentView _singleTapRecognized:]): |
| |
| 2019-06-21 Keith Rollin <krollin@apple.com> |
| |
| Address reference to UIColor.groupTableViewBackgroundColor in WKPasswordView.mm |
| https://bugs.webkit.org/show_bug.cgi?id=199111 |
| <rdar://problem/51992107> |
| |
| Reviewed by Timothy Hatcher. |
| |
| WKPasswordView.mm is used on iOS-family devices. However, it doesn't |
| build on tvOS or watchOS when "treat deprecation warnings as errors" |
| is enabled. This build failure is due to a reference to |
| UIColor.groupTableViewBackgroundColor in a branch of non-dark-mode |
| code. Address this by surrounding the reference with |
| ALLOW_DEPRECATED_DECLARATIONS_* macros. |
| |
| Attempting to address the build failure by unconditionally enabling |
| the dark-mode code works for tvOS, but fails for watchOS due to lack |
| of dark-mode support on that platform. |
| |
| * UIProcess/ios/WKPasswordView.mm: |
| (-[WKPasswordView showInScrollView:]): |
| |
| 2019-06-21 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [WPE][GTK] Bump minimum versions of GLib, GTK, libsoup, ATK, GStreamer, and Cairo |
| https://bugs.webkit.org/show_bug.cgi?id=199094 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * NetworkProcess/soup/NetworkDataTaskSoup.cpp: |
| (WebKit::NetworkDataTaskSoup::createRequest): |
| (WebKit::NetworkDataTaskSoup::writeDownloadCallback): |
| (WebKit::NetworkDataTaskSoup::writeDownload): |
| (WebKit::NetworkDataTaskSoup::startingCallback): |
| (WebKit::NetworkDataTaskSoup::requestStartedCallback): Deleted. |
| * Shared/gtk/WebEventFactory.cpp: |
| (WebKit::buttonForEvent): |
| (WebKit::WebEventFactory::createWebMouseEvent): |
| (WebKit::WebEventFactory::createWebWheelEvent): |
| (WebKit::WebEventFactory::createWebKeyboardEvent): |
| (WebKit::WebEventFactory::createWebTouchEvent): |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::doneWithTouchEvent): |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (ClickCounter::currentClickCountForGdkButtonEvent): |
| (webkitWebViewBaseRealize): |
| (webkitWebViewBaseHandleMouseEvent): |
| (webkitWebViewBaseGetTouchPointsForEvent): |
| (webkitWebViewBaseTouchEvent): |
| (webkitWebViewBaseGestureController): |
| (webkitWebViewBaseEvent): |
| (deviceScaleFactorChanged): |
| (webkitWebViewBaseCreateWebPage): |
| (webkitWebViewBaseTakeViewSnapshot): |
| * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: |
| * UIProcess/API/gtk/WebKitWebViewDialog.cpp: |
| (webkitWebViewDialogDraw): |
| (webkitWebViewDialogConstructed): |
| (webkit_web_view_dialog_class_init): |
| * UIProcess/API/gtk/WebKitWebViewGtk.cpp: |
| (fileChooserDialogResponseCallback): |
| (webkitWebViewRunFileChooser): |
| * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp: |
| (WebKit::doMouseEvent): |
| (WebKit::doMotionEvent): |
| (WebKit::doKeyStrokeEvent): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: |
| (WebKit::AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland): |
| (WebKit::AcceleratedBackingStoreWayland::tryEnsureGLContext): |
| (WebKit::AcceleratedBackingStoreWayland::makeContextCurrent): |
| (WebKit::AcceleratedBackingStoreWayland::paint): |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.h: |
| * UIProcess/gtk/DragAndDropHandler.cpp: |
| (WebKit::DragAndDropHandler::startDrag): |
| (WebKit::DragAndDropHandler::fillDragData): |
| (WebKit::DragAndDropHandler::finishDrag): |
| * UIProcess/gtk/DragAndDropHandler.h: |
| * UIProcess/gtk/GestureController.cpp: |
| (WebKit::GestureController::handleEvent): |
| * UIProcess/gtk/GestureController.h: |
| * UIProcess/gtk/InputMethodFilter.cpp: |
| (WebKit::InputMethodFilter::filterKeyEvent): |
| (WebKit::InputMethodFilter::logHandleKeyboardEventForTesting): |
| (WebKit::InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting): |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::isEventStop): |
| (WebKit::createScrollEvent): |
| * UIProcess/gtk/WebContextMenuProxyGtk.cpp: |
| (WebKit::WebContextMenuProxyGtk::append): |
| (WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk): |
| (WebKit::WebContextMenuProxyGtk::~WebContextMenuProxyGtk): |
| * UIProcess/gtk/WebKitInspectorWindow.cpp: |
| (webkit_inspector_window_init): |
| (webkitInspectorWindowSetSubtitle): |
| * UIProcess/gtk/WebPageProxyGtk.cpp: |
| (WebKit::WebPageProxy::getCenterForZoomGesture): |
| * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: |
| (WebKit::WebPopupMenuProxyGtk::showPopupMenu): |
| (WebKit::WebPopupMenuProxyGtk::hidePopupMenu): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/gtk/WebPageGtk.cpp: |
| (WebKit::WebPage::getCenterForZoomGesture): |
| |
| 2019-06-20 Patrick Griffis <pgriffis@igalia.com> and Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] Implement a basic DNS cache |
| https://bugs.webkit.org/show_bug.cgi?id=196094 |
| |
| Reviewed by Michael Catanzaro. |
| |
| This adds a simple cache to all DNS operations in the network process. |
| |
| * NetworkProcess/glib/DNSCache.cpp: Added. |
| (WebKit::DNSCache::DNSCache): |
| (WebKit::DNSCache::mapForType): |
| (WebKit::DNSCache::lookup): |
| (WebKit::DNSCache::update): |
| (WebKit::DNSCache::removeExpiredResponsesInMap): |
| (WebKit::DNSCache::pruneResponsesInMap): |
| (WebKit::DNSCache::removeExpiredResponsesFired): |
| (WebKit::DNSCache::clear): |
| * NetworkProcess/glib/DNSCache.h: Added. |
| * NetworkProcess/glib/WebKitCachedResolver.cpp: Added. |
| (addressListVectorToGList): |
| (addressListGListToVector): |
| (webkitCachedResolverLookupByName): |
| (webkitCachedResolverLookupByNameAsync): |
| (webkitCachedResolverLookupByNameFinish): |
| (dnsCacheType): |
| (webkitCachedResolverLookupByNameWithFlags): |
| (webkitCachedResolverLookupByNameWithFlagsAsync): |
| (webkitCachedResolverLookupByNameWithFlagsFinish): |
| (webkitCachedResolverLookupByAddress): |
| (webkitCachedResolverLookupByAddressAsync): |
| (webkitCachedResolverLookupByAddressFinish): |
| (webkitCachedResolverLookupRecords): |
| (webkitCachedResolverLookupRecordsAsync): |
| (webkitCachedResolverLookupRecordsFinish): |
| (webkitCachedResolverReload): |
| (webkit_cached_resolver_class_init): |
| (webkitCachedResolverNew): |
| * NetworkProcess/glib/WebKitCachedResolver.h: Added. |
| * NetworkProcess/soup/NetworkProcessSoup.cpp: |
| (WebKit::NetworkProcess::platformInitializeNetworkProcess): |
| * PlatformGTK.cmake: |
| * PlatformWPE.cmake: |
| * SourcesGTK.txt: |
| * SourcesWPE.txt: |
| |
| 2019-06-20 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Stop pretending WebCore::Widget can have a platform widget |
| https://bugs.webkit.org/show_bug.cgi?id=199066 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Rename PlatformWidget as PlatformViewWidget to avoid conflict with PlatformWidget defined in WebCore. |
| |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/win/WebPageProxyWin.cpp: |
| (WebKit::WebPageProxy::viewWidget): |
| |
| 2019-06-20 Megan Gardner <megan_gardner@apple.com> |
| |
| Remove change that was causing hangs |
| https://bugs.webkit.org/show_bug.cgi?id=199055 |
| <rdar://problem/51820516> |
| |
| Reviewed by Darin Adler. |
| |
| This fix can sometimes cause deadlocks in the UIProcess. |
| We have a different fix that will go into UIKit <rdar://problem/51927701>. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _selectionChanged]): |
| |
| 2019-06-20 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Evernote crashes when creating a note |
| https://bugs.webkit.org/show_bug.cgi?id=199083 |
| <rdar://problem/51759247> |
| |
| Reviewed by Brent Fulgham. |
| |
| Add a hack just for Evernote linked before iOS 13 that dynamically adds a placeholder -[WKContentView keyCommands] |
| method (it just calls super). Evernote swizzles the IPI -[WKContentView keyCommands], but this |
| method may not always be present in the WebKit binary following r240514. So, Evernote may end |
| up swizzling -[UIResponder keyCommands], but their implementation doesn't account for this |
| scenario and they end up crashing because they call an unrecognized selector. |
| |
| * UIProcess/Cocoa/VersionChecks.h: Add version check. |
| * UIProcess/ios/WKContentView.mm: |
| (keyCommandsPlaceholderHackForEvernote): Added. |
| (-[WKContentView _commonInitializationWithProcessPool:configuration:]): Install the hack. |
| |
| 2019-06-20 Brady Eidson <beidson@apple.com> |
| |
| WebURLSchemeHandlerProxy::loadSynchronously crash with sync request. |
| <rdar://problem/51862206> and https://bugs.webkit.org/show_bug.cgi?id=199063 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Don't use a DataReference for the sync reply type. |
| |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/WebURLSchemeHandler.h: |
| |
| * UIProcess/WebURLSchemeTask.cpp: |
| (WebKit::WebURLSchemeTask::didComplete): |
| * UIProcess/WebURLSchemeTask.h: |
| |
| * WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp: |
| (WebKit::WebURLSchemeHandlerProxy::loadSynchronously): |
| |
| 2019-06-20 Alex Christensen <achristensen@webkit.org> |
| |
| Add unit test for UIContextMenuConfiguration API |
| https://bugs.webkit.org/show_bug.cgi?id=199043 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/API/APIPageConfiguration.cpp: |
| (API::PageConfiguration::copy const): |
| * UIProcess/API/APIPageConfiguration.h: |
| (API::PageConfiguration::clickInteractionDriverForTesting const): |
| (API::PageConfiguration::setClickInteractionDriverForTesting): |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| (-[WKWebViewConfiguration _setClickInteractionDriverForTesting:]): |
| (-[WKWebViewConfiguration _clickInteractionDriverForTesting]): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _registerPreview]): |
| |
| 2019-06-20 Alexander Mikhaylenko <exalm7659@gmail.com> |
| |
| [GTK] Enable navigation swipe layout tests |
| https://bugs.webkit.org/show_bug.cgi?id=198995 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Implement API for enabling and controlling swipes from WebKitTestRunner. |
| |
| Implement beginSimulatedSwipeInDirectionForTesting() and completeSimulatedSwipeInDirectionForTesting() |
| in ViewGestureController for controlling the test swipes. Add functions in WebKitWebViewBase for calling |
| them. |
| |
| Simulate the gesture by generating two scroll events: one to begin the gesture and one to complete it. |
| |
| Since there's no reliable way to set source device type of the generated events to touchpad, don't check |
| source device type for simulated swipes. |
| |
| * UIProcess/API/C/gtk/WKView.cpp: |
| (WKViewSetEnableBackForwardNavigationGesture): Added. |
| (WKViewBeginBackSwipeForTesting): Added. |
| (WKViewCompleteBackSwipeForTesting): Added. |
| * UIProcess/API/C/gtk/WKViewPrivate.h: |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseBeginBackSwipeForTesting): Added. |
| (webkitWebViewBaseCompleteBackSwipeForTesting): Added. |
| * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: |
| * UIProcess/ViewGestureController.h: |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe): |
| Skip source device type check for simulated swipes. Also, remove an incorrect FIXME. |
| (WebKit::createScrollEvent): Added. |
| (WebKit::ViewGestureController::beginSimulatedSwipeInDirectionForTesting): Implemented. |
| (WebKit::ViewGestureController::completeSimulatedSwipeInDirectionForTesting): Implemented. |
| |
| 2019-06-20 Charlie Turner <cturner@igalia.com> |
| |
| [GTK] Make startup pause available in DEVELOPER_MODE rather than DEBUG. |
| https://bugs.webkit.org/show_bug.cgi?id=199069 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * WebProcess/gtk/WebProcessMainGtk.cpp: Allow developers to pause |
| the web process in DEVELOPER_MODE rather than only DEBUG, matching |
| the WPE behaviour and also the purpose of DEVELOPER_MODE. |
| |
| 2019-06-20 Alexander Mikhaylenko <exalm7659@gmail.com> |
| |
| [GTK] The Previous/Next gesture should handle RTL |
| https://bugs.webkit.org/show_bug.cgi?id=198707 |
| |
| Reviewed by Michael Catanzaro. |
| |
| The gesture uses PageClientImpl::userInterfaceLayoutDirection() to determine the text |
| direction. Implement that method, then adjust drawing so that the pages move from/to |
| the left instead of right side for RTL locales. |
| |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::): Implemented. |
| * UIProcess/API/gtk/PageClientImpl.h: |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::ViewGestureController::draw): |
| |
| 2019-06-20 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Remove support for GTK2 plugins |
| https://bugs.webkit.org/show_bug.cgi?id=199065 |
| |
| Reviewed by Sergio Villar Senin. |
| |
| * PlatformGTK.cmake: |
| * Shared/Plugins/Netscape/NetscapePluginModule.cpp: |
| (WebKit::moduleMixesGtkSymbols): |
| * Shared/Plugins/Netscape/unix/NetscapePluginModuleUnix.cpp: |
| (WebKit::NetscapePluginModule::getPluginInfo): |
| * Shared/Plugins/PluginModuleInfo.h: |
| * Shared/gtk/WebEventFactory.cpp: |
| (WebKit::isGdkKeyCodeFromKeyPad): |
| (WebKit::buttonForEvent): |
| (WebKit::WebEventFactory::createWebMouseEvent): |
| (WebKit::WebEventFactory::createWebWheelEvent): |
| (WebKit::WebEventFactory::createWebKeyboardEvent): |
| (WebKit::WebEventFactory::createWebTouchEvent): |
| * SourcesGTK.txt: |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| * UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: |
| (WebKit::ProcessLauncher::launchProcess): |
| * UIProcess/Plugins/PluginProcessProxy.h: |
| * UIProcess/Plugins/gtk/PluginInfoCache.cpp: |
| (WebKit::PluginInfoCache::getPluginInfo): |
| (WebKit::PluginInfoCache::updatePluginInfo): |
| * UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp: |
| (WebKit::PluginInfoStore::getPluginInfo): |
| * UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp: |
| (WebKit::PluginProcessProxy::platformGetLaunchOptionsWithAttributes): |
| (WebKit::PluginProcessProxy::scanPlugin): |
| * WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp: |
| |
| 2019-06-19 Dean Jackson <dino@apple.com> |
| |
| No menu pop-up when long pressing on a link in Firefox app |
| https://bugs.webkit.org/show_bug.cgi?id=199045 |
| <rdar://problem/51422407> |
| |
| Reviewed by Tim Horton. |
| |
| Add a version check for linking on-or-after iOS 13. When |
| that isn't true, we don't use UIContextMenuInteraction |
| and instead fall back on the legacy UIPreviewItem API. |
| |
| * UIProcess/Cocoa/VersionChecks.h: Add FirstThatHasUIContextMenuInteraction. |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _shouldUseContextMenus]): New method to decide if we should |
| use context menus or preview items. |
| (-[WKContentView setupInteraction]): Make the decision at runtime rather than |
| compile time. |
| (-[WKContentView _contentsOfUserInterfaceItem:]): Ditto. |
| (-[WKContentView _registerPreview]): Ditto. |
| (-[WKContentView _unregisterPreview]): Ditto. |
| |
| 2019-06-19 Andy Estes <aestes@apple.com> |
| |
| [iOS] Fall back to taking a UIView snapshohot for UITargetedPreviews if InteractionInformationAtPosition does not have an image |
| https://bugs.webkit.org/show_bug.cgi?id=199038 |
| <rdar://problem/50555810> |
| |
| Reviewed by Tim Horton. |
| |
| In -contextMenuInteraction:previewForHighlightingMenuWithConfiguration: and friend, we |
| should always return a non-nil UITargetedPreview. When we do return nil, UIKit uses the web |
| view itself as the snapshot view, creating an unsightly animation. |
| |
| For cases where we fail to create a UITargetedPreview from the information in |
| InteractionInformationAtPosition, this patch falls back to creating a UITargetedPreview with |
| a snapshot view obtained from |
| -[UIView resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets:]. |
| |
| Also renamed -targetedPreview to -_ensureTargetedPreview and cached the UITargetedPreview |
| for reuse in -contextMenuInteraction:previewForDismissingMenuWithConfiguration:. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (createFallbackTargetedPreview): |
| (-[WKContentView _ensureTargetedPreview]): |
| (-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): |
| (-[WKContentView contextMenuInteraction:previewForDismissingMenuWithConfiguration:]): |
| (-[WKContentView contextMenuInteractionDidEnd:]): |
| (-[WKContentView _targetedPreview]): Renamed to _ensureTargetedPreview. |
| |
| 2019-06-19 Devin Rousso <drousso@apple.com> |
| |
| Web Inspector: Network: replace CFNetwork SPI with new API where able |
| https://bugs.webkit.org/show_bug.cgi?id=198762 |
| |
| Reviewed by Timothy Hatcher. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]): |
| |
| 2019-06-19 Alex Christensen <achristensen@webkit.org> |
| |
| DownloadMonitor::measuredThroughputRate should approach zero with no throughput |
| https://bugs.webkit.org/show_bug.cgi?id=198981 |
| <rdar://problem/51456914> |
| |
| Reviewed by Geoffrey Garen. |
| |
| When the timer fires to approximate the download rate, add a new timestamp with 0 bytes received since the last time we received bytes. |
| Then, if there's only one timestamp, assume the throughput rate is 0 instead of infinite. |
| This will prevent false positives estimating large download rates based on old data when the throughput drops to 0. |
| |
| * NetworkProcess/Downloads/DownloadMonitor.cpp: |
| (WebKit::DownloadMonitor::measuredThroughputRate const): |
| (WebKit::DownloadMonitor::timerFired): |
| |
| 2019-06-19 Sihui Liu <sihui_liu@apple.com> |
| |
| Remove unused originsWithCredentials from WebsiteData |
| https://bugs.webkit.org/show_bug.cgi?id=199020 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * Shared/WebsiteData/WebsiteData.cpp: |
| (WebKit::WebsiteData::encode const): |
| (WebKit::WebsiteData::decode): |
| * Shared/WebsiteData/WebsiteData.h: |
| |
| 2019-06-19 Sihui Liu <sihui_liu@apple.com> |
| |
| Crash at com.apple.WebKit: WebKit::WebsiteDataStore::processPools const |
| https://bugs.webkit.org/show_bug.cgi?id=198935 |
| <rdar://problem/51549308> |
| |
| Reviewed by Geoffrey Garen. |
| |
| When WebProcessProxy is in WebProcessCache or is pre-warmed, it does not hold a strong reference of |
| WebProcessPool. In this case, we should not store the raw pointer of WebProcessPool and perform websiteDataStore |
| operations with it. |
| This patch should fix the crash at dereferencing null pointer of WebProcessPool in |
| WebsiteDataStore::processPools, but it is unclear why websiteDataStore comes to observe cached or prewarmed web |
| process that should not have web page. The release log may help us find the cause. |
| |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::processPoolIfExists const): |
| * UIProcess/WebProcessProxy.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::processPools const): |
| |
| 2019-06-19 Alex Christensen <achristensen@webkit.org> |
| |
| Add a unit test for client certificate authentication |
| https://bugs.webkit.org/show_bug.cgi?id=197800 |
| |
| Reviewed by Youenn Fablet. |
| |
| * Shared/cf/ArgumentCodersCF.cpp: |
| Move SPI declarations to SecuritySPI.h. |
| |
| 2019-06-19 Alex Christensen <achristensen@webkit.org> |
| |
| Update preview API deprecation message. |
| https://bugs.webkit.org/show_bug.cgi?id=198974 |
| |
| * UIProcess/API/Cocoa/WKUIDelegate.h: |
| |
| 2019-06-19 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [GTK] Fix compilation errors for the GTK2 plugin process |
| https://bugs.webkit.org/show_bug.cgi?id=199000 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * Shared/gtk/WebEventFactory.cpp: Use the GdkEvent union fields |
| when directly accessing event struct fields. |
| (WebKit::buttonForEvent): |
| (WebKit::WebEventFactory::createWebMouseEvent): |
| (WebKit::WebEventFactory::createWebKeyboardEvent): |
| |
| 2019-06-19 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [WPE][GTK] Fix build with unified sources disabled |
| https://bugs.webkit.org/show_bug.cgi?id=198752 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: |
| (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker): Qualify SQLiteDatabase |
| with its namespace. |
| * UIProcess/WebFrameProxy.h: Replace forward declaration of WebPageProxy with inclusion |
| of WebPageProxy.h to avoid build error due to usage of undefined class. Moved DataCallback |
| definition from WebPageProxy.h to avoid code using the type before its declaration. |
| * UIProcess/WebPageProxy.h: Remove definition of DataCallback. |
| * UIProcess/wpe/WebInspectorProxyWPE.cpp: Add missing forward declaration of |
| WebCore::FloatRect. |
| (WebKit::WebInspectorProxy::platformSetSheetRect): Qualify FloatRect with its namespace. |
| * WebProcess/Automation/WebAutomationSessionProxy.cpp: Qualify all occurrences of |
| PageIdentifier with its namespace. |
| (WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): |
| (WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal): |
| (WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle): |
| (WebKit::WebAutomationSessionProxy::resolveChildFrameWithName): |
| (WebKit::WebAutomationSessionProxy::resolveParentFrame): |
| (WebKit::WebAutomationSessionProxy::focusFrame): |
| (WebKit::WebAutomationSessionProxy::computeElementLayout): |
| (WebKit::WebAutomationSessionProxy::selectOptionElement): |
| (WebKit::WebAutomationSessionProxy::takeScreenshot): |
| (WebKit::WebAutomationSessionProxy::getCookiesForFrame): |
| (WebKit::WebAutomationSessionProxy::deleteCookie): |
| * WebProcess/Cache/WebCacheStorageConnection.cpp: Ditto. |
| (WebKit::WebCacheStorageConnection::open): |
| (WebKit::WebCacheStorageConnection::remove): |
| (WebKit::WebCacheStorageConnection::retrieveCaches): |
| (WebKit::WebCacheStorageConnection::retrieveRecords): |
| (WebKit::WebCacheStorageConnection::batchDeleteOperation): |
| (WebKit::WebCacheStorageConnection::batchPutOperation): |
| * WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp: Add missing inclusion of WebPage.h |
| * WebProcess/WebPage/gtk/WebPageGtk.cpp: Add missing inclusion of gtk/gtk.h |
| * WebProcess/WebPage/wpe/WebPageWPE.cpp: Add missing inclusion of WebPageProxy.h |
| |
| 2019-06-19 Alexander Mikhaylenko <exalm7659@gmail.com> |
| |
| [GTK] Page blinks after navigation swipe if it triggered PSON |
| https://bugs.webkit.org/show_bug.cgi?id=198996 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Disconnect and then reconnect ViewGestureController during process swap |
| instead of destroying and re-creating it. |
| |
| * UIProcess/API/gtk/PageClientImpl.cpp: |
| (WebKit::PageClientImpl::PageClientImpl::processWillSwap): Added. |
| (WebKit::PageClientImpl::PageClientImpl::processDidExit): Implemented. |
| * UIProcess/API/gtk/PageClientImpl.h: |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseWillSwapWebProcess): Added. |
| Disconnect ViewGestureController if it exists. |
| (webkitWebViewBaseDidExitWebProcess): Added. |
| Destroy ViewGestureController. |
| (webkitWebViewBaseDidRelaunchWebProcess): |
| Reconnect the ViewGestureController if it exists. |
| * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: |
| |
| 2019-06-19 Takashi Komori <Takashi.Komori@sony.com> |
| |
| [Curl] CurlRequestScheduler doesn't terminate worker thread in a certain situation. |
| https://bugs.webkit.org/show_bug.cgi?id=198993 |
| |
| Cancel CurlRequest before invalidation to remove tasks from CurlRequestScheduler certainly in ~NetworkDataTaskCurl. |
| |
| Reviewed by Fujii Hironori. |
| |
| * NetworkProcess/curl/NetworkDataTaskCurl.cpp: |
| (WebKit::NetworkDataTaskCurl::~NetworkDataTaskCurl): |
| |
| 2019-06-19 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Nicosia] Invalidate SceneIntegration in LayerTreeHost::invalidate() |
| https://bugs.webkit.org/show_bug.cgi?id=198992 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: |
| (WebKit::LayerTreeHost::invalidate): Invalidate the |
| Nicosia::SceneIntegration object. This should properly disassociate |
| the now-invalited LayerTreeHost (a SceneIntegration client) from the |
| SceneIntegration object that can still be shared with platform layers |
| originating from this LayerTreeHost. |
| |
| 2019-06-18 Dean Jackson <dino@apple.com> |
| |
| UIContextMenuInteraction implementation for WKContentView |
| https://bugs.webkit.org/show_bug.cgi?id=198986 |
| <rdar://problem/51875189> |
| |
| Reviewed by Andy Estes. |
| |
| Implement UIContextMenuInteraction and its delegate as a |
| replacement for UIPreviewItemController in iOS 13. |
| |
| In order to preserve existing behaviour as much as possible, |
| we check for the implementation of new WebKit API to configure |
| the menu. If that is not present, we attempt to convert |
| the results of the existing WebKit WKPreviewAction delegates |
| into something that works with UIContextMenus. |
| |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView _contentsOfUserInterfaceItem:]): |
| (-[WKContentView _registerPreview]): |
| (-[WKContentView _unregisterPreview]): |
| (-[WKContentView _showLinkPreviewsPreferenceChanged:]): |
| (needsDeprecatedPreviewAPI): |
| (uiActionForPreviewAction): |
| (menuFromPreviewOrDefaults): |
| (titleForMenu): |
| (-[WKContentView assignLegacyDataForContextMenuInteraction]): |
| (-[WKContentView contextMenuInteraction:configurationForMenuAtLocation:]): |
| (-[WKContentView _contextMenuInteraction:configurationForMenuAtLocation:completion:]): |
| (-[WKContentView continueContextMenuInteraction:]): |
| (uiImageForImage): |
| (createTargetedPreview): |
| (-[WKContentView _targetedPreview]): |
| (-[WKContentView contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]): |
| (-[WKContentView contextMenuInteractionWillPresent:]): |
| (-[WKContentView contextMenuInteraction:previewForDismissingMenuWithConfiguration:]): |
| (-[WKContentView contextMenuInteraction:willCommitWithAnimator:]): |
| (-[WKContentView contextMenuInteractionDidEnd:]): |
| (-[WKContentView shouldUsePreviewForLongPress]): Deleted. |
| |
| 2019-06-18 Ryan Haddad <ryanhaddad@apple.com> |
| |
| Unreviewed, rolling out r246575. |
| |
| Breaks internal builds. |
| |
| Reverted changeset: |
| |
| "Update WebKit API to separately retrieve actions and use |
| context menus" |
| https://bugs.webkit.org/show_bug.cgi?id=198974 |
| https://trac.webkit.org/changeset/246575 |
| |
| 2019-06-18 Alex Christensen <achristensen@webkit.org> |
| |
| Update WebKit API to separately retrieve actions and use context menus |
| https://bugs.webkit.org/show_bug.cgi?id=198974 |
| <rdar://problem/50735687> |
| |
| Reviewed by Tim Horton. |
| |
| Update API and SPI, and add infrastructure for asynchronously requesting interaction information. |
| |
| * UIProcess/API/Cocoa/WKUIDelegate.h: |
| * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: |
| |
| 2019-06-18 Daniel Bates <dabates@apple.com> |
| |
| REGRESSION (r240757): Cannot dismiss the keyboard on http://apple.com/apple-tv-plus |
| https://bugs.webkit.org/show_bug.cgi?id=198922 |
| <rdar://problem/50300056> |
| |
| Reviewed by Wenson Hsieh. |
| |
| Actually dismiss the keyboard as intended in r240757. Do not wait for the round-trip |
| to the WebProcess to run through the -elementDidBlur steps in the UIProcess and hide |
| the keyboard when a person explicitly dismisses the keyboard via the Done button (iPhone) |
| or hide keyboard button (iPad). |
| |
| Note that r240757 revealed another bug in this code, <https://bugs.webkit.org/show_bug.cgi?id=198928>. |
| I am unclear of the implications of that bug, but it is clear for this bug that it |
| never makes sense to round-trip to the WebProcess when the keyboard is dismissed by |
| a user gesture. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView endEditingAndUpdateFocusAppearanceWithReason:]): Invoke -_elementDidBlur |
| to blur the element in the UIProcess and hide the keyboard. |
| (-[WKContentView _elementDidBlur]): Prevent duplicate invocations of -didEndFormControlInteraction |
| and setIsShowingInputViewForFocusedElement messages by only doing these actions when |
| editablity changes. This covers the case where -_elementDidBlur may be invoked a second |
| time (the reply in the round-trip). In that case we don't need to do these actions. |
| |
| 2019-06-18 Alex Christensen <achristensen@webkit.org> |
| |
| NetworkSession::networkStorageSession can return null |
| https://bugs.webkit.org/show_bug.cgi?id=198947 |
| <rdar://problem/51394449> |
| |
| Reviewed by Youenn Fablet. |
| |
| We are seeing evidence of crashes from the map owning NetworkSessions and the map owning NetworkStorageSessions becoming out of sync |
| because NetworkSession is refcounted but NetworkStorageSession is not. I started the complete fix in https://bugs.webkit.org/show_bug.cgi?id=194926 |
| but for now let's add less risky null checks to prevent fallout. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::updateClientSideCookiesAgeCap): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::hasStorageAccessForFrame): |
| (WebKit::WebResourceLoadStatisticsStore::callHasStorageAccessForFrameHandler): |
| (WebKit::WebResourceLoadStatisticsStore::grantStorageAccess): |
| (WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess): |
| (WebKit::WebResourceLoadStatisticsStore::setCacheMaxAgeCap): |
| (WebKit::WebResourceLoadStatisticsStore::callUpdatePrevalentDomainsToBlockCookiesForHandler): |
| (WebKit::WebResourceLoadStatisticsStore::removePrevalentDomains): |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::initializeNetworkProcess): |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::networkStorageSession const): |
| * NetworkProcess/NetworkSession.h: |
| * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: |
| (WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy): |
| (WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): |
| (WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection): |
| (WebKit::NetworkDataTaskCocoa::tryPasswordBasedAuthentication): |
| |
| 2019-06-18 Brady Eidson <beidson@apple.com> |
| |
| Handle NSProgress calling our cancellation handler on background threads (and calling it more than once). |
| <rdar://problem/51392926> and https://bugs.webkit.org/show_bug.cgi?id=198945 |
| |
| Reviewed by Alex Christensen. |
| |
| If you have a download in progress and quickly tap the button to cancel it multiple times, then: |
| - NSProgress calls our cancellation handler on a non-main thread, which we can't handle. |
| - They do it more than once, which is also bad. |
| - They might even do it multiple times concurrently (on different background dispatch queues) |
| |
| Let's work around these. |
| |
| * NetworkProcess/Downloads/Download.cpp: |
| (WebKit::Download::cancel): Double check we're on the main thread, and handle being called twice. |
| |
| * NetworkProcess/Downloads/cocoa/WKDownloadProgress.mm: |
| (-[WKDownloadProgress performCancel]): Actually cancel the WebKit::Download if we still have one. |
| (-[WKDownloadProgress progressCancelled]): Called when NSProgress calls the cancellation handler, no matter |
| which thread it does it on. By leveraging std::call_once we handle multiple calls as well as being called |
| concurrently from different threads. call_once punts the *actual* cancel operation off to the main thread. |
| (-[WKDownloadProgress initWithDownloadTask:download:URL:sandboxExtension:]): The cancellation handler is |
| now simply calling 'progressCancelled' on self, assuming the weak pointer for self is still valid. |
| |
| 2019-06-18 Daniel Bates <dabates@apple.com> |
| |
| [iOS] Pressing key while holding Command should not insert character |
| https://bugs.webkit.org/show_bug.cgi?id=198925 |
| <rdar://problem/51778811> |
| |
| Reviewed by Brent Fulgham. |
| |
| Do not insert a character for an unhandled key command that has a Command modifier. |
| For example, pressing Command + Shift + v, which is an unhandled key command (at the |
| time of writing) should not insert v. This matches iOS and Mac platform conventions. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _interpretKeyEvent:isCharEvent:]): |
| |
| 2019-06-18 John Wilander <wilander@apple.com> |
| |
| Change log channel name from ResourceLoadStatisticsDebug to ITPDebug and remove unnecessary #if !RELEASE_LOG_DISABLED |
| https://bugs.webkit.org/show_bug.cgi?id=198970 |
| <rdar://problem/51855836> |
| |
| Reviewed by Brent Fulgham. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp: |
| (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccessUnderOpener): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::ensurePrevalentResourcesForDebugMode): |
| (WebKit::ResourceLoadStatisticsDatabaseStore::updateCookieBlocking): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess): |
| (WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccessUnderOpener): |
| (WebKit::ResourceLoadStatisticsMemoryStore::ensurePrevalentResourcesForDebugMode): |
| (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking): |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::domainsToString): |
| (WebKit::ResourceLoadStatisticsStore::removeDataRecords): |
| (WebKit::ResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode): |
| (WebKit::ResourceLoadStatisticsStore::debugLogDomainsInBatches): |
| * Platform/Logging.h: |
| |
| 2019-06-18 Youenn Fablet <youenn@apple.com> |
| |
| StorageManager::removeAllowedSessionStorageNamespaceConnection should make sure its storageNamespaceID is valid |
| https://bugs.webkit.org/show_bug.cgi?id=198966 |
| rdar://problem/51352080 |
| |
| Reviewed by Alex Christensen. |
| |
| Make sure the namespace ID is a key of the map before using the value. |
| The namespace ID is coming straight from IPC so should not be trusted. |
| Also, namespace IDs are added/removed based on web pages being created/deleted. |
| Namespace IDs are supposed to be scoped by session IDs. |
| Using page IDs for namespace IDs works as long as the page does not change of session ID during its lifetime, which is not guaranteed. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection): |
| |
| 2019-06-18 David Quesada <david_quesada@apple.com> |
| |
| Network process crash in SandboxExtension::consume() via Download::publishProgress |
| https://bugs.webkit.org/show_bug.cgi?id=198968 |
| rdar://problem/51732997 |
| |
| Reviewed by Alex Christensen. |
| |
| Add an early return if the network process fails to resolve a sandbox extension handle for publishing |
| progress on a download. Creating the NSProgress doesn't do much since the progress reporting service |
| won't honor the attempt to publish progress on a URL the process does not have access to, and nothing |
| else in the Network process makes any use of the progress. |
| |
| * NetworkProcess/Downloads/cocoa/DownloadCocoa.mm: |
| (WebKit::Download::publishProgress): |
| |
| 2019-06-18 Adrian Perez de Castro <aperez@igalia.com> |
| |
| Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.25.1 release |
| |
| * wpe/NEWS: Add release notes for 2.25.1 |
| |
| 2019-06-18 Tim Horton <timothy_horton@apple.com> |
| |
| Expose DataDetectors context generation on WKContentViewInteraction |
| https://bugs.webkit.org/show_bug.cgi?id=198950 |
| <rdar://problem/51116021> |
| |
| Reviewed by Andy Estes. |
| |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant currentPositionInformation]): |
| (-[WKActionSheetAssistant showDataDetectorsSheet]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView dataDetectionContextForPositionInformation:]): |
| (-[WKContentView dataDetectionContextForActionSheetAssistant:]): |
| For use by other clients, add -dataDetectionContextForPositionInformation: |
| and make -dataDetectionContextForActionSheetAssistant: use it. |
| Also, pull the code to augment the context with surrounding text out of |
| from WKActionSheetAssistant. |
| |
| 2019-06-18 Adrian Perez de Castro <aperez@igalia.com> |
| |
| [WPE] Fix building the documentation |
| |
| Unreviewed. |
| |
| * UIProcess/API/wpe/docs/wpe-docs.sgml: Fix typo "2.62" -> "2.26" |
| |
| 2019-06-18 Truitt Savell <tsavell@apple.com> |
| |
| Unreviewed, rolling out r246531. |
| |
| Broke internal builds. |
| |
| Reverted changeset: |
| |
| "Expose DataDetectors context generation on |
| WKContentViewInteraction" |
| https://bugs.webkit.org/show_bug.cgi?id=198950 |
| https://trac.webkit.org/changeset/246531 |
| |
| 2019-06-18 Simon Fraser <simon.fraser@apple.com> |
| |
| Convert macOS to scroll by changing layer boundsOrigin |
| https://bugs.webkit.org/show_bug.cgi?id=198917 |
| |
| Reviewed by Antti Koivisto. |
| |
| Remove unreached and confusing code. |
| |
| * UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm: |
| (WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::repositionScrollingLayers): |
| |
| 2019-06-18 Dean Jackson <dino@apple.com> |
| |
| Attachment elements are missing context menu previews |
| https://bugs.webkit.org/show_bug.cgi?id=198946 |
| |
| Reviewed by Tim Horton. |
| |
| When requesting position information on an <attachment> element, |
| we were not providing a snapshot image. |
| |
| * WebProcess/WebPage/WebPage.h: New common method to take a snapshot. |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::shareableBitmapSnapshotForNode): New helper. |
| (WebKit::WebPage::positionInformation): If the element is an attachment, |
| then ask for a snapshot. |
| |
| 2019-06-17 Tim Horton <timothy_horton@apple.com> |
| |
| Expose DataDetectors context generation on WKContentViewInteraction |
| https://bugs.webkit.org/show_bug.cgi?id=198950 |
| <rdar://problem/51116021> |
| |
| Reviewed by Andy Estes. |
| |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant currentPositionInformation]): |
| (-[WKActionSheetAssistant showDataDetectorsSheet]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView dataDetectionContextForPositionInformation:]): |
| (-[WKContentView dataDetectionContextForActionSheetAssistant:]): |
| For use by other clients, add -dataDetectionContextForPositionInformation: |
| and make -dataDetectionContextForActionSheetAssistant: use it. |
| Also, pull the code to augment the context with surrounding text out of |
| from WKActionSheetAssistant. |
| |
| 2019-06-17 Sihui Liu <sihui_liu@apple.com> |
| |
| -[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:] doesn't delete _WKWebsiteDataTypeCredentials |
| https://bugs.webkit.org/show_bug.cgi?id=198854 |
| <rdar://problem/51386058> |
| |
| Reviewed by Geoffrey Garen. |
| |
| Clear persistent credentials in deleteWebsiteData of network process. |
| |
| Also, merge originsWithPersistentCredentials and removeCredentialsWithOrigins into fetchWebsiteData and |
| deleteWebsiteData, and move credentials handling to WebCore. |
| |
| * NetworkProcess/NetworkProcess.cpp: |
| (WebKit::NetworkProcess::fetchWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteData): |
| (WebKit::NetworkProcess::deleteWebsiteDataForOrigins): |
| (WebKit::NetworkProcess::originsWithPersistentCredentials): Deleted. |
| (WebKit::NetworkProcess::removeCredentialsWithOrigins): Deleted. |
| * NetworkProcess/NetworkProcess.h: |
| * NetworkProcess/NetworkProcess.messages.in: |
| * NetworkProcess/cocoa/NetworkProcessCocoa.mm: |
| (WebKit::NetworkProcess::originsWithPersistentCredentials): Deleted. |
| (WebKit::NetworkProcess::removeCredentialsWithOrigins): Deleted. |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::fetchDataAndApply): |
| (WebKit::computeWebProcessAccessTypeForDataRemoval): |
| (WebKit::WebsiteDataStore::removeData): |
| |
| 2019-06-17 Tim Horton <timothy_horton@apple.com> |
| |
| Fix the build with case-sensitive includes |
| <rdar://problem/51828273> |
| |
| * UIProcess/API/Cocoa/WKContentRuleListStore.mm: |
| FileSystem, not Filesystem. |
| |
| 2019-06-17 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Unreviewed, build fix after r246514 |
| |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationNSURLExtras.h: |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationNSURLExtras.mm: |
| (+[NSURL _web_canPerformAuthorizationWithURL:]): |
| Expose the above method as a SPI for Safari. |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-06-17 Alex Christensen <achristensen@webkit.org> |
| |
| Protect StorageManager::m_localStorageNamespaces with a Lock |
| https://bugs.webkit.org/show_bug.cgi?id=198939 |
| <rdar://problem/51784225> |
| |
| Reviewed by Geoff Garen. |
| |
| StorageManager::LocalStorageNamespace::didDestroyStorageArea is called from StorageArea::~StorageArea which is called on the main thread. |
| All other access of m_localStorageNamespaces is from the non-main thread. Sometimes this causes hash table corruption, so wait for a mutex |
| before accessing this member variable. |
| |
| * NetworkProcess/WebStorage/StorageManager.cpp: |
| (WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea): |
| (WebKit::StorageManager::cloneSessionStorageNamespace): |
| (WebKit::StorageManager::getLocalStorageOrigins): |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigin): |
| (WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince): |
| (WebKit::StorageManager::deleteLocalStorageEntriesForOrigins): |
| (WebKit::StorageManager::getOrCreateLocalStorageNamespace): |
| * NetworkProcess/WebStorage/StorageManager.h: |
| |
| 2019-06-17 Alex Christensen <achristensen@webkit.org> |
| |
| Add null check in WebFrameLoaderClient::assignIdentifierToInitialRequest |
| https://bugs.webkit.org/show_bug.cgi?id=198926 |
| <rdar://problem/50079713> |
| |
| Reviewed by Brady Eidson. |
| |
| * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: |
| (WebKit::WebFrameLoaderClient::assignIdentifierToInitialRequest): |
| WebKitLegacy's version already checks null for the corresponding call. |
| |
| 2019-06-17 Alex Christensen <achristensen@webkit.org> |
| |
| Fix internal build after r246514 |
| https://bugs.webkit.org/show_bug.cgi?id=198874 |
| |
| * UIProcess/API/APINavigationAction.h: |
| A problematic reference to APINavigationActionAdditions.h was left. |
| Its contents had been sprinkled into the correct places, though. |
| |
| 2019-06-17 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Move SOAuthorization from WebKitAdditions to WebKit |
| https://bugs.webkit.org/show_bug.cgi?id=198874 |
| <rdar://problem/47573431> |
| |
| Reviewed by Brent Fulgham. |
| |
| This patch basically moves everything from existing WebKitAdditions to WebKit. |
| It also replaces the LoadOptimizer nonsense with the actual SOAuthorization API. |
| |
| * Configurations/WebKit.xcconfig: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): |
| * PluginProcess/mac/PluginProcessMac.mm: |
| (WebKit::PluginProcess::platformInitializePluginProcess): |
| * SourcesCocoa.txt: |
| * UIProcess/API/APINavigationAction.h: |
| * UIProcess/Cocoa/NavigationState.mm: |
| (WebKit::trySOAuthorization): |
| (WebKit::tryInterceptNavigation): |
| (WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): |
| (WebKit::tryOptimizingLoad): Deleted. |
| * UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.h: Added. |
| (WebKit::NavigationSOAuthorizationSession::callback): |
| * UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.mm: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/TestLoadOptimizer.mm. |
| (WebKit::NavigationSOAuthorizationSession::NavigationSOAuthorizationSession): |
| (WebKit::NavigationSOAuthorizationSession::~NavigationSOAuthorizationSession): |
| (WebKit::NavigationSOAuthorizationSession::shouldStartInternal): |
| (WebKit::NavigationSOAuthorizationSession::webViewDidMoveToWindow): |
| * UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.h: Added. |
| * UIProcess/Cocoa/SOAuthorization/PopUpSOAuthorizationSession.mm: Added. |
| (-[WKSOSecretDelegate initWithSession:]): |
| (-[WKSOSecretDelegate webViewDidClose:]): |
| (-[WKSOSecretDelegate webView:decidePolicyForNavigationAction:decisionHandler:]): |
| (-[WKSOSecretDelegate webView:didFinishNavigation:]): |
| (WebKit::PopUpSOAuthorizationSession::PopUpSOAuthorizationSession): |
| (WebKit::PopUpSOAuthorizationSession::~PopUpSOAuthorizationSession): |
| (WebKit::PopUpSOAuthorizationSession::shouldStartInternal): |
| (WebKit::PopUpSOAuthorizationSession::fallBackToWebPathInternal): |
| (WebKit::PopUpSOAuthorizationSession::abortInternal): |
| (WebKit::PopUpSOAuthorizationSession::completeInternal): |
| (WebKit::PopUpSOAuthorizationSession::close): |
| (WebKit::PopUpSOAuthorizationSession::initSecretWebView): |
| * UIProcess/Cocoa/SOAuthorization/RedirectSOAuthorizationSession.h: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/TestLoadOptimizer.mm. |
| * UIProcess/Cocoa/SOAuthorization/RedirectSOAuthorizationSession.mm: Added. |
| (WebKit::RedirectSOAuthorizationSession::RedirectSOAuthorizationSession): |
| (WebKit::RedirectSOAuthorizationSession::fallBackToWebPathInternal): |
| (WebKit::RedirectSOAuthorizationSession::abortInternal): |
| (WebKit::RedirectSOAuthorizationSession::completeInternal): |
| (WebKit::RedirectSOAuthorizationSession::beforeStart): |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationCoordinator.h: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/TestLoadOptimizer.mm. |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationCoordinator.mm: Added. |
| (WebKit::SOAuthorizationCoordinator::SOAuthorizationCoordinator): |
| (WebKit::SOAuthorizationCoordinator::canAuthorize const): |
| (WebKit::SOAuthorizationCoordinator::tryAuthorize): |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationNSURLExtras.h: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/TestLoadOptimizer.mm. |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationNSURLExtras.mm: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/TestLoadOptimizer.mm. |
| (+[NSURL _web_canPerformAuthorizationWithURL:]): |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.h: Added. |
| (WebKit::SOAuthorizationSession::page const): |
| (WebKit::SOAuthorizationSession::state const): |
| (WebKit::SOAuthorizationSession::setState): |
| (WebKit::SOAuthorizationSession::navigationAction): |
| * UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm: Added. |
| (WebKit::SOAuthorizationSession::SOAuthorizationSession): |
| (WebKit::SOAuthorizationSession::~SOAuthorizationSession): |
| (WebKit::SOAuthorizationSession::releaseNavigationAction): |
| (WebKit::SOAuthorizationSession::becomeCompleted): |
| (WebKit::SOAuthorizationSession::shouldStart): |
| (WebKit::SOAuthorizationSession::start): |
| (WebKit::SOAuthorizationSession::fallBackToWebPath): |
| (WebKit::SOAuthorizationSession::abort): |
| (WebKit::SOAuthorizationSession::complete): |
| (WebKit::SOAuthorizationSession::presentViewController): |
| (WebKit::SOAuthorizationSession::dismissViewController): |
| * UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.h: Copied from Tools/TestWebKitAPI/Tests/WebKitCocoa/TestLoadOptimizer.mm. |
| * UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm: Added. |
| (WebKit::SubFrameSOAuthorizationSession::SubFrameSOAuthorizationSession): |
| (WebKit::SubFrameSOAuthorizationSession::fallBackToWebPathInternal): |
| (WebKit::SubFrameSOAuthorizationSession::abortInternal): |
| (WebKit::SubFrameSOAuthorizationSession::completeInternal): |
| (WebKit::SubFrameSOAuthorizationSession::beforeStart): |
| (WebKit::SubFrameSOAuthorizationSession::loadDataToFrame): |
| (WebKit::SubFrameSOAuthorizationSession::postDidCancelMessageToParent): |
| * UIProcess/Cocoa/SOAuthorization/WKSOAuthorizationDelegate.h: Renamed from Tools/TestWebKitAPI/Tests/WebKitCocoa/TestLoadOptimizer.mm. |
| * UIProcess/Cocoa/SOAuthorization/WKSOAuthorizationDelegate.mm: Added. |
| (-[WKSOAuthorizationDelegate authorization:presentViewController:withCompletion:]): |
| (-[WKSOAuthorizationDelegate authorizationDidNotHandle:]): |
| (-[WKSOAuthorizationDelegate authorizationDidCancel:]): |
| (-[WKSOAuthorizationDelegate authorizationDidComplete:]): |
| (-[WKSOAuthorizationDelegate authorization:didCompleteWithHTTPAuthorizationHeaders:]): |
| (-[WKSOAuthorizationDelegate authorization:didCompleteWithHTTPResponse:httpBody:]): |
| (-[WKSOAuthorizationDelegate authorization:didCompleteWithError:]): |
| (-[WKSOAuthorizationDelegate setSession:]): |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::decidePolicyForNavigationAction): |
| (WebKit::trySOAuthorization): |
| (WebKit::WebPageProxy::createNewPage): |
| (WebKit::tryOptimizingLoad): Deleted. |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::setShouldSuppressSOAuthorizationInAllNavigationPolicyDecision): |
| (WebKit::WebPageProxy::setShouldSuppressSOAuthorizationInNextNavigationPolicyDecision): |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::WebsiteDataStore): |
| * UIProcess/WebsiteData/WebsiteDataStore.h: |
| (WebKit::WebsiteDataStore::soAuthorizationCoordinator): |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeProcess): |
| |
| 2019-06-17 Tim Horton <timothy_horton@apple.com> |
| |
| Fix the build. |
| |
| * UIProcess/Gamepad/ios/UIGamepadProviderIOS.mm: |
| (WebKit::UIGamepadProvider::platformWebPageProxyForGamepadInput): |
| * UIProcess/_WKTouchEventGenerator.mm: |
| (-[_WKTouchEventGenerator _sendHIDEvent:]): |
| (-[_WKTouchEventGenerator _sendMarkerHIDEventWithCompletionBlock:]): |
| |
| 2019-06-17 Dan Bernstein <mitz@apple.com> |
| |
| REGRESSION (r242686): Paths in XPC services’ LC_DYLD_ENVIRONMENT are incorrect in built products directory |
| https://bugs.webkit.org/show_bug.cgi?id=198904 |
| |
| Reviewed by Alex Christensen. |
| |
| After r242686, in local builds, the XPC service executables run from their location at the |
| top of the built products directory, rather than inside the framework. |
| |
| * Configurations/BaseXPCService.xcconfig: Updated the load commands that set |
| DYLD_FRAMEWORK_PATH and DYLD_LIBRARY_PATH for the new location in the built products |
| directory. Also removed WK_XPC_SERVICE_INSERT_LIBRARIES_DIR that had been unused. |
| |
| * WebKit.xcodeproj/project.pbxproj: Made the creation of symbolic links inside the |
| framework’s XPCServices directory predicated on whether this is an install build, rather |
| than on the build configuration, for consistency with the condition used in the .xcconfig. |
| |
| 2019-06-17 Brent Fulgham <bfulgham@apple.com> |
| |
| Ensure ITP state is relayed to Network Process on restart |
| https://bugs.webkit.org/show_bug.cgi?id=198797 |
| <rdar://problem/51646944> |
| |
| Reviewed by Youenn Fablet. |
| |
| Now that the ITP state is maintained in the Network Process, we have to make sure that we update |
| that process with current ITP state if the Network Process crashes and is relaunched. This wasn't a |
| problem in earlier releases because we tracked all ITP state in the UIProcess. |
| |
| This patch does the following: |
| 1. Add a new method to WKWebsiteDataStore to allow us to trigger statistics processing, which has the |
| side effect of syncing ITP state persistently so that it will be available after bouncing the process. |
| 2. Adds a new test that sets a tracking domain, bounces the process, and confirms the state is still |
| consistent. |
| |
| Tested by TestWebKitAPI. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp: |
| (WebKit::ResourceLoadStatisticsStore::processStatisticsAndDataRecords): |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _clearPrevalentDomain:completionHandler:]): |
| (-[WKWebsiteDataStore _processStatisticsAndDataRecords:]): |
| * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::ensureNetworkProcess): |
| (WebKit::WebProcessPool::setResourceLoadStatisticsEnabled): |
| * UIProcess/WebProcessPool.h: |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled): |
| |
| 2019-06-17 Ludovico de Nittis <ludovico.denittis@collabora.com> |
| |
| [GTK] Stop accessing GdkEvent fields when possible |
| https://bugs.webkit.org/show_bug.cgi?id=198829 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Direct access to GdkEvent structs is no longer possible in GTK 4. |
| |
| * Shared/gtk/WebEventFactory.cpp: |
| (WebKit::buttonForEvent): |
| (WebKit::WebEventFactory::createWebMouseEvent): |
| (WebKit::WebEventFactory::createWebWheelEvent): |
| (WebKit::WebEventFactory::createWebKeyboardEvent): |
| (WebKit::WebEventFactory::createWebTouchEvent): |
| * UIProcess/API/gtk/WebKitEmojiChooser.cpp: |
| * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp: |
| (webkitScriptDialogImplKeyPressEvent): |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (ClickCounter::currentClickCountForGdkButtonEvent): |
| (webkitWebViewBaseKeyPressEvent): |
| (webkitWebViewBaseHandleMouseEvent): |
| (webkitWebViewBaseCrossingNotifyEvent): |
| (webkitWebViewBaseGetTouchPointsForEvent): |
| (webkitWebViewBaseTouchEvent): |
| (webkitWebViewBaseEvent): |
| * UIProcess/gtk/GestureController.cpp: |
| (WebKit::GestureController::handleEvent): |
| * UIProcess/gtk/InputMethodFilter.cpp: |
| (WebKit::InputMethodFilter::filterKeyEvent): |
| (WebKit::InputMethodFilter::logHandleKeyboardEventForTesting): |
| (WebKit::InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting): |
| * UIProcess/gtk/KeyBindingTranslator.cpp: |
| (WebKit::KeyBindingTranslator::commandsForKeyEvent): |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::isEventStop): |
| (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe): |
| (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas): |
| (WebKit::ViewGestureController::SwipeProgressTracker::handleEvent): |
| * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: |
| (WebKit::WebPopupMenuProxyGtk::treeViewButtonReleaseEventCallback): |
| (WebKit::WebPopupMenuProxyGtk::keyPressEventCallback): |
| |
| 2019-06-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Update OptionsGTK.cmake and NEWS for 2.25.2 release |
| |
| * gtk/NEWS: Add release notes for 2.25.2. |
| |
| 2019-06-17 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed, rolling out r246467. |
| |
| It broke scrolling with mouse wheel |
| |
| Reverted changeset: |
| |
| "[GTK] Stop accessing GdkEvent fields when possible" |
| https://bugs.webkit.org/show_bug.cgi?id=198829 |
| https://trac.webkit.org/changeset/246467 |
| |
| 2019-06-16 Darin Adler <darin@apple.com> |
| |
| Rename AtomicString to AtomString |
| https://bugs.webkit.org/show_bug.cgi?id=195276 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * many files: Let do-webcore-rename do the renaming. |
| |
| 2019-06-16 Simon Fraser <simon.fraser@apple.com> |
| |
| Implement ScrollableArea::scrollOffset() |
| https://bugs.webkit.org/show_bug.cgi?id=198895 |
| |
| Reviewed by Antti Koivisto. |
| |
| * UIProcess/win/WebPopupMenuProxyWin.cpp: |
| (WebKit::PopupMenuWin::scrollPosition const): |
| (WebKit::WebPopupMenuProxyWin::onKeyDown): Just use m_scrollOffset. |
| (WebKit::WebPopupMenuProxyWin::scrollSize const): Deleted. |
| * UIProcess/win/WebPopupMenuProxyWin.h: Remove the one-axis scrollOffset() |
| * WebProcess/Plugins/PDF/PDFPlugin.h: |
| * WebProcess/Plugins/PDF/PDFPlugin.mm: |
| (WebKit::PDFPlugin::scrollSize const): Deleted. |
| (WebKit::PDFPlugin::scrollOffset const): Deleted. |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect): |
| |
| 2019-06-15 Youenn Fablet <youenn@apple.com> |
| |
| WebProcessPool::clearWebProcessHasUploads cannot assume its given processIdentifier is valid |
| https://bugs.webkit.org/show_bug.cgi?id=198865 |
| |
| Unreviewed. |
| |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::clearWebProcessHasUploads): |
| Remove wrong debug assertion in case of WebProcessProxy destruction. |
| |
| 2019-06-15 Ludovico de Nittis <ludovico.denittis@collabora.com> |
| |
| [GTK] Stop accessing GdkEvent fields when possible |
| https://bugs.webkit.org/show_bug.cgi?id=198829 |
| |
| Reviewed by Michael Catanzaro. |
| |
| Direct access to GdkEvent structs is no longer possible in GTK 4. |
| |
| * Shared/gtk/WebEventFactory.cpp: |
| (WebKit::buttonForEvent): |
| (WebKit::WebEventFactory::createWebMouseEvent): |
| (WebKit::WebEventFactory::createWebWheelEvent): |
| (WebKit::WebEventFactory::createWebKeyboardEvent): |
| (WebKit::WebEventFactory::createWebTouchEvent): |
| * UIProcess/API/gtk/WebKitEmojiChooser.cpp: |
| * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp: |
| (webkitScriptDialogImplKeyPressEvent): |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (ClickCounter::currentClickCountForGdkButtonEvent): |
| (webkitWebViewBaseKeyPressEvent): |
| (webkitWebViewBaseHandleMouseEvent): |
| (webkitWebViewBaseCrossingNotifyEvent): |
| (webkitWebViewBaseGetTouchPointsForEvent): |
| (webkitWebViewBaseTouchEvent): |
| (webkitWebViewBaseEvent): |
| * UIProcess/gtk/GestureController.cpp: |
| (WebKit::GestureController::handleEvent): |
| * UIProcess/gtk/InputMethodFilter.cpp: |
| (WebKit::InputMethodFilter::filterKeyEvent): |
| (WebKit::InputMethodFilter::logHandleKeyboardEventForTesting): |
| (WebKit::InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting): |
| * UIProcess/gtk/KeyBindingTranslator.cpp: |
| (WebKit::KeyBindingTranslator::commandsForKeyEvent): |
| * UIProcess/gtk/ViewGestureControllerGtk.cpp: |
| (WebKit::isEventStop): |
| (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe): |
| (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas): |
| (WebKit::ViewGestureController::SwipeProgressTracker::handleEvent): |
| * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: |
| (WebKit::WebPopupMenuProxyGtk::treeViewButtonReleaseEventCallback): |
| (WebKit::WebPopupMenuProxyGtk::keyPressEventCallback): |
| |
| 2019-06-15 Rob Buis <rbuis@igalia.com> |
| |
| Store prefetch redirects in the prefetch cache |
| https://bugs.webkit.org/show_bug.cgi?id=197371 |
| |
| Reviewed by Youenn Fablet. |
| |
| Store prefetch redirects in the prefetch cache and use them when |
| navigating. |
| |
| * NetworkProcess/NetworkResourceLoader.cpp: |
| (WebKit::NetworkResourceLoader::retrieveCacheEntry): |
| (WebKit::NetworkResourceLoader::willSendRedirectedRequest): |
| (WebKit::NetworkResourceLoader::didFinishWithRedirectResponse): |
| * NetworkProcess/NetworkResourceLoader.h: |
| * NetworkProcess/cache/PrefetchCache.cpp: |
| (WebKit::PrefetchCache::Entry::Entry): |
| (WebKit::PrefetchCache::storeRedirect): |
| * NetworkProcess/cache/PrefetchCache.h: |
| |
| 2019-06-14 Devin Rousso <drousso@apple.com> |
| |
| waitForNavigationToComplete may be called before WebPageProxy knows it's loading |
| https://bugs.webkit.org/show_bug.cgi?id=198741 |
| <rdar://problem/31164316> |
| |
| Reviewed by Joseph Pecoraro. |
| |
| There's a potential race in `WebAutomationSession::waitForNavigationToCompleteOnPage` when |
| querying for the `WebPageProxy`'s loading state (via `PageLoadingState::isLoading`), in that |
| a pending load may be committed _after_ the `WebAutomationSession` checks it's value. This |
| makes the automation session think that it isn't loading, so it will continue running |
| commands, which can lead to a JavaScript error ("Callback was not called before the unload |
| event") as any injected scripts will be cleared by the impending navigation, leaving the |
| script evaluation callbacks "dangling". |
| |
| Expose more information from `PageLoadState` about whether it thinks there _may_ be a |
| navigation currently happening, which the `WebAutomationSession` can use to delay commands. |
| |
| In the best case, no navigations are "missed". |
| |
| In the worst case, the automation session will wait `pageLoadTimeout` before continuing. |
| |
| * UIProcess/Automation/WebAutomationSession.cpp: |
| (WebKit::WebAutomationSession::waitForNavigationToCompleteOnPage): |
| |
| * UIProcess/PageLoadState.h: |
| * UIProcess/PageLoadState.cpp: |
| (WebKit::PageLoadState::hasUncommittedLoad const): Added. |
| |
| 2019-06-14 Youenn Fablet <youenn@apple.com> |
| |
| WebProcessPool::clearWebProcessHasUploads cannot assume its given processIdentifier is valid |
| https://bugs.webkit.org/show_bug.cgi?id=198865 |
| <rdar://problem/51618878> |
| |
| Reviewed by Brady Eidson. |
| |
| NetworkProcess currently instructs UIProcess whether a given WebProcess is doing upload. |
| There is no guarantee though that the WebProcessProxy is still there when the IPC is arriving at UIProcess. |
| Instead, let WebProcess handles its upload state and notify WebProcessPool about its state. |
| Make sure WebProcessProxy unregisters itself in case of crash. |
| In case of NetworkProcess crash, WebProcesses will see all their uploads fail |
| and will notify automatically UIProcess to update their state. |
| |
| Since the processID given to WebProcessPool is coming from IPC, we cannot not trust it. |
| Add early return in case of not finding a WebProcessProxy for WebProcessPool clear/set methods. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkResourceLoadMap.cpp: |
| (WebKit::NetworkResourceLoadMap::add): |
| (WebKit::NetworkResourceLoadMap::take): |
| * NetworkProcess/NetworkResourceLoadMap.h: |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::setWebProcessHasUploads): |
| (WebKit::WebProcessPool::clearWebProcessHasUploads): |
| * UIProcess/WebProcessProxy.cpp: |
| (WebKit::WebProcessProxy::~WebProcessProxy): |
| * WebProcess/Network/WebLoaderStrategy.cpp: |
| (WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess): |
| (WebKit::WebLoaderStrategy::remove): |
| (WebKit::WebLoaderStrategy::tryLoadingSynchronouslyUsingURLSchemeHandler): |
| * WebProcess/Network/WebLoaderStrategy.h: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::ensureNetworkProcessConnection): |
| |
| 2019-06-14 Youenn Fablet <youenn@apple.com> |
| |
| WebResourceLoadStatisticsStore should not use its network session if invalidated |
| https://bugs.webkit.org/show_bug.cgi?id=198814 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Tell WebResourceLoadStatisticsStore that its network session is invalidated. |
| WebResourceLoadStatisticsStore will then clear its reference to the network session. |
| |
| * NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp: |
| (WebKit::ResourceLoadStatisticsMemoryStore::updateCookieBlocking): |
| Added for test purposes to trigger further cookie processing. |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: |
| (WebKit::WebResourceLoadStatisticsStore::invalidateAndCancel): |
| * NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::invalidateAndCancel): |
| |
| 2019-06-14 Joseph Pecoraro <pecoraro@apple.com> |
| |
| [Cocoa] NSFileWrapper associated with _WKAttachment |
| https://bugs.webkit.org/show_bug.cgi?id=198871 |
| <rdar://problem/51760625> |
| |
| Reviewed by Wenson Hsieh. |
| |
| * UIProcess/API/Cocoa/_WKAttachment.mm: |
| (-[_WKAttachment dealloc]): |
| Ensure we destruct the API::Object associated with this so RetainPtrs can release. |
| |
| 2019-06-14 Tim Horton <timothy_horton@apple.com> |
| |
| WebKit's NSAttributedString.h is not included in the WebKit.h umbrella header |
| https://bugs.webkit.org/show_bug.cgi?id=198869 |
| <rdar://problem/51754437> |
| |
| Reviewed by Timothy Hatcher. |
| |
| * Shared/API/Cocoa/WebKit.h: |
| Make the new API available to modularized clients and folks who just import WebKit.h |
| |
| 2019-06-14 Jiewen Tan <jiewen_tan@apple.com> |
| |
| Disable AppSSO for web processes and plugin processes |
| https://bugs.webkit.org/show_bug.cgi?id=198843 |
| <rdar://problem/51642920> |
| |
| Reviewed by Sam Weinig. |
| |
| This patch moves the disabling of AppSSO from AuxiliaryProcess to PluginProcess |
| and WebProcess such that NetworkingProcess will not be affected. |
| |
| * PluginProcess/mac/PluginProcessMac.mm: |
| (WebKit::PluginProcess::platformInitializePluginProcess): |
| * Shared/ios/AuxiliaryProcessIOS.mm: |
| (WebKit::AuxiliaryProcess::platformInitialize): |
| * Shared/mac/AuxiliaryProcessMac.mm: |
| (WebKit::AuxiliaryProcess::platformInitialize): |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeProcess): |
| |
| 2019-06-14 Megan Gardner <megan_gardner@apple.com> |
| |
| Move Synthetic Editing Commands to behind an experimental feature flag |
| https://bugs.webkit.org/show_bug.cgi?id=198842 |
| <rdar://problem/50594700> |
| |
| Reviewed by Simon Fraser. |
| |
| Add a feature flag to gate synthetic editing commands. |
| |
| * Shared/WebPreferences.yaml: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::getFocusedElementInformation): |
| |
| 2019-06-13 Megan Gardner <megan_gardner@apple.com> |
| |
| Fix selection hang in Mail |
| https://bugs.webkit.org/show_bug.cgi?id=198845 |
| <rdar://problem/51388180> |
| |
| Reviewed by Tim Horton. |
| |
| SelectionDidChange requires a selectionWillChange in order to keep things in line. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _selectionChanged]): |
| |
| 2019-06-13 Tim Horton <timothy_horton@apple.com> |
| |
| No content shows up for WKWebView while locked even with _canShowWhileLocked is YES |
| https://bugs.webkit.org/show_bug.cgi?id=198819 |
| <rdar://problem/51636240> |
| |
| Reviewed by Simon Fraser. |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::didCreateContextForVisibilityPropagation): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::contextIDForVisibilityPropagation const): |
| * UIProcess/WebPageProxy.messages.in: |
| * UIProcess/WebProcessProxy.h: |
| (WebKit::WebProcessProxy::contextIDForVisibilityPropagation): Deleted. |
| * UIProcess/WebProcessProxy.messages.in: |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _setupVisibilityPropagationView]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::didCreateContextForVisibilityPropagation): Deleted. |
| * UIProcess/ios/WebProcessProxyIOS.mm: |
| (WebKit::WebProcessProxy::didCreateContextForVisibilityPropagation): Deleted. |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::m_shrinkToFitContentTimer): |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebProcess.h: |
| * WebProcess/cocoa/WebProcessCocoa.mm: |
| (WebKit::WebProcess::platformInitializeWebProcess): |
| Move the creation of the visibility propagation context to WebPage instead of WebProcess, |
| because canShowWhileLocked is per-page, not per-process. |
| |
| Also, pass canShowWhileLocked into the context creation function for the visibility |
| propagation context, not just RemoteLayerTree contexts. |
| |
| 2019-06-13 Antoine Quint <graouts@apple.com> |
| |
| "display: contents" Content click does not trigger |
| https://bugs.webkit.org/show_bug.cgi?id=198559 |
| <rdar://problem/51488524> |
| |
| Reviewed by Antti Koivisto. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::commitPotentialTap): |
| |
| 2019-06-13 Takashi Komori <Takashi.Komori@sony.com> |
| |
| [curl] Remove member objects of CurlRequest not to share by different threads. |
| https://bugs.webkit.org/show_bug.cgi?id=198747 |
| |
| Reviewed by Fujii Hironori. |
| |
| * NetworkProcess/curl/NetworkDataTaskCurl.cpp: |
| (WebKit::NetworkDataTaskCurl::curlDidReceiveResponse): |
| (WebKit::NetworkDataTaskCurl::curlDidComplete): |
| (WebKit::NetworkDataTaskCurl::curlDidFailWithError): |
| * NetworkProcess/curl/NetworkDataTaskCurl.h: |
| |
| 2019-06-13 Zan Dobersek <zdobersek@igalia.com> |
| |
| [Nicosia] Add SceneIntegration |
| https://bugs.webkit.org/show_bug.cgi?id=198791 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Have the LayerTreeHost own the SceneIntegration object that's to be |
| associated with layers used inside the LayerTreeHost's scene. The |
| class now also inherits the SceneIntegration::Client interface, with the |
| requestUpdate() method scheduling a scene update in ThreadedCompositor. |
| |
| CompositingCoordinator now retrieves the SceneIntegration object from |
| the LayerTreeHost instance and manages association to that object for |
| layers under the coordinator's control. |
| |
| ThreadedCompositor class gets a new public updateScene() method that |
| schedules an update, enabling the SceneIntegration class to invoke |
| scene updates. |
| |
| * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: |
| (WebKit::ThreadedCompositor::updateScene): |
| * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: |
| * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp: |
| (WebKit::CompositingCoordinator::createGraphicsLayer): |
| (WebKit::CompositingCoordinator::detachLayer): |
| (WebKit::CompositingCoordinator::attachLayer): |
| * WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h: |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: |
| (WebKit::LayerTreeHost::LayerTreeHost): |
| (WebKit::LayerTreeHost::sceneIntegration): |
| (WebKit::LayerTreeHost::requestUpdate): |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: |
| |
| 2019-06-13 Ludovico de Nittis <ludovico.denittis@collabora.com> |
| |
| [GTK] gdk_display_get_device_manager and gdk_screen_get_width/height are deprecated |
| https://bugs.webkit.org/show_bug.cgi?id=198822 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| GdkSeat and GdkRectangle should be used, respectively. |
| |
| * UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp: |
| (WebKit::doMouseEvent): |
| (WebKit::doMotionEvent): |
| (WebKit::doKeyStrokeEvent): |
| |
| 2019-06-12 Antoine Quint <graouts@apple.com> |
| |
| Show the web page URL when sharing an AR model |
| https://bugs.webkit.org/show_bug.cgi?id=198812 |
| <rdar://problem/48689498> |
| |
| Reviewed by Dean Jackson. |
| |
| * UIProcess/Cocoa/DownloadClient.mm: |
| (WebKit::DownloadClient::didStart): |
| * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: |
| (-[_WKPreviewControllerDataSource initWithMIMEType:originatingPageURL:]): |
| (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]): |
| (WebKit::SystemPreviewController::start): |
| (-[_WKPreviewControllerDataSource initWithMIMEType:]): Deleted. |
| * UIProcess/SystemPreviewController.h: |
| |
| 2019-06-12 Antti Koivisto <antti@apple.com> |
| |
| Try to fix iOS build. |
| |
| * NetworkProcess/Downloads/DownloadMap.cpp: |
| |
| 2019-06-12 Youenn Fablet <youenn@apple.com> |
| |
| Use NSURLSession for WebSocket |
| https://bugs.webkit.org/show_bug.cgi?id=198568 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Implement socket channel provider on WebProcess level by sending IPC to NetworkProcess. |
| On NetworkProcess side, use NSURLSession API to implement the WebSocket functionality. |
| This is a partial implementation: |
| - inspector integration is not working. |
| - some error cases are not well handled or are not producing the same error messages. |
| - some features are not implemented (extensions, subprotocols, handshake authentication challenge, cookie handling...). |
| |
| * CMakeLists.txt: |
| * DerivedSources-input.xcfilelist: |
| * DerivedSources-output.xcfilelist: |
| * DerivedSources.make: |
| * NetworkProcess/NetworkConnectionToWebProcess.cpp: |
| (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): |
| (WebKit::NetworkConnectionToWebProcess::createSocketChannel): |
| (WebKit::NetworkConnectionToWebProcess::removeSocketChannel): |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/NetworkConnectionToWebProcess.messages.in: |
| * NetworkProcess/NetworkSession.cpp: |
| (WebKit::NetworkSession::createWebSocketTask): |
| * NetworkProcess/NetworkSession.h: |
| (WebKit::NetworkSession::removeWebSocketTask): |
| (WebKit::NetworkSession::addWebSocketTask): |
| * NetworkProcess/NetworkSocketChannel.cpp: Added. |
| (WebKit::NetworkSocketChannel::create): |
| (WebKit::NetworkSocketChannel::NetworkSocketChannel): |
| (WebKit::NetworkSocketChannel::~NetworkSocketChannel): |
| (WebKit::NetworkSocketChannel::sendString): |
| (WebKit::NetworkSocketChannel::sendData): |
| (WebKit::NetworkSocketChannel::finishClosingIfPossible): |
| (WebKit::NetworkSocketChannel::close): |
| (WebKit::NetworkSocketChannel::didConnect): |
| (WebKit::NetworkSocketChannel::didReceiveText): |
| (WebKit::NetworkSocketChannel::didReceiveBinaryData): |
| (WebKit::NetworkSocketChannel::didClose): |
| (WebKit::NetworkSocketChannel::messageSenderConnection const): |
| * NetworkProcess/NetworkSocketChannel.h: Added. |
| * NetworkProcess/NetworkSocketChannel.messages.in: Added. |
| * NetworkProcess/NetworkSocketStream.messages.in: |
| * NetworkProcess/WebSocketTask.h: Added. |
| (WebKit::WebSocketTask::sendString): |
| (WebKit::WebSocketTask::sendData): |
| (WebKit::WebSocketTask::close): |
| (WebKit::WebSocketTask::cancel): |
| (WebKit::WebSocketTask::resume): |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (-[WKNetworkSessionDelegate existingWebSocketTask:]): |
| (-[WKNetworkSessionDelegate URLSession:webSocketTask:didOpenWithProtocol:]): |
| (-[WKNetworkSessionDelegate URLSession:webSocketTask:didCloseWithCode:reason:]): |
| (WebKit::NetworkSessionCocoa::continueDidReceiveChallenge): |
| (WebKit::NetworkSessionCocoa::createWebSocketTask): |
| (WebKit::NetworkSessionCocoa::addWebSocketTask): |
| (WebKit::NetworkSessionCocoa::removeWebSocketTask): |
| (WebKit::NetworkSessionCocoa::webSocketDataTaskForIdentifier): |
| * NetworkProcess/cocoa/WebSocketTaskCocoa.h: Added. |
| * NetworkProcess/cocoa/WebSocketTaskCocoa.mm: Added. |
| (WebKit::WebSocketTask::WebSocketTask): |
| (WebKit::WebSocketTask::~WebSocketTask): |
| (WebKit::WebSocketTask::readNextMessage): |
| (WebKit::WebSocketTask::cancel): |
| (WebKit::WebSocketTask::resume): |
| (WebKit::WebSocketTask::didConnect): |
| (WebKit::WebSocketTask::didClose): |
| (WebKit::WebSocketTask::sendString): |
| (WebKit::WebSocketTask::sendData): |
| (WebKit::WebSocketTask::close): |
| (WebKit::WebSocketTask::identifier const): |
| * Shared/WebPreferences.yaml: |
| * WebKit.xcodeproj/project.pbxproj: |
| * WebProcess/Network/NetworkProcessConnection.cpp: |
| (WebKit::NetworkProcessConnection::didReceiveMessage): |
| * WebProcess/Network/WebSocketChannel.cpp: Added. |
| (WebKit::WebSocketChannel::create): |
| (WebKit::WebSocketChannel::WebSocketChannel): |
| (WebKit::WebSocketChannel::~WebSocketChannel): |
| (WebKit::WebSocketChannel::messageSenderConnection const): |
| (WebKit::WebSocketChannel::messageSenderDestinationID const): |
| (WebKit::WebSocketChannel::subprotocol): |
| (WebKit::WebSocketChannel::extensions): |
| (WebKit::WebSocketChannel::connect): |
| (WebKit::WebSocketChannel::send): |
| (WebKit::WebSocketChannel::bufferedAmount const): |
| (WebKit::WebSocketChannel::close): |
| (WebKit::WebSocketChannel::fail): |
| (WebKit::WebSocketChannel::disconnect): |
| (WebKit::WebSocketChannel::didConnect): |
| (WebKit::WebSocketChannel::didReceiveText): |
| (WebKit::WebSocketChannel::didReceiveBinaryData): |
| (WebKit::WebSocketChannel::didClose): |
| (WebKit::WebSocketChannel::didFail): |
| (WebKit::WebSocketChannel::networkProcessCrashed): |
| * WebProcess/Network/WebSocketChannel.h: Added. |
| * WebProcess/Network/WebSocketChannel.messages.in: Added. |
| * WebProcess/Network/WebSocketChannelManager.cpp: Added. |
| (WebKit::WebSocketChannelManager::createWebSocketChannel): |
| (WebKit::WebSocketChannelManager::networkProcessCrashed): |
| (WebKit::WebSocketChannelManager::didReceiveMessage): |
| * WebProcess/Network/WebSocketChannelManager.h: Added. |
| * WebProcess/Network/WebSocketProvider.cpp: |
| (WebKit::WebSocketProvider::createWebSocketChannel): |
| * WebProcess/Network/WebSocketProvider.h: |
| * WebProcess/Network/WebSocketStream.cpp: |
| * WebProcess/Network/WebSocketStream.messages.in: |
| * WebProcess/WebProcess.cpp: |
| (WebKit::WebProcess::networkProcessConnectionClosed): |
| * WebProcess/WebProcess.h: |
| (WebKit::WebProcess::webSocketChannelManager): |
| |
| 2019-06-12 Sihui Liu <sihui_liu@apple.com> |
| |
| Add assertions to help debug crash at WebKit::HistoryEntryDataEncoder::operator<< |
| https://bugs.webkit.org/show_bug.cgi?id=198766 |
| |
| Reviewed by Geoffrey Garen. |
| |
| * Shared/SessionState.h: |
| (WebKit::FrameState::~FrameState): |
| * UIProcess/API/C/WKPage.cpp: |
| (WKPageCopySessionState): |
| * UIProcess/mac/LegacySessionStateCoding.cpp: |
| (WebKit::HistoryEntryDataEncoder::encodeFixedLengthData): |
| (WebKit::encodeFrameStateNode): |
| |
| 2019-06-12 Ludovico de Nittis <ludovico.denittis@collabora.com> |
| |
| [GTK] GTK_STOCK_* types have been deprecated since GTK 3.10 |
| https://bugs.webkit.org/show_bug.cgi?id=198787 |
| |
| Reviewed by Michael Catanzaro. |
| |
| We completely remove the gtkStockIDFromContextMenuAction function in order to get rid of the stock items. |
| This function was used only in "createActionIfNeeded" where now we pass a nullptr as a stock_id variable. |
| |
| * Shared/glib/WebContextMenuItemGlib.cpp: |
| (WebKit::gtkStockIDFromContextMenuAction): |
| |
| 2019-06-12 Brent Fulgham <bfulgham@apple.com> |
| |
| Unreviewed fix after rr246360. |
| |
| The current code accidentally calls the completion handler twice. |
| |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _setPrevalentDomain:completionHandler:]): |
| |
| 2019-06-12 Jiewen Tan <jiewen_tan@apple.com> |
| |
| REGRESSION (r245043) [Mac WK2 Debug] ASSERTION FAILED: m_services.isEmpty() && transports.size() <= maxTransportNumber seen with two http/wpt/webauthn/public-key-credential-* tests |
| https://bugs.webkit.org/show_bug.cgi?id=197917 |
| <rdar://problem/51524958> |
| |
| Reviewed by Brent Fulgham. |
| |
| This is a race condition that when a new request comes in the middle between the previous one finishes and the clearStateAsync is queued in the main thread. |
| Therefore, when the new request starts discovery, it will still see previous request's state. |
| |
| To fix this issue, clearState() will be called unconditionally for every request. And a guard is added to clearState() to prevent double clearance. |
| |
| * UIProcess/WebAuthentication/AuthenticatorManager.cpp: |
| (WebKit::AuthenticatorManager::makeCredential): |
| (WebKit::AuthenticatorManager::getAssertion): |
| (WebKit::AuthenticatorManager::clearState): |
| |
| 2019-06-12 Brent Fulgham <bfulgham@apple.com> |
| |
| Add mechanism and test case to check if ITP is active |
| https://bugs.webkit.org/show_bug.cgi?id=198694 |
| <rdar://problem/51557704> |
| |
| Reviewed by Youenn Fablet. |
| |
| Add a new private SPI call on the WebsiteDataStore object that allows test code |
| to mark a domain as prevalent, and check the prevalance of a resource. This |
| is then used to build a test to confirm ITP is active and working. |
| |
| * UIProcess/API/Cocoa/WKWebsiteDataStore.mm: |
| (-[WKWebsiteDataStore _setPrevalentDomain:completionHandler:]): |
| (-[WKWebsiteDataStore _getIsPrevalentDomain:completionHandler:]): |
| * UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: |
| |
| 2019-06-12 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Many layout tests are failing on iPad simulator due to unexpected viewport dimensions |
| https://bugs.webkit.org/show_bug.cgi?id=198789 |
| <rdar://problem/51595519> |
| |
| Reviewed by Simon Fraser. |
| |
| Prevent the shrink-to-fit-content timer from activating on layout tests that use the testing viewport |
| configuration. |
| |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::immediatelyShrinkToFitContent): |
| |
| 2019-06-12 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [WPE][GTK] Deprecate WebSQL APIs |
| https://bugs.webkit.org/show_bug.cgi?id=195011 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/glib/WebKitSettings.cpp: |
| (webkit_settings_class_init): |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkitWebContextConstructed): |
| * UIProcess/API/glib/WebKitWebsiteDataManager.cpp: |
| (webkitWebsiteDataManagerGetProperty): |
| (webkit_website_data_manager_class_init): |
| * UIProcess/API/gtk/WebKitWebsiteData.h: |
| * UIProcess/API/gtk/WebKitWebsiteDataManager.h: |
| * UIProcess/API/wpe/WebKitWebsiteData.h: |
| * UIProcess/API/wpe/WebKitWebsiteDataManager.h: |
| |
| 2019-06-12 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [WPE][GTK] Enable hyperlink auditing |
| https://bugs.webkit.org/show_bug.cgi?id=197845 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/glib/WebKitSettings.cpp: |
| (webkit_settings_class_init): |
| |
| 2019-06-12 Ludovico de Nittis <ludovico.denittis@collabora.com> |
| |
| [GTK] gtk_misc_set_alignment is deprecated since GTK 3.14 |
| https://bugs.webkit.org/show_bug.cgi?id=198785 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Replace the deprecated gtk_misc_set_alignment with halign and valign. |
| |
| * UIProcess/API/gtk/WebKitAuthenticationDialog.cpp: |
| (createLabelWithLineWrap): |
| |
| 2019-06-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] Idempotent text autosizing needs to react properly to viewport changes |
| https://bugs.webkit.org/show_bug.cgi?id=198736 |
| <rdar://problem/50591911> |
| |
| Reviewed by Zalan Bujtas. |
| |
| If idempotent text autosizing is enabled, respond to viewport initial scale changes by forcing a style recalc, |
| since the amount by which idempotent text autosizing boosts font sizes depends on the Page's initial scale. |
| |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::resetIdempotentTextAutosizingIfNeeded): |
| (WebKit::WebPage::viewportConfigurationChanged): |
| |
| 2019-06-11 Zalan Bujtas <zalan@apple.com> |
| |
| LayoutTests/fast/events/touch/ios/double-tap-for-double-click* test cases are failing |
| https://bugs.webkit.org/show_bug.cgi?id=198764 |
| <rdar://problem/51035459> |
| |
| Reviewed by Wenson Hsieh. |
| |
| This patch replaces the existing, _doubleTapGestureRecognizerForDoubleClick based double click handling with a WebProcess based implementation using |
| the potentialTapAtPosition/commitPotentialTap infrastructure. |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| * UIProcess/PageClient.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::creationParameters): |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::doubleTapForDoubleClickDelay): |
| (WebKit::PageClientImpl::doubleTapForDoubleClickRadius): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _ensureNonBlockingDoubleTapGestureRecognizer]): |
| (-[WKContentView setupInteraction]): |
| (-[WKContentView cleanupInteraction]): |
| (-[WKContentView _removeDefaultGestureRecognizers]): |
| (-[WKContentView _addDefaultGestureRecognizers]): |
| (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): |
| (-[WKContentView gestureRecognizerShouldBegin:]): |
| (-[WKContentView _didStartProvisionalLoadForMainFrame]): |
| (-[WKContentView _doubleTapForDoubleClickDelay]): |
| (-[WKContentView _doubleTapForDoubleClickRadius]): |
| (-[WKContentView _doubleTapRecognizedForDoubleClick:]): Deleted. |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::handleDoubleTapForDoubleClickAtPoint): Deleted. |
| * WebProcess/WebPage/WebPage.cpp: |
| * WebProcess/WebPage/WebPage.h: |
| * WebProcess/WebPage/WebPage.messages.in: |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::handlePotentialDoubleTapForDoubleClickAtPoint): |
| (WebKit::WebPage::commitPotentialTap): |
| (WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint): Deleted. |
| |
| 2019-06-11 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] ASSERTION FAILED: m_state == State::Activating under WebPaymentCoordinatorProxy::showPaymentUI |
| https://bugs.webkit.org/show_bug.cgi?id=198776 |
| <rdar://problem/49123795> |
| |
| Reviewed by Brian Weinstein. |
| |
| It's possible that an active session is aborted before the completion handler passed to |
| platformShowPaymentUI() has executed. When that happens, m_state will be Idle even though we |
| assert that it is Activating. Fix this by returning early in the platformShowPaymentUI() |
| completion handler when m_state is Idle. |
| |
| It's not possible to write a layout test for this because MockPaymentCoordinator handles |
| showing payment UI directly in the web process, so this code is not executed in layout |
| tests. The assertion can be reproduced manually by loading |
| https://w3c-test.org/payment-request/payment-is-showing.https.html and clicking the button. |
| |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.cpp: |
| (WebKit::WebPaymentCoordinatorProxy::showPaymentUI): |
| |
| 2019-06-11 Patrick Griffis <pgriffis@igalia.com> |
| |
| [GTK] Fix a11y support in bubblewrap sandbox |
| https://bugs.webkit.org/show_bug.cgi?id=198777 |
| |
| Reviewed by Michael Catanzaro. |
| |
| * UIProcess/Launcher/glib/BubblewrapLauncher.cpp: |
| (WebKit::bindA11y): |
| |
| 2019-06-11 Timothy Hatcher <timothy@apple.com> |
| |
| Flash when tapping compose button after switching to/from dark mode without restarting Mail. |
| https://bugs.webkit.org/show_bug.cgi?id=198769 |
| rdar://problem/51370037 |
| |
| Reviewed by Tim Horton. |
| |
| Accessing a dynamic color outside a normal UIView choke point without setting |
| UITraitCollection.currentTraitCollection first can cause undefined results. |
| Use LocalCurrentTraitCollection inside scrollViewBackgroundColor when accessing |
| the dynamic system UIColors. Also use systemBackgroundColor instead of white. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (scrollViewBackgroundColor): |
| |
| 2019-06-11 Megan Gardner <megan_gardner@apple.com> |
| |
| Integrate scrollbar gestures for iOS |
| https://bugs.webkit.org/show_bug.cgi?id=198767 |
| |
| Reviewed by Tim Horton. |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (_WKGestureRecognizerIsBuiltInScrollViewGestureRecognizer): |
| (-[WKContentView gestureRecognizer:canPreventGestureRecognizer:]): |
| |
| 2019-06-11 Timothy Hatcher <timothy@apple.com> |
| |
| Scrollbar can show as white on white in dark mode on iOS. |
| https://bugs.webkit.org/show_bug.cgi?id=198772 |
| rdar://problem/51516743 |
| |
| Reviewed by Tim Horton. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _updateScrollViewBackground]): Use UIScrollViewIndicatorStyleBlack instead |
| of UIScrollViewIndicatorStyleDefault to prevent getting a white scrollbar in dark mode. |
| |
| 2019-06-11 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| Unreviewed build warning fixes |
| |
| Silence -Wunused-variable warning |
| |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::clearWebProcessIsPlayingAudibleMedia): |
| |
| 2019-06-11 Simon Fraser <simon.fraser@apple.com> |
| |
| Fix non-internal builds after r246327. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| |
| 2019-06-10 Simon Fraser <simon.fraser@apple.com> |
| |
| Add logging for UI-side compositing hit-testing |
| https://bugs.webkit.org/show_bug.cgi?id=198739 |
| |
| Reviewed by Antti Koivisto. |
| |
| Make it easier to debug UI-side compositing hit-testing issues with a UIHitTesting log |
| channel, which logs information about the UIView hierarchy, which views are found by |
| hit-testing, and what touch-actions apply. |
| |
| This log channel can be set by passing the argument '-WebKit2Logging "UIHitTesting"' when |
| launching a debug iOS MobileSafari instance. |
| |
| * Platform/Logging.h: |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (-[UIView _web_findDescendantViewAtPoint:withEvent:]): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView hitTest:withEvent:]): |
| (-[WKContentView _handleTouchActionsForTouchEvent:]): |
| |
| 2019-06-11 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION (iOS): Can't scroll litter-robot.com checkout form's dropdown menus |
| https://bugs.webkit.org/show_bug.cgi?id=198753 |
| <rdar://problem/51355686> |
| |
| Reviewed by Simon Fraser. |
| |
| If an element with 'overflow:scroll' also had 'visibility:hidden' or 'pointer-events:none' it would |
| capture touches and prevent scrolling of any overlapped scrollers. |
| |
| * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: |
| (WebKit::collectDescendantViewsAtPoint): |
| |
| Filter out views with 'isUserInteractionEnabled == NO' (set for hidden and pointer-events:none layers). |
| This prevents it being considered as the first view hit when determining scrolling relationships. |
| |
| (-[UIView _web_findDescendantViewAtPoint:withEvent:]): |
| |
| No need to skip here anymore. |
| |
| 2019-06-11 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Quotes are always inserted as smart quotes on stackblitz.com, causing compilation errors |
| https://bugs.webkit.org/show_bug.cgi?id=198735 |
| <rdar://problem/51557159> |
| |
| Reviewed by Megan Gardner. |
| |
| Add a flag in FocusedElementInformation to indicate whether spellchecking is allowed in the focused element. |
| If spellchecking is not allowed, then disable smart quotes and dashes, which matches behavior on macOS. |
| |
| * Shared/FocusedElementInformation.cpp: |
| (WebKit::FocusedElementInformation::encode const): |
| (WebKit::FocusedElementInformation::decode): |
| * Shared/FocusedElementInformation.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView textInputTraits]): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::getFocusedElementInformation): |
| |
| 2019-06-11 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK] Remove option REDIRECTED_XCOMPOSITE_WINDOW |
| https://bugs.webkit.org/show_bug.cgi?id=198748 |
| |
| Reviewed by Žan Doberšek. |
| |
| It's unused and untested, we kept that code path only because the redirected window caused performance issues in |
| some drivers in embedded devices. Nowadays there are much better solutions for those cases like using WPE port |
| or GTK port under wayland instead of X11. |
| |
| * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: |
| (WebKit::ThreadedCompositor::create): Remove the ShouldDoFrameSync parameter since it always receives Yes. |
| (WebKit::ThreadedCompositor::ThreadedCompositor): Ditto. |
| (WebKit::ThreadedCompositor::createGLContext): Remove the code to handle the case of ShouldDoFrameSync being No, |
| since it's always Yes. |
| (WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing): Deleted. |
| * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h: |
| * UIProcess/API/gtk/WebKitWebViewBase.cpp: |
| (webkitWebViewBaseRealize): Remove the code for !USE(REDIRECTED_XCOMPOSITE_WINDOW). |
| (webkitWebViewBaseUnrealize): Ditto. |
| (webkitWebViewBaseDraw): acceleratedBackingStore member can't be nullptr now. |
| (webkitWebViewBaseEnterAcceleratedCompositingMode): Ditto. |
| (webkitWebViewBaseUpdateAcceleratedCompositingMode): Ditto. |
| (webkitWebViewBaseExitAcceleratedCompositingMode): Ditto. |
| (webkitWebViewBaseMakeGLContextCurrent): Ditto. |
| (webkitWebViewBaseDidRelaunchWebProcess): Remove the code for !USE(REDIRECTED_XCOMPOSITE_WINDOW). |
| (webkitWebViewBasePageClosed): Ditto. |
| (webkitWebViewBaseRenderHostFileDescriptor): acceleratedBackingStore member can't be nullptr now. |
| * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaProxyCoordinatedGraphics::didUpdateBackingStoreState): Remove the code for !USE(REDIRECTED_XCOMPOSITE_WINDOW). |
| (WebKit::DrawingAreaProxyCoordinatedGraphics::setNativeSurfaceHandleForCompositing): Deleted. |
| (WebKit::DrawingAreaProxyCoordinatedGraphics::destroyNativeSurfaceHandleForCompositing): Deleted. |
| * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: |
| * UIProcess/gtk/AcceleratedBackingStore.cpp: |
| (WebKit::AcceleratedBackingStore::create): Add an assert to ensure we create an AcceleratedBackingStore. |
| * UIProcess/gtk/AcceleratedBackingStoreX11.cpp: |
| * UIProcess/gtk/AcceleratedBackingStoreX11.h: |
| * UIProcess/gtk/HardwareAccelerationManager.cpp: |
| (WebKit::HardwareAccelerationManager::HardwareAccelerationManager): Remove the code for !USE(REDIRECTED_XCOMPOSITE_WINDOW). |
| * WebProcess/WebPage/AcceleratedSurface.cpp: |
| (WebKit::AcceleratedSurface::create): Add an assert to ensure we create an AcceleratedSurface. |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp: |
| (WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Remove the code for !USE(REDIRECTED_XCOMPOSITE_WINDOW). |
| (WebKit::DrawingAreaCoordinatedGraphics::setNativeSurfaceHandleForCompositing): Deleted. |
| (WebKit::DrawingAreaCoordinatedGraphics::destroyNativeSurfaceHandleForCompositing): Deleted. |
| * WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h: |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp: |
| (WebKit::LayerTreeHost::LayerTreeHost): m_surface can't be nullptr now. |
| (WebKit::LayerTreeHost::sizeDidChange): Ditto. |
| (WebKit::LayerTreeHost::deviceOrPageScaleFactorChanged): Ditto. |
| (WebKit::LayerTreeHost::nativeSurfaceHandleForCompositing): Ditto. |
| (WebKit::LayerTreeHost::didDestroyGLContext): Ditto. |
| (WebKit::LayerTreeHost::willRenderFrame): Ditto. |
| (WebKit::LayerTreeHost::didRenderFrame): Ditto. |
| (WebKit::LayerTreeHost::setNativeSurfaceHandleForCompositing): Deleted. |
| * WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: |
| * WebProcess/WebPage/DrawingArea.h: |
| * WebProcess/WebPage/DrawingArea.messages.in: |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::nativeWindowHandle): Deleted. |
| * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp: |
| * WebProcess/WebPage/gtk/AcceleratedSurfaceX11.h: |
| |
| 2019-06-11 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [WPE][GTK] bubblewrap sandbox should grant access to web extensions directory |
| https://bugs.webkit.org/show_bug.cgi?id=198734 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/glib/WebKitWebContext.cpp: |
| (webkit_web_context_set_web_extensions_directory): |
| |
| 2019-06-10 Andy Estes <aestes@apple.com> |
| |
| [iOS] Use PDFKit SPI for taking snapshots when the hosting app is not entitled for global capture |
| https://bugs.webkit.org/show_bug.cgi?id=198731 |
| <rdar://problem/46215174> |
| |
| Reviewed by Tim Horton. |
| |
| PDFHostViewController renders PDF contents in a view service, and apps are unable to |
| snapshot views rendered out-of-process without an entitlement. |
| |
| When an app is missing this entitlement and calls WKWebView's |
| takeSnapshotWithConfiguration: API when a PDF is displayed, fall back to calling |
| PDFHostViewController's snapshotting SPI. |
| |
| Testing is blocked by <https://webkit.org/b/175204>. |
| |
| * Platform/spi/ios/PDFKitSPI.h: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]): |
| * UIProcess/Cocoa/WKWebViewContentProvider.h: |
| * UIProcess/ios/WKPDFView.mm: |
| (+[WKPDFView web_requiresCustomSnapshotting]): |
| (-[WKPDFView web_snapshotRectInContentViewCoordinates:snapshotWidth:completionHandler:]): |
| * UIProcess/ios/WKSystemPreviewView.mm: |
| (+[WKSystemPreviewView web_requiresCustomSnapshotting]): |
| |
| 2019-06-10 Sam Weinig <weinig@apple.com> |
| |
| Remove Dashboard support |
| https://bugs.webkit.org/show_bug.cgi?id=198615 |
| |
| Reviewed by Ryosuke Niwa. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * WebProcess/InjectedBundle/API/c/WKBundle.cpp: |
| (WKBundleSetUseDashboardCompatibilityMode): Deleted. |
| * WebProcess/InjectedBundle/API/c/WKBundlePrivate.h: |
| * WebProcess/InjectedBundle/InjectedBundle.cpp: |
| (WebKit::InjectedBundle::setUseDashboardCompatibilityMode): Deleted. |
| * WebProcess/InjectedBundle/InjectedBundle.h: |
| * WebProcess/WebCoreSupport/WebChromeClient.cpp: |
| (WebKit::WebChromeClient::annotatedRegionsChanged): Deleted. |
| * WebProcess/WebCoreSupport/WebChromeClient.h: |
| |
| 2019-06-10 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] fast/xsl tests are flaky when run after certain viewport shrink-to-fit tests |
| https://bugs.webkit.org/show_bug.cgi?id=198699 |
| <rdar://problem/50501718> |
| |
| Reviewed by Simon Fraser. |
| |
| Lift logic that sets the "IsKnownToLayOutWiderThanViewport" flag out of resetViewportDefaultConfiguration, and |
| into didCommitLoad instead (along with other logic for resetting viewport arguments). The previous method, |
| resetViewportDefaultConfiguration, was being triggered very frequently undo didReceiveMobileDocType, causing the |
| shrink-to-fit heuristic to sometimes take no effect. The original intention here was simply to reset the flag |
| upon page load. |
| |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::didCommitLoad): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::resetViewportDefaultConfiguration): |
| |
| 2019-06-10 Timothy Hatcher <timothy@apple.com> |
| |
| Integrate dark mode support for iOS. |
| https://bugs.webkit.org/show_bug.cgi?id=198687 |
| rdar://problem/51545643 |
| |
| Reviewed by Tim Horton. |
| |
| * Configurations/FeatureDefines.xcconfig: |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _effectiveAppearanceIsDark]): |
| (-[WKWebView _effectiveAppearanceIsInactive]): |
| (-[WKWebView _dynamicUserInterfaceTraitDidChange]): |
| * UIProcess/API/Cocoa/WKWebViewInternal.h: |
| * UIProcess/ios/PageClientImplIOS.h: |
| * UIProcess/ios/PageClientImplIOS.mm: |
| (WebKit::PageClientImpl::effectiveAppearanceIsDark const): |
| (WebKit::PageClientImpl::effectiveAppearanceIsInactive const): |
| * UIProcess/ios/WKPasswordView.mm: |
| (-[WKPasswordView showInScrollView:]): |
| (configureScrollView): Deleted. |
| |
| 2019-06-10 Sihui Liu <sihui_liu@apple.com> |
| |
| [WKHTTPCookieStore getAllCookies:] may return duplicate cookies |
| https://bugs.webkit.org/show_bug.cgi?id=198635 |
| <rdar://problem/46010232> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| When there is no process pool, we store cookies set in memory with HashSet m_pendingCookies of WebsiteDataStore. |
| |
| HashSet does not contain duplicate Cookies that are completely identical, but it may contain Cookies that have |
| all the other properties identical other than value. This is not correct because Cookies with same name, domain |
| and path should be treated as the same cookie. When a cookie is set via API, we should either insert the |
| cookie into m_pendingCookies if the cookie does not exist, or update the cookie value if it already exists. |
| |
| Note that we still use HashSet with CookieHash for m_pendingCookies because in cookie deletion, we only delete |
| cookie when there is a complete match. If some cookie from m_pendingCookies has all other properties the same as |
| the cookie specified in the deletion function, but the value is different, it will not be removed. |
| |
| * UIProcess/WebsiteData/WebsiteDataStore.cpp: |
| (WebKit::WebsiteDataStore::addPendingCookie): |
| |
| 2019-06-10 Philippe Normand <pnormand@igalia.com> |
| |
| [WPE][Qt] Port to new wpe_fdo_egl_exported_image API |
| https://bugs.webkit.org/show_bug.cgi?id=198713 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| * UIProcess/API/wpe/qt/WPEQtViewBackend.cpp: |
| (WPEQtViewBackend::WPEQtViewBackend): |
| (WPEQtViewBackend::texture): |
| (WPEQtViewBackend::displayImage): |
| * UIProcess/API/wpe/qt/WPEQtViewBackend.h: |
| |
| 2019-06-09 Brent Fulgham <bfulgham@apple.com> |
| |
| [iOS] ResourceLoadStatistics state is not properly relayed to the NetworkProcess |
| https://bugs.webkit.org/show_bug.cgi?id=198692 |
| <rdar://problem/51538088> |
| |
| Reviewed by Maciej Stachowiak. |
| |
| * UIProcess/WebProcessPool.cpp: |
| (WebKit::WebProcessPool::setResourceLoadStatisticsEnabled): Message the NetworkProcess |
| on state change. |
| |
| 2019-06-08 Dean Jackson <dino@apple.com> |
| |
| Drag starting state can get stuck even though the drag has ended |
| https://bugs.webkit.org/show_bug.cgi?id=198696 |
| <rdar://problem/51556045> |
| |
| Reviewed by Wenson Hsieh. |
| |
| In iOS 13, we're seeing cases of the DragSession not |
| correctly ending, and thus leaving m_isStartingDrag in |
| an incorrect state. Temporarily force this to be reset |
| in ::dragEnded while investigating |
| |
| * UIProcess/ios/WKContentViewInteraction.mm: Add some more release logging |
| while here. |
| (-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]): |
| (-[WKContentView dragInteraction:item:willAnimateCancelWithAnimator:]): |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage::dragEnded): |
| |
| 2019-06-08 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| [iOS] The default application name for user agent when requesting desktop content is still "Mobile/15E148" |
| https://bugs.webkit.org/show_bug.cgi?id=198693 |
| <rdar://problem/51555371> |
| |
| Reviewed by Tim Horton. |
| |
| Fixes the bug by introducing an applicationNameForDesktopUserAgent member to WebPageProxy. This |
| applicationNameForDesktopUserAgent is set alongside the regular applicationNameForUserAgent; however, in the |
| case where it is being set via WKWebViewConfiguration, use WKWebViewConfiguration's |
| _applicationNameForDesktopUserAgent instead. See below for more details. |
| |
| Tested by adding to the existing API test PreferredContentMode.ApplicationNameForDesktopUserAgent. |
| |
| * UIProcess/API/APIWebsitePolicies.cpp: |
| (API::WebsitePolicies::copy const): |
| * UIProcess/API/APIWebsitePolicies.h: |
| |
| Drive-by fix: rename applicationNameForUserAgentWithModernCompatibility to applicationNameForDesktopUserAgent in |
| a few places. |
| |
| * UIProcess/API/Cocoa/WKBrowsingContextController.mm: |
| (-[WKBrowsingContextController setApplicationNameForUserAgent:]): |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _initializeWithConfiguration:]): |
| (-[WKWebView _setApplicationNameForUserAgent:]): |
| * UIProcess/API/Cocoa/WKWebViewConfiguration.mm: |
| |
| Change _applicationNameForUserAgent into an Optional<RetainPtr<NSString>>. A value of WTF::nullopt allows us to |
| know that the default application name should be used (which is different when requesting desktop content). |
| |
| (-[WKWebViewConfiguration encodeWithCoder:]): |
| (-[WKWebViewConfiguration initWithCoder:]): |
| (-[WKWebViewConfiguration copyWithZone:]): |
| (-[WKWebViewConfiguration _applicationNameForDesktopUserAgent]): |
| |
| Add _applicationNameForDesktopUserAgent to the web view configuration. This behaves like |
| applicationNameForUserAgent, with one exception: in the case where the default applicationNameForUserAgent is |
| used (i.e. the client has not specified any application name), default to `nil` as the application name for user |
| agent, rather than "Mobile/15E148". |
| |
| (-[WKWebViewConfiguration applicationNameForUserAgent]): |
| (-[WKWebViewConfiguration setApplicationNameForUserAgent:]): |
| * UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h: |
| * UIProcess/API/Cocoa/WKWebpagePreferences.mm: |
| (-[WKWebpagePreferences _applicationNameForUserAgentWithModernCompatibility]): |
| (-[WKWebpagePreferences _setApplicationNameForUserAgentWithModernCompatibility:]): |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::setApplicationNameForDesktopUserAgent): |
| (WebKit::WebPageProxy::applicationNameForDesktopUserAgent const): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): |
| |
| 2019-06-08 Andy Estes <aestes@apple.com> |
| |
| [Apple Pay] If we have a bound interface identifier, set it on new PKPaymentRequests |
| https://bugs.webkit.org/show_bug.cgi?id=198690 |
| <rdar://problem/48041803> |
| |
| Reviewed by Tim Horton. |
| |
| * NetworkProcess/cocoa/NetworkSessionCocoa.h: |
| * NetworkProcess/cocoa/NetworkSessionCocoa.mm: |
| (WebKit::NetworkSessionCocoa::boundInterfaceIdentifier const): Implemented a public getter |
| for m_boundInterfaceIdentifier. |
| |
| * NetworkProcess/NetworkConnectionToWebProcess.h: |
| * NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: |
| (WebKit::NetworkConnectionToWebProcess::paymentCoordinatorBoundInterfaceIdentifier): |
| Implemented an override for paymentCoordinatorBoundInterfaceIdentifier. |
| |
| * Shared/ApplePay/WebPaymentCoordinatorProxy.h: Declared |
| paymentCoordinatorBoundInterfaceIdentifier for clients to override. |
| |
| * Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm: |
| (WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): If the client has a non-empty |
| bound interface identifier, set it on the new PKPaymentRequest. |
| |
| * UIProcess/WebPageProxy.h: |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::paymentCoordinatorBoundInterfaceIdentifier): Implemented an override |
| for paymentCoordinatorBoundInterfaceIdentifier. |
| |
| 2019-06-07 Antti Koivisto <antti@apple.com> |
| |
| REGRESSION (r245006): Setting scrollview.scrollEnabled clobbers any scrollEnabled set by a client |
| https://bugs.webkit.org/show_bug.cgi?id=198656 |
| <rdar://problem/51494585> |
| |
| Reviewed by Tim Horton. |
| |
| Allow client to disable scrolling and zooming. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView _didCommitLayerTree:]): |
| * UIProcess/ios/WKScrollView.h: |
| * UIProcess/ios/WKScrollView.mm: |
| (-[WKScrollView initWithFrame:]): |
| (-[WKScrollView setScrollEnabled:]): |
| (-[WKScrollView _setScrollEnabledInternal:]): |
| (-[WKScrollView _updateScrollability]): |
| (-[WKScrollView setZoomEnabled:]): |
| (-[WKScrollView _setZoomEnabledInternal:]): |
| (-[WKScrollView _updateZoomability]): |
| |
| 2019-06-07 Wenson Hsieh <wenson_hsieh@apple.com> |
| |
| Allow clients to vend custom -inputView and -inputAccessoryView by overriding WKWebView methods |
| https://bugs.webkit.org/show_bug.cgi?id=198631 |
| <rdar://problem/51505431> |
| |
| Reviewed by Tim Horton. |
| |
| Allow WKWebView API clients to override WKContentView's default input view and/or input accessory view by |
| subclassing WKWebView and implementing -inputView or -inputAccessoryView. |
| |
| * UIProcess/API/Cocoa/WKWebView.mm: |
| (-[WKWebView inputAccessoryView]): |
| (-[WKWebView inputView]): |
| * UIProcess/ios/WKContentViewInteraction.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView inputView]): |
| (-[WKContentView inputViewForWebView]): |
| (-[WKContentView inputAccessoryView]): |
| (-[WKContentView inputAccessoryViewForWebView]): |
| |
| 2019-06-07 Tim Horton <timothy_horton@apple.com> |
| |
| Disable focus rings on WKContentView for PLATFORM(IOSMAC) |
| https://bugs.webkit.org/show_bug.cgi?id=198685 |
| |
| Reviewed by Simon Fraser. |
| |
| * Platform/spi/ios/UIKitSPI.h: |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView _commonInitializationWithProcessPool:configuration:]): |
| |
| 2019-06-07 Megan Gardner <megan_gardner@apple.com> |
| |
| Extend quirks to emulate bold/italic/underline in hidden editable areas |
| https://bugs.webkit.org/show_bug.cgi?id=198681 |
| |
| Reviewed by Wenson Hsieh. |
| |
| * Shared/FocusedElementInformation.cpp: |
| (WebKit::FocusedElementInformation::encode const): |
| (WebKit::FocusedElementInformation::decode): |
| * Shared/FocusedElementInformation.h: |
| * Shared/SyntheticEditingCommandType.h: |
| * UIProcess/ios/WKContentView.mm: |
| (-[WKContentView undoManager]): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (shouldSynthezieKeyEvents): |
| (-[WKContentView toggleBoldfaceForWebView:]): |
| (-[WKContentView toggleItalicsForWebView:]): |
| (-[WKContentView toggleUnderlineForWebView:]): |
| (-[WKContentView _elementDidBlur]): |
| * WebProcess/WebPage/ios/WebPageIOS.mm: |
| (WebKit::WebPage::generateSyntheticEditingCommand): |
| (WebKit::WebPage::getFocusedElementInformation): |
| |
| 2019-06-05 Alex Christensen <achristensen@webkit.org> |
| |
| Introduce new SPI for context menus on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=198590 |
| |
| Reviewed by Tim Horton. |
| |
| Also introduce WKContextMenuElementInfo which is API. |
| This is part of <rdar://problem/51003503> |
| |
| * Shared/API/APIObject.h: |
| * Shared/API/Cocoa/WebKit.h: |
| * Shared/Cocoa/APIObject.mm: |
| (API::Object::newObject): |
| * Sources.txt: |
| * SourcesCocoa.txt: |
| * UIProcess/API/APIContextMenuElementInfo.cpp: Added. |
| (API::ContextMenuElementInfo::ContextMenuElementInfo): |
| * UIProcess/API/APIContextMenuElementInfo.h: Added. |
| * UIProcess/API/Cocoa/WKContextMenuElementInfo.h: Added. |
| * UIProcess/API/Cocoa/WKContextMenuElementInfo.mm: Added. |
| (-[WKContextMenuElementInfo linkURL]): |
| (-[WKContextMenuElementInfo _apiObject]): |
| (-[WKContextMenuElementInfo _activatedElementInfo]): |
| * UIProcess/API/Cocoa/WKContextMenuElementInfoInternal.h: Added. |
| * UIProcess/API/Cocoa/WKContextMenuElementInfoPrivate.h: Added. |
| * UIProcess/API/Cocoa/WKPreviewElementInfo.h: |
| * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: |
| * UIProcess/API/Cocoa/_WKActivatedElementInfo.h: |
| * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm: |
| (-[_WKActivatedElementInfo _initWithInteractionInformationAtPosition:]): |
| (-[_WKActivatedElementInfo isAnimatedImage]): |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant defaultActionsForLinkSheet:]): |
| (-[WKActionSheetAssistant defaultActionsForImageSheet:]): |
| * UIProcess/ios/WKContentView.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-06-07 Antoine Quint <graouts@apple.com> |
| |
| Restrict fast clicks everywhere to desktop content mode |
| https://bugs.webkit.org/show_bug.cgi?id=198610 |
| <rdar://problem/50114230> |
| |
| Reviewed by Dean Jackson. |
| |
| We now set a new allowsFastClicksEverywhere property on the WebPageProxy when the content mode changes, set to true |
| when we're in desktop browsing mode. We now check on this property to opt into the fast clicks everywhere behavior. |
| |
| This patch had been reverted once because it yielded some regressions in existing tests, notably under |
| fast/events/touch/ios/content-observation. This updated patch addresses this by ensuring the gesture recognizers |
| used for double-tap-to-zoom are disabled in -[WKContentViewInteraction _didStartProvisionalLoadForMainFrame] |
| to ensure that two tests dispatching a tap at the same location don't yield the recognition of a double-tap |
| rathern than the recognition of two single taps. |
| |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::allowsFastClicksEverywhere const): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _handleSmartMagnificationInformationForPotentialTap:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:]): |
| (_didStartProvisionalLoadForMainFrame): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): |
| |
| 2019-06-07 Brent Fulgham <bfulgham@apple.com> |
| |
| [iOS] Update sandboxes to address iokit-get-property errors |
| https://bugs.webkit.org/show_bug.cgi?id=198494 |
| <rdar://problem/51322072> and <rdar://problem/50602737> |
| |
| Reviewed by Per Arne Vollan. |
| |
| * Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: |
| |
| 2019-06-07 Andy Estes <aestes@apple.com> |
| |
| process-swap-on-navigation error when loading blocked website on iOS 12.2 only. |
| https://bugs.webkit.org/show_bug.cgi?id=196930 |
| <rdar://problem/47819301> |
| |
| Reviewed by Chris Dumez. |
| |
| The ContentFilterDidBlockLoadForFrame message needs to be handled by ProvisionalPageProxy in |
| order to look up the blocked frame in the correct WebProcessProxy. |
| |
| * UIProcess/Cocoa/WebPageProxyCocoa.mm: |
| (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame): |
| (WebKit::WebPageProxy::contentFilterDidBlockLoadForFrameShared): |
| * UIProcess/ProvisionalPageProxy.cpp: |
| (WebKit::ProvisionalPageProxy::contentFilterDidBlockLoadForFrame): |
| (WebKit::ProvisionalPageProxy::didReceiveMessage): |
| * UIProcess/ProvisionalPageProxy.h: |
| * UIProcess/WebPageProxy.h: |
| |
| 2019-06-07 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| Unreviewed. Fix api used to release wpe_fdo_egl_exported_image in GTK |
| |
| We are using the old deprecated API in AcceleratedBackingStoreWayland::displayBuffer(). |
| |
| * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: |
| (WebKit::AcceleratedBackingStoreWayland::displayBuffer): |
| |
| 2019-06-06 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| REGRESSION(r243094): [GTK][WPE] Stale content after restoring the web view session |
| https://bugs.webkit.org/show_bug.cgi?id=198561 |
| |
| Reviewed by Chris Dumez. |
| |
| This is another regression of delaying the web process launch until the first load. If the session is restored |
| before anything has been loaded, which is the normal way, the RestoreSession message is just ignored and the |
| state is sent to the WebPage on creation via creation parameters. The WebPage considers that restoring a session |
| from creation parameters only happens when re-launching a process after a crash or in case of process swap. In |
| those cases, the history item is not marked as restored from session. We need to ensure the session is restored |
| in the web process from the IPC message handler, by launching the initial process before the session is |
| restored. |
| |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::restoreFromSessionState): |
| |
| 2019-06-06 Youenn Fablet <youenn@apple.com> |
| |
| Use an enumeration in UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo callback |
| https://bugs.webkit.org/show_bug.cgi?id=198548 |
| |
| Reviewed by Eric Carlson. |
| |
| Move from an Optional<bool> to an enum having three values to ease readability. |
| |
| * UIProcess/UserMediaPermissionCheckProxy.cpp: |
| (WebKit::UserMediaPermissionCheckProxy::setUserMediaAccessInfo): |
| (WebKit::UserMediaPermissionCheckProxy::complete): |
| * UIProcess/UserMediaPermissionCheckProxy.h: |
| (WebKit::UserMediaPermissionCheckProxy::invalidate): |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged): |
| (WebKit::UserMediaPermissionRequestManagerProxy::startProcessingUserMediaPermissionRequest): |
| (WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo): |
| (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame): |
| * UIProcess/UserMediaPermissionRequestManagerProxy.h: |
| |
| 2019-06-06 Youenn Fablet <youenn@apple.com> |
| |
| Allow WebKitTestRunner to terminate network process after it finishes service worker file operations |
| https://bugs.webkit.org/show_bug.cgi?id=198584 |
| |
| Reviewed by Geoffrey Garen. |
| |
| Add IPC binding to new internal API. |
| |
| * NetworkProcess/ServiceWorker/WebSWServerConnection.messages.in: |
| * WebProcess/Storage/WebSWClientConnection.cpp: |
| (WebKit::WebSWClientConnection::storeRegistrationsOnDiskForTesting): |
| * WebProcess/Storage/WebSWClientConnection.h: |
| |
| 2019-06-06 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r246165. |
| https://bugs.webkit.org/show_bug.cgi?id=198636 |
| |
| Causing test failures in 7 content-observation tests. |
| (Requested by ShawnRoberts on #webkit). |
| |
| Reverted changeset: |
| |
| "Restrict fast clicks everywhere to desktop content mode" |
| https://bugs.webkit.org/show_bug.cgi?id=198610 |
| https://trac.webkit.org/changeset/246165 |
| |
| 2019-06-06 Commit Queue <commit-queue@webkit.org> |
| |
| Unreviewed, rolling out r246123. |
| https://bugs.webkit.org/show_bug.cgi?id=198634 |
| |
| Causes test failures (Requested by ShawnRoberts on #webkit). |
| |
| Reverted changeset: |
| |
| "[iOS] Update sandboxes to address iokit-get-property errors" |
| https://bugs.webkit.org/show_bug.cgi?id=198494 |
| https://trac.webkit.org/changeset/246123 |
| |
| 2019-06-06 Geoffrey Garen <ggaren@apple.com> |
| |
| Crash using WKHTTPCookieStore when you use WKWebView and UIWebView in the same app |
| https://bugs.webkit.org/show_bug.cgi?id=198622 |
| |
| Reviewed by Chris Dumez. |
| |
| Today in a WWDC lab, I saw some crash reports from an app that mixed |
| WKWebView and UIWebView. The proximate cause of the crash is that |
| WKHTTPCookieStore queues a callOnMainThread function, and then |
| UIWebView dequeues it on the WebThread. |
| |
| No test because this crash depends on mixing WKWebView and UIWebView and |
| getting (un)lucky on the timing. |
| |
| * UIProcess/API/APIHTTPCookieStore.cpp: |
| (API::HTTPCookieStore::cookies): |
| (API::HTTPCookieStore::setCookies): |
| (API::HTTPCookieStore::deleteCookie): Avoid using callOnMainThread |
| becuase it is prohibited in the UI process. |
| |
| 2019-06-06 Antoine Quint <graouts@apple.com> |
| |
| Remove duplicated websiteDataStoreParameters code from WebsitePoliciesData::applyToDocumentLoader() |
| https://bugs.webkit.org/show_bug.cgi?id=198608 |
| |
| Reviewed by Wenson Hsieh. |
| |
| Due to a rebasing error, r244218 re-introduced code that was removed in r244197. This patch removes this code for good. |
| |
| * Shared/WebsitePoliciesData.cpp: |
| (WebKit::WebsitePoliciesData::applyToDocumentLoader): |
| |
| 2019-06-06 Antoine Quint <graouts@apple.com> |
| |
| Restrict fast clicks everywhere to desktop content mode |
| https://bugs.webkit.org/show_bug.cgi?id=198610 |
| <rdar://problem/50114230> |
| |
| Reviewed by Dean Jackson. |
| |
| * UIProcess/WebPageProxy.h: |
| (WebKit::WebPageProxy::allowsFastClicksEverywhere const): |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| (-[WKContentView _handleSmartMagnificationInformationForPotentialTap:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:]): |
| * UIProcess/ios/WebPageProxyIOS.mm: |
| (WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies): |
| |
| 2019-06-06 Sihui Liu <sihui_liu@apple.com> |
| |
| NetworkHTTPSUpgradeChecker should construct and destruct database on the background thread |
| https://bugs.webkit.org/show_bug.cgi?id=198496 |
| |
| Reviewed by Chris Dumez. |
| |
| * NetworkProcess/NetworkHTTPSUpgradeChecker.cpp: |
| (WebKit::NetworkHTTPSUpgradeChecker::NetworkHTTPSUpgradeChecker): |
| (WebKit::NetworkHTTPSUpgradeChecker::~NetworkHTTPSUpgradeChecker): |
| * NetworkProcess/NetworkHTTPSUpgradeChecker.h: |
| |
| 2019-06-06 Truitt Savell <tsavell@apple.com> |
| |
| Unreviewed, rolling out r246137. |
| |
| Broke internal builds. |
| |
| Reverted changeset: |
| |
| "Introduce new SPI for context menus on iOS" |
| https://bugs.webkit.org/show_bug.cgi?id=198590 |
| https://trac.webkit.org/changeset/246137 |
| |
| 2019-06-06 Antti Koivisto <antti@apple.com> |
| |
| Position fixed is buggy with overflow:auto scrolling inside iframes |
| https://bugs.webkit.org/show_bug.cgi?id=154399 |
| <rdar://problem/24742251> |
| |
| Reviewed by Frederic Wang and Simon Fraser. |
| |
| * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: |
| (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree): |
| |
| Remove viewportChangedViaDelegatedScrolling call as we were just relying on its side effect of (partially) applying |
| the scrolling tree. Instead call the new applyScrollingTreeLayerPositionsAfterCommit() unconditionally. |
| It only does work if there are local deltas to apply. |
| |
| Local deltas will potentially need to be applied in non-fixed cases too and it is hard to reason about the conditions. |
| |
| * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: |
| (WebKit::RemoteScrollingCoordinatorProxy::applyScrollingTreeLayerPositionsAfterCommit): |
| (WebKit::RemoteScrollingCoordinatorProxy::applyScrollingTreeLayerPositions): Deleted. |
| * UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h: |
| |
| 2019-06-06 Michael Catanzaro <mcatanzaro@igalia.com> |
| |
| [WPE][GTK] Clean up use of initiatingPageID in implementation of webkit_uri_scheme_request_get_web_view() |
| https://bugs.webkit.org/show_bug.cgi?id=198564 |
| |
| Reviewed by Carlos Garcia Campos. |
| |
| Note that we have to use RefPtr rather than Ref here because the priv struct has to remain |
| default-constructible. |
| |
| * UIProcess/API/glib/WebKitURISchemeRequest.cpp: |
| (webkitURISchemeRequestCreate): |
| (webkit_uri_scheme_request_get_web_view): |
| |
| 2019-06-06 Carlos Garcia Campos <cgarcia@igalia.com> |
| |
| [GTK][WPE] Enable PSON |
| https://bugs.webkit.org/show_bug.cgi?id=194979 |
| |
| Reviewed by Žan Doberšek. |
| |
| * Shared/WebPreferencesDefaultValues.h: |
| |
| 2019-06-05 Said Abou-Hallawa <sabouhallawa@apple.com> |
| |
| [Cocoa] REGRESSION(r244182): Inspector thinks CA commits can be nested |
| https://bugs.webkit.org/show_bug.cgi?id=198497 |
| |
| Reviewed by Simon Fraser. |
| |
| Call InspectorController::willComposite() from the CA preCommit handler |
| similar to the call to InspectorController::didComposite() in the CA |
| postCommit handler. Ensure these calls will be once for nested commits. |
| |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: |
| * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: |
| (WebKit::RemoteLayerTreeDrawingArea::addCommitHandlers): |
| (WebKit::RemoteLayerTreeDrawingArea::flushLayers): |
| * WebProcess/WebPage/WebPage.h: |
| (WebKit::WebPage::firstFlushAfterCommit const): |
| (WebKit::WebPage::setFirstFlushAfterCommit): |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: |
| * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: |
| (WebKit::TiledCoreAnimationDrawingArea::addCommitHandlers): |
| (WebKit::TiledCoreAnimationDrawingArea::flushLayers): |
| |
| 2019-06-05 Alex Christensen <achristensen@webkit.org> |
| |
| Introduce new SPI for context menus on iOS |
| https://bugs.webkit.org/show_bug.cgi?id=198590 |
| |
| Reviewed by Tim Horton. |
| |
| Also introduce WKContextMenuElementInfo which is API. |
| This is part of <rdar://problem/51003503> |
| |
| * Shared/API/APIObject.h: |
| * Shared/API/Cocoa/WebKit.h: |
| * Shared/Cocoa/APIObject.mm: |
| (API::Object::newObject): |
| * Sources.txt: |
| * SourcesCocoa.txt: |
| * UIProcess/API/APIContextMenuElementInfo.cpp: Added. |
| (API::ContextMenuElementInfo::ContextMenuElementInfo): |
| * UIProcess/API/APIContextMenuElementInfo.h: Added. |
| * UIProcess/API/Cocoa/WKContextMenuElementInfo.h: Added. |
| * UIProcess/API/Cocoa/WKContextMenuElementInfo.mm: Added. |
| (-[WKContextMenuElementInfo linkURL]): |
| (-[WKContextMenuElementInfo _apiObject]): |
| (-[WKContextMenuElementInfo _activatedElementInfo]): |
| * UIProcess/API/Cocoa/WKContextMenuElementInfoInternal.h: Added. |
| * UIProcess/API/Cocoa/WKContextMenuElementInfoPrivate.h: Added. |
| * UIProcess/API/Cocoa/WKPreviewElementInfo.h: |
| * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: |
| * UIProcess/API/Cocoa/_WKActivatedElementInfo.h: |
| * UIProcess/API/Cocoa/_WKActivatedElementInfo.mm: |
| (-[_WKActivatedElementInfo _initWithInteractionInformationAtPosition:]): |
| (-[_WKActivatedElementInfo isAnimatedImage]): |
| * UIProcess/ios/WKActionSheetAssistant.h: |
| * UIProcess/ios/WKActionSheetAssistant.mm: |
| (-[WKActionSheetAssistant defaultActionsForLinkSheet:]): |
| (-[WKActionSheetAssistant defaultActionsForImageSheet:]): |
| * UIProcess/ios/WKContentView.h: |
| * UIProcess/ios/WKContentViewInteraction.mm: |
| * WebKit.xcodeproj/project.pbxproj: |
| |
| 2019-06-05 Jer Noble <jer.noble@apple.com> |
| |
| -[WKWebView _suspendAllMediaPlayback] does not persist across navigation. |
| https://bugs.webkit.org/show_bug.cgi?id=198585 |
| |
| Reviewed by Chris Dumez. |
| |
| Add a new WebPageCreationParameters entry for mediaPlaybackIsSuspended, and pass |
| that value across during WebPage creation. |
| |
| * Shared/WebPageCreationParameters.cpp: |
| (WebKit::WebPageCreationParameters::encode const): |
| (WebKit::WebPageCreationParameters::decode): |
| * Shared/WebPageCreationParameters.h: |
| * UIProcess/WebPageProxy.cpp: |
| (WebKit::WebPageProxy::suspendAllMediaPlayback): |
| (WebKit::WebPageProxy::resumeAllMediaPlayback): |
| (WebKit::WebPageProxy::creationParameters): |
| * UIProcess/WebPageProxy.h: |
| * WebProcess/WebPage/WebPage.cpp: |
| (WebKit::WebPage): |
| |
| 2019-06-05 Sihui Liu <sihui_liu@apple.com> |
| |
| TestWebKitAPI.WKWebView.LocalStorageProcessSuspends is flaky on release builds |
| https://bugs.webkit.org/show_bug.cgi?id=198582 |
| |
| Reviewed by Youenn Fablet. |
| |
| Initialize the state of StorageManager. |
| |
| * NetworkProcess/WebStorage/StorageManager.h: |
| |
| 2019-06-05 Alex Christensen <achristensen@webkit.org> |
| |
| Re-enable safe browsing in WKWebView |
| https://bugs.webkit.org/show_bug.cgi?id=196161 |
| <rdar://problem/49171413> |
| |
| Reviewed by Ryosuke Niwa. |
| |
| This is mostly just reverting r241728. |
| |
| * Shared/WebPreferences.yaml: |
| * UIProcess/API/Cocoa/WKPreferences.h: |
| * UIProcess/API/Cocoa/WKPreferences.mm: |
| (-[WKPreferences setSafeBrowsingEnabled:]): |
| (-[WKPreferences isSafeBrowsingEnabled]): |
| |
| 2019-06-05 Alex Christensen <achristensen@webkit.org> |
| |
| Progress towards resurrecting Mac CMake build |
| https://bugs.webkit.org/show_bug.cgi?id=197132 |
| |
| Reviewed by Don Olmstead. |
| |
| * PlatformMac.cmake: |
| |
| 2019-06-05 Youenn Fablet <youenn@apple.com> |
| |
| Remove logSiteIdentifier from UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame |
| https://bugs.webkit.org/show_bug.cgi?id=198575 |
| |
| Reviewed by Eric Carlson. |
| |
| * UIProcess/UserMediaPermissionRequestManagerProxy.cpp: |
| (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): |
| |
| == Rolled over to ChangeLog-2019-06-05 == |