diff options
| author | 2022-01-06 17:23:22 +0100 | |
|---|---|---|
| committer | 2022-01-12 13:44:16 +0100 | |
| commit | 8f59281c974c038e74a6bfb5c1d90da8a4527f9a (patch) | |
| tree | 4180f3d495e6bdd4b997afdb1785fe6d9ea0eafd | |
| parent | 8fe59ba86d9ba700fa00e2e168c302dd95c0f452 (diff) | |
Log FOLD_STATE_DURATION_REPORTED atom
Logs fold state changes provided by FoldStateLoggingProvider to FrameworkStatsLog.
Metric Design doc: eldar/31274625
Bug: 198305865
Test: m statsd_testdrive && ./out/host/linux-x86/bin/statsd_testdrive 414
Change-Id: Id841b43d7e02f513594e69594381f562d4c9e616
3 files changed, 61 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java index cffb2f79ebfb..b23569241f59 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java @@ -28,6 +28,8 @@ import com.android.systemui.media.taptotransfer.receiver.MediaTttChipControllerR import com.android.systemui.media.taptotransfer.sender.MediaTttChipControllerSender; import com.android.systemui.people.PeopleProvider; import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.unfold.FoldStateLogger; +import com.android.systemui.unfold.FoldStateLoggingProvider; import com.android.systemui.unfold.SysUIUnfoldComponent; import com.android.systemui.unfold.UnfoldLatencyTracker; import com.android.systemui.unfold.util.NaturalRotationUnfoldProgressProvider; @@ -139,6 +141,8 @@ public interface SysUIComponent { getMediaTttChipControllerReceiver(); getMediaTttCommandLineHelper(); getUnfoldLatencyTracker().init(); + getFoldStateLoggingProvider().ifPresent(FoldStateLoggingProvider::init); + getFoldStateLogger().ifPresent(FoldStateLogger::init); } /** @@ -166,6 +170,18 @@ public interface SysUIComponent { UnfoldLatencyTracker getUnfoldLatencyTracker(); /** + * Creates a FoldStateLoggingProvider. + */ + @SysUISingleton + Optional<FoldStateLoggingProvider> getFoldStateLoggingProvider(); + + /** + * Creates a FoldStateLogger. + */ + @SysUISingleton + Optional<FoldStateLogger> getFoldStateLogger(); + + /** * Main dependency providing module. */ @SysUISingleton diff --git a/packages/SystemUI/src/com/android/systemui/unfold/FoldStateLogger.kt b/packages/SystemUI/src/com/android/systemui/unfold/FoldStateLogger.kt new file mode 100644 index 000000000000..1451c03fefa0 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/unfold/FoldStateLogger.kt @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.unfold + +import com.android.internal.util.FrameworkStatsLog + +/** Logs fold state changes. */ +class FoldStateLogger(private val foldStateLoggingProvider: FoldStateLoggingProvider) : + FoldStateLoggingProvider.FoldStateLoggingListener { + + fun init() { + foldStateLoggingProvider.addCallback(this) + } + + override fun onFoldUpdate(foldStateUpdate: FoldStateChange) { + FrameworkStatsLog.write( + FrameworkStatsLog.FOLD_STATE_DURATION_REPORTED, + foldStateUpdate.previous, + foldStateUpdate.current, + foldStateUpdate.dtMillis) + } +} diff --git a/packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionModule.kt b/packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionModule.kt index f2c156108ac6..c2fd34c719a0 100644 --- a/packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionModule.kt +++ b/packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionModule.kt @@ -102,6 +102,15 @@ class UnfoldTransitionModule { @Provides @Singleton + fun providesFoldStateLogger( + optionalFoldStateLoggingProvider: Optional<FoldStateLoggingProvider> + ): Optional<FoldStateLogger> = + optionalFoldStateLoggingProvider.map { FoldStateLoggingProvider -> + FoldStateLogger(FoldStateLoggingProvider) + } + + @Provides + @Singleton fun provideUnfoldTransitionConfig(context: Context): UnfoldTransitionConfig = createConfig(context) |