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