Commit 274fd4eb authored by sgurun's avatar sgurun Committed by Commit bot

There is no point of keeping source_origin as a parameter in postMessageTo*...

There is no point of keeping source_origin as a parameter in postMessageTo* methods. It is not a parameter to expose to the source app in a webview API, and it is not a value that will change from one request to another, so for the simplicity's sake, remove it from java side completely. At the moment, I am not fully sure what a good value is so leaving it as a empty domain for now.

BUG=393291

Review URL: https://codereview.chromium.org/923913004

Cr-Commit-Position: refs/heads/master@{#316295}
parent 09efc621
...@@ -1789,26 +1789,23 @@ public class AwContents implements SmartClipProvider, ...@@ -1789,26 +1789,23 @@ public class AwContents implements SmartClipProvider,
/** /**
* Post a message to a frame. * Post a message to a frame.
* TODO(sgurun) investigate if we should hardcode the source origin to some
* value instead.
* *
* @param frameName The name of the frame. If the name is null the message is posted * @param frameName The name of the frame. If the name is null the message is posted
* to the main frame. * to the main frame.
* @param message The message * @param message The message
* @param sourceOrigin The source origin
* @param targetOrigin The target origin * @param targetOrigin The target origin
* @param sentPorts The sent message ports, if any. Pass null if there is no * @param sentPorts The sent message ports, if any. Pass null if there is no
* message ports to pass. * message ports to pass.
*/ */
public void postMessageToFrame(String frameName, String message, public void postMessageToFrame(String frameName, String message, String targetOrigin,
String sourceOrigin, String targetOrigin, MessagePort[] sentPorts) { MessagePort[] sentPorts) {
if (isDestroyed()) return; if (isDestroyed()) return;
if (mPostMessageSender == null) { if (mPostMessageSender == null) {
AwMessagePortService service = mBrowserContext.getMessagePortService(); AwMessagePortService service = mBrowserContext.getMessagePortService();
mPostMessageSender = new PostMessageSender(this, service); mPostMessageSender = new PostMessageSender(this, service);
service.addObserver(mPostMessageSender); service.addObserver(mPostMessageSender);
} }
mPostMessageSender.postMessage(frameName, message, sourceOrigin, targetOrigin, mPostMessageSender.postMessage(frameName, message, targetOrigin,
sentPorts); sentPorts);
} }
...@@ -1817,11 +1814,11 @@ public class AwContents implements SmartClipProvider, ...@@ -1817,11 +1814,11 @@ public class AwContents implements SmartClipProvider,
* ids of any transferred port should be known at this time. * ids of any transferred port should be known at this time.
*/ */
@Override @Override
public void postMessageToWeb(String frameName, String message, public void postMessageToWeb(String frameName, String message, String targetOrigin,
String sourceOrigin, String targetOrigin, int[] sentPortIds) { int[] sentPortIds) {
if (isDestroyed()) return; if (isDestroyed()) return;
nativePostMessageToFrame(mNativeAwContents, frameName, message, sourceOrigin, nativePostMessageToFrame(mNativeAwContents, frameName, message, targetOrigin,
targetOrigin, sentPortIds); sentPortIds);
} }
/** /**
...@@ -2770,7 +2767,7 @@ public class AwContents implements SmartClipProvider, ...@@ -2770,7 +2767,7 @@ public class AwContents implements SmartClipProvider,
long resources); long resources);
private native void nativePostMessageToFrame(long nativeAwContents, String frameId, private native void nativePostMessageToFrame(long nativeAwContents, String frameId,
String message, String sourceOrigin, String targetOrigin, int[] msgPorts); String message, String targetOrigin, int[] msgPorts);
private native void nativeCreateMessageChannel(long nativeAwContents, MessagePort[] ports); private native void nativeCreateMessageChannel(long nativeAwContents, MessagePort[] ports);
} }
...@@ -135,12 +135,12 @@ public class MessagePort implements PostMessageSender.PostMessageSenderDelegate ...@@ -135,12 +135,12 @@ public class MessagePort implements PostMessageSender.PostMessageSenderDelegate
} }
} }
} }
mPostMessageSender.postMessage(null, message, null, null, msgPorts); mPostMessageSender.postMessage(null, message, null, msgPorts);
} }
@Override @Override
public void postMessageToWeb(String frameName, String message, public void postMessageToWeb(String frameName, String message, String targetOrigin,
String sourceOrigin, String targetOrigin, int[] sentPortIds) { int[] sentPortIds) {
mMessagePortService.postMessage(mPortId, message, sentPortIds); mMessagePortService.postMessage(mPortId, message, sentPortIds);
} }
} }
...@@ -20,23 +20,21 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs ...@@ -20,23 +20,21 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs
* Posts a message to the destination frame for real. The unique message port * Posts a message to the destination frame for real. The unique message port
* id of any transferred port should be known at this time. * id of any transferred port should be known at this time.
*/ */
void postMessageToWeb(String frameName, String message, String sourceOrigin, void postMessageToWeb(String frameName, String message, String targetOrigin,
String targetOrigin, int[] sentPortIds); int[] sentPortIds);
}; };
// A struct to store Message parameters that are sent from App to Web. // A struct to store Message parameters that are sent from App to Web.
private static class PostMessageParams { private static class PostMessageParams {
public String frameName; public String frameName;
public String message; public String message;
public String sourceOrigin;
public String targetOrigin; public String targetOrigin;
public MessagePort[] sentPorts; public MessagePort[] sentPorts;
public PostMessageParams(String frameName, String message, String sourceOrigin, public PostMessageParams(String frameName, String message, String targetOrigin,
String targetOrigin, MessagePort[] sentPorts) { MessagePort[] sentPorts) {
this.frameName = frameName; this.frameName = frameName;
this.message = message; this.message = message;
this.sourceOrigin = sourceOrigin;
this.targetOrigin = targetOrigin; this.targetOrigin = targetOrigin;
this.sentPorts = sentPorts; this.sentPorts = sentPorts;
} }
...@@ -91,8 +89,8 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs ...@@ -91,8 +89,8 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs
return false; return false;
} }
private void postMessageToWeb(String frameName, String message, String sourceOrigin, private void postMessageToWeb(String frameName, String message, String targetOrigin,
String targetOrigin, MessagePort[] sentPorts) { MessagePort[] sentPorts) {
int[] portIds = null; int[] portIds = null;
if (sentPorts != null) { if (sentPorts != null) {
portIds = new int[sentPorts.length]; portIds = new int[sentPorts.length];
...@@ -101,15 +99,15 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs ...@@ -101,15 +99,15 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs
} }
mService.removeSentPorts(portIds); mService.removeSentPorts(portIds);
} }
mDelegate.postMessageToWeb(frameName, message, sourceOrigin, targetOrigin, portIds); mDelegate.postMessageToWeb(frameName, message, targetOrigin, portIds);
} }
/* /*
* Sanity checks the message and queues it if necessary. Posts the message to delegate * Sanity checks the message and queues it if necessary. Posts the message to delegate
* when message can be sent. * when message can be sent.
*/ */
public void postMessage(String frameName, String message, String sourceOrigin, public void postMessage(String frameName, String message, String targetOrigin,
String targetOrigin, MessagePort[] sentPorts) throws IllegalStateException { MessagePort[] sentPorts) throws IllegalStateException {
// Sanity check all the ports that are being transferred. // Sanity check all the ports that are being transferred.
if (sentPorts != null) { if (sentPorts != null) {
for (MessagePort p : sentPorts) { for (MessagePort p : sentPorts) {
...@@ -120,10 +118,10 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs ...@@ -120,10 +118,10 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs
} }
} }
if (shouldQueueMessage(sentPorts)) { if (shouldQueueMessage(sentPorts)) {
mMessageQueue.add(new PostMessageParams(frameName, message, sourceOrigin, mMessageQueue.add(new PostMessageParams(frameName, message, targetOrigin,
targetOrigin, sentPorts)); sentPorts));
} else { } else {
postMessageToWeb(frameName, message, sourceOrigin, targetOrigin, sentPorts); postMessageToWeb(frameName, message, targetOrigin, sentPorts);
} }
} }
...@@ -143,8 +141,7 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs ...@@ -143,8 +141,7 @@ public class PostMessageSender implements AwMessagePortService.MessageChannelObs
return; return;
} }
mMessageQueue.remove(); mMessageQueue.remove();
postMessageToWeb(msg.frameName, msg.message, msg.sourceOrigin, msg.targetOrigin, postMessageToWeb(msg.frameName, msg.message, msg.targetOrigin, msg.sentPorts);
msg.sentPorts);
} }
} }
} }
...@@ -31,7 +31,7 @@ import java.util.concurrent.CountDownLatch; ...@@ -31,7 +31,7 @@ import java.util.concurrent.CountDownLatch;
@MinAndroidSdkLevel(Build.VERSION_CODES.KITKAT) @MinAndroidSdkLevel(Build.VERSION_CODES.KITKAT)
public class PostMessageTest extends AwTestBase { public class PostMessageTest extends AwTestBase {
private static final String SOURCE_ORIGIN = "android_webview"; private static final String SOURCE_ORIGIN = "";
// Timeout to failure, in milliseconds // Timeout to failure, in milliseconds
private static final long TIMEOUT = scaleTimeout(5000); private static final long TIMEOUT = scaleTimeout(5000);
...@@ -138,8 +138,8 @@ public class PostMessageTest extends AwTestBase { ...@@ -138,8 +138,8 @@ public class PostMessageTest extends AwTestBase {
runTestOnUiThread(new Runnable() { runTestOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), null); null);
} }
}); });
mMessageObject.waitForMessage(); mMessageObject.waitForMessage();
...@@ -156,12 +156,12 @@ public class PostMessageTest extends AwTestBase { ...@@ -156,12 +156,12 @@ public class PostMessageTest extends AwTestBase {
@Override @Override
public void run() { public void run() {
MessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame(null, "1", SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, "1", mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{channel[1]}); 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", SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, "2", mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{channel[1]}); new MessagePort[]{channel[1]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -212,8 +212,8 @@ public class PostMessageTest extends AwTestBase { ...@@ -212,8 +212,8 @@ public class PostMessageTest extends AwTestBase {
MessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
channel[1].close(); channel[1].close();
try { try {
mAwContents.postMessageToFrame(null, "1", SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, "1", mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{channel[1]}); new MessagePort[]{channel[1]});
} catch (IllegalStateException ex) { } catch (IllegalStateException ex) {
latch.countDown(); latch.countDown();
return; return;
...@@ -328,8 +328,8 @@ public class PostMessageTest extends AwTestBase { ...@@ -328,8 +328,8 @@ public class PostMessageTest extends AwTestBase {
channelContainer.setMessage(message); channelContainer.setMessage(message);
} }
}); });
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{channel[1]}); new MessagePort[]{channel[1]});
} }
}); });
mMessageObject.waitForMessage(); mMessageObject.waitForMessage();
...@@ -410,8 +410,8 @@ public class PostMessageTest extends AwTestBase { ...@@ -410,8 +410,8 @@ public class PostMessageTest extends AwTestBase {
channelContainer.setMessage(message); channelContainer.setMessage(message);
} }
}); });
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{channel[1]}); new MessagePort[]{channel[1]});
channel[0].postMessage(HELLO, null); channel[0].postMessage(HELLO, null);
} }
}); });
...@@ -440,8 +440,8 @@ public class PostMessageTest extends AwTestBase { ...@@ -440,8 +440,8 @@ public class PostMessageTest extends AwTestBase {
channelContainer.setMessage(message); channelContainer.setMessage(message);
} }
}); });
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{channel[1]}); new MessagePort[]{channel[1]});
channel[0].postMessage(HELLO, null); channel[0].postMessage(HELLO, null);
} }
}); });
...@@ -515,12 +515,10 @@ public class PostMessageTest extends AwTestBase { ...@@ -515,12 +515,10 @@ public class PostMessageTest extends AwTestBase {
@Override @Override
public void run() { public void run() {
MessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame(null, "1", SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, "1", mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{channel[1]}); new MessagePort[]{channel[1]});
mAwContents.postMessageToFrame(null, "2", SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, "2", mWebServer.getBaseUrl(), null);
mWebServer.getBaseUrl(), null); mAwContents.postMessageToFrame(null, "3", mWebServer.getBaseUrl(), null);
mAwContents.postMessageToFrame(null, "3", SOURCE_ORIGIN,
mWebServer.getBaseUrl(), null);
} }
}); });
expectTitle("123"); expectTitle("123");
...@@ -595,15 +593,14 @@ public class PostMessageTest extends AwTestBase { ...@@ -595,15 +593,14 @@ public class PostMessageTest extends AwTestBase {
@Override @Override
public void run() { public void run() {
MessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame(null, "1", SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, "1", mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{channel[1]}); new MessagePort[]{channel[1]});
mAwContents.postMessageToFrame(null, "2", SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, "2", mWebServer.getBaseUrl(), null);
mWebServer.getBaseUrl(), null);
MessagePort[] channel2 = mAwContents.createMessageChannel(); MessagePort[] channel2 = mAwContents.createMessageChannel();
// Test port is in a pending state so it should not be transferred. // Test port is in a pending state so it should not be transferred.
testPort.setMessagePort(channel2[0]); testPort.setMessagePort(channel2[0]);
mAwContents.postMessageToFrame(null, "3", SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, "3", mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{testPort}); new MessagePort[]{testPort});
} }
}); });
expectTitle("12"); expectTitle("12");
...@@ -653,8 +650,8 @@ public class PostMessageTest extends AwTestBase { ...@@ -653,8 +650,8 @@ public class PostMessageTest extends AwTestBase {
@Override @Override
public void run() { public void run() {
MessagePort[] channel = mAwContents.createMessageChannel(); MessagePort[] channel = mAwContents.createMessageChannel();
mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, SOURCE_ORIGIN, mAwContents.postMessageToFrame(null, WEBVIEW_MESSAGE, mWebServer.getBaseUrl(),
mWebServer.getBaseUrl(), new MessagePort[]{channel[0], channel[1]}); new MessagePort[]{channel[0], channel[1]});
} }
}); });
mMessageObject.waitForMessage(); mMessageObject.waitForMessage();
......
...@@ -1093,10 +1093,11 @@ void AwContents::TrimMemory(JNIEnv* env, ...@@ -1093,10 +1093,11 @@ void AwContents::TrimMemory(JNIEnv* env,
// TODO(sgurun) add support for posting a frame whose name is known (only // TODO(sgurun) add support for posting a frame whose name is known (only
// main frame is supported at this time, see crbug.com/389721) // main frame is supported at this time, see crbug.com/389721)
void AwContents::PostMessageToFrame(JNIEnv* env, jobject obj, void AwContents::PostMessageToFrame(JNIEnv* env, jobject obj,
jstring frame_name, jstring message, jstring source_origin, jstring frame_name, jstring message, jstring target_origin,
jstring target_origin, jintArray sent_ports) { jintArray sent_ports) {
base::string16 j_source_origin(ConvertJavaStringToUTF16(env, source_origin)); // Use an empty source origin for android webview.
base::string16 source_origin;
base::string16 j_target_origin(ConvertJavaStringToUTF16(env, target_origin)); base::string16 j_target_origin(ConvertJavaStringToUTF16(env, target_origin));
base::string16 j_message(ConvertJavaStringToUTF16(env, message)); base::string16 j_message(ConvertJavaStringToUTF16(env, message));
std::vector<int> j_ports; std::vector<int> j_ports;
...@@ -1111,7 +1112,7 @@ void AwContents::PostMessageToFrame(JNIEnv* env, jobject obj, ...@@ -1111,7 +1112,7 @@ void AwContents::PostMessageToFrame(JNIEnv* env, jobject obj,
j_ports)); j_ports));
} }
content::MessagePortProvider::PostMessageToFrame(web_contents_.get(), content::MessagePortProvider::PostMessageToFrame(web_contents_.get(),
j_source_origin, source_origin,
j_target_origin, j_target_origin,
j_message, j_message,
j_ports); j_ports);
......
...@@ -222,8 +222,7 @@ class AwContents : public FindHelper::Listener, ...@@ -222,8 +222,7 @@ class AwContents : public FindHelper::Listener,
scoped_refptr<AwMessagePortMessageFilter> GetMessagePortMessageFilter(); scoped_refptr<AwMessagePortMessageFilter> GetMessagePortMessageFilter();
void PostMessageToFrame(JNIEnv* env, jobject obj, jstring frame_id, void PostMessageToFrame(JNIEnv* env, jobject obj, jstring frame_id,
jstring message, jstring source_origin, jstring target_origin, jstring message, jstring target_origin, jintArray sent_ports);
jintArray sent_ports);
void CreateMessageChannel(JNIEnv* env, jobject obj, jobjectArray ports); void CreateMessageChannel(JNIEnv* env, jobject obj, jobjectArray ports);
private: private:
......
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