mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-28 16:26:10 +03:00
75 lines
3.3 KiB
Plaintext
75 lines
3.3 KiB
Plaintext
// Copyright 2018 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.
|
||
|
||
// Mojo interface for performing screen capture in ChromeOS at the request of
|
||
// Android. Android does not have access to the full desktop for capture (it has
|
||
// access only to its Windows), so via this IPC mechanism it can request
|
||
// permissions to capture the entire desktop and then also perform that capture.
|
||
|
||
// The original version of this file lives in the Chromium repository at:
|
||
// src/components/arc/common/screen_capture.mojom
|
||
|
||
// Next MinVersion: 2
|
||
|
||
module arc.mojom;
|
||
|
||
// For gfx::Size.
|
||
import "components/arc/common/video_common.mojom";
|
||
|
||
// Implemented by Chrome in order to allow requesting of permissions to perform
|
||
// desktop capture as well as creating a session for it.
|
||
interface ScreenCaptureHost {
|
||
// This will also show the desktop picker in case of multiple displays and
|
||
// will then link that desktop window to the granted permission.
|
||
// display_name is the string that should be used in the UI
|
||
// package_name is what should be used as the permission token
|
||
// returns true if the user accepts, false otherwise
|
||
RequestPermission@0(string display_name, string package_name) => (bool granted);
|
||
|
||
// Requests that a corresponding active permission dialog from a prior call to
|
||
// RequestPermission be accepted. This will only be allowed under test
|
||
// conditions.
|
||
// package_name should match what was passed into RequestPermission
|
||
[MinVersion=1] TestModeAcceptPermission@2(string package_name);
|
||
|
||
// Starts a new capture session, binding the session interface to the passed
|
||
// in session request.
|
||
// notifier interface passed in will be used to send messages back to Android
|
||
// for when updates are needed by the Chrome rendering engine
|
||
// package_name should correspond to what was passed into the
|
||
// RequestPermission call
|
||
// size should have the width/height of the buffers used
|
||
// returns null interface in the case the permission was not granted, a valid
|
||
// interface pointer otherwise
|
||
OpenSession@1(ScreenCaptureSessionNotifier notifier,
|
||
string package_name, Size size) =>
|
||
(ScreenCaptureSession? session);
|
||
};
|
||
|
||
// Implemented by Chrome for handling a screen capture session.
|
||
interface ScreenCaptureSession {
|
||
// Called to set the graphics buffer that the screen capture should be
|
||
// rendered to. This call does not return until the rendering is complete to
|
||
// the passed in buffer.
|
||
// graphics_buffer should be a handle to the buffer which corresponds to the
|
||
// surface being rendered to
|
||
// stride is the stride in pixels for each row of the buffer
|
||
SetOutputBuffer@0(handle graphics_buffer, uint32 stride) => ();
|
||
};
|
||
|
||
// Implemented by Android.
|
||
interface ScreenCaptureInstance {
|
||
// Establishes full-duplex communication with the host.
|
||
Init@0(ScreenCaptureHost host_ptr) => ();
|
||
};
|
||
|
||
// Implemented by Android as a callback mechanism.
|
||
interface ScreenCaptureSessionNotifier {
|
||
// This is called when Chrome detects a compositor update but Android is not
|
||
// actively rendering. This will occur if the Android windows are minimized or
|
||
// not animating but Chrome windows are since Android’s rendering stack does
|
||
// not update if nothing in Android itself is changing.
|
||
ForceUpdate@0();
|
||
};
|