// 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.
#ifndef CHROME_BROWSER_ASH_CROSAPI_BROWSER_SERVICE_HOST_OBSERVER_H_
#define CHROME_BROWSER_ASH_CROSAPI_BROWSER_SERVICE_HOST_OBSERVER_H_
#include "base/observer_list_types.h"
#include "chrome/browser/ash/crosapi/crosapi_id.h"
#include "mojo/public/cpp/bindings/remote_set.h"
namespace crosapi {
namespace mojom {
class BrowserService;
} // namespace mojom
// Interface to observe BrowserService registration from Crosapi clients.
class BrowserServiceHostObserver : public base::CheckedObserver {
public:
// Called when a new BrowserService tied to the CrosapiId gets ready.
// Note that, CrosapiId will be useful to identify where this BrowserService
// comes from.
virtual void OnBrowserServiceConnected(CrosapiId id,
mojo::RemoteSetElementId mojo_id,
mojom::BrowserService* browser_service,
uint32_t browser_service_version) {}
// Called when the BrowserService represented by IDs is disconnected.
// When this is called, mojom::BrowserService is already destroyed.
virtual void OnBrowserServiceDisconnected(CrosapiId id,
mojo::RemoteSetElementId mojo_id) {}
// Called when BrowserServiceHost::RequestRelaunch is called from
// the Crosapi client.
virtual void OnBrowserRelaunchRequested(CrosapiId id) {}
};
} // namespace crosapi
#endif // CHROME_BROWSER_ASH_CROSAPI_BROWSER_SERVICE_HOST_OBSERVER_H_