Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename SubframePageProxy to RemotePageProxy #14831

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion Source/WebKit/Sources.txt
Original file line number Diff line number Diff line change
Expand Up @@ -403,11 +403,11 @@ UIProcess/ProcessAssertion.cpp
UIProcess/ProcessThrottler.cpp
UIProcess/ProvisionalFrameProxy.cpp
UIProcess/ProvisionalPageProxy.cpp
UIProcess/RemotePageProxy.cpp
UIProcess/ResponsivenessTimer.cpp
UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp
UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.cpp
UIProcess/SpeechRecognitionServer.cpp
UIProcess/SubframePageProxy.cpp
UIProcess/SuspendedPageProxy.cpp
UIProcess/SystemPreviewController.cpp
UIProcess/SpeechRecognitionPermissionManager.cpp
Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#include "LocalFrameCreationParameters.h"
#include "MessageSenderInlines.h"
#include "NetworkProcessMessages.h"
#include "SubframePageProxy.h"
#include "RemotePageProxy.h"
#include "VisitedLinkStore.h"
#include "WebFrameProxy.h"
#include "WebPageMessages.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@
#import "Logging.h"
#import "MessageSenderInlines.h"
#import "RemoteLayerTreeDrawingAreaProxyMessages.h"
#import "RemotePageProxy.h"
#import "RemoteScrollingCoordinatorProxy.h"
#import "RemoteScrollingCoordinatorTransaction.h"
#import "SubframePageProxy.h"
#import "WebPageMessages.h"
#import "WebPageProxy.h"
#import "WebProcessProxy.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
*/

#include "config.h"
#include "SubframePageProxy.h"
#include "RemotePageProxy.h"

#include "APIWebsitePolicies.h"
#include "DrawingAreaProxy.h"
Expand All @@ -38,7 +38,7 @@

namespace WebKit {

SubframePageProxy::SubframePageProxy(WebPageProxy& page, WebProcessProxy& process, const WebCore::RegistrableDomain& domain)
RemotePageProxy::RemotePageProxy(WebPageProxy& page, WebProcessProxy& process, const WebCore::RegistrableDomain& domain)
: m_webPageID(page.webPageID())
, m_process(process)
, m_page(page)
Expand All @@ -56,31 +56,31 @@ SubframePageProxy::SubframePageProxy(WebPageProxy& page, WebProcessProxy& proces
parameters.topContentInset = 0;
m_process->send(Messages::WebProcess::CreateWebPage(m_webPageID, parameters), 0);
m_process->addVisitedLinkStoreUser(page.visitedLinkStore(), page.identifier());
page.addSubframePageProxy(domain, *this);
page.addRemotePageProxy(domain, *this);
}

SubframePageProxy::~SubframePageProxy()
RemotePageProxy::~RemotePageProxy()
{
m_process->removeMessageReceiver(Messages::WebPageProxy::messageReceiverName(), m_webPageID);

if (auto* drawingArea = m_page->drawingArea())
drawingArea->stopReceivingMessages(m_process);

if (m_page)
m_page->removeSubpageFrameProxy(m_domain);
m_page->removeRemotePageProxy(m_domain);
}

IPC::Connection* SubframePageProxy::messageSenderConnection() const
IPC::Connection* RemotePageProxy::messageSenderConnection() const
{
return m_process->connection();
}

uint64_t SubframePageProxy::messageSenderDestinationID() const
uint64_t RemotePageProxy::messageSenderDestinationID() const
{
return m_webPageID.toUInt64();
}

void SubframePageProxy::didReceiveMessage(IPC::Connection& connection, IPC::Decoder& decoder)
void RemotePageProxy::didReceiveMessage(IPC::Connection& connection, IPC::Decoder& decoder)
{
#if HAVE(VISIBILITY_PROPAGATION_VIEW)
// FIXME: This needs to be handled correctly in a way that doesn't cause assertions or crashes..
Expand All @@ -93,34 +93,34 @@ void SubframePageProxy::didReceiveMessage(IPC::Connection& connection, IPC::Deco
return;

if (decoder.messageName() == Messages::WebPageProxy::DecidePolicyForResponse::name()) {
IPC::handleMessage<Messages::WebPageProxy::DecidePolicyForResponse>(connection, decoder, this, &SubframePageProxy::decidePolicyForResponse);
IPC::handleMessage<Messages::WebPageProxy::DecidePolicyForResponse>(connection, decoder, this, &RemotePageProxy::decidePolicyForResponse);
return;
}

if (decoder.messageName() == Messages::WebPageProxy::DidCommitLoadForFrame::name()) {
IPC::handleMessage<Messages::WebPageProxy::DidCommitLoadForFrame>(connection, decoder, this, &SubframePageProxy::didCommitLoadForFrame);
IPC::handleMessage<Messages::WebPageProxy::DidCommitLoadForFrame>(connection, decoder, this, &RemotePageProxy::didCommitLoadForFrame);
return;
}

if (m_page)
m_page->didReceiveMessage(connection, decoder);
}

void SubframePageProxy::decidePolicyForResponse(WebCore::FrameIdentifier frameID, FrameInfoData&& frameInfo, WebCore::PolicyCheckIdentifier identifier, uint64_t navigationID, const WebCore::ResourceResponse& response, const WebCore::ResourceRequest& request, bool canShowMIMEType, const String& downloadAttribute, uint64_t listenerID)
void RemotePageProxy::decidePolicyForResponse(WebCore::FrameIdentifier frameID, FrameInfoData&& frameInfo, WebCore::PolicyCheckIdentifier identifier, uint64_t navigationID, const WebCore::ResourceResponse& response, const WebCore::ResourceRequest& request, bool canShowMIMEType, const String& downloadAttribute, uint64_t listenerID)
{
if (m_page)
m_page->decidePolicyForResponseShared(m_process.copyRef(), m_page->webPageID(), frameID, WTFMove(frameInfo), identifier, navigationID, response, request, canShowMIMEType, downloadAttribute, listenerID);
}

void SubframePageProxy::didCommitLoadForFrame(WebCore::FrameIdentifier frameID, FrameInfoData&& frameInfo, WebCore::ResourceRequest&& request, uint64_t navigationID, const String& mimeType, bool frameHasCustomContentProvider, WebCore::FrameLoadType frameLoadType, const WebCore::CertificateInfo& certificateInfo, bool usedLegacyTLS, bool privateRelayed, bool containsPluginDocument, WebCore::HasInsecureContent hasInsecureContent, WebCore::MouseEventPolicy mouseEventPolicy, const UserData& userData)
void RemotePageProxy::didCommitLoadForFrame(WebCore::FrameIdentifier frameID, FrameInfoData&& frameInfo, WebCore::ResourceRequest&& request, uint64_t navigationID, const String& mimeType, bool frameHasCustomContentProvider, WebCore::FrameLoadType frameLoadType, const WebCore::CertificateInfo& certificateInfo, bool usedLegacyTLS, bool privateRelayed, bool containsPluginDocument, WebCore::HasInsecureContent hasInsecureContent, WebCore::MouseEventPolicy mouseEventPolicy, const UserData& userData)
{
m_process->didCommitProvisionalLoad();
RefPtr frame = WebFrameProxy::webFrame(frameID);
if (frame)
frame->commitProvisionalFrame(frameID, WTFMove(frameInfo), WTFMove(request), navigationID, mimeType, frameHasCustomContentProvider, frameLoadType, certificateInfo, usedLegacyTLS, privateRelayed, containsPluginDocument, hasInsecureContent, mouseEventPolicy, userData); // Will delete |this|.
}

bool SubframePageProxy::didReceiveSyncMessage(IPC::Connection& connection, IPC::Decoder& decoder, UniqueRef<IPC::Encoder>& encoder)
bool RemotePageProxy::didReceiveSyncMessage(IPC::Connection& connection, IPC::Decoder& decoder, UniqueRef<IPC::Encoder>& encoder)
{
if (m_page)
return m_page->didReceiveSyncMessage(connection, decoder, encoder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,16 +60,16 @@ class WebProcessProxy;

struct FrameInfoData;

class SubframePageProxy : public RefCounted<SubframePageProxy>, public IPC::MessageReceiver, public IPC::MessageSender {
class RemotePageProxy : public RefCounted<RemotePageProxy>, public IPC::MessageReceiver, public IPC::MessageSender {
WTF_MAKE_FAST_ALLOCATED;
public:
static Ref<SubframePageProxy> create(WebPageProxy& page, WebProcessProxy& process, const WebCore::RegistrableDomain& domain) { return adoptRef(*new SubframePageProxy(page, process, domain)); }
~SubframePageProxy();
static Ref<RemotePageProxy> create(WebPageProxy& page, WebProcessProxy& process, const WebCore::RegistrableDomain& domain) { return adoptRef(*new RemotePageProxy(page, process, domain)); }
~RemotePageProxy();

WebProcessProxy& process() { return m_process.get(); }

private:
SubframePageProxy(WebPageProxy&, WebProcessProxy&, const WebCore::RegistrableDomain&);
RemotePageProxy(WebPageProxy&, WebProcessProxy&, const WebCore::RegistrableDomain&);
IPC::Connection* messageSenderConnection() const final;
uint64_t messageSenderDestinationID() const final;
void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
Expand Down
8 changes: 4 additions & 4 deletions Source/WebKit/UIProcess/WebFrameProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#include "MessageSenderInlines.h"
#include "ProvisionalFrameProxy.h"
#include "ProvisionalPageProxy.h"
#include "SubframePageProxy.h"
#include "RemotePageProxy.h"
#include "WebFramePolicyListenerProxy.h"
#include "WebNavigationState.h"
#include "WebPageMessages.h"
Expand Down Expand Up @@ -395,14 +395,14 @@ void WebFrameProxy::commitProvisionalFrame(FrameIdentifier frameID, FrameInfoDat
m_provisionalFrame = nullptr;

RegistrableDomain oldDomain(url());
m_subframePageProxy = m_page->subpageFrameProxyForRegistrableDomain(RegistrableDomain(request.url()));
m_remotePageProxy = m_page->remotePageProxyForRegistrableDomain(RegistrableDomain(request.url()));
}
m_page->didCommitLoadForFrame(frameID, WTFMove(frameInfo), WTFMove(request), navigationID, mimeType, frameHasCustomContentProvider, frameLoadType, certificateInfo, usedLegacyTLS, privateRelayed, containsPluginDocument, hasInsecureContent, mouseEventPolicy, userData);
}

void WebFrameProxy::setSubframePageProxy(SubframePageProxy& subframePageProxy)
void WebFrameProxy::setRemotePageProxy(RemotePageProxy& remotePageProxy)
{
m_subframePageProxy = &subframePageProxy;
m_remotePageProxy = &remotePageProxy;
}

void WebFrameProxy::getFrameInfo(CompletionHandler<void(FrameTreeNodeData&&)>&& completionHandler)
Expand Down
6 changes: 3 additions & 3 deletions Source/WebKit/UIProcess/WebFrameProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ using DataReference = std::span<const uint8_t>;
namespace WebKit {

class ProvisionalFrameProxy;
class RemotePageProxy;
class SafeBrowsingWarning;
class SubframePageProxy;
class UserData;
class WebFramePolicyListenerProxy;
class WebPageProxy;
Expand Down Expand Up @@ -153,7 +153,7 @@ class WebFrameProxy : public API::ObjectImpl<API::Object::Type::Frame>, public C
void swapToProcess(Ref<WebProcessProxy>&&, const WebCore::ResourceRequest&);

void commitProvisionalFrame(WebCore::FrameIdentifier, FrameInfoData&&, WebCore::ResourceRequest&&, uint64_t navigationID, const String& mimeType, bool frameHasCustomContentProvider, WebCore::FrameLoadType, const WebCore::CertificateInfo&, bool usedLegacyTLS, bool privateRelayed, bool containsPluginDocument, WebCore::HasInsecureContent, WebCore::MouseEventPolicy, const UserData&);
void setSubframePageProxy(SubframePageProxy&);
void setRemotePageProxy(RemotePageProxy&);

void getFrameInfo(CompletionHandler<void(FrameTreeNodeData&&)>&&);
FrameTreeCreationParameters frameTreeCreationParameters() const;
Expand Down Expand Up @@ -182,7 +182,7 @@ class WebFrameProxy : public API::ObjectImpl<API::Object::Type::Frame>, public C
ListHashSet<Ref<WebFrameProxy>> m_childFrames;
WeakPtr<WebFrameProxy> m_parentFrame;
std::unique_ptr<ProvisionalFrameProxy> m_provisionalFrame;
RefPtr<SubframePageProxy> m_subframePageProxy;
RefPtr<RemotePageProxy> m_remotePageProxy;
#if ENABLE(CONTENT_FILTERING)
WebCore::ContentFilterUnblockHandler m_contentFilterUnblockHandler;
#endif
Expand Down
42 changes: 21 additions & 21 deletions Source/WebKit/UIProcess/WebPageProxy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,11 @@
#include "ProcessThrottler.h"
#include "ProvisionalFrameProxy.h"
#include "ProvisionalPageProxy.h"
#include "RemotePageProxy.h"
#include "SafeBrowsingWarning.h"
#include "SpeechRecognitionPermissionManager.h"
#include "SpeechRecognitionRemoteRealtimeMediaSource.h"
#include "SpeechRecognitionRemoteRealtimeMediaSourceManager.h"
#include "SubframePageProxy.h"
#include "SuspendedPageProxy.h"
#include "SyntheticEditingCommandType.h"
#include "TextChecker.h"
Expand Down Expand Up @@ -5068,8 +5068,8 @@ void WebPageProxy::getAllFrameTrees(CompletionHandler<void(Vector<FrameTreeNodeD
m_mainFrame->process().sendWithAsyncReply(Messages::WebPage::GetFrameTree(), [aggregator] (auto&& data) {
aggregator->addFrameTree(WTFMove(data));
}, webPageID());
for (auto& subframePageProxy : internals.domainToSubframePageProxyMap.values()) {
subframePageProxy->process().sendWithAsyncReply(Messages::WebPage::GetFrameTree(), [aggregator] (auto&& data) {
for (auto& remotePageProxy : internals.domainToRemotePageProxyMap.values()) {
remotePageProxy->process().sendWithAsyncReply(Messages::WebPage::GetFrameTree(), [aggregator] (auto&& data) {
aggregator->addFrameTree(WTFMove(data));
}, webPageID());
}
Expand Down Expand Up @@ -5292,10 +5292,10 @@ void WebPageProxy::updateRemoteFrameSize(WebCore::FrameIdentifier frameID, WebCo
ASSERT_NOT_REACHED();
return;
}
auto subframePageProxy = internals().domainToSubframePageProxyMap.get(RegistrableDomain(frame->url()));
if (!subframePageProxy)
auto remotePageProxy = internals().domainToRemotePageProxyMap.get(RegistrableDomain(frame->url()));
if (!remotePageProxy)
return;
subframePageProxy->send(Messages::WebPage::UpdateFrameSize(frameID, size));
remotePageProxy->send(Messages::WebPage::UpdateFrameSize(frameID, size));
}

void WebPageProxy::preconnectTo(ResourceRequest&& request)
Expand Down Expand Up @@ -5801,15 +5801,15 @@ void WebPageProxy::createRemoteSubframesInOtherProcesses(WebFrameProxy& newFrame
auto& internals = this->internals();

// FIXME: We'll also have to use this pattern to update remoteProcessIdentifier so that postMessage continues to work after an iframe changes processes.
for (auto& pair : internals.domainToSubframePageProxyMap) {
auto& subframePageProxy = pair.value;
if (!subframePageProxy) {
for (auto& pair : internals.domainToRemotePageProxyMap) {
auto& remotePageProxy = pair.value;
if (!remotePageProxy) {
ASSERT_NOT_REACHED();
continue;
}
if (&subframePageProxy->process() == &newFrameProcess)
if (&remotePageProxy->process() == &newFrameProcess)
continue;
subframePageProxy->send(Messages::WebPage::CreateRemoteSubframe(parent->frameID(), newFrame.frameID(), newFrameProcess.coreProcessIdentifier()));
remotePageProxy->send(Messages::WebPage::CreateRemoteSubframe(parent->frameID(), newFrame.frameID(), newFrameProcess.coreProcessIdentifier()));
}
if (&newFrameProcess != &mainFrameProcess)
send(Messages::WebPage::CreateRemoteSubframe(parent->frameID(), newFrame.frameID(), newFrameProcess.coreProcessIdentifier()));
Expand Down Expand Up @@ -5845,9 +5845,9 @@ void WebPageProxy::didFinishLoadForFrame(FrameIdentifier frameID, FrameInfoData&

frame->didFinishLoad();

auto subframePageProxy = internals().domainToSubframePageProxyMap.get(RegistrableDomain(frame->url()));
auto remotePageProxy = internals().domainToRemotePageProxyMap.get(RegistrableDomain(frame->url()));

if (subframePageProxy && frame->parentFrame())
if (remotePageProxy && frame->parentFrame())
frame->parentFrame()->process().send(Messages::WebPage::DidFinishLoadInAnotherProcess(frameID), webPageID());

internals().pageLoadState.commitChanges();
Expand Down Expand Up @@ -11092,8 +11092,8 @@ void WebPageProxy::callAfterNextPresentationUpdate(CompletionHandler<void()>&& c
auto aggregator = CallbackAggregator::create(WTFMove(callback));
auto drawingAreaIdentifier = m_drawingArea->identifier();
sendWithAsyncReply(Messages::DrawingArea::DispatchAfterEnsuringDrawing(), [aggregator] { }, drawingAreaIdentifier);
for (auto& subframePageProxy : internals().domainToSubframePageProxyMap.values())
subframePageProxy->sendWithAsyncReply(Messages::DrawingArea::DispatchAfterEnsuringDrawing(), [aggregator] { }, drawingAreaIdentifier);
for (auto& remotePageProxy : internals().domainToRemotePageProxyMap.values())
remotePageProxy->sendWithAsyncReply(Messages::DrawingArea::DispatchAfterEnsuringDrawing(), [aggregator] { }, drawingAreaIdentifier);
#elif USE(COORDINATED_GRAPHICS)
downcast<DrawingAreaProxyCoordinatedGraphics>(*m_drawingArea).dispatchAfterEnsuringDrawing(WTFMove(callback));
#else
Expand Down Expand Up @@ -12572,19 +12572,19 @@ void WebPageProxy::generateTestReport(const String& message, const String& group
send(Messages::WebPage::GenerateTestReport(message, group));
}

void WebPageProxy::addSubframePageProxy(const WebCore::RegistrableDomain& domain, WeakPtr<SubframePageProxy>&& subframePageProxy)
void WebPageProxy::addRemotePageProxy(const WebCore::RegistrableDomain& domain, WeakPtr<RemotePageProxy>&& remotePageProxy)
{
internals().domainToSubframePageProxyMap.add(domain, WTFMove(subframePageProxy));
internals().domainToRemotePageProxyMap.add(domain, WTFMove(remotePageProxy));
}

void WebPageProxy::removeSubpageFrameProxy(const WebCore::RegistrableDomain& domain)
void WebPageProxy::removeRemotePageProxy(const WebCore::RegistrableDomain& domain)
{
internals().domainToSubframePageProxyMap.remove(domain);
internals().domainToRemotePageProxyMap.remove(domain);
}

SubframePageProxy* WebPageProxy::subpageFrameProxyForRegistrableDomain(WebCore::RegistrableDomain domain) const
RemotePageProxy* WebPageProxy::remotePageProxyForRegistrableDomain(WebCore::RegistrableDomain domain) const
{
return internals().domainToSubframePageProxyMap.get(domain).get();
return internals().domainToRemotePageProxyMap.get(domain).get();
}

#if ENABLE(ADVANCED_PRIVACY_PROTECTIONS)
Expand Down
8 changes: 4 additions & 4 deletions Source/WebKit/UIProcess/WebPageProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@ class RemoteLayerTreeNode;
class RemoteLayerTreeScrollingPerformanceData;
class RemoteLayerTreeTransaction;
class RemoteMediaSessionCoordinatorProxy;
class RemotePageProxy;
class RemoteScrollingCoordinatorProxy;
class RevealItem;
class SandboxExtensionHandle;
Expand All @@ -352,7 +353,6 @@ class ShareableResourceHandle;
class SharedMemory;
class SharedMemoryHandle;
class SpeechRecognitionPermissionManager;
class SubframePageProxy;
class SuspendedPageProxy;
class SystemPreviewController;
class TouchBarMenuData;
Expand Down Expand Up @@ -2159,9 +2159,9 @@ class WebPageProxy final : public API::ObjectImpl<API::Object::Type::Page>, publ
WKQuickLookPreviewController *quickLookPreviewController() const { return m_quickLookPreviewController.get(); }
#endif

SubframePageProxy* subpageFrameProxyForRegistrableDomain(WebCore::RegistrableDomain) const;
void addSubframePageProxy(const WebCore::RegistrableDomain&, WeakPtr<SubframePageProxy>&&);
void removeSubpageFrameProxy(const WebCore::RegistrableDomain&);
RemotePageProxy* remotePageProxyForRegistrableDomain(WebCore::RegistrableDomain) const;
void addRemotePageProxy(const WebCore::RegistrableDomain&, WeakPtr<RemotePageProxy>&&);
void removeRemotePageProxy(const WebCore::RegistrableDomain&);

void createRemoteSubframesInOtherProcesses(WebFrameProxy&);

Expand Down
2 changes: 1 addition & 1 deletion Source/WebKit/UIProcess/WebPageProxyInternals.h
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ struct WebPageProxy::Internals final : WebPopupMenuProxy::Client
WindowKind windowKind { WindowKind::Unparented };
PageAllowedToRunInTheBackgroundCounter::Token pageAllowedToRunInTheBackgroundToken;

HashMap<WebCore::RegistrableDomain, WeakPtr<SubframePageProxy>> domainToSubframePageProxyMap;
HashMap<WebCore::RegistrableDomain, WeakPtr<RemotePageProxy>> domainToRemotePageProxyMap;

#if ENABLE(APPLE_PAY)
std::unique_ptr<WebPaymentCoordinatorProxy> paymentCoordinator;
Expand Down