Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Unified Diff: android_webview/java/src/org/chromium/android_webview/MessagePort.java

Issue 995663002: Implement receiving transferred ports from JS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@flaky-test
Patch Set: address nit from nasko Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/java/src/org/chromium/android_webview/MessagePort.java
diff --git a/android_webview/java/src/org/chromium/android_webview/MessagePort.java b/android_webview/java/src/org/chromium/android_webview/MessagePort.java
index b7394d1a5f38d86fb399f25d89b8db8eb698d11e..ad1c5ec00e8bfa3923c1d59f1faf88fcfafade78 100644
--- a/android_webview/java/src/org/chromium/android_webview/MessagePort.java
+++ b/android_webview/java/src/org/chromium/android_webview/MessagePort.java
@@ -75,7 +75,7 @@ public class MessagePort implements PostMessageSender.PostMessageSenderDelegate
* The message event handler for receiving messages. Called on a background thread.
*/
public abstract static class WebEventHandler {
- public abstract void onMessage(String message);
+ public abstract void onMessage(String message, MessagePort[] sentPorts);
}
private static final String TAG = "MessagePort";
@@ -87,10 +87,12 @@ public class MessagePort implements PostMessageSender.PostMessageSenderDelegate
private static class PostMessageFromWeb {
public MessagePort port;
public String message;
+ public MessagePort[] sentPorts;
- public PostMessageFromWeb(MessagePort port, String message) {
+ public PostMessageFromWeb(MessagePort port, String message, MessagePort[] sentPorts) {
this.port = port;
this.message = message;
+ this.sentPorts = sentPorts;
}
}
@@ -105,7 +107,7 @@ public class MessagePort implements PostMessageSender.PostMessageSenderDelegate
public void handleMessage(Message msg) {
if (msg.what == POST_MESSAGE) {
PostMessageFromWeb m = (PostMessageFromWeb) msg.obj;
- m.port.onMessage(m.message);
+ m.port.onMessage(m.message, m.sentPorts);
return;
}
throw new IllegalStateException("undefined message");
@@ -191,9 +193,9 @@ public class MessagePort implements PostMessageSender.PostMessageSenderDelegate
}
// Only called on IO thread.
- public void onReceivedMessage(String message) {
+ public void onReceivedMessage(String message, MessagePort[] sentPorts) {
synchronized (mLock) {
- PostMessageFromWeb m = new PostMessageFromWeb(this, message);
+ PostMessageFromWeb m = new PostMessageFromWeb(this, message, sentPorts);
Handler handler = mHandler != null ? mHandler : sDefaultHandler;
Message msg = handler.obtainMessage(POST_MESSAGE, m);
handler.sendMessage(msg);
@@ -209,7 +211,7 @@ public class MessagePort implements PostMessageSender.PostMessageSenderDelegate
}
// This method may be called on a different thread than UI thread.
- public void onMessage(String message) {
+ public void onMessage(String message, MessagePort[] ports) {
synchronized (mLock) {
if (isClosed()) {
Log.w(TAG, "Port [" + mPortId + "] received message in closed state");
@@ -220,23 +222,23 @@ public class MessagePort implements PostMessageSender.PostMessageSenderDelegate
+ message);
return;
}
- mWebEventHandler.onMessage(message);
+ mWebEventHandler.onMessage(message, ports);
}
}
- public void postMessage(String message, MessagePort[] msgPorts) throws IllegalStateException {
+ public void postMessage(String message, MessagePort[] sentPorts) throws IllegalStateException {
if (isClosed() || isTransferred()) {
throw new IllegalStateException("Port is already closed or transferred");
}
- if (msgPorts != null) {
- for (MessagePort port : msgPorts) {
+ if (sentPorts != null) {
+ for (MessagePort port : sentPorts) {
if (port.equals(this)) {
throw new IllegalStateException("Source port cannot be transferred");
}
}
}
mStarted = true;
- mPostMessageSender.postMessage(null, message, null, msgPorts);
+ mPostMessageSender.postMessage(null, message, null, sentPorts);
}
// Implements PostMessageSender.PostMessageSenderDelegate interface method.

Powered by Google App Engine
This is Rietveld 408576698