Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 47438b5caa885411cf61fdb7c22d961987561558
      
https://github.com/WebKit/WebKit/commit/47438b5caa885411cf61fdb7c22d961987561558
  Author: Chris Dumez <[email protected]>
  Date:   2025-04-29 (Tue, 29 Apr 2025)

  Changed paths:
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
    M Source/WebKit/WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp

  Log Message:
  -----------
  WebChromeClient::page() should return a raw pointer instead of a reference
https://bugs.webkit.org/show_bug.cgi?id=292299

Reviewed by Per Arne Vollan.

WebChromeClient::page() should return a raw pointer instead of a reference
since it can return a null pointer.

So far, we've spot-fixed null -dereference crashes but we should address
the situation more generally by returning a raw pointer.

* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::AXRelayProcessSuspendedNotification::AXRelayProcessSuspendedNotification):
(WebKit::WebChromeClient::setWindowRect):
(WebKit::WebChromeClient::windowRect const):
(WebKit::WebChromeClient::pageRect const):
(WebKit::WebChromeClient::focus):
(WebKit::WebChromeClient::unfocus):
(WebKit::WebChromeClient::elementDidFocus):
(WebKit::WebChromeClient::elementDidRefocus):
(WebKit::WebChromeClient::elementDidBlur):
(WebKit::WebChromeClient::focusedElementDidChangeInputMode):
(WebKit::WebChromeClient::focusedSelectElementDidChangeOptions):
(WebKit::WebChromeClient::makeFirstResponder):
(WebKit::WebChromeClient::assistiveTechnologyMakeFirstResponder):
(WebKit::WebChromeClient::takeFocus):
(WebKit::WebChromeClient::focusedElementChanged):
(WebKit::WebChromeClient::focusedFrameChanged):
(WebKit::WebChromeClient::createWindow):
(WebKit::WebChromeClient::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
(WebKit::WebChromeClient::show):
(WebKit::WebChromeClient::canRunModal const):
(WebKit::WebChromeClient::runModal):
(WebKit::WebChromeClient::setToolbarsVisible):
(WebKit::WebChromeClient::toolbarsVisible const):
(WebKit::WebChromeClient::setStatusbarVisible):
(WebKit::WebChromeClient::statusbarVisible const):
(WebKit::WebChromeClient::setMenubarVisible):
(WebKit::WebChromeClient::menubarVisible const):
(WebKit::WebChromeClient::setResizable):
(WebKit::WebChromeClient::addMessageToConsole):
(WebKit::WebChromeClient::addMessageWithArgumentsToConsole):
(WebKit::WebChromeClient::canRunBeforeUnloadConfirmPanel):
(WebKit::WebChromeClient::runBeforeUnloadConfirmPanel):
(WebKit::WebChromeClient::closeWindow):
(WebKit::WebChromeClient::rootFrameAdded):
(WebKit::WebChromeClient::rootFrameRemoved):
(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):
(WebKit::WebChromeClient::keyboardUIMode):
(WebKit::WebChromeClient::hoverSupportedByPrimaryPointingDevice const):
(WebKit::WebChromeClient::hoverSupportedByAnyAvailablePointingDevice const):
(WebKit::WebChromeClient::pointerCharacteristicsOfPrimaryPointingDevice const):
(WebKit::WebChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices 
const):
(WebKit::WebChromeClient::requestPointerLock):
(WebKit::WebChromeClient::requestPointerUnlock):
(WebKit::WebChromeClient::invalidateContentsAndRootView):
(WebKit::WebChromeClient::invalidateContentsForSlowScroll):
(WebKit::WebChromeClient::scroll):
(WebKit::WebChromeClient::screenToRootView const):
(WebKit::WebChromeClient::rootViewToScreen const):
(WebKit::WebChromeClient::accessibilityScreenToRootView const):
(WebKit::WebChromeClient::rootViewToAccessibilityScreen const):
(WebKit::WebChromeClient::didFinishLoadingImageForElement):
(WebKit::WebChromeClient::intrinsicContentsSizeChanged const):
(WebKit::WebChromeClient::contentsSizeChanged const):
(WebKit::WebChromeClient::scrollMainFrameToRevealRect const):
(WebKit::WebChromeClient::mouseDidMoveOverElement):
(WebKit::WebChromeClient::print):
(WebKit::WebChromeClient::createColorChooser):
(WebKit::WebChromeClient::createDataListSuggestionPicker):
(WebKit::WebChromeClient::createDateTimeChooser):
(WebKit::WebChromeClient::runOpenPanel):
(WebKit::WebChromeClient::showShareSheet):
(WebKit::WebChromeClient::showContactPicker):
(WebKit::WebChromeClient::showDigitalCredentialsPicker):
(WebKit::WebChromeClient::dismissDigitalCredentialsPicker):
(WebKit::WebChromeClient::setCursor):
(WebKit::WebChromeClient::setCursorHiddenUntilMouseMoves):
(WebKit::WebChromeClient::didAssociateFormControls):
(WebKit::WebChromeClient::shouldNotifyOnFormChanges):
(WebKit::WebChromeClient::createPopupMenu const):
(WebKit::WebChromeClient::createSearchPopupMenu const):
(WebKit::WebChromeClient::graphicsLayerFactory const):
(WebKit::WebChromeClient::displayRefreshMonitorFactory const):
(WebKit::WebChromeClient::createImageBuffer const):
(WebKit::WebChromeClient::sinkIntoImageBuffer):
(WebKit::WebChromeClient::createWorkerClient):
(WebKit::WebChromeClient::createGraphicsContextGL const):
(WebKit::WebChromeClient::createGPUForWebGPU const):
(WebKit::WebChromeClient::createBarcodeDetector const):
(WebKit::WebChromeClient::getBarcodeDetectorSupportedFormats const):
(WebKit::WebChromeClient::createFaceDetector const):
(WebKit::WebChromeClient::createTextDetector const):
(WebKit::WebChromeClient::attachRootGraphicsLayer):
(WebKit::WebChromeClient::attachViewOverlayGraphicsLayer):
(WebKit::WebChromeClient::shouldTriggerRenderingUpdate const):
(WebKit::WebChromeClient::triggerRenderingUpdate):
(WebKit::WebChromeClient::scheduleRenderingUpdate):
(WebKit::WebChromeClient::renderingUpdateFramesPerSecondChanged):
(WebKit::WebChromeClient::remoteImagesCountForTesting const):
(WebKit::WebChromeClient::contentRuleListNotification):
(WebKit::WebChromeClient::layerTreeStateIsFrozen const):
(WebKit::WebChromeClient::createScrollingCoordinator const):
(WebKit::WebChromeClient::ensureScrollbarsController const):
(WebKit::WebChromeClient::prepareForVideoFullscreen):
(WebKit::WebChromeClient::canEnterVideoFullscreen const):
(WebKit::WebChromeClient::supportsVideoFullscreen):
(WebKit::WebChromeClient::supportsVideoFullscreenStandby):
(WebKit::WebChromeClient::setMockVideoPresentationModeEnabled):
(WebKit::WebChromeClient::enterVideoFullscreenForVideoElement):
(WebKit::WebChromeClient::setPlayerIdentifierForVideoElement):
(WebKit::WebChromeClient::exitVideoFullscreenForVideoElement):
(WebKit::WebChromeClient::mediaEngineChanged):
(WebKit::WebChromeClient::addMediaUsageManagerSession):
(WebKit::WebChromeClient::updateMediaUsageManagerSessionState):
(WebKit::WebChromeClient::removeMediaUsageManagerSession):
(WebKit::WebChromeClient::exitVideoFullscreenToModeWithoutAnimation):
(WebKit::WebChromeClient::setVideoFullscreenMode):
(WebKit::WebChromeClient::clearVideoFullscreenMode):
(WebKit::WebChromeClient::supportsFullScreenForElement):
(WebKit::WebChromeClient::enterFullScreenForElement):
(WebKit::WebChromeClient::updateImageSource):
(WebKit::WebChromeClient::exitFullScreenForElement):
(WebKit::WebChromeClient::screenSize const):
(WebKit::WebChromeClient::availableScreenSize const):
(WebKit::WebChromeClient::overrideScreenSize const):
(WebKit::WebChromeClient::overrideAvailableScreenSize const):
(WebKit::WebChromeClient::screenSizeForFingerprintingProtections const):
(WebKit::WebChromeClient::dispatchDisabledAdaptationsDidChange const):
(WebKit::WebChromeClient::dispatchViewportPropertiesDidChange const):
(WebKit::WebChromeClient::notifyScrollerThumbIsVisibleInRect):
(WebKit::WebChromeClient::recommendedScrollbarStyleDidChange):
(WebKit::WebChromeClient::preferredScrollbarOverlayStyle):
(WebKit::WebChromeClient::underlayColor const):
(WebKit::WebChromeClient::themeColorChanged const):
(WebKit::WebChromeClient::pageExtendedBackgroundColorDidChange const):
(WebKit::WebChromeClient::sampledPageTopColorChanged const):
(WebKit::WebChromeClient::spatialBackdropSourceChanged const):
(WebKit::WebChromeClient::appHighlightsVisiblility const):
(WebKit::WebChromeClient::wheelEventHandlersChanged):
(WebKit::WebChromeClient::enableSuddenTermination):
(WebKit::WebChromeClient::disableSuddenTermination):
(WebKit::WebChromeClient::didAddHeaderLayer):
(WebKit::WebChromeClient::didAddFooterLayer):
(WebKit::WebChromeClient::shouldUseTiledBackingForFrameView const):
(WebKit::WebChromeClient::frameViewLayoutOrVisualViewportChanged):
(WebKit::WebChromeClient::isAnyAnimationAllowedToPlayDidChange):
(WebKit::WebChromeClient::resolveAccessibilityHitTestForTesting):
(WebKit::WebChromeClient::isPlayingMediaDidChange):
(WebKit::WebChromeClient::handleAutoplayEvent):
(WebKit::WebChromeClient::setTextIndicator const):
(WebKit::WebChromeClient::updateTextIndicator const):
(WebKit::WebChromeClient::handleTelephoneNumberClick):
(WebKit::WebChromeClient::handleClickForDataDetectionResult):
(WebKit::WebChromeClient::handleSelectionServiceClick):
(WebKit::WebChromeClient::handleImageServiceClick):
(WebKit::WebChromeClient::handlePDFServiceClick):
(WebKit::WebChromeClient::shouldDispatchFakeMouseMoveEvents const):
(WebKit::WebChromeClient::handleAutoFillButtonClick):
(WebKit::WebChromeClient::inputElementDidResignStrongPasswordAppearance):
(WebKit::WebChromeClient::performSwitchHapticFeedback):
(WebKit::WebChromeClient::addPlaybackTargetPickerClient):
(WebKit::WebChromeClient::removePlaybackTargetPickerClient):
(WebKit::WebChromeClient::showPlaybackTargetPicker):
(WebKit::WebChromeClient::playbackTargetPickerClientStateDidChange):
(WebKit::WebChromeClient::setMockMediaPlaybackTargetPickerEnabled):
(WebKit::WebChromeClient::setMockMediaPlaybackTargetPickerState):
(WebKit::WebChromeClient::mockMediaPlaybackTargetPickerDismissPopup):
(WebKit::WebChromeClient::imageOrMediaDocumentSizeChanged):
(WebKit::WebChromeClient::didInvalidateDocumentMarkerRects):
(WebKit::WebChromeClient::hasStorageAccess):
(WebKit::WebChromeClient::requestStorageAccess):
(WebKit::WebChromeClient::setLoginStatus):
(WebKit::WebChromeClient::isLoggedIn):
(WebKit::WebChromeClient::hasPageLevelStorageAccess const):
(WebKit::WebChromeClient::shouldAllowDeviceOrientationAndMotionAccess):
(WebKit::WebChromeClient::configureLoggingChannel):
(WebKit::WebChromeClient::userIsInteracting const):
(WebKit::WebChromeClient::setUserIsInteracting):
(WebKit::WebChromeClient::setMockWebAuthenticationConfiguration):
(WebKit::WebChromeClient::animationDidFinishForElement):
(WebKit::WebChromeClient::changeUniversalAccessZoomFocus):
(WebKit::WebChromeClient::requestTextRecognition):
(WebKit::WebChromeClient::applyLinkDecorationFilteringWithResult const):
(WebKit::WebChromeClient::allowedQueryParametersForAdvancedPrivacyProtections 
const):
(WebKit::WebChromeClient::didAddOrRemoveViewportConstrainedObjects):
(WebKit::WebChromeClient::textAutosizingUsesIdempotentModeChanged):
(WebKit::WebChromeClient::baseViewportLayoutSizeScaleFactor const):
(WebKit::WebChromeClient::showMediaControlsContextMenu):
(WebKit::WebChromeClient::enumerateImmersiveXRDevices):
(WebKit::WebChromeClient::requestPermissionOnXRSessionFeatures):
(WebKit::WebChromeClient::startApplePayAMSUISession):
(WebKit::WebChromeClient::abortApplePayAMSUISession):
(WebKit::WebChromeClient::beginSystemPreview):
(WebKit::WebChromeClient::requestCookieConsent):
(WebKit::WebChromeClient::isUsingUISideCompositing const):
(WebKit::WebChromeClient::isInStableState const):
(WebKit::WebChromeClient::didAdjustVisibilityWithSelectors):
(WebKit::WebChromeClient::gamepadsRecentlyAccessed):
(WebKit::WebChromeClient::proofreadingSessionShowDetailsForSuggestionWithIDRelativeToRect):
(WebKit::WebChromeClient::proofreadingSessionUpdateStateForSuggestionWithID):
(WebKit::WebChromeClient::removeTextAnimationForAnimationID):
(WebKit::WebChromeClient::removeInitialTextAnimationForActiveWritingToolsSession):
(WebKit::WebChromeClient::addInitialTextAnimationForActiveWritingToolsSession):
(WebKit::WebChromeClient::addSourceTextAnimationForActiveWritingToolsSession):
(WebKit::WebChromeClient::addDestinationTextAnimationForActiveWritingToolsSession):
(WebKit::WebChromeClient::saveSnapshotOfTextPlaceholderForAnimation):
(WebKit::WebChromeClient::clearAnimationsForActiveWritingToolsSession):
(WebKit::WebChromeClient::setIsInRedo):
(WebKit::WebChromeClient::hasActiveNowPlayingSessionChanged):
(WebKit::WebChromeClient::getImageBufferResourceLimitsForTesting const):
(WebKit::WebChromeClient::callAfterPendingSyntheticClick):
(WebKit::WebChromeClient::didDispatchClickEvent):
(WebKit::WebChromeClient::didProgrammaticallyClearTextFormControl):
(WebKit::WebChromeClient::resetDamageHistoryForTesting):
(WebKit::WebChromeClient::damageHistoryForTesting const):
(WebKit::WebChromeClient::protectedPage const): Deleted.
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:
* Source/WebKit/WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
(WebKit::WebChromeClient::didPreventDefaultForEvent):
(WebKit::WebChromeClient::didReceiveMobileDocType):
(WebKit::WebChromeClient::didFinishContentChangeObserving):
(WebKit::WebChromeClient::notifyRevealedSelectionByScrollingFrame):
(WebKit::WebChromeClient::didLayout):
(WebKit::WebChromeClient::didStartOverflowScroll):
(WebKit::WebChromeClient::didEndOverflowScroll):
(WebKit::WebChromeClient::hasStablePageScaleFactor const):
(WebKit::WebChromeClient::showPlaybackTargetPicker):
(WebKit::WebChromeClient::eventThrottlingDelay):
(WebKit::WebChromeClient::deviceOrientation const):
(WebKit::WebChromeClient::showDataDetectorsUIForElement):
(WebKit::WebChromeClient::relayAccessibilityNotification const):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::fromCorePage):

Canonical link: https://commits.webkit.org/294312@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

Reply via email to