chromium/chrome/browser/ui/webui/app_service_internals/app_service_internals.mojom

// 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 mojom.app_service_internals;

// Contains debugging information for a single installed app.
struct AppInfo {
  // The unique ID for the app.
  string id;

  // The app's human-readable name.
  string name;

  // Preformatted plain-text containing information about the internal state of
  // the app.
  // This is for debug WebUI only, so it is ok to send unstructured string data.
  string debug_info;
};

// Contains debugging information for the PreferredAppsList data for a single
// installed app.
struct PreferredAppInfo {
  // The unique ID for the app.
  string id;

  // The app's human-readable name.
  string name;

  // Preformatted plain-text containing the app's preferred intent filters.
  string preferred_filters;
};

// Contains debugging information for a single promise app.
struct PromiseAppInfo {
  // The package ID for the promise app.
  string package_id;

  // Preformatted plain-text containing information about the internal state of
  // the promise app.
  // This is for debug WebUI only, so it is ok to send unstructured string data.
  string debug_info;
};

// Contains debugging information for capability access by a single app.
struct AppCapabilityInfo {
  // The app's human-readable name.
  string name;

  // Preformatted plain-text containing information about system capabilities
  // being accessed by the app.
  // This is for debug WebUI only, so it is ok to send unstructured string data.
  string debug_info;
};

// Container struct for App Service debugging information.
struct DebugInfo {
  // Debug information about every installed app.
  array<AppInfo> app_list;

  // Debug information about preferred app preferences.
  array<PreferredAppInfo> preferred_app_list;

  // Debug information about every promise app. Will always be empty on non-Ash
  // platforms.
  array<PromiseAppInfo> promise_app_list;

  // Debug information about system capabilities being accessed by apps.
  array<AppCapabilityInfo> app_capability_list;
};

// Handler providing access to App Service information from the
// chrome://app-service-internals WebUI.
interface AppServiceInternalsPageHandler {
  // Returns debug information about the state of App Service. Will be null if
  // App Service is not available for the profile.
  GetDebugInfo() => (DebugInfo? debug_info);
};