tree: d4d8ec1ffc3b0ebb937c79e967be64d5245cd229 [path history] [tgz]
  1. app/
  2. device_management_storage/
  3. mac/
  4. mojom/
  5. proto/
  6. test/
  7. branding.gni
  8. BUILD.gn
  9. buildflags.gni
  10. crash_client.cc
  11. crash_client.h
  12. crash_client_unittest.cc
  13. DEPS
  14. dm_client.cc
  15. dm_client.h
  16. dm_client_unittest.cc
  17. enterprise_companion.cc
  18. enterprise_companion.h
  19. enterprise_companion_branding.h.in
  20. enterprise_companion_client.cc
  21. enterprise_companion_client.h
  22. enterprise_companion_service.cc
  23. enterprise_companion_service.h
  24. enterprise_companion_service_stub.cc
  25. enterprise_companion_service_stub.h
  26. enterprise_companion_service_unittest.cc
  27. enterprise_companion_status.cc
  28. enterprise_companion_status.h
  29. enterprise_companion_status_unittest.cc
  30. enterprise_companion_version.h.in
  31. event_logger.cc
  32. event_logger.h
  33. event_logger_unittest.cc
  34. installer.h
  35. installer_linux.cc
  36. installer_mac.mm
  37. installer_paths.h
  38. installer_paths_linux.cc
  39. installer_paths_mac.mm
  40. installer_paths_win.cc
  41. installer_posix.cc
  42. installer_posix.h
  43. installer_win.cc
  44. ipc_security.h
  45. ipc_security_linux.cc
  46. ipc_security_mac.cc
  47. ipc_security_win.cc
  48. ipc_support.cc
  49. ipc_support.h
  50. lock.cc
  51. lock.h
  52. main.cc
  53. OWNERS
  54. README.md
  55. url_loader_factory_provider.cc
  56. url_loader_factory_provider.h
  57. url_loader_factory_provider_unittest.cc
chrome/enterprise_companion/README.md

Chrome Enterprise Companion App

Chrome Enterprise Companion App (CECA) is an elevated daemon for MacOS and Windows that handles the enterprise device management features which are not feasible to implement in browser.

The mission of CECA is to empower development of client-side enterprise features and reduce complexity by decoupling enterprise functionality from the updater client.

Design

Event Logging

CECA collects service-related data and transmits that to a remote logging service via the EventLogger interface. The collected data is represented by the proto files in //chrome/enterprise_companion/proto.

To support batching of request and rate-limiting, logs recorded by individual EventLogger instances are flushed to an EventLoggerManager. Flushing occurs either when the EventLogger is destroyed or when requested explicitly.

The manager handles the serialization and transmission of log events to the remote endpoint. If an EventLogger flushes while the manager is rate-limited, the logs will be queued and transmitted as soon as the manager is able.

The EventLogger interface is intended to record both the start and stop of operations. Calling a logging method indicates the start of an operation while invoking the returned callback signifies the end.

The EventLoggerManager will wait 15 minutes between requests. Alternatively, the logging service may respond with timeout, in which case the larger of the two values is used.