// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module app_management.mojom;

import "chrome/services/app_service/public/mojom/types.mojom";

struct App {
  string id;

  apps.mojom.AppType type;

  // The fields below may be omitted because this struct is also used to signal
  // updates.

  string? title;
  string? description;
  apps.mojom.OptionalBool is_pinned;
  string? version;
  string? size;
};

interface PageHandlerFactory {
  CreatePageHandler(Page page, PageHandler& handler);
};

// Browser interface.
interface PageHandler {
  GetApps();
};

// Frontend interface.
interface Page {
  OnAppsAdded(array<App> apps);
  OnAppChanged(App update);
  OnAppRemoved(string app_id);
};
