| // 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/mojom/media_types.mojom"; |
| import "mojo/public/mojom/base/unguessable_token.mojom"; |
| import "ui/gfx/geometry/mojom/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(pending_receiver<AndroidOverlay> overlay, |
| pending_remote<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 failed to initialize, before a surface |
| // was provided via OnSurfaceReady. No calls will be sent to the client |
| // after this. |
| OnDestroyed(); |
| |
| // Indicates that this overlay has been destroyed, after an Android Surface |
| // has been provided via OnSurfaceReady. It is required that the client |
| // complete cleanup before signalling completion. In other words, Android |
| // has told us that the surface is going away, and the API contract says |
| // that we must not use it after that callback completes. No other calls |
| // into the client will come after this. |
| [Sync] |
| OnSynchronouslyDestroyed() => (); |
| |
| // Called to provide the current power-efficiency state. May be called more |
| // than once. |
| OnPowerEfficientState(bool is_power_efficient); |
| }; |
| |
| // 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_base.mojom.UnguessableToken routing_token; |
| |
| // Initial rectangle. |
| gfx.mojom.Rect rect; |
| |
| // Is a secure overlay required, such as for displaying protected content? |
| bool secure; |
| |
| // Is a power-efficient overlay required? |
| bool power_efficient; |
| }; |