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

Commit 4ddc25b9 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

Remove call to getComponent(StatusBar) from ScreenDecorations.

Make ScreenDecorations injectable.

Bug: 143224715
Test: atest SystemUITests
Change-Id: I1087e680202b4ec5b8f21e17dbb88d1ed1ea223e
parent 281fe469
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -81,10 +81,16 @@ import com.android.systemui.util.leak.RotationUtils;
import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Singleton;

import dagger.Lazy;

/**
 * An overlay that draws screen decorations in software (e.g for rounded corners or display cutout)
 * for antialiasing and emulation purposes.
 */
@Singleton
public class ScreenDecorations extends SystemUI implements Tunable {
    private static final boolean DEBUG = false;
    private static final String TAG = "ScreenDecorations";
@@ -94,6 +100,7 @@ public class ScreenDecorations extends SystemUI implements Tunable {
    private static final boolean DEBUG_SCREENSHOT_ROUNDED_CORNERS =
            SystemProperties.getBoolean("debug.screenshot_rounded_corners", false);
    private static final boolean VERBOSE = false;
    private final Lazy<StatusBar> mStatusBarLazy;

    private DisplayManager mDisplayManager;
    private DisplayManager.DisplayListener mDisplayListener;
@@ -132,8 +139,10 @@ public class ScreenDecorations extends SystemUI implements Tunable {
        return result;
    }

    public ScreenDecorations(Context context) {
    @Inject
    public ScreenDecorations(Context context, Lazy<StatusBar> statusBarLazy) {
        super(context);
        mStatusBarLazy = statusBarLazy;
    }

    @Override
@@ -434,13 +443,13 @@ public class ScreenDecorations extends SystemUI implements Tunable {

    private void setupStatusBarPadding(int padding) {
        // Add some padding to all the content near the edge of the screen.
        StatusBar sb = getComponent(StatusBar.class);
        View statusBar = (sb != null ? sb.getStatusBarWindow() : null);
        if (statusBar != null) {
            TunablePadding.addTunablePadding(statusBar.findViewById(R.id.keyguard_header), PADDING,
                    padding, FLAG_END);
        StatusBar statusBar = mStatusBarLazy.get();
        View statusBarWindow = statusBar.getStatusBarWindow();
        if (statusBarWindow != null) {
            TunablePadding.addTunablePadding(statusBarWindow.findViewById(R.id.keyguard_header),
                    PADDING, padding, FLAG_END);

            FragmentHostManager fragmentHostManager = FragmentHostManager.get(statusBar);
            FragmentHostManager fragmentHostManager = FragmentHostManager.get(statusBarWindow);
            fragmentHostManager.addTagListener(CollapsedStatusBarFragment.TAG,
                    new TunablePaddingTagListener(padding, R.id.status_bar));
            fragmentHostManager.addTagListener(QS.TAG,
+6 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.dagger;

import com.android.systemui.LatencyTester;
import com.android.systemui.ScreenDecorations;
import com.android.systemui.SystemUI;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.pip.PipUI;
@@ -73,6 +74,11 @@ public abstract class SystemUIBinder {
    @ClassKey(Recents.class)
    public abstract SystemUI bindRecents(Recents sysui);

    /** Inject into ScreenDecorations. */
    @Binds
    @IntoMap
    @ClassKey(ScreenDecorations.class)
    public abstract SystemUI bindScreenDecorations(ScreenDecorations sysui);

    /** Inject into VolumeUI. */
    @Binds
+10 −4
Original line number Diff line number Diff line
@@ -61,9 +61,13 @@ import com.android.systemui.tuner.TunerService;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import java.util.Collections;

import dagger.Lazy;

@RunWithLooper
@RunWith(AndroidTestingRunner.class)
@SmallTest
@@ -71,16 +75,19 @@ public class ScreenDecorationsTest extends SysuiTestCase {

    private TestableLooper mTestableLooper;
    private ScreenDecorations mScreenDecorations;
    private StatusBar mStatusBar;
    @Mock private StatusBar mStatusBar;
    private WindowManager mWindowManager;
    private FragmentService mFragmentService;
    private FragmentHostManager mFragmentHostManager;
    private TunerService mTunerService;
    private StatusBarWindowView mView;
    private TunablePaddingService mTunablePaddingService;
    @Mock private Lazy<StatusBar> mStatusBarLazy;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);

        mTestableLooper = TestableLooper.get(this);
        mDependency.injectTestDependency(Dependency.MAIN_HANDLER,
                new Handler(mTestableLooper.getLooper()));
@@ -88,11 +95,10 @@ public class ScreenDecorationsTest extends SysuiTestCase {
        mTunerService = mDependency.injectMockDependency(TunerService.class);
        mFragmentService = mDependency.injectMockDependency(FragmentService.class);

        mStatusBar = mock(StatusBar.class);
        mWindowManager = mock(WindowManager.class);
        mView = spy(new StatusBarWindowView(mContext, null));
        when(mStatusBarLazy.get()).thenReturn(mStatusBar);
        when(mStatusBar.getStatusBarWindow()).thenReturn(mView);
        mContext.putComponent(StatusBar.class, mStatusBar);

        Display display = mContext.getSystemService(WindowManager.class).getDefaultDisplay();
        when(mWindowManager.getDefaultDisplay()).thenReturn(display);
@@ -102,7 +108,7 @@ public class ScreenDecorationsTest extends SysuiTestCase {
        when(mFragmentService.getFragmentHostManager(any())).thenReturn(mFragmentHostManager);


        mScreenDecorations = new ScreenDecorations(mContext) {
        mScreenDecorations = new ScreenDecorations(mContext, mStatusBarLazy) {
            @Override
            public void start() {
                super.start();