| Index: chrome/android/javatests/src/org/chromium/chrome/browser/SmartClipProviderTest.java
 | 
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/SmartClipProviderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/SmartClipProviderTest.java
 | 
| index 66b84d65b79866884ea8750ad4b9b22b3d015595..74e29521707db24c641f53e2c5fcac1b6dc7e33a 100644
 | 
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/SmartClipProviderTest.java
 | 
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/SmartClipProviderTest.java
 | 
| @@ -17,20 +17,11 @@
 | 
|  import android.view.View;
 | 
|  import android.view.ViewGroup;
 | 
|  
 | 
| -import org.junit.After;
 | 
| -import org.junit.Assert;
 | 
| -import org.junit.Before;
 | 
| -import org.junit.Rule;
 | 
| -import org.junit.Test;
 | 
| -import org.junit.runner.RunWith;
 | 
| -
 | 
|  import org.chromium.base.ThreadUtils;
 | 
|  import org.chromium.base.test.util.CallbackHelper;
 | 
| -import org.chromium.base.test.util.CommandLineFlags;
 | 
|  import org.chromium.base.test.util.Feature;
 | 
|  import org.chromium.base.test.util.RetryOnFailure;
 | 
| -import org.chromium.chrome.test.ChromeActivityTestRule;
 | 
| -import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 | 
| +import org.chromium.chrome.test.ChromeActivityTestCaseBase;
 | 
|  
 | 
|  import java.lang.reflect.Method;
 | 
|  import java.util.concurrent.TimeoutException;
 | 
| @@ -38,18 +29,11 @@
 | 
|  /**
 | 
|   * Tests for the SmartClipProvider.
 | 
|   */
 | 
| -@RunWith(ChromeJUnit4ClassRunner.class)
 | 
| -@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE,
 | 
| -        ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG})
 | 
| -public class SmartClipProviderTest implements Handler.Callback {
 | 
| +public class SmartClipProviderTest
 | 
| +        extends ChromeActivityTestCaseBase<ChromeActivity> implements Handler.Callback {
 | 
|      // This is a key for meta-data in the package manifest. It should NOT
 | 
|      // change, as OEMs will use it when they look for the SmartClipProvider
 | 
|      // interface.
 | 
| -
 | 
| -    @Rule
 | 
| -    public ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
 | 
| -            new ChromeActivityTestRule<>(ChromeActivity.class);
 | 
| -
 | 
|      private static final String SMART_CLIP_PROVIDER_KEY =
 | 
|              "org.chromium.content.browser.SMART_CLIP_PROVIDER";
 | 
|  
 | 
| @@ -98,17 +82,26 @@
 | 
|      private Method mSetSmartClipResultHandlerMethod;
 | 
|      private Method mExtractSmartClipDataMethod;
 | 
|  
 | 
| -    @Before
 | 
| +    public SmartClipProviderTest() {
 | 
| +        super(ChromeActivity.class);
 | 
| +    }
 | 
| +
 | 
| +    @Override
 | 
| +    public void startMainActivity() throws InterruptedException {
 | 
| +        startMainActivityOnBlankPage();
 | 
| +    }
 | 
| +
 | 
| +    @Override
 | 
|      public void setUp() throws Exception {
 | 
| -        mActivityTestRule.startMainActivityOnBlankPage();
 | 
| -        mActivity = mActivityTestRule.getActivity();
 | 
| +        super.setUp();
 | 
| +        mActivity = getActivity();
 | 
|          mCallbackHelper = new MyCallbackHelper();
 | 
|          mHandlerThread = new HandlerThread("ContentViewTest thread");
 | 
|          mHandlerThread.start();
 | 
|          mHandler = new Handler(mHandlerThread.getLooper(), this);
 | 
|  
 | 
|          mSmartClipProviderClass = getSmartClipProviderClass();
 | 
| -        Assert.assertNotNull(mSmartClipProviderClass);
 | 
| +        assertNotNull(mSmartClipProviderClass);
 | 
|          mSetSmartClipResultHandlerMethod = mSmartClipProviderClass.getDeclaredMethod(
 | 
|                  "setSmartClipResultHandler", new Class[] { Handler.class });
 | 
|          mExtractSmartClipDataMethod = mSmartClipProviderClass.getDeclaredMethod(
 | 
| @@ -116,13 +109,17 @@
 | 
|                  new Class[] { Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE });
 | 
|      }
 | 
|  
 | 
| -    @After
 | 
|      @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
 | 
| +    @Override
 | 
|      public void tearDown() throws Exception {
 | 
| -        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
 | 
| -            mHandlerThread.quitSafely();
 | 
| -        } else {
 | 
| -            mHandlerThread.quit();
 | 
| +        try {
 | 
| +            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
 | 
| +                mHandlerThread.quitSafely();
 | 
| +            } else {
 | 
| +                mHandlerThread.quit();
 | 
| +            }
 | 
| +        } finally {
 | 
| +            super.tearDown();
 | 
|          }
 | 
|      }
 | 
|  
 | 
| @@ -130,7 +127,7 @@
 | 
|      @Override
 | 
|      public boolean handleMessage(Message msg) {
 | 
|          Bundle bundle = msg.getData();
 | 
| -        Assert.assertNotNull(bundle);
 | 
| +        assertNotNull(bundle);
 | 
|          String url = bundle.getString("url");
 | 
|          String title = bundle.getString("title");
 | 
|          String text = bundle.getString("text");
 | 
| @@ -147,7 +144,7 @@
 | 
|                  mActivity.getPackageName(), PackageManager.GET_META_DATA);
 | 
|          Bundle bundle = ai.metaData;
 | 
|          String className = bundle.getString(SMART_CLIP_PROVIDER_KEY);
 | 
| -        Assert.assertNotNull(className);
 | 
| +        assertNotNull(className);
 | 
|          return Class.forName(className);
 | 
|      }
 | 
|  
 | 
| @@ -167,7 +164,6 @@
 | 
|          return null;
 | 
|      }
 | 
|  
 | 
| -    @Test
 | 
|      @MediumTest
 | 
|      @Feature({"SmartClip"})
 | 
|      @RetryOnFailure
 | 
| @@ -179,32 +175,31 @@
 | 
|                  // This emulates what OEM will be doing when they want to call
 | 
|                  // functions on SmartClipProvider through view hierarchy.
 | 
|  
 | 
| -                Object scp = findSmartClipProvider(
 | 
| -                        mActivityTestRule.getActivity().findViewById(android.R.id.content));
 | 
| -                Assert.assertNotNull(scp);
 | 
| +                Object scp =
 | 
| +                        findSmartClipProvider(getActivity().findViewById(android.R.id.content));
 | 
| +                assertNotNull(scp);
 | 
|                  try {
 | 
|                      mSetSmartClipResultHandlerMethod.invoke(scp, mHandler);
 | 
|                      mExtractSmartClipDataMethod.invoke(
 | 
|                              scp, rect.left, rect.top, rect.width(), rect.height());
 | 
|                  } catch (Exception e) {
 | 
|                      e.printStackTrace();
 | 
| -                    Assert.fail();
 | 
| +                    fail();
 | 
|                  }
 | 
|              }
 | 
|          });
 | 
|          mCallbackHelper.waitForCallback(0, 1);  // call count: 0 --> 1
 | 
| -        Assert.assertEquals("about:blank", mCallbackHelper.getTitle());
 | 
| -        Assert.assertEquals("about:blank", mCallbackHelper.getUrl());
 | 
| -        Assert.assertNotNull(mCallbackHelper.getText());
 | 
| -        Assert.assertNotNull(mCallbackHelper.getHtml());
 | 
| -        Assert.assertNotNull(mCallbackHelper.getRect());
 | 
| -        Assert.assertEquals(rect.left, mCallbackHelper.getRect().left);
 | 
| -        Assert.assertEquals(rect.top, mCallbackHelper.getRect().top);
 | 
| -        Assert.assertEquals(rect.width(), mCallbackHelper.getRect().width());
 | 
| -        Assert.assertEquals(rect.height(), mCallbackHelper.getRect().height());
 | 
| -    }
 | 
| -
 | 
| -    @Test
 | 
| +        assertEquals("about:blank", mCallbackHelper.getTitle());
 | 
| +        assertEquals("about:blank", mCallbackHelper.getUrl());
 | 
| +        assertNotNull(mCallbackHelper.getText());
 | 
| +        assertNotNull(mCallbackHelper.getHtml());
 | 
| +        assertNotNull(mCallbackHelper.getRect());
 | 
| +        assertEquals(rect.left, mCallbackHelper.getRect().left);
 | 
| +        assertEquals(rect.top, mCallbackHelper.getRect().top);
 | 
| +        assertEquals(rect.width(), mCallbackHelper.getRect().width());
 | 
| +        assertEquals(rect.height(), mCallbackHelper.getRect().height());
 | 
| +    }
 | 
| +
 | 
|      @MediumTest
 | 
|      @Feature({"SmartClip"})
 | 
|      @RetryOnFailure
 | 
| @@ -212,9 +207,9 @@
 | 
|          ThreadUtils.runOnUiThreadBlocking(new Runnable() {
 | 
|              @Override
 | 
|              public void run() {
 | 
| -                Object scp = findSmartClipProvider(
 | 
| -                        mActivityTestRule.getActivity().findViewById(android.R.id.content));
 | 
| -                Assert.assertNotNull(scp);
 | 
| +                Object scp =
 | 
| +                        findSmartClipProvider(getActivity().findViewById(android.R.id.content));
 | 
| +                assertNotNull(scp);
 | 
|                  try {
 | 
|                      // Galaxy Note 4 has a bug where it doesn't always set the handler first; in
 | 
|                      // that case, we shouldn't crash: http://crbug.com/710147
 | 
| @@ -226,7 +221,7 @@
 | 
|                      mExtractSmartClipDataMethod.invoke(scp, 10, 20, 100, 70);
 | 
|                  } catch (Exception e) {
 | 
|                      e.printStackTrace();
 | 
| -                    Assert.fail();
 | 
| +                    fail();
 | 
|                  }
 | 
|              }
 | 
|          });
 | 
| 
 |