diff options
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) |