blob: c8a555f97c8190d3f23b2396795249cef113b534 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module crosapi.mojom;
import "mojo/public/mojom/base/string16.mojom";
import "url/mojom/url.mojom";
// Corresponds to DlpRulesManager::Level enum.
[Stable, Extensible]
enum DlpRestrictionLevel {
kAllow = 0,
kReport = 1,
kWarn = 2,
kBlock = 3,
[MinVersion=2] kNotSet = 4,
};
// Corresponds to RestrictionLevelAndUrl struct.
[Stable]
struct DlpRestrictionLevelAndUrl {
DlpRestrictionLevel level@0;
url.mojom.Url url@1;
};
// Corresponds to DlpContentRestrictionSet class.
[Stable]
struct DlpRestrictionSet {
DlpRestrictionLevelAndUrl screenshot@0;
DlpRestrictionLevelAndUrl privacy_screen@1;
DlpRestrictionLevelAndUrl print@2;
DlpRestrictionLevelAndUrl screen_share@3;
};
// Captured area.
[Stable]
struct ScreenShareArea {
// All root windows if |window_id| is null.
string? window_id@0;
// Unique identifier for a window from SnapshotSource in screen_manager.mojom.
[MinVersion=3] uint64 snapshot_source_id@1 = 0;
};
// Callback to control the state (pause/resume) of a remote screen share.
[Stable]
interface StateChangeDelegate {
// Request to pause the screen share.
OnPause@0();
// Request to resume the screen share.
OnResume@1();
// Request to stop the screen share. Should be called only once.
OnStop@2();
};
// Interface to communicate from Lacros DLP layer to Ash. Used to notify Ash
// about changes in restrictions applied to web content in Lacros.
//
// Next MinVersion: 4
// Next ID: 4
[Stable, Uuid="793ee9c6-3873-4ea8-a541-894412ddfc0b"]
interface Dlp {
// Called when |restrictions| are changed for window with |window_id|.
DlpRestrictionsUpdated@0(string window_id, DlpRestrictionSet restrictions);
// Called to evaluate screenshare restriction for a window or full screen.
[MinVersion=1] CheckScreenShareRestriction@1(
ScreenShareArea area, mojo_base.mojom.String16 application_title) =>
(bool proceed);
// Called when screen share in Lacros is started.
[MinVersion=2] OnScreenShareStarted@2(string label, ScreenShareArea area,
mojo_base.mojom.String16 application_title,
pending_remote<StateChangeDelegate> delegate);
// Called when screen share in Lacros is stopped.
[MinVersion=2] OnScreenShareStopped@3(string label, ScreenShareArea area);
};