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

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

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

parents 4827cb08 893f0bdc
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);
    }
}