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. |