Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: f6403030bdeda40f5b4d6c4bd3f34be3e3196016
https://github.com/WebKit/WebKit/commit/f6403030bdeda40f5b4d6c4bd3f34be3e3196016
Author: Brent Fulgham <[email protected]>
Date: 2024-12-17 (Tue, 17 Dec 2024)
Changed paths:
M Source/WebCore/page/Quirks.cpp
M Source/WebCore/page/Quirks.h
M Source/WebCore/page/QuirksData.h
Log Message:
-----------
Compute needed quirks on object construction
https://bugs.webkit.org/show_bug.cgi?id=283522
rdar://140429884
Reviewed by Sammy Gill.
Currently, Quirks are assessed at runtime when relevant code checks if a quirk
is needed, often multiple
times during a load or render. We should decide this information at object
construction time instead.
This is in preparation for making these decisions in the UIProcess and
notifying the WebProcess of the
result.
This change also computes a key value based on the domain of the Top Document
URL, removing the public
suffix from the domain, and uses this to quickly determine if any quirk might
be applicable. If not,
it does no further action.
If a quirk might be applicable, it does a more careful check of the domain and
stores the result so that
future checks of the quirk do not need to do further work.
The large number of local static functions implementing the detailed checks for
each quirk will be
replaced in a future change by Function objects created by a future parser for
quirks. However, that
work is part of a future patch.
* Source/WebCore/page/Quirks.cpp:
(WebCore::Quirks::Quirks):
(WebCore::Quirks::isDomain const):
(WebCore::Quirks::needsFormControlToBeMouseFocusable const):
(WebCore::Quirks::needsSeekingSupportDisabled const):
(WebCore::Quirks::needsPerDocumentAutoplayBehavior const):
(WebCore::Quirks::shouldAutoplayWebAudioForArbitraryUserGesture const):
(WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):
(WebCore::Quirks::isTouchBarUpdateSuppressedForHiddenContentEditable const):
(WebCore::Quirks::isNeverRichlyEditableForTouchBar const):
(WebCore::Quirks::shouldSuppressAutocorrectionAndAutocapitalizationInHiddenEditableAreas
const):
(WebCore::Quirks::shouldDispatchSyntheticMouseEventsWhenModifyingSelection
const):
(WebCore::Quirks::needsYouTubeMouseOutQuirk const):
(WebCore::Quirks::shouldDisableWritingSuggestionsByDefault const):
(WebCore::Quirks::shouldDisableElementFullscreenQuirk const):
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented
const):
(WebCore::Quirks::shouldPreventDispatchOfTouchEvent const):
(WebCore::Quirks::domainNeedsAvoidResizingWhenInputViewBoundsChangeQuirk):
(WebCore::Quirks::shouldAvoidResizingWhenInputViewBoundsChange const):
(WebCore::Quirks::shouldDisablePointerEventsQuirk const):
(WebCore::urlNeedsDeferKeyDownAndKeyPressTimersUntilNextEditingCommandQuirk):
(WebCore::Quirks::needsDeferKeyDownAndKeyPressTimersUntilNextEditingCommand
const):
(WebCore::domainNeedsGMailOverflowScrollQuirk):
(WebCore::Quirks::needsGMailOverflowScrollQuirk const):
(WebCore::Quirks::needsIPadSkypeOverflowScrollQuirk const):
(WebCore::domainNeedsYouTubeOverflowScrollQuirk):
(WebCore::Quirks::needsYouTubeOverflowScrollQuirk const):
(WebCore::Quirks::needsPrimeVideoUserSelectNoneQuirk const):
(WebCore::Quirks::needsScrollbarWidthThinDisabledQuirk const):
(WebCore::Quirks::needsBodyScrollbarWidthNoneDisabledQuirk const):
(WebCore::domainNeedsFullscreenDisplayNoneQuirk):
(WebCore::Quirks::needsFullscreenDisplayNoneQuirk const):
(WebCore::Quirks::needsFullscreenObjectFitQuirk const):
(WebCore::Quirks::needsGoogleMapsScrollingQuirk const):
(WebCore::Quirks::shouldSilenceResizeObservers const):
(WebCore::Quirks::shouldSilenceWindowResizeEvents const):
(WebCore::Quirks::shouldAvoidScrollingWhenFocusedContentIsVisible const):
(WebCore::Quirks::shouldUseLegacySelectPopoverDismissalBehaviorInDataActivation
const):
(WebCore::Quirks::shouldIgnoreAriaForFastPathContentObservationCheck const):
(WebCore::Quirks::shouldIgnoreViewportArgumentsToAvoidExcessiveZoom const):
(WebCore::Quirks::needsPreloadAutoQuirk const):
(WebCore::Quirks::shouldBypassBackForwardCache const):
(WebCore::Quirks::shouldBypassAsyncScriptDeferring const):
(WebCore::Quirks::shouldEnableLegacyGetUserMediaQuirk const):
(WebCore::Quirks::shouldDisableImageCaptureQuirk const):
(WebCore::Quirks::needsCanPlayAfterSeekedQuirk const):
(WebCore::Quirks::shouldLayOutAtMinimumWindowWidthWhenIgnoringScalingConstraints
const):
(WebCore::Quirks::shouldAvoidPastingImagesAsWebContent const):
(WebCore::Quirks::needsVP9FullRangeFlagQuirk const):
(WebCore::domainRequiresUserGestureToPauseInPictureInPicture):
(WebCore::Quirks::requiresUserGestureToPauseInPictureInPicture const):
(WebCore::Quirks::returnNullPictureInPictureElementDuringFullscreenChange
const):
(WebCore::Quirks::blocksReturnToFullscreenFromPictureInPictureQuirk const):
(WebCore::Quirks::blocksEnteringStandardFullscreenFromPictureInPictureQuirk
const):
(WebCore::Quirks::shouldDisableEndFullscreenEventWhenEnteringPictureInPictureFromFullscreenQuirk
const):
(WebCore::Quirks::shouldDelayFullscreenEventWhenExitingPictureInPictureQuirk
const):
(WebCore::Quirks::allowLayeredFullscreenVideos const):
(WebCore::Quirks::shouldDisableFullscreenVideoAspectRatioAdaptiveSizing const):
(WebCore::Quirks::shouldEnableFontLoadingAPIQuirk const):
(WebCore::Quirks::needsVideoShouldMaintainAspectRatioQuirk const):
(WebCore::Quirks::shouldExposeShowModalDialog const):
(WebCore::Quirks::shouldNavigatorPluginsBeEmpty const):
(WebCore::Quirks::shouldDisableFetchMetadata const):
(WebCore::Quirks::shouldStarBePermissionsPolicyDefaultValue const):
(WebCore::Quirks::shouldDisableDataURLPaddingValidation const):
(WebCore::Quirks::shouldPreventOrientationMediaQueryFromEvaluatingToLandscape
const):
(WebCore::Quirks::shouldFlipScreenDimensions const):
(WebCore::Quirks::shouldIgnorePlaysInlineRequirementQuirk const):
(WebCore::Quirks::needsRelaxedCorsMixedContentCheckQuirk const):
(WebCore::Quirks::shouldIgnoreTextAutoSizing const):
(WebCore::Quirks::shouldHideCoarsePointerCharacteristics const):
(WebCore::Quirks::implicitMuteWhenVolumeSetToZero const):
(WebCore::Quirks::shouldDispatchPointerOutAfterHandlingSyntheticClick const):
(WebCore::Quirks::needsZeroMaxTouchPointsQuirk const):
(WebCore::Quirks::needsChromeMediaControlsPseudoElement const):
(WebCore::Quirks::shouldSynthesizeTouchEventsAfterNonSyntheticClick const):
(WebCore::Quirks::shouldIgnoreContentObservationForClick const):
(WebCore::Quirks::needsMozillaFileTypeForDataTransfer const):
(WebCore::Quirks::needsBingGestureEventQuirk const):
(WebCore::Quirks::determineRelevantQuirks):
(WebCore::Quirks::isAmazon const): Deleted.
(WebCore::Quirks::isESPN const): Deleted.
(WebCore::Quirks::isGoogleMaps const): Deleted.
(WebCore::Quirks::isNetflix const): Deleted.
(WebCore::Quirks::isSoundCloud const): Deleted.
(WebCore::Quirks::isVimeo const): Deleted.
(WebCore::Quirks::isYouTube const): Deleted.
(WebCore::isWikipediaDomain): Deleted.
* Source/WebCore/page/Quirks.h:
* Source/WebCore/page/QuirksData.h:
Canonical link: https://commits.webkit.org/287966@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes