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

Commit 5ea8ea4d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add Unit Tests to guarantee non Pip feature device quality"

parents 345881ed d5c1ec0a
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ import com.android.internal.os.SomeArgs;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.pip.phone.PipMenuActivityController;
import com.android.systemui.pip.phone.PipUpdateThread;
import com.android.systemui.pip.phone.PipUtils;
import com.android.wm.shell.R;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.DisplayController;
@@ -260,6 +261,11 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize
        mSurfaceControlTransactionFactory = SurfaceControl.Transaction::new;
        mSplitScreenOptional = splitScreenOptional;
        mTaskOrganizer = shellTaskOrganizer;

        if (!PipUtils.hasSystemFeature(context)) {
            Log.w(TAG, "Device not support PIP feature");
            return;
        }
        mTaskOrganizer.addListener(this, WINDOWING_MODE_PINNED);
        displayController.addDisplayWindowListener(this);
    }
+1 −5
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.pip.phone;

import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE;

import static com.android.systemui.pip.PipAnimationController.isOutPipDirection;

@@ -30,7 +29,6 @@ import android.app.IActivityManager;
import android.app.RemoteAction;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.ParceledListSlice;
import android.content.res.Configuration;
import android.graphics.Rect;
@@ -278,9 +276,7 @@ public class PipController implements Pip, PipTaskOrganizer.PipTransitionCallbac
        mContext = context;
        mActivityManager = ActivityManager.getService();

        PackageManager pm = context.getPackageManager();
        boolean supportsPip = pm.hasSystemFeature(FEATURE_PICTURE_IN_PICTURE);
        if (supportsPip) {
        if (PipUtils.hasSystemFeature(mContext)) {
            initController(context, broadcastDispatcher, configController, deviceConfig,
                    displayController, floatingContentCoordinator, sysUiState, pipBoundsHandler,
                    pipSurfaceTransactionHelper, pipTaskOrganizer, pipUiEventLogger);
+11 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.pip.phone;

import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE;

import android.app.ActivityTaskManager;
import android.app.ActivityTaskManager.RootTaskInfo;
@@ -57,4 +58,14 @@ public class PipUtils {
        }
        return new Pair<>(null, 0);
    }

    /**
     * The util to check if device has PIP feature
     *
     * @param context application context
     * @return true if device has PIP feature, false otherwise.
     */
    public static boolean hasSystemFeature(Context context) {
        return context.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE);
    }
}
+5 −3
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.recents;

import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE;
import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
import static android.view.MotionEvent.ACTION_CANCEL;
import static android.view.MotionEvent.ACTION_DOWN;
@@ -65,6 +64,7 @@ import android.view.accessibility.AccessibilityManager;
import androidx.annotation.NonNull;

import com.android.internal.accessibility.dialog.AccessibilityButtonChooserActivity;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.policy.ScreenDecorationsUtils;
import com.android.internal.util.ScreenshotHelper;
import com.android.systemui.Dumpable;
@@ -77,6 +77,7 @@ import com.android.systemui.navigationbar.NavigationBarView;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.pip.Pip;
import com.android.systemui.pip.PipAnimationController;
import com.android.systemui.pip.phone.PipUtils;
import com.android.systemui.recents.OverviewProxyService.OverviewProxyListener;
import com.android.systemui.settings.CurrentUserTracker;
import com.android.systemui.shared.recents.IOverviewProxy;
@@ -155,7 +156,8 @@ public class OverviewProxyService extends CurrentUserTracker implements
    private boolean mSupportsRoundedCornersOnWindows;
    private int mNavBarMode = NAV_BAR_MODE_3BUTTON;

    private ISystemUiProxy mSysUiProxy = new ISystemUiProxy.Stub() {
    @VisibleForTesting
    public ISystemUiProxy mSysUiProxy = new ISystemUiProxy.Stub() {

        @Override
        public void startScreenPinning(int taskId) {
@@ -624,7 +626,7 @@ public class OverviewProxyService extends CurrentUserTracker implements
        super(broadcastDispatcher);
        mContext = context;
        mPipOptional = pipOptional;
        mHasPipFeature = mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE);
        mHasPipFeature = PipUtils.hasSystemFeature(mContext);
        mStatusBarOptionalLazy = statusBarOptionalLazy;
        mHandler = new Handler();
        mNavBarControllerLazy = navBarControllerLazy;
+5 −2
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.model.SysUiState;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.pip.Pip;
import com.android.systemui.pip.phone.PipUtils;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.shared.tracing.ProtoTraceable;
@@ -57,7 +58,6 @@ import com.android.wm.shell.protolog.ShellProtoLogImpl;
import com.android.wm.shell.splitscreen.SplitScreen;

import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Optional;
@@ -103,7 +103,6 @@ public final class WMShell extends SystemUI
            ProtoTracer protoTracer) {
        super(context);
        mCommandQueue = commandQueue;
        mCommandQueue.addCallback(this);
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mActivityManagerWrapper = activityManagerWrapper;
        mDisplayImeController = displayImeController;
@@ -120,6 +119,7 @@ public final class WMShell extends SystemUI

    @Override
    public void start() {
        mCommandQueue.addCallback(this);
        // This is to prevent circular init problem by separating registration step out of its
        // constructor. And make sure the initialization of DisplayImeController won't depend on
        // specific feature anymore.
@@ -131,6 +131,9 @@ public final class WMShell extends SystemUI

    @VisibleForTesting
    void initPip(Pip pip) {
        if (!PipUtils.hasSystemFeature(mContext)) {
            return;
        }
        mCommandQueue.addCallback(new CommandQueue.Callbacks() {
            @Override
            public void showPictureInPictureMenu() {
Loading