| 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 == |