Add tron logging for phone orientation
Knowing the orientation (landscape vs. portrait) of the phone is a
useful aspect of to know when interpreting user phone interaction. Among
the usecases is analysis of share behavior.
Bug: 122511750
Test: Added unit test in DisplayContentTests.java
Change-Id: Ibf1e2040e2eb082580e1c4a65cf242870460f1ef
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 2452ef0..b1b8e8c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -57,6 +57,7 @@
import android.app.WindowConfiguration;
import android.content.res.Configuration;
import android.graphics.Rect;
+import android.metrics.LogMaker;
import android.os.SystemClock;
import android.platform.test.annotations.Presubmit;
import android.util.DisplayMetrics;
@@ -71,10 +72,13 @@
import androidx.test.filters.SmallTest;
import com.android.dx.mockito.inline.extended.ExtendedMockito;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.nano.MetricsProto;
import com.android.server.wm.utils.WmDisplayCutout;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.Arrays;
@@ -669,6 +673,28 @@
}
}
+ @Test
+ public void testOrientationChangeLogging() {
+ MetricsLogger mockLogger = mock(MetricsLogger.class);
+ Configuration oldConfig = new Configuration();
+ oldConfig.orientation = Configuration.ORIENTATION_LANDSCAPE;
+
+ Configuration newConfig = new Configuration();
+ newConfig.orientation = Configuration.ORIENTATION_PORTRAIT;
+ final DisplayContent displayContent = spy(createNewDisplay());
+ Mockito.doReturn(mockLogger).when(displayContent).getMetricsLogger();
+ Mockito.doReturn(oldConfig).doReturn(newConfig).when(displayContent).getConfiguration();
+
+ displayContent.onConfigurationChanged(newConfig);
+
+ ArgumentCaptor<LogMaker> logMakerCaptor = ArgumentCaptor.forClass(LogMaker.class);
+ verify(mockLogger).write(logMakerCaptor.capture());
+ assertThat(logMakerCaptor.getValue().getCategory(),
+ is(MetricsProto.MetricsEvent.ACTION_PHONE_ORIENTATION_CHANGED));
+ assertThat(logMakerCaptor.getValue().getSubtype(),
+ is(Configuration.ORIENTATION_PORTRAIT));
+ }
+
private boolean isOptionsPanelAtRight(int displayId) {
return (mWm.getPreferredOptionsPanelGravity(displayId) & Gravity.RIGHT) == Gravity.RIGHT;
}