| // 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. |
| |
| module mojo; |
| |
| import "geometry/public/interfaces/geometry.mojom"; |
| import "gpu/public/interfaces/command_buffer.mojom"; |
| import "input_events/public/interfaces/input_events.mojom"; |
| import "surfaces/public/interfaces/surface_id.mojom"; |
| |
| struct ViewportMetrics { |
| Size size; |
| float device_pixel_ratio = 1.0; |
| }; |
| |
| [Client=NativeViewportClient] |
| 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) => (uint64 native_viewport_id); |
| Show(); |
| Hide(); |
| Close(); |
| SetSize(Size size); |
| SubmittedFrame(SurfaceId surface_id); |
| SetEventDispatcher(NativeViewportEventDispatcher dispatcher); |
| }; |
| |
| interface NativeViewportEventDispatcher { |
| OnEvent(Event event) => (); |
| }; |
| |
| interface NativeViewportClient { |
| // OnMetricsAvailable() is sent at least once after the callback from Create() |
| // is called. |
| OnMetricsChanged(ViewportMetrics metrics); |
| OnDestroyed(); |
| }; |