Commit Graph

876 Commits (haiku)

Author SHA1 Message Date
Tim Horton 5ce1ea419a Add WKHoverPlatter and some knobs to tweak its appearance
https://bugs.webkit.org/show_bug.cgi?id=227735
<rdar://problem/79198262>

Reviewed by Sam Weinig.

Source/WebCore/PAL:

* pal/spi/cocoa/QuartzCoreSPI.h:

Source/WebKit:

* Configurations/WebKit.xcconfig:
* Platform/spi/ios/PrototypeToolsSPI.h: Added.
* SourcesCocoa.txt:
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView rootContentView]):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setUpInteraction]):
(-[WKContentView cleanUpInteraction]):
Install and uninstall the platter alongside the gestures that drive it.

(-[WKContentView mouseGestureRecognizerChanged:]):
(-[WKContentView hoverGestureRecognizerChanged:]):
When the gesture recognizers fire, also update the hover point.

(-[WKContentView positionInformationForHoverPlatter:withRequest:completionHandler:]):
* UIProcess/ios/WKHoverPlatter.h: Added.
* UIProcess/ios/WKHoverPlatter.mm: Added.
(createBaseAnimation):
(addAnimation):
(setAdditionalPlatterLayerProperties):
(addAdditionalIncomingAnimations):
(addAdditionalDismissalAnimations):
(-[WKHoverPlatter initWithView:delegate:]):
(-[WKHoverPlatter invalidate]):
(-[WKHoverPlatter hoverPoint]):
(-[WKHoverPlatter setHoverPoint:]):
(-[WKHoverPlatter requestPositionInformationForCurrentHoverPoint]):
(-[WKHoverPlatter didReceivePositionInformation:]):
(-[WKHoverPlatter dismissPlatterWithAnimation:]):
(-[WKHoverPlatter didFinishAnimationForShadow:]):
(-[WKHoverPlatter clearLayers]):
Animate the platter in and out, and optionally between states, as the hover point moves.
Use the TextIndicator's geometry information, but not its snapshot; we use a
CAPortalLayer for the platter instead. A future patch will avoid taking the snapshot
entirely, since we call setHoverPoint (and thus generate a TextIndicator) a *lot*
when moving the mouse around, and all those snapshots add up.

* UIProcess/ios/WKHoverPlatterParameters.h: Added.
* UIProcess/ios/WKHoverPlatterParameters.mm: Added.
(-[PTSliderRow integerMinValue:maxValue:]):
(-[WKHoverPlatterParameters setDefaultValues]):
(+[WKHoverPlatterParameters settingsControllerModule]):
(+[WKHoverPlatterDomain rootSettings]):
(+[WKHoverPlatterDomain domainGroupName]):
(+[WKHoverPlatterDomain domainName]):
(+[WKHoverPlatterDomain rootSettingsClass]):
Add some knobs, with reasonable defaults, for experimentation.

* WebKit.xcodeproj/project.pbxproj:

WebKitLibraries:

* WebKitPrivateFrameworkStubs/appletvos/14/PrototypeTools.framework/PrototypeTools.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/15/PrototypeTools.framework/PrototypeTools.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/PrototypeTools.framework/PrototypeTools.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/15/PrototypeTools.framework/PrototypeTools.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/PrototypeTools.framework/PrototypeTools.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/8/PrototypeTools.framework/PrototypeTools.tbd: Added.


Canonical link: https://commits.webkit.org/239503@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@279711 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2 years ago
Wenson Hsieh 299c1a8ae0 [watchOS] Reenable modern text input UI for non-numeric text input types
https://bugs.webkit.org/show_bug.cgi?id=226988
rdar://78102953

Reviewed by Tim Horton.

Source/WebKit:

Refactor text input logic on watchOS such that we're able to present the new ("modern") UI for scribble text
input on watchOS 8, rather than legacy (in-process) scribble UI. Overall, this patch removes
WKQuickboardListViewController altogether. This had two subclasses: WKSelectMenuListViewController (used for
focused single and multiple select elements) and WKTextInputListViewController (used for text input types).
WKSelectMenuListViewController now inherits directly from PUICQuickboardListViewController, and
WKTextInputListViewController now inherits from PUICQuickboardMessageViewController; this inheritance from
PUICQuickboardMessageViewController instead of PUICQuickboardListViewController allows the
WKTextInputListViewController to show text suggestions using `-setMessages:` on
PUICQuickboardMessageViewController, instead of relying on custom WebKit code to insert text suggestions.

This means that we move the following pieces of functionality out of WKQuickboardListViewController, and into
either WKSelectMenuListViewController or WKTextInputListViewController:

1. Support for inserting and updating context views (i.e. the domain name header view in Quickboard) =>
WKTextInputListViewController.

2. Logic for determining whether or not we should show language selection UI => WKTextInputListViewController.

3. Support for laying out custom collection view cells in Quickboard => WKSelectMenuListViewController.

* Platform/spi/watchos/PepperUICoreSPI.h:
* SourcesCocoa.txt:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView createQuickboardTextInputContext]):
(-[WKContentView _createQuickboardController:]):

Refactor logic to create a PUICTextInputContext from the current focused element information out into a separate
helper method, `-createQuickboardTextInputContext`, and use it when both directly launching into
PUICQuickboardController and WKTextInputListViewController.

(canUseQuickboardControllerFor):

Remove a comment, now that we intend to continue using WKTextInputListViewController for non-keychain-AutoFill-
compatible text fields moving forward.

(-[WKContentView focusedFormControllerDidUpdateSuggestions:]):
(-[WKContentView allowsLanguageSelectionForListViewController:]):
(-[WKContentView textInputContextForListViewController:]):
(-[WKContentView textContentTypeForTesting]):
(-[WKContentView viewController:inputContextViewHeightForSize:]): Deleted.

Remove this delegate method, which was (effectively) unused since we just ask for
`-inputContextViewForViewController:` from the input delegate anyways.

(-[WKContentView allowsLanguageSelectionMenuForListViewController:]): Deleted.

Rename this to `-allowsLanguageSelectionForListViewController:`.

(-[WKContentView textContentTypeForListViewController:]): Deleted.

Replace this with `-textInputContextForListViewController:`, which returns a whole PUICTextInputContext instead
of just a text content type.

(-[WKContentView textSuggestionsForListViewController:]): Deleted.
(-[WKContentView listViewController:didSelectTextSuggestion:]): Deleted.

Remove several delegate methods that are no longer needed.

* UIProcess/ios/forms/WKDatePickerViewController.h:
* UIProcess/ios/forms/WKDatePickerViewController.mm:
(-[WKDatePickerViewController viewWillAppear:]):

Remove some (defunct) logic for overriding the status bar when showing Quickboard input view controllers. This
status bar mechanism (which was previously used to show label text for form controls) hasn't worked since
watchOS 6, and we need to implement this in a way that doesn't use PUICStatusBarGlobalContextViewAssertion.

* UIProcess/ios/forms/WKQuickboardListViewController.mm: Removed.
* UIProcess/ios/forms/WKQuickboardViewControllerDelegate.h: Renamed from Source/WebKit/UIProcess/ios/forms/WKQuickboardListViewController.h.
* UIProcess/ios/forms/WKSelectMenuListViewController.h:
* UIProcess/ios/forms/WKSelectMenuListViewController.mm:
(-[WKSelectMenuItemCell topToLabelBaselineSpecValue]):
(-[WKSelectMenuItemCell baselineToBottomSpecValue]):
(-[WKSelectMenuCollectionViewItemCell topToLabelBaselineSpecValue]):
(-[WKSelectMenuCollectionViewItemCell baselineToBottomSpecValue]):
(-[WKSelectMenuListViewController initWithDelegate:]):

See above comment for more details.

* UIProcess/ios/forms/WKTextInputListViewController.h:
* UIProcess/ios/forms/WKTextInputListViewController.mm:
(-[WKTextInputListViewController initWithDelegate:]):
(-[WKTextInputListViewController reloadContextView]):
(-[WKTextInputListViewController updateContextViewIfNeeded]):

Move logic for showing and updating the context view out of WKQuickboardListViewController, and into
WKTextInputListViewController. See comments above.

(-[WKTextInputListViewController requiresNumericInput]):
(-[WKTextInputListViewController additionalTrayButtons]):
(-[WKTextInputListViewController updateTextSuggestions:]):
(-[WKTextInputListViewController headerContentViewHeight]):
(-[WKTextInputListViewController headerContentView]):
(-[WKTextInputListViewController shouldShowLanguageButton]):
(-[WKTextInputListViewController supportsDictationInput]):
(-[WKTextInputListViewController shouldShowTrayView]):
(-[WKTextInputListViewController shouldShowTextField]):

Override this and return YES for text input types that don't require an additional numeric input tray button.
This allows PUICQuickboardMessageViewController to show a native text field containing the input text inside
quickboard, which (when tapped) presents modern text input UI.

Since showing the text field is apparently mutually exclusive to showing a tray view, we additionally override
`-shouldShowTrayView` and return NO for non-numeric text inputs.

(-[WKTextInputListViewController supportsArouetInput]):
(-[WKTextInputListViewController viewDidLoad]): Deleted.
(-[WKTextInputListViewController willPresentArouetViewController:]): Deleted.

There's no need to override this delegate method anymore, since the PUICTextInputContext's `-initialText` is
sufficient to ensure that the scribble text input UI is prepopulated with the focused text field's initial text
content.

(-[WKTextInputListViewController reloadTextSuggestions]): Deleted.

Rename this to `-updateTextSuggestions:`, and make it take a list of UITextSuggestions. This makes the code a
bit easier to follow and allows us to remove the `-textSuggestionsForListViewController:` delegate method.

(-[WKTextInputListViewController didSelectListItemAtIndexPath:]): Deleted.
(-[WKTextInputListViewController didSelectListItem:]): Deleted.
(-[WKTextInputListViewController _didSelectListItem:]): Deleted.
(-[WKTextInputListViewController numberOfListItems]): Deleted.
(-[WKTextInputListViewController heightForListItem:width:]): Deleted.
(-[WKTextInputListViewController cellForListItem:]): Deleted.
(-[WKTextInputListViewController listItemCellReuseIdentifier]): Deleted.
(-[WKTextInputListViewController listItemCellClass]): Deleted.
(-[WKTextInputListViewController itemCellForListItem:forIndexPath:]): Deleted.

Remove all this code for showing text suggestions in Quickboard UI. Since WKTextInputListViewController is now a
subclass of PUICQuickboardMessageViewController, we can now simply use the `-messages` property of to populate
quickboard with text suggestions.

* UIProcess/ios/forms/WKTimePickerViewController.h:
* WebKit.xcodeproj/project.pbxproj:

WebKitLibraries:

* WebKitPrivateFrameworkStubs/watchos/7/PepperUICore.framework/PepperUICore.tbd:
* WebKitPrivateFrameworkStubs/watchos/8/PepperUICore.framework/PepperUICore.tbd:


Canonical link: https://commits.webkit.org/238885@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278957 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2 years ago
Jonathan Bedard 5d8952432a [tvOS 15] Support building WebKit
https://bugs.webkit.org/show_bug.cgi?id=227037
<rdar://problem/79354143>

Reviewed by Alex Christensen.

* WebKitPrivateFrameworkStubs/appletvos/15/AppSupport.framework/AppSupport.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/15/CorePrediction.framework/CorePrediction.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/15/FileProvider.framework/FileProvider.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/15/GraphicsServices.framework/GraphicsServices.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/15/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/15/RunningBoardServices.framework/RunningBoardServices.tbd: Added.


Canonical link: https://commits.webkit.org/238846@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278914 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2 years ago
Jonathan Bedard e1d5de7bc3 [iOS 15] Support building WebKit (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=227002
<rdar://problem/79316598>

Reviewed by Alex Christensen.

* WebKitPrivateFrameworkStubs/iOS/15/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.


Canonical link: https://commits.webkit.org/238843@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278911 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2 years ago
Jonathan Bedard bc238bc37d [watchOS 8] Support building WebKit
https://bugs.webkit.org/show_bug.cgi?id=227050
<rdar://problem/79365320>

Reviewed by Tim Horton.

Source/WebKit:

Covered by existing tests.

* Platform/spi/watchos/PepperUICoreSPI.h: Add QuickboardController SPI.

WebKitLibraries:

* WebKitPrivateFrameworkStubs/watchos/8/AppSupport.framework/AppSupport.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/8/CorePrediction.framework/CorePrediction.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/8/FileProvider.framework/FileProvider.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/8/GraphicsServices.framework/GraphicsServices.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/8/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/8/PepperUICore.framework/PepperUICore.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/8/RunningBoardServices.framework/RunningBoardServices.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/8/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/8/URLFormatting.framework/URLFormatting.tbd: Added.


Canonical link: https://commits.webkit.org/238842@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278910 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2 years ago
Jonathan Bedard 772fdae161 Source/WebCore/PAL:
[iOS 15] Support building WebKit
https://bugs.webkit.org/show_bug.cgi?id=227002
<rdar://problem/79316598>

Reviewed by Tim Horton.

* pal/spi/ios/QuickLookSPI.h:

Source/WebKit:
[iOS 15] Support building WebKit
https://bugs.webkit.org/show_bug.cgi?id=227002
<rdar://problem/79316598>

Reviewed by Tim Horton.

Covered by existing tests.

* Platform/spi/ios/UIKitSPI.h: Add _insertTextFromCamera.

Tools:
[iOS 15] Support building WebKit
https://bugs.webkit.org/show_bug.cgi?id=227002
<rdar://problem/79316598>

Reviewed by Tim Horton.

* TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm: Remove unneeded import.

WebKitLibraries:
       [iOS 15] Support building WebKit
https://bugs.webkit.org/show_bug.cgi?id=227002
<rdar://problem/79316598>

Reviewed by Tim Horton.

* WebKitPrivateFrameworkStubs/iOS/15/AppSupport.framework/AppSupport.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/15/AuthKit.framework/AuthKit.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/15/BackBoardServices.framework/BackBoardServices.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/15/CorePrediction.framework/CorePrediction.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/15/GraphicsServices.framework/GraphicsServices.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/15/RunningBoardServices.framework/RunningBoardServices.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/15/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/15/URLFormatting.framework/URLFormatting.tbd: Added.


Canonical link: https://commits.webkit.org/238816@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278872 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2 years ago
Jeff Miller 8c1e120ef3 Update user-visible copyright strings to include 2021
https://bugs.webkit.org/show_bug.cgi?id=219901

Reviewed by Anders Carlsson.

.:

* Source/cmake/tools/scripts/COPYRIGHT-END-YEAR:

Source/JavaScriptCore:

* Info.plist:

Source/WebCore:

* Info.plist:

Source/WebKit:

* GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-OSX.plist:
* GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist:
* Info.plist:
* NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-OSX.plist:
* NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist:
* PluginProcess/EntryPoint/Cocoa/XPCService/PluginService.Info.plist:
* WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnService/Info-OSX.plist:
* WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnService/Info-iOS.plist:
* WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-OSX.plist:
* WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist:

Source/WebKitLegacy/mac:

* Info.plist:

WebKitLibraries:

* win/tools/scripts/COPYRIGHT-END-YEAR:


Canonical link: https://commits.webkit.org/232728@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@271131 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Keith Rollin 0f14ce8540 Remove copy-webkitlibraries-to-product-directory
https://bugs.webkit.org/show_bug.cgi?id=217465
<rdar://problem/70082193>

Reviewed by Darin Adler.

This script no longer does anything, so remove it along with the
scaffolding around it that invokes it during the build.

.:

* Makefile:

Tools:

* Scripts/build-jsc:
* Scripts/build-webkit:
* Scripts/copy-webkitlibraries-to-product-directory: Removed.

WebKitLibraries:

* Makefile: Removed.


Canonical link: https://commits.webkit.org/230258@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268200 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Devin Rousso 3c4054d787 CSS hover and "pointer: fine" media queries do not evaluate to true with iOS 13.4 mouse support
https://bugs.webkit.org/show_bug.cgi?id=209292
<rdar://problem/60663124>

Reviewed by Tim Horton.

Source/WebCore:

On iOS, the primary pointer will always be touch input, so the `hover`/`pointer` media query
should never change. If a mouse is connected, however, `any-hover`/`any-pointer` should
change as now there is at least one device that supports `hover`/`fine`. Note that in the
case of `any-pointer` this means that both `coarse` and `fine` will apply. Catalyst assumes
that there is always a mouse connected.

Spec: https://drafts.csswg.org/mediaqueries-4/#any-input

* css/MediaQueryEvaluator.cpp:
(WebCore::anyHoverEvaluate):
(WebCore::anyPointerEvaluate):

* page/ChromeClient.h:
* loader/EmptyClients.h:
(WebCore::EmptyChromeClient::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebCore::EmptyChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Provide a way for WebCore to get the current state of whether there are any mouse devices.
Refactor logic in `anyHoverEvaluate` and `anyPointerEvaluate` to move platform code into the
respective `WebKit::WebPage` file.

* page/PointerCharacteristics.h: Added.
Enum for `Coarse` and `Fine`.

* platform/PlatformScreen.h:
Export additional functions for use in WebKit.

* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

On iOS, the primary pointer will always be touch input, so the `hover`/`pointer` media query
should never change. If a mouse is connected, however, `any-hover`/`any-pointer` should
change as now there is at least one device that supports `hover`/`fine`. Note that in the
case of `any-pointer` this means that both `coarse` and `fine` will apply. Catalyst assumes
that there is always a mouse connected.

Spec: https://drafts.csswg.org/mediaqueries-4/#any-input

* UIProcess/ios/WKMouseDeviceObserver.h: Added.
* UIProcess/ios/WKMouseDeviceObserver.mm: Added.
(+[WKMouseDeviceObserver sharedInstance]):
(-[WKMouseDeviceObserver dealloc]):
(-[WKMouseDeviceObserver start]):
(-[WKMouseDeviceObserver stop]):
(-[WKMouseDeviceObserver mousePointerDevicesDidChange:]):
(-[WKMouseDeviceObserver _setHasMouseDeviceForTesting:]):
Use `BackBoardServices` to listen for mouse devices changes and notify all WebProcess.

* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::WebProcessProxy::platformInitialize): Added.
(WebKit::WebProcessProxy::~WebProcessProxy):
(WebKit::WebProcessProxy::platformDestroy): Added.
* UIProcess/ios/WebProcessProxyIOS.mm:
(WebKit::WebProcessProxy::platformInitialize): Added.
(WebKit::WebProcessProxy::platformDestroy): Added.
(WebKit::WebProcessProxy::notifyHasMouseDeviceChanged): Added.
Tell the shared `WKMouseDeviceObserver` to start listening for mouse device changes when
creating the WebProcess so that the shared `WKMouseDeviceObserver` knows to notify all
instances when mouse devices change. Make `allProcesses` into a `private static` member
function so that it can also be used in `UIProcess/ios/WebProcessProxyIOS.mm`.

* Shared/WebProcessCreationParameters.h:
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
Use the current state of the shared `WKMouseDeviceObserver` when creating WebProcess instead
of sending a `SetHasMouseDevice` message immediately after the WebProcess is created.

* WebProcess/WebProcess.messages.in:
* WebProcess/WebProcess.h:
(WebKit::WebProcess::hasMouseDevice const): Added.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setHasMouseDevice): Added.
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
Update style (including `any-hover` and `any-pointer`) whenever mouse devices change.

* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::hasMouseDevice): Added.
(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
* WebProcess/WebPage/playstation/WebPagePlayStation.cpp:
(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
* WebProcess/WebPage/win/WebPageWin.cpp:
(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
* WebProcess/WebPage/wpe/WebPageWPE.cpp:
(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Provide a way for WebCore to get the current state of whether there are any mouse devices.
Refactor logic in `WebCore::anyHoverEvaluate` and `WebCore::anyPointerEvaluate` to move
platform code into the respective `WebPage` file.

* Configurations/WebKit.xcconfig:
* Platform/spi/ios/BackBoardServicesSPI.h:
* Platform/spi/ios/BaseBoardSPI.h: Added.
* SourcesCocoa.txt:
* WebKit.xcodeproj/project.pbxproj:

Source/WebKitLegacy/ios:

* WebCoreSupport/WebChromeClientIOS.h:
(WebChromeClientIOS::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebChromeClientIOS::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Mouse devices are not supported.

Source/WebKitLegacy/mac:

* WebCoreSupport/WebChromeClient.h:
(WebChromeClient::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Mouse devices are always supported.

Source/WebKitLegacy/win:

* WebCoreSupport/WebChromeClient.h:
(WebChromeClient::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Mouse devices are always supported.

Tools:

* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[TestWKWebView evaluateMediaQuery:]): Added.
Create helper function for synchronously testing media queries.

* TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm:
(iOSMouseSupport.MouseInitiallyDisconnected): Added.
(iOSMouseSupport.MouseInitiallyConnected): Added.
(iOSMouseSupport.MouseLaterDisconnected): Added.
(iOSMouseSupport.MouseLaterConnected): Added.
(iOSMouseSupport.MouseAlwaysConnected): Added.

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/13/BackBoardServices.framework/BackBoardServices.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/BackBoardServices.framework/BackBoardServices.tbd: Added.
Use `BackBoardServices` to listen for mouse devices changes.


Canonical link: https://commits.webkit.org/230175@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@268086 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Ryan Hostetler fd0ac4fa1c Submission failure with "make: *** No rule to make target `installsrc'. Stop"
https://bugs.webkit.org/show_bug.cgi?id=214696
<rdar://problem/62268104>

Patch by Ryan Hostetler <rhost@apple.com> on 2020-10-04
Reviewed by Darin Adler.

.:

Add installsrc phase to support xbs submitproject for WebKit repository.
This change allows internal tools to submit and build in a single step.

* Makefile:
* Makefile.shared:
* Source/Makefile:

Source/ThirdParty:

Add installsrc phase to support xbs submitproject for WebKit repository.
This change allows internal tools to submit and build in a single step.

* Makefile:

Tools:

Add support for XBS single base project build for WebKit repository.
This change allows internal tools to submit and build from the repository root in a single step.

* Makefile:
Tools does not need to be submitted, so we stub out the installsrc phase.

WebKitLibraries:

Add support for XBS single base project build for WebKit repository.
This change allows internal tools to submit and build from the repository root in a single step.

* Makefile:
WebKitLibraries do not need to be submitted, so we stub out the installsrc phase.

Canonical link: https://commits.webkit.org/230058@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@267949 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Wenson Hsieh d0ceff02ad REGRESSION (r264690): [ iOS wk2 ] editing/selection/shift-click-includes-existing-selection.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=214688
<rdar://problem/65993683>

Reviewed by Darin Adler.

Source/WebCore/PAL:

Remove logging added in r264882, r264890, r264892, and r264896.

* pal/spi/ios/GraphicsServicesSPI.h:

Source/WebKit:

Remove logging added in r264882, r264890, r264892, and r264896.

* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _singleTapIdentified:]):
(-[WKContentView _singleTapRecognized:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::commitPotentialTap):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleSyntheticClick):

Tools:

Attempt another speculative fix for this flaky test, motivated by logging introduced in r264896. This recently
introduced telemetry would suggest that this test fails when the act of handling a synthetic modifier keydown
fails to update `GSKeyboardRef`'s live modifier flags if the keyboard layout changes mid-event, forcing the
existing `GSKeyboardRef` to be destroyed and rebuilt.

In this case, the keyboard layout changes from "Hebrew" to "US" when this test fails. There is only one (sane)
explanation for this, which is that one of the `editing/input/ios/rtl-keyboard-input-*.html` tests switch to an
RTL keyboard ("he_IL" in both cases) by swizzling out `-currentInputMode` and `-currentInputModeInPreference` on
`UIKeyboardInputModeController`. While the swizzling is torn down in between test runs via logic in
`TestController::platformResetStateToConsistentValues`, it's possible that this change hasn't propagated to
the UIKit or GraphicsServices layers -- in other words, `UIApplication`'s `GSKeyboardRef` remains stuck in the
Hebrew layout until the next time `-GSKeyboardForHWLayout:forceRebuild:createIfNeeded:` forces the keyboard to
be rebuilt, which (in this case) seems to happen while running `shift-click-includes-existing-selection.html`.

For reasons that are still unclear, this lazy regeneration of the `GSKeyboardRef` causes GraphicsServices' live
modifier state to not update when handling a shift key down HID event. However, we might be able to fix this by
forcing UIKit to sync the default (unswizzled) keyboard layout back to its `GSKeyboardRef` immediately when we
stop swizzling `UIKeyboardInputModeController` after running a test that attempts to simulate changing keyboard
input modes.

* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformResetStateToConsistentValues):

Call `-prepareKeyboardInputModeFromPreferences:` to force the UIApp to update its hardware keyboard state (i.e.
`GSKeyboardRef`).

* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptControllerIOS::singleTapAtPointWithModifiers):

Also, restore this method to how it was prior to r264890, as it doesn't seem like waiting for the HID marker
event after synthesizing a keydown had any effect.

* WebKitTestRunner/ios/mainIOS.mm:
(-[WebKitTestRunnerApp handleKeyHIDEvent:]): Deleted.

WebKitLibraries:

Remove logging added in r264882, r264890, r264892, and r264896.

* WebKitPrivateFrameworkStubs/appletvos/13/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/appletvos/14/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/iOS/13/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/iOS/14/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/watchos/6/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/watchos/7/GraphicsServices.framework/GraphicsServices.tbd:

LayoutTests:

Remove the failing test expectation.

* platform/ios-simulator-wk2/TestExpectations:


Canonical link: https://commits.webkit.org/227630@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264907 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Wenson Hsieh 5b13e2974f Unreviewed, add even more logging to try and diagnose a flaky test
https://bugs.webkit.org/show_bug.cgi?id=214688
<rdar://problem/65993683>

Source/WebCore/PAL:

Add more GraphicsServices SPI declarations.


* pal/spi/ios/GraphicsServicesSPI.h:

Source/WebKit:

Add another IPI declaration on UIApplication.


* Platform/spi/ios/UIKitSPI.h:

Tools:

Evidence so far suggests that this test fails when the process of dispatching a keydown event for a modifier
(in this case, the shift key) causes the UIApplication's hardware keyboard (`GSKeyboardRef`) to be regenerated.
This may happen in one of two ways: either a rebuild is forced by logic in `-[UIApplication handleKeyHIDEvent:]`,
or `forceRebuild` is `NO`, but the keyboard is rebuilt anyways due to a mismatched layout and/or keyboard type.


* WebKitTestRunner/ios/mainIOS.mm:
(-[WebKitTestRunnerApp GSKeyboardForHWLayout:forceRebuild:createIfNeeded:]):
(-[WebKitTestRunnerApp handleKeyHIDEvent:]):

WebKitLibraries:

Add symbol stubs for non-internal builds.


* WebKitPrivateFrameworkStubs/appletvos/13/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/appletvos/14/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/iOS/13/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/iOS/14/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/watchos/6/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/watchos/7/GraphicsServices.framework/GraphicsServices.tbd:


Canonical link: https://commits.webkit.org/227619@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264896 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Wenson Hsieh ad16b87bf7 REGRESSION (r264690): [ iOS wk2 ] editing/selection/shift-click-includes-existing-selection.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=214688
<rdar://problem/65993683>

Reviewed by Tim Horton.

Source/WebCore/PAL:

* pal/spi/ios/GraphicsServicesSPI.h:

Source/WebKit:

Add an SPI declaration on UIApplication.

* Platform/spi/ios/UIKitSPI.h:

Tools:

Continue to add logging in an attempt to debug this flaky test.

* WebKitTestRunner/ios/mainIOS.mm:
(-[WebKitTestRunnerApp handleKeyHIDEvent:]):
(-[WebKitTestRunnerApp _handleHIDEvent:]): Drive-by fix: add a missing call to the superclass method.

WebKitLibraries:

Declare the symbol for `GSKeyboardGetLiveModifierState()`, for non-internal builds.

* WebKitPrivateFrameworkStubs/appletvos/13/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/appletvos/14/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/iOS/13/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/iOS/14/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/watchos/6/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/watchos/7/GraphicsServices.framework/GraphicsServices.tbd:


Canonical link: https://commits.webkit.org/227615@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264892 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Brady Eidson 25429e2ff7 Add Gamepad tests that exercise the native frameworks
<rdar://problem/65343674> and https://bugs.webkit.org/show_bug.cgi?id=214188

Reviewed by Tim Horton.

Source/WebCore:

* platform/gamepad/mac/MultiGamepadProvider.h:
(WebCore::MultiGamepadProvider::setUsesOnlyHIDGamepadProvider):
* platform/gamepad/mac/MultiGamepadProvider.mm:
(WebCore::MultiGamepadProvider::startMonitoringGamepads):
(WebCore::MultiGamepadProvider::stopMonitoringGamepads):

Source/WebKit:

Add some testing-only SPI for TestWebKitAPI.

* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _numberOfConnectedGamepadsForTesting]):
(-[WKProcessPool _setUsesOnlyHIDGamepadProviderForTesting:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

* UIProcess/Gamepad/UIGamepadProvider.h:
(WebKit::UIGamepadProvider::numberOfConnectedGamepads const):

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::numberOfConnectedGamepadsForTesting):
(WebKit::WebProcessPool::setUsesOnlyHIDGamepadProviderForTesting):
* UIProcess/WebProcessPool.h:

Source/WTF:

* wtf/PlatformHave.h:

Tools:

For Internal builds, we can create HID devices that exercise the native gamepad providers.
E.g. Actually exercise the IOHID gamepad provider codepath.

Give the Internal TestWebKitAPI build some entitlements:
* TestWebKitAPI/Configurations/TestWebKitAPI-macOS-internal.entitlements: Added.
* TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:

Add a very basic test that connects a device, presses a button, and verifies the web page sees it:
* TestWebKitAPI/Tests/mac/HIDGamepads.mm: Added.
(-[GamepadMessageHandler userContentController:didReceiveScriptMessage:]):
(TestWebKitAPI::handleGamepadConnect):

Add the beginnings of a VirtualGamepad device that reads in a HID descriptor (just like real gamepads):
* TestWebKitAPI/mac/VirtualGamepad.h: Added.
* TestWebKitAPI/mac/VirtualGamepad.mm: Added.
(TestWebKitAPI::VirtualGamepad::makeVirtualNimbus):
(TestWebKitAPI::VirtualGamepad::VirtualGamepad):
(TestWebKitAPI::VirtualGamepad::~VirtualGamepad):
(TestWebKitAPI::VirtualGamepad::setButtonValue):
(TestWebKitAPI::VirtualGamepad::setAxisValue):
(TestWebKitAPI::VirtualGamepad::publishReport):

WebKitLibraries:

* WebKitPrivateFrameworkStubs/Mac/101500/HID.framework/HID.tbd: Added.
* WebKitPrivateFrameworkStubs/Mac/101600/HID.framework/HID.tbd: Added.
* WebKitPrivateFrameworkStubs/Mac/110000/HID.framework/HID.tbd: Added.


Canonical link: https://commits.webkit.org/227505@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264769 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard dc3c156898 Add WebKitPrivateFrameworkStubs for Big Sur
https://bugs.webkit.org/show_bug.cgi?id=214503
<rdar://problem/65746594>

Reviewed by Alexey Proskuryakov.

* WebKitPrivateFrameworkStubs/Mac/101600: Added.
* WebKitPrivateFrameworkStubs/Mac/101600/AuthKit.framework: Added.
* WebKitPrivateFrameworkStubs/Mac/101600/AuthKit.framework/AuthKit.tbd: Added.
* WebKitPrivateFrameworkStubs/Mac/110000: Added.
* WebKitPrivateFrameworkStubs/Mac/110000/AuthKit.framework: Added.
* WebKitPrivateFrameworkStubs/Mac/110000/AuthKit.framework/AuthKit.tbd: Added.


Canonical link: https://commits.webkit.org/227300@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264552 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard ec5579035c Add WebKitPrivateFrameworkStubs for watchOS 7
https://bugs.webkit.org/show_bug.cgi?id=214479
<rdar://problem/65727787>

Reviewed by Tim Horton.

* WebKitPrivateFrameworkStubs/watchos/7: Added.
* WebKitPrivateFrameworkStubs/watchos/7/AppSupport.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/AppSupport.framework/AppSupport.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/AssertionServices.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/AssertionServices.framework/AssertionServices.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/AuthKit.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/AuthKit.framework/AuthKit.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/CorePrediction.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/CorePrediction.framework/CorePrediction.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/DeviceIdentity.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/DeviceIdentity.framework/DeviceIdentity.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/FileProvider.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/FileProvider.framework/FileProvider.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/GraphicsServices.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/GraphicsServices.framework/GraphicsServices.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/IOKit.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/IOKit.framework/IOKit.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/IOSurfaceAccelerator.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/LocalAuthentication.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/LocalAuthentication.framework/LocalAuthentication.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/PepperUICore.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/PepperUICore.framework/PepperUICore.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/RunningBoardServices.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/RunningBoardServices.framework/RunningBoardServices.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/SafariSafeBrowsing.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/7/URLFormatting.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/7/URLFormatting.framework/URLFormatting.tbd: Added.


Canonical link: https://commits.webkit.org/227296@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264548 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard 088124048d Add WebKitPrivateFrameworkStubs for tvOS 14
https://bugs.webkit.org/show_bug.cgi?id=214476
<rdar://problem/65725761>

Reviewed by Tim Horton.

* WebKitPrivateFrameworkStubs/appletvos/14: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/AppSupport.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/AppSupport.framework/AppSupport.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/AssertionServices.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/AssertionServices.framework/AssertionServices.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/AuthKit.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/AuthKit.framework/AuthKit.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/CorePrediction.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/CorePrediction.framework/CorePrediction.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/DeviceIdentity.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/DeviceIdentity.framework/DeviceIdentity.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/FileProvider.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/FileProvider.framework/FileProvider.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/GraphicsServices.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/GraphicsServices.framework/GraphicsServices.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/IOKit.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/IOKit.framework/IOKit.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/IOSurfaceAccelerator.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/LocalAuthentication.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/LocalAuthentication.framework/LocalAuthentication.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/RunningBoardServices.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/RunningBoardServices.framework/RunningBoardServices.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/SafariSafeBrowsing.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/URLFormatting.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/14/URLFormatting.framework/URLFormatting.tbd: Added.


Canonical link: https://commits.webkit.org/227295@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264547 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard 19257b4c23 Add WebKitPrivateFrameworkStubs for iOS 14
https://bugs.webkit.org/show_bug.cgi?id=214432
<rdar://problem/65695714>

Reviewed by Tim Horton.

* WebKitPrivateFrameworkStubs/iOS/14: Added.
* WebKitPrivateFrameworkStubs/iOS/14/AppSupport.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/AppSupport.framework/AppSupport.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/AssertionServices.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/AssertionServices.framework/AssertionServices.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/AuthKit.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/AuthKit.framework/AuthKit.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/CorePrediction.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/CorePrediction.framework/CorePrediction.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/DeviceIdentity.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/DeviceIdentity.framework/DeviceIdentity.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/GraphicsServices.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/GraphicsServices.framework/GraphicsServices.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/IOSurfaceAccelerator.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/RunningBoardServices.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/RunningBoardServices.framework/RunningBoardServices.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/SafariSafeBrowsing.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/14/URLFormatting.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/14/URLFormatting.framework/URLFormatting.tbd: Added.


Canonical link: https://commits.webkit.org/227246@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264498 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard e8e36ed3c1 [watchOS] Support armv7k build
https://bugs.webkit.org/show_bug.cgi?id=214306
<rdar://problem/65549901>

Reviewed by Aakash Jain.

Source/WebCore:

No new tests, build fix.

* Configurations/Base.xcconfig: Disable 64 to 32 bit conversion warning for armv7k.

WebKitLibraries:

* WebKitPrivateFrameworkStubs/watchos/6/FileProvider.framework/FileProvider.tbd: Add armv7k to supported architectures.
* WebKitPrivateFrameworkStubs/watchos/6/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Ditto.
* WebKitPrivateFrameworkStubs/watchos/6/LocalAuthentication.framework/LocalAuthentication.tbd: Ditto.
* WebKitPrivateFrameworkStubs/watchos/6/PepperUICore.framework/PepperUICore.tbd: Ditto.
* WebKitPrivateFrameworkStubs/watchos/6/RunningBoardServices.framework/RunningBoardServices.tbd: Ditto.
* WebKitPrivateFrameworkStubs/watchos/6/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd: Ditto.
* WebKitPrivateFrameworkStubs/watchos/6/URLFormatting.framework/URLFormatting.tbd: Ditto.


Canonical link: https://commits.webkit.org/227116@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@264357 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard a4012c3962 watchOS/tvOS: Remote unneeded FileProvider symbols
https://bugs.webkit.org/show_bug.cgi?id=213216
<rdar://problem/64380232>

Reviewed by Alexey Proskuryakov.

* WebKitPrivateFrameworkStubs/appletvos/13/FileProvider.framework/FileProvider.tbd:
* WebKitPrivateFrameworkStubs/watchos/6/FileProvider.framework/FileProvider.tbd:


Canonical link: https://commits.webkit.org/226004@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263067 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard f9fdd42d28 Catalyst WebKit apps continue to play audio after quitting (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=212981
<rdar://problem/57089471>

Unreviewed build fix.


* WebKitPrivateFrameworkStubs/appletvos/13/RunningBoardServices.framework/RunningBoardServices.tbd:
* WebKitPrivateFrameworkStubs/watchos/6/RunningBoardServices.framework/RunningBoardServices.tbd:


Canonical link: https://commits.webkit.org/225848@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262885 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jer Noble 36d12ba1d2 Catalyst WebKit apps continue to play audio after quitting
https://bugs.webkit.org/show_bug.cgi?id=212981
<rdar://problem/57089471>

Reviewed by Chris Dumez.

Source/WebKit:

RunningBoard will track whether a process (and it's associated child processes) are "user-visible" by
granting those processes an "endowment", similar to the existing endowment for application visibility.
Track changes to these endowments using a RBSProcessMonitor, and for Catalyst apps, react to losing the
"user-visible" endowment by suspending all media playback.

Move all the endowment-related code into a new class, EndowmentStateTracker, which is a singleton object
that can have mulitple WebPageProxy clients. Update references to the previously global static
isApplicationForeground() function to refer to EndowmentStateTracker instead.

Drive-by fix: move some iOS-only functions in WebPageProxy.cpp into WebPageProxyIOS.mm.

* UIProcess/ApplicationStateTracker.h:
* UIProcess/ApplicationStateTracker.mm:
(WebKit::ApplicationStateTracker::ApplicationStateTracker):
(WebKit::isApplicationForeground): Deleted.
* UIProcess/EndowmentStateTracker.h: Added.
(WebKit::EndowmentStateTracker::isVisible const):
(WebKit::EndowmentStateTracker::isUserFacing const):
* UIProcess/EndowmentStateTracker.mm: Added.
(WebKit::handleForPID):
(WebKit::EndowmentStateTracker::isApplicationForeground):
(WebKit::EndowmentStateTracker::isApplicationUserFacing):
(WebKit::EndowmentStateTracker::singleton):
(WebKit::EndowmentStateTracker::EndowmentStateTracker):
(WebKit::EndowmentStateTracker::addClient):
(WebKit::EndowmentStateTracker::removeClient):
(WebKit::EndowmentStateTracker::setIsUserFacing):
(WebKit::EndowmentStateTracker::setIsVisible):
* UIProcess/WebPageProxy.cpp:
(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::processWillBecomeSuspended): Deleted.
(WebKit::WebPageProxy::processWillBecomeForeground): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::isApplicationVisible):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::processWillBecomeSuspended):
(WebKit::WebPageProxy::processWillBecomeForeground):
(WebKit::WebPageProxy::isUserFacingChanged):
(WebKit::WebPageProxy::isVisibleChanged):
* WebKit.xcodeproj/project.pbxproj:

Source/WTF:

Add the ability to call copyToVector() on a WeakHashSet. This requires two changes:
- A template specialization that returns a Vector<WeakPtr<T>> from copyToVector()
- A template specialization that calls calculateSize() rather than size() on the object
  being iterated upon.

* wtf/WeakHashSet.h:
(WTF::copyToVector):

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd:


Canonical link: https://commits.webkit.org/225827@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262858 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard bc9983d397 tvOS: Remove arm64e references in .tbd files
https://bugs.webkit.org/show_bug.cgi?id=212792
<rdar://problem/64003670>

Reviewed by Tim Horton.

* WebKitPrivateFrameworkStubs/appletvos/13/AppSupport.framework/AppSupport.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/AssertionServices.framework/AssertionServices.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/AuthKit.framework/AuthKit.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/CorePDF.framework/CorePDF.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/CorePrediction.framework/CorePrediction.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/DeviceIdentity.framework/DeviceIdentity.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/FileProvider.framework/FileProvider.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/GraphicsServices.framework/GraphicsServices.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/IOKit.framework/IOKit.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/LocalAuthentication.framework/LocalAuthentication.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/RunningBoardServices.framework/RunningBoardServices.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd:
* WebKitPrivateFrameworkStubs/appletvos/13/URLFormatting.framework/URLFormatting.tbd:


Canonical link: https://commits.webkit.org/225602@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262596 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard 70e0ba573a Add tvOS framework stubs
https://bugs.webkit.org/show_bug.cgi?id=212760
<rdar://problem/63986134>

Reviewed by Tim Horton.

* WebKitPrivateFrameworkStubs/appletvos: Added.
* WebKitPrivateFrameworkStubs/appletvos/13: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/AppSupport.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/AppSupport.framework/AppSupport.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/AssertionServices.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/AssertionServices.framework/AssertionServices.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/AuthKit.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/AuthKit.framework/AuthKit.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/CorePDF.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/CorePDF.framework/CorePDF.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/CorePrediction.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/CorePrediction.framework/CorePrediction.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/DeviceIdentity.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/DeviceIdentity.framework/DeviceIdentity.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/FileProvider.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/FileProvider.framework/FileProvider.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/GraphicsServices.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/GraphicsServices.framework/GraphicsServices.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/IOKit.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/IOKit.framework/IOKit.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/IOSurfaceAccelerator.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/LocalAuthentication.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/LocalAuthentication.framework/LocalAuthentication.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/RunningBoardServices.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/RunningBoardServices.framework/RunningBoardServices.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/SafariSafeBrowsing.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/URLFormatting.framework: Added.
* WebKitPrivateFrameworkStubs/appletvos/13/URLFormatting.framework/URLFormatting.tbd: Added.


Canonical link: https://commits.webkit.org/225571@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262557 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Jonathan Bedard f5db1d4d1b Add watchOS framework stubs
https://bugs.webkit.org/show_bug.cgi?id=212761
<rdar://problem/63986144>

Reviewed by Tim Horton.

* WebKitPrivateFrameworkStubs/watchos: Added.
* WebKitPrivateFrameworkStubs/watchos/6: Added.
* WebKitPrivateFrameworkStubs/watchos/6/AppSupport.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/AppSupport.framework/AppSupport.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/AssertionServices.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/AssertionServices.framework/AssertionServices.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/AuthKit.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/AuthKit.framework/AuthKit.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/CorePDF.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/CorePDF.framework/CorePDF.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/CorePrediction.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/CorePrediction.framework/CorePrediction.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/DeviceIdentity.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/DeviceIdentity.framework/DeviceIdentity.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/FileProvider.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/FileProvider.framework/FileProvider.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/GraphicsServices.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/GraphicsServices.framework/GraphicsServices.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/IOKit.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/IOKit.framework/IOKit.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/IOSurfaceAccelerator.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/LocalAuthentication.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/LocalAuthentication.framework/LocalAuthentication.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/PepperUICore.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/PepperUICore.framework/PepperUICore.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/RunningBoardServices.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/RunningBoardServices.framework/RunningBoardServices.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/SafariSafeBrowsing.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/SafariSafeBrowsing.framework/SafariSafeBrowsing.tbd: Added.
* WebKitPrivateFrameworkStubs/watchos/6/URLFormatting.framework: Added.
* WebKitPrivateFrameworkStubs/watchos/6/URLFormatting.framework/URLFormatting.tbd: Added.


Canonical link: https://commits.webkit.org/225570@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262556 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Chris Dumez 7b7693ebd9 [iOS] WKProcessAssertionBackgroundTaskManager incorrectly ignores expiration notifications for daemons
https://bugs.webkit.org/show_bug.cgi?id=212619

Reviewed by Alex Christensen.

WKProcessAssertionBackgroundTaskManager was incorrectly ignoring process assertion expiration notifications
for daemons, because it was relying on visibility to make decisions. For daemons (or ViewServices), we would
not get application visibility notifications and would therefore always assume the app is visible.
As a result, _handleBackgroundTaskExpiration would think it received an outdated expiration notification for
a visible app and would simply re-take the assertion right away.

To address the issue, we now rely on a RunningBoard API that lets us know if the suspension timer has been
started or not (and how much remains on the timer). If the suspension timer is not active when get receive
the expiration notification, we know it is an outdated notification and we ignore it (release and re-take
assertion right away). This can happen if we did not have time to process the expiration notification before
suspended and thus only get it upon resuming. It can also happen if the user re-activates the app right after
the expiration notice has been sent.

* Platform/spi/ios/RunningBoardServicesSPI.h:
* UIProcess/ios/ProcessAssertionIOS.mm:
(processHasActiveRunTimeLimitation):
(-[WKProcessAssertionBackgroundTaskManager init]):
(-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):
(-[WKProcessAssertionBackgroundTaskManager _handleBackgroundTaskExpiration]):
(-[WKProcessAssertionBackgroundTaskManager _handleBackgroundTaskExpirationOnMainThread]):
(-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]):


Canonical link: https://commits.webkit.org/225504@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262477 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Chris Dumez 38ae78ad7e [iOS] Stop using legacy BKSApplicationStateMonitor
https://bugs.webkit.org/show_bug.cgi?id=210945

Reviewed by Tim Horton.

Source/WebKit:

Stop using legacy BKSApplicationStateMonitor and use RunningBoard API instead.

* Configurations/WebKit.xcconfig:
Stop linking against ApplicationServices when using iOS 14 SDK now that we are
fully transitioned to RunningBoard.

* Platform/spi/ios/RunningBoardServicesSPI.h:
* UIProcess/ApplicationStateTracker.h:
* UIProcess/ApplicationStateTracker.mm:
(WebKit::ApplicationStateTracker::ApplicationStateTracker):
(WebKit::isApplicationForeground):
(WebKit::ApplicationStateTracker::~ApplicationStateTracker):
(WebKit::isBackgroundState): Deleted.
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::isApplicationVisible):

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd:

Canonical link: https://commits.webkit.org/223853@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@260642 268f45cc-cd09-0410-ab3c-d52691b4dbfc
3 years ago
Keith Rollin 0a84b77d46 Remove support for WebKitSystemInterface
https://bugs.webkit.org/show_bug.cgi?id=208894
<rdar://problem/60297590>

Reviewed by Brent Fulgham.

This project provided support for facilities that are now handled
elsewhere and is no longer needed.

.:

* .gitignore:
* Source/PlatformWin.cmake:
* Source/cmake/OptionsAppleWin.cmake:

Tools:

* Scripts/copy-webkitlibraries-to-product-directory:

WebKitLibraries:

* Makefile:
* WebKitSystemInterface.h: Removed.
* win/include/WebKitSystemInterface/WebKitSystemInterface.h: Removed.
* win/lib32/WebKitSystemInterface.lib: Removed.


Canonical link: https://commits.webkit.org/222062@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258520 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Chris Dumez 4ceda47066 [iOS] Replace "unexpectedly resumed" observer with RunningBoard suspendible assertions
https://bugs.webkit.org/show_bug.cgi?id=205687
<rdar://problem/57890246>

Reviewed by Tim Horton.

Adopt new RunningBoard process assertion to indicate that WebContent processes depend on their
UIProcess (and therefore, the UIProcess must be running if the WebContent process is). This
replaces our "Unexpectedly resumed" assertion which was causing unexpected terminations in some
cases.

* Configurations/WebKit.xcconfig:
* Platform/spi/ios/RunningBoardServicesSPI.h: Added.
* Scripts/process-entitlements.sh:
* Shared/DependencyProcessAssertion.cpp: Added.
(WebKit::DependencyProcessAssertion::DependencyProcessAssertion):
(WebKit::DependencyProcessAssertion::~DependencyProcessAssertion):
* Shared/DependencyProcessAssertion.h: Added.
* Shared/ios/DependencyProcessAssertionIOS.mm: Added.
(WebKit::DependencyProcessAssertion::DependencyProcessAssertion):
(WebKit::DependencyProcessAssertion::~DependencyProcessAssertion):
* Sources.txt:
* SourcesCocoa.txt:
* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeConnection):
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:


Canonical link: https://commits.webkit.org/221771@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258180 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Chris Dumez 9d31248476 Unreviewed, revert r253984 as it appears to be causing assertion leaks.
https://bugs.webkit.org/show_bug.cgi?id=205687

Source/WebKit:

* Configurations/WebKit.xcconfig:
* Platform/spi/ios/RunningBoardServicesSPI.h: Removed.
* Scripts/process-entitlements.sh:
* Shared/DependencyProcessAssertion.cpp: Removed.
* Shared/DependencyProcessAssertion.h: Removed.
* Shared/NativeWebTouchEvent.h:
* Shared/ios/DependencyProcessAssertionIOS.mm: Removed.
* Sources.txt:
* SourcesCocoa.txt:
* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::processWasResumed):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeConnection):
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::processTaskStateDidChange):
(WebKit::WebProcess::releaseProcessWasResumedAssertions):

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/13/RunningBoardServices.framework/RunningBoardServices.tbd: Removed.

Canonical link: https://commits.webkit.org/219853@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@255189 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Jonathan Bedard 5c844c96cb WebKitLibraries: Remove old private framework stubs
https://bugs.webkit.org/show_bug.cgi?id=206067
<rdar://problem/58479518>

Reviewed by Alexey Proskuryakov.

* WebKitPrivateFrameworkStubs/iOS/10: Removed.
* WebKitPrivateFrameworkStubs/iOS/11: Removed.
* WebKitPrivateFrameworkStubs/iOS/12: Removed.


Canonical link: https://commits.webkit.org/219191@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254348 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Mark Lam 15cded41da Rename testing build configuration to release+assert, and add new testing build configuration.
https://bugs.webkit.org/show_bug.cgi?id=205954

Reviewed by Yusuke Suzuki.

.:

"make release-assert" builds a release build with ASSERT_ENABLED=1.
"make testing" builds a debug build with clang optimization level forced to -O3.

* Makefile:
* Makefile.shared:
* Source/Makefile:

Source/ThirdParty:

* Makefile:

Tools:

Added a --force-opt shortcut for the --force-optimization-level option of
set-webkit-configuration.  This makes it less painful to type this on the command
line for those of us who would like to use this option often in our local builds.

* Makefile:
* Scripts/set-webkit-configuration:

WebKitLibraries:

* Makefile:



Canonical link: https://commits.webkit.org/219084@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254227 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Keith Miller cbeb19ee5b Add a testing target to make that is release + assertions
https://bugs.webkit.org/show_bug.cgi?id=205895

Reviewed by Mark Lam.

* Makefile:
.:

* Makefile.shared:
* Source/Makefile:


Canonical link: https://commits.webkit.org/219040@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254181 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Chris Dumez 7b85cb90bc [iOS] Replace "unexpectedly resumed" observer with RunningBoard suspendible assertions
https://bugs.webkit.org/show_bug.cgi?id=205687
<rdar://problem/57890246>

Reviewed by Tim Horton.

Adopt new RunningBoard process assertion to indicate that WebContent processes depend on their
UIProcess (and therefore, the UIProcess must be running if the WebContent process is). This
replaces our "Unexpectedly resumed" assertion which was causing unexpected terminations in some
cases.

* Configurations/WebKit.xcconfig:
* Platform/spi/ios/RunningBoardServicesSPI.h: Added.
* Scripts/process-entitlements.sh:
* Shared/DependencyProcessAssertion.cpp: Added.
(WebKit::DependencyProcessAssertion::DependencyProcessAssertion):
(WebKit::DependencyProcessAssertion::~DependencyProcessAssertion):
* Shared/DependencyProcessAssertion.h: Added.
* Shared/ios/DependencyProcessAssertionIOS.mm: Added.
(WebKit::DependencyProcessAssertion::DependencyProcessAssertion):
(WebKit::DependencyProcessAssertion::~DependencyProcessAssertion):
* Sources.txt:
* SourcesCocoa.txt:
* UIProcess/Cocoa/WebProcessProxyCocoa.mm:
* UIProcess/WebProcessProxy.h:
* UIProcess/WebProcessProxy.messages.in:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeConnection):
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:


Canonical link: https://commits.webkit.org/218860@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253984 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Jeff Miller 27ee745bea Update user-visible copyright strings to include 2020
https://bugs.webkit.org/show_bug.cgi?id=205552

Reviewed by Darin Adler.

.:

* Source/cmake/tools/scripts/COPYRIGHT-END-YEAR:

Source/JavaScriptCore:

* Info.plist:

Source/WebCore:

* Info.plist:

Source/WebKit:

* GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-OSX.plist:
* GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist:
* Info.plist:
* NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-OSX.plist:
* NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist:
* PluginProcess/EntryPoint/Cocoa/XPCService/PluginService.64.Info.plist:
* WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-OSX.plist:
* WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist:

Source/WebKitLegacy/mac:

* Info.plist:

WebKitLibraries:

* win/tools/scripts/COPYRIGHT-END-YEAR:

Canonical link: https://commits.webkit.org/218844@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253968 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Jonathan Bedard 4c81669652 Follow-up: [iOS 13] Enable WebKit build
https://bugs.webkit.org/show_bug.cgi?id=199481
<rdar://problem/52619048>

Unreviewed build-fix.


* WebKitPrivateFrameworkStubs/iOS/13/DeviceIdentity.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/DeviceIdentity.framework/DeviceIdentity.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/13/IOSurfaceAccelerator.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.


Canonical link: https://commits.webkit.org/215545@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@250020 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Jonathan Bedard 04de2c555f [iOS 13] Enable WebKit build
https://bugs.webkit.org/show_bug.cgi?id=199481
<rdar://problem/52619048>

Reviewed by Tim Horton.

Source/WebCore:

No new tests, iOS 13 test expectations will be migrated in the near future.

* platform/ios/LocalCurrentTraitCollection.mm:
(WebCore::LocalCurrentTraitCollection::LocalCurrentTraitCollection): Remove underscore from currentTraitCollection.
(WebCore::LocalCurrentTraitCollection::~LocalCurrentTraitCollection): Remove underscore from setCurrentTraitCollection.

Source/WebCore/PAL:

* pal/spi/cocoa/NSProgressSPI.h: We need the NSProgress SPI in public builds because NSProgress API
is marked unavailable on iOS, watchOS and tvOS.
* pal/spi/ios/CoreUISPI.h: Add CUIStyleEffectConfiguration.appearanceName SPI.
* pal/spi/ios/DataDetectorsUISPI.h: Add UIContextMenuConfiguration.contextMenuConfigurationForURL SPI.
* pal/spi/ios/SystemPreviewSPI.h: Add ARQuickLookWebKitItem.initWithPreviewItemProvider SPI.
* pal/spi/ios/UIKitSPI.h: Add systemBrownColor, UIColor.tableCellDefaultSelectionTintColor should be marked nullable.
* pal/spi/mac/AVFoundationSPI.h: Add AVOutputDevice.name SPI.

Source/WebKit:

* Platform/spi/ios/UIKitSPI.h: Add UITextEffectsWindow.sharedTextEffectsWindowForWindowScene SPI.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView showGlobalMenuControllerInRect:]): setTargetRect, setMenuVisible marked depreciated in iOS 13.
(-[WKContentView hideGlobalMenuController]): Ditto.

Tools:

* TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig: Add iOS framework stubs.

WebKitLibraries:

Added iOS 13 framework stubs, used tbd version 3 in all new stubs.

* WebKitPrivateFrameworkStubs/iOS/13: Added.
* WebKitPrivateFrameworkStubs/iOS/13/AppSupport.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/AssertionServices.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/AuthKit.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/CorePDF.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/CorePrediction.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/GraphicsServices.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/SafariSafeBrowsing.framework: Added.
* WebKitPrivateFrameworkStubs/iOS/13/URLFormatting.framework: Added.


Canonical link: https://commits.webkit.org/213590@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247355 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Jonathan Bedard a7ee72d690 [Catalina] Enable WebKit build
https://bugs.webkit.org/show_bug.cgi?id=199209

Reviewed by Darin Adler.

Source/WebCore:

No new tests, Catalina test expectations will be migrated in the near future.

* WebCorePrefix.h: Exclude the header which declares SecTrustedApplicationCreateFromPath unavailable on Mac.
* crypto/mac/SerializedCryptoKeyWrapMac.mm: Ensure that we define SecTrustedApplicationCreateFromPath
before other headers declare it unavailable on Mac.

Source/WebCore/PAL:

* pal/spi/cf/CFNetworkSPI.h: Add new NSURLSessionConfiguration SPI.
* pal/spi/mac/AVFoundationSPI.h: resourceConservationLevelWhilePaused should
be defined after AVPlayerResourceConservationLevel.
* pal/spi/mac/NSViewSPI.h: Add subviewsIvar.

Source/WebKit:

* UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.h: AppSSO is SPI.
* WebKit2Prefix.h: SecTask.h declares SecTaskGetCodeSignStatus(...) unavailable
on Mac, exclude this header.

Source/WebKitLegacy:

* mac/WebView/WebHTMLView.mm: Move NSView declaration to SPI header.
* mac/WebView/WebView.mm: Use _subviewsIvar instead of _subviews.

Source/WTF:

* wtf/spi/cocoa/SecuritySPI.h: Declare SecTrustedApplicationCreateFromPath(...).

Tools:

* TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig: Add Mac framework stubs.

WebKitLibraries:

* WebKitPrivateFrameworkStubs/Mac: Added.
* WebKitPrivateFrameworkStubs/Mac/101500: Added.
* WebKitPrivateFrameworkStubs/Mac/101500/AuthKit.framework: Added.
* WebKitPrivateFrameworkStubs/Mac/101500/AuthKit.framework/AuthKit.tbd: Added.


Canonical link: https://commits.webkit.org/213383@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247117 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Basuke Suzuki 51d59a036d [Win] Add flag to enable version information stamping and disable by default.
https://bugs.webkit.org/show_bug.cgi?id=197249
<rdar://problem/50224412>

Reviewed by Ross Kirsling.

.:

This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
Then enable it by default on AppleWin.

* Source/cmake/OptionsWin.cmake:

Source/JavaScriptCore:

This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
Then enable it by default on AppleWin.

* CMakeLists.txt:

Source/WTF:

This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
Then enable it by default on AppleWin.

* wtf/CMakeLists.txt:

WebKitLibraries:

Modify script not to invoke SVN command if the directory for SVN doesn't exists.

* win/tools/scripts/auto-version.pl:


Canonical link: https://commits.webkit.org/211570@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244741 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4 years ago
Wenson Hsieh 8de346156c [iOS] Software keyboard is shown too frequently on some websites
https://bugs.webkit.org/show_bug.cgi?id=195856
<rdar://problem/49191395>

Reviewed by Darin Adler.

Source/WebCore/PAL:

Declare new GraphicsServices SPI.

* pal/spi/ios/GraphicsServicesSPI.h:

Source/WebKit:

On some websites, hidden editable elements are very frequently focused upon user interaction. Currently, this
causes the software keyboard to pop in and out unexpectedly; luckily, these same sites also apply
inputmode="none" to the hidden editable element, which ought to ensure that the software keyboard doesn't appear
when the element is focused.

However, since we disabled support for inputmode="none" in r240497, the software keyboard is no longer
suppressed, and becomes a big nuissance. r240497 removed support for this feature because, when using a hardware
keyboard, pressing the globe key no longer showed UI for switching languages. However, support for inputmode
none makes a much larger impact when a software keyboard is used (since the entire software keyboard animates in
and out), whereas a hardware keyboard only displays an input accessory view. For this reason, we can mitigate
this bug without reintroducing <rdar://problem/47406553> by re-enabling inputmode="none", but only when a
hardware keyboard is not attached.

* UIProcess/API/Cocoa/WKWebView.mm:
(hardwareKeyboardAvailabilityChangedCallback):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView shouldShowAutomaticKeyboardUI]):

Don't show the keyboard if inputmode is none and a hardware keyboard is not attached.

(-[WKContentView _hardwareKeyboardAvailabilityChanged]):

Reload input views if the inputmode is none to ensure that if a hardware keyboard is attached while editing an
element with inputmode="none", we'll show the input accessory view once again.

Tools:

Add support for attaching or detaching the hardware keyboard on iOS in layout tests.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::setHardwareKeyboardAttached):
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::setHardwareKeyboardAttached):
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/Configurations/WebKitTestRunnerApp.xcconfig:

Additionally link against GraphicsServices in WebKitTestRunner.

* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::TestController::platformResetStateToConsistentValues):
(WTR::UIScriptController::setHardwareKeyboardAttached):

WebKitLibraries:

Add a symbol for GSEventSetHardwareKeyboardAttached.

* WebKitPrivateFrameworkStubs/iOS/12/GraphicsServices.framework/GraphicsServices.tbd:

LayoutTests:

Fix a failing layout test, which (among other reasons) is currently failing because support for inputmode="none"
is disabled.

* fast/forms/ios/inputmode-none-expected.txt:
* fast/forms/ios/inputmode-none.html:
* resources/ui-helper.js:

Add a UIHelper method for attaching or detaching the hardware keyboard.

(window.UIHelper.setHardwareKeyboardAttached):
(window.UIHelper):


Canonical link: https://commits.webkit.org/211129@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244220 268f45cc-cd09-0410-ab3c-d52691b4dbfc
5 years ago
Jeff Miller fe2c42db47 Update user-visible copyright strings to include 2019
https://bugs.webkit.org/show_bug.cgi?id=192811

Reviewed by Mark Lam.

Source/JavaScriptCore:

* Info.plist:

Source/WebCore:

* Info.plist:

Source/WebKit:

* Info.plist:
* NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-OSX.plist:
* NetworkProcess/EntryPoint/mac/XPCService/NetworkService/Info-iOS.plist:
* PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64.Info.plist:
* WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
* WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-iOS.plist:

Source/WebKitLegacy/mac:

* Info.plist:

WebKitLibraries:

* win/tools/scripts/COPYRIGHT-END-YEAR:

Canonical link: https://commits.webkit.org/207599@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239568 268f45cc-cd09-0410-ab3c-d52691b4dbfc
5 years ago
Daniel Bates b10c0bca0e [iOS] Draw caps lock indicator in password fields
https://bugs.webkit.org/show_bug.cgi?id=190565
<rdar://problem/45262343>

Source/WebCore:

Reviewed by Dean Jackson.

Draw the caps lock indicator in a focused password field on iOS. This makes the behavior of password
fields on iOS more closely match the behavior of password fields on Mac.

The majority of this patch is implementing PlatformKeyboardEvent::currentCapsLockState() for iOS.
In Legacy WebKit, the implementation boils down to calling call -[::WebEvent modifierFlags]. In
Modern WebKit the UIProcess is responsible for -[::WebEvent modifierFlags] and passing it the
WebProcess to store such that invocations of PlatformKeyboardEvent::currentCapsLockState() consult
the store in the WebProcess. A smaller part of this patch is having both the legacy and modern
web views listen for keyboard availability changes so as to update the the caps lock state when
a hardware keyboard is detached or attached.

* WebCore.xcodeproj/project.pbxproj:
* page/EventHandler.cpp:
(WebCore::EventHandler::capsLockStateMayHaveChanged const): Extracted from EventHandler::internalKeyEvent()
so that it can shared between WebCore, Modern WebKit, and Legacy WebKit code.
(WebCore::EventHandler::internalKeyEvent): Modified to call capsLockStateMayHaveChanged().
* page/EventHandler.h:
* platform/cocoa/KeyEventCocoa.mm:
(WebCore::PlatformKeyboardEvent::currentCapsLockState): Moved from KeyEventMac.mm.
(WebCore::PlatformKeyboardEvent::getCurrentModifierState): Moved from KeyEventMac.mm.
* platform/ios/KeyEventIOS.mm:
(WebCore::PlatformKeyboardEvent::currentStateOfModifierKeys): Fetch the current modifier state.
(WebCore::PlatformKeyboardEvent::currentCapsLockState): Deleted; we now use the Cocoa implementation.
(WebCore::PlatformKeyboardEvent::getCurrentModifierState): Deleted; we now use the Cocoa implementation.
* platform/ios/WebEvent.h:
* platform/ios/WebEvent.mm:
(+[WebEvent modifierFlags]): Added.
* platform/mac/KeyEventMac.mm:
(WebCore::PlatformKeyboardEvent::currentCapsLockState): Deleted; moved to KeyEventCocoa.mm to be shared
by both Mac and iOS.
(WebCore::PlatformKeyboardEvent::getCurrentModifierState): Deleted; moved to KeyEventCocoa.mm to be shared
by both Mac and iOS.
* rendering/RenderThemeCocoa.h:
* rendering/RenderThemeCocoa.mm:
(WebCore::RenderThemeCocoa::shouldHaveCapsLockIndicator const): Moved from RenderThemeMac.mm.
* rendering/RenderThemeIOS.h:
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::shouldHaveCapsLockIndicator const): Deleted.
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::shouldHaveCapsLockIndicator const): Deleted; moved to RenderThemeCocoa.mm to be
shared by both Mac and iOS.

Source/WebCore/PAL:

Reviewed by Dean Jackson.

Forward declare some more SPI.

* pal/spi/ios/GraphicsServicesSPI.h:
* pal/spi/ios/UIKitSPI.h:

Source/WebKit:

Reviewed by Dean Jackson.

Notify the WebContent process with the current modifer state on window activation changes. Notify
the WebContent process when hardware keyboard availability changes (e.g. a keyboard is attached).

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]): Register for hardware keyboard availability changed notifications.
(-[WKWebView dealloc]): Unregister from hardware availability changed notifications.
(hardwareKeyboardAvailabilityChangedCallback): Added.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateCurrentModifierState): Compile this code when building for iOS.
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _handleKeyUIEvent:]): Update the current modifier state if this event is a hardware
keyboard flags changed event.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::hardwareKeyboardAvailabilityChanged): Added.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::hardwareKeyboardAvailabilityChanged):
Added new message HardwareKeyboardAvailabilityChanged. Notify the focused HTML input element (if we have
one) that the caps lock state may have changed when we receive message HardwareKeyboardAvailabilityChanged
so that we toggle visibility of the caps lock indicator.

Source/WebKitLegacy/mac:

Reviewed by Dean Jackson.

Update the caps lock state when a hardware keyboard is attached or detached.

* WebView/WebHTMLView.mm:
(hardwareKeyboardAvailabilityChangedCallback): Added.
(-[WebHTMLView initWithFrame:]): Register for hardware keyboard availability changed notifications.
(-[WebHTMLView dealloc]): Unregister from hardware keyboard availability changed notifications.

WebKitLibraries:

Reviewed by Dean Jackson.

Expose some more symbols.

* WebKitPrivateFrameworkStubs/iOS/12/GraphicsServices.framework/GraphicsServices.tbd:

LayoutTests:

Unreviewed.

Update expected results now that iOS supports showing the caps lock indictor.

* platform/ios/fast/css/text-overflow-input-expected.txt:
* platform/ios/fast/forms/basic-inputs-expected.txt:
* platform/ios/fast/forms/input-appearance-height-expected.txt:
* platform/ios/fast/forms/input-value-expected.txt:
* platform/ios/fast/forms/placeholder-pseudo-style-expected.txt:
* platform/ios/tables/mozilla_expected_failures/bugs/bug92647-1-expected.txt:

Canonical link: https://commits.webkit.org/206292@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238078 268f45cc-cd09-0410-ab3c-d52691b4dbfc
5 years ago
Ryan Haddad 0e25f4512f Unreviewed, rolling out r238047.
Introduced layout test failures on iOS simulator.

Reverted changeset:

"[iOS] Draw caps lock indicator in password fields"
https://bugs.webkit.org/show_bug.cgi?id=190565
https://trac.webkit.org/changeset/238047

Canonical link: https://commits.webkit.org/206276@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238062 268f45cc-cd09-0410-ab3c-d52691b4dbfc
5 years ago
Daniel Bates 2f8f5729be [iOS] Draw caps lock indicator in password fields
https://bugs.webkit.org/show_bug.cgi?id=190565
<rdar://problem/45262343>

Reviewed by Dean Jackson.

Source/WebCore:

Draw the caps lock indicator in a focused password field on iOS. This makes the behavior of password
fields on iOS more closely match the behavior of password fields on Mac. For now, we only draw the
indicator when caps locks is enabled via the hardware keyboard. We will look to support the software
keyboard in a subsequent commit (see <https://bugs.webkit.org/show_bug.cgi?id=191475>).

The majority of this patch is implementing PlatformKeyboardEvent::currentCapsLockState() for iOS.
In Legacy WebKit, the implementation boils down to calling call -[::WebEvent modifierFlags]. In
Modern WebKit the UIProcess is responsible for -[::WebEvent modifierFlags] and passing it the
WebProcess to store such that invocations of PlatformKeyboardEvent::currentCapsLockState() consult
the store in the WebProcess. A smaller part of this patch is having both the legacy and modern
web views listen for keyboard availability changes so as to update the the caps lock state when
a hardware keyboard is detached or attached.

* WebCore.xcodeproj/project.pbxproj:
* page/EventHandler.cpp:
(WebCore::EventHandler::capsLockStateMayHaveChanged const): Extracted from EventHandler::internalKeyEvent()
so that it can shared between WebCore, Modern WebKit, and Legacy WebKit code.
(WebCore::EventHandler::internalKeyEvent): Modified to call capsLockStateMayHaveChanged().
* page/EventHandler.h:
* platform/cocoa/KeyEventCocoa.mm:
(WebCore::PlatformKeyboardEvent::currentCapsLockState): Moved from KeyEventMac.mm.
(WebCore::PlatformKeyboardEvent::getCurrentModifierState): Moved from KeyEventMac.mm.
* platform/ios/KeyEventIOS.mm:
(WebCore::PlatformKeyboardEvent::currentStateOfModifierKeys): Fetch the current modifier state.
(WebCore::PlatformKeyboardEvent::currentCapsLockState): Deleted; we now use the Cocoa implementation.
(WebCore::PlatformKeyboardEvent::getCurrentModifierState): Deleted; we now use the Cocoa implementation.
* platform/ios/WebEvent.h:
* platform/ios/WebEvent.mm:
(+[WebEvent modifierFlags]): Added.
* platform/mac/KeyEventMac.mm:
(WebCore::PlatformKeyboardEvent::currentCapsLockState): Deleted; moved to KeyEventCocoa.mm to be shared
by both Mac and iOS.
(WebCore::PlatformKeyboardEvent::getCurrentModifierState): Deleted; moved to KeyEventCocoa.mm to be shared
by both Mac and iOS.
* rendering/RenderThemeCocoa.h:
* rendering/RenderThemeCocoa.mm:
(WebCore::RenderThemeCocoa::shouldHaveCapsLockIndicator const): Moved from RenderThemeMac.mm.
* rendering/RenderThemeIOS.h:
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::shouldHaveCapsLockIndicator const): Deleted.
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::shouldHaveCapsLockIndicator const): Deleted; moved to RenderThemeCocoa.mm to be
shared by both Mac and iOS.

Source/WebCore/PAL:

Forward declare some more SPI.

* pal/spi/ios/GraphicsServicesSPI.h:
* pal/spi/ios/UIKitSPI.h:

Source/WebKit:

Notify the WebContent process with the current modifer state on window activation changes. Notify
the WebContent process when hardware keyboard availability changes (e.g. a keyboard is attached).

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]): Register for hardware keyboard availability changed notifications.
(-[WKWebView dealloc]): Unregister from hardware availability changed notifications.
(hardwareKeyboardAvailabilityChangedCallback): Added.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateCurrentModifierState): Compile this code when building for iOS.
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _handleKeyUIEvent:]): Update the current modifier state if this event is a hardware
keyboard flags changed event.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::hardwareKeyboardAvailabilityChanged): Added.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::hardwareKeyboardAvailabilityChanged):
Added new message HardwareKeyboardAvailabilityChanged. Notify the focused HTML input element (if we have
one) that the caps lock state may have changed when we receive message HardwareKeyboardAvailabilityChanged
so that we toggle visibility of the caps lock indicator.

Source/WebKitLegacy/mac:

Update the caps lock state when a hardware keyboard is attached or detached.

* WebView/WebHTMLView.mm:
(hardwareKeyboardAvailabilityChangedCallback): Added.
(-[WebHTMLView initWithFrame:]): Register for hardware keyboard availability changed notifications.
(-[WebHTMLView dealloc]): Unregister from hardware keyboard availability changed notifications.

WebKitLibraries:

Expose some more symbols.

* WebKitPrivateFrameworkStubs/iOS/12/GraphicsServices.framework/GraphicsServices.tbd:

Canonical link: https://commits.webkit.org/206261@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238047 268f45cc-cd09-0410-ab3c-d52691b4dbfc
5 years ago
Jonathan Bedard e7ef90360d Enable WebKit iOS 12 build
https://bugs.webkit.org/show_bug.cgi?id=187024
<rdar://problem/39759057>

Reviewed by David Kilzer.

Source/WebCore/PAL:

* pal/cf/CoreMediaSoftLink.cpp: Condition some CoreMedia functions on version.
* pal/cf/CoreMediaSoftLink.h: Ditto.
* pal/spi/cocoa/NSXPCConnectionSPI.h: Use XPCSPI.h instead of xpc.h.
* pal/spi/ios/QuickLookSPI.h: QLItem adopts QLPreviewItem.
* pal/spi/ios/SystemPreviewSPI.h: Fix compiler errors.

Source/WebKit:

* Platform/spi/ios/PDFKitSPI.h: Added PDFKit SPI.
* Platform/spi/ios/UIKitSPI.h: Add new UIKit SPI and UICompositingMode enumeration.
* UIProcess/ios/WKPDFView.mm: Use PDFKitSPI header.
* UIProcess/ios/WKSystemPreviewView.mm: Use CoreGraphicsSPI.h.
* UIProcess/ios/fullscreen/WKFullscreenStackView.mm: Use QuartzCoreSPI.h.

Source/WTF:

* wtf/spi/darwin/XPCSPI.h: Add endpoint and connection declarations.

Tools:

* Scripts/configure-xcode-for-ios-development:
(copyMissingHeadersFromSDKToSDKIfNeeded): Copy launch.h into embedded SDKs.

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/12: Added.


Canonical link: https://commits.webkit.org/202355@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233266 268f45cc-cd09-0410-ab3c-d52691b4dbfc
5 years ago
Joseph Pecoraro 121c0c2e48 [iOS] Hard link AppSupport instead of soft linking
https://bugs.webkit.org/show_bug.cgi?id=185959
<rdar://problem/40506538>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-05-24
Reviewed by Timothy Horton.

Source/WebCore:

* Configurations/WebCore.xcconfig:
* platform/network/ios/NetworkStateNotifierIOS.mm:
(-[WebNetworkStateObserver initWithBlock:]):
(WebCore::NetworkStateNotifier::updateStateWithoutNotifying):

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/10/AppSupport.framework/AppSupport.tbd:
* WebKitPrivateFrameworkStubs/iOS/11/AppSupport.framework/AppSupport.tbd:
Add stub for ObjC Class CPNetworkObserver.

Canonical link: https://commits.webkit.org/201399@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232167 268f45cc-cd09-0410-ab3c-d52691b4dbfc
5 years ago
Jiewen Tan db354b316b [WebAuthN] Implement authenticatorMakeCredential
https://bugs.webkit.org/show_bug.cgi?id=183527
<rdar://problem/35275886>

Reviewed by Brent Fulgham.

Source/WebCore:

This patch does the following few things:
1) It implements the authenticatorMakeCredential logic from the spec: https://www.w3.org/TR/webauthn/#op-make-cred.
2) It tweaks enocding and deocding of PublicKeyCredentialCreationOptions between UIProccess and WebProcess.
3) It soft links LocalAuthentication.Framework to WebCore, which was linked to WebKit.
4) It creates SPI header for DeviceIdentity.Framework, and provides stubs to link it to WebCore.

Here is a detailed explanantion of 1):
1. A helper class called LocalAuthenticator is crafted to represent Apple platform attached authenticator, i.e.
the devices themselves. All operations are currently restricted to iOS at this moment as macOS lacks attestation
support.
2. To do testing, this helper class is then moved from WebKit to WebCore even though all operations can only happens
in the UIProcess. We currently lack the ability to pretend a https environment in TestWebKitAPI which is required by
the WebAuthN API, and thus it is moved to WebCore to perform unit tesing flavor API tests. This is not enough as it
can't test message exchange between the UI and Web processes. We will address this in a subsequent patch.
3. More on testing: The attestation process is abstracted into a protected method such that the testing enviroment can
override it with self attestation as network access is restricted in the WebKit testing enviroment. Also, swizzlers of
LocalAuthentication API are provided to override the behavoir of LAContext.
4. More on testing: The actual Apple attestation can only happen in real device and with network access, therefore
it can only be covered by manual tests at this moment.
5. Back to LocalAuthenticator, it currently has two public methods:
        5.1. makeCredential(): This method is the one does all the magic.
        + It first checks some parameters.
        + It then invokes LAContext to get user consent.
        + It then talks to Apple Attestation Privacy CA to do attestations.
        + It then stores necessary information into the Keychain.
        + Finally it generates the attestation object.
        5.2 isAvailable():
        To check if a LocalAuthenticator is available or not.
6. Even though files are of .mm format, they are written in a way that mixes NS, CF and C++ types. Here is the rule:
        6.1 Use CF type only if it is requested by APIs.
        6.2 Use NS type to manipulate all Objc objects.
        6.3 Use C++ otherwise.

Covered by API tests.

* Configurations/WebCore.xcconfig:
* Modules/credentialmanagement/CredentialsMessenger.cpp:
(WebCore::getIdFromAttestationObject): Deleted.
Decoding attestation object is tedious. UIProcess will instead return credential ID and attestation object
at the same time. Therefore, this method is removed.
* Modules/credentialmanagement/CredentialsMessenger.h:
(WebCore::CreationReturnBundle::CreationReturnBundle): Deleted.
(WebCore::AssertionReturnBundle::AssertionReturnBundle): Deleted.
* Modules/webauthn/COSEConstants.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialType.h.
* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
(WebCore::PublicKeyCredentialCreationOptions::isolatedPartialCopyPtr const):
(WebCore::PublicKeyCredentialCreationOptions::Parameters::encode const):
(WebCore::PublicKeyCredentialCreationOptions::Parameters::decode):
(WebCore::PublicKeyCredentialCreationOptions::encode const):
(WebCore::PublicKeyCredentialCreationOptions::decode):
* Modules/webauthn/PublicKeyCredentialDescriptor.h:
(WebCore::PublicKeyCredentialDescriptor::encode const):
(WebCore::PublicKeyCredentialDescriptor::decode):
* Modules/webauthn/PublicKeyCredentialType.h:
* Modules/webauthn/cocoa/LocalAuthenticator.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialCreationOptions.h.
* Modules/webauthn/cocoa/LocalAuthenticator.mm: Added.
(WebCore::LocalAuthenticatorInternal::freePtrs):
(WebCore::LocalAuthenticator::makeCredential const):
(WebCore::LocalAuthenticator::isAvailable const):
(WebCore::LocalAuthenticator::issueClientCertificate const):
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/cocoa/LocalAuthenticationSoftLink.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredentialType.h.
* platform/cocoa/LocalAuthenticationSoftLink.mm: Added.
* testing/MockCredentialsMessenger.cpp:
(WebCore::MockCredentialsMessenger::setCreationReturnBundle):
(WebCore::MockCredentialsMessenger::makeCredential):
(WebCore::MockCredentialsMessenger::makeCredentialReply):
(WebCore::MockCredentialsMessenger::setAttestationObject): Deleted.
* testing/MockCredentialsMessenger.h:
* testing/MockCredentialsMessenger.idl:

Source/WebCore/PAL:

* PAL.xcodeproj/project.pbxproj:
* pal/spi/cocoa/DeviceIdentitySPI.h: Copied from Source/WebKit/UIProcess/CredentialManagement/WebCredentialsMessengerProxy.h.

Source/WebKit:

* 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:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/ios/LocalAuthenticator.mm: Added.
(TestWebKitAPI::getTestKey):
(TestWebKitAPI::cleanUpKeychain):
(TestWebKitAPI::LACantEvaluatePolicySwizzler::LACantEvaluatePolicySwizzler):
(TestWebKitAPI::LACantEvaluatePolicySwizzler::cantEvaluatePolicy):
(TestWebKitAPI::LACanEvaluatePolicySwizzler::LACanEvaluatePolicySwizzler):
(TestWebKitAPI::LACanEvaluatePolicySwizzler::canEvaluatePolicy):
(TestWebKitAPI::LAEvaluatePolicyFailedSwizzler::LAEvaluatePolicyFailedSwizzler):
(TestWebKitAPI::LAEvaluatePolicyFailedSwizzler::evaluatePolicyFailed):
(TestWebKitAPI::LAEvaluatePolicyPassedSwizzler::LAEvaluatePolicyPassedSwizzler):
(TestWebKitAPI::LAEvaluatePolicyPassedSwizzler::evaluatePolicyPassed):
(TestWebKitAPI::TestLocalAuthenticator::setFailureFlag):
(TestWebKitAPI::TEST):

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/11/DeviceIdentity.framework/DeviceIdentity.tbd: Added.

LayoutTests:

* http/wpt/credential-management/credentialscontainer-store-basics.https.html:
* http/wpt/webauthn/idl.https.html:
* http/wpt/webauthn/public-key-credential-create-success.https.html:


Canonical link: https://commits.webkit.org/199366@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@229699 268f45cc-cd09-0410-ab3c-d52691b4dbfc
6 years ago
Tim Horton 8d69f26a0c Introduce HAVE(IOSURFACE_ACCELERATOR)
https://bugs.webkit.org/show_bug.cgi?id=182955
<rdar://problem/37699510>

Reviewed by Sam Weinig.

Source/WebCore:

No new tests, no change in behavior.

Introduce HAVE(IOSURFACE_ACCELERATOR) and guard all uses of
IOSurfaceAccelerator behind it.

Rename USE(IOSURFACE) to HAVE(IOSURFACE) for accuracy.

* page/cocoa/MemoryReleaseCocoa.mm:
* platform/graphics/ca/TileController.cpp:
* platform/graphics/cg/IOSurfacePool.cpp:
* platform/graphics/cg/IOSurfacePool.h:
* platform/graphics/cg/ImageBufferCG.cpp:
* platform/graphics/cocoa/IOSurface.h:
* platform/graphics/cocoa/IOSurface.mm:
* platform/graphics/cocoa/IOSurfacePoolCocoa.mm:
* platform/graphics/cv/VideoTextureCopierCV.cpp:
* platform/graphics/cv/VideoTextureCopierCV.h:

Source/WebCore/PAL:

* pal/spi/cg/CoreGraphicsSPI.h:
* pal/spi/cocoa/IOSurfaceSPI.h:
* pal/spi/cocoa/QuartzCoreSPI.h:

Source/WebKit:

* 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:

Source/WTF:

* wtf/Platform.h:

Tools:

* DumpRenderTree/ios/PixelDumpSupportIOS.mm:
(createBitmapContextFromWebView):
* WebKitTestRunner/ios/PlatformWebViewIOS.mm:
(WTR::PlatformWebView::windowSnapshotImage):

WebKitLibraries:

* WebKitPrivateFrameworkStubs/iOS/10/IOSurface.framework/IOSurface.tbd:
* WebKitPrivateFrameworkStubs/iOS/10/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.
* WebKitPrivateFrameworkStubs/iOS/11/IOSurfaceAccelerator.framework/IOSurfaceAccelerator.tbd: Added.
Switch IOSurfaceAccelerator symbols over to the still-private IOSurfaceAccelerator framework.


Canonical link: https://commits.webkit.org/198735@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@228853 268f45cc-cd09-0410-ab3c-d52691b4dbfc
6 years ago
Zach Li 009191d1b5 Expose Safe Browsing SPI
https://bugs.webkit.org/show_bug.cgi?id=181804
<rdar://problem/36626946>

Patch by Zach Li <zacharyli323@gmail.com> on 2018-01-19
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.

Canonical link: https://commits.webkit.org/197732@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@227265 268f45cc-cd09-0410-ab3c-d52691b4dbfc
6 years ago
Ryan Haddad 4d2b53b290 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

Canonical link: https://commits.webkit.org/197700@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@227224 268f45cc-cd09-0410-ab3c-d52691b4dbfc
6 years ago