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

Commit b629460f authored by Jason Monk's avatar Jason Monk Committed by android-build-merger
Browse files

Merge "Add checks against incorrect context use in sysui tests" into oc-dev

am: 227e65d8

Change-Id: I3fad5f17321adf92f5f80c8ec04fc8fc1e4128e2
parents d83911cb 227e65d8
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -14,13 +14,18 @@

package com.android.systemui;

import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.app.Fragment;
import android.app.Instrumentation;
import android.support.test.InstrumentationRegistry;
import android.testing.BaseFragmentTest;

import com.android.systemui.utils.leaks.LeakCheckedTest;
import com.android.systemui.utils.leaks.LeakCheckedTest.SysuiLeakCheck;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;

@@ -33,6 +38,7 @@ public abstract class SysuiBaseFragmentTest extends BaseFragmentTest {

    protected final TestableDependency mDependency = new TestableDependency(mContext);
    protected SysuiTestableContext mSysuiContext;
    private Instrumentation mRealInstrumentation;

    public SysuiBaseFragmentTest(Class<? extends Fragment> cls) {
        super(cls);
@@ -44,6 +50,20 @@ public abstract class SysuiBaseFragmentTest extends BaseFragmentTest {
        SystemUIFactory.createFromConfig(mContext);
        // TODO: Figure out another way to give reference to a SysuiTestableContext.
        mSysuiContext = (SysuiTestableContext) mContext;

        mRealInstrumentation = InstrumentationRegistry.getInstrumentation();
        Instrumentation inst = spy(mRealInstrumentation);
        when(inst.getContext()).thenThrow(new RuntimeException(
                "SysUI Tests should use SysuiTestCase#getContext or SysuiTestCase#mContext"));
        when(inst.getTargetContext()).thenThrow(new RuntimeException(
                "SysUI Tests should use SysuiTestCase#getContext or SysuiTestCase#mContext"));
        InstrumentationRegistry.registerInstance(inst, InstrumentationRegistry.getArguments());
    }

    @After
    public void SysuiTeardown() {
        InstrumentationRegistry.registerInstance(mRealInstrumentation,
                InstrumentationRegistry.getArguments());
    }

    @Override
+20 −0
Original line number Diff line number Diff line
@@ -15,6 +15,10 @@
 */
package com.android.systemui;

import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.app.Instrumentation;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
@@ -24,6 +28,7 @@ import android.support.test.filters.SmallTest;
import android.testing.LeakCheck;
import android.util.Log;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;

@@ -42,11 +47,26 @@ public abstract class SysuiTestCase {
    public SysuiTestableContext mContext = new SysuiTestableContext(
            InstrumentationRegistry.getContext(), getLeakCheck());
    public TestableDependency mDependency = new TestableDependency(mContext);
    private Instrumentation mRealInstrumentation;

    @Before
    public void SysuiSetup() throws Exception {
        System.setProperty("dexmaker.share_classloader", "true");
        SystemUIFactory.createFromConfig(mContext);

        mRealInstrumentation = InstrumentationRegistry.getInstrumentation();
        Instrumentation inst = spy(mRealInstrumentation);
        when(inst.getContext()).thenThrow(new RuntimeException(
                "SysUI Tests should use SysuiTestCase#getContext or SysuiTestCase#mContext"));
        when(inst.getTargetContext()).thenThrow(new RuntimeException(
                "SysUI Tests should use SysuiTestCase#getContext or SysuiTestCase#mContext"));
        InstrumentationRegistry.registerInstance(inst, InstrumentationRegistry.getArguments());
    }

    @After
    public void SysuiTeardown() {
        InstrumentationRegistry.registerInstance(mRealInstrumentation,
                InstrumentationRegistry.getArguments());
    }

    protected LeakCheck getLeakCheck() {
+1 −3
Original line number Diff line number Diff line
@@ -41,9 +41,7 @@ public class WakeLockTest extends SysuiTestCase {

    @Before
    public void setUp() {
        Context context = InstrumentationRegistry.getContext();

        mInner = WakeLock.createPartialInner(context, WakeLockTest.class.getName());
        mInner = WakeLock.createPartialInner(mContext, WakeLockTest.class.getName());
        mWakeLock = WakeLock.wrap(mInner);
    }

+2 −4
Original line number Diff line number Diff line
@@ -31,12 +31,10 @@ public class ViewUtils {
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
                LayoutParams.TYPE_APPLICATION_OVERLAY,
                0, PixelFormat.TRANSLUCENT);
        InstrumentationRegistry.getContext()
                .getSystemService(WindowManager.class).addView(view, lp);
        view.getContext().getSystemService(WindowManager.class).addView(view, lp);
    }

    public static void detachView(View view) {
        InstrumentationRegistry.getContext()
                .getSystemService(WindowManager.class).removeViewImmediate(view);
        view.getContext().getSystemService(WindowManager.class).removeViewImmediate(view);
    }
}