| // Copyright 2014 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. |
| |
| [DartPackage="mojo_services"] |
| module mojo; |
| |
| import "geometry/public/interfaces/geometry.mojom"; |
| import "gpu/public/interfaces/context_provider.mojom"; |
| import "input_events/public/interfaces/input_events.mojom"; |
| |
| struct ViewportMetrics { |
| Size size; |
| float device_pixel_ratio = 1.0; |
| }; |
| |
| struct SurfaceConfiguration { |
| uint8 red_bits = 8; |
| uint8 green_bits = 8; |
| uint8 blue_bits = 8; |
| uint8 alpha_bits = 8; |
| uint8 depth_bits; |
| uint8 stencil_bits; |
| }; |
| |
| interface NativeViewport { |
| // TODO(sky): having a create function is awkward. Should there be a factory |
| // to create the NativeViewport that takes the size? |
| Create(Size size, SurfaceConfiguration? requested_configuration) => (ViewportMetrics metrics); |
| |
| Show(); |
| Hide(); |
| Close(); |
| SetSize(Size size); |
| SetEventDispatcher(NativeViewportEventDispatcher dispatcher); |
| |
| // Requests a ContextProvider capable of producing contexts that draw to |
| // this native viewport. |
| GetContextProvider(ContextProvider& provider); |
| |
| // The initial viewport metrics will be sent in the reply to the Create |
| // method. Call RequestMetrics() to receive updates when the viewport metrics |
| // change. The reply will be sent when the viewport metrics are different from |
| // the values last sent, so to receive continuous updates call this method |
| // again after receiving the callback. |
| RequestMetrics() => (ViewportMetrics metrics); |
| }; |
| |
| interface NativeViewportEventDispatcher { |
| OnEvent(Event event) => (); |
| }; |