summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Chris Wren <cwren@google.com> 2020-04-02 10:43:46 -0400
committer Chris Wren <cwren@android.com> 2020-04-03 21:03:39 +0000
commit65a70c93a3787d699dae7c2c0edc302ce5f51268 (patch)
tree037bd7152eaee0165f9643c2f36304211176828d
parentf1a03e07cd65293435a576269f6c28a6c328276d (diff)
add westworld log to global actions
Bug: 147508238 Test: atest GlobalActionsDialogTest Change-Id: I298f4737e022b4d8aff51891a2b283a2c6679ffe
-rw-r--r--packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java25
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java145
2 files changed, 169 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index 6d99ef1829b2..fdd859373685 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -78,10 +78,13 @@ import android.widget.ImageView.ScaleType;
import android.widget.TextView;
import com.android.internal.R;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.colorextraction.ColorExtractor;
import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.internal.colorextraction.drawable.ScrimDrawable;
import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.UiEvent;
+import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.EmergencyAffordanceManager;
@@ -171,6 +174,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
private final IActivityManager mIActivityManager;
private final TelecomManager mTelecomManager;
private final MetricsLogger mMetricsLogger;
+ private final UiEventLogger mUiEventLogger;
private final NotificationShadeDepthController mDepthController;
private final BlurUtils mBlurUtils;
@@ -203,6 +207,23 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
private final ControlsListingController mControlsListingController;
private boolean mAnyControlsProviders = false;
+ @VisibleForTesting
+ public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum {
+ @UiEvent(doc = "The global actions / power menu surface became visible on the screen.")
+ GA_POWER_MENU_OPEN(337);
+
+ private final int mId;
+
+ GlobalActionsEvent(int id) {
+ mId = id;
+ }
+
+ @Override
+ public int getId() {
+ return mId;
+ }
+ }
+
/**
* @param context everything needs a context :(
*/
@@ -223,7 +244,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
ControlsUiController controlsUiController, IWindowManager iWindowManager,
@Background Executor backgroundExecutor,
ControlsListingController controlsListingController,
- ControlsController controlsController) {
+ ControlsController controlsController, UiEventLogger uiEventLogger) {
mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme);
mWindowManagerFuncs = windowManagerFuncs;
mAudioManager = audioManager;
@@ -240,6 +261,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
mIActivityManager = iActivityManager;
mTelecomManager = telecomManager;
mMetricsLogger = metricsLogger;
+ mUiEventLogger = uiEventLogger;
mDepthController = depthController;
mSysuiColorExtractor = colorExtractor;
mStatusBarService = statusBarService;
@@ -997,6 +1019,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
*/
public void onShow(DialogInterface dialog) {
mMetricsLogger.visible(MetricsEvent.POWER_MENU);
+ mUiEventLogger.log(GlobalActionsEvent.GA_POWER_MENU_OPEN);
}
/**
diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java
new file mode 100644
index 000000000000..137a126f539d
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2020 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.globalactions;
+
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.app.IActivityManager;
+import android.app.admin.DevicePolicyManager;
+import android.app.trust.TrustManager;
+import android.content.ContentResolver;
+import android.content.res.Resources;
+import android.media.AudioManager;
+import android.net.ConnectivityManager;
+import android.os.UserManager;
+import android.service.dreams.IDreamManager;
+import android.telephony.TelephonyManager;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+import android.view.IWindowManager;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.UiEventLogger;
+import com.android.internal.statusbar.IStatusBarService;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.colorextraction.SysuiColorExtractor;
+import com.android.systemui.controls.controller.ControlsController;
+import com.android.systemui.controls.management.ControlsListingController;
+import com.android.systemui.controls.ui.ControlsUiController;
+import com.android.systemui.plugins.ActivityStarter;
+import com.android.systemui.plugins.GlobalActions;
+import com.android.systemui.statusbar.BlurUtils;
+import com.android.systemui.statusbar.NotificationShadeDepthController;
+import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
+import com.android.systemui.statusbar.policy.ConfigurationController;
+import com.android.systemui.statusbar.policy.KeyguardStateController;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.concurrent.Executor;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class GlobalActionsDialogTest extends SysuiTestCase {
+ private GlobalActionsDialog mGlobalActionsDialog;
+
+ @Mock private GlobalActions.GlobalActionsManager mWindowManagerFuncs;
+ @Mock private AudioManager mAudioManager;
+ @Mock private IDreamManager mDreamManager;
+ @Mock private DevicePolicyManager mDevicePolicyManager;
+ @Mock private LockPatternUtils mLockPatternUtils;
+ @Mock private BroadcastDispatcher mBroadcastDispatcher;
+ @Mock private ConnectivityManager mConnectivityManager;
+ @Mock private TelephonyManager mTelephonyManager;
+ @Mock private ContentResolver mContentResolver;
+ @Mock private Resources mResources;
+ @Mock private ConfigurationController mConfigurationController;
+ @Mock private ActivityStarter mActivityStarter;
+ @Mock private KeyguardStateController mKeyguardStateController;
+ @Mock private UserManager mUserManager;
+ @Mock private TrustManager mTrustManager;
+ @Mock private IActivityManager mActivityManager;
+ @Mock private MetricsLogger mMetricsLogger;
+ @Mock private NotificationShadeDepthController mDepthController;
+ @Mock private SysuiColorExtractor mColorExtractor;
+ @Mock private IStatusBarService mStatusBarService;
+ @Mock private BlurUtils mBlurUtils;
+ @Mock private NotificationShadeWindowController mNotificationShadeWindowController;
+ @Mock private ControlsUiController mControlsUiController;
+ @Mock private IWindowManager mWindowManager;
+ @Mock private Executor mBackgroundExecutor;
+ @Mock private ControlsListingController mControlsListingController;
+ @Mock private ControlsController mControlsController;
+ @Mock private UiEventLogger mUiEventLogger;
+
+ private TestableLooper mTestableLooper;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ mTestableLooper = TestableLooper.get(this);
+ allowTestableLooperAsMainThread();
+ mGlobalActionsDialog = new GlobalActionsDialog(mContext,
+ mWindowManagerFuncs,
+ mAudioManager,
+ mDreamManager,
+ mDevicePolicyManager,
+ mLockPatternUtils,
+ mBroadcastDispatcher,
+ mConnectivityManager,
+ mTelephonyManager,
+ mContentResolver,
+ null,
+ mResources,
+ mConfigurationController,
+ mActivityStarter,
+ mKeyguardStateController,
+ mUserManager,
+ mTrustManager,
+ mActivityManager,
+ null,
+ mMetricsLogger,
+ mDepthController,
+ mColorExtractor,
+ mStatusBarService,
+ mBlurUtils,
+ mNotificationShadeWindowController,
+ mControlsUiController,
+ mWindowManager,
+ mBackgroundExecutor,
+ mControlsListingController,
+ mControlsController,
+ mUiEventLogger
+ );
+ }
+ @Test
+ public void testShouldLogVisibility() {
+ mGlobalActionsDialog.onShow(null);
+ verify(mUiEventLogger, times(1))
+ .log(GlobalActionsDialog.GlobalActionsEvent.GA_POWER_MENU_OPEN);
+ }
+}