cameraservice: Add metrics for extension sessions
We want to log camera extension usage in cameraservice. This CL adds
the scaffolding for it. Specifically, it does the following:
- Adds CameraExtensionSessionStats.aidl: This is used as the interface
that CameraExtensionSession, CameraService, and CameraServiceProxy
use to parcel extension metrics around.
- Adds 'reportExtensionStats' to ICameraService: To keep the details
of extensions away from cameraservice, CameraExtensionSession is
responsible for collecting and reporting the stats. CameraService
simply maps the reported stats to the current camera session and
passes it to CameraServiceProxy when the session is closed.
Some additional safeguards are added for this function because
CameraExtensionSession can potentially report stats after the
session has already been closed from cameraservice.
Bug: 261470491
Test: No functional change.
`atest CtsCameraTestCases` passes.
`statsd_testdrive 227` confirms that extension metrics are logged
correctly.
Change-Id: I4a9897fc2b09cabb7618e94f8484757735c5e1f3
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
index d84cb00..3214d4c 100644
--- a/services/camera/libcameraservice/CameraService.h
+++ b/services/camera/libcameraservice/CameraService.h
@@ -218,6 +218,9 @@
/*out*/
sp<hardware::camera2::ICameraInjectionSession>* cameraInjectionSession);
+ virtual binder::Status reportExtensionSessionStats(
+ const hardware::CameraExtensionSessionStats& stats, String16* sessionKey /*out*/);
+
// Extra permissions checks
virtual status_t onTransact(uint32_t code, const Parcel& data,
Parcel* reply, uint32_t flags);