Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 960d5c9d authored by Caitlin Shkuratov's avatar Caitlin Shkuratov Committed by Automerger Merge Worker
Browse files

Merge changes I5986ba47,I8ddeafe4,I385e2050,I1f8b2b4e,Iab75c65a, ... into...

Merge changes I5986ba47,I8ddeafe4,I385e2050,I1f8b2b4e,Iab75c65a, ... into tm-qpr-dev am: d756cb55 am: c94e56eb

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21302234



Change-Id: I4179986a5514ec38a32d5f4b73b031e779ef6310
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 013faac0 c94e56eb
Loading
Loading
Loading
Loading
+46 −12
Original line number Original line Diff line number Diff line
@@ -79,10 +79,10 @@ fun <T : Diffable<T>> Flow<T>.logDiffsForTable(
    }
    }
}
}


/**
// Here and below: Various Flow<SomeType> extension functions that are effectively equivalent to the
 * Each time the boolean flow is updated with a new value that's different from the previous value,
// above [logDiffsForTable] method.
 * logs the new value to the given [tableLogBuffer].

 */
/** See [logDiffsForTable(TableLogBuffer, String, T)]. */
fun Flow<Boolean>.logDiffsForTable(
fun Flow<Boolean>.logDiffsForTable(
    tableLogBuffer: TableLogBuffer,
    tableLogBuffer: TableLogBuffer,
    columnPrefix: String,
    columnPrefix: String,
@@ -100,10 +100,8 @@ fun Flow<Boolean>.logDiffsForTable(
        newVal
        newVal
    }
    }
}
}
/**

 * Each time the Int flow is updated with a new value that's different from the previous value, logs
/** See [logDiffsForTable(TableLogBuffer, String, T)]. */
 * the new value to the given [tableLogBuffer].
 */
fun Flow<Int>.logDiffsForTable(
fun Flow<Int>.logDiffsForTable(
    tableLogBuffer: TableLogBuffer,
    tableLogBuffer: TableLogBuffer,
    columnPrefix: String,
    columnPrefix: String,
@@ -122,10 +120,26 @@ fun Flow<Int>.logDiffsForTable(
    }
    }
}
}


/**
/** See [logDiffsForTable(TableLogBuffer, String, T)]. */
 * Each time the String? flow is updated with a new value that's different from the previous value,
fun Flow<Int?>.logDiffsForTable(
 * logs the new value to the given [tableLogBuffer].
    tableLogBuffer: TableLogBuffer,
 */
    columnPrefix: String,
    columnName: String,
    initialValue: Int?,
): Flow<Int?> {
    val initialValueFun = {
        tableLogBuffer.logChange(columnPrefix, columnName, initialValue)
        initialValue
    }
    return this.pairwiseBy(initialValueFun) { prevVal, newVal: Int? ->
        if (prevVal != newVal) {
            tableLogBuffer.logChange(columnPrefix, columnName, newVal)
        }
        newVal
    }
}

/** See [logDiffsForTable(TableLogBuffer, String, T)]. */
fun Flow<String?>.logDiffsForTable(
fun Flow<String?>.logDiffsForTable(
    tableLogBuffer: TableLogBuffer,
    tableLogBuffer: TableLogBuffer,
    columnPrefix: String,
    columnPrefix: String,
@@ -143,3 +157,23 @@ fun Flow<String?>.logDiffsForTable(
        newVal
        newVal
    }
    }
}
}

/** See [logDiffsForTable(TableLogBuffer, String, T)]. */
fun <T> Flow<List<T>>.logDiffsForTable(
    tableLogBuffer: TableLogBuffer,
    columnPrefix: String,
    columnName: String,
    initialValue: List<T>,
): Flow<List<T>> {
    val initialValueFun = {
        tableLogBuffer.logChange(columnPrefix, columnName, initialValue.toString())
        initialValue
    }
    return this.pairwiseBy(initialValueFun) { prevVal, newVal: List<T> ->
        if (prevVal != newVal) {
            // TODO(b/267761156): Can we log list changes without using toString?
            tableLogBuffer.logChange(columnPrefix, columnName, newVal.toString())
        }
        newVal
    }
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -27,7 +27,7 @@ data class TableChange(
    var columnName: String = "",
    var columnName: String = "",
    var type: DataType = DataType.EMPTY,
    var type: DataType = DataType.EMPTY,
    var bool: Boolean = false,
    var bool: Boolean = false,
    var int: Int = 0,
    var int: Int? = null,
    var str: String? = null,
    var str: String? = null,
) {
) {
    /** Resets to default values so that the object can be recycled. */
    /** Resets to default values so that the object can be recycled. */
@@ -54,7 +54,7 @@ data class TableChange(
    }
    }


    /** Sets this to store an int change. */
    /** Sets this to store an int change. */
    fun set(value: Int) {
    fun set(value: Int?) {
        type = DataType.INT
        type = DataType.INT
        int = value
        int = value
    }
    }
+2 −2
Original line number Original line Diff line number Diff line
@@ -138,7 +138,7 @@ class TableLogBuffer(
    }
    }


    /** Logs a Int change. */
    /** Logs a Int change. */
    fun logChange(prefix: String, columnName: String, value: Int) {
    fun logChange(prefix: String, columnName: String, value: Int?) {
        logChange(systemClock.currentTimeMillis(), prefix, columnName, value)
        logChange(systemClock.currentTimeMillis(), prefix, columnName, value)
    }
    }


@@ -155,7 +155,7 @@ class TableLogBuffer(
        change.set(value)
        change.set(value)
    }
    }


    private fun logChange(timestamp: Long, prefix: String, columnName: String, value: Int) {
    private fun logChange(timestamp: Long, prefix: String, columnName: String, value: Int?) {
        val change = obtain(timestamp, prefix, columnName)
        val change = obtain(timestamp, prefix, columnName)
        change.set(value)
        change.set(value)
    }
    }
+31 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2023 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.statusbar.pipeline.dagger

import javax.inject.Qualifier

/**
 * Logs for mobile data that's **the same across all connections**.
 *
 * This buffer should only be used for the mobile parent classes like [MobileConnectionsRepository]
 * and [MobileIconsInteractor]. It should *not* be used for classes that represent an individual
 * connection, like [MobileConnectionRepository] or [MobileIconInteractor].
 */
@Qualifier
@MustBeDocumented
@Retention(AnnotationRetention.RUNTIME)
annotation class MobileSummaryLog
+7 −0
Original line number Original line Diff line number Diff line
@@ -118,5 +118,12 @@ abstract class StatusBarPipelineModule {
        fun provideAirplaneTableLogBuffer(factory: TableLogBufferFactory): TableLogBuffer {
        fun provideAirplaneTableLogBuffer(factory: TableLogBufferFactory): TableLogBuffer {
            return factory.create("AirplaneTableLog", 30)
            return factory.create("AirplaneTableLog", 30)
        }
        }

        @Provides
        @SysUISingleton
        @MobileSummaryLog
        fun provideMobileSummaryLogBuffer(factory: TableLogBufferFactory): TableLogBuffer {
            return factory.create("MobileSummaryLog", 100)
        }
    }
    }
}
}
Loading