source: webkit/trunk/Source/WebCore/css/CSSSelector.cpp

Last change on this file was 295270, checked in by Chris Dumez, 3 years ago

Drop operator==() overload for comparing a String to a const char*
https://bugs.webkit.org/show_bug.cgi?id=241285

Reviewed by Darin Adler.

Drop operator==() overload for comparing a String to a const char*. This
encourages people to use ""_s for string literals.

  • Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitEqualityOpImpl):

  • Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:

(JSC::ApplyFunctionCallDotNode::emitBytecode):

  • Source/JavaScriptCore/inspector/ScriptCallFrame.cpp:

(Inspector::ScriptCallFrame::isNative const):

  • Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorXPCConnection.mm:

(Inspector::RemoteInspectorXPCConnection::handleEvent):

  • Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:

(CppProtocolTypesImplementationGenerator):

  • Source/JavaScriptCore/jit/ExecutableAllocator.cpp:

(JSC::isJITEnabled):
(JSC::ExecutableAllocator::setJITEnabled):

  • Source/JavaScriptCore/jsc.cpp:

(dumpException):

  • Source/JavaScriptCore/runtime/IntlCollator.cpp:

(JSC::IntlCollator::initializeCollator):

  • Source/JavaScriptCore/runtime/IntlObject.cpp:

(JSC::removeUnicodeLocaleExtension):

  • Source/JavaScriptCore/runtime/JSObject.cpp:

(JSC::JSObject::calculatedClassName):

  • Source/JavaScriptCore/runtime/Options.cpp:

(JSC::canUseJITCage):

  • Source/JavaScriptCore/runtime/StringPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • Source/JavaScriptCore/runtime/TypeSet.cpp:

(JSC::StructureShape::leastCommonAncestor):

  • Source/JavaScriptCore/tools/JSDollarVM.cpp:
  • Source/JavaScriptCore/yarr/YarrUnicodeProperties.cpp:

(JSC::Yarr::unicodeMatchPropertyValue):

  • Source/WTF/wtf/URL.cpp:

(WTF::URL::setProtocol):

  • Source/WTF/wtf/cocoa/Entitlements.h:
  • Source/WTF/wtf/cocoa/Entitlements.mm:

(WTF::hasEntitlement):
(WTF::processHasEntitlement):
(WTF::hasEntitlementValue):

  • Source/WTF/wtf/text/WTFString.h:
  • Source/WebCore/Modules/applepay/PaymentRequestValidator.mm:

(WebCore::validateCountryCode):
(WebCore::validateCurrencyCode):

  • Source/WebCore/Modules/async-clipboard/ios/ClipboardImageReaderIOS.mm:

(WebCore::ClipboardImageReader::readBuffer):

  • Source/WebCore/Modules/async-clipboard/mac/ClipboardImageReaderMac.mm:

(WebCore::ClipboardImageReader::readBuffer):

  • Source/WebCore/Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::requestFromInfo):

  • Source/WebCore/Modules/cache/DOMCacheEngine.cpp:

(WebCore::DOMCacheEngine::matchURLs):

  • Source/WebCore/Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • Source/WebCore/Modules/fetch/FetchRequest.cpp:

(WebCore::methodCanHaveBody):
(WebCore::FetchRequest::initializeOptions):
(WebCore::FetchRequest::referrer const):

  • Source/WebCore/Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::contentTypeShouldGenerateTimestamps):

  • Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::setContentHint):

  • Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp:

(WebCore::RTCRtpSFrameTransform::setEncryptionKey):

  • Source/WebCore/Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::dtmf):

  • Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:

(WebCore::GStreamerMediaEndpoint::createTransceiverBackends):

  • Source/WebCore/Modules/mediastream/gstreamer/GStreamerStatsCollector.cpp:

(WebCore::iceCandidateType):

  • Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.cpp:

(WebCore::toRTCIceProtocol):
(WebCore::toRTCIceTcpCandidateType):
(WebCore::toRTCIceCandidateType):
(WebCore::parseIceCandidateSDP):

  • Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::addTransceiver):

  • Source/WebCore/Modules/webauthn/cbor/CBORValue.cpp:

(cbor::CBORValue::CBORValue):

  • Source/WebCore/Modules/webauthn/cbor/CBORValue.h:
  • Source/WebCore/Modules/webauthn/fido/AuthenticatorGetInfoResponse.cpp:

(fido::encodeAsCBOR):

  • Source/WebCore/Modules/webauthn/fido/FidoConstants.h:
  • Source/WebCore/Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::setBinaryType):

  • Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUAdapterImpl.cpp:

(PAL::WebGPU::AdapterImpl::requestDevice):

  • Source/WebCore/accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::canSetValueAttribute const):

  • Source/WebCore/accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::currentState const):
(WebCore::AccessibilityObject::attributeValue const):

  • Source/WebCore/accessibility/AccessibilityTableCell.cpp:

(WebCore::AccessibilityTableCell::isColumnHeaderCell const):
(WebCore::AccessibilityTableCell::isRowHeaderCell const):
(WebCore::AccessibilityTableCell::columnHeaders):
(WebCore::AccessibilityTableCell::rowHeaders):
(WebCore::AccessibilityTableCell::axRowSpan const):

  • Source/WebCore/accessibility/atspi/AXObjectCacheAtspi.cpp:

(WebCore::AXObjectCache::postPlatformNotification):

  • Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::state const):

  • Source/WebCore/accessibility/atspi/AccessibilityObjectTextAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::textAttributes const):

  • Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::attributeValue const):

  • Source/WebCore/accessibility/win/AccessibilityObjectWrapperWin.cpp:

(WebCore::AccessibilityObjectWrapper::accessibilityAttributeValue):

  • Source/WebCore/animation/KeyframeEffect.cpp:

(WebCore::IDLAttributeNameToAnimationPropertyName):

  • Source/WebCore/bindings/js/IDBBindingUtilities.cpp:

(WebCore::get):

  • Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSC_DEFINE_HOST_FUNCTION):

  • Source/WebCore/bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowInstanceFunction_openDatabaseBody):

  • Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:

(GenerateIsLegacyUnforgeablePropertyName):

  • Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp:

(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::defineOwnProperty):

  • Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp:

(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::defineOwnProperty):

  • Source/WebCore/contentextensions/ContentExtensionActions.cpp:

(WebCore::ContentExtensions::ModifyHeadersAction::ModifyHeaderInfo::parse):
(WebCore::ContentExtensions::RedirectAction::URLTransformAction::parse):

  • Source/WebCore/contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::loadAction):

  • Source/WebCore/crypto/algorithms/CryptoAlgorithmECDH.cpp:

(WebCore::CryptoAlgorithmECDH::importKey):

  • Source/WebCore/crypto/algorithms/CryptoAlgorithmECDSA.cpp:

(WebCore::CryptoAlgorithmECDSA::importKey):

  • Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:

(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):

  • Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:

(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):

  • Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:

(WebCore::CryptoAlgorithmRSA_OAEP::importKey):

  • Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_PSS.cpp:

(WebCore::CryptoAlgorithmRSA_PSS::importKey):

  • Source/WebCore/crypto/keys/CryptoKeyAES.cpp:

(WebCore::CryptoKeyAES::importJwk):

  • Source/WebCore/crypto/keys/CryptoKeyEC.cpp:

(WebCore::CryptoKeyEC::importJwk):

  • Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp:

(WebCore::CryptoKeyHMAC::importJwk):

  • Source/WebCore/crypto/keys/CryptoKeyRSA.cpp:

(WebCore::CryptoKeyRSA::importJwk):

  • Source/WebCore/css/CSSBasicShapes.cpp:

(WebCore::buildInsetRadii):

  • Source/WebCore/css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const):

  • Source/WebCore/css/CSSPropertySourceData.cpp:

(WebCore::CSSPropertySourceData::toString const):

  • Source/WebCore/css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

  • Source/WebCore/css/MediaQuery.cpp:

(WebCore::MediaQuery::serialize const):

  • Source/WebCore/css/SelectorCheckerTestFunctions.h:

(WebCore::matchesLangPseudoClass):

  • Source/WebCore/css/StyleProperties.cpp:

(WebCore::StyleProperties::borderPropertyValue const):
(WebCore::StyleProperties::asTextInternal const):

  • Source/WebCore/css/parser/CSSPropertyParser.cpp:

(WebCore::parseGridTemplateAreasRow):
(WebCore::CSSPropertyParser::canParseTypedCustomPropertyValue):
(WebCore::CSSPropertyParser::collectParsedCustomPropertyValueDependencies):
(WebCore::CSSPropertyParser::parseTypedCustomPropertyValue):

  • Source/WebCore/dom/DataTransfer.cpp:

(WebCore::DataTransfer::getDataForItem const):
(WebCore::DataTransfer::readStringFromPasteboard const):
(WebCore::DataTransfer::setDataFromItemList):
(WebCore::dragOpFromIEOp):
(WebCore::DataTransfer::dropEffect const):
(WebCore::DataTransfer::setDropEffect):

  • Source/WebCore/dom/DataTransfer.h:

(WebCore::DataTransfer::dropEffectIsUninitialized const):

  • Source/WebCore/dom/Document.cpp:

(WebCore::Document::originIdentifierForPasteboard const):

  • Source/WebCore/dom/ProcessingInstruction.cpp:

(WebCore::ProcessingInstruction::checkStyleSheet):

  • Source/WebCore/dom/Range.cpp:

(WebCore::Range::expand):

  • Source/WebCore/dom/UIEventWithKeyState.cpp:

(WebCore::UIEventWithKeyState::getModifierState const):

  • Source/WebCore/editing/Editing.cpp:

(WebCore::isMailBlockquote):

  • Source/WebCore/editing/Editor.cpp:

(WebCore::Editor::handleTextEvent):
(WebCore::Editor::insertTextWithoutSendingTextEvent):

  • Source/WebCore/editing/HTMLInterchange.h:
  • Source/WebCore/editing/InsertTextCommand.cpp:

(WebCore::InsertTextCommand::doApply):

  • Source/WebCore/editing/ReplaceSelectionCommand.cpp:

(WebCore::isInterchangeNewlineNode):
(WebCore::isInterchangeConvertedSpaceSpan):
(WebCore::isInlineNodeWithStyle):

  • Source/WebCore/editing/cocoa/HTMLConverter.mm:

(HTMLConverter::computedAttributesForElement):
(HTMLConverter::_addAttachmentForElement):
(HTMLConverter::_enterElement):
(HTMLConverter::_addTableForElement):
(HTMLConverter::_addTableCellForElement):
(HTMLConverter::_processElement):
(HTMLConverter::_exitElement):
(HTMLConverter::_processText):

  • Source/WebCore/editing/markup.cpp:

(WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList):
(WebCore::createFragmentFromText):
(WebCore::createFragmentForTransformToFragment):

  • Source/WebCore/html/BaseCheckableInputType.cpp:

(WebCore::BaseCheckableInputType::handleKeydownEvent):

  • Source/WebCore/html/BaseClickableWithKeyInputType.cpp:

(WebCore::BaseClickableWithKeyInputType::handleKeydownEvent):
(WebCore::BaseClickableWithKeyInputType::handleKeyupEvent):

  • Source/WebCore/html/CheckboxInputType.cpp:

(WebCore::CheckboxInputType::handleKeyupEvent):

  • Source/WebCore/html/FTPDirectoryDocument.cpp:

(WebCore::FTPDirectoryDocumentParser::parseAndAppendOneLine):

  • Source/WebCore/html/FormController.cpp:

(WebCore::FormController::SavedFormState::appendReferencedFilePaths const):

  • Source/WebCore/html/HTMLAnchorElement.cpp:

(WebCore::isEnterKeyKeydownEvent):

  • Source/WebCore/html/HTMLAttachmentElement.cpp:

(WebCore::HTMLAttachmentElement::parseAttribute):

  • Source/WebCore/html/HTMLButtonElement.cpp:

(WebCore::HTMLButtonElement::defaultEventHandler):

  • Source/WebCore/html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::is2dType):
(WebCore::HTMLCanvasElement::isWebGLType):
(WebCore::HTMLCanvasElement::toWebGLVersion):
(WebCore::HTMLCanvasElement::isBitmapRendererType):

  • Source/WebCore/html/HTMLFrameSetElement.cpp:

(WebCore::HTMLFrameSetElement::parseAttribute):

  • Source/WebCore/html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setValueFromRenderer):

  • Source/WebCore/html/HTMLLIElement.cpp:

(WebCore::HTMLLIElement::collectPresentationalHintsForAttribute):

  • Source/WebCore/html/HTMLMarqueeElement.cpp:

(WebCore::HTMLMarqueeElement::collectPresentationalHintsForAttribute):

  • Source/WebCore/html/HTMLOListElement.cpp:

(WebCore::HTMLOListElement::collectPresentationalHintsForAttribute):

  • Source/WebCore/html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::platformHandleKeydownEvent):
(WebCore::HTMLSelectElement::menuListDefaultEventHandler):
(WebCore::HTMLSelectElement::listBoxDefaultEventHandler):

  • Source/WebCore/html/HTMLSelectElementWin.cpp:

(WebCore::HTMLSelectElement::platformHandleKeydownEvent):

  • Source/WebCore/html/HTMLSummaryElement.cpp:

(WebCore::HTMLSummaryElement::defaultEventHandler):

  • Source/WebCore/html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setSelectionRange):

  • Source/WebCore/html/MediaDocument.cpp:

(WebCore::MediaDocument::defaultEventHandler):

  • Source/WebCore/html/MediaFragmentURIParser.cpp:

(WebCore::MediaFragmentURIParser::parseTimeFragment):

  • Source/WebCore/html/RadioInputType.cpp:

(WebCore::RadioInputType::handleKeydownEvent):
(WebCore::RadioInputType::handleKeyupEvent):

  • Source/WebCore/html/RangeInputType.cpp:

(WebCore::RangeInputType::handleKeydownEvent):

  • Source/WebCore/html/SearchInputType.cpp:

(WebCore::SearchInputType::handleKeydownEvent):

  • Source/WebCore/html/TextFieldInputType.cpp:

(WebCore::TextFieldInputType::handleKeydownEvent):
(WebCore::TextFieldInputType::handleKeydownEventForSpinButton):
(WebCore::TextFieldInputType::shouldSubmitImplicitly):

  • Source/WebCore/html/canvas/CanvasPattern.cpp:

(WebCore::CanvasPattern::parseRepetitionType):

  • Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::setLineCap):
(WebCore::CanvasRenderingContext2DBase::setLineJoin):

  • Source/WebCore/html/parser/HTMLConstructionSite.cpp:

(WebCore::HTMLConstructionSite::setCompatibilityModeFromDoctype):

  • Source/WebCore/html/shadow/DateTimeFieldElement.cpp:

(WebCore::DateTimeFieldElement::defaultKeyboardEventHandler):

  • Source/WebCore/inspector/InspectorAuditAccessibilityObject.cpp:

(WebCore::InspectorAuditAccessibilityObject::getComputedProperties):

  • Source/WebCore/inspector/InspectorCanvas.cpp:

(WebCore::shouldSnapshotBitmapRendererAction):
(WebCore::shouldSnapshotWebGLAction):
(WebCore::shouldSnapshotWebGL2Action):

  • Source/WebCore/inspector/InspectorFrontendHost.cpp:

(WebCore::dockSideFromString):
(WebCore::populateContextMenu):

  • Source/WebCore/inspector/InspectorStyleSheet.cpp:

(WebCore::buildArrayForGroupings):
(WebCore::InspectorStyle::shorthandValue const):

  • Source/WebCore/inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):

  • Source/WebCore/loader/CrossOriginAccessControl.cpp:

(WebCore::isOnAccessControlSimpleRequestMethodAllowlist):
(WebCore::passesAccessControlCheck):

  • Source/WebCore/loader/DocumentLoader.cpp:

(WebCore::isRedirectToGetAfterPost):
(WebCore::DocumentLoader::isPostOrRedirectAfterPost):
(WebCore::DocumentLoader::responseReceived):

  • Source/WebCore/loader/FormSubmission.cpp:

(WebCore::FormSubmission::Attributes::updateEncodingType):

  • Source/WebCore/loader/FrameLoader.cpp:

(WebCore::FrameLoader::changeLocation):
(WebCore::FrameLoader::loadFrameRequest):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::reload):
(WebCore::FrameLoader::addHTTPOriginIfNeeded):
(WebCore::createWindow):

  • Source/WebCore/loader/MixedContentChecker.cpp:

(WebCore::MixedContentChecker::isMixedContent):

  • Source/WebCore/loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::parseAttributionRequestQuery):

  • Source/WebCore/loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::loadDataURL):

  • Source/WebCore/loader/SubframeLoader.cpp:

(WebCore::FrameLoader::SubframeLoader::requestFrame):

  • Source/WebCore/loader/archive/mhtml/MHTMLParser.cpp:

(WebCore::MHTMLParser::parseArchiveWithHeader):

  • Source/WebCore/loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::add):

  • Source/WebCore/loader/mac/LoaderNSURLExtras.mm:

(suggestedFilenameWithMIMEType):

  • Source/WebCore/mathml/MathMLElement.cpp:

(WebCore::convertMathSizeIfNeeded):

  • Source/WebCore/mathml/MathMLOperatorElement.cpp:

(WebCore::MathMLOperatorElement::computeDictionaryProperty):

  • Source/WebCore/mathml/MathMLPresentationElement.cpp:

(WebCore::MathMLPresentationElement::parseMathVariantAttribute):

  • Source/WebCore/mathml/MathMLSelectElement.cpp:

(WebCore::MathMLSelectElement::isMathMLEncoding):
(WebCore::MathMLSelectElement::isSVGEncoding):
(WebCore::MathMLSelectElement::isHTMLEncoding):
(WebCore::MathMLSelectElement::getSelectedActionChild):
(WebCore::MathMLSelectElement::defaultEventHandler):
(WebCore::MathMLSelectElement::willRespondToMouseClickEventsWithEditability const):

  • Source/WebCore/page/DOMWindow.cpp:

(WebCore::DOMWindow::postMessage):

  • Source/WebCore/page/EventHandler.cpp:

(WebCore::convertDropZoneOperationToDragOperation):
(WebCore::EventHandler::accessibilityPreventsEventPropagation):
(WebCore::EventHandler::defaultKeyboardEventHandler):
(WebCore::EventHandler::isKeyboardOptionTab):

  • Source/WebCore/page/Performance.cpp:

(WebCore::Performance::getEntriesByType const):
(WebCore::Performance::getEntriesByName const):
(WebCore::Performance::appendBufferedEntriesByType const):

  • Source/WebCore/page/PerformanceEntry.cpp:

(WebCore::PerformanceEntry::parseEntryTypeString):

  • Source/WebCore/page/Quirks.cpp:

(WebCore::isTwitterDocument):
(WebCore::isYouTubeDocument):
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
(WebCore::Quirks::shouldDispatchedSimulatedMouseEventsAssumeDefaultPrevented const):
(WebCore::Quirks::shouldMakeTouchEventNonCancelableForTarget const):
(WebCore::Quirks::shouldEnableLegacyGetUserMediaQuirk const):
(WebCore::Quirks::shouldDisableElementFullscreenQuirk const):
(WebCore::Quirks::needsCanPlayAfterSeekedQuirk const):
(WebCore::Quirks::shouldAllowNavigationToCustomProtocolWithoutUserGesture):

  • Source/WebCore/page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::canDisplay const):
(WebCore::SecurityOrigin::toString const):
(WebCore::areOriginsMatching):

  • Source/WebCore/page/SecurityOrigin.h:

(WebCore::SecurityOrigin::isHTTPFamily const):

  • Source/WebCore/page/SecurityOriginData.cpp:

(WebCore::SecurityOriginData::toString const):

  • Source/WebCore/page/SecurityPolicy.cpp:

(WebCore::SecurityPolicy::referrerToOriginString):

  • Source/WebCore/page/UserContentURLPattern.cpp:

(WebCore::UserContentURLPattern::matches const):

  • Source/WebCore/page/WindowFeatures.cpp:

(WebCore::boolFeature):

  • Source/WebCore/page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::ResourceUsageThread::platformCollectCPUData):

  • Source/WebCore/page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::reportViolation const):

  • Source/WebCore/page/csp/ContentSecurityPolicySource.cpp:

(WebCore::ContentSecurityPolicySource::schemeMatches const):

  • Source/WebCore/page/linux/ResourceUsageThreadLinux.cpp:

(WebCore::ResourceUsageThread::platformCollectCPUData):

  • Source/WebCore/platform/KeyboardScrollingAnimator.cpp:

(WebCore::keyboardScrollingKeyFromEvent):

  • Source/WebCore/platform/KeypressCommand.h:

(WebCore::KeypressCommand::KeypressCommand):

  • Source/WebCore/platform/LocalizedStrings.cpp:

(WebCore::localizedMediaControlElementString):
(WebCore::localizedMediaControlElementHelpText):

  • Source/WebCore/platform/Pasteboard.cpp:

(WebCore::Pasteboard::isSafeTypeForDOMToReadAndWrite):

  • Source/WebCore/platform/RegistrableDomain.h:

(WebCore::RegistrableDomain::operator== const):

  • Source/WebCore/platform/Theme.cpp:

(WebCore::Theme::drawNamedImage const):

  • Source/WebCore/platform/UserAgentQuirks.cpp:

(WebCore::urlRequiresChromeBrowser):
(WebCore::urlRequiresFirefoxBrowser):
(WebCore::urlRequiresMacintoshPlatform):
(WebCore::urlRequiresUnbrandedUserAgent):

  • Source/WebCore/platform/cocoa/ThemeCocoa.mm:

(WebCore::ThemeCocoa::drawNamedImage const):

  • Source/WebCore/platform/graphics/GLContext.cpp:

(WebCore::GLContext::version):

  • Source/WebCore/platform/graphics/Image.cpp:

(WebCore::Image::create):

  • Source/WebCore/platform/graphics/MIMETypeCache.cpp:

(WebCore::MIMETypeCache::shouldOverrideExtendedType):

  • Source/WebCore/platform/graphics/VP9Utilities.cpp:

(WebCore::parseVPCodecParameters):

  • Source/WebCore/platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:

(WebCore::CDMPrivateMediaSourceAVFObjC::supportsMIMEType):

  • Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::AVFWrapper::shouldWaitForLoadingOfResource):

  • Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):

  • Source/WebCore/platform/graphics/cairo/ImageBufferUtilitiesCairo.cpp:

(WebCore::encodeImage):

  • Source/WebCore/platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoderCG::frameHasAlphaAtIndex const):
(WebCore::ImageDecoderCG::createFrameImageAtIndex):

  • Source/WebCore/platform/graphics/cg/ImageSourceCGWin.cpp:

(WebCore::MIMETypeForImageType):

  • Source/WebCore/platform/graphics/cocoa/VP9UtilitiesCocoa.mm:

(WebCore::isVPCodecConfigurationRecordSupported):
(WebCore::createVideoInfoFromVPCodecConfigurationRecord):

  • Source/WebCore/platform/graphics/freetype/FontCacheFreeType.cpp:

(WebCore::getFamilyNameStringFromFamily):

  • Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::isMediaDiskCacheDisabled):

  • Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::platformMaximumBufferSize const):

  • Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGL.cpp:

(WebCore::ExtensionsGLOpenGL::platformSupportsExtension):

  • Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:

(WebCore::ExtensionsGLOpenGLCommon::supports):
(WebCore::ExtensionsGLOpenGLCommon::ensureEnabled):
(WebCore::ExtensionsGLOpenGLCommon::isEnabled):

  • Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLES.cpp:

(WebCore::ExtensionsGLOpenGLES::isEnabled):
(WebCore::ExtensionsGLOpenGLES::platformSupportsExtension):

  • Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::checkVaryingsPacking const):

  • Source/WebCore/platform/gtk/PasteboardGtk.cpp:

(WebCore::selectionDataTypeFromHTMLClipboardType):

  • Source/WebCore/platform/ios/PlatformEventFactoryIOS.mm:

(WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):

  • Source/WebCore/platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::platformPasteboardTypeForSafeTypeForDOMToReadAndWrite):

  • Source/WebCore/platform/ios/PreviewConverterIOS.mm:

(WebCore::PreviewConverter::isPlatformPasswordError const):

  • Source/WebCore/platform/mac/PasteboardMac.mm:

(WebCore::cocoaTypeFromHTMLClipboardType):
(WebCore::Pasteboard::addHTMLClipboardTypesForCocoaType):

  • Source/WebCore/platform/mac/PlatformPasteboardMac.mm:

(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::PlatformPasteboard::platformPasteboardTypeForSafeTypeForDOMToReadAndWrite):

  • Source/WebCore/platform/mac/PublicSuffixMac.mm:

(WebCore::topPrivatelyControlledDomain):

  • Source/WebCore/platform/mediastream/RealtimeMediaSourceSettings.cpp:

(WebCore::RealtimeMediaSourceSettings::videoFacingModeEnum):

  • Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.cpp:

(WebCore::GStreamerH264Encoder::GStreamerH264Encoder):

  • Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.cpp:

(WebCore::canDecodeMedia):
(WebCore::canSmoothlyDecodeMedia):
(WebCore::canPowerEfficientlyDecodeMedia):
(WebCore::canEncodeMedia):
(WebCore::canSmoothlyEncodeMedia):
(WebCore::canPowerEfficientlyEncodeMedia):

  • Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:

(WebCore::MockMediaPlayerMediaSource::supportsType):

  • Source/WebCore/platform/network/CacheValidation.cpp:

(WebCore::verifyVaryingRequestHeadersInternal):

  • Source/WebCore/platform/network/ResourceResponseBase.h:

(WebCore::ResourceResponseBase::isMultipart const):

  • Source/WebCore/platform/network/cf/ResourceErrorCF.cpp:

(WebCore::ResourceError::cfStreamError const):

  • Source/WebCore/platform/network/curl/CookieJarDB.cpp:

(WebCore::CookieJarDB::checkDatabaseValidity):

  • Source/WebCore/platform/network/curl/CookieJarDB.h:

(WebCore::CookieJarDB::isOnMemory const):

  • Source/WebCore/platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownload::shouldRedirectAsGET):

  • Source/WebCore/platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::setupTransfer):

  • Source/WebCore/platform/network/curl/PublicSuffixCurl.cpp:

(WebCore::topPrivatelyControlledDomain):

  • Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::shouldRedirectAsGET):

  • Source/WebCore/platform/network/ios/WebCoreURLResponseIOS.h:

(WebCore::shouldUseQuickLookForMIMEType):

  • Source/WebCore/platform/soup/PublicSuffixSoup.cpp:

(WebCore::topPrivatelyControlledDomain):

  • Source/WebCore/platform/win/SearchPopupMenuDB.cpp:

(WebCore::SearchPopupMenuDB::checkDatabaseValidity):

  • Source/WebCore/rendering/RenderBlockFlow.cpp:

(WebCore::needsAppleMailPaginationQuirk):

  • Source/WebCore/rendering/RenderCounter.cpp:

(WebCore::planCounter):

  • Source/WebCore/rendering/RenderTextControlMultiLine.cpp:

(WebCore::RenderTextControlMultiLine::getAverageCharWidth):

  • Source/WebCore/rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::getAverageCharWidth):
(WebCore::RenderTextControlSingleLine::preferredContentLogicalWidth const):

  • Source/WebCore/rendering/RenderTreeAsText.cpp:

(WebCore::isEmptyOrUnstyledAppleStyleSpan):

  • Source/WebCore/svg/SVGAElement.cpp:

(WebCore::SVGAElement::defaultEventHandler):

  • Source/WebCore/svg/SVGComponentTransferFunctionElement.h:

(WebCore::SVGPropertyTraits<ComponentTransferType>::fromString):

  • Source/WebCore/svg/SVGFEColorMatrixElement.h:

(WebCore::SVGPropertyTraits<ColorMatrixType>::fromString):

  • Source/WebCore/svg/SVGFECompositeElement.h:

(WebCore::SVGPropertyTraits<CompositeOperationType>::fromString):

  • Source/WebCore/svg/SVGFEConvolveMatrixElement.h:

(WebCore::SVGPropertyTraits<EdgeModeType>::fromString):

  • Source/WebCore/svg/SVGFEDisplacementMapElement.h:

(WebCore::SVGPropertyTraits<ChannelSelectorType>::fromString):

  • Source/WebCore/svg/SVGFEMorphologyElement.h:

(WebCore::SVGPropertyTraits<MorphologyOperatorType>::fromString):

  • Source/WebCore/svg/SVGFETurbulenceElement.h:

(WebCore::SVGPropertyTraits<SVGStitchOptions>::fromString):
(WebCore::SVGPropertyTraits<TurbulenceType>::fromString):

  • Source/WebCore/svg/SVGGradientElement.h:

(WebCore::SVGPropertyTraits<SVGSpreadMethodType>::fromString):

  • Source/WebCore/svg/SVGMarkerTypes.h:

(WebCore::SVGPropertyTraits<SVGMarkerUnitsType>::fromString):

  • Source/WebCore/svg/SVGTests.cpp:

(WebCore::SVGTests::hasFeatureForLegacyBindings):

  • Source/WebCore/svg/SVGTextContentElement.cpp:

(WebCore::SVGTextContentElement::collectPresentationalHintsForAttribute):

  • Source/WebCore/svg/SVGTextContentElement.h:

(WebCore::SVGPropertyTraits<SVGLengthAdjustType>::fromString):

  • Source/WebCore/svg/SVGTextPathElement.h:

(WebCore::SVGPropertyTraits<SVGTextPathMethodType>::fromString):
(WebCore::SVGPropertyTraits<SVGTextPathSpacingType>::fromString):

  • Source/WebCore/svg/SVGUnitTypes.h:

(WebCore::SVGPropertyTraits<SVGUnitTypes::SVGUnitType>::fromString):

  • Source/WebCore/svg/SVGZoomAndPanType.h:

(WebCore::SVGPropertyTraits<SVGZoomAndPanType>::fromString):

  • Source/WebCore/svg/animation/SVGSMILElement.cpp:

(WebCore::SVGSMILElement::createInstanceTimesFromSyncbase):

  • Source/WebCore/svg/properties/SVGPropertyTraits.h:

(WebCore::SVGPropertyTraits<bool>::fromString):

  • Source/WebCore/testing/Internals.cpp:

(WebCore::Internals::pseudoElement):
(WebCore::Internals::setViewBaseBackgroundColor):
(WebCore::Internals::setPagination):
(WebCore::parseFindOptions):
(WebCore::Internals::countMatchesForText):
(WebCore::Internals::setOverridePreferredDynamicRangeMode):
(WebCore::taskSourceFromString):
(WebCore::Internals::hasSandboxMachLookupAccessToGlobalName):
(WebCore::Internals::hasSandboxMachLookupAccessToXPCServiceName):

  • Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp:

(WebCore::createConnection):

  • Source/WebCore/workers/WorkerFontLoadRequest.cpp:

(WebCore::WorkerFontLoadRequest::load):

  • Source/WebCore/workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):

  • Source/WebCore/workers/service/server/RegistrationDatabase.cpp:

(WebCore::stringToUpdateViaCache):
(WebCore::stringToWorkerType):

  • Source/WebCore/xml/DOMParser.cpp:

(WebCore::DOMParser::parseFromString):

  • Source/WebCore/xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::send):
(WebCore::XMLHttpRequest::sendBytesData):
(WebCore::XMLHttpRequest::createRequest):

  • Source/WebCore/xml/XPathFunctions.cpp:

(WebCore::XPath::Function::setArguments):

  • Source/WebCore/xml/XPathParser.cpp:

(WebCore::XPath::Parser::nextTokenInternal):

  • Source/WebCore/xml/XSLTProcessor.cpp:

(WebCore::XSLTProcessor::createDocumentFromSource):

  • Source/WebCore/xml/XSLTProcessorLibxslt.cpp:

(WebCore::XSLTProcessor::transformToString):

  • Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::shouldAllowExternalLoad):
(WebCore::XMLDocumentParser::supportsXMLVersion):
(WebCore::externalSubsetHandler):

  • Source/WebDriver/CommandResult.cpp:

(WebDriver::CommandResult::CommandResult):

  • Source/WebDriver/Session.cpp:

(WebDriver::Session::newWindow):
(WebDriver::Session::isElementSelected):
(WebDriver::Session::elementClick):

  • Source/WebDriver/WebDriverService.cpp:

(WebDriver::deserializeTimeouts):
(WebDriver::deserializeProxy):
(WebDriver::deserializePageLoadStrategy):
(WebDriver::deserializeUnhandledPromptBehavior):
(WebDriver::WebDriverService::validatedCapabilities const):
(WebDriver::WebDriverService::matchCapabilities const):
(WebDriver::WebDriverService::newWindow):
(WebDriver::isValidStrategy):
(WebDriver::findStrategyAndSelectorOrCompleteWithError):
(WebDriver::processNullAction):
(WebDriver::processKeyAction):
(WebDriver::processPointerMoveAction):
(WebDriver::processPointerAction):
(WebDriver::processWheelAction):
(WebDriver::processPointerParameters):
(WebDriver::processInputActionSequence):

  • Source/WebDriver/glib/WebDriverServiceGLib.cpp:

(WebDriver::WebDriverService::platformSupportProxyType const):

  • Source/WebDriver/gtk/WebDriverServiceGtk.cpp:

(WebDriver::WebDriverService::platformValidateCapability const):

  • Source/WebDriver/socket/HTTPParser.cpp:

(WebDriver::HTTPParser::expectedBodyLength const):

  • Source/WebDriver/socket/SessionHostSocket.cpp:

(WebDriver::SessionHost::parseTargetList):

  • Source/WebDriver/soup/HTTPServerSoup.cpp:

(WebDriver::soupServerListen):

  • Source/WebDriver/wpe/WebDriverServiceWPE.cpp:

(WebDriver::WebDriverService::platformValidateCapability const):

  • Source/WebGPU/WGSLUnitTests/WGSLParserTests.mm:

(-[WGSLParserTests testParsingStruct]):
(-[WGSLParserTests testParsingGlobalVariable]):
(-[WGSLParserTests testParsingFunctionDecl]):
(-[WGSLParserTests testTrivialGraphicsShader]):

  • Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::shouldSkip const):

  • Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:

(WebKit::insertDistinctValuesInTableStatement):

  • Source/WebKit/NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::allowsPrivateClickMeasurementTestFunctionality const):

  • Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::isCrossOriginPrefetch const):

  • Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:

(WebKit::ServiceWorkerFetchTask::ServiceWorkerFetchTask):

  • Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::getDirectorySize):

  • Source/WebKit/NetworkProcess/cache/CacheStorageEngineCache.cpp:

(WebKit::CacheStorage::queryCache):
(WebKit::CacheStorage::Cache::retrieveRecords):

  • Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::makeRetrieveDecision):
(WebKit::NetworkCache::makeStoreDecision):

  • Source/WebKit/NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::Entry):

  • Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::SpeculativeLoadManager::shouldRegisterLoad):
(WebKit::NetworkCache::SpeculativeLoadManager::retrieveSubresourcesEntry):

  • Source/WebKit/NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry):

  • Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::isActingOnBehalfOfAFullWebBrowser):

  • Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::shouldRedirectAsGET):

  • Source/WebKit/NetworkProcess/ios/NetworkProcessIOS.mm:

(WebKit::NetworkProcess::parentProcessHasServiceWorkerEntitlement const):

  • Source/WebKit/NetworkProcess/storage/FileSystemStorageHandle.cpp:

(WebKit::isValidFileName):

  • Source/WebKit/NetworkProcess/storage/OriginStorageManager.cpp:

(WebKit::OriginStorageManager::StorageBucket::isEmpty):

  • Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
  • Source/WebKit/Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
  • Source/WebKit/Shared/AuxiliaryProcess.h:
  • Source/WebKit/Shared/Cocoa/AuxiliaryProcessCocoa.mm:

(WebKit::AuxiliaryProcess::parentProcessHasEntitlement):
(WebKit::AuxiliaryProcess::setPreferenceValue):

  • Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.mm:

(WebKit::appBoundDomainsForTesting):
(WebKit::isParentProcessAFullWebBrowser):
(WebKit::isFullWebBrowser):

  • Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:

(WebKit::XPCEndpoint::XPCEndpoint):

  • Source/WebKit/Shared/Cocoa/XPCEndpointClient.mm:

(WebKit::XPCEndpointClient::setEndpoint):

  • Source/WebKit/Shared/Daemon/DaemonUtilities.h:
  • Source/WebKit/Shared/Daemon/DaemonUtilities.mm:

(WebKit::startListeningForMachServiceConnections):

  • Source/WebKit/Shared/Databases/IndexedDB/IDBUtilities.cpp:

(WebKit::uniqueDatabaseIdentifier):

  • Source/WebKit/Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonEntryPoint.mm:

(WebKit::PCMDaemonMain):

  • Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:
  • Source/WebKit/Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:

(WebKit::XPCServiceInitializerDelegate::checkEntitlements):
(WebKit::XPCServiceInitializerDelegate::hasEntitlement):

  • Source/WebKit/Shared/IPCTester.cpp:

(WebKit::messageTestDriver):

  • Source/WebKit/Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultMediaSessionCoordinatorEnabled):

  • Source/WebKit/Shared/glib/InputMethodState.cpp:

(WebKit::inputElementHasDigitsPattern):

  • Source/WebKit/Shared/ios/WebIOSEventFactory.mm:

(WebIOSEventFactory::createWebKeyboardEvent):

  • Source/WebKit/Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::tryApplyCachedSandbox):
(WebKit::AuxiliaryProcess::initializeSandbox):

  • Source/WebKit/UIProcess/API/C/WKMockMediaDevice.cpp:

(WKAddMockMediaDevice):

  • Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setupPageConfiguration:]):

  • Source/WebKit/UIProcess/API/Cocoa/WKWebpagePreferences.mm:

(-[WKWebpagePreferences _setCaptivePortalModeEnabled:]):

  • Source/WebKit/UIProcess/API/Cocoa/_WKSystemPreferences.mm:

(+[_WKSystemPreferences isCaptivePortalModeEnabled]):
(+[_WKSystemPreferences setCaptivePortalModeEnabled:]):

  • Source/WebKit/UIProcess/API/Cocoa/_WKSystemPreferencesInternal.h:
  • Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp:

(parseProxyCapabilities):

  • Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:

(addOriginToMap):

  • Source/WebKit/UIProcess/API/gtk/DropTargetGtk4.cpp:

(WebKit::DropTarget::accept):

  • Source/WebKit/UIProcess/ApplicationStateTracker.mm:

(WebKit::applicationType):

  • Source/WebKit/UIProcess/Cocoa/MediaPermissionUtilities.mm:

(WebKit::applicationVisibleNameFromOrigin):

  • Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::collectKeyboardLayoutCommandsForEvent):

  • Source/WebKit/UIProcess/Downloads/DownloadProxyMap.cpp:

(WebKit::DownloadProxyMap::DownloadProxyMap):

  • Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorClient.cpp:

(WebKit::debuggableType):

  • Source/WebKit/UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:

(WebKit::ProcessLauncher::launchProcess):

  • Source/WebKit/UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::isDisplayingMarkupDocument const):

  • Source/WebKit/UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestAttachmentIcon):

  • Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::networkProcessHasEntitlementForTesting):

  • Source/WebKit/UIProcess/WebsiteData/WebsiteDataRecord.cpp:

(WebKit::WebsiteDataRecord::displayNameForCookieHostName):
(WebKit::WebsiteDataRecord::displayNameForOrigin):

  • Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::isEGLImageAvailable):

  • Source/WebKit/UIProcess/gtk/Clipboard.cpp:

(WebKit::Clipboard::get):

  • Source/WebKit/UIProcess/gtk/WebDataListSuggestionsDropdownGtk.cpp:

(WebKit::WebDataListSuggestionsDropdownGtk::handleKeydownWithIdentifier):

  • Source/WebKit/UIProcess/gtk/WebDateTimePickerGtk.cpp:

(WebKit::WebDateTimePickerGtk::update):

  • Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm:

(applicationHasAppLinkEntitlements):

  • Source/WebKit/UIProcess/ios/WKPDFView.mm:

(+[WKPDFView web_requiresCustomSnapshotting]):

  • Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::WebContextMenuProxyMac::setupServicesMenu):

  • Source/WebKit/UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:

(WebKit::WebDataListSuggestionsDropdownMac::handleKeydownWithIdentifier):
(-[WKDataListSuggestionsController moveSelectionByDirection:]):

  • Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::evaluateJavaScriptCallback):

  • Source/WebKit/WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:

(webkitWebPageDidReceiveMessage):

  • Source/WebKit/WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:

(WebKit::PDFPluginPasswordField::handleEvent):

  • Source/WebKit/WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:

(WebKit::PDFPluginTextAnnotation::handleEvent):

  • Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::getActionTypeForKeyEvent):

  • Source/WebKit/WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:

(WebKit::TextCheckingControllerProxy::removeAnnotationRelativeToSelection):

  • Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::encodeArgument):

  • Source/WebKit/WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::setTextDirection):

  • Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::parentProcessHasServiceWorkerEntitlement const):
(WebKit::WebPage::focusedElementInformation):
(WebKit::WebPage::platformUserAgent const):

  • Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::executeKeypressCommandsInternal):
(WebKit::WebPage::handleEditingKeyboardEvent):
(WebKit::WebPage::performNonEditingBehaviorForSelector):

  • Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeProcess):
(WebKit::WebProcess::handlePreferenceChange):

  • Source/WebKit/webpushd/PushClientConnection.h:
  • Source/WebKit/webpushd/PushClientConnection.mm:

(WebPushD::ClientConnection::hostHasEntitlement):

  • Source/WebKitLegacy/cf/WebCoreSupport/WebInspectorClientCF.cpp:

(WebInspectorClient::inspectorAttachDisabled):
(WebInspectorClient::inspectorStartsAttached):

  • Source/WebKitLegacy/mac/Plugins/WebBasePluginPackage.mm:

(-[WebBasePluginPackage isQuickTimePlugIn]):

  • Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm:

(selectorForKeyEvent):

  • Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::transitionToCommittedForNewPage):

  • Source/WebKitLegacy/mac/WebView/WebHTMLView.mm:

(-[WebHTMLView _executeSavedKeypressCommands]):

  • Source/WebKitLegacy/win/WebFrame.cpp:

(WebFrame::setTextDirection):
(WebFrame::canProvideDocumentSource):

  • Tools/DumpRenderTree/win/DumpRenderTree.cpp:

(runTest):

  • Tools/TestWebKitAPI/Tests/WTF/AtomString.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WTF/JSONValue.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WTF/cocoa/TextStreamCocoa.cpp:

(TEST):

  • Tools/TestWebKitAPI/Tests/WTF/cocoa/TextStreamCocoa.mm:

(TEST):

  • Tools/TestWebKitAPI/Tests/WebCore/CBORReaderTest.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WebCore/CBORValueTest.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WebCore/ColorTests.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WebCore/FontShadowTests.cpp:

(TestWebKitAPI::TEST_F):

  • Tools/TestWebKitAPI/Tests/WebCore/LineBreaking.mm:

(breakingLocationsFromICU):

  • Tools/TestWebKitAPI/Tests/WebCore/NowPlayingInfoTests.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WebCore/SecurityOrigin.cpp:

(TestWebKitAPI::TEST_F):

  • Tools/TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:

(TestWebKitAPI::TEST_F):

  • Tools/TestWebKitAPI/Tests/WebCore/StringWithDirection.cpp:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WebKit/MediaSessionCoordinatorTest.mm:

(TestWebKitAPI::TEST_F):

  • Tools/TestWebKitAPI/Tests/WebKit/OverrideAppleLanguagesPreference.mm:

(TEST_F):

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/CookiePrivateBrowsing.mm:

(TEST):

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/MediaLoading.mm:

(TestWebKitAPI::TEST):

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:

(TEST):

  • Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

(-[SyncScheme webView:startURLSchemeTask:]):

  • Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::dumpErrorDescriptionSuitableForTestResult):

  • Tools/WebKitTestRunner/InjectedBundle/atspi/AccessibilityUIElementAtspi.cpp:

(WTR::attributesOfElement):
(WTR::AccessibilityUIElement::stringAttributeValue):
(WTR::AccessibilityUIElement::numberAttributeValue):
(WTR::AccessibilityUIElement::boolAttributeValue):
(WTR::AccessibilityUIElement::isAttributeSettable):
(WTR::AccessibilityUIElement::isAttributeSupported):
(WTR::AccessibilityUIElement::isPressActionSupported):

  • Tools/WebKitTestRunner/TestController.cpp:

(WTR::TestController::setPluginSupportedMode):

  • Tools/WebKitTestRunner/cocoa/CrashReporterInfo.mm:

(WTR::testPathFromURL):

  • Tools/WebKitTestRunner/cocoa/UIScriptControllerCocoa.mm:

(WTR::UIScriptControllerCocoa::overridePreference):

  • Tools/WebKitTestRunner/gtk/UIScriptControllerGtk.cpp:

(WTR::UIScriptControllerGtk::overridePreference):

Canonical link: https://commits.webkit.org/251316@main

  • Property svn:eol-style set to native
File size: 32.4 KB
Line 
1/*
2 * Copyright (C) 1999-2003 Lars Knoll ([email protected])
3 * 1999 Waldo Bastian ([email protected])
4 * 2001 Andreas Schlapbach ([email protected])
5 * 2001-2003 Dirk Mueller ([email protected])
6 * Copyright (C) 2002, 2006, 2007, 2008, 2009, 2010, 2013, 2014 Apple Inc. All rights reserved.
7 * Copyright (C) 2008 David Smith ([email protected])
8 * Copyright (C) 2010 Google Inc. All rights reserved.
9 *
10 * This library is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Library General Public
12 * License as published by the Free Software Foundation; either
13 * version 2 of the License, or (at your option) any later version.
14 *
15 * This library is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Library General Public License for more details.
19 *
20 * You should have received a copy of the GNU Library General Public License
21 * along with this library; see the file COPYING.LIB. If not, write to
22 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
23 * Boston, MA 02110-1301, USA.
24 */
25
26#include "config.h"
27#include "CSSSelector.h"
28
29#include "CSSMarkup.h"
30#include "CSSSelectorList.h"
31#include "CommonAtomStrings.h"
32#include "HTMLNames.h"
33#include "RuntimeEnabledFeatures.h"
34#include "SelectorPseudoTypeMap.h"
35#include <wtf/Assertions.h>
36#include <wtf/StdLibExtras.h>
37#include <wtf/Vector.h>
38#include <wtf/text/AtomStringHash.h>
39#include <wtf/text/StringBuilder.h>
40
41namespace WebCore {
42
43using namespace HTMLNames;
44
45struct SameSizeAsCSSSelector {
46 unsigned flags;
47 void* unionPointer;
48};
49
50static_assert(CSSSelector::RelationType::Subselector == 0, "Subselector must be 0 for consumeCombinator.");
51static_assert(sizeof(CSSSelector) == sizeof(SameSizeAsCSSSelector), "CSSSelector should remain small.");
52
53DEFINE_ALLOCATOR_WITH_HEAP_IDENTIFIER(CSSSelectorRareData);
54
55CSSSelector::CSSSelector(const QualifiedName& tagQName, bool tagIsForNamespaceRule)
56 : m_relation(DescendantSpace)
57 , m_match(Tag)
58 , m_pseudoType(0)
59 , m_isLastInSelectorList(false)
60 , m_isFirstInTagHistory(true)
61 , m_isLastInTagHistory(true)
62 , m_hasRareData(false)
63 , m_hasNameWithCase(false)
64 , m_isForPage(false)
65 , m_tagIsForNamespaceRule(tagIsForNamespaceRule)
66 , m_caseInsensitiveAttributeValueMatching(false)
67#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
68 , m_destructorHasBeenCalled(false)
69#endif
70{
71 const AtomString& tagLocalName = tagQName.localName();
72 const AtomString tagLocalNameASCIILowercase = tagLocalName.convertToASCIILowercase();
73
74 if (tagLocalName == tagLocalNameASCIILowercase) {
75 m_data.m_tagQName = tagQName.impl();
76 m_data.m_tagQName->ref();
77 } else {
78 m_data.m_nameWithCase = adoptRef(new NameWithCase(tagQName, tagLocalNameASCIILowercase)).leakRef();
79 m_hasNameWithCase = true;
80 }
81}
82
83void CSSSelector::createRareData()
84{
85 ASSERT(match() != Tag);
86 ASSERT(!m_hasNameWithCase);
87 if (m_hasRareData)
88 return;
89 // Move the value to the rare data stucture.
90 AtomString value { adoptRef(m_data.m_value) };
91 m_data.m_rareData = &RareData::create(WTFMove(value)).leakRef();
92 m_hasRareData = true;
93}
94
95static unsigned simpleSelectorSpecificityInternal(const CSSSelector& simpleSelector);
96
97static unsigned selectorSpecificity(const CSSSelector& firstSimpleSelector)
98{
99 unsigned total = 0;
100 for (const CSSSelector* selector = &firstSimpleSelector; selector; selector = selector->tagHistory())
101 total = CSSSelector::addSpecificities(total, simpleSelectorSpecificityInternal(*selector));
102 return total;
103}
104
105static unsigned maxSpecificity(const CSSSelectorList& selectorList)
106{
107 unsigned maxSpecificity = 0;
108 for (const CSSSelector* subSelector = selectorList.first(); subSelector; subSelector = CSSSelectorList::next(subSelector))
109 maxSpecificity = std::max(maxSpecificity, selectorSpecificity(*subSelector));
110 return maxSpecificity;
111}
112
113static unsigned simpleSelectorSpecificityInternal(const CSSSelector& simpleSelector)
114{
115 ASSERT_WITH_MESSAGE(!simpleSelector.isForPage(), "At the time of this writing, page selectors are not treated as real selectors that are matched. The value computed here only account for real selectors.");
116
117 switch (simpleSelector.match()) {
118 case CSSSelector::Id:
119 return static_cast<unsigned>(SelectorSpecificityIncrement::ClassA);
120
121 case CSSSelector::PagePseudoClass:
122 break;
123 case CSSSelector::PseudoClass:
124 switch (simpleSelector.pseudoClassType()) {
125 case CSSSelector::PseudoClassIs:
126 case CSSSelector::PseudoClassMatches:
127 case CSSSelector::PseudoClassNot:
128 case CSSSelector::PseudoClassHas:
129 return maxSpecificity(*simpleSelector.selectorList());
130 case CSSSelector::PseudoClassWhere:
131 return 0;
132 case CSSSelector::PseudoClassNthChild:
133 case CSSSelector::PseudoClassNthLastChild:
134 case CSSSelector::PseudoClassHost:
135 return CSSSelector::addSpecificities(static_cast<unsigned>(SelectorSpecificityIncrement::ClassB), simpleSelector.selectorList() ? maxSpecificity(*simpleSelector.selectorList()) : 0);
136 default:
137 break;
138 }
139 return static_cast<unsigned>(SelectorSpecificityIncrement::ClassB);
140 case CSSSelector::Exact:
141 case CSSSelector::Class:
142 case CSSSelector::Set:
143 case CSSSelector::List:
144 case CSSSelector::Hyphen:
145 case CSSSelector::Contain:
146 case CSSSelector::Begin:
147 case CSSSelector::End:
148 return static_cast<unsigned>(SelectorSpecificityIncrement::ClassB);
149 case CSSSelector::Tag:
150 return (simpleSelector.tagQName().localName() != starAtom()) ? static_cast<unsigned>(SelectorSpecificityIncrement::ClassC) : 0;
151 case CSSSelector::PseudoElement:
152 // Slotted only competes with other slotted selectors for specificity,
153 // so whether we add the ClassC specificity shouldn't be observable.
154 if (simpleSelector.pseudoElementType() == CSSSelector::PseudoElementSlotted)
155 return maxSpecificity(*simpleSelector.selectorList());
156 return static_cast<unsigned>(SelectorSpecificityIncrement::ClassC);
157 case CSSSelector::Unknown:
158 return 0;
159 }
160 ASSERT_NOT_REACHED();
161 return 0;
162}
163
164unsigned CSSSelector::simpleSelectorSpecificity() const
165{
166 return simpleSelectorSpecificityInternal(*this);
167}
168
169unsigned CSSSelector::computeSpecificity() const
170{
171 return selectorSpecificity(*this);
172}
173
174unsigned CSSSelector::addSpecificities(unsigned a, unsigned b)
175{
176 unsigned total = a;
177
178 unsigned newIdValue = (b & idMask);
179 if (((total & idMask) + newIdValue) & ~idMask)
180 total |= idMask;
181 else
182 total += newIdValue;
183
184 unsigned newClassValue = (b & classMask);
185 if (((total & classMask) + newClassValue) & ~classMask)
186 total |= classMask;
187 else
188 total += newClassValue;
189
190 unsigned newElementValue = (b & elementMask);
191 if (((total & elementMask) + newElementValue) & ~elementMask)
192 total |= elementMask;
193 else
194 total += newElementValue;
195
196 return total;
197}
198
199unsigned CSSSelector::specificityForPage() const
200{
201 ASSERT(isForPage());
202
203 // See http://dev.w3.org/csswg/css3-page/#cascading-and-page-context
204 unsigned s = 0;
205
206 for (const CSSSelector* component = this; component; component = component->tagHistory()) {
207 switch (component->match()) {
208 case Tag:
209 s += tagQName().localName() == starAtom() ? 0 : 4;
210 break;
211 case PagePseudoClass:
212 switch (component->pagePseudoClassType()) {
213 case PagePseudoClassFirst:
214 s += 2;
215 break;
216 case PagePseudoClassLeft:
217 case PagePseudoClassRight:
218 s += 1;
219 break;
220 }
221 break;
222 default:
223 break;
224 }
225 }
226 return s;
227}
228
229PseudoId CSSSelector::pseudoId(PseudoElementType type)
230{
231 switch (type) {
232 case PseudoElementFirstLine:
233 return PseudoId::FirstLine;
234 case PseudoElementFirstLetter:
235 return PseudoId::FirstLetter;
236 case PseudoElementSelection:
237 return PseudoId::Selection;
238 case PseudoElementHighlight:
239 return PseudoId::Highlight;
240 case PseudoElementMarker:
241 return PseudoId::Marker;
242 case PseudoElementBackdrop:
243 return PseudoId::Backdrop;
244 case PseudoElementBefore:
245 return PseudoId::Before;
246 case PseudoElementAfter:
247 return PseudoId::After;
248 case PseudoElementScrollbar:
249 return PseudoId::Scrollbar;
250 case PseudoElementScrollbarButton:
251 return PseudoId::ScrollbarButton;
252 case PseudoElementScrollbarCorner:
253 return PseudoId::ScrollbarCorner;
254 case PseudoElementScrollbarThumb:
255 return PseudoId::ScrollbarThumb;
256 case PseudoElementScrollbarTrack:
257 return PseudoId::ScrollbarTrack;
258 case PseudoElementScrollbarTrackPiece:
259 return PseudoId::ScrollbarTrackPiece;
260 case PseudoElementResizer:
261 return PseudoId::Resizer;
262#if ENABLE(VIDEO)
263 case PseudoElementCue:
264#endif
265 case PseudoElementSlotted:
266 case PseudoElementPart:
267 case PseudoElementUnknown:
268 case PseudoElementWebKitCustom:
269 case PseudoElementWebKitCustomLegacyPrefixed:
270 return PseudoId::None;
271 }
272
273 ASSERT_NOT_REACHED();
274 return PseudoId::None;
275}
276
277CSSSelector::PseudoElementType CSSSelector::parsePseudoElementType(StringView name)
278{
279 if (name.isNull())
280 return PseudoElementUnknown;
281
282 auto type = parsePseudoElementString(name);
283 if (type == PseudoElementUnknown) {
284 if (name.startsWith("-webkit-"_s))
285 type = PseudoElementWebKitCustom;
286 }
287
288 if (type == PseudoElementHighlight && !RuntimeEnabledFeatures::sharedFeatures().highlightAPIEnabled())
289 return PseudoElementUnknown;
290
291 return type;
292}
293
294const CSSSelector* CSSSelector::firstInCompound() const
295{
296 auto* selector = this;
297 while (!selector->isFirstInTagHistory()) {
298 auto* previousSelector = selector - 1;
299 if (previousSelector->relation() != Subselector)
300 break;
301 selector = previousSelector;
302 }
303 return selector;
304}
305
306bool CSSSelector::operator==(const CSSSelector& other) const
307{
308 const CSSSelector* sel1 = this;
309 const CSSSelector* sel2 = &other;
310
311 while (sel1 && sel2) {
312 if (sel1->attribute() != sel2->attribute()
313 || sel1->relation() != sel2->relation()
314 || sel1->match() != sel2->match()
315 || sel1->value() != sel2->value()
316 || sel1->m_pseudoType != sel2->m_pseudoType
317 || sel1->argument() != sel2->argument()) {
318 return false;
319 }
320 if (sel1->match() == Tag) {
321 if (sel1->tagQName() != sel2->tagQName())
322 return false;
323 }
324 sel1 = sel1->tagHistory();
325 sel2 = sel2->tagHistory();
326 }
327
328 if (sel1 || sel2)
329 return false;
330
331 return true;
332}
333
334static void appendPseudoClassFunctionTail(StringBuilder& builder, const CSSSelector* selector)
335{
336 switch (selector->pseudoClassType()) {
337#if ENABLE(CSS_SELECTORS_LEVEL4)
338 case CSSSelector::PseudoClassDir:
339#endif
340 case CSSSelector::PseudoClassLang:
341 case CSSSelector::PseudoClassNthChild:
342 case CSSSelector::PseudoClassNthLastChild:
343 case CSSSelector::PseudoClassNthOfType:
344 case CSSSelector::PseudoClassNthLastOfType:
345#if ENABLE(CSS_SELECTORS_LEVEL4)
346 case CSSSelector::PseudoClassRole:
347#endif
348 builder.append(selector->argument());
349 builder.append(')');
350 break;
351 default:
352 break;
353 }
354
355}
356
357static void appendLangArgumentList(StringBuilder& builder, const Vector<AtomString>& argumentList)
358{
359 for (unsigned i = 0, size = argumentList.size(); i < size; ++i)
360 builder.append('"', argumentList[i], '"', i != size - 1 ? ", " : "");
361}
362
363// http://dev.w3.org/csswg/css-syntax/#serializing-anb
364static void outputNthChildAnPlusB(const CSSSelector& selector, StringBuilder& builder)
365{
366 auto outputFirstTerm = [&builder] (int a) {
367 switch (a) {
368 case 1:
369 break;
370 case -1:
371 builder.append('-');
372 break;
373 default:
374 builder.append(a);
375 }
376 };
377
378 if (selector.argument() == nullAtom())
379 return;
380
381 int a = selector.nthA();
382 int b = selector.nthB();
383 if (a == 0 && b == 0)
384 builder.append('0');
385 else if (a == 0)
386 builder.append(b);
387 else if (b == 0) {
388 outputFirstTerm(a);
389 builder.append('n');
390 } else if (b < 0) {
391 outputFirstTerm(a);
392 builder.append('n', b);
393 } else {
394 outputFirstTerm(a);
395 builder.append("n+", b);
396 }
397}
398
399String CSSSelector::selectorText(const String& rightSide) const
400{
401 StringBuilder builder;
402
403 if (match() == CSSSelector::Tag && !m_tagIsForNamespaceRule) {
404 if (tagQName().prefix().isNull())
405 builder.append(tagQName().localName());
406 else
407 builder.append(tagQName().prefix().string(), '|', tagQName().localName());
408 }
409
410 const CSSSelector* cs = this;
411 while (true) {
412 if (cs->match() == CSSSelector::Id) {
413 builder.append('#');
414 serializeIdentifier(cs->serializingValue(), builder);
415 } else if (cs->match() == CSSSelector::Class) {
416 builder.append('.');
417 serializeIdentifier(cs->serializingValue(), builder);
418 } else if (cs->match() == CSSSelector::PseudoClass) {
419 switch (cs->pseudoClassType()) {
420#if ENABLE(FULLSCREEN_API)
421 case CSSSelector::PseudoClassAnimatingFullScreenTransition:
422 builder.append(":-webkit-animating-full-screen-transition");
423 break;
424#endif
425 case CSSSelector::PseudoClassAny: {
426 builder.append(":-webkit-any(");
427 cs->selectorList()->buildSelectorsText(builder);
428 builder.append(')');
429 break;
430 }
431 case CSSSelector::PseudoClassAnyLink:
432 builder.append(":any-link");
433 break;
434 case CSSSelector::PseudoClassAnyLinkDeprecated:
435 builder.append(":-webkit-any-link");
436 break;
437 case CSSSelector::PseudoClassAutofill:
438 builder.append(":autofill");
439 break;
440 case CSSSelector::PseudoClassAutofillAndObscured:
441 builder.append(":-webkit-autofill-and-obscured");
442 break;
443 case CSSSelector::PseudoClassAutofillStrongPassword:
444 builder.append(":-webkit-autofill-strong-password");
445 break;
446 case CSSSelector::PseudoClassAutofillStrongPasswordViewable:
447 builder.append(":-webkit-autofill-strong-password-viewable");
448 break;
449 case CSSSelector::PseudoClassDrag:
450 builder.append(":-webkit-drag");
451 break;
452 case CSSSelector::PseudoClassFullPageMedia:
453 builder.append(":-webkit-full-page-media");
454 break;
455#if ENABLE(FULLSCREEN_API)
456 case CSSSelector::PseudoClassFullScreen:
457 builder.append(":-webkit-full-screen");
458 break;
459 case CSSSelector::PseudoClassFullScreenAncestor:
460 builder.append(":-webkit-full-screen-ancestor");
461 break;
462 case CSSSelector::PseudoClassFullScreenDocument:
463 builder.append(":-webkit-full-screen-document");
464 break;
465 case CSSSelector::PseudoClassFullScreenControlsHidden:
466 builder.append(":-webkit-full-screen-controls-hidden");
467 break;
468#endif
469#if ENABLE(PICTURE_IN_PICTURE_API)
470 case CSSSelector::PseudoClassPictureInPicture:
471 builder.append(":picture-in-picture");
472 break;
473#endif
474 case CSSSelector::PseudoClassActive:
475 builder.append(":active");
476 break;
477 case CSSSelector::PseudoClassChecked:
478 builder.append(":checked");
479 break;
480 case CSSSelector::PseudoClassCornerPresent:
481 builder.append(":corner-present");
482 break;
483 case CSSSelector::PseudoClassDecrement:
484 builder.append(":decrement");
485 break;
486 case CSSSelector::PseudoClassDefault:
487 builder.append(":default");
488 break;
489#if ENABLE(CSS_SELECTORS_LEVEL4)
490 case CSSSelector::PseudoClassDir:
491 builder.append(":dir(");
492 appendPseudoClassFunctionTail(builder, cs);
493 break;
494#endif
495 case CSSSelector::PseudoClassDisabled:
496 builder.append(":disabled");
497 break;
498 case CSSSelector::PseudoClassDoubleButton:
499 builder.append(":double-button");
500 break;
501 case CSSSelector::PseudoClassEmpty:
502 builder.append(":empty");
503 break;
504 case CSSSelector::PseudoClassEnabled:
505 builder.append(":enabled");
506 break;
507 case CSSSelector::PseudoClassEnd:
508 builder.append(":end");
509 break;
510 case CSSSelector::PseudoClassFirstChild:
511 builder.append(":first-child");
512 break;
513 case CSSSelector::PseudoClassFirstOfType:
514 builder.append(":first-of-type");
515 break;
516 case CSSSelector::PseudoClassFocus:
517 builder.append(":focus");
518 break;
519 case CSSSelector::PseudoClassFocusVisible:
520 builder.append(":focus-visible");
521 break;
522 case CSSSelector::PseudoClassFocusWithin:
523 builder.append(":focus-within");
524 break;
525#if ENABLE(VIDEO)
526 case CSSSelector::PseudoClassFuture:
527 builder.append(":future");
528 break;
529 case CSSSelector::PseudoClassPlaying:
530 builder.append(":playing");
531 break;
532 case CSSSelector::PseudoClassPaused:
533 builder.append(":paused");
534 break;
535 case CSSSelector::PseudoClassSeeking:
536 builder.append(":seeking");
537 break;
538 case CSSSelector::PseudoClassBuffering:
539 builder.append(":buffering");
540 break;
541 case CSSSelector::PseudoClassStalled:
542 builder.append(":stalled");
543 break;
544 case CSSSelector::PseudoClassMuted:
545 builder.append(":muted");
546 break;
547 case CSSSelector::PseudoClassVolumeLocked:
548 builder.append(":volume-locked");
549 break;
550#endif
551 case CSSSelector::PseudoClassHas:
552 builder.append(":has(");
553 cs->selectorList()->buildSelectorsText(builder);
554 builder.append(')');
555 break;
556#if ENABLE(ATTACHMENT_ELEMENT)
557 case CSSSelector::PseudoClassHasAttachment:
558 builder.append(":has-attachment");
559 break;
560#endif
561 case CSSSelector::PseudoClassHorizontal:
562 builder.append(":horizontal");
563 break;
564 case CSSSelector::PseudoClassHover:
565 builder.append(":hover");
566 break;
567 case CSSSelector::PseudoClassInRange:
568 builder.append(":in-range");
569 break;
570 case CSSSelector::PseudoClassIncrement:
571 builder.append(":increment");
572 break;
573 case CSSSelector::PseudoClassIndeterminate:
574 builder.append(":indeterminate");
575 break;
576 case CSSSelector::PseudoClassInvalid:
577 builder.append(":invalid");
578 break;
579 case CSSSelector::PseudoClassLang:
580 builder.append(":lang(");
581 ASSERT_WITH_MESSAGE(cs->argumentList() && !cs->argumentList()->isEmpty(), "An empty :lang() is invalid and should never be generated by the parser.");
582 appendLangArgumentList(builder, *cs->argumentList());
583 builder.append(')');
584 break;
585 case CSSSelector::PseudoClassLastChild:
586 builder.append(":last-child");
587 break;
588 case CSSSelector::PseudoClassLastOfType:
589 builder.append(":last-of-type");
590 break;
591 case CSSSelector::PseudoClassLink:
592 builder.append(":link");
593 break;
594 case CSSSelector::PseudoClassModal:
595 builder.append(":modal");
596 break;
597 case CSSSelector::PseudoClassNoButton:
598 builder.append(":no-button");
599 break;
600 case CSSSelector::PseudoClassNot:
601 builder.append(":not(");
602 cs->selectorList()->buildSelectorsText(builder);
603 builder.append(')');
604 break;
605 case CSSSelector::PseudoClassNthChild:
606 builder.append(":nth-child(");
607 outputNthChildAnPlusB(*cs, builder);
608 if (const CSSSelectorList* selectorList = cs->selectorList()) {
609 builder.append(" of ");
610 selectorList->buildSelectorsText(builder);
611 }
612 builder.append(')');
613 break;
614 case CSSSelector::PseudoClassNthLastChild:
615 builder.append(":nth-last-child(");
616 outputNthChildAnPlusB(*cs, builder);
617 if (const CSSSelectorList* selectorList = cs->selectorList()) {
618 builder.append(" of ");
619 selectorList->buildSelectorsText(builder);
620 }
621 builder.append(')');
622 break;
623 case CSSSelector::PseudoClassNthLastOfType:
624 builder.append(":nth-last-of-type(");
625 appendPseudoClassFunctionTail(builder, cs);
626 break;
627 case CSSSelector::PseudoClassNthOfType:
628 builder.append(":nth-of-type(");
629 appendPseudoClassFunctionTail(builder, cs);
630 break;
631 case CSSSelector::PseudoClassOnlyChild:
632 builder.append(":only-child");
633 break;
634 case CSSSelector::PseudoClassOnlyOfType:
635 builder.append(":only-of-type");
636 break;
637 case CSSSelector::PseudoClassOptional:
638 builder.append(":optional");
639 break;
640 case CSSSelector::PseudoClassIs: {
641 builder.append(":is(");
642 cs->selectorList()->buildSelectorsText(builder);
643 builder.append(')');
644 break;
645 }
646 case CSSSelector::PseudoClassMatches: {
647 builder.append(":matches(");
648 cs->selectorList()->buildSelectorsText(builder);
649 builder.append(')');
650 break;
651 }
652 case CSSSelector::PseudoClassWhere: {
653 builder.append(":where(");
654 cs->selectorList()->buildSelectorsText(builder);
655 builder.append(')');
656 break;
657 }
658 case CSSSelector::PseudoClassPlaceholderShown:
659 builder.append(":placeholder-shown");
660 break;
661 case CSSSelector::PseudoClassOutOfRange:
662 builder.append(":out-of-range");
663 break;
664#if ENABLE(VIDEO)
665 case CSSSelector::PseudoClassPast:
666 builder.append(":past");
667 break;
668#endif
669 case CSSSelector::PseudoClassReadOnly:
670 builder.append(":read-only");
671 break;
672 case CSSSelector::PseudoClassReadWrite:
673 builder.append(":read-write");
674 break;
675 case CSSSelector::PseudoClassRequired:
676 builder.append(":required");
677 break;
678#if ENABLE(CSS_SELECTORS_LEVEL4)
679 case CSSSelector::PseudoClassRole:
680 builder.append(":role(");
681 appendPseudoClassFunctionTail(builder, cs);
682 break;
683#endif
684 case CSSSelector::PseudoClassRoot:
685 builder.append(":root");
686 break;
687 case CSSSelector::PseudoClassScope:
688 builder.append(":scope");
689 break;
690 case CSSSelector::PseudoClassRelativeScope:
691 // Just remove the space from the start to generate a relative selector string like in ":has(> foo)".
692 return rightSide.substring(1);
693 case CSSSelector::PseudoClassSingleButton:
694 builder.append(":single-button");
695 break;
696 case CSSSelector::PseudoClassStart:
697 builder.append(":start");
698 break;
699 case CSSSelector::PseudoClassTarget:
700 builder.append(":target");
701 break;
702 case CSSSelector::PseudoClassValid:
703 builder.append(":valid");
704 break;
705 case CSSSelector::PseudoClassVertical:
706 builder.append(":vertical");
707 break;
708 case CSSSelector::PseudoClassVisited:
709 builder.append(":visited");
710 break;
711 case CSSSelector::PseudoClassWindowInactive:
712 builder.append(":window-inactive");
713 break;
714 case CSSSelector::PseudoClassHost:
715 builder.append(":host");
716 if (auto* selectorList = cs->selectorList()) {
717 builder.append('(');
718 selectorList->buildSelectorsText(builder);
719 builder.append(')');
720 }
721 break;
722 case CSSSelector::PseudoClassDefined:
723 builder.append(":defined");
724 break;
725 case CSSSelector::PseudoClassUnknown:
726 ASSERT_NOT_REACHED();
727 }
728 } else if (cs->match() == CSSSelector::PseudoElement) {
729 switch (cs->pseudoElementType()) {
730 case CSSSelector::PseudoElementSlotted:
731 builder.append("::slotted(");
732 cs->selectorList()->buildSelectorsText(builder);
733 builder.append(')');
734 break;
735 case CSSSelector::PseudoElementPart: {
736 builder.append("::part(");
737 bool isFirst = true;
738 for (auto& partName : *cs->argumentList()) {
739 if (!isFirst)
740 builder.append(' ');
741 isFirst = false;
742 serializeIdentifier(partName, builder);
743 }
744 builder.append(')');
745 break;
746 }
747 case CSSSelector::PseudoElementWebKitCustomLegacyPrefixed:
748 if (cs->value() == "placeholder"_s)
749 builder.append("::-webkit-input-placeholder"_s);
750 if (cs->value() == "file-selector-button"_s)
751 builder.append("::-webkit-file-upload-button"_s);
752 break;
753#if ENABLE(VIDEO)
754 case CSSSelector::PseudoElementCue: {
755 if (auto* selectorList = cs->selectorList()) {
756 builder.append("::cue(");
757 selectorList->buildSelectorsText(builder);
758 builder.append(')');
759 } else
760 builder.append("::cue");
761 break;
762 }
763#endif
764 default:
765 builder.append("::", cs->serializingValue());
766 }
767 } else if (cs->isAttributeSelector()) {
768 builder.append('[');
769 if (auto& prefix = cs->attribute().prefix(); !prefix.isEmpty())
770 builder.append(prefix, '|');
771 builder.append(cs->attribute().localName());
772 switch (cs->match()) {
773 case CSSSelector::Exact:
774 builder.append('=');
775 break;
776 case CSSSelector::Set:
777 // set has no operator or value, just the attrName
778 builder.append(']');
779 break;
780 case CSSSelector::List:
781 builder.append("~=");
782 break;
783 case CSSSelector::Hyphen:
784 builder.append("|=");
785 break;
786 case CSSSelector::Begin:
787 builder.append("^=");
788 break;
789 case CSSSelector::End:
790 builder.append("$=");
791 break;
792 case CSSSelector::Contain:
793 builder.append("*=");
794 break;
795 default:
796 break;
797 }
798 if (cs->match() != CSSSelector::Set) {
799 serializeString(cs->serializingValue(), builder);
800 if (cs->attributeValueMatchingIsCaseInsensitive())
801 builder.append(" i]");
802 else
803 builder.append(']');
804 }
805 } else if (cs->match() == CSSSelector::PagePseudoClass) {
806 switch (cs->pagePseudoClassType()) {
807 case PagePseudoClassFirst:
808 builder.append(":first");
809 break;
810 case PagePseudoClassLeft:
811 builder.append(":left");
812 break;
813 case PagePseudoClassRight:
814 builder.append(":right");
815 break;
816 }
817 }
818
819 if (cs->relation() != CSSSelector::Subselector || !cs->tagHistory())
820 break;
821 cs = cs->tagHistory();
822 }
823
824 if (const CSSSelector* tagHistory = cs->tagHistory()) {
825 switch (cs->relation()) {
826 case CSSSelector::DescendantSpace:
827 return tagHistory->selectorText(" " + builder.toString() + rightSide);
828 case CSSSelector::Child:
829 return tagHistory->selectorText(" > " + builder.toString() + rightSide);
830 case CSSSelector::DirectAdjacent:
831 return tagHistory->selectorText(" + " + builder.toString() + rightSide);
832 case CSSSelector::IndirectAdjacent:
833 return tagHistory->selectorText(" ~ " + builder.toString() + rightSide);
834 case CSSSelector::Subselector:
835 ASSERT_NOT_REACHED();
836#if !ASSERT_ENABLED
837 FALLTHROUGH;
838#endif
839 case CSSSelector::ShadowDescendant:
840 case CSSSelector::ShadowPartDescendant:
841 case CSSSelector::ShadowSlotted:
842 builder.append(rightSide);
843 return tagHistory->selectorText(builder.toString());
844 }
845 }
846 builder.append(rightSide);
847 return builder.toString();
848}
849
850void CSSSelector::setAttribute(const QualifiedName& value, bool convertToLowercase, AttributeMatchType matchType)
851{
852 createRareData();
853 m_data.m_rareData->m_attribute = value;
854 m_data.m_rareData->m_attributeCanonicalLocalName = convertToLowercase ? value.localName().convertToASCIILowercase() : value.localName();
855 m_caseInsensitiveAttributeValueMatching = matchType == CaseInsensitive;
856}
857
858void CSSSelector::setArgument(const AtomString& value)
859{
860 createRareData();
861 m_data.m_rareData->m_argument = value;
862}
863
864void CSSSelector::setArgumentList(std::unique_ptr<Vector<AtomString>> argumentList)
865{
866 createRareData();
867 m_data.m_rareData->m_argumentList = WTFMove(argumentList);
868}
869
870void CSSSelector::setSelectorList(std::unique_ptr<CSSSelectorList> selectorList)
871{
872 createRareData();
873 m_data.m_rareData->m_selectorList = WTFMove(selectorList);
874}
875
876void CSSSelector::setNth(int a, int b)
877{
878 createRareData();
879 m_data.m_rareData->m_a = a;
880 m_data.m_rareData->m_b = b;
881}
882
883bool CSSSelector::matchNth(int count) const
884{
885 ASSERT(m_hasRareData);
886 return m_data.m_rareData->matchNth(count);
887}
888
889int CSSSelector::nthA() const
890{
891 ASSERT(m_hasRareData);
892 return m_data.m_rareData->m_a;
893}
894
895int CSSSelector::nthB() const
896{
897 ASSERT(m_hasRareData);
898 return m_data.m_rareData->m_b;
899}
900
901CSSSelector::RareData::RareData(AtomString&& value)
902 : m_matchingValue(value)
903 , m_serializingValue(value)
904 , m_a(0)
905 , m_b(0)
906 , m_attribute(anyQName())
907 , m_argument(nullAtom())
908{
909}
910
911CSSSelector::RareData::~RareData() = default;
912
913// a helper function for checking nth-arguments
914bool CSSSelector::RareData::matchNth(int count)
915{
916 if (!m_a)
917 return count == m_b;
918 else if (m_a > 0) {
919 if (count < m_b)
920 return false;
921 return (count - m_b) % m_a == 0;
922 } else {
923 if (count > m_b)
924 return false;
925 return (m_b - count) % (-m_a) == 0;
926 }
927}
928
929} // namespace WebCore
Note: See TracBrowser for help on using the repository browser.