Commit 61cc0481 authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: Remove DEPS exception rule for AppWebMessagePort

AppWebMessagePort is the only implementation of the interface MessagePort.
Replaced the direct reference to the class with the interface and added
a public helper method |MessagePort.createPair()|. That makes
AppWebMessagePort an implementation detail, and exposes only the public
interface to embedders. Updated DEPS rules to remove the exception.

Bug: 617324
Change-Id: I3f35c2db2436bc3c82a00c07cfede1062d447d29
Reviewed-on: https://chromium-review.googlesource.com/1031690
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#554689}
parent 3b5f26b6
...@@ -5,6 +5,5 @@ include_rules = [ ...@@ -5,6 +5,5 @@ include_rules = [
"-content/public/android/java", "-content/public/android/java",
"+content/public/android/java/src/org/chromium/content_public", "+content/public/android/java/src/org/chromium/content_public",
"!content/public/android/java/src/org/chromium/content/browser/AppWebMessagePort.java",
"!content/public/android/java/src/org/chromium/content/browser/selection/LGEmailActionModeWorkaround.java", "!content/public/android/java/src/org/chromium/content/browser/selection/LGEmailActionModeWorkaround.java",
] ]
...@@ -10,7 +10,6 @@ import android.os.Handler; ...@@ -10,7 +10,6 @@ import android.os.Handler;
import android.webkit.WebMessage; import android.webkit.WebMessage;
import android.webkit.WebMessagePort; import android.webkit.WebMessagePort;
import org.chromium.content.browser.AppWebMessagePort;
import org.chromium.content_public.browser.MessagePort; import org.chromium.content_public.browser.MessagePort;
/** /**
...@@ -66,7 +65,7 @@ public class WebMessagePortAdapter extends WebMessagePort { ...@@ -66,7 +65,7 @@ public class WebMessagePortAdapter extends WebMessagePort {
public static MessagePort[] toMessagePorts(WebMessagePort[] webMessagePorts) { public static MessagePort[] toMessagePorts(WebMessagePort[] webMessagePorts) {
if (webMessagePorts == null) return null; if (webMessagePorts == null) return null;
MessagePort[] ports = new AppWebMessagePort[webMessagePorts.length]; MessagePort[] ports = new MessagePort[webMessagePorts.length];
for (int i = 0; i < webMessagePorts.length; i++) { for (int i = 0; i < webMessagePorts.length; i++) {
ports[i] = ((WebMessagePortAdapter) webMessagePorts[i]).getPort(); ports[i] = ((WebMessagePortAdapter) webMessagePorts[i]).getPort();
} }
......
...@@ -10,7 +10,6 @@ include_rules = [ ...@@ -10,7 +10,6 @@ include_rules = [
"-content/public/android/java", "-content/public/android/java",
"+content/public/android/java/src/org/chromium/content_public", "+content/public/android/java/src/org/chromium/content_public",
"!content/public/android/java/src/org/chromium/content/browser/AppWebMessagePort.java",
"!content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java", "!content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java",
"!content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java", "!content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java",
"!content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncherHelper.java", "!content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncherHelper.java",
......
...@@ -63,7 +63,6 @@ import org.chromium.blink_public.web.WebReferrerPolicy; ...@@ -63,7 +63,6 @@ import org.chromium.blink_public.web.WebReferrerPolicy;
import org.chromium.components.autofill.AutofillProvider; import org.chromium.components.autofill.AutofillProvider;
import org.chromium.components.navigation_interception.InterceptNavigationDelegate; import org.chromium.components.navigation_interception.InterceptNavigationDelegate;
import org.chromium.components.navigation_interception.NavigationParams; import org.chromium.components.navigation_interception.NavigationParams;
import org.chromium.content.browser.AppWebMessagePort;
import org.chromium.content.browser.ContentViewStatics; import org.chromium.content.browser.ContentViewStatics;
import org.chromium.content_public.browser.ChildProcessImportance; import org.chromium.content_public.browser.ChildProcessImportance;
import org.chromium.content_public.browser.ContentViewCore; import org.chromium.content_public.browser.ContentViewCore;
...@@ -2413,10 +2412,10 @@ public class AwContents implements SmartClipProvider { ...@@ -2413,10 +2412,10 @@ public class AwContents implements SmartClipProvider {
/** /**
* Creates a message channel and returns the ports for each end of the channel. * Creates a message channel and returns the ports for each end of the channel.
*/ */
public AppWebMessagePort[] createMessageChannel() { public MessagePort[] createMessageChannel() {
if (TRACE) Log.i(TAG, "%s createMessageChannel", this); if (TRACE) Log.i(TAG, "%s createMessageChannel", this);
if (isDestroyedOrNoOperation(WARN)) return null; if (isDestroyedOrNoOperation(WARN)) return null;
return AppWebMessagePort.createPair(); return MessagePort.createPair();
} }
public boolean hasAccessedInitialDocument() { public boolean hasAccessedInitialDocument() {
......
...@@ -9,7 +9,6 @@ include_rules = [ ...@@ -9,7 +9,6 @@ include_rules = [
"-content/public/android/java", "-content/public/android/java",
"+content/public/android/java/src/org/chromium/content_public", "+content/public/android/java/src/org/chromium/content_public",
"!content/public/android/java/src/org/chromium/content/browser/AppWebMessagePort.java",
"!content/public/android/java/src/org/chromium/content/browser/ContentVideoView.java", "!content/public/android/java/src/org/chromium/content/browser/ContentVideoView.java",
"!content/public/android/java/src/org/chromium/content/browser/ContentViewStatics.java", "!content/public/android/java/src/org/chromium/content/browser/ContentViewStatics.java",
"!content/public/android/java/src/org/chromium/content/common/ContentSwitches.java", "!content/public/android/java/src/org/chromium/content/common/ContentSwitches.java",
......
...@@ -26,10 +26,10 @@ import org.chromium.base.ThreadUtils; ...@@ -26,10 +26,10 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.DisabledTest;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.RetryOnFailure; import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.content.browser.AppWebMessagePort;
import org.chromium.content.browser.test.util.Criteria; import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper; import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper; import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageFinishedHelper;
import org.chromium.content_public.browser.MessagePort;
import org.chromium.net.test.util.TestWebServer; import org.chromium.net.test.util.TestWebServer;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
...@@ -210,13 +210,13 @@ public class PostMessageTest { ...@@ -210,13 +210,13 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame( mAwContents.postMessageToFrame(
null, "1", mWebServer.getBaseUrl(), new AppWebMessagePort[]{channel[1]}); null, "1", mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
// Retransfer the port. This should fail with an exception. // Retransfer the port. This should fail with an exception.
try { try {
mAwContents.postMessageToFrame(null, "2", mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, "2", mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -238,11 +238,11 @@ public class PostMessageTest { ...@@ -238,11 +238,11 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channel[1].postMessage("1", null); channel[1].postMessage("1", null);
try { try {
mAwContents.postMessageToFrame(null, "2", mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, "2", mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -260,13 +260,13 @@ public class PostMessageTest { ...@@ -260,13 +260,13 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
// set a web event handler, this puts the port in a started state. // set a web event handler, this puts the port in a started state.
channel[1].setMessageCallback((message, sentPorts) -> { channel[1].setMessageCallback((message, sentPorts) -> {
}, null); }, null);
try { try {
mAwContents.postMessageToFrame(null, "2", mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, "2", mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -285,11 +285,11 @@ public class PostMessageTest { ...@@ -285,11 +285,11 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel1 = mAwContents.createMessageChannel(); MessagePort[] channel1 = mAwContents.createMessageChannel();
channel1[1].postMessage("1", null); channel1[1].postMessage("1", null);
AppWebMessagePort[] channel2 = mAwContents.createMessageChannel(); MessagePort[] channel2 = mAwContents.createMessageChannel();
try { try {
channel2[0].postMessage("2", new AppWebMessagePort[]{channel1[1]}); channel2[0].postMessage("2", new MessagePort[] {channel1[1]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -307,13 +307,13 @@ public class PostMessageTest { ...@@ -307,13 +307,13 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel1 = mAwContents.createMessageChannel(); MessagePort[] channel1 = mAwContents.createMessageChannel();
// set a web event handler, this puts the port in a started state. // set a web event handler, this puts the port in a started state.
channel1[1].setMessageCallback((message, sentPorts) -> { channel1[1].setMessageCallback((message, sentPorts) -> {
}, null); }, null);
AppWebMessagePort[] channel2 = mAwContents.createMessageChannel(); MessagePort[] channel2 = mAwContents.createMessageChannel();
try { try {
channel2[0].postMessage("1", new AppWebMessagePort[]{channel1[1]}); channel2[0].postMessage("1", new MessagePort[] {channel1[1]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -338,9 +338,9 @@ public class PostMessageTest { ...@@ -338,9 +338,9 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
try { try {
channel[0].postMessage("1", new AppWebMessagePort[]{channel[0]}); channel[0].postMessage("1", new MessagePort[] {channel[0]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -358,11 +358,11 @@ public class PostMessageTest { ...@@ -358,11 +358,11 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channel[1].close(); channel[1].close();
try { try {
mAwContents.postMessageToFrame(null, "1", mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, "1", mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -380,11 +380,11 @@ public class PostMessageTest { ...@@ -380,11 +380,11 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel1 = mAwContents.createMessageChannel(); MessagePort[] channel1 = mAwContents.createMessageChannel();
AppWebMessagePort[] channel2 = mAwContents.createMessageChannel(); MessagePort[] channel2 = mAwContents.createMessageChannel();
channel2[1].close(); channel2[1].close();
try { try {
channel1[0].postMessage("1", new AppWebMessagePort[]{channel2[1]}); channel1[0].postMessage("1", new MessagePort[] {channel2[1]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -402,7 +402,7 @@ public class PostMessageTest { ...@@ -402,7 +402,7 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channel[0].close(); channel[0].close();
try { try {
channel[0].postMessage("1", null); channel[0].postMessage("1", null);
...@@ -422,9 +422,9 @@ public class PostMessageTest { ...@@ -422,9 +422,9 @@ public class PostMessageTest {
public void testMessagesPostedBeforeClosingPortAreTransferred() throws Throwable { public void testMessagesPostedBeforeClosingPortAreTransferred() throws Throwable {
loadPage(TITLE_FROM_POSTMESSAGE_TO_CHANNEL); loadPage(TITLE_FROM_POSTMESSAGE_TO_CHANNEL);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame( mAwContents.postMessageToFrame(
null, "1", mWebServer.getBaseUrl(), new AppWebMessagePort[]{channel[1]}); null, "1", mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
channel[0].postMessage("2", null); channel[0].postMessage("2", null);
channel[0].postMessage("3", null); channel[0].postMessage("3", null);
channel[0].close(); channel[0].close();
...@@ -440,9 +440,9 @@ public class PostMessageTest { ...@@ -440,9 +440,9 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame( mAwContents.postMessageToFrame(
null, "1", mWebServer.getBaseUrl(), new AppWebMessagePort[]{channel[1]}); null, "1", mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
try { try {
channel[1].close(); channel[1].close();
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
...@@ -462,11 +462,11 @@ public class PostMessageTest { ...@@ -462,11 +462,11 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final CountDownLatch latch = new CountDownLatch(1); final CountDownLatch latch = new CountDownLatch(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel1 = mAwContents.createMessageChannel(); MessagePort[] channel1 = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame( mAwContents.postMessageToFrame(
null, "1", mWebServer.getBaseUrl(), new AppWebMessagePort[]{channel1[1]}); null, "1", mWebServer.getBaseUrl(), new MessagePort[] {channel1[1]});
AppWebMessagePort[] channel2 = mAwContents.createMessageChannel(); MessagePort[] channel2 = mAwContents.createMessageChannel();
channel1[0].postMessage("2", new AppWebMessagePort[]{channel2[0]}); channel1[0].postMessage("2", new MessagePort[] {channel2[0]});
try { try {
channel2[0].close(); channel2[0].close();
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
...@@ -486,18 +486,18 @@ public class PostMessageTest { ...@@ -486,18 +486,18 @@ public class PostMessageTest {
public void testPendingPortCanBeTransferredInPendingPort() throws Throwable { public void testPendingPortCanBeTransferredInPendingPort() throws Throwable {
loadPage(TITLE_FROM_POSTMESSAGE_TO_CHANNEL); loadPage(TITLE_FROM_POSTMESSAGE_TO_CHANNEL);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel1 = mAwContents.createMessageChannel(); MessagePort[] channel1 = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame( mAwContents.postMessageToFrame(
null, "1", mWebServer.getBaseUrl(), new AppWebMessagePort[]{channel1[1]}); null, "1", mWebServer.getBaseUrl(), new MessagePort[] {channel1[1]});
AppWebMessagePort[] channel2 = mAwContents.createMessageChannel(); MessagePort[] channel2 = mAwContents.createMessageChannel();
channel1[0].postMessage("2", new AppWebMessagePort[]{channel2[0]}); channel1[0].postMessage("2", new MessagePort[] {channel2[0]});
}); });
expectTitle("2"); expectTitle("2");
} }
private static class ChannelContainer { private static class ChannelContainer {
private boolean mReady; private boolean mReady;
private AppWebMessagePort[] mChannel; private MessagePort[] mChannel;
private final Object mLock = new Object(); private final Object mLock = new Object();
private String mMessage = ""; private String mMessage = "";
private Looper mLastLooper; private Looper mLastLooper;
...@@ -512,10 +512,10 @@ public class PostMessageTest { ...@@ -512,10 +512,10 @@ public class PostMessageTest {
mWaitCount = n; mWaitCount = n;
} }
public void set(AppWebMessagePort[] channel) { public void set(MessagePort[] channel) {
mChannel = channel; mChannel = channel;
} }
public AppWebMessagePort[] get() { public MessagePort[] get() {
return mChannel; return mChannel;
} }
...@@ -566,13 +566,13 @@ public class PostMessageTest { ...@@ -566,13 +566,13 @@ public class PostMessageTest {
loadPage(TEST_PAGE); loadPage(TEST_PAGE);
final ChannelContainer channelContainer = new ChannelContainer(); final ChannelContainer channelContainer = new ChannelContainer();
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
// verify communication from JS to Java. // verify communication from JS to Java.
channelContainer.set(channel); channelContainer.set(channel);
channel[0].setMessageCallback( channel[0].setMessageCallback(
(message, sentPorts) -> channelContainer.setMessage(message), null); (message, sentPorts) -> channelContainer.setMessage(message), null);
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
}); });
mMessageObject.waitForMessage(); mMessageObject.waitForMessage();
Assert.assertEquals(WEBVIEW_MESSAGE, mMessageObject.getData()); Assert.assertEquals(WEBVIEW_MESSAGE, mMessageObject.getData());
...@@ -613,14 +613,14 @@ public class PostMessageTest { ...@@ -613,14 +613,14 @@ public class PostMessageTest {
public void testMessageChannelUsingInitializedPort() throws Throwable { public void testMessageChannelUsingInitializedPort() throws Throwable {
final ChannelContainer channelContainer = new ChannelContainer(); final ChannelContainer channelContainer = new ChannelContainer();
loadPage(ECHO_PAGE); loadPage(ECHO_PAGE);
final AppWebMessagePort[] channel = final MessagePort[] channel =
ThreadUtils.runOnUiThreadBlocking(() -> mAwContents.createMessageChannel()); ThreadUtils.runOnUiThreadBlocking(() -> mAwContents.createMessageChannel());
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
channel[0].setMessageCallback( channel[0].setMessageCallback(
(message, sentPorts) -> channelContainer.setMessage(message), null); (message, sentPorts) -> channelContainer.setMessage(message), null);
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
channel[0].postMessage(HELLO, null); channel[0].postMessage(HELLO, null);
}); });
// wait for the asynchronous response from JS // wait for the asynchronous response from JS
...@@ -640,11 +640,11 @@ public class PostMessageTest { ...@@ -640,11 +640,11 @@ public class PostMessageTest {
final ChannelContainer channelContainer = new ChannelContainer(); final ChannelContainer channelContainer = new ChannelContainer();
loadPage(ECHO_PAGE); loadPage(ECHO_PAGE);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channel[0].setMessageCallback( channel[0].setMessageCallback(
(message, sentPorts) -> channelContainer.setMessage(message), null); (message, sentPorts) -> channelContainer.setMessage(message), null);
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
channel[0].postMessage(HELLO, null); channel[0].postMessage(HELLO, null);
}); });
// Wait for the asynchronous response from JS. // Wait for the asynchronous response from JS.
...@@ -661,7 +661,7 @@ public class PostMessageTest { ...@@ -661,7 +661,7 @@ public class PostMessageTest {
final ChannelContainer channelContainer = new ChannelContainer(); final ChannelContainer channelContainer = new ChannelContainer();
loadPage(ECHO_PAGE); loadPage(ECHO_PAGE);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channel[1].setMessageCallback( channel[1].setMessageCallback(
(message, sentPorts) -> channelContainer.setMessage(message), null); (message, sentPorts) -> channelContainer.setMessage(message), null);
channel[0].postMessage(HELLO, null); channel[0].postMessage(HELLO, null);
...@@ -679,9 +679,9 @@ public class PostMessageTest { ...@@ -679,9 +679,9 @@ public class PostMessageTest {
public void testPostMessageToFrameNotReordersMessages() throws Throwable { public void testPostMessageToFrameNotReordersMessages() throws Throwable {
loadPage(TITLE_FROM_POSTMESSAGE_TO_FRAME); loadPage(TITLE_FROM_POSTMESSAGE_TO_FRAME);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame( mAwContents.postMessageToFrame(
null, "1", mWebServer.getBaseUrl(), new AppWebMessagePort[]{channel[1]}); null, "1", mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
mAwContents.postMessageToFrame(null, "2", mWebServer.getBaseUrl(), null); mAwContents.postMessageToFrame(null, "2", mWebServer.getBaseUrl(), null);
mAwContents.postMessageToFrame(null, "3", mWebServer.getBaseUrl(), null); mAwContents.postMessageToFrame(null, "3", mWebServer.getBaseUrl(), null);
}); });
...@@ -718,9 +718,9 @@ public class PostMessageTest { ...@@ -718,9 +718,9 @@ public class PostMessageTest {
public void testCanUseReceivedAwMessagePortFromJS() throws Throwable { public void testCanUseReceivedAwMessagePortFromJS() throws Throwable {
loadPage(RECEIVE_JS_MESSAGE_CHANNEL_PAGE); loadPage(RECEIVE_JS_MESSAGE_CHANNEL_PAGE);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame( mAwContents.postMessageToFrame(
null, "1", mWebServer.getBaseUrl(), new AppWebMessagePort[]{channel[1]}); null, "1", mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
channel[0].setMessageCallback((message, p) -> { channel[0].setMessageCallback((message, p) -> {
p[0].setMessageCallback((message1, q) -> { p[0].setMessageCallback((message1, q) -> {
Assert.assertEquals("3", message1); Assert.assertEquals("3", message1);
...@@ -775,9 +775,9 @@ public class PostMessageTest { ...@@ -775,9 +775,9 @@ public class PostMessageTest {
CommonResources.getTextJavascriptHeaders(true)); CommonResources.getTextJavascriptHeaders(true));
loadPage(TEST_PAGE_FOR_PORT_TRANSFER); loadPage(TEST_PAGE_FOR_PORT_TRANSFER);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(),
new AppWebMessagePort[]{channel[0], channel[1]}); new MessagePort[] {channel[0], channel[1]});
}); });
mMessageObject.waitForMessage(); mMessageObject.waitForMessage();
Assert.assertEquals(WORKER_MESSAGE, mMessageObject.getData()); Assert.assertEquals(WORKER_MESSAGE, mMessageObject.getData());
...@@ -821,12 +821,12 @@ public class PostMessageTest { ...@@ -821,12 +821,12 @@ public class PostMessageTest {
final ChannelContainer channelContainer = new ChannelContainer(); final ChannelContainer channelContainer = new ChannelContainer();
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channelContainer.set(channel); channelContainer.set(channel);
channel[0].setMessageCallback( channel[0].setMessageCallback(
(message, sentPorts) -> channelContainer.setMessage(message), null); (message, sentPorts) -> channelContainer.setMessage(message), null);
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
channel[0].postMessage(HELLO, null); channel[0].postMessage(HELLO, null);
}); });
channelContainer.waitForMessage(); channelContainer.waitForMessage();
...@@ -845,12 +845,12 @@ public class PostMessageTest { ...@@ -845,12 +845,12 @@ public class PostMessageTest {
final ChannelContainer channelContainer = new ChannelContainer(); final ChannelContainer channelContainer = new ChannelContainer();
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channelContainer.set(channel); channelContainer.set(channel);
channel[0].setMessageCallback( channel[0].setMessageCallback(
(message, sentPorts) -> channelContainer.setMessage(message), null); (message, sentPorts) -> channelContainer.setMessage(message), null);
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
channel[0].postMessage(HELLO, null); channel[0].postMessage(HELLO, null);
}); });
channelContainer.waitForMessage(); channelContainer.waitForMessage();
...@@ -880,12 +880,12 @@ public class PostMessageTest { ...@@ -880,12 +880,12 @@ public class PostMessageTest {
loadPage(TEST_PAGE_FOR_UNSUPPORTED_MESSAGES); loadPage(TEST_PAGE_FOR_UNSUPPORTED_MESSAGES);
final ChannelContainer channelContainer = new ChannelContainer(); final ChannelContainer channelContainer = new ChannelContainer();
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channelContainer.set(channel); channelContainer.set(channel);
channel[0].setMessageCallback( channel[0].setMessageCallback(
(message, sentPorts) -> channelContainer.setMessage(message), null); (message, sentPorts) -> channelContainer.setMessage(message), null);
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
}); });
channelContainer.waitForMessage(); channelContainer.waitForMessage();
Assert.assertEquals(JS_MESSAGE, channelContainer.getMessage()); Assert.assertEquals(JS_MESSAGE, channelContainer.getMessage());
...@@ -910,12 +910,12 @@ public class PostMessageTest { ...@@ -910,12 +910,12 @@ public class PostMessageTest {
loadPage(TEST_TRANSFER_EMPTY_PORTS); loadPage(TEST_TRANSFER_EMPTY_PORTS);
final ChannelContainer channelContainer = new ChannelContainer(2); final ChannelContainer channelContainer = new ChannelContainer(2);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channelContainer.set(channel); channelContainer.set(channel);
channel[0].setMessageCallback( channel[0].setMessageCallback(
(message, sentPorts) -> channelContainer.setMessage(message), null); (message, sentPorts) -> channelContainer.setMessage(message), null);
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[]{channel[1]}); null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
}); });
channelContainer.waitForMessage(); channelContainer.waitForMessage();
Assert.assertEquals("12", channelContainer.getMessage()); Assert.assertEquals("12", channelContainer.getMessage());
...@@ -937,12 +937,12 @@ public class PostMessageTest { ...@@ -937,12 +937,12 @@ public class PostMessageTest {
final String longMessage = longMessageBuilder.toString(); final String longMessage = longMessageBuilder.toString();
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channelContainer.set(channel); channelContainer.set(channel);
channel[0].setMessageCallback( channel[0].setMessageCallback(
(message, sentPorts) -> channelContainer.setMessage(message), null); (message, sentPorts) -> channelContainer.setMessage(message), null);
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), mAwContents.postMessageToFrame(
new AppWebMessagePort[] {channel[1]}); null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(), new MessagePort[] {channel[1]});
channel[0].postMessage(longMessage, null); channel[0].postMessage(longMessage, null);
}); });
channelContainer.waitForMessage(); channelContainer.waitForMessage();
...@@ -959,7 +959,7 @@ public class PostMessageTest { ...@@ -959,7 +959,7 @@ public class PostMessageTest {
final HandlerThread thread = new HandlerThread("test-thread"); final HandlerThread thread = new HandlerThread("test-thread");
thread.start(); thread.start();
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channelContainer1.set(channel); channelContainer1.set(channel);
channelContainer2.set(channel); channelContainer2.set(channel);
channel[0].setMessageCallback( channel[0].setMessageCallback(
...@@ -987,7 +987,7 @@ public class PostMessageTest { ...@@ -987,7 +987,7 @@ public class PostMessageTest {
final HandlerThread thread = new HandlerThread("test-thread"); final HandlerThread thread = new HandlerThread("test-thread");
thread.start(); thread.start();
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channelContainer.set(channel); channelContainer.set(channel);
channel[0].setMessageCallback((message, sentPorts) channel[0].setMessageCallback((message, sentPorts)
-> channelContainer.setMessage(message), -> channelContainer.setMessage(message),
...@@ -999,7 +999,7 @@ public class PostMessageTest { ...@@ -999,7 +999,7 @@ public class PostMessageTest {
Assert.assertEquals(thread.getLooper(), channelContainer.getLastLooper()); Assert.assertEquals(thread.getLooper(), channelContainer.getLastLooper());
final ChannelContainer channelContainer2 = new ChannelContainer(1); final ChannelContainer channelContainer2 = new ChannelContainer(1);
InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
AppWebMessagePort[] channel = channelContainer.get(); MessagePort[] channel = channelContainer.get();
channel[0].setMessageCallback( channel[0].setMessageCallback(
(message, sentPorts) -> channelContainer2.setMessage(message), null); (message, sentPorts) -> channelContainer2.setMessage(message), null);
channel[1].postMessage("bar", null); channel[1].postMessage("bar", null);
......
...@@ -22,7 +22,6 @@ include_rules = [ ...@@ -22,7 +22,6 @@ include_rules = [
"!content/public/android/java/src/org/chromium/content/app/ContentChildProcessServiceDelegate.java", "!content/public/android/java/src/org/chromium/content/app/ContentChildProcessServiceDelegate.java",
"!content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibility.java", "!content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibility.java",
"!content/public/android/java/src/org/chromium/content/browser/ActivityContentVideoViewEmbedder.java", "!content/public/android/java/src/org/chromium/content/browser/ActivityContentVideoViewEmbedder.java",
"!content/public/android/java/src/org/chromium/content/browser/AppWebMessagePort.java",
"!content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java", "!content/public/android/java/src/org/chromium/content/browser/BrowserStartupController.java",
"!content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java", "!content/public/android/java/src/org/chromium/content/browser/ChildProcessCreationParams.java",
"!content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncherHelper.java", "!content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncherHelper.java",
......
...@@ -16,7 +16,6 @@ import org.chromium.base.ThreadUtils; ...@@ -16,7 +16,6 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.browser.browserservices.OriginVerifier.OriginVerificationListener; import org.chromium.chrome.browser.browserservices.OriginVerifier.OriginVerificationListener;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.content.browser.AppWebMessagePort;
import org.chromium.content_public.browser.MessagePort; import org.chromium.content_public.browser.MessagePort;
import org.chromium.content_public.browser.MessagePort.MessageCallback; import org.chromium.content_public.browser.MessagePort.MessageCallback;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
...@@ -31,7 +30,7 @@ public class PostMessageHandler ...@@ -31,7 +30,7 @@ public class PostMessageHandler
private WebContents mWebContents; private WebContents mWebContents;
private boolean mMessageChannelCreated; private boolean mMessageChannelCreated;
private boolean mBoundToService; private boolean mBoundToService;
private AppWebMessagePort[] mChannel; private MessagePort[] mChannel;
private Uri mPostMessageUri; private Uri mPostMessageUri;
private String mPackageName; private String mPackageName;
...@@ -121,11 +120,11 @@ public class PostMessageHandler ...@@ -121,11 +120,11 @@ public class PostMessageHandler
} }
private void initializeWithWebContents(final WebContents webContents) { private void initializeWithWebContents(final WebContents webContents) {
mChannel = (AppWebMessagePort[]) webContents.createMessageChannel(); mChannel = webContents.createMessageChannel();
mChannel[0].setMessageCallback(mMessageCallback, null); mChannel[0].setMessageCallback(mMessageCallback, null);
webContents.postMessageToFrame( webContents.postMessageToFrame(
null, "", mPostMessageUri.toString(), "", new AppWebMessagePort[] {mChannel[1]}); null, "", mPostMessageUri.toString(), "", new MessagePort[] {mChannel[1]});
mMessageChannelCreated = true; mMessageChannelCreated = true;
if (mBoundToService) notifyMessageChannelReady(null); if (mBoundToService) notifyMessageChannelReady(null);
......
...@@ -7,6 +7,7 @@ package org.chromium.content_public.browser; ...@@ -7,6 +7,7 @@ package org.chromium.content_public.browser;
import android.os.Handler; import android.os.Handler;
import org.chromium.base.annotations.UsedByReflection; import org.chromium.base.annotations.UsedByReflection;
import org.chromium.content.browser.AppWebMessagePort;
/** /**
* Interface for message ports that handle postMessage requests. * Interface for message ports that handle postMessage requests.
...@@ -25,6 +26,14 @@ public interface MessagePort { ...@@ -25,6 +26,14 @@ public interface MessagePort {
void onMessage(String message, MessagePort[] sentPorts); void onMessage(String message, MessagePort[] sentPorts);
} }
/**
* Called to create an entangled pair of ports.
* @return An array of a pair of{@link MessagePort} instances.
*/
public static MessagePort[] createPair() {
return AppWebMessagePort.createPair();
}
/** /**
* Close the port for use. * Close the port for use.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment