Commit 5085e0db authored by Dave Tapuska's avatar Dave Tapuska Committed by Chromium LUCI CQ

Remove UnfreezableFrameMsg_DeleteProxy.

Move UnfreezableFrameMsg_DeleteProxy to be a method on the
RemoteFrame. This is possible because associated channel messages
are not currently frozen.

BUG=993189

Change-Id: I9b09706686d4dc1b6bf7f499f1f5f90224380c39
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2527517
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarArthur Sonzogni <arthursonzogni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#841565}
parent 108c9835
...@@ -166,7 +166,7 @@ RenderFrameProxyHost::~RenderFrameProxyHost() { ...@@ -166,7 +166,7 @@ RenderFrameProxyHost::~RenderFrameProxyHost() {
// This can be removed once we don't have a swapped out state on // This can be removed once we don't have a swapped out state on
// RenderFrame. See https://crbug.com/357747 // RenderFrame. See https://crbug.com/357747
if (!frame_tree_node_->IsMainFrame()) if (!frame_tree_node_->IsMainFrame())
Send(new UnfreezableFrameMsg_DeleteProxy(routing_id_)); GetAssociatedRemoteFrame()->DetachAndDispose();
} }
// TODO(arthursonzogni): There are no known reason for removing the // TODO(arthursonzogni): There are no known reason for removing the
......
...@@ -23,8 +23,4 @@ ...@@ -23,8 +23,4 @@
// Instructs the renderer to delete the RenderFrame. // Instructs the renderer to delete the RenderFrame.
IPC_MESSAGE_ROUTED1(UnfreezableFrameMsg_Delete, content::FrameDeleteIntention) IPC_MESSAGE_ROUTED1(UnfreezableFrameMsg_Delete, content::FrameDeleteIntention)
// Requests the corresponding RenderFrameProxy to be deleted and removed from
// the frame tree.
IPC_MESSAGE_ROUTED0(UnfreezableFrameMsg_DeleteProxy)
#endif // CONTENT_COMMON_UNFREEZABLE_FRAME_MESSAGES_H_ #endif // CONTENT_COMMON_UNFREEZABLE_FRAME_MESSAGES_H_
...@@ -93,4 +93,6 @@ void FakeRemoteFrame::FakeRemoteFrame::BindFrameHostReceiver( ...@@ -93,4 +93,6 @@ void FakeRemoteFrame::FakeRemoteFrame::BindFrameHostReceiver(
std::move(handle))); std::move(handle)));
} }
void FakeRemoteFrame::DetachAndDispose() {}
} // namespace content } // namespace content
...@@ -87,6 +87,7 @@ class FakeRemoteFrame : public blink::mojom::RemoteFrame { ...@@ -87,6 +87,7 @@ class FakeRemoteFrame : public blink::mojom::RemoteFrame {
void DidUpdateFramePolicy(const blink::FramePolicy& frame_policy) override {} void DidUpdateFramePolicy(const blink::FramePolicy& frame_policy) override {}
void UpdateOpener(const base::Optional<base::UnguessableToken>& void UpdateOpener(const base::Optional<base::UnguessableToken>&
opener_frame_token) override; opener_frame_token) override;
void DetachAndDispose() override;
private: private:
void BindFrameHostReceiver(mojo::ScopedInterfaceEndpointHandle handle); void BindFrameHostReceiver(mojo::ScopedInterfaceEndpointHandle handle);
......
...@@ -409,14 +409,7 @@ std::string RenderFrameProxy::unique_name() const { ...@@ -409,14 +409,7 @@ std::string RenderFrameProxy::unique_name() const {
} }
bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) { bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) {
bool handled = true; return false;
IPC_BEGIN_MESSAGE_MAP(RenderFrameProxy, msg)
IPC_MESSAGE_HANDLER(UnfreezableFrameMsg_DeleteProxy, OnDeleteProxy)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
// Note: If |handled| is true, |this| may have been deleted.
return handled;
} }
void RenderFrameProxy::OnAssociatedInterfaceRequest( void RenderFrameProxy::OnAssociatedInterfaceRequest(
...@@ -437,11 +430,6 @@ bool RenderFrameProxy::Send(IPC::Message* message) { ...@@ -437,11 +430,6 @@ bool RenderFrameProxy::Send(IPC::Message* message) {
return agent_scheduling_group_.Send(message); return agent_scheduling_group_.Send(message);
} }
void RenderFrameProxy::OnDeleteProxy() {
DCHECK(web_frame_);
web_frame_->Detach();
}
void RenderFrameProxy::ChildProcessGone() { void RenderFrameProxy::ChildProcessGone() {
crashed_ = true; crashed_ = true;
compositing_helper_->ChildFrameGone(local_frame_size(), compositing_helper_->ChildFrameGone(local_frame_size(),
......
...@@ -216,12 +216,6 @@ class CONTENT_EXPORT RenderFrameProxy : public IPC::Listener, ...@@ -216,12 +216,6 @@ class CONTENT_EXPORT RenderFrameProxy : public IPC::Listener,
mojom::RenderFrameProxyHost* GetFrameProxyHost(); mojom::RenderFrameProxyHost* GetFrameProxyHost();
// IPC handlers
void OnDeleteProxy();
void OnCompositorFrameSwapped(const IPC::Message& message);
void OnEnforceInsecureRequestPolicy(
blink::mojom::InsecureRequestPolicy policy);
// mojom::RenderFrameProxy implementation: // mojom::RenderFrameProxy implementation:
void EnableAutoResize(const gfx::Size& min_size, void EnableAutoResize(const gfx::Size& min_size,
const gfx::Size& max_size) override; const gfx::Size& max_size) override;
...@@ -246,10 +240,6 @@ class CONTENT_EXPORT RenderFrameProxy : public IPC::Listener, ...@@ -246,10 +240,6 @@ class CONTENT_EXPORT RenderFrameProxy : public IPC::Listener,
// The routing ID by which this RenderFrameProxy is known. // The routing ID by which this RenderFrameProxy is known.
const int routing_id_; const int routing_id_;
// The routing ID of the provisional RenderFrame (if any) that is meant to
// replace this RenderFrameProxy in the frame tree.
int provisional_frame_routing_id_;
// Stores the WebRemoteFrame we are associated with. // Stores the WebRemoteFrame we are associated with.
blink::WebRemoteFrame* web_frame_ = nullptr; blink::WebRemoteFrame* web_frame_ = nullptr;
......
...@@ -915,6 +915,11 @@ interface RemoteFrame { ...@@ -915,6 +915,11 @@ interface RemoteFrame {
// Requests that the blink::RemoteFrame updates its opener to the specified // Requests that the blink::RemoteFrame updates its opener to the specified
// frame. The frame token may be "empty" if the opener was disowned. // frame. The frame token may be "empty" if the opener was disowned.
UpdateOpener(mojo_base.mojom.UnguessableToken? opener_frame_token); UpdateOpener(mojo_base.mojom.UnguessableToken? opener_frame_token);
// Requests the corresponding RemoteFrame to be deleted and removed from
// the frame tree. This should not be called on the main frame as that frame
// is owned by the associated WebView.
DetachAndDispose();
}; };
// Implemented in Blink, this interface defines main-frame-specific methods that // Implemented in Blink, this interface defines main-frame-specific methods that
......
...@@ -143,6 +143,11 @@ RemoteFrame::~RemoteFrame() { ...@@ -143,6 +143,11 @@ RemoteFrame::~RemoteFrame() {
DCHECK(!view_); DCHECK(!view_);
} }
void RemoteFrame::DetachAndDispose() {
DCHECK(!IsMainFrame());
Detach(FrameDetachType::kRemove);
}
void RemoteFrame::Trace(Visitor* visitor) const { void RemoteFrame::Trace(Visitor* visitor) const {
visitor->Trace(view_); visitor->Trace(view_);
visitor->Trace(security_context_); visitor->Trace(security_context_);
......
...@@ -167,6 +167,7 @@ class CORE_EXPORT RemoteFrame final : public Frame, ...@@ -167,6 +167,7 @@ class CORE_EXPORT RemoteFrame final : public Frame,
void DidUpdateFramePolicy(const FramePolicy& frame_policy) override; void DidUpdateFramePolicy(const FramePolicy& frame_policy) override;
void UpdateOpener(const base::Optional<base::UnguessableToken>& void UpdateOpener(const base::Optional<base::UnguessableToken>&
opener_frame_token) override; opener_frame_token) override;
void DetachAndDispose() override;
// Called only when this frame has a local frame owner. // Called only when this frame has a local frame owner.
IntSize GetMainFrameViewportSize() const override; IntSize GetMainFrameViewportSize() const override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment