| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "fuchsia_web/webengine/renderer/web_engine_render_frame_observer.h" |
| |
| #include "base/functional/bind.h" |
| #include "base/notreached.h" |
| #include "content/public/renderer/render_frame.h" |
| #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h" |
| #include "third_party/blink/public/web/web_local_frame.h" |
| |
| WebEngineRenderFrameObserver::WebEngineRenderFrameObserver( |
| content::RenderFrame* render_frame, |
| base::OnceCallback<void(const blink::LocalFrameToken&)> |
| on_render_frame_deleted_callback) |
| : content::RenderFrameObserver(render_frame), |
| url_request_rules_receiver_(render_frame), |
| on_render_frame_deleted_callback_( |
| std::move(on_render_frame_deleted_callback)) { |
| DCHECK(render_frame); |
| DCHECK(on_render_frame_deleted_callback_); |
| } |
| |
| WebEngineRenderFrameObserver::~WebEngineRenderFrameObserver() = default; |
| |
| void WebEngineRenderFrameObserver::OnDestruct() { |
| // We should never hit this since we will have destroyed this observer |
| // in WillDetach. |
| NOTREACHED_IN_MIGRATION(); |
| } |
| |
| void WebEngineRenderFrameObserver::WillDetach( |
| blink::DetachReason detach_reason) { |
| std::move(on_render_frame_deleted_callback_) |
| .Run(render_frame()->GetWebFrame()->GetLocalFrameToken()); |
| } |