Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.media; | |
| 6 | |
| 7 import android.os.IBinder; | |
| 8 import android.os.RemoteException; | |
| 9 | |
| 10 import org.chromium.base.annotations.CalledByNative; | |
| 11 import org.chromium.base.annotations.JNINamespace; | |
| 12 | |
| 13 /** | |
| 14 * Wrapper for IDialogSurfaceManager, to provide JNI bindings for arbitrary | |
| 15 * implementations of IDialogSurfaceManager. In practice, there is one: the | |
| 16 * IBinder stub we get from the browser. However, if one creates a local | |
| 17 * manager such as in the GPU process, then this will work too. | |
| 18 * | |
| 19 * When one gets an IDialogSurfaceManager, whether remote from the browser or | |
| 20 * local (if supported), it can be used by native classes by wrapping it in a | |
| 21 * DialogSurfaceManagerWrapper instance. | |
| 22 * | |
| 23 * While it's not strictly needed, the wrapper implements IDialogSurfaceManager | |
| 24 * too. It's helpful, since it makes changes to the interface into compile- | |
| 25 * time errors. | |
| 26 * | |
| 27 * Note that all of that is wrapped in the C++ bindings for this class, so see | |
| 28 * the docs in dialog_surface_manager.h if you'd like to use this in C++. | |
| 29 */ | |
| 30 @JNINamespace("media") | |
| 31 class DialogSurfaceManagerWrapper implements IDialogSurfaceManager { | |
|
boliu
2017/01/04 01:48:44
ditto about not needing to inherit from IDialogSur
liberato (no reviews please)
2017/01/11 22:17:57
will be removed along with the renaming in a separ
| |
| 32 private final IDialogSurfaceManager mManager; | |
| 33 | |
| 34 private DialogSurfaceManagerWrapper(IDialogSurfaceManager manager) { | |
| 35 mManager = manager; | |
| 36 } | |
| 37 | |
| 38 @CalledByNative | |
| 39 private static DialogSurfaceManagerWrapper wrap(IBinder manager) { | |
| 40 return new DialogSurfaceManagerWrapper(IDialogSurfaceManager.Stub.asInte rface(manager)); | |
| 41 } | |
| 42 | |
| 43 @Override | |
| 44 @CalledByNative | |
| 45 public IDialogSurface createSurface(int rendererPid, int renderFrameId, | |
| 46 IDialogSurfaceCallback callback, int x, int y, int width, int height ) | |
| 47 throws RemoteException { | |
| 48 return mManager.createSurface(rendererPid, renderFrameId, callback, x, y , width, height); | |
| 49 } | |
| 50 | |
| 51 // We don't really implement a binderable interface, though I suppose that | |
| 52 // we could return mManager.asBinder(). | |
| 53 @Override | |
| 54 public IBinder asBinder() { | |
| 55 return null; | |
| 56 } | |
| 57 } | |
| OLD | NEW |