Index: media/mojo/interfaces/android_overlay.mojom |
diff --git a/media/mojo/interfaces/android_overlay.mojom b/media/mojo/interfaces/android_overlay.mojom |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ad0cc16ac765c8f18a9738294f2be2960c6c0f2c |
--- /dev/null |
+++ b/media/mojo/interfaces/android_overlay.mojom |
@@ -0,0 +1,60 @@ |
+// Copyright 2017 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. |
+ |
+module media.mojom; |
+ |
+import "media/mojo/interfaces/media_types.mojom"; |
+import "mojo/common/unguessable_token.mojom"; |
+import "ui/gfx/geometry/mojo/geometry.mojom"; |
+ |
+// Provides mojo clients with AndroidOverlay instances. This will live in the |
+// browser, with clients in the GPU process or renderer. Note that if you're |
+// trying to use overlays somewhere in chromium, then this isn't the interface |
+// you're looking for. Please see media::AndroidOverlayFactory instead. The |
+// AndroidOverlayProvider mojo client implements that interface. |
+interface AndroidOverlayProvider { |
+ // Create an overlay and send it to |client|, using |config| as the initial |
+ // configuration. |overlay| will hold the overlay object. |
+ CreateOverlay(AndroidOverlay& overlay, AndroidOverlayClient client, |
+ AndroidOverlayConfig config); |
+}; |
+ |
+// One overlay instance. This will be provided by the provider to clients |
+// elsewhere. Note that you probably want to use media::AndroidOverlay instead |
+// of this if you're trying to use overlays somewhere in chromium. The mojo |
+// client here is an implementation detail of AndroidOverlay via mojo. |
+interface AndroidOverlay { |
+ // Cause a layout to occur later. |
+ ScheduleLayout(gfx.mojom.Rect rect); |
+}; |
+ |
+// Provided by the client to receive status updates about the overlay. Normally |
+// only the AndroidOverlay mojo client will use this directly; application code |
+// shouldn't need this. |
+interface AndroidOverlayClient { |
+ // |surface_key| is the key that can be used to retrieve the surface via |
+ // binder separately. |
+ OnSurfaceReady(uint64 surface_key); |
+ |
+ // Indicates that this overlay has been permanently destroyed, or failed to |
+ // initialize. It can happen before or after OnSurfaceReady. It will be the |
+ // last callback from the overlay in any case. |
+ OnDestroyed(); |
+}; |
+ |
+// This is not a mirror of AndroidOverlay::Config, since it contains things that |
+// are specific to the mojo implementation. Application code should use that |
+// one instead. |
+struct AndroidOverlayConfig { |
+ // |routing_token| provides the client with an opaque handle that will attach |
+ // an overlay to a the correct WindowAndroid. Typical usage is that a |
+ // RenderFrameHostImpl will provide this token to the RenderFrame. When the |
+ // overlay is created, the WindowAndroid that currently hosts the render frame |
+ // will be the parent of the overlay. For legacy reasons, we need this token |
+ // to be sent via IPC, so using the message pipe, or other mojo construct, as |
+ // the identifier won't work yet. |
+ mojo.common.mojom.UnguessableToken routing_token; |
+ |
+ gfx.mojom.Rect rect; |
+}; |