Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Unified Diff: media/base/android/java/src/org/chromium/media/DialogSurfaceManagerWrapper.java

Issue 2178973004: DialogSurfaceManager implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed IDialogSurfaceActivityMapper from common.aidl Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/android/java/src/org/chromium/media/DialogSurfaceManagerWrapper.java
diff --git a/media/base/android/java/src/org/chromium/media/DialogSurfaceManagerWrapper.java b/media/base/android/java/src/org/chromium/media/DialogSurfaceManagerWrapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..b9142a4bffc22f8542b23b1f97c995865d9a2a93
--- /dev/null
+++ b/media/base/android/java/src/org/chromium/media/DialogSurfaceManagerWrapper.java
@@ -0,0 +1,57 @@
+// 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.media;
+
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
+
+/**
+ * Wrapper for IDialogSurfaceManager, to provide JNI bindings for arbitrary
+ * implementations of IDialogSurfaceManager. In practice, there is one: the
+ * IBinder stub we get from the browser. However, if one creates a local
+ * manager such as in the GPU process, then this will work too.
+ *
+ * When one gets an IDialogSurfaceManager, whether remote from the browser or
+ * local (if supported), it can be used by native classes by wrapping it in a
+ * DialogSurfaceManagerWrapper instance.
+ *
+ * While it's not strictly needed, the wrapper implements IDialogSurfaceManager
+ * too. It's helpful, since it makes changes to the interface into compile-
+ * time errors.
+ *
+ * Note that all of that is wrapped in the C++ bindings for this class, so see
+ * the docs in dialog_surface_manager.h if you'd like to use this in C++.
+ */
+@JNINamespace("media")
+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
+ private final IDialogSurfaceManager mManager;
+
+ private DialogSurfaceManagerWrapper(IDialogSurfaceManager manager) {
+ mManager = manager;
+ }
+
+ @CalledByNative
+ private static DialogSurfaceManagerWrapper wrap(IBinder manager) {
+ return new DialogSurfaceManagerWrapper(IDialogSurfaceManager.Stub.asInterface(manager));
+ }
+
+ @Override
+ @CalledByNative
+ public IDialogSurface createSurface(int rendererPid, int renderFrameId,
+ IDialogSurfaceCallback callback, int x, int y, int width, int height)
+ throws RemoteException {
+ return mManager.createSurface(rendererPid, renderFrameId, callback, x, y, width, height);
+ }
+
+ // We don't really implement a binderable interface, though I suppose that
+ // we could return mManager.asBinder().
+ @Override
+ public IBinder asBinder() {
+ return null;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698