Chromium Code Reviews| Index: content/public/android/java/src/org/chromium/content/browser/DialogSurfaceActivityMapper.java |
| diff --git a/content/public/android/java/src/org/chromium/content/browser/DialogSurfaceActivityMapper.java b/content/public/android/java/src/org/chromium/content/browser/DialogSurfaceActivityMapper.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..046f0565720542094618600a24bde58914d0b430 |
| --- /dev/null |
| +++ b/content/public/android/java/src/org/chromium/content/browser/DialogSurfaceActivityMapper.java |
| @@ -0,0 +1,59 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.content.browser; |
| + |
| +import android.os.IBinder; |
| +import android.os.RemoteException; |
| +import android.view.ViewGroup; |
| + |
| +import org.chromium.base.Log; |
| +import org.chromium.base.UnguessableToken; |
| +import org.chromium.base.annotations.CalledByNative; |
| +import org.chromium.base.annotations.JNINamespace; |
| +import org.chromium.media.IDialogSurfaceActivityMapper; |
| +import org.chromium.media.IDialogSurfaceHolder; |
| +import org.chromium.ui.base.WindowAndroid; |
| + |
| +/** |
| + * Implementation of IDialogSurfaceActivityMapper. |
| + * Provided by ChildProcessLauncher to DialogSurfaceManager. |
| + */ |
| +@JNINamespace("content") |
| +public class DialogSurfaceActivityMapper extends IDialogSurfaceActivityMapper.Stub { |
| + private static final String TAG = "cr_DialogSurfaceAM"; |
| + |
| + @Override |
| + public void postWindowToken(UnguessableToken frameToken, IDialogSurfaceHolder holder) { |
| + nativeCallBackWithContentViewCore(frameToken, this, holder); |
| + } |
| + |
| + /** |
| + * Receive a callback from native with a previously requested ContentViewCore. |
| + */ |
| + @CalledByNative |
| + private void onContentViewCore(IDialogSurfaceHolder holder, ContentViewCore cvc) { |
| + IBinder token = null; |
| + |
| + if (cvc != null) { |
| + ViewGroup viewGroup = cvc.getContainerView(); |
|
boliu
2016/11/14 16:39:24
not needed
liberato (no reviews please)
2016/12/20 17:16:38
Done.
|
| + WindowAndroid windowAndroid = cvc.getWindowAndroid(); |
| + if (windowAndroid != null) { |
| + token = windowAndroid.getWindowToken(); |
| + } |
| + } |
| + |
| + try { |
| + holder.onWindowToken(token); |
| + } catch (RemoteException e) { |
| + Log.d(TAG, "Unable to post window token to DialogSurfaceHolder", e); |
| + } |
| + } |
| + |
| + // Look up the ContentViewCore for |frameToken|, and call back |
| + // onContentViewCore with it and |holder|. The callback will happen on the |
| + // browser UI thread. |
| + private static native void nativeCallBackWithContentViewCore(UnguessableToken frameToken, |
| + DialogSurfaceActivityMapper mapper, IDialogSurfaceHolder holder); |
| +} |