1 // Copyright 2019 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 package org.chromium.android_webview;
6 
7 import android.net.Uri;
8 
9 import androidx.annotation.NonNull;
10 
11 import org.chromium.base.annotations.CalledByNative;
12 import org.chromium.base.annotations.JNINamespace;
13 import org.chromium.content_public.browser.MessagePort;
14 
15 /**
16  * Holds the {@link WebMessageListener} instance so that C++ could interact with the {@link
17  * WebMessageListener}.
18  */
19 @JNINamespace("android_webview")
20 public class WebMessageListenerHolder {
21     private WebMessageListener mListener;
22 
WebMessageListenerHolder(@onNull WebMessageListener listener)23     public WebMessageListenerHolder(@NonNull WebMessageListener listener) {
24         mListener = listener;
25     }
26 
27     @CalledByNative
onPostMessage(String message, String sourceOrigin, boolean isMainFrame, MessagePort[] ports, JsReplyProxy replyProxy)28     public void onPostMessage(String message, String sourceOrigin, boolean isMainFrame,
29             MessagePort[] ports, JsReplyProxy replyProxy) {
30         mListener.onPostMessage(message, Uri.parse(sourceOrigin), isMainFrame, replyProxy, ports);
31     }
32 
getListener()33     public WebMessageListener getListener() {
34         return mListener;
35     }
36 }
37