Index: chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java |
index 86c7219a3508ac89ba69fac1d4d3714875467eaf..1487e1fc0e1ee71dc3aa8b3d39346c7a17cc69d0 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java |
@@ -12,6 +12,7 @@ import android.content.pm.PackageManager; |
import android.net.Uri; |
import android.os.IBinder; |
import android.os.SystemClock; |
+import android.support.annotation.NonNull; |
import android.support.customtabs.CustomTabsCallback; |
import android.support.customtabs.CustomTabsService; |
import android.support.customtabs.CustomTabsSessionToken; |
@@ -139,6 +140,7 @@ class ClientManager { |
packageName = getPackageName(context, uid); |
disconnectCallback = callback; |
this.postMessageHandler = postMessageHandler; |
+ if (postMessageHandler != null) this.postMessageHandler.setPackageName(packageName); |
this.mSpeculationMode = CustomTabsConnection.SpeculationParams.PRERENDER; |
} |
@@ -211,7 +213,7 @@ class ClientManager { |
* @return true for success. |
*/ |
public boolean newSession(CustomTabsSessionToken session, int uid, |
- DisconnectCallback onDisconnect, PostMessageHandler postMessageHandler) { |
+ DisconnectCallback onDisconnect, @NonNull PostMessageHandler postMessageHandler) { |
if (session == null) return false; |
SessionParams params = new SessionParams(mContext, uid, onDisconnect, postMessageHandler); |
synchronized (this) { |
@@ -341,6 +343,26 @@ class ClientManager { |
} |
/** |
+ * See {@link PostMessageHandler#verifyAndInitializeWithOrigin(Uri)}. |
+ */ |
+ public synchronized void verifyAndInitializeWithPostMessageOriginForSession( |
+ CustomTabsSessionToken session, Uri origin) { |
+ SessionParams params = mSessionParams.get(session); |
+ if (params == null) return; |
+ params.postMessageHandler.verifyAndInitializeWithOrigin(origin); |
+ } |
+ |
+ /** |
+ * @return The postMessage origin for the given session. |
+ */ |
+ @VisibleForTesting |
+ synchronized Uri getPostMessageOriginForSessionForTesting(CustomTabsSessionToken session) { |
+ SessionParams params = mSessionParams.get(session); |
+ if (params == null) return null; |
+ return params.postMessageHandler.getOriginForTesting(); |
+ } |
+ |
+ /** |
* See {@link PostMessageHandler#reset(WebContents)}. |
*/ |
public synchronized void resetPostMessageHandlerForSession( |
@@ -543,7 +565,7 @@ class ClientManager { |
if (params == null) return; |
mSessionParams.remove(session); |
if (params.postMessageHandler != null) { |
- params.postMessageHandler.unbindFromContext(mContext); |
+ params.postMessageHandler.cleanup(mContext); |
} |
if (params.disconnectCallback != null) params.disconnectCallback.run(session); |
mUidHasCalledWarmup.delete(params.uid); |