Skip to content

Commit

Permalink
Adopt smart pointers in WebProcessProxy
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=263820

Reviewed by Ryosuke Niwa.

* Source/WebKit/Shared/WebBackForwardListItem.h:
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageCopyRelatedPages):
* Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::getBrowsingContexts):
* Source/WebKit/UIProcess/HighPerformanceGraphicsUsageSampler.cpp:
(WebKit::HighPerformanceGraphicsUsageSampler::timerFired):
* Source/WebKit/UIProcess/PerActivityStateCPUUsageSampler.cpp:
(WebKit::PerActivityStateCPUUsageSampler::pageForLogging const):
* Source/WebKit/UIProcess/ProvisionalPageProxy.h:
* Source/WebKit/UIProcess/RemotePageProxy.cpp:
(WebKit::RemotePageProxy::protectedPage const):
* Source/WebKit/UIProcess/RemotePageProxy.h:
* Source/WebKit/UIProcess/WebBackForwardCache.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::nonEphemeralWebPageProxy):
(WebKit::WebPageProxy::protectedVisitedLinkStore):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebProcessCache.h:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::anyProcessPoolNeedsUIBackgroundAssertion):
(WebKit::WebProcessPool::forEachProcessForSession):
(WebKit::WebProcessPool::checkedWebProcessCache):
(WebKit::WebProcessPool::checkedBackForwardCache):
* Source/WebKit/UIProcess/WebProcessPool.h:
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::allProcesses):
(WebKit::WebProcessProxy::processForIdentifier):
(WebKit::WebProcessProxy::globalPages):
(WebKit::WebProcessProxy::pages const):
(WebKit::WebProcessProxy::forWebPagesWithOrigin):
(WebKit::WebProcessProxy::allowedFirstPartiesForCookies):
(WebKit::WebProcessProxy::create):
(WebKit::WebProcessProxy::createForRemoteWorkers):
(WebKit::m_routingArbitrator):
(WebKit::WebProcessProxy::~WebProcessProxy):
(WebKit::WebProcessProxy::updateRegistrationWithDataStore):
(WebKit::WebProcessProxy::addProvisionalPageProxy):
(WebKit::WebProcessProxy::addRemotePageProxy):
(WebKit::WebProcessProxy::getLaunchOptions):
(WebKit::WebProcessProxy::shouldSendPendingMessage):
(WebKit::WebProcessProxy::processWillShutDown):
(WebKit::WebProcessProxy::startDisplayLink):
(WebKit::WebProcessProxy::stopDisplayLink):
(WebKit::WebProcessProxy::setDisplayLinkPreferredFramesPerSecond):
(WebKit::WebProcessProxy::setDisplayLinkForDisplayWantsFullSpeedUpdates):
(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::webPage):
(WebKit::WebProcessProxy::audioCapturingWebPage):
(WebKit::WebProcessProxy::webPageWithActiveXRSession):
(WebKit::WebProcessProxy::notifyPageStatisticsAndDataRecordsProcessed):
(WebKit::WebProcessProxy::notifyWebsiteDataScanForRegistrableDomainsFinished):
(WebKit::WebProcessProxy::notifyWebsiteDataDeletionForRegistrableDomainsFinished):
(WebKit::WebProcessProxy::createWebPage):
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::removeWebPage):
(WebKit::WebProcessProxy::updateBackForwardItem):
(WebKit::WebProcessProxy::getNetworkProcessConnection):
(WebKit::WebProcessProxy::createGPUProcessConnection):
(WebKit::WebProcessProxy::gpuProcessDidFinishLaunching):
(WebKit::WebProcessProxy::gpuProcessExited):
(WebKit::WebProcessProxy::didReceiveMessage):
(WebKit::WebProcessProxy::didReceiveSyncMessage):
(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
(WebKit::WebProcessProxy::didBecomeUnresponsive):
(WebKit::WebProcessProxy::didBecomeResponsive):
(WebKit::WebProcessProxy::willChangeIsResponsive):
(WebKit::WebProcessProxy::didChangeIsResponsive):
(WebKit::WebProcessProxy::setIgnoreInvalidMessageForTesting):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::didDestroyFrame):
(WebKit::WebProcessProxy::recordUserGestureAuthorizationToken):
(WebKit::WebProcessProxy::postMessageToRemote):
(WebKit::WebProcessProxy::closeRemoteFrame):
(WebKit::WebProcessProxy::renderTreeAsText):
(WebKit::WebProcessProxy::maybeShutDown):
(WebKit::WebProcessProxy::canTerminateAuxiliaryProcess):
(WebKit::WebProcessProxy::windowServerConnectionStateChanged):
(WebKit::WebProcessProxy::updateAudibleMediaAssertions):
(WebKit::WebProcessProxy::updateMediaStreamingActivity):
(WebKit::WebProcessProxy::isResponsive):
(WebKit::WebProcessProxy::isResponsiveWithLazyStop):
(WebKit::WebProcessProxy::logDiagnosticMessageForResourceLimitTermination):
(WebKit::WebProcessProxy::didExceedCPULimit):
(WebKit::WebProcessProxy::updateBlobRegistryPartitioningState const):
(WebKit::WebProcessProxy::didCollectPrewarmInformation):
(WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):
(WebKit::WebProcessProxy::reportProcessDisassociatedWithPageIfNecessary):
(WebKit::WebProcessProxy::createSpeechRecognitionServer):
(WebKit::WebProcessProxy::muteCaptureInPagesExcept):
(WebKit::WebProcessProxy::disableRemoteWorkers):
(WebKit::WebProcessProxy::enableRemoteWorkers):
(WebKit::WebProcessProxy::protectedWebsiteDataStore const):
(WebKit::WebProcessProxy::getNotifications):
(WebKit::WebProcessProxy::setAppBadge):
(WebKit::WebProcessProxy::setClientBadge):
(WebKit::WebProcessProxy::logger):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::isBlobRegistryPartitioningEnabled const):

Canonical link: https://commits.webkit.org/269895@main
  • Loading branch information
cdumez committed Oct 28, 2023
1 parent ed96df0 commit 6c1701a
Show file tree
Hide file tree
Showing 30 changed files with 269 additions and 281 deletions.
6 changes: 3 additions & 3 deletions Source/WebKit/Shared/WebBackForwardListItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ WebBackForwardListItem::WebBackForwardListItem(BackForwardListItemState&& backFo
, m_pageID(pageID)
, m_lastProcessIdentifier(m_itemState.identifier.processIdentifier())
{
auto result = allItems().add(m_itemState.identifier, this);
auto result = allItems().add(m_itemState.identifier, *this);
ASSERT_UNUSED(result, result.isNewEntry);
}

Expand All @@ -60,10 +60,10 @@ WebBackForwardListItem::~WebBackForwardListItem()
removeFromBackForwardCache();
}

HashMap<BackForwardItemIdentifier, CheckedPtr<WebBackForwardListItem>>& WebBackForwardListItem::allItems()
HashMap<BackForwardItemIdentifier, CheckedRef<WebBackForwardListItem>>& WebBackForwardListItem::allItems()
{
RELEASE_ASSERT(RunLoop::isMain());
static NeverDestroyed<HashMap<BackForwardItemIdentifier, CheckedPtr<WebBackForwardListItem>>> items;
static NeverDestroyed<HashMap<BackForwardItemIdentifier, CheckedRef<WebBackForwardListItem>>> items;
return items;
}

Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/Shared/WebBackForwardListItem.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class WebBackForwardListItem : public API::ObjectImpl<API::Object::Type::BackFor
virtual ~WebBackForwardListItem();

static WebBackForwardListItem* itemForID(const WebCore::BackForwardItemIdentifier&);
static HashMap<WebCore::BackForwardItemIdentifier, CheckedPtr<WebBackForwardListItem>>& allItems();
static HashMap<WebCore::BackForwardItemIdentifier, CheckedRef<WebBackForwardListItem>>& allItems();

const WebCore::BackForwardItemIdentifier& itemID() const { return m_itemState.identifier; }
const BackForwardListItemState& itemState() { return m_itemState; }
Expand Down
4 changes: 2 additions & 2 deletions Source/WebKit/UIProcess/API/C/WKContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ void WKContextSetHistoryClient(WKContextRef contextRef, const WKContextHistoryCl

bool addsVisitedLinks = processPool.historyClient().addsVisitedLinks();

for (auto& process : processPool.processes()) {
for (auto& page : process->pages())
for (Ref process : processPool.processes()) {
for (Ref page : process->pages())
page->setAddsVisitedLinks(addsVisitedLinks);
}
}
Expand Down
6 changes: 3 additions & 3 deletions Source/WebKit/UIProcess/API/C/WKPage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2899,9 +2899,9 @@ WKArrayRef WKPageCopyRelatedPages(WKPageRef pageRef)
{
Vector<RefPtr<API::Object>> relatedPages;

for (auto& page : toImpl(pageRef)->process().pages()) {
if (page.get() != toImpl(pageRef))
relatedPages.append(page);
for (Ref page : toImpl(pageRef)->process().pages()) {
if (page.ptr() != toImpl(pageRef))
relatedPages.append(WTFMove(page));
}

return toAPI(&API::Array::create(WTFMove(relatedPages)).leakRef());
Expand Down
8 changes: 4 additions & 4 deletions Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ - (BOOL)_hasAudibleMediaActivity

- (BOOL)_requestWebProcessTermination:(pid_t)pid
{
for (auto& process : _processPool->processes()) {
for (Ref process : _processPool->processes()) {
if (process->processID() == pid)
process->requestTermination(WebKit::ProcessTerminationReason::RequestedByClient);
return YES;
Expand All @@ -399,7 +399,7 @@ - (BOOL)_requestWebProcessTermination:(pid_t)pid

- (BOOL)_isWebProcessSuspended:(pid_t)pid
{
for (auto& process : _processPool->processes()) {
for (Ref process : _processPool->processes()) {
if (process->processID() == pid)
return process->throttler().isSuspended();
}
Expand All @@ -413,7 +413,7 @@ - (void)_makeNextWebProcessLaunchFailForTesting

- (BOOL)_hasPrewarmedWebProcess
{
for (auto& process : _processPool->processes()) {
for (Ref process : _processPool->processes()) {
if (process->isPrewarmed())
return YES;
}
Expand All @@ -428,7 +428,7 @@ - (size_t)_webProcessCountIgnoringPrewarmed
- (size_t)_webProcessCountIgnoringPrewarmedAndCached
{
size_t count = 0;
for (auto& process : _processPool->processes()) {
for (Ref process : _processPool->processes()) {
if (!process->isInProcessCache() && !process->isPrewarmed())
++count;
}
Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1915,7 +1915,7 @@ void webkit_web_context_send_message_to_all_extensions(WebKitWebContext* context

// We sink the reference in case of being floating.
GRefPtr<WebKitUserMessage> adoptedMessage = message;
for (auto& process : context->priv->processPool->processes())
for (Ref process : context->priv->processPool->processes())
process->send(Messages::WebProcess::SendMessageToWebProcessExtension(webkitUserMessageGetMessage(message)), 0);
}

Expand Down
9 changes: 4 additions & 5 deletions Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -304,12 +304,11 @@ void WebAutomationSession::getNextContext(Ref<WebAutomationSession>&& protectedT
void WebAutomationSession::getBrowsingContexts(Ref<GetBrowsingContextsCallback>&& callback)
{
Vector<Ref<WebPageProxy>> pages;
for (auto& process : protectedProcessPool()->processes()) {
for (auto& page : process->pages()) {
ASSERT(page);
if (!page || !page->isControlledByAutomation())
for (Ref process : protectedProcessPool()->processes()) {
for (Ref page : process->pages()) {
if (!page->isControlledByAutomation())
continue;
pages.append(page.releaseNonNull());
pages.append(WTFMove(page));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(N
RunLoop::main().dispatch([] {
for (auto& pool : WebKit::WebProcessPool::allProcessPools()) {
for (size_t i = 0; i < pool->processes().size(); ++i) {
auto process = pool->processes()[i];
Ref process = pool->processes()[i];
process->enableRemoteInspectorIfNeeded();
}
}
Expand Down
8 changes: 3 additions & 5 deletions Source/WebKit/UIProcess/Cocoa/WebPasteboardProxyCocoa.mm
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,7 @@
RefPtr process = webProcessProxyForConnection(connection);
MESSAGE_CHECK_WITH_RETURN_VALUE(process, std::nullopt);

for (auto& page : process->pages()) {
if (!page)
continue;
for (Ref page : process->pages()) {
Ref preferences = page->preferences();
if (!preferences->domPasteAllowed() || !preferences->javaScriptCanAccessClipboard())
continue;
Expand Down Expand Up @@ -638,8 +636,8 @@
return DataOwnerType::Undefined;

std::optional<DataOwnerType> result;
for (auto& page : process->pages()) {
if (page && page->webPageID() == *pageID) {
for (Ref page : process->pages()) {
if (page->webPageID() == *pageID) {
result = page->dataOwnerForPasteboard(intent);
break;
}
Expand Down
8 changes: 4 additions & 4 deletions Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ static AccessibilityPreferences accessibilityPreferences()

static void logProcessPoolState(const WebProcessPool& pool)
{
for (const auto& process : pool.processes()) {
for (Ref process : pool.processes()) {
WTF::TextStream stream;
stream << process;

Expand Down Expand Up @@ -932,12 +932,12 @@ static bool isLockdownModeEnabledBySystemIgnoringCaching()

WEBPROCESSPOOL_RELEASE_LOG(Loading, "WebProcessPool::lockdownModeStateChanged() isNowEnabled=%d", isNowEnabled);

for (auto& process : m_processes) {
for (Ref process : m_processes) {
bool processHasLockdownModeEnabled = process->lockdownMode() == WebProcessProxy::LockdownMode::Enabled;
if (processHasLockdownModeEnabled == isNowEnabled)
continue;

for (auto& page : process->pages()) {
for (Ref page : process->pages()) {
// When the Lockdown mode changes globally at system level, we reload every page that relied on the system setting (rather
// than being explicitly opted in/out by the client app at navigation or PageConfiguration level).
if (page->isLockdownModeExplicitlySet())
Expand Down Expand Up @@ -1012,7 +1012,7 @@ void setLockdownModeEnabledGloballyForTesting(std::optional<bool> enabledForTest

#if ENABLE(WEBXR) && !USE(OPENXR)
if (!m_processesShouldSuspend) {
for (auto& page : process->pages())
for (Ref&& page : process->pages())
page->restartXRSessionActivityOnProcessResumeIfNeeded();
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ bool shouldTransformObject(id object) const override
return;

mediaTypeCache() = types;
for (auto& process : processPool().processes()) {
for (Ref process : processPool().processes()) {
if (process.ptr() != this)
cacheMediaMIMETypesInternal(types);
}
Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -709,7 +709,7 @@ void GPUProcessProxy::updatePreferences(WebProcessProxy& webProcess)
// For the time being, each of the below features are enabled in the GPU Process if it is enabled by at least one web page's preferences.
// In practice, all web pages' preferences should agree on these feature flag values.
GPUProcessPreferences gpuPreferences;
for (auto page : webProcess.pages()) {
for (Ref page : webProcess.pages()) {
Ref webPreferences = page->preferences();
if (!webPreferences->useGPUProcessForMediaEnabled())
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,10 @@ void HighPerformanceGraphicsUsageSampler::timerFired()

RefPtr<WebPageProxy> firstPage;
Ref pool = m_webProcessPool.get();
for (auto& webProcess : pool->processes()) {
for (auto& page : webProcess->pages()) {
if (!page)
continue;
for (Ref webProcess : pool->processes()) {
for (Ref page : webProcess->pages()) {
if (!firstPage)
firstPage = page;
firstPage = page.copyRef();

if (page->isUsingHighPerformanceWebGL()) {
isUsingHighPerformanceWebGL = true;
Expand Down
12 changes: 6 additions & 6 deletions Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1956,9 +1956,9 @@ void NetworkProcessProxy::deleteWebsiteDataInWebProcessesForOrigin(OptionSet<Web
RefPtr websiteDataStore = websiteDataStoreFromSessionID(sessionID);
if (!websiteDataStore)
return;
for (auto& process : websiteDataStore->processes()) {
if (process.canSendMessage() && !process.isDummyProcessProxy())
process.sendWithAsyncReply(Messages::WebProcess::DeleteWebsiteDataForOrigin(dataTypes, origin), [callbackAggregator] { });
for (Ref process : websiteDataStore->processes()) {
if (process->canSendMessage() && !process->isDummyProcessProxy())
process->sendWithAsyncReply(Messages::WebProcess::DeleteWebsiteDataForOrigin(dataTypes, origin), [callbackAggregator] { });
}
bool shouldClearNavigationSnapshots = dataTypes.contains(WebsiteDataType::MemoryCache) && origin.topOrigin == origin.clientOrigin;
if (shouldClearNavigationSnapshots) {
Expand All @@ -1985,9 +1985,9 @@ void NetworkProcessProxy::reloadExecutionContextsForOrigin(const WebCore::Client
RefPtr websiteDataStore = websiteDataStoreFromSessionID(sessionID);
if (!websiteDataStore)
return;
for (auto& process : websiteDataStore->processes()) {
if (process.canSendMessage() && !process.isDummyProcessProxy())
process.sendWithAsyncReply(Messages::WebProcess::ReloadExecutionContextsForOrigin(origin, triggeringFrame), [callbackAggregator] { });
for (Ref process : websiteDataStore->processes()) {
if (process->canSendMessage() && !process->isDummyProcessProxy())
process->sendWithAsyncReply(Messages::WebProcess::ReloadExecutionContextsForOrigin(origin, triggeringFrame), [callbackAggregator] { });
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
if (LaunchServicesDatabaseXPCConstants::xpcLaunchServicesDatabaseXPCEndpointMessageName == messageName) {
m_networkProcess->m_endpointMessage = event;
for (auto& processPool : WebProcessPool::allProcessPools()) {
for (auto& process : processPool->processes())
for (Ref process : processPool->processes())
m_networkProcess->sendXPCEndpointToProcess(process);
}
#if ENABLE(GPU_PROCESS)
Expand Down
4 changes: 2 additions & 2 deletions Source/WebKit/UIProcess/PerActivityStateCPUUsageSampler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,10 @@ void PerActivityStateCPUUsageSampler::loggingTimerFired()

RefPtr<WebPageProxy> PerActivityStateCPUUsageSampler::pageForLogging() const
{
for (auto& webProcess : m_processPool.processes()) {
for (Ref webProcess : m_processPool.processes()) {
if (!webProcess->pageCount())
continue;
return webProcess->pages()[0]; // FIXME: Iterate to pick the first non-nullptr WebPageProxy?
return webProcess->pages()[0].ptr();
}
return nullptr;
}
Expand Down
3 changes: 2 additions & 1 deletion Source/WebKit/UIProcess/ProvisionalPageProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ class ProvisionalPageProxy : public IPC::MessageReceiver, public IPC::MessageSen

WebPageProxy& page() { return m_page.get(); }
const WebPageProxy& page() const { return m_page.get(); }
Ref<WebPageProxy> protectedPage() const;

WebCore::PageIdentifier webPageID() const { return m_webPageID; }
WebFrameProxy* mainFrame() const { return m_mainFrame.get(); }
WebProcessProxy& process() { return m_process.get(); }
Expand Down Expand Up @@ -124,7 +126,6 @@ class ProvisionalPageProxy : public IPC::MessageReceiver, public IPC::MessageSen
void processDidTerminate();

private:
Ref<WebPageProxy> protectedPage() const;
RefPtr<WebFrameProxy> protectedMainFrame() const;

// IPC::MessageReceiver
Expand Down
5 changes: 5 additions & 0 deletions Source/WebKit/UIProcess/RemotePageProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,4 +205,9 @@ Ref<WebProcessProxy> RemotePageProxy::protectedProcess() const
return m_process;
}

RefPtr<WebPageProxy> RemotePageProxy::protectedPage() const
{
return m_page.get();
}

}
1 change: 1 addition & 0 deletions Source/WebKit/UIProcess/RemotePageProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ class RemotePageProxy : public RefCounted<RemotePageProxy>, public IPC::MessageR
~RemotePageProxy();

WebPageProxy* page() const { return m_page.get(); }
RefPtr<WebPageProxy> protectedPage() const;

template<typename M> void send(M&&);
template<typename M, typename C> void sendWithAsyncReply(M&&, C&&);
Expand Down
3 changes: 2 additions & 1 deletion Source/WebKit/UIProcess/WebBackForwardCache.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@

#include <WebCore/ProcessIdentifier.h>
#include <pal/SessionID.h>
#include <wtf/CheckedRef.h>
#include <wtf/Forward.h>
#include <wtf/Vector.h>

Expand All @@ -39,7 +40,7 @@ class WebPageProxy;
class WebProcessPool;
class WebProcessProxy;

class WebBackForwardCache {
class WebBackForwardCache : public CanMakeCheckedPtr {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit WebBackForwardCache(WebProcessPool&);
Expand Down
15 changes: 10 additions & 5 deletions Source/WebKit/UIProcess/WebPageProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -725,8 +725,8 @@ WebPageProxy::~WebPageProxy()

ASSERT(m_process->webPage(internals().identifier) != this);
#if ASSERT_ENABLED
for (auto& page : m_process->pages())
ASSERT(page.get() != this);
for (Ref page : m_process->pages())
ASSERT(page.ptr() != this);
#endif

setPageLoadStateObserver(nullptr);
Expand Down Expand Up @@ -6758,9 +6758,9 @@ RefPtr<WebPageProxy> WebPageProxy::nonEphemeralWebPageProxy()
if (processPools.isEmpty())
return nullptr;

for (auto& webProcess : processPools[0]->processes()) {
for (auto& page : webProcess->pages()) {
if (!page || page->sessionID().isEphemeral())
for (Ref webProcess : processPools[0]->processes()) {
for (Ref page : webProcess->pages()) {
if (page->sessionID().isEphemeral())
continue;
return page;
}
Expand Down Expand Up @@ -13168,6 +13168,11 @@ void WebPageProxy::dispatchLoadEventToFrameOwnerElement(WebCore::FrameIdentifier
remotePageProxy->send(Messages::WebPage::DispatchLoadEventToFrameOwnerElement(frameID));
}

Ref<VisitedLinkStore> WebPageProxy::protectedVisitedLinkStore()
{
return m_visitedLinkStore;
}

void WebPageProxy::broadcastFocusedFrameToOtherProcesses(IPC::Connection& connection, const WebCore::FrameIdentifier& frameID)
{
RefPtr frame = WebFrameProxy::webFrame(frameID);
Expand Down
1 change: 1 addition & 0 deletions Source/WebKit/UIProcess/WebPageProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,7 @@ class WebPageProxy final : public API::ObjectImpl<API::Object::Type::Page>, publ
bool addsVisitedLinks() const { return m_addsVisitedLinks; }
void setAddsVisitedLinks(bool addsVisitedLinks) { m_addsVisitedLinks = addsVisitedLinks; }
VisitedLinkStore& visitedLinkStore() { return m_visitedLinkStore; }
Ref<VisitedLinkStore> protectedVisitedLinkStore();

void exitFullscreenImmediately();
void fullscreenMayReturnToInline();
Expand Down
4 changes: 1 addition & 3 deletions Source/WebKit/UIProcess/WebPermissionControllerProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,7 @@ RefPtr<WebPageProxy> WebPermissionControllerProxy::mostReasonableWebPageProxy(co
return;

for (auto& process : *processes) {
for (auto& potentialWebPageProxy : getPtr(process)->pages()) {
if (!potentialWebPageProxy)
continue;
for (Ref potentialWebPageProxy : getPtr(process)->pages()) {
if (WebCore::SecurityOriginData::fromURLWithoutStrictOpaqueness(URL { potentialWebPageProxy->currentURL() }) != topOrigin)
continue;
// The most reasonable webPageProxy is the newest one (the one with the greatest identifier).
Expand Down
3 changes: 2 additions & 1 deletion Source/WebKit/UIProcess/WebProcessCache.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include "WebProcessProxy.h"
#include <WebCore/RegistrableDomain.h>
#include <pal/SessionID.h>
#include <wtf/CheckedRef.h>
#include <wtf/HashMap.h>
#include <wtf/RunLoop.h>
#include <wtf/text/WTFString.h>
Expand All @@ -38,7 +39,7 @@ namespace WebKit {
class WebProcessPool;
class WebsiteDataStore;

class WebProcessCache {
class WebProcessCache : public CanMakeCheckedPtr {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit WebProcessCache(WebProcessPool&);
Expand Down
Loading

0 comments on commit 6c1701a

Please sign in to comment.