blob: ab1506e6f923026c2d75aa911e54191e2b2d0fb0 [file] [log] [blame]
// 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) => ();
};