chromium/ash/components/arc/mojom/chrome_feature_flags.mojom

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Next MinVersion: 15

module arc.mojom;

// The following values must be matched with `kRoundedWindowCompatStrategy_*`
// constants defined in //ash/components/arc/arc_features.cc.
[Extensible]
enum RoundedWindowCompatStrategy {
  [Default] kDisabled = 0,
  kBottomOnlyGesture = 1,
  kLeftRightBottomGesture = 2,
};

// State of feature flags that ARC++ needs to know from Chrome.
struct FeatureFlags {
  // DEPRECATED: chrome://flags#qs-revamp
  bool deprecated_qs_revamp;
  // chrome://flags#jelly-colors
  bool jelly_colors;
  // DEPRECATED: chrome://flags#arc-trackpad-scroll-touchscreen-emulation
  [MinVersion=2] bool deprecated_trackpad_scroll_touchscreen_emulation = false;
  // chrome://flags#arc-touchscreen-emulation
  [MinVersion=2] bool touchscreen_emulation = true;
  // chrome://flags#arc-rounded-window-compat
  [MinVersion=3] RoundedWindowCompatStrategy rounded_window_compat_strategy;
  // chrome://flags#rounded-windows
  [MinVersion=3] int32 rounded_window_radius;
  // chrome://flags#arc-xdg-mode
  [MinVersion=4] bool xdg_mode;
  // chrome://flags#enable-pip-double-tap-to-resize;
  [MinVersion=5] bool enable_pip_double_tap;
  // chrome://flags#render-arc-notifications-by-chrome;
  [MinVersion=6] bool render_arc_notifications_by_chrome;
  // ash::features::IsGameDashboardEnabled
  [MinVersion=7] bool game_dashboard;
  // chrome://flags#arc-resize-compat;
  [MinVersion=8] bool resize_compat;
  // chrome://flags#arc-ignore-hover-event-anr
  [MinVersion=9] bool ignore_hover_event_anr;
  // chrome://flags#arc-extend-input-anr-timeout
  [MinVersion=10] bool extend_input_anr_timeout;
  // `chromeos::features::IsNotificationWidthIncreaseEnabled()`
  [MinVersion=11] bool notification_width_increase;
  // chrome://flags#arc-friendlier-error-dialog
  [MinVersion=12] bool enable_friendlier_error_dialog;
  // chrome://flags#arc-extend-service-anr-timeout
  [MinVersion=13] bool extend_service_anr_timeout;
  // chrome://flags#arc-extend-intent-anr-timeout
  [MinVersion=14] bool extend_intent_anr_timeout;
};

// This interface provides methods to propagate the feature flag status to
// ARC++.
//
// Next method ID: 2
interface ChromeFeatureFlagsInstance {
  // Notifies ARC which Chrome feature flag is enabled/disabled.
  NotifyFeatureFlags@1(FeatureFlags flags);
};