1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63

ash / components / arc / mojom / chrome_feature_flags.mojom [blame]

// 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);
};