tree: f90db0f9f7c255c8b7a42e397ceb32073bd6052b [path history] [tgz]
  1. BUILD.gn
  2. constants.cc
  3. constants.h
  4. fake_hermes_euicc_client.cc
  5. fake_hermes_euicc_client.h
  6. fake_hermes_manager_client.cc
  7. fake_hermes_manager_client.h
  8. fake_hermes_profile_client.cc
  9. fake_hermes_profile_client.h
  10. hermes_client_test_base.cc
  11. hermes_client_test_base.h
  12. hermes_clients.cc
  13. hermes_clients.h
  14. hermes_euicc_client.cc
  15. hermes_euicc_client.h
  16. hermes_euicc_client_unittest.cc
  17. hermes_manager_client.cc
  18. hermes_manager_client.h
  19. hermes_profile_client.cc
  20. hermes_profile_client.h
  21. hermes_profile_client_unittest.cc
  22. hermes_response_status.cc
  23. hermes_response_status.h
  24. hermes_test_utils.cc
  25. hermes_test_utils.h
  26. OWNERS
  27. README.md
chromeos/ash/components/dbus/hermes/README.md

Hermes' D-Bus Client Library

Hermes' D-Bus client library allows Chrome to make API calls to Hermes, ChromeOS' eSIM configuration manager.

This document describes the various D-Bus clients that utilize Hermes' D-Bus interfaces, the Manager Client, EUICC Client, and Profile Client.

Initialization and Shutdown

The D-Bus clients are initialized in the order of Profile client, EUICC client, then Manager client when Ash D-Bus clients are initialized after Chrome's early initialization.

For extensions, the clients are initialized after the Shell Browser's main message loop is created.

The clients are shutdown with the rest of the Ash D-Bus clients after Chrome destroys its threads.

Constants

Success and error codes, along with helpful utility functions related to these codes can be found in hermes_response_status.h.

There are also several constants which are shared between the D-Bus clients to implement a consistent timeout for D-Bus calls.

Hermes Manager Client

The HermesManagerClient class provides an interface for interacting with available EUICCs on a device. This client can be used to:

  • Fetch information about the available EUICC(s) on a device.
  • Listen for additions or removals of EUICC(s).

For detailed documentation on the Hermes Manager DBus API, please refer to org.chromium.Hermes.Manager.xml.

The HermesManagerClient::TestInterface allows you to add fake EUICC entries for ChromeOS unit testing purposes. This interface is implemented in the FakeHermesManagerClient.

Hermes EUICC Client

The EUICC is an embedded UICC which seeks to rectify the physical SIM shortcomings by allowing both for the storage of multiple profiles and for the remote provisioning of profiles. The HermesEuiccClient class provides an interface for interacting with the Hermes EUICC objects. This client can be used to:

  • Read EUICC properties
  • Install/uninstall eSIM profiles on the EUICC
  • Force refresh the list of installed eSIM profiles on the EUICC
  • Perform SM-DS scans for available eSIM profiles
  • Reset the EUICC

For detailed documentation on the Hermes EUICC DBus API, please refer to org.chromium.Hermes.Euicc.xml.

The HermesEuiccClient::TestInterface also provides a number of different APIs for interacting with fake Hermes EUICC service for testing purposes.

  • Add/remove fake carrier profile on the EUICC
  • Queues a Hermes error code that will be returned from a subsequent function call
  • Sets the return for the next call to HermesEuiccClient::InstallProfileFromActivationCode()
  • Miscellaneous behavior such as generate fake activation code, etc

The HermesEuiccClient::TestInterface interface is implemented by FakeHermesEuiccClient.

Hermes Profile Client

The HermesProfileClient class provides an interface for interacting with the to Hermes profile objects. This client can be used to:

  • Rename profile name
  • Enable and disable a carrier profile
  • Get properties for a profile entry
  • Listen for profile property changes

For detailed documentation on the Hermes EUICC DBus API, please refer to org.chromium.Hermes.Profile.xml.

The HermesProfileClient::TestInterface allows you to add fake profile entries for ChromeOS unit testing purposes. This interface is implemented in the FakeHermesProfileClient.