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
This commit is contained in:
Nicolo' Mazzucato
2022-01-06 17:23:22 +01:00
parent 8fe59ba86d
commit 8f59281c97
3 changed files with 61 additions and 0 deletions

View File

@@ -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);
}
/**
@@ -165,6 +169,18 @@ public interface SysUIComponent {
@SysUISingleton
UnfoldLatencyTracker getUnfoldLatencyTracker();
/**
* Creates a FoldStateLoggingProvider.
*/
@SysUISingleton
Optional<FoldStateLoggingProvider> getFoldStateLoggingProvider();
/**
* Creates a FoldStateLogger.
*/
@SysUISingleton
Optional<FoldStateLogger> getFoldStateLogger();
/**
* Main dependency providing module.
*/

View File

@@ -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)
}
}

View File

@@ -100,6 +100,15 @@ class UnfoldTransitionModule {
FoldStateLoggingProviderImpl(foldStateProvider, SystemClockImpl())
}
@Provides
@Singleton
fun providesFoldStateLogger(
optionalFoldStateLoggingProvider: Optional<FoldStateLoggingProvider>
): Optional<FoldStateLogger> =
optionalFoldStateLoggingProvider.map { FoldStateLoggingProvider ->
FoldStateLogger(FoldStateLoggingProvider)
}
@Provides
@Singleton
fun provideUnfoldTransitionConfig(context: Context): UnfoldTransitionConfig =