// Copyright 2016 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 content.mojom;

import "content/common/input/input_handler.mojom";
import "content/common/widget.mojom";
import "mojo/public/mojom/base/thread_priority.mojom";
import "mojo/public/mojom/base/time.mojom";
import "url/mojom/origin.mojom";
import "url/mojom/url.mojom";

interface RenderMessageFilter {
  // Synchronously generates a new routing ID for the caller.
  [Sync] GenerateRoutingID() => (int32 routing_id);

  // Similar to CreateWindow, except used for sub-widgets, like <select>
  // dropdowns.
  [Sync] CreateNewWidget(int32 opener_id, pending_remote<Widget> widget)
      => (int32 route_id);

  // Similar to CreateWidget except the widget is a full screen window.
  [Sync] CreateFullscreenWidget(int32 opener_id, pending_remote<Widget> widget)
      => (int32 route_id);

  // A renderer sends this when it wants to know whether a gpu process exists.
  [Sync] HasGpuProcess() => (bool has_gpu_process);

  // Asks the browser to change the priority of thread.
  [EnableIf=supports_thread_priorities]
  SetThreadPriority(int32 platform_thread_id,
                    mojo_base.mojom.ThreadPriority thread_priority);
};
