Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8dabe5207fb4cd442388423dc0aa823e34b3a4a9 https://github.com/WebKit/WebKit/commit/8dabe5207fb4cd442388423dc0aa823e34b3a4a9 Author: Timothy Hatcher <timo...@apple.com> Date: 2024-02-05 (Mon, 05 Feb 2024)
Changed paths: M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIActionCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIEventCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIMenusCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationEventCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestEventCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsEventCocoa.mm M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAction.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIEvent.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIMenus.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigation.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigationEvent.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequestEvent.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindows.h M Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindowsEvent.h M Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebNavigation.idl M Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebRequest.idl Log Message: ----------- Crash when closing page while extension is waiting on storage callback. https://webkit.org/b/268767 rdar://problem/122328331 Reviewed by Brian Weinstein. Teach the Web Extension code generator to pass references for the page and frame to the implementation after null checking them. This avoids all the clients needing to check, and makes the implementations safer. Log an error if they are null, and return undefined to JavaScript. An exception would not be useful here, since the page is being destroyed already. Also use RefPtr for the impl, page, and frame pointers so the lifetime is guaranteed for the current call duration. Also stop setting ObjC types to nil by default, since the generated code is ARC. Do similar for RefPtr types, since they also default to nullptr. * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIActionCocoa.mm: (WebKit::WebExtensionAPIAction::openPopup): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIEventCocoa.mm: (WebKit::WebExtensionAPIEvent::addListener): (WebKit::WebExtensionAPIEvent::removeListener): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIExtensionCocoa.mm: (WebKit::WebExtensionAPIExtension::isInIncognitoContext): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIMenusCocoa.mm: (WebKit::WebExtensionAPIMenus::createMenu): (WebKit::WebExtensionAPIMenus::update): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPortCocoa.mm: (WebKit::WebExtensionAPIPort::postMessage): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIRuntimeCocoa.mm: (WebKit::WebExtensionAPIRuntime::getFrameId): (WebKit::WebExtensionAPIRuntime::sendMessage): (WebKit::WebExtensionAPIRuntime::connect): (WebKit::WebExtensionAPIRuntime::sendNativeMessage): (WebKit::WebExtensionAPIRuntime::connectNative): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIStorageAreaCocoa.mm: (WebKit::WebExtensionAPIStorageArea::get): (WebKit::WebExtensionAPIStorageArea::getBytesInUse): (WebKit::WebExtensionAPIStorageArea::set): (WebKit::WebExtensionAPIStorageArea::remove): (WebKit::WebExtensionAPIStorageArea::clear): (WebKit::WebExtensionAPIStorageArea::setAccessLevel): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPITabsCocoa.mm: (WebKit::WebExtensionAPITabs::createTab): (WebKit::WebExtensionAPITabs::query): (WebKit::WebExtensionAPITabs::getCurrent): (WebKit::WebExtensionAPITabs::getSelected): (WebKit::WebExtensionAPITabs::update): (WebKit::WebExtensionAPITabs::reload): (WebKit::WebExtensionAPITabs::goBack): (WebKit::WebExtensionAPITabs::goForward): (WebKit::WebExtensionAPITabs::getZoom): (WebKit::WebExtensionAPITabs::setZoom): (WebKit::WebExtensionAPITabs::detectLanguage): (WebKit::WebExtensionAPITabs::toggleReaderMode): (WebKit::WebExtensionAPITabs::captureVisibleTab): (WebKit::WebExtensionAPITabs::sendMessage): (WebKit::WebExtensionAPITabs::connect): (WebKit::WebExtensionAPITabs::executeScript): (WebKit::WebExtensionAPITabs::insertCSS): (WebKit::WebExtensionAPITabs::removeCSS): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationCocoa.mm: (WebKit::WebExtensionAPIWebNavigation::getAllFrames): (WebKit::WebExtensionAPIWebNavigation::getFrame): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebNavigationEventCocoa.mm: (WebKit::WebExtensionAPIWebNavigationEvent::addListener): (WebKit::WebExtensionAPIWebNavigationEvent::removeListener): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWebRequestEventCocoa.mm: (WebKit::WebExtensionAPIWebRequestEvent::addListener): (WebKit::WebExtensionAPIWebRequestEvent::removeListener): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsCocoa.mm: (WebKit::WebExtensionAPIWindows::get): (WebKit::WebExtensionAPIWindows::getCurrent): * Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIWindowsEventCocoa.mm: (WebKit::WebExtensionAPIWindowsEvent::addListener): (WebKit::WebExtensionAPIWindowsEvent::removeListener): * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIAction.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIEvent.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIExtension.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIMenus.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIPort.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIRuntime.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIStorageArea.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPITabs.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigation.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebNavigationEvent.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWebRequestEvent.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindows.h: * Source/WebKit/WebProcess/Extensions/API/WebExtensionAPIWindowsEvent.h: * Source/WebKit/WebProcess/Extensions/Bindings/Scripts/CodeGeneratorExtensions.pm: (_generateImplementationFile): (_platformTypeVariableDeclaration): (_dynamicAttributesImplementation): * Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebNavigation.idl: * Source/WebKit/WebProcess/Extensions/Interfaces/WebExtensionAPIWebRequest.idl: Canonical link: https://commits.webkit.org/274114@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes