Snap for 5905429 from 3d3b20aefaac1a80e60d1cb9d8fb1be5449eaa59 to androidx-autofill-release

Change-Id: I71ce73e0f6abea597bce508d64fb122549dd2267
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
new file mode 100644
index 0000000..b11a3e8
--- /dev/null
+++ b/AndroidManifest.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.chromium.support_lib_boundary">
+  <!-- This AndroidManifest file only exists to provide package name needed by
+       gradle script to build these interfaces as part of AndroidX. -->
+</manifest>
diff --git a/BUILD.gn b/BUILD.gn
index fd289ba..58f0787 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -9,6 +9,7 @@
   java_files = [
     "src/org/chromium/support_lib_boundary/FeatureFlagHolderBoundaryInterface.java",
     "src/org/chromium/support_lib_boundary/IsomorphicObjectBoundaryInterface.java",
+    "src/org/chromium/support_lib_boundary/JsReplyProxyBoundaryInterface.java",
     "src/org/chromium/support_lib_boundary/ProxyControllerBoundaryInterface.java",
     "src/org/chromium/support_lib_boundary/SafeBrowsingResponseBoundaryInterface.java",
     "src/org/chromium/support_lib_boundary/ServiceWorkerClientBoundaryInterface.java",
@@ -19,6 +20,7 @@
     "src/org/chromium/support_lib_boundary/VisualStateCallbackBoundaryInterface.java",
     "src/org/chromium/support_lib_boundary/WebMessageBoundaryInterface.java",
     "src/org/chromium/support_lib_boundary/WebMessageCallbackBoundaryInterface.java",
+    "src/org/chromium/support_lib_boundary/WebMessageListenerBoundaryInterface.java",
     "src/org/chromium/support_lib_boundary/WebMessagePortBoundaryInterface.java",
     "src/org/chromium/support_lib_boundary/WebResourceErrorBoundaryInterface.java",
     "src/org/chromium/support_lib_boundary/WebResourceRequestBoundaryInterface.java",
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..2b29cae
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,26 @@
+// Copyright 2019 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.
+
+// This file is to build WebView boundary interfaces as part of the AndroidX webkit library.
+// It is not meant to be used or build any targets in chromium project.
+
+import androidx.build.SupportConfig
+
+plugins {
+    id('com.android.library')
+}
+
+android {
+    // COMPILE_SDK_VERSION provided by AndroidX build scripts to build all AndroidX modules.
+    compileSdkVersion SupportConfig.COMPILE_SDK_VERSION
+
+    sourceSets {
+        main.manifest.srcFile 'AndroidManifest.xml'
+        main.java.srcDirs += ['src']
+    }
+
+    buildTypes.all {
+        consumerProguardFiles 'proguard.flags'
+    }
+}
diff --git a/src/org/chromium/support_lib_boundary/JsReplyProxyBoundaryInterface.java b/src/org/chromium/support_lib_boundary/JsReplyProxyBoundaryInterface.java
new file mode 100644
index 0000000..e2da069
--- /dev/null
+++ b/src/org/chromium/support_lib_boundary/JsReplyProxyBoundaryInterface.java
@@ -0,0 +1,12 @@
+// Copyright 2019 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.
+
+package org.chromium.support_lib_boundary;
+
+/**
+ * Boundary interface for org.chromium.android_webview.WebMessageListener.
+ */
+public interface JsReplyProxyBoundaryInterface extends IsomorphicObjectBoundaryInterface {
+    void postMessage(String message);
+}
diff --git a/src/org/chromium/support_lib_boundary/WebMessageListenerBoundaryInterface.java b/src/org/chromium/support_lib_boundary/WebMessageListenerBoundaryInterface.java
new file mode 100644
index 0000000..92a393f
--- /dev/null
+++ b/src/org/chromium/support_lib_boundary/WebMessageListenerBoundaryInterface.java
@@ -0,0 +1,18 @@
+// Copyright 2019 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.
+
+package org.chromium.support_lib_boundary;
+
+import android.net.Uri;
+import android.webkit.WebView;
+
+import java.lang.reflect.InvocationHandler;
+
+/**
+ * Boundary interface for org.chromium.android_webview.WebMessageListener.
+ */
+public interface WebMessageListenerBoundaryInterface extends FeatureFlagHolderBoundaryInterface {
+    void onPostMessage(WebView view, /* WebMessage */ InvocationHandler message, Uri sourceOrigin,
+            boolean isMainFrame, /* JsReplyProxy */ InvocationHandler replyProxy);
+}
diff --git a/src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java b/src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java
index c896d89..bb677ef 100644
--- a/src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java
+++ b/src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java
@@ -17,6 +17,9 @@
             /* VisualStateCallback */ InvocationHandler callback);
     /* WebMessagePort */ InvocationHandler[] createWebMessageChannel();
     void postMessageToMainFrame(/* WebMessage */ InvocationHandler message, Uri targetOrigin);
+    void addWebMessageListener(String jsObjectName, String[] allowedOriginRules,
+            /* WebMessageListener */ InvocationHandler listener);
+    void removeWebMessageListener(String jsObjectName);
     WebViewClient getWebViewClient();
     WebChromeClient getWebChromeClient();
     /* WebViewRenderer */ InvocationHandler getWebViewRenderer();
diff --git a/src/org/chromium/support_lib_boundary/util/Features.java b/src/org/chromium/support_lib_boundary/util/Features.java
index 4ea84c1..40cd85b 100644
--- a/src/org/chromium/support_lib_boundary/util/Features.java
+++ b/src/org/chromium/support_lib_boundary/util/Features.java
@@ -169,4 +169,8 @@
     // WebSettingsCompat.setForceDarkBehavior
     // WebSettingsCompat.getForceDarkBehavior
     public static final String FORCE_DARK_BEHAVIOR = "FORCE_DARK_BEHAVIOR";
+
+    // WebViewCompat.addWebMessageListener
+    // WebViewCompat.removeWebMessageListener
+    public static final String WEB_MESSAGE_LISTENER = "WEB_MESSAGE_LISTENER";
 }