blob: b45b9c8b7b0bf1893057b858c851d46fbe2c2b68 [file] [log] [blame]
2018-04-30 Andy Estes <aestes@apple.com>
[iOS] Try to unlock PDF documents before printing them
https://bugs.webkit.org/show_bug.cgi?id=185084
<rdar://problem/39356622>
Reviewed by Dan Bernstein.
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView pdfHostViewController:documentDidUnlockWithPassword:]):
Stored the password that successfully unlocked the current PDF document.
(-[WKPDFView _wk_printedDocument]):
Used the stored password to unlock the CGPDFDocument we create for printing.
2018-04-28 Andy Estes <aestes@apple.com>
[iOS] Present an action sheet when long-pressing on PDF links
https://bugs.webkit.org/show_bug.cgi?id=185093
<rdar://problem/39356651>
Reviewed by Dan Bernstein.
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView dealloc]):
Called -[WKActionSheetAssistant cleanupSheet].
(-[WKPDFView web_setContentProviderData:suggestedFilename:]):
Created a WKActionSheetAssistant with the host view as the assistant view and
ourselves as the delegate.
(-[WKPDFView _URLWithPageIndex:]):
Added. Creates a URL to the current page with a page number fragment appended.
(-[WKPDFView _goToURL:atLocation:]):
Added. Navigates to a URL with a synthetic mouse click at a location in host view
coordinates.
(-[WKPDFView pdfHostViewController:goToURL:]):
(-[WKPDFView pdfHostViewController:goToPageIndex:withViewFrustum:]):
Called -_goToURL:atLocation:. Used -_URLWithPageIndex: to construct an NSURL from
a page index.
(-[WKPDFView _showActionSheetForURL:atLocation:]):
Added. Populates _positionInformation with a URL and location and calls
-[WKActionSheetAssistant showLinkSheet].
(-[WKPDFView pdfHostViewController:didLongPressURL:atLocation:]):
(-[WKPDFView pdfHostViewController:didLongPressPageIndex:atLocation:]):
Called -_showActionSheetForURL:atLocation:. Used -_URLWithPageIndex: to construct
an NSURL from a page index.
(-[WKPDFView positionInformationForActionSheetAssistant:]):
Returned _positionInformation.
(-[WKPDFView actionSheetAssistant:performAction:]):
Populated the pasteboard with plain text and URL representations of
_positionInformation.url.
(-[WKPDFView actionSheetAssistant:openElementAtLocation:]):
Called -_goToURL:atLocation.
(-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
Created a UIWKSelectionAssistant and called -showShareSheetFor:fromRect:.
(-[WKPDFView actionSheetAssistant:shouldIncludeAppLinkActionsForElement:]):
Returned API::UIClient::shouldIncludeAppLinkActionsForElement().
(-[WKPDFView actionSheetAssistant:decideActionsForElement:defaultActions:]):
Returned API::UIClient::actionsForElement()l
2018-04-28 Andy Estes <aestes@apple.com>
[iOS] Allow com.apple.WebKit.Networking to look up com.apple.wifi.manager
https://bugs.webkit.org/show_bug.cgi?id=185114
<rdar://problem/39808763>
Reviewed by Wenson Hsieh.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
2018-04-28 Brent Fulgham <bfulgham@apple.com>
Revise sandboxes to allow additional IOKit property access
https://bugs.webkit.org/show_bug.cgi?id=185095
<rdar://problem/39809455>
Reviewed by Eric Carlson.
Update the WebContent and Plugin processes to allow additional IOKit property access.
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
* WebProcess/com.apple.WebProcess.sb.in:
2018-04-28 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] WebProcess from WebKitGtk+ 2.19.92 SIGSEVs in WebCore::TextureMapperGL::~TextureMapperGL
https://bugs.webkit.org/show_bug.cgi?id=184040
Reviewed by Michael Catanzaro.
This can happen when using single shared process model or when the process limit is reached in multiple process
model. In this case, all pages in the same web process with accelerated compositing enabled share the same
compositing thread. Every page sets its GL context as current when rendering a frame, but not when invalidating
the threaded compositor when the page is closed. So, if a hidden tab is closed, the threaded compositor is
invalidated and the GL resources of the current context (the visible page) are destroyed. This is also causing
the blank pages issue when closing a tab related to another one, the current one stops rendering anything because
its GL context has been released. We should make the threaded compositor context current when invalidating it.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::invalidate):
2018-04-27 Timothy Hatcher <timothy@apple.com>
REGRESSION: Touch events fail to dispatch to the page in all cases.
https://bugs.webkit.org/show_bug.cgi?id=185097
rdar://problem/39731995
Reviewed by Tim Horton.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
Consult internal gesture recognizers, otherwise NO might get returned.
2018-04-26 Ryosuke Niwa <rniwa@webkit.org>
PSON: Triggering a navigation to an invalid URL creates a new WebContent process
https://bugs.webkit.org/show_bug.cgi?id=185066
Reviewed by Youenn Fablet.
Don't create a new WebContent process when the target URL is invalid as well as when the source URL is invalid.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigationInternal):
2018-04-27 Youenn Fablet <youenn@apple.com>
Use NetworkLoadChecker for XHR/fetch loads
https://bugs.webkit.org/show_bug.cgi?id=184741
Reviewed by Chris Dumez.
* NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::didCompleteWithError):
Pass the preflight error as completion error if any.
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::willPerformHTTPRedirection):
Set response source to Network so that checks relying on that are correct.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::validateResponse):
Adding Oppaqueredirect tainting.
(NetworkLoadChecker::doesNotNeedCORSCheck):
Adding a check to only activate CORS checks for CORS enabled schemes.
Non CORS enabled schemes loads should have failed in WebProcess already.
(WebKit::NetworkLoadChecker::checkCORSRedirectedRequest):
Remove Authorization header as done by SubresourceLoader.
(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
If error is cancellation, we still want to call the completion handler.
* NetworkProcess/NetworkResourceLoader.cpp:
Activate network load checker for all types of loads.
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
Handle manual redirection by directly calling didReceiveResponse.
2018-04-27 Wenson Hsieh <wenson_hsieh@apple.com>
Add an experimental feature flag for viewport "min-device-width"
https://bugs.webkit.org/show_bug.cgi?id=185050
<rdar://problem/39624038>
Reviewed by Tim Horton.
Add MinDeviceWidthEnabled as a new experimental feature, on by default in extra zoom mode and off elsewhere.
* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
2018-04-27 Daniel Bates <dabates@apple.com>
UIDelegate::UIClient::didResignInputElementStrongPasswordAppearance() is applicable to both Mac and iOS
https://bugs.webkit.org/show_bug.cgi?id=185079
<rdar://problem/39794960>
I inadvertently forgot to move the UIDelegate field webViewDidResignInputElementStrongPasswordAppearanceWithUserInfo
outside the PLATFORM(MAC)-guard.
* UIProcess/Cocoa/UIDelegate.h:
2018-04-27 Daniel Bates <dabates@apple.com>
UIDelegate::UIClient::didResignInputElementStrongPasswordAppearance() is applicable to both Mac and iOS
https://bugs.webkit.org/show_bug.cgi?id=185079
<rdar://problem/39794960>
Reviewed by Andy Estes.
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::didResignInputElementStrongPasswordAppearance):
2018-04-27 Wenson Hsieh <wenson_hsieh@apple.com>
Rename minimumLayoutSize to viewLayoutSize
https://bugs.webkit.org/show_bug.cgi?id=185050
<rdar://problem/39624038>
Reviewed by Tim Horton.
Renames minimumLayoutSize to viewLayoutSize, since the minimum layout size in ViewportConfiguration is now
different from the minimum layout size that is currently pushed down from the UI process (e.g. WKWebView SPI) in
the case where `min-device-width` is used to override the minimum layout size.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _processDidExit]):
(-[WKWebView activeViewLayoutSize:]):
(-[WKWebView _dispatchSetViewLayoutSize:]):
(-[WKWebView _frameOrBoundsChanged]):
(-[WKWebView _minimumLayoutSizeOverride]):
(-[WKWebView _setViewLayoutSizeOverride:]):
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
(-[WKWebView _endAnimatedResize]):
(-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:maximumUnobscuredSizeOverride:]):
(-[WKWebView _clearOverrideLayoutParameters]):
(-[WKWebView _minimumLayoutWidth]):
(-[WKWebView _setMinimumLayoutWidth:]):
(-[WKWebView activeMinimumLayoutSize:]): Deleted.
(-[WKWebView _dispatchSetMinimumLayoutSize:]): Deleted.
(-[WKWebView _setMinimumLayoutSizeOverride:]): Deleted.
(-[WKWebView _overrideLayoutParametersWithMinimumLayoutSize:minimumLayoutSizeForMinimalUI:maximumUnobscuredSizeOverride:]): Deleted.
Remove unused SPI that has been deprecated since iOS 9, has a simple drop-in replacement, and no longer has any
internal clients.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setMinimumSizeForAutoLayout):
(WebKit::WebViewImpl::minimumSizeForAutoLayout const):
(WebKit::WebViewImpl::setIntrinsicContentSize):
* UIProcess/DrawingAreaProxy.h:
(WebKit::DrawingAreaProxy::viewLayoutSizeDidChange):
(WebKit::DrawingAreaProxy::minimumLayoutSizeDidChange): Deleted.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setViewLayoutSize):
(WebKit::WebPageProxy::setMinimumLayoutSize): Deleted.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::viewLayoutSize const):
(WebKit::WebPageProxy::minimumLayoutSize const): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::dynamicViewportSizeUpdate):
(WebKit::WebPageProxy::setViewportConfigurationViewLayoutSize):
(WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize): Deleted.
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
(WebKit::TiledCoreAnimationDrawingAreaProxy::viewLayoutSizeDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::didUpdateGeometry):
(WebKit::TiledCoreAnimationDrawingAreaProxy::intrinsicContentSizeDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::willSendUpdateGeometry):
(WebKit::TiledCoreAnimationDrawingAreaProxy::minimumLayoutSizeDidChange): Deleted.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
* WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
(WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
(WebKit::WebPage::setViewLayoutSize):
(WebKit::WebPage::setMinimumLayoutSize): Deleted.
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::viewLayoutSize const):
(WebKit::WebPage::minimumLayoutSize const): Deleted.
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::setViewportConfigurationViewLayoutSize):
(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::setViewportConfigurationMinimumLayoutSize): Deleted.
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded):
(WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
2018-04-27 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Add a mechanism to override default viewport behaviors in extra zoom mode
https://bugs.webkit.org/show_bug.cgi?id=185050
<rdar://problem/39624038>
Reviewed by Tim Horton.
Remove the forceHorizontalViewportShrinkToFit and minimumAllowedLayoutWidth SPI hooks from WebKit, and
additionally remove all logic for plumbing viewSize to WebCore. See WebCore/ChangeLog for more information.
* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::VisibleContentRectUpdateInfo::encode const):
(WebKit::VisibleContentRectUpdateInfo::decode):
(WebKit::operator<<):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::allowShrinkToFit const):
(WebKit::operator==):
(WebKit::VisibleContentRectUpdateInfo::forceHorizontalShrinkToFit const): Deleted.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView activeMinimumLayoutSize:]):
(-[WKWebView _dispatchSetMinimumLayoutSize:]):
(-[WKWebView _frameOrBoundsChanged]):
(-[WKWebView _setMinimumLayoutSizeOverride:]):
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
(-[WKWebView _endAnimatedResize]):
(-[WKWebView _minimumAllowedLayoutWidth]): Deleted.
(-[WKWebView _setMinimumAllowedLayoutWidth:]): Deleted.
(-[WKWebView activeMinimumLayoutSizes:]): Deleted.
(-[WKWebView _dispatchSetMinimumLayoutSize:viewSize:]): Deleted.
(-[WKWebView _setForceHorizontalViewportShrinkToFit:]): Deleted.
(-[WKWebView _forceHorizontalViewportShrinkToFit]): Deleted.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::dynamicViewportSizeUpdate):
(WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::setViewportConfigurationMinimumLayoutSize):
(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::updateVisibleContentRects):
2018-04-27 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r230812): [WPE][GTK] WebKitWebViewSessionState.cpp throws away encoded BackForwardList identifier
https://bugs.webkit.org/show_bug.cgi?id=184823
Reviewed by Michael Catanzaro.
Bump session sate format version to 2 and stop encoding the backfoward list item identifier, since it's always
regenerated.
* UIProcess/API/glib/WebKitWebViewSessionState.cpp:
(encodeBackForwardListItemState): Always encode version 2.
(encodeBackForwardListState): Ditto.
(encodeSessionState): Ditto.
(decodeBackForwardListItemStateV1): Decode list item state for version 1.
(decodeBackForwardListItemState): Receive the version and call decodeBackForwardListItemStateV1() if it's 1 or
use the version 2 otherwise.
(decodeSessionState): Load data for known formats and use the one that worked to decode it.
2018-04-26 Megan Gardner <megan_gardner@apple.com>
Add timeout for ensurePositionInformationIsUpToDate
https://bugs.webkit.org/show_bug.cgi?id=184567
Reviewed by Wenson Hsieh.
We are having long hang times for WebKit, and this is one of the culprits.
If we do not get an answer for positionInformation in a reasonable amount of time, we should timeout,
so as to not hang the UI.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView ensurePositionInformationIsUpToDate:]):
2018-04-26 Andy Estes <aestes@apple.com>
Try again to fix the iOS build after r231063.
* Configurations/Base.xcconfig:
2018-04-26 Jer Noble <jer.noble@apple.com>
WK_COCOA_TOUCH the WK_ACCESSIBILITY_LDFLAGS
https://bugs.webkit.org/show_bug.cgi?id=185007
<rdar://problem/39735943>
Reviewed by Timothy Hatcher.
* Configurations/WebKit.xcconfig:
2018-04-26 Jer Noble <jer.noble@apple.com>
Unreviewed build fix; fix iOS TAPI build step after r231063.
* Configurations/WebKit.xcconfig:
2018-04-26 Jer Noble <jer.noble@apple.com>
WK_COCOA_TOUCH all the things.
https://bugs.webkit.org/show_bug.cgi?id=185006
Reviewed by Tim Horton.
* Configurations/BaseTarget.xcconfig:
* Configurations/WebKit.xcconfig:
2018-04-26 Daniel Bates <dabates@apple.com>
Remove WebCore::-qualifier in NetworkLoadChecker.cpp
https://bugs.webkit.org/show_bug.cgi?id=185037
Reviewed by Youenn Fablet.
It is unncesssary to qualify WebCore types in NetworkLoadChecker.cpp as it has a
"using namespace WebCore" directive.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::validateResponse):
(WebKit::NetworkLoadChecker::continueCheckingRequest): Removed extra space character and unnecessary
parentheses from the right-hand side of the assignment to m_storedCredentialsPolicy.
(WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad):
2018-04-26 Daniel Bates <dabates@apple.com>
Rename NetworkLoadChecker::returnError() to NetworkLoadChecker::accessControlErrorForValidationHandler()
https://bugs.webkit.org/show_bug.cgi?id=185035
Reviewed by Youenn Fablet.
Substitute NetworkLoadChecker::accessControlErrorForValidationHandler() for NetworkLoadChecker::returnError()
to better describe that it is a convenience function that returns a wrapped ResourceError object,
that represents an access control error, suitable to be passed directly to a validation handler.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkRedirection): Update as needed for renaming.
(WebKit::NetworkLoadChecker::accessControlErrorForValidationHandler): Use auto -> syntax to avoid the need to
class-qualify the return type. Also renamed parameter from error to message as it represents the message/description
for the access control error.
(WebKit::NetworkLoadChecker::checkRequest): Update as needed for renaming. Also substitute "message" for "error"
to match the argument of accessControlErrorForValidationHandler() with the same name.
(WebKit::NetworkLoadChecker::continueCheckingRequest): Update as needed for renaming.
(WebKit::NetworkLoadChecker::returnError): Deleted; renamed to accessControlErrorForValidationHandler().
* NetworkProcess/NetworkLoadChecker.h:
2018-04-26 Jiewen Tan <jiewen_tan@apple.com>
Remove access to keychain from the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=184428
<rdar://problem/13150903>
Part 3.
Tighten WebContent Process' sandbox profile to all Security.framework services.
Reviewed by Brent Fulgham.
* WebProcess/com.apple.WebProcess.sb.in:
2018-04-26 Youenn Fablet <youenn@apple.com>
Make cross origin redirection error messages consistent between SubresourceLoader and NetworkLoadChecker
https://bugs.webkit.org/show_bug.cgi?id=185023
Reviewed by Chris Dumez.
Align NetworkLoadChecker with what SubresourceLoader is doing so that we can keep WK1 and WK2 error messages as consistent as possible.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::validateResponse):
2018-04-25 Megan Gardner <megan_gardner@apple.com>
Activate selection when interacting with editable content
https://bugs.webkit.org/show_bug.cgi?id=185017
Reviewed by Tim Horton.
Fixes a regression from r231016 where selection now does not work when interacting with
editable content. When we go into editable content, we should turn on the assistant.
This fulfills the requirement of user interaction as well, so any javascript selections
after this point should be valid.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startAssistingKeyboard]):
(-[WKContentView _stopAssistingKeyboard]):
2018-04-26 Per Arne Vollan <pvollan@apple.com>
Disable content filtering in minimal simulator mode
https://bugs.webkit.org/show_bug.cgi?id=185027
<rdar://problem/39736091>
Reviewed by Jer Noble.
* Configurations/FeatureDefines.xcconfig:
2018-04-26 Brady Eidson <beidson@apple.com>
Add a setting for keeping around all processes and always reusing them per-origin.
<rdar://problem/39695798> and https://bugs.webkit.org/show_bug.cgi?id=185020
Reviewed by Andy Estes.
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationAlwaysKeepAndReuseSwappedProcesses):
(WKContextConfigurationSetAlwaysKeepAndReuseSwappedProcesses):
* UIProcess/API/C/WKContextConfigurationRef.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration setAlwaysKeepAndReuseSwappedProcesses:]):
(-[_WKProcessPoolConfiguration alwaysKeepAndReuseSwappedProcesses]):
* UIProcess/SuspendedPageProxy.cpp:
(WebKit::SuspendedPageProxy::webProcessDidClose):
(WebKit::SuspendedPageProxy::destroyWebPageInWebProcess):
* UIProcess/SuspendedPageProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::suspendedPageClosed):
(WebKit::WebPageProxy::suspendedPageProcessClosed): Deleted.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::suspendedPage const):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::shouldTerminate):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::addProcessToOriginCacheSet):
(WebKit::WebProcessPool::removeProcessFromOriginCacheSet):
(WebKit::WebProcessPool::processForNavigation): If a swap will occur, cache the old process.
(WebKit::WebProcessPool::processForNavigationInternal): Consider re-using a previously cached process.
* UIProcess/WebProcessPool.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
2018-04-26 Andy VanWagoner <thetalecrafter@gmail.com>
[INTL] Implement Intl.PluralRules
https://bugs.webkit.org/show_bug.cgi?id=184312
Reviewed by JF Bastien.
Added Intl.PluralRules feature flag.
* Configurations/FeatureDefines.xcconfig:
2018-04-26 Zan Dobersek <zdobersek@igalia.com>
[GTK][WPE] Initial ASYNC_SCROLLING support
https://bugs.webkit.org/show_bug.cgi?id=184961
Reviewed by Carlos Garcia Campos.
Guard RemoteScrollingCoordinator and RemoteScrollingCoordinatorProxy
usage in WebChromeClient and WebPageProxy, respectively, with
PLATFORM(COCOA) in addition to the ASYNC_SCROLLING guards.
Despite enabling the code at build-time, the feature (as intended) is
not yet used because of the DrawingArea rejection in the WebPage
constructor.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::handleWheelEvent):
(WebKit::WebPageProxy::updateTouchEventTracking):
* UIProcess/WebPageProxy.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createScrollingCoordinator const):
2018-04-25 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE] Build and link against latest WPEBackend and WPEBackend-fdo
https://bugs.webkit.org/show_bug.cgi?id=184643
Reviewed by Žan Doberšek.
Adapt to single-header WPE includes.
Null-initialize padding to silence -Wmissing-field-initializers. (Yuck.)
* Shared/NativeWebTouchEvent.h:
* Shared/wpe/WebEventFactory.cpp:
* UIProcess/API/glib/WebKitPrivate.cpp:
* UIProcess/API/wpe/CompositingManagerProxy.cpp:
* UIProcess/API/wpe/ScrollGestureController.h:
* UIProcess/API/wpe/WPEView.cpp:
(WKWPE::m_backend):
* UIProcess/API/wpe/WebKitWebViewBackend.h:
* UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
* WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
(WebKit::AcceleratedSurfaceWPE::initialize):
2018-04-25 Saam Barati <sbarati@apple.com>
dlopen the bundle's executable before calling -[NSBundle load] since that will also do a bunch of other things we don't need
https://bugs.webkit.org/show_bug.cgi?id=184904
Reviewed by Geoffrey Garen.
Loading an NSBundle does a lot of work to find the principal class inside
the bundle. This means it walks all the objective C class names loaded
by the bundle. Doing this is *really* expensive.
Some users of the injected bundle define a WKBundleInitialize function.
In such a case, we don't need the principal class, so we can skip loading
the NSBundle. Now, before we load the bundle, we dlopen and dlsym looking
for the WKBundleInitialize function. If we find it, we skip loading
the bundle. If we don't find the WKBundleInitialize function, we fall
back to loading the bundle and finding the principal class.
This speeds up initializeWebProcess by ~70ms on my MBP.
* WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
(WebKit::InjectedBundle::initialize):
2018-04-25 Youenn Fablet <youenn@apple.com>
Use NetworkLoadChecker for all subresource loads except fetch/XHR
https://bugs.webkit.org/show_bug.cgi?id=184870
<rdar://problem/39370034>
Reviewed by Chris Dumez.
Relax rules to check for non HTTP(s) redirections to throw only when WebProcess says to load it after redirection.
This allows WebProcess to load redirected non HTTP(s) URLs, such as data URLs.
We keep these checks when WebProcess asks to continue the load and for all PingLoads.
Update error messages to be more consistent with WK1.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::continueCheckingRequest):
(WebKit::NetworkLoadChecker::validateResourceResponse):
(WebKit::NetworkLoadChecker::continueCheckingRequest):
* NetworkProcess/NetworkLoadChecker.h:
(WebKit::NetworkLoadChecker::validateResponse):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::shouldUseNetworkLoadChecker):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
2018-04-25 Ryosuke Niwa <rniwa@webkit.org>
PSON: Don't create a new process when navigating to a blob URL, data URL, and about:blank
https://bugs.webkit.org/show_bug.cgi?id=184962
Reviewed by Youenn Fablet.
<rdar://problem/39715044>
Build fix. Revert the change in r231019 to remove the empty URL and about:blank check here.
These checks are for the source / originating URL, not the target URL.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation):
2018-04-25 Youenn Fablet <youenn@apple.com>
WebLoaderStrategy::networkMetricsFromResourceLoadIdentifier should use DoNotProcessIncomingMessagesWhenWaitingForSyncReply
https://bugs.webkit.org/show_bug.cgi?id=184978
<rdar://problem/39667094>
Reviewed by Simon Fraser.
Use DoNotProcessIncomingMessagesWhenWaitingForSyncReply to keep a consistent state after the sync IPC call.
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::responseFromResourceLoadIdentifier):
(WebKit::WebLoaderStrategy::networkMetricsFromResourceLoadIdentifier):
2018-04-25 Jiewen Tan <jiewen_tan@apple.com>
Remove access to keychain from the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=184428
<rdar://problem/13150903>
Reviewed by Brent Fulgham.
This patch does the followings:
1. Added necessary support to move HTMLKeygenElement's operation from WebContent Process to UI Process.
2. Craft new SPI copySignedPublicKeyAndChallengeString to supply HTMLKeygenElement with dummy data such
that WebKitTestRunner tests will not modify the underlying key store (e.g., the macOS Keychain).
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::signedPublicKeyAndChallengeString):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageNavigationClient):
* UIProcess/API/C/WKPageNavigationClient.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::signedPublicKeyAndChallengeString):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::signedPublicKeyAndChallengeString):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::signedPublicKeyAndChallengeString const):
* WebProcess/WebCoreSupport/WebChromeClient.h:
2018-04-25 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] The search field on www.bing.com is missing label text
https://bugs.webkit.org/show_bug.cgi?id=184975
<rdar://problem/39723081>
Reviewed by Tim Horton.
Adds support for displaying the "aria-label" attribute as the input view's label text in extra zoom mode. Also
adds support for grabbing the input label's text for testing.
Test: fast/forms/extrazoom/form-control-label-text.html
* Shared/AssistedNodeInformation.cpp:
(WebKit::AssistedNodeInformation::encode const):
(WebKit::AssistedNodeInformation::decode):
* Shared/AssistedNodeInformation.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView formInputLabel]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView formInputLabel]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getAssistedNodeInformation):
2018-04-25 Ryosuke Niwa <rniwa@webkit.org>
PSON: Don't create a new process when navigating to a blob URL, data URL, and about:blank
https://bugs.webkit.org/show_bug.cgi?id=184962
Reviewed by Youenn Fablet.
Don't create a new WebContent process when navigating to a blob object URL since doing so
can result in a race condition in which the blog URL is removed from the blob registry of
the network process by the time the navigation gets commited. This causes a failure in
fast/dom/HTMLAnchorElement/anchor-download-unset.html and oher layout tests.
In the future, the network process should verify that a given WebContent process has access
to a given blob URL. For now, we rely on WebContent process to tell us whether it can
navigate to a given blob URL or not.
* Shared/NavigationActionData.cpp:
(WebKit::NavigationActionData::encode const): Encode newly added treatAsSameOriginNavigation.
(WebKit::NavigationActionData::decode): Ditto for decoding.
* Shared/NavigationActionData.h:
(WebKit::NavigationActionData::treatAsSameOriginNavigation): Added.
* UIProcess/API/APINavigation.h:
(API::Navigation::setTreatAsSameOriginNavigation): Added.
(API::Navigation::treatAsSameOriginNavigation const): Added.
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction): Use the current process when
treatAsSameOriginNavigation is set to true; i.e. when navigating to a blob URL the current
document has access.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
2018-04-25 Megan Gardner <megan_gardner@apple.com>
Don't activate Selection Assistant unless it is actually needed.
https://bugs.webkit.org/show_bug.cgi?id=184944
<rdar://problem/39469671>
Reviewed by Tim Horton.
Don't activate the selection unless we need to. Activating on init is overeager and allowing Javascript to
activate selections without user input.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView useSelectionAssistantWithGranularity:]):
2018-04-25 Wenson Hsieh <wenson_hsieh@apple.com>
Fix entitlements and sandbox configurations in WebKit after r230778
https://bugs.webkit.org/show_bug.cgi?id=184960
<rdar://problem/39662827>
Reviewed by Tim Horton.
Build fixes for watchOS and tvOS after r230778.
* Configurations/BaseXPCService.xcconfig:
* Configurations/NetworkService.xcconfig:
* Configurations/WebContentService.xcconfig:
2018-04-25 Brent Fulgham <bfulgham@apple.com>
Unreviewed build fix after r231008.
* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::create): Forgot to remove an unneeded constructor argument.
2018-04-25 Brent Fulgham <bfulgham@apple.com>
Don't Block First Party Cookies on Redirects
https://bugs.webkit.org/show_bug.cgi?id=184948
<rdar://problem/39534099>
Reviewed by Youenn Fablet.
Top-level navigations should not be subject to cookie blocking behavior. When performing redirects for main frame
navigation we are blocking cookies, leading to site breakage.
We need to keep track of which NetworkDataTasks are due to a main frame navigation. When a redirect is performed
on the main frame, we should treat the new origin as the 'first party for cookies' and avoid blocking cookies for
that URL.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::preconnectTo): Use the correct parameter type. We actually serialize
NetworkResourceLoadParameters over IPC, so we should get access to all the members of this child class.
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::create): Pass new 'loadIsForNavigation' flag to create methods.
(WebKit::NetworkDataTask::NetworkDataTask): Capture 'loadIsForNavigation' in constructor.
* NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTask::isTopLevelNavigation const): Added.
* NetworkProcess/NetworkDataTaskBlob.cpp:
(WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob): Accept new constructor argument.
* NetworkProcess/NetworkDataTaskBlob.h:
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::willPerformHTTPRedirection): Retain requester value from old request during redirect.
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(NetworkResourceLoadParameters::decode): Update to pass new flag.
(NetworkResourceLoadParameters::encode): Ditto.
* NetworkProcess/NetworkLoadParameters.h:
* NetworkProcess/capture/NetworkDataTaskReplay.cpp:
(WebKit::NetworkCapture::NetworkDataTaskReplay::NetworkDataTaskReplay): Accept new constructor argument.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Accept new constructor argument.
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl): Accept new constructor argument.
* NetworkProcess/curl/NetworkDataTaskCurl.h:
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup): Accept new constructor argument.
* NetworkProcess/soup/NetworkDataTaskSoup.h:
2018-04-25 Youenn Fablet <youenn@apple.com>
Ensure DNT is set for redirections handled in NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=184890
Reviewed by Ryosuke Niwa.
Compute whether DNT header should be set on requests based on:
- request has a DNT header
- session is ephemeral (aka private browsing mode)
In both cases, we ensure a DNT header is added for any request triggered by a redirection.
Covered by http/wpt/fetch/dnt-header-after-redirection.html.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::check):
(WebKit::NetworkLoadChecker::prepareRedirectedRequest):
* NetworkProcess/NetworkLoadChecker.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::willPerformHTTPRedirection):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
2018-04-25 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE] Remove deprecated functions and properties from the API
https://bugs.webkit.org/show_bug.cgi?id=179295
Reviewed by Žan Doberšek.
* UIProcess/API/glib/WebKitCookieManager.cpp:
* UIProcess/API/glib/WebKitFormSubmissionRequest.cpp:
* UIProcess/API/glib/WebKitNavigationPolicyDecision.cpp:
(webkitNavigationPolicyDecisionGetProperty):
(webkit_navigation_policy_decision_class_init):
* UIProcess/API/glib/WebKitSettings.cpp:
(webKitSettingsSetProperty):
(webKitSettingsGetProperty):
(webkit_settings_class_init):
* UIProcess/API/glib/WebKitWebContext.cpp:
(webkitWebContextGetProperty):
(webkitWebContextSetProperty):
(webkit_web_context_class_init):
* UIProcess/API/glib/WebKitWebView.cpp:
(webkit_web_view_class_init):
(webkitWebViewHandleAuthenticationChallenge):
(webkitWebViewWebProcessTerminated):
* UIProcess/API/wpe/WebKitCookieManager.h:
* UIProcess/API/wpe/WebKitFormSubmissionRequest.h:
* UIProcess/API/wpe/WebKitNavigationPolicyDecision.h:
* UIProcess/API/wpe/WebKitSettings.h:
* UIProcess/API/wpe/WebKitWebContext.h:
2018-04-25 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, silence -Wreturn-type warning
https://bugs.webkit.org/show_bug.cgi?id=184560
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::shouldCancelCrossOriginLoad):
2018-04-25 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] Miscellaneous build cleanups
https://bugs.webkit.org/show_bug.cgi?id=184399
Reviewed by Žan Doberšek.
* PlatformGTK.cmake:
2018-04-25 Dean Jackson <dino@apple.com>
Make a better flag for system preview, and disable it where necessary
https://bugs.webkit.org/show_bug.cgi?id=184968
<rdar://problem/39686506>
Reviewed by Eric Carlson.
Use USE(SYSTEM_PREVIEW).
* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
* UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
(-[WKWebViewContentProviderRegistry init]):
* UIProcess/ios/WKSystemPreviewView.mm:
2018-04-25 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Implement MouseEvent.buttons
https://bugs.webkit.org/show_bug.cgi?id=184913
Reviewed by Žan Doberšek.
It's currently returning always 0.
* Shared/gtk/WebEventFactory.cpp:
(WebKit::pressedMouseButtons): Helper function to get the pressed mouse buttons.
(WebKit::WebEventFactory::createWebMouseEvent): Pass presssed mouse buttons to constructor instead of 0.
* UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
(WebKit::WebAutomationSession::platformSimulateMouseInteraction): Include the mouse buttons state in automation
synthesized events and update m_currentModifiers with the mouse buttons state.
(WebKit::keyCodeForVirtualKey): Do not set the state here.
(WebKit::modifiersForKeyCode): Helper to get the modifiers for a key code.
(WebKit::WebAutomationSession::platformSimulateKeyboardInteraction): Initialize the modifiers also when
virtualKey is std::nullopt;
2018-04-24 Nan Wang <n_wang@apple.com>
AX: soft link libAccessibility.dylb
https://bugs.webkit.org/show_bug.cgi?id=184919
Reviewed by Dan Bernstein.
Weakly linked libAccessibility.dylib on macOS.
* Configurations/WebKit.xcconfig:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _updateAccessibilityEventsEnabled]):
2018-04-24 Fujii Hironori <Hironori.Fujii@sony.com>
[WinCairo] Add WKView and WKAPI
https://bugs.webkit.org/show_bug.cgi?id=182869
Reviewed by Alex Christensen.
Resurrected source files for WebKit for Windows port which was
removed in r139003.
* PlatformWin.cmake: Renamed the output name of WebKit to WebKit2
not to conflict WebKitLegacy. Added source files and include paths.
* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/win/WKAPICastWin.h: Added.
* UIProcess/API/C/win/WKView.cpp: Added.
(WKViewCreate):
(WKViewGetWindow):
(WKViewGetPage):
(WKViewSetParentWindow):
(WKViewWindowAncestryDidChange):
(WKViewSetIsInWindow):
(WKViewSetScrollOffsetOnNextResize):
* UIProcess/API/C/win/WKView.h: Added.
* UIProcess/API/win/APIWebsiteDataStoreWin.cpp: Added.
(API::WebsiteDataStore::defaultApplicationCacheDirectory):
(API::WebsiteDataStore::defaultCacheStorageDirectory):
(API::WebsiteDataStore::defaultNetworkCacheDirectory):
(API::WebsiteDataStore::defaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory):
(API::WebsiteDataStore::defaultLocalStorageDirectory):
(API::WebsiteDataStore::defaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::defaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory):
(API::WebsiteDataStore::cacheDirectoryFileSystemRepresentation):
(API::WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation):
(API::WebsiteDataStore::defaultDataStoreConfiguration):
* UIProcess/Launcher/ProcessLauncher.h:
* UIProcess/Launcher/win/ProcessLauncherWin.cpp: Added.
(WebKit::processName):
(WebKit::ProcessLauncher::launchProcess):
(WebKit::ProcessLauncher::terminateProcess):
(WebKit::ProcessLauncher::platformInvalidate):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::networkProcessFailedToLaunch):
(WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
* UIProcess/WebsiteData/win/WebsiteDataStoreWin.cpp: Added.
(WebKit::WebsiteDataStore::platformInitialize):
(WebKit::WebsiteDataStore::platformDestroy):
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* UIProcess/win/PageClientImpl.cpp: Added.
(WebKit::PageClientImpl::PageClientImpl):
(WebKit::PageClientImpl::createDrawingAreaProxy):
(WebKit::PageClientImpl::setViewNeedsDisplay):
(WebKit::PageClientImpl::requestScroll):
(WebKit::PageClientImpl::viewScrollPosition):
(WebKit::PageClientImpl::viewSize):
(WebKit::PageClientImpl::isViewWindowActive):
(WebKit::PageClientImpl::isViewFocused):
(WebKit::PageClientImpl::isViewVisible):
(WebKit::PageClientImpl::isViewInWindow):
(WebKit::PageClientImpl::PageClientImpl::processDidExit):
(WebKit::PageClientImpl::didRelaunchProcess):
(WebKit::PageClientImpl::toolTipChanged):
(WebKit::PageClientImpl::setCursor):
(WebKit::PageClientImpl::setCursorHiddenUntilMouseMoves):
(WebKit::PageClientImpl::didChangeViewportProperties):
(WebKit::PageClientImpl::registerEditCommand):
(WebKit::PageClientImpl::clearAllEditCommands):
(WebKit::PageClientImpl::canUndoRedo):
(WebKit::PageClientImpl::executeUndoRedo):
(WebKit::PageClientImpl::convertToDeviceSpace):
(WebKit::PageClientImpl::convertToUserSpace):
(WebKit::PageClientImpl::screenToRootView):
(WebKit::PageClientImpl::rootViewToScreen):
(WebKit::PageClientImpl::doneWithKeyEvent):
(WebKit::PageClientImpl::createPopupMenuProxy):
(WebKit::PageClientImpl::createContextMenuProxy):
(WebKit::createColorPicker):
(WebKit::PageClientImpl::enterAcceleratedCompositingMode):
(WebKit::PageClientImpl::exitAcceleratedCompositingMode):
(WebKit::PageClientImpl::updateAcceleratedCompositingMode):
(WebKit::PageClientImpl::pageClosed):
(WebKit::PageClientImpl::preferencesDidChange):
(WebKit::PageClientImpl::didChangeContentSize):
(WebKit::PageClientImpl::handleDownloadRequest):
(WebKit::PageClientImpl::didCommitLoadForMainFrame):
(WebKit::PageClientImpl::fullScreenManagerProxyClient):
(WebKit::PageClientImpl::closeFullScreenManager):
(WebKit::PageClientImpl::isFullScreen):
(WebKit::PageClientImpl::enterFullScreen):
(WebKit::PageClientImpl::exitFullScreen):
(WebKit::PageClientImpl::beganEnterFullScreen):
(WebKit::PageClientImpl::beganExitFullScreen):
(WebKit::PageClientImpl::doneWithTouchEvent):
(WebKit::PageClientImpl::wheelEventWasNotHandledByWebCore):
(WebKit::PageClientImpl::didFinishLoadingDataForCustomContentProvider):
(WebKit::PageClientImpl::navigationGestureDidBegin):
(WebKit::PageClientImpl::navigationGestureWillEnd):
(WebKit::PageClientImpl::navigationGestureDidEnd):
(WebKit::PageClientImpl::willRecordNavigationSnapshot):
(WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot):
(WebKit::PageClientImpl::didFirstVisuallyNonEmptyLayoutForMainFrame):
(WebKit::PageClientImpl::didFinishLoadForMainFrame):
(WebKit::PageClientImpl::didSameDocumentNavigationForMainFrame):
(WebKit::PageClientImpl::didChangeBackgroundColor):
(WebKit::PageClientImpl::isPlayingAudioWillChange):
(WebKit::PageClientImpl::isPlayingAudioDidChange):
(WebKit::PageClientImpl::refView):
(WebKit::PageClientImpl::derefView):
* UIProcess/win/PageClientImpl.h: Added.
* UIProcess/win/TextCheckerWin.cpp: Added.
(WebKit::checkerState):
(WebKit::TextChecker::state):
(WebKit::TextChecker::setTestingMode):
(WebKit::TextChecker::isTestingMode):
(WebKit::TextChecker::isContinuousSpellCheckingAllowed):
(WebKit::TextChecker::setContinuousSpellCheckingEnabled):
(WebKit::TextChecker::setGrammarCheckingEnabled):
(WebKit::TextChecker::continuousSpellCheckingEnabledStateChanged):
(WebKit::TextChecker::grammarCheckingEnabledStateChanged):
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::spellingUIIsShowing):
(WebKit::TextChecker::toggleSpellingUIIsShowing):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
(WebKit::TextChecker::requestCheckingOfString):
(WebKit::TextChecker::checkTextOfParagraph):
* UIProcess/win/WebContextMenuProxyWin.cpp: Added.
(WebKit::WebContextMenuProxyWin::show):
(WebKit::WebContextMenuProxyWin::showContextMenuWithItems):
(WebKit::WebContextMenuProxyWin::WebContextMenuProxyWin):
(WebKit::WebContextMenuProxyWin::~WebContextMenuProxyWin):
* UIProcess/win/WebContextMenuProxyWin.h: Added.
(WebKit::WebContextMenuProxyWin::create):
* UIProcess/win/WebInspectorProxyWin.cpp: Added.
(WebKit::WebInspectorProxy::platformCreateFrontendPage):
(WebKit::WebInspectorProxy::platformCreateFrontendWindow):
(WebKit::WebInspectorProxy::platformCloseFrontendPageAndWindow):
(WebKit::WebInspectorProxy::platformDidCloseForCrash):
(WebKit::WebInspectorProxy::platformInvalidate):
(WebKit::WebInspectorProxy::platformHide):
(WebKit::WebInspectorProxy::platformBringToFront):
(WebKit::WebInspectorProxy::platformBringInspectedPageToFront):
(WebKit::WebInspectorProxy::platformIsFront):
(WebKit::WebInspectorProxy::platformInspectedURLChanged):
(WebKit::WebInspectorProxy::inspectorPageURL):
(WebKit::WebInspectorProxy::inspectorTestPageURL):
(WebKit::WebInspectorProxy::inspectorBaseURL):
(WebKit::WebInspectorProxy::platformInspectedWindowHeight):
(WebKit::WebInspectorProxy::platformInspectedWindowWidth):
(WebKit::WebInspectorProxy::platformAttach):
(WebKit::WebInspectorProxy::platformDetach):
(WebKit::WebInspectorProxy::platformSetAttachedWindowHeight):
(WebKit::WebInspectorProxy::platformSetAttachedWindowWidth):
(WebKit::WebInspectorProxy::platformStartWindowDrag):
(WebKit::WebInspectorProxy::platformSave):
(WebKit::WebInspectorProxy::platformAppend):
(WebKit::WebInspectorProxy::platformAttachAvailabilityChanged):
* UIProcess/win/WebPageProxyWin.cpp: Added.
(WebKit::WebPageProxy::platformInitialize):
(WebKit::WebPageProxy::standardUserAgent):
(WebKit::WebPageProxy::saveRecentSearches):
(WebKit::WebPageProxy::loadRecentSearches):
(WebKit::WebPageProxy::editorStateChanged):
* UIProcess/win/WebPreferencesWin.cpp: Added.
(WebKit::WebPreferences::platformInitializeStore):
(WebKit::WebPreferences::platformUpdateStringValueForKey):
(WebKit::WebPreferences::platformUpdateBoolValueForKey):
(WebKit::WebPreferences::platformUpdateUInt32ValueForKey):
(WebKit::WebPreferences::platformUpdateDoubleValueForKey):
(WebKit::WebPreferences::platformUpdateFloatValueForKey):
(WebKit::WebPreferences::platformGetStringUserValueForKey):
(WebKit::WebPreferences::platformGetBoolUserValueForKey):
(WebKit::WebPreferences::platformGetUInt32UserValueForKey):
(WebKit::WebPreferences::platformGetDoubleUserValueForKey):
* UIProcess/win/WebProcessPoolWin.cpp: Added.
(WebKit::WebProcessPool::platformInitialize):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInvalidateContext):
(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory):
(WebKit::WebProcessPool::platformResolvePathsForSandboxExtensions):
* UIProcess/win/WebView.cpp: Added.
(WebKit::WebView::WebViewWndProc):
(WebKit::WebView::wndProc):
(WebKit::WebView::registerWebViewWindowClass):
(WebKit::WebView::WebView):
(WebKit::WebView::~WebView):
(WebKit::WebView::initialize):
(WebKit::WebView::setParentWindow):
(WebKit::findTopLevelParentWindow):
(WebKit::WebView::windowAncestryDidChange):
(WebKit::WebView::onMouseEvent):
(WebKit::WebView::onWheelEvent):
(WebKit::WebView::onHorizontalScroll):
(WebKit::WebView::onVerticalScroll):
(WebKit::WebView::onKeyEvent):
(WebKit::drawPageBackground):
(WebKit::WebView::paint):
(WebKit::WebView::onPaintEvent):
(WebKit::WebView::onPrintClientEvent):
(WebKit::WebView::onSizeEvent):
(WebKit::WebView::onWindowPositionChangedEvent):
(WebKit::WebView::onSetFocusEvent):
(WebKit::WebView::onKillFocusEvent):
(WebKit::WebView::onTimerEvent):
(WebKit::WebView::onShowWindowEvent):
(WebKit::WebView::onSetCursor):
(WebKit::WebView::updateActiveState):
(WebKit::WebView::updateActiveStateSoon):
(WebKit::initCommonControls):
(WebKit::WebView::initializeToolTipWindow):
(WebKit::WebView::startTrackingMouseLeave):
(WebKit::WebView::stopTrackingMouseLeave):
(WebKit::WebView::shouldInitializeTrackPointHack):
(WebKit::WebView::close):
(WebKit::WebView::cursorToShow const):
(WebKit::WebView::updateNativeCursor):
(WebKit::WebView::setOverrideCursor):
(WebKit::WebView::setIsInWindow):
(WebKit::WebView::setIsVisible):
(WebKit::WebView::isWindowActive):
(WebKit::WebView::isFocused):
(WebKit::WebView::isVisible):
(WebKit::WebView::isInWindow):
(WebKit::WebView::setScrollOffsetOnNextResize):
(WebKit::WebView::setViewNeedsDisplay):
(WebKit::WebView::createColorChooserProxy):
(WebKit::WebView::didCommitLoadForMainFrame):
(WebKit::WebView::customRepresentationZoomFactor):
(WebKit::WebView::setCustomRepresentationZoomFactor):
(WebKit::WebView::findStringInCustomRepresentation):
(WebKit::WebView::countStringMatchesInCustomRepresentation):
(WebKit::WebView::nativeWindow):
(WebKit::WebView::windowReceivedMessage):
* UIProcess/win/WebView.h: Added.
(WebKit::WebView::create):
(WebKit::WebView::window const):
(WebKit::WebView::page const):
(WebKit::WebView::drawingArea):
(WebKit::WebView::setWasActivatedByMouseEvent):
2018-04-24 Fujii Hironori <Hironori.Fujii@sony.com>
Implement Same-Site cookies
https://bugs.webkit.org/show_bug.cgi?id=159464
<rdar://problem/27196358>
Unreviewed build fix.
WinCairo WebKit2 can't compile since r230921.
* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::appendCookieHeader):
CookieJarCurlDatabase::cookieRequestHeaderFieldValue needs
SameSiteInfo.
2018-04-24 Simon Fraser <simon.fraser@apple.com>
Add a new "color-filter" CSS property as an experimental feature
https://bugs.webkit.org/show_bug.cgi?id=184940
Reviewed by Jon Lee.
Add the color-filter property as an experimental feature.
* Shared/WebPreferences.yaml:
2018-04-24 Saam Barati <sbarati@apple.com>
Keep around a pre-warmed process when doing process swap on navigation
https://bugs.webkit.org/show_bug.cgi?id=184765
<rdar://problem/39685099>
Reviewed by Ryosuke Niwa and Brady Eidson.
This patch makes it so that WebProcessPool prewarms a process when process
swap on navigation is turned on. When we do a process swap on navigation,
we first try to grab a prewarmed process before creating a new one.
We try to be smart about when to create these processes. The initial heuristic
that this patch chooses is when we reach the DidFirstVisuallyNonEmptyLayout
layout milestone. We're going to try to improve on this heuristic in:
https://bugs.webkit.org/show_bug.cgi?id=184899
This is a 40% progression on PLT with process swap on navigation turned on.
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _prewarmedWebProcessCount]):
(-[WKProcessPool _webProcessCountIgnoringPrewarmed]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::notifyProcessPoolToPrewarm):
(WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::tryTakePrewarmedProcess):
(WebKit::WebProcessPool::warmInitialProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
(WebKit::WebProcessPool::processForNavigation):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::create):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::m_isInPrewarmedPool):
(WebKit::m_userMediaCaptureManagerProxy): Deleted.
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::isInPrewarmedPool const):
(WebKit::WebProcessProxy::setIsInPrewarmedPool):
2018-04-24 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r230971.
https://bugs.webkit.org/show_bug.cgi?id=184939
This fix was not appropriate (Requested by n_wang on #webkit).
Reverted changeset:
"AX: soft link libAccessibility.dylb"
https://bugs.webkit.org/show_bug.cgi?id=184919
https://trac.webkit.org/changeset/230971
2018-04-24 Nan Wang <n_wang@apple.com>
AX: soft link libAccessibility.dylb
https://bugs.webkit.org/show_bug.cgi?id=184919
Reviewed by Chris Fleizach.
Make sure we soft link the library so that it won't crash
if it's missing in the system.
* Configurations/WebKit.xcconfig:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _updateAccessibilityEventsEnabled]):
2018-04-24 John Wilander <wilander@apple.com>
From-Origin: Support for 'same' and 'same-site' response header, nested frame origin check
https://bugs.webkit.org/show_bug.cgi?id=184560
<rdar://problem/38901344>
Reviewed by Youenn Fablet and Daniel Bates.
This patch implements significant parts of https://github.com/whatwg/fetch/issues/687.
We consume the From-Origin response header and only load the resource if:
- The header is non-existent, empty, or invalid.
- The header specifies 'same' and the resource's origin matches the originating
document's origin and the origins up the frame tree.
- The header specifies 'same-site' and the resource's eTLD+1 matches the originating
document's eTLD+1 and the eTLD+1 of the documents up the frame tree.
This feature is experimental and off by default.
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):
Support for the two new load parameters:
- shouldEnableFromOriginResponseHeader
- frameAncestorOrigins
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::areFrameAncestorsSameSite):
(WebKit::areFrameAncestorsSameOrigin):
(WebKit::shouldCancelCrossOriginLoad):
The three functions above implement the new blocking logic.
(WebKit::fromOriginResourceError):
Convenience function that returns an error with the From-Origin error message.
(WebKit::NetworkResourceLoader::didReceiveResponse):
Now checks for a From-Origin response header.
(WebKit::NetworkResourceLoader::didFailLoading):
Now checks for a From-Origin response header.
(WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
Now checks for a From-Origin response header.
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
Now checks for a From-Origin response header.
(WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry):
Now checks for a From-Origin response header.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<Vector<RefPtr<SecurityOrigin>>>::encode):
(IPC::ArgumentCoder<Vector<RefPtr<SecurityOrigin>>>::decode):
Now encodes and decodes vectors of RefPtr<WebCore::SecurityOrigin>.
* Shared/WebCoreArgumentCoders.h:
* Shared/WebPreferences.yaml:
Added From-Origin support as an experimental feature.
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetFromOriginResponseHeaderEnabled):
(WKPreferencesGetFromOriginResponseHeaderEnabled):
* UIProcess/API/C/WKPreferencesRef.h:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
Sets the two new load parameters:
- shouldEnableFromOriginResponseHeader
- frameAncestorOrigins
2018-04-24 Jer Noble <jer.noble@apple.com>
Don't add system framework paths to FRAMEWORK_SEARCH_PATHS
https://bugs.webkit.org/show_bug.cgi?id=184786
Reviewed by Tim Horton.
* Configurations/BaseTarget.xcconfig:
* DerivedSources.make:
2018-04-24 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r230938.
Introduced two ProcessSwap API test failures.
Reverted changeset:
"Keep around a pre-warmed process when doing process swap on
navigation"
https://bugs.webkit.org/show_bug.cgi?id=184765
https://trac.webkit.org/changeset/230938
2018-04-24 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Remove dead fixed layer code
https://bugs.webkit.org/show_bug.cgi?id=184912
Reviewed by Michael Catanzaro.
Drop the unused fixed layer handling code in CoordinatedGraphicsScene.
The m_fixedLayers container can be removed, along with the
adjustPositionForFixedLayers() method that operated on that container.
This was the only method that operated with the m_scrollPosition member
variable and the contentsPosition argument that's passed to the
CoordinatedGraphicsScene::paintToCurrentGLContext() method. Both of
these are removed, along with the scrollPosition attribute on the
CoordinatedGraphicsState struct.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
(WebKit::CoordinatedGraphicsScene::setLayerState):
(WebKit::CoordinatedGraphicsScene::deleteLayer):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
(WebKit::CoordinatedGraphicsScene::adjustPositionForFixedLayers): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::renderLayerTree):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::flushPendingLayerChanges):
2018-04-24 Zan Dobersek <zdobersek@igalia.com>
REGRESSION(r230950): Faulty commit sequencing in CoordinatedGraphicsScene
https://bugs.webkit.org/show_bug.cgi?id=184917
Reviewed by Michael Catanzaro.
After r230950, current animation state for a given layer is also taken
into account when determining whether or not the layer requires a
backing store. For that to work properly, all the animation state has
to be updated before the backing store work. This patch changes the
order of helper method invocations in
CoordinatedGraphicsScene::setLayerState() to address that.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::setLayerState):
2018-04-24 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Remove unused fixed layout functionality
https://bugs.webkit.org/show_bug.cgi?id=184908
Reviewed by Carlos Garcia Campos.
Ports using the CoordinatedGraphics subsystem don't expose fixed layout
support. As such, we're able to remove a lot of unused code and
unnecessary USE(COORDINATED_GRAPHICS) special cases in generic sections
in both WebCore and WebKit.
Remove USE(COORDINATED_GRAPHICS) special-casing from the
WebPage::setUseFixedLayout() method. This is not possible to enable for
the GTK+ and WPE ports that use the CoordinatedGraphics subsytem via
API. Removing all this unlocks removing considerable amounts of dead
code and complexities in CoordinatedGraphics.
WebChromeClient::delegatedScrollRequested() method is removed, along
with the WebPage::pageDidRequestScroll() method that was only called
from there.
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::delegatedScrollRequested): Deleted.
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setUseFixedLayout):
(WebKit::WebPage::pageDidRequestScroll): Deleted.
* WebProcess/WebPage/WebPage.h:
2018-04-24 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Avoid painting backing stores for zero-opacity layers
https://bugs.webkit.org/show_bug.cgi?id=184143
Reviewed by Carlos Garcia Campos.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::layerShouldHaveBackingStore):
Mirror CoordinatedGraphicsLayer's backing store requirements.
2018-04-23 Daniel Bates <dabates@apple.com>
Implement Same-Site cookies
https://bugs.webkit.org/show_bug.cgi?id=159464
<rdar://problem/27196358>
Reviewed by Brent Fulgham.
Pass the Same-Site info through the WebKit abstractions.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
(WebKit::NetworkConnectionToWebProcess::getRawCookies):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::logCookieInformation const):
(WebKit::logBlockedCookieInformation):
(logCookieInformationInternal):
(NetworkResourceLoader::logCookieInformation):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::constructRevalidationRequest):
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:
(WebKit::NetworkCache::SubresourceInfo::encode const):
(WebKit::NetworkCache::SubresourceInfo::decode):
(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
(WebKit::NetworkCache::SubresourceInfo::isSameSite const):
(WebKit::NetworkCache::SubresourceInfo::isTopSite const): Returns false; subresources do not represent
a top-level navigation.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::isThirdPartyRequest):
(WebKit::updateTaskWithFirstPartyForSameSiteCookies):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::download):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::cookiesForDOM):
(WebKit::WebPlatformStrategies::setCookiesFromDOM):
(WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebKit::WebPlatformStrategies::getRawCookies):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
2018-04-23 Youenn Fablet <youenn@apple.com>
Make WebLoaderStrategy send to NetworkResourceLoader necessary parameters to handle full loads in NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=184763
Reviewed by Chris Dumez.
Set all required NetworkResourceLoadParameters for asynchronous loads.
This includes preflight policy, CSP response headers, SecurityOrigin and content blockers identifier.
Update NetworkLoadChecker to handle preflight policy.
This is not needed right now since sync XHR and ping loads are using the default ConsiderPreflight policy.
But this will be needed for XHR/fetch/EventSource loads.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::validateResponse):
(WebKit::NetworkLoadChecker::checkCORSRequest):
* NetworkProcess/NetworkLoadChecker.h:
(WebKit::NetworkLoadChecker::create):
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::PingLoad):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
2018-04-23 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] REGRESSION(230860) Unable to change time input values using UI
https://bugs.webkit.org/show_bug.cgi?id=184901
<rdar://problem/39664797>
Reviewed by Tim Horton.
Fixes the bug by falling back to setting the value of the focused input element in the case where the selection
is not editable. Also adds plumbing to make time pickers testable in extra zoom mode.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView setTimePickerValueToHour:minute:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setTimePickerValueToHour:minute:]):
Add plumbing to make it possible for WebKitTestRunner to simulate picking a time from the given hours and
minutes. This is currently only implemented for extra zoom mode, but may be implemented for UIKit's time picker
as well in the future by adjusting -[WKContentView setTimePickerValueToHour:minute:].
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setTextAsync):
2018-04-23 Saam Barati <sbarati@apple.com>
Keep around a pre-warmed process when doing process swap on navigation
https://bugs.webkit.org/show_bug.cgi?id=184765
Reviewed by Ryosuke Niwa.
This patch makes it so that WebProcessPool prewarms a process when process
swap on navigation is turned on. When we do a process swap on navigation,
we first try to grab a prewarmed process before creating a new one.
We try to be smart about when to create these processes. The initial heuristic
that this patch chooses is when we reach the DidFirstVisuallyNonEmptyLayout
layout milestone. We're going to try to improve on this heuristic in:
https://bugs.webkit.org/show_bug.cgi?id=184899
This is a 40% progression on PLT with process swap on navigation turned on.
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::notifyProcessPoolToPrewarm):
(WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::tryTakePrewarmedProcess):
(WebKit::WebProcessPool::warmInitialProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::didReachGoodTimeToPrewarm):
(WebKit::WebProcessPool::processForNavigation):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::create):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::m_isInPrewarmedPool):
(WebKit::m_userMediaCaptureManagerProxy): Deleted.
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::isInPrewarmedPool const):
(WebKit::WebProcessProxy::setIsInPrewarmedPool):
2018-04-23 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE][GTK] Remove WlUniquePtr<wl_display> footgun
https://bugs.webkit.org/show_bug.cgi?id=184405
Reviewed by Carlos Garcia Campos.
Switch to std::unique_ptr.
* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::WaylandCompositor):
* UIProcess/gtk/WaylandCompositor.h:
(WebKit::WaylandCompositor::DisplayDeleter::operator()):
2018-04-23 Daniel Bates <dabates@apple.com>
Attempt to fix the Apple Internal build following r230921
(https://bugs.webkit.org/show_bug.cgi?id=159464)
Forward declare some SPI. Add availability guard.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
2018-04-23 Zalan Bujtas <zalan@apple.com>
[LayoutFormattingContext] Initial commit.
https://bugs.webkit.org/show_bug.cgi?id=184896
Reviewed by Antti Koivisto.
* Configurations/FeatureDefines.xcconfig:
2018-04-23 Daniel Bates <dabates@apple.com>
Implement Same-Site cookies
https://bugs.webkit.org/show_bug.cgi?id=159464
<rdar://problem/27196358>
Reviewed by Brent Fulgham.
Pass the Same-Site info through the WebKit abstractions.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
(WebKit::NetworkConnectionToWebProcess::getRawCookies):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::logCookieInformation const):
(WebKit::logBlockedCookieInformation):
(logCookieInformationInternal):
(NetworkResourceLoader::logCookieInformation):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::constructRevalidationRequest):
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:
(WebKit::NetworkCache::SubresourceInfo::encode const):
(WebKit::NetworkCache::SubresourceInfo::decode):
(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
(WebKit::NetworkCache::SubresourceInfo::isSameSite const):
(WebKit::NetworkCache::SubresourceInfo::isTopSite const): Returns false; subresources do not represent
a top-level navigation.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::isThirdPartyRequest):
(WebKit::updateTaskWithFirstPartyForSameSiteCookies):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::download):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::cookiesForDOM):
(WebKit::WebPlatformStrategies::setCookiesFromDOM):
(WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebKit::WebPlatformStrategies::getRawCookies):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
2018-04-23 Chris Dumez <cdumez@apple.com>
WebProcessProxy frequently re-takes a process assertion for the network process even though is already has one
https://bugs.webkit.org/show_bug.cgi?id=184889
<rdar://problem/38151530>
Reviewed by Brady Eidson.
In ProcessThrottler::updateAssertionNow(), if the new process assertion state is the same
as the existing one, then return early. Otherwise, we would end up calling WebProcessProxy::didSetAssertionState()
for the same assertion state, which would cause duplicate logging but also some unnecessary work.
* UIProcess/ProcessThrottler.cpp:
(WebKit::ProcessThrottler::updateAssertionNow):
2018-04-23 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Remove unused trajectory cruft in CoordinatedLayerTreeHost, CoordinatedGraphicsLayer
https://bugs.webkit.org/show_bug.cgi?id=184881
Reviewed by Michael Catanzaro.
The CompositingCoordinator::setVisibleContentsRect() method is always
called with a (0,0) FloatPoint value as the trajectory vector parameter,
which is already the default value in TiledBackingStore where this ends
up. Removing this call chain also enables removing some unnecessary and
odd code in the CoordinatedGraphicsLayer class.
This doesn't yet touch the trajectory logic in the TiledBackingStore
class since it's not yet a given this won't be used in the future. But
if that will be necessary, hope is to not use it this way.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::setVisibleContentsRect):
(WebKit::CompositingCoordinator::mainContentsLayer): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::setVisibleContentsRect):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::didChangeViewport):
2018-04-23 Fujii Hironori <Hironori.Fujii@sony.com>
[Win][WK2] REGRESSION(r230834) 'getpid': identifier not found
https://bugs.webkit.org/show_bug.cgi?id=184877
Reviewed by Yusuke Suzuki.
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::WebBackForwardListProxy::addItem): Use WTF::getCurrentProcessID() instead of getpid().
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::goToBackForwardItem): Ditto.
2018-04-23 Zan Dobersek <zdobersek@igalia.com>
[TexMap] Drop RefCounted inheritance off of TextureMapperBackingStore
https://bugs.webkit.org/show_bug.cgi?id=184810
Reviewed by Carlos Garcia Campos.
CoordinatedBackingStore should inherit directly from RefCounted<> now
that TextureMapperBackingStore doesn't anymore.
* Shared/CoordinatedGraphics/CoordinatedBackingStore.h:
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::createBackingStoreIfNeeded):
2018-04-22 Zan Dobersek <zdobersek@igalia.com>
[CoordinatedGraphics] Unused contentsSize, coveredRect attributes in CoordinatedGraphicsState
https://bugs.webkit.org/show_bug.cgi?id=184811
Reviewed by Carlos Garcia Campos.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::flushPendingLayerChanges): Stop setting
the removed contentsSize and coveredRect attributes. These were only
ever set to the appropriate values, but were then never used anywhere.
2018-04-22 Matt Baker <mattbaker@apple.com>
Web Inspector: WebInspectorProxy releases WKWebInspectorProxyObjCAdapter without removing corresponding observer
https://bugs.webkit.org/show_bug.cgi?id=184865
<rdar://problem/37764960>
Reviewed by Brian Burg.
Replace the early return removed in https://bugs.webkit.org/show_bug.cgi?id=177661,
so that WKWebInspectorProxyObjCAdapter and the view controller can be reused
when reopening the Inspector while the WebView is still alive.
* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::platformCreateFrontendPage):
2018-04-22 Paul Knight <pknight@apple.com>
Add -[WKInputDelegate _webView:decidePolicyForFocusedElement:] so clients can request default focusing behavior
https://bugs.webkit.org/show_bug.cgi?id=184844
Reviewed by Dan Bernstein.
If a client doesn't implement -[_WKInputDelegate _webView:focusShouldStartInputSession:] the default
focus behavior only brings up the keyboard if it's already onscreen, the interaction is user driven,
and other factors that even depend on what feature flags are enabled.
If a client implements _webView:focusShouldStartInputSession:, they don't have a good way to specifiy
they'd like to fall back to the default behavior. This makes it difficult for a client to use the
default in most cases, but sometimes allow programmatic focus from the page, for example.
Add a new delegate method -_webView:decidePolicyForFocusedElement: that returns a new enum type
_WKFocusStartsInputSessionPolicy. Clients can return _WKFocusStartsInputSessionPolicyAuto to request
the default behavior, or _WKFocusStartsInputSessionPolicyAllow / Disallow to directly control whether
the keyboard appears to assist the focused node.
* UIProcess/API/Cocoa/_WKInputDelegate.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
2018-04-21 Jeremy Jones <jeremyj@apple.com>
Disable backward and forward navigation swipes while in fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=184656
rdar://problem/36057535
Reviewed by Tim Horton.
Disable navigation swipes while in fullscreen.
* UIProcess/Cocoa/ViewGestureController.cpp:
(WebKit::ViewGestureController::canSwipeInDirection const):
2018-04-21 Youenn Fablet <youenn@apple.com>
Activate NetworkLoadChecker for media loads
https://bugs.webkit.org/show_bug.cgi?id=184841
Reviewed by Eric Carlson.
Instantiate a NetworkLoadChecker for NetworkResourceLoader for audio/video loads.
Move CORS checks for response after handling of 304 checks.
For 304 checks, we need to do the CORS checks on the validated cached response, not the 304 received response.
Updated ResourceError argument coder to explicitly pass the error type
as some errors created by NetworkLoadChecker would otherwise be received as General errors by WebProcess.
Updated platform data encoding of ResourceError accordingly.
All changes are covered by regular media loading layout tests.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::shouldUseNetworkLoadChecker):
(WebKit::NetworkResourceLoader::didReceiveResponse):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<ResourceError>::encode):
(IPC::ArgumentCoder<ResourceError>::decode):
* Shared/mac/WebCoreArgumentCodersMac.mm:
(IPC::ArgumentCoder<ResourceError>::encodePlatformData):
(IPC::ArgumentCoder<ResourceError>::decodePlatformData):
We need to set the type after decoding the NSError as ResourceError tries to guess the type from NSError data.
* Shared/soup/WebCoreArgumentCodersSoup.cpp:
(IPC::ArgumentCoder<ResourceError>::encodePlatformData):
(IPC::ArgumentCoder<ResourceError>::decodePlatformData):
2018-04-20 Carlos Garcia Campos <cgarcia@igalia.com>
[SOUP] Do TLS error checking on GTlsConnection::accept-certificate
https://bugs.webkit.org/show_bug.cgi?id=184480
Reviewed by Michael Catanzaro.
Connect to GTlsConnection::accept-certificate signal instead of SoupMessage::notify::tls-errors to perform the
TLS errors check.
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::createRequest): Do not connect to SoupMessage::notify::tls-errors.
(WebKit::NetworkDataTaskSoup::tlsConnectionAcceptCertificateCallback): Call tlsConnectionAcceptCertificate() is
the task is still ongoing.
(WebKit::NetworkDataTaskSoup::tlsConnectionAcceptCertificate): Check TLS errors here.
(WebKit::NetworkDataTaskSoup::networkEventCallback): Pass the stream to networkEvent.
(WebKit::NetworkDataTaskSoup::networkEvent): Connect to GTlsConnection::accept-certificate.
* NetworkProcess/soup/NetworkDataTaskSoup.h:
2018-04-20 Timothy Hatcher <timothy@apple.com>
NULL dereference crash sometimes under [super initWithCoder:] in WebView
https://bugs.webkit.org/show_bug.cgi?id=184851
rdar://problem/39611236
Reviewed by Tim Horton.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView effectiveAppearanceDidChange]):
Added a null check and call the code later in initialization.
2018-04-20 Tim Horton <timothy_horton@apple.com>
Adjust geolocation feature flag
https://bugs.webkit.org/show_bug.cgi?id=184856
Reviewed by Wenson Hsieh.
* Configurations/FeatureDefines.xcconfig:
2018-04-20 Chris Dumez <cdumez@apple.com>
Unreviewed attempt to fix GTK build after r230867.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:
(webkit_dom_dom_window_get_self):
(webkit_dom_dom_window_get_window):
(webkit_dom_dom_window_get_frames):
(webkit_dom_dom_window_get_opener):
(webkit_dom_dom_window_get_parent):
(webkit_dom_dom_window_get_top):
2018-04-20 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r230873.
https://bugs.webkit.org/show_bug.cgi?id=184857
Broke the iOS build (Requested by cdumez on #webkit).
Reverted changeset:
"Disable backward and forward navigation swipes while in
fullscreen."
https://bugs.webkit.org/show_bug.cgi?id=184656
https://trac.webkit.org/changeset/230873
2018-04-20 Chris Dumez <cdumez@apple.com>
REGRESSION (r229828): web view doesn’t update or respond to resizing until client calls policy decision handler
https://bugs.webkit.org/show_bug.cgi?id=184210
<rdar://problem/39072354>
Reviewed by Wenson Hsieh.
r229828 tried to have some API tests happy on iOS by freezing the layer tree
during the navigation policy decision. However, this is observable by the client
application and a regression from when the policy delegate was synchronous.
To address the issue, this patch reverts r229828 and instead updates the iOS
API tests to wait for the next presentation update after navigating
before interacting with the view.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebKit::WebFrameLoaderClient::cancelPolicyCheck):
(WebKit::WebFrameLoaderClient::provisionalLoadStarted):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:
2018-04-20 Brent Fulgham <bfulgham@apple.com>
Limit cookie header access to Network process
https://bugs.webkit.org/show_bug.cgi?id=184764
<rdar://problem/36785285>
Reviewed by Youenn Fablet.
Revise the handling of cookie request headers so that we don't interact with them in the
WebContent process. They are only needed for interaction with the server and the network
process, so we should limit their scope to just the Network process.
Instead, we should handle a token that represents the cookie headers in the WebContent
process, which can be converted to the relevant cookie data in the network process when
needed.
* NetworkProcess/NetworkSocketStream.cpp:
(WebKit::NetworkSocketStream::sendHandshake):
* NetworkProcess/NetworkSocketStream.h:
* NetworkProcess/NetworkSocketStream.messages.in:
* WebProcess/Network/WebSocketStream.cpp:
(WebKit::WebSocketStream::networkProcessCrashed):
(WebKit::WebSocketStream::platformSendHandshake):
(WebKit::WebSocketStream::didSendHandshake):
* WebProcess/Network/WebSocketStream.h:
* WebProcess/Network/WebSocketStream.messages.in:
2018-04-20 Jeremy Jones <jeremyj@apple.com>
Disable backward and forward navigation swipes while in fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=184656
rdar://problem/36057535
Reviewed by Tim Horton.
Disable navigation swipes while in fullscreen.
* UIProcess/Cocoa/ViewGestureController.cpp:
(WebKit::ViewGestureController::canSwipeInDirection const):
2018-04-20 Jeremy Jones <jeremyj@apple.com>
Element fullscreen, expose WKWebView _fullScreenPlaceholderView as iOS SPI
https://bugs.webkit.org/show_bug.cgi?id=184826
rdar://problem/39600825
Reviewed by Tim Horton.
Add _fullScreenPlaceholderView for iOS similar to the one for Mac.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _fullScreenPlaceholderView]):
(-[WKWebView closeFullScreenWindowController]):
(-[WKWebView fullScreenPlaceholderView]): Deleted.
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h:
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController webViewPlaceholder]):
2018-04-20 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Injected bundle form client should be notified when editing text fields
https://bugs.webkit.org/show_bug.cgi?id=184822
<rdar://problem/38807319>
Reviewed by Tim Horton.
Fixes the bug by making a couple of tweaks: (1) don't use a separate codepath for inserting text in text inputs,
and (2) force a user typing gesture when inserting text using this codepath (i.e. WKTextInputListViewController).
Also adds plumbing to enable testing text entry with WKTextInputListViewController in extra zoom mode.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _simulateTextEntered:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Introduce testing SPI to simulate text entry. Additionally, add a missing availability annotation around testing
SPI added in 2017 to help test drag and drop for iOS 11.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _simulateTextEntered:]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setTextAsync):
2018-04-20 Jeremy Jones <jeremyj@apple.com>
EnterFullscreen must update the minimum and maximum layout sizes.
https://bugs.webkit.org/show_bug.cgi?id=184828
rdar://problem/38435829
Reviewed by Jon Lee.
Without this, the WKWebView won't layout to the full size in fullscreen mode.
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController enterFullScreen]):
2018-04-18 Jer Noble <jer.noble@apple.com>
Don't put build products into WK_ALTERNATE_WEBKIT_SDK_PATH for engineering builds
https://bugs.webkit.org/show_bug.cgi?id=184762
Reviewed by Dan Bernstein.
* Configurations/BaseTarget.xcconfig:
2018-04-20 Youenn Fablet <youenn@apple.com>
Refactor NetworkResourceLoader to check for m_networkLoadChecker presence before using it
https://bugs.webkit.org/show_bug.cgi?id=184755
Reviewed by Chris Dumez.
Make NetworkResourceLoader always use m_networkLoadChecker if there is one.
This is only used now for synchronous loads but will be used in the future for asynchronous loads as well.
Since we call didFail asynchronously to make sync/async handling more consistent,
We need to keep track of whether we will do clean-up twice.
A boolean is added for that purpose in NetworkResourceLoader.
There is a small change of behavior in the way we return an error.
Instead of returning a platformBadResponseError, we are now returning the error as computed by NetworkLoadChecker.
This allows getting some more error logging in the JS console.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
(WebKit::NetworkResourceLoader::continueWillSendRedirectedRequest):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
* NetworkProcess/NetworkResourceLoader.h:
2018-04-20 Timothy Hatcher <timothy@apple.com>
Include missing files in WKContentViewInteraction.{mm,h}
https://bugs.webkit.org/show_bug.cgi?id=184832
rdar://problem/35377120
Reviewed by Wenson Hsieh.
Some WebDriver files were missing and should be included.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
2018-04-20 Youenn Fablet <youenn@apple.com>
WebPage sometimes incorrectly rules out PDF as a mime type that can be showed
https://bugs.webkit.org/show_bug.cgi?id=184369
Reviewed by Chris Dumez.
Use API to check for plugin availability for response at navigation time.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::canShowResponse const):
(WebKit::WebPage::canShowMIMEType const):
* WebProcess/WebPage/WebPage.h:
2018-04-20 Daniel Bates <dabates@apple.com>
Remove Strong Password decoration when text field type changes
https://bugs.webkit.org/show_bug.cgi?id=184795
<rdar://problem/38325108>
Reviewed by Antti Koivisto.
Add injected bundle API and WebKit UI delegate SPI to notify the embedding client when the
Strong Password appearance of an HTML input element is resigned.
We add C SPI for Safari on Mac.
* UIProcess/API/APIUIClient.h:
(API::UIClient::didResignInputElementStrongPasswordAppearance):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/C/WKPageUIClient.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::didResignInputElementStrongPasswordAppearance):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didResignInputElementStrongPasswordAppearance):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h:
(API::InjectedBundle::PageUIClient::didResignInputElementStrongPasswordAppearance):
* WebProcess/InjectedBundle/API/c/WKBundlePageUIClient.h:
* WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
(WebKit::InjectedBundlePageUIClient::didResignInputElementStrongPasswordAppearance):
* WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::inputElementDidResignStrongPasswordAppearance):
* WebProcess/WebCoreSupport/WebChromeClient.h:
2018-04-20 Megan Gardner <megan_gardner@apple.com>
Fixes for failing tests associated with switching Text Selection Assistants
https://bugs.webkit.org/show_bug.cgi?id=184806
<rdar://problem/39367905>
Reviewed by Beth Dakin and Wenson Hsieh.
The major fix is the disabling the double tap noneditable text selection gesture.
The other fixes are small tweaks that shouldn't even be run into with the fix to
the double tap gesture, but they are incorrect, so I am taking the opportunity to
fix them now, in case we run into them again.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
We should not be allowing a double tap text gestures in non-editable web content.
We didn't have one with the old assistant. Fortunately, this is easily disabled.
(-[WKContentView canPerformActionForWebView:withSender:]):
We should not allow the lookup action if we do not actually have a selection.
It is meaningless without one.
(-[WKContentView selectedTextRange]):
We should not return a selection to UIKit if all we have is caret selection
in non-editable content. We have this for selections on Mac, but UIKit does
not know how to properly handle this, and will have incorrect behavior if we
return a valid selection.
2018-04-20 Timothy Hatcher <timothy@apple.com>
WebEvent fails to convert synthetic WebMouseEvent for automation
https://bugs.webkit.org/show_bug.cgi?id=184824
rdar://problem/35377120
Reviewed by Brian Burg.
Add WebEvent conversions that existed in PlatformEventFactoryIOS for legacy WebKit,
but never got added in WebIOSEventFactory and NativeWebMouseEvent for modern WebKit.
This affected WebDriver, and some events not being deliverd to the page.
* Shared/NativeWebMouseEvent.h:
(WebKit::NativeWebMouseEvent::nativeEvent const):
* Shared/ios/NativeWebMouseEventIOS.mm: Added.
(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):
* Shared/ios/WebIOSEventFactory.h:
* Shared/ios/WebIOSEventFactory.mm:
(WebIOSEventFactory::createWebMouseEvent):
* WebKit.xcodeproj/project.pbxproj:
2018-04-20 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix -Wformat warning
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didFinishLoadForFrame):
2018-04-20 Youenn Fablet <youenn@apple.com>
Make PluginData cache its web visible plugins
https://bugs.webkit.org/show_bug.cgi?id=184421
Reviewed by Chris Dumez.
Rename methods.
Pass an URL instead of relying on Page URL as the page URL
might not always be the URL we want to check against plugins.
In particular when navigation is on-going, we want to check the
plugins against the being navigated URL.
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::pluginInfo):
(WebKit::WebPluginInfoProvider::webVisiblePluginInfo):
* WebProcess/Plugins/WebPluginInfoProvider.h:
2018-04-19 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix GTK+ build after r230830.
Add SimulatedInputDispatcher.cpp to the build.
* CMakeLists.txt:
2018-04-19 Brady Eidson <beidson@apple.com>
Make back forward cache work with process swapping.
<rdar://problem/38676604> and https://bugs.webkit.org/show_bug.cgi?id=184793
Reviewed by Chris Dumez.
We previously saved old processes in "SuspendedPageProxy" objects.
Now we reuse them when going back or forward.
* Platform/Logging.h:
* Shared/WebBackForwardListItem.cpp:
(WebKit::WebBackForwardListItem::setSuspendedPage):
(WebKit::WebBackForwardListItem::loggingString):
* Shared/WebBackForwardListItem.h:
(WebKit::WebBackForwardListItem::suspendedPage const):
Teach Navigation objects their source WebBackForwardListItems:
* UIProcess/API/APINavigation.cpp:
(API::Navigation::Navigation):
(API::Navigation::loggingString const):
* UIProcess/API/APINavigation.h:
(API::Navigation::create):
(API::Navigation::targetItem const):
(API::Navigation::fromItem const):
(API::Navigation::backForwardListItem): Deleted.
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/SuspendedPageProxy.cpp:
(WebKit::messageNamesToIgnoreWhileSuspended):
(WebKit::SuspendedPageProxy::SuspendedPageProxy):
(WebKit::SuspendedPageProxy::~SuspendedPageProxy):
(WebKit::SuspendedPageProxy::webProcessDidClose):
(WebKit::SuspendedPageProxy::didReceiveMessage):
(WebKit::SuspendedPageProxy::loggingString const):
* UIProcess/SuspendedPageProxy.h:
(WebKit::SuspendedPageProxy::origin const):
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::WebBackForwardList):
(WebKit::WebBackForwardList::~WebBackForwardList):
(WebKit::WebBackForwardList::pageClosed):
(WebKit::WebBackForwardList::addItem):
(WebKit::WebBackForwardList::goToItem):
(WebKit::WebBackForwardList::removeAllItems):
(WebKit::WebBackForwardList::clear):
(WebKit::WebBackForwardList::restoreFromState):
(WebKit::WebBackForwardList::filteredItemStates const):
(WebKit::WebBackForwardList::itemStates const):
(WebKit::WebBackForwardList::loggingString):
* UIProcess/WebBackForwardList.h:
* UIProcess/WebNavigationState.cpp:
(WebKit::WebNavigationState::createLoadRequestNavigation):
(WebKit::WebNavigationState::createBackForwardNavigation):
* UIProcess/WebNavigationState.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::maybeCreateSuspendedPage):
(WebKit::WebPageProxy::reattachToWebProcessWithItem):
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::didCreateMainFrame):
(WebKit::WebPageProxy::didCreateSubframe):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::connectionWillOpen):
(WebKit::WebPageProxy::attachToProcessForNavigation): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessLifetimeTracker.cpp:
(WebKit::WebProcessLifetimeTracker::webPageEnteringWebProcess):
(WebKit::WebProcessLifetimeTracker::connectionWillOpen): Deleted.
* UIProcess/WebProcessLifetimeTracker.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation):
(WebKit::WebProcessPool::registerSuspendedPageProxy):
(WebKit::WebProcessPool::unregisterSuspendedPageProxy):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::suspendWebPageProxy):
(WebKit::WebProcessProxy::updateBackForwardItem):
(WebKit::WebProcessProxy::frameCreated):
* UIProcess/WebProcessProxy.h:
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::attachDrawingArea):
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::WebBackForwardListProxy::addItemFromUIProcess):
(WebKit::WebBackForwardListProxy::addItem):
* WebProcess/WebPage/WebBackForwardListProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
(WebKit::WebPage::reinitializeWebPage):
(WebKit::WebPage::goToBackForwardItem):
(WebKit::WebPage::restoreSessionInternal):
(WebKit::WebPage::restoreSession):
(WebKit::WebPage::updateBackForwardListForReattach):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::attachDrawingArea): Force a reattachment of the drawing
area from a resumed WebProcess to the UIProcess (to make the page cache work)
2018-04-19 Brian Burg <bburg@apple.com>
Web Automation: add support for mouse/keyboard interaction sequences
https://bugs.webkit.org/show_bug.cgi?id=184603
<rdar://problem/39421839>
Reviewed by Timothy Hatcher.
Add new protocol methods and WebKit support for implementing the W3C Actions API.
This is a generic command for sending low-level mouse, key, and touch events to
test page behavior when performing drag-and-drop, gestures, or specific keydown/keyups.
To implement this functionality, this patch adds SimulatedInputDispatcher, a class
for dispatching input events asynchronously. Similar to the WebDriver specification,
this is designed as a keyframing API. Callers set up several "input sources" such
as keyboard or mouse, and then specify the states of that input source over time. The
dispatcher calculates diffs between the previous and current keyframes and generates
the appropriate events that would happen if a user caused the state transition.
For example, if a mouse input source's state changes, the dispatcher sends synthetic mousemove,
mousedown, or mouseup events depending on the pre- and post-state. This is uninteresting
and overcomplicated for simple key and mouse presses, but it's really designed with an
eye towards supporting mousemove interpolation and touch event interpolation in later patches.
The strategy for dispatching events depends on the input source type; right now, these
map directly to the existing platformSimulate{Mouse, Keyboard}Interaction methods. In
the future, the dispatch strategy may be elaborated for interpolated mousemove events.
This patch depends on support added in bug 184462.
No tests yet. When this command is hooked up to a driver, the code will be exercised by
W3C actions test suite, which is fairly complex at this point relative to end-user code.
* UIProcess/Automation/Automation.json: Add new types and commands.
* UIProcess/Automation/SimulatedInputDispatcher.h: Added.
(WebKit::SimulatedInputSourceState::emptyState):
(WebKit::SimulatedInputSource::create):
(WebKit::SimulatedInputSource::SimulatedInputSource):
(WebKit::SimulatedInputDispatcher::Client::~Client):
Add structs for input source, source state, and keyframe.
The dispatcher's client interface is implemented by WebAutomationSession.
(WebKit::SimulatedInputDispatcher::create):
* UIProcess/Automation/SimulatedInputDispatcher.cpp: Added.
(WebKit::SimulatedInputKeyFrame::SimulatedInputKeyFrame):
(WebKit::SimulatedInputKeyFrame::maximumDuration const):
(WebKit::SimulatedInputKeyFrame::keyFrameFromStateOfInputSources):
(WebKit::SimulatedInputKeyFrame::keyFrameToResetInputSources):
(WebKit::SimulatedInputDispatcher::SimulatedInputDispatcher):
(WebKit::SimulatedInputDispatcher::~SimulatedInputDispatcher):
(WebKit::SimulatedInputDispatcher::isActive const):
(WebKit::SimulatedInputDispatcher::keyFrameTransitionDurationTimerFired):
(WebKit::SimulatedInputDispatcher::isKeyFrameTransitionComplete const):
(WebKit::SimulatedInputDispatcher::transitionToNextKeyFrame):
(WebKit::SimulatedInputDispatcher::transitionToNextInputSourceState):
(WebKit::SimulatedInputDispatcher::transitionBetweenKeyFrames):
(WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
(WebKit::SimulatedInputDispatcher::run):
(WebKit::SimulatedInputDispatcher::cancel):
(WebKit::SimulatedInputDispatcher::finishDispatching):
The dispatcher handles one interaction at a time. The interaction is described
by an array of keyframes, and each keyframe has an array of states. The dispatcher
transitions between keyframes by sequentially and asynchronously emitting events
that cause each input source state to transition as desired. Keyframe transitions
are additionally gated by a "maximum duration" timer. Each step that the dispatcher
executes is asynchronous, so the dispatcher keeps most state in members and uses
error argument lambdas as completion handlers for various async things.
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::WebAutomationSession):
(WebKit::WebAutomationSession::inputDispatcherForPage):
(WebKit::WebAutomationSession::inputSourceForType const):
Add canonical input sources that are used to keep track of state across
interaction sequences.
(WebKit::WebAutomationSession::isSimulatingUserInteraction const):
(WebKit::WebAutomationSession::mouseEventsFlushedForPage):
(WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
Remove m_simulatingUserInteraction since it can be computed based on other members.
(WebKit::WebAutomationSession::willClosePage):
If the page is being torn down, stop the dispatcher if needed and cancel any
callbacks waiting for mouse/key events to be retired.
(WebKit::WebAutomationSession::simulateMouseInteraction):
(WebKit::WebAutomationSession::simulateKeyboardInteraction):
Add easy-to-use async methods for simulating mouse and key events. These are
hooked up to SimulatedInputDispatcher using async completion handlers.
(WebKit::protocolMouseButtonToWebMouseEventButton):
(WebKit::WebAutomationSession::performMouseInteraction):
(WebKit::WebAutomationSession::performKeyboardInteractions):
Adjust some naming.
(WebKit::simulatedInputSourceTypeFromProtocolSourceType):
(WebKit::WebAutomationSession::performInteractionSequence):
(WebKit::WebAutomationSession::cancelInteractionSequence):
Add command handlers for the new action commands in Automation protocol.
* UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
(WebKit::mouseButtonToGdkButton):
(WebKit::WebAutomationSession::platformSimulateMouseInteraction):
(WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
(WebKit::WebAutomationSession::platformSimulateKeyStroke): Deleted.
* UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
(WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
(WebKit::WebAutomationSession::platformSimulateKeyStroke): Deleted.
Rename the keyboard platform method to match the naming of the mouse platform method.
Take advantage of the 'using' alias to make the tedious switches easier to read.
* UIProcess/Automation/mac/WebAutomationSessionMac.mm:
(WebKit::WebAutomationSession::platformSimulateMouseInteraction):
(WebKit::virtualKeyHasStickyModifier):
(WebKit::keyCodeForVirtualKey):
(WebKit::eventModifierFlagsForVirtualKey):
(WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
(WebKit::WebAutomationSession::platformSimulateKeySequence):
(WebKit::keyHasStickyModifier): Deleted.
(WebKit::WebAutomationSession::platformSimulateKeyStroke): Deleted.
Allow the keyboard simulation method to take a virtual key and unichar to better
match how this is used by the Perform Actions command and its machinery.
* WebKit.xcodeproj/project.pbxproj:
2018-04-19 Jiewen Tan <jiewen_tan@apple.com>
Remove access to keychain from the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=184428
<rdar://problem/13150903>
Reviewed by Brent Fulgham.
Part 1.
Remove com.apple.identities from WebContent-iOS.entitlements, which is needed to encode/decode NSError’s userInfo[NSErrorClientCertificateChainKey]
when the corresponding NSErorr is relayed through WebContent Process from Networking Process to UI Process after a HTTPS client certificate
authentication is rejected becuase of bad certificates. This patch implements corresponding workarounds as well. The workaround works for mac, too.
Sadly, this change can only be tested manually at this moment. Please refer to the radar for testing steps.
* Configurations/WebContent-iOS.entitlements:
* Shared/mac/WebCoreArgumentCodersMac.mm:
(IPC::encodeNSError):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitialize):
2018-04-19 David Kilzer <ddkilzer@apple.com>
Enable Objective-C weak references
<https://webkit.org/b/184789>
<rdar://problem/39571716>
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
(CLANG_ENABLE_OBJC_WEAK): Enable.
2018-04-19 Youenn Fablet <youenn@apple.com>
Web Inspector backend should get headers & cookies from network process separately from resource requests
https://bugs.webkit.org/show_bug.cgi?id=184396
<rdar://problem/38877384>
Reviewed by Brian Burg.
Add support for storing response and network metrics for every resource load.
This is made conditional on inspector being activated.
NetworkConnectionToWebProcess keeps a response and network metrics for every load.
This is cleared when inspector is going away or when a web process requests
the data.
WebLoaderStrategy gets this data through synchronous IPC.
Synchronous IPC is a temporary implementation until Inspector code gets refactored.
Updated WebLoaderStrategy to pass the sourceOrigin for every NetworkResourceLoader.
This activates additional sanitization based on cross origin status.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled):
* NetworkProcess/NetworkConnectionToWebProcess.h:
(WebKit::NetworkConnectionToWebProcess::takeNetworkLoadInformationResponse):
(WebKit::NetworkConnectionToWebProcess::takeNetworkLoadInformationMetrics):
(WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationResponse):
(WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics):
(WebKit::NetworkConnectionToWebProcess::removeNetworkLoadInformation):
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::didFailLoading):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::responseFromResourceLoadIdentifier):
(WebKit::WebLoaderStrategy::networkMetricsFromResourceLoadIdentifier):
* WebProcess/Network/WebLoaderStrategy.h:
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResponse):
2018-04-19 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Add a mechanism to extend the height of the layout viewport in extra zoom mode
https://bugs.webkit.org/show_bug.cgi?id=184782
<rdar://problem/38346712>
Reviewed by Tim Horton.
In extra zoom mode, at initial scale, fixed position elements may take up a large portion of the viewport. This
leaves little room for non-fixed-position elements; to improve this experience, we introduce a mechanism to
extend the height of the layout viewport. By default, the layout viewport size is determined by the FrameView's
baseLayoutViewportSize, and passed into FrameView::computeUpdatedLayoutViewportRect in the client layer; in
extra zoom mode, if the layout viewport is shorter than the document width, we try to double the height of the
layout viewport and clamp to the document height if necessary.
* Shared/WebPreferences.yaml:
Add a new preference to determine the factor by which we should expand the height of the layout viewport. By
default, this is 0 (no increase in layout viewport height); in extra zoom mode, this is 1, which means we'll
increase the layout viewport's height by 1x the default height.
* Shared/WebPreferencesDefaultValues.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView activeMinimumLayoutSizes:]):
Fixes a bug when computing the active minimum layout size. If a minimum allowed layout width is specified, we
clamp the active layout width (normally the view size) so that it is no less than the minimum allowed layout
width. However, the height is currently unaffected, which causes FrameView::baseLayoutViewportSize to return a
bogus size, where the width is scaled to 320px but the height isn't. Instead, we should scale the layout height
to match the new width here.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::computeCustomFixedPositionRect const):
Expand the base viewport layout size if necessary, given the expansion factor in WebPreferences.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::dynamicViewportSizeUpdate):
Expand the base viewport layout size if necessary, given the expansion factor in Settings.
2018-04-19 Brian Burg <bburg@apple.com>
Web Automation: simulated mouse interactions should not be done until associated DOM events have been dispatched
https://bugs.webkit.org/show_bug.cgi?id=184462
<rdar://problem/39323336>
Reviewed by Carlos Garcia Campos and Tim Horton.
Covered by existing layout tests and actions endpoints in WebDriver test suite.
In preparation for implementing the W3C WebDriver command "Perform Actions", we need a way to
know when a simulated mouse event has been fully processed by WebProcess and it is okay to continue
to dispatch more simulated events.
This patch makes mouse events go through a queue as they are delivered to WebPageProxy. The approach
is very similar to how key events are handled. In the key event case, lots of WebEvents can come out
of typing one keystroke, so these need to be queued up and retired one by one when the WebProcess has
finished handling each event. In some mouse event cases---particularly fake mouse moves---there can
also be more than one mouse event waiting to be handled by WebProcess.
In the past, these queued mouse events were tracked with several member variables as different
use cases emerged. These are all replaced with ordinary deque operations, such as peeking or
checking the queue length.
* Platform/Logging.h: Add logging channel for mouse events.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::AutomationCommandError::toProtocolString): Add type-safe helper class for command errors.
In future patches we can hide knowledge of how this is sent over the protocol by relying more on
the convenience constructors and .toProtocolString() method.
(WebKit::WebAutomationSession::willShowJavaScriptDialog):
This section needs adjustments. Since performMouseInteraction now depends on key events being processed
prior to returning from the command, we need to abort any key event callbacks that are pending if an
alert pops up as a result of sending a mousedown event. Any mouse events that are still queued will
be handled when the alert is dismissed and the nested run loop exits.
(WebKit::WebAutomationSession::mouseEventsFlushedForPage):
(WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
Modernize this a bit. Don't spread knowledge about how commands are sent back out into event handling code.
Our wrapper callbacks in performXXXInteraction handle the protocol-specific details of the response.
(WebKit::WebAutomationSession::performMouseInteraction):
Add code similar to performKeyboardInteractions so that the command doesn't finish until the mouse
event has been fully handled. Unlike keyboards, sometimes mouse interactions don't turn into WebEvents
so we also need to handle the case where there is nothing to be waited on because hit testing did
not return a target to deliver the event to.
(WebKit::WebAutomationSession::performKeyboardInteractions):
Modernize a little bit to use generic callbacks rather than protocol-generated callbacks in the
event waiting/handling code. Now it matches the types used for the mouse event case.
* UIProcess/Automation/WebAutomationSession.h:
(WebKit::AutomationCommandError::AutomationCommandError):
Add a helper struct to hold an enumerated error name and an optional free-form error message.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::webMouseEventTypeString):
(WebKit::webKeyboardEventTypeString):
(WebKit::WebPageProxy::handleMouseEvent):
(WebKit::WebPageProxy::processNextQueuedMouseEvent):
Split the old method into handleMouseEvent (called by other code) and processNextQueuedMouseEvent.
The latter sends the next mouse event to WebProcess, and can be triggered in didReceiveEvent
if there are more mouse events to be sent to WebProcess.
(WebKit::WebPageProxy::isProcessingMouseEvents const): Added.
(WebKit::WebPageProxy::currentlyProcessedMouseDownEvent): Reimplemented on top of the deque.
(WebKit::WebPageProxy::didReceiveEvent):
Unify the code paths for different mouse event types to all use the deque. They also will
notify the automation session if there are no more mouse events to send (i.e., interaction is over).
(WebKit::WebPageProxy::resetStateAfterProcessExited): Add handling for new map.
2018-04-19 Andy Estes <aestes@apple.com>
[iOS] Implement find-in-page in the new WKPDFView
https://bugs.webkit.org/show_bug.cgi?id=184654
<rdar://problem/39331654>
Reviewed by Tim Horton.
This is theoretically covered by existing WKPDFView API tests, but that's currently blocked
by <rdar://problem/39475542>.
* UIProcess/ios/WKPDFView.mm:
(stringCompareOptions):
Mapped _WKFindOptions to NSStringCompareOptions.
(-[WKPDFView _resetFind]):
Cancelled an in-progress search and reset the search state.
(-[WKPDFView _findString:withOptions:maxCount:completion:]):
Stored the completion block, find string, and max count, then called
-[PDFHostViewController findString:withOptions:].
(-[WKPDFView web_countStringMatches:options:maxCount:]):
Called -_findString:withOptions:maxCount:completion: with a completion block that calls
FindClient::didCountStringMatches() with _findStringCount.
(-[WKPDFView _computeFocusedSearchResultIndexWithOptions:didWrapAround:]):
Computed the focused search result index, taking _findStringCount and wrap-around into
account. There are two interesting cases to mention here:
1. We can't change focus while a search is in progress, because we can't properly handle
wrap-around without a _findStringCount. If a search is in progress, store the requested
focus change in _focusedSearchResultPendingOffset, which will be applied once the search
finishes.
2. If wrap-around is about to happen but the find options do not allow it, we need to call
FindClient::didFailToFindString(). Handle this by returning NO, which will tell
-_focusOnSearchResultWithOptions: to call didFailToFindString() if a search is not in
progress.
(-[WKPDFView _focusOnSearchResultWithOptions:]):
If -_computeFocusedSearchResultIndexWithOptions:didWrapAround: failed while a search is in
progress, just return early. Otherwise, call FindClient::didFailToFindString(). If
computing the index did not fail, call -[PDFHostViewController focusOnSearchResultAtIndex:]
to change focus and then call FindClient::didFindString() to inform the client.
(-[WKPDFView web_findString:options:maxCount:]):
If the find string is equal to _findString, change focus. Otherwise, start a new search.
(-[WKPDFView web_hideFindUI]):
Called -_resetFind.
(-[WKPDFView pdfHostViewController:findStringUpdate:done:]):
Stored the count in _findStringCount and called _findCompletion once the search is done.
2018-04-17 Filip Pizlo <fpizlo@apple.com>
The InternalFunction hierarchy should be in IsoSubspaces
https://bugs.webkit.org/show_bug.cgi?id=184721
Reviewed by Saam Barati.
* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
(WebKit::JSNPMethod::subspaceForImpl):
* WebProcess/Plugins/Netscape/JSNPMethod.h:
(WebKit::JSNPMethod::create): Deleted.
(WebKit::JSNPMethod::npIdentifier const): Deleted.
(WebKit::JSNPMethod::createStructure): Deleted.
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::JSNPObject::subspaceForImpl):
* WebProcess/Plugins/Netscape/JSNPObject.h:
(WebKit::JSNPObject::create): Deleted.
(WebKit::JSNPObject::npObject const): Deleted.
(WebKit::JSNPObject::createStructure): Deleted.
2018-04-19 Brady Eidson <beidson@apple.com>
Add globally-unique HistoryItem identifiers (and have WebKit2 adopt them).
<rdar://problem/39533949> and https://bugs.webkit.org/show_bug.cgi?id=184750
Reviewed by Ryosuke Niwa.
With process swapping, the assumption that "back/forward items belong to a process" is invalid.
All HistoryItem/WebBackForwardListItems now need to be uniquely identified across all processes,
no matter which process they originated from, so there will never be a collision in the UIProcess.
This allows us to:
- Have the UIProcess to keep a single process-wide map of all WebBackForwardListItems
- Get rid of the per-WebProcess WebBackForwardListItem map
- Simplify a lot of WebBackForwardList(Proxy) code that no longer needs to keep that per-process
map in sync
- Get rid of a lot of other ancillary code
* Shared/SessionState.cpp:
(WebKit::BackForwardListItemState::decode):
* Shared/SessionState.h:
* Shared/WebBackForwardListItem.cpp:
(WebKit::WebBackForwardListItem::WebBackForwardListItem):
(WebKit::WebBackForwardListItem::~WebBackForwardListItem):
(WebKit::WebBackForwardListItem::itemForID):
(WebKit::WebBackForwardListItem::highestUsedItemID): Deleted.
* Shared/WebBackForwardListItem.h:
(WebKit::WebBackForwardListItem::itemID const):
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::itemForID):
(WebKit::WebBackForwardList::pageClosed):
(WebKit::WebBackForwardList::addItem):
(WebKit::WebBackForwardList::restoreFromState):
(WebKit::generateWebBackForwardItemID): Deleted.
* UIProcess/WebBackForwardList.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::maybeCreateSuspendedPage):
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::willGoToBackForwardListItem):
(WebKit::WebPageProxy::restoreFromSessionState):
(WebKit::WebPageProxy::backForwardAddItem):
(WebKit::WebPageProxy::backForwardGoToItem):
(WebKit::WebPageProxy::backForwardItemAtIndex):
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::backForwardRemovedItem):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebProcessPool.cpp: Explicitly set the UIProcess Process::Identifier so it starts
at "1" and then the first child process starts at "2", etc etc.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::checkURLReceivedFromWebProcess):
(WebKit::WebProcessProxy::updateBackForwardItem):
(WebKit::WebProcessProxy::webBackForwardItem const): Deleted.
(WebKit::WebProcessProxy::registerNewWebBackForwardListItem): Deleted.
(WebKit::WebProcessProxy::removeBackForwardItem): Deleted.
(WebKit::WebProcessProxy::addOrUpdateBackForwardItem): Deleted.
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/WebCoreSupport/SessionStateConversion.cpp:
(WebKit::toBackForwardListItemState):
(WebKit::applyFrameState):
(WebKit::toHistoryItem):
(WebKit::toPageState): Deleted.
* WebProcess/WebCoreSupport/SessionStateConversion.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::shouldGoToHistoryItem const):
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::WebBackForwardListProxy::addItemFromUIProcess):
(WebKit::WK2NotifyHistoryItemChanged):
(WebKit::WebBackForwardListProxy::itemForID):
(WebKit::WebBackForwardListProxy::removeItem):
(WebKit::WebBackForwardListProxy::addItem): Previously this was a two-step process of adding an item
to the process and then associating it with the page. Now it's just directly adding it to the page,
so we don't need to call updateBackForwardItem first.
(WebKit::WebBackForwardListProxy::goToItem):
(WebKit::WebBackForwardListProxy::itemAtIndex):
(WebKit::WebBackForwardListProxy::close):
(WebKit::historyItemToIDMap): Deleted.
(WebKit::generateHistoryItemID): Deleted.
(WebKit::WebBackForwardListProxy::setHighestItemIDFromUIProcess): Deleted.
(WebKit::updateBackForwardItem): Deleted.
(WebKit::WebBackForwardListProxy::idForItem): Deleted.
* WebProcess/WebPage/WebBackForwardListProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
(WebKit::WebPage::goToBackForwardItem):
(WebKit::WebPage::restoreSessionInternal):
(WebKit::WebPage::didRemoveBackForwardItem):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2018-04-19 Youenn Fablet <youenn@apple.com>
NetworkProcess should use CSP/content blockers for sync XHR
https://bugs.webkit.org/show_bug.cgi?id=184760
Reviewed by Chris Dumez.
Setting CSP/ContentBlockers parameters for sync XHR loads.
* NetworkProcess/NetworkResourceLoader.cpp:
2018-04-19 Nan Wang <n_wang@apple.com>
AX: AOM: respect the accessibility setting for dispatching the accessible events
https://bugs.webkit.org/show_bug.cgi?id=184619
Reviewed by Ryosuke Niwa.
Linked libAccessibility on iOS and macOS to use the platform accessibility settings
for allowing dispatching the accessibility events.
* Configurations/WebKit.xcconfig:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(accessibilityEventsEnabledChangedCallback):
(-[WKWebView _updateAccessibilityEventsEnabled]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateAccessibilityEventsEnabled):
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateAccessibilityEventsEnabled):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2018-04-18 Chris Dumez <cdumez@apple.com>
Rename WindowProxyController to WindowProxy
https://bugs.webkit.org/show_bug.cgi?id=184756
Reviewed by Sam Weinig.
Rename WindowProxyController to WindowProxy for clarity. When the IDL uses WindowProxy, the implementation
needed use WindowProxyController type, which was a bit confusing.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::windowScriptNPObject):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::frameBecameRemote):
2018-04-18 Youenn Fablet <youenn@apple.com>
Allow SameOrigin credentials handling for synchronous XHR
https://bugs.webkit.org/show_bug.cgi?id=184723
Reviewed by Alex Christensen.
In case of SameOrigin credentials, we need to stop the current load
in case of cross origin redirection to restart a load with a different session.
Covered by updated WK2 tests.
Rebased WK1 tests since this is Wk1 only.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
* NetworkProcess/NetworkResourceLoader.h:
2018-04-18 Chris Dumez <cdumez@apple.com>
Set RemoteDOMWindow's initial opener
https://bugs.webkit.org/show_bug.cgi?id=184716
Reviewed by Sam Weinig.
When a frame becomes remote, transfer the frame opener from the old
frame to the new remote one.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::frameBecameRemote):
2018-04-18 Youenn Fablet <youenn@apple.com>
NetworkResourceLoader should not clean itself inside didReceiveResponse
https://bugs.webkit.org/show_bug.cgi?id=184754
Reviewed by Chris Dumez.
Delay the cleanup to after the didReceiveResponse call so that NetworkLoad can terminate its work.
Covered by XHR sync tests no longer crashing on GuardMalloc bots.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didReceiveResponse):
2018-04-18 Jer Noble <jer.noble@apple.com>
Fix rendering of WKRemoteView layers in the simulator
https://bugs.webkit.org/show_bug.cgi?id=184752
Reviewed by Tim Horton.
* Platform/mac/LayerHostingContext.mm:
(WebKit::LayerHostingContext::createForExternalHostingProcess):
2018-04-18 Jer Noble <jer.noble@apple.com>
Fix entitlements and sandboxing for iphoneminimalsimulator
https://bugs.webkit.org/show_bug.cgi?id=184692
Reviewed by Tim Horton.
Use the correct implementations for ChildProcess and NetworkProcess
when building for iphoneminimalsimulator. Stub out imlementations
which rely on methods not available in the iphoneminimalsimulator SDK.
* Configurations/Network-OSX.entitlements: Added.
* Configurations/NetworkService.xcconfig:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::sourceApplicationAuditData const):
* NetworkProcess/ios/NetworkProcessIOS.mm:
* NetworkProcess/mac/NetworkProcessMac.mm:
(WebKit::NetworkProcess::initializeProcessName):
(WebKit::overrideSystemProxies):
* Shared/ios/ChildProcessIOS.mm:
(WebKit::ChildProcess::initializeSandbox):
* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::setApplicationIsDaemon):
(WebKit::enableSandboxStyleFileQuarantine):
(WebKit::ChildProcess::initializeSandbox):
(WebKit::ChildProcess::platformStopRunLoop):
* Shared/mac/CodeSigning.mm:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::initializeSandbox):
2018-04-18 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r230743.
https://bugs.webkit.org/show_bug.cgi?id=184747
causes mouse clicks to not work on some platforms (Requested
by brrian on #webkit).
Reverted changeset:
"Web Automation: simulated mouse interactions should not be
done until associated DOM events have been dispatched"
https://bugs.webkit.org/show_bug.cgi?id=184462
https://trac.webkit.org/changeset/230743
2018-04-18 Brent Fulgham <bfulgham@apple.com>
Avoid crash if ITP Debug mode is on, but ResourceLoadStatistics are not being used
https://bugs.webkit.org/show_bug.cgi?id=184739
<rdar://problem/39287964>
Reviewed by David Kilzer.
If a user has the ResourceLoadStatistics logic turned off, but has the ITP Debug experimental
flag turned on, you can cause a crash.
This is because the WebsiteDataStore for the process doesn't bother creating a ResourceLoadStatisticsStore
if the statistics machinery is not running. The ITP debug flag was being blindly set without checking
if the statistics store exists or not, which can cause a crash.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::setResourceLoadStatisticsDebugMode): Check if the statistics store exists
before calling functions on it.
2018-04-18 Paul Knight <pknight@apple.com>
Add -[_WKInputDelegateDelegate willStartInputSession:] for clients that want to configure input session before assisting form node
https://bugs.webkit.org/show_bug.cgi?id=184662
Reviewed by Beth Dakin.
Clients may wish to configure a WKInputSession before we start assisting
a node. Add a -[_WKInputDelegateDelegate _webView:willStartInputSession:]
callback.
For example, clients that wish to present a custom input view will want
to configure the WKFormInputSession's customInputView before the
keyboard is presented. Otherwise the standard keyboard will begin to
animate and then the custom input view will swap in later.
* UIProcess/API/Cocoa/_WKInputDelegate.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
Call -_webView:willStartInputSession: before assisting the node.
Only create the form session if the delegate implements either
the willStart or didStartInputSession callbacks.
2018-04-18 Chris Dumez <cdumez@apple.com>
Add support for converting a local window to a remote window
https://bugs.webkit.org/show_bug.cgi?id=184515
<rdar://problem/39011318>
Reviewed by Ryosuke Niwa.
Add initial support for process-swapping when navigating cross-origin as a result
of a window.open(). The window object returned by window.open() is initially same
origin and is for about:blank. The navigation cross-origin then happens and the
JS wrappers for the window then point to a cross-origin window which is remote (i.e.
hosted in another WebProcess).
The RemoteDOMWindow exposed to JS looks like a regular cross-origin Window with a few
exceptions due to our incomplete implementation (e.g. w.location returns null) and
most of its API is currently not functional. The RemoteDOMWindow API will be implemented
in a follow-up by relying on IPC.
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationProcessSwapsOnWindowOpenWithOpener):
(WKContextConfigurationSetProcessSwapsOnWindowOpenWithOpener):
* UIProcess/API/C/WKContextConfigurationRef.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration setProcessSwapsOnWindowOpenWithOpener:]):
(-[_WKProcessPoolConfiguration processSwapsOnWindowOpenWithOpener]):
Add ProcessPool configuration flag to turn on processSwap on window.open(), even
if there is an opener.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::continueNavigationInNewProcess):
If the navigation was triggered via window.open(), then set up on handler for when
a DOMWindow is constructed for the main frame in the new process.
(WebKit::WebPageProxy::didCreateWindow):
When a Window is constructed for the main frame in a new process on process swap,
notify the old process that its representation of the window should become remote
and provide it with the Frame / Window identifiers it needs.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation):
Do process swapping on cross-origin window.open() if the corresponding setting is
enabled.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::didCreateWindow):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::frameBecameRemote):
This is called when process swapping has happened due to a window.open() navigation
cross-origin, when a Frame / Window has been constructed in the new process. We do
the following:
- Construct a RemoteFrame / RemoteWindow using the provided global identifiers to
represent the Frame / Window in the new process.
- We transfer the WindowProxies from the old Frame's WindowProxyController to the
new RemoteFrame's WindowProxyController.
- We update the window proxied by those WindowProxies to be the new RemoteWindow.
- We detach the old Frame as it is now remote and represented by the new RemoteFrame
object we constructed.
- If the old frame was the main frame (always the case currently), we close the page
as it is no longer needed. The new RemoteFrame is currently owned by the RemoteWindow
which is kept alive by its JS wrappers.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2018-04-18 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.21.1 release.
* gtk/NEWS: Add release notes for 2.21.1.
2018-04-18 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Remove symbols from webkitglib-symbols.map.
Remove symbols not present in WebKit.
* webkitglib-symbols.map:
2018-04-18 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Add missing symbols to webkitglib-symbols.map.
Add symbols global in JSC and present in WebKit.
* webkitglib-symbols.map:
2018-04-18 Fujii Hironori <Hironori.Fujii@sony.com>
[Win][WebKit] Implement InjectedBundleWin.cpp
https://bugs.webkit.org/show_bug.cgi?id=184525
Reviewed by Konstantin Tokarev.
* WebProcess/InjectedBundle/win/InjectedBundleWin.cpp:
(WebKit::InjectedBundle::initialize):
2018-04-17 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Programmatically changing focus when an element already has focus is a confusing experience
https://bugs.webkit.org/show_bug.cgi?id=184635
<rdar://problem/39440642>
Reviewed by Tim Horton.
Currently on iOS, we allow element focus to present UI if the keyboard is already shown. In extra zoom mode,
this would lead to a confusing experience when the focus form control overlay is disabled, since fullscreen
input view controllers are swapped out from underneath the user. Currently, this also puts the UI process into a
bad state where the focused form control overlay is active, but still hidden. This patch makes some tweaks to
input view controller handling in the UI process to address these issues, and also adds WebKitTestRunner support
for simulating interactions with select menus in extra zoom mode. See comments below for more detail.
Test: fast/events/extrazoom/change-focus-during-change-event.html
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
Add new SPI delegate hooks to notify the UI delegate when view controllers are presented or dismissed in extra
zoom mode. See -presentViewControllerForCurrentAssistedNode and -dismissAllInputViewControllers.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::takeBackgroundActivityTokenForFullscreenInput):
(WebKit::WebProcessProxy::releaseBackgroundActivityTokenForFullscreenInput):
See the comment below -dismissAllInputViewControllers.
* UIProcess/WebProcessProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
In extra zoom mode, when changing focus from one assisted node to another, only allow the second node to be
assisted if the focused form control overlay is being shown. Otherwise, (i.e. when a fullscreen input view
controller is being presented), don't allow focus to start an input session.
Additionally, make a minor tweak to allow the previous node to blur, even if we are not showing the keyboard for
the new focused element. Without this adjustment, in the case where the page has programmatically focused
another element while a fullscreen input view controller is presented, we'll show the old view controller for
the new focused element.
(-[WKContentView presentViewControllerForCurrentAssistedNode]):
(-[WKContentView dismissAllInputViewControllers:]):
Currently, when a fullscreen input view controller is presented, the web process gets backgrounded. This
prevents event handlers from executing, which leads to strange behaviors in many cases (for instance: if we
have a multiple select, and the "change" event handler blurs the select, the user may check or uncheck multiple
items, but only the first change will actually take effect).
To fix this, we maintain a background activity token while presenting an input view controller.
(-[WKContentView focusedFormControlViewDidBeginEditing:]):
Start hiding the focused form overlay when re-presenting an input view controller. This allows us to bail from
showing fullscreen input UI for another focused element if focus programmatically changes while the current
fullscreen input view controller is presented, due to the -isHidden check in -_startAssistingNode:.
(-[WKContentView selectFormAccessoryPickerRow:]):
Simulate tapping a given row in select menu UI in extra zoom mode.
2018-04-17 Conrad Shultz <conrad_shultz@apple.com>
WebKit::DisplayLink maintains a strong reference to WebPageProxy, creating a reference cycle
https://bugs.webkit.org/show_bug.cgi?id=184718
Reviewed by Tim Horton.
It turns out that the m_webPageProxy back-reference in DisplayLink, which was creating a
reference cycle, wasn't ever read, so we can just remove it.
* UIProcess/mac/DisplayLink.cpp:
(WebKit::DisplayLink::DisplayLink):
* UIProcess/mac/DisplayLink.h:
2018-04-17 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Double tap to zoom should account for text legibility in extra zoom mode
https://bugs.webkit.org/show_bug.cgi?id=184631
<rdar://problem/39303706>
Reviewed by Tim Horton.
Implement the text legibility heuristic alluded to in r230506 by iterating through text runs in the document (up
to a maximum of 200) and building a histogram of font sizes that appear in the document, where each tally
represents a character.
The first and second text legibility zoom scales are then computed based on the zoom scales needed to
make 50% and 90% of the text legible, respectively. Here, a zoom scale that makes text legible is such that the
text would have an apparent font size of a hard-coded constant (currently, 12) after zooming. This means the
first and second text legibility scales may end up being close to one another, or even the same (in the case
where there is only a single font size in the entire document). In this case, we just snap the first scale to
the second, so that double tapping will only toggle between two zoom scales. In another case where the document
has no text (e.g. an image document), we just fall back to a zoom scale of 1.
Test: fast/events/extrazoom/double-tap-to-zoom-on-full-width-text.html
* WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
(WebKit::ViewGestureGeometryCollector::computeTextLegibilityScales):
2018-04-17 Megan Gardner <megan_gardner@apple.com>
Don't activate selection on become first responder
https://bugs.webkit.org/show_bug.cgi?id=184719
Reviewed by Tim Horton.
If we activate the selection immediately on becoming first responder, we cause the selection view to delete itself
since it is not guaranteed to have selection rects immediately due to async/two process architecture. The selection
is activated already when the selection rects change, so there is no reason to activate it now. This has likely worked
in the past because this selection assistant was only for editable text, which would immediately set a caret, which
is a selection. Now that this is for non-editable text as well, activating the selection is problematic.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView becomeFirstResponderForWebView]):
2018-04-11 Brian Burg <bburg@apple.com>
Web Automation: simulated mouse interactions should not be done until associated DOM events have been dispatched
https://bugs.webkit.org/show_bug.cgi?id=184462
<rdar://problem/39323336>
Reviewed by Carlos Garcia Campos and Tim Horton.
Covered by existing layout tests and actions endpoints in WebDriver test suite.
In preparation for implementing the W3C WebDriver command "Perform Actions", we need a way to
know when a simulated mouse event has been fully processed by WebProcess and it is okay to continue
to dispatch more simulated events.
This patch makes mouse events go through a queue as they are delivered to WebPageProxy. The approach
is very similar to how key events are handled. In the key event case, lots of WebEvents can come out
of typing one keystroke, so these need to be queued up and retired one by one when the WebProcess has
finished handling each event. In some mouse event cases---particularly fake mouse moves---there can
also be more than one mouse event waiting to be handled by WebProcess.
In the past, these queued mouse events were tracked with several member variables as different
use cases emerged. These are all replaced with ordinary deque operations, such as peeking or
checking the queue length.
* Platform/Logging.h: Add logging channel for mouse events.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::AutomationCommandError::toProtocolString): Add type-safe helper class for command errors.
In future patches we can hide knowledge of how this is sent over the protocol by relying more on
the convenience constructors and .toProtocolString() method.
(WebKit::WebAutomationSession::willShowJavaScriptDialog):
This section needs adjustments. Since performMouseInteraction now depends on key events being processed
prior to returning from the command, we need to abort any key event callbacks that are pending if an
alert pops up as a result of sending a mousedown event. Any mouse events that are still queued will
be handled when the alert is dismissed and the nested run loop exits.
(WebKit::WebAutomationSession::mouseEventsFlushedForPage):
(WebKit::WebAutomationSession::keyboardEventsFlushedForPage):
Modernize this a bit. Don't spread knowledge about how commands are sent back out into event handling code.
Our wrapper callbacks in performXXXInteraction handle the protocol-specific details of the response.
(WebKit::WebAutomationSession::performMouseInteraction):
Add code similar to performKeyboardInteractions so that the command doesn't finish until the mouse
event has been fully handled. Unlike keyboards, sometimes mouse interactions don't turn into WebEvents
so we also need to handle the case where there is nothing to be waited on because hit testing did
not return a target to deliver the event to.
(WebKit::WebAutomationSession::performKeyboardInteractions):
Modernize a little bit to use generic callbacks rather than protocol-generated callbacks in the
event waiting/handling code. Now it matches the types used for the mouse event case.
* UIProcess/Automation/WebAutomationSession.h:
(WebKit::AutomationCommandError::AutomationCommandError):
Add a helper struct to hold an enumerated error name and an optional free-form error message.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::webMouseEventTypeString):
(WebKit::webKeyboardEventTypeString):
(WebKit::WebPageProxy::handleMouseEvent):
(WebKit::WebPageProxy::processNextQueuedMouseEvent):
Split the old method into handleMouseEvent (called by other code) and processNextQueuedMouseEvent.
The latter sends the next mouse event to WebProcess, and can be triggered in didReceiveEvent
if there are more mouse events to be sent to WebProcess.
(WebKit::WebPageProxy::isProcessingMouseEvents const): Added.
(WebKit::WebPageProxy::currentlyProcessedMouseDownEvent): Reimplemented on top of the deque.
(WebKit::WebPageProxy::didReceiveEvent):
Unify the code paths for different mouse event types to all use the deque. They also will
notify the automation session if there are no more mouse events to send (i.e., interaction is over).
(WebKit::WebPageProxy::resetStateAfterProcessExited): Add handling for new map.
2018-04-17 Adrian Perez de Castro <aperez@igalia.com>
[GTK][WPE] Build failure due to presence of Avahi's <dns_sd.h> header
https://bugs.webkit.org/show_bug.cgi?id=184711
Unreviewed build fix.
* NetworkProcess/webrtc/NetworkMDNSRegister.h: Set ENABLE_MDNS only for PLATFORM(COCOA).
2018-04-17 Jonathan Bedard <jbedard@apple.com>
Unreviewed rollout of r230632. Regression in memory usage.
That bug tracked in https://bugs.webkit.org/show_bug.cgi?id=184569.
* Shared/WebPreferences.yaml:
2018-04-17 Timothy Hatcher <timothy@apple.com>
Always use LayerContentsType::IOSurface in minimal simulator mode
https://bugs.webkit.org/show_bug.cgi?id=184710
Reviewed by Simon Fraser.
* UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::updateLayerTree):
2018-04-17 Ryosuke Niwa <rniwa@webkit.org>
Release assert in InjectedBundle::postSynchronousMessage
https://bugs.webkit.org/show_bug.cgi?id=184683
Reviewed by Wenson Hsieh.
Some injected bundles sends sync message when it's not safe to execute scripts.
Use DoNotProcessIncomingMessagesWhenWaitingForSyncReply option in InjectedBundle::postSynchronousMessage
to avoid processing incoming sync IPC messages so that we don't execute arbitrary scripts in those cases.
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::postSynchronousMessage):
2018-04-17 Chris Dumez <cdumez@apple.com>
REGRESSION (r229831): CMD-clicking an iCloud web app link unexpectedly opens that link in a new tab and the current tab
https://bugs.webkit.org/show_bug.cgi?id=184678
<rdar://problem/39422122>
Reviewed by Alex Christensen.
Re-introduce synchronous code path which existed pre-r229831 and use it for fragment navigations.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
2018-04-17 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE][GTK] GObject introspection annotation fixes: BackForwardList, NetworkProxySettings
https://bugs.webkit.org/show_bug.cgi?id=184658
Reviewed by Carlos Garcia Campos.
Thanks to Dylan Simon for recommending these annotation fixes.
* UIProcess/API/glib/WebKitBackForwardList.cpp:
* UIProcess/API/glib/WebKitNetworkProxySettings.cpp:
2018-04-17 Brent Fulgham <bfulgham@apple.com>
[macOS] Don't establish unneeded Dock connections (Follow-up)
https://bugs.webkit.org/show_bug.cgi?id=184664
<rdar://problem/16863698>
Reviewed by Per Arne Vollan.
Because the Plugin process is driven by NSApplication's run loop, we aren't
setting the 'don't connect to the dock' setting early enough.
This patch sets the flag in XPCServiceMain for those services that
are linked to AppKit.
* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::PluginProcess::platformInitializeProcess): Remove unneeded code.
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.mm:
(main):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess): Remove unneeded code.
2018-04-17 Saam Barati <sbarati@apple.com>
Add system trace points for process launch and for initializeWebProcess
https://bugs.webkit.org/show_bug.cgi?id=184669
Reviewed by Simon Fraser.
* UIProcess/Launcher/ProcessLauncher.cpp:
(WebKit::ProcessLauncher::ProcessLauncher):
(WebKit::ProcessLauncher::didFinishLaunchingProcess):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
2018-04-16 Timothy Hatcher <timothy@apple.com>
Unreviewed 32-bit build fix for r230673.
https://bugs.webkit.org/show_bug.cgi?id=184657
rdar://problem/39463307
* Configurations/PluginProcessShim.xcconfig: Use the correct names.
2018-04-16 Andy Estes <aestes@apple.com>
[iOS] Enable WKPDFView by default
https://bugs.webkit.org/show_bug.cgi?id=184675
<rdar://problem/27885452>
Reviewed by Darin Adler.
* UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
(-[WKWebViewContentProviderRegistry init]):
2018-04-16 Brent Fulgham <bfulgham@apple.com>
[macOS] Don't establish unneeded Dock connections
https://bugs.webkit.org/show_bug.cgi?id=184664
<rdar://problem/16863698>
Reviewed by Simon Fraser.
There is no reason for the WebContent or Plugin processes to interact with
the Dock. We should tell AppKit that we don't want this connection, and to
avoid creating such connections.
* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::PluginProcess::platformInitializeProcess): Tell NSApplication to
not create a Dock connection.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess): Ditto.
2018-04-16 Megan Gardner <megan_gardner@apple.com>
Switch to UIWKTextInteractionAssistant for non-editable text
https://bugs.webkit.org/show_bug.cgi?id=182834
Reviewed by Beth Dakin.
Switch to only using one assistant for text selection.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView useSelectionAssistantWithGranularity:]):
2018-04-16 Youenn Fablet <youenn@apple.com>
Use NetworkLoadChecker to handle synchronous HTTP loads
https://bugs.webkit.org/show_bug.cgi?id=184240
Reviewed by Chris Dumez.
For every NetworkResourceLoader synchronous load, we create a NetworkLoadChecker.
NetworkLoadChecker handles all security checks in that case.
This allows supporting cross-origin loads for synchronous XHR.
Updated NetworkCORSPreflightChecker to return the result as a ResourceError.
This is used to convey any error message from NetworkProcess to the JS console.
Ensure NetworkCORSPreflightChecker computes correctly Access-Control-Request-Headers value
by providing the headers set by the application plus Referrer/Origin.
* NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::~NetworkCORSPreflightChecker):
(WebKit::NetworkCORSPreflightChecker::willPerformHTTPRedirection):
(WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
(WebKit::NetworkCORSPreflightChecker::didCompleteWithError):
(WebKit::NetworkCORSPreflightChecker::wasBlocked):
(WebKit::NetworkCORSPreflightChecker::cannotShowURL):
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::NetworkResourceLoader):
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
(WebKit::NetworkResourceLoader::validateCacheEntry):
* NetworkProcess/NetworkResourceLoader.h:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
* WebProcess/Network/WebLoaderStrategy.h:
2018-04-16 Brian Burg <bburg@apple.com>
[Cocoa] Web Automation: add SPI to terminate automation session and disconnect the remote end
https://bugs.webkit.org/show_bug.cgi?id=184523
<rdar://problem/39368599>
Reviewed by Simon Fraser.
When a user breaks the automation glass pane and chooses "Stop Session", there is no way
for Safari to actually disconnect the remote connection using automation-related ObjC SPI.
This can lead to sessions getting stuck and safaridriver is unable to request a new session.
Expose the -terminate method as SPI. This disconnects the remote connection and then notifies
the session delegate that the remote disconnected. At that point, Safari can uninstall
the session from the process pool and tear down other session state.
* UIProcess/API/Cocoa/_WKAutomationSession.h:
* UIProcess/API/Cocoa/_WKAutomationSession.mm:
(-[_WKAutomationSession terminate]):
2018-04-16 Timothy Hatcher <timothy@apple.com>
Clean up OTHER_LDFLAGS for WebKit processes
https://bugs.webkit.org/show_bug.cgi?id=184657
Reviewed by Jer Noble.
* Configurations/PluginProcessShim.xcconfig:
* Configurations/PluginService.32.xcconfig:
* Configurations/PluginService.64.xcconfig:
* Configurations/WebContentService.xcconfig:
2018-04-15 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE] Install files needed for WebKitWebExtensions
https://bugs.webkit.org/show_bug.cgi?id=179915
Reviewed by Žan Doberšek.
* PlatformWPE.cmake: Install pkg-config file, injected bundle, and API headers.
* UIProcess/API/glib/WebKitWebContext.cpp: Load the injected bundle when installed.
* wpe/wpe-web-extension.pc.in: Added.
2018-04-14 Carlos Eduardo Ramalho <cadubentzen@gmail.com>
[GTK][WPE] Build is broken after r230640
https://bugs.webkit.org/show_bug.cgi?id=184623
Reviewed by Žan Doberšek.
UIProcess/SuspendedPageProxy.cpp was not included to CMake build in r230640.
* CMakeLists.txt: Added UIProcess/SuspendedPageProxy.cpp to WebKit_SOURCES.
2018-04-13 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r230447.
Caused flaky selection test failures on iOS
Reverted changeset:
"Switch to UIWKTextInteractionAssistant for non-editable text"
https://bugs.webkit.org/show_bug.cgi?id=182834
https://trac.webkit.org/changeset/230447
2018-04-13 Chris Dumez <cdumez@apple.com>
Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame
https://bugs.webkit.org/show_bug.cgi?id=184591
Reviewed by Sam Weinig.
Split WindowProxy handling out of ScriptController and into a new class owned by AbstractFrame.
RemoteFrames do not need a ScriptController but do need to maintain WindowProxies.
This is work towards fixing Bug 184515.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::windowScriptNPObject):
2018-04-13 Brady Eidson <beidson@apple.com>
Introduce SuspendedPageProxy to keep old web processes around after their WebPageProxy has been swapped to a new one.
https://bugs.webkit.org/show_bug.cgi?id=184559
Reviewed by Alex Christensen.
Before this patch, when a WebPageProxy navigates and is swapped to a new process, the old process almost always goes away.
This is not desirable for a few reasons:
1 - We can't keep the PageCache working for back/forward scenarios
2 - We throw away a "foo.com" web process, meaning the next time we need to host a "foo.com" web page we have to launch
and initialize a new web process.
This patch adds a SuspendedPageProxy object to keep around the old web process and to manage communication with it.
For now, a WebPageProxy keeps exactly one "suspended page" representing the most recently visited page and its process.
Additionally, that process is never reused.
So no benefit is achieved with this patch, but it enables future benefits.
* Platform/Logging.h:
* Shared/WebBackForwardListItem.cpp:
(WebKit::WebBackForwardListItem::setSuspendedPage):
* Shared/WebBackForwardListItem.h:
New object to represent the state of a WebPageProxy in an old web process that is not currently hosting the view.
* UIProcess/SuspendedPageProxy.cpp: Added.
(WebKit::SuspendedPageProxy::SuspendedPageProxy):
(WebKit::SuspendedPageProxy::~SuspendedPageProxy):
(WebKit::SuspendedPageProxy::webProcessDidClose):
(WebKit::SuspendedPageProxy::didFinishLoad):
(WebKit::SuspendedPageProxy::didReceiveMessage):
(WebKit::SuspendedPageProxy::loggingString const):
* UIProcess/SuspendedPageProxy.h: Copied from Source/WebKit/Platform/Logging.h.
(WebKit::SuspendedPageProxy::create):
(WebKit::SuspendedPageProxy::page const):
(WebKit::SuspendedPageProxy::process const):
(WebKit::SuspendedPageProxy::item const):
(WebKit::SuspendedPageProxy::finishedSuspending const):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::attachToProcessForNavigation):
(WebKit::WebPageProxy::maybeCreateSuspendedPage):
(WebKit::WebPageProxy::suspendedPageProcessClosed):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::didFinishLoadForFrame):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::suspendWebPageProxy):
(WebKit::WebProcessProxy::suspendedPageWasDestroyed):
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::didReceiveMessage): Optionally pass WebPageProxy messages along to SuspendedPageProxy objects.
(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::maybeShutDown):
(WebKit::WebProcessProxy::canTerminateChildProcess): Don't terminate child processes if they still have suspended pages.
* UIProcess/WebProcessProxy.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setIsSuspended):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::isSuspended const): For now, used only by WebProcess::updateActivePages. Will have more uses soon.
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::updateActivePages): Allow the UIProcess to request an update of the web processes user visible name.
2018-04-13 Daniel Bates <dabates@apple.com>
Inline NetworkLoad::sharedWillSendRedirectedRequest() into NetworkLoad::willPerformHTTPRedirection()
https://bugs.webkit.org/show_bug.cgi?id=184593
Reviewed by Alex Christensen.
Following the removal of the pre-Network Session code in r227364, NetworkLoad::sharedWillSendRedirectedRequest()
is only referenced from NetworkLoad::willPerformHTTPRedirection(). We should inline its
implementation into the NetworkLoad::willPerformHTTPRedirection(), remove a function call,
and the cognitive load to follow such a function call when reading the code.
No functionality changed. So, no new tests.
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::willPerformHTTPRedirection): Moved the implementation of NetworkLoad::sharedWillSendRedirectedRequest()
into this function.
(WebKit::NetworkLoad::sharedWillSendRedirectedRequest): Deleted. Moved its implementation
into NetworkLoad::willPerformHTTPRedirection().
* NetworkProcess/NetworkLoad.h:
2018-04-13 Daniel Bates <dabates@apple.com>
Inline NetworkLoad::sharedDidReceiveResponse() into NetworkLoad::notifyDidReceiveResponse()
https://bugs.webkit.org/show_bug.cgi?id=184592
Reviewed by Alex Christensen.
Following the removal of the pre-Network Session code in r227364, NetworkLoad::sharedDidReceiveResponse()
is only referenced from NetworkLoad::notifyDidReceiveResponse(). We should inline its
implementation into the NetworkLoad::notifyDidReceiveResponse(), remove a function
call, and the cognitive load to follow such a function call when reading the code.
No functionality changed. So, no new tests.
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::notifyDidReceiveResponse): Moved the implementation of NetworkLoad::sharedDidReceiveResponse()
into this function.
(WebKit::NetworkLoad::sharedDidReceiveResponse): Deleted. Moved its implementation into
NetworkLoad::notifyDidReceiveResponse().
* NetworkProcess/NetworkLoad.h:
2018-04-13 Brent Fulgham <bfulgham@apple.com>
REGRESSION(r230468): Improper assertion firing under STP
<rdar://problem/39411676>
Unreviewed, rolling out an improper assertion.
I added an assertion in Bug 184322 that should not have been added. I did not notice that this
call stack was always used in builds where NSApp is still active. Builds where we stop relying
on AppKit runloops uses a different code path to shut down.
* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::stopNSAppRunLoop):
2018-04-12 Antoine Quint <graouts@apple.com>
[Web Animations] Turn CSS Animations and CSS Transitions as Web Animations on by default
https://bugs.webkit.org/show_bug.cgi?id=184569
<rdar://problem/38671301>
Reviewed by Jon Lee.
* Shared/WebPreferences.yaml:
2018-04-13 Xabier Rodriguez Calvar <calvaris@igalia.com>
[GStreamer] Convert GStreamerUtilities in GStreamerCommon and include the GStreamer smart pointer traits
https://bugs.webkit.org/show_bug.cgi?id=184533
Reviewed by Philippe Normand.
Renamed GStreamerUtilities* files into GStreamerCommon* and
modified files including them accordingly. Include
GRefPtrGStreamer.h and GUniquePtrGStreamer.h in GStreamerCommon.h
to avoid problems destroying objects when those files are
forgotten to be included.
* UIProcess/gtk/WebProcessPoolGtk.cpp:
* UIProcess/wpe/WebProcessPoolWPE.cpp:
* WebProcess/soup/WebProcessSoup.cpp:
2018-04-12 Beth Dakin <bdakin@apple.com>
Fix the MOBILE_WIFI build
https://bugs.webkit.org/show_bug.cgi?id=184571
-and corresponding-
<rdar://problem/39398181>
Reviewed by Jer Noble.
* config.h:
2018-04-12 Beth Dakin <bdakin@apple.com>
Use -iframework to ensure that frameworks from user paths and system paths are
ordered appropriately
https://bugs.webkit.org/show_bug.cgi?id=184557
-and corresponding-
rdar://problem/39386359
Reviewed by Dean Jackson.
* Configurations/WebKit.xcconfig:
2018-04-12 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Suppress UI for inputs of type file in extra zoom mode
https://bugs.webkit.org/show_bug.cgi?id=184556
<rdar://problem/39062239>
Reviewed by Andy Estes.
When running in this mode, we don't have the facilities to present document picker UI. For now, just make this
feature fail gracefully.
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel presentWithParameters:resultListener:]):
(-[WKFileUploadPanel platformSupportsPickerViewController]):
2018-04-12 Megan Gardner <megan_gardner@apple.com>
Remove block selection code
https://bugs.webkit.org/show_bug.cgi?id=184470
Reviewed by Timothy Hatcher.
Remove block selection code that isn't run and is currently not even used.
Had to put this back in for a bug in the mid-year release, but we're past that
so it's time for this to go away.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::stopAssistingNode):
(WebKit::PageClientImpl::didUpdateBlockSelectionWithTouch): Deleted.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(toSelectionHandlePosition): Deleted.
(-[WKContentView _didUpdateBlockSelectionWithTouch:withFlags:growThreshold:shrinkThreshold:]): Deleted.
(-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:]): Deleted.
(-[WKContentView changeBlockSelectionWithTouchAt:withSelectionTouch:forHandle:]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::saveImageToLibrary):
(WebKit::WebPageProxy::updateBlockSelectionWithTouch): Deleted.
(WebKit::WebPageProxy::didUpdateBlockSelectionWithTouch): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::rangeAtWordBoundaryForPosition):
(WebKit::distanceBetweenRectsForPosition): Deleted.
(WebKit::rectsEssentiallyTheSame): Deleted.
(WebKit::unionDOMRanges): Deleted.
(WebKit::computeEdgeCenter): Deleted.
(WebKit::WebPage::expandedRangeFromHandle): Deleted.
(WebKit::WebPage::contractedRangeFromHandle): Deleted.
(WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle): Deleted.
(WebKit::WebPage::rangeForBlockAtPoint): Deleted.
(WebKit::shouldExpand): Deleted.
(WebKit::WebPage::changeBlockSelection): Deleted.
(WebKit::WebPage::updateBlockSelectionWithTouch): Deleted.
2018-04-12 Megan Gardner <megan_gardner@apple.com>
Don't have selections get stuck in editable elements
https://bugs.webkit.org/show_bug.cgi?id=184483
Reviewed by Timothy Hatcher.
When selecting in editable elements, if the keyboard does not come up, which is not required,
then the selections are stuck in that element. If you try and select something in web content,
it will only select in the editable element. By clearing the assisted node when clearing a selection,
it no longer sticks. Also, textSelectionAssistant should not be used as if we are currently editing.
Change it to the function we created for that purpose in a pervious patch.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView clearSelection]):
(-[WKContentView _isInteractingWithAssistedNode]):
2018-04-12 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE] Move libWPEWebInspectorResources.so to pkglibdir
https://bugs.webkit.org/show_bug.cgi?id=184379
Reviewed by Žan Doberšek.
This is important to allow parallel installation.
* PlatformWPE.cmake:
2018-04-12 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE] Improve include hierarchy
https://bugs.webkit.org/show_bug.cgi?id=184376
Reviewed by Žan Doberšek.
Install our headers under /usr/include/wpe-webkit-0.1/wpe instead of
/usr/include/wpe-0.1/WPE/wpe. Too much WPE, not enough WebKit!
* PlatformWPE.cmake:
* wpe/wpe-webkit.pc.in:
2018-04-11 Andy Estes <aestes@apple.com>
[iOS] Add a mechanism for holding Wi-Fi assertions
https://bugs.webkit.org/show_bug.cgi?id=184520
<rdar://problem/39025726>
Reviewed by Sam Weinig.
Add plumbing for holding a Wi-Fi assertion on iOS as long as there are active
network data tasks. This functionality is turned off by default right now.
* Configurations/Network-iOS.entitlements:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
* NetworkProcess/cocoa/WiFiAssertionHolder.cpp: Added.
(WebKit::ensureWiFiManagerClient): Create a global WiFiManagerClient when needed.
(WebKit::WiFiAssertionHolder::WiFiAssertionHolder): If this is the first active
Wi-Fi assertion holder, set the client's type to kWiFiClientTypeBackground.
(WebKit::WiFiAssertionHolder::~WiFiAssertionHolder): If the last active Wi-Fi
assertion holder is being destroyed, set the client's type back to
kWiFiClientTypeNormal.
* NetworkProcess/cocoa/WiFiAssertionHolder.h: Added.
* Platform/Logging.h: Added a logging channel for Wi-Fi assertions.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
* WebKit.xcodeproj/project.pbxproj:
2018-04-12 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Switch to use always complex text code path
https://bugs.webkit.org/show_bug.cgi?id=183285
Reviewed by Michael Catanzaro.
Now that we have branched for 2.20, it's a good time to try using complex text path always. We can simply force
it for GTK+ port and see how it works for the whole release cycle and if we don't notice any issues or
performance regressions we release 2.22 with complex text path forced. A debug env variable is added to switch
back to auto without having to recompile. After 2.22 is released we can make a final decision and remove the env
variable.
* UIProcess/gtk/WebProcessPoolGtk.cpp:
(WebKit::WebProcessPool::platformInitializeWebProcess): Force complex text code path unless
WEBKIT_FORCE_COMPLEX_TEXT is present and set to 0.
2018-04-11 Zan Dobersek <zdobersek@igalia.com>
[WPE] Make WebKitWebViewBackend object mandatory for webkit_web_view_new*() constructors
https://bugs.webkit.org/show_bug.cgi?id=184513
Reviewed by Michael Catanzaro.
webkit_web_view_new*() constructors should always expect a non-null
WebKitWebViewBackend object, forcing the user to specify how the
wpe_view_backend object is managed for the WebKitWebView that's being
created.
webkitWebViewBackendCreateDefault() and the default
_WebKitWebViewBackend() constructor are removed. WPE-specific
webkit_web_view_new*() entrypoints are updated to bail if the passed-in
WebKitWebViewBackend object is null. Documentation is updated
accordingly.
* UIProcess/API/glib/WebKitWebView.cpp:
(webkitWebViewConstructed):
* UIProcess/API/wpe/WebKitWebViewBackend.cpp:
(webkitWebViewBackendCreateDefault): Deleted.
* UIProcess/API/wpe/WebKitWebViewBackendPrivate.h:
* UIProcess/API/wpe/WebKitWebViewWPE.cpp:
(webkit_web_view_new):
(webkit_web_view_new_with_context):
(webkit_web_view_new_with_related_view):
(webkit_web_view_new_with_settings):
(webkit_web_view_new_with_user_content_manager):
2018-04-11 Fujii Hironori <Hironori.Fujii@sony.com>
[curl][WebKit] Implement NetworkDataTaskCurl
https://bugs.webkit.org/show_bug.cgi?id=184488
Reviewed by Alex Christensen.
* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::create):
* NetworkProcess/curl/NetworkDataTaskCurl.cpp: Added.
(WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl):
(WebKit::NetworkDataTaskCurl::~NetworkDataTaskCurl):
(WebKit::NetworkDataTaskCurl::resume):
(WebKit::NetworkDataTaskCurl::suspend):
(WebKit::NetworkDataTaskCurl::cancel):
(WebKit::NetworkDataTaskCurl::invalidateAndCancel):
(WebKit::NetworkDataTaskCurl::state const):
(WebKit::NetworkDataTaskCurl::createCurlRequest):
(WebKit::NetworkDataTaskCurl::curlDidSendData):
(WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):
(WebKit::NetworkDataTaskCurl::curlDidReceiveBuffer):
(WebKit::NetworkDataTaskCurl::curlDidComplete):
(WebKit::NetworkDataTaskCurl::curlDidFailWithError):
(WebKit::NetworkDataTaskCurl::shouldRedirectAsGET):
(WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection):
(WebKit::NetworkDataTaskCurl::tryHttpAuthentication):
(WebKit::NetworkDataTaskCurl::restartWithCredential):
(WebKit::NetworkDataTaskCurl::appendCookieHeader):
(WebKit::NetworkDataTaskCurl::handleCookieHeaders):
* NetworkProcess/curl/NetworkDataTaskCurl.h: Added.
* PlatformWin.cmake:
2018-04-11 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Support pushing input view controllers onto the navigation stack
https://bugs.webkit.org/show_bug.cgi?id=184397
<rdar://problem/39265294>
Reviewed by Timothy Hatcher.
Currently, all input view controllers in extra zoom mode are presented modally. However, the latest iteration of
the HI specification depicts most of these view controllers (with the exception of time pickers) being presented
and dismissed via navigation stack. Since WebKit's iOS API surface doesn't force clients to embed WKWebViews
within a view controller with a corresponding UINavigationController, we cannot always guarantee that UI
presented when focusing form controls in a web view will be pushed onto the navigation stack; as such, the
approach taken in this patch will automatically allow WKWebView clients that already embed WKWebViews within a
UINavigationController to hook into this behavior, with modal presentation as a fallback.
At a high level, this patch makes the following tweaks to implement this behavior:
1. Store the currently presented view controller using a single member variable
(_presentedFullScreenInputViewController) instead of having one for each type. This makes bookkeepping around
which view controller to present or dismiss much more straightforward.
2. Replace WKFocusedFormControlViewController with just WKFocusedFormControlView. This addresses problems with
pushing an input view controller onto the navigation stack after presenting the focused form control view
controller modally. Now, we'll only need to present or push one view controller on the navigation stack.
3. Remove -handleWheelEvent: forwarding to date and time pickers. Pushing date picker view controllers onto the
navigation stack rather than presenting them modally means that we end up in a state where neither the
WKContentView nor WKTimePickerViewController are first responder, which renders time pickers unusable.
Instead, have the WKTimePickerViewController actually become first responder when presenting.
4. Lastly, and most importantly: change -presentViewControllerForCurrentAssistedNode and
-dismissAllInputViewControllers to try and push onto a navigation stack if possible, and fall back to modal
presentation.
* UIProcess/ios/WKContentViewInteraction.h:
Remove the separate member variables for each type of input view controller, and instead have one to keep track
of the current (and only) presented input view controller.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _willStartScrollingOrZooming]):
(-[WKContentView _didEndScrollingOrZooming]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView _stopAssistingNode]):
Boilerplate renaming of _focusedFormControlViewController => _focusedFormControlView.
(-[WKContentView reloadContextViewForPresentedListViewController]):
Adjust for consolidation of the different input view controller member variables to a single member (see changes
in WKContentViewInteraction.h).
(-[WKContentView addFocusedFormControlOverlay]):
(-[WKContentView removeFocusedFormControlOverlay]):
(-[WKContentView presentViewControllerForCurrentAssistedNode]):
(-[WKContentView dismissAllInputViewControllers:]):
Add an `animated` argument. In the case where a different view controller was presented after presenting the
input view controller, this allows us to dismiss the other view controller with animation, and directly reveal
the web view or focus overlay underneath.
(-[WKContentView focusedFormControlViewDidSubmit:]):
(-[WKContentView focusedFormControlViewDidCancel:]):
(-[WKContentView focusedFormControlViewDidBeginEditing:]):
(-[WKContentView rectForFocusedFormControlView:]):
(-[WKContentView nextRectForFocusedFormControlView:]):
(-[WKContentView previousRectForFocusedFormControlView:]):
(-[WKContentView scrollViewForFocusedFormControlView:]):
(-[WKContentView actionNameForFocusedFormControlView:]):
(-[WKContentView focusedFormControlViewDidRequestNextNode:]):
(-[WKContentView focusedFormControlViewDidRequestPreviousNode:]):
(-[WKContentView hasNextNodeForFocusedFormControlView:]):
(-[WKContentView hasPreviousNodeForFocusedFormControlView:]):
(-[WKContentView focusedFormControllerDidUpdateSuggestions:]):
Boilerplate renaming of focus overlay delegate methods.
(-[WKContentView _wheelChangedWithEvent:]):
Remove event forwarding hacks for date and time inputs, now that they directly become first responder.
(-[WKContentView presentFocusedFormControlViewController:]): Deleted.
(-[WKContentView dismissFocusedFormControlViewController:]): Deleted.
Renamed to -addFocusedFormControlOverlay and -removeFocusedFormControlOverlay.
(-[WKContentView dismissAllInputViewControllers]): Deleted.
(-[WKContentView focusedFormControlControllerDidSubmit:]): Deleted.
(-[WKContentView focusedFormControlControllerDidCancel:]): Deleted.
(-[WKContentView focusedFormControlControllerDidBeginEditing:]): Deleted.
(-[WKContentView rectForFocusedFormControlController:inCoordinateSpace:]): Deleted.
(-[WKContentView nextRectForFocusedFormControlController:inCoordinateSpace:]): Deleted.
(-[WKContentView previousRectForFocusedFormControlController:inCoordinateSpace:]): Deleted.
(-[WKContentView scrollViewForFocusedFormControlController:]): Deleted.
(-[WKContentView actionNameForFocusedFormControlController:]): Deleted.
(-[WKContentView focusedFormControlControllerDidRequestNextNode:]): Deleted.
(-[WKContentView focusedFormControlControllerDidRequestPreviousNode:]): Deleted.
(-[WKContentView hasNextNodeForFocusedFormControlController:]): Deleted.
(-[WKContentView hasPreviousNodeForFocusedFormControlController:]): Deleted.
* UIProcess/ios/forms/WKFocusedFormControlViewController.h: Removed.
* UIProcess/ios/forms/WKFocusedFormControlViewController.mm: Removed.
Completely remove WKFocusedFormControlViewController; instead, just directly place the focused form overlay in
the WKWebView's hierarchy. In the case where we have a navigation stack to push to, we can no longer modally
present the focused form overlay as a separate view controller using the UINavigationController, and then
immediately push the input view controller on top of the navigation stack, since the navigation stack isn't
updated until after the animation of the focused form overlay presentation is complete. Rather than hack around
this limitation by dispatch_after-ing after presenting the overlay's view controller, we should just make the
overlay a view. This also fixes the case where a client embedding a WKWebView that is smaller than the bounds of
the screen will no longer see the entire screen dim when focusing an input, but instead, just the web content.
* WebKit.xcodeproj/project.pbxproj:
2018-04-11 Youenn Fablet <youenn@apple.com>
Pass FetchOptions and SecurityOrigin as load parameters from WebProcess to NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=184374
Reviewed by Chris Dumez.
Pass full FetchOptions parameters as part of NetworkResourceLoadParameters.
This will allow handling redirection mode as well as credentials in case of cross origin redirections.
In case of SameOrigin credentials and there is a redirection from same-origin to cross-origin,
we will be able to stop using credentials without going to WebProcess.
To handle properly cross-origin checks, we have to be able to use SecurityOrigin as in WebProcess.
We make WebProcess sends Origin Access White list information to NetworkProcess.
This allows supporting the white list when doing loading in NetworkProcess.
This only works consistently if all WebProcesses share the same whitelist.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::loadPing):
(WebKit::NetworkConnectionToWebProcess::addOriginAccessWhitelistEntry):
(WebKit::NetworkConnectionToWebProcess::removeOriginAccessWhitelistEntry):
(WebKit::NetworkConnectionToWebProcess::resetOriginAccessWhitelists):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::continueCheckingRequest):
(WebKit::NetworkLoadChecker::checkCORSRequest):
(WebKit::NetworkLoadChecker::checkCORSRedirectedRequest):
(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
(WebKit::NetworkLoadChecker::doesNotNeedCORSCheck const):
* NetworkProcess/NetworkLoadChecker.h:
(WebKit::NetworkLoadChecker::create):
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::PingLoad):
(WebKit::PingLoad::willPerformHTTPRedirection):
* NetworkProcess/PingLoad.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::addOriginAccessWhitelistEntry):
(WebKit::InjectedBundle::removeOriginAccessWhitelistEntry):
(WebKit::InjectedBundle::resetOriginAccessWhitelists):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::startPingLoad):
2018-04-11 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] WaylandCompositorDisplay leaks its wl_display
https://bugs.webkit.org/show_bug.cgi?id=184406
Reviewed by Carlos Garcia Campos.
Since we allocate our own wl_display here, need to chain up to the parent constructor
passing NativeDisplayOwned::Yes, or it won't ever be released. Move the initialize call to
the create function to ensure it's called after the constructor completes.
* WebProcess/gtk/WaylandCompositorDisplay.cpp:
(WebKit::WaylandCompositorDisplay::create): Fix a log message (drive-by).
(WebKit::WaylandCompositorDisplay::WaylandCompositorDisplay):
2018-04-11 Youenn Fablet <youenn@apple.com>
Use more r-values in NetworkResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=184478
Reviewed by Chris Dumez.
Pass load parameters as r-values to remove some unneeded copies.
Ditto for ResourceRequest inside NetworkResourceLoader.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::scheduleResourceLoad):
(WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::NetworkResourceLoader):
(WebKit::NetworkResourceLoader::start):
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
(WebKit::NetworkResourceLoader::validateCacheEntry):
* NetworkProcess/NetworkResourceLoader.h:
2018-04-11 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Missing label when focusing a <select> with a title attribute but no associated <label>
https://bugs.webkit.org/show_bug.cgi?id=184352
<rdar://problem/39237683>
Reviewed by Andy Estes.
Currently, AssistedNodeInformation only sends the `title` of input elements to the UI process. This means that
any information requested in the UI process that is dependent on the `title` of the focused element is broken
in the case of select elements. An existing example of this is the title of the table view controller used to
present select menus on iPad.
To fix this, we simply send the `title` of the focused element across, as long as the focused element is an
HTMLElement. This ensures that there's label text when focusing unlabeled select elements with titles in extra
zoom mode, and also fixes a currenly broken codepath where we show the title of the select in the presented view
controller's title.
Test: fast/forms/ios/ipad/select-with-title.html
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView selectFormPopoverTitle]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
Add new testing SPI to fetch the title of the UITableViewController presented for the currently focused select
element.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView selectFormPopoverTitle]):
* UIProcess/ios/forms/WKFormSelectControl.h:
* UIProcess/ios/forms/WKFormSelectControl.mm:
(-[WKFormSelectControl selectFormPopoverTitle]):
* UIProcess/ios/forms/WKFormSelectPopover.h:
* UIProcess/ios/forms/WKFormSelectPopover.mm:
(-[WKSelectPopover initWithView:hasGroups:]):
(-[WKSelectPopover tableViewController]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
Always send the title across if the focused node is an HTMLElement.
(WebKit::WebPage::getAssistedNodeInformation):
2018-04-11 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r230508.
Breaks internal builds.
Reverted changeset:
"Remove block selection code"
https://bugs.webkit.org/show_bug.cgi?id=184470
https://trac.webkit.org/changeset/230508
2018-04-11 Antoine Quint <graouts@apple.com>
[Web Animations] Turn Web Animations on by default
https://bugs.webkit.org/show_bug.cgi?id=184491
Reviewed by Simon Fraser.
* Shared/WebPreferences.yaml:
2018-04-10 Brent Fulgham <bfulgham@apple.com>
Unreviewed test fix after r230468
Roll out an assertion added in r230468 that should not be present
until https://bugs.webkit.org/show_bug.cgi?id=184451 is landed.
* Shared/mac/HangDetectionDisablerMac.mm:
(WebKit::setClientsMayIgnoreEvents):
2018-04-10 Brent Fulgham <bfulgham@apple.com>
Unreviewed follow-up to r230468.
Switch some RELEASE_ASSERTs in hot codepaths to normal DEBUG asserts.
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::isViewWindowActive):
(WebKit::PageClientImpl::setCursor):
2018-04-10 Fujii Hironori <Hironori.Fujii@sony.com>
[Win] Add UserAgentWin.cpp
https://bugs.webkit.org/show_bug.cgi?id=184438
Reviewed by Michael Catanzaro.
* WebProcess/WebPage/win/WebPageWin.cpp:
(WebKit::WebPage::platformUserAgent const):
Use WebCore::standardUserAgentForURL.
2018-04-10 Megan Gardner <megan_gardner@apple.com>
Remove block selection code
https://bugs.webkit.org/show_bug.cgi?id=184470
Reviewed by Timothy Hatcher.
Remove block selection code that isn't run and is currently not even used.
Had to put this back in for a bug in the mid-year release, but we're past that
so it's time for this to go away.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::stopAssistingNode):
(WebKit::PageClientImpl::didUpdateBlockSelectionWithTouch): Deleted.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(toSelectionHandlePosition): Deleted.
(-[WKContentView _didUpdateBlockSelectionWithTouch:withFlags:growThreshold:shrinkThreshold:]): Deleted.
(-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:]): Deleted.
(-[WKContentView changeBlockSelectionWithTouchAt:withSelectionTouch:forHandle:]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::saveImageToLibrary):
(WebKit::WebPageProxy::updateBlockSelectionWithTouch): Deleted.
(WebKit::WebPageProxy::didUpdateBlockSelectionWithTouch): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::rangeAtWordBoundaryForPosition):
(WebKit::distanceBetweenRectsForPosition): Deleted.
(WebKit::rectsEssentiallyTheSame): Deleted.
(WebKit::unionDOMRanges): Deleted.
(WebKit::computeEdgeCenter): Deleted.
(WebKit::WebPage::expandedRangeFromHandle): Deleted.
(WebKit::WebPage::contractedRangeFromHandle): Deleted.
(WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle): Deleted.
(WebKit::WebPage::rangeForBlockAtPoint): Deleted.
(WebKit::shouldExpand): Deleted.
(WebKit::WebPage::changeBlockSelection): Deleted.
(WebKit::WebPage::updateBlockSelectionWithTouch): Deleted.
2018-04-10 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Add a mechanism to zoom to fixed scales when double tapping in extra zoom mode
https://bugs.webkit.org/show_bug.cgi?id=184435
<rdar://problem/38726260>
Reviewed by Dean Jackson.
Adds support for an alternate codepath when computing a zoom rect when double tapping that doesn't take the hit-
tested node into account, and instead cycles the zoom scale between 2 fixed values (in addition to the initial
scale). In the next patch, these fixed scales will be determined by computing zoom scales needed to make most of
the text on the page legible (i.e. the first text legibility zoom scale), and another to make all of the text on
the page legible, with the exception of outliers (this is the second text legibility zoom scale).
See comments below for more detail.
* UIProcess/Cocoa/ViewGestureController.h:
* UIProcess/Cocoa/ViewGestureController.messages.in:
* UIProcess/ios/SmartMagnificationController.h:
* UIProcess/ios/SmartMagnificationController.messages.in:
* UIProcess/ios/SmartMagnificationController.mm:
(WebKit::SmartMagnificationController::didCollectGeometryForSmartMagnificationGesture):
* UIProcess/mac/ViewGestureControllerMac.mm:
(WebKit::ViewGestureController::didCollectGeometryForSmartMagnificationGesture):
* WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
(WebKit::ViewGestureGeometryCollector::dispatchDidCollectGeometryForSmartMagnificationGesture):
Rename the boolean `isReplacedElement` argument to `fitEntireRect` instead. The UI process only uses this on iOS
to determine whether or not to fit the entire element rect to the viewport and add padding. This patch renames
this variable because we are not zooming to a replaced element in the case where text legibility on the page
(rather than element geometry) is being used to figure out the zoom scale, but we still want to fit the entire
target rect to the viewport.
(WebKit::ViewGestureGeometryCollector::collectGeometryForSmartMagnificationGesture):
If text legiblity zoom scaling is preferred, then compute first and second-level text legibility zoom scales to
zoom to upon double tap (where the second zoom scale is greater than the first). To choose a target zoom
scale, choose the lowest target zoom scale that is at least a small amount less than the current scale. If
neither of the two scales fulfill this description, then zoom back out to the initial scale. This has the effect
of consistently cycling between all three zoom scales as the user double taps.
(WebKit::ViewGestureGeometryCollector::computeTextLegibilityScales):
Introduce a new helper method that computes and caches target scales to zoom to when double tapping to zoom. If
a cached pair of target scales is already present, it skips this computation and immediately returns it.
(WebKit::ViewGestureGeometryCollector::computeZoomInformationForNode):
(WebKit::ViewGestureGeometryCollector::computeMinimumAndMaximumViewportScales const):
Factor out logic to compute min and max zoom scales into a separate helper, and call it from both
computeZoomInformationForNode and computeTextLegibilityScales.
(WebKit::ViewGestureGeometryCollector::mainFrameDidLayout):
Invalidate cached text legibility scales when layout is triggered.
* WebProcess/WebPage/ViewGestureGeometryCollector.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::mainFrameDidLayout):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::viewportConfiguration const):
Expose WebPage's ViewportConfiguration as a const reference.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::platformPrefersTextLegibilityBasedZoomScaling const):
Adds a platform hook for opting into text-legibility-based zoom scaling instead of regular hit-testing-based
zoom scaling heuristics.
2018-04-10 Wenson Hsieh <wenson_hsieh@apple.com>
Fix availability annotations for _WKAttachment SPI
https://bugs.webkit.org/show_bug.cgi?id=184473
<rdar://problem/39319732>
Reviewed by Dan Bernstein.
_WKAttachmentInfo is available in WK_MAC_TBA and WK_IOS_TBA, but the SPI method -[_WKAttachment requestInfo:]
is currently available in macOS 10.13.4 and iOS 11.3. Instead, the availability of this SPI should match the
availability of the SPI object it depends on.
* UIProcess/API/Cocoa/_WKAttachment.h:
2018-04-10 Chris Dumez <cdumez@apple.com>
Avoid constructing a service worker RegistrationStore for private sessions
https://bugs.webkit.org/show_bug.cgi?id=184463
<rdar://problem/36613948>
Reviewed by Youenn Fablet.
Avoid constructing a service worker RegistrationStore for private sessions since there
is no need for persistence and the registrationDatabaseDirectory is the empty string in
such cases.
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::initializeWebsiteDataStore):
2018-04-10 Andy Estes <aestes@apple.com>
[iOS] Navigate to URL and page number annotations in WKPDFView
https://bugs.webkit.org/show_bug.cgi?id=184410
Reviewed by Timothy Hatcher.
Implemented navigation to URL and page number (same-document) link annotations in PDFs.
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView _scrollToURLFragment:]):
(-[WKPDFView web_didSameDocumentNavigation:]):
(-[WKPDFView pdfHostViewController:updatePageCount:]):
(-[WKPDFView pdfHostViewController:goToURL:]):
(-[WKPDFView pdfHostViewController:goToPageIndex:withViewFrustum:]):
2018-04-10 Andy Estes <aestes@apple.com>
[iOS] WKPDFView should conform to _WKWebViewPrintProvider
https://bugs.webkit.org/show_bug.cgi?id=184471
Reviewed by Dan Bernstein.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _printProvider]):
The print provider will always be either _contentView or _customContentView, but
might not be _currentContentView.
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView _wk_pageCountForPrintFormatter:]):
Asked _hostViewController for the page count, clamped to 1 if
-[_WKWebViewPrintFormatter snapshotFirstPage] is YES.
(-[WKPDFView _wk_printedDocument]):
Created a CGPDFDocumentRef from _data and returned it.
2018-04-10 Youenn Fablet <youenn@apple.com>
Beacon redirect responses should be CORS validated
https://bugs.webkit.org/show_bug.cgi?id=184378
Reviewed by Chris Dumez.
Add CORS checks to any redirection response if mode is CORS.
Update response tainting and redirected accordingly.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::validateResponse):
* NetworkProcess/NetworkLoadChecker.h:
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::willPerformHTTPRedirection):
2018-04-10 Sihui Liu <sihui_liu@apple.com>
Loading of multipart response was cancelled because of content policy set in WebFrameLoaderClient::dispatchDecidePolicyForResponse
https://bugs.webkit.org/show_bug.cgi?id=184268
<rdar://problem/39144446>
Reviewed by Chris Dumez.
Webpage for multipart stream responses failed to refresh because content policy was set to
be ignore when provisonalDocumentLoader was null and navigation ID could not be retrieved.
As loading should not stop in this case, we set navigation ID 0 and still ask for content
policy.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
2018-04-10 Andy Estes <aestes@apple.com>
[iOS] Use PDFKit to render PDFs in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=184387
Reviewed by Beth Dakin.
Adopted PDFHostViewController for rendering PDFs in WKWebView.
This patch implements rendering the PDF document and page number indicator. Link
navigation, find-in-page, and printing will be implemented in follow-up patches.
WKLegacyPDFView is still the default PDF view.
* Configurations/WebKit.xcconfig:
Linked WebKit with PDFKit on iOS.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _currentContentView]):
(-[WKWebView viewForZoomingInScrollView:]):
When WKPDFView loads a PDF document, it replaces itself with a view vended by
PDFHostViewController as the WKScrollView's content view. Abstracted WKWebView's
concept of the "current content view" to be either the WKContentView or a view of
the custom content view's choosing (-web_contentView).
(-[WKWebView scrollViewWillBeginZooming:withView:]):
(-[WKWebView scrollViewDidZoom:]):
(-[WKWebView scrollViewDidEndZooming:withView:atScale:]):
Forwarded these calls to _customContentView if it responds to the equivalent
WKWebViewContentProvider selectors.
* UIProcess/Cocoa/WKWebViewContentProvider.h:
Defined new protocol selectors.
* UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
(-[WKWebViewContentProviderRegistry init]):
* UIProcess/ios/WKLegacyPDFView.h:
* UIProcess/ios/WKLegacyPDFView.mm:
Changed ENABLE(WKPDFVIEW) to ENABLE(WKLEGACYPDFVIEW).
(-[WKLegacyPDFView web_contentView]):
Added. Returns self as the content view.
* UIProcess/ios/WKPDFView.h: Added.
* UIProcess/ios/WKPDFView.mm: Added.
(-[WKPDFView dealloc]):
Removed the host view and page number indicator from their superviews.
(-[WKPDFView gestureRecognizerShouldBegin:]):
Forwarded to _hostViewController.
(-[WKPDFView web_initWithFrame:webView:]):
Set ours and the scroll view's background color to UIColor.grayColor to match
WKLegacyPDFView.
(-[WKPDFView web_setContentProviderData:suggestedFilename:]):
Created a PDFHostViewController and set its root view as the scroll view's content
view after removing the WKPDFView itself. This allows WKPDFView to act as a
placeholder content view until the PDF is loaded. Added the host view controller's
page number indicator to the fixed overlay view. Finally, loaded the PDF document
by calling -[PDFHostViewController setDocumentData:withScrollView:].
(-[WKPDFView _offsetForPageNumberIndicator]):
Computed an offset for the page number indicator like WKLegacyPDFView did, taking
into account the overlaid accessory views inset, computed unobscured safe area
inset, and computed obscured inset.
(-[WKPDFView _movePageNumberIndicatorToPoint:animated:]):
Moved the page number indicator using the margin and animation duration from
WKLegacyPDFView.
(-[WKPDFView _updateLayoutAnimated:]):
Added a convenience method to update the PDF view layout and position the page
number indicator.
(-[WKPDFView web_setMinimumSize:]):
Updated our own frame in case we are still the placeholder content view.
Called -_updateLayoutAnimated:.
(-[WKPDFView web_setOverlaidAccessoryViewsInset:]):
Stored the inset and called -_updateLayoutAnimated:.
(-[WKPDFView web_computedContentInsetDidChange]):
Called -_updateLayoutAnimated:.
(-[WKPDFView web_setFixedOverlayView:]):
Stored the fixed overlay view.
(-[WKPDFView web_didSameDocumentNavigation:]):
(-[WKPDFView web_countStringMatches:options:maxCount:]):
(-[WKPDFView web_findString:options:maxCount:]):
(-[WKPDFView web_hideFindUI]):
Added FIXMEs.
(-[WKPDFView web_contentView]):
If there is a host view controller, return its root view. Otherwise, return self.
(-[WKPDFView web_scrollViewDidScroll:]):
(-[WKPDFView web_scrollViewWillBeginZooming:withView:]):
(-[WKPDFView web_scrollViewDidEndZooming:withView:atScale:]):
(-[WKPDFView web_scrollViewDidZoom:]):
Called -[PDFHostViewController updatePDFViewLayout].
(-[WKPDFView web_dataRepresentation]):
Returned _data.
(-[WKPDFView web_suggestedFilename]):
Returned _suggestedFilename.
(-[WKPDFView web_isBackground]):
Returned self.isBackground.
* UIProcess/ios/WKSystemPreviewView.mm:
(-[WKSystemPreviewView web_contentView]):
Added. Returns self as the content view.
* WebKit.xcodeproj/project.pbxproj:
2018-04-10 Miguel Gomez <magomez@igalia.com>
[GTK][WPE] Race condition when destroying webprocesses
https://bugs.webkit.org/show_bug.cgi?id=184445
Reviewed by Carlos Garcia Campos.
Ensure that the WebProcess is properly closing its pages when it's exiting because
the UIProcess has invalidated the IPC connection.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::didClose):
2018-04-09 Wenson Hsieh <wenson_hsieh@apple.com>
Add missing availability macros after r230462
https://bugs.webkit.org/show_bug.cgi?id=184426
Reviewed by Timothy Hatcher.
Annotate new SPI added in r230462 with the appropriate availability macros.
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
2018-04-09 Brent Fulgham <bfulgham@apple.com>
Add ProcessPrivilege assertions to places that access NSApp
https://bugs.webkit.org/show_bug.cgi?id=184322
<rdar://problem/39194560>
Reviewed by Per Arne Vollan.
Add ProcessPrivilege assertions to places where we interact with NSApp so
that we can prevent accidentally using them in the WebContent process.
* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::stopNSAppRunLoop):
* Shared/mac/HangDetectionDisablerMac.mm:
(WebKit::setClientsMayIgnoreEvents):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::WebViewImpl):
(WebKit::WebViewImpl::becomeFirstResponder):
(WebKit::WebViewImpl::pluginFocusOrWindowFocusChanged):
(WebKit::WebViewImpl::validateUserInterfaceItem):
(WebKit::WebViewImpl::startSpeaking):
(WebKit::WebViewImpl::stopSpeaking):
(WebKit::applicationFlagsForDrag):
(WebKit::WebViewImpl::doneWithKeyEvent):
* UIProcess/Gamepad/mac/UIGamepadProviderMac.mm:
(WebKit::UIGamepadProvider::platformWebPageProxyForGamepadInput):
* UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
(WebKit::PluginProcessProxy::enterFullscreen):
(WebKit::PluginProcessProxy::beginModal):
(WebKit::PluginProcessProxy::endModal):
* UIProcess/mac/DisplayLink.cpp:
(WebKit::DisplayLink::DisplayLink):
(WebKit::DisplayLink::~DisplayLink):
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::isViewWindowActive):
(WebKit::PageClientImpl::setCursor):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::getIsSpeaking):
(WebKit::WebPageProxy::speak):
(WebKit::WebPageProxy::stopSpeaking):
(WebKit::WebPageProxy::startDisplayLink):
* UIProcess/mac/WebPopupMenuProxyMac.mm:
(WebKit::WebPopupMenuProxyMac::showPopupMenu):
2018-04-09 John Wilander <wilander@apple.com>
Refactor Ignore HSTS code
https://bugs.webkit.org/show_bug.cgi?id=184433
<rdar://problem/39298238>
Reviewed by Darin Adler.
This patch refactors our ignore HSTS code. The convenience functions are moved
out of CFNetwork SPI in PAL, and into where they are used. It also switches
from performSelector: calls to straight function calls, after checking that
there is a responder.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(schemeWasUpgradedDueToDynamicHSTS):
(setIgnoreHSTS):
(ignoreHSTS):
Add convenience functions here since they were moved out of
CFNetworkSPI.h.
2018-04-09 Michael Catanzaro <mcatanzaro@igalia.com>
Rename UNUSED to BUNUSED
https://bugs.webkit.org/show_bug.cgi?id=184093
Reviewed by Yusuke Suzuki.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _getApplicationManifestWithCompletionHandler:]):
2018-04-09 Timothy Hatcher <timothy@apple.com>
Add support for setting a background color on WKWebView and WKView
https://bugs.webkit.org/show_bug.cgi?id=184426
Reviewed by Wenson Hsieh.
* UIProcess/API/Cocoa/WKViewPrivate.h: Added _backgroundColor property.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _backgroundColor]): Added. Call through to WebViewImpl.
(-[WKWebView _setBackgroundColor:]): Added. Call through to WebViewImpl.
* UIProcess/API/Cocoa/WKWebViewPrivate.h: Added _backgroundColor property.
* UIProcess/API/mac/WKView.mm:
(-[WKView _backgroundColor]): Added. Call through to WebViewImpl.
(-[WKView _setBackgroundColor:]): Added. Call through to WebViewImpl.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setBackgroundColor): Added.
(WebKit::WebViewImpl::backgroundColor const): Added.
(WebKit::WebViewImpl::updateLayer): Use m_backgroundColor when set.
2018-04-09 Yousuke Kimoto <yousuke.kimoto@sony.com> and Fujii Hironori <Hironori.Fujii@sony.com>
[WinCairo] Add WebKit Shared/win event files for wincairo webkit
https://bugs.webkit.org/show_bug.cgi?id=183043
Reviewed by Brent Fulgham.
* Shared/NativeWebKeyboardEvent.h:
(WebKit::NativeWebKeyboardEvent::nativeEvent const):
* Shared/NativeWebMouseEvent.h:
(WebKit::NativeWebMouseEvent::nativeEvent const):
* Shared/NativeWebTouchEvent.h:
* Shared/NativeWebWheelEvent.h:
(WebKit::NativeWebWheelEvent::nativeEvent const):
* Shared/win/NativeWebKeyboardEventWin.cpp: Copied from Source/WebKit/Shared/NativeWebMouseEvent.h.
(WebKit::NativeWebKeyboardEvent::NativeWebKeyboardEvent):
* Shared/win/NativeWebMouseEventWin.cpp: Copied from Source/WebKit/Shared/NativeWebMouseEvent.h.
(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):
* Shared/win/NativeWebTouchEventWin.cpp: Copied from Source/WebKit/Shared/NativeWebTouchEvent.h.
(WebKit::NativeWebTouchEvent::NativeWebTouchEvent):
* Shared/win/NativeWebWheelEventWin.cpp: Copied from Source/WebKit/Shared/NativeWebMouseEvent.h.
(WebKit::NativeWebWheelEvent::NativeWebWheelEvent):
* Shared/win/WebEventFactory.cpp: Added.
(WebKit::relativeCursorPosition):
(WebKit::point):
(WebKit::horizontalScrollChars):
(WebKit::verticalScrollLines):
(WebKit::clickCount):
(WebKit::IsKeyInDownState):
(WebKit::modifiersForEvent):
(WebKit::modifiersForCurrentKeyState):
(WebKit::keyboardEventTypeForEvent):
(WebKit::isSystemKeyEvent):
(WebKit::isKeypadEvent):
(WebKit::textFromEvent):
(WebKit::unmodifiedTextFromEvent):
(WebKit::keyIdentifierFromEvent):
(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):
(WebKit::WebEventFactory::createWebTouchEvent):
* Shared/win/WebEventFactory.h: Copied from Source/WebKit/Shared/NativeWebMouseEvent.h.
(WebKit::createNativeEvent):
2018-04-09 Brent Fulgham <bfulgham@apple.com>
WebCore::EventHandler::targetPositionInWindowForSelectionAutoscroll is directly accessing NSScreen
https://bugs.webkit.org/show_bug.cgi?id=184344
<rdar://problem/39224969>
Reviewed by Per Arne Vollan.
The implementation of targetPositionInWindowForSelectionAutoscroll uses the display ID to get the
screen boundaries of the current display. This causes a bunch of interaction with NSScreen that
we do not want to allow in the WebContent process.
Instead, we should just use the cached screen information the WebContent process already possesses.
This patch makes the following changes:
1. We now retrieve the screen rect of the page's display from the cache, rather than interacting with
the WindowServer directly.
2. Add a new 'toUserSpaceForPrimaryScreen' so we don't have to deal with a nil NSWindow when computing
the user space version of the coordinates. A nil Window just means we want to get coordinates in
terms of the primary display.
3. Keep track of the primary display so we can refer to it later.
4. Modify the IPC messages to include the primary display's ID so we can easily access it later.
5. Modify the PlatformScreen methods to actually use the primary display when appropriate, rather
than whichever screen happened to hash to the lowest value.
Reviewed by Per Arne Vollan.
* UIProcess/WebProcessPool.cpp:
(WebKit::displayReconfigurationCallBack): Update for new getScreenProperties implementation.
(WebKit::WebProcessPool::initializeNewWebProcess): Ditto.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setScreenProperties): Ditto.
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in: Ditto.
2018-04-09 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE] Add API version to library soname and pkg-config files
https://bugs.webkit.org/show_bug.cgi?id=180608
Reviewed by Žan Doberšek.
* PlatformWPE.cmake:
* wpe/wpe-webkit.pc.in:
2018-04-09 Jer Noble <jer.noble@apple.com>
Fix the selection assistant selectionView build
https://bugs.webkit.org/show_bug.cgi?id=184423
<rdar://problem/39288235>
Reviewed by Wenson Hsieh.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _didExitStableState]):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _updateChangedSelection:]):
2018-04-09 Megan Gardner <megan_gardner@apple.com>
Switch to UIWKTextInteractionAssistant for non-editable text
https://bugs.webkit.org/show_bug.cgi?id=182834
Switch to only using one assistant for text selection.
Reviewed by Timothy Hatcher and Andy Estes.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView useSelectionAssistantWithGranularity:]):
2018-04-09 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, move 'using namespace' back to the right place after r230429
* Shared/glib/ProcessExecutablePathGLib.cpp:
2018-04-09 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, rolling out r230390.
Broke accelerated compositing
Reverted changeset:
"[GTK] WaylandCompositorDisplay leaks its wl_display"
https://bugs.webkit.org/show_bug.cgi?id=184406
https://trac.webkit.org/changeset/230390
2018-04-09 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Disable fast clicking by default in extra zoom mode
https://bugs.webkit.org/show_bug.cgi?id=184411
<rdar://problem/38726867>
Reviewed by Andy Estes.
As it turns out, existing fast-clicking heuristics don't work so well in extra zoom mode. Even at device-width,
since the page is scaled to fit within the viewport, having single taps take precedence over double taps leads
to a confusing experience when trying to double tap to zoom further on content that contains links and other
click targets. Revert to legacy behavior here by disabling these heuristics.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
2018-04-06 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Add an SPI hook for clients to opt in to focus overlay UI
https://bugs.webkit.org/show_bug.cgi?id=184370
<rdar://problem/39250494>
Reviewed by Timothy Hatcher and Andy Estes.
Add a new SPI hook for internal clients to opt in to showing the focused form control overlay. By default, the
overlay is not shown.
* UIProcess/API/Cocoa/_WKInputDelegate.h:
2018-04-09 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE] Use GNU install directories
https://bugs.webkit.org/show_bug.cgi?id=184377
Reviewed by Carlos Garcia Campos.
Merge ProcessExecutablePathGtk and ProcessExecutablePathWPE into ProcessExecutablePathGLib.
WPE will now load its secondary processes from PKGLIBEXECDIR, like WebKitGTK+.
* PlatformWPE.cmake:
* Shared/glib/ProcessExecutablePathGLib.cpp: Renamed from Source/WebKit/Shared/gtk/ProcessExecutablePathGtk.cpp.
(WebKit::getExecutablePath):
(WebKit::findWebKitProcess):
(WebKit::executablePathOfWebProcess):
(WebKit::executablePathOfPluginProcess):
(WebKit::executablePathOfNetworkProcess):
(WebKit::executablePathOfStorageProcess):
* Shared/wpe/ProcessExecutablePathWPE.cpp: Removed.
* SourcesGTK.txt:
* SourcesWPE.txt:
2018-04-09 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] WaylandCompositorDisplay leaks its wl_display
https://bugs.webkit.org/show_bug.cgi?id=184406
Reviewed by Carlos Garcia Campos.
* WebProcess/gtk/WaylandCompositorDisplay.cpp:
(WebKit::WaylandCompositorDisplay::create): Fix a log message (drive-by).
(WebKit::WaylandCompositorDisplay::WaylandCompositorDisplay): Fix the leak.
2018-04-08 Zan Dobersek <zdobersek@igalia.com>
Non-Cocoa ports use default directory for ServiceWorker data during testing
https://bugs.webkit.org/show_bug.cgi?id=183784
Reviewed by Youenn Fablet.
Add API to WKWebsiteDataStore that enables setting and retrieving the
service worker registration directory for a given data store object.
This enables setting the temporary directory for testing purposes in
WebKitTestRunner.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreCopyServiceWorkerRegistrationDirectory):
(WKWebsiteDataStoreSetServiceWorkerRegistrationDirectory):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
2018-04-08 Fujii Hironori <Hironori.Fujii@sony.com>
[CMake] WebKit should link to WebCore as a PRIVATE library if WebCore is a static library
https://bugs.webkit.org/show_bug.cgi?id=184127
Reviewed by Konstantin Tokarev.
* CMakeLists.txt: Link with WebCore as private,
WebCoreHeaderInterface as public to WebKit if WebCore is a static
library.
* CMakeLists.txt:
* PlatformGTK.cmake: Added PRIVATE keyword for WebKit_LIBRARIES.
* PlatformWPE.cmake: Ditto.
* PlatformWin.cmake: Ditto.
2018-04-08 Andy Estes <aestes@apple.com>
[iOS] WKContentView and WKLegacyPDFView should share application state tracking logic
https://bugs.webkit.org/show_bug.cgi?id=184402
Reviewed by Dan Bernstein.
WKContentView and WKLegacyPDFView have nearly identical logic for tracking
application foreground state. Let's share it so we can more easily create new
content views with proper application state tracking.
* UIProcess/ios/WKApplicationStateTrackingView.h: Added.
* UIProcess/ios/WKApplicationStateTrackingView.mm: Added.
(-[WKApplicationStateTrackingView initWithFrame:webView:]):
(-[WKApplicationStateTrackingView willMoveToWindow:]):
(-[WKApplicationStateTrackingView didMoveToWindow]):
(-[WKApplicationStateTrackingView _applicationDidEnterBackground]):
(-[WKApplicationStateTrackingView _applicationDidCreateWindowContext]):
(-[WKApplicationStateTrackingView _applicationDidFinishSnapshottingAfterEnteringBackground]):
(-[WKApplicationStateTrackingView _applicationWillEnterForeground]):
(-[WKApplicationStateTrackingView isBackground]):
Moved common logic from WKContentView and WKLegacyPDFView into
WKApplicationStateTrackingView.
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView initWithFrame:processPool:configuration:webView:]):
(-[WKContentView willMoveToWindow:]):
(-[WKContentView _applicationDidCreateWindowContext]):
(-[WKContentView didMoveToWindow]): Deleted.
(-[WKContentView isBackground]): Deleted.
(-[WKContentView _applicationDidEnterBackground]): Deleted.
(-[WKContentView _applicationDidFinishSnapshottingAfterEnteringBackground]): Deleted.
(-[WKContentView _applicationWillEnterForeground]): Deleted.
Made WKContentView a subclass of WKApplicationStateTrackingView.
* UIProcess/ios/WKLegacyPDFView.h:
* UIProcess/ios/WKLegacyPDFView.mm:
(-[WKLegacyPDFView web_initWithFrame:webView:]):
(-[WKLegacyPDFView web_isBackground]):
(-[WKLegacyPDFView _applicationWillEnterForeground]):
(-[WKLegacyPDFView willMoveToWindow:]): Deleted.
(-[WKLegacyPDFView didMoveToWindow]): Deleted.
(-[WKLegacyPDFView _applicationDidEnterBackground]): Deleted.
(-[WKLegacyPDFView _applicationDidCreateWindowContext]): Deleted.
(-[WKLegacyPDFView _applicationDidFinishSnapshottingAfterEnteringBackground]): Deleted.
Made WKLegacyPDFView a subclass of WKApplicationStateTrackingView.
* WebKit.xcodeproj/project.pbxproj:
2018-04-08 Dan Bernstein <mitz@apple.com>
[Cocoa] Keep library validation disabled for WebContent.Development
https://bugs.webkit.org/show_bug.cgi?id=184393
Reviewed by Anders Carlsson.
* Configurations/WebContent.Development.entitlements: Added. Includes the
com.apple.security.cs.disable-library-validation entitlement set to true.
* Configurations/WebContentService.Development.xcconfig: Set CODE_SIGN_ENTITLEMENTS to the
above.
* WebKit.xcodeproj/project.pbxproj: Added reference to new file.
2018-04-06 Brian Burg <bburg@apple.com>
REGRESSION(r228371): WebAutomationSession::deleteAllCookies doesn't delete some cookies
https://bugs.webkit.org/show_bug.cgi?id=184334
<rdar://problem/39212863>
Reviewed by Timothy Hatcher.
When WebDriver adds a cookie for 'localhost', it actually uses the domain '.localhost' per RFC.
When deleting cookies, we first fetch all cookies matching the document's hostname, and
then delete them one by one. However, this code path does not add the dot prefix. This causes
no cookies to match the requested domain, and thus none of them are deleted.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::domainByAddingDotPrefixIfNeeded): Extract this helper method.
(WebKit::WebAutomationSession::addSingleCookie): Use helper method.
(WebKit::WebAutomationSession::deleteAllCookies): Add a dot prefix when
requesting to delete all cookies for a hostname.
2018-04-06 Youenn Fablet <youenn@apple.com>
Response headers should be filtered when sent from NetworkProcess to WebProcess
https://bugs.webkit.org/show_bug.cgi?id=184310
Reviewed by Ryosuke Niwa.
Pass destination parameter to NetworkResourceLoader.
Use new sanitization routine to filter response headers as needed:
- Cross-origin routines are filtered by removing any non CORS allowed headers.
- Same-origin responses are filtered by removing non used headers, except when filtering would be visible by JS (XHR, fetch).
In all cases, Set-Cookie/Set-Cookie2 headers are filtered out.
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
(WebKit::NetworkResourceLoader::sanitizeResponseIfPossible):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
(WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry):
* NetworkProcess/NetworkResourceLoader.h:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::updatePreferencesStore):
2018-04-05 Ryosuke Niwa <rniwa@webkit.org>
Make all sync IPCs during ScriptDisallowedScope set DoNotProcessIncomingMessagesWhenWaitingForSyncReply
https://bugs.webkit.org/show_bug.cgi?id=182449
<rdar://problem/39222541>
Reviewed by Chris Dumez.
Release assert that a sync IPC inside ScriptDisallowedScope sets DoNotProcessIncomingMessagesWhenWaitingForSyncReply
to avoid executing arbitrary scripts as a result of processing incoming sync IPCs.
* Platform/IPC/Connection.h:
(IPC::Connection::sendSync): Added the release assertion.
2018-04-05 Youenn Fablet <youenn@apple.com>
REGRESSION (r230223): LayoutTest http/tests/contentextensions/css-display-none-overflows-rule-data-1.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=184306
Reviewed by Ryosuke Niwa.
* NetworkProcess/NetworkContentRuleListManager.cpp:
(WebKit::NetworkContentRuleListManager::addContentRuleLists):
2018-04-05 Brent Fulgham <bfulgham@apple.com>
WebContent process is calling CGDisplayUsesInvertedPolarity
https://bugs.webkit.org/show_bug.cgi?id=184337
<rdar://problem/39215702>
Reviewed by Zalan Bujtas.
The PlatformScreenMac code is still calling display-related routines directly, specifically
CGDisplayUsesInvertedPolarity and CGDisplayUsesForceToGray. These should be brokered from
the UIProcess.
There's also no reason to avoid the brokering behavior on current WebKit builds. Remove
the compile guards so all macOS builds use this behavior.
Finally, add some ProcessPrivilege assertions to guard against accidentally calling these
routines in the future.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess): Activate screen brokering code for all builds.
* WebProcess/WebProcess.cpp: Ditto.
* WebProcess/WebProcess.h: Ditto.
* WebProcess/WebProcess.messages.in: Ditto.
2018-04-05 Brady Eidson <beidson@apple.com>
Process Swap on Navigation causes many webpages to hang due to attempted process swap for iframe navigations.
<rdar://problem/39162236> and https://bugs.webkit.org/show_bug.cgi?id=184318
Reviewed by Andy Estes.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision): Don't consider a swap if the navigation is not in the main frame.
2018-04-05 Ryosuke Niwa <rniwa@webkit.org>
WebContent process sometimes hangs in WebProcess::ensureNetworkProcessConnection
https://bugs.webkit.org/show_bug.cgi?id=184326
Reviewed by Chris Dumez.
The hang was caused by UI process never sending the reply back to GetNetworkProcessConnection
due to m_pendingOutgoingMachMessage being set and the event handler for DISPATCH_MACH_SEND_POSSIBLE
never getting called. This is because the event handler registration happens asynchronously,
and may not have completed by the time we send the first IPC to the web content process
in which case it can timeout and we may never get the callback.
Fixed the hang by waiting for the event handler registration to be completed using
dispatch_source_set_registration_handler. To do this, this patch adds a new boolean instance variable,
m_isInitializingSendSource, to Connection which is set to true between the time mach port is created
and until the event handler registration has been completed. platformCanSendOutgoingMessages returns
false while m_isInitializingSendSource is set to prevent the attempt to send messages like we do when
m_pendingOutgoingMachMessage is set to true.
* Platform/IPC/Connection.h:
(IPC::Connection::m_isInitializingSendSource): Added.
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::platformInvalidate): Set m_isInitializingSendSource to false.
(IPC::Connection::sendMessage): Assert that m_isInitializingSendSource is false.
(IPC::Connection::platformCanSendOutgoingMessages const): Return false if m_isInitializingSendSource
is set to true.
(IPC::Connection::sendOutgoingMessage): Assert that m_isInitializingSendSource is false.
(IPC::Connection::initializeSendSource): Set m_isInitializingSendSource to true temporarily until
dispatch_source_set_registration_handler's callback is called. Resume and send any pending outgoing
messages.
(IPC::Connection::resumeSendSource): Extracted from initializeSendSource.
2018-04-05 Youenn Fablet <youenn@apple.com>
WebRTC data channel only applications require capture permissions for direct connections
https://bugs.webkit.org/show_bug.cgi?id=174500
<rdar://problem/34134281>
Unreviewed.
Changed the code to suppress: "error: unused variable 'error' [-Werror,-Wunused-variable]"
Added some logging to this error case as a side bonus.
* NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
(WebKit::NetworkMDNSRegister::registerMDNSName):
2018-04-05 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r229831): Test WebKit2.ProvisionalURLAfterWillSendRequestCallback times out since r229831
https://bugs.webkit.org/show_bug.cgi?id=184293
Reviewed by Alex Christensen.
The problem is that after willSendRequest callback changes the request, the load is cancelled while
transitioning to committed state. This happens because the load is not waiting for the response policy check, so
it continues and when transitioning to committed, FrameLoader::closeURL() invalidates the current policy check
that causes a load failure. The new request returned by the API doesn't have any requester, so it's no longer
considered a main resource load. In the network process the resource load task doesn't wait for the response
policy and continues the load, sending the data to the web process. Once the first data is received, the load
transitions to commit, but the response policy check is still ongoing. This can only happen when using the C API
(I don't know about the Cocoa API), but not with the GLib API because it doesn't allow to create a new request,
only to modify the passed in one. With the C API we loss other internal things of the request like the priority,
but I guess the most important one is the requester.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchWillSendRequest):
2018-04-04 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r230283.
Caused webkitpy test failures.
Reverted changeset:
"Use CompletionHandlers for DelayedReplies"
https://bugs.webkit.org/show_bug.cgi?id=182269
https://trac.webkit.org/changeset/230283
2018-04-04 Youenn Fablet <youenn@apple.com>
webrtc/video-update-often.html is flakily crashing on iOS simulator Debug
https://bugs.webkit.org/show_bug.cgi?id=184022
Reviewed by Jer Noble.
Remove client context once the new context identifier is set.
Covered by test no longer crashing locally.
* WebProcess/cocoa/PlaybackSessionManager.mm:
(WebKit::PlaybackSessionManager::setUpPlaybackControlsManager):
2018-04-04 Youenn Fablet <youenn@apple.com>
WebRTC data channel only applications require capture permissions for direct connections
https://bugs.webkit.org/show_bug.cgi?id=174500
<rdar://problem/34134281>
Reviewed by Eric Carlson.
Add support for MDNS registration and resolution by NetworkProcess.
WebProcess gives instruction to do the actual registrations/resolutions.
* CMakeLists.txt:
* DerivedSources.make:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
* NetworkProcess/NetworkConnectionToWebProcess.h:
(WebKit::NetworkConnectionToWebProcess::mdnsRegister):
* NetworkProcess/webrtc/NetworkMDNSRegister.cpp: Added.
(WebKit::NetworkMDNSRegister::NetworkMDNSRegister):
(WebKit::NetworkMDNSRegister::~NetworkMDNSRegister):
(WebKit::NetworkMDNSRegister::unregisterMDNSNames):
(WebKit::PendingRegistrationRequest::PendingRegistrationRequest):
(WebKit::registerMDNSNameCallback):
(WebKit::NetworkMDNSRegister::registerMDNSName):
(WebKit::PendingResolutionRequest::PendingResolutionRequest):
(WebKit::PendingResolutionRequest::~PendingResolutionRequest):
(WebKit::PendingResolutionRequest::timeout):
(WebKit::resolveMDNSNameCallback):
(WebKit::NetworkMDNSRegister::resolveMDNSName):
* NetworkProcess/webrtc/NetworkMDNSRegister.h: Added.
* NetworkProcess/webrtc/NetworkMDNSRegister.messages.in: Added.
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebRTCMDNSICECandidatesEnabled):
(WKPreferencesGetWebRTCMDNSICECandidatesEnabled):
* UIProcess/API/C/WKPreferencesRef.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didReceiveMessage):
* WebProcess/Network/webrtc/LibWebRTCNetwork.h:
(WebKit::LibWebRTCNetwork::mdnsRegister):
* WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
(WebKit::LibWebRTCProvider::unregisterMDNSNames):
(WebKit::LibWebRTCProvider::registerMDNSName):
(WebKit::LibWebRTCProvider::resolveMDNSName):
* WebProcess/Network/webrtc/LibWebRTCProvider.h:
* WebProcess/Network/webrtc/WebMDNSRegister.cpp: Added.
(WebKit::WebMDNSRegister::finishedRegisteringMDNSName):
(WebKit::WebMDNSRegister::finishedResolvingMDNSName):
(WebKit::WebMDNSRegister::unregisterMDNSNames):
(WebKit::WebMDNSRegister::registerMDNSName):
(WebKit::WebMDNSRegister::resolveMDNSName):
* WebProcess/Network/webrtc/WebMDNSRegister.h: Added.
* WebProcess/Network/webrtc/WebMDNSRegister.messages.in: Added.
2018-04-04 Alex Christensen <achristensen@webkit.org>
Use CompletionHandlers for DelayedReplies
https://bugs.webkit.org/show_bug.cgi?id=182269
Reviewed by Youenn Fablet.
DelayedReplies should be a noncopyable, non-refcountable type. They should be
called once and only once. This is what CompletionHandlers are for.
No change in behavior. Just cleaner code.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::performSynchronousLoad):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::SynchronousLoadData::SynchronousLoadData):
(WebKit::sendReplyToSynchronousRequest):
(WebKit::NetworkResourceLoader::NetworkResourceLoader):
* NetworkProcess/NetworkResourceLoader.h:
* Platform/IPC/Connection.h:
* Platform/IPC/HandleMessage.h:
(IPC::callMemberFunctionImpl):
(IPC::callMemberFunction):
(IPC::handleMessageDelayed):
* PluginProcess/PluginControllerProxy.cpp:
(WebKit::PluginControllerProxy::setInitializationReply):
(WebKit::PluginControllerProxy::takeInitializationReply):
* PluginProcess/PluginControllerProxy.h:
* PluginProcess/WebProcessConnection.cpp:
(WebKit::WebProcessConnection::destroyPlugin):
(WebKit::WebProcessConnection::createPlugin):
(WebKit::WebProcessConnection::createPluginAsynchronously):
* PluginProcess/WebProcessConnection.h:
* Scripts/webkit/messages.py:
(message_to_struct_declaration):
(generate_message_handler):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::getNetworkProcessConnection):
(WebKit::NetworkProcessProxy::networkProcessCrashed):
(WebKit::NetworkProcessProxy::networkProcessFailedToLaunch):
(WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::getPluginProcessConnection):
* UIProcess/Plugins/PluginProcessManager.h:
* UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::PluginProcessProxy::getPluginProcessConnection):
(WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch):
(WebKit::PluginProcessProxy::didCreateWebProcessConnection):
* UIProcess/Plugins/PluginProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::getStorageProcessConnection):
(WebKit::StorageProcessProxy::didClose):
(WebKit::StorageProcessProxy::didCreateStorageToWebProcessConnection):
* UIProcess/Storage/StorageProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::ExceededDatabaseQuotaRecords::createRecord):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::runJavaScriptAlert):
(WebKit::WebPageProxy::runJavaScriptConfirm):
(WebKit::WebPageProxy::runJavaScriptPrompt):
(WebKit::WebPageProxy::webGLPolicyForURL):
(WebKit::WebPageProxy::resolveWebGLPolicyForURL):
(WebKit::WebPageProxy::getToolbarsAreVisible):
(WebKit::WebPageProxy::getMenuBarIsVisible):
(WebKit::WebPageProxy::getStatusBarIsVisible):
(WebKit::WebPageProxy::getWindowFrame):
(WebKit::WebPageProxy::screenToRootView):
(WebKit::WebPageProxy::rootViewToScreen):
(WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
(WebKit::WebPageProxy::exceededDatabaseQuota):
(WebKit::WebPageProxy::reachedApplicationCacheOriginQuota):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::networkProcessCrashed):
(WebKit::WebProcessPool::getNetworkProcessConnection):
(WebKit::WebProcessPool::getStorageProcessConnection):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getPluginProcessConnection):
(WebKit::WebProcessProxy::getNetworkProcessConnection):
(WebKit::WebProcessProxy::getStorageProcessConnection):
* UIProcess/WebProcessProxy.h:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::syncTerminateWorker):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::computePagesForPrintingAndDrawToPDF):
2018-04-04 Alex Christensen <achristensen@webkit.org>
Remove legacyCustomProtocolManager from NetworkSessionCreationParameters
https://bugs.webkit.org/show_bug.cgi?id=182178
Reviewed by Youenn Fablet.
Now that we only make NetworkSessions in the NetworkProcess, we don't need to pass this parameter around.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* NetworkProcess/NetworkSessionCreationParameters.h:
(WebKit::NetworkSessionCreationParameters::decode):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::privateSessionParameters):
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
2018-04-04 Alex Christensen <achristensen@webkit.org>
Move PingHandle to WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=184145
Reviewed by Youenn Fablet.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
2018-04-04 Brent Fulgham <bfulgham@apple.com>
Failures from mach port reference handling should be fatal
https://bugs.webkit.org/show_bug.cgi?id=184202
<rdar://problem/37771114>
Reviewed by Anders Carlsson.
Update for new location of MachSendRight.h. Switch to
#pragma once in a few places.
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::platformInvalidate): Adopt new 'safe mach_port_t deallocation' function.
(IPC::Connection::initializeSendSource): Ditto.
(IPC::Connection::receiveSourceEventHandler): Ditto.
* Platform/SharedMemory.h:
* Platform/cocoa/SharedMemoryCocoa.cpp:
(WebKit::SharedMemory::Handle::clear): Ditto.
(WebKit::makeMemoryEntry): Ditto.
(WebKit::SharedMemory::createSendRight const): Ditto.
* Platform/mac/LayerHostingContext.h:
* Platform/mac/LayerHostingContext.mm:
* PluginProcess/PluginControllerProxy.h:
* PluginProcess/PluginProcess.h:
(WebKit::PluginProcess::compositingRenderServerPort const):
* Scripts/messages.py:
(headers_for_type): Update for new location of MachSendRight.
* Shared/Plugins/PluginProcessCreationParameters.h:
* Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::encode const):
* Shared/WebCoreArgumentCoders.h:
* Shared/WebProcessCreationParameters.h:
* Shared/mac/WebCoreArgumentCodersMac.mm:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
* UIProcess/DrawingAreaProxy.cpp:
* UIProcess/DrawingAreaProxy.h:
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::ProcessLauncher::launchProcess): Ditto. Remove uneeded mach_port_dealloc called after
xpc_dictionary_set_mach_send. While '..._set_mach_send' retains the send right, it gets automatically
released when the message is handled. We only want to manually deallocate the send right if
the message failed to send.
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
* UIProcess/mac/WKViewLayoutStrategy.mm:
* WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
* WebProcess/Plugins/Netscape/NetscapePlugin.h:
* WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
* WebProcess/Plugins/PluginController.h:
* WebProcess/Plugins/PluginView.h:
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::addFence):
(WebKit::DrawingArea::updateGeometry):
* WebProcess/WebPage/DrawingArea.messages.in:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setTopContentInsetFenced):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
* WebProcess/WebProcess.h:
(WebKit::WebProcess::compositingRenderServerPort const):
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::setVideoLayerFrameFenced):
2018-04-04 Beth Dakin <bdakin@apple.com>
Fix the print formatter build
https://bugs.webkit.org/show_bug.cgi?id=184289
-and corresponding-
rdar://problem/39164641
Reviewed by Dan Bernstein.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _webViewPrintFormatter]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/_WKWebViewPrintFormatter.h:
* UIProcess/_WKWebViewPrintFormatter.mm:
* UIProcess/_WKWebViewPrintFormatterInternal.h:
* UIProcess/ios/WKContentView.mm:
* UIProcess/ios/WKPDFView.mm:
2018-04-04 Andy Estes <aestes@apple.com>
[iOS] Rename WKPDFView to WKLegacyPDFView
https://bugs.webkit.org/show_bug.cgi?id=184286
Rubber-stamped by Wenson Hsieh.
A series of upcoming patches will implement a new WKPDFView based on PDFKit.
* UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
(-[WKWebViewContentProviderRegistry init]):
* UIProcess/ios/WKLegacyPDFView.h: Renamed from Source/WebKit/UIProcess/ios/WKPDFView.h.
* UIProcess/ios/WKLegacyPDFView.mm: Renamed from Source/WebKit/UIProcess/ios/WKPDFView.mm.
(-[WKLegacyPDFView _computeMatchesForString:options:maxCount:completionHandler:]):
* WebKit.xcodeproj/project.pbxproj:
2018-04-04 Yousuke Kimoto <yousuke.kimoto@sony.com> and Fujii Hironori <Hironori.Fujii@sony.com>
[WinCairo] Add WebKit Shared/win files for wincairo webkit
https://bugs.webkit.org/show_bug.cgi?id=183044
Reviewed by Alex Christensen.
* Shared/win/ChildProcessMainWin.cpp: Added.
2018-04-04 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Remove effective font size constraints when determining focus zoom scale
https://bugs.webkit.org/show_bug.cgi?id=184287
<rdar://problem/39063886>
Reviewed by Timothy Hatcher.
As it turns out, form controls on some important websites can be very wide, with a small font size, which
renders the approach taken in <https://trac.webkit.org/r230171> moot, since we'll just end up zooming to a scale
that is too large anyways. To mitigate this for now, remove the minimum font scaling threshold while we think of
more clever ways to account for this scenario.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
2018-04-04 Fujii Hironori <Hironori.Fujii@sony.com>
[Win] WebFrameLoaderClient: 'getpid': identifier not found
https://bugs.webkit.org/show_bug.cgi?id=184291
Reviewed by Konstantin Tokarev.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
Use WTF::getCurrentProcessID() instead of getpid().
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
2018-04-03 Carlos Garcia Campos <cgarcia@igalia.com>
ASSERTION FAILED: !m_mainFrame->coreFrame()->loader().frameHasLoaded() || !m_pendingNavigationID when reloading page while a page is loading
https://bugs.webkit.org/show_bug.cgi?id=153210
Reviewed by Alex Christensen.
The assert happens when WebPage::reload() is called twice and the first time the reload is ignored by
FrameLoader because the document URL is empty. In that case the pending navigation is not reset, because
FrameLoader::reload() returns before creating the document loader.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::reload): Check if the pending navigation has been reset after calling FrameLoader::reload()
and reset it otherwise.
2018-04-03 Youenn Fablet <youenn@apple.com>
Make NetworkProcess get ContentBlocker information from UIProcess
https://bugs.webkit.org/show_bug.cgi?id=184205
<rdar://problem/39146551>
Unreviewed.
Updated decode/encode methods to not hit null identifier assertion.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageGroupData.cpp:
(WebKit::WebPageGroupData::encode const):
(WebKit::WebPageGroupData::decode):
2018-04-03 Andy Estes <aestes@apple.com>
[iOS] WKWebView shouldn't know about WKPDFView
https://bugs.webkit.org/show_bug.cgi?id=184283
Reviewed by Timothy Hatcher.
WKWebView shouldn't be checking if _customContentView is a particular kind of
class (e.g., WKPDFView). Instead, it should interact with the _customContentView
using the WKWebViewContentProvider protocol.
Reimplement -_isBackground, -_isDisplayingPDF, -_dataForDisplayedPDF, and
-_suggestedFilenameForDisplayedPDF using new WKWebViewContentProvider protocol
methods that WKPDFView implements.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _isBackground]):
(-[WKWebView _isDisplayingPDF]):
(-[WKWebView _dataForDisplayedPDF]):
(-[WKWebView _suggestedFilenameForDisplayedPDF]):
* UIProcess/Cocoa/WKWebViewContentProvider.h:
* UIProcess/ios/WKPDFView.h:
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView web_dataRepresentation]):
(-[WKPDFView web_suggestedFilename]):
(-[WKPDFView web_isBackground]):
(-[WKPDFView suggestedFilename]): Deleted.
(-[WKPDFView pdfDocument]): Deleted.
(-[WKPDFView isBackground]): Deleted.
2018-04-03 Brent Fulgham <bfulgham@apple.com>
Guard against keychain/certificate access outside the network process
https://bugs.webkit.org/show_bug.cgi?id=184214
<rdar://problem/38734795>
Reviewed by Youenn Fablet.
Use the ProcessPrivilege assertions to guard against accessing the Keychain from
a non-Networking process.
* Shared/cf/ArgumentCodersCF.cpp:
(IPC::encode): Assert if we access the keychain from a proces other than the Network or UI process.
(IPC::decode): Ditto.
2018-04-03 Youenn Fablet <youenn@apple.com>
NetworkResourceLoader does not need to expose all redirect response headers
https://bugs.webkit.org/show_bug.cgi?id=184114
<rdar://problem/39010557>
Reviewed by Ryosuke Niwa.
WebProcess instructs NetworkProcess whether to sanitize response headers based on a runtime flag.
We sanitize redirection response headers in case this is not related to a navigation load.
Navigation loads may currently require the full response for content blockers.
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::willSendRedirectedRequest):
(WebKit::NetworkResourceLoader::sanitizeRedirectResponseIfPossible):
(WebKit::NetworkResourceLoader::dispatchWillSendRequestForCacheEntry):
* NetworkProcess/NetworkResourceLoader.h:
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetRestrictedHTTPResponseAccess):
(WKPreferencesGetRestrictedHTTPResponseAccess):
* UIProcess/API/C/WKPreferencesRef.h:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
(WebKit::WebLoaderStrategy::startPingLoad):
(WebKit::WebLoaderStrategy::preconnectTo):
2018-04-03 Youenn Fablet <youenn@apple.com>
Make NetworkProcess get ContentBlocker information from UIProcess
https://bugs.webkit.org/show_bug.cgi?id=184205
Reviewed by Alex Christensen.
Make NetworkProcess get content blockers from UIProcess directly.
Before that patch, WebProcess sent content blockers to NetworkProcess for each PingLoad.
Instead, WebProcess sends the content blocker identifier for each PingLoad and NetworkProcess fetches the content blocker once.
This is both more efficient than passing them for each PingLoad and safer in the sense
that a compromised WebProcess will not be able to bypass any of these.
In the future, NetworkProcess should get the content blocker identifier directly from the WebPageID attached to the request.
Covered by existing beacon+content blocker tests.
Did some refactoring to add a typed content blocker identifier.
Once NetworkProcess fetches a given content blocker, the content blocker will send any modification to NetworkProcess.
Introduced NetworkContentRuleListManager to handle the content blockers in NetworkProcess.
* CMakeLists.txt:
* DerivedSources.make:
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkRequest):
(WebKit::NetworkLoadChecker::continueCheckingRequest):
(WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad):
* NetworkProcess/NetworkLoadChecker.h:
(WebKit::NetworkLoadChecker::setContentExtensionController):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::didReceiveMessage):
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::networkUserContentController):
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkContentRuleListManager.cpp: Added.
(WebKit::NetworkContentRuleListManager::contentExtensionsBackend):
(WebKit::NetworkContentRuleListManager::addContentRuleLists):
(WebKit::NetworkContentRuleListManager::removeContentRuleList):
(WebKit::NetworkContentRuleListManager::removeAllContentRuleLists):
(WebKit::NetworkContentRuleListManager::remove):
* NetworkProcess/NetworkContentRuleListManager.h: Added.
* NetworkProcess/NetworkContentRuleListManager.messages.in: Added.
* NetworkProcess/PingLoad.cpp:
* Scripts/webkit/messages.py:
* Shared/UserContentControllerIdentifier.h: Added.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* Shared/WebPageGroupData.cpp:
(WebKit::WebPageGroupData::decode):
* Shared/WebPageGroupData.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::~NetworkProcessProxy):
(WebKit::NetworkProcessProxy::contentExtensionRules):
(WebKit::NetworkProcessProxy::didDestroyWebUserContentControllerProxy):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/UserContent/WebUserContentControllerProxy.cpp:
(WebKit::WebUserContentControllerProxy::get):
(WebKit::WebUserContentControllerProxy::WebUserContentControllerProxy):
(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::create):
(WebKit::WebUserContentControllerProxy::addNetworkProcess):
(WebKit::WebUserContentControllerProxy::removeNetworkProcess):
(WebKit::WebUserContentControllerProxy::contentExtensionRules):
(WebKit::WebUserContentControllerProxy::identifier const):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::startPingLoad):
* WebProcess/UserContent/WebUserContentController.cpp:
(WebKit::WebUserContentController::getOrCreate):
(WebKit::WebUserContentController::WebUserContentController):
(WebKit::WebUserContentController::~WebUserContentController):
* WebProcess/UserContent/WebUserContentController.h:
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::userContentControllerIdentifier const):
2018-04-03 Andy Estes <aestes@apple.com>
[Mac] Prioritize file promises over filenames during drag and drop
https://bugs.webkit.org/show_bug.cgi?id=184237
<rdar://problem/38278076>
Reviewed by Wenson Hsieh.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):
2018-04-03 Brady Eidson <beidson@apple.com>
Make SessionStorage work with process swapping.
https://bugs.webkit.org/show_bug.cgi?id=184270
Reviewed by Andy Estes.
Due to a minor process accounting error, WebPageProxys weren't always being reconnected with their
WebsiteDataStore's StorageManager when doing process swaps.
Fix that error, and SessionStorage "just works."
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::webProcessWillShutDown):
(WebKit::WebPageProxy::processDidTerminate): For NavigationSwap termination, make sure to tell the
process lifetime tracker that this page was removed.
* UIProcess/WebProcessLifetimeObserver.h:
(WebKit::WebProcessLifetimeObserver::webPageWasInvalidated): Renamed from "webPageWasRemoved"
(WebKit::WebProcessLifetimeObserver::webPageWasRemoved): Deleted.
* UIProcess/WebProcessLifetimeTracker.cpp:
(WebKit::WebProcessLifetimeTracker::webPageLeavingWebProcess): Renamed from "webProcessWillShutDown"
(WebKit::WebProcessLifetimeTracker::pageWasInvalidated):
(WebKit::WebProcessLifetimeTracker::webProcessWillShutDown): Deleted.
* UIProcess/WebProcessLifetimeTracker.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::webPageWasInvalidated):
(WebKit::WebsiteDataStore::webPageWasRemoved): Deleted.
* UIProcess/WebsiteData/WebsiteDataStore.h:
2018-04-03 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r230210.
https://bugs.webkit.org/show_bug.cgi?id=184277
it is breaking internal bots (Requested by youenn on #webkit).
Reverted changeset:
"Make NetworkProcess get ContentBlocker information from
UIProcess"
https://bugs.webkit.org/show_bug.cgi?id=184205
https://trac.webkit.org/changeset/230210
2018-04-03 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Update time picker to use platform view controller
https://bugs.webkit.org/show_bug.cgi?id=184252
<rdar://problem/38804795>
Reviewed by Andy Estes.
Adjust for some small WKTimePickerViewController changes, and remove some files that we no longer need.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView presentViewControllerForCurrentAssistedNode]):
(-[WKContentView textInputController:didCommitText:]): Deleted.
(-[WKContentView textInputController:didCommitText:withSuggestion:]): Deleted.
(-[WKContentView textInputControllerDidRequestDismissal:]): Deleted.
* UIProcess/ios/forms/WKTextFormControlViewController.h: Removed.
* UIProcess/ios/forms/WKTextFormControlViewController.mm: Removed.
* UIProcess/ios/forms/WKTextSuggestionButton.h: Removed.
* UIProcess/ios/forms/WKTextSuggestionButton.mm: Removed.
* WebKit.xcodeproj/project.pbxproj:
2018-04-03 Ross Kirsling <ross.kirsling@sony.com>
Xcode prepends line comments from WTF/Compiler.h to *.sb files
https://bugs.webkit.org/show_bug.cgi?id=184166
Reviewed by Brent Fulgham.
* DerivedSources.make:
Strip ;-comments from *.sb.in files before preprocessing so we can stop treating Platform.h/Compiler.h as C89.
2018-04-03 Chris Dumez <cdumez@apple.com>
Drop MainFrame class
https://bugs.webkit.org/show_bug.cgi?id=184191
Reviewed by Darin Adler.
Drop MainFrame class and move contents into Page / Frame since there is a 1:1
relationship between the Page and the MainFrame.
This is ground work for introducing LocalFrame / RemoteFrame concepts.
* Shared/WebRenderLayer.cpp:
* Shared/WebRenderObject.cpp:
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::paymentCoordinator):
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
* WebProcess/FullScreen/WebFullScreenManager.cpp:
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageInstallPageOverlay):
(WKBundlePageUninstallPageOverlay):
(WKBundlePageInstallPageOverlayWithAnimation):
(WKBundlePageUninstallPageOverlayWithAnimation):
* WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
* WebProcess/Plugins/PluginView.cpp:
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
* WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
(WebKit::WebInspectorClient::~WebInspectorClient):
(WebKit::WebInspectorClient::highlight):
(WebKit::WebInspectorClient::hideHighlight):
(WebKit::WebInspectorClient::showPaintRect):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
* WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp:
* WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
* WebProcess/WebPage/FindController.cpp:
(WebKit::FindController::updateFindUIAfterPageScroll):
(WebKit::FindController::hideFindUI):
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updatePreferences):
* WebProcess/WebPage/WKAccessibilityWebPageObjectIOS.mm:
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
* WebProcess/WebPage/WebFrame.cpp:
* WebProcess/WebPage/WebInspector.cpp:
* WebProcess/WebPage/WebInspectorFrontendAPIDispatcher.cpp:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::mainFrame const):
(WebKit::WebPage::determinePrimarySnapshottedPlugIn):
(WebKit::WebPage::plugInIntersectsSearchRect):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/atk/WebPageAccessibilityObjectAtk.cpp:
* WebProcess/WebPage/ios/FindControllerIOS.mm:
* WebProcess/WebPage/ios/WebPageIOS.mm:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updatePreferences):
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
(-[WKAccessibilityWebPageObject accessibilityParameterizedAttributeNames]):
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::performImmediateActionHitTestAtLocation):
(WebKit::WebPage::dataDetectorsDidPresentUI):
(WebKit::WebPage::dataDetectorsDidChangeUI):
(WebKit::WebPage::dataDetectorsDidHideUI):
* WebProcess/WebProcess.cpp:
* WebProcess/WebStorage/StorageAreaMap.cpp:
2018-04-03 Youenn Fablet <youenn@apple.com>
Make NetworkProcess get ContentBlocker information from UIProcess
https://bugs.webkit.org/show_bug.cgi?id=184205
Reviewed by Alex Christensen.
Make NetworkProcess get content blockers from UIProcess directly.
Before that patch, WebProcess sent content blockers to NetworkProcess for each PingLoad.
Instead, WebProcess sends the content blocker identifier for each PingLoad and NetworkProcess fetches the content blocker once.
This is both more efficient than passing them for each PingLoad and safer in the sense
that a compromised WebProcess will not be able to bypass any of these.
In the future, NetworkProcess should get the content blocker identifier directly from the WebPageID attached to the request.
Covered by existing beacon+content blocker tests.
Did some refactoring to add a typed content blocker identifier.
Once NetworkProcess fetches a given content blocker, the content blocker will send any modification to NetworkProcess.
Introduced NetworkContentRuleListManager to handle the content blockers in NetworkProcess.
* CMakeLists.txt:
* DerivedSources.make:
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkRequest):
(WebKit::NetworkLoadChecker::continueCheckingRequest):
(WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad):
* NetworkProcess/NetworkLoadChecker.h:
(WebKit::NetworkLoadChecker::setContentExtensionController):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::didReceiveMessage):
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::networkUserContentController):
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkContentRuleListManager.cpp: Added.
(WebKit::NetworkContentRuleListManager::contentExtensionsBackend):
(WebKit::NetworkContentRuleListManager::addContentRuleLists):
(WebKit::NetworkContentRuleListManager::removeContentRuleList):
(WebKit::NetworkContentRuleListManager::removeAllContentRuleLists):
(WebKit::NetworkContentRuleListManager::remove):
* NetworkProcess/NetworkContentRuleListManager.h: Added.
* NetworkProcess/NetworkContentRuleListManager.messages.in: Added.
* NetworkProcess/PingLoad.cpp:
* Scripts/webkit/messages.py:
* Shared/UserContentControllerIdentifier.h: Added.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* Shared/WebPageGroupData.cpp:
(WebKit::WebPageGroupData::decode):
* Shared/WebPageGroupData.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::~NetworkProcessProxy):
(WebKit::NetworkProcessProxy::contentExtensionRules):
(WebKit::NetworkProcessProxy::didDestroyWebUserContentControllerProxy):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/UserContent/WebUserContentControllerProxy.cpp:
(WebKit::WebUserContentControllerProxy::get):
(WebKit::WebUserContentControllerProxy::WebUserContentControllerProxy):
(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::create):
(WebKit::WebUserContentControllerProxy::addNetworkProcess):
(WebKit::WebUserContentControllerProxy::removeNetworkProcess):
(WebKit::WebUserContentControllerProxy::contentExtensionRules):
(WebKit::WebUserContentControllerProxy::identifier const):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::startPingLoad):
* WebProcess/UserContent/WebUserContentController.cpp:
(WebKit::WebUserContentController::getOrCreate):
(WebKit::WebUserContentController::WebUserContentController):
(WebKit::WebUserContentController::~WebUserContentController):
* WebProcess/UserContent/WebUserContentController.h:
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::userContentControllerIdentifier const):
2018-04-02 Beth Dakin <bdakin@apple.com>
Fix the managed configurations build
https://bugs.webkit.org/show_bug.cgi?id=184253
-and corresponding-
rdar://problem/39078586
Reviewed by Dan Bernstein.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView canPerformActionForWebView:withSender:]):
(-[WKContentView _defineForWebView:]):
2018-04-02 Carlos Garcia Campos <cgarcia@igalia.com>
[Enchant] Clean up TextCheckerEnchant
https://bugs.webkit.org/show_bug.cgi?id=184233
Reviewed by Michael Catanzaro.
Use TextCheckerEnchant as a singleton now, instead of implementing the singleton here.
* UIProcess/gtk/TextCheckerGtk.cpp:
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
(WebKit::TextChecker::setSpellCheckingLanguages):
(WebKit::TextChecker::loadedSpellCheckingLanguages):
(WebKit::enchantTextChecker): Deleted.
2018-04-03 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] NetworkProcess from WebKitGtk+ 2.19.9x SIGSEVs in NetworkStorageSession (secret search callback)
https://bugs.webkit.org/show_bug.cgi?id=183346
Reviewed by Michael Catanzaro.
Pass the request cancellable to NetworkStorageSession::getCredentialFromPersistentStorage().
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::authenticate):
2018-04-02 Brady Eidson <beidson@apple.com>
Process swapping on navigation needs to handle server redirects.
<rdar://problem/38690465> and https://bugs.webkit.org/show_bug.cgi?id=184142
Reviewed by Alex Christensen.
The same rules we apply to process swapping for basic navigations need to apply
to server redirects as well.
There's three interesting cases we need to support that are covered by new API tests:
1 - The initial load in a WKWebView redirects cross-origin.
2 - A WKWebView is showing content from a.com, we start a load to b.com, and that redirects to c.com
3 - A WKWebView is showing content from a.com, we start a load to a.com, that that redirects to b.com.
Supporting all 3 of these brought their own little challenges.
By teaching Navigation objects more about redirects I was able to support all 3 cases.
* UIProcess/API/APINavigation.cpp:
(API::Navigation::Navigation):
(API::Navigation::setCurrentRequest):
(API::Navigation::appendRedirectionURL):
(API::Navigation::loggingString const):
(API::Navigation::loggingURL const): Deleted.
* UIProcess/API/APINavigation.h:
(API::Navigation::originalRequest const):
(API::Navigation::currentRequest const):
(API::Navigation::currentRequestProcessIdentifier const):
(API::Navigation::setCurrentRequestIsRedirect):
(API::Navigation::currentRequestIsRedirect const):
(API::Navigation::request const): Deleted.
* UIProcess/API/Cocoa/WKNavigation.mm:
(-[WKNavigation _request]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess): If this continued navigation is currently in a server
redirect, save off a lambda to synthesize a "did receive server redirect" callback once the new WebProcess is running.
(WebKit::WebPageProxy::didCreateMainFrame):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame): Possibly ignore this notification if it is really a
cross-origin redirect that is just starting back up in a new WebProcess.
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::resetStateAfterProcessExited): Do not clear pageLoadState if the process is exitting for
a navigation swap, as we will need to pick up where we left off when the load continues in a new WebProcess.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation): If a process has never committed any provisional load, it can always
be used to continue a navigation.
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::didCommitProvisionalLoad):
(WebKit::WebProcessProxy::hasCommittedAnyProvisionalLoads const):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
2018-04-02 Eric Carlson <eric.carlson@apple.com>
[Extra zoom mode] Replace video with a placeholder image during fullscreen transition
https://bugs.webkit.org/show_bug.cgi?id=184188
<rdar://problem/38940307>
Reviewed by Youenn Fablet.
* UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.messages.in:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(WebKit::VideoFullscreenModelContext::willExitFullscreen):
(WebKit::VideoFullscreenManagerProxy::preparedToExitFullscreen):
(WebKit::VideoFullscreenManagerProxy::willExitFullscreen):
* WebProcess/cocoa/VideoFullscreenManager.h:
* WebProcess/cocoa/VideoFullscreenManager.messages.in:
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::willExitFullscreen):
2018-04-02 Brian Burg <bburg@apple.com>
[Cocoa] Fix some internal builds that consume WebDriver atoms
https://bugs.webkit.org/show_bug.cgi?id=184197
Reviewed by Dan Bernstein.
* WebKit.xcodeproj/project.pbxproj:
Use a Run Script phase to copy WebDriver atoms to WebKit.framework
private headers during the installhdrs phase.
2018-04-02 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r230174.
Caused LayoutTests to exit early with assertion failures.
Reverted changeset:
"Process swapping on navigation needs to handle server
redirects."
https://bugs.webkit.org/show_bug.cgi?id=184142
https://trac.webkit.org/changeset/230174
2018-04-02 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Update date picker UI to latest specifications
https://bugs.webkit.org/show_bug.cgi?id=184234
<rdar://problem/38804760>
Reviewed by Timothy Hatcher.
Rename WKTextFormControlListViewControllerDelegate to WKTextInputListViewControllerDelegate and adjust for the
new initializer of WKDatePickerViewController.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView presentViewControllerForCurrentAssistedNode]):
2018-04-02 Brady Eidson <beidson@apple.com>
Process swapping on navigation needs to handle server redirects.
<rdar://problem/38690465> and https://bugs.webkit.org/show_bug.cgi?id=184142
Reviewed by Alex Christensen.
The same rules we apply to process swapping for basic navigations need to apply
to server redirects as well.
There's three interesting cases we need to support that are covered by new API tests:
1 - The initial load in a WKWebView redirects cross-origin.
2 - A WKWebView is showing content from a.com, we start a load to b.com, and that redirects to c.com
3 - A WKWebView is showing content from a.com, we start a load to a.com, that that redirects to b.com.
Supporting all 3 of these brought their own little challenges.
By teaching Navigation objects more about redirects I was able to support all 3 cases.
* UIProcess/API/APINavigation.cpp:
(API::Navigation::Navigation):
(API::Navigation::setCurrentRequest):
(API::Navigation::appendRedirectionURL):
(API::Navigation::loggingString const):
(API::Navigation::loggingURL const): Deleted.
* UIProcess/API/APINavigation.h:
(API::Navigation::originalRequest const):
(API::Navigation::currentRequest const):
(API::Navigation::currentRequestProcessIdentifier const):
(API::Navigation::setCurrentRequestIsRedirect):
(API::Navigation::currentRequestIsRedirect const):
(API::Navigation::request const): Deleted.
* UIProcess/API/Cocoa/WKNavigation.mm:
(-[WKNavigation _request]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess): If this continued navigation is currently in a server
redirect, save off a lambda to synthesize a "did receive server redirect" callback once the new WebProcess is running.
(WebKit::WebPageProxy::didCreateMainFrame):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame): Possibly ignore this notification if it is really a
cross-origin redirect that is just starting back up in a new WebProcess.
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::resetStateAfterProcessExited): Do not clear pageLoadState if the process is exitting for
a navigation swap, as we will need to pick up where we left off when the load continues in a new WebProcess.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation): If a process has never committed any provisional load, it can always
be used to continue a navigation.
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::didCommitProvisionalLoad):
(WebKit::WebProcessProxy::hasCommittedAnyProvisionalLoads const):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
2018-04-02 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Zoom level is sometimes excessive when zooming to focused form controls
https://bugs.webkit.org/show_bug.cgi?id=184222
<rdar://problem/39063886>
Reviewed by Timothy Hatcher.
Upon interactively focusing an element, we zoom and scroll to reveal that element. The heuristics introduced in
<https://trac.webkit.org/r168744> work by computing a target scale, and then a point to zoom to given that
scale. Currently, this scale is dependent on the computed font size of the form control, such that the form
control would be scaled to have an effective font size of 16.
However, in extra zoom mode, applying these same heuristics (ironically) results in excessive zoom levels, since
scaling the font up to 16 would cause most form controls to zoom so far in that we lose context of surrounding
elements such as labels and other form controls; the fact that the element is highlighted by the focused form
control overlay makes this even more confusing, since part of the focus overlay highlight rect often ends up
outside the viewport.
To fix this, we make a couple of tweaks to focus rect zooming in extra zoom mode. (1) Instead of computing
target zoom level based on font size, try to zoom such that the focused element rect fills up most of the
viewport (similar to double-tap zooming). This ensures that the focused form control overlay's highlight rect
makes sense in most cases, with few exceptions (e.g. the element frame is larger than the viewport). (2)
Introduce a minimum legible font size of 11, and compute the minimium scale needed such that the form control
font would appear to be at least this legible font size. Then, clamp the target scale chosen by (1) to this
minimum scale.
One additional consideration for (1) is that naively scaling to fit the element rect to the viewport (with some
fixed margins) would cause the viewport scale to always change when moving focus between form controls of
different dimensions, even if the current scale is more or less appropriate for all the focusable elements. To
address this, instead of computing a single target zoom scale for an element rect, compute a range of possible
target zoom scales (where the minimum and maximum values depend on the margin we add around the element rect).
If the current scale already falls within this target scale range, then we won't bother adjusting the scale at
all (unless the font size is too small — see (2)). If the current scale falls outside the target scale range, we
then make the minimal adjustment needed to ensure that the element rect fits well within the viewport without
being too small.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _zoomToFocusRect:selectionRect:insideFixed:fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
Move some logic around so that the target scale is computed after computing the visible size. Also renames some
constants local to this function (WKWebViewStandardFontSize, kMinimumHeightToShowContentAboveKeyboard,
UIWebFormAnimationDuration, CaretOffsetFromWindowEdge) such that they now share a consistent naming style.
2018-04-02 Jer Noble <jer.noble@apple.com>
Enable Legacy EME for all WebKit & WebKitLegacy clients
https://bugs.webkit.org/show_bug.cgi?id=184018
<rdar://problem/34887387>
Reviewed by Eric Carlson.
* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
2018-04-02 Jer Noble <jer.noble@apple.com>
REGRESSION (229680): Fullscreen video does not work (youtube, netflix)
https://bugs.webkit.org/show_bug.cgi?id=184235
Reviewed by Eric Carlson.
Enable the Fullscreen API by default.
* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
2018-04-02 Fujii Hironori <Hironori.Fujii@sony.com>
[Win] MSVC can't compile WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent
https://bugs.webkit.org/show_bug.cgi?id=184120
Reviewed by Alex Christensen.
It seems that MSVC can't compile the code using `this` in a
generalized lambda capture in another lambda.
In this case, there is no need to copy `protectedThis` for the
inner lambda. Move `protectedThis` of the outer lambda to the
inner as well as `callback`.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
Moved `protectedThis` from the outer lambda to the inner.
2018-04-02 Dan Bernstein <mitz@apple.com>
Build fix after r230121
* Configurations/WebKit.xcconfig: Disabled framework header postprocessing when building for
iOS 11.*
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: Reverted r230159.
2018-04-02 Dan Bernstein <mitz@apple.com>
Fixed the build when BOOL is not bool.
<rdar://problem/39094484>
Reviewed by Jer Noble.
* UIProcess/ios/fullscreen/WKFullScreenViewController.mm:
(-[WKFullScreenViewController videoControlsManagerDidChange]): Removed the write-only ivar
_hasControlsManager, the assignment to which was causing the compiler error.
2018-04-02 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed build fix.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h: Update availability annotation.
2018-04-02 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] DragAndDropHandler.cpp should include GUniquePtrGtk.h
https://bugs.webkit.org/show_bug.cgi?id=184119
Reviewed by Daniel Bates.
* UIProcess/gtk/DragAndDropHandler.cpp:
2018-04-02 Frederic Wang <fwang@igalia.com>
Fix warnings for unused lambda captures in Source/WebKit
https://bugs.webkit.org/show_bug.cgi?id=173555
Reviewed by Konstantin Tokarev.
When release logs are disabled, several lambda captures are unused, causing compilation
failures with -Wunused-lambda-capture. This patch marks the corresponding variables as unused
in order to fix these warnings.
Based on initial patch by: Konstantin Tokarev <annulen@yandex.ru>
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::fetchWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::fetchWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteData):
(WebKit::WebProcessProxy::deleteWebsiteDataForOrigins):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView dragInteraction:willAnimateLiftWithAnimator:session:]):
2018-04-02 Alejandro G. Castro <alex@igalia.com>
[GTK] Make libwebrtc backend buildable for GTK port
https://bugs.webkit.org/show_bug.cgi?id=178860
Reviewed by Youenn Fablet.
* CMakeLists.txt: Add RTC network classes to the compilation and
the libwebrtc includes.
* PlatformGTK.cmake: Add the libwebrtc directory.
* SourcesGTK.txt: Add RTC files to the compilation.
2018-03-30 Chris Dumez <cdumez@apple.com>
REGRESSION (r229828): Facebook login popup is blank
https://bugs.webkit.org/show_bug.cgi?id=184206
<rdar://problem/39057006>
Reviewed by Wenson Hsieh.
Add assertion to make sure we never try to do a policy check to
a resource response while a policy check for a navigation is
pending. This assertion was being hit by several of our redirection
tests without my fix.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
2018-03-30 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r230125.
Build fix broke more builds.
Reverted changeset:
"Unreviewed build fix, remove unused lambda capture."
https://trac.webkit.org/changeset/230125
2018-03-30 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed build fix, remove unused lambda capture.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
2018-03-30 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Adopt list view controller UI for numeric input types
https://bugs.webkit.org/show_bug.cgi?id=184184
<rdar://problem/37238916>
Reviewed by Timothy Hatcher.
Remove existing logic for presenting a number pad view controller, since number pads will now be handled as a
special case of general text form controls in extra zoom mode.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView presentViewControllerForCurrentAssistedNode]):
(-[WKContentView dismissAllInputViewControllers]):
(-[WKContentView _wheelChangedWithEvent:]):
2018-03-30 Dan Bernstein <mitz@apple.com>
Update availability annotations to match the macOS 10.13.4 and iOS 11.3 GM SDKs
https://bugs.webkit.org/show_bug.cgi?id=184173
Reviewed by Alex Christensen.
Changed WK_MAC_TBA and WK_IOS_TBA to 10.13.4 and 11.3, respectively, in all declarations that
appear in the GM SDKs.
* Shared/API/Cocoa/_WKNSWindowExtras.h:
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/API/Cocoa/WKOpenPanelParameters.h:
* UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h:
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/WKWebsiteDataRecord.h:
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/API/Cocoa/_WKApplicationManifest.h:
* UIProcess/API/Cocoa/_WKAttachment.h:
* UIProcess/API/Cocoa/_WKAutomationSession.h:
* UIProcess/API/Cocoa/_WKAutomationSessionConfiguration.h:
* UIProcess/API/Cocoa/_WKDownload.h:
* UIProcess/API/Cocoa/_WKDownloadDelegate.h:
* UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
* UIProcess/API/Cocoa/_WKFullscreenDelegate.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
* UIProcess/API/Cocoa/_WKVisitedLinkStore.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
* WebProcess/InjectedBundle/API/mac/WKDOMDocument.h:
2018-03-30 Youenn Fablet <youenn@apple.com>
NetworkLoadChecker should upgrade redirects if needed
https://bugs.webkit.org/show_bug.cgi?id=184098
Reviewed by Chris Dumez.
In case of redirections, upgrade URL according CSP.
* NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::checkRequest):
(WebKit::NetworkLoadChecker::contentSecurityPolicy const):
2018-03-30 JF Bastien <jfbastien@apple.com>
Update messages.py codegen for String, fix tests
https://bugs.webkit.org/show_bug.cgi?id=184179
<rdar://problem/39041352>
Reviewed by Mark Lam.
I updated some of the code in
https://trac.webkit.org/changeset/230097 and auto-magically used a
script to update copyright headers... and that broke the tests
which checked for a particular date. Update all of the headers.
Part of this change updates the code generated by messages.py
* Scripts/webkit/LegacyMessageReceiver-expected.cpp:
* Scripts/webkit/MessageReceiver-expected.cpp:
* Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
* Scripts/webkit/MessagesSuperclass-expected.h:
* Scripts/webkit/messages.py:
* Scripts/webkit/messages_unittest.py:
(GeneratedFileContentsTest.assertGeneratedFileContentsEqual):
generate a better error message
2018-03-29 JF Bastien <jfbastien@apple.com>
Use Forward.h instead of forward-declaring WTF::String
https://bugs.webkit.org/show_bug.cgi?id=184172
<rdar://problem/39026146>
Reviewed by Yusuke Suzuki.
As part of #184164 I'm changing WTF::String, and the forward
declarations are just wrong because I'm making it templated. We
should use Forward.h anyways, so do that instead.
* Scripts/webkit/LegacyMessages-expected.h:
* Scripts/webkit/Messages-expected.h:
* Scripts/webkit/MessagesSuperclass-expected.h:
* UIProcess/WebOpenPanelResultListenerProxy.h:
2018-03-29 Brian Burg <bburg@apple.com>
Web Automation: clipToViewport is ignored for element screenshots
https://bugs.webkit.org/show_bug.cgi?id=184158
<rdar://problem/39014307>
Reviewed by Timothy Hatcher.
In §19.2 Take Element Screenshot, step 5.2 says that we should clip
the element screenshot rect with the visible viewport rect. We don't
do that right now even though we pass over clipToViewport.
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::snapshotRectForScreenshot):
Clip the rect to viewport if needed.
(WebKit::WebAutomationSessionProxy::takeScreenshot):
This scrollIntoView is misplaced; by this point we have already done
the math to figure out the screenshot rect. Move it before computing the rect.
2018-03-29 Brent Fulgham <bfulgham@apple.com>
REGRESSION(r230035): ASSERT(MACH_PORT_VALID(m_sendPort)) hit in IPC::Connection::initializeSendSource()
https://bugs.webkit.org/show_bug.cgi?id=184122
<rdar://problem/39003606>
Reviewed by Chris Dumez.
One of the new assertions added in r230035 begin firing while running tests locally. This was happening
because the WebInspector was attempting to open a new connection to a web process that had already
terminated its mach port connection (a dead port).
We should avoid opening new connections when the port we were given is already dead.
* Platform/IPC/Connection.h:
(IPC::Connection::identifierIsValid): Added.
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::platformInitialize): Do not perform initialization on a dead (or null) port.
(IPC::Connection::open): Add some assertions that ports are in a valid state.
(IPC::Connection::sendOutgoingMessage): Assert that the send port is not dead.
(IPC::Connection::receiveSourceEventHandler): Assert that the receive port is valid.
* UIProcess/ChildProcessProxy.cpp:
(WebKit::ChildProcessProxy::didFinishLaunching): Treat a dead port as a signal that the
child process failed to launch.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didFinishLaunching): Ditto.
* UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::PluginProcessProxy::didFinishLaunching): Ditto.
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::didFinishLaunching): Ditto.
* WebProcess/Plugins/PluginProcessConnectionManager.cpp:
(WebKit::PluginProcessConnectionManager::getPluginProcessConnection): Ditto.
* WebProcess/WebPage/WebInspectorUI.cpp:
(WebKit::WebInspectorUI::establishConnection): Ditto.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::ensureNetworkProcessConnection): Ditto.
(WebKit::WebProcess::ensureWebToStorageProcessConnection): Ditto.
2018-03-29 Youenn Fablet <youenn@apple.com>
Synchronize SecurityOrigin related scheme registries with NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=184140
Reviewed by Chris Dumez.
Add syncing of scheme registries that are used by SecurityOrigin and ContentSecurityPolicy
so that we can properly use them in NetworkProcess as we do in WebProcess.
The registries that are not synced are:
- URLSchemeAsEmptyDocument
- URLSchemeDomainRelaxationForbidden
- URLSchemeAsCachePartitioned
- URLSchemeAsCanDisplayOnlyIfCanRequest
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::registerURLSchemeAsSecure const):
(WebKit::NetworkProcess::registerURLSchemeAsBypassingContentSecurityPolicy const):
(WebKit::NetworkProcess::registerURLSchemeAsLocal const):
(WebKit::NetworkProcess::registerURLSchemeAsNoAccess const):
(WebKit::NetworkProcess::registerURLSchemeAsDisplayIsolated const):
(WebKit::NetworkProcess::registerURLSchemeAsCORSEnabled const):
(WebKit::NetworkProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest const):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::registerURLSchemeAsSecure):
(WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):
(WebKit::WebProcessPool::registerURLSchemeAsLocal):
(WebKit::WebProcessPool::registerURLSchemeAsNoAccess):
(WebKit::WebProcessPool::registerURLSchemeAsDisplayIsolated):
(WebKit::WebProcessPool::registerURLSchemeAsCORSEnabled):
(WebKit::WebProcessPool::registerURLSchemeAsCanDisplayOnlyIfCanRequest):
2018-03-29 Brent Fulgham <bfulgham@apple.com>
REGRESSION(r229480): ERROR: Unhandled web process message 'WebCookieManager:SetHTTPCookieAcceptPolicy'
https://bugs.webkit.org/show_bug.cgi?id=184124
<rdar://problem/38998971>
Reviewed by Chris Dumez.
Cookie accept policy messages were still being sent to the WebContent process after
I removed cookie access in r229480. The WebContent process no longer recognizes these
messages, and generates logging to that effect.
This patch stops sending these unnecessary messages to the WebContent process. Only the
Network process needs to receive this information.
* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):
2018-03-29 Carlos Eduardo Ramalho <cadubentzen@gmail.com>
[WPE] Floating point exception in WebEventFactory::createWebWheelEvent
https://bugs.webkit.org/show_bug.cgi?id=184037
Reviewed by Žan Doberšek.
* Shared/wpe/WebEventFactory.cpp:
(WebKit::WebEventFactory::createWebWheelEvent): Use std::copysign() to avoid division by 0.
2018-03-28 Zalan Bujtas <zalan@apple.com>
Make it possible to override the screen size
https://bugs.webkit.org/show_bug.cgi?id=184111
<rdar://problem/38972181>
Reviewed by Tim Horton.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::overrideScreenSize):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::overrideScreenSize const):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::overrideScreenSize const):
2018-03-28 Chris Dumez <cdumez@apple.com>
Do process swap when opening a cross-origin URL via window.open(url, '_blank', 'noopener')
https://bugs.webkit.org/show_bug.cgi?id=183962
<rdar://problem/38817833>
Reviewed by Brady Eidson.
Swap WebProcess on for the initial navigation in a new Window that was opened
via window.open(), when the new URL is cross-origin compared to the opener's
origin. For now, we only swap process if 'noopener' property is set when calling
window.open(). This is because we do not support the remote DOMWindows yet.
* Shared/NavigationActionData.cpp:
(WebKit::NavigationActionData::encode const):
(WebKit::NavigationActionData::decode):
* Shared/NavigationActionData.h:
* UIProcess/API/APINavigation.h:
(API::Navigation::setIsCrossOriginWindowOpenNavigation):
(API::Navigation::isCrossOriginWindowOpenNavigation const):
(API::Navigation::setOpener):
(API::Navigation::opener const):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation):
* UIProcess/WebProcessPool.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
2018-03-28 Per Arne Vollan <pvollan@apple.com>
Adopt WEBPROCESS_WINDOWSERVER_BLOCKING compiler guard in WebProcess.
https://bugs.webkit.org/show_bug.cgi?id=183959
<rdar://problem/38965719>
Reviewed by Brent Fulgham.
Use the compile guard to guard the call to CGSSetDenyWindowServerConnections.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeProcess):
2018-03-28 Brent Fulgham <bfulgham@apple.com>
Unreviewed build fix after r230045.
* UIProcess/Launcher/mac/ProcessLauncherMac.mm: Add missing include (breaks iOS).
2018-03-28 Brent Fulgham <bfulgham@apple.com>
Protect against invalid mach ports returned by mach_port_request_notification
https://bugs.webkit.org/show_bug.cgi?id=184106
<rdar://problem/37865316>
Reviewed by Chris Dumez.
* Platform/IPC/Connection.h:
(IPC::Connection::Identifier::Identifier): Use default initializer syntax.
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::open): Drive-by-fix: Include formatted mach error message in logging.
(IPC::Connection::receiveSourceEventHandler): Check return value from 'mach_port_request_notification'
and clean up if it experienced an error.
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::ProcessLauncher::launchProcess): Ditto.
2018-03-28 Dean Jackson <dino@apple.com>
WKWebViewContentProvider shouldn't be a UIScrollViewDelegate
https://bugs.webkit.org/show_bug.cgi?id=184107
<rdar://problem/38967492>
Reviewed by Tim Horton.
There is no need for this class to be a UIScrollViewDelegate. Instead
the protocol should have an optional method that is effectively
scrollViewDidScroll.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView scrollViewDidScroll:]): Call web_scrollViewDidScroll
if it exists.
* UIProcess/Cocoa/WKWebViewContentProvider.h: Remove UIScrollViewDelegate
and add an optional web_scrollViewDidScroll.
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView web_scrollViewDidScroll:]): Renamed from scrollViewDidScroll.
(-[WKPDFView scrollViewDidScroll:]): Deleted.
* UIProcess/ios/WKSystemPreviewView.mm:
(-[WKSystemPreviewView scrollViewDidScroll:]): Deleted.
2018-03-28 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Make boosted text autosizing values switchable at runtime
https://bugs.webkit.org/show_bug.cgi?id=184092
<rdar://problem/38939917>
Reviewed by Tim Horton.
Add a private web view preference to switch between normal and boosted text autosizing mode. By default, we use
normal text autosizing values.
* Shared/WebPreferences.yaml:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setShouldEnableTextAutosizingBoost:]):
(-[WKPreferences _shouldEnableTextAutosizingBoost]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
2018-03-28 Brent Fulgham <bfulgham@apple.com>
Avoid uninitialized mach ports
https://bugs.webkit.org/show_bug.cgi?id=184090
<rdar://problem/37261129>
Reviewed by Chris Dumez.
It is possible for mach_port_allocate to return an error, but we rarely check its return value. The value
of the argument passed to mach_port_allocate is not guaranteed to be valid when it returns an error, so
there is a potential for us to try to use invalid ports.
We should always check return values, and ensure that the mach port variables we seek to initialize are
kept in a valid state.
Reviewed by Chris Dumez.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess): Initialize new port to a safe default and
check the return state of the allocation function.
* Platform/IPC/Connection.h:
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::open): Ditto.
(IPC::Connection::initializeSendSource): Ditto.
(IPC::readFromMachPort): Ditto.
(IPC::Connection::receiveSourceEventHandler): Ditto.
* Platform/SharedMemory.h:
* Platform/cocoa/SharedMemoryCocoa.cpp:
(WebKit::makeMemoryEntry): Ditto.
* Platform/mac/MachUtilities.cpp:
(setMachPortQueueLength): Ditto.
(setMachExceptionPort): Ditto.
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::createWebProcessConnection): Ditto.
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::createStorageToWebProcessConnection): Ditto.
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::ProcessLauncher::launchProcess): Ditto.
* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::openFrontendConnection): Ditto.
2018-03-28 Michael Catanzaro <mcatanzaro@igalia.com>
Fails to build webkitgtk+ after git-svn-id: http://svn.webkit.org/repository/webkit/trunk@229877 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=184081
Unreviewed, switch to use UNUSED_PARAM()
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
2018-03-28 Tim Horton <timothy_horton@apple.com>
Make use of HAVE(CORE_ANIMATION_RENDER_SERVER) in more places
https://bugs.webkit.org/show_bug.cgi?id=184072
<rdar://problem/38946530>
Reviewed by Dan Bernstein.
* Platform/mac/LayerHostingContext.mm:
(WebKit::LayerHostingContext::createForExternalHostingProcess):
* UIProcess/mac/ViewSnapshotStore.h:
* UIProcess/mac/ViewSnapshotStore.mm:
(WebKit::ViewSnapshot::clearImage):
2018-03-28 Wenson Hsieh <wenson_hsieh@apple.com>
Revert an unnecessary workaround when zooming focused form controls
https://bugs.webkit.org/show_bug.cgi?id=184067
<rdar://problem/38805254>
Reviewed by Tim Horton.
Reverts an unintended change introduced in r227984.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _displayFormNodeInputView]):
2018-03-28 Miguel Gomez <magomez@igalia.com>
[GTK][WPE] Remove UpdateAtlas
https://bugs.webkit.org/show_bug.cgi?id=184042
Reviewed by Žan Doberšek.
Remove all the code related to UpdateAtlas handling.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::updateTilesIfNeeded):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
(WebKit::CoordinatedGraphicsScene::syncUpdateAtlases): Deleted.
(WebKit::CoordinatedGraphicsScene::createUpdateAtlas): Deleted.
(WebKit::CoordinatedGraphicsScene::removeUpdateAtlas): Deleted.
(WebKit::CoordinatedGraphicsScene::releaseUpdateAtlases): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::renderLayerTree):
(WebKit::ThreadedCompositor::releaseUpdateAtlases): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::delegatedScrollRequested):
(WebKit::WebChromeClient::resetUpdateAtlasForTesting): Deleted.
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
(WebKit::AcceleratedDrawingArea::resetUpdateAtlasForTesting): Deleted.
* WebProcess/WebPage/AcceleratedDrawingArea.h:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::CompositingCoordinator):
(WebKit::CompositingCoordinator::flushPendingLayerChanges):
(WebKit::CompositingCoordinator::clearPendingStateChanges):
(WebKit::CompositingCoordinator::renderNextFrame):
(WebKit::CompositingCoordinator::purgeBackingStores):
(WebKit::CompositingCoordinator::createUpdateAtlas): Deleted.
(WebKit::CompositingCoordinator::removeUpdateAtlas): Deleted.
(WebKit::CompositingCoordinator::getCoordinatedBuffer): Deleted.
(): Deleted.
(WebKit::CompositingCoordinator::scheduleReleaseInactiveAtlases): Deleted.
(WebKit::CompositingCoordinator::releaseInactiveAtlasesTimerFired): Deleted.
(WebKit::CompositingCoordinator::releaseAtlases): Deleted.
(WebKit::CompositingCoordinator::clearUpdateAtlases): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::clearUpdateAtlases): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
(WebKit::ThreadedCoordinatedLayerTreeHost::releaseUpdateAtlases): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
* WebProcess/WebPage/DrawingArea.h:
* WebProcess/WebPage/LayerTreeHost.h:
(WebKit::LayerTreeHost::setIsDiscardable):
2018-03-28 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r229998): WebDriver: MiniBrowser is crashing in a lot of tests after r229998
https://bugs.webkit.org/show_bug.cgi?id=184075
Reviewed by Žan Doberšek.
This is because we are using a value after it has been moved.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::setWindowFrameOfBrowsingContext): Save a reference to page in a local variable
before using it when it's also going to be moved in the lambda capture.
2018-03-27 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix typo in variable name
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseCrossingNotifyEvent):
2018-03-27 Per Arne Vollan <pvollan@apple.com>
The layout test fast/canvas/webgl/read-pixels-test.html is timing out.
https://bugs.webkit.org/show_bug.cgi?id=183923
<rdar://problem/38756869>
Reviewed by Brent Fulgham.
Send OpenGL display mask to the WebContent process when the display ID is changing.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::windowScreenDidChange):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::openGLDisplayMaskChanged):
2018-03-27 Youenn Fablet <youenn@apple.com>
Move request checking out of PingLoad for future reuse in NetworkLoad
https://bugs.webkit.org/show_bug.cgi?id=183865
Reviewed by Chris Dumez.
Introduce NetworkLoadChecker as a way to validate requests before sending them in the network process.
Validation encompasses: CORS checks, CSP and Content Extensions on both main request and redirected requests if any.
Make PingLoad use NetworkLoadChecker. Future patch should make NetworkLoad to use it as well whenever needed.
Make NetworkCORSPreflightChecker takes a CompletionHandler instead of a Function.
Ensure this callback is called even if preflight is not completed by returning a Canceled error.
* NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::~NetworkCORSPreflightChecker):
(WebKit::NetworkCORSPreflightChecker::returnResult):
(WebKit::NetworkCORSPreflightChecker::willPerformHTTPRedirection):
(WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
(WebKit::NetworkCORSPreflightChecker::didCompleteWithError):
* NetworkProcess/NetworkCORSPreflightChecker.h:
* NetworkProcess/NetworkLoadChecker.cpp: Added.
(WebKit::NetworkLoadChecker::NetworkLoadChecker):
(WebKit::NetworkLoadChecker::check):
(WebKit::NetworkLoadChecker::checkRedirection):
(WebKit::NetworkLoadChecker::returnError):
(WebKit::NetworkLoadChecker::checkRequest):
(WebKit::NetworkLoadChecker::checkCORSRequest):
(WebKit::NetworkLoadChecker::checkCORSRedirectedRequest):
(WebKit::NetworkLoadChecker::checkCORSRequestWithPreflight):
(WebKit::NetworkLoadChecker::doesNotNeedCORSCheck const):
(WebKit::NetworkLoadChecker::contentSecurityPolicy const):
(WebKit::NetworkLoadChecker::contentExtensionsBackend):
(WebKit::NetworkLoadChecker::processContentExtensionRulesForLoad):
* NetworkProcess/NetworkLoadChecker.h: Added.
(WebKit::NetworkLoadChecker::setCSPResponseHeaders):
(WebKit::NetworkLoadChecker::setContentExtensionRuleLists):
(WebKit::NetworkLoadChecker::url const):
(WebKit::NetworkLoadChecker::storedCredentialsPolicy const):
(WebKit::NetworkLoadChecker::isChecking const):
(WebKit::NetworkLoadChecker::isRedirected const):
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::PingLoad):
(WebKit::PingLoad::~PingLoad):
(WebKit::PingLoad::willPerformHTTPRedirection):
(WebKit::PingLoad::didReceiveChallenge):
(WebKit::PingLoad::wasBlocked):
(WebKit::PingLoad::cannotShowURL):
(WebKit::PingLoad::timeoutTimerFired):
(WebKit::PingLoad::currentURL const):
* NetworkProcess/PingLoad.h:
* WebKit.xcodeproj/project.pbxproj:
2018-03-27 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Implement authenticatorGetAssertion
https://bugs.webkit.org/show_bug.cgi?id=183881
<rdar://problem/37258628>
Reviewed by Brent Fulgham.
* Shared/WebPreferences.yaml:
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.cpp:
(WebKit::WebCredentialsMessengerProxy::makeCredential):
(WebKit::WebCredentialsMessengerProxy::getAssertion):
(WebKit::WebCredentialsMessengerProxy::getAssertionReply):
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.h:
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.messages.in:
* WebProcess/CredentialManagement/WebCredentialsMessenger.cpp:
(WebKit::WebCredentialsMessenger::getAssertion):
(WebKit::WebCredentialsMessenger::getAssertionReply):
* WebProcess/CredentialManagement/WebCredentialsMessenger.messages.in:
2018-03-27 Chris Dumez <cdumez@apple.com>
Avoid constructing SecurityOrigin objects from non-main threads
https://bugs.webkit.org/show_bug.cgi?id=184024
Reviewed by Youenn Fablet.
Avoid constructing SecurityOrigin objects from non-main threads as much as possible.
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::mayHaveServiceWorkerRegisteredForOrigin const):
(WebKit::WebSWClientConnection::matchRegistration):
(WebKit::WebSWClientConnection::getRegistrations):
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebSWOriginTable.cpp:
(WebKit::WebSWOriginTable::contains const):
* WebProcess/Storage/WebSWOriginTable.h:
2018-03-27 Chris Dumez <cdumez@apple.com>
Move online state detection from the WebProcess to the NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=183989
<rdar://problem/37093299>
Reviewed by Youenn Fablet.
Move online state detection from the WebProcess to the NetworkProcess. This avoid executing the same (expensive) code in
EACH web process whenever a network interface's state changes. Now, the Network Process monitors network interfaces
and determines the online state whenever an interface's state changes. If the onLine state changes, it notifies all
its connected WebProcesses via IPC.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::setOnLineState):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::NetworkProcess):
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::setOnLineState):
* WebProcess/Network/NetworkProcessConnection.h:
* WebProcess/Network/NetworkProcessConnection.messages.in:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::isOnLine const):
(WebKit::WebLoaderStrategy::addOnlineStateChangeListener):
(WebKit::WebLoaderStrategy::setOnLineState):
* WebProcess/Network/WebLoaderStrategy.h:
2018-03-27 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Add support for new focused form control overlay behaviors
https://bugs.webkit.org/show_bug.cgi?id=184043
<rdar://problem/38758727>
Reviewed by Tim Horton.
See below for more details.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _willStartScrollingOrZooming]):
(-[WKContentView _didEndScrollingOrZooming]):
Suppress focused form control navigation while the scroll view is undergoing a scroll or zoom animation (e.g.,
when moving from one focused form control to another).
(-[WKContentView textInputController:didCommitText:withSuggestion:]):
When dismissing an input view controller, allow focused form control navigation only after updating assisted
node information to ensure that focus rects aren't stale as the user begins to navigate between forms.
(-[WKContentView rectForFocusedFormControlController:inCoordinateSpace:]):
(-[WKContentView nextRectForFocusedFormControlController:inCoordinateSpace:]):
(-[WKContentView previousRectForFocusedFormControlController:inCoordinateSpace:]):
(-[WKContentView scrollViewForFocusedFormControlController:]):
(-[WKContentView highlightedRectForFocusedFormControlController:inCoordinateSpace:]): Deleted.
Implement some new focused form overlay delegate hooks to vend the scroll view, as well as the rects of next and
previous focusable form controls.
2018-03-27 Brent Fulgham <bfulgham@apple.com>
Further refine cookie read/write logging
https://bugs.webkit.org/show_bug.cgi?id=184044
<rdar://problem/38915610>
Reviewed by Chris Dumez.
Cookie logging was passing the partition, rather than the first party, when logging, which
prevented logging in cases where partitioning or blocking was active. This patch corrects
these calls so that logging is generated in these cases, too.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM): Call log routines if needed.
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM): Ditto.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::escapeIDForJSON): Make available to use in multiple functions.
(WebKit::NetworkResourceLoader::logCookieInformation const): Revise to use shared
convenience functions.
(WebKit::logBlockedCookieInformation): Added.
(WebKit::logCookieInformationInternal): Added.
(WebKit::NetworkResourceLoader::logCookieInformation): Revise to use shared
convenience functions.
* NetworkProcess/NetworkResourceLoader.h:
2018-03-27 Brian Burg <bburg@apple.com>
Web Automation: support enter/exit fullscreen and hide/restore window operations
https://bugs.webkit.org/show_bug.cgi?id=182837
<rdar://problem/37580732>
Reviewed by Tim Horton.
The W3C specification is more explicit about when to exit fullscreen and
restore the window for a browsing context. So, WebKit needs to have support
for performing these operations on behalf of a driver.
Based on prototyping, it is sufficient to use a JavaScript atom to enter
fullscreen mode. This is included in the patch as EnterFullscreen.js and
can be used to implement the §10.7.5 Fullscreen Window command.
Other window operations cannot be peformed from JavaScript, so we need to
delegate these operations to the session client (i.e., Safari).
This patch adds session client callouts for restoring, minimizing, and
switching to a browsing context.
Exiting fullscreen happens implicitly (per specification) when setting a
window frame without an actual frame, or when switching/restoring/minimizing a window.
If needed, a driver can call Set Window Rect in this way to unfullscreen a context.
Similarly, a driver can restore a minimized window using Set Window Rect.
* UIProcess/API/APIAutomationSessionClient.h:
(API::AutomationSessionClient::requestHideWindowOfPage):
(API::AutomationSessionClient::requestRestoreWindowOfPage):
(API::AutomationSessionClient::requestSwitchToPage):
Add new API client methods.
* UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
Add new Cocoa API delegate methods.
* UIProcess/Automation/Automation.json:
Make the switch to browsing context command asynchronous, since this functionality
is not always synchronous, and we prefer to use completion handlers in the delegates.
Add new protocol method for hiding the window of a browsing context.
This is expected to minimize/miniaturize a window for desktop window managers.
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::switchToBrowsingContext):
Make this function asynchronous. Call out to the session client.
(WebKit::WebAutomationSession::setWindowFrameOfBrowsingContext):
Follow the steps in the specification to restore window and exit fullscreen.
(WebKit::WebAutomationSession::hideWindowOfBrowsingContext):
Exit fullscreen and call out to the session client.
(WebKit::WebAutomationSession::exitFullscreenWindowForPage):
This is a little strange. Because there is no async API for exiting fullscreen
from C++ code, we hook into willEnterFullScreen and didExitFullScreen and send
out the response if the page exited fullscreen after we requested it to do so.
Because the W3C specification mandates that drivers only process one command at
a time, there will only ever be one callback installed by this method at a time.
(WebKit::WebAutomationSession::restoreWindowForPage):
(WebKit::WebAutomationSession::hideWindowForPage):
Call out to the session client.
(WebKit::WebAutomationSession::didEnterFullScreenForPage):
(WebKit::WebAutomationSession::didExitFullScreenForPage):
Add methods to be called by instrumentation hooks in WebFullScreenManagerProxy.
* UIProcess/Automation/atoms/EnterFullscreen.js: Added.
(enterFullscreen):
* UIProcess/Cocoa/AutomationSessionClient.h:
* UIProcess/Cocoa/AutomationSessionClient.mm:
(WebKit::AutomationSessionClient::AutomationSessionClient):
(WebKit::AutomationSessionClient::requestSwitchToPage):
(WebKit::AutomationSessionClient::requestHideWindowOfPage):
(WebKit::AutomationSessionClient::requestRestoreWindowOfPage):
(WebKit::AutomationSessionClient::isShowingJavaScriptDialogOnPage):
Add boilerplate to convert C++ API client to Objective-C delegate methods.
* UIProcess/WebFullScreenManagerProxy.cpp:
(WebKit::WebFullScreenManagerProxy::didEnterFullScreen):
(WebKit::WebFullScreenManagerProxy::didExitFullScreen):
Notify the automation session if the page is under automation and
enters or exits fullscreen.
* WebKit.xcodeproj/project.pbxproj:
Add EnterFullscreen.js to the list of WebDriver atoms. These are copied
as WebKit2 private headers and used by driver implementations.
2018-03-27 Eric Carlson <eric.carlson@apple.com>
Make AVFoundationEnabled preference available on iOS
https://bugs.webkit.org/show_bug.cgi?id=183876
<rdar://problem/38726459>
Reviewed by Youenn Fablet.
* Shared/WebPreferences.yaml: Set AVFoundationEnabled with DEFAULT_AVFOUNDATION_ENABLED.
* Shared/WebPreferencesDefaultValues.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setAVFoundationEnabled:]): Enable for iOS.
(-[WKPreferences _avFoundationEnabled]): Ditto.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
2018-03-26 Tim Horton <timothy_horton@apple.com>
Adopt WK_ALTERNATE_FRAMEWORKS_DIR in WebKit
https://bugs.webkit.org/show_bug.cgi?id=184030
<rdar://problem/38895281>
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
* Configurations/BaseTarget.xcconfig:
* Configurations/WebKit.xcconfig:
2018-03-26 Tim Horton <timothy_horton@apple.com>
Add and adopt HAVE(CORE_ANIMATION_RENDER_SERVER)
https://bugs.webkit.org/show_bug.cgi?id=184026
<rdar://problem/38883321>
Reviewed by Sam Weinig.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _takeViewSnapshot]):
(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
2018-03-26 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Refactor input view controller presentation and dismissal helpers
https://bugs.webkit.org/show_bug.cgi?id=184020
Work towards <rdar://problem/38758727>
Reviewed by Tim Horton.
We currently have separate presentation and dismissal helpers for each type of view controller corresponding to
a focused element type. This is excessive, considering that all of these helpers are only invoked from one place
(either -presentViewControllerForCurrentAssistedNode or -dismissAllInputViewControllers), with the exception of
the focused form control overlay.
This refactoring allows us to then adjust the timing of first responder restoration logic, such that the focused
form control view controller can receive forwarded events from the web view. See below for more detail.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView presentFocusedFormControlViewController:]):
(-[WKContentView dismissFocusedFormControlViewController:]):
Remove logic to restore the web view as first responder.
(-[WKContentView presentViewControllerForCurrentAssistedNode]):
(-[WKContentView dismissAllInputViewControllers]):
Restore first responder after dismissing a view controller that was presented when focusing a form control, only
if the web view was first responder before presentation.
(-[WKContentView presentDatePickerViewController:]): Deleted.
(-[WKContentView dismissDatePickerViewController:]): Deleted.
(-[WKContentView presentTimePickerViewController:]): Deleted.
(-[WKContentView dismissTimePickerViewController:]): Deleted.
(-[WKContentView presentSelectMenuViewController:]): Deleted.
(-[WKContentView dismissSelectMenuViewController:]): Deleted.
(-[WKContentView dismissNumberPadViewController:]): Deleted.
(-[WKContentView presentNumberPadViewController:]): Deleted.
(-[WKContentView presentTextInputViewController:]): Deleted.
(-[WKContentView dismissTextInputViewController:]): Deleted.
2018-03-06 Brian Burg <bburg@apple.com>
Web Automation: provide a way to ask clients for a new tab or window
https://bugs.webkit.org/show_bug.cgi?id=183381
<rdar://problem/38167301>
Reviewed by Timothy Hatcher.
Add support for specifying browsing context options when requesting
a new browsing context from the automation session client/delegate.
This is currently just used for specifying tab vs window, but could
also be used for things like toggling certain browser chrome or features.
There is no guarantee that the client has a notion of tabs vs windows,
so this option is purely advisory and should not cause the command to
fail if it cannot be honored.
This behavior caused by specifying this option is client-specific, so no
new tests are included in WebKit for this change.
* UIProcess/API/APIAutomationSessionClient.h:
(API::AutomationSessionClient::didRequestNewPageWithOptions):
(API::AutomationSessionClient::didRequestNewWindow): Deleted.
Add options parameter.
* UIProcess/API/glib/WebKitAutomationSession.cpp:
Adjust to new signature. More work is needed to plumb this information
to the public API for GTK/WPE and support it in WebKitGTK driver.
* UIProcess/Automation/Automation.json: Add new optional parameter.
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::createBrowsingContext):
Convert the protocol option to an API option.
* UIProcess/Cocoa/AutomationSessionClient.h:
* UIProcess/Cocoa/AutomationSessionClient.mm:
(WebKit::AutomationSessionClient::AutomationSessionClient):
(WebKit::toAPI):
(WebKit::AutomationSessionClient::didRequestNewPageWithOptions):
(WebKit::AutomationSessionClient::didRequestNewWindow): Deleted.
Convert the internal option to a Cocoa SPI option and pass it along.
* UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
Adjust delegate methods to include options. Clients need to adopt the new signature(s).
2018-03-26 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Add plumbing for next and previous focusable element rects
https://bugs.webkit.org/show_bug.cgi?id=184016
Work towards <rdar://problem/38758727>
Reviewed by Tim Horton.
When building up AssistedNodeInformation, we currently compute the element rect of the current focused element,
as well as flags indicating whether or not there are next or previous focusable elements. For
<rdar://problem/38758727>, we additionally send the rects of the next or previous focusable elements as well.
* Shared/AssistedNodeInformation.cpp:
(WebKit::AssistedNodeInformation::encode const):
(WebKit::AssistedNodeInformation::decode):
IPC support for nextNodeRect and previousNodeRect.
* Shared/AssistedNodeInformation.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::elementRectInRootViewCoordinates):
Add a helper to compute an element's rect in root view coordinates. We use this to compute the rects of the
current focused element as well as those of the next and previous elements, if any.
(WebKit::WebPage::getAssistedNodeInformation):
(WebKit::hasAssistableElement): Deleted.
Since we need the next or previous focusable element to get its rect, we don't need this helper anymore.
2018-03-26 Chris Dumez <cdumez@apple.com>
Use SecurityOriginData more consistently in Service Worker code
https://bugs.webkit.org/show_bug.cgi?id=183969
Reviewed by Darin Adler.
Use SecurityOriginData more consistently in Service Worker code to avoid constructing
SecurityOrigin objects unnecessarily.
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
* Shared/API/c/WKSecurityOriginRef.cpp:
(WKSecurityOriginCopyDatabaseIdentifier):
* StorageProcess/ServiceWorker/WebSWOriginStore.cpp:
(WebKit::WebSWOriginStore::addToStore):
(WebKit::WebSWOriginStore::removeFromStore):
* StorageProcess/ServiceWorker/WebSWOriginStore.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::scheduleJobInServer):
(WebKit::WebSWServerConnection::registerServiceWorkerClient):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::connectionToContextProcessWasClosed):
(WebKit::StorageProcess::needsServerToContextConnectionForOrigin const):
(WebKit::StorageProcess::createStorageToWebProcessConnection):
(WebKit::StorageProcess::deleteWebsiteDataForOrigins):
(WebKit::StorageProcess::serverToContextConnectionForOrigin):
(WebKit::StorageProcess::createServerToContextConnection):
(WebKit::StorageProcess::swContextConnectionMayNoLongerBeNeeded):
* StorageProcess/StorageProcess.h:
* UIProcess/API/APIFrameInfo.cpp:
(API::FrameInfo::create):
* UIProcess/API/C/WKApplicationCacheManager.cpp:
(WKApplicationCacheManagerDeleteEntriesForOrigin):
* UIProcess/API/C/WKKeyValueStorageManager.cpp:
(WKKeyValueStorageManagerDeleteEntriesForOrigin):
* UIProcess/API/C/WKResourceCacheManager.cpp:
(WKResourceCacheManagerClearCacheForOrigin):
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreRemoveFetchCacheForOrigin):
(WKWebsiteDataStoreGetFetchCacheSizeForOrigin):
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::create):
(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
(WebKit::ServiceWorkerProcessProxy::getLaunchOptions):
* UIProcess/ServiceWorkerProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::getStorageProcessConnection):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::updateProcessAssertions):
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataAndApply):
* WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:
(WebKit::GeolocationPermissionRequestManager::startRequestForGeolocation):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageCopyOriginsWithApplicationCache):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest):
(WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::registerServiceWorkerClient):
(WebKit::WebSWClientConnection::matchRegistration):
(WebKit::WebSWClientConnection::whenRegistrationReady):
(WebKit::WebSWClientConnection::getRegistrations):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::exceededDatabaseQuota):
(WebKit::WebChromeClient::reachedApplicationCacheOriginQuota):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::fetchWebsiteData):
* WebProcess/WebStorage/StorageAreaImpl.cpp:
(WebKit::StorageAreaImpl::securityOrigin const):
* WebProcess/WebStorage/StorageAreaImpl.h:
* WebProcess/WebStorage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::StorageAreaMap::dispatchSessionStorageEvent):
(WebKit::StorageAreaMap::dispatchLocalStorageEvent):
* WebProcess/WebStorage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::didDestroyStorageAreaMap):
2018-03-26 Brent Fulgham <bfulgham@apple.com>
Warn against cookie access in the WebContent process using ProcessPrivilege assertions
https://bugs.webkit.org/show_bug.cgi?id=183911
<rdar://problem/38762306>
Reviewed by Youenn Fablet.
Add a set of ProcessPrivilege assertions to enforce the rule that the WebContent process
should never call Cookie API directly. That should only happen in the Networking or
UIProcess.
* NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy):
(WebKit::WebCookieManager::platformGetHTTPCookieAcceptPolicy):
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy):
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::setSharedHTTPCookieStorage):
(WebKit::NetworkProcess::syncAllCookies):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::initializeProcess):
* Shared/cf/CookieStorageUtilsCF.mm:
(WebKit::cookieStorageFromIdentifyingData):
(WebKit::identifyingDataFromCookieStorage):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::privateBrowsingSession):
* UIProcess/WebProcessPool.cpp:
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::parameters):
* UIProcess/mac/WebCookieManagerProxyMac.mm:
(WebKit::WebCookieManagerProxy::persistHTTPCookieAcceptPolicy):
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setPrivateBrowsingEnabled):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::createNetworkingContext):
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
(WebKit::WebFrameNetworkingContext::storageSession const):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeProcess):
2018-03-26 Alex Christensen <achristensen@webkit.org>
Merge ResourceHandleClient::willCacheResponseAsync with ResourceHandleClient::willCacheResponse
https://bugs.webkit.org/show_bug.cgi?id=183965
Reviewed by Chris Dumez.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::willCacheResponse const):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
2018-03-25 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK][WPE] Add API to convert between DOM and JSCValue
https://bugs.webkit.org/show_bug.cgi?id=183448
Reviewed by Michael Catanzaro.
Add methods to get a JSCValue for a WebKitDOMObject and to create a WebKitDOMNode from a JSCValue. Deprecate
most of the GTK+ DOM bindings API and move the non-deprecated parts to glib dir to be exposed by WPE too.
* PlatformGTK.cmake:
* PlatformWPE.cmake:
* SourcesGTK.txt:
* SourcesWPE.txt:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.cpp: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/DOMObjectCache.cpp.
* WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.h: Copied from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/DOMObjectCache.h.
* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMDocument.cpp: Added.
(WebKit::kit):
(WebKit::core):
(WebKit::wrapDocument):
(webkit_dom_document_class_init):
(webkit_dom_document_init):
* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMDocumentPrivate.h: Copied from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentPrivate.h.
* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMElement.cpp: Added.
(WebKit::kit):
(WebKit::core):
(WebKit::wrapElement):
(webkit_dom_element_class_init):
(webkit_dom_element_init):
(webkit_dom_element_html_input_element_is_user_edited):
(webkit_dom_element_html_input_element_get_auto_filled):
(webkit_dom_element_html_input_element_set_auto_filled):
(webkit_dom_element_html_input_element_set_editing_value):
* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMElementPrivate.h: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementPrivate.h.
* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMNode.cpp: Added.
(_WebKitDOMNodePrivate::~_WebKitDOMNodePrivate):
(WebKit::kit):
(WebKit::core):
(WebKit::wrapNode):
(webkitDOMNodeConstructor):
(webkitDOMNodeFinalize):
(webkit_dom_node_init):
(webkit_dom_node_class_init):
(webkitDOMNodeSetCoreObject):
(webkitDOMNodeGetCoreObject):
(webkit_dom_node_for_js_value):
* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMNodePrivate.h: Copied from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodePrivate.h.
* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMObject.cpp: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMObject.cpp.
(webkitDOMObjectSetProperty):
(webkit_dom_object_class_init):
* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMPrivate.cpp: Added.
(WebKit::wrap):
* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMPrivate.h: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/DOMObjectCache.h.
* WebProcess/InjectedBundle/API/glib/WebKitFrame.cpp:
(webkit_frame_get_js_value_for_dom_object):
(webkit_frame_get_js_value_for_dom_object_in_script_world):
* WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
(webkit_web_page_class_init):
(webkitWebPageCreate):
(webkit_web_page_get_dom_document):
* WebProcess/InjectedBundle/API/gtk/DOM/GObjectEventListener.cpp:
(WebKit::GObjectEventListener::handleEvent):
* WebProcess/InjectedBundle/API/gtk/DOM/GObjectNodeFilterCondition.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/GObjectXPathNSResolver.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMAttr.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMAttr.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMBlob.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMBlob.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCDATASection.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCDATASection.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRule.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRule.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRuleList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRuleList.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleDeclaration.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleDeclaration.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleSheet.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleSheet.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValue.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValue.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCharacterData.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCharacterData.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMComment.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMComment.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMImplementation.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMImplementation.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMSelection.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMSelection.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDeprecated.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp.
(webkitDOMDocumentDOMEventTargetInit):
(webkitDOMDocumentInstallProperties):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentType.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentType.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElementGtk.cpp: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp.
(webkitDOMElementDOMEventTargetInit):
(webkitDOMElementInstallProperties):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEvent.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEventTarget.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEventTarget.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFile.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFile.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFileList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFileList.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAnchorElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAnchorElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAppletElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAppletElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAreaElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAreaElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBRElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBRElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBaseElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBaseElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBodyElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBodyElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLButtonElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLButtonElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCanvasElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCanvasElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCollection.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCollection.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDListElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDListElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDirectoryElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDirectoryElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDivElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDivElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLEmbedElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLEmbedElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFieldSetElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFieldSetElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFontElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFontElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFormElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFormElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameSetElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameSetElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHRElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHRElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadingElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadingElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHtmlElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHtmlElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLImageElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLImageElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLIElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLIElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLabelElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLabelElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLegendElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLegendElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLinkElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLinkElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMapElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMapElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMarqueeElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMarqueeElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMenuElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMenuElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMetaElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMetaElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLModElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLModElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOListElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOListElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptGroupElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptGroupElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionsCollection.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionsCollection.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParagraphElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParagraphElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParamElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParamElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPreElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPreElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPrivate.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLQuoteElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLQuoteElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLScriptElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLScriptElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLStyleElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLStyleElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCaptionElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCaptionElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableColElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableColElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTextAreaElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTextAreaElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTitleElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTitleElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLUListElement.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLUListElement.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMediaList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMediaList.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeFilter.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeFilter.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeGtk.cpp: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp.
(webkitDOMNodeDOMEventTargetInit):
(webkitDOMNodeInstallProperties):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeList.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMObject.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMPrivateGtk.cpp: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMPrivate.cpp.
(WebKit::wrapNodeGtk):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMPrivateGtk.h: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMPrivate.h.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMProcessingInstruction.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMProcessingInstruction.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMRange.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMRange.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheet.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheet.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheetList.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheetList.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMText.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMText.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathExpression.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathNSResolver.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathNSResolver.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.h:
* WebProcess/InjectedBundle/API/gtk/DOM/docs/webkitdomgtk-4.0-sections.txt:
* WebProcess/InjectedBundle/API/gtk/WebKitFrame.h:
* WebProcess/InjectedBundle/API/wpe/DOM/WebKitDOMDefines.h: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentPrivate.h.
* WebProcess/InjectedBundle/API/wpe/DOM/WebKitDOMDocument.h: Added.
* WebProcess/InjectedBundle/API/wpe/DOM/WebKitDOMElement.h: Added.
* WebProcess/InjectedBundle/API/wpe/DOM/WebKitDOMNode.h: Added.
* WebProcess/InjectedBundle/API/wpe/DOM/WebKitDOMObject.h: Copied from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMObject.h.
* WebProcess/InjectedBundle/API/wpe/DOM/webkitdom.h: Renamed from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodePrivate.h.
* WebProcess/InjectedBundle/API/wpe/WebKitFrame.h:
* WebProcess/InjectedBundle/API/wpe/WebKitWebHitTestResult.h: Added.
* WebProcess/InjectedBundle/API/wpe/WebKitWebPage.h:
* WebProcess/InjectedBundle/API/wpe/WebKitWebProcessEnumTypes.cpp.template: Added.
* WebProcess/InjectedBundle/API/wpe/WebKitWebProcessEnumTypes.h.template: Copied from Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMObjectPrivate.h.
* WebProcess/InjectedBundle/API/wpe/webkit-web-extension.h:
2018-03-26 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Clean up CoordinatedGraphicsScene construct-time initializations
https://bugs.webkit.org/show_bug.cgi?id=184002
Reviewed by Carlos Garcia Campos.
Move the CoordinatedGraphicsScene constant-expression initializations
from constructor to the point of declaration.
Default the CoordinatedGraphicsScene destructor.
The m_scrollPosition member variable is unused in this class, while the
similarly-named m_renderedContentsScrollPosition tracks scroll position
of the scene. Remove the latter and use m_scrollPosition in its place.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::CoordinatedGraphicsScene):
(WebKit::CoordinatedGraphicsScene::adjustPositionForFixedLayers):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
(WebKit::CoordinatedGraphicsScene::~CoordinatedGraphicsScene): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
2018-03-25 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] WebKitWebProcessEnumTypes.h missing from webkit-web-extension.h
https://bugs.webkit.org/show_bug.cgi?id=183998
Reviewed by Carlos Garcia Campos.
* WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h:
2018-03-25 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Unresolved type warnings when generating gir
https://bugs.webkit.org/show_bug.cgi?id=183926
Reviewed by Michael Catanzaro.
Skip deprecated functions using JSC C API from introspection.
* UIProcess/API/glib/WebKitJavascriptResult.cpp:
* UIProcess/API/glib/WebKitWebView.cpp:
* WebProcess/InjectedBundle/API/glib/WebKitFrame.cpp:
2018-03-25 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r229954.
https://bugs.webkit.org/show_bug.cgi?id=184000
Caused many layout tests to crash on Apple High Sierra,
Sierra, iOS Simulator and GTK Linux Debug test bots (Requested
by dydz on #webkit).
Reverted changeset:
"Use SecurityOriginData more consistently in Service Worker
code"
https://bugs.webkit.org/show_bug.cgi?id=183969
https://trac.webkit.org/changeset/229954
2018-03-23 Brian Burg <bburg@apple.com>
Web Automation: remove unnecessary member variable WebAutomationSession
https://bugs.webkit.org/show_bug.cgi?id=183971
Reviewed by Timothy Hatcher.
The concept of the "active" browsing context is something in the WebDriver
specification, but we were a bit too literal when first implementing this.
There's no actual need for this on the browser side since most commands
require implicitly switching to the target window passed in with the
Automation command. The driver, however, still needs to track the current
browsing context and current top-level browsing context.
For returning whether a browsing context is active, we can just look at
the page's activity state to know whether the page is active or not. For
a normal browser, only one page is going to be visible and focused at a time.
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::buildBrowsingContextForPage):
Consult the page's activity state to determine whether it's active.
(WebKit::WebAutomationSession::createBrowsingContext):
(WebKit::WebAutomationSession::closeBrowsingContext):
(WebKit::WebAutomationSession::switchToBrowsingContext):
(WebKit::WebAutomationSession::handleRunOpenPanel):
Stop reading and writing the current browsing context handle.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::isViewFocused const):
(WebKit::WebPageProxy::isViewWindowActive const):
Add new accessor.
2018-03-25 Tim Horton <timothy_horton@apple.com>
Add and adopt ENABLE(AIRPLAY_PICKER)
https://bugs.webkit.org/show_bug.cgi?id=183992
Reviewed by Daniel Bates.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _showPlaybackTargetPicker:fromRect:]):
* UIProcess/ios/forms/WKAirPlayRoutePicker.h:
* UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
2018-03-25 Tim Horton <timothy_horton@apple.com>
Move WKAnimationDelegate to its own header
https://bugs.webkit.org/show_bug.cgi?id=183976
<rdar://problem/38822299>
Reviewed by Dan Bernstein.
* Shared/RemoteLayerTree/WKAnimationDelegate.h: Added.
* UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
RemoteLayerTreeHost uses a forward declaration of WKAnimationDelegate,
so we're just getting lucky that an -invalidate method exists on
some other object. Instead, move WKAnimationDelegate to its own
header, and include it in the places we use it.
2018-03-24 Tim Horton <timothy_horton@apple.com>
Adopt WK_PLATFORM_NAME in WebKit
https://bugs.webkit.org/show_bug.cgi?id=183978
Reviewed by Dan Bernstein.
* Configurations/WebKit.xcconfig:
* WebKit.xcodeproj/project.pbxproj:
* mac/MigrateHeadersFromWebKitLegacy.make:
* mac/postprocess-framework-headers.sh:
2018-03-24 Tim Horton <timothy_horton@apple.com>
Ignore sandbox_init_with_parameters deprecation warnings
https://bugs.webkit.org/show_bug.cgi?id=183979
Reviewed by Dan Bernstein.
* Shared/ios/ChildProcessIOS.mm:
(WebKit::ChildProcess::initializeSandbox):
2018-03-24 Chris Dumez <cdumez@apple.com>
Use SecurityOriginData more consistently in Service Worker code
https://bugs.webkit.org/show_bug.cgi?id=183969
Reviewed by Darin Adler.
Use SecurityOriginData more consistently in Service Worker code to avoid constructing
SecurityOrigin objects unnecessarily.
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
* Shared/API/c/WKSecurityOriginRef.cpp:
(WKSecurityOriginCopyDatabaseIdentifier):
* StorageProcess/ServiceWorker/WebSWOriginStore.cpp:
(WebKit::WebSWOriginStore::addToStore):
(WebKit::WebSWOriginStore::removeFromStore):
* StorageProcess/ServiceWorker/WebSWOriginStore.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::scheduleJobInServer):
(WebKit::WebSWServerConnection::registerServiceWorkerClient):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::connectionToContextProcessWasClosed):
(WebKit::StorageProcess::needsServerToContextConnectionForOrigin const):
(WebKit::StorageProcess::createStorageToWebProcessConnection):
(WebKit::StorageProcess::deleteWebsiteDataForOrigins):
(WebKit::StorageProcess::serverToContextConnectionForOrigin):
(WebKit::StorageProcess::createServerToContextConnection):
(WebKit::StorageProcess::swContextConnectionMayNoLongerBeNeeded):
* StorageProcess/StorageProcess.h:
* UIProcess/API/APIFrameInfo.cpp:
(API::FrameInfo::create):
* UIProcess/API/C/WKApplicationCacheManager.cpp:
(WKApplicationCacheManagerDeleteEntriesForOrigin):
* UIProcess/API/C/WKKeyValueStorageManager.cpp:
(WKKeyValueStorageManagerDeleteEntriesForOrigin):
* UIProcess/API/C/WKResourceCacheManager.cpp:
(WKResourceCacheManagerClearCacheForOrigin):
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreRemoveFetchCacheForOrigin):
(WKWebsiteDataStoreGetFetchCacheSizeForOrigin):
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::create):
(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
(WebKit::ServiceWorkerProcessProxy::getLaunchOptions):
* UIProcess/ServiceWorkerProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::getStorageProcessConnection):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::updateProcessAssertions):
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataAndApply):
* WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:
(WebKit::GeolocationPermissionRequestManager::startRequestForGeolocation):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageCopyOriginsWithApplicationCache):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::sendUserMediaRequest):
(WebKit::UserMediaPermissionRequestManager::enumerateMediaDevices):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::registerServiceWorkerClient):
(WebKit::WebSWClientConnection::matchRegistration):
(WebKit::WebSWClientConnection::whenRegistrationReady):
(WebKit::WebSWClientConnection::getRegistrations):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::exceededDatabaseQuota):
(WebKit::WebChromeClient::reachedApplicationCacheOriginQuota):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::fetchWebsiteData):
* WebProcess/WebStorage/StorageAreaImpl.cpp:
(WebKit::StorageAreaImpl::securityOrigin const):
* WebProcess/WebStorage/StorageAreaImpl.h:
* WebProcess/WebStorage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::StorageAreaMap::dispatchSessionStorageEvent):
(WebKit::StorageAreaMap::dispatchLocalStorageEvent):
* WebProcess/WebStorage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::didDestroyStorageAreaMap):
2018-03-24 Tim Horton <timothy_horton@apple.com>
Fix the !ENABLE(MEDIA_STREAM) build
https://bugs.webkit.org/show_bug.cgi?id=183977
Reviewed by Wenson Hsieh.
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
* WebProcess/cocoa/UserMediaCaptureManager.messages.in:
2018-03-24 Tim Horton <timothy_horton@apple.com>
WKFileUploadPanel shouldn't depend on WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=183981
Reviewed by Wenson Hsieh.
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel _uploadItemForImageData:imageName:successBlock:failureBlock:]):
Just use the underlying WebCore function instead of the
unnecessary NSFileManager category method.
2018-03-23 Tim Horton <timothy_horton@apple.com>
Fix the build with no pasteboard
https://bugs.webkit.org/show_bug.cgi?id=183973
Reviewed by Dan Bernstein.
* Configurations/FeatureDefines.xcconfig:
2018-03-23 Megan Gardner <megan_gardner@apple.com>
Enable unified text selection in select cases for gradual testing
https://bugs.webkit.org/show_bug.cgi?id=183967
<rdar://problem/38815328>
Reviewed by Tim Horton.
Enable in select places for a more gradual switch, as this is a big change and we want to make sure
it works before switching completely.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView useSelectionAssistantWithGranularity:]):
2018-03-23 John Wilander <wilander@apple.com>
Resource Load Statistics: Pick up ITP debug mode flag from defaults
https://bugs.webkit.org/show_bug.cgi?id=183956
<rdar://problem/38559574>
Reviewed by Brent Fulgham.
* UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
(WebKit::WebResourceLoadStatisticsStore::registerUserDefaultsIfNeeded):
2018-03-23 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Adopt list view controller UI for select menus
https://bugs.webkit.org/show_bug.cgi?id=183944
<rdar://problem/38799062>
Reviewed by Tim Horton.
Move UIProcess/WKSelectMenuListViewController.* to UIProcess/ios/forms, where it was intended to go.
* UIProcess/ios/forms/WKSelectMenuListViewController.h: Renamed from Source/WebKit/UIProcess/WKSelectMenuListViewController.h.
* UIProcess/ios/forms/WKSelectMenuListViewController.mm: Renamed from Source/WebKit/UIProcess/WKSelectMenuListViewController.mm.
* WebKit.xcodeproj/project.pbxproj:
2018-03-23 Chris Dumez <cdumez@apple.com>
Promptly terminate service worker processes when they are no longer needed
https://bugs.webkit.org/show_bug.cgi?id=183873
<rdar://problem/38676995>
Reviewed by Youenn Fablet.
The StorageProcess now keeps track of service worker clients for each security
origin. When there is no longer any clients for a given security origin, the
StorageProcess asks the service worker process for the given origin to terminate
and severs its connection to it.
* Shared/Storage/StorageProcessCreationParameters.h:
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::connectionMayNoLongerBeNeeded):
(WebKit::WebSWServerToContextConnection::terminate):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::connectionToContextProcessWasClosed):
(WebKit::StorageProcess::needsServerToContextConnectionForOrigin const):
(WebKit::StorageProcess::initializeWebsiteDataStore):
(WebKit::StorageProcess::swServerForSession):
(WebKit::StorageProcess::swContextConnectionMayNoLongerBeNeeded):
(WebKit::StorageProcess::disableServiceWorkerProcessTerminationDelay):
* StorageProcess/StorageProcess.h:
* StorageProcess/StorageProcess.messages.in:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _disableServiceWorkerProcessTerminationDelay]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
(WebKit::WebProcessPool::disableServiceWorkerProcessTerminationDelay):
* UIProcess/WebProcessPool.h:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::terminateProcess):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:
2018-03-23 Brady Eidson <beidson@apple.com>
Go to back/forward list items after a process-swapped navigation.
<rdar://problem/38690544> and https://bugs.webkit.org/show_bug.cgi?id=183920
Reviewed by Andy Estes.
This takes the initial work of "process swap a normal navigation" and extends it to
process swapping for back/forward item navigations.
* Scripts/webkit/messages.py:
Make sure state objects are serialized to the UI Process back/forward list items, as otherwise
they will be lost in process-swap scenarios:
* Shared/SessionState.cpp:
(WebKit::PageState::encode const):
(WebKit::PageState::decode):
* Shared/SessionState.h:
Make a new variant of APINavigation specifically for back/forward list items.
* UIProcess/API/APINavigation.cpp:
(API::Navigation::Navigation):
(API::Navigation::loggingURL const):
* UIProcess/API/APINavigation.h:
(API::Navigation::create):
(API::Navigation::backForwardListItem):
(API::Navigation::backForwardFrameLoadType const):
* UIProcess/API/C/WKPage.cpp:
(WKPageGoToBackForwardListItem):
* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(-[WKBrowsingContextController goToBackForwardListItem:]):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView goToBackForwardListItem:]):
* UIProcess/WebNavigationState.cpp:
(WebKit::WebNavigationState::createLoadRequestNavigation):
(WebKit::WebNavigationState::createBackForwardNavigation):
* UIProcess/WebNavigationState.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcessForReload):
(WebKit::WebPageProxy::reattachToWebProcessWithItem):
(WebKit::WebPageProxy::goForward):
(WebKit::WebPageProxy::goBack):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess): Handle back/forward navigations differently than others.
(WebKit::WebPageProxy::restoreFromSessionState):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::addOrUpdateBackForwardItem): Renamed from "addBackForwardItem" for clarity
(WebKit::WebProcessProxy::addBackForwardItem): Deleted.
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* UIProcess/ios/ViewGestureControllerIOS.mm:
(WebKit::ViewGestureController::endSwipeGesture):
* UIProcess/mac/ViewGestureControllerMac.mm:
(WebKit::ViewGestureController::endSwipeGesture):
* WebProcess/WebCoreSupport/SessionStateConversion.cpp:
(WebKit::toPageState):
(WebKit::toHistoryItem):
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::updateBackForwardItem):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::goToBackForwardItem): Combined "goBack" and "goForward" with this method,
passing the appropriate FrameLoadType around as needed to remember the specific type.
(WebKit::WebPage::goForward): Deleted.
(WebKit::WebPage::goBack): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2018-03-23 Megan Gardner <megan_gardner@apple.com>
Don't use the presence of a textSelectionAssistant as a proxy for if we are in content editable.
https://bugs.webkit.org/show_bug.cgi?id=183804
Reviewed by Tim Horton.
We need to stop using the presence of a textSelectionAssistant as a proxy for if we are selecting in a content editable
or not. As we are planning on switching to only using a textSelectionAssistant for selection, these checks need to
be more direct in checking what we actually need to know i.e. are we selecting in a content editable.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(hasAssistedNode):
(-[WKContentView inputView]):
(-[WKContentView _selectionClipRect]):
(-[WKContentView gestureRecognizer:canBePreventedByGestureRecognizer:]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
(-[WKContentView webSelectionRects]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView _autofillContext]):
2018-03-23 Youenn Fablet <youenn@apple.com>
WebProcessPool should not ask to register all clients for each service worker process creation
https://bugs.webkit.org/show_bug.cgi?id=183941
Reviewed by Chris Dumez.
Call registerServiceWorkerClients when there is no service worker process.
Update service worker clients to register all of them no matter the session ID.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::registerServiceWorkerClients):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
2018-03-23 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Adopt list view controller UI for select menus
https://bugs.webkit.org/show_bug.cgi?id=183944
<rdar://problem/38799062>
Reviewed by Andy Estes.
Rename WKSelectMenuViewController to WKSelectMenuListViewController, and also rename the relevant
WebKitAdditions harness files. See corresponding changes for more details.
* UIProcess/WKSelectMenuListViewController.h: Renamed from Source/WebKit/UIProcess/ios/forms/WKSelectMenuViewController.h.
* UIProcess/WKSelectMenuListViewController.mm: Renamed from Source/WebKit/UIProcess/ios/forms/WKSelectMenuViewController.mm.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView presentSelectMenuViewController:]):
(-[WKContentView dismissSelectMenuViewController:]):
(-[WKContentView selectMenu:didSelectItemAtIndex:]):
(-[WKContentView numberOfItemsInSelectMenu:]):
(-[WKContentView selectMenu:displayTextForItemAtIndex:]):
(-[WKContentView selectMenu:didCheckItemAtIndex:checked:]):
(-[WKContentView selectMenuUsesMultipleSelection:]):
(-[WKContentView selectMenu:hasSelectedOptionAtIndex:]):
(-[WKContentView _wheelChangedWithEvent:]):
Overriding wheel events and re-dispatching them is no longer needed after r229437, so we can just remove special
handling for select menus here.
(-[WKContentView didCancelSelectionInSelectMenu:]): Deleted.
(-[WKContentView selectMenuSupportsMultipleSelection:]): Deleted.
(-[WKContentView selectMenu:hasCheckedOptionAtIndex:]): Deleted.
(-[WKContentView startingIndexForSelectMenu:]): Deleted.
The starting index for a select menu is no longer relevant when using list view controllers for input, so we can
just remove this delegate hook altogether.
* WebKit.xcodeproj/project.pbxproj:
2018-03-23 Youenn Fablet <youenn@apple.com>
CacheStorage::Caches should clear m_caches when clearing its representation even though it is not yet initialized
https://bugs.webkit.org/show_bug.cgi?id=183945
Reviewed by Chris Dumez.
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::clearMemoryRepresentation):
In case we clear Caches in the middle of the initialization, m_caches might not be empty
but m_isInitialized is not yet set to true since we are computing the Caches size.
Update the assertion and clear m_caches in that case.
2018-03-23 David Kilzer <ddkilzer@apple.com>
Stop using dispatch_set_target_queue()
<https://webkit.org/b/183908>
<rdar://problem/33553533>
Reviewed by Daniel Bates.
* NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
(WebKit::NetworkCache::IOChannel::IOChannel): Remove the call to
dispatch_set_target_queue() since this is handled in the
dispatch_io_create() call above.
2018-03-23 Youenn Fablet <youenn@apple.com>
CacheStorage::Engine should not ref itself when hopping to a background thread
https://bugs.webkit.org/show_bug.cgi?id=183925
<rdar://problem/38580483>
Reviewed by Chris Dumez.
Add support for weak pointers to CacheStorage Engine.
Use weak pointer when hopping to background threads.
Store callbacks in CacheStorage::Engine maps to keep them being destroyed in the main thread only.
Made some callbacks CompletionHandler as a bonus.
Made sure to use just one Engine for all private sessions.
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::~Engine):
(WebKit::CacheStorage::Engine::from):
(WebKit::CacheStorage::Engine::initialize):
(WebKit::CacheStorage::Engine::writeFile):
(WebKit::CacheStorage::Engine::readFile):
* NetworkProcess/cache/CacheStorageEngine.h:
(WebKit::CacheStorage::Engine::weakPtrFactory):
2018-03-23 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed build fix.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
2018-03-23 Miguel Gomez <magomez@igalia.com>
[GTK][WPE] Avoid software color conversion inside BitmapTextureGL
https://bugs.webkit.org/show_bug.cgi?id=183892
Remove the UpdateContentsFlag parameter when calling BitmapTexture::updateContents().
Reviewed by Žan Doberšek.
* Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
(WebKit::CoordinatedBackingStoreTile::swapBuffers):
2018-03-23 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE][GTK] Fix -Wswitch warnings after r229778
https://bugs.webkit.org/show_bug.cgi?id=183927
Reviewed by Carlos Garcia Campos.
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::dispatchDidReceiveResponse): Log a warning if Suspend is
received as a PolicyAction
* UIProcess/API/glib/WebKitNavigationClient.cpp: Ignore the ProcessSwap termination reason,
which should be invisible to WebKit clients
2018-03-22 Chris Dumez <cdumez@apple.com>
Include security origin in the service worker process name
https://bugs.webkit.org/show_bug.cgi?id=183913
Reviewed by Youenn Fablet.
Include security origin in the service worker process name to facilitate debugging. This way, we
can differentiate which service worker process is used for which origin in activity monitor.
* Shared/ChildProcess.h:
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
(WebKit::XPCServiceInitializerDelegate::getExtraInitializationData):
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::getLaunchOptions):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::initializeProcessName):
2018-03-22 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, silence unused variable warning
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
2018-03-22 Dan Bernstein <mitz@apple.com>
WKWebView doesn’t expose its spellCheckerDocumentTag
https://bugs.webkit.org/show_bug.cgi?id=183797
<rdar://problem/38678089>
Reviewed by Tim Horton.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _spellCheckerDocumentTag]): Added this getter which calls through to the WebViewImpl.
* UIProcess/API/Cocoa/WKWebViewPrivate.h: Declared _spellCheckerDocumentTag property.
2018-03-22 Chris Dumez <cdumez@apple.com>
Use the same SWServer for all ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=183921
<rdar://problem/36873075>
Reviewed by Youenn Fablet.
Use the same SWServer for all ephemeral sessions. SWServers never go away and we create
one per sessionID. When browsing doing private browsing in Safari (and other fetching
favorite icons), the sessionID is ephemeral and keeps changing. This means that we kept
constructing new SWServers that would never go away. Each SWServer has a thread so we
would eventually hit the thread limit for the storage process.
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::swServerForSession):
2018-03-22 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix format string warnings in service worker code
On Linux x86_64, uint64_t is unsigned long, not unsigned long long.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::didFinishFetch):
(WebKit::WebSWServerConnection::didFailFetch):
(WebKit::WebSWServerConnection::didNotHandleFetch):
2018-03-22 Daniel Bates <dabates@apple.com>
Expose SchemeRegistry::registerAsCanDisplayOnlyIfCanRequest() as WebKit SPI
https://bugs.webkit.org/show_bug.cgi?id=183907
<rdar://problem/38759127>
Reviewed by Alex Christensen.
Adds both modern Objective-C SPI and C SPI to allow an embedding client to register a scheme
whose content should be displayed/loaded if and only if it can be requested. Disregarding an
app that enables universal access, by using this SPI WebKit will refuse to display cross-origin
content for the registered schemes.
We need to add C SPI for embedding clients that have not transitioned to the modern Objective-
C API/SPI.
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextRegisterURLSchemeAsCanDisplayOnlyIfCanRequest):
* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _registerURLSchemeAsCanDisplayOnlyIfCanRequest:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::registerURLSchemeAsCanDisplayOnlyIfCanRequest):
* UIProcess/WebProcessPool.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::registerURLSchemeAsCanDisplayOnlyIfCanRequest const):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
2018-03-22 Tim Horton <timothy_horton@apple.com>
Improve readability of WebCore's OTHER_LDFLAGS
https://bugs.webkit.org/show_bug.cgi?id=183909
<rdar://problem/38760992>
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
* Configurations/FeatureDefines.xcconfig:
2018-03-22 Zan Dobersek <zdobersek@igalia.com>
[TexMap] Make TextureMapperContextAttributes thread-specific
https://bugs.webkit.org/show_bug.cgi?id=183895
Reviewed by Carlos Garcia Campos.
CoordinatedGraphicsScene, as an implementor of the
TextureMapperPlatformLayerProxy::Compositor interface, doesn't have to
implement the texmapGL() method anymore.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::onNewBufferAvailable):
(WebKit::CoordinatedGraphicsScene::texmapGL): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
2018-03-21 Frederic Wang <fwang@igalia.com>
Unreviewed, update comment added in r229801.
* WebProcess/WebPage/ios/FindControllerIOS.mm:
(WebKit::FindController::didFindString): Remove "On Mobile" and mention bug 183889.
2018-03-21 Chris Dumez <cdumez@apple.com>
Regression(r229831): ProcessSwap.Basic API test is crashing
https://bugs.webkit.org/show_bug.cgi?id=183884
Reviewed by Brady Eidson.
This code should only be called for navigation policy decisions.
It used to work without this check because of an early return, which
was dropped in r229831.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
2018-03-21 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Add new SPI hooks for clients to vend an input session context view
https://bugs.webkit.org/show_bug.cgi?id=183866
<rdar://problem/38692256>
Reviewed by Tim Horton.
Add new SPI hooks to _WKInputDelegate allowing internal clients to provide a view that gives additional context
when editing form controls, on top of the default label or placeholder text displayed by WebKit. The height
delegate is invoked first, giving the client an opportunity to lay out the context view to fit the given size;
the actual view is then queried.
If the view changes, clients may tell WebKit to reload the context view via SPI on WKFormInputSession; this call
to reload is plumbed through to the currently presented list view controller (at the moment, this is only the
text input list view controller).
* UIProcess/API/Cocoa/_WKFormInputSession.h:
* UIProcess/API/Cocoa/_WKInputDelegate.h:
Add the new SPI hooks, described above.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFormInputSession reloadFocusedElementContextView]):
Plumb the context view reload hook through WKContentView to WKTextInputListViewController.
(-[WKContentView setupInteraction]):
(-[WKContentView _stopAssistingNode]):
(-[WKContentView reloadContextViewForPresentedListViewController]):
(-[WKContentView focusedFormControllerDidUpdateSuggestions:]):
Slight tweak to only reload text suggestions if we are not blurring the focused element. Without this extra
condition, the list view controller's inner table view would get reloaded when the form input session's text
suggestions are set to nil when the list view controller is dismissed, causing a visible stutter in the
dismissal animation of view controller.
2018-03-21 Chris Dumez <cdumez@apple.com>
WebKitTestRunner crashed in com.apple.WebKit: WebKit::WebProcessPool::terminateServiceWorkerProcesses
https://bugs.webkit.org/show_bug.cgi?id=183875
Reviewed by Brent Fulgham.
Protect |this| while we're iterating over m_serviceWorkerProcesses and terminating
each service worker process. It is possible for the WebProcess pool to get destroyed
as a result of terminating a service worker process.
This change is covered by layout tests that are currently crashing on the ASAN bots.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::terminateServiceWorkerProcesses):
2018-03-21 Eric Carlson <eric.carlson@apple.com>
Fix typo in inactive media stream timeout default value
https://bugs.webkit.org/show_bug.cgi?id=183872
<rdar://problem/38723903>
Reviewed by Jer Noble.
* Shared/WebPreferences.yaml: Fix typo.
* Shared/WebPreferencesDefaultValues.h: Ditto.
2018-03-21 Chris Dumez <cdumez@apple.com>
Make policy decisions asynchronous
https://bugs.webkit.org/show_bug.cgi?id=180568
<rdar://problem/37131297>
Reviewed by Alex Christensen.
Get rid of synchronous IPC and synchronous code paths for policy delegates.
Policy decisions are now all made asynchronously and rely on asynchronous
IPC.
This code change is based on work by Alex Christensen.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
2018-03-21 Chris Dumez <cdumez@apple.com>
ScrollViewInsetTests.RestoreInitialContentOffsetAfterCrash API test is failing with async delegates
https://bugs.webkit.org/show_bug.cgi?id=183787
Reviewed by Wenson Hsieh.
Without asynchronous policy delegates, when the client requests a navigation, we would:
1. Do a synchronous navigation policy check
2. If the client allows the navigation, start the provisional load
Starting the provisional load would freeze the layer tree until first meaningful
layout via WebFrameLoaderClient::provisionalLoadStarted() -> WebPage::didStartPageTransition().
When constructing a WebView and then requesting a load right away. This would make sure
we do not commit a layer tree for the initial about:blank page because the layer tree
would be frozen until we have something meaningful to show for the following load.
However, with asynchronous policy delegates, we are able to do a layer tree commit
during the asynchronous navigation policy check because the layer tree is not frozen
yet (provisional load has not started) and the process is not stuck on synchronous
IPC. When constructing a WebView and then requesting a load right away, this would
allow a layer tree commit for about:blank to happen before we've even started the
load. This would cause some API tests to fail on iOS.
To address the issue, we try and maintain pre-existing behavior by freezing the
layer tree during navigation policy decision.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebKit::WebFrameLoaderClient::didDecidePolicyForNavigationAction):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didStartNavigationPolicyCheck):
(WebKit::WebPage::didCompleteNavigationPolicyCheck):
* WebProcess/WebPage/WebPage.h:
2018-03-21 Brent Fulgham <bfulgham@apple.com>
Allow the WebContent process to read ViewBridge preferences
https://bugs.webkit.org/show_bug.cgi?id=183862
<rdar://problem/38459456>
Reviewed by Eric Carlson.
* WebProcess/com.apple.WebProcess.sb.in:
2018-03-21 Frederic Wang <fwang@igalia.com>
[iOS] Text highlighted by the Find UI overlaps with NBC news header on google.com
https://bugs.webkit.org/show_bug.cgi?id=183658
Reviewed by Tim Horton.
On Mobile, many sites have overlay headers or footers that may overlap with the highlighted
text inside a scrollable overflow node. To workaround that issue, this commit changes the
behavior so that the text is revealed at the center of the overflow node.
* WebProcess/WebPage/ios/FindControllerIOS.mm:
(WebKit::FindController::didFindString): Use alignCenterAlways instead of alignToEdgeIfNeeded.
2018-03-21 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK][WPE] JSC bindings not introspectable
https://bugs.webkit.org/show_bug.cgi?id=136989
Reviewed by Michael Catanzaro.
Deprecate the functions that are not introspectable due to JSC C API in GTK+ port and remove them in WPE
port. Add alternative functions using the new JSC GLib API. We no longer need to keep a global context attached
to every view. We can simply create a temporary global context on demand and release it after 1 second. This
also allows us to remove WebPageProxy::javascriptGlobalContext() and all the related code.
* PlatformGTK.cmake:
* PlatformWPE.cmake:
* UIProcess/API/glib/WebKitJavascriptResult.cpp:
(_WebKitJavascriptResult::_WebKitJavascriptResult):
(webkitJavascriptResultCreate):
(webkit_javascript_result_get_global_context):
(webkit_javascript_result_get_value):
(webkit_javascript_result_get_js_value):
* UIProcess/API/glib/WebKitJavascriptResultPrivate.h:
(SharedJavascriptContext::singleton):
(SharedJavascriptContext::SharedJavascriptContext):
(SharedJavascriptContext::getOrCreateContext):
(SharedJavascriptContext::releaseContext):
* UIProcess/API/glib/WebKitUserContentManager.cpp:
* UIProcess/API/glib/WebKitWebView.cpp:
(webkit_web_view_get_javascript_global_context):
(webkitWebViewRunJavaScriptCallback):
* UIProcess/API/gtk/PageClientImpl.cpp:
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/API/gtk/WebKitJavascriptResult.h:
* UIProcess/API/gtk/WebKitWebView.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/wpe/APIViewClient.h:
(API::ViewClient::handleDownloadRequest):
* UIProcess/API/wpe/PageClientImpl.cpp:
* UIProcess/API/wpe/PageClientImpl.h:
* UIProcess/API/wpe/WPEView.cpp:
* UIProcess/API/wpe/WPEView.h:
* UIProcess/API/wpe/WebKitJavascriptResult.h:
* UIProcess/API/wpe/WebKitWebView.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/gtk/WebPageProxyGtk.cpp:
* UIProcess/wpe/WebPageProxyWPE.cpp:
* WebProcess/InjectedBundle/API/glib/WebKitFrame.cpp:
(webkit_frame_get_js_context):
(webkit_frame_get_js_context_for_script_world):
* WebProcess/InjectedBundle/API/gtk/WebKitFrame.h:
* WebProcess/InjectedBundle/API/wpe/WebKitFrame.h:
2018-03-21 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK][WPE] Initial implementation of JavaScriptCore glib bindings
https://bugs.webkit.org/show_bug.cgi?id=164061
Reviewed by Michael Catanzaro.
Set decorator and deprecation_guard options in API docs config files, since they are no longer common to all
libraries.
* PlatformGTK.cmake:
2018-03-21 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Simplify CoordinatedGraphicsScene activation
https://bugs.webkit.org/show_bug.cgi?id=183772
Reviewed by Carlos Garcia Campos.
Simplify CoordinatedGraphicsScene::setActive() into a simple setter of
the m_isActive member variable. We don't have to call renderNextFrame()
anymore as that was only necessary to unblock CoordinatedLayerTreeHost,
but that can be avoided if m_isWaitingForRenderer in that class is
initialized to false.
CoordinatedGraphicsSceneClient::renderNextFrame() virtual method and its
ThreadedCompositor implementation are removed. renderNextFrame() in the
CoordinatedGraphicsScene class can also be removed, along with the
unused dispatchOnMainThread() and dispatchOnClientRunLoop() methods and
the associated m_clientRunLoop member variable.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::CoordinatedGraphicsScene):
(WebKit::CoordinatedGraphicsScene::dispatchOnMainThread): Deleted.
(WebKit::CoordinatedGraphicsScene::dispatchOnClientRunLoop): Deleted.
(WebKit::CoordinatedGraphicsScene::renderNextFrame): Deleted.
(WebKit::CoordinatedGraphicsScene::setActive): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
(WebKit::CoordinatedGraphicsSceneClient::~CoordinatedGraphicsSceneClient):
(WebKit::CoordinatedGraphicsScene::setActive):
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::m_displayRefreshMonitor):
(WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing):
(WebKit::ThreadedCompositor::renderNextFrame): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
2018-03-21 Zan Dobersek <zdobersek@igalia.com>
[TexMap] Have TextureMapperLayer::applyAnimationsRecursively() return running animation status
https://bugs.webkit.org/show_bug.cgi?id=183771
Reviewed by Carlos Garcia Campos.
In CoordinatedGraphicsScene::paintToCurrentGLContext(), retrieve
information about any running animation in the scene via the
TextureMapperLayer::applyAnimationsRecursively() call. Use that boolean
value at the end up the method, instead of again traversing the
TextureMapperLayer tree to determine whether any running animations are
present.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
2018-03-20 Tim Horton <timothy_horton@apple.com>
Enable the minimal simulator feature flag when appropriate
https://bugs.webkit.org/show_bug.cgi?id=183807
Reviewed by Dan Bernstein.
* Configurations/FeatureDefines.xcconfig:
2018-03-19 Ryosuke Niwa <rniwa@webkit.org>
Expose content attributes on _WKLinkIconParameters
https://bugs.webkit.org/show_bug.cgi?id=183768
Reviewed by Alex Christensen.
Added _WKLinkIconParameters.attributes to expose content attributes of a link element
which defined a favicon, touch icon, or pre-compressed touch icon.
* UIProcess/API/Cocoa/_WKLinkIconParameters.h:
(_WKLinkIconParameters.attributes): Added.
* UIProcess/API/Cocoa/_WKLinkIconParameters.mm:
(_WKLinkIconParameters._attributes): Added.
(-[_WKLinkIconParameters _initWithLinkIcon:]): Convert the hash map from WebCore to a NSDictionary.
(-[_WKLinkIconParameters attributes]): Added.
2018-03-20 Wenson Hsieh <wenson_hsieh@apple.com>
Add AssistedNodeInformation plumbing for form control placeholder text and label text
https://bugs.webkit.org/show_bug.cgi?id=183802
<rdar://problem/38686273>
Reviewed by Tim Horton.
Surfaces some additional information about the currently focused element to the input delegate in the UI process.
See comments below for more details.
Test: WebKit.FocusedElementInfo
* Shared/AssistedNodeInformation.cpp:
(WebKit::AssistedNodeInformation::encode const):
(WebKit::AssistedNodeInformation::decode):
* Shared/AssistedNodeInformation.h:
Add `placeholder` and `label` to AssistedNodeInformation, which capture the value of the placeholder attribute
and the text of the first associated label element for the focused form control. Also add boilerplate encoder/
decoder support for these members.
* UIProcess/API/Cocoa/_WKFocusedElementInfo.h:
Augment _WKFocusedElementInfo to include placeholder and label.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFocusedElementInfo initWithAssistedNodeInformation:isUserInitiated:userObject:]):
(-[WKFocusedElementInfo label]):
(-[WKFocusedElementInfo placeholder]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getAssistedNodeInformation):
For input elements and textareas, set the placeholder to the value of the placeholder attribute. For all
elements with associated labels, grab the inner text of the first label that is not empty, ignoring all labels
that are `display: none` (i.e. not being rendered).
2018-03-20 Brady Eidson <beidson@apple.com>
First piece of process swapping on navigation.
https://bugs.webkit.org/show_bug.cgi?id=183665
Reviewed by Andy Estes.
This patch adds the first pieces of the following feature:
"When a navigation originating inside a WKWebView goes to a different origin,
swap to a new WebProcess for that navigation"
There are significant bugs to be resolved and significant optimizations to be made.
Which is why the feature is disabled by default.
Besides the core logic implementing the feature, this patch does a lot of related
work such as:
- Removing some now-invalid ASSERTs
- Adding some ASSERTs
- Update various switch states to handle the new "Suspend" policy and "NavigationSwap"
process termination reason
* NetworkProcess/NetworkDataTaskBlob.cpp:
(WebKit::NetworkDataTaskBlob::dispatchDidReceiveResponse):
* NetworkProcess/capture/NetworkDataTaskReplay.cpp:
(WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(toNSURLSessionResponseDisposition):
* Platform/Logging.h:
* Shared/LoadParameters.cpp:
(WebKit::LoadParameters::encode const):
(WebKit::LoadParameters::decode):
* Shared/LoadParameters.h:
* Shared/ProcessTerminationReason.h: Add "NavigationSwap" as a process termination reason.
* UIProcess/API/APINavigation.h:
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/C/WKAPICast.h:
(WebKit::toAPI):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::wkProcessTerminationReason):
* UIProcess/WebFramePolicyListenerProxy.cpp:
(WebKit::WebFramePolicyListenerProxy::WebFramePolicyListenerProxy):
* UIProcess/WebFramePolicyListenerProxy.h:
(WebKit::WebFramePolicyListenerProxy::create):
(WebKit::WebFramePolicyListenerProxy::policyListenerType const):
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::setUpPolicyListenerProxy):
(WebKit::WebFrameProxy::activePolicyListenerProxy):
* UIProcess/WebFrameProxy.h:
* UIProcess/WebNavigationState.cpp:
(WebKit::WebNavigationState::navigation):
(WebKit::WebNavigationState::takeNavigation):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::attachToProcessForNavigation): Pretend that the existing process
terminated using the new "NavigationSwap" reason, then manually start the next load.
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadRequestWithNavigation):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
(WebKit::WebPageProxy::processDidTerminate):
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigation): Determine which process should be used
for a proposed navigation, creating a new one if necessary.
* UIProcess/WebProcessPool.h:
* UIProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::SessionStorageNamespace::setAllowedConnection):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadRequest):
2018-03-20 Youenn Fablet <youenn@apple.com>
ServiceWorkerClientFetch::didReceiveData should check for m_encodedDataLength
https://bugs.webkit.org/show_bug.cgi?id=183668
Reviewed by Chris Dumez.
Crash happens when releasing a RefPtr<SharedBuffer> buffer that is null.
It happens because ServiceWorkerClientFetch can call m_loader->didReceiveBuffer at two different places.
Either when receiving an IPC call or as part of completion handler for the response validation check.
At each call site, we release the buffer to pass it to the loader and we set m_encodedLength to zero.
The fix is to add the m_encodedLength check like done in the case of response validation check completion handler.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveData):
2018-03-20 Jeff Miller <jeffm@apple.com>
Expose aggressiveTileRetentionEnabled in WKPreferences SPI to match C SPI
https://bugs.webkit.org/show_bug.cgi?id=183790
Reviewed by Alex Christensen.
Expose this property on macOS only.
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setAggressiveTileRetentionEnabled:]):
(-[WKPreferences _aggressiveTileRetentionEnabled]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
2018-03-20 Tim Horton <timothy_horton@apple.com>
Add and adopt WK_PLATFORM_NAME and adjust default feature defines
https://bugs.webkit.org/show_bug.cgi?id=183758
<rdar://problem/38017644>
Reviewed by Dan Bernstein.
* Configurations/FeatureDefines.xcconfig:
2018-03-20 Chris Dumez <cdumez@apple.com>
Unreviewed, rolling out r229726 and r229763.
Caused some API test failures on iOS
Reverted changesets:
"Make policy decisions asynchronous"
https://bugs.webkit.org/show_bug.cgi?id=180568
https://trac.webkit.org/changeset/229726
"Rebaseline three webarchive tests for WK2 after r229726."
https://bugs.webkit.org/show_bug.cgi?id=180568
https://trac.webkit.org/changeset/229763
2018-03-20 Brent Fulgham <bfulgham@apple.com>
[iOS] Grant IOKit preference access for the Home button
https://bugs.webkit.org/show_bug.cgi?id=183754
<rdar://problem/38179704>
Reviewed by Eric Carlson.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2018-03-20 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Adopt updated input view controller machinery for text input
https://bugs.webkit.org/show_bug.cgi?id=183765
<rdar://problem/36926269>
Reviewed by Tim Horton.
Adopt new classes for extra zoomed text inputs. Massage WKTextInputViewController into WKTextInputListView-
Controller and introduce WKFormControlListViewController, the eventual replacement for the base class
WKTextFormControlViewController that will act as the base class of all list-view-controller-based input UI in
extra zoom mode.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView presentTextInputViewController:]):
(-[WKContentView dismissTextInputViewController:]):
(-[WKContentView focusedFormControllerDidUpdateSuggestions:]):
(-[WKContentView _wheelChangedWithEvent:]):
* UIProcess/ios/forms/WKFormControlListViewController.h: Copied from Source/WebKit/UIProcess/ios/forms/WKTextInputViewController.h.
* UIProcess/ios/forms/WKFormControlListViewController.mm: Renamed from Source/WebKit/UIProcess/ios/forms/WKTextInputViewController.mm.
* UIProcess/ios/forms/WKTextInputListViewController.h: Copied from Source/WebKit/UIProcess/ios/forms/WKTextInputViewController.h.
* UIProcess/ios/forms/WKTextInputListViewController.mm: Renamed from Source/WebKit/UIProcess/ios/forms/WKTextInputViewController.h.
* WebKit.xcodeproj/project.pbxproj:
2018-03-19 Megan Gardner <megan_gardner@apple.com>
Clear style colors when setting default appearance
https://bugs.webkit.org/show_bug.cgi?id=183759
Reviewed by Tim Horton.
Colors are cached and need to be cleared and recalculated.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setDefaultAppearance):
2018-03-19 Chris Dumez <cdumez@apple.com>
WKWebView.ClearAppCache is a flaky API test failure on High Sierra.
https://bugs.webkit.org/show_bug.cgi?id=181546
<rdar://problem/36444327>
Reviewed by Ryosuke Niwa.
in LocalStorageDatabaseTracker::deleteDatabasesModifiedSince(), add origin
to originIdentifiersToDelete if we cannot determine the last modification
time of the database file. This likely means the database file does not
exist. However, we still needs to make sure the origin gets removed from
the origins database and there may be *.wal / *.shm variants of the database
that are still on disk and need to be deleted.
* UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):
2018-03-19 Chris Dumez <cdumez@apple.com>
Have one service worker process per security origin
https://bugs.webkit.org/show_bug.cgi?id=183600
<rdar://problem/35280128>
Reviewed by Brady Eidson.
Split service workers from different origins into their own processes
for security reasons.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorker):
(WebKit::WebSWServerConnection::scheduleJobInServer):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::connectionToContextProcessFromIPCConnection):
(WebKit::StorageProcess::didClose):
(WebKit::StorageProcess::connectionToContextProcessWasClosed):
(WebKit::StorageProcess::needsServerToContextConnectionForOrigin const):
(WebKit::StorageProcess::didReceiveMessage):
(WebKit::StorageProcess::createStorageToWebProcessConnection):
(WebKit::StorageProcess::serverToContextConnectionForOrigin):
(WebKit::StorageProcess::createServerToContextConnection):
* StorageProcess/StorageProcess.h:
* StorageProcess/StorageProcess.messages.in:
* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::didReceiveMessage):
(WebKit::StorageToWebProcessConnection::didClose):
* StorageProcess/StorageToWebProcessConnection.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextTerminateServiceWorkerProcess):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _terminateServiceWorkerProcesses]):
(-[WKProcessPool _webPageContentProcessCount]):
(-[WKProcessPool _serviceWorkerProcessCount]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):
(WebKit::NetworkProcessProxy::canAuthenticateAgainstProtectionSpace):
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::create):
(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
* UIProcess/ServiceWorkerProcessProxy.h:
(isType):
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::getStorageProcessConnection):
(WebKit::StorageProcessProxy::didFinishLaunching):
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess):
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession):
* UIProcess/Storage/StorageProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::getStorageProcessConnection):
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::updateServiceWorkerUserAgent):
(WebKit::WebProcessPool::mayHaveRegisteredServiceWorkers):
(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
(WebKit::WebProcessPool::terminateServiceWorkerProcesses):
(WebKit::WebProcessPool::updateProcessAssertions):
(WebKit::WebProcessPool::serviceWorkerProcessProxyFromPageID const):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getStorageProcessConnection):
2018-03-19 Jiewen Tan <jiewen_tan@apple.com>
Unreviewed, another quick fix for r229699
Restricts ENABLE_WEB_AUTHN to only macOS and iOS.
* Configurations/FeatureDefines.xcconfig:
2018-03-19 Chris Dumez <cdumez@apple.com>
Make policy decisions asynchronous
https://bugs.webkit.org/show_bug.cgi?id=180568
<rdar://problem/37131297>
Reviewed by Alex Christensen.
Get rid of synchronous IPC and synchronous code paths for policy delegates.
Policy decisions are now all made asynchronously and rely on asynchronous
IPC.
This code change is based on work by Alex Christensen.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
2018-03-19 Brian Burg <bburg@apple.com>
Web Inspector: clean up WKWebView configuration code
https://bugs.webkit.org/show_bug.cgi?id=183747
<rdar://problem/38629343>
Reviewed by Timothy Hatcher.
* UIProcess/mac/WKInspectorViewController.mm:
(-[WKInspectorViewController webView]): Always use system
appearance for Inspector's web content.
2018-03-19 Eric Carlson <eric.carlson@apple.com>
[Extra zoom mode] Require fullscreen for video playback
https://bugs.webkit.org/show_bug.cgi?id=183742
<rdar://problem/38235862>
Reviewed by Jer Noble.
* UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(-[WKVideoFullScreenViewController initWithAVPlayerViewController:]):
(-[WKVideoFullScreenViewController viewDidLoad]):
(-[WKVideoFullScreenViewController prefersStatusBarHidden]):
(WebKit::VideoFullscreenModelContext::presentingViewController):
(WebKit::VideoFullscreenModelContext::createVideoFullscreenViewController):
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::didEnterFullscreen):
2018-03-19 Daniel Bates <dabates@apple.com>
test-webkitpy no longer runs WebKit2 tests
https://bugs.webkit.org/show_bug.cgi?id=183724
Reviewed by Alexey Proskuryakov.
Fixes an issue where Python emits errors "global name reset_results is not defined" when
running tests in messages_unittest.py using test-webkitpy.
Currently messages_unittest.py conditionally defines the global variable reset_results
when run as the main program (i.e. __name__ == "__main__"). When messages_unittest.py is
imported as a module as test-webkitpy does then it is not considered the main program
;=> the top-level script environment is not __main__ ;=> we do not define the global
variable reset_results. Instead we should unconditionally define the global variable
reset_results.
* Scripts/webkit/messages_unittest.py:
2018-03-19 Per Arne Vollan <pvollan@apple.com>
When the WebContent process is blocked from accessing the WindowServer, the call CVDisplayLinkCreateWithCGDisplay will fail.
https://bugs.webkit.org/show_bug.cgi?id=183604
<rdar://problem/38305109>
Reviewed by Brent Fulgham.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/mac/DisplayLink.cpp: Added.
(WebKit::DisplayLink::DisplayLink):
(WebKit::DisplayLink::~DisplayLink):
(WebKit::DisplayLink::displayLinkCallback):
* UIProcess/mac/DisplayLink.h: Added.
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::startDisplayRefreshMonitor):
(WebKit::WebPageProxy::stopDisplayRefreshMonitor):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/DrawingArea.cpp:
(WebKit::DrawingArea::createDisplayRefreshMonitor):
* WebProcess/WebPage/DrawingArea.h:
* WebProcess/WebPage/DrawingArea.messages.in:
* WebProcess/WebPage/mac/DrawingAreaMac.cpp: Added.
(WebKit::DisplayRefreshMonitorMac::create):
(WebKit::DisplayRefreshMonitorMac::DisplayRefreshMonitorMac):
(WebKit::DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac):
(WebKit::DisplayRefreshMonitorMac::requestRefreshCallback):
(WebKit::DisplayRefreshMonitorMac::displayLinkFired):
(WebKit::DrawingArea::screenWasRefreshed):
(WebKit::DrawingArea::createDisplayRefreshMonitor):
2018-03-17 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Implement authenticatorMakeCredential
https://bugs.webkit.org/show_bug.cgi?id=183527
<rdar://problem/35275886>
Reviewed by Brent Fulgham.
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.cpp:
(WebKit::WebCredentialsMessengerProxy::WebCredentialsMessengerProxy):
(WebKit::WebCredentialsMessengerProxy::makeCredential):
(WebKit::WebCredentialsMessengerProxy::getAssertion):
(WebKit::WebCredentialsMessengerProxy::isUserVerifyingPlatformAuthenticatorAvailable):
(WebKit::WebCredentialsMessengerProxy::exceptionReply):
(WebKit::WebCredentialsMessengerProxy::makeCredentialReply):
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.h:
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.messages.in:
* UIProcess/CredentialManagement/cocoa/WebCredentialsMessengerProxyCocoa.mm: Removed.
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/CredentialManagement/WebCredentialsMessenger.cpp:
(WebKit::WebCredentialsMessenger::makeCredential):
(WebKit::WebCredentialsMessenger::makeCredentialReply):
* WebProcess/CredentialManagement/WebCredentialsMessenger.h:
* WebProcess/CredentialManagement/WebCredentialsMessenger.messages.in:
2018-03-17 Daniel Bates <dabates@apple.com>
Tests fail in messages_unittest.py
https://bugs.webkit.org/show_bug.cgi?id=183725
Partial revert of r222113. The messages generator machinery does not know when
it is sufficient to emit an include for wtf/Forward.h as opposed to a concrete
header.
* Scripts/webkit/LegacyMessages-expected.h:
* Scripts/webkit/Messages-expected.h:
2018-03-16 Wenson Hsieh <wenson_hsieh@apple.com>
Unreviewed, rolling out r229688.
There's a solution that doesn't require this SPI.
Reverted changeset:
"Add SPI to expose width and height anchors for WKWebView's
content view"
https://bugs.webkit.org/show_bug.cgi?id=183711
https://trac.webkit.org/changeset/229688
2018-03-16 Wenson Hsieh <wenson_hsieh@apple.com>
Add SPI to expose width and height anchors for WKWebView's content view
https://bugs.webkit.org/show_bug.cgi?id=183711
<rdar://problem/38562899>
Reviewed by Tim Horton.
Add _contentWidthAnchor and _contentHeightAnchor SPI to WKWebView for internal clients to be able to reason
about the size of the content view on iOS using autolayout.
Test: WebKit.AutoLayoutPositionHeaderAndFooterViewsInScrollView.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _contentWidthAnchor]):
(-[WKWebView _contentHeightAnchor]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
2018-03-16 Megan Gardner <megan_gardner@apple.com>
Add _useSystemAppearance to WKView
https://bugs.webkit.org/show_bug.cgi?id=183706
<rdar://problem/38516584>
Reviewed by Tim Horton.
Plumb useSystemAppearance and other supporting functions to WKView
* UIProcess/API/Cocoa/WKViewPrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _useSystemAppearance]):
(-[WKWebView _setUseSystemAppearance:]):
(-[WKWebView effectiveAppearanceDidChange]):
* UIProcess/API/mac/WKView.mm:
(-[WKView effectiveAppearanceDidChange]):
(-[WKView _setUseSystemAppearance:]):
(-[WKView _useSystemAppearance]):
(-[WKView _setDefaultAppearance:]):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setUseSystemAppearance):
(WebKit::WebViewImpl::useSystemAppearance):
(WebKit::WebViewImpl::setDefaultAppearance):
2018-03-16 Brent Fulgham <bfulgham@apple.com>
Set a trap to catch an infrequent form-related nullptr crash
https://bugs.webkit.org/show_bug.cgi?id=183704
<rdar://problem/37579354>
Reviewed by Ryosuke Niwa.
Add a RELEASE_ASSERT to see if we ever encounter a nullptr WebCore frame.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchWillSubmitForm):
2018-03-16 Jer Noble <jer.noble@apple.com>
Make Fullscreen API an Experimental Feature
https://bugs.webkit.org/show_bug.cgi?id=183662
Reviewed by Jon Lee.
Add the ability to have a conditional for whether an Experimental Feature is "visible", separate from
whether the preference is available, for definining platform-specific Experimental Features.
* Scripts/GeneratePreferences.rb:
* Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
* Shared/WebPreferences.yaml:
2018-03-16 Megan Gardner <megan_gardner@apple.com>
Ensure that style is updated when the effective appearance changes
https://bugs.webkit.org/show_bug.cgi?id=183690
<rdar://problem/38385900>
Reviewed by Tim Horton and Wenson Hsieh.
Respond to and respect the effective appearance changing.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView effectiveAppearanceDidChange]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setDefaultAppearance):
2018-03-16 Chris Dumez <cdumez@apple.com>
URLSchemeHandler.Basic API test fails with async policy delegates
https://bugs.webkit.org/show_bug.cgi?id=183678
Reviewed by Alex Christensen.
The issue is that the client calls _didPerformRedirection / didReceiveResponse / didReceiveData / didFinish
on the URLScheme task one after the one, synchronously. However, redirects and responses can be processed
asynchronously. To address the issue, we now queue operations requested by the client if we're waiting
for an async policy delegate.
* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
(WebKit::WebURLSchemeTaskProxy::didPerformRedirection):
(WebKit::WebURLSchemeTaskProxy::didReceiveResponse):
(WebKit::WebURLSchemeTaskProxy::didReceiveData):
(WebKit::WebURLSchemeTaskProxy::didComplete):
(WebKit::WebURLSchemeTaskProxy::processNextPendingTask):
* WebProcess/WebPage/WebURLSchemeTaskProxy.h:
(WebKit::WebURLSchemeTaskProxy::queueTask):
2018-03-16 Claudio Saavedra <csaavedra@igalia.com>
Suppress GCC warnings by using #include instead of #import
Unreviewed.
* UIProcess/SystemPreviewController.cpp:
2018-03-15 Keith Rollin <krollin@apple.com>
Telemetry for stalled webpage loads
https://bugs.webkit.org/show_bug.cgi?id=183221
<rdar://problem/36549013>
Reviewed by Chris Dumez.
Add telemetry for page loads, tracking the pages that succeed, fail,
or are canceled. This information will be used to track the overall
health of our page loading as time goes on.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::reportPageLoadResult):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::reportPageLoadResult):
2018-03-15 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS WK2] Hit-testing fails when specifying a large top content inset
https://bugs.webkit.org/show_bug.cgi?id=183648
<rdar://problem/38421894>
Reviewed by Tim Horton.
Currently, in the process of computing unobscured content rect in the UI process on iOS, we subtract away parts
of the view that are obscured by insets (e.g. MobileSafari's chrome). The helper method -[WKWebView
_computeContentInset] is intended to compute these obscuring insets around the view, but it takes scroll view
insets into account. This means that if WKWebView's inner scroll view has content insets, we'll end up shrinking
the unobscured content rect as if the insetted region obscures the viewport; this causes visible content on the
page to be uninteractible, since WKWebView erroneously thinks it's obscured.
To address this, we rename _computeContentInset to _computeObscuredInset, and make it _not_ affected by the
scroll view's content insets. From code inspection and testing, all but one of the former call sites of
_computeContentInset really need the obscured inset instead (see below). The one exception, -[WKWebView
_adjustedContentOffset:], takes a scroll position from the page and maps it to a content offset in the inner
UIScrollView (see below for more details).
Tests: ScrollViewInsetTests.InnerHeightWithLargeTopContentInset
ScrollViewInsetTests.InnerHeightWithLargeBottomContentInset
ScrollViewInsetTests.RestoreInitialContentOffsetAfterCrash
ScrollViewInsetTests.RestoreInitialContentOffsetAfterNavigation
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setHasCustomContentView:loadedMIMEType:]):
(-[WKWebView _initialContentOffsetForScrollView]):
See -_contentOffsetAdjustedForObscuredInset: below.
(-[WKWebView _contentOffsetAdjustedForObscuredInset:]):
Formerly -_adjustedContentOffset:. -_contentOffsetAdjustedForObscuredInset: no longer takes scroll view content
inset into account, and only cares about insets that obscure the view. This means that the scroll position
(0, 0) in the document now maps to the content offset in the inner UIScrollView, such that the top of the page
is aligned with the top of the viewport.
However, many call sites of -_adjustedContentOffset: were intended to compute the initial, top-left-most content
offset in the scroll view to scroll to when resetting the web view (i.e., they pass in CGPointZero for the
scroll position). An example of this is the scroll position to jump to after web content process termination, or
the scroll position after main frame navigation. In these cases, we actually want to jump to the top of the
scroll view, so we do want to use the version of the computed content insets that accounts for scroll view
insets.
Since these cases are limited to finding the top-left-most scroll position, we pull this out into a separate
helper method (-_initialContentOffsetForScrollView) and replace calls to
`-[self _adjustedContentOffset:CGPointZero]` with this instead.
(-[WKWebView _computedObscuredInset]):
A version of -_computeContentInset that doesn't care about scroll view insets. Used whereever we need to account
for obscured insets rather than the combination of content insets and unobscured insets (e.g.
-_initialContentOffsetForScrollView).
(-[WKWebView _processDidExit]):
(-[WKWebView _didCommitLayerTree:]):
(-[WKWebView _dynamicViewportUpdateChangedTargetToScale:position:nextValidLayerTreeTransactionID:]):
(-[WKWebView _scrollToContentScrollPosition:scrollOrigin:]):
(-[WKWebView scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
(-[WKWebView _updateVisibleContentRects]):
(-[WKWebView _navigationGestureDidBegin]):
In all these places where we inset the view bounds to compute the unobscured region of the viewport, it doesn't
make sense to additionally inset by the scroll view's content insets, since (1) the scroll view's content insets
don't obscure the viewport, and (2) it's perfectly valid for the inner scroll view to have arbitrarily large
content insets.
(-[WKWebView _adjustedContentOffset:]): Deleted.
Renamed to -_contentOffsetAdjustedForObscuredInset:.
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView _offsetForPageNumberIndicator]):
Similar to -_scrollToFragment: (see below).
(-[WKPDFView _scrollToFragment:]):
This helper figures out which content offset to scroll to, given the y-origin of a page in a PDF document. If
insets are added to the scroll view, we end up scrolling to the wrong content offset since we'll add the height
of the top content inset (imagine that the top content inset is enormous — then we'll scroll an amount equal to
the top content inset _past_ the point where the y-origin of the page is at the top of the viewport).
2018-03-15 Brent Fulgham <bfulgham@apple.com>
[macOS] Correct sandbox violations during Flash playback under ToT WebKit
https://bugs.webkit.org/show_bug.cgi?id=183672
<rdar://problem/38510839>
Reviewed by Eric Carlson.
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
* WebProcess/com.apple.WebProcess.sb.in:
2018-03-15 Brent Fulgham <bfulgham@apple.com>
REGRESSION(r229484): Plugins often require CGS Connections to draw
https://bugs.webkit.org/show_bug.cgi?id=183663
<rdar://problem/38439218>
Reviewed by Per Arne Vollan.
Flash requires an active CGSConnection to work properly. Since we don't want the WebContent
process to have on, create a new plugin process-specific layer host creation method that
gives this access.
* Platform/mac/LayerHostingContext.h:
* Platform/mac/LayerHostingContext.mm:
(WebKit::LayerHostingContext::createForExternalPluginHostingProcess): Added.
* PluginProcess/mac/PluginControllerProxyMac.mm:
(WebKit::PluginControllerProxy::updateLayerHostingContext): Use the new creation
method.
2018-03-15 Zan Dobersek <zdobersek@igalia.com>
[TexMap] Remove TextureMapperLayer::texture()
https://bugs.webkit.org/show_bug.cgi?id=183635
Reviewed by Michael Catanzaro.
Remove the CoordinatedBackingStore::texture() override since the virtual
method is also being removed.
* Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
(WebKit::CoordinatedBackingStore::texture const): Deleted.
* Shared/CoordinatedGraphics/CoordinatedBackingStore.h:
2018-03-14 John Wilander <wilander@apple.com>
Resource Load Statistics: Add clearing of storage access to WebResourceLoadStatisticsStore::clearInMemory()
https://bugs.webkit.org/show_bug.cgi?id=183641
<rdar://problem/38469497>
Reviewed by Brent Fulgham and Chris Dumez.
This change is to stabilize existing layout tests by removing
all storage access entries on a call to
WebResourceLoadStatisticsStore::clearInMemory().
See Ryan Haddad's comment in https://bugs.webkit.org/show_bug.cgi?id=183620.
Almost all of the code changes are piping to get this
call from the WebResourceLoadStatisticsStore to
WebCore::NetworkStorageSession where entries reside.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::removeAllStorageAccess):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::removeAllStorageAccess):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::removeAllStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::clearInMemory):
Now also clears all storage access entries in the network process.
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeAllStorageAccessHandler):
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
* UIProcess/WebsiteData/WebsiteDataStore.h:
2018-03-14 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r229613.
Caused API test failures
Reverted changeset:
"Make policy decisions asynchronous"
https://bugs.webkit.org/show_bug.cgi?id=180568
https://trac.webkit.org/changeset/229613
2018-03-14 Chris Dumez <cdumez@apple.com>
Reduce use of SWServerToContextConnection::globalServerToContextConnection()
https://bugs.webkit.org/show_bug.cgi?id=183626
Reviewed by Youenn Fablet.
Reduce use of SWServerToContextConnection::globalServerToContextConnection() as we are moving
towards having multiple context connections.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorker):
2018-03-14 Chris Dumez <cdumez@apple.com>
Make policy decisions asynchronous
https://bugs.webkit.org/show_bug.cgi?id=180568
<rdar://problem/37131297>
Reviewed by Alex Christensen.
Get rid of synchronous IPC and synchronous code paths for policy delegates.
Policy decisions are now all made asynchronously and rely on asynchronous
IPC.
This code change is based on work by Alex Christensen.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
2018-03-14 Chris Dumez <cdumez@apple.com>
Drop unnecessary StorageToWebProcessConnection::workerContextProcessConnectionCreated()
https://bugs.webkit.org/show_bug.cgi?id=183624
Reviewed by Youenn Fablet.
Drop unnecessary StorageToWebProcessConnection::workerContextProcessConnectionCreated()
since it was going through all SWServers. Calling workerContextProcessConnectionCreated()
on every StorageToWebProcessConnection was thus doing redundant work.
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::createStorageToWebProcessConnection):
* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::establishSWServerConnection):
(WebKit::StorageToWebProcessConnection::workerContextProcessConnectionCreated): Deleted.
* StorageProcess/StorageToWebProcessConnection.h:
2018-03-14 Tim Horton <timothy_horton@apple.com>
Fix the build after r229567
* Configurations/FeatureDefines.xcconfig:
2018-03-13 John Wilander <wilander@apple.com>
Resource Load Statistics: Immediately forward cookie access for domains with previous user interaction when there's an opener document
https://bugs.webkit.org/show_bug.cgi?id=183620
<rdar://problem/38431469>
Reviewed by Brent Fulgham.
It turns out the fix in https://bugs.webkit.org/show_bug.cgi?id=183577
wasn't enough to address the compatibility issues with popups. Some of
them just detect their unpartitioned cookies, auto-dismiss themselves,
and expect their unpartitioned cookies to be available under the opener
afterwards. We should grant them access if the popup's domain has had
user interaction _previously_.
Note that we still need https://bugs.webkit.org/show_bug.cgi?id=183577
because if the popup's domain has not received user interaction
previously, we will not grant it storage access on just the window open.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener):
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccessUnderOpener): Deleted.
Renamed WebResourceLoadStatisticsStore::grantStorageAccessUnderOpener()
to WebResourceLoadStatisticsStore::requestStorageAccessUnderOpener()
since there is now a case where access will not be granted, i.e. when
the popup domain has not had user interaction previously.
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebResourceLoadStatisticsStore.messages.in:
Similar renaming.
* WebProcess/WebProcess.cpp:
(WebProcess::WebProcess):
Similar renaming.
2018-03-13 Jer Noble <jer.noble@apple.com>
Add missing artwork for fullscreen mode.
https://bugs.webkit.org/show_bug.cgi?id=183618
Reviewed by Jon Lee.
* Resources/ios/iOS.xcassets/Done.imageset/Contents.json: Added.
* Resources/ios/iOS.xcassets/Done.imageset/Done.pdf: Added.
* Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/Contents.json: Added.
* Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/StartPictureInPictureButton@1x.png: Added.
* Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/StartPictureInPictureButton@2x.png: Added.
* Resources/ios/iOS.xcassets/StartPictureInPictureButton.imageset/StartPictureInPictureButton@3x.png: Added.
* Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/Contents.json: Added.
* Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/StopPictureInPictureButton@1x.png: Added.
* Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/StopPictureInPictureButton@2x.png: Added.
* Resources/ios/iOS.xcassets/StopPictureInPictureButton.imageset/StopPictureInPictureButton@3x.png: Added.
2018-03-13 Brian Burg <bburg@apple.com>
[WK2] Web Inspector: NavigationAction for opening a link in a new tab should have a UserGestureIndicator
https://bugs.webkit.org/show_bug.cgi?id=183612
<rdar://problem/38388641>
Reviewed by Timothy Hatcher.
The current gesture token will be attached to the NavigationAction at construction time,
so set up a UserGestureIndicator when creating the action and sending it out.
* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::openInNewTab):
2018-03-13 Dean Jackson <dino@apple.com>
WKSystemPreviewView needs to implement some of UIScrollViewDelegate
https://bugs.webkit.org/show_bug.cgi?id=183607
<rdar://problem/38427622>
Reviewed by Antoine Quint.
Add an empty implementation of scrollViewDidScroll.
* UIProcess/ios/WKSystemPreviewView.mm:
(-[WKSystemPreviewView scrollViewDidScroll:]):
2018-03-13 Jiewen Tan <jiewen_tan@apple.com>
Soft-link LocalAuthentication.Framework
https://bugs.webkit.org/show_bug.cgi?id=183587
<rdar://problem/38219763>
Reviewed by Brian Burg.
* UIProcess/CredentialManagement/cocoa/WebCredentialsMessengerProxyCocoa.mm:
(WebKit::WebCredentialsMessengerProxy::platformIsUserVerifyingPlatformAuthenticatorAvailable):
* WebKit.xcodeproj/project.pbxproj:
2018-03-12 Dean Jackson <dino@apple.com>
Add a WKWebViewContentProvider for system previews
https://bugs.webkit.org/show_bug.cgi?id=183582
<rdar://problem/38393569>
Reviewed by Tim Horton.
Implement WKSystemPreviewView, which conforms to WKWebViewContentProvider, in
order to view content as a "system preview". This effectively replaces the
SystemPreviewController, which will be removed soon.
Some of the required methods of WKWebViewContentProvider are not necessary on
this instance, so a follow-up patch will clean the protocol up a bit.
* UIProcess/Cocoa/NavigationState.mm: Don't trigger a SystemPreview when downloading.
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
* UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
(-[WKWebViewContentProviderRegistry init]): Register the WKSystemPreviewView for
MIME types retrieved from WebKitAdditions.
* UIProcess/ios/WKSystemPreviewView.h: Added.
* UIProcess/ios/WKSystemPreviewView.mm: Added.
(-[WKSystemPreviewView web_initWithFrame:webView:]):
(-[WKSystemPreviewView web_setContentProviderData:suggestedFilename:]): This is the
method that actually creates a QuickLook preview and provides the data.
(-[WKSystemPreviewView web_setMinimumSize:]):
(-[WKSystemPreviewView web_setOverlaidAccessoryViewsInset:]):
(-[WKSystemPreviewView web_computedContentInsetDidChange]):
(-[WKSystemPreviewView web_setFixedOverlayView:]):
(-[WKSystemPreviewView web_didSameDocumentNavigation:]):
(-[WKSystemPreviewView web_countStringMatches:options:maxCount:]):
(-[WKSystemPreviewView web_findString:options:maxCount:]):
(-[WKSystemPreviewView web_hideFindUI]):
(-[WKSystemPreviewView numberOfPreviewItemsInPreviewController:]): QuickLook delegates.
(-[WKSystemPreviewView previewController:previewItemAtIndex:]):
(-[WKSystemPreviewView provideDataForItem:]):
(-[WKSystemPreviewView previewControllerWillDismiss:]):
* WebKit.xcodeproj/project.pbxproj: Add new files.
2018-03-12 John Wilander <wilander@apple.com>
Resource Load Statistics: Immediately forward cookie access at user interaction when there's an opener document
https://bugs.webkit.org/show_bug.cgi?id=183577
<rdar://problem/38266987>
Reviewed by Brent Fulgham.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::hasStorageAccessForFrame):
Now also checks for general page access.
(WebKit::NetworkProcess::grantStorageAccess):
Renamed from grantStorageAccessForFrame since the frameID now is optional.
(WebKit::NetworkProcess::grantStorageAccessForFrame): Deleted.
Renamed since the frameID now is optional.
* NetworkProcess/NetworkProcess.h:
Renaming since the frameID now is optional.
* NetworkProcess/NetworkProcess.messages.in:
Renaming since the frameID now is optional.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::logCookieInformation):
Consequence of function renaming.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::grantStorageAccess):
(WebKit::NetworkProcessProxy::grantStorageAccessForFrame): Deleted.
Renaming since the frameID now is optional.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
Renaming since the frameID now is optional.
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
Handler renaming since the frameID now is optional.
(WebKit::WebResourceLoadStatisticsStore::grantStorageAccessUnderOpener):
New function for that grants cookie access under a whole page.
* UIProcess/WebResourceLoadStatisticsStore.h:
Member renaming since the frameID now is optional.
* UIProcess/WebResourceLoadStatisticsStore.messages.in:
New message received straight from WebCore::ResourceLoadObserver.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::grantStorageAccessHandler):
Renamed and made frameID optional.
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
Consequence of renaming and making frameID optional.
(WebKit::WebsiteDataStore::grantStorageAccessForFrameHandler): Deleted.
Renamed and made frameID optional.
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebProcess.cpp:
(WebProcess::WebProcess):
Now calls setGrantStorageAccessUnderOpenerCallback() on the shared
WebCore::ResourceLoadObserver.
2018-03-12 Tim Horton <timothy_horton@apple.com>
Stop using SDK conditionals to control feature definitions
https://bugs.webkit.org/show_bug.cgi?id=183430
<rdar://problem/38251619>
Reviewed by Dan Bernstein.
* Configurations/FeatureDefines.xcconfig:
* Configurations/WebKitTargetConditionals.xcconfig: Renamed.
2018-03-12 Yoav Weiss <yoav@yoav.ws>
Runtime flag for link prefetch and remove link subresource.
https://bugs.webkit.org/show_bug.cgi?id=183540
Reviewed by Chris Dumez.
Remove the LINK_PREFETCH build time flag.
* Configurations/FeatureDefines.xcconfig:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::maximumBufferingTime):
2018-03-12 Chris Dumez <cdumez@apple.com>
Load may get committed before receiving policy for the resource response
https://bugs.webkit.org/show_bug.cgi?id=183579
<rdar://problem/38268780>
Reviewed by Youenn Fablet.
r228852 updated WebResourceLoader::didReceiveResponse to only send the
ContinueDidReceiveResponse IPC back to the Networkprocess *after* the
policy decision for the resource response has been made. This is necessary
now that policy decisions can be made asynchronously.
However, one of the 2 code paths in NetworkProcess side (code path when
the resource is already in the HTTP disk cache) failed to wait for the
ContinueDidReceiveResponse IPC before sending over the data to the WebProcess.
As a result, the WebProcess could commit the load before even receiving the
policy response from the client.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::continueDidReceiveResponse):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
(WebKit::NetworkResourceLoader::continueProcessingCachedEntryAfterDidReceiveResponse):
* NetworkProcess/NetworkResourceLoader.h:
Make sure NetworkResourceLoader::didRetrieveCacheEntry() does not start sending the data
until the network process gets the ContinueDidReceiveResponse IPC back from the WebProcess.
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didReceiveData):
* WebProcess/Network/WebResourceLoader.h:
Add assertion to make sure didReceiveData() never gets called before didReceiveResponse's
completion handler has been called. If this hits, then the load may get committed even
though the client did not reply to the policy for the resource response yet.
2018-03-12 Ali Juma <ajuma@chromium.org>
http/tests/workers/service/service-worker-download.https.html times out with async policy delegates
https://bugs.webkit.org/show_bug.cgi?id=183479
Reviewed by Youenn Fablet.
Ensure that ServiceWorkerFetchClient::m_isCheckingResponse is set before code that depends on it
executes. This bit was set by code that's posted to the runloop using 'callOnMainThread' in
ServiceWorkerFetchClient::didReceiveResponse. But when didReceiveResponse is executing, tasks for
handling didReceiveData, didFail, or didFinish may already have been posted to the runloop, and in
that case would execute before m_isCheckingResponse gets set, and then incorrectly fail to
early-out. Fix this by directly setting m_isCheckingResponse in didReceiveResponse.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::start):
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
2018-03-12 Wenson Hsieh <wenson_hsieh@apple.com>
REGRESSION(r211643): Dismissing WKActionSheet should not also dismiss its presenting view controller
https://bugs.webkit.org/show_bug.cgi?id=183549
<rdar://problem/34960698>
Reviewed by Andy Estes.
Fixes the bug by dismissing the presented view controller (i.e. the action sheet or the view controller being
presented during rotation) rather than the presenting view controller.
Test: ActionSheetTests.DismissingActionSheetShouldNotDismissPresentingViewController
* UIProcess/ios/WKActionSheet.mm:
(-[WKActionSheet doneWithSheet:]):
2018-03-12 Javier Fernandez <jfernandez@igalia.com>
Remove GridLayout runtime flag
https://bugs.webkit.org/show_bug.cgi?id=183484
Reviewed by Myles C. Maxfield.
The Grid Layout feature has been enabled by default for almost a
year, so I think it's time to remove the runtime flag and the
codepath run when the feature is disabled.
* Shared/WebPreferences.yaml:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
2018-03-11 Wenson Hsieh <wenson_hsieh@apple.com>
Fix the internal iOS build after r229512
https://bugs.webkit.org/show_bug.cgi?id=183550
Reviewed by Zalan Bujtas.
Fixes a typo in a header import, as well as a nullability error. `SecTrustEvaluate()` takes in a nonnull outparam,
which was removed in r229512; this adds the outparam back, but does not consult its value when setting the
`infoDictionary`.
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _EVOrganizationName]):
2018-03-10 Jer Noble <jer.noble@apple.com>
Improvements to fullscreen; new UI and security features
https://bugs.webkit.org/show_bug.cgi?id=183503
Reviewed by Dean Jackson.
Now that the iOS Fullscreen code has more than one major class, move it into an ios/
directory.
Clean up the WKFullScreenWindowControllerIOS class to more clearly separate external
facing API from purely internal functions.
Move the WKFullScreenViewController out into its own file. Add support for fullscreen
top inset and fullscreen autohide duration CSS constants.
Add a heuristic to distinguish between media control related touches and ones that look
more keyboard interactions.
Add a new UIStackView based control to hold the fullscreen controls.
* UIProcess/ios/WKFullScreenWindowControllerIOS.mm: Removed.
* UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.cpp: Added.
(WebKit::FullscreenTouchSecheuristic::scoreOfNextTouch):
(WebKit::FullscreenTouchSecheuristic::reset):
(WebKit::FullscreenTouchSecheuristic::distanceScore):
(WebKit::FullscreenTouchSecheuristic::attenuationFactor):
* UIProcess/ios/fullscreen/FullscreenTouchSecheuristic.h:
(WebKit::FullscreenTouchSecheuristic::setRampUpSpeed):
(WebKit::FullscreenTouchSecheuristic::setRampDownSpeed):
(WebKit::FullscreenTouchSecheuristic::setXWeight):
(WebKit::FullscreenTouchSecheuristic::setYWeight):
(WebKit::FullscreenTouchSecheuristic::setSize):
(WebKit::FullscreenTouchSecheuristic::setGamma):
(WebKit::FullscreenTouchSecheuristic::setGammaCutoff):
* UIProcess/ios/fullscreen/WKFullScreenViewController.h:
* UIProcess/ios/fullscreen/WKFullScreenViewController.mm: Added.
(WKFullScreenViewControllerPlaybackSessionModelClient::setParent):
(WKFullScreenViewControllerPlaybackSessionModelClient::setInterface):
(-[_WKExtrinsicButton setExtrinsicContentSize:]):
(-[_WKExtrinsicButton intrinsicContentSize]):
(-[WKFullScreenViewController initWithWebView:]):
(-[WKFullScreenViewController dealloc]):
(-[WKFullScreenViewController showUI]):
(-[WKFullScreenViewController hideUI]):
(-[WKFullScreenViewController videoControlsManagerDidChange]):
(-[WKFullScreenViewController setPrefersStatusBarHidden:]):
(-[WKFullScreenViewController setPlaying:]):
(-[WKFullScreenViewController setPictureInPictureActive:]):
(-[WKFullScreenViewController loadView]):
(-[WKFullScreenViewController viewWillAppear:]):
(-[WKFullScreenViewController viewDidLayoutSubviews]):
(-[WKFullScreenViewController viewWillTransitionToSize:withTransitionCoordinator:]):
(-[WKFullScreenViewController preferredStatusBarStyle]):
(-[WKFullScreenViewController prefersStatusBarHidden]):
(-[WKFullScreenViewController gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKFullScreenViewController gestureRecognizer:shouldReceiveTouch:]):
(-[WKFullScreenViewController _manager]):
(-[WKFullScreenViewController _effectiveFullscreenInsetTop]):
(-[WKFullScreenViewController _cancelAction:]):
(-[WKFullScreenViewController _togglePiPAction:]):
(-[WKFullScreenViewController _touchDetected:]):
(-[WKFullScreenViewController _statusBarFrameDidChange:]):
(-[WKFullScreenViewController _updateWebViewFullscreenInsets]):
(-[WKFullScreenViewController _showPhishingAlert]):
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.h: Copied from Source/WebKit/UIProcess/ios/WKFullScreenWindowControllerIOS.h.
* UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm: Added.
(WebKit::replaceViewWithView):
(WebKit::WKWebViewState::applyTo):
(WebKit::WKWebViewState::store):
(-[WKFullscreenAnimationController transitionDuration:]):
(-[WKFullscreenAnimationController configureInitialAndFinalStatesForTransition:]):
(-[WKFullscreenAnimationController animateTransition:]):
(-[WKFullscreenAnimationController animationEnded:]):
(-[WKFullscreenAnimationController startInteractiveTransition:]):
(-[WKFullscreenAnimationController updateWithPercent:]):
(-[WKFullscreenAnimationController updateWithPercent:translation:anchor:]):
(-[WKFullscreenAnimationController end:]):
(-[WKFullScreenInteractiveTransition initWithAnimator:anchor:]):
(-[WKFullScreenInteractiveTransition wantsInteractiveStart]):
(-[WKFullScreenInteractiveTransition startInteractiveTransition:]):
(-[WKFullScreenInteractiveTransition updateInteractiveTransition:withTranslation:]):
(-[WKFullScreenInteractiveTransition cancelInteractiveTransition]):
(-[WKFullScreenInteractiveTransition finishInteractiveTransition]):
(-[WKFullScreenWindowController initWithWebView:]):
(-[WKFullScreenWindowController dealloc]):
(-[WKFullScreenWindowController isFullScreen]):
(-[WKFullScreenWindowController webViewPlaceholder]):
(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):
(-[WKFullScreenWindowController requestExitFullScreen]):
(-[WKFullScreenWindowController exitFullScreen]):
(-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]):
(-[WKFullScreenWindowController _completedExitFullScreen]):
(-[WKFullScreenWindowController close]):
(-[WKFullScreenWindowController webViewDidRemoveFromSuperviewWhileInFullscreen]):
(-[WKFullScreenWindowController videoControlsManagerDidChange]):
(-[WKFullScreenWindowController gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKFullScreenWindowController animationControllerForPresentedController:presentingController:sourceController:]):
(-[WKFullScreenWindowController animationControllerForDismissedController:]):
(-[WKFullScreenWindowController interactionControllerForDismissal:]):
(-[WKFullScreenWindowController _exitFullscreenImmediately]):
(-[WKFullScreenWindowController _invalidateEVOrganizationName]):
(-[WKFullScreenWindowController _isSecure]):
(-[WKFullScreenWindowController _serverTrust]):
(-[WKFullScreenWindowController _EVOrganizationName]):
(-[WKFullScreenWindowController _updateLocationInfo]):
(-[WKFullScreenWindowController _manager]):
(-[WKFullScreenWindowController _startToDismissFullscreenChanged:]):
(-[WKFullScreenWindowController _interactiveDismissChanged:]):
* UIProcess/ios/fullscreen/WKFullscreenStackView.h: Renamed from Source/WebKit/UIProcess/ios/WKFullScreenWindowControllerIOS.h.
* UIProcess/ios/fullscreen/WKFullscreenStackView.mm: Added.
(+[WKFullscreenStackView baseEffects]):
(+[WKFullscreenStackView configureView:forTintEffectWithColor:filterType:]):
(+[WKFullscreenStackView configureView:withBackgroundFillOfColor:opacity:filter:]):
(+[WKFullscreenStackView secondaryMaterialOverlayView]):
(+[WKFullscreenStackView applyPrimaryGlyphTintToView:]):
(+[WKFullscreenStackView applySecondaryGlyphTintToView:]):
(-[WKFullscreenStackView initWithArrangedSubviews:axis:]):
(-[WKFullscreenStackView setTargetViewForSecondaryMaterialOverlay:]):
(-[WKFullscreenStackView contentView]):
(-[WKFullscreenStackView _setArrangedSubviews:axis:]):
(-[WKFullscreenStackView setBounds:]):
(-[WKFullscreenStackView updateConstraints]):
* WebKit.xcodeproj/project.pbxproj:
2018-03-10 Megan Gardner <megan_gardner@apple.com>
Media query for default appearance
https://bugs.webkit.org/show_bug.cgi?id=183539
<rdar://problem/38326388>
Reviewed by Tim Horton.
Write a media query to evaluate appearance.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _setUseSystemAppearance:]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setDefaultAppearance):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::defaultAppearance const):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
(WebKit::WebPage::setDefaultAppearance):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2018-03-09 Jer Noble <jer.noble@apple.com>
Unconditionalize more methods in VideoFullscreenInterface (and related classes)
https://bugs.webkit.org/show_bug.cgi?id=183501
<rdar://problem/38312038>
Unreviewed build fix; add correct pragmas to code referencing m_playbackSessionManager.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::hasActiveVideoForControlsManager const):
(WebKit::WebPageProxy::requestControlledElementID const):
(WebKit::WebPageProxy::isPlayingVideoInEnhancedFullscreen const):
2018-03-09 Brian Burg <bburg@apple.com>
Web Inspector: there should only be one way for async backend commands to send failure
https://bugs.webkit.org/show_bug.cgi?id=183524
Reviewed by Timothy Hatcher.
Remove useless ErrorString argument from async commands.
For Automation protocol, introduce sync and async macros for filling
in and sending a failure response. Now that async commands don't have
an ErrorString and sync commands don't have a callback, trying to send
an error with the wrong macro is a compile-time error.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::getBrowsingContexts):
(WebKit::WebAutomationSession::getBrowsingContext):
(WebKit::WebAutomationSession::createBrowsingContext):
(WebKit::WebAutomationSession::closeBrowsingContext):
(WebKit::WebAutomationSession::switchToBrowsingContext):
(WebKit::WebAutomationSession::setWindowFrameOfBrowsingContext):
(WebKit::WebAutomationSession::waitForNavigationToComplete):
(WebKit::WebAutomationSession::navigateBrowsingContext):
(WebKit::WebAutomationSession::goBackInBrowsingContext):
(WebKit::WebAutomationSession::goForwardInBrowsingContext):
(WebKit::WebAutomationSession::reloadBrowsingContext):
(WebKit::WebAutomationSession::evaluateJavaScriptFunction):
(WebKit::WebAutomationSession::resolveChildFrameHandle):
(WebKit::WebAutomationSession::resolveParentFrameHandle):
(WebKit::WebAutomationSession::computeElementLayout):
(WebKit::WebAutomationSession::selectOptionElement):
(WebKit::WebAutomationSession::isShowingJavaScriptDialog):
(WebKit::WebAutomationSession::dismissCurrentJavaScriptDialog):
(WebKit::WebAutomationSession::acceptCurrentJavaScriptDialog):
(WebKit::WebAutomationSession::messageOfCurrentJavaScriptDialog):
(WebKit::WebAutomationSession::setUserInputForCurrentJavaScriptPrompt):
(WebKit::WebAutomationSession::setFilesToSelectForFileUpload):
(WebKit::WebAutomationSession::getAllCookies):
(WebKit::WebAutomationSession::deleteSingleCookie):
(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):
(WebKit::WebAutomationSession::setSessionPermissions):
(WebKit::WebAutomationSession::performMouseInteraction):
(WebKit::WebAutomationSession::performKeyboardInteractions):
(WebKit::WebAutomationSession::takeScreenshot):
(WebKit::WebAutomationSession::didTakeScreenshot):
* UIProcess/Automation/WebAutomationSession.h:
* UIProcess/Automation/WebAutomationSessionMacros.h:
* UIProcess/Automation/mac/WebAutomationSessionMac.mm:
(WebKit::WebAutomationSession::inspectBrowsingContext):
2018-03-09 Jer Noble <jer.noble@apple.com>
Don't pass NULL to the result parameter of SecTrustEvaluate()
https://bugs.webkit.org/show_bug.cgi?id=183495
<rdar://problem/38185688>
Reviewed by Andy Estes.
* UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _EVOrganizationName]):
2018-03-09 Dean Jackson <dino@apple.com>
Allow NavigationState to intercept requests and send them to SystemPreviewController
https://bugs.webkit.org/show_bug.cgi?id=183526
<rdar://problem/37801140>
Reviewed by Tim Horton.
Implement a bit more of SystemPreviewController, such that it can be used
from NavigationState to identify and handle content that can be previewed.
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
If we'd in a download response policy, then check if SystemPreviewController
can show the content. We ignore the download, but pass the original URL onto
the preview. Ultimately, we'd want to avoid the navigation
but use the download destination URL for preview.
* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
(-[_WKPreviewControllerDataSource initWithURL:]):
Move the URL to property, to help use a single datasource object for all previews.
(-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
(-[_WKPreviewControllerDelegate initWithSystemPreviewController:]):
Add a delegate object, so we can detect when the preview is dismissed and return
to the previous page.
(-[_WKPreviewControllerDelegate previewControllerWillDismiss:]):
(WebKit::SystemPreviewController::showPreview):
Use single instances of the QLPreviewController, its datasource and delegate.
* UIProcess/SystemPreviewController.cpp:
Add a helper to navigate back.
(WebKit::SystemPreviewController::SystemPreviewController):
(WebKit::SystemPreviewController::sendPageBack):
* UIProcess/SystemPreviewController.h:
2018-03-09 Jer Noble <jer.noble@apple.com>
webkitfullscreenchange event not fired at the same time as :-webkit-full-screen pseudo selector changes; causes glitchiness
https://bugs.webkit.org/show_bug.cgi?id=183383
<rdar://problem/38197028>
Reviewed by Eric Carlson.
Follow-up patch: now that the 'fullscreenchange' event is being fired slightly earlier, the
Fullscreen.TopContentInset tests triggers what appears to be an existing behavior: if you
exit in the middle of an enter fullscreen animation, the exit never happens, because the
NSWindow never starts the exit animation. The solution is to store the exit fullscreen
request, and only act upon it when the enter animation completes.
* UIProcess/mac/WKFullScreenWindowController.h:
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
(-[WKFullScreenWindowController exitFullScreen]):
2018-03-09 Jer Noble <jer.noble@apple.com>
Unconditionalize more methods in VideoFullscreenInterface (and related classes)
https://bugs.webkit.org/show_bug.cgi?id=183501
Reviewed by Eric Carlson.
No reason for these methods to be PLATFORM(MAC) only.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _videoControlsManagerDidChange]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
(WebKit::PlaybackSessionManagerProxy::setUpPlaybackControlsManagerWithID):
(WebKit::PlaybackSessionManagerProxy::clearPlaybackControlsManager):
* UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::isPlayingMediaDidChange):
(WebKit::WebPageProxy::handleControlledElementIDResponse const):
(WebKit::WebPageProxy::isPlayingVideoInEnhancedFullscreen const):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::videoControlsManagerDidChange):
* UIProcess/ios/WKFullScreenWindowControllerIOS.h:
* UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController videoControlsManagerDidChange]):
* WebProcess/cocoa/PlaybackSessionManager.mm:
(WebKit::PlaybackSessionManager::setUpPlaybackControlsManager):
2018-03-09 Per Arne Vollan <pvollan@apple.com>
Create CA layer contexts with +remoteContextWithOptions.
https://bugs.webkit.org/show_bug.cgi?id=182747
Reviewed by Brent Fulgham.
CA layer contexts (CAContext) are currently created with +contextWithCGSConnection, which is
using the main WindowServer connection to create the context. Instead, the contexts can be
created with +remoteContextWithOptions, which does not use the main WindowServer connection.
This is a step towards limiting the access the WebContent process has to the window server.
To make the +remoteContextWithOptions call succeed, the sandbox has to be modified to allow
access to CARenderServer. Also, access to the WindowServer should be denied by calling
CGSSetDenyWindowServerConnections(true) before entering the sandbox. This is planned to do
in a follow-up patch. The call to +remoteContextWithOptions will open up WindowServer
connections, since the WindowServer is the system default CA render server, but these
connections come with limited WindowServer exposure. In addition, we need to open up the
sandbox for accessing some IOKit properties.
* Platform/mac/LayerHostingContext.mm:
(WebKit::LayerHostingContext::createForExternalHostingProcess):
* Shared/mac/HangDetectionDisablerMac.mm:
(WebKit::setClientsMayIgnoreEvents):
* WebProcess/com.apple.WebProcess.sb.in:
2018-03-09 Brent Fulgham <bfulgham@apple.com>
Remove cookie API access from WebContent Process
https://bugs.webkit.org/show_bug.cgi?id=183519
<rdar://problem/35368802>
Reviewed by Alex Christensen.
All cookie access is now handled in the Network Process. However, there are vestiges of the original logic that used CFNetwork APIs in the WebContent process.
This patch removes CFNetwork calls from the WebProcess code paths, since they serve no purpose in modern WebKit.
No tests because this is a code cleanup with no expected change in behavior.
* NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:
(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy): Moved from WebFrameNetworkingContext.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::setSharedHTTPCookieStorage): Moved from ChildProcess, since this should only be
called in the NetworkProcess.
* Shared/ChildProcess.h:
* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::setSharedHTTPCookieStorage): Deleted.
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession): Remove CFNetwork code. This version of
'ensureWebsiteDataStoreSession' is needed to maintain a dictionary on the WebProcess side so we can refer to
the same network session in both the WebContent and Network processes.
(WebKit::WebFrameNetworkingContext::webFrameLoaderClient const):
(WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts): Deleted.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess): Remove calls to CFNetwork.
2018-03-09 Youenn Fablet <youenn@apple.com>
ServiceWorkerClientFetch should send data to its resource loader once the didReceiveResponse completion handler is called
https://bugs.webkit.org/show_bug.cgi?id=183110
Reviewed by Chris Dumez.
Buffering data/finish event/fail event until the response completion handler is called.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
(WebKit::ServiceWorkerClientFetch::didReceiveData):
(WebKit::ServiceWorkerClientFetch::didFinish):
(WebKit::ServiceWorkerClientFetch::didFail):
(WebKit::ServiceWorkerClientFetch::didNotHandle):
(WebKit::ServiceWorkerClientFetch::cancel):
(WebKit::ServiceWorkerClientFetch::continueLoadingAfterCheckingResponse):
* WebProcess/Storage/ServiceWorkerClientFetch.h:
2018-03-09 Jer Noble <jer.noble@apple.com>
Add new CSS env constants for use with fullscreen
https://bugs.webkit.org/show_bug.cgi?id=183498
Reviewed by Dean Jackson.
Pass the values given to WebFullScreenManagerProxy through the process boundary and
into WebCore.
* UIProcess/WebFullScreenManagerProxy.cpp:
(WebKit::WebFullScreenManagerProxy::setFullscreenInsetTop):
(WebKit::WebFullScreenManagerProxy::setFullscreenAutoHideDelay):
* UIProcess/WebFullScreenManagerProxy.h:
* WebProcess/FullScreen/WebFullScreenManager.cpp:
(WebKit::WebFullScreenManager::didExitFullScreen):
(WebKit::WebFullScreenManager::setFullscreenInsetTop):
(WebKit::WebFullScreenManager::setFullscreenAutoHideDelay):
* WebProcess/FullScreen/WebFullScreenManager.h:
* WebProcess/FullScreen/WebFullScreenManager.messages.in:
2018-03-09 Jer Noble <jer.noble@apple.com>
Add isPictureInPictureActive messaging across WebKit process boundary
https://bugs.webkit.org/show_bug.cgi?id=183499
Reviewed by Eric Carlson.
* UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
(WebKit::PlaybackSessionModelContext::pictureInPictureActiveChanged):
(WebKit::PlaybackSessionManagerProxy::pictureInPictureActiveChanged):
2018-03-09 Stephan Szabo <stephan.szabo@sony.com>
Add guard for wtf/glib include
https://bugs.webkit.org/show_bug.cgi?id=183521
Reviewed by Alex Christensen.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
2018-03-09 Andy Estes <aestes@apple.com>
[Mac] WebKit fails to receive file promises when the embedding app is sandboxed
https://bugs.webkit.org/show_bug.cgi?id=183489
<rdar://problem/38267517>
WebKit calls -[NSFilePromiseReceiver receivePromisedFilesAtDestination:...] with
NSTemporaryDirectory() as the destination for receiving file promise drops. AppKit attempts
to issue a sandbox extension for this directory, but for security reasons App Sandbox
refuses to do so for NSTemporaryDirectory() itself. As a result, AppKit will call our reader
block with a nil error and a valid file URL, but no file will actually exist at that URL.
In order for App Sandbox to grant issuing the sandbox extension needed by AppKit, we need to
use some other destination directory. This patch uses FileSystem::createTemporaryDirectory()
to securely create a unique temporary directory inside NSTemporaryDirectory() for use as the
drop destination.
Reviewed by Wenson Hsieh.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):
2018-03-09 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Do not use WebKitDOMHTMLFormElement as argument of signal WebKitWebPage::will-submit-form
https://bugs.webkit.org/show_bug.cgi?id=183510
Reviewed by Michael Catanzaro.
In 2.22 WebKitDOMHTMLFormElement will be deprecated in GTK+ port and won't still exist in WPE. The new
JavaScript GLib API will be used to replace most of the DOM API, but a few classes will remain with a minimal
API for things that can't be done with JavaScript. WebKitDOMElement will stay and will be added to WPE as well,
so if we change the signal parameter to WebKitDOMElement we will be able to keep using
WebKitWebPage::will-submit-form without any changes. WPE will gain this signal and the rest of the API that uses
DOM.
* WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
(webkit_web_page_class_init):
2018-03-09 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. [GTK][WPE] Bump Since tags of resource load stats API.
The functionality hasn't been properly tested to be released in WebKitGTK+ 2.20.
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
(webkit_website_data_manager_class_init):
* UIProcess/API/gtk/WebKitWebsiteData.h:
* UIProcess/API/wpe/WebKitWebsiteData.h:
2018-03-08 Zan Dobersek <zdobersek@igalia.com>
Unreviewed. Suppress GCC warnings in SystemPreviewController.cpp by
using the cross-platform #include directives for header inclusion,
instead of #import.
* UIProcess/SystemPreviewController.cpp:
2018-03-08 Megan Gardner <megan_gardner@apple.com>
Allow WebViews to disable system appearance
https://bugs.webkit.org/show_bug.cgi?id=183418
<rdar://problem/36975642>
Reviewed by Tim Horton.
Allow webviews to choose whether or not to follow the default system appearance.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _useSystemAppearance]):
(-[WKWebView _setUseSystemAppearance:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
(WebKit::WebPageProxy::setUseSystemAppearance):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::useSystemAppearance const):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setUseSystemAppearance):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2018-03-08 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, speculative attempt to fix CMake build after r229426
https://bugs.webkit.org/show_bug.cgi?id=183382
<rdar://problem/38191450>
* CMakeLists.txt:
2018-03-08 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Support resigning first responder status when focusing a form control
https://bugs.webkit.org/show_bug.cgi?id=183477
<rdar://problem/38225994>
Reviewed by Tim Horton.
Currently, when presenting an input view controller in extra zoom mode, if the web view loses first responder
status, we will blur the focused element, which dismisses all focused form control UI. For certain types of form
controls, this prevents the user from using key pieces of functionality.
To address this, disconnect the notion of first responder status from DOM element focus while the form control
overlay is shown. Later, when the active input session ends, if the web content view was first responder before
upon focusing the element, restore first responder status on the web view. This extra tweak is needed to ensure
that certain UI affordances which require first responder status on the web view continue to work after
interacting with a form control that changes the first responder.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView presentFocusedFormControlViewController:]):
(-[WKContentView dismissFocusedFormControlViewController:]):
2018-03-08 John Wilander <wilander@apple.com>
Resource Load Statistics: Revert defaults read of zero values
https://bugs.webkit.org/show_bug.cgi?id=183476
Unreviewed revert of three small changes landed in r229427.
* UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
(WebKit::WebResourceLoadStatisticsStore::registerUserDefaultsIfNeeded):
Reverted back to strict check of greater than zero for defaults reads.
2018-03-08 Tim Horton <timothy_horton@apple.com>
Don't have SafariServices in minimal simulator build
https://bugs.webkit.org/show_bug.cgi?id=183436
<rdar://problem/38254778>
Reviewed by Dan Bernstein.
* config.h:
2018-03-08 John Wilander <wilander@apple.com>
Resource Load Statistics: Make debug mode always partition prevalent resources
https://bugs.webkit.org/show_bug.cgi?id=183468
<rdar://problem/38269437>
Reviewed by Brent Fulgham.
After some testing we decided that a 30 second timeout in ITP debug mode just makes
it confusing. We should instead always partition prevalent resources in debug mode
to make it easy to understand. The partitioned state is what developers want to test
anyway.
* UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
(WebKit::WebResourceLoadStatisticsStore::registerUserDefaultsIfNeeded):
Minor change to include 0 as valid setting.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode):
Now just stores the setting of debug mode instead of changing the timeout.
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
Now does not disable partitioning under debug mode.
(WebKit::WebResourceLoadStatisticsStore::shouldPartitionCookies const):
Now returns true for prevalent resources with user interaction under debug mode.
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
Removed duplicate debug logging statement.
* UIProcess/WebResourceLoadStatisticsStore.h:
Added member m_debugModeEnabled.
2018-03-08 Brent Fulgham <bfulgham@apple.com>
Remove WebCookieManager and messaging from WebContent process.
https://bugs.webkit.org/show_bug.cgi?id=183382
<rdar://problem/38191450>
Reviewed by Alex Christensen.
Networking access was fully removed from the WebContent process in Bug 183192 (and related bugs). The
UIProcess no longer needs to ask the WebContent process about networking-related things, and shouldn't
waste everyone's time doing so.
This bug removes some left-over WebCookieManager API stuff, and is a first step in purging the
WebContent Process from accessing cookie data.
* NetworkProcess/Cookies: Copied from WebProcess/Cookies.
* NetworkProcess/Cookies/WebCookieManager.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Cookies: Removed.
* WebProcess/Cookies/WebCookieManager.cpp: Removed.
* WebProcess/Cookies/WebCookieManager.h: Removed.
* WebProcess/Cookies/WebCookieManager.messages.in: Removed.
* WebProcess/Cookies/curl: Removed.
* WebProcess/Cookies/curl/WebCookieManagerCurl.cpp: Removed.
* WebProcess/Cookies/mac: Removed.
* WebProcess/Cookies/mac/WebCookieManagerMac.mm: Removed.
* WebProcess/Cookies/soup: Removed.
* WebProcess/Cookies/soup/WebCookieManagerSoup.cpp: Removed.
* WebProcess/InjectedBundle/InjectedBundle.cpp: Remove 'WebCookieManager.h" header.
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: Ditto.
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm: Ditto.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::WebProcess): Remove call to add WebCookieManager as a
WebProcessSupplement.
* CMakeLists.txt: Revised paths.
* DerivedSources.make: Ditto.
* PlatformMac.cmake: Ditto.
* PlatformWin.cmake: Ditto.
* SourcesGTK.txt: Ditto.
* SourcesWPE.txt: Ditto.
2018-03-08 Youenn Fablet <youenn@apple.com>
libwebrtc update broke internal builds
https://bugs.webkit.org/show_bug.cgi?id=183454
Reviewed by Eric Carlson.
* Configurations/BaseTarget.xcconfig:
2018-03-08 Youenn Fablet <youenn@apple.com>
PluginInfoStore::isSupportedPlugin should check for empty mime type
https://bugs.webkit.org/show_bug.cgi?id=183457
<rdar://problem/38159575>
Reviewed by Chris Dumez.
* UIProcess/Plugins/PluginInfoStore.cpp:
(WebKit::PluginInfoStore::isSupportedPlugin):
2018-03-08 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC][WebCore] Extend jsDynamicCast for WebCore types in WebCore and remove jsDynamicDowncast
https://bugs.webkit.org/show_bug.cgi?id=183449
Reviewed by Mark Lam.
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::elementForNodeHandle):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::frameForContext):
2018-03-08 Yusuke Suzuki <utatane.tea@gmail.com>
[JSC] Add inherits<T>(VM&) leveraging JSCast fast path
https://bugs.webkit.org/show_bug.cgi?id=183429
Reviewed by Mark Lam.
* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
(WebKit::callMethod):
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::callNPJSObject):
(WebKit::constructWithConstructor):
* WebProcess/Plugins/Netscape/NPJSObject.cpp:
(WebKit::NPJSObject::create):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::counterValue):
2018-03-08 Zan Dobersek <zdobersek@igalia.com>
Remove WebCore::TextureMapperAnimation as a special case in WebKit IPC
generation. Values of this type aren't being transferred across IPC.
Rubber-stamped by Carlos Garcia Campos.
* Scripts/webkit/messages.py:
2018-03-08 Tim Horton <timothy_horton@apple.com>
Stop linking ApplicationServices directly
https://bugs.webkit.org/show_bug.cgi?id=182867
<rdar://problem/38252142>
Reviewed by Alex Christensen.
The frameworks that we use that live inside ApplicationServices
have mostly moved out, so import them directly.
* Configurations/WebKit.xcconfig:
2018-03-08 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Specify password mode as needed when inputting text
https://bugs.webkit.org/show_bug.cgi?id=183428
<rdar://problem/37609386>
Reviewed by Tim Horton.
If the focused element is a password field, or the input delegate has forced secure text entry, set a flag on
the text input view controller to opt in to password text input mode.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView presentTextInputViewController:]):
2018-03-07 Tim Horton <timothy_horton@apple.com>
Sort and separate FeatureDefines.xcconfig
https://bugs.webkit.org/show_bug.cgi?id=183427
Reviewed by Dan Bernstein.
* Configurations/FeatureDefines.xcconfig:
Sort and split FeatureDefines into paragraphs
(to make it easier to sort later).
2018-03-07 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r218089): [GTK] webkit_web_view_get_inspector() needs to be called, otherwise inspector does not close
https://bugs.webkit.org/show_bug.cgi?id=181126
Reviewed by Carlos Alberto Lopez Perez.
Fix the condition to decide whether to detach the inspector view ourselves.
* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::platformDetach): Remove the inspector view from its parent if we don't have a client
or the client didn't detach it.
2018-03-07 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK][WPE] Leak checker is not working in WebKitGLib web process tests
https://bugs.webkit.org/show_bug.cgi?id=183404
Reviewed by Michael Catanzaro.
Add private helper for testing to do a garbage collection when the page is closing.
* WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:
(webkitWebExtensionSetGarbageCollectOnPageDestroy):
* WebProcess/InjectedBundle/API/glib/WebKitWebExtensionPrivate.h:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.h: Fix annotation of
webkit_dom_client_rect_list_item(), it should be transfer full.
2018-03-07 Youenn Fablet <youenn@apple.com>
Match unsupported plugins based on domains and not origin
https://bugs.webkit.org/show_bug.cgi?id=183384
Reviewed by Chris Dumez.
Moved from a HashMap of plugins to a Vector of plugins since we cannot match exactly based on the origin.
* Scripts/webkit/messages.py:
* UIProcess/API/C/WKContext.cpp:
(WKContextAddSupportedPlugin):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _addSupportedPlugin:named:withMimeTypes:withExtensions:]):
* UIProcess/Plugins/PluginInfoStore.cpp:
(WebKit::PluginInfoStore::isSupportedPlugin):
(WebKit::PluginInfoStore::supportedPluginNames):
(WebKit::PluginInfoStore::addSupportedPlugin):
* UIProcess/Plugins/PluginInfoStore.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::addSupportedPlugin):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getPlugins):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::getPluginInfo):
(WebKit::WebPluginInfoProvider::getWebVisiblePluginInfo):
* WebProcess/Plugins/WebPluginInfoProvider.h:
2018-03-07 Brent Fulgham <bfulgham@apple.com>
REGRESSION (r229093): Media playback on Facebook and Hulu require mDNSResponder access
https://bugs.webkit.org/show_bug.cgi?id=183421
<rdar://problem/38191574>
Reviewed by Dean Jackson.
CoreMedia fails to properly play back media on Facebook and Hulu if access to the
mDNSResponder is blocked by the sandbox. This Bug unblocks that access while we
investigate the underlying issue.
* WebProcess/com.apple.WebProcess.sb.in:
2018-03-07 Dean Jackson <dino@apple.com>
Try to fix build for watchOS and tvOS.
* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
* UIProcess/SystemPreviewController.cpp:
2018-03-07 Dean Jackson <dino@apple.com>
Add SystemPreviewController for showing system-level views of special file types
https://bugs.webkit.org/show_bug.cgi?id=183413
<rdar://problem/37800834>
Reviewed by Tim Horton.
Add a new controller class that hangs off WebPageProxy, with the goal
of providing system-level viewing of some some file types. Specifically
those that can't be shown by WebKit.
This is the initial implementation which is quite simple. The controller
can be queried about whether it supports a MIME type, then it can be
asked to show a URL.
* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Added.
(-[_WKPreviewControllerDataSource initWithURL:]):
(-[_WKPreviewControllerDataSource numberOfPreviewItemsInPreviewController:]):
(-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
(WebKit::SystemPreviewController::canPreview const):
(WebKit::SystemPreviewController::showPreview):
* UIProcess/SystemPreviewController.cpp: Added.
(WebKit::SystemPreviewController::SystemPreviewController):
(WebKit::SystemPreviewController::canPreview const):
(WebKit::SystemPreviewController::showPreview):
* UIProcess/SystemPreviewController.h: Added.
* UIProcess/WebPageProxy.cpp:
(WebKit::m_configurationPreferenceValues):
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::resetState):
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::systemPreviewController):
* WebKit.xcodeproj/project.pbxproj:
2018-03-07 Alejandro G. Castro <alex@igalia.com>
Make NetworkRTCResolver port agnostic
https://bugs.webkit.org/show_bug.cgi?id=178855
Reviewed by Youenn Fablet.
Create a specific Cocoa class to isolate the generic code in the base class, make the base implementation port
agnostic and dependent on DNS API in the platform directory which encapsulates the platform specific details.
* NetworkProcess/webrtc/NetworkRTCProvider.cpp: Create an alias class name defined per platform to instantiate the resolver.
(WebKit::NetworkRTCProvider::createResolver): Used the alias class name and receive a new IPAddress class that is not
dependent on rtc libwebrtc library.
* NetworkProcess/webrtc/NetworkRTCResolver.cpp: Remove the platform specific code. Use the DNS API to implement the
platform specific code in the default start and stop methods. Add the identifier of the resolve operation to the class.
(WebKit::NetworkRTCResolver::NetworkRTCResolver): Add the identifier in the initialization.
(WebKit::NetworkRTCResolver::~NetworkRTCResolver): Remove the platform specific code.
(WebKit::NetworkRTCResolver::completed): Ditto.
(WebKit::NetworkRTCResolver::start): Add a new implementation using the DNS API.
(WebKit::NetworkRTCResolver::stop): Ditto
* NetworkProcess/webrtc/NetworkRTCResolver.h: Remove the platform specific code and use the DNSResolveQueue for a general
solution to implement the platform specific code. Avoid using the IPAddress class that depends on libwertc classes to make
it more general regarding DNS name resolution.
(WebKit::NetworkRTCResolver::start): Make this class virtual.
(WebKit::NetworkRTCResolver::stop): Ditto.
* NetworkProcess/webrtc/NetworkRTCResolverCocoa.cpp: Copied Cocoa code from Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolver.cpp.
Now this class overrides the start and stop methods that use DNS, cocoa implementation should use the DNS methods in the future and
remove this class, making sure all the platform specific class is in the platform directory.
* NetworkProcess/webrtc/NetworkRTCResolverCocoa.h: Copied Cocoa code from Source/WebKit/NetworkProcess/webrtc/NetworkRTCResolver.h.
* PlatformGTK.cmake: Add NetworkRTCResolver compilation for GTK.
* WebKit.xcodeproj/project.pbxproj: Add the NetworkRTCResolverCocoa class to the compilation.
2018-03-06 Brent Fulgham <bfulgham@apple.com>
NetworkDataTask should enable logging for automation clients
https://bugs.webkit.org/show_bug.cgi?id=183378
<rdar://problem/38189556>
Reviewed by Brian Burg.
The NetworkDataTaskCocoa class was only logging if the SessionID object allowed logging.
It should also be considering whether the current session is working on behalf of an
automation client. If so, it should allow logging.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
(WebKit::NetworkDataTaskCocoa::isAlwaysOnLoggingAllowed const):
2018-03-06 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed build fix.
* UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
(-[WKFullScreenWindowController _EVOrganizationName]):
2018-03-06 Antoine Quint <graouts@apple.com>
[Web Animations] Add a new runtime flag to control whether CSS Animations and CSS Transitions should run using the Web Animations timeline
https://bugs.webkit.org/show_bug.cgi?id=183370
<rdar://problem/38180729>
Reviewed by Dean Jackson.
Before we start creating WebAnimation objects to perform CSS Animations and CSS Transitions, which will replace the existing codepath
involving CSSAnimationController and CompositeAnimation, we need a runtime flag that will allow all the new code to be turned off by
default while we bring this feature up.
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled):
(WKPreferencesGetCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled:]):
(-[WKPreferences _cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
(WebKit::InjectedBundle::setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled):
* WebProcess/InjectedBundle/InjectedBundle.h:
2018-03-06 Ms2ger <Ms2ger@igalia.com>
[GLib] Implement WebsiteDataStore::defaultServiceWorkerRegistrationDirectory().
https://bugs.webkit.org/show_bug.cgi?id=183364
Reviewed by Michael Catanzaro.
* UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
(API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory): implement.
2018-03-06 Zan Dobersek <zdobersek@igalia.com>
Unreviewed. Addressing further review feedback for patch landed in r229315.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::commitSceneState): There's no need for
explicit calls of the clear() method on both containers in the CommitScope
objects, the destructors invoked for these objects from the CommitScope
destructor will have the same effect.
2018-03-06 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Remove unused scrolling-related code in TextureMapperLayer, CoordinatedGraphics stack
https://bugs.webkit.org/show_bug.cgi?id=183340
Reviewed by Michael Catanzaro.
With most of the scrolling-related code in TextureMapperLayer on the
chopping block, we can now drop the ScrollingClient inheritance and the
commitScrollOffset() virtual method implementation. This enables
removing the whole commitScrollOffset() call chain that ran from
CoordinatedGraphicsScene through CoordinatedLayerTreeHost and
CompositingCoordinator to the affected CoordinatedGraphicsLayer object.
The CoordinatedGraphicsScene::findScrollableContentsLayerAt() method is
also unused and can be deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::setLayerState):
(WebKit::CoordinatedGraphicsScene::createLayer):
(WebKit::CoordinatedGraphicsScene::commitScrollOffset): Deleted.
(WebKit::CoordinatedGraphicsScene::findScrollableContentsLayerAt): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::commitScrollOffset): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::commitScrollOffset): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
(WebKit::CoordinatedLayerTreeHost::commitScrollOffset): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:
2018-03-06 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Apply TextureMapperLayer animations with a single MonotonicTime value
https://bugs.webkit.org/show_bug.cgi?id=183360
Reviewed by Sergio Villar Senin.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
Pass the monotic time value, as returned by MonotonicTime::now(), to the
TextureMapperLayer::applyAnimationsRecursively() call.
2018-03-06 Zan Dobersek <zdobersek@igalia.com>
[CoordGraphics] Clean up CoordinatedImageBacking
https://bugs.webkit.org/show_bug.cgi?id=183332
Reviewed by Carlos Garcia Campos.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::createImageBackingIfNeeded):
Adjust call to CoordinatedImageBacking::getCoordinatedImageBackingID().
2018-03-06 Zan Dobersek <zdobersek@igalia.com>
CoordinatedGraphicsScene: properly limit data specific to state commit operation
https://bugs.webkit.org/show_bug.cgi?id=183326
Reviewed by Sergio Villar Senin.
In the process of state commit in CoordinatedGraphicsScene, the released
image backings and backing stores with pending updates are stored in
Vector and HashSet objects, respectively. Instead of these two objects
being member variables on the CoordinatedGraphicsScene class, keep them
in the CommitScope structure that's limited to the operations done in
the commitSceneState() method.
The two member variables are dropped, and the CommitScope object is
passed by reference to any helper method that needs to append either
kind of object to the respective container. At the end of the state
commit, backing stores with pending updates have those updates applied,
and the two containers are cleared out as the CommitScope object is
destroyed.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::setLayerState):
(WebKit::CoordinatedGraphicsScene::prepareContentBackingStore):
(WebKit::CoordinatedGraphicsScene::resetBackingStoreSizeToLayerSize):
(WebKit::CoordinatedGraphicsScene::removeTilesIfNeeded):
(WebKit::CoordinatedGraphicsScene::updateTilesIfNeeded):
(WebKit::CoordinatedGraphicsScene::syncImageBackings):
(WebKit::CoordinatedGraphicsScene::updateImageBacking):
(WebKit::CoordinatedGraphicsScene::clearImageBackingContents):
(WebKit::CoordinatedGraphicsScene::removeImageBacking):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
(WebKit::CoordinatedGraphicsScene::removeReleasedImageBackingsIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::commitPendingBackingStoreOperations): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
2018-03-05 Yusuke Suzuki <utatane.tea@gmail.com>
Fix std::make_unique / new[] using system malloc
https://bugs.webkit.org/show_bug.cgi?id=182975
Reviewed by JF Bastien.
Use Vector instead.
* NetworkProcess/win/SystemProxyWin.cpp:
(WindowsSystemProxy::getSystemHttpProxy):
* Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::processMessage):
(IPC::Connection::sendOutputMessage):
* Platform/win/LoggingWin.cpp:
(WebKit::logLevelString):
* Shared/SandboxExtension.h:
* Shared/mac/SandboxExtensionMac.mm:
(WebKit::SandboxExtension::HandleArray::allocate):
(WebKit::SandboxExtension::HandleArray::operator[]):
(WebKit::SandboxExtension::HandleArray::operator[] const):
(WebKit::SandboxExtension::HandleArray::size const):
(WebKit::SandboxExtension::HandleArray::encode const):
2018-03-05 Andy Estes <aestes@apple.com>
[Mac] Teach WebCore::Pasteboard about file promise drags
https://bugs.webkit.org/show_bug.cgi?id=183314
<rdar://problem/38105493>
Reviewed by Darin Adler.
Added a FIXME comment.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):
2018-03-05 Jeff Miller <jeffm@apple.com>
Expose still more WKPreferences SPI to match C SPI
https://bugs.webkit.org/show_bug.cgi?id=183045
Reviewed by Alex Christensen.
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setAllowsInlineMediaPlayback:]):
(-[WKPreferences _allowsInlineMediaPlayback]):
(-[WKPreferences _setApplePayEnabled:]):
(-[WKPreferences _applePayEnabled]):
(-[WKPreferences _setDNSPrefetchingEnabled:]):
(-[WKPreferences _dnsPrefetchingEnabled]):
(-[WKPreferences _setInlineMediaPlaybackRequiresPlaysInlineAttribute:]):
(-[WKPreferences _inlineMediaPlaybackRequiresPlaysInlineAttribute]):
(-[WKPreferences _setInvisibleMediaAutoplayNotPermitted:]):
(-[WKPreferences _invisibleMediaAutoplayNotPermitted]):
(-[WKPreferences _setLegacyEncryptedMediaAPIEnabled:]):
(-[WKPreferences _legacyEncryptedMediaAPIEnabled]):
(-[WKPreferences _setMainContentUserGestureOverrideEnabled:]):
(-[WKPreferences _mainContentUserGestureOverrideEnabled]):
(-[WKPreferences _setMediaStreamEnabled:]):
(-[WKPreferences _mediaStreamEnabled]):
(-[WKPreferences _setNeedsStorageAccessFromFileURLsQuirk:]):
(-[WKPreferences _needsStorageAccessFromFileURLsQuirk]):
(-[WKPreferences _setPDFPluginEnabled:]):
(-[WKPreferences _pdfPluginEnabled]):
(-[WKPreferences _setRequiresUserGestureForAudioPlayback:]):
(-[WKPreferences _requiresUserGestureForAudioPlayback]):
(-[WKPreferences _setRequiresUserGestureForVideoPlayback:]):
(-[WKPreferences _requiresUserGestureForVideoPlayback]):
(-[WKPreferences _setServiceControlsEnabled:]):
(-[WKPreferences _serviceControlsEnabled]):
(-[WKPreferences _setShowsToolTipOverTruncatedText:]):
(-[WKPreferences _showsToolTipOverTruncatedText]):
(-[WKPreferences _setTextAreasAreResizable:]):
(-[WKPreferences _textAreasAreResizable]):
(-[WKPreferences _setUseGiantTiles:]):
(-[WKPreferences _useGiantTiles]):
(-[WKPreferences _setWantsBalancedSetDefersLoadingBehavior:]):
(-[WKPreferences _wantsBalancedSetDefersLoadingBehavior]):
(-[WKPreferences _setWebAudioEnabled:]):
(-[WKPreferences _webAudioEnabled]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
2018-03-05 Carlos Garcia Campos <cgarcia@igalia.com>
Automation: clicking on a disabled option element shouldn't produce an error
https://bugs.webkit.org/show_bug.cgi?id=183284
Reviewed by Brian Burg.
This was expected by selenium, but the WebDriver spec says we should simply do nothing in those cases.
14.1 Element Click.
https://w3c.github.io/webdriver/webdriver-spec.html#element-click
Fixes: imported/w3c/webdriver/tests/element_click/select.py::test_option_disabled
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::selectOptionElement):
2018-03-05 Carlos Garcia Campos <cgarcia@igalia.com>
Automation: stale elements not detected when removed from the DOM
https://bugs.webkit.org/show_bug.cgi?id=183278
Reviewed by Brian Burg.
We detect stale elements when the page is reloaded because the maps are recreated, but if an element is removed
from the DOM for the same document we keep the nodes in the maps. We should clear stale elements before
accessing the maps.
Fixes: imported/selenium/py/test/selenium/webdriver/common/webdriverwait_tests.py::testExpectedConditionStalenessOf
* WebProcess/Automation/WebAutomationSessionProxy.js:
(let.AutomationSessionProxy.prototype.evaluateJavaScriptFunction): Call _clearStaleNodes()
(let.AutomationSessionProxy.prototype.nodeForIdentifier): Ditto.
(let.AutomationSessionProxy.prototype._clearStaleNodes): Check if cached nodes are still in document and remove them
from the maps if they aren't.
2018-03-04 Yusuke Suzuki <utatane.tea@gmail.com>
[WTF] Move currentCPUTime and sleep(Seconds) to CPUTime.h and Seconds.h respectively
https://bugs.webkit.org/show_bug.cgi?id=183312
Reviewed by Mark Lam.
Remove wtf/CurrentTime.h include pragma.
* NetworkProcess/NetworkResourceLoader.cpp:
* NetworkProcess/cache/CacheStorageEngineCache.cpp:
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
* Platform/IPC/Connection.cpp:
* Platform/unix/SharedMemoryUnix.cpp:
* PluginProcess/WebProcessConnection.cpp:
* Shared/ios/NativeWebTouchEventIOS.mm:
* UIProcess/DrawingAreaProxyImpl.cpp:
* UIProcess/ios/WKContentView.mm:
* UIProcess/linux/MemoryPressureMonitor.cpp:
* WebProcess/Gamepad/WebGamepad.cpp:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
* WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:
* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
* WebProcess/WebProcess.cpp:
* WebProcess/cocoa/WebProcessCocoa.mm:
* WebProcess/gtk/WebProcessMainGtk.cpp:
* WebProcess/win/WebProcessMainWin.cpp:
* WebProcess/wpe/WebProcessMainWPE.cpp:
2018-03-02 Brian Burg <bburg@apple.com>
Web Automation: script evaluations via WebDriver should have a user gesture indicator
https://bugs.webkit.org/show_bug.cgi?id=183230
<rdar://problem/37959739>
Reviewed by Andy Estes.
APIs that normally require a user gesture should just work when using via WebDriver.
To support cases where tests need to simulate user actions with JavaScript, use a
fake user gesture, similar to how -[WKWebView evaluateJavaScript:] forces a user
gesture when clients evaluate JavaScript in their web view.
No new tests, this is covered by W3C tests that use the Fullscreen API.
This API does nothing if there is no user gesture; with this patch, it just works.
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):
2018-03-04 Tim Horton <timothy_horton@apple.com>
Make !ENABLE(DATA_DETECTION) iOS build actually succeed
https://bugs.webkit.org/show_bug.cgi?id=183283
<rdar://problem/38062148>
Reviewed by Sam Weinig.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
(-[WKContentView _dataForPreviewItemController:atPosition:type:]):
Guard some more code with ENABLE(DATA_DETECTION).
2018-03-04 Dan Bernstein <mitz@apple.com>
Building with ONLY_ACTIVE_ARCH=NO and ARCHS=x86_64 fails
https://bugs.webkit.org/show_bug.cgi?id=183320
Reviewed by Tim Horton.
* Configurations/PluginService.32.xcconfig: If the Apple build tool specifies
RC_ARCHS=x86_64, then let the service build for x86_64, but don’t install it.
2018-03-03 Brent Fulgham <bfulgham@apple.com>
Notify the NetworkProcess when a session is servicing an automation client
https://bugs.webkit.org/show_bug.cgi?id=183306
<rdar://problem/37835783>
Reviewed by Brian Burg.
Network loads servicing WebDriver are done through an ephemeral session. While this is great
for protecting a developer's machine from sharing state with test runs, it has the unintended
effect of blocking certain logging operations.
We do not log content in ephemeral sessions to protect user privacy. However, ephemeral sessions
generated by WebDriver should participate in logging so that proper testing (with logging) can
be done.
This patch signals the NetworkProcess when an ephemeral session (created for automation purposes)
is created, so that it can allow logging.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::destroySession): Remove controlled-by-automation entry.
(WebKit::NetworkProcess::sessionIsControlledByAutomation const): Added.
(WebKit::NetworkProcess::setSessionIsControlledByAutomation): Added.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::isAlwaysOnLoggingAllowed const): Checks if the relevant session
is servicing an automation client, and returns true if it is.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy): Signal the network process if this page is being created
for an automation client.
2018-03-02 Yusuke Suzuki <utatane.tea@gmail.com>
[WTF] Remove RunLoop and RunLoop::Timer's interface using double as seconds
https://bugs.webkit.org/show_bug.cgi?id=183293
Reviewed by Alex Christensen.
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::scheduleUpdate):
(WebKit::CompositingRunLoop::compositionCompleted):
(WebKit::CompositingRunLoop::updateCompleted):
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
(WebKit::ThreadedDisplayRefreshMonitor::dispatchDisplayRefreshCallback):
2018-03-02 Don Olmstead <don.olmstead@sony.com>
Share common WebError implementation
https://bugs.webkit.org/show_bug.cgi?id=183303
Reviewed by Ryosuke Niwa.
* Shared/WebErrors.cpp:
(WebKit::cancelledError):
(WebKit::fileDoesNotExistError):
* Shared/glib/WebErrorsGlib.cpp: Removed.
* SourcesGTK.txt:
* SourcesWPE.txt:
2018-03-02 Youenn Fablet <youenn@apple.com>
LayoutTest imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=179248
<rdar://problem/35377756>
Reviewed by Chris Dumez.
In case we go up to the initializeSize step and Caches was cleared
between the time we stated to initialize and the time we got there,
we need to make as if Caches was not initialized,
thus keeping m_isInitialized to false and m_storage to nullptr.
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::initializeSize):
2018-03-02 Youenn Fablet <youenn@apple.com>
Clients should register to StorageProcess with their service worker registration identifier
https://bugs.webkit.org/show_bug.cgi?id=182313
<rdar://problem/38044403>
Reviewed by Chris Dumez.
Relanding.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::registerServiceWorkerClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::registerServiceWorkerClient):
* WebProcess/Storage/WebSWClientConnection.h:
2018-03-02 Tim Horton <timothy_horton@apple.com>
Make it possible to disable WKPDFView
https://bugs.webkit.org/show_bug.cgi?id=183281
<rdar://problem/38060815>
Reviewed by Dan Bates.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _isBackground]):
(-[WKWebView _isDisplayingPDF]):
(-[WKWebView _dataForDisplayedPDF]):
(-[WKWebView _suggestedFilenameForDisplayedPDF]):
* UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:
(-[WKWebViewContentProviderRegistry init]):
* UIProcess/ios/WKPDFView.h:
* UIProcess/ios/WKPDFView.mm:
2018-03-02 Youenn Fablet <youenn@apple.com>
WebProcessProxy should handle its completion handler at destruction time
https://bugs.webkit.org/show_bug.cgi?id=183224
Reviewed by Brady Eidson.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::~WebProcessProxy):
* UIProcess/WebProcessProxy.h:
2018-03-02 Brent Fulgham <bfulgham@apple.com>
Update WebContent process sandbox IOKit properties
https://bugs.webkit.org/show_bug.cgi?id=183269
<rdar://problem/37853282>
Reviewed by Eric Carlson.
* WebProcess/com.apple.WebProcess.sb.in:
2018-03-01 Yusuke Suzuki <utatane.tea@gmail.com>
Remove monotonicallyIncreasingTime
https://bugs.webkit.org/show_bug.cgi?id=182911
Reviewed by Michael Catanzaro.
* NetworkProcess/cache/CacheStorageEngineCache.cpp:
(WebKit::CacheStorage::Cache::toRecordInformation):
* Platform/IPC/ArgumentCoders.cpp:
(IPC::ArgumentCoder<Seconds>::encode):
(IPC::ArgumentCoder<Seconds>::decode):
(IPC::ArgumentCoder<MonotonicTime>::encode):
(IPC::ArgumentCoder<MonotonicTime>::decode):
* Platform/IPC/ArgumentCoders.h:
* Shared/Gamepad/GamepadData.cpp:
(WebKit::GamepadData::GamepadData):
* Shared/Gamepad/GamepadData.h:
(WebKit::GamepadData::lastUpdateTime const):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<MonotonicTime>::encode): Deleted.
(IPC::ArgumentCoder<MonotonicTime>::decode): Deleted.
(IPC::ArgumentCoder<Seconds>::encode): Deleted.
(IPC::ArgumentCoder<Seconds>::decode): Deleted.
ArgumentCoders for MonotonicTime and Seconds are now used internally.
Move them to Platform/IPC/ArgumentCoders.h.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/API/glib/IconDatabase.cpp:
(WebKit::IconDatabase::iconDatabaseSyncThread):
* UIProcess/DrawingAreaProxyImpl.cpp:
(WebKit::DrawingAreaProxyImpl::DrawingMonitor::start):
(WebKit::DrawingAreaProxyImpl::DrawingMonitor::stop):
(WebKit::DrawingAreaProxyImpl::DrawingMonitor::didDraw):
* UIProcess/DrawingAreaProxyImpl.h:
* UIProcess/Gamepad/UIGamepad.h:
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
* UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
* UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::animationDidStart):
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::acceleratedAnimationDidStart):
* WebProcess/WebPage/DrawingArea.messages.in:
* WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.h:
* WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
(mediaTimeToCurrentTime):
(-[WKAnimationDelegate animationDidStart:]):
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::animationStarted):
This argument `beginTime` is not CFTimeInverval actually. We add currentTimeToMediaTime
conversion here to fix this issue.
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::animationDidStart):
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::acceleratedAnimationDidStart):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::destroyRenderingResources):
2018-03-02 Brent Fulgham <bfulgham@apple.com>
[iOS] whitelist missing AppleJPEG logging feature
https://bugs.webkit.org/show_bug.cgi?id=183270
<rdar://problem/37808612>
Reviewed by Alex Christensen.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2018-03-02 Youenn Fablet <youenn@apple.com>
IOChannel::read and IOChannel::write can destroy the completion handler in the thread used to manipulate thread
https://bugs.webkit.org/show_bug.cgi?id=183261
Reviewed by Antti Koivisto.
Moving the completion handler when being called so that it gets desttroyed in the thread it is called.
* NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
(WebKit::NetworkCache::IOChannel::read):
(WebKit::NetworkCache::IOChannel::write):
2018-03-02 Dan Bernstein <mitz@apple.com>
Safari uses WebContent.Development when loading injected bundle embedded in its app bundle
https://bugs.webkit.org/show_bug.cgi?id=183275
Reviewed by Tim Horton.
* UIProcess/mac/WebProcessProxyMac.mm:
(WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Return false if this is
a platform binary. We can also return false unconditionally when building for any shipping
major macOS release.
2018-03-01 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r229153.
https://bugs.webkit.org/show_bug.cgi?id=183274
it is breaking imported/w3c/web-platform-tests/service-workers
/service-worker/clients-matchall-exact-controller.https.html
(Requested by youenn on #webkit).
Reverted changeset:
"Clients should register to StorageProcess with their service
worker registration identifier"
https://bugs.webkit.org/show_bug.cgi?id=182313
https://trac.webkit.org/changeset/229153
2018-03-01 Brent Fulgham <bfulgham@apple.com>
Add the "com.apple.security.cs.disable-library-validation” entitlement to the Plugin Process
https://bugs.webkit.org/show_bug.cgi?id=183252
<rdar://problem/37887136>
Reviewed by David Kilzer.
* Configurations/PluginService.entitlements:
2018-03-01 Youenn Fablet <youenn@apple.com>
Clients should register to StorageProcess with their service worker registration identifier
https://bugs.webkit.org/show_bug.cgi?id=182313
Reviewed by Chris Dumez.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::registerServiceWorkerClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::registerServiceWorkerClient):
* WebProcess/Storage/WebSWClientConnection.h:
2018-03-01 Youenn Fablet <youenn@apple.com>
LayoutTest imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=179248
<rdar://problem/35377756>
Reviewed by Chris Dumez.
WebKitTestRunner is clearing caches for every test but there might still be some on-going cache activity due to a previous test.
In that case, the activity might try to open the Caches object at the same time the files are deleted by the clearing task.
If the new test is trying to open the same caches, it will also receive the same error, hence the console log message.
To fix that issue, we clear the initialization pending callbacks when clearing the caches.
This prevents the new test to receive the error since the new test should only start some cache activity after the cache clear task is done.
Made refactoring to append the first callback into the list of pending callbacks.
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::initialize):
(WebKit::CacheStorage::Caches::initializeSize):
(WebKit::CacheStorage::Caches::clear):
* NetworkProcess/cache/CacheStorageEngineCaches.h:
2018-03-01 Youenn Fablet <youenn@apple.com>
Add API test to validate setting of service worker and cache storage directories
https://bugs.webkit.org/show_bug.cgi?id=182543
Reviewed by Chris Dumez.
Add cache engine directory path to its representation dump.
This is used in API tests to check that the path is correctly set.
Add a way for to know whether a service worker was registered from a WKWebsiteDataStore.
This is used in API tests to check that the path is correctly set.
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::representation):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _hasRegisteredServiceWorker]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
2018-03-01 Wenson Hsieh <wenson_hsieh@apple.com>
Fix some errors due to some mach port APIs being unavailable on watchOS
https://bugs.webkit.org/show_bug.cgi?id=183262
<rdar://problem/38028521>
Reviewed by Tim Horton.
Minor build fix; mach_port_guard and mach_port_unguard are not available on this platform.
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::platformInvalidate):
(IPC::Connection::platformInitialize):
(IPC::Connection::open):
2018-03-01 Per Arne Vollan <pvollan@apple.com>
Unreviewed build fix after r229140.
* WebProcess/cocoa/WebProcessCocoa.mm:
2018-03-01 Per Arne Vollan <pvollan@apple.com>
Scrollbar preferences are ignored when the WebContent process doesn't have access to the WindowServer.
https://bugs.webkit.org/show_bug.cgi?id=183231
<rdar://problem/37793457>
Reviewed by Brent Fulgham.
When the WebContent process doesn't have access to the WindowServer, the scrollbars are always of the overlay type.
The notification about scrollbar preferences is never received by the WebContent process when there is no
WindowServer access. This can be fixed by adding an observer of scrollbar preferences in the UI process, and
notifying the WebProcess about this by sending it a message. This message should also contain the preferred
scrollbar type, since the call '[NSScroller preferredScrollerStyle]' will always return the overlay style when
there is no WindowServer access.
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):
* UIProcess/WebProcessPool.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeProcess):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::scrollerStylePreferenceChanged):
2018-03-01 Antti Koivisto <antti@apple.com>
Crash when updating cache entry after validation in apps that uses class A file protection
https://bugs.webkit.org/show_bug.cgi?id=183242
<rdar://problem/33289058>
Reviewed by Chris Dumez.
When validating a cache entry, we keep it alive until we get a network response. With 304 response
we then update the headers of this existing entry. This accesses the body data of the entry which
may be backed by a mapped file. If the app uses class A protection, user might have locked
the device and the entry might have become inaccessible, leading to a crash.
* NetworkProcess/cache/NetworkCacheEntry.cpp:
(WebKit::NetworkCache::Entry::setNeedsValidation):
In case of class A protection, pull the data to a memory buffer immediately before starting a revalidation request.
This makes the window where the file could become inaccessible much shorter (since it no longer depends on network).
2018-03-01 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r221514): [GTK] UI process crash in WebKit::WaylandCompositor::Surface::flushPendingFrameCallbacks
https://bugs.webkit.org/show_bug.cgi?id=183091
Reviewed by Michael Catanzaro.
Invalidate the surface in the page map when the backing store is destroyed.
* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::willDestroySurface):
* UIProcess/gtk/WaylandCompositor.h:
2018-02-28 Brian Burg <bburg@apple.com>
[Cocoa] Web Automation: provide a way to ask clients the type of a JavaScript dialog
https://bugs.webkit.org/show_bug.cgi?id=182660
<rdar://problem/37408183>
Reviewed by Tim Horton and Carlos Garcia Campos.
Add another delegate method to ask what type of dialog is being shown.
This is used to implement §18.4 Step 5, where sending text to a dialog
without a prompt will return several different kinds of errors.
No new tests, covered by web platform tests once Safari side has landed.
* UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h: Update FIXME radar numbers.
* UIProcess/Cocoa/AutomationSessionClient.h:
* UIProcess/Cocoa/AutomationSessionClient.mm:
(WebKit::AutomationSessionClient::AutomationSessionClient):
(WebKit::toImpl):
(WebKit::AutomationSessionClient::typeOfCurrentJavaScriptDialogOnPage):
If there is no current dialog to be checked, the client can return the 'None'
type. This gets converted into a std::nullopt and causes a command error later.
2018-02-28 John Wilander <wilander@apple.com>
Remove assertion from ResourceLoadStatisticsClassifier::calculateResourcePrevalence() which causes crashes when domains are explicitly set as prevalent without the associated statistics
https://bugs.webkit.org/show_bug.cgi?id=183233
Unreviewed removal of an assertion that's causing layout test crashes.
* Platform/classifier/ResourceLoadStatisticsClassifier.cpp:
(WebKit::ResourceLoadStatisticsClassifier::calculateResourcePrevalence):
Removed ASSERT(currentPrevalence == Low).
2018-02-28 John Wilander <wilander@apple.com>
Add a second tier of prevalence to facilitate telemetry on very prevalent domains
https://bugs.webkit.org/show_bug.cgi?id=183218
<rdar://problem/37992388>
Reviewed by Brent Fulgham.
* Platform/classifier/ResourceLoadStatisticsClassifier.cpp:
(WebKit::vectorLength):
New convenience function.
(WebKit::ResourceLoadStatisticsClassifier::calculateResourcePrevalence):
Renamed from ResourceLoadStatisticsClassifier::hasPrevalentResourceCharacteristics().
Now returns a value from the enum ResourceLoadPrevalence.
(WebKit::ResourceLoadStatisticsClassifier::classifyWithVectorThreshold):
Now uses the new vectorLength() convenience function.
(WebKit::ResourceLoadStatisticsClassifier::hasPrevalentResourceCharacteristics): Deleted.
Renamed to ResourceLoadStatisticsClassifier::calculateResourcePrevalence().
* Platform/classifier/ResourceLoadStatisticsClassifier.h:
Added enum ResourceLoadPrevalence.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
(IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
Handling of the new boolean field isVeryPrevalentResource.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetStatisticsVeryPrevalentResource):
(WKWebsiteDataStoreIsStatisticsVeryPrevalentResource):
Test infrastructure.
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::setVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::isVeryPrevalentResource):
(WebKit::WebResourceLoadStatisticsStore::clearPrevalentResource):
All of these are for handling of the two-tier classification.
Also bumped the statisticsModelVersion to 12.
* UIProcess/WebResourceLoadStatisticsStore.h:
2018-02-28 Alex Christensen <achristensen@webkit.org>
Reduce use of NetworkingContext in WebKit
https://bugs.webkit.org/show_bug.cgi?id=183213
Reviewed by Brady Eidson.
* NetworkProcess/RemoteNetworkingContext.h:
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
(WebKit::WebLoaderStrategy::preconnectTo):
* WebProcess/Network/WebLoaderStrategy.h:
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::proxiesForURL):
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
* WebProcess/WebPage/WebFrame.cpp:
2018-02-28 Brent Fulgham <bfulgham@apple.com>
Remove network access from the WebContent process sandbox
https://bugs.webkit.org/show_bug.cgi?id=183192
<rdar://problem/35369115>
Reviewed by Alex Christensen.
Remove the 'system-network', 'allow-network-common', and 'network-client' access from the WebContent process.
That's why we have a Network Process!
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* WebProcess/com.apple.WebProcess.sb.in:
2018-02-27 Tim Horton <timothy_horton@apple.com>
Ensure target triple is propagated correctly to DerivedSources.make
https://bugs.webkit.org/show_bug.cgi?id=183189
<rdar://problem/37959694>
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
* DerivedSources.make:
Ditto the WebCore ChangeLog.
2018-02-27 Yongjun Zhang <yongjun_zhang@apple.com>
Make it possible to set suggestions in extra zoom mode.
https://bugs.webkit.org/show_bug.cgi?id=183154
<rdar://problem/35227450>
Reviewed by Tim Horton.
In extra zoom mode, when presenting WKFocusedFormControlViewController, make it the inputDelegate for
WKContentView. This is needed to ensure we can capture/cache the suggestions when _WKInputSession's
suggestions is updated. Later, when we present WKTextInputViewController, we can pass the cached
suggestions.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView presentFocusedFormControlViewController:]): Set _focusedFormControlViewController as
the inputDelegate for WKContentView.
(-[WKContentView dismissFocusedFormControlViewController:]): Null the inputDelegate on dismissal.
(-[WKContentView presentTextInputViewController:]): Pass the suggestions from WKFocusedFormControlViewController to
WKTextInputViewController when the latter is presented.
(-[WKContentView textInputController:didCommitText:]): Call the new delegate method textInputController:didCommitText:withSuggestion:.
(-[WKContentView textInputController:didCommitText:withSuggestion:]): When a suggestions is selected, insert the
suggestion which will notify the client.
(-[WKContentView focusedFormControllerDidUpdateSuggestions:]): Called when the suggestion is updated after the input
view controller is presented.
2018-02-27 Tim Horton <timothy_horton@apple.com>
Stop using deprecated CADisplay SPI
https://bugs.webkit.org/show_bug.cgi?id=183150
<rdar://problem/37918297>
Reviewed by Simon Fraser.
* Platform/spi/ios/FrontBoardServicesSPI.h: Added.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
* WebKit.xcodeproj/project.pbxproj:
Switch to the more modern way of getting the display name.
2018-02-27 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r229055.
Breaks internal builds.
Reverted changeset:
"Stop using deprecated CADisplay SPI"
https://bugs.webkit.org/show_bug.cgi?id=183150
https://trac.webkit.org/changeset/229055
2018-02-27 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Implement additional SPI for adjusting viewport shrink-to-fit behavior
https://bugs.webkit.org/show_bug.cgi?id=183100
<rdar://problem/37840987>
Reviewed by Tim Horton.
Add new SPI hooks to provide finer control over certain aspects of the shrink-to-fit viewport heuristic.
Currently, in certain cases of iPad multitasking, Safari allows shrinking content to fit by default. This means
that even when "width=device-width" is used, if the contents of the page are too wide to fit within the
viewport's width, we'll adjust the initial scale such that the viewport can fit all of the content.
However, in certain viewport dimensions, this heuristic is insufficient to ensure that pages are laid out and
displayed properly within the viewport. Namely, one could imagine that an element with a hard-coded width that
is larger than the real viewport width would cause all other elements with dimensions relative to the body to be
excessively shrunk down once shrink-to-fit is applied, so the page would still look broken even if the contents
of the page all fit within the viewport.
To mitigate this, we decouple the notions of minimum layout size from the size of the actual viewport (which we
simply refer to as "view size"). This allows us to introduce a mechanism where we lay out the page at a given
minimum layout size that is larger than the size of the view; later, when we determine the initial scale, we
then apply shrink-to-fit scaling using the view size rather than the minimum layout size. This grants us the
ability to lay out content as if our view were large, but still ensure that the contents of the page fit within
the actual view.
* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::VisibleContentRectUpdateInfo::encode const):
(WebKit::VisibleContentRectUpdateInfo::decode):
(WebKit::operator<<):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::forceHorizontalShrinkToFit const):
(WebKit::operator==):
Plumb the forceHorizontalShrinkToFit flag through VisibleContentRectUpdateInfo.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
Plumb viewSize through IPC to WebPage.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
Start off WKWebView flags at their initial values.
(-[WKWebView _minimumAllowedLayoutWidth]):
(-[WKWebView _setMinimumAllowedLayoutWidth:]):
This provides the minimum width at which the page will lay out, such that if the view width dips below this
value, we'll use this minimum allowed layout width instead. 0 by default.
(-[WKWebView activeMinimumLayoutSizes:]):
Refactor this from a static function to a helper method on WKWebView that computes both the minimum layout size
(which takes minimum allowed layout width into account) as well as the real view size. Refactor all call sites
to use this new method, and also propagate the view size down via IPC, alongside the minimum layout size.
(-[WKWebView _dispatchSetMinimumLayoutSize:viewSize:]):
(-[WKWebView _frameOrBoundsChanged]):
(-[WKWebView _setMinimumLayoutSizeOverride:]):
(-[WKWebView _setForceHorizontalViewportShrinkToFit:]):
(-[WKWebView _forceHorizontalViewportShrinkToFit]):
Setting this flag to YES forces us to always shrink-to-fit in the horizontal axis. NO by default.
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
(-[WKWebView _endAnimatedResize]):
(activeMinimumLayoutSize): Deleted.
More refactoring to replace activeMinimumLayoutSize() with -activeMinimumLayoutSizes:.
(-[WKWebView _dispatchSetMinimumLayoutSize:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInsets:unobscuredSafeAreaInsets:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
Pass _forceHorizontalViewportShrinkToFit into the visible content rect update.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::dynamicViewportSizeUpdate):
(WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize):
Plumb viewSize alongside the existing minimumLayoutSize.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::setViewportConfigurationMinimumLayoutSize):
(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::updateVisibleContentRects):
Set forceHorizontalShrinkToFit on the viewport configuration here.
2018-02-27 Tim Horton <timothy_horton@apple.com>
Stop using deprecated CADisplay SPI
https://bugs.webkit.org/show_bug.cgi?id=183150
<rdar://problem/37918297>
Reviewed by Simon Fraser.
* Platform/spi/ios/FrontBoardServicesSPI.h: Added.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
* WebKit.xcodeproj/project.pbxproj:
Switch to the more modern way of getting the display name.
2018-02-26 Youenn Fablet <youenn@apple.com>
Caches::m_storage should be set to null in case of error at initialization time
https://bugs.webkit.org/show_bug.cgi?id=183068
Reviewed by Chris Dumez.
In case of error, we need to set m_storage back to nullptr so that
next tries to initialize it will restart from scratch.
If we do not set it to nullptr, we end up storing the initialize
callback in a queue and the callback will never be called.
This is difficult to test as we need the following conditions:
- we need to have an error case, like a disk writing error
- we need the web app to open a cache in two different pages/frames at about the same time.
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::initialize):
2018-02-26 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r226330.
https://bugs.webkit.org/show_bug.cgi?id=183152
incorrectly assumes enumeration callback happens once
(Requested by alexchristensen on #webkit).
Reverted changeset:
"Use BlockPtrs and lambdas instead of new/delete to pass
parameters to blocks in WebViewImpl::performDragOperation"
https://bugs.webkit.org/show_bug.cgi?id=180795
https://trac.webkit.org/changeset/226330
2018-02-26 Ryosuke Niwa <rniwa@webkit.org>
Release assertion in WebPage::updatePreferences
https://bugs.webkit.org/show_bug.cgi?id=183075
Reviewed by Youenn Fablet and Chris Dumez.
Replaced the release assertion added in r228589 with a more graceful disabling of the feature when the entitlement is missing.
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::didReceiveMessage): Added an early exit with an entitlement check to disable the feature.
(WebKit::StorageProcess::initializeWebsiteDataStore): Ditto.
(WebKit::StorageProcess::createStorageToWebProcessConnection): Replaced the release assertion with a debug assertion.
(WebKit::StorageProcess::swServerForSession): Removed the assertion. This code can be reached when the service worker is disabled.
(WebKit::StorageProcess::registerSWServerConnection): Replaced the release assertion with a debug assertion.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences): Disable the feature instead of crashing when the entitlement is missing.
2018-02-26 Chris Dumez <cdumez@apple.com>
Regression(r223431): Crash under didReceiveChallenge in NetworkSessionCocoa
https://bugs.webkit.org/show_bug.cgi?id=183134
<rdar://problem/36339049>
Reviewed by Alex Christensen.
Like other delegates functions in this file, it is possible for didReceiveChallenge to get called
after _session has been nulled out. Other delegate functions already had early returns when
_session is null. However, such early return was missing in didReceiveChallenge.
This patch ends the early return to didReceiveChallenge so that we do not end up calling
_session->downloadID(taskIdentifier) on a null _session.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
2018-02-26 Youenn Fablet <youenn@apple.com>
MessagePort is not always destroyed in the right thread
https://bugs.webkit.org/show_bug.cgi?id=183053
Reviewed by Chris Dumez.
Update code to pass a lambda to MessagePort::existingMessagePortForIdentifier.
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
(WebKit::WebMessagePortChannelProvider::checkProcessLocalPortForActivity):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::messagesAvailableForPort):
2018-02-25 Alexey Proskuryakov <ap@apple.com>
Font smoothing doesn't get disabled if the preference is set before launching WebContent process
https://bugs.webkit.org/show_bug.cgi?id=183108
Reviewed by Tim Horton.
* WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess):
Fix the bug. While at it, also avoid the anti-pattern in setAlwaysUsesComplexTextCodePath.
2018-02-25 Philippe Normand <pnormand@igalia.com>
Unreviewed GTK Debug build fix after r228942.
* UIProcess/API/glib/IconDatabase.cpp:
(WebKit::IconDatabase::iconDatabaseSyncThread):
(WebKit::IconDatabase::syncThreadMainLoop):
(WebKit::IconDatabase::readFromDatabase):
(WebKit::IconDatabase::writeToDatabase):
(WebKit::IconDatabase::cleanupSyncThread):
2018-02-25 Chris Dumez <cdumez@apple.com>
Service workers do not work well inside Web.app
https://bugs.webkit.org/show_bug.cgi?id=183105
<rdar://problem/37864140>
Reviewed by Youenn Fablet.
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::didReceiveMessage):
We were failing to forward IPC messages to the ChildProcess class here. As a result,
the ChildProcess::RegisterURLSchemeServiceWorkersCanHandle IPC was being ignored
by the StorageProcess.
2018-02-24 Zan Dobersek <zdobersek@igalia.com>
Unreviewed WPE breakage fix.
* WebProcess/wpe/WebProcessMainWPE.cpp: Call g_set_prgname() in WebProcess
to prepare the GLib state for subsequent GStreamer initialization.
2018-02-23 John Wilander <wilander@apple.com>
Introduce ITP debug logging as an opt-in developer feature
https://bugs.webkit.org/show_bug.cgi?id=183065
<rdar://problem/37803761>
Reviewed by Brent Fulgham.
* Platform/Logging.h:
Added a dedicated channel for Resource Load Statistics debug logging
since this will be part of a developer-facing feature and should not
be mixed with general Resource Load Statistics logging.
* UIProcess/Cocoa/WebResourceLoadStatisticsStoreCocoa.mm:
(WebKit::WebResourceLoadStatisticsStore::registerUserDefaultsIfNeeded):
Now picks up the user default setting for
ResourceLoadStatisticsDebugLoggingEnabled.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
Now logs for which domains it purges website data if
ResourceLoadStatisticsDebugLoggingEnabled is set.
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
Now logs for which domains it partitions and blocks cookies
in third-party contexts if ResourceLoadStatisticsDebugLoggingEnabled
is set.
* UIProcess/WebResourceLoadStatisticsStore.h:
2018-02-23 Brent Fulgham <bfulgham@apple.com>
[macOS] Correct sandbox violation during media playback
https://bugs.webkit.org/show_bug.cgi?id=183092
<rdar://problem/37718495>
Reviewed by Eric Carlson.
* WebProcess/com.apple.WebProcess.sb.in:
2018-02-23 Yousuke Kimoto <yousuke.kimoto@sony.com>
[MSVC] Unknown a type definition error in WebResourceLoadStatisticsStore on wincairo webkit
https://bugs.webkit.org/show_bug.cgi?id=182873
Reviewed by Yusuke Suzuki.
* UIProcess/WebResourceLoadStatisticsStore.h:
2018-02-23 Carlos Garcia Campos <cgarcia@igalia.com>
[GStreamer][MiniBrowser] Honor GStreamer command line parameters in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=173655
<rdar://problem/37706341>
Reviewed by Philippe Normand.
Actually pass the gst command line options to the WebProcess. The options in /proc/self/cmdline are separated by
null characters, so we are effectively passing always the first option only, which is the program name. Then, in
the web process we always ignore the first option and providing WebProcess unconditionally, so we were doing
nothing.
* UIProcess/gtk/WebProcessPoolGtk.cpp:
(WebKit::WebProcessPool::platformInitializeWebProcess): Use WebCore::extractGStreamerOptionsFromCommandLine()
* UIProcess/wpe/WebProcessPoolWPE.cpp:
(WebKit::WebProcessPool::platformInitializeWebProcess): Ditto.
* WebProcess/soup/WebProcessSoup.cpp:
(WebKit::WebProcess::platformInitializeWebProcess): Move the vector.
2018-02-22 Yusuke Suzuki <utatane.tea@gmail.com>
Remove currentTime() / currentTimeMS()
https://bugs.webkit.org/show_bug.cgi?id=183052
Reviewed by Mark Lam.
* NetworkProcess/cache/CacheStorageEngineCache.cpp:
* PluginProcess/WebProcessConnection.cpp:
* Shared/WebProcessCreationParameters.h:
* Shared/linux/WebMemorySamplerLinux.cpp:
(WebKit::WebMemorySampler::sampleWebKit const):
* Shared/mac/WebMemorySampler.mac.mm:
(WebKit::WebMemorySampler::sampleWebKit const):
* UIProcess/API/C/WKContext.cpp:
(WKContextSetPlugInAutoStartOriginsFilteringOutEntriesAddedAfterTime):
* UIProcess/API/glib/IconDatabase.cpp:
(WebKit::IconDatabase::setIconDataForIconURL):
(WebKit::IconDatabase::synchronousLoadDecisionForIconURL):
(WebKit::IconDatabase::performURLImport):
* UIProcess/DrawingAreaProxyImpl.cpp:
* UIProcess/Plugins/PlugInAutoStartProvider.cpp:
(WebKit::expirationTimeFromNow):
(WebKit::PlugInAutoStartProvider::addAutoStartOriginHash):
(WebKit::PlugInAutoStartProvider::autoStartOriginsTableCopy const):
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsTable):
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsFilteringOutEntriesAddedAfterTime):
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):
(WebKit::PlugInAutoStartProvider::didReceiveUserInteraction):
* UIProcess/Plugins/PlugInAutoStartProvider.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processDidFinishLaunching):
(WebKit::WebProcessPool::startMemorySampler):
(WebKit::WebProcessPool::setPlugInAutoStartOriginsFilteringOutEntriesAddedAfterTime):
* UIProcess/WebProcessPool.h:
* WebProcess/InjectedBundle/API/APIInjectedBundlePageLoaderClient.h:
(API::InjectedBundle::PageLoaderClient::willPerformClientRedirectForFrame):
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
(WebKit::InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame):
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchWillPerformClientRedirect):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebProcess.cpp:
(WebKit::m_webSQLiteDatabaseTracker):
(WebKit::WebProcess::isPlugInAutoStartOriginHash):
(WebKit::WebProcess::plugInDidStartFromOrigin):
(WebKit::WebProcess::didAddPlugInAutoStartOriginHash):
(WebKit::WebProcess::resetPlugInAutoStartOriginDefaultHashes):
(WebKit::WebProcess::resetPlugInAutoStartOriginHashes):
(WebKit::WebProcess::plugInDidReceiveUserInteraction):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
* WebProcess/cocoa/WebProcessCocoa.mm:
* WebProcess/wpe/WebProcessMainWPE.cpp:
2018-02-22 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r228349): ImageBitmap builtin is now runtime guarded
https://bugs.webkit.org/show_bug.cgi?id=183056
<rdar://problem/37799067>
Reviewed by Joseph Pecoraro.
* WebProcess/WebPage/WebInspectorUI.cpp:
(WebKit::WebInspectorUI::WebInspectorUI):
2018-02-22 Youenn Fablet <youenn@apple.com>
Caches::initialize should call all pending initialization callbacks in case of error
https://bugs.webkit.org/show_bug.cgi?id=183062
Reviewed by Chris Dumez.
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::initialize):
(WebKit::CacheStorage::Caches::initializeSize):
2018-02-22 Youenn Fablet <youenn@apple.com>
CacheStorage::Engine::Caches::writeRecord is not always calling the completion handler
https://bugs.webkit.org/show_bug.cgi?id=183055
Reviewed by Chris Dumez.
Add a completion handler to Storage::store.
Use it instead in Caches::writeRecord.
This ensures that the Cache add/put promise will be called once all write operations have been done.
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::writeRecord):
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::WriteOperation::WriteOperation):
(WebKit::NetworkCache::Storage::finishWriteOperation):
(WebKit::NetworkCache::Storage::store):
* NetworkProcess/cache/NetworkCacheStorage.h:
(WebKit::NetworkCache::Storage::store):
2018-02-22 Ryosuke Niwa <rniwa@webkit.org>
Add an entitlement check for service worker on iOS
https://bugs.webkit.org/show_bug.cgi?id=182865
Reviewed by Dan Bernstein.
Addressed Dan's comment by using xpc_connection_copy_entitlement_value instead of obtaining the audit token first.
* Shared/mac/SandboxUtilities.h:
* Shared/mac/SandboxUtilities.mm:
(WebKit::connectedProcessHasEntitlement):
* StorageProcess/ios/StorageProcessIOS.mm:
(WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement const):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::parentProcessHasServiceWorkerEntitlement const):
2018-02-22 Youenn Fablet <youenn@apple.com>
Fetch event release assert should take into account the fetch mode
https://bugs.webkit.org/show_bug.cgi?id=183047
Reviewed by Chris Dumez.
In case of navigation tasks, we should use the request URL and not the origin of the loading client.
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::isValidFetch):
(WebKit::WebSWContextManagerConnection::startFetch):
2018-02-22 Yousuke Kimoto <yousuke.kimoto@sony.com>
[WinCairo] Fix compile errors in WebPageWin.cpp and WebProcessWin.cpp due to WebCore forwarding header paths
https://bugs.webkit.org/show_bug.cgi?id=182969
Reviewed by Konstantin Tokarev.
* WebProcess/WebPage/win/WebPageWin.cpp:
* WebProcess/win/WebProcessWin.cpp:
2018-02-22 Yusuke Suzuki <utatane.tea@gmail.com>
Remove sleep(double) and sleepMS(double) interfaces
https://bugs.webkit.org/show_bug.cgi?id=183038
Reviewed by Mark Lam.
* PluginProcess/WebProcessConnection.cpp:
(WebKit::WebProcessConnection::createPluginAsynchronously):
* UIProcess/linux/MemoryPressureMonitor.cpp:
(WebKit::pollIntervalForUsedMemoryPercentage):
(WebKit::MemoryPressureMonitor::MemoryPressureMonitor):
* WebProcess/wpe/WebProcessMainWPE.cpp:
2018-02-22 Youenn Fablet <youenn@apple.com>
Add release logging for CacheStorage::Engine disk related functions
https://bugs.webkit.org/show_bug.cgi?id=183042
Reviewed by Chris Dumez.
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::writeFile):
(WebKit::CacheStorage::Engine::readFile):
2018-02-22 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r228902.
This broke internal builds.
Reverted changeset:
"[Cocoa] Web Automation: provide a way to ask clients the type
of a JavaScript dialog"
https://bugs.webkit.org/show_bug.cgi?id=182660
https://trac.webkit.org/changeset/228902
2018-02-22 Youenn Fablet <youenn@apple.com>
Add release asserts for service worker fetch and postMessage events
https://bugs.webkit.org/show_bug.cgi?id=183025
rdar://problem/37765052
Reviewed by Daniel Bates.
Add assertion to protect interception of a fetch load by a service worker with
a different origin from the page.
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::startFetch):
2018-02-22 Ms2ger <Ms2ger@igalia.com>
[GTK][WPE] Fix some build errors in service workers code
https://bugs.webkit.org/show_bug.cgi?id=182966
Reviewed by Žan Doberšek.
* CMakeLists.txt: add missing files.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp: add missing includes.
* UIProcess/ServiceWorkerProcessProxy.cpp: use #include rather than #import in C++; add missing ifdef.
* UIProcess/ServiceWorkerProcessProxy.h: add missing ifdef.
* WebProcess/Storage/WebSWClientConnection.cpp: add missing includes.
* WebProcess/Storage/WebSWContextManagerConnection.cpp: add missing includes.
(WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection):
call the function that exists outside cocoa.
2018-02-21 Per Arne Vollan <pvollan@apple.com>
The WebContent process should not use NSScreen in the screenAvailableRect/screenRect implementations.
https://bugs.webkit.org/show_bug.cgi?id=182855
Reviewed by Brent Fulgham.
On macOS, the functions screenAvailableRect and screenRect is implemented using NSScreen, which is communicating
with the WindowServer. To avoid this WindowServer communication from the WebContent process when calling
screenAvailableRect and screenRect, it is possible to let the UIProcess send a message to the WebContent
process whenever there is a change in the display properties, and have the WebContent process cache these
display properties. This message should also be sent to a newly started WebContent process.
* UIProcess/WebProcessPool.cpp:
(WebKit::displayReconfigurationCallBack):
(WebKit::registerDisplayConfigurationCallback):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::warmInitialProcess):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setScreenProperties):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
2018-02-21 Christopher Reid <chris.reid@sony.com>
[Curl] Curl Cookie Database File should be configurable using NetworkProcessCreationParameters
https://bugs.webkit.org/show_bug.cgi?id=182751
Reviewed by Youenn Fablet.
Adding a cookiePersistentStorageFile parameter to Curl's NetworkProcessCreationParameters.
This parameter is based on Soup's cookiePersistentStoragePath.
This parameter is not used yet, it is added to prepare for WinCairo WebKit support.
* NetworkProcess/NetworkProcessCreationParameters.cpp:
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/curl/NetworkProcessCurl.cpp:
* WebProcess/Cookies/WebCookieManager.h:
* WebProcess/Cookies/curl/WebCookieManagerCurl.cpp:
2018-02-21 Brian Burg <bburg@apple.com>
[Cocoa] Web Automation: provide a way to ask clients the type of a JavaScript dialog
https://bugs.webkit.org/show_bug.cgi?id=182660
<rdar://problem/37408183>
Reviewed by Tim Horton and Carlos Garcia Campos.
Add another delegate method to ask what type of dialog is being shown.
This is used to implement §18.4 Step 5, where sending text to a dialog
without a prompt will return several different kinds of errors.
No new tests, covered by web platform tests once Safari side has landed.
* UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h: Update FIXME radar numbers.
* UIProcess/Cocoa/AutomationSessionClient.h:
* UIProcess/Cocoa/AutomationSessionClient.mm:
(WebKit::AutomationSessionClient::AutomationSessionClient):
(WebKit::toImpl):
(WebKit::AutomationSessionClient::typeOfCurrentJavaScriptDialogOnPage):
If there is no current dialog to be checked, the client can return the 'None'
type. This gets converted into a std::nullopt and causes a command error later.
2018-02-21 Yousuke Kimoto <yousuke.kimoto@sony.com>
[WinCairo] Fix compile errors of WebProcess and NetworkProcess due to no implementation for windows
https://bugs.webkit.org/show_bug.cgi?id=182870
Reviewed by Youenn Fablet.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
* WebProcess/Plugins/PluginProcessConnectionManager.cpp:
(WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::openFrontendConnection):
* WebProcess/WebPage/WebInspectorUI.cpp:
(WebKit::WebInspectorUI::establishConnection):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::ensureNetworkProcessConnection):
2018-02-21 Don Olmstead <don.olmstead@sony.com>
[CMake][Win] Use cmakeconfig.h rather than config.h and Platform.h
https://bugs.webkit.org/show_bug.cgi?id=182883
Reviewed by Per Arne Vollan.
* config.h:
2018-02-21 Brian Burg <bburg@apple.com>
Web Automation: failed provisional loads cause "Navigate To" command to hang
https://bugs.webkit.org/show_bug.cgi?id=183007
<rdar://problem/37751819>
Reviewed by Andy Estes.
This hang was revealed by WPT test current_url.py::get_current_url_file_protocol. Now the
test simply fails because Safari chooses a policy of 'Ignore' for externally-opened files.
I filed an upstream issue with the test here: https://github.com/w3c/webdriver/issues/1232
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
Notify the session that the load failed in the frame, just like we do
for non-provisional failed loads and successful loads.
2018-02-20 Nan Wang <n_wang@apple.com>
AX: Keyboard focus not following VoiceOver cursor into web content or within web content.
https://bugs.webkit.org/show_bug.cgi?id=182752
<rdar://problem/37518233>
Reviewed by Ryosuke Niwa.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::assistiveTechnologyMakeFirstResponder):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::assistiveTechnologyMakeFirstResponder):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::assistiveTechnologyMakeFirstResponder):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::assistiveTechnologyMakeFirstResponder):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::assistiveTechnologyMakeFirstResponder):
* WebProcess/WebCoreSupport/WebChromeClient.h:
2018-02-14 Brian Burg <bburg@apple.com>
Web Automation: combine session commands to resize and move top-level browsing contexts
https://bugs.webkit.org/show_bug.cgi?id=182749
<rdar://problem/37515170>
Reviewed by Andy Estes.
Since moving and resizing the window are both accomplished by setting the window frame,
and the W3C WebDriver specification has a Get/Set Window Rect command, it's time to
deduplicate these two methods which basically do the same thing.
Adopt modern JSON::Value getters that return std::optional<float>. I have been trying
to move the protocol over to this style wholesale, but it is probably easier to do
this conversion in smaller pieces. And so, I have started to do so.
This change is covered by existing WebDriver tests.
* UIProcess/Automation/Automation.json: Add new command.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::setWindowFrameOfBrowsingContext): Added.
(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext): Deleted.
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext): Deleted.
* UIProcess/Automation/WebAutomationSession.h:
2018-02-20 Brian Burg <bburg@apple.com>
ASSERT under WebAutomationSession::setProcessPool() when running W3C test suite a second time
https://bugs.webkit.org/show_bug.cgi?id=182991
<rdar://problem/37620578>
Reviewed by Timothy Hatcher.
Sometimes when running more than one session end-to-end with the same browser instance,
UIProcess would crash under addMessageReceiver because another WebAutomationSession was still
registered. This is hard to reproduce, but upon code inspection, the receiver management code
is somewhat problematic because it only runs when the WebAutomationSession destructor runs.
In some cases the client could retain two sessions and cause the first one to never remove itself
as the message receiver.
Instead of unregistering the session as a message receiver underneath the session's destructor,
do this whenever a new session supplants an old session since there is only one active session at a time.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::~WebAutomationSession):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::setAutomationSession):
2018-02-20 Tim Horton <timothy_horton@apple.com>
Introduce HAVE(IOSURFACE_ACCELERATOR)
https://bugs.webkit.org/show_bug.cgi?id=182955
<rdar://problem/37699510>
Reviewed by Sam Weinig.
* Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
* Shared/cg/ShareableBitmapCG.cpp:
* UIProcess/API/Cocoa/WKWebView.mm:
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
* UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
* UIProcess/mac/ViewSnapshotStore.h:
* UIProcess/mac/ViewSnapshotStore.mm:
2018-02-20 Chris Dumez <cdumez@apple.com>
Provisional load may get committed before receiving the decidePolicyForNavigationResponse response
https://bugs.webkit.org/show_bug.cgi?id=182720
<rdar://problem/37515204>
Reviewed by Alex Christensen.
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResponse):
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
(WebKit::WebURLSchemeTaskProxy::didReceiveResponse):
2018-02-20 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r228829.
This caused a consistent failure in the API test
WebKit.InteractionDeadlockAfterCrash on iOS Simulator
Reverted changeset:
"Switch to UIWKTextInteractionAssistant for non-editable text"
https://bugs.webkit.org/show_bug.cgi?id=182834
https://trac.webkit.org/changeset/228829
2018-02-20 Megan Gardner <megan_gardner@apple.com>
Switch to UIWKTextInteractionAssistant for non-editable text
https://bugs.webkit.org/show_bug.cgi?id=182834
Reviewed by Wenson Hsieh and Tim Horton.
Switching to only using the UIWKTextInteractionAssistant. Only character granularity is now supported.
Also keep the from regressing gating the keyboard bring up on user interaction. The presents of a
textInteractionAssistant can no longer be used as proxy for the presence of the keyboard.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView useSelectionAssistantWithGranularity:]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
2018-02-20 John Wilander <wilander@apple.com>
Make WebResourceLoadStatisticsStore::processStatisticsAndDataRecords() call WebProcessProxy::notifyPageStatisticsAndDataRecordsProcessed() in a proper callback
https://bugs.webkit.org/show_bug.cgi?id=182719
<rdar://problem/37517370>
Reviewed by Brent Fulgham.
This will allow the page notification, statistics pruning, and persistence write
to be done at the right time and hopefully stabilize the layout tests including:
http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::removeDataRecords):
Now takes a callback parameter.
(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
* UIProcess/WebResourceLoadStatisticsStore.h:
Now calls WebProcessProxy::notifyPageStatisticsAndDataRecordsProcessed()
in a callback provided to WebResourceLoadStatisticsStore::removeDataRecords().
2018-02-20 Zan Dobersek <zdobersek@igalia.com>
[Cairo] Drop target GraphicsContext usage in Cairo operations
https://bugs.webkit.org/show_bug.cgi?id=182964
Reviewed by Carlos Garcia Campos.
The GraphicsContext parameters in various Cairo operations are not used
anymore, so they can be removed. Callsites are updated to reflect this.
* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::paint):
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
(WebKit::convertCairoSurfaceToShareableBitmap):
2018-02-20 Philippe Normand <pnormand@igalia.com>
[GStreamer][MiniBrowser] Honor GStreamer command line parameters in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=173655
Reviewed by Xabier Rodriguez-Calvar.
The FIXME in GStreamerUtilities.cpp asks to pass the command line
parameters to the GStreamer initialization function.
Based on initial patch by: Vanessa Chipirrás Navalón <vchipirras@igalia.com>
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h: Define the vector which contains the GStreamer options.
* UIProcess/gtk/WebProcessPoolGtk.cpp:
(WebKit::WebProcessPool::platformInitializeWebProcess): Read from cmdline file
the GStreamer options written by console.
* WebProcess/soup/WebProcessSoup.cpp:
(WebKit::WebProcess::platformInitializeWebProcess): Call initializeGStreamer() method passing
the vector which contains the options.
2018-02-20 Yousuke Kimoto <yousuke.kimoto@sony.com>
[Win] Fix MSVC's treating __attribute__((warn_unused_result))
https://bugs.webkit.org/show_bug.cgi?id=182479
Reviewed by Darin Adler.
Since MSVC doesn't understand "__attribute__", "_Check_return_" is used instead.
If clang and VisualStudio 2017 are used, a macro with "__attriute__" will be chosen.
* UIProcess/API/cpp/WKRetainPtr.h:
2018-02-19 Brady Eidson <beidson@apple.com>
Add WebProcessPool option for process swapping on navigation.
https://bugs.webkit.org/show_bug.cgi?id=182945
Reviewed by Alex Christensen.
Just the most basic groundwork for testing a new WK2 feature.
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationProcessSwapsOnNavigation):
(WKContextConfigurationSetProcessSwapsOnNavigation):
* UIProcess/API/C/WKContextConfigurationRef.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
* UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:
(-[_WKProcessPoolConfiguration setProcessSwapsOnNavigation:]):
(-[_WKProcessPoolConfiguration processSwapsOnNavigation]):
2018-02-19 Daniel Bates <dabates@apple.com>
Null pointer dereference in WebPageProxy::urlSchemeHandlerForScheme()
https://bugs.webkit.org/show_bug.cgi?id=182905
<rdar://problem/37676775>
Reviewed by Alex Christensen.
Return nullptr when querying for the scheme handler of the null string.
Before a navigation is performed WebKit checks if the destination URL is associated with an app
unless the embedding client overrides the WKNavigationDelegate delegate callback -webView:decidePolicyForNavigationAction:decisionHandler.
If the URL is not associated with an app then WebKit may fall back to checking if the embedding
client registered a scheme handler for it. Currently we assume that the scheme is a non-null
string when checking the scheme handler registry. However the scheme can be a null string if
it is part of a malformed URL. And this leads to bad news bears when we try to use it to look
for a scheme handler. Instead check that the scheme is a non-null string before checking to see
if it is in the scheme handler registry.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::urlSchemeHandlerForScheme):
2018-02-19 Eric Carlson <eric.carlson@apple.com>
[Extra zoom mode] Don't allow PiP media playback
https://bugs.webkit.org/show_bug.cgi?id=182930
<rdar://problem/37676259>
Reviewed by Andy Estes.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]): Don't enable PiP mode. Require user interaction for
all media types.
2018-02-19 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r228696.
The API test added with this change is timing out on macOS.
Reverted changeset:
"Null pointer dereference in
WebPageProxy::urlSchemeHandlerForScheme()"
https://bugs.webkit.org/show_bug.cgi?id=182905
https://trac.webkit.org/changeset/228696
2018-02-19 Daniel Bates <dabates@apple.com>
Null pointer dereference in WebPageProxy::urlSchemeHandlerForScheme()
https://bugs.webkit.org/show_bug.cgi?id=182905
Reviewed by Alex Christensen.
Return nullptr when querying for the scheme handler of the null string.
Before a navigation is performed WebKit checks if the destination URL is associated with an app
unless the embedding client overrides the WKNavigationDelegate delegate callback -webView:decidePolicyForNavigationAction:decisionHandler.
If the URL is not associated with an app then WebKit may fall back to checking if the embedding
client registered a scheme handler for it. Currently we assume that the scheme is a non-null
string when checking the scheme handler registry. However the scheme can be a null string if
it is part of a malformed URL. And this leads to bad news bears when we try to use it to look
for a scheme handler. Instead check that the scheme is a non-null string before checking to see
if it is in the scheme handler registry.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::urlSchemeHandlerForScheme):
2018-02-19 Ms2ger <Ms2ger@igalia.com>
Explicitly qualify some method calls on this in lamdas in Service Worker code.
https://bugs.webkit.org/show_bug.cgi?id=182875
Reviewed by Chris Dumez.
This is necessary for the code to build with GCC 5. Other code already
appears to have been adapted similarly.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
2018-02-18 Reza Abbasian <rabbasian@apple.com>
Set the appropriate AutoFill context for suggested passwords.
https://bugs.webkit.org/show_bug.cgi?id=182718
<rdar://problem/36326863>
Reviewed by Wenson Hsieh and Tim Horton.
Before starting the input session, call the new delegate to query if AutoFill password suggestion assistance
is required for the focused element.
* UIProcess/API/Cocoa/_WKFormInputSession.h:
* UIProcess/API/Cocoa/_WKInputDelegate.h:
Introduce a new delegate to be called before starting an input session to query if AutoFill password suggestion
assistance is required for the focused element.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFormInputSession initWithContentView:focusedElementInfo:requiresStrongPasswordAssistance:]):
(-[WKFormInputSession requiresStrongPasswordAssistance]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
Call the delegate to find out if AutoFill suggested password assistance is required.
(-[WKContentView _stopAssistingNode]):
(-[WKContentView _autofillContext]): If the first responder is a password element and requires
assistance for AutoFill suggested password, set the appropriate AutoFill context.
(-[WKFormInputSession initWithContentView:focusedElementInfo:]): Deleted.
2018-02-17 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Form control values are stale after dismissing and representing input view controllers
https://bugs.webkit.org/show_bug.cgi?id=182877
<rdar://problem/37604395>
Reviewed by Tim Horton.
Currently, when presenting an input view controller for a focused element, we populate the initial form control
value using the WKContentView's assisted node information when it was last focused. However, if the user edits
the value of a form control, dismisses to the form control view controller (while the element is still focused)
and then begins editing the field again, the initial text will be the previous value of the input, since the
AssistedNodeInformation isn't up to date.
To fix this, we introduce a mechanism to update WKContentView's AssistedNodeInformation for the current assisted
node. This overwrites _assistedNodeInformation with new information computed from the web process, as long as
the assisted node before and after the request is made in the UI process has not changed. We accomplish this by
adding an identifier to AssistedNodeInformation, which is monotonically incremented when an element is focused
in the web process. The UI process may then use this identifier to determine whether AssistedNodeInformations
are describing the same focused element.
One interesting consideration here is that a normal AssistedNodeInformation update (propagated when focusing an
element) may be deferred in the UI process until the next layer tree commit. In the absence of the assisted node
identifier check, one could imagine a scenario in which the assisted node information in the UI process gets
"updated" from a new value to an old value:
1. The web process focuses an element and sends AssistedNodeInformation `A`.
2. WKContentView calls -updateCurrentAssistedNodeInformation.
3. The web process sends AssistedNodeInformation `B`.
4. `A` is received in the UI process, but deferred.
5. The UI process receives `B` and sets _assistedNodeInformation to `B`.
6. The UI process calls -_startAssistingNode: and sets _assistedNodeInformation to `A`.
This would mean that the _assistedNodeInformation is set to an earlier value, `A`, after being set to a later
value, `B`. However, because the AssistedNodeInformation identifier in step (2) refers to the assisted node
prior to step (1), the assisted node identifier in (5) would not match this identifier, and we would simply bail
instead of overwriting assisted node information.
We use this AssistedNodeInformation update mechanism after inserting text via input view controllers, and also
after reentering edit mode from the focused form control view controller. This fixes two issues where changing
the size of the focused element after editing it results in the focused form overlay highlighting a stale frame,
and also when setting the initial text when reentering edit mode for a form control that is already focused.
* Shared/AssistedNodeInformation.cpp:
(WebKit::AssistedNodeInformation::encode const):
(WebKit::AssistedNodeInformation::decode):
* Shared/AssistedNodeInformation.h:
Add a new monotonically increasing identifier (per WebPage) which associates a AssistedNodeInformation with a
focused element. In the event that the web process crashes and relaunches (thus resetting this identifier),
AssistedNodeInformation state in the UI process is now also reset (see -cleanupInteraction), so we won't end up
confusing AssistedNodeInformations computed by different WebPages between a web process crash.
* UIProcess/WebPageProxy.h:
A bit of related refactoring here to remove an unnecessary bool flag that indicates whether we have a deferred
assisted node information. Instead, just use the presence of m_deferredNodeAssistanceArguments.
* UIProcess/WebPageProxy.messages.in:
Add a AssistedNodeInformationCallback IPC message.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanupInteraction]):
Clear out the previous AssistedNodeInformation. See above for details.
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView updateCurrentAssistedNodeInformation:]):
Tries to update AssistedNodeInformation for the current assisted node, invoking the completion callback when
finished. This may result in the assisted node information not being updated due to the current assisted node
changing in the time between the start of the request and the information being received in the UI process.
(-[WKContentView presentViewControllerForCurrentAssistedNode]):
Refactored from -presentViewControllerForAssistedNode:, such that it no longer takes an AssistedNodeInformation
as an argument, but rather just uses WKContentView's current _assistedNodeInformation. This was just being
called with _assistedNodeInformation from all call sites anyways.
(-[WKContentView textInputController:didCommitText:]):
Request an AssistedNodeInformation update after setting the value of a form control; if the assisted node hasn't
changed, update the focused form control overlay. This is needed to handle cases where the focused element's
frame may have changed after inserting text (e.g. due to line wrapping), and the focused form control overlay
needs to be updated to reflect this change.
(-[WKContentView focusedFormControlControllerDidBeginEditing:]):
Request an AssistedNodeInformation update before reentering edit mode; if the assisted node hasn't changed since
the start of the request, present the appropriate input view controller.
(-[WKContentView presentViewControllerForAssistedNode:]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::assistedNodeInformationCallback):
(WebKit::WebPageProxy::requestAssistedNodeInformation):
(WebKit::WebPageProxy::didCommitLayerTree):
(WebKit::WebPageProxy::startAssistingNode):
(WebKit::WebPageProxy::stopAssistingNode):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::elementDidFocus):
Increment the assisted node identifier.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::requestAssistedNodeInformation):
Compute and return an AssistedNodeInformation.
(WebKit::WebPage::getAssistedNodeInformation):
2018-02-16 Dean Jackson <dino@apple.com>
Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa
https://bugs.webkit.org/show_bug.cgi?id=182894
Reviewed by Tim Horton.
Rename OPENGL_ES_2 to OPENGL_ES.
* CMakeLists.txt:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::paint):
* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::initializeEGL):
2018-02-16 Ryosuke Niwa <rniwa@webkit.org>
Add an entitlement check for service worker on iOS
https://bugs.webkit.org/show_bug.cgi?id=182865
<rdar://problem/37505903>
Reviewed by Brady Eidson.
Added an entitlement check to enable service workers on iOS.
* Shared/mac/SandboxUtilities.h:
* Shared/mac/SandboxUtilities.mm:
(WebKit::connectedProcessHasEntitlement): Added.
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::createStorageToWebProcessConnection): Enforce the entitlement check by crashing
when this code is executed without the parent process having the service worker entitlement. This should
never happen unless someone is trying to bypass the entitlement check in UI Process since we ordinarily
disable service worker gracefully in WKWebView _initializeWithConfiguration.
(WebKit::StorageProcess::swServerForSession): Ditto.
(WebKit::StorageProcess::registerSWServerConnection): Ditto.
* StorageProcess/StorageProcess.h:
(WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement const): Added.
* StorageProcess/ios/StorageProcessIOS.mm:
(WebKit::StorageProcess::parentProcessHasServiceWorkerEntitlement const): Added.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]): Disable the service workers when the entitlement is
missing from the current process. The entitlement is enforced by WebContent and Storage process.
This check avoids crashing WebContent process and gracefully disabling the feature.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences): Enforce the entitlement check.
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::parentProcessHasServiceWorkerEntitlement const): Added.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::parentProcessHasServiceWorkerEntitlement const): Added.
2018-02-16 Youenn Fablet <youenn@apple.com>
Allow specifying which plug-ins are supported
https://bugs.webkit.org/show_bug.cgi?id=182748
Reviewed by Chris Dumez.
Add a C and ObjC API to set which plug-ins are specified.
Plug-ins may be allowed by origin of the main page or for all origins.
If the API to set a supported plug-in is called, WebKit enters a mode
where it will block any plug-in that is not on the list.
The list of supported plug-ins is stored in UIProcess and sent to WebProcess.
This allows to compute the list of visible plug-ins according supported plugins.
PluginInfoStore is storing the list of supported plugins and can
answer whether a plug-in creation request is to be made unsupported or not.
It also creates the structure sent to WebProcess for computing plugin visibility.
Updated ArgumentCoders to accept modern HashSet decoders.
* Platform/IPC/ArgumentCoders.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextAddSupportedPlugin):
(WKContextClearSupportedPlugins):
* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _addSupportedPlugin:named:withMimeTypes:withExtensions:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/Plugins/PluginInfoStore.cpp:
(WebKit::PluginInfoStore::isSupportedPlugin):
(WebKit::PluginInfoStore::SupportedPlugins::isSupported):
(WebKit::PluginInfoStore::SupportedPlugin::isSupported):
(WebKit::PluginInfoStore::supportedPluginNames):
(WebKit::PluginInfoStore::addSupportedPlugin):
* UIProcess/Plugins/PluginInfoStore.h:
(WebKit::PluginInfoStore::clearSupportedPlugins):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):
(WebKit::WebPageProxy::unavailablePluginButtonClicked):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::addSupportedPlugin):
(WebKit::WebProcessPool::clearSupportedPlugins):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getPlugins):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::getPluginInfo):
(WebKit::WebPluginInfoProvider::getWebVisiblePluginInfo):
(WebKit::WebPluginInfoProvider::populatePluginCache):
* WebProcess/Plugins/WebPluginInfoProvider.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::shouldUnavailablePluginMessageBeButton const):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::createPlugin):
(WebKit::WebPage::canPluginHandleResponse):
2018-02-16 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Implement PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
https://bugs.webkit.org/show_bug.cgi?id=182771
<rdar://problem/36459988>
Reviewed by Brent Fulgham.
This patch utilizes LocalAuthentication Framework to determine if biometrics
are enrolled on a device, which is the user verifying platform authenticator.
To do so, it links the framework to WebKit.
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.cpp:
(WebKit::WebCredentialsMessengerProxy::isUserVerifyingPlatformAuthenticatorAvailable):
(WebKit::WebCredentialsMessengerProxy::isUserVerifyingPlatformAuthenticatorAvailableReply):
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.h:
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.messages.in:
* UIProcess/CredentialManagement/cocoa/WebCredentialsMessengerProxyCocoa.mm:
(WebKit::WebCredentialsMessengerProxy::platformIsUserVerifyingPlatformAuthenticatorAvailable):
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/CredentialManagement/WebCredentialsMessenger.cpp:
(WebKit::WebCredentialsMessenger::isUserVerifyingPlatformAuthenticatorAvailable):
(WebKit::WebCredentialsMessenger::isUserVerifyingPlatformAuthenticatorAvailableReply):
* WebProcess/CredentialManagement/WebCredentialsMessenger.h:
* WebProcess/CredentialManagement/WebCredentialsMessenger.messages.in:
2018-02-16 Per Arne Vollan <pvollan@apple.com>
Implement stopping of run loop in the WebContent process when using NSRunLoop.
https://bugs.webkit.org/show_bug.cgi?id=182499
<rdar://problem/37247424>
Reviewed by Brent Fulgham.
Add the method ChildProcess::stopNSRunLoop to end the WebContent process by executing a block
with 'exit(0)' on the main run loop.
* Shared/ChildProcess.h:
* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::stopNSRunLoop):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::stopRunLoop):
2018-02-16 Yousuke Kimoto <yousuke.kimoto@sony.com>
[WinCario] Add NetworkSessionCurl
https://bugs.webkit.org/show_bug.cgi?id=182680
Reviewed by Konstantin Tokarev.
* NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::create):
* PlatformWin.cmake:
2018-02-16 Chris Dumez <cdumez@apple.com>
ASSERTION FAILED: !m_processes[i] || *m_processes[i] == process in MessagePortChannel::entanglePortWithProcess()
https://bugs.webkit.org/show_bug.cgi?id=182054
<rdar://problem/36871207>
Reviewed by Brady Eidson.
Pipe postMessage messages to and from service workers via the UIProcess instead of going
directly to the StorageProcess. This is temporarily needed to avoid races due to the
MessagePort registry currently living in the UIProcess and postMessage messages potentially
sending MessagePort objects.
This change is covered by tests on the bots that currently flakily crash in debug.
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::postMessageToServiceWorker):
* StorageProcess/StorageProcess.h:
* StorageProcess/StorageProcess.messages.in:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::postMessageToServiceWorkerClient):
(WebKit::WebProcessPool::postMessageToServiceWorker):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessPool.messages.in:
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::postMessageToServiceWorker):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerClient):
2018-02-16 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Add basic support for <input type='date'> using date picker UI
https://bugs.webkit.org/show_bug.cgi?id=182847
<rdar://problem/35143111>
Reviewed by Tim Horton.
Add support for presenting date pickers when focusing a date input.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _stopAssistingNode]):
(-[WKContentView dismissAllInputViewControllers]):
Pull logic to dismiss input view controllers into a single helper.
(-[WKContentView presentDatePickerViewController:]):
(-[WKContentView dismissDatePickerViewController:]):
(-[WKContentView presentViewControllerForAssistedNode:]):
(-[WKContentView textInputController:didCommitText:]):
(-[WKContentView _wheelChangedWithEvent:]):
Delegate wheel events to the date picker.
* UIProcess/ios/forms/WKDatePickerViewController.h: Added.
* UIProcess/ios/forms/WKDatePickerViewController.mm: Added.
Add harness files for the WKDatePickerViewController implementation in WebKitAdditions.
* WebKit.xcodeproj/project.pbxproj:
2018-02-15 Youenn Fablet <youenn@apple.com>
Resources loaded from service workers are not downloadable
https://bugs.webkit.org/show_bug.cgi?id=182848
Reviewed by Chris Dumez.
Downloads are not supporting resources loaded through service worker.
As a temporary solution, we will let network process handle it.
Note that this would not work if the URL can only be loaded through service worker.
Note also that for navigation loads, if the content type is the default one (application/octet-stream) we are overriding it to
text/html as we do not support mime sniffing yet from service worker responses.
This might interfere with automatic downloads from navigation.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):
2018-02-15 Megan Gardner <megan_gardner@apple.com>
Support scrolling for non-editable web-selection and start autoscroll when near screen edges
https://bugs.webkit.org/show_bug.cgi?id=182815
Add support for autoscrolling during a selection. This also takes into account the edges of the screen
and starts autoscrolling when you get close, while still allowing autoscrolling when you are past the bounds
of the WebView.
Reviewed by Tim Horton.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView startAutoscroll:]):
(-[WKContentView resignFirstResponderForWebView]):
(-[WKContentView useSelectionAssistantWithGranularity:]):
(-[WKContentView selectedTextRange]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::startAutoscrollAtPosition):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::startAutoscrollAtPosition):
(WebKit::WebPage::cancelAutoscroll):
2018-02-15 John Wilander <wilander@apple.com>
Resource Load Statistics: Make sure WebResourceLoadStatisticsStore::mergeWithDataFromDecoder() can ingest older plist versions and not reset the database
https://bugs.webkit.org/show_bug.cgi?id=182812
<rdar://problem/37511406>
Reviewed by Brent Fulgham.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::mergeWithDataFromDecoder):
Now does the following:
- Logs when there is a model version mismatch.
- Does not ingest statistics if the version on disk is newer than the supported one.
- Does ingest statistics if the version on disk is older than the supported one.
- Passes on the version found on disk to WebCore::ResourceLoadStatistics::decode().
2018-02-15 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Revisit the whole async model of task dispatching, timeout and aborting
https://bugs.webkit.org/show_bug.cgi?id=181946
<rdar://problem/37258262>
Reviewed by Chris Dumez.
Dummy WebCredentialsMessenger and WebCredentialsMessengerProxy are crafted to establish
a message exchange channel between UIProcess and WebProcess.
* DerivedSources.make:
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.cpp: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h.
(WebKit::WebCredentialsMessengerProxy::WebCredentialsMessengerProxy):
(WebKit::WebCredentialsMessengerProxy::~WebCredentialsMessengerProxy):
(WebKit::WebCredentialsMessengerProxy::makeCredential):
(WebKit::WebCredentialsMessengerProxy::getAssertion):
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.h: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h.
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.messages.in: Added.
* UIProcess/WebPageProxy.cpp:
(WebKit::m_configurationPreferenceValues):
(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::resetState):
* UIProcess/WebPageProxy.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/CredentialManagement/WebCredentialsMessenger.cpp: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h.
(WebKit::WebCredentialsMessenger::WebCredentialsMessenger):
(WebKit::WebCredentialsMessenger::~WebCredentialsMessenger):
(WebKit::WebCredentialsMessenger::makeCredential):
(WebKit::WebCredentialsMessenger::getAssertion):
(WebKit::WebCredentialsMessenger::makeCredentialReply):
(WebKit::WebCredentialsMessenger::getAssertionReply):
* WebProcess/CredentialManagement/WebCredentialsMessenger.h: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h.
* WebProcess/CredentialManagement/WebCredentialsMessenger.messages.in: Added.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
(WebKit::m_cpuLimit): Deleted.
* WebProcess/WebPage/WebPage.h:
2018-02-15 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE] Unify build of platform-specific files in WebKit layer
https://bugs.webkit.org/show_bug.cgi?id=182696
Reviewed by Žan Doberšek.
This is easy, because all needed changes were made in the previously-landed patch.
* CMakeLists.txt:
* PlatformWPE.cmake:
2018-02-15 Don Olmstead <don.olmstead@sony.com>
WebCore headers should not be included relatively within dependent projects
https://bugs.webkit.org/show_bug.cgi?id=182805
Reviewed by Chris Dumez.
* NetworkProcess/capture/NetworkCaptureManager.cpp:
* NetworkProcess/webrtc/NetworkRTCMonitor.h:
* Shared/gtk/WebEventFactory.cpp:
* UIProcess/API/gtk/PageClientImpl.cpp:
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
* UIProcess/gtk/WebPageProxyGtk.cpp:
* WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
* WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
* WebProcess/WebPage/wpe/WebPageWPE.cpp:
2018-02-15 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r228495.
This caused mulitple perf tests to fail consistently.
Reverted changeset:
"Resource Load Statistics: Make sure
WebResourceLoadStatisticsStore::mergeWithDataFromDecoder() can
ingest older plist versions and not reset the database"
https://bugs.webkit.org/show_bug.cgi?id=182812
https://trac.webkit.org/changeset/228495
2018-02-14 Ross Kirsling <ross.kirsling@sony.com>
Default definition of InjectedBundle::PlatformBundle should not be Windows-specific.
https://bugs.webkit.org/show_bug.cgi?id=182810
Reviewed by Michael Catanzaro.
This branch was added in r228455, but should not be limited to OS(WINDOWS).
* WebProcess/InjectedBundle/InjectedBundle.h:
2018-02-14 Ross Kirsling <ross.kirsling@sony.com>
Default implementations of nativeEvent() should be platform-agnostic.
https://bugs.webkit.org/show_bug.cgi?id=182806
Reviewed by Darin Adler.
* Shared/NativeWebKeyboardEvent.h:
* Shared/NativeWebMouseEvent.h:
* Shared/NativeWebWheelEvent.h:
2018-02-14 John Wilander <wilander@apple.com>
Resource Load Statistics: Make sure WebResourceLoadStatisticsStore::mergeWithDataFromDecoder() can ingest older plist versions and not reset the database
https://bugs.webkit.org/show_bug.cgi?id=182812
<rdar://problem/37511406>
Reviewed by Brent Fulgham.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::mergeWithDataFromDecoder):
Now does the following:
- Logs when there is a model version mismatch.
- Does not ingest statistics if the version on disk is newer than the supported one.
- Does ingest statistics if the version on disk is older than the supported one.
- Passes on the version found on disk to WebCore::ResourceLoadStatistics::decode().
2018-02-14 Daniel Bates <dabates@apple.com>
Disallow cross-origin subresources from asking for credentials
https://bugs.webkit.org/show_bug.cgi?id=182579
<rdar://problem/36162271>
Reviewed by Andy Estes.
Add a private preference to toggle allowing non-mixed content cross-origin subresources to load.
WebKitTestRunner toggles this preference when it sees the test option allowCrossOriginSubresourcesToAskForCredential.
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetAllowCrossOriginSubresourcesToAskForCredentials):
(WKPreferencesGetAllowCrossOriginSubresourcesToAskForCredentials):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
2018-02-14 John Wilander <wilander@apple.com>
Make maximumParallelReadCount static to fix lambda capture error in WebKit::NetworkCache::Storage::traverse()
https://bugs.webkit.org/show_bug.cgi?id=182797
<rdar://problem/37540594>
Reviewed by Tim Horton.
This capture was added in r228455 and causes a build failure when
run with -Wunused-lambda-capture. Xcode also warns about it.
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::traverse):
2018-02-14 Ryosuke Niwa <rniwa@webkit.org>
EventDispatcher::wheelEvent uses a wrong enum values in switch
https://bugs.webkit.org/show_bug.cgi?id=182796
Reviewed by Chris Dumez.
EventDispatcher::wheelEvent is using PlatformWheelEventPhaseBegan and PlatformWheelEventPhaseEnded
but the enum type of wheelEvent.phase() is WebWheelEvent::Phase.
The enum values are indentical for both so there is no behavioral change.
* WebProcess/WebPage/EventDispatcher.cpp:
(WebKit::EventDispatcher::wheelEvent):
2018-02-14 Maureen Daum <mdaum@apple.com>
Add C SPI for support of Website Data Store in Website Policies
https://bugs.webkit.org/show_bug.cgi?id=182698
<rdar://problem/37412008>
Reviewed by Andy Estes.
Expand the API added for _WKWebsitePolicies.websiteDataStore in r225989 and r226325
to be available in the C API. In the ObjC API, we handle setting the website data
store in NavigationState::NavigationClient::decidePolicyForNavigationAction. There
we throw an exception if setting the website data store isn't supported, and then
change the website data store. The equivalent place to do this work in the C API is
in WKFramePolicyListenerUseWithPolicies. However, instead of throwing exceptions,
release asserts are used.
* UIProcess/API/C/WKFramePolicyListener.cpp:
(WKFramePolicyListenerUseWithPolicies):
If the website policies data contains a website data store, do the same checks that
are done in NavigationState::NavigationClient::decidePolicyForNavigationAction. Namely,
that it is a valid website data store and it is a policy decision for a main frame navigation.
If these checks are met, change the website data store.
* UIProcess/API/C/WKPage.cpp:
(WKPageUpdateWebsitePolicies):
* UIProcess/API/C/WKWebsitePolicies.cpp:
(WKWebsitePoliciesGetDataStore):
(WKWebsitePoliciesSetDataStore):
* UIProcess/API/C/WKWebsitePolicies.h:
* UIProcess/WebFrameListenerProxy.cpp:
(WebKit::WebFrameListenerProxy::changeWebsiteDataStore):
(WebKit::WebFrameListenerProxy::isMainFrame):
Expose whether the frame proxy is for a main frame, which is required to verify that
website policies only specify a website data store for main frame policy decisions.
* UIProcess/WebFrameListenerProxy.h:
* UIProcess/WebFramePolicyListenerProxy.cpp:
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::changeWebsiteDataStore):
* UIProcess/WebFrameProxy.h:
2018-02-14 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r228444.
Introduced API and Layout test failures.
Reverted changeset:
"[WebAuthN] Revisit the whole async model of task dispatching,
timeout and aborting"
https://bugs.webkit.org/show_bug.cgi?id=181946
https://trac.webkit.org/changeset/228444
2018-02-13 Yousuke Kimoto <yousuke.kimoto@sony.com>
[WinCairo] Fix build errors which come from including headers and not suitable implementation for windows
https://bugs.webkit.org/show_bug.cgi?id=182679
Reviewed by Michael Catanzaro.
* NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
(WebKit::NetworkCache::BlobStorage::add):
* NetworkProcess/cache/NetworkCacheData.cpp:
(WebKit::NetworkCache::Data::mapToFile const):
(WebKit::NetworkCache::mapFile):
(WebKit::NetworkCache::adoptAndMapFile):
(WebKit::NetworkCache::readOrMakeSalt):
* NetworkProcess/cache/NetworkCacheFileSystem.cpp:
(WebKit::NetworkCache::directoryEntryType):
(WebKit::NetworkCache::traverseDirectory):
(WebKit::NetworkCache::fileTimes):
(WebKit::NetworkCache::updateFileModificationTimeIfNeeded):
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::traverse):
* NetworkProcess/win/SystemProxyWin.h:
* Platform/IPC/Attachment.h:
* Platform/Module.h:
* Platform/SharedMemory.h:
* PluginProcess/WebProcessConnection.cpp:
* Shared/API/c/WKBase.h:
* Shared/ChildProcess.cpp:
* Shared/WebCoreArgumentCoders.h:
* UIProcess/ProcessAssertion.h:
* WebProcess/InjectedBundle/InjectedBundle.h:
* WebProcess/WebProcess.cpp:
2018-02-13 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r228431.
https://bugs.webkit.org/show_bug.cgi?id=182766
Regressed CMake build stability (Requested by dolmstead on
#webkit).
Reverted changeset:
"[CMake] Make WebCore headers copies"
https://bugs.webkit.org/show_bug.cgi?id=182512
https://trac.webkit.org/changeset/228431
2018-02-13 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Revisit the whole async model of task dispatching, timeout and aborting
https://bugs.webkit.org/show_bug.cgi?id=181946
<rdar://problem/37258262>
Reviewed by Chris Dumez.
Dummy WebCredentialsMessenger and WebCredentialsMessengerProxy are crafted to establish
a message exchange channel between UIProcess and WebProcess.
* DerivedSources.make:
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.cpp: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h.
(WebKit::WebCredentialsMessengerProxy::WebCredentialsMessengerProxy):
(WebKit::WebCredentialsMessengerProxy::~WebCredentialsMessengerProxy):
(WebKit::WebCredentialsMessengerProxy::makeCredential):
(WebKit::WebCredentialsMessengerProxy::getAssertion):
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.h: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h.
* UIProcess/CredentialManagement/WebCredentialsMessengerProxy.messages.in: Added.
* UIProcess/WebPageProxy.cpp:
(WebKit::m_configurationPreferenceValues):
(WebKit::WebPageProxy::reattachToWebProcess):
* UIProcess/WebPageProxy.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/CredentialManagement/WebCredentialsMessenger.cpp: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h.
(WebKit::WebCredentialsMessenger::WebCredentialsMessenger):
(WebKit::WebCredentialsMessenger::~WebCredentialsMessenger):
(WebKit::WebCredentialsMessenger::makeCredential):
(WebKit::WebCredentialsMessenger::getAssertion):
(WebKit::WebCredentialsMessenger::makeCredentialReply):
(WebKit::WebCredentialsMessenger::getAssertionReply):
* WebProcess/CredentialManagement/WebCredentialsMessenger.h: Copied from Source/WebCore/Modules/webauthn/AuthenticatorResponse.h.
* WebProcess/CredentialManagement/WebCredentialsMessenger.messages.in: Added.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_credentialsMessenger):
(WebKit::m_cpuLimit): Deleted.
* WebProcess/WebPage/WebPage.h:
2018-02-13 Youenn Fablet <youenn@apple.com>
Add support for configuring WebsiteDatastore service worker and cache storage path
https://bugs.webkit.org/show_bug.cgi?id=182674
Reviewed by Chris Dumez.
Beef up WKWebsiteDataStoreConfiguration to easily set the WebsiteDataStore
service worker registration and cache storage directory path.
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _initWithConfiguration:]):
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration _cacheStorageDirectory]):
(-[_WKWebsiteDataStoreConfiguration _setCacheStorageDirectory:]):
(-[_WKWebsiteDataStoreConfiguration _serviceWorkerRegistrationDirectory]):
(-[_WKWebsiteDataStoreConfiguration _setServiceWorkerRegistrationDirectory:]):
2018-02-13 Brian Burg <bburg@apple.com>
Web Automation: don't return an error if resizing/moving a window has no effect
https://bugs.webkit.org/show_bug.cgi?id=182742
Reviewed by Tim Horton.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
Unify the behavior for all ports. Don't raise an error if the command was
idempotent (by mistake or not). It should not be an error to re-maximize a window.
2018-02-13 Don Olmstead <don.olmstead@sony.com>
[CMake] Make WebCore headers copies
https://bugs.webkit.org/show_bug.cgi?id=182512
Reviewed by Keith Miller.
* CMakeLists.txt:
* NetworkProcess/capture/NetworkCaptureManager.cpp:
* NetworkProcess/webrtc/NetworkRTCMonitor.h:
* PlatformWPE.cmake:
* Scripts/generate-forwarding-headers.pl:
* Shared/gtk/WebEventFactory.cpp:
* UIProcess/API/gtk/PageClientImpl.cpp:
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
* UIProcess/gtk/WebPageProxyGtk.cpp:
* WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
* WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
* WebProcess/WebPage/wpe/WebPageWPE.cpp:
2018-02-13 Brent Fulgham <bfulgham@apple.com>
[iOS] whitelist iokit-get-properties
https://bugs.webkit.org/show_bug.cgi?id=182722
<rdar://problem/30929165>
Reviewed by Eric Carlson.
Update the iOS sandbox to block access to IOKit properties that are not needed for
legitimate WebContent process use. This brings the iOS sandbox in line with the
work done under macOS.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2018-02-12 John Wilander <wilander@apple.com>
Resource Load Statistics: Classify resources as prevalent based on redirects to other prevalent resources
https://bugs.webkit.org/show_bug.cgi?id=182664
<rdar://problem/37372572>
Reviewed by Brent Fulgham.
* Platform/classifier/ResourceLoadStatisticsClassifier.cpp:
(WebKit::ResourceLoadStatisticsClassifier::hasPrevalentResourceCharacteristics):
Unique top frame redirects now counts toward classification as prevalent.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<ResourceLoadStatistics>::encode):
(IPC::ArgumentCoder<ResourceLoadStatistics>::decode):
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectFrom):
(WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectTo):
(WKWebsiteDataStoreSetStatisticsTopFrameUniqueRedirectFrom):
Test infrastructure.
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
Bumped the statistics model to 11 because of the added fields.
(WebKit::WebResourceLoadStatisticsStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain):
This function back traces redirect chains to classify domains
that have redirected to a newly classified prevalent resource.
(WebKit::WebResourceLoadStatisticsStore::processStatisticsAndDataRecords):
Now uses the new convenience function WebResourceLoadStatisticsStore::setPrevalentResource().
(WebKit::WebResourceLoadStatisticsStore::setPrevalentResource):
New convenience function to make sure we always call
WebResourceLoadStatisticsStore::recursivelyGetAllDomainsThatHaveRedirectedToThisDomain()
and capture redirect chains backward.
(WebKit::WebResourceLoadStatisticsStore::setSubframeUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUnderTopFrameOrigin):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectTo):
(WebKit::WebResourceLoadStatisticsStore::setTopFrameUniqueRedirectFrom):
Test infrastructure.
* UIProcess/WebResourceLoadStatisticsStore.h:
2018-02-12 Antti Koivisto <antti@apple.com>
Update NetworkCache::Storage::lastStableVersion after r226349
https://bugs.webkit.org/show_bug.cgi?id=182723
<rdar://problem/37469554>
Reviewed by Ryosuke Niwa.
* NetworkProcess/cache/NetworkCacheStorage.h:
Allow deleting version 11 caches.
2018-02-12 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Add support for <input type='time'> using time picker UI
https://bugs.webkit.org/show_bug.cgi?id=182683
<rdar://problem/35143162>
Reviewed by Tim Horton.
Adds support for showing a time picker when an input of type time is focused in extra zoomed mode.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _stopAssistingNode]):
(-[WKContentView presentTimePickerViewController:]):
(-[WKContentView dismissTimePickerViewController:]):
Add helpers to dismiss and present the time picker view controller.
(-[WKContentView presentViewControllerForAssistedNode:]):
When focusing InputType::Time, present a time picker. Additionally, tweak the logic here to use the generic text
input view controller as a fallback when the other input view controllers (number pads, select menus and time
pickers thus far) are not relevant. This prevents us from completely being unable to edit form controls that are
currently unsupported.
(-[WKContentView textInputController:didCommitText:]):
(-[WKContentView textInputControllerDidRequestDismissal:]):
Tweak WKContentView for changes to WKTextFormControlViewControllerDelegate.
(-[WKContentView actionNameForFocusedFormControlController:]):
Adjust this implementation to hide the focused form control "Go" button for selects and time inputs. This
currently doesn't work for these form controls because it relies on implicit form submission; this should be
fixed by future changes, after which we should revert this adjustment.
(-[WKContentView _wheelChangedWithEvent:]):
Delegate wheel events to the time picker if needed.
(-[WKContentView textInputController:didRequestDismissalWithAction:]): Deleted.
Renamed to -textInputControllerDidRequestDismissal:.
* UIProcess/ios/forms/WKTimePickerViewController.h: Added.
* UIProcess/ios/forms/WKTimePickerViewController.mm: Added.
* WebKit.xcodeproj/project.pbxproj:
2018-02-11 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] Unify builds for platform-specific files in WebKit layer
https://bugs.webkit.org/show_bug.cgi?id=182450
Reviewed by Carlos Garcia Campos.
Add most GTK-specific sources to unified build. API files are exempted, except for the DOM
API. Files shared with PluginProcessGTK2 are also exempted. Finally, files with name
conflicts in headers, which appears difficult to fix, are also exempted.
* CMakeLists.txt:
* NetworkProcess/CustomProtocols/soup/LegacyCustomProtocolManagerSoup.cpp:
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
* NetworkProcess/soup/NetworkProcessSoup.cpp:
* NetworkProcess/soup/NetworkSessionSoup.cpp:
* NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
* Platform/classifier/ResourceLoadStatisticsClassifier.cpp:
* PlatformGTK.cmake:
* PluginProcess/unix/PluginControllerProxyUnix.cpp:
* Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp:
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
* Shared/CoordinatedGraphics/SimpleViewportController.cpp:
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
* Shared/Plugins/Netscape/unix/NetscapePluginModuleUnix.cpp:
* Shared/Plugins/unix/PluginSearchPath.cpp:
* Shared/cairo/ShareableBitmapCairo.cpp:
* Shared/glib/WebContextMenuItemGlib.cpp:
* Shared/glib/WebErrorsGlib.cpp:
* Shared/gtk/ArgumentCodersGtk.cpp:
* Shared/gtk/NativeWebKeyboardEventGtk.cpp:
* Shared/gtk/ProcessExecutablePathGtk.cpp:
* Shared/gtk/WebErrorsGtk.cpp:
* Shared/gtk/WebEventFactory.cpp:
* Shared/linux/WebMemorySamplerLinux.cpp:
* Shared/soup/WebCoreArgumentCodersSoup.cpp:
* Shared/soup/WebErrorsSoup.cpp:
* SourcesGTK.txt: Added.
* UIProcess/AcceleratedDrawingAreaProxy.cpp:
* UIProcess/Automation/cairo/WebAutomationSessionCairo.cpp:
* UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
* UIProcess/BackingStore.cpp:
* UIProcess/DrawingAreaProxyImpl.cpp:
* UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
* UIProcess/Plugins/unix/PluginInfoStoreUnix.cpp:
* UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
* UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
* UIProcess/WebStorage/StorageManager.cpp:
* UIProcess/cairo/BackingStoreCairo.cpp:
* UIProcess/gtk/AcceleratedBackingStore.cpp:
* UIProcess/gtk/DragAndDropHandler.cpp:
* UIProcess/gtk/GestureController.cpp:
* UIProcess/gtk/HardwareAccelerationManager.cpp:
* UIProcess/gtk/InputMethodFilter.cpp:
* UIProcess/gtk/TextCheckerGtk.cpp:
* UIProcess/gtk/WaylandCompositor.cpp:
* UIProcess/gtk/WebColorPickerGtk.cpp:
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
* UIProcess/gtk/WebPasteboardProxyGtk.cpp:
* UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
* WebProcess/Cookies/soup/WebCookieManagerSoup.cpp:
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMAttr.cpp:
(webkit_dom_attr_dom_event_target_init):
(webkit_dom_attr_set_property):
(webkit_dom_attr_get_property):
(webkit_dom_attr_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCDATASection.cpp:
(webkit_dom_cdata_section_dom_event_target_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRule.cpp:
(webkit_dom_css_rule_set_property):
(webkit_dom_css_rule_get_property):
(webkit_dom_css_rule_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSRuleList.cpp:
(webkit_dom_css_rule_list_get_property):
(webkit_dom_css_rule_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleDeclaration.cpp:
(webkit_dom_css_style_declaration_set_property):
(webkit_dom_css_style_declaration_get_property):
(webkit_dom_css_style_declaration_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSStyleSheet.cpp:
(webkit_dom_css_style_sheet_get_property):
(webkit_dom_css_style_sheet_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValue.cpp:
(webkit_dom_css_value_set_property):
(webkit_dom_css_value_get_property):
(webkit_dom_css_value_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCharacterData.cpp:
(webkit_dom_character_data_dom_event_target_init):
(webkit_dom_character_data_set_property):
(webkit_dom_character_data_get_property):
(webkit_dom_character_data_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:
(webkit_dom_client_rect_get_property):
(webkit_dom_client_rect_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:
(webkit_dom_client_rect_list_get_property):
(webkit_dom_client_rect_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMComment.cpp:
(webkit_dom_comment_dom_event_target_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMSelection.cpp:
(webkit_dom_dom_selection_get_property):
(webkit_dom_dom_selection_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMTokenList.cpp:
(webkit_dom_dom_token_list_set_property):
(webkit_dom_dom_token_list_get_property):
(webkit_dom_dom_token_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:
(webkit_dom_dom_window_dom_event_target_init):
(webkit_dom_dom_window_set_property):
(webkit_dom_dom_window_get_property):
(webkit_dom_dom_window_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:
(webkit_dom_document_dom_event_target_init):
(webkit_dom_document_set_property):
(webkit_dom_document_get_property):
(webkit_dom_document_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:
(webkit_dom_document_fragment_dom_event_target_init):
(webkit_dom_document_fragment_get_property):
(webkit_dom_document_fragment_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentType.cpp:
(webkit_dom_document_type_dom_event_target_init):
(webkit_dom_document_type_get_property):
(webkit_dom_document_type_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:
(webkit_dom_element_dom_event_target_init):
(webkit_dom_element_set_property):
(webkit_dom_element_get_property):
(webkit_dom_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMEvent.cpp:
(webkit_dom_event_set_property):
(webkit_dom_event_get_property):
(webkit_dom_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFile.cpp:
(webkit_dom_file_get_property):
(webkit_dom_file_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMFileList.cpp:
(webkit_dom_file_list_get_property):
(webkit_dom_file_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAnchorElement.cpp:
(webkit_dom_html_anchor_element_dom_event_target_init):
(webkit_dom_html_anchor_element_set_property):
(webkit_dom_html_anchor_element_get_property):
(webkit_dom_html_anchor_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAppletElement.cpp:
(webkit_dom_html_applet_element_dom_event_target_init):
(webkit_dom_html_applet_element_set_property):
(webkit_dom_html_applet_element_get_property):
(webkit_dom_html_applet_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAreaElement.cpp:
(webkit_dom_html_area_element_dom_event_target_init):
(webkit_dom_html_area_element_set_property):
(webkit_dom_html_area_element_get_property):
(webkit_dom_html_area_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBRElement.cpp:
(webkit_dom_html_br_element_dom_event_target_init):
(webkit_dom_html_br_element_set_property):
(webkit_dom_html_br_element_get_property):
(webkit_dom_html_br_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBaseElement.cpp:
(webkit_dom_html_base_element_dom_event_target_init):
(webkit_dom_html_base_element_set_property):
(webkit_dom_html_base_element_get_property):
(webkit_dom_html_base_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBodyElement.cpp:
(webkit_dom_html_body_element_dom_event_target_init):
(webkit_dom_html_body_element_set_property):
(webkit_dom_html_body_element_get_property):
(webkit_dom_html_body_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLButtonElement.cpp:
(webkit_dom_html_button_element_dom_event_target_init):
(webkit_dom_html_button_element_set_property):
(webkit_dom_html_button_element_get_property):
(webkit_dom_html_button_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCanvasElement.cpp:
(webkit_dom_html_canvas_element_dom_event_target_init):
(webkit_dom_html_canvas_element_set_property):
(webkit_dom_html_canvas_element_get_property):
(webkit_dom_html_canvas_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCollection.cpp:
(webkit_dom_html_collection_get_property):
(webkit_dom_html_collection_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDListElement.cpp:
(webkit_dom_html_d_list_element_dom_event_target_init):
(webkit_dom_html_d_list_element_set_property):
(webkit_dom_html_d_list_element_get_property):
(webkit_dom_html_d_list_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDirectoryElement.cpp:
(webkit_dom_html_directory_element_dom_event_target_init):
(webkit_dom_html_directory_element_set_property):
(webkit_dom_html_directory_element_get_property):
(webkit_dom_html_directory_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDivElement.cpp:
(webkit_dom_html_div_element_dom_event_target_init):
(webkit_dom_html_div_element_set_property):
(webkit_dom_html_div_element_get_property):
(webkit_dom_html_div_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:
(webkit_dom_html_document_dom_event_target_init):
(webkit_dom_html_document_set_property):
(webkit_dom_html_document_get_property):
(webkit_dom_html_document_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:
(webkit_dom_html_element_dom_event_target_init):
(webkit_dom_html_element_set_property):
(webkit_dom_html_element_get_property):
(webkit_dom_html_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLEmbedElement.cpp:
(webkit_dom_html_embed_element_dom_event_target_init):
(webkit_dom_html_embed_element_set_property):
(webkit_dom_html_embed_element_get_property):
(webkit_dom_html_embed_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFieldSetElement.cpp:
(webkit_dom_html_field_set_element_dom_event_target_init):
(webkit_dom_html_field_set_element_get_property):
(webkit_dom_html_field_set_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFontElement.cpp:
(webkit_dom_html_font_element_dom_event_target_init):
(webkit_dom_html_font_element_set_property):
(webkit_dom_html_font_element_get_property):
(webkit_dom_html_font_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFormElement.cpp:
(webkit_dom_html_form_element_dom_event_target_init):
(webkit_dom_html_form_element_set_property):
(webkit_dom_html_form_element_get_property):
(webkit_dom_html_form_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp:
(webkit_dom_html_frame_element_dom_event_target_init):
(webkit_dom_html_frame_element_set_property):
(webkit_dom_html_frame_element_get_property):
(webkit_dom_html_frame_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameSetElement.cpp:
(webkit_dom_html_frame_set_element_dom_event_target_init):
(webkit_dom_html_frame_set_element_set_property):
(webkit_dom_html_frame_set_element_get_property):
(webkit_dom_html_frame_set_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHRElement.cpp:
(webkit_dom_html_hr_element_dom_event_target_init):
(webkit_dom_html_hr_element_set_property):
(webkit_dom_html_hr_element_get_property):
(webkit_dom_html_hr_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadElement.cpp:
(webkit_dom_html_head_element_dom_event_target_init):
(webkit_dom_html_head_element_set_property):
(webkit_dom_html_head_element_get_property):
(webkit_dom_html_head_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadingElement.cpp:
(webkit_dom_html_heading_element_dom_event_target_init):
(webkit_dom_html_heading_element_set_property):
(webkit_dom_html_heading_element_get_property):
(webkit_dom_html_heading_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHtmlElement.cpp:
(webkit_dom_html_html_element_dom_event_target_init):
(webkit_dom_html_html_element_set_property):
(webkit_dom_html_html_element_get_property):
(webkit_dom_html_html_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp:
(webkit_dom_html_iframe_element_dom_event_target_init):
(webkit_dom_html_iframe_element_set_property):
(webkit_dom_html_iframe_element_get_property):
(webkit_dom_html_iframe_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLImageElement.cpp:
(webkit_dom_html_image_element_dom_event_target_init):
(webkit_dom_html_image_element_set_property):
(webkit_dom_html_image_element_get_property):
(webkit_dom_html_image_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
(webkit_dom_html_input_element_dom_event_target_init):
(webkit_dom_html_input_element_set_property):
(webkit_dom_html_input_element_get_property):
(webkit_dom_html_input_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLIElement.cpp:
(webkit_dom_html_li_element_dom_event_target_init):
(webkit_dom_html_li_element_set_property):
(webkit_dom_html_li_element_get_property):
(webkit_dom_html_li_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLabelElement.cpp:
(webkit_dom_html_label_element_dom_event_target_init):
(webkit_dom_html_label_element_set_property):
(webkit_dom_html_label_element_get_property):
(webkit_dom_html_label_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLegendElement.cpp:
(webkit_dom_html_legend_element_dom_event_target_init):
(webkit_dom_html_legend_element_set_property):
(webkit_dom_html_legend_element_get_property):
(webkit_dom_html_legend_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLinkElement.cpp:
(webkit_dom_html_link_element_dom_event_target_init):
(webkit_dom_html_link_element_set_property):
(webkit_dom_html_link_element_get_property):
(webkit_dom_html_link_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMapElement.cpp:
(webkit_dom_html_map_element_dom_event_target_init):
(webkit_dom_html_map_element_set_property):
(webkit_dom_html_map_element_get_property):
(webkit_dom_html_map_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMarqueeElement.cpp:
(webkit_dom_html_marquee_element_dom_event_target_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMenuElement.cpp:
(webkit_dom_html_menu_element_dom_event_target_init):
(webkit_dom_html_menu_element_set_property):
(webkit_dom_html_menu_element_get_property):
(webkit_dom_html_menu_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMetaElement.cpp:
(webkit_dom_html_meta_element_dom_event_target_init):
(webkit_dom_html_meta_element_set_property):
(webkit_dom_html_meta_element_get_property):
(webkit_dom_html_meta_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLModElement.cpp:
(webkit_dom_html_mod_element_dom_event_target_init):
(webkit_dom_html_mod_element_set_property):
(webkit_dom_html_mod_element_get_property):
(webkit_dom_html_mod_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOListElement.cpp:
(webkit_dom_html_o_list_element_dom_event_target_init):
(webkit_dom_html_o_list_element_set_property):
(webkit_dom_html_o_list_element_get_property):
(webkit_dom_html_o_list_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.cpp:
(webkit_dom_html_object_element_dom_event_target_init):
(webkit_dom_html_object_element_set_property):
(webkit_dom_html_object_element_get_property):
(webkit_dom_html_object_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptGroupElement.cpp:
(webkit_dom_html_opt_group_element_dom_event_target_init):
(webkit_dom_html_opt_group_element_set_property):
(webkit_dom_html_opt_group_element_get_property):
(webkit_dom_html_opt_group_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionElement.cpp:
(webkit_dom_html_option_element_dom_event_target_init):
(webkit_dom_html_option_element_set_property):
(webkit_dom_html_option_element_get_property):
(webkit_dom_html_option_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionsCollection.cpp:
(webkit_dom_html_options_collection_set_property):
(webkit_dom_html_options_collection_get_property):
(webkit_dom_html_options_collection_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParagraphElement.cpp:
(webkit_dom_html_paragraph_element_dom_event_target_init):
(webkit_dom_html_paragraph_element_set_property):
(webkit_dom_html_paragraph_element_get_property):
(webkit_dom_html_paragraph_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParamElement.cpp:
(webkit_dom_html_param_element_dom_event_target_init):
(webkit_dom_html_param_element_set_property):
(webkit_dom_html_param_element_get_property):
(webkit_dom_html_param_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPreElement.cpp:
(webkit_dom_html_pre_element_dom_event_target_init):
(webkit_dom_html_pre_element_set_property):
(webkit_dom_html_pre_element_get_property):
(webkit_dom_html_pre_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLQuoteElement.cpp:
(webkit_dom_html_quote_element_dom_event_target_init):
(webkit_dom_html_quote_element_set_property):
(webkit_dom_html_quote_element_get_property):
(webkit_dom_html_quote_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLScriptElement.cpp:
(webkit_dom_html_script_element_dom_event_target_init):
(webkit_dom_html_script_element_set_property):
(webkit_dom_html_script_element_get_property):
(webkit_dom_html_script_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:
(webkit_dom_html_select_element_dom_event_target_init):
(webkit_dom_html_select_element_set_property):
(webkit_dom_html_select_element_get_property):
(webkit_dom_html_select_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLStyleElement.cpp:
(webkit_dom_html_style_element_dom_event_target_init):
(webkit_dom_html_style_element_set_property):
(webkit_dom_html_style_element_get_property):
(webkit_dom_html_style_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCaptionElement.cpp:
(webkit_dom_html_table_caption_element_dom_event_target_init):
(webkit_dom_html_table_caption_element_set_property):
(webkit_dom_html_table_caption_element_get_property):
(webkit_dom_html_table_caption_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:
(webkit_dom_html_table_cell_element_dom_event_target_init):
(webkit_dom_html_table_cell_element_set_property):
(webkit_dom_html_table_cell_element_get_property):
(webkit_dom_html_table_cell_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableColElement.cpp:
(webkit_dom_html_table_col_element_dom_event_target_init):
(webkit_dom_html_table_col_element_set_property):
(webkit_dom_html_table_col_element_get_property):
(webkit_dom_html_table_col_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:
(webkit_dom_html_table_element_dom_event_target_init):
(webkit_dom_html_table_element_set_property):
(webkit_dom_html_table_element_get_property):
(webkit_dom_html_table_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:
(webkit_dom_html_table_row_element_dom_event_target_init):
(webkit_dom_html_table_row_element_set_property):
(webkit_dom_html_table_row_element_get_property):
(webkit_dom_html_table_row_element_class_init):
(webkit_dom_html_table_row_element_insert_cell):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:
(webkit_dom_html_table_section_element_dom_event_target_init):
(webkit_dom_html_table_section_element_set_property):
(webkit_dom_html_table_section_element_get_property):
(webkit_dom_html_table_section_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTextAreaElement.cpp:
(webkit_dom_html_text_area_element_dom_event_target_init):
(webkit_dom_html_text_area_element_set_property):
(webkit_dom_html_text_area_element_get_property):
(webkit_dom_html_text_area_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTitleElement.cpp:
(webkit_dom_html_title_element_dom_event_target_init):
(webkit_dom_html_title_element_set_property):
(webkit_dom_html_title_element_get_property):
(webkit_dom_html_title_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLUListElement.cpp:
(webkit_dom_html_u_list_element_dom_event_target_init):
(webkit_dom_html_u_list_element_set_property):
(webkit_dom_html_u_list_element_get_property):
(webkit_dom_html_u_list_element_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMKeyboardEvent.cpp:
(webkit_dom_keyboard_event_get_property):
(webkit_dom_keyboard_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMediaList.cpp:
(webkit_dom_media_list_set_property):
(webkit_dom_media_list_get_property):
(webkit_dom_media_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMMouseEvent.cpp:
(webkit_dom_mouse_event_get_property):
(webkit_dom_mouse_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNamedNodeMap.cpp:
(webkit_dom_named_node_map_get_property):
(webkit_dom_named_node_map_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp:
(webkit_dom_node_dom_event_target_init):
(webkit_dom_node_set_property):
(webkit_dom_node_get_property):
(webkit_dom_node_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeIterator.cpp:
(webkit_dom_node_iterator_get_property):
(webkit_dom_node_iterator_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNodeList.cpp:
(webkit_dom_node_list_get_property):
(webkit_dom_node_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMObject.cpp:
(webkitDOMObjectSetProperty):
(webkit_dom_object_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMProcessingInstruction.cpp:
(webkit_dom_processing_instruction_dom_event_target_init):
(webkit_dom_processing_instruction_get_property):
(webkit_dom_processing_instruction_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMRange.cpp:
(webkit_dom_range_get_property):
(webkit_dom_range_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheet.cpp:
(webkit_dom_style_sheet_set_property):
(webkit_dom_style_sheet_get_property):
(webkit_dom_style_sheet_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMStyleSheetList.cpp:
(webkit_dom_style_sheet_list_get_property):
(webkit_dom_style_sheet_list_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMText.cpp:
(webkit_dom_text_dom_event_target_init):
(webkit_dom_text_get_property):
(webkit_dom_text_class_init):
(webkit_dom_event_target_init): Deleted.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMTreeWalker.cpp:
(webkit_dom_tree_walker_get_property):
(webkit_dom_tree_walker_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMUIEvent.cpp:
(webkit_dom_ui_event_get_property):
(webkit_dom_ui_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp:
(webkit_dom_wheel_event_get_property):
(webkit_dom_wheel_event_class_init):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMXPathResult.cpp:
(webkit_dom_xpath_result_get_property):
(webkit_dom_xpath_result_class_init):
* WebProcess/InjectedBundle/glib/InjectedBundleGlib.cpp:
* WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
* WebProcess/Plugins/Netscape/unix/NetscapePluginUnix.cpp:
* WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:
* WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.cpp:
* WebProcess/WebCoreSupport/gtk/WebContextMenuClientGtk.cpp:
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
* WebProcess/WebCoreSupport/gtk/WebPopupMenuGtk.cpp:
* WebProcess/WebPage/AcceleratedDrawingArea.cpp:
* WebProcess/WebPage/AcceleratedSurface.cpp:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:
* WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:
* WebProcess/WebPage/DrawingAreaImpl.cpp:
* WebProcess/WebPage/gtk/AcceleratedSurfaceWayland.cpp:
* WebProcess/WebPage/gtk/AcceleratedSurfaceX11.cpp:
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
* WebProcess/gtk/WaylandCompositorDisplay.cpp:
* WebProcess/gtk/WebProcessMainGtk.cpp:
2018-02-05 Carlos Garcia Campos <cgarcia@igalia.com>
WebDriver: addCookie command should prepend a dot to domain if missing
https://bugs.webkit.org/show_bug.cgi?id=182328
<rdar://problem/37116398>
Reviewed by Michael Catanzaro.
RFC 2965: If an explicitly specified value does not start with a dot, the user agent supplies a leading dot.
Fixes: imported/w3c/webdriver/tests/cookies/add_cookie.py::test_add_domain_cookie
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::addSingleCookie):
2018-02-11 Yousuke Kimoto <yousuke.kimoto@sony.com>
[WinCairo] Add WKBaseWin.h
https://bugs.webkit.org/show_bug.cgi?id=182681
Reviewed by Yusuke Suzuki.
* PlatformWin.cmake:
* Shared/API/c/win/WKBaseWin.h: Added.
2018-02-09 Ross Kirsling <ross.kirsling@sony.com>
Remove invalidated WebPage::handleEditingKeyboardEvent default implementation after r228260.
https://bugs.webkit.org/show_bug.cgi?id=182663
Reviewed by Chris Dumez.
This would need to be updated to turn `keyEvent` into `underlyingPlatformEvent`;
instead, we can remove it, as it's only for Windows, which doesn't yet support WK2.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::handleEditingKeyboardEvent): Deleted.
2018-02-09 Nan Wang <n_wang@apple.com>
AX: Accessibility is not notified when a web process cancels the suspension
https://bugs.webkit.org/show_bug.cgi?id=182659
Reviewed by Ryosuke Niwa.
We were notifying Accessibility with the web process suspended information in actualPrepareToSuspend
and processDidResume. However, the suspension can be canceled during the prepare call. So that we
should also post a notification in cancelPrepareToSuspend.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::cancelPrepareToSuspend):
2018-02-09 Brent Fulgham <bfulgham@apple.com>
Sandbox violating attempting to read log formatting preference file
https://bugs.webkit.org/show_bug.cgi?id=182648
<rdar://problem/36629495>
Reviewed by Eric Carlson.
Various frameworks attempt to read logging format information from /usr/local/lib/log. The sandbox is blocking
this, generating log spam and preventing some logging features from working properly. We should allow read
access to this path.
* 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:
2018-02-08 Chris Dumez <cdumez@apple.com>
There should be a way to disable [OverrideBuiltins] behavior in a given DOMWrapperWorld
https://bugs.webkit.org/show_bug.cgi?id=182524
<rdar://problem/9057327>
Reviewed by Ryosuke Niwa.
Add C API on WKBundleScriptWorld and Cocoa API on WKWebProcessPlugInScriptWorld to
disable the [OverrideBuiltins] behavior on a given script world.
The [OverrideBuiltins] behavior [1] is legacy behavior that is needed for Web compatibility
but allowing the client to disable this behavior in a given world makes development easier
and running injected script on uncontrolled content a lot more reliable.
[1] https://heycam.github.io/webidl/#OverrideBuiltins
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:
(-[WKWebProcessPlugInScriptWorld disableOverrideBuiltinsBehavior]):
* WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.cpp:
(WKBundleScriptWorldDisableOverrideBuiltinsBehavior):
* WebProcess/InjectedBundle/API/c/WKBundleScriptWorld.h:
* WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
(WebKit::InjectedBundleScriptWorld::disableOverrideBuiltinsBehavior):
* WebProcess/InjectedBundle/InjectedBundleScriptWorld.h:
2018-02-08 Ross Kirsling <ross.kirsling@sony.com>
Remove WebProcessPool::platformInitialize stub.
https://bugs.webkit.org/show_bug.cgi?id=182621
Reviewed by Alex Christensen.
The #if here could be simplified to PLATFORM(WIN), but Windows too will need a proper implementation
as part of WK2 support, so this stub shouldn't need to exist at all.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::platformInitialize): Deleted.
2018-02-08 Michael Catanzaro <mcatanzaro@igalia.com>
TestController should not exercise cocoa-specific resource load statistics APIs
https://bugs.webkit.org/show_bug.cgi?id=182355
Reviewed by Alex Christensen.
Remove the Cocoa testing SPI, since it's redundant with the C API. Also, add a couple
missing cookie partitioning callbacks to the C API.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsUpdateCookiePartitioning):
(WKWebsiteDataStoreSetStatisticsShouldPartitionCookiesForHost):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _resourceLoadStatisticsSetLastSeen:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetIsPrevalentResource:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsIsPrevalentResource:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsIsRegisteredAsSubFrameUnder:topFrameHost:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsIsRegisteredAsRedirectingTo:hostRedirectedTo:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetHadUserInteraction:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetHasHadNonRecentUserInteractionForHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsHadUserInteraction:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetIsGrandfathered:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsIsGrandfathered:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetSubframeUnderTopFrameOrigin:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetSubresourceUnderTopFrameOrigin:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetSubresourceUniqueRedirectTo:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetTimeToLiveUserInteraction:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetTimeToLiveCookiePartitionFree:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetMinimumTimeBetweenDataRecordsRemoval:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetGrandfatheringTime:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetMaxStatisticsEntries:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetPruneEntriesDownTo:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsProcessStatisticsAndDataRecords]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSubmitTelemetry]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetNotifyPagesWhenDataRecordsWereScanned:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldClassifyResourcesBeforeDataRecordsRemoval:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetNotifyPagesWhenTelemetryWasCaptured:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStore]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStore:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:completionHandler:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsResetToConsistentState]): Deleted.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
2018-02-08 Don Olmstead <don.olmstead@sony.com>
Remove JavaScriptCore/ForwardingHeaders directory
https://bugs.webkit.org/show_bug.cgi?id=182594
Reviewed by Mark Lam.
* PlatformGTK.cmake:
2018-02-08 Tim Horton <timothy_horton@apple.com>
Make WebKit public headers modules-safe
https://bugs.webkit.org/show_bug.cgi?id=182611
<rdar://problem/37160164>
Reviewed by Dan Bernstein.
* UIProcess/API/Cocoa/WKPreviewElementInfo.h:
* UIProcess/API/Cocoa/WKSnapshotConfiguration.h:
Import headers without which these WebKit headers can not be used alone.
* WebKit.xcodeproj/project.pbxproj:
Make WKWindowFeaturesPrivate a private header like it was supposed to be.
2018-02-08 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r228262.
This broke an internal build alongside r228261.
Reverted changeset:
"WebDriver: addCookie command should prepend a dot to domain
if missing"
https://bugs.webkit.org/show_bug.cgi?id=182328
https://trac.webkit.org/changeset/228262
2018-02-08 Miguel Gomez <magomez@igalia.com>
[GTK] WaylandCompositor misusing eglGetProcAddress
https://bugs.webkit.org/show_bug.cgi?id=182490
Reviewed by Michael Catanzaro.
Check that the appropriate extensions are available before calling eglGetProcAddress, as even
getting a non null value from it, the functionality can be disabled at runtime.
* UIProcess/gtk/WaylandCompositor.cpp:
(WebKit::WaylandCompositor::initializeEGL):
2018-02-08 Frederic Wang <fwang@igalia.com>
Add scrolling node types to distinguish main frames and subframes.
https://bugs.webkit.org/show_bug.cgi?id=182533
Reviewed by Simon Fraser.
* Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp: Replace the case of
FrameScrollingNode with MainFrameScrollingNode and SubframeScrollingNode.
(WebKit::encodeNodeAndDescendants):
(WebKit::RemoteScrollingCoordinatorTransaction::decode):
(WebKit::dump):
* UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp: Ditto.
(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
* UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp: Ditto and pass the node type to the
constructor of the frame scrolling node.
(WebKit::RemoteScrollingTree::createScrollingTreeNode):
* UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: Replace the case of
FrameScrollingNode with MainFrameScrollingNode and SubframeScrollingNode.
(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):
* UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: In order to
determine whether the node is a main frame or subframe, use the node type instead of checking
whether the node as a parent.
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::updateChildNodesAfterScroll):
2018-02-05 Carlos Garcia Campos <cgarcia@igalia.com>
WebDriver: addCookie command should prepend a dot to domain if missing
https://bugs.webkit.org/show_bug.cgi?id=182328
<rdar://problem/37116398>
Reviewed by Michael Catanzaro.
RFC 2965: If an explicitly specified value does not start with a dot, the user agent supplies a leading dot.
Fixes: imported/w3c/webdriver/tests/cookies/add_cookie.py::test_add_domain_cookie
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::addSingleCookie):
2018-01-13 Darin Adler <darin@apple.com>
Event improvements
https://bugs.webkit.org/show_bug.cgi?id=179591
Reviewed by Chris Dumez.
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMWheelEvent.cpp:
(webkit_dom_wheel_event_init_wheel_event): Updated to call initWebKitWheelEvent.
* WebProcess/Plugins/PluginView.cpp: Removed include of ScriptValue.h.
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
(WebKit::WebEditorClient::executePendingEditorCommands):
Updated for name change from keyEvent to underlyingPlatformEvent.
(WebKit::WebEditorClient::handleInputMethodKeydown): Ditto.
* WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
(WebKit::WebEditorClient::handleKeyboardEvent): Ditto.
(WebKit::WebEditorClient::handleInputMethodKeydown): Ditto.
* WebProcess/WebPage/WebPage.cpp: Removed include of ScriptValue.h.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleEditingKeyboardEvent): Updated for name change from
keyEvent to underlyingPlatformEvent.
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::executeKeypressCommandsInternal): Ditto.
(WebKit::WebPage::handleEditingKeyboardEvent): Ditto.
2018-02-07 Antti Koivisto <antti@apple.com> and Youenn Fablet <youenn@apple.com>
REGRESSION(r227758): Webpage fails to load due to crash in com.apple.WebKit: WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse + 267
https://bugs.webkit.org/show_bug.cgi?id=182532
<rdar://problem/36414017>
Reviewed by Chris Dumez.
No test case, don't know how to make one. The repro involves multipart HTTP streaming and details are hazy.
We were calling a function that was WTFMoved away just a few lines above.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
2018-02-07 Tim Horton <timothy_horton@apple.com>
Evernote device management web view sometimes displays at the wrong scale
https://bugs.webkit.org/show_bug.cgi?id=182590
<rdar://problem/36633687>
Reviewed by Simon Fraser.
Evernote implements the WKWebView's scroll view's delegate method
viewForZoomingInScrollView: and returns nil. This results in
WKScrollView's zoomScale always returning 1, no matter what the
WKContentView's actual scale is. This will result in us never updating
the WKContentView's scale to 1. When loading a page that has a few
scale changes during load but ends up at scale 1, we get stuck at whatever
intermediate scale immediately preceded settling on 1.
Fix this by not forwarding viewForZoomingInScrollView: to the external
WKScrollView delegate; we are in charge of the contents of the scroll
view (including which view scrollView's zoomScale should track), and
overriding viewForZoomingInScrollView: is only ever going to lead to
a broken WebKit.
* UIProcess/ios/WKScrollView.mm:
(shouldForwardScrollViewDelegateMethodToExternalDelegate):
(-[WKScrollViewDelegateForwarder forwardInvocation:]):
(-[WKScrollViewDelegateForwarder forwardingTargetForSelector:]):
2018-02-07 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Delegate scrolling from the content view to input view controllers
https://bugs.webkit.org/show_bug.cgi?id=182534
<rdar://problem/37276625>
Reviewed by Tim Horton.
Override -_wheelChangedWithEvent: on the content view, and give extra zoomed input view controllers a chance to
handle the event.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _wheelChangedWithEvent:]):
2018-02-07 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Implement multiple and single select menus
https://bugs.webkit.org/show_bug.cgi?id=182525
<rdar://problem/35143016>
Reviewed by Tim Horton.
Add support for presenting picker views when focusing single or multiple select elements. See changes below for
additional detail.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startAssistingKeyboard]):
Move logic for presenting view controllers when focusing elements out of _startAssistingKeyboard, and into
_startAssistingNode:(...). This is because _startAssistingKeyboard is only invoked for certain types of focused
element types; importantly, this set excludes select elements. Putting the call to present the focused view
controller there also didn't make much since, considering that these new view controllers are not tied to
keyboards in any way.
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView _stopAssistingNode]):
Dismiss any select menu that is being presented.
(-[WKContentView presentSelectMenuViewController:]):
(-[WKContentView dismissSelectMenuViewController:]):
Introduce idempotent helpers for presenting and dismissing the select menu view controller.
(-[WKContentView presentViewControllerForAssistedNode:]):
(-[WKContentView selectMenu:didSelectItemAtIndex:]):
For single select menus. Called when the user selects a row.
(-[WKContentView didCancelSelectionInSelectMenu:]):
(-[WKContentView numberOfItemsInSelectMenu:]):
(-[WKContentView selectMenu:displayTextForItemAtIndex:]):
Indicates the text value to show at a given index.
(-[WKContentView selectMenu:didCheckItemAtIndex:checked:]):
For multiple select menus, invoked when an item is checked. The `checked` parameter indicates whether or not the
item is now checked.
(-[WKContentView selectMenuSupportsMultipleSelection:]):
Indicates whether this select menu is single-item-only, or allows multiple items to be selected (checked).
(-[WKContentView selectMenu:hasCheckedOptionAtIndex:]):
For multiple select menus. Determines whether an option at the given index is checked.
(-[WKContentView startingIndexForSelectMenu:]):
Determines the index to instantly scroll to when presenting the select menu.
* UIProcess/ios/forms/WKSelectMenuViewController.h: Added.
* UIProcess/ios/forms/WKSelectMenuViewController.mm: Added.
Add new harness files for WKSelectMenuViewController's header and implementation (see WebKitAdditions).
* WebKit.xcodeproj/project.pbxproj:
2018-02-07 Brent Fulgham <bfulgham@apple.com>
Improve NetworkResourceLoader logging to capture redirect cases
https://bugs.webkit.org/show_bug.cgi?id=182573
<rdar://problem/37316714>
Reviewed by Chris Dumez.
Add logging for cookie partitioning or blocking during redirects.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
2018-02-07 John Wilander <wilander@apple.com>
Restrict Referer to just the origin for third parties in private mode and third parties ITP blocks cookies for in regular mode
https://bugs.webkit.org/show_bug.cgi?id=182559
<rdar://problem/36990337>
Reviewed by Andy Estes.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::isThirdPartyRequest):
New convenience function. Checks whether the resource shares
partition with the first party.
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
Now strips the referrer to just the origin for:
1. All third party requests in private mode.
2. Third party requests to domains that ITP blocks cookies for.
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
Now strips the referrer in redirects to just the origin for:
1. All third party requests in private mode.
2. Third party requests to domains that ITP blocks cookies for.
2018-02-07 Daniel Bates <dabates@apple.com>
Log error when authentication challenge is blocked due to an insecure request
https://bugs.webkit.org/show_bug.cgi?id=182358
Reviewed by Andy Estes.
Have network process notify the web process when it blocks an authentication challenge.
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::completeAuthenticationChallenge):
* NetworkProcess/NetworkLoadClient.h:
(WebKit::NetworkLoadClient::didBlockAuthenticationChallenge):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didBlockAuthenticationChallenge):
* NetworkProcess/NetworkResourceLoader.h:
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didBlockAuthenticationChallenge):
* WebProcess/Network/WebResourceLoader.h:
* WebProcess/Network/WebResourceLoader.messages.in:
2018-02-07 Chris Dumez <cdumez@apple.com>
IndexedDB in service workers is using a memory backed store
https://bugs.webkit.org/show_bug.cgi?id=182574
<rdar://problem/37316205>
Reviewed by Youenn Fablet.
Make sure we pass a proper WebDatabaseProvider to the ServiceWorkerProcess via
PageConfiguration. Otherwise, we end up using the default EmptyDatabaseProvider
which uses an InProcessIDBServer and a memory-backed store for IndexedDB.
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::start):
* UIProcess/WebProcessPool.h:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection):
(WebKit::WebSWContextManagerConnection::installServiceWorker):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
2018-02-07 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] Typo in a translatable string
https://bugs.webkit.org/show_bug.cgi?id=182570
Unreviewed. Fix a typo.
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
(webkit_website_data_manager_class_init):
2018-02-06 Don Olmstead <don.olmstead@sony.com>
Remove WebCore/ForwardingHeaders directory
https://bugs.webkit.org/show_bug.cgi?id=182347
Reviewed by Keith Miller.
* Platform/mac/StringUtilities.mm:
* Shared/Cocoa/WebKit2InitializeCocoa.mm:
* Shared/WebKit2Initialize.cpp:
* Shared/linux/WebMemorySamplerLinux.cpp:
* Shared/mac/WebMemorySampler.mac.mm:
* UIProcess/WebProcessPool.cpp:
* WebProcess/InjectedBundle/API/APIInjectedBundlePageUIClient.h:
* WebProcess/InjectedBundle/API/glib/WebKitConsoleMessagePrivate.h:
* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h:
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
* WebProcess/Plugins/PluginProcessConnection.cpp:
* WebProcess/Plugins/PluginView.cpp:
* WebProcess/WebPage/WebInspector.h:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/cocoa/WebProcessCocoa.mm:
2018-02-06 Chris Dumez <cdumez@apple.com>
Layout Test imported/w3c/web-platform-tests/service-workers/service-worker/fetch-waits-for-activate.https.html is a flaky failure on macOS and iOS
https://bugs.webkit.org/show_bug.cgi?id=181392
<rdar://problem/36384136>
Reviewed by Youenn Fablet.
All tasks from the StorageProcess to the WebContent process to update registrations
and service workers state are posted to the runloop. However, the fetch callbacks
do not do so. This means that fetch results might come in out of order with regards
to the registration / service worker state updates. The test was flaky because an
intercepted load would sometimes finish before the task to update the service worker
state to "activated" was processed by the runloop. We address the issue by having
the ServiceWorkerClientFetch callbacks schedule tasks to the runloop too.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
(WebKit::ServiceWorkerClientFetch::didReceiveData):
(WebKit::ServiceWorkerClientFetch::didFinish):
(WebKit::ServiceWorkerClientFetch::didFail):
(WebKit::ServiceWorkerClientFetch::didNotHandle):
2018-02-06 Brent Fulgham <bfulgham@apple.com>
[macOS] Correct sandbox violation triggered by Chase.com
https://bugs.webkit.org/show_bug.cgi?id=182519
<rdar://problem/37121757>
Reviewed by Eric Carlson.
Hitting a sandbox violation when attempting to check status of IOAV*En/Decode support.
* WebProcess/com.apple.WebProcess.sb.in:
2018-02-06 Jeff Miller <jeffm@apple.com>
Add WKNavigationDelegate SPI to tell the client when an insecure plug-in is blocked
https://bugs.webkit.org/show_bug.cgi?id=182540
Reviewed by Alex Christensen.
* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::didBlockInsecurePluginVersion):
Changed to take a dictionary reference.
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::didBlockInsecurePluginVersion):
Added.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
Changed didBlockInsecurePluginVersion() to take a dictionary reference.
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
Added -_webView:didBlockInsecurePluginVersionWithInfo:.
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
Initialize webViewDidBlockInsecurePluginVersionWithInfo.
(WebKit::NavigationState::NavigationClient::didBlockInsecurePluginVersion):
Added.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didBlockInsecurePluginVersion):
Remove check for PLATFORM(COCOA) (we don't check for this in didFailToInitializePlugin() where we
also use createPluginInformationDictionary()) and ENABLE(NETSCAPE_PLUGIN_API) (we're already inside
an #if ENABLE(NETSCAPE_PLUGIN_API block) and use auto for pluginInformation. Attempt to use the
navigation client before the loader client.
2018-02-06 Youenn Fablet <youenn@apple.com>
HasServiceWorkerRegistration bit should be sent when creating a new page
https://bugs.webkit.org/show_bug.cgi?id=182410
Reviewed by Chris Dumez.
Move the bit computation at page creation time.
This allows computing the bit based on the web site data store and not only on the pool configuration.
WebPage uses that bit to activate service worker registration matching for the whole process.
In case there is a service worker process proxy created, the bit is set to true by default.
Bit is computed by checking for database file presence.
This information is cached in a map for efficiency reasons and cleared when a service worker process proxy is created.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::initializeWebPage):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::mayHaveRegisteredServiceWorkers):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_cpuLimit):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
2018-02-06 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, fix format specifiers added in r228116
https://bugs.webkit.org/show_bug.cgi?id=182456
<rdar://problem/37181006>
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::open):
(WebKit::CacheStorageEngineConnection::remove):
(WebKit::CacheStorageEngineConnection::caches):
(WebKit::CacheStorageEngineConnection::retrieveRecords):
(WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
(WebKit::CacheStorageEngineConnection::putRecords):
(WebKit::CacheStorageEngineConnection::reference):
(WebKit::CacheStorageEngineConnection::dereference):
2018-02-05 Chris Dumez <cdumez@apple.com>
Avoid unnecessarily constructing RunLoops for GC AutomaticThreads in Connection::sendMessage() after r228001
https://bugs.webkit.org/show_bug.cgi?id=182494
<rdar://problem/37147632>
Reviewed by Ryosuke Niwa.
Somebody fixed a GC crash in r228001 by allowing RunLoop::current() to be called from a
GC thread. However, this is still unnecessarily inefficient. Calling RunLoop::current()
will construct RunLoops for background GC threads (WTF::AutomaticThreads). This patches
updates the IPC code to call isMainThread() instead of RunLoop::isMain() in
Connection::sendMessage(). This should mean the same thing since this code runs in
WebKit2 and should be more efficient as it ends up simply calling pthread_main_np(),
without constructing a RunLoop.
* Platform/IPC/Connection.cpp:
(IPC::Connection::sendMessage):
2018-02-05 Ryosuke Niwa <rniwa@webkit.org>
Release assertion in inlineVideoFrame
https://bugs.webkit.org/show_bug.cgi?id=182513
<rdar://problem/37159363>
Reviewed by Zalan Bujtas.
Fixed the bug. Don't try to update the layout when there is no live render tree or active DOM objects
had been stopped: i.e. during a document destruction.
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::inlineVideoFrame):
2018-02-05 Yousuke Kimoto <yousuke.kimoto@sony.com>
[WinCairo] Refine WebKitLegacy and WebKit build for wincairo
https://bugs.webkit.org/show_bug.cgi?id=182478
Reviewed by Alex Christensen.
Fixed a typo of forwarding header path for InjectedBundle and copying header
method, which should use FLATTENED.
* PlatformWin.cmake: Fix a typo of a forwarding header path for InjectedBundle and use FLATTENED.
2018-02-05 Youenn Fablet <youenn@apple.com>
WebsiteDataStore::resolveDirectoriesIfNecessary() should not overwrite its resolved serviceWorkerRegistrationDirectory if already set
https://bugs.webkit.org/show_bug.cgi?id=182514
Reviewed by Chris Dumez.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
2018-02-05 Brent Fulgham <bfulgham@apple.com>
[iOS] Storage process is using the wrong sandbox profile filename
https://bugs.webkit.org/show_bug.cgi?id=182500
<rdar://problem/37232614>
Reviewed by David Kilzer.
The iOS entitlements file was still referencing the old Databases sandbox profile, even though the
process has been renamed 'Storage'.
* Configurations/Databases-iOS.entitlements:
2018-02-05 Ryosuke Niwa <rniwa@webkit.org>
Add DoNotProcessIncomingMessagesWhenWaitingForSyncReply to GetPlugins and RootViewToScreen
https://bugs.webkit.org/show_bug.cgi?id=182458
Reviewed by Chris Dumez.
Added DoNotProcessIncomingMessagesWhenWaitingForSyncReply to GetPlugins and RootViewToScreen
which are found to get sent from WebContent process while ScriptDisallowedScope is present
by a work-in-progress patch on webkit.org/b/182449.
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::populatePluginCache):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::rootViewToScreen):
2018-02-05 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r227964 and r228087.
https://bugs.webkit.org/show_bug.cgi?id=182508
These introduced an API test failure with
URLTest.HostIsIPAddress alongside commit r228086 (Requested by
mlewis13 on #webkit).
Reverted changesets:
"[SOUP] Ensure domain is valid when converting a WebCore
Cookie to Soup"
https://bugs.webkit.org/show_bug.cgi?id=182328
https://trac.webkit.org/changeset/227964
"WebDriver: addCookie command should prepend a dot to domain
if missing"
https://bugs.webkit.org/show_bug.cgi?id=182328
https://trac.webkit.org/changeset/228087
2018-02-05 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Implement number pad UI when editing `tel` and `number` inputs
https://bugs.webkit.org/show_bug.cgi?id=182472
<rdar://problem/35143057>
Reviewed by Tim Horton.
Allows the user to edit numeric input types using a number pad. See below comments for more detail.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startAssistingKeyboard]):
(-[WKContentView _stopAssistingNode]):
Dismiss the number pad, if it is present.
(-[WKContentView dismissNumberPadViewController:]):
(-[WKContentView presentNumberPadViewController:]):
Add new helpers for showing and hiding the number pad view controller.
(-[WKContentView presentViewControllerForAssistedNode:]):
(-[WKContentView textInputController:didRequestDismissalWithAction:]):
Dismiss the number pad, if it is present.
(-[WKContentView focusedFormControlControllerDidBeginEditing:]):
(-[WKContentView shouldPresentTextInputViewController:]): Deleted.
Remove -shouldPresentTextInputViewController and replace it with -presentViewControllerForAssistedNode:, which
presents the appropriate view controller given "assisted" node information.
* UIProcess/ios/forms/WKNumberPadView.h: Added.
* UIProcess/ios/forms/WKNumberPadView.mm: Added.
* UIProcess/ios/forms/WKNumberPadViewController.h: Added.
* UIProcess/ios/forms/WKNumberPadViewController.mm: Added.
Add "WebKitAdditions harness" files for the new number pad view and view controller classes.
* WebKit.xcodeproj/project.pbxproj:
2018-02-05 Youenn Fablet <youenn@apple.com>
Add logging to CacheStorageEngineConnection
https://bugs.webkit.org/show_bug.cgi?id=182456
Reviewed by Chris Dumez.
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::open):
(WebKit::CacheStorageEngineConnection::remove):
(WebKit::CacheStorageEngineConnection::caches):
(WebKit::CacheStorageEngineConnection::retrieveRecords):
(WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
(WebKit::CacheStorageEngineConnection::putRecords):
(WebKit::CacheStorageEngineConnection::reference):
(WebKit::CacheStorageEngineConnection::dereference):
* Platform/Logging.h:
2018-02-05 Daniel Bates <dabates@apple.com>
REGRESSION (r222795): Nike app "Refused to set unsafe header" when adding and viewing cart
https://bugs.webkit.org/show_bug.cgi?id=182491
<rdar://problem/36533447>
Reviewed by Brent Fulgham.
Exempt Nike from the XHR header restrictions in r222795.
Following r222795 only Dashboard widgets are allowed to set arbitrary XHR headers.
However Nike also depends on such functionality.
* UIProcess/API/Cocoa/WKWebView.mm:
(shouldAllowSettingAnyXHRHeaderFromFileURLs):
2018-02-02 Brent Fulgham <bfulgham@apple.com>
Improve NetworkResourceLoader logging so it can be used for 'setCookiesFromDOM'
https://bugs.webkit.org/show_bug.cgi?id=182455
<rdar://problem/36626601>
Reviewed by Chris Dumez.
Refactor "logCookieInformation" so that it can be used for resource loads and DOM cookie
manipulation. Place the generally useful logic in a static method that can be invoked
from other places in the NetworkProcess.
Call the new refactored method from NetworkConnectionToWebProcess::setCookiesFromDOM so
we can perform logging there as well.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM): Call the new logging method
(when enabled).
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::shouldLogCookieInformation): Changed to static method.
(WebKit::escapeForJSON): Made a static function so it could be shared between multiple
methods.
(WebKit::NetworkResourceLoader::logCookieInformation const): Refactor into two methods.
(WebKit::NetworkResourceLoader::logCookieInformation): Ditto.
(WebKit::NetworkResourceLoader::shouldLogCookieInformation const): Deleted.
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Switch to user-enabled release logging
to track partitioning and blocking behavior.
2018-02-05 John Wilander <wilander@apple.com>
Storage Access API: Add testRunner.getAllStorageAccessEntries() to make testing easier and more explicit
https://bugs.webkit.org/show_bug.cgi?id=181601
<rdar://problem/36475837>
Reviewed by Alex Christensen.
http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access.html
was found to be flaky. With the testRunner.hasStorageAccessEntry() getter
it's possible to check access even if a frame doesn't respond timely to
postMessage after detach and attach.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::getAllStorageAccessEntries):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _getAllStorageAccessEntries:]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::getAllStorageAccessEntries):
(WebKit::NetworkProcessProxy::allStorageAccessEntriesResult):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::getAllStorageAccessEntries):
* UIProcess/WebsiteData/WebsiteDataStore.h:
2018-02-05 Daniel Bates <dabates@apple.com>
Disallow evaluating JavaScript from NPP_Destroy() in WebKit
https://bugs.webkit.org/show_bug.cgi?id=181889
<rdar://problem/36674701>
Reviewed by Brent Fulgham.
Make the behavior of WebKit match the behavior of WebKitLegacy on Mac.
* Shared/Plugins/NPObjectMessageReceiver.cpp:
(WebKit::NPObjectMessageReceiver::hasMethod):
(WebKit::NPObjectMessageReceiver::invoke):
(WebKit::NPObjectMessageReceiver::invokeDefault):
(WebKit::NPObjectMessageReceiver::hasProperty):
(WebKit::NPObjectMessageReceiver::getProperty):
(WebKit::NPObjectMessageReceiver::setProperty):
(WebKit::NPObjectMessageReceiver::removeProperty):
(WebKit::NPObjectMessageReceiver::enumerate):
(WebKit::NPObjectMessageReceiver::construct):
Bail out if the plugin is executing NPP_Destroy().
* WebProcess/Plugins/Plugin.cpp:
(WebKit::Plugin::destroyPlugin):
* WebProcess/Plugins/Plugin.h:
(WebKit::Plugin::isBeingDestroyed const):
Move bookkeeping of whether the plugin is being destroyed from PluginView
to here. This makes it straightforward for NPObjectMessageReceiver to query
this information.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::~PluginView):
(WebKit::PluginView::destroyPluginAndReset):
(WebKit::PluginView::recreateAndInitialize):
(WebKit::PluginView::protectPluginFromDestruction):
(WebKit::PluginView::unprotectPluginFromDestruction):
Move bookkeeping of whether the plugin is being destroyed from here
to Plugin.
* WebProcess/Plugins/PluginView.h:
(WebKit::PluginView::isBeingDestroyed const): Turn around and ask the plugin if it
is being destroyed, if we have one.
2018-02-05 Carlos Garcia Campos <cgarcia@igalia.com>
WebDriver: addCookie command should prepend a dot to domain if missing
https://bugs.webkit.org/show_bug.cgi?id=182328
<rdar://problem/37116398>
Reviewed by Michael Catanzaro.
RFC 2965: If an explicitly specified value does not start with a dot, the user agent supplies a leading dot.
Fixes: imported/w3c/webdriver/tests/cookies/add_cookie.py::test_add_domain_cookie
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::addSingleCookie):
2018-02-03 Tim Horton <timothy_horton@apple.com>
UI process sometimes crashes under -[WKContentView _lookupForWebView:]
https://bugs.webkit.org/show_bug.cgi?id=182460
<rdar://problem/33260602>
Reviewed by Wenson Hsieh.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _lookupForWebView:]):
If you have a range selection, but no rects for the selection, retrieving
the 0th element of selectionRects will crash the UI process. To fix, in
this case, use the rect for the starting caret instead.
It doesn't seem like the presentationRect is actually currently used for
the Lookup service, so the only impact is that we shouldn't crash anymore.
2018-02-02 Michael Catanzaro <mcatanzaro@igalia.com>
Remove remaining dead !USE(NETWORK_SESSION) code
https://bugs.webkit.org/show_bug.cgi?id=182451
Reviewed by Alex Christensen.
DownloadCurl.cpp and AuthenticationManagerSoup.cpp have been dead code since NETWORK_SESSION
became mandatory.
* NetworkProcess/Downloads/curl/DownloadCurl.cpp: Removed.
* PlatformGTK.cmake:
* PlatformWPE.cmake:
* PlatformWin.cmake:
* Shared/Authentication/soup/AuthenticationManagerSoup.cpp: Removed.
2018-02-02 Youenn Fablet <youenn@apple.com>
CacheStorage should check for origin file presence when computing the origin of a folder
https://bugs.webkit.org/show_bug.cgi?id=182454
Reviewed by Chris Dumez.
In case caches is opened for an origin but no cache is added, we do not have a caches name file but we do have an origin filename.
We should be checking the origin filename anyway since we will be reading it afterwards.
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
2018-02-02 Youenn Fablet <youenn@apple.com>
Configure serviceWorkerRegistrationDirectory on the web site data store and move it to a Caches subfolder as a default
https://bugs.webkit.org/show_bug.cgi?id=182403
<rdar://problem/36673358>
Reviewed by Alex Christensen.
* UIProcess/WebProcessPool.cpp:
(WebKit::legacyWebsiteDataStoreConfiguration): Setting serviceWorkerRegistrationDirectory for legacy stores.
2018-02-02 Youenn Fablet <youenn@apple.com>
Clearing all service worker registrations should wait for importing service worker registration to finish
https://bugs.webkit.org/show_bug.cgi?id=182407
Reviewed by Chris Dumez.
Updating API to take a completion handler.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
2018-02-02 Fujii Hironori <Hironori.Fujii@sony.com>
[Win] MSVC doesn't seem to like "friend class NeverDestroyed<Foo>"
https://bugs.webkit.org/show_bug.cgi?id=182081
Reviewed by Yusuke Suzuki.
The template friend class, which belongs to a different namespace,
can't access private member if its friend declaration is specified
without the namespace and with class keyword.
Replaced "friend class NeverDestroyed<Foo>" with "friend NeverDestroyed<Foo>".
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/capture/NetworkCaptureManager.h:
* PluginProcess/PluginProcess.h:
* Shared/CallbackID.h:
* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
* StorageProcess/StorageProcess.h:
* UIProcess/Plugins/PluginProcessManager.h:
* UIProcess/Plugins/gtk/PluginInfoCache.h:
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPasteboardProxy.h:
* UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
* UIProcess/gtk/HardwareAccelerationManager.h:
* UIProcess/gtk/WaylandCompositor.h:
* UIProcess/linux/MemoryPressureMonitor.h:
* UIProcess/mac/ServicesController.h:
* WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.h:
* WebProcess/Plugins/WebPluginInfoProvider.h:
* WebProcess/WebCoreSupport/WebPasteboardOverrides.h:
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
2018-02-02 Youenn Fablet <youenn@apple.com>
Configure serviceWorkerRegistrationDirectory on the web site data store and move it to a Caches subfolder as a default
https://bugs.webkit.org/show_bug.cgi?id=182403
Reviewed by Alex Christensen.
WebsiteDataStore is the place to set configuration information such as service worker registration path.
This patch updates WebKit code accordingly.
By default, the service worker registration path is in a Caches subfolder, similarly to cache API path.
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::createWithLegacyOptions):
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
(API::ProcessPoolConfiguration::ProcessPoolConfiguration):
(API::ProcessPoolConfiguration::copy):
* UIProcess/API/APIProcessPoolConfiguration.h:
* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCopyServiceWorkerDatabaseDirectory): Deleted.
(WKContextConfigurationSetServiceWorkerDatabaseDirectory): Deleted.
* UIProcess/API/C/WKContextConfigurationRef.h:
* UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
(API::WebsiteDataStore::defaultServiceWorkerRegistrationDirectory):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _serviceWorkerRegistrationDirectory]):
(-[WKWebsiteDataStore _setServiceWorkerRegistrationDirectory:]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
(WebKit::WebProcessPool::initializeNewWebProcess):
* UIProcess/WebsiteData/WebsiteDataStore.h:
(WebKit::WebsiteDataStore::serviceWorkerRegistrationDirectory const):
(WebKit::WebsiteDataStore::setServiceWorkerRegistrationDirectory):
* UIProcess/gtk/WebProcessPoolGtk.cpp:
* UIProcess/gtk/WebProcessPoolWPE.cpp:
2018-02-02 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra Zoom Mode] Implement support for indirect mainframe scrolling
https://bugs.webkit.org/show_bug.cgi?id=182421
<rdar://problem/35142694>
Reviewed by Tim Horton.
Makes a few small adjustments to WKScrollView to improve mainframe scrolling, and disable the pinch gesture for
zooming. See below for more details.
* UIProcess/API/Cocoa/WKWebView.mm:
Remove a now-unneeded WebKitAdditions import.
* UIProcess/ios/WKScrollView.mm:
(-[WKScrollView initWithFrame:]):
Add imports for -Before and -After versions of WKScrollViewAdditions.
(-[WKScrollView addGestureRecognizer:]):
Override -addGestureRecognizer here to prevent touches on the pinch gesture recognizer from being recognized.
I chose this approach instead of just disabling the gesture in -initWithFrame: because (1) the pinch gesture
recognizer is lazily created when setting minimum or maximum zoom scales, rather than immediately in
-initWithFrame:, and (2) even if we set the -enabled to NO, UIKit later resets it to YES in other codepaths.
2018-02-01 Tim Horton <timothy_horton@apple.com>
WebKit fails to build (_startAssistingNode has conflicting parameters)
https://bugs.webkit.org/show_bug.cgi?id=182417
<rdar://problem/36965318>
Reviewed by Dan Bernstein.
* UIProcess/ios/WKContentViewInteraction.h:
Use Big BOOL like in the implementation.
2018-02-01 Brent Fulgham <bfulgham@apple.com>
Improve NetworkResourceLogger to report blocked (versus non-partitioned) cookies
https://bugs.webkit.org/show_bug.cgi?id=182408
<rdar://problem/36918028>
Reviewed by Chris Dumez.
Update the logging method to report blocked origins, rather than logging them as non-partitioned
loads that have no cookies or other content.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::logCookieInformation const):
2018-02-01 David Kilzer <ddkilzer@apple.com>
REGRESSION (r222824): UI process crashes in WebKit::WebBackForwardList::backItem const
<https://webkit.org/b/182409>
<rdar://problem/35495094>
Reviewed by Alex Christensen.
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::goToItem): Fix typo so the for loop
actually checks each value in m_entries.
2018-02-01 Youenn Fablet <youenn@apple.com>
Delay service worker process creation until actually needed by SWServer
https://bugs.webkit.org/show_bug.cgi?id=182301
Reviewed by Chris Dumez.
Do not create a service worker process at creation of the first SWServerConnection.
Wait for a WebProcess message that needs it:
- postMessage message
- fetchEvent message
- job scheduling.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorker):
(WebKit::WebSWServerConnection::scheduleJobInServer):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::establishSWServerConnection):
2018-02-01 Wenson Hsieh <wenson_hsieh@apple.com>
[Extra zoom mode] Implement basic support for interacting with text form controls
https://bugs.webkit.org/show_bug.cgi?id=182401
<rdar://problem/35143035>
Reviewed by Tim Horton.
Add UI support for interacting with and editing text form controls when extra zoom mode is enabled. See below
for more details.
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration encodeWithCoder:]):
(-[WKWebViewConfiguration initWithCoder:]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _textInteractionGesturesEnabled]):
(-[WKWebViewConfiguration _setTextInteractionGesturesEnabled:]):
(-[WKWebViewConfiguration _longPressActionsEnabled]):
(-[WKWebViewConfiguration _setLongPressActionsEnabled:]):
Introduce two new web view configuration flags: `textInteractionGesturesEnabled` and `longPressActionsEnabled`.
The former determines whether text interaction gestures (i.e. text selection, moving the caret, showing UI for
IME, etc.) are enabled. The latter determines whether or not long press actions (i.e. touch callout, share
sheet, etc.) are enabled. These are disabled by default only in extra zoom mode.
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setTextAsync):
Add a way to set the text value of a currently edited text form control. This will either set the text value of
an input, a. la. autofill, or overwrite the contents of a contenteditable area by selecting everything and
inserting the given text.
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::focusNextAssistedNode):
Add a default argument for the completion callback.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView _actionForLongPressFromPositionInformation:]):
(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView pointIsNearMarkedText:]):
(-[WKContentView textInteractionGesture:shouldBeginAtPoint:]):
(-[WKContentView insertionPointColor]):
Respect the web view configuration flags above by bailing early from text interaction and long press action
sheet methods.
(-[WKContentView _startAssistingKeyboard]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
Add a flag indicating whether we are in the process of changing focus from one node to another. We use this to
decide whether or not we want to present the text input view controller right away, or just reload the focused
form control overlay. When we stop "assisting" a node, we also keep the focused form control overlay up if we're
only changing focus to another form control.
(-[WKContentView _stopAssistingNode]):
(-[WKContentView presentFocusedFormControlViewController:]):
(-[WKContentView dismissFocusedFormControlViewController:]):
(-[WKContentView shouldPresentTextInputViewController:]):
(-[WKContentView presentTextInputViewController:]):
(-[WKContentView dismissTextInputViewController:]):
Introduce helpers for managing presentation of the focused form control overlay and text input view controller.
All -present and -dismiss helpers here are idempotent. These view controllers are presented from the content
view's view controller for fullscreen presentation.
(-[WKContentView textInputController:didCommitText:]):
(-[WKContentView textInputController:didRequestDismissalWithAction:]):
(-[WKContentView focusedFormControlControllerDidSubmit:]):
(-[WKContentView focusedFormControlControllerDidCancel:]):
(-[WKContentView focusedFormControlControllerDidBeginEditing:]):
(-[WKContentView highlightedRectForFocusedFormControlController:inCoordinateSpace:]):
(-[WKContentView actionNameForFocusedFormControlController:]):
(-[WKContentView focusedFormControlControllerDidRequestNextNode:]):
(-[WKContentView focusedFormControlControllerDidRequestPreviousNode:]):
(-[WKContentView hasNextNodeForFocusedFormControlController:]):
(-[WKContentView hasPreviousNodeForFocusedFormControlController:]):
Implement delegate methods for the focused form control and text input view controllers. This mainly involves
straightforward plumbing of pieces of AssistedNodeInformation on the content view.
(-[WKContentView pointIsInAssistedNode:]): Deleted.
Remove a method that was still implemented only for binary compatibility with iOS 10.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setTextAsync):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2018-02-01 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Shift + mouse scroll should scroll horizontally
https://bugs.webkit.org/show_bug.cgi?id=181629
Reviewed by Michael Catanzaro.
Swap scroll direction when Shift is pressed for consistency with GtkScrolledWindow.
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseScrollEvent):
2018-02-01 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r227893): fast/events/touch/touch-stale-node-crash.html and other tests crash
https://bugs.webkit.org/show_bug.cgi?id=182350
Reviewed by Carlos Alberto Lopez Perez.
Ensure events synthesized from touch gestures have a valid window, screen and device.
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
* UIProcess/gtk/GestureController.h: Add virtual destructor to GestureControllerclient.
2018-01-31 Simon Fraser <simon.fraser@apple.com>
Use different debug red colors for different contexts
https://bugs.webkit.org/show_bug.cgi?id=182362
Reviewed by Tim Horton.
Pure red is used elsehwere in the system as a debug color indicator, so use different
shades of red for WebKit in the two places where we paint a reddish wash in debug builds,
so they are identifiable.
* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::drawInContext):
2018-01-31 Don Olmstead <don.olmstead@sony.com>
[CMake] Make JavaScriptCore headers copies
https://bugs.webkit.org/show_bug.cgi?id=182303
Reviewed by Alex Christensen.
* CMakeLists.txt:
* Scripts/generate-forwarding-headers.pl:
2018-01-31 Alex Christensen <achristensen@webkit.org>
Unreviewed, rolling out r227942.
r227875 should not have been rolled out.
Reverted changeset:
"Unreviewed, rolling out r227875."
https://bugs.webkit.org/show_bug.cgi?id=182357
https://trac.webkit.org/changeset/227942
2018-01-31 Michael Catanzaro <mcatanzaro@igalia.com>
Unreviewed, rolling out r227875.
https://bugs.webkit.org/show_bug.cgi?id=182357
Missing cross-platform TestController implementation
Reverted changeset:
"Add callbacks to testRunner.statisticsSetShouldPartitionCookiesForHost() and testRunner.statisticsUpdateCookiePartitioning()"
https://bugs.webkit.org/show_bug.cgi?id=181958
https://trac.webkit.org/changeset/227875
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsUpdateCookiePartitioning):
(WKWebsiteDataStoreSetStatisticsShouldPartitionCookiesForHost):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning]):
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:]):
(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning:]): Deleted.
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:completionHandler:]): Deleted.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::logNonRecentUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdate):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearPartitioningStateForDomains):
(WebKit::WebResourceLoadStatisticsStore::mergeWithDataFromDecoder):
(WebKit::WebResourceLoadStatisticsStore::clearInMemory):
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
(WebKit::WebResourceLoadStatisticsStore::clearPartitioningStateForDomains):
* UIProcess/WebResourceLoadStatisticsStore.h:
2018-01-31 Brent Fulgham <bfulgham@apple.com>
Follow-up to r227939.
https://bugs.webkit.org/show_bug.cgi?id=182354
<rdar://problem/37046844>
Make sure the correct sandbox is used on iOS as well.
* StorageProcess/ios/StorageProcessIOS.mm:
(WebKit::StorageProcess::initializeSandbox):
2018-01-31 Brent Fulgham <bfulgham@apple.com>
REGRESSION(r220094): com.apple.WebKit.Storage lost its sandbox
https://bugs.webkit.org/show_bug.cgi?id=182354
<rdar://problem/37046844>
Reviewed by Ryosuke Niwa.
The Database process was renamed to Storage, but it's sandbox was not updated.
* Configurations/WebKit.xcconfig: Update for sandbox rename.
* DerivedSources.make: Ditto.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb: Removed.
* Resources/SandboxProfiles/ios/com.apple.WebKit.Storage.sb: Copied from Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb.
* StorageProcess/mac/com.apple.WebKit.Databases.sb.in: Removed.
* StorageProcess/mac/com.apple.WebKit.Storage.sb.in: Copied from StorageProcess/mac/com.apple.WebKit.Databases.sb.in.
* WebKit.xcodeproj/project.pbxproj: Update for sandbox rename.
2018-01-31 Michael Catanzaro <mcatanzaro@igalia.com>
REGRESSION(r227223): http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html, http/tests/resourceLoadStatistics/grandfathering.html timing out on GTK, WPE
https://bugs.webkit.org/show_bug.cgi?id=182222
Reviewed by Alex Christensen.
Add callbacks to notify when resource load statistics deletion is complete.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
2018-01-31 Tim Horton <timothy_horton@apple.com>
Occasional null deref under WebPageProxy::updateBackingStoreDiscardableState()
https://bugs.webkit.org/show_bug.cgi?id=182349
<rdar://problem/27822258>
Reviewed by Simon Fraser.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateBackingStoreDiscardableState):
m_drawingArea can be null during process launch and relaunch.
Cocoa ports don't use the result of setBackingStoreIsDiscardable(),
but they do run this code to keep it up to date.
2018-01-31 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] Move gir and typelib generation into ENABLE_INTROSPECTION conditional
https://bugs.webkit.org/show_bug.cgi?id=182308
Reviewed by Carlos Garcia Campos.
* PlatformGTK.cmake:
2018-01-31 Youenn Fablet <youenn@apple.com>
Remove StorageToWebProcessConnection::removeSWServerConnection
https://bugs.webkit.org/show_bug.cgi?id=182305
Reviewed by Chris Dumez.
* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::removeSWServerConnection): Deleted.
* StorageProcess/StorageToWebProcessConnection.h:
* StorageProcess/StorageToWebProcessConnection.messages.in:
2018-01-31 Carlos Garcia Campos <cgarcia@igalia.com>
REGRESSION(r227544): [GTK] contextMenuEvent is NULL on CONTEXT_MENU call
https://bugs.webkit.org/show_bug.cgi?id=182224
Reviewed by Michael Catanzaro.
Move the gestures handling to WebKitWebViewBase. This patch adds GestureControllerClient class, created and
implemented by WebKitWebViewBase and used by GestureController instead of the WebPageProxy. This way we ensure
events are handled consistently.
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::doneWithTouchEvent): Cast the GdkEvent since GestureController no longer works wirth
const GdkEvents.
(WebKit::PageClientImpl::zoom): Use webkit_web_view_set_zoom_level() in case of WebKitWebView or
WebPageProxy::setPageZoomFactor() otherwise.
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(ClickCounter::currentClickCountForGdkButtonEvent): Receive a GdkEvent to avoid casts.
(webkitWebViewBaseHandleMouseEvent): Helper function to handle mouse events.
(webkitWebViewBaseButtonPressEvent): Use webkitWebViewBaseHandleMouseEvent.
(webkitWebViewBaseButtonReleaseEvent): Ditto.
(webkitWebViewBaseHandleWheelEvent): Helper function to handle wheel events.
(webkitWebViewBaseScrollEvent): Use webkitWebViewBaseHandleWheelEvent.
(webkitWebViewBaseMotionNotifyEvent): Use webkitWebViewBaseHandleMouseEvent.
(webkitWebViewBaseCrossingNotifyEvent): Ditto.
(webkitWebViewBaseGestureController): Pass the widget and client to GestureController.
* UIProcess/gtk/GestureController.cpp:
(WebKit::GestureController::GestureController): Receives a widget and client now.
(WebKit::GestureController::handleEvent): Remove the const.
(WebKit::GestureController::Gesture::Gesture): Initialize client.
(WebKit::GestureController::Gesture::handleEvent): Remove the const.
(WebKit::GestureController::DragGesture::startDrag): Use the client instead of WebPageProxy.
(WebKit::GestureController::DragGesture::handleDrag): Ditto.
(WebKit::GestureController::DragGesture::handleTap): Ditto.
(WebKit::GestureController::DragGesture::begin): Ignore the const returned by gtk_gesture_get_last_event().
(WebKit::GestureController::DragGesture::update): Ditto.
(WebKit::GestureController::DragGesture::end): Ditto.
(WebKit::GestureController::DragGesture::DragGesture): Receives a widget and client now.
(WebKit::GestureController::SwipeGesture::startMomentumScroll): Use the client instead of WebPageProxy.
(WebKit::GestureController::SwipeGesture::swipe): Ignore the const returned by gtk_gesture_get_last_event().
(WebKit::GestureController::SwipeGesture::SwipeGesture): Receives a widget and client now.
(WebKit::GestureController::ZoomGesture::begin): Start the zoom.
(WebKit::GestureController::ZoomGesture::startZoom): Use the client instead of WebPageProxy.
(WebKit::GestureController::ZoomGesture::handleZoom): Ditto.
(WebKit::GestureController::ZoomGesture::ZoomGesture): Receives a widget and client now.
(WebKit::GestureController::LongPressGesture::longPressed): Use the client instead of WebKitWebView.
(WebKit::GestureController::LongPressGesture::pressed): Ignore the const returned by gtk_gesture_get_last_event().
(WebKit::GestureController::LongPressGesture::LongPressGesture): Receives a widget and client now.
(WebKit::GestureController::Gesture::simulateMouseClick): Deleted.
(WebKit::createScrollEvent): Deleted.
* UIProcess/gtk/GestureController.h:
2018-01-31 Carlos Garcia Campos <cgarcia@igalia.com>
Web Automation: cookies returned by automation should have expiry time in seconds
https://bugs.webkit.org/show_bug.cgi?id=182293
Reviewed by Brian Burg.
When creating a WebCore::Cookie from a WebDriver object we convert the given expiry time to milliseconds, but
when creating a WebDriver object from a WebCore::Cookie we are keeping the milliseconds. We should convert to
seconds for consistency, so that the WebDriver always handles seconds.
Fixes: imported/w3c/webdriver/tests/cookies/get_named_cookie.py::test_get_named_cookie
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::buildObjectForCookie): Convert expiry to seconds.
2018-01-31 Ryosuke Niwa <rniwa@webkit.org>
Unreviewed iOS build fix.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
2018-01-30 John Wilander <wilander@apple.com>
Add callbacks to testRunner.statisticsSetShouldPartitionCookiesForHost() and testRunner.statisticsUpdateCookiePartitioning()
https://bugs.webkit.org/show_bug.cgi?id=181958
https://bugs.webkit.org/show_bug.cgi?id=182072
<rdar://problem/36801804>
<rdar://problem/36845795>
Reviewed by Brent Fulgham.
Because of the asynchronous nature of XPC and cookies,
we need callbacks in these TestRunner functions so that
the layout tests can wait for state changes to finish
before checking test conditions.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsUpdateCookiePartitioning):
(WKWebsiteDataStoreSetStatisticsShouldPartitionCookiesForHost):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning]):
(-[WKWebsiteDataStore _resourceLoadStatisticsUpdateCookiePartitioning:]):
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:]):
(-[WKWebsiteDataStore _resourceLoadStatisticsSetShouldPartitionCookies:forHost:completionHandler:]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::logNonRecentUserInteraction):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdate):
(WebKit::WebResourceLoadStatisticsStore::scheduleCookiePartitioningUpdateForDomains):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearPartitioningStateForDomains):
(WebKit::WebResourceLoadStatisticsStore::mergeWithDataFromDecoder):
(WebKit::WebResourceLoadStatisticsStore::clearInMemory):
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioningForDomains):
(WebKit::WebResourceLoadStatisticsStore::clearPartitioningStateForDomains):
* UIProcess/WebResourceLoadStatisticsStore.h:
2018-01-30 Ryosuke Niwa <rniwa@webkit.org>
REGRESSION(r227550): Resource timing API is disabled on macOS
https://bugs.webkit.org/show_bug.cgi?id=182318
Reviewed by Chris Dumez.
Resource timing API should be enabled by default all versions of macOS we support now.
* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
2018-01-30 Tim Horton <timothy_horton@apple.com>
WKWebView layout is sometimes wrong after rotation on iPhone X
https://bugs.webkit.org/show_bug.cgi?id=182304
<rdar://problem/34158671>
Reviewed by Simon Fraser.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _computedContentInset]):
(-[WKWebView _scrollViewSystemContentInset]):
(activeMinimumLayoutSize):
It turns out that it is not always safe to look at the safe area insets of
children from inside layoutSubviews, even after the call to super.
Instead, make use of the fact that WKScrollView and WKWebView have identical
coordinate spaces, and map WKWebView's safe area insets into the WKScrollView.
It's safe to use the scroll view's affected-edges and contentScrollInset,
because those aren't updated at the same outside-of-layout time that
safe area insets are.
We could alternatively move all calls to activeMinimumLayoutSize outside
of layoutSubviews, but that seems like a larger and riskier change.
All attempts to write a test have failed; this depends heavily on use of
autolayout and the mechanism by which the system updates system-owned
safe area insets during device rotation.
2018-01-30 Don Olmstead <don.olmstead@sony.com>
JSExports.h should be included as <JavaScriptCore/JSExportMacros.h>
https://bugs.webkit.org/show_bug.cgi?id=182312
Reviewed by Michael Catanzaro.
* config.h:
2018-01-30 Brent Fulgham <bfulgham@apple.com>
Add telemetry to track storage access API adoption
https://bugs.webkit.org/show_bug.cgi?id=182197
<rdar://problem/35803309>
Reviewed by Chris Dumez.
Part 2: Add telemetry for the Storage Access API case
This change increments a counter when an origin is loaded in a first part context because
it was granted Storage Access API permissions.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::logCookieInformation const): Add logging to indicate
loads that happened with the Storage Access API enabled.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess): Increment counter for
loads using the new API.
2018-01-30 Megan Gardner <megan_gardner@apple.com>
Make preserve and restore focus more likely to be symmetrical
https://bugs.webkit.org/show_bug.cgi?id=182264
<rdar://problem/36948473>
Reviewed by Tim Horton.
Keep a stack of if we actually increment the focusState, so that
changes to the web content do not result in asymmetric decrements to the focus state.
To work around problems associated with <rdar://problem/37000122>.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _restoreFocusWithToken:]):
(-[WKContentView _preserveFocusWithToken:destructively:]):
2018-01-30 Brent Fulgham <bfulgham@apple.com>
Add telemetry to track storage access API adoption
https://bugs.webkit.org/show_bug.cgi?id=182197
<rdar://problem/35803309>
Reviewed by Chris Dumez.
This patch also handled aggregating the counts in the UIProcess, which has access to
the right data.
The original patch assumed the WebContent process kept track of user interaction. This is
only tracked in the UIProcess, so we can get rid of some of the logging code adding in
r227755.
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const): Rollout of r227755 changes not
needed to track the statistics.
(WebKit::WebProcessCreationParameters::decode): Ditto.
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess): Ditto.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::wasAccessedAsFirstPartyDueToUserInteraction): Moved from
the WebContent process, which does not keep track of user interaction.
(WebKit::WebResourceLoadStatisticsStore::mergeStatistics): Aggregate counts while processing
the statistics.
* UIProcess/WebResourceLoadStatisticsStore.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
2018-01-30 Chris Dumez <cdumez@apple.com>
Make sure we never create a WebSWClientConnection with an invalid sessionID
https://bugs.webkit.org/show_bug.cgi?id=182276
<rdar://problem/36582633>
Reviewed by Alex Christensen.
Make sure we never create a WebSWClientConnection with an invalid sessionID as this
could corrupt our hash tables.
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::swServerForSession):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::WebSWClientConnection):
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
(WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession):
* WebProcess/Storage/WebToStorageProcessConnection.cpp:
(WebKit::WebToStorageProcessConnection::serviceWorkerConnectionForSession):
2018-01-30 Basuke Suzuki <Basuke.Suzuki@sony.com>
[WinCairo] Fix forwarding header conflict of WebKit on WinCairo
https://bugs.webkit.org/show_bug.cgi?id=177202
Reviewed by Alex Christensen.
* PlatformWin.cmake:
2018-01-29 Carlos Garcia Campos <cgarcia@igalia.com>
WebDriver: evaluateJavaScriptFunction should return null when return value is undefined
https://bugs.webkit.org/show_bug.cgi?id=180350
Reviewed by Carlos Alberto Lopez Perez.
undefined can't be converted to JSON string, in which case JSON.stringify() returns undefined and we handle that
case to return an empty string. We currently handle this case for execute script commands, but not in all other
cases where we use evaluateJavaScriptFunction. It would be simpler if evaluateJavaScriptFunction returned null,
because in that case we wouldn't need to handle it as a special case.
15.2 Executing Script
https://w3c.github.io/webdriver/webdriver-spec.html#dfn-json-clone
Fixes: imported/w3c/webdriver/tests/state/get_element_property.py::test_element_non_existent
* WebProcess/Automation/WebAutomationSessionProxy.js:
(let.AutomationSessionProxy.prototype._jsonStringify): Return "null" instead of "" when undefined is given.
2018-01-29 Ryosuke Niwa <rniwa@webkit.org>
Release assert in updateLayout while waiting for sync reply to WebPageProxy::HasInsecureContent
https://bugs.webkit.org/show_bug.cgi?id=182273
Reviewed by Chris Dumez.
The assertion was caused by unrelated sync IPCs being processed while WebContent process is waiting for
the reply to WebPageProxy::HasInsecureContent. Since this IPC can be used while creating CachedFrame,
it's not safe to execute arbitrary code.
Fixed the bug by using DoNotProcessIncomingMessagesWhenWaitingForSyncReply added in r227566.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::savePlatformDataToCachedFrame):
2018-01-29 Wenson Hsieh <wenson_hsieh@apple.com>
Add a build step to copy resources from WebKitAdditions as bundle resources in WebKit
https://bugs.webkit.org/show_bug.cgi?id=182268
<rdar://problem/37003784>
Reviewed by Tim Horton and Dan Bernstein.
Adds a "Copy Additional Resources" phase when building WebKit. This phase copies resources from
usr/local/include/WebKitAdditions/WebKit/AdditionalResources in the build directory into the
unlocalized resources directory. If the AdditionalResources directory does not exist in the build
directory, we fall back to searching the SDK.
* WebKit.xcodeproj/project.pbxproj:
2018-01-29 Youenn Fablet <youenn@apple.com>
ServiceWorkerClientFetch should not consider responses without Location headers as redirection responses
https://bugs.webkit.org/show_bug.cgi?id=182134
Reviewed by Chris Dumez.
As per fetch spec, a response with a redirection status code but no Location header should not be considered as a redirection.
This is also consistent with SubresourceLoader::didReceiveResponse.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
2018-01-29 Youenn Fablet <youenn@apple.com>
Cache API should make sure to resolve caches.open promises in the same order as called
https://bugs.webkit.org/show_bug.cgi?id=182193
<rdar://problem/36930363>
Reviewed by Chris Dumez.
Covered by added test.
Whenever opening/removing a cache requires writing to disk, wait to finish the task
until any disk writing task is done.
Applying this strategy when clearing data so that we also clear data that is pending to be written.
For removing cache, we now return whether a cache was actually deleted by returning zero as removed cache identifier.
WebCore uses that information to return true/false as promise resolution value.
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::retrieveCaches):
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::clear):
(WebKit::CacheStorage::Caches::open):
(WebKit::CacheStorage::Caches::remove):
(WebKit::CacheStorage::Caches::writeCachesToDisk):
(WebKit::CacheStorage::Caches::cacheInfos):
(WebKit::CacheStorage::Caches::cacheInfos const): Deleted.
* NetworkProcess/cache/CacheStorageEngineCaches.h:
(WebKit::CacheStorage::Caches::createWeakPtr):
2018-01-29 Alex Christensen <achristensen@webkit.org>
Clean up API after bugs 178240 and 176474
https://bugs.webkit.org/show_bug.cgi?id=182259
Reviewed by Dan Bernstein.
NS_OPTIONS should be NSUInteger, not NSInteger. This is how all other NS_OPTIONS in WebKit are,
and it's necessary if we get really big numbers as options. Changing them won't cause binary
incompatibility unless someone does signed integer comparison with currently invalid values.
Added availability macros I forgot to add earlier.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
2018-01-29 Jiewen Tan <jiewen_tan@apple.com>
[WebAuthN] Add a compile-time feature flag
https://bugs.webkit.org/show_bug.cgi?id=182211
<rdar://problem/36936365>
Reviewed by Brent Fulgham.
* Configurations/FeatureDefines.xcconfig:
2018-01-29 John Wilander <wilander@apple.com>
Resource Load Statistics: Introduce debug mode as experimental feature
https://bugs.webkit.org/show_bug.cgi?id=182199
<rdar://problem/36930364>
Reviewed by Alex Christensen.
The only changes to default behavior are:
- Increased resolution on timestamps which is needed to be able to set shorter
timeouts in debug mode.
- Only update partitioning and blocking table when needed. This is an optimization
which pays off in less XPC with shorter timeouts.
* Shared/WebPreferences.yaml:
* UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::resourceLoadStatisticsDebugMode const):
(API::WebsiteDataStore::setResourceLoadStatisticsDebugMode):
* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetResourceLoadStatisticsDebugMode):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _resourceLoadStatisticsDebugMode]):
(-[WKWebsiteDataStore _setResourceLoadStatisticsDebugMode:]):
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsDebugMode):
(WebKit::WebResourceLoadStatisticsStore::logUserInteraction):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::resourceLoadStatisticsDebugMode const):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsDebugMode):
* UIProcess/WebsiteData/WebsiteDataStore.h:
2018-01-29 Andy Estes <aestes@apple.com>
[iOS] Restrict synthetic clicks to the origin that handled the underlying touch event
https://bugs.webkit.org/show_bug.cgi?id=182252
<rdar://problem/21555881>
Reviewed by Tim Horton.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::dispatchTouchEvent):
(WebKit::WebPage::updatePotentialTapSecurityOrigin):
Record the target frame origin of touch events that are potential taps, are
TouchStart events, are targeted in frames that have touch event listeners, and are not
handled by those listeners.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::potentialTapAtPosition):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::cancelPotentialTapInFrame):
Passed the target frame origin to Frame::nodeRespondingToClickEvents() then cleared it.
2018-01-29 Alex Christensen <achristensen@webkit.org>
Make policy checks more robust against null pointer dereferencing
https://bugs.webkit.org/show_bug.cgi?id=182263
<rdar://problem/34895714>
Reviewed by Tim Horton.
We're still dereferencing null. Check everything.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
2018-01-29 Brent Fulgham <bfulgham@apple.com>
Add telemetry to track storage access API adoption
https://bugs.webkit.org/show_bug.cgi?id=182197
<rdar://problem/35803309>
Reviewed by Chris Dumez.
Part 1: Add telemetry for the user interaction case
This patch adds telemetry to track how frequently third-party cookies are
used in a first party context due to user interaction. This will help
understand cases where the new Storage Access API can help, and to help
us understand if we have considered relevant use cases in its design.
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* UIProcess/WebResourceLoadStatisticsTelemetry.cpp:
(WebKit::sortedPrevalentResourceTelemetry): Update for new telemetry.
(WebKit::submitTopList): Update for new data types.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess): Handle the partitioning time
passed from the UIProcess.
2018-01-29 Alex Christensen <achristensen@webkit.org>
Fix crash when during canAuthenticateAgainstProtectionSpace
https://bugs.webkit.org/show_bug.cgi?id=182260
<rdar://problem/34911343>
Reviewed by Chris Dumez.
If we have a valid network load with no challenge completion handler and we are
telling it to continue with the challenge handling, something has gone wrong.
Maybe we've just recovered from a crashed network process. If this happens, do nothing.
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace):
2018-01-29 Zach Li <zacharyli323@gmail.com>
Warning in 32-bit WebKit build when trying to link to SafariSafeBrowsing
https://bugs.webkit.org/show_bug.cgi?id=182251
rdar://problem/36964995
Reviewed by Alex Christensen.
* Configurations/WebKit.xcconfig:
Only link against SafariSafeBrowsing framework in 64-bit architecture.
* Platform/spi/Cocoa/SafeBrowsingSPI.h:
Guard the Safe Browsing code with WK_API_ENABLED.
2018-01-29 Chris Dumez <cdumez@apple.com>
Make sure we do not re-enter Webcore during StorageToWebProcessConnection::EstablishSWServerConnection Sync IPC
https://bugs.webkit.org/show_bug.cgi?id=182256
<rdar://problem/36689233>
Reviewed by Simon Fraser.
Make sure we do not re-enter Webcore during StorageToWebProcessConnection::EstablishSWServerConnection Sync IPC as
this can lead to crashes such as the one in <rdar://problem/36689233>.
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::WebSWClientConnection):
2018-01-29 Jan-Michael Brummer <jan.brummer@tabos.org>
[GTK] Zooming gesture incorrectly uses scale instead of zoom
https://bugs.webkit.org/show_bug.cgi?id=182174
Reviewed by Michael Catanzaro.
Switch zooming gesture to use zoom instead of scale function.
* UIProcess/gtk/GestureController.cpp:
(WebKit::GestureController::ZoomGesture::begin):
(WebKit::GestureController::ZoomGesture::handleZoom):
2018-01-29 Brady Eidson <beidson@apple.com>
Make it possible for apps that use both WK1 and WK2 to use MessagePorts.
https://bugs.webkit.org/show_bug.cgi?id=182229
Reviewed by Chris Dumez.
* UIProcess/UIMessagePortChannelProvider.cpp:
(WebKit::UIMessagePortChannelProvider::UIMessagePortChannelProvider):
* UIProcess/WebPageProxy.cpp:
(WebKit::m_configurationPreferenceValues): The UI process does not need to override the
global singleton provider. It can remain the default ProviderImpl to allow WK1 views
to work fine, too.
2018-01-29 Carlos Garcia Campos <cgarcia@igalia.com>
WebDriver: ASSERTION FAILED: !m_loadTimer.isActive()
https://bugs.webkit.org/show_bug.cgi?id=182237
Reviewed by Carlos Alberto Lopez Perez.
We should stop the load timer when we dispatch the pending navigation callbacks due to an alert open.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::willShowJavaScriptDialog):
2018-01-29 Zan Dobersek <zdobersek@igalia.com>
[Cairo] Add GraphicsContextImplCairo::createFactory() helpers
https://bugs.webkit.org/show_bug.cgi?id=182238
Reviewed by Carlos Garcia Campos.
Use GraphicsContextImplCairo::createFactory() helpers throughout the
Cairo-specific GraphicsContext constructors in the WebKit layer.
* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::createGraphicsContext):
* UIProcess/cairo/BackingStoreCairo.cpp:
(WebKit::BackingStore::incorporateUpdate):
* WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
(WebKit::WebPrintOperationGtk::renderPage):
2018-01-29 Zan Dobersek <zdobersek@igalia.com>
[Cairo] Remove the GraphicsContext(cairo_t*) constructor
https://bugs.webkit.org/show_bug.cgi?id=182234
Reviewed by Carlos Garcia Campos.
Call sites of the GraphicsContext(cairo_t*) constructor are adjusted to
instead provide a factory function that returns a fresh
GraphicsContextImplCairo object, passing that cairo_t object to its
constructor.
* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::createGraphicsContext):
* UIProcess/cairo/BackingStoreCairo.cpp:
(WebKit::BackingStore::incorporateUpdate):
* WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
(WebKit::WebPrintOperationGtk::renderPage):
2018-01-26 Megan Gardner <megan_gardner@apple.com>
Don't retain focus for input peripheral views
https://bugs.webkit.org/show_bug.cgi?id=182204
Reviewed by Tim Horton.
Retaining focus on input peripheral views makes it so they cannot dismiss themselves with
the current architecture. This should probably be fixed in UIKit, as there is no reason for
focus to be retained on these views anyways, as they don't have keyboard input, but this
guards against over-aggressive retain requests.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _restoreFocusWithToken:]):
(-[WKContentView _preserveFocusWithToken:destructively:]):
2018-01-26 Chris Dumez <cdumez@apple.com>
Make sure service worker code does not launch a StorageProcess unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=182192
<rdar://problem/36927427>
Reviewed by Geoffrey Garen.
When calling WebProcess::existingWebToStorageProcessConnection(), make sure we do not
force the creation of a WebProcess connection to the StorageProcess. If there is
no WebProcess, just return false right away.
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession):
* WebProcess/WebProcess.h:
2018-01-26 Alex Christensen <achristensen@webkit.org>
Allow cellular access for default-created ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=182179
<rdar://problem/36572023>
Reviewed by Andy Estes.
This makes it so when we recover from a NetworkProcess crash (see r227590) on iOS, we will
be able to continue browsing using cell data.
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::privateSessionParameters):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setPrivateBrowsingEnabled):
2018-01-26 Alex Christensen <achristensen@webkit.org>
Clean up more networking code
https://bugs.webkit.org/show_bug.cgi?id=182161
Reviewed by Anders Carlsson.
Two cleanups:
1. The WebProcess doesn't need to initialize NetworkSessions.
2. WebFrameNetworkingContext doesn't need to have the NetworkingContext functions to support ResourceHandles in WebKit any more.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/RemoteNetworkingContext.h:
(): Deleted.
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
* NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:
(WebKit::RemoteNetworkingContext::~RemoteNetworkingContext): Deleted.
(WebKit::RemoteNetworkingContext::isValid const): Deleted.
(WebKit::RemoteNetworkingContext::storageSession const): Deleted.
* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::~RemoteNetworkingContext): Deleted.
(WebKit::RemoteNetworkingContext::isValid const): Deleted.
(WebKit::RemoteNetworkingContext::localFileContentSniffingEnabled const): Deleted.
(WebKit::RemoteNetworkingContext::storageSession const): Deleted.
(WebKit::RemoteNetworkingContext::sourceApplicationAuditData const): Deleted.
(WebKit::RemoteNetworkingContext::sourceApplicationIdentifier const): Deleted.
(WebKit::RemoteNetworkingContext::blockedError const): Deleted.
* NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:
(WebKit::RemoteNetworkingContext::~RemoteNetworkingContext): Deleted.
(WebKit::RemoteNetworkingContext::isValid const): Deleted.
(WebKit::RemoteNetworkingContext::storageSession const): Deleted.
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::clearCachedCredentials):
2018-01-26 Jan-Michael Brummer <jan.brummer@tabos.org>
[GTK] Support using long-tap gesture to open context menu
https://bugs.webkit.org/show_bug.cgi?id=140747
Reviewed by Carlos Garcia Campos.
Add long press gesture which simulates a secondary mouse press to open context menu.
* UIProcess/gtk/GestureController.cpp:
(WebKit::GestureController::GestureController):
(WebKit::GestureController::handleEvent):
(WebKit::GestureController::isProcessingGestures const):
(WebKit::GestureController::Gesture::simulateMousePress):
(WebKit::GestureController::DragGesture::handleTap):
(WebKit::GestureController::LongPressGesture::longPressed):
(WebKit::GestureController::LongPressGesture::pressed):
(WebKit::GestureController::LongPressGesture::LongPressGesture):
* UIProcess/gtk/GestureController.h:
(WebKit::GestureController::reset):
2018-01-26 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. REGRESSION(r227647): window.open() is broken in GTK and WPE after r227647.
In r227647, API::UIClient::createNewPage() was changed to use CompletionHandler instead of Function. All
implementations were updated expect the GLib one, and we didn't notice it because the method doesn't have the
final/override mark.
* UIProcess/API/glib/WebKitUIClient.cpp:
(UIClient::createNewPage):
2018-01-25 Sergio Villar Senin <svillar@igalia.com>
[WebVR] Make WebVR available by default for developer builds
https://bugs.webkit.org/show_bug.cgi?id=182101
Reviewed by Michael Catanzaro.
Moved WebVR setting to the experimental features section and make it
available by default for developer builds for GTK and WPE.
* Shared/WebPreferences.yaml:
2018-01-25 Alex Christensen <achristensen@webkit.org>
REGRESSION (r221899): Web Content process hangs when webpage tries to make a new window if the WKWebView doesn’t have a UI delegate
https://bugs.webkit.org/show_bug.cgi?id=182152
Reviewed by Joseph Pecoraro.
Call the completion handler of the default API::UIClient::createNewPage.
* UIProcess/API/APIUIClient.h:
(API::UIClient::createNewPage):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::createNewPage):
2018-01-25 Wenson Hsieh <wenson_hsieh@apple.com>
[iOS] [WK2] Introduce new views and view controllers to support extra-zoomed text form controls
https://bugs.webkit.org/show_bug.cgi?id=182000
<rdar://problem/35143035>
Reviewed by Tim Horton.
Add new files to support text form control editing while extra-zoomed.
* UIProcess/ios/forms/WKFocusedFormControlView.h: Added.
* UIProcess/ios/forms/WKFocusedFormControlView.mm: Added.
* UIProcess/ios/forms/WKFocusedFormControlViewController.h: Added.
* UIProcess/ios/forms/WKFocusedFormControlViewController.mm: Added.
* UIProcess/ios/forms/WKTextFormControlViewController.h: Added.
* UIProcess/ios/forms/WKTextFormControlViewController.mm: Added.
* UIProcess/ios/forms/WKTextInputViewController.h: Added.
* UIProcess/ios/forms/WKTextInputViewController.mm: Added.
* UIProcess/ios/forms/WKTextSuggestionButton.h: Added.
* UIProcess/ios/forms/WKTextSuggestionButton.mm: Added.
* WebKit.xcodeproj/project.pbxproj:
2018-01-25 Chris Dumez <cdumez@apple.com>
Clients.get(id) should only returns clients in the service worker's origin
https://bugs.webkit.org/show_bug.cgi?id=182149
<rdar://problem/36882310>
Reviewed by Youenn Fablet.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::postMessageToServiceWorker):
2018-01-25 Youenn Fablet <youenn@apple.com>
WebPluginInfoProvider should handle null host queries
https://bugs.webkit.org/show_bug.cgi?id=182112
Reviewed by Chris Dumez.
Return early if host is null.
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::populatePluginCache):
2018-01-25 Simon Fraser <simon.fraser@apple.com>
ASSERT(CGSizeEqualToSize(m_resizeScrollOffset, CGSizeZero)) in WebViewImpl::setFrameAndScrollBy()
https://bugs.webkit.org/show_bug.cgi?id=182082
rdar://problem/13971838
Reviewed by Tim Horton.
Safari could call WebViewImpl::setFrameAndScrollBy() multiple times with different scroll offsets,
triggering this assertion.
Rename to m_resizeScrollOffset to m_scrollOffsetAdjustment to reduce confusion with actual scroll offsets.
This parameter has no effect on macOS, but is used by the -[WKWebView setFrame:andScrollBy:] so at some point
needs to be hooked up to allow synchronous view resize and scroll adjustment (e.g. for the Find bar animation).
Remove DrawingAreaProxy's m_layerPosition which was unused, and remove the parameters from the UpdateGeometry message.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _frameOrBoundsChanged]):
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setFrameAndScrollBy):
(WebKit::WebViewImpl::setDrawingAreaSize):
* UIProcess/DrawingAreaProxy.cpp:
(WebKit::DrawingAreaProxy::setSize):
* UIProcess/DrawingAreaProxy.h:
* UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
(WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::updateGeometry):
* WebProcess/WebPage/DrawingArea.messages.in:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
2018-01-25 Keith Rollin <krollin@apple.com>
Add logging to facilitate binding of WebContent and Network processes to UI process
https://bugs.webkit.org/show_bug.cgi?id=182066
Reviewed by Brent Fulgham.
When examining sysdiagnose logs and tracing events from one process to
another, it would be helpful to know which WebKit processes were
related to each other. When Safari, Mail, Messages, etc. are all
running at the same time, it may otherwise be difficult to know if a
particular Network process, for example was associated with Safari or
some other application. Add some logging to the creation of WebContent
and Network processes to identify their "presenting process" (parent
application).
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* Platform/Logging.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
2018-01-25 Youenn Fablet <youenn@apple.com>
DocumentLoader should interrupt ongoing load when getting a redirection from network that matches a service worker
https://bugs.webkit.org/show_bug.cgi?id=182115
Reviewed by Alex Christensen.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
2018-01-25 Alex Christensen <achristensen@webkit.org>
Fix crash when preconnecting while closing private browsing
https://bugs.webkit.org/show_bug.cgi?id=182114
<rdar://problem/35637284>
Reviewed by Joseph Pecoraro.
* NetworkProcess/PreconnectTask.cpp:
There is a race condition when destroying a session while a page is initiating a preconnect.
If this happens, fail gracefully instead of trying to preconnect with a null session.
2018-01-25 Dan Bernstein <mitz@apple.com>
[Mac] Enable library validation for Networking & Storage XPC services
https://bugs.webkit.org/show_bug.cgi?id=173424
<rdar://problem/32386565>
Reviewed by Joseph Pecoraro.
* Configurations/BaseXPCService.xcconfig: Moved the definitions of
WK_LIBRARY_VALIDATION_ENABLED and WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS from
WebContentService.xcconfig to here and made them Mac-only at this level.
* Configurations/NetworkService.xcconfig: Also set OTHER_CODE_SIGN_FLAGS to
WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS.
* Configurations/StorageService.xcconfig: Ditto.
* Configurations/WebContentService.xcconfig: Moved definitions from here to
BaseXPCService.xcconfig.
2018-01-25 David Hyatt <hyatt@apple.com>
Enable lines clamp support for Apple Mail by default
https://bugs.webkit.org/show_bug.cgi?id=182113
Reviewed by Dean Jackson.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::appleMailLinesClampEnabled):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_cpuLimit):
2018-01-25 Sergio Villar Senin <svillar@igalia.com>
[WebVR][GTK][WPE] Remove the WebVR public API added in r227518
https://bugs.webkit.org/show_bug.cgi?id=182102
Reviewed by Carlos Garcia Campos.
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
2018-01-25 Sergio Villar Senin <svillar@igalia.com>
[WebVR][GTK][WPE] Remove the WebVR public API added in r227518
https://bugs.webkit.org/show_bug.cgi?id=182102
Reviewed by Carlos Garcia Campos.
This new public API was not supposed to be included in the patch
that added OpenVR to the tree and to the build.
* UIProcess/API/glib/WebKitSettings.cpp:
(webKitSettingsSetProperty):
(webKitSettingsGetProperty):
(webkit_settings_class_init):
(webkit_settings_get_enable_webvr): Deleted.
(webkit_settings_set_enable_webvr): Deleted.
* UIProcess/API/gtk/WebKitSettings.h:
* UIProcess/API/wpe/WebKitSettings.h:
2018-01-25 Claudio Saavedra <csaavedra@igalia.com>
[GTK] Fix build with touch events disabled
Unreviewed build fix.
Explicitly include gtk.h in files that were indirectly getting it
only when touch events were enabled.
* UIProcess/Automation/gtk/WebAutomationSessionGtk.cpp:
* UIProcess/gtk/WaylandCompositor.h:
2018-01-25 Carlos Garcia Campos <cgarcia@igalia.com>
WebDriver: test imported/selenium/py/test/selenium/webdriver/common/alerts_tests.py crashes in debug
https://bugs.webkit.org/show_bug.cgi?id=182096
Reviewed by Carlos Alberto Lopez Perez.
It's an assert in HashTable iterators checkValidity(). The problem is that we get the keys to iterate the values
and the map is modified inside the loop. We need to use copyToVector to copy the keys.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::respondToPendingPageNavigationCallbacksWithTimeout):
(WebKit::WebAutomationSession::respondToPendingFrameNavigationCallbacksWithTimeout):
(WebKit::WebAutomationSession::willShowJavaScriptDialog):
2018-01-24 Alex Christensen <achristensen@webkit.org>
Gracefully recover from NetworkProcess crashes in private browsing
https://bugs.webkit.org/show_bug.cgi?id=182073
<rdar://problem/36572023>
Reviewed by Geoff Garen.
If we're using a non-persistent WKWebsiteDataStore and the NetworkProcess crashes and we try to do a load,
then the WebProcess restarts the NetworkProcess but doesn't recreate the ephemeral session in the NetworkProcess.
When this happens, we've already lost the browsing state in memory in the NetworkProcess, but we don't want to hang.
If this is the problem, then just recreate the ephemeral session and continue loading.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::startNetworkLoad):
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::privateSessionParameters):
(WebKit::WebsiteDataStoreParameters::legacyPrivateSessionParameters): Deleted.
* Shared/WebsiteDataStoreParameters.h:
(WebKit::WebsiteDataStoreParameters::legacyPrivateSessionParameters):
2018-01-24 Dan Bernstein <mitz@apple.com>
Enable library validation on the Web Content service
Part 1 of https://bugs.webkit.org/show_bug.cgi?id=172365
<rdar://problem/26470661>
Reviewed by David Kilzer.
This makes the Web Content process signed with the Library Validation flag in production
builds. Because doing so would prevent engineering builds of Apple apps that use an
injected bundle from working, this also adds a Development version of the service, which
does not enforce Library Validation. The UI process chooses to use the Development service
iff it would need to load an injected bundle that is not part of the OS.
* Configurations/DebugRelease.xcconfig: Disable Library Validation in engineering builds.
* Configurations/WebContentService.Development.xcconfig: Added. Like the normal service, but
only installed when WebKit is installed in the OS, and uses a Development variant.
* Configurations/WebContentService.xcconfig: For the Development variant, append
".Development" to the product name, which is also the service identifier. Enable Library
Validation for the Normal variant of the service when WK_LIBRARY_VALIDATION_ENABLED allows
it.
* UIProcess/Launcher/ProcessLauncher.h: Add nonValidInjectedCodeAllowed member to
LaunchOptions, false by default.
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::serviceName): Use the Development variant if nonValidInjectedCodeAllowed is true.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::getLaunchOptions): Initialize nonValidInjectedCodeAllowed using
the new shouldAllowNonValidInjectedCode().
(WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Generic implementation
that returns false.
* UIProcess/WebProcessProxy.h: Declared shouldAllowNonValidInjectedCode.
* UIProcess/mac/WebProcessProxyMac.mm:
(WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Return true if this is
system WebKit with a non-system injected bundle.
* WebKit.xcodeproj/project.pbxproj: Added new service target.
2018-01-24 Chris Dumez <cdumez@apple.com>
Add a IPC::SendSyncOption indicating we should not process incoming IPC while waiting for the sync reply
https://bugs.webkit.org/show_bug.cgi?id=182021
<rdar://problem/21629943>
Reviewed by Ryosuke Niwa.
Add a new DoNotProcessIncomingMessagesWhenWaitingForSyncReply SendSyncOption that the caller can
set when calling sendSync(). This indicates that the sendSync() should return only when we receive
the response to our sync IPC message, and that we should not process ANY incoming IPC in the meantime.
This patch also starts using this flag in 3 places where we know processing incoming IPC is an issue
and is causing crashes.
* Platform/IPC/Connection.cpp:
(IPC::Connection::sendSyncMessage):
When DoNotProcessIncomingMessagesWhenWaitingForSyncReply SendSyncOption is set, make sure
we set the ShouldDispatchMessageWhenWaitingForSyncReply flag on the encoder. If we did not set this
flag then it could cause deadlocks when the destination process is also waiting on a synchronous
IPC from us. Normally, this flag already gets set for sync messages because sendSyncMessage() calls
sendMessage() with DispatchMessageEvenWhenWaitingForSyncReply SyncOption. However, sendMessage()
ignores the DispatchMessageEvenWhenWaitingForSyncReply flag if the
m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage flag is set on the
connection. Note that this flag is set on the connection from the WebProcess to the UIProcess at
the moment, which is why we saw deadlocks on the previous iteration of this patch.
(IPC::Connection::waitForSyncReply):
If DoNotProcessIncomingMessagesWhenWaitingForSyncReply SendSyncOption is set, do not
process incoming IPC messages while waiting for our sync IPC reply.
* Platform/IPC/Connection.h:
Add new SendSyncOption.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::testIncomingSyncIPCMessageWhileWaitingForSyncReply):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
Testing infrastructure.
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
Use new flag.
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::testIncomingSyncIPCMessageWhileWaitingForSyncReply):
* WebProcess/WebCoreSupport/WebChromeClient.h:
Testing infrastructure.
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
Use new flag.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::syncIPCMessageWhileWaitingForSyncReplyForTesting):
Testing infrastructure.
(WebKit::WebProcess::ensureNetworkProcessConnection):
Use new flag.
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
Testing infrastructure.
2018-01-24 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove duplicate preference update for WebAuthentication value
https://bugs.webkit.org/show_bug.cgi?id=182058
Reviewed by Brian Burg.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
An identical update already happens in generated code.
2018-01-24 Alex Christensen <achristensen@webkit.org>
Remove WebProcess access to QTKit
https://bugs.webkit.org/show_bug.cgi?id=182035
Reviewed by Alexey Proskuryakov.
* WebProcess/com.apple.WebProcess.sb.in:
This isn't needed any more. We only have a little bit of code that uses QTKit which we should remove,
and it's only used for fullscreen controls in WebKitLegacy. Let's tighten up the sandbox!
2018-01-24 Alex Christensen <achristensen@webkit.org>
Remove pre-Sierra-OS-specific code in WebKit
https://bugs.webkit.org/show_bug.cgi?id=182024
Reviewed by Tim Horton.
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
* Shared/Cocoa/DataDetectionResult.mm:
(WebKit::DataDetectionResult::encode const):
* Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<WebCore::Payment>::encode):
(IPC::ArgumentCoder<WebCore::PaymentContact>::encode):
(IPC::ArgumentCoder<WebCore::PaymentMerchantSession>::encode):
(IPC::ArgumentCoder<WebCore::PaymentMethod>::encode):
* Shared/WebPreferencesDefaultValues.h:
* Shared/cg/ShareableBitmapCG.cpp:
(WebKit::wantsExtendedRange):
* Shared/ios/InteractionInformationAtPosition.mm:
(WebKit::InteractionInformationAtPosition::encode const):
* Shared/mac/CodeSigning.mm:
(WebKit::codeSigningIdentifier):
(WebKit::codeSigningIdentifierForCurrentProcess):
* Shared/mac/ColorSpaceData.mm:
(WebKit::ColorSpaceData::encode const):
* Shared/mac/PasteboardTypes.mm:
(WebKit::PasteboardTypes::forURL):
* Shared/mac/WebCoreArgumentCodersMac.mm:
(IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData):
(IPC::ArgumentCoder<Credential>::encodePlatformData):
(IPC::ArgumentCoder<ContentFilterUnblockHandler>::encode):
(IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData):
* Shared/mac/WebHitTestResultData.mm:
(WebKit::WebHitTestResultData::platformEncode const):
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _setObject:forBundleParameter:]):
(-[WKProcessPool _setObjectsForBundleParametersWithDictionary:]):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _handleAcceptedCandidate:]):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::handleAcceptedCandidate):
(WebKit::WebViewImpl::performDragOperation):
* UIProcess/mac/WebPopupMenuProxyMac.mm:
(WebKit::WebPopupMenuProxyMac::showPopupMenu):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]):
* WebProcess/com.apple.WebProcess.sb.in:
2018-01-24 Alex Christensen <achristensen@webkit.org>
Stop using AuthenticationClient in WebKit
https://bugs.webkit.org/show_bug.cgi?id=182016
Reviewed by Brady Eidson.
It was necessary to support ResourceHandle use in WebKit, but now we're using NetworkSession everywhere in WebKit.
* Shared/Authentication/AuthenticationManager.cpp:
(WebKit::AuthenticationManager::useCredentialForSingleChallenge):
(WebKit::AuthenticationManager::continueWithoutCredentialForSingleChallenge):
(WebKit::AuthenticationManager::cancelSingleChallenge):
(WebKit::AuthenticationManager::performDefaultHandlingForSingleChallenge):
(WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge):
2018-01-24 Alex Christensen <achristensen@webkit.org>
Remove WebProcess authentication code
https://bugs.webkit.org/show_bug.cgi?id=182020
Reviewed by Brady Eidson.
* Shared/Authentication/AuthenticationManager.cpp:
* Shared/Authentication/AuthenticationManager.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didReceiveAuthenticationChallenge): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidReceiveAuthenticationChallenge):
* WebProcess/WebProcess.cpp:
(WebKit::m_webSQLiteDatabaseTracker):
2018-01-24 Jan-Michael Brummer <jan.brummer@tabos.org>
[GTK] Page crash after swipe gesture running GNOME3 under wayland
https://bugs.webkit.org/show_bug.cgi?id=181996
Reviewed by Michael Catanzaro.
Add missing GDK_TOUCH_CANCEL support which fixes page crashes due to cancelled gestures.
* Shared/gtk/WebEventFactory.cpp:
(WebKit::WebEventFactory::createWebTouchEvent):
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::doneWithTouchEvent):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(touchPointStateForEvents):
(webkitWebViewBaseGetTouchPointsForEvent):
(webkitWebViewBaseTouchEvent):
* UIProcess/gtk/GestureController.cpp:
(WebKit::GestureController::handleEvent):
2018-01-24 Alex Christensen <achristensen@webkit.org>
Remove unused QTKit preference
https://bugs.webkit.org/show_bug.cgi?id=181968
Reviewed by Alexey Proskuryakov.
* Shared/API/c/WKDeprecatedFunctions.cpp:
(WKPreferencesSetQTKitEnabled):
(WKPreferencesGetQTKitEnabled):
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetQTKitEnabled): Deleted.
(WKPreferencesGetQTKitEnabled): Deleted.
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setQTKitEnabled:]): Deleted.
(-[WKPreferences _qtKitEnabled]): Deleted.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
2018-01-24 Youenn Fablet <youenn@apple.com>
Fetch response should copy its url from the request if null
https://bugs.webkit.org/show_bug.cgi?id=182048
Reviewed by Chris Dumez.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
2018-01-24 Sergio Villar Senin <svillar@igalia.com>
Unreviewed build fix after r227518. I forgot to add the function declarations to the WPE
header.
* UIProcess/API/wpe/WebKitSettings.h: Added webkit_settings_get/set_enable_webvr.
2018-01-24 Youenn Fablet <youenn@apple.com>
Add Cache Storage engine assertion following on bug 181887
https://bugs.webkit.org/show_bug.cgi?id=181925
Reviewed by Alex Christensen.
In a normal environment, the folderPath should be the same as the path computed from the ClientOrigin.
Add assertion to verify this.
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::clearCachesForOrigin):
2018-01-24 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] Use GDK_EVENT_PROPAGATE and GDK_EVENT_STOP in WebKitWebViewBase.cpp
https://bugs.webkit.org/show_bug.cgi?id=182031
Reviewed by Carlos Garcia Campos.
No functional changes, this just replaces TRUE with GDK_EVENT_STOP and FALSE with
GDK_EVENT_PROPAGATE, to improve readability.
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(webkitWebViewBaseKeyPressEvent):
(webkitWebViewBaseKeyReleaseEvent):
(webkitWebViewBaseButtonPressEvent):
(webkitWebViewBaseButtonReleaseEvent):
(webkitWebViewBaseScrollEvent):
(webkitWebViewBaseMotionNotifyEvent):
(webkitWebViewBaseCrossingNotifyEvent):
(webkitWebViewBaseTouchEvent):
2018-01-23 Eric Carlson <eric.carlson@apple.com>
Resign NowPlaying status when no media element is eligible
https://bugs.webkit.org/show_bug.cgi?id=181914
<rdar://problem/35294116>
Reviewed by Jer Noble.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _requestActiveNowPlayingSessionInfo:]): Return registeredAsNowPlayingApplication
status.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::nowPlayingInfoCallback): Ditto.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::requestActiveNowPlayingSessionInfo): Ditto.
2018-01-23 Alex Christensen <achristensen@webkit.org>
Use CompletionHandlers for ResourceHandleClient::didReceiveResponseAsync
https://bugs.webkit.org/show_bug.cgi?id=181961
Reviewed by Michael Catanzaro.
* NetworkProcess/Downloads/Download.h:
* NetworkProcess/NetworkLoad.cpp:
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/NetworkResourceLoadParameters.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
* WebProcess/WebPage/mac/WebPageMac.mm:
* WebProcess/WebProcess.cpp:
2018-01-23 Chris Dumez <cdumez@apple.com>
Unreviewed, rollout r227216 as it seems to be causing deadlocks
https://bugs.webkit.org/show_bug.cgi?id=182013
* Platform/IPC/Connection.cpp:
(IPC::Connection::waitForSyncReply):
* Platform/IPC/Connection.h:
(IPC::Connection::setShouldProcessIncomingMessagesWhileWaitingForSyncReply): Deleted.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::testIncomingSyncIPCMessageWhileWaitingForSyncReply): Deleted.
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::NetworkProcessConnection):
* WebProcess/Storage/WebToStorageProcessConnection.cpp:
(WebKit::WebToStorageProcessConnection::WebToStorageProcessConnection):
* WebProcess/WebConnectionToUIProcess.cpp:
(WebKit::WebConnectionToUIProcess::WebConnectionToUIProcess):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::testIncomingSyncIPCMessageWhileWaitingForSyncReply): Deleted.
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::undo):
(WebKit::WebEditorClient::redo):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::syncIPCMessageWhileWaitingForSyncReplyForTesting): Deleted.
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
2018-01-23 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r227437.
https://bugs.webkit.org/show_bug.cgi?id=182011
broke build (Requested by alexchristensen on #webkit).
Reverted changeset:
"Remove unused QTKit preference"
https://bugs.webkit.org/show_bug.cgi?id=181968
https://trac.webkit.org/changeset/227437
2018-01-23 Alex Christensen <achristensen@webkit.org>
Remove compile guard around beacon API
https://bugs.webkit.org/show_bug.cgi?id=182002
Reviewed by Sam Weinig.
It's enabled everywhere now.
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetBeaconAPIEnabled):
(WKPreferencesGetBeaconAPIEnabled):
* config.h:
2018-01-23 Alex Christensen <achristensen@webkit.org>
Remove unused QTKit preference
https://bugs.webkit.org/show_bug.cgi?id=181968
Reviewed by Alexey Proskuryakov.
* Shared/API/c/WKDeprecatedFunctions.cpp:
(WKPreferencesSetQTKitEnabled):
(WKPreferencesGetQTKitEnabled):
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetQTKitEnabled): Deleted.
(WKPreferencesGetQTKitEnabled): Deleted.
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setQTKitEnabled:]): Deleted.
(-[WKPreferences _qtKitEnabled]): Deleted.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
2018-01-23 Brent Fulgham <bfulgham@apple.com>
[macOS] WebProcess needs TCC entitlements for media capture
https://bugs.webkit.org/show_bug.cgi?id=181995
<rdar://problem/36674649>
Reviewed by Eric Carlson.
* Configurations/WebContent-OSX.entitlements: Add delegated services needed to support media
capture features.
2018-01-23 Dan Bernstein <mitz@apple.com>
[Cocoa] Disable header postprocessing when building for macOS High Sierra
https://bugs.webkit.org/show_bug.cgi?id=181972
Reviewed by Anders Carlsson.
* Configurations/WebKit.xcconfig: Adopt macOSTargetConditionals.xcconfig helpers and disable postprocessing
when building for macOS 10.13.
2018-01-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Window resizing is broken after detaching to separate window
https://bugs.webkit.org/show_bug.cgi?id=181992
<rdar://problem/36714840>
Reviewed by Brian Burg.
* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::platformDetach):
Restore the inspector view's autoresizingMask to the initial value
that works with a detached window. This gets changed when the view
gets attached to bottom/side, so we need to revert it on detaching.
2018-01-23 Brady Eidson <beidson@apple.com>
Allow passing MessagePorts across processes (e.g. ServiceWorkers).
https://bugs.webkit.org/show_bug.cgi?id=181178
Reviewed by Andy Estes.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::postMessageToServiceWorker):
(WebKit::WebSWServerConnection::postMessageToServiceWorkerClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::postMessageToServiceWorkerClient):
* StorageProcess/StorageProcess.h:
* StorageProcess/StorageProcess.messages.in:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::entangleLocalPortInThisProcessToRemote):
(WebKit::WebProcessProxy::postMessageToRemote):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::postMessageToServiceWorker):
(WebKit::WebSWClientConnection::postMessageToServiceWorkerClient):
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::postMessageToServiceWorker):
(WebKit::WebSWContextManagerConnection::postMessageToServiceWorkerClient):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:
2018-01-23 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r227279 and r227373.
https://bugs.webkit.org/show_bug.cgi?id=181988
The LayoutTest crash fix introduced an API test failure.
(Requested by ryanhaddad on #webkit).
Reverted changesets:
"Resign NowPlaying status when no media element is eligible"
https://bugs.webkit.org/show_bug.cgi?id=181914
https://trac.webkit.org/changeset/227279
"Resign NowPlaying status when no media element is eligible"
https://bugs.webkit.org/show_bug.cgi?id=181914
https://trac.webkit.org/changeset/227373
2018-01-23 Youenn Fablet <youenn@apple.com>
REGRESSION (r227348): ASSERT_NOT_REACHED in WebKit::ServiceWorkerClientFetch::didFinish()
https://bugs.webkit.org/show_bug.cgi?id=181956
<rdar://problem/36755492>
Reviewed by Chris Dumez.
Covered by test no longer crashing in Debug builds.
Reset m_redirectionStatus to None when starting an SW fetch.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::start):
(WebKit::ServiceWorkerClientFetch::didFinish):
2018-01-23 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE] TestWebKitFindController asserts
https://bugs.webkit.org/show_bug.cgi?id=181472
Reviewed by Carlos Garcia Campos.
Let's fix this in two independent ways.
First, use a GRefPtr to hold ownership of the WebKitWebViewBackend. This way, we don't need
to change the order in which WebKitWebView destroys its priv struct members from what is
used in WebKitGTK+, which can lead to odd bugs.
Additionally, just for good measure, stop resetting the find client when disposing
WebKitFindController. This is unnecessary because it will never be destroyed before the
WebKitWebView.
* UIProcess/API/glib/WebKitFindController.cpp:
(webkit_find_controller_class_init):
(webkitFindControllerDispose): Deleted.
* UIProcess/API/glib/WebKitWebView.cpp:
(_WebKitWebViewPrivate::~_WebKitWebViewPrivate):
(webkitWebViewSetProperty):
(webkitWebViewGetProperty):
(webkitWebViewCreatePage):
(webkit_web_view_get_backend):
* UIProcess/API/wpe/WebKitWebViewBackend.cpp:
(webkitWebViewBackendCreateDefault):
(WTF::refGPtr):
(WTF::derefGPtr):
* UIProcess/API/wpe/WebKitWebViewBackendPrivate.h:
2018-01-22 Jon Lee <jonlee@apple.com>
Update title label size
https://bugs.webkit.org/show_bug.cgi?id=181962
rdar://problem/36754744
Reviewed by Simon Fraser.
* UIProcess/ios/WKFullScreenWindowControllerIOS.mm:
(-[_WKFullScreenViewController setLocation:secure:trustedName:trustedSite:]): Move titleLabel properties into
createSubviews.
(-[_WKFullScreenViewController createSubviews]): Set the title label for both the cancel and location buttons.
Refer to a const CGFloat for the font size.
2018-01-22 Megan Gardner <megan_gardner@apple.com>
Temporarily restore block selection code conditionally
https://bugs.webkit.org/show_bug.cgi?id=181895
<rdar://problem/36567325>
Reviewed by Tim Horton.
We need to restore this code temporarily to avoid a crash.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView changeBlockSelectionWithTouchAt:withSelectionTouch:forHandle:]):
2018-01-22 Zach Li <zacharyli323@gmail.com>
We should not try to link against the Safe Browsing framework on watchOS and tvOS.
https://bugs.webkit.org/show_bug.cgi?id=181965.
Reviewed by Tim Horton.
* Configurations/WebKit.xcconfig:
2018-01-22 Alex Christensen <achristensen@webkit.org>
Remove pre-NetworkSession loading code
https://bugs.webkit.org/show_bug.cgi?id=181944
Reviewed by Tim Horton.
We were keeping it around for El Capitan.
* NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:
(WebKit::LegacyCustomProtocolManager::registerProtocolClass):
* NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp:
(WebKit::LegacyCustomProtocolManager::initialize):
* NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h:
* NetworkProcess/Downloads/BlobDownloadClient.cpp: Removed.
* NetworkProcess/Downloads/BlobDownloadClient.h: Removed.
* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::~Download):
(WebKit::Download::cancel):
(WebKit::Download::didReceiveChallenge):
(WebKit::Download::didFinish):
(WebKit::Download::isAlwaysOnLoggingAllowed const):
(WebKit::Download::start): Deleted.
(WebKit::Download::startWithHandle): Deleted.
(WebKit::Download::didStart): Deleted.
(WebKit::Download::willSendRedirectedRequest): Deleted.
(WebKit::Download::didReceiveAuthenticationChallenge): Deleted.
(WebKit::Download::didReceiveResponse): Deleted.
(WebKit::Download::shouldDecodeSourceDataOfMIMEType): Deleted.
(WebKit::Download::decideDestinationWithSuggestedFilename): Deleted.
(WebKit::Download::decideDestinationWithSuggestedFilenameAsync): Deleted.
(WebKit::Download::didDecideDownloadDestination): Deleted.
(WebKit::Download::continueDidReceiveResponse): Deleted.
* NetworkProcess/Downloads/Download.h:
(WebKit::Download::setBlobFileReferences): Deleted.
(WebKit::Download::request const): Deleted.
* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::startDownload):
(WebKit::DownloadManager::willDecidePendingDownloadDestination):
(WebKit::DownloadManager::convertNetworkLoadToDownload):
(WebKit::DownloadManager::continueDecidePendingDownloadDestination):
(WebKit::DownloadManager::resumeDownload):
(WebKit::DownloadManager::cancelDownload):
* NetworkProcess/Downloads/DownloadManager.h:
(WebKit::DownloadManager::startDownload):
* NetworkProcess/Downloads/PendingDownload.cpp:
* NetworkProcess/Downloads/PendingDownload.h:
* NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
* NetworkProcess/Downloads/ios/DownloadIOS.mm: Removed.
* NetworkProcess/Downloads/mac/DownloadMac.mm: Removed.
* NetworkProcess/NetworkCORSPreflightChecker.cpp:
* NetworkProcess/NetworkCORSPreflightChecker.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::loadPing):
* NetworkProcess/NetworkDataTask.cpp:
* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/NetworkDataTaskBlob.cpp:
* NetworkProcess/NetworkDataTaskBlob.h:
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::~NetworkLoad):
(WebKit::NetworkLoad::setDefersLoading):
(WebKit::NetworkLoad::cancel):
(WebKit::NetworkLoad::continueWillSendRequest):
(WebKit::NetworkLoad::continueDidReceiveResponse):
(WebKit::NetworkLoad::shouldCaptureExtraNetworkLoadMetrics const):
(WebKit::NetworkLoad::didReceiveResponseAsync): Deleted.
(WebKit::NetworkLoad::didReceiveBuffer): Deleted.
(WebKit::NetworkLoad::didFinishLoading): Deleted.
(WebKit::NetworkLoad::didFail): Deleted.
(WebKit::NetworkLoad::willSendRequestAsync): Deleted.
(WebKit::NetworkLoad::canAuthenticateAgainstProtectionSpaceAsync): Deleted.
(WebKit::NetworkLoad::shouldUseCredentialStorage): Deleted.
(WebKit::NetworkLoad::didReceiveAuthenticationChallenge): Deleted.
(WebKit::NetworkLoad::receivedCancellation): Deleted.
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/NetworkLoadParameters.h:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::clearCachedCredentials):
(WebKit::NetworkProcess::findPendingDownloadLocation):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::startNetworkLoad):
* NetworkProcess/NetworkSession.cpp:
* NetworkProcess/NetworkSession.h:
* NetworkProcess/PingLoad.cpp:
* NetworkProcess/PingLoad.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
* NetworkProcess/cocoa/NetworkSessionCocoa.h:
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
* NetworkProcess/mac/NetworkLoadMac.mm: Removed.
* NetworkProcess/mac/RemoteNetworkingContext.mm:
(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):
* Shared/Authentication/AuthenticationManager.cpp:
(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):
(WebKit::AuthenticationManager::useCredentialForSingleChallenge):
(WebKit::AuthenticationManager::continueWithoutCredentialForSingleChallenge):
(WebKit::AuthenticationManager::cancelSingleChallenge):
(WebKit::AuthenticationManager::performDefaultHandlingForSingleChallenge):
(WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge):
* Shared/Authentication/AuthenticationManager.h:
* Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm: Removed.
* Shared/SessionTracker.cpp:
(WebKit::SessionTracker::setSession):
(WebKit::SessionTracker::destroySession):
* Shared/SessionTracker.h:
* Shared/mac/CookieStorageShim.h: Removed.
* Shared/mac/CookieStorageShim.mm: Removed.
* UIProcess/API/APIDownloadClient.h:
(API::DownloadClient::didReceiveData):
(API::DownloadClient::shouldDecodeSourceDataOfMIMEType): Deleted.
* UIProcess/API/C/WKContext.cpp:
(WKContextSetDownloadClient):
* UIProcess/Cocoa/DownloadClient.h:
* UIProcess/Cocoa/DownloadClient.mm:
(WebKit::DownloadClient::shouldDecodeSourceDataOfMIMEType): Deleted.
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::willSendRequest):
(WebKit::DownloadProxy::didReceiveResponse):
(WebKit::DownloadProxy::shouldDecodeSourceDataOfMIMEType): Deleted.
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename): Deleted.
* UIProcess/Downloads/DownloadProxy.h:
* UIProcess/Downloads/DownloadProxy.messages.in:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::clearCachedCredentials):
* config.h:
2018-01-22 Youenn Fablet <youenn@apple.com>
SW: Make sure ServiceWorker loading and requests are correctly cleared by ITP
https://bugs.webkit.org/show_bug.cgi?id=181942
<rdar://problem/35132091>
Reviewed by Chris Dumez.
Add ServiceWorkerRegistrations and DOMCache as persistent data to be cleared according ITP decisions.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::monitoredDataTypes):
2018-01-22 Chris Dumez <cdumez@apple.com>
Add release logging to help debug issues related to service workers
https://bugs.webkit.org/show_bug.cgi?id=181935
<rdar://problem/36735900>
Reviewed by Brady Eidson.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::didFinishFetch):
(WebKit::WebSWServerConnection::didFailFetch):
(WebKit::WebSWServerConnection::didNotHandleFetch):
2018-01-22 Brent Fulgham <bfulgham@apple.com>
[iOS] REGRESSION (r225763): Allow access to power logging features
https://bugs.webkit.org/show_bug.cgi?id=181938
<rdar://problem/36442803>
Reviewed by Eric Carlson.
I denied access to the powerlog facility in r225763, not realizing that it
gets activated in certain logging scenarios. This patch reverts this change.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2018-01-22 Brent Fulgham <bfulgham@apple.com>
[macOS, iOS] Allow accss to AVFoundation preference
https://bugs.webkit.org/show_bug.cgi?id=181937
<rdar://problem/33137029>
Reviewed by Eric Carlson.
Grant access to the 'com.apple.avfoundation.frecents' preference.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
* WebProcess/com.apple.WebProcess.sb.in:
2018-01-22 Brady Eidson <beidson@apple.com>
In WebKit2, make the MessagePortChannelRegistry live in the UI process.
https://bugs.webkit.org/show_bug.cgi?id=181922
Reviewed by Andy Estes.
With all of the work that went into making MessagePorts be fully asynchronous
and to be process-aware, formally moving them out-of-process is just a matter
of adding WebKit IPC layers.
The basic unit of asynchronicity is "MessagePortChannelProvider", and this patch
adds both a WebMessagePortChannelProvider and UIMessagePortChannelProvider for
each side of the process divide.
* UIProcess/UIMessagePortChannelProvider.cpp: Added.
(WebKit::UIMessagePortChannelProvider::singleton):
(WebKit::UIMessagePortChannelProvider::UIMessagePortChannelProvider):
(WebKit::UIMessagePortChannelProvider::~UIMessagePortChannelProvider):
(WebKit::UIMessagePortChannelProvider::createNewMessagePortChannel):
(WebKit::UIMessagePortChannelProvider::entangleLocalPortInThisProcessToRemote):
(WebKit::UIMessagePortChannelProvider::messagePortDisentangled):
(WebKit::UIMessagePortChannelProvider::messagePortClosed):
(WebKit::UIMessagePortChannelProvider::takeAllMessagesForPort):
(WebKit::UIMessagePortChannelProvider::postMessageToRemote):
(WebKit::UIMessagePortChannelProvider::checkRemotePortForActivity):
(WebKit::UIMessagePortChannelProvider::checkProcessLocalPortForActivity):
* UIProcess/UIMessagePortChannelProvider.h: Added.
(WebKit::UIMessagePortChannelProvider::registry):
* UIProcess/WebPageProxy.cpp:
(WebKit::m_configurationPreferenceValues):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::processForIdentifier):
(WebKit::m_userMediaCaptureManagerProxy):
(WebKit::WebProcessProxy::~WebProcessProxy):
(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::createNewMessagePortChannel):
(WebKit::WebProcessProxy::entangleLocalPortInThisProcessToRemote):
(WebKit::WebProcessProxy::messagePortDisentangled):
(WebKit::WebProcessProxy::messagePortClosed):
(WebKit::WebProcessProxy::takeAllMessagesForPort):
(WebKit::WebProcessProxy::didDeliverMessagePortMessages):
(WebKit::WebProcessProxy::postMessageToRemote):
(WebKit::WebProcessProxy::checkRemotePortForActivity):
(WebKit::WebProcessProxy::checkProcessLocalPortForActivity):
(WebKit::WebProcessProxy::didCheckProcessLocalPortForActivity):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp: Added.
(WebKit::WebMessagePortChannelProvider::singleton):
(WebKit::WebMessagePortChannelProvider::WebMessagePortChannelProvider):
(WebKit::WebMessagePortChannelProvider::~WebMessagePortChannelProvider):
(WebKit::WebMessagePortChannelProvider::createNewMessagePortChannel):
(WebKit::WebMessagePortChannelProvider::entangleLocalPortInThisProcessToRemote):
(WebKit::WebMessagePortChannelProvider::messagePortDisentangled):
(WebKit::WebMessagePortChannelProvider::messagePortClosed):
(WebKit::WebMessagePortChannelProvider::takeAllMessagesForPort):
(WebKit::WebMessagePortChannelProvider::didTakeAllMessagesForPort):
(WebKit::WebMessagePortChannelProvider::didCheckRemotePortForActivity):
(WebKit::WebMessagePortChannelProvider::postMessageToRemote):
(WebKit::WebMessagePortChannelProvider::checkProcessLocalPortForActivity):
(WebKit::WebMessagePortChannelProvider::checkRemotePortForActivity):
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h: Added.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeProcess):
(WebKit::WebProcess::didTakeAllMessagesForPort):
(WebKit::WebProcess::checkProcessLocalPortForActivity):
(WebKit::WebProcess::didCheckRemotePortForActivity):
(WebKit::WebProcess::messagesAvailableForPort):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
2018-01-22 Youenn Fablet <youenn@apple.com>
Bump default cache storage quota to 50MB
https://bugs.webkit.org/show_bug.cgi?id=181924
Reviewed by Chris Dumez.
Existing web sites use more than 20 MB.
* UIProcess/WebsiteData/WebsiteDataStore.h:
2018-01-22 Zan Dobersek <zdobersek@igalia.com>
Unreviewed build fix after r227292. Fixing a bad copy-paste that broke
the GTK+ debug builds.
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
(WebKit::convertCairoSurfaceToShareableBitmap):
2018-01-22 Zan Dobersek <zdobersek@igalia.com>
[Cairo] Refactor PlatformContextCairo::drawSurfaceToContext() into a Cairo operation
https://bugs.webkit.org/show_bug.cgi?id=181930
Reviewed by Carlos Garcia Campos.
Call sites of the PlatformContextCairo::drawSurfaceToContext() method
are adjusted to now call Cairo::drawSurface() and properly pass the
PlatformContextCairo object to the function.
* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::paint):
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
(WebKit::convertCairoSurfaceToShareableBitmap):
2018-01-21 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Fix compile warning.
Use #include instead of #import in cross-platform code.
* Shared/WebPreferencesDefaultValues.cpp:
2018-01-21 Ryosuke Niwa <rniwa@webkit.org>
Turning off custom pasteboard data doesn't actually turn it off in WK2
https://bugs.webkit.org/show_bug.cgi?id=181920
<rdar://problem/36686429>
Reviewed by Wenson Hsieh.
Moved the code to decide when to enable custom pasteboard data from WebCore
since we never enable this feature in WebKit1.
* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.cpp:
(defaultCustomPasteboardDataEnabled): Added.
* Shared/WebPreferencesDefaultValues.h:
2018-01-21 Wenson Hsieh <wenson_hsieh@apple.com>
Add a new feature flag for EXTRA_ZOOM_MODE and reintroduce AdditionalFeatureDefines.h
https://bugs.webkit.org/show_bug.cgi?id=181918
Reviewed by Tim Horton.
Add EXTRA_ZOOM_MODE to FeatureDefines.xconfig (off by default).
* Configurations/FeatureDefines.xcconfig:
2018-01-21 Eric Carlson <eric.carlson@apple.com>
Resign NowPlaying status when no media element is eligible
https://bugs.webkit.org/show_bug.cgi?id=181914
<rdar://problem/35294116>
Reviewed by Jer Noble.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _requestActiveNowPlayingSessionInfo:]): Return registeredAsNowPlayingApplication
status.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::nowPlayingInfoCallback): Ditto.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::requestActiveNowPlayingSessionInfo): Ditto.
2018-01-20 Andy Estes <aestes@apple.com>
[Apple Pay] Stop eagerly loading PassKit.framework
https://bugs.webkit.org/show_bug.cgi?id=181911
<rdar://problem/36555369>
Reviewed by Tim Horton.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
Removed availablePaymentNetworks from WebPageCreationParameters.
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetApplePayEnabled):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
Stopped calling WebPaymentCoordinatorProxy::platformSupportsPayments().
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.cpp:
(WebKit::WebPaymentCoordinatorProxy::availablePaymentNetworks):
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.messages.in:
Added message AvailablePaymentNetworks, which synchronously returns a Vector of payment
networks.
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):
Returned false if PassKitLibrary() fails.
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):
Called completionHandler with false if PassKitLibrary() fails.
(WebKit::WebPaymentCoordinatorProxy::platformAvailablePaymentNetworks):
(WebKit::WebPaymentCoordinatorProxy::availablePaymentNetworks):
Renamed availablePaymentNetworks to platformAvailablePaymentNetworks
(WebKit::WebPaymentCoordinatorProxy::platformSupportsPayments): Deleted.
* UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):
Called completionHandler with false if PassKitLibrary() fails.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
Stopped calling WebPaymentCoordinatorProxy::availablePaymentNetworks().
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::availablePaymentNetworks):
(WebKit::WebPaymentCoordinator::validatedPaymentNetwork):
* WebProcess/ApplePay/WebPaymentCoordinator.h:
Implemented PaymentCoordinatorClient::validatedPaymentNetwork(). m_availablePaymentNetworks
starts off as std::nullopt, but is initialized by sending the AvailablePaymentNetworks sync
message the first time it's accessed.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
Stopped setting PageConfiguration::availablePaymentNetworks.
2018-01-20 Jer Noble <jer.noble@apple.com>
Release ASSERT when reloading Vimeo page @ WebCore: WebCore::Document::updateLayout
https://bugs.webkit.org/show_bug.cgi?id=181840
<rdar://problem/36186214>
Reviewed by Simon Fraser.
Updating layout while the document is suspended or stopped is unsafe.
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::inlineVideoFrame):
2018-01-20 Chris Dumez <cdumez@apple.com>
DOMCache data sometimes not properly removed when clearing data for a given origin
https://bugs.webkit.org/show_bug.cgi?id=181887
<rdar://problem/36671239>
Reviewed by Youenn Fablet.
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::clearCachesForOrigin):
This code was iterating through folders on disk, then reading the folder's origin
from the origin file on disk. Then, if the origin would match the one we want to
delete, it would regenerate the folder path using cachesRootPath(*folderOrigin).
I don't know how but on my machine, I was ended up in a state where the path
generated by cachesRootPath(*folderOrigin) differed from the actual folder path
we read the origin from (Likely a different salt?). To make the code more robust,
I updated the code to delete "folderPath", which is the path we read the origin
from.
2018-01-19 Zach Li <zacharyli323@gmail.com>
Expose Safe Browsing SPI
https://bugs.webkit.org/show_bug.cgi?id=181804
<rdar://problem/36626946>
Reviewed by Dan Bernstein.
If client is using Apple internal SDK, then we can just import the header; if not,
then we declare necessary symbols that client will need.
* Configurations/WebKit.xcconfig:
Only link against SafariSafeBrowsing framework on macOS High Sierra
and iOS 11 and above. Weak link against SafariSafeBrowsing framework
because it is not present on the Base system.
* Platform/spi/Cocoa/SafeBrowsingSPI.h: Added.
* WebKit.xcodeproj/project.pbxproj:
Added SafeBrowsingSPI.h.
* WebKitLibraries/WebKitPrivateFrameworkStubs/iOS/11/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd:
Added.
2018-01-19 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed build fix, removed unused lambda capture.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
2018-01-19 John Wilander <wilander@apple.com>
Resource Load Statistics: Remove unused calls to WebResourceLoadStatisticsStore:logTestingEvent() to fix API test
https://bugs.webkit.org/show_bug.cgi?id=181890
<rdar://problem/36674772>
Unreviewed API test fix.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
2018-01-19 Youenn Fablet <youenn@apple.com>
Do not go to the storage process when registering a service worker client if there is no service worker registered
https://bugs.webkit.org/show_bug.cgi?id=181740
<rdar://problem/36650400>
Reviewed by Chris Dumez.
UIProcess notifies all web processes to register their service worker clients when spinning the service worker process.
Add private API to set the number of web processes for testing purposes.
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _setMaximumNumberOfProcesses:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::registerServiceWorkerClients):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
2018-01-19 Dean Jackson <dino@apple.com>
REGRESSION (r221092): Swipe actions are hard to perform in FastMail app
https://bugs.webkit.org/show_bug.cgi?id=181817
<rdar://problem/35274055>
Reviewed by Simon Fraser.
Add a linked-on-or-after check to set passive touch listeners on document in WebCore.
* CMakeLists.txt:
* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.cpp: Copied from Source/WebKit/UIProcess/Cocoa/VersionChecks.h.
(defaultPassiveTouchListenersAsDefaultOnDocument):
* Shared/WebPreferencesDefaultValues.h:
* UIProcess/Cocoa/VersionChecks.h:
* WebKit.xcodeproj/project.pbxproj:
2018-01-19 Joseph Pecoraro <pecoraro@apple.com>
[Cocoa] _WKNSWindowExtras.h: Add missing availability annotation
https://bugs.webkit.org/show_bug.cgi?id=181868
Reviewed by Dan Bernstein.
* Shared/API/Cocoa/_WKNSWindowExtras.h:
2018-01-19 John Wilander <wilander@apple.com>
Resource Load Statistics: Add void to argument list to fix build with -Wstrict-prototypes
https://bugs.webkit.org/show_bug.cgi?id=181870
<rdar://problem/36666750>
Unreviewed build fix.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
2018-01-19 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r227211.
Breaks iOS Simulator tests.
Reverted changeset:
"Expose Safe Browsing SPI"
https://bugs.webkit.org/show_bug.cgi?id=181804
https://trac.webkit.org/changeset/227211
2018-01-19 John Wilander <wilander@apple.com>
Resource Load Statistics: Implement callback support for removal of WebsiteDataType::ResourceLoadStatistics
https://bugs.webkit.org/show_bug.cgi?id=181822
https://bugs.webkit.org/show_bug.cgi?id=175263
https://bugs.webkit.org/show_bug.cgi?id=178536
https://bugs.webkit.org/show_bug.cgi?id=181223
https://bugs.webkit.org/show_bug.cgi?id=181482
<rdar://problem/33491222>
<rdar://problem/33805293>
<rdar://problem/36332683>
<rdar://problem/36549026>
Reviewed by Alex Christensen.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStore]):
Calls the new API with no-op completion handler.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStore:]):
New API with completion handler.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]):
Calls the new API with no-op completion handler.
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:completionHandler:]):
New API with completion handler.
* UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
* UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
(WebKit::ResourceLoadStatisticsPersistentStorage::populateMemoryStoreFromDisk):
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::grandfatherExistingWebsiteData):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::clearResourceLoadStatisticsInWebProcesses):
* UIProcess/WebsiteData/WebsiteDataStore.h:
2018-01-19 Daniel Bates <dabates@apple.com>
REGRESSION (r223149): Ref WebPageProxy objects before calling their functionality
https://bugs.webkit.org/show_bug.cgi?id=181863
<rdar://problem/36662452>
Reviewed by Chris Dumez.
More fix ups following r223149. When notifying all pages of a process state change we need to
take care to ref all the pages before iterating over them and notifying them of the change.
Notifying a page of such a state change may ultimately delegate to the embedding client. And
the embedding client can do anything, including deallocating one or more pages.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didBecomeUnresponsive):
(WebKit::WebProcessProxy::didBecomeResponsive):
(WebKit::WebProcessProxy::willChangeIsResponsive):
(WebKit::WebProcessProxy::didChangeIsResponsive):
(WebKit::WebProcessProxy::requestTermination):
2018-01-19 Chris Dumez <cdumez@apple.com>
The WebContent process should not process incoming IPC while waiting for a sync IPC reply
https://bugs.webkit.org/show_bug.cgi?id=181560
Reviewed by Ryosuke Niwa.
The WebContent process should not process incoming IPC while waiting for a sync IPC reply.
This is causing hard-to-debug crashes because developers often assume the state does not
change during a sendSync() call.
* Platform/IPC/Connection.cpp:
(IPC::Connection::waitForSyncReply):
* Platform/IPC/Connection.h:
(IPC::Connection::setShouldProcessIncomingMessagesWhileWaitingForSyncReply):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::testIncomingSyncIPCMessageWhileWaitingForSyncReply):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::NetworkProcessConnection):
* WebProcess/Storage/WebToStorageProcessConnection.cpp:
(WebKit::WebToStorageProcessConnection::WebToStorageProcessConnection):
* WebProcess/WebConnectionToUIProcess.cpp:
(WebKit::WebConnectionToUIProcess::WebConnectionToUIProcess):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::testIncomingSyncIPCMessageWhileWaitingForSyncReply):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::undo):
(WebKit::WebEditorClient::redo):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::syncIPCMessageWhileWaitingForSyncReplyForTesting):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
2018-01-19 Keith Miller <keith_miller@apple.com>
HaveInternalSDK includes should be "#include?"
https://bugs.webkit.org/show_bug.cgi?id=179670
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
2018-01-19 Daniel Bates <dabates@apple.com>
Fix misspelling; substitute willDetachRenderer for willDetatchRenderer.
* WebProcess/Plugins/PDF/PDFPlugin.h:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::willDetachRenderer):
(WebKit::PDFPlugin::willDetatchRenderer): Deleted.
* WebProcess/Plugins/Plugin.h:
(WebKit::Plugin::willDetachRenderer):
(WebKit::Plugin::willDetatchRenderer): Deleted.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::willDetachRenderer):
(WebKit::PluginView::willDetatchRenderer): Deleted.
* WebProcess/Plugins/PluginView.h:
2018-01-19 Zach Li <zacharyli323@gmail.com>
Expose Safe Browsing SPI
https://bugs.webkit.org/show_bug.cgi?id=181804
<rdar://problem/36626946>
Reviewed by Alex Christensen.
If client is using Apple internal SDK, then we can just import the header; if not,
then we declare necessary symbols that client will need.
* Configurations/WebKit.xcconfig:
Only link against SafariSafeBrowsing framework on macOS High Sierra
and iOS 11 and above. Weak link against SafariSafeBrowsing framework
because it is not present on the Base system.
* Platform/spi/Cocoa/SafeBrowsingSPI.h: Added.
* WebKit.xcodeproj/project.pbxproj:
Added SafeBrowsingSPI.h.
* WebKitLibraries/WebKitPrivateFrameworkStubs/iOS/11/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd:
Added.
2018-01-18 Chris Dumez <cdumez@apple.com>
We should be able to terminate service workers that are unresponsive
https://bugs.webkit.org/show_bug.cgi?id=181563
<rdar://problem/35280031>
Reviewed by Alex Christensen.
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::terminateWorker):
Use a 10 second timeout for forcefully exiting the service worker process when
the service worker in question fails to terminate.
(WebKit::WebSWContextManagerConnection::syncTerminateWorker):
Use a 100ms timeout for forcefully exiting the service worker process when
the service worker in question fails to terminate. This method is only called
from the layout tests, which is why we use a very short timeout.
2018-01-18 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, suppress deprecation warnings to fix the build with a newer SDK.
* UIProcess/ios/WKPDFPageNumberIndicator.mm:
(-[WKPDFPageNumberIndicator _makeRoundedCorners]):
2018-01-18 Youenn Fablet <youenn@apple.com>
Do not go to the storage process when loading a main resource if there is no service worker registered
https://bugs.webkit.org/show_bug.cgi?id=181395
Reviewed by Chris Dumez.
Add a new web process creation parameter to know whether there is any service worker registered at web process creation time.
If there is none, the web process will then start to load HTTP resources from the network.
The connection to the storage process is then executed when receiving the first bytes of the main resource.
This connection is needed as other web processes may create service workers at any given time.
If there is one registered service worker, the web process will wait for its connection to the storage process to be active.
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::hasRegisteredServiceWorkers):
* UIProcess/ServiceWorkerProcessProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess):
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession):
* WebProcess/Storage/WebServiceWorkerProvider.h:
* WebProcess/Storage/WebToStorageProcessConnection.h:
(WebKit::WebToStorageProcessConnection::existingServiceWorkerConnectionForSession):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
2018-01-18 Chris Dumez <cdumez@apple.com>
Regression(r223149): WebProcessProxy::didClose() no longer refs WebPageProxy objects
https://bugs.webkit.org/show_bug.cgi?id=181771
<rdar://problem/36566237>
Reviewed by Brady Eidson.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didClose):
Use copyToVectorOf<RefPtr<WebPageProxy>>() to maintain pre-r223149 behavior
and ref the pages.
2018-01-18 Dan Bernstein <mitz@apple.com>
[Xcode] Streamline and future-proof target-macOS-version-dependent build setting definitions
https://bugs.webkit.org/show_bug.cgi?id=181803
Reviewed by Tim Horton.
* Configurations/Base.xcconfig: Updated.
* Configurations/DebugRelease.xcconfig: Ditto.
* Configurations/FeatureDefines.xcconfig: Adopted macOSTargetConditionals helpers.
* Configurations/Version.xcconfig: Updated.
* Configurations/macOSTargetConditionals.xcconfig: Added. Defines helper build settings
useful for defining settings that depend on the target macOS version.
2018-01-18 Chris Dumez <cdumez@apple.com>
Service Workers restored from persistent storage have 'redundant' state
https://bugs.webkit.org/show_bug.cgi?id=181749
<rdar://problem/36556486>
Reviewed by Youenn Fablet.
Allow service workers to intercept custom protocol loads as this is useful for
API testing.
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):
(WebKit::WebLoaderStrategy::tryLoadingUsingURLSchemeHandler):
* WebProcess/Network/WebLoaderStrategy.h:
2018-01-18 Brent Fulgham <bfulgham@apple.com>
REGRESSION(r225858): Sandbox violations due to blocked access to Spotlight search preferences
https://bugs.webkit.org/show_bug.cgi?id=181797
<rdar://problem/36546412>
Reviewed by Eric Carlson.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Add the read permission for
'com.apple.lookup.shared' to support DataDetectors.
2018-01-17 John Wilander <wilander@apple.com>
Resource Load Statistics: Block cookies for prevalent resources without user interaction
https://bugs.webkit.org/show_bug.cgi?id=177394
<rdar://problem/34613960>
Reviewed by Alex Christensen.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
Now has m_hasBeenSetToUseStatelessCookieStorage to handle
cookie blocking.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::statelessCookieStorage):
Returns singleton empty, deny-all cookie storage for cookie blocking.
The ugly pragma instructions for clang are because the NSString
parameter for _initWithIdentifier was not marked nullable pre-Sierra.
(WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy):
Instead of just decision making, this now applies the policy.
(WebKit::NetworkDataTaskCocoa::applyCookiePartitioningPolicy):
New method.
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
Now blocks cookies for domains where cookies will be purged anyway.
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
Now blocks cookies for domains where cookies will be purged anyway.
(WebKit::shouldChangePartition): Deleted.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
Now downgrades for blocked cookies instead of partitioned cookies.
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
Now downgrades for blocked cookies instead of partitioned cookies.
2018-01-17 Stephan Szabo <stephan.szabo@sony.com>
[Curl] Use ResourceRequest::encodeWithPlatformData()
https://bugs.webkit.org/show_bug.cgi?id=181768
Reviewed by Alex Christensen.
* Shared/curl/WebCoreArgumentCodersCurl.cpp:
(IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
2018-01-17 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r227076.
This breaks internal builds
Reverted changeset:
"Resource Load Statistics: Block cookies for prevalent
resources without user interaction"
https://bugs.webkit.org/show_bug.cgi?id=177394
https://trac.webkit.org/changeset/227076
2018-01-17 Michael Catanzaro <mcatanzaro@igalia.com>
WEBKIT_FRAMEWORK should not modify file-global include directories
https://bugs.webkit.org/show_bug.cgi?id=181656
Reviewed by Konstantin Tokarev.
* PlatformGTK.cmake:
* PlatformWPE.cmake:
2018-01-17 Youenn Fablet <youenn@apple.com>
Put fetch request keepAlive behind a runtime flag
https://bugs.webkit.org/show_bug.cgi?id=181592
Reviewed by Chris Dumez.
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetFetchAPIKeepAliveEnabled):
(WKPreferencesGetFetchAPIKeepAliveEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
2018-01-17 John Wilander <wilander@apple.com>
Resource Load Statistics: Block cookies for prevalent resources without user interaction
https://bugs.webkit.org/show_bug.cgi?id=177394
<rdar://problem/34613960>
Reviewed by Alex Christensen.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
Now has m_hasBeenSetToUseStatelessCookieStorage to handle
cookie blocking.
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::statelessCookieStorage):
Returns singleton empty, deny-all cookie storage for cookie blocking.
(WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy):
Instead of just decision making, this now applies the policy.
(WebKit::NetworkDataTaskCocoa::applyCookiePartitioningPolicy):
New method.
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
Now blocks cookies for domains where cookies will be purged anyway.
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
Now blocks cookies for domains where cookies will be purged anyway.
(WebKit::shouldChangePartition): Deleted.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
Now downgrades for blocked cookies instead of partitioned cookies.
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
Now downgrades for blocked cookies instead of partitioned cookies.
2018-01-17 Daniel Bates <dabates@apple.com>
REGRESSION (r222795): Cardiogram never signs in
https://bugs.webkit.org/show_bug.cgi?id=181693
<rdar://problem/36286293>
Reviewed by Ryosuke Niwa.
Exempt Cardiogram from the XHR header restrictions in r222795.
Following r222795 only Dashboard widgets are allowed to set arbitrary XHR headers.
However Cardiogram also depends on such functionality.
* Shared/WebPreferences.yaml:
* UIProcess/API/Cocoa/WKWebView.mm:
(shouldAllowSettingAnyXHRHeaderFromFileURLs):
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/Cocoa/VersionChecks.h:
2018-01-17 Wenson Hsieh <wenson_hsieh@apple.com>
Add injected bundle SPI to replace subresource URLs when dropping or pasting rich content
https://bugs.webkit.org/show_bug.cgi?id=181637
<rdar://problem/36508471>
Reviewed by Tim Horton.
Add new injected bundle SPI, replacementURLForResource, which clients may use to provide a replacement URL to
represent an archive resource, given the resource's data and MIME type.
* WebProcess/InjectedBundle/API/APIInjectedBundleEditorClient.h:
(API::InjectedBundle::EditorClient::replacementURLForResource):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
* WebProcess/InjectedBundle/API/c/WKBundlePageEditorClient.h:
Add replacementURLForResource, and also bump the current injected bundle editor client version to 2.
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
* WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
(WebKit::InjectedBundlePageEditorClient::replacementURLForResource):
* WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::replacementURLForResource):
* WebProcess/WebCoreSupport/WebEditorClient.h:
2018-01-17 Zan Dobersek <zdobersek@igalia.com>
[Cairo] Don't mirror global alpha and image interpolation quality state values in PlatformContextCairo
https://bugs.webkit.org/show_bug.cgi?id=181725
Reviewed by Carlos Garcia Campos.
* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::paint):
Adjust the PlatformContextCairo::drawSurfaceToContext() invocation.
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
(WebKit::convertCairoSurfaceToShareableBitmap): Ditto.
2018-01-17 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.6 release.
* gtk/NEWS: Add release notes for 2.19.6.
2018-01-17 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
https://bugs.webkit.org/show_bug.cgi?id=179914
Reviewed by Žan Doberšek.
Add symbols detected by check-for-global-bss-symbols-in-webkigtk-libs to the version script.
* webkitglib-symbols.map:
2018-01-17 Youenn Fablet <youenn@apple.com>
Clear Caches volatile storage as a memory optimization.
https://bugs.webkit.org/show_bug.cgi?id=181643
Reviewed by Chris Dumez.
clearMemoryRepresentation clears m_caches which exposes data potentially stored in m_volatileStorage.
Clearing m_volatileStorage allows releasing some memory.
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::clearMemoryRepresentation):
2018-01-17 Zan Dobersek <zdobersek@igalia.com>
[Cairo] Use one-time ShadowBlur objects when performing shadowing
https://bugs.webkit.org/show_bug.cgi?id=181720
Reviewed by Carlos Garcia Campos.
* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::paint):
Adjust the PlatformContextCairo::drawSurfaceToContext() invocation.
* WebProcess/WebCoreSupport/gtk/WebDragClientGtk.cpp:
(WebKit::convertCairoSurfaceToShareableBitmap): Ditto.
2018-01-16 Fujii Hironori <Hironori.Fujii@sony.com>
[CMake] Remove WebCoreDerivedSources library target
https://bugs.webkit.org/show_bug.cgi?id=181664
Reviewed by Carlos Garcia Campos.
* CMakeLists.txt: Do not link WebCoreDerivedSources.
* PlatformGTK.cmake: Appended WebCore after WebCorePlatformGTK in WebKit_LIBRARIES.
* PlatformWin.cmake: Ditto.
2018-01-16 Alex Christensen <achristensen@webkit.org>
Merge sync and async code paths for getting context menus
https://bugs.webkit.org/show_bug.cgi?id=181423
Reviewed by Joseph Pecoraro.
What a mess. We had a code path for asynchronous context menu generation and a different one for synchronous context menu generation.
This makes it so there is just one. At the API level we see if there is an asynchronous delegate to call, then synchronous.
There is a subtle theoretical change in behaviour because m_page.contextMenuClient().showContextMenu is now called for the asynchronous
case and it wasn't before, but the one C API client that uses this has nullptr as it's WKPageShowContextMenuCallback, so we won't break anything!
* UIProcess/API/APIContextMenuClient.h:
(API::ContextMenuClient::getContextMenuFromProposedMenu):
(API::ContextMenuClient::getContextMenuFromProposedMenuAsync): Deleted.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageContextMenuClient):
* UIProcess/API/glib/WebKitContextMenuClient.cpp:
* UIProcess/WebContextMenuProxy.h:
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::show):
(WebKit::WebContextMenuProxyGtk::showContextMenuWithItems):
* UIProcess/gtk/WebContextMenuProxyGtk.h:
* UIProcess/mac/WebContextMenuProxyMac.h:
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::showContextMenuWithItems):
(WebKit::WebContextMenuProxyMac::showContextMenu):
* UIProcess/wpe/WebContextMenuProxyWPE.h:
2018-01-16 Michael Catanzaro <mcatanzaro@igalia.com>
Don't link WebKit target directly to JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=181688
Reviewed by Alex Christensen.
It's safer if we only link to the next lower-layered lib in the stack, so let's just link
directly to WebCore instead.
And WPE doesn't need to specify it twice.
* CMakeLists.txt:
* PlatformMac.cmake:
* PlatformWPE.cmake:
2018-01-16 Eric Carlson <eric.carlson@apple.com>
AVSampleBufferDisplayLayer should be flushed when application activates
https://bugs.webkit.org/show_bug.cgi?id=181623
<rdar://problem/36487738>
Reviewed by Darin Adler.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::applicationWillResignActive): Call page.
(WebKit::WebPage::applicationDidEnterBackground): Ditto, let it call libWebRTCProvider.
(WebKit::WebPage::applicationWillEnterForeground): Call page.
(WebKit::WebPage::applicationDidBecomeActive): Ditto, let it call libWebRTCProvider.
2018-01-16 Zach Li <zachli@apple.com>
Add pop-up policy support in website policies.
https://bugs.webkit.org/show_bug.cgi?id=181544.
rdar://problem/30521400.
Reviewed by Alex Christensen.
* Shared/WebsitePoliciesData.cpp: Encode and decode
pop-up policy.
(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
Apply the pop-up policy from website policies to the
document loader.
* Shared/WebsitePoliciesData.h:
* Shared/WebsitePopUpPolicy.h:
Added for declaring enum WebsitePopUpPolicy.
* UIProcess/API/APIWforebsitePolicies.cpp:
Include pop-up policy in website policies.
(API::WebsitePolicies::WebsitePolicies):
(API::WebsitePolicies::data):
* UIProcess/API/APIWebsitePolicies.h:
* UIProcess/API/C/WKWebsitePolicies.cpp:
Added C API to get and set pop-up policy on
website policies.
(WKWebsitePoliciesGetPopUpPolicy):
(WKWebsitePoliciesSetPopUpPolicy):
* UIProcess/API/C/WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
Added Obj-C API to get and set pop-up policy
on website policies.
* UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
(-[_WKWebsitePolicies setPopUpPolicy:]):
(-[_WKWebsitePolicies popUpPolicy]):
* WebKit.xcodeproj/project.pbxproj:
Added WebsitePopUpPolicy.h.
2018-01-16 Fujii Hironori <Hironori.Fujii@sony.com>
[CMake][Mac] Fix the build errors
https://bugs.webkit.org/show_bug.cgi?id=181665
Reviewed by Alex Christensen.
* CMakeLists.txt: Added TouchBarMenuData.cpp and TouchBarMenuItemData.cpp to compile.
* PlatformMac.cmake: Added _WKApplicationManifest.mm, WKInspectorWKWebView.mm and WKInspectorWindow.mm to compile.
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _webPageContentProcessCount]): Call WebProcessPool::serviceWorkerProxy() only if ENABLE(SERVICE_WORKER).
2018-01-16 Wenson Hsieh <wenson_hsieh@apple.com>
[Attachment Support] Provide the `src` of an attachment to the UI delegate when an attachment is inserted
https://bugs.webkit.org/show_bug.cgi?id=181638
<rdar://problem/36508702>
Reviewed by Dan Bernstein.
Add a `source` parameter to the `didInsertAttachment` codepath for notifying WebKit2 clients when attachment
elements are inserted into the document.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didInsertAttachment:withSource:]):
(-[WKWebView _didInsertAttachment:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/Cocoa/PageClientImplCocoa.h:
* UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::didInsertAttachment):
* UIProcess/PageClient.h:
(WebKit::PageClient::didInsertAttachment):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didInsertAttachment):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::didInsertAttachment):
* WebProcess/WebCoreSupport/WebEditorClient.h:
2018-01-15 Youenn Fablet <youenn@apple.com>
ASSERTION FAILED: m_ptr under WebKit::CacheStorage::Caches::writeRecord
https://bugs.webkit.org/show_bug.cgi?id=181401
<rdar://problem/36379022>
Reviewed by Darin Adler.
m_isInitialized is true but m_storage is set to nullptr when calling writeRecord.
The only case seems to be if:
- We are doing persistent storage
- We are traversing the storage to do the initialization. At that point m_storage is set to a correct value.
- clearMemoryRepresentation is called, thus setting m_storage to nullptr and m_isInitialized to false.
We fix this by making clearMemoryRepresentation a no-op if we are initializing the caches.
clearMemoryRepresentation is about cleaning the in-memory information of the caches and the memory representation is empty at init time.
Nullifying m_storage is a memory consumption optimization.
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::clearMemoryRepresentation):
2018-01-12 Wenson Hsieh <wenson_hsieh@apple.com>
Unreviewed, speculative build fix after r226899.
Add an empty implementation for PageClient::startDrag.
* UIProcess/PageClient.h:
(WebKit::PageClient::startDrag):
2018-01-12 Brent Fulgham <bfulgham@apple.com>
[iOS] Remove unneeded accessibility-related sandbox rules
https://bugs.webkit.org/show_bug.cgi?id=181619
<rdar://problem/36485356>
Reviewed by Eric Carlson.
Remove a number of sandbox exceptions that were in place for accessibility support. These are
not needed in the WebContent process, since Safari (not WebKit) handles the accessibility
interactions.
* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
2018-01-12 Keith Rollin <krollin@apple.com>
Logged JSON should escape "'s and \'s in strings.
https://bugs.webkit.org/show_bug.cgi?id=181608
Reviewed by Brent Fulgham.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::logCookieInformation const):
2018-01-12 Megan Gardner <megan_gardner@apple.com>
Unreviewed, fixing error in UIKitSPI.h.
* Platform/spi/ios/UIKitSPI.h:
2018-01-12 Megan Gardner <megan_gardner@apple.com>
Implement MultiDocument protocol for restoring focus to a WKWebView
https://bugs.webkit.org/show_bug.cgi?id=181510
Reviewed by Dan Bernstein.
Support the UIKit protocol for restoring focus to a what previously had focus.
WebKit already knows what node was previously being focused by the DOM, we merely
need to be asked to turn the focus on again.
Resubmitting https://trac.webkit.org/changeset/226826 as it broke internal builds
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _restoreFocusWithToken:]):
(-[WKContentView _preserveFocusWithToken:destructively:]):
2018-01-12 Youenn Fablet <youenn@apple.com>
WebProcess should pass the registration identifier and not the worker identifier for fetch events
https://bugs.webkit.org/show_bug.cgi?id=181591
Reviewed by Chris Dumez.
Use service worker registration identifier to compute the active service worker identifier responsible to handle the fetch event.
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::start):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::startFetch):
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::shouldHandleFetch):
2018-01-12 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r226826.
Breaks internal builds.
Reverted changeset:
"Implement MultiDocument protocol for restoring focus to a
WKWebView"
https://bugs.webkit.org/show_bug.cgi?id=181510
https://trac.webkit.org/changeset/226826
2018-01-12 Wenson Hsieh <wenson_hsieh@apple.com>
[WK2] Unify macOS and iOS codepaths in the UI process when starting a drag
https://bugs.webkit.org/show_bug.cgi?id=181574
Reviewed by Tim Horton.
Rearrange some macOS drag start logic in the UI process so that it uses the same codepaths in WebPageProxy as
iOS. Namely, startDrag should just forward the DragItem and drag image handle along to the appropriate views on
each platform (WKContentView and WebViewImpl).
There should be no change in behavior.
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
Both macOS and iOS now funnel through this method.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::startDrag):
(WebKit::WebViewImpl::dragImageForView): Deleted.
Rename dragImageForView to startDrag. Move the call to didStartDrag() here, and call dragCancelled() in the
case where we bailed from starting the drag (due to failing to create a drag image).
* UIProcess/PageClient.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::setDragImage): Deleted.
Rename setDragImage to startDrag.
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::startDrag):
(WebKit::PageClientImpl::setDragImage): Deleted.
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::startDrag): Deleted.
2018-01-12 Antoine Quint <graouts@apple.com>
Add support for the frames() timing function
https://bugs.webkit.org/show_bug.cgi?id=181585
<rdar://problem/36463317>
Reviewed by Dean.
Add the ability to endode and decode the frames() timing function.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<FramesTimingFunction>::encode):
(IPC::ArgumentCoder<FramesTimingFunction>::decode):
* Shared/WebCoreArgumentCoders.h:
* WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
(WebKit::PlatformCAAnimationRemote::Properties::encode const):
(WebKit::PlatformCAAnimationRemote::Properties::decode):
2018-01-11 Keith Miller <keith_miller@apple.com>
Rename ENABLE_ASYNC_ITERATION to ENABLE_JS_ASYNC_ITERATION
https://bugs.webkit.org/show_bug.cgi?id=181573
Reviewed by Simon Fraser.
* Configurations/FeatureDefines.xcconfig:
2018-01-11 Brent Fulgham <bfulgham@apple.com>
REGRESSION(r219530): ResourceLoadStatisticsPersistentStorage should be read-only in ephemeral sessions
https://bugs.webkit.org/show_bug.cgi?id=181136
<rdar://problem/36116604>
Reviewed by Chris Dumez.
Some uses of WebKit involve running a UIProcess as an ephemeral session for the life of the process. In this
case, we do not initialize the data path for the set of load statistics triggering an assertion.
We actually intended ephemeral sessions to consume the existing resource load data (presumably captured during
non-ephemeral browsing). This would be a read-only mode, where it would not add new entries to the load
statistics, but would take advantage of existing observations. Currently that does not happen (for this type
of WebKit embed), which forces each run as an ephemeral session to build up in-memory browsing data until it has
enough observations to begin modifying loads.
We need to set the ResourceLoadStatisticsPersistentStorage object to a "read only" mode in this case, so
that it read (but does not write) from this database.
Tested by ephemeral website data TestWebKitAPI tests.
* UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:
(WebKit::ResourceLoadStatisticsPersistentStorage::create): Added to allow creation of the right style of
Persistent Storage.
(WebKit::ResourceLoadStatisticsPersistentStorage::ResourceLoadStatisticsPersistentStorage): Initialize the
new data member.
(WebKit::ResourceLoadStatisticsPersistentStorage::asyncWriteTimerFired): RELEASE_ASSERT that we never run
this method when in "read only" mode.
(WebKit::ResourceLoadStatisticsPersistentStorage::writeMemoryStoreToDisk): Ditto.
(WebKit::ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore): Return early if asked to
schedule a write operation for a "read only" persistent store.
(WebKit::ResourceLoadStatisticsPersistentStorage::finishAllPendingWorkSynchronously): RELEASE_ASSERT if we
ever shut down in "read only" mode with an active write timer.
* UIProcess/ResourceLoadStatisticsPersistentStorage.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): Pass a flag indicating whether the
storage session is ephemeral or not.
* UIProcess/WebResourceLoadStatisticsStore.h:
2018-01-11 Keith Rollin <krollin@apple.com>
Add optional logging of ITP-related user interaction information
https://bugs.webkit.org/show_bug.cgi?id=181556
Reviewed by Brent Fulgham.
In order to support the tracking of the efficacy of Intelligent
Tracking Protection, add some logging indicating when the user
interacts with a page in a way that affects cookie partitioning. This
logging is off by default, and is enabled with `defaults write -g
WebKitLogCookieInformation -bool true`.
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
2018-01-11 Megan Gardner <megan_gardner@apple.com>
Implement MultiDocument protocol for restoring focus to a WKWebView
https://bugs.webkit.org/show_bug.cgi?id=181510
Reviewed by Dan Bernstein.
Support the UIKit protocol for restoring focus to a what previously had focus.
WebKit already has a method to silently remove and replace focus, without telling the
web process about the unfocus and refocusing, so we're just using that.
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _restoreFocusWithToken:]):
(-[WKContentView _preserveFocusWithToken:destructively:]):
2018-01-11 Wenson Hsieh <wenson_hsieh@apple.com>
Don't load inline data when requesting info for an attachment element backed by a file path
https://bugs.webkit.org/show_bug.cgi?id=181550
Reviewed by Tim Horton
See WebCore/ChangeLog for more information.
* UIProcess/API/Cocoa/_WKAttachment.mm:
(-[_WKAttachmentInfo initWithInfo:]):
(-[_WKAttachmentInfo fileLoadingError]):
(-[_WKAttachment requestInfo:]):
2018-01-11 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r226789 and r226794.
https://bugs.webkit.org/show_bug.cgi?id=181564
broke API tests (Requested by alexchristensen on #webkit).
Reverted changesets:
"Merge sync and async code paths for getting context menus"
https://bugs.webkit.org/show_bug.cgi?id=181423
https://trac.webkit.org/changeset/226789
"Revert changes accidentally committed with r226789."
https://bugs.webkit.org/show_bug.cgi?id=181423
https://trac.webkit.org/changeset/226794
2018-01-11 Wenson Hsieh <wenson_hsieh@apple.com>
Send PromisedBlobInfo to the client through DragItem instead of DragClient::prepareToDragPromisedBlob
https://bugs.webkit.org/show_bug.cgi?id=181497
Reviewed by Tim Horton.
Refactor drag and drop support for promised blob data, so that blob info is shipped across to the client layer
via DragItem in the DragClient::startDrag codepath, rather than via a separate prepareToDragPromisedBlob client
codepath that stages promised blob info.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::prepareToDragPromisedBlob): Deleted.
* UIProcess/PageClient.h:
(WebKit::PageClient::prepareToDragPromisedBlob): Deleted.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::prepareToDragPromisedBlob): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::prepareToDragPromisedBlob): Deleted.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startDrag:item:]):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::prepareToDragPromisedBlob): Deleted.
* WebProcess/WebCoreSupport/WebDragClient.cpp:
(WebKit::WebDragClient::prepareToDragPromisedBlob): Deleted.
* WebProcess/WebCoreSupport/WebDragClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::prepareToDragPromisedBlob): Deleted.
* WebProcess/WebPage/WebPage.h:
2018-01-09 Per Arne Vollan <pvollan@apple.com>
VoiceOver does not work when the WebContent process is using NSRunLoop.
https://bugs.webkit.org/show_bug.cgi?id=181331
<rdar://problem/36408004>
Reviewed by Brent Fulgham.
When the WebContent process is using NSRunLoop instead of the NSApplication run loop,
accessibility must be initialized for VoiceOver to work. This patch also switches to
using NSRunLoop in the WebContent process.
* Configurations/WebContentService.xcconfig:
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::AccessibilityProcessSuspendedNotification): Remove unneccessary workaround.
* WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist: Switch to NSRunLoop.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeProcess): Initialize accessibility.
2018-01-11 Don Olmstead <don.olmstead@sony.com>
WebContextMenuListenerProxy.cpp not including config on first line
https://bugs.webkit.org/show_bug.cgi?id=181552
Reviewed by Alex Christensen.
* UIProcess/WebContextMenuListenerProxy.cpp:
2018-01-11 Youenn Fablet <youenn@apple.com>
Redirected iframe loading with Request.redirect=follow should fail
https://bugs.webkit.org/show_bug.cgi?id=181491
Reviewed by Alex Christensen.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::validateResponse):
2018-01-11 Youenn Fablet <youenn@apple.com>
Replace WebRTCLegacyAPIDisabled by WebRTCLegacyAPIEnabled and switch off WebRTC legacy flag by default
https://bugs.webkit.org/show_bug.cgi?id=181480
Reviewed by Eric Carlson.
Renaming preference to WebRTCLegacyAPIEnabled for simplification and removing it from experimental feature.
Set it to off by default.
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebRTCLegacyAPIEnabled):
(WKPreferencesGetWebRTCLegacyAPIEnabled):
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _webRTCLegacyAPIEnabled]):
(-[WKPreferences _setWebRTCLegacyAPIEnabled:]):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2018-01-11 Alex Christensen <achristensen@webkit.org>
Merge sync and async code paths for getting context menus
https://bugs.webkit.org/show_bug.cgi?id=181423
Reviewed by Joseph Pecoraro.
What a mess. We had a code path for asynchronous context menu generation and a different one for synchronous context menu generation.
This makes it so there is just one. At the API level we see if there is an asynchronous delegate to call, then synchronous.
There is a subtle theoretical change in behaviour because m_page.contextMenuClient().showContextMenu is now called for the asynchronous
case and it wasn't before, but the one C API client that uses this has nullptr as it's WKPageShowContextMenuCallback, so we won't break anything!
* UIProcess/API/APIContextMenuClient.h:
(API::ContextMenuClient::getContextMenuFromProposedMenu):
(API::ContextMenuClient::getContextMenuFromProposedMenuAsync): Deleted.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageContextMenuClient):
* UIProcess/API/glib/WebKitContextMenuClient.cpp:
* UIProcess/WebContextMenuProxy.h:
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::show):
(WebKit::WebContextMenuProxyGtk::showContextMenuWithItems):
* UIProcess/gtk/WebContextMenuProxyGtk.h:
* UIProcess/mac/WebContextMenuProxyMac.h:
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::showContextMenuWithItems):
(WebKit::WebContextMenuProxyMac::showContextMenu):
* UIProcess/wpe/WebContextMenuProxyWPE.h:
2018-01-11 Wenson Hsieh <wenson_hsieh@apple.com>
[Attachment Support] Support dragging attachment elements out as files on iOS
https://bugs.webkit.org/show_bug.cgi?id=181199
<rdar://problem/36299316>
Reviewed by Tim Horton, Andy Estes and Joseph Pecoraro.
Implement support for registering and beginning a drag with promised blob info. See below for more detail.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKDragSessionContext addTemporaryDirectory:]):
(-[WKDragSessionContext cleanUpTemporaryDirectories]):
Introduce WKDragSessionContext, which represents the localContext of a UIDragSession initiated in WebKit. The
blob promise dragging codepath uses this to register temporary directories when saving blob data to a location
on disk; when all data transfers are finished, or if the drag interaction is being reset, we then use
-cleanUpTemporaryDirectories to remove each temporary directory.
(existingLocalDragSessionContext):
(ensureLocalDragSessionContext):
Helper methods to set the UIDragSession's localContext to a WKDragSessionContext and query for any existing
context.
(-[WKContentView cleanupInteraction]):
Before the content view's UIDragInteraction goes away, clean up any temporary directories added to the
UIDragSession.
(-[WKContentView _prepareToDragPromisedBlob:]):
When dragging with a promised blob, register a new item provider on the pasteboard representing the blob data,
along with any additional metadata associated with the blob. For the promise callback, call out to the network
process to write the blob data to a temporary path; when done, call the NSItemProvider's completion handler with
the temporary blob data location.
(-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]):
(-[WKContentView dragInteraction:sessionDidTransferItems:]):
Use this delegate hook as an opportunity to remove any temporary directories created when promised blob data is
requested upon drop. Since we know the drag session that has finished transferring data, we simply ask its local
context (a WKDragSessionContext) to remove any temporary filepaths it has created.
2018-01-10 Jeff Miller <jeffm@apple.com>
-[WKWebView _web_gestureEventWasNotHandledByWebCore:] should call -_gestureEventWasNotHandledByWebCore:
https://bugs.webkit.org/show_bug.cgi?id=181498
Reviewed by Alex Christensen.
WKView's API contract allows clients to override -_gestureEventWasNotHandledByWebCore:, and -[WKView
_web_gestureEventWasNotHandledByWebCore:] calls -_gestureEventWasNotHandledByWebCore: instead of
invoking WebViewImpl::gestureEventWasNotHandledByWebCoreFromViewOnly() directly. WKWebView should do
the same thing.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _web_gestureEventWasNotHandledByWebCore:]):
Call -_gestureEventWasNotHandledByWebCore:, which will call gestureEventWasNotHandledByWebCoreFromViewOnly().
2018-01-10 Wenson Hsieh <wenson_hsieh@apple.com>
REGRESSION(r222507): Composition highlight doesn't render when using IME
https://bugs.webkit.org/show_bug.cgi?id=181485
<rdar://problem/35896516>
Reviewed by Ryosuke Niwa.
Add plumbing for a `suppressUnderline` argument when setting marked text.
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetComposition):
* WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setCompositionForTesting):
* WebProcess/WebPage/WebPage.h:
2018-01-10 Tim Horton <timothy_horton@apple.com>
REGRESSION (r213590): Swipe from edge to go to previous page is significantly slower than tapping back button on Twitter
https://bugs.webkit.org/show_bug.cgi?id=181269
<rdar://problem/35110344>
Reviewed by Simon Fraser.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _processDidExit]):
(-[WKWebView _didCommitLayerTree:]):
When swiping to a page that set history.scrollRestoration = "manual",
we will never restore the scroll position. We will still restore
"state", but won't have a location. Currently, the code assumes that
it should wait to remove the swipe snapshot until the scroll position
is restored. Instead, wait until the "state" is restored, whether
or not that includes a scroll position/center point restoration.
Do this by making _firstTransactionIDAfterPageRestore an optional,
and reset it after it fires, so that we only run the restoration code
in _didCommitLayerTree for the first commit after state restoration,
not all subsequent commits. Then, tell ViewGestureController that
the scroll position has been restored even if the page opted out.
The reason that this is specific to pushState is that normal,
non-same-document loads bail from waiting for the scroll position
restoration in VGC::didReachMainFrameLoadTerminalState() (see the long
comment there for an explanation).
(-[WKWebView _beginBackSwipeForTesting]):
(-[WKWebView _completeBackSwipeForTesting]):
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Cocoa/ViewGestureController.h:
* UIProcess/ios/ViewGestureControllerIOS.mm:
(-[WKSwipeTransitionController transitionForDirection:]):
(WebKit::ViewGestureController::beginSimulatedSwipeInDirectionForTesting):
(WebKit::ViewGestureController::completeSimulatedSwipeInDirectionForTesting):
* UIProcess/mac/ViewGestureControllerMac.mm:
(WebKit::ViewGestureController::beginSimulatedSwipeInDirectionForTesting):
(WebKit::ViewGestureController::completeSimulatedSwipeInDirectionForTesting):
Add a mechanism to forcefully test swipe back. Instead of simulating
events like on Mac, we just talk to the UIKit internals and force
the interaction to start, pause, and then complete when we want.
2018-01-10 Brent Fulgham <bfulgham@apple.com>
Use protectedThis for the 'updatePrevalentDomainsToPartitionOrBlockCookies' lambda
https://bugs.webkit.org/show_bug.cgi?id=181452
<rdar://problem/36416912>
Reviewed by Chris Dumez.
We forgot to use a 'protectedThis' back in r225006 for one of the lambdas used by
the WebsiteDataStore for processing.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
2018-01-09 John Wilander <wilander@apple.com>
Storage Access API: Turn feature on by default in WebPreferences.yaml
https://bugs.webkit.org/show_bug.cgi?id=181458
Reviewed by Brent Fulgham.
* Shared/WebPreferences.yaml:
2018-01-09 Alex Christensen <achristensen@webkit.org>
WKOpenPanelParameters SPI should return autoreleased objects
https://bugs.webkit.org/show_bug.cgi?id=181457
<rdar://problem/35884960>
Reviewed by Tim Horton.
In r226607 I made a mistake by returning an object that has been released.
I instead follow a pattern of leaking and autoreleasing that we use elsewhere in the ObjC API.
* UIProcess/API/Cocoa/WKOpenPanelParameters.mm:
(-[WKOpenPanelParameters _acceptedMIMETypes]):
(-[WKOpenPanelParameters _acceptedFileExtensions]):
2018-01-09 Dan Bernstein <mitz@apple.com>
Removed some empty directories that were left behind
* WebProcess/Cookies/cf: Removed.
* WebProcess/ios: Removed.
2018-01-09 Paul Knight <pknight@apple.com>
Don't record dynamic spelling corrections while in an ephemeral browsing session
https://bugs.webkit.org/show_bug.cgi?id=181417
<rdar://problem/33309104>
Dynamic spelling correction responses are kept on disk. Avoid recording
these responses when in an ephemeral session.
Reviewed by Tim Horton and Wenson Hsieh.
* UIProcess/mac/CorrectionPanel.h:
* UIProcess/mac/CorrectionPanel.mm:
(WebKit::CorrectionPanel::recordAutocorrectionResponse):
Add a WebViewImpl parameter so we can query the current session.
Return early before recording the response if the session is
ephemeral.
(WebKit::CorrectionPanel::handleAcceptedReplacement):
Update a caller to include the new parameter.
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::recordAutocorrectionResponse):
Ditto.
2018-01-09 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.5 release.
* gtk/NEWS: Add release notes for 2.19.5.
2018-01-09 Carlos Garcia Campos <cgarcia@igalia.com>
[GTK] Missing symbols exported in 2.19.4
https://bugs.webkit.org/show_bug.cgi?id=181433
Reviewed by Michael Catanzaro.
Add missing WEBKIT_API to webkit_dom_dom_window_webkit_message_handlers_post_message().
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.h:
* webkitglib-symbols.map: Remove webkit_media_player_debug from local.
2018-01-09 Youenn Fablet <youenn@apple.com>
SWClientConnection should not keep references to service worker jobs
https://bugs.webkit.org/show_bug.cgi?id=181381
Reviewed by Chris Dumez.
Updated IPC handling based on WebCore refactoring.
* Scripts/webkit/messages.py:
(forward_declarations_and_headers):
(headers_for_type):
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::rejectJobInClient):
(WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
(WebKit::WebSWServerConnection::startScriptFetchInClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:
2018-01-09 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.4 release.
* gtk/NEWS: Add release notes for 2.19.4.
2018-01-09 Ali Juma <ajuma@chromium.org>
Implement VisualViewport API events
https://bugs.webkit.org/show_bug.cgi?id=179386
Reviewed by Frédéric Wang.
Change the default value of the VisualViewportAPI experimental feature flag to
DEFAULT_EXPERIMENTAL_FEATURES_ENABLED. This patch completes the implementation
of this feature as specified by https://wicg.github.io/visual-viewport/, so this
feature is now ready for wider testing.
* Shared/WebPreferences.yaml:
2018-01-08 Alex Christensen <achristensen@webkit.org>
Add WKNavigationDelegate SPI exposing WebProcess crash reason
https://bugs.webkit.org/show_bug.cgi?id=181410
<rdar://problem/36167199>
Reviewed by Wenson Hsieh.
We exposed it in the C SPI.
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::toWKProcessTerminationReason):
(WebKit::NavigationState::NavigationClient::processDidTerminate):
2018-01-08 Alex Christensen <achristensen@webkit.org>
Make ObjC SPI equivalent to WKPageNavigationClient.decidePolicyForPluginLoad
https://bugs.webkit.org/show_bug.cgi?id=181413
<rdar://problem/36169005>
Reviewed by Wenson Hsieh.
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::decidePolicyForPluginLoad):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageNavigationClient):
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::toPluginModuleLoadPolicy):
(WebKit::toWKPluginModuleLoadPolicy):
(WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):
2018-01-08 Ryosuke Niwa <rniwa@webkit.org>
iOS build fix attempt after r226602.
* UIProcess/API/C/WKContextMenuListener.cpp:
(WKContextMenuListenerUseContextMenuItems):
2018-01-08 Alex Christensen <achristensen@webkit.org>
Add SPI for WKOpenPanelParameters._acceptedMIMETypes and _acceptedFileExtensions
https://bugs.webkit.org/show_bug.cgi?id=181408
<rdar://problem/35884960>
Reviewed by Tim Horton.
* UIProcess/API/Cocoa/WKOpenPanelParameters.mm:
(-[WKOpenPanelParameters _acceptedMIMETypes]):
(-[WKOpenPanelParameters _acceptedFileExtensions]):
* UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h:
* UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h: Added.
* WebKit.xcodeproj/project.pbxproj:
2018-01-08 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r226532 and r226540.
https://bugs.webkit.org/show_bug.cgi?id=181422
jessie says basic browsing does not seem to work (Requested by
alexchristensen on #webkit).
Reverted changesets:
"Add CSP support to service workers"
https://bugs.webkit.org/show_bug.cgi?id=181385
https://trac.webkit.org/changeset/226532
"SWClientConnection should not keep references to service
worker jobs"
https://bugs.webkit.org/show_bug.cgi?id=181381
https://trac.webkit.org/changeset/226540
2018-01-08 Wenson Hsieh <wenson_hsieh@apple.com>
[Attachment Support] Expose file name and content type of WKAttachment
https://bugs.webkit.org/show_bug.cgi?id=181390
<rdar://problem/36336837>
Reviewed by Tim Horton.
Add support for -[_WKAttachment requestInfo:], which fetches a snapshot of the attachment's state. This API is
meant to be a replacement for -requestData: that provides additional metadata about the attachment.
* Scripts/webkit/messages.py:
(headers_for_type):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<AttachmentInfo>::encode):
(IPC::ArgumentCoder<AttachmentInfo>::decode):
* Shared/WebCoreArgumentCoders.h:
Add IPC support for AttachmentInfo. Note that instead of using (encode|decode)SharedBuffer, we send and receive
data references to the shared buffer.
* UIProcess/API/APIAttachment.cpp:
(API::Attachment::requestInfo):
(API::Attachment::requestData): Deleted.
* UIProcess/API/APIAttachment.h:
Change requestData to requestInfo.
* UIProcess/API/Cocoa/_WKAttachment.h:
* UIProcess/API/Cocoa/_WKAttachment.mm:
(-[_WKAttachmentInfo initWithInfo:]):
(-[_WKAttachmentInfo data]):
(-[_WKAttachmentInfo name]):
(-[_WKAttachmentInfo filePath]):
(-[_WKAttachmentInfo contentType]):
(-[_WKAttachment requestInfo:]):
(-[_WKAttachment requestData:]):
Implement -requestInfo: by calling into APIAttachment, and reimplement -requestData: in terms of -requestInfo:.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::attachmentInfoCallback):
(WebKit::WebPageProxy::requestAttachmentInfo):
(WebKit::WebPageProxy::sharedBufferCallback): Deleted.
(WebKit::WebPageProxy::requestAttachmentData): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
Rename the SharedBufferCallback IPC message to AttachmentInfoCallback, and make it conditional on
ATTACHMENT_ELEMENT. Rename requestAttachmentData to requestAttachmentInfo.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::requestAttachmentInfo):
(WebKit::WebPage::invokeSharedBufferCallback): Deleted.
(WebKit::WebPage::requestAttachmentData): Deleted.
Rename requestAttachmentData to requestAttachmentInfo and adopt HTMLAttachmentElement::requestInfo.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
2018-01-08 Alex Christensen <achristensen@webkit.org>
Pass around Vector<Ref<WebContextMenuItem>> instead of WKArrayRef or Vector<WebContextMenuItemData>
https://bugs.webkit.org/show_bug.cgi?id=181419
Reviewed by Tim Horton.
Passing a WKArrayRef to an API object is messy and was preventing me from moving things around and making ObjC SPI.
No change in behavior. Just using different layering abstractions for the same data.
* UIProcess/API/C/WKContextMenuListener.cpp:
(WKContextMenuListenerUseContextMenuItems):
* UIProcess/WebContextMenuListenerProxy.cpp:
(WebKit::WebContextMenuListenerProxy::useContextMenuItems):
* UIProcess/WebContextMenuListenerProxy.h:
* UIProcess/WebContextMenuProxy.h:
* UIProcess/mac/WebContextMenuProxyMac.h:
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::showContextMenuWithItems):
(WebKit::WebContextMenuProxyMac::showContextMenu):
2018-01-08 John Wilander <wilander@apple.com>
Storage Access API: Remove access for all frames under a page when the page is closed
https://bugs.webkit.org/show_bug.cgi?id=181398
<rdar://problem/36357879>
Reviewed by Alex Christensen.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForAllFramesOnPage):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::close):
2018-01-08 Youenn Fablet <youenn@apple.com>
SWClientConnection should not keep references to service worker jobs
https://bugs.webkit.org/show_bug.cgi?id=181381
Reviewed by Chris Dumez.
Updated IPC handling based on WebCore refactoring.
* Scripts/webkit/messages.py:
(forward_declarations_and_headers):
(headers_for_type):
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::rejectJobInClient):
(WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
(WebKit::WebSWServerConnection::startScriptFetchInClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:
2018-01-08 Joseph Pecoraro <pecoraro@apple.com>
[Cocoa] Web Inspector: Provide a way for clients to check if an NSWindow is a Web Inspector window
https://bugs.webkit.org/show_bug.cgi?id=181361
<rdar://problem/36332865>
Reviewed by Darin Adler.
* WebKit.xcodeproj/project.pbxproj:
New files.
* Shared/API/Cocoa/_WKNSWindowExtras.h: Added.
* Shared/API/Cocoa/_WKNSWindowExtras.mm: Added.
(-[NSWindow _web_isWebInspectorWindow]):
Method to determing if a window is being used for Web Inspector content.
* UIProcess/mac/WKInspectorWindow.h: Added.
* UIProcess/mac/WKInspectorWindow.mm: Added.
Named subclass so we can use isKindOfClass.
* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::createFrontendWindow):
Use the named subclass.
2018-01-08 Tim Horton <timothy_horton@apple.com>
Build fix for WKPDFView
https://bugs.webkit.org/show_bug.cgi?id=181399
<rdar://problem/36311915>
Reviewed by Simon Fraser.
* UIProcess/ios/WKPDFView.mm:
Disable deprecation warnings in this whole file.
2018-01-08 Youenn Fablet <youenn@apple.com>
Caches::writeCachesToDisk should assert that it is initialized
https://bugs.webkit.org/show_bug.cgi?id=181383
Reviewed by Alex Christensen.
Add assertion to ensure caches is initialized
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::writeCachesToDisk):
2018-01-08 Youenn Fablet <youenn@apple.com>
WebProcessPool::terminateServiceWorkerProcess should protect itself in debug builds
https://bugs.webkit.org/show_bug.cgi?id=181384
Reviewed by Chris Dumez.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::terminateServiceWorkerProcess):
2018-01-08 Frederic Wang <fwang@igalia.com>
Unreviewed build fix after r226211.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h: Use WK_IOS_TBA for iOS.
2018-01-08 Youenn Fablet <youenn@apple.com>
navigator.onLine does not work inside service workers
https://bugs.webkit.org/show_bug.cgi?id=181079
<rdar://problem/36178606>
Reviewed by Darin Adler.
Added support for a callback called for each service worker proxy creation.
Callback is used by WTR to inject a self.internals object used for testing.
* WebProcess/InjectedBundle/API/c/WKBundle.cpp:
(WKBundleSetServiceWorkerProxyCreationCallback):
* WebProcess/InjectedBundle/API/c/WKBundle.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setServiceWorkerProxyCreationCallback):
* WebProcess/InjectedBundle/InjectedBundle.h:
2018-01-07 David Kilzer <ddkilzer@apple.com>
Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
<https://webkit.org/b/181256>
<rdar://problem/36281730>
Reviewed by Darin Adler.
* Configurations/Base.xcconfig:
(WARNING_CFLAGS): Add -Wcast-qual.
* NetworkProcess/cache/NetworkCacheCodersCocoa.cpp:
(WTF::Persistence::encodeCertificateChain): Include
TypeCastsCF.h from WTF, and use
checked_cf_cast<SecCertificateRef>() to fix warning.
* Platform/cocoa/WKCrashReporter.mm:
(WebKit::setCrashReportApplicationSpecificInformation):
- Move `oldMessage` check above nullptr check to fix a leak when
passing in nullptr after previously setting the crash string.
- Change C-style cast to const_cast<char*>() to fix warning.
* PluginProcess/mac/PluginProcessShim.mm:
(WebKit::shim_shmat): Change C-style cast to
const_cast<void*>() to fix warning.
* Shared/Authentication/mac/AuthenticationManager.mac.mm:
(WebKit::leafCertificate): Include TypeCastsCF.h from
WTF, and use checked_cf_cast<SecCertificateRef>() to fix
warning.
* Shared/cf/ArgumentCodersCF.cpp:
(IPC::encode): Use static_cast<>(const_cast<void*>() to
fix warnings since the CFTypeID has already been
checked.
* Shared/mac/WebCoreArgumentCodersMac.mm:
(IPC::decodeNSError): Use an `auto` variable to hold the
CFMutableDictionaryRef, then WTFMove() to assign it back to
`userInfo`.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::takeWindowSnapshot): Include TypeCastsCF.h from
WTF, and use checked_cf_cast<CGImageRef>() to fix
warning.
2018-01-07 Konstantin Tokarev <annulen@yandex.ru>
[cmake] Unset CMAKE_REQUIRED_LIBRARIES after check_function_exists test
https://bugs.webkit.org/show_bug.cgi?id=181371
Reviewed by Michael Catanzaro.
This variable is used by check_function_exists internally, its value
should be never used for anything else.
* CMakeLists.txt:
2018-01-05 Dan Bernstein <mitz@apple.com>
REGRESSION (r226218): iOS-only assets are installed on macOS
https://bugs.webkit.org/show_bug.cgi?id=181362
Reviewed by Anders Carlsson.
* Configurations/WebKit.xcconfig: Exclude everything under Resources/ios when not targeting
iOS.
* Resources/ios: Added.
* Resources/ios/iOS.xcassets: Moved from Source/WebKit/WebKit.xcassets.
* Resources/ios/iOS.xcassets/LockMini.imageset/NavigationBarLockMini@2x.pdf: Set the
svn:mime-type property.
* Resources/ios/iOS.xcassets/LockMini.imageset/NavigationBarLockMini@3x.pdf: Ditto.
* Resources/mac: Added.
* Resources/mac/mediaIcon.pdf: Moved here…
* Resources/mediaIcon.pdf: …from here.
* WebKit.xcassets: Moved under Resources/ios.
* WebKit.xcodeproj/project.pbxproj: Created an ios group under the Resources group, and
cleaned up the mac group. Removed the Recovered References group.
2018-01-05 John Wilander <wilander@apple.com>
Storage Access API: Refactor to make naming accurate and explicit, simplify access table, and prepare for access removal for page
https://bugs.webkit.org/show_bug.cgi?id=181357
<rdar://problem/36331031>
Reviewed by Alex Christensen.
This change does the following:
- Changes function and message names to reflect how this feature
was eventually implemented, i.e. access per frame.
- Makes it explicit that the UI process is only involved in
granting storage access and not removing storage access.
The latter is done directly by the web process.
- Simplifies the network process' entry map since only needs to
be able to give access to one domain in one frame at a time.
Access goes away on frame navigation so there can only be one
domain at a time per frame. Also, the map now uses pageIDs as
main keys to prepare for efficient access removal for all
frames under a page.
- Fixes a bug in so that a cross-origin iframe with the same
partition as the top frame correctly is handled as already
having access.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
(WebKit::NetworkConnectionToWebProcess::removeStorageAccess): Deleted.
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::hasStorageAccessForFrame):
(WebKit::NetworkProcess::grantStorageAccessForFrame):
(WebKit::NetworkProcess::hasStorageAccessForPrevalentDomains): Deleted.
(WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains): Deleted.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::hasStorageAccessForFrame):
(WebKit::NetworkProcessProxy::grantStorageAccessForFrame):
(WebKit::NetworkProcessProxy::hasStorageAccessForPrevalentDomains): Deleted.
(WebKit::NetworkProcessProxy::updateStorageAccessForPrevalentDomains): Deleted.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::hasStorageAccessForFrameHandler):
(WebKit::WebsiteDataStore::grantStorageAccessForFrameHandler):
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
(WebKit::WebsiteDataStore::hasStorageAccessForPrevalentDomainsHandler): Deleted.
(WebKit::WebsiteDataStore::updateStorageAccessForPrevalentDomainsHandler): Deleted.
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::detachedFromParent2):
(WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
2018-01-05 Youenn Fablet <youenn@apple.com>
Implement Cache API partitioning based on ClientOrigin
https://bugs.webkit.org/show_bug.cgi?id=181240
Reviewed by Alex Christensen.
open and retrieveCaches now take a ClientOrigin instead of a String.
Updated cache filesystem path computation to take both client origin and top origin.
When clearing an origin, caches whose client origin or top origin matches the origin are cleared.
Caches are added to the web site data of their client origin with their corresponding cache size.
Caches are added to the web site data of their top origin with a size equal to 0.
Updated memory representation dumping used for test to include both top and client origins.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::cachesRootPath):
(WebKit::CacheStorage::Engine::open):
(WebKit::CacheStorage::Engine::remove):
(WebKit::CacheStorage::Engine::retrieveCaches):
(WebKit::CacheStorage::Engine::readCachesFromDisk):
(WebKit::CacheStorage::Engine::removeCaches):
(WebKit::CacheStorage::Engine::fetchEntries):
(WebKit::CacheStorage::Engine::clearCachesForOrigin):
(WebKit::CacheStorage::Engine::clearMemoryRepresentation):
(WebKit::CacheStorage::Engine::representation):
* NetworkProcess/cache/CacheStorageEngine.h:
* NetworkProcess/cache/CacheStorageEngineCache.cpp:
(WebKit::CacheStorage::Cache::Cache):
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
(WebKit::CacheStorage::Caches::Caches):
(WebKit::CacheStorage::Caches::storeOrigin):
(WebKit::CacheStorage::Caches::readOrigin):
(WebKit::CacheStorage::Caches::open):
* NetworkProcess/cache/CacheStorageEngineCaches.h:
(WebKit::CacheStorage::Caches::create):
(WebKit::CacheStorage::Caches::origin const):
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::open):
(WebKit::CacheStorageEngineConnection::caches):
(WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
* NetworkProcess/cache/CacheStorageEngineConnection.h:
* NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::doOpen):
(WebKit::WebCacheStorageConnection::doRetrieveCaches):
(WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
* WebProcess/Cache/WebCacheStorageConnection.h:
2018-01-05 Megan Gardner <megan_gardner@apple.com>
Show Keyboard when re-launching WKWebView with a previously focused element
https://bugs.webkit.org/show_bug.cgi?id=181353
Reviewed by Tim Horton.
When relaunching an app with a WKWebView, restore the keyboard if there was a previously
focused element that was being assisted. The element was already being tracked, we just
needed to not bail on showing the keyboard for instances where it was a state change that
caused the element to be refocused.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::startAssistingNode):
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::startAutoscrollAtPosition):
(WebKit::WebPageProxy::startAssistingNode):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setActivityState):
(WebKit::WebPage::elementDidFocus):
* WebProcess/WebPage/WebPage.h:
2018-01-05 Alex Christensen <achristensen@webkit.org>
Restrict navigation-time WKWebsiteDataStore swapping to main frame navigations
https://bugs.webkit.org/show_bug.cgi?id=181217
Reviewed by Tim Horton.
If we swap during an iframe navigation, then we get a page in a strange state.
The intent of the main frame navigation WKWebsiteDataStore swap is that
that is a time when we can change storages without a page in an inconsistent state.
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
2018-01-05 Alex Christensen <achristensen@webkit.org>
Add WKBundleFrameCreateFrameHandle
https://bugs.webkit.org/show_bug.cgi?id=181232
<rdar://problem/35926696>
Reviewed by Tim Horton.
InjectedBundle clients wanting to sent a _WKFrameHandle cannot without this function.
Before, they would just send the WKBundleFrameRef which would be changed into a WKFrameRef
in the UIProcess by WebProcessProxy::transformHandlesToObjects, but there is no ObjC equivalent
of WKFrameRef, so we were just getting a WKObject when we wanted a _WKFrameHandle.
We can't change WebProcessProxy::transformHandlesToObjects without being incompatible with the
existing C API, so let's add a way for clients to say "I want a _WKFrameHandle".
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundleFrameCreateFrameHandle):
* WebProcess/InjectedBundle/API/c/WKBundlePage.h:
2018-01-05 Wenson Hsieh <wenson_hsieh@apple.com>
[Attachment Support] Add a way to write blob data to a file URL from the UI process
https://bugs.webkit.org/show_bug.cgi?id=181236
Reviewed by Brady Eidson.
Add support for writing a blob to a designated file path. In WebKit, this is mainly plumbing writeBlobToFilePath
through WebPageProxy to the network process.
* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
(WebKit::NetworkBlobRegistry::writeBlobToFilePath):
Call out to the BlobRegistryImpl to write blobs to the file path. Additionally grant sandbox extensions for any
file-backed blob parts corresponding to the given blob URL.
(WebKit::NetworkBlobRegistry::filesInBlob):
Introduce a version of filesInBlob that doesn't check against the NetworkConnectionToWebProcess. This is used
when the UI process is the driver for writing a blob.
* NetworkProcess/FileAPI/NetworkBlobRegistry.h:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::writeBlobToFilePath):
Temporarily grant sandbox access to the given file path.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PromisedBlobInfo>::encode):
(IPC::ArgumentCoder<PromisedBlobInfo>::decode):
(IPC::ArgumentCoder<PromisedBlobData>::encode): Deleted.
(IPC::ArgumentCoder<PromisedBlobData>::decode): Deleted.
Remove PromisedBlobData (see WebCore/ChangeLog for more information).
* Shared/WebCoreArgumentCoders.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didClose):
If the network process is terminated, flush any pending callbacks in m_writeBlobToFilePathCallbackMap, passing
in a failure result (success := false) and clearing the callback map.
(WebKit::NetworkProcessProxy::writeBlobToFilePath):
(WebKit::NetworkProcessProxy::didWriteBlobToFilePath):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::writeBlobToFilePath):
* UIProcess/WebPageProxy.h:
2018-01-05 Dan Bernstein <mitz@apple.com>
Add injected bundle equivalents of DOMHTMLDocument (DOMHTMLDocumentExtensions)
https://bugs.webkit.org/show_bug.cgi?id=181345
Reviewed by Tim Horton.
* WebProcess/InjectedBundle/API/mac/WKDOMDocument.h: Declared new methods.
* WebProcess/InjectedBundle/API/mac/WKDOMDocument.mm:
(-[WKDOMDocument createDocumentFragmentWithMarkupString:baseURL:]): Added. Calls WebCore’s
createFragmentFromMarkup.
(-[WKDOMDocument createDocumentFragmentWithText:]): Added. Calls WebCore’s
createFragmentFromText.
2018-01-05 Don Olmstead <don.olmstead@sony.com>
[Curl] Add implementation stubs for Network Cache
https://bugs.webkit.org/show_bug.cgi?id=181343
Reviewed by Alex Christensen.
* NetworkProcess/cache/NetworkCacheCodersCurl.cpp: Added.
(WTF::Persistence::Coder<WebCore::CertificateInfo>::encode):
(WTF::Persistence::Coder<WebCore::CertificateInfo>::decode):
* NetworkProcess/cache/NetworkCacheDataCurl.cpp: Added.
(WebKit::NetworkCache::Data::Data):
(WebKit::NetworkCache::Data::empty):
(WebKit::NetworkCache::Data::data const):
(WebKit::NetworkCache::Data::isNull const):
(WebKit::NetworkCache::Data::apply const):
(WebKit::NetworkCache::Data::subrange const):
(WebKit::NetworkCache::concatenate):
(WebKit::NetworkCache::Data::adoptMap):
* NetworkProcess/cache/NetworkCacheIOChannelCurl.cpp: Added.
(WebKit::NetworkCache::IOChannel::IOChannel):
(WebKit::NetworkCache::IOChannel::~IOChannel):
(WebKit::NetworkCache::IOChannel::open):
(WebKit::NetworkCache::IOChannel::read):
(WebKit::NetworkCache::IOChannel::write):
* PlatformWin.cmake:
2018-01-05 Don Olmstead <don.olmstead@sony.com>
[Curl] Update method declarations in WebKit
https://bugs.webkit.org/show_bug.cgi?id=181342
Reviewed by Alex Christensen.
* NetworkProcess/Downloads/curl/DownloadCurl.cpp:
(WebKit::Download::resume):
* NetworkProcess/curl/RemoteNetworkingContextCurl.cpp:
(WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession): Deleted.
(WebKit::RemoteNetworkingContext::blockedError const): Deleted.
2018-01-05 Don Olmstead <don.olmstead@sony.com>
WebFullScreenManager should compile when ENABLE(VIDEO) is off
https://bugs.webkit.org/show_bug.cgi?id=181338
Reviewed by Alex Christensen.
* WebProcess/FullScreen/WebFullScreenManager.cpp:
(WebKit::WebFullScreenManager::didEnterFullScreen):
(WebKit::WebFullScreenManager::willExitFullScreen):
* WebProcess/FullScreen/WebFullScreenManager.h:
2018-01-05 Andy Estes <aestes@apple.com>
[Apple Pay] Disable Apple Pay on platforms that don't have PassKit.framework
https://bugs.webkit.org/show_bug.cgi?id=181335
<rdar://problem/36311296>
Reviewed by Brady Eidson.
When Safari is running in the macOS Base System, PassKit.framework is not available.
If we fail to dlopen PassKit, we should disable Apple Pay.
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetApplePayEnabled):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
* UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
(WebKit::WebPaymentCoordinatorProxy::availablePaymentNetworks):
(WebKit::WebPaymentCoordinatorProxy::platformSupportsPayments):
2018-01-05 Dan Bernstein <mitz@apple.com>
Fixed the build following AppKit API deprecations in a recent SDKs
* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController enterFullScreen:]): Suppressed deprecation warnings.
(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): Ditto.
(-[WKFullScreenWindowController exitFullScreen]): Ditto.
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): Ditto.
(-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]): Ditto.
(-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): Ditto.
(-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]): Ditto.
* UIProcess/mac/WKPrintingView.mm:
(-[WKPrintingView _setAutodisplay:]): Ditto.
2018-01-05 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r226401.
This caused timeouts on multiple platforms.
Reverted changeset:
"Implement Cache API partitioning based on ClientOrigin"
https://bugs.webkit.org/show_bug.cgi?id=181240
https://trac.webkit.org/changeset/226401
2018-01-05 Joseph Pecoraro <pecoraro@apple.com>
ServiceWorkers: Enable UserTiming / ResourceTiming
https://bugs.webkit.org/show_bug.cgi?id=181297
<rdar://problem/36307306>
Reviewed by Youenn Fablet.
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::updatePreferencesStore):
Enable Resource Timing / User Timing for the ServiceWorker process.
2018-01-04 Zan Dobersek <zdobersek@igalia.com>
Unreviewed GTK+ build fix.
* UIProcess/API/glib/WebKitUserMediaPermissionRequest.cpp:
(webkit_user_media_permission_is_for_audio_device):
Call UserMediaPermissionRequestProxy::requiresAudioCapture().
(webkit_user_media_permission_is_for_video_device):
Call UserMediaPermissionRequestProxy::requiresVideoCapture().
2018-01-04 Don Olmstead <don.olmstead@sony.com>
[Curl] Fix compilation error in WebFrameNetworkingContext
https://bugs.webkit.org/show_bug.cgi?id=181312
Reviewed by Alex Christensen.
* WebProcess/WebCoreSupport/curl/WebFrameNetworkingContext.cpp:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
2018-01-04 Tim Horton <timothy_horton@apple.com>
WKWebView loses minimum layout size overrides that happen while the process is terminated
https://bugs.webkit.org/show_bug.cgi?id=181306
<rdar://problem/34398288>
Reviewed by Dan Bernstein.
* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didRelaunchProcess]): Deleted.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didRelaunchProcess):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize):
(WebKit::WebPageProxy::setForceAlwaysUserScalable):
(WebKit::WebPageProxy::setMaximumUnobscuredSize):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
Pass the current viewport minimum layout size and maximum unobscured size
in the WebPageCreationParameters instead of re-sending them in _didRelaunchProcess.
The previous approach was problematic when _dispatchSetMinimumLayoutSize:
was changed to not re-send identical updates, because if the client calls
_overrideLayoutParametersWithMinimumLayoutSize before the Web Content process
is re-launched (after terminating), we would cache the size, attempt to send it,
fail silently (because the process is not launched), and then in _didRelaunchProcess
we would choose not to re-send (after the process is successfully relaunched)
because we think we already sent the new value.
Add isValid() checks to our message sends. Ideally send() would assert
if the process is not alive to avoid problems like this, but it doesn't (yet).
Get rid of WKWebView's _didRelaunchProcess, because it does nothing now.
2018-01-04 Stephan Szabo <stephan.szabo@sony.com>
NetworkProcess cache files use functions from unistd.h without explicitly including it
https://bugs.webkit.org/show_bug.cgi?id=181261
Reviewed by Alex Christensen.
* NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
* NetworkProcess/cache/NetworkCacheData.cpp:
2018-01-04 Keith Rollin <krollin@apple.com>
Add commas
https://bugs.webkit.org/show_bug.cgi?id=181295
<rdar://problem/35802295>
Reviewed by Brent Fulgham.
Fix a problem introduced in r226226 where the emitted JSON didn't
include some required commas.
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::logCookieInformation const):
2018-01-04 Eric Carlson <eric.carlson@apple.com>
[MediaStream] Add Mock screen capture source
https://bugs.webkit.org/show_bug.cgi?id=181291
<rdar://problem/36298164>
Reviewed by Dean Jackson.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<MediaConstraints>::decode):
(IPC::ArgumentCoder<CaptureDevice>::encode): Deleted, moved to CaptureDevice.h
(IPC::ArgumentCoder<CaptureDevice>::decode): Ditto.
* Shared/WebCoreArgumentCoders.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h: Add _WKCaptureDeviceDisplay.
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::requestUserMediaAuthorizationForDevices): Deal with display capture.
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Ditto.
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasDenied): requiresAudio -> requiresAudioCapture.
(WebKit::UserMediaPermissionRequestManagerProxy::searchForGrantedRequest const): Never reuse
a previously granted display capture request.
* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::UserMediaPermissionRequestProxy::allow): Search the eligible devices instead of asking
the source center to find devices.
* UIProcess/UserMediaPermissionRequestProxy.h:
(WebKit::UserMediaPermissionRequestProxy::requiresAudioCapture const): Renamed.
(WebKit::UserMediaPermissionRequestProxy::requiresVideoCapture const): Ditto.
(WebKit::UserMediaPermissionRequestProxy::requiresDisplayCapture const): New.
(WebKit::UserMediaPermissionRequestProxy::requiresAudio const): Deleted.
(WebKit::UserMediaPermissionRequestProxy::requiresVideo const): Deleted.
2018-01-04 Youenn Fablet <youenn@apple.com>
FetchResponse should set its internal response text encoding name
https://bugs.webkit.org/show_bug.cgi?id=181284
Reviewed by Alex Christensen.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse): Set default encoding to UTF-8.
2018-01-04 Youenn Fablet <youenn@apple.com>
Implement Cache API partitioning based on ClientOrigin
https://bugs.webkit.org/show_bug.cgi?id=181240
Reviewed by Alex Christensen.
open and retrieveCaches now take a ClientOrigin instead of a String.
Updated cache filesystem path computation to take both client origin and top origin.
When clearing an origin, caches whose client origin or top origin matches the origin are cleared.
Caches are added to the web site data of their client origin with their corresponding cache size.
Caches are added to the web site data of their top origin with a size equal to 0.
Updated memory representation dumping used for test to include both top and client origins.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::cachesRootPath):
(WebKit::CacheStorage::Engine::open):
(WebKit::CacheStorage::Engine::remove):
(WebKit::CacheStorage::Engine::retrieveCaches):
(WebKit::CacheStorage::Engine::readCachesFromDisk):
(WebKit::CacheStorage::Engine::removeCaches):
(WebKit::CacheStorage::Engine::fetchEntries):
(WebKit::CacheStorage::Engine::clearCachesForOrigin):
(WebKit::CacheStorage::Engine::clearMemoryRepresentation):
(WebKit::CacheStorage::Engine::representation):
* NetworkProcess/cache/CacheStorageEngine.h:
* NetworkProcess/cache/CacheStorageEngineCache.cpp:
(WebKit::CacheStorage::Cache::Cache):
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::retrieveOriginFromDirectory):
(WebKit::CacheStorage::Caches::Caches):
(WebKit::CacheStorage::Caches::storeOrigin):
(WebKit::CacheStorage::Caches::readOrigin):
(WebKit::CacheStorage::Caches::open):
* NetworkProcess/cache/CacheStorageEngineCaches.h:
(WebKit::CacheStorage::Caches::create):
(WebKit::CacheStorage::Caches::origin const):
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::open):
(WebKit::CacheStorageEngineConnection::caches):
(WebKit::CacheStorageEngineConnection::clearMemoryRepresentation):
* NetworkProcess/cache/CacheStorageEngineConnection.h:
* NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::doOpen):
(WebKit::WebCacheStorageConnection::doRetrieveCaches):
(WebKit::WebCacheStorageConnection::clearMemoryRepresentation):
* WebProcess/Cache/WebCacheStorageConnection.h:
2018-01-04 Youenn Fablet <youenn@apple.com>
Service Worker should expose redirect mode for navigation loads as manual
https://bugs.webkit.org/show_bug.cgi?id=181067
Reviewed by Alex Christensen.
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
2018-01-03 Wenson Hsieh <wenson_hsieh@apple.com>
[Attachment Support] Create attachment elements when dropping files on iOS
https://bugs.webkit.org/show_bug.cgi?id=181192
<rdar://problem/36280945>
Reviewed by Tim Horton.
Make some minor adjustments for changes to the pasteboard in WebCore. See WebCore/ChangeLog for more detail.
Teaches WebPasteboardProxy et. al. to plumb PasteboardItemInfo from the UI process to the web process via the
new `InformationForItemAtIndex` codepath.
* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::informationForItemAtIndex):
(WebKit::WebPasteboardProxy::getFilenamesForDataInteraction): Deleted.
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::informationForItemAtIndex):
(WebKit::WebPlatformStrategies::getFilenamesForDataInteraction): Deleted.
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
2018-01-03 Ting-Wei Lan <lantw44@gmail.com>
Replace hard-coded paths in shebangs with #!/usr/bin/env
https://bugs.webkit.org/show_bug.cgi?id=181040
Reviewed by Alex Christensen.
* Scripts/generate-forwarding-headers.pl:
2018-01-03 Wenson Hsieh <wenson_hsieh@apple.com>
[Attachment Support] Add plumbing for starting a drag with promised blob data
https://bugs.webkit.org/show_bug.cgi?id=181201
Reviewed by Tim Horton.
Add boilerplate plumbing for PrepareToDragPromisedBlob, which delivers blob promises to the UI process when
dragging, respectively.
* Scripts/webkit/messages.py:
(headers_for_type):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::encodeTypesAndData):
(IPC::decodeTypesAndData):
(IPC::ArgumentCoder<PasteboardWebContent>::encode):
(IPC::ArgumentCoder<PasteboardWebContent>::decode):
(IPC::ArgumentCoder<PasteboardImage>::encode):
(IPC::ArgumentCoder<PasteboardImage>::decode):
(IPC::ArgumentCoder<PromisedBlobInfo>::encode):
(IPC::ArgumentCoder<PromisedBlobInfo>::decode):
Add IPC support PromisedBlobInfo's additionalTypes and additionalData.
(IPC::encodeClientTypesAndData): Deleted.
(IPC::decodeClientTypesAndData): Deleted.
Rename these helper functions and move them to the top of the file.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::prepareToDragPromisedBlob):
* UIProcess/PageClient.h:
(WebKit::PageClient::prepareToDragPromisedBlob):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::prepareToDragPromisedBlob):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::prepareToDragPromisedBlob):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _prepareToDragPromisedBlob:]):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::prepareToDragPromisedBlob):
* WebProcess/WebCoreSupport/WebDragClient.cpp:
(WebKit::WebDragClient::prepareToDragPromisedBlob):
* WebProcess/WebCoreSupport/WebDragClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::prepareToDragPromisedBlob):
* WebProcess/WebPage/WebPage.h:
2018-01-03 David Kilzer <ddkilzer@apple.com>
REGRESSION (r212929): WKSnapshotConfiguration may leak an NSNumber when deallocated
<https://webkit.org/b/181274>
Reviewed by Joseph Pecoraro.
* UIProcess/API/Cocoa/WKSnapshotConfiguration.mm:
(-[WKSnapshotConfiguration dealloc]): Implement method and
release _snapshotWidth.
2018-01-03 John Wilander <wilander@apple.com>
Storage Access API: Refactor XPC for access removal to go straight from the web process to the network process
https://bugs.webkit.org/show_bug.cgi?id=181270
<rdar://problem/36289544>
Reviewed by Alex Christensen.
This change refactors how the web process tells the network process
to remove storage access. Previously, this was done over the UI process
just like requests for storage access. But since no further reasoning
is needed, the message should go straight from the web process to the
network process for performance reasons and to minimize the risk of a
race.
As a consequence, the XPC code for storage access removal in the UI
process is deleted.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::removeStorageAccess):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::removeStorageAccess): Deleted.
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::removeStorageAccess): Deleted.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestStorageAccess):
(WebKit::WebPageProxy::removeStorageAccess): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::requestStorageAccess):
(WebKit::WebsiteDataStore::removeStorageAccess): Deleted.
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::detachedFromParent2):
(WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
2018-01-03 David Kilzer <ddkilzer@apple.com>
com.apple.WebKit.Networking crash in com.apple.Foundation: -[__NSOperationInternal _start:]
<https://webkit.org/b/181272>
<rdar://problem/35657310>
Reviewed by Alex Christensen.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(downgradeRequest): Remove unnecessary -autorelease.
2018-01-03 Brent Fulgham <bfulgham@apple.com>
[macOS] Constant frame dropping during Flash video playback
https://bugs.webkit.org/show_bug.cgi?id=181249
<rdar://problem/34843448>
Reviewed by Eric Carlson.
Review of logs during jerky flash video playback shows a few IOKit properties are being blocked by the sandbox,
which prevents some high-efficiency codecs from being used. Add 'AppleGVAKeyDoesNotExist', 'IODVDBundleName', and
'IOGVA*Encode' to the whitelist.
* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
2018-01-03 Michael Catanzaro <mcatanzaro@igalia.com>
[GTK] Add web process API to detect when form is submitted via JavaScript
https://bugs.webkit.org/show_bug.cgi?id=173915
Reviewed by Carlos Garcia Campos.
Epiphany relies on the DOM submit event to detect when a form has been submitted. However,
for historical reasons, the submit event is not emitted when a form is submitted by
JavaScript. It is therefore not currently possible for a web browser to reliably detect form
submission and not possible to implement a robust password storage feature. In order to
avoid this problem, this patch adds a new WebKitWebPage signal, will-submit-form, that
browsers can use in preference to a DOM event listener.
Unfortunately, this signal is not available for WPE because it depends on the DOM API.
There are two submission events, WEBKIT_FORM_SUBMISSION_WILL_SEND_DOM_EVENT and
WEBKIT_FORM_SUBMISSION_WILL_COMPLETE. WEBKIT_FORM_SUBMISSION_WILL_SEND_DOM_EVENT
occurs earlier than WEBKIT_FORM_SUBMISSION_WILL_COMPLETE and can be used to retrieve form
values before websites receive the DOM submit event. This is useful as some websites like
to delete form values right before a submit would normally happen in order to attempt to
defeat browser password managers. There are two tricks to note: JavaScript can cancel form
submission immediately after this event occurs (by returning false in an onsubmit handler),
and, for historical reasons, this event will not occur at all when form submission is
triggered by JavaScript. WEBKIT_FORM_SUBMISSION_WILL_COMPLETE occurs next, and is more
straightforward: it is always emitted when a form is about to be submitted, when it is too
late to cancel.
The recommended way to reliably retrieve password form values would be to watch for both
events, use the form value detected in WEBKIT_FORM_SUBMISSION_WILL_SEND_DOM_EVENT
if that event is emitted, and use the value detected later in
WEBKIT_FORM_SUBMISSION_WILL_COMPLETE otherwise.
Since one of the signal arguments is an enum, we now have to run glib-mkenums for the web
process API. And that has resulted in this patch also adding GType goo for
WebKitConsoleMessageLevel and WebKitConsoleMessageSource that was previously missing. Any
applications that for some unlikely reason want to use these enums in properties or signals
will be happy.
* PlatformGTK.cmake:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:
(webkit_web_page_class_init):
* WebProcess/InjectedBundle/API/gtk/WebKitWebPage.h:
* WebProcess/InjectedBundle/API/gtk/WebKitWebProcessEnumTypes.cpp.template: Added.
* WebProcess/InjectedBundle/API/gtk/WebKitWebProcessEnumTypes.h.template: Added.
2018-01-03 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Really fix plugin process after r226327.
* PluginProcess/unix/PluginProcessMainUnix.cpp:
2018-01-02 Brent Fulgham <bfulgham@apple.com>
[macOS, iOS] Adopt new secure coding APIs in WebKit
https://bugs.webkit.org/show_bug.cgi?id=181085
<rdar://problem/34837397>
Reviewed by Tim Horton.
Update WebKit code to use NSSecureCoding when the underlying operating system supports it. Use new
wrapper functions so the same code can be built on all supported OS releases, while enabling
seure coding when possible.
Note that NSView-based classes cannot be migrated at present due to AppKit not supporting NSSecureCoding
in its class hierarchy.
Tested by exising TestWebKitAPI tests for Coding and data transfer.
* Platform/ios/AccessibilityIOS.mm:
(WebKit::newAccessibilityRemoteToken): Encode using NSSecureCoding.
* UIProcess/API/Cocoa/WKPreferences.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(+[WKPreferences supportsSecureCoding]): Added to enable NSSecureCoding.
* UIProcess/API/Cocoa/WKProcessPool.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(+[WKProcessPool supportsSecureCoding]): Ditto.
* UIProcess/API/Cocoa/WKUserContentController.h:
* UIProcess/API/Cocoa/WKUserContentController.mm:
(+[WKUserContentController supportsSecureCoding]): Ditto.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithCoder:]): Use coding initialization that supports secure coding if
it is available in the supplied class.
* UIProcess/API/Cocoa/WKWebViewConfiguration.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(+[WKWebViewConfiguration supportsSecureCoding]): Added to enable NSSecureCoding.
(-[WKWebViewConfiguration initWithCoder:]): Use secure coding when possible.
* UIProcess/API/Cocoa/WKWebsiteDataStore.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(+[WKWebsiteDataStore supportsSecureCoding]): Added to enable NSSecureCoding.
* UIProcess/API/Cocoa/_WKApplicationManifest.h:
* UIProcess/API/Cocoa/_WKApplicationManifest.mm:
(+[_WKApplicationManifest supportsSecureCoding]): Added to enable NSSecureCoding.
(-[_WKApplicationManifest initWithCoder:]): Use secure coding when possible.
2017-12-28 Yusuke Suzuki <utatane.tea@gmail.com>
Remove std::chrono completely
https://bugs.webkit.org/show_bug.cgi?id=181186
Reviewed by Alex Christensen.
Use MonotonicTime, WallTime, and Seconds instead.
Changes are mechanical ones.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteData):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::clear):
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::responseHasExpired):
(WebKit::NetworkCache::responseNeedsRevalidation):
(WebKit::NetworkCache::makeStoreDecision):
(WebKit::NetworkCache::Cache::clear):
(WebKit::NetworkCache::Cache::storeData):
* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheEntry.cpp:
(WebKit::NetworkCache::Entry::Entry):
(WebKit::NetworkCache::Entry::asJSON const):
* NetworkProcess/cache/NetworkCacheEntry.h:
(WebKit::NetworkCache::Entry::timeStamp const):
* NetworkProcess/cache/NetworkCacheFileSystem.cpp:
(WebKit::NetworkCache::fileTimes):
(WebKit::NetworkCache::updateFileModificationTimeIfNeeded):
* NetworkProcess/cache/NetworkCacheFileSystem.h:
* NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
(WebKit::NetworkCache::IOChannel::IOChannel):
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::responseNeedsRevalidation):
(WebKit::NetworkCache::canRevalidate):
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::readRecord):
(WebKit::NetworkCache::Storage::clear):
(WebKit::NetworkCache::computeRecordWorth):
* NetworkProcess/cache/NetworkCacheStorage.h:
Bump the cache version. We now change the data in persistent cache.
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:
(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
(WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry):
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
(WebKit::NetworkCache::SubresourceInfo::lastSeen const):
(WebKit::NetworkCache::SubresourceInfo::firstSeen const):
(WebKit::NetworkCache::SubresourcesEntry::timeStamp const):
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::clearHSTSCache):
(WebKit::clearNSURLCache):
(WebKit::NetworkProcess::clearDiskCache):
* NetworkProcess/curl/NetworkProcessCurl.cpp:
(WebKit::NetworkProcess::clearDiskCache):
* NetworkProcess/mac/NetworkProcessMac.mm:
(WebKit::NetworkProcess::clearCacheForAllOrigins):
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::clearCacheForAllOrigins):
(WebKit::NetworkProcess::clearDiskCache):
* Platform/IPC/ArgumentCoders.cpp:
(IPC::ArgumentCoder<WallTime>::encode):
(IPC::ArgumentCoder<WallTime>::decode):
(IPC::ArgumentCoder<std::chrono::system_clock::time_point>::encode): Deleted.
(IPC::ArgumentCoder<std::chrono::system_clock::time_point>::decode): Deleted.
* Platform/IPC/ArgumentCoders.h:
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::deleteWebsiteData):
* PluginProcess/PluginProcess.h:
* PluginProcess/PluginProcess.messages.in:
* Scripts/webkit/messages.py:
(headers_for_type):
* Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
(WebKit::RemoteLayerBackingStore::lastDisplayTime const):
* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::RemoteLayerBackingStore):
(WebKit::RemoteLayerBackingStore::display):
* Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
* Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile):
(WebKit::RemoteLayerBackingStoreCollection::volatilityTimerFired):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<RecentSearch>::decode):
(IPC::ArgumentCoder<WallTime>::encode): Deleted.
(IPC::ArgumentCoder<WallTime>::decode): Deleted.
* Shared/WebCoreArgumentCoders.h:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::deleteWebsiteData):
* StorageProcess/StorageProcess.h:
* StorageProcess/StorageProcess.messages.in:
* UIProcess/API/C/WKApplicationCacheManager.cpp:
(WKApplicationCacheManagerDeleteAllEntries):
* UIProcess/API/C/WKCookieManager.cpp:
(WKCookieManagerDeleteAllCookiesModifiedAfterDate):
* UIProcess/API/C/WKKeyValueStorageManager.cpp:
(WKKeyValueStorageManagerDeleteAllEntries):
* UIProcess/API/C/WKResourceCacheManager.cpp:
(WKResourceCacheManagerClearCacheForAllOrigins):
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WKWebsiteDataStoreStatisticsClearThroughWebsiteDataRemoval):
(WKWebsiteDataStoreRemoveAllFetchCaches):
(WKWebsiteDataStoreRemoveAllIndexedDatabases):
(WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(toSystemClockTime):
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]):
* UIProcess/API/glib/WebKitWebContext.cpp:
(webkit_web_context_clear_cache):
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
(webkit_website_data_manager_clear):
* UIProcess/DrawingAreaProxy.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::deleteWebsiteData):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::deleteWebsiteData):
* UIProcess/Plugins/PluginProcessManager.h:
* UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::PluginProcessProxy::deleteWebsiteData):
* UIProcess/Plugins/PluginProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::deleteWebsiteData):
* UIProcess/Storage/StorageProcessProxy.h:
* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince):
* UIProcess/WebCookieManagerProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::deleteWebsiteData):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):
* UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
* UIProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
* UIProcess/WebStorage/StorageManager.h:
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::removeMediaKeys):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* UIProcess/gtk/WebPageProxyGtk.cpp:
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* UIProcess/wpe/WebPageProxyWPE.cpp:
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* WebProcess/Cookies/WebCookieManager.cpp:
(WebKit::WebCookieManager::deleteAllCookiesModifiedSince):
* WebProcess/Cookies/WebCookieManager.h:
* WebProcess/Cookies/WebCookieManager.messages.in:
* WebProcess/Plugins/PluginView.cpp:
(WebKit::lastModifiedDateMS):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::deleteWebsiteData):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
2018-01-02 Wenson Hsieh <wenson_hsieh@apple.com>
[Attachment Support] Introduce data structures and IPC support for writing promised blobs
https://bugs.webkit.org/show_bug.cgi?id=181189
Reviewed by Tim Horton.
Add IPC support for PromisedBlobInfo and PromisedBlobData. See WebCore/ChangeLog for more detail.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PromisedBlobData>::encode):
(IPC::ArgumentCoder<PromisedBlobData>::decode):
(IPC::ArgumentCoder<PromisedBlobInfo>::encode):
(IPC::ArgumentCoder<PromisedBlobInfo>::decode):
* Shared/WebCoreArgumentCoders.h:
2018-01-02 Michael Catanzaro <mcatanzaro@igalia.com>
REGRESSION(r223253): Broke ResourceLoadStatistics layout tests for non-Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=181231
Reviewed by Alex Christensen.
Add new C API for use by WebKitTestRunner.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder):
(WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
2018-01-02 Jiewen Tan <jiewen_tan@apple.com>
Add a WebAuthentication runtime feature flag
https://bugs.webkit.org/show_bug.cgi?id=181220
<rdar://problem/36055305>
Reviewed by Brent Fulgham.
Renames the CredentialManagement runtime feature flag into WebAuthentication.
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebAuthenticationEnabled):
(WKPreferencesGetWebAuthenticationEnabled):
(WKPreferencesSetCredentialManagementEnabled): Deleted.
(WKPreferencesGetCredentialManagementEnabled): Deleted.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
2018-01-02 Michael Catanzaro <mcatanzaro@igalia.com>
REGRESSION(r226327): [GTK] Plugin process is broken
https://bugs.webkit.org/show_bug.cgi?id=181187
Unreviewed, fix PluginProcessMainUnix after r226327.
* PluginProcess/unix/PluginProcessMainUnix.cpp:
2018-01-02 Tim Horton <timothy_horton@apple.com>
Fix the build on platforms where UICurrentUserInterfaceIdiomIsPad is defined to false
https://bugs.webkit.org/show_bug.cgi?id=181218
Reviewed by Alex Christensen.
* Platform/spi/ios/UIKitSPI.h:
(currentUserInterfaceIdiomIsPad):
* UIProcess/ios/SmartMagnificationController.mm:
(WebKit::SmartMagnificationController::didCollectGeometryForSmartMagnificationGesture):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFormInputSession setAccessoryViewCustomButtonTitle:]):
(-[WKContentView _requiresKeyboardWhenFirstResponder]):
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView requiresAccessoryView]):
(-[WKContentView _updateAccessory]):
* UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker show:fromRect:]):
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):
(-[WKFileUploadPanel _presentMenuOptionForCurrentInterfaceIdiom:]):
* UIProcess/ios/forms/WKFormInputControl.mm:
(-[WKDateTimePicker initWithView:datePickerMode:]):
(-[WKFormInputControl initWithView:]):
* UIProcess/ios/forms/WKFormSelectControl.mm:
(-[WKFormSelectControl initWithView:]):
On platforms where UICurrentUserInterfaceIdiomIsPad is defined to false,
blocks that conditionally execute based on its value are unreachable.
This causes the compiler to complain. Hide it away inside an inline function
and make use of that everywhere we used to use the macro.
2018-01-02 Alex Christensen <achristensen@webkit.org>
Remove SVN file accidentally added in r226160
https://bugs.webkit.org/show_bug.cgi?id=180934
* UIProcess/WebPageProxy.cpp.orig: Removed.
2018-01-02 Alex Christensen <achristensen@webkit.org>
Use BlockPtrs and lambdas instead of new/delete to pass parameters to blocks in WebViewImpl::performDragOperation
https://bugs.webkit.org/show_bug.cgi?id=180795
Reviewed by Brent Fulgham.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):
2018-01-02 Michael Catanzaro <mcatanzaro@igalia.com>
[WPE][GTK] Implement the assignment of ProcessIdentifiers to child processes
https://bugs.webkit.org/show_bug.cgi?id=181187
Reviewed by Brady Eidson.
* Shared/ChildProcess.cpp: Make the ProcessIdentifier mandatory.
(WebKit::ChildProcess::initialize):
* Shared/unix/ChildProcessMain.cpp: Initialize ChildProcessInitializationParameters with the
ProcessIdentifier.
(WebKit::ChildProcessMainBase::parseCommandLine):
* UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: Copy the ProcessIdentifier from
LaunchOptions into argv.
(WebKit::ProcessLauncher::launchProcess):
* WebProcess/wpe/WebProcessMainWPE.cpp: Expect the WPE socket ID later in the command line.
2018-01-02 Alex Christensen <achristensen@webkit.org>
Use new WebsiteDataStore passed in through decidePolicyForNavigation SPI
https://bugs.webkit.org/show_bug.cgi?id=180897
<rdar://problem/35535328>
Reviewed by Brent Fulgham.
* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::changeWebsiteDataStore):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
(WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
(WebKit::WebProcessPool::pageAddedToProcess): Deleted.
(WebKit::WebProcessPool::pageRemovedFromProcess): Deleted.
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::removeWebPage):
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
2018-01-02 Alex Christensen <achristensen@webkit.org>
Only use CookieStorageShim when we aren't using NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=180766
Reviewed by Brent Fulgham.
* Shared/mac/CookieStorageShim.h:
* Shared/mac/CookieStorageShim.mm:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
2018-01-02 Alex Christensen <achristensen@webkit.org>
Clean up context menu code
https://bugs.webkit.org/show_bug.cgi?id=181074
Reviewed by Brent Fulgham.
Use Ref instead of RefPtr where possible.
Use move semantics instead of copying from const references when possible.
Remove dead iOS code. Reduce allocations. Add stub for WPE.
* UIProcess/API/APIContextMenuClient.h:
(API::ContextMenuClient::getContextMenuFromProposedMenu):
(API::ContextMenuClient::getContextMenuFromProposedMenuAsync):
(API::ContextMenuClient::showContextMenu):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageContextMenuClient):
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/PageClient.h:
* UIProcess/WebContextMenuListenerProxy.cpp:
(WebKit::WebContextMenuListenerProxy::useContextMenuItems):
* UIProcess/WebContextMenuProxy.cpp:
(WebKit::WebContextMenuProxy::WebContextMenuProxy):
* UIProcess/WebContextMenuProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showContextMenu):
(WebKit::WebPageProxy::internalShowContextMenu): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::showContextMenuWithItems):
(WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk):
* UIProcess/gtk/WebContextMenuProxyGtk.h:
(WebKit::WebContextMenuProxyGtk::create):
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::createContextMenuProxy): Deleted.
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/mac/WebContextMenuProxyMac.h:
(WebKit::WebContextMenuProxyMac::create):
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::WebContextMenuProxyMac):
(WebKit::WebContextMenuProxyMac::showContextMenuWithItems):
(WebKit::WebContextMenuProxyMac::showContextMenu):
== Rolled over to ChangeLog-2018-01-01 ==