blob: 93e5d55d71eacdfd2d36e24c867a1e4ef366a46a [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef WEBLAYER_BROWSER_JS_COMMUNICATION_WEB_MESSAGE_HOST_FACTORY_PROXY_H_
#define WEBLAYER_BROWSER_JS_COMMUNICATION_WEB_MESSAGE_HOST_FACTORY_PROXY_H_
#include "base/android/scoped_java_ref.h"
#include "weblayer/public/js_communication/web_message_host_factory.h"
namespace weblayer {
// TabImpl, on android, creates a WebMessageHostFactoryProxy for every call
// to RegisterWebMessageCallback(). This is used to delegate the calls back to
// the Java side.
class WebMessageHostFactoryProxy : public WebMessageHostFactory {
public:
explicit WebMessageHostFactoryProxy(
const base::android::JavaParamRef<jobject>& client);
WebMessageHostFactoryProxy(const WebMessageHostFactoryProxy&) = delete;
WebMessageHostFactoryProxy& operator=(const WebMessageHostFactoryProxy&) =
delete;
~WebMessageHostFactoryProxy() override;
// WebMessageHostFactory:
std::unique_ptr<WebMessageHost> CreateHost(
const std::string& origin_string,
bool is_main_frame,
WebMessageReplyProxy* proxy) override;
private:
base::android::ScopedJavaGlobalRef<jobject> client_;
int next_id_ = 0;
};
} // namespace weblayer
#endif // WEBLAYER_BROWSER_JS_COMMUNICATION_WEB_MESSAGE_HOST_FACTORY_PROXY_H_