blob: 5170094df4ba8aa9dbe814f52951393408ff1d4f [file] [log] [blame]
Julie Jeongeun Kim7d0986172019-12-04 03:17:251// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/public/browser/web_contents_receiver_set.h"
6
7#include <utility>
8
9#include "base/logging.h"
10#include "content/browser/web_contents/web_contents_impl.h"
11
12namespace content {
13
14void WebContentsReceiverSet::Binder::OnReceiverForFrame(
15 RenderFrameHost* render_frame_host,
16 mojo::ScopedInterfaceEndpointHandle handle) {
17 NOTREACHED();
18}
19
20void WebContentsReceiverSet::Binder::CloseAllReceivers() {
21 NOTREACHED();
22}
23
24WebContentsReceiverSet::WebContentsReceiverSet(
25 WebContents* web_contents,
26 const std::string& interface_name)
27 : remove_callback_(static_cast<WebContentsImpl*>(web_contents)
28 ->AddReceiverSet(interface_name, this)) {}
29
30WebContentsReceiverSet::~WebContentsReceiverSet() {
31 std::move(remove_callback_).Run();
32}
33
34// static
35WebContentsReceiverSet* WebContentsReceiverSet::GetForWebContents(
36 WebContents* web_contents,
37 const char* interface_name) {
38 return static_cast<WebContentsImpl*>(web_contents)
39 ->GetReceiverSet(interface_name);
40}
41
42void WebContentsReceiverSet::CloseAllReceivers() {
43 binder_->CloseAllReceivers();
44 binder_ = nullptr;
45}
46
47void WebContentsReceiverSet::OnReceiverForFrame(
48 RenderFrameHost* render_frame_host,
49 mojo::ScopedInterfaceEndpointHandle handle) {
50 if (binder_)
51 binder_->OnReceiverForFrame(render_frame_host, std::move(handle));
52}
53
54} // namespace content