prefs.mojom 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. module crosapi.mojom;
  5. import "mojo/public/mojom/base/values.mojom";
  6. // Pref paths.
  7. [Stable, Extensible]
  8. enum PrefPath {
  9. [Default] kUnknown = 0,
  10. // M89: metrics::prefs::kMetricsReportingEnabled (local state).
  11. kMetricsReportingEnabled = 1,
  12. // M89: ash::prefs::kAccessibilitySpokenFeedbackEnabled (profile).
  13. // Note this writes to a different prefstore than the extension version below.
  14. kAccessibilitySpokenFeedbackEnabled = 2,
  15. // M90: ash::prefs::kDeviceSystemWideTracingEnabled (local state).
  16. [MinVersion=1] kDeviceSystemWideTracingEnabled = 3,
  17. // M98: prefs::kDnsOverHttpsMode (local state)
  18. [MinVersion=2] kDnsOverHttpsMode = 4,
  19. // M98: prefs::kDnsOverHttpsTemplates (local state)
  20. [MinVersion=2] kDnsOverHttpsTemplates = 5,
  21. // M98: prefs::kDockedMagnifierEnabled (extension).
  22. [MinVersion=3]
  23. kDockedMagnifierEnabled = 6,
  24. // M98: prefs::kAccessibilityAutoclickEnabled (extension).
  25. [MinVersion=3]
  26. kAccessibilityAutoclickEnabled = 7,
  27. // M98: prefs::kAccessibilityCaretHighlightEnabled (extension).
  28. [MinVersion=3]
  29. kAccessibilityCaretHighlightEnabled = 8,
  30. // M98: prefs::kAccessibilityCursorColorEnabled (extension).
  31. [MinVersion=3]
  32. kAccessibilityCursorColorEnabled = 9,
  33. // M98: prefs::kAccessibilityCursorHighlightEnabled (extension).
  34. [MinVersion=3]
  35. kAccessibilityCursorHighlightEnabled = 10,
  36. // M98: prefs::kAccessibilityDictationEnabled (extension).
  37. [MinVersion=3]
  38. kAccessibilityDictationEnabled = 11,
  39. // M98: prefs::kAccessibilityFocusHighlightEnabled (extension).
  40. [MinVersion=3]
  41. kAccessibilityFocusHighlightEnabled = 12,
  42. // M98: prefs::kAccessibilityHighContrastEnabled (extension).
  43. [MinVersion=3]
  44. kAccessibilityHighContrastEnabled = 13,
  45. // M98: prefs::kAccessibilityLargeCursorEnabled (extension).
  46. [MinVersion=3]
  47. kAccessibilityLargeCursorEnabled = 14,
  48. // M98: prefs::kAccessibilityScreenMagnifierEnabled (extension).
  49. [MinVersion=3]
  50. kAccessibilityScreenMagnifierEnabled = 15,
  51. // M98: prefs::kAccessibilitySelectToSpeakEnabled (extension).
  52. [MinVersion=3]
  53. kAccessibilitySelectToSpeakEnabled = 16,
  54. // M98: prefs::kAccessibilitySpokenFeedbackEnabled (extension).
  55. // Note this writes to a different prefstore than the profile version above.
  56. [MinVersion=3]
  57. kExtensionAccessibilitySpokenFeedbackEnabled = 17,
  58. // M98: prefs::kAccessibilityStickyKeysEnabled (extension).
  59. [MinVersion=3]
  60. kAccessibilityStickyKeysEnabled = 18,
  61. // M98: prefs::kAccessibilitySwitchAccessEnabled (extension).
  62. [MinVersion=3]
  63. kAccessibilitySwitchAccessEnabled = 19,
  64. // M98: prefs::kAccessibilityVirtualKeyboardEnabled (extension).
  65. [MinVersion=3]
  66. kAccessibilityVirtualKeyboardEnabled = 20,
  67. // M100: quick_answers::prefs::kQuickAnswersEnabled (profile)
  68. [MinVersion=4] kQuickAnswersEnabled = 21,
  69. // M100: quick_answers::prefs::kQuickAnswersConsentStatus (profile)
  70. [MinVersion=4] kQuickAnswersConsentStatus = 22,
  71. // M100: quick_answers::prefs::kQuickAnswersDefinitionEnabled (profile)
  72. [MinVersion=4] kQuickAnswersDefinitionEnabled = 23,
  73. // M100: quick_answers::prefs::kQuickAnswersTranslationEnabled (profile)
  74. [MinVersion=4] kQuickAnswersTranslationEnabled = 24,
  75. // M100: quick_answers::prefs::kQuickAnswersUnitConversionEnabled (profile)
  76. [MinVersion=4] kQuickAnswersUnitConversionEnabled = 25,
  77. // M100: quick_answers::prefs::kQuickAnswersNoticeImpressionCount (profile)
  78. [MinVersion=4] kQuickAnswersNoticeImpressionCount = 26,
  79. // M100: quick_answers::prefs::kQuickAnswersNoticeImpressionDuration (profile)
  80. [MinVersion=4] kQuickAnswersNoticeImpressionDuration = 27,
  81. // M100: language::prefs::kPreferredLanguages (profile)
  82. [MinVersion=4] kPreferredLanguages = 28,
  83. // M100: language::prefs::kApplicationLocale (profile)
  84. [MinVersion=4] kApplicationLocale = 29,
  85. // M104: prefs::kSharedStorage (profile)
  86. [MinVersion=5] kSharedStorage = 30,
  87. // M104: prefs::kProtectedContentDefault (extension)
  88. [MinVersion=6] kProtectedContentDefault = 31,
  89. };
  90. // Information about who or what is controlling a particular pref. This is used
  91. // to generate the LevelOfControl on the ChromeSetting. See:
  92. // https://developer.chrome.com/docs/extensions/reference/types/#type-LevelOfControl
  93. // Note that with respect to LevelOfControl, we do not consider extensions in
  94. // ash as extensions. They are treated as a prefstore of higher precedence.
  95. // However, no extensions in ash are expected to set these prefs.
  96. [Stable, Extensible]
  97. enum PrefControlState {
  98. [Default] kDefaultUnknown = 0,
  99. // Controlled by an extension in lacros. Ash does not have enough information
  100. // to know which extension in Lacros is controlling this pref.
  101. kLacrosExtensionControlled = 1,
  102. // This pref is not controlled by an extension in lacros but could be
  103. // controlled by an extension in lacros, because no prefstore of higher
  104. // precedence controls it (for example, the policy prefstore).
  105. kLacrosExtensionControllable = 2,
  106. // This pref is not controlled by an extension in lacros and cannot be
  107. // controlled by an extension in lacros, because a prefstore of higher
  108. // precedence controls it (for example, because it is controlled by policy).
  109. kNotExtensionControllable = 3,
  110. // The provided PrefPath does not map to an extension-controlled pref.
  111. kNotExtensionControlledPrefPath = 4,
  112. };
  113. // Interface for pref observers. Implemented by lacros-chrome. Used by
  114. // ash-chrome to send pref updates.
  115. [Stable, Uuid="07d804d1-3d8d-4da1-b9b9-05f8a6bfe4c4"]
  116. interface PrefObserver {
  117. // Called when an observed pref changes.
  118. OnPrefChanged@0(mojo_base.mojom.Value value);
  119. };
  120. // Interface for prefs. Implemented by ash-chrome.
  121. // Next version: 4
  122. // Next method id: 5
  123. [Stable, Uuid="815df607-0596-46f7-9ed9-14683b4826a3"]
  124. interface Prefs {
  125. // Gets the specified ash pref. Returns empty if ash-chrome does not have path
  126. // registered, or if the pref is not found.
  127. GetPref@0(PrefPath path) => (mojo_base.mojom.Value? value);
  128. // Gets the specified ash pref. Additionally returns the control state of the
  129. // pref.
  130. [MinVersion=3]
  131. GetExtensionPrefWithControl@3(PrefPath path) => (
  132. mojo_base.mojom.Value? value, PrefControlState control);
  133. // Sets the specified ash pref. Does nothing if ash-chrome does not have path
  134. // registered.
  135. SetPref@1(PrefPath path, mojo_base.mojom.Value value) => ();
  136. // Clears the value of the specified ash pref set by lacros.
  137. // The pref must be extension-controlled.
  138. [MinVersion=2]
  139. ClearExtensionControlledPref@4(PrefPath path) => ();
  140. // Adds an observer for ash pref. The observer is fired immediately with the
  141. // current value. Multiple observers may be registered for any given pref.
  142. // Does nothing if ash-chrome does not have path registered.
  143. AddObserver@2(PrefPath path, pending_remote<PrefObserver> observer);
  144. };