1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.spa.core.instrumentation
18 
19 import androidx.annotation.VisibleForTesting
20 
21 /**
22  * This class stores some metrics temporary data. Such as the timestamp of the page enter for
23  * calculating the duration time on page.
24  */
25 class MetricsDataModel {
26     @VisibleForTesting
27     val pageTimeStampList = mutableListOf<PageTimeStamp>()
28 
addTimeStampnull29     fun addTimeStamp(dataItem: PageTimeStamp){
30         pageTimeStampList.add(dataItem)
31     }
32 
getPageDurationnull33     fun getPageDuration(pageId: String, removed: Boolean = true): String {
34         val lastItem = pageTimeStampList.findLast { it.pageId == pageId }
35         if (removed && lastItem != null) {
36             pageTimeStampList.remove(lastItem)
37         }
38         return if (lastItem == null) "0"
39             else (System.currentTimeMillis() - lastItem.timeStamp).toString()
40     }
41 }
42