blob: 42287a00a5839f9786669e1fe28b65b5e2232a0d [file] [log] [blame]
/*
* Copyright (C) 2018 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 android.slice.cts;
import android.app.slice.SliceMetrics;
import android.content.Context;
import android.metrics.LogMaker;
import android.metrics.MetricsReader;
import android.net.Uri;
import android.support.test.metricshelper.MetricsAsserts;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
public class SliceMetricsTest {
private static final Uri BASE_URI = Uri.parse("content://android.slice.cts.local/");
private static final Uri SUB_SLICE_URI = Uri.parse("content://android.slice.cts.local/sub");
private final Context mContext = InstrumentationRegistry.getContext();
private MetricsReader mMetricsReader;
private SliceMetrics mSliceMetrics;
@Before
public void setup() {
mSliceMetrics = new SliceMetrics(mContext, BASE_URI);
mMetricsReader = new MetricsReader();
mMetricsReader.checkpoint(); // clear out old logs
}
@Test
public void testLogVisible() {
mSliceMetrics.logVisible();
MetricsAsserts.assertHasLog("Missing slice visible log", mMetricsReader,
getLogMaker().setCategory(MetricsEvent.SLICE).setType(MetricsEvent.TYPE_OPEN));
}
@Test
public void testLogHidden() {
mSliceMetrics.logHidden();
MetricsAsserts.assertHasLog("Missing slice hidden log", mMetricsReader,
getLogMaker().setCategory(MetricsEvent.SLICE).setType(MetricsEvent.TYPE_CLOSE));
}
@Test
public void testLogOnTouch() {
mSliceMetrics.logTouch(0, SUB_SLICE_URI);
MetricsAsserts.assertHasLog("Missing slice touch log", mMetricsReader,
getLogMaker().setCategory(MetricsEvent.SLICE)
.setType(MetricsEvent.TYPE_ACTION)
.addTaggedData(MetricsEvent.FIELD_SUBSLICE_AUTHORITY, SUB_SLICE_URI.getAuthority())
.addTaggedData(MetricsEvent.FIELD_SUBSLICE_PATH, SUB_SLICE_URI.getPath()));
}
private LogMaker getLogMaker() {
LogMaker logMaker = new LogMaker(MetricsEvent.VIEW_UNKNOWN);
logMaker.addTaggedData(MetricsEvent.FIELD_SLICE_AUTHORITY, BASE_URI.getAuthority());
logMaker.addTaggedData(MetricsEvent.FIELD_SLICE_PATH, BASE_URI.getPath());
return logMaker;
}
}