| Index: chrome/android/javatests_shell/src/org/chromium/chrome/browser/feedback/FeedbackCollectorTest.java
|
| diff --git a/chrome/android/javatests_shell/src/org/chromium/chrome/browser/feedback/FeedbackCollectorTest.java b/chrome/android/javatests_shell/src/org/chromium/chrome/browser/feedback/FeedbackCollectorTest.java
|
| deleted file mode 100644
|
| index 9e3362be4da9eb179090872321339c666450c407..0000000000000000000000000000000000000000
|
| --- a/chrome/android/javatests_shell/src/org/chromium/chrome/browser/feedback/FeedbackCollectorTest.java
|
| +++ /dev/null
|
| @@ -1,344 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package org.chromium.chrome.browser.feedback;
|
| -
|
| -import android.app.Activity;
|
| -import android.graphics.Bitmap;
|
| -import android.os.Bundle;
|
| -import android.test.suitebuilder.annotation.SmallTest;
|
| -
|
| -import org.chromium.base.ThreadUtils;
|
| -import org.chromium.base.test.util.Feature;
|
| -import org.chromium.chrome.browser.profiles.Profile;
|
| -import org.chromium.chrome.shell.ChromeShellActivity;
|
| -import org.chromium.chrome.shell.ChromeShellTab;
|
| -import org.chromium.chrome.shell.ChromeShellTestBase;
|
| -import org.chromium.content.browser.test.util.UiUtils;
|
| -
|
| -import java.util.HashMap;
|
| -import java.util.Map;
|
| -import java.util.concurrent.Callable;
|
| -import java.util.concurrent.Semaphore;
|
| -import java.util.concurrent.TimeUnit;
|
| -import java.util.concurrent.atomic.AtomicBoolean;
|
| -import java.util.concurrent.atomic.AtomicReference;
|
| -
|
| -import javax.annotation.Nullable;
|
| -
|
| -/**
|
| - * Test for {@link FeedbackCollector}.
|
| - */
|
| -public class FeedbackCollectorTest extends ChromeShellTestBase {
|
| - private static final int CONNECTIVITY_TASK_TIMEOUT_MS = 10;
|
| -
|
| - private ChromeShellActivity mActivity;
|
| - private Profile mProfile;
|
| - private TestFeedbackCollector mCollector;
|
| - private TestConnectivityTask mTestConnectivityTask;
|
| -
|
| - /**
|
| - * Class for facilitating testing of {@link FeedbackCollector}. All public methods are
|
| - * automatically run on the UI thread, to simplify testing code.
|
| - *
|
| - * In addition, the {@link FeedbackCollector#init} method is overridden to ensure
|
| - * no real tasks are started during creation.
|
| - */
|
| - class TestFeedbackCollector extends FeedbackCollector {
|
| - private final AtomicBoolean mTimedOut = new AtomicBoolean(false);
|
| -
|
| - TestFeedbackCollector(
|
| - Activity activity, Profile profile, String url, FeedbackResult callback) {
|
| - super(activity, profile, url, callback);
|
| - }
|
| -
|
| - @Override
|
| - void init(Activity activity) {
|
| - mTestConnectivityTask =
|
| - new TestConnectivityTask(mProfile, CONNECTIVITY_TASK_TIMEOUT_MS, null);
|
| - mConnectivityTask = mTestConnectivityTask;
|
| - }
|
| -
|
| - @Override
|
| - public void onResult(final ConnectivityTask.FeedbackData feedbackData) {
|
| - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - TestFeedbackCollector.super.onResult(feedbackData);
|
| - }
|
| - });
|
| - }
|
| -
|
| - @Override
|
| - public void onGotBitmap(@Nullable final Bitmap bitmap, final boolean success) {
|
| - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - TestFeedbackCollector.super.onGotBitmap(bitmap, success);
|
| - }
|
| - });
|
| - }
|
| -
|
| - @Override
|
| - void maybePostResult() {
|
| - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - TestFeedbackCollector.super.maybePostResult();
|
| - }
|
| - });
|
| - }
|
| -
|
| - @Override
|
| - public void add(final String key, final String value) {
|
| - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - TestFeedbackCollector.super.add(key, value);
|
| - }
|
| - });
|
| - }
|
| -
|
| - @Override
|
| - public void setDescription(final String description) {
|
| - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - TestFeedbackCollector.super.setDescription(description);
|
| - }
|
| - });
|
| - }
|
| -
|
| - @Override
|
| - public String getDescription() {
|
| - return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<String>() {
|
| - @Override
|
| - public String call() {
|
| - return TestFeedbackCollector.super.getDescription();
|
| - }
|
| - });
|
| - }
|
| -
|
| - @Override
|
| - public void setScreenshot(final Bitmap screenshot) {
|
| - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - TestFeedbackCollector.super.setScreenshot(screenshot);
|
| - }
|
| - });
|
| - }
|
| -
|
| - @Override
|
| - public Bitmap getScreenshot() {
|
| - return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Bitmap>() {
|
| - @Override
|
| - public Bitmap call() {
|
| - return TestFeedbackCollector.super.getScreenshot();
|
| - }
|
| - });
|
| - }
|
| -
|
| - @Override
|
| - public Bundle getBundle() {
|
| - return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<Bundle>() {
|
| - @Override
|
| - public Bundle call() {
|
| - return TestFeedbackCollector.super.getBundle();
|
| - }
|
| - });
|
| - }
|
| -
|
| - @Override
|
| - boolean hasTimedOut() {
|
| - return mTimedOut.get();
|
| - }
|
| -
|
| - void setTimedOut(boolean timedOut) {
|
| - mTimedOut.set(timedOut);
|
| - }
|
| - }
|
| -
|
| - static class TestConnectivityTask extends ConnectivityTask {
|
| - private final AtomicReference<FeedbackData> mFeedbackData = new AtomicReference<>();
|
| -
|
| - TestConnectivityTask(Profile profile, int timeoutMs, ConnectivityResult callback) {
|
| - super(profile, timeoutMs, callback);
|
| - }
|
| -
|
| - @Override
|
| - void init(Profile profile, int timeoutMs) {
|
| - super.init(profile, timeoutMs);
|
| - }
|
| -
|
| - @Override
|
| - public FeedbackData get() {
|
| - return mFeedbackData.get();
|
| - }
|
| -
|
| - void setFeedbackData(FeedbackData feedbackData) {
|
| - mFeedbackData.set(feedbackData);
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - protected void setUp() throws Exception {
|
| - super.setUp();
|
| - mActivity = launchChromeShellWithBlankPage();
|
| - assertTrue(waitForActiveShellToBeDoneLoading());
|
| - ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - ChromeShellTab tab = mActivity.getActiveTab();
|
| - mProfile = tab.getProfile();
|
| - }
|
| - });
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Feedback"})
|
| - public void testGatheringOfData() {
|
| - mCollector = createCollector("http://www.example.com/", null);
|
| - ConnectivityTask.FeedbackData feedbackData = createFeedbackData();
|
| - mTestConnectivityTask.setFeedbackData(feedbackData);
|
| - mCollector.setDescription("some description");
|
| - mCollector.add("foo", "bar");
|
| - Bitmap bitmap = createBitmap();
|
| - mCollector.setScreenshot(bitmap);
|
| -
|
| - Bundle bundle = mCollector.getBundle();
|
| - assertEquals("http://www.example.com/", bundle.getString(FeedbackCollector.URL_KEY));
|
| - assertEquals("CONNECTED", bundle.getString(ConnectivityTask.CHROME_HTTPS_KEY));
|
| - assertEquals("some description", mCollector.getDescription());
|
| - assertEquals("bar", bundle.getString("foo"));
|
| - assertEquals(bitmap, mCollector.getScreenshot());
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Feedback"})
|
| - public void testGatheringOfDataWithCallback() throws InterruptedException {
|
| - final Semaphore semaphore = new Semaphore(0);
|
| - final AtomicBoolean hasResult = new AtomicBoolean(false);
|
| - FeedbackCollector.FeedbackResult callback = new FeedbackCollector.FeedbackResult() {
|
| - @Override
|
| - public void onResult(FeedbackCollector collector) {
|
| - hasResult.set(true);
|
| - semaphore.release();
|
| - }
|
| - };
|
| - mCollector = createCollector("http://www.example.com/", callback);
|
| - assertFalse("Result should not be ready directly after creation.", hasResult.get());
|
| - ConnectivityTask.FeedbackData feedbackData = createFeedbackData();
|
| - mCollector.onResult(feedbackData);
|
| - assertFalse("Result should not be ready after connectivity data.", hasResult.get());
|
| - mCollector.setDescription("some description");
|
| - mCollector.add("foo", "bar");
|
| - Bitmap bitmap = createBitmap();
|
| - mCollector.onGotBitmap(bitmap, true);
|
| -
|
| - // Wait until the callback has been called.
|
| - assertTrue("Failed to acquire semaphore.", semaphore.tryAcquire(1, TimeUnit.SECONDS));
|
| - assertTrue("Result should be ready after retrieving all data.", hasResult.get());
|
| -
|
| - Bundle bundle = mCollector.getBundle();
|
| - assertEquals("http://www.example.com/", bundle.getString(FeedbackCollector.URL_KEY));
|
| - assertEquals("CONNECTED", bundle.getString(ConnectivityTask.CHROME_HTTPS_KEY));
|
| - assertEquals("some description", mCollector.getDescription());
|
| - assertEquals("bar", bundle.getString("foo"));
|
| - assertEquals(bitmap, mCollector.getScreenshot());
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Feedback"})
|
| - public void testGatheringOfDataTimesOut() throws InterruptedException {
|
| - final Semaphore semaphore = new Semaphore(0);
|
| - final AtomicBoolean hasResult = new AtomicBoolean(false);
|
| - FeedbackCollector.FeedbackResult callback = new FeedbackCollector.FeedbackResult() {
|
| - @Override
|
| - public void onResult(FeedbackCollector collector) {
|
| - hasResult.set(true);
|
| - semaphore.release();
|
| - }
|
| - };
|
| - mCollector = createCollector(null, callback);
|
| - assertFalse("Result should not be ready directly after creation.", hasResult.get());
|
| - ConnectivityTask.FeedbackData feedbackData = createFeedbackData();
|
| - // Set the feedback data on the connectivity task instead of through callback.
|
| - mTestConnectivityTask.setFeedbackData(feedbackData);
|
| - assertFalse("Result should not be ready after connectivity data.", hasResult.get());
|
| - Bitmap bitmap = createBitmap();
|
| - mCollector.onGotBitmap(bitmap, true);
|
| -
|
| - // This timeout task should trigger the callback.
|
| - mCollector.setTimedOut(true);
|
| - mCollector.maybePostResult();
|
| - UiUtils.settleDownUI(getInstrumentation());
|
| -
|
| - // Wait until the callback has been called.
|
| - assertTrue("Failed to acquire semaphore.", semaphore.tryAcquire(1, TimeUnit.SECONDS));
|
| - assertTrue("Result should be ready after retrieving all data.", hasResult.get());
|
| -
|
| - Bundle bundle = mCollector.getBundle();
|
| - assertEquals("CONNECTED", bundle.getString(ConnectivityTask.CHROME_HTTPS_KEY));
|
| - assertEquals(bitmap, mCollector.getScreenshot());
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Feedback"})
|
| - public void testGatheringOfDataAlwaysWaitForScreenshot() throws InterruptedException {
|
| - final Semaphore semaphore = new Semaphore(0);
|
| - final AtomicBoolean hasResult = new AtomicBoolean(false);
|
| - FeedbackCollector.FeedbackResult callback = new FeedbackCollector.FeedbackResult() {
|
| - @Override
|
| - public void onResult(FeedbackCollector collector) {
|
| - hasResult.set(true);
|
| - semaphore.release();
|
| - }
|
| - };
|
| - mCollector = createCollector(null, callback);
|
| - assertFalse("Result should not be ready directly after creation.", hasResult.get());
|
| - ConnectivityTask.FeedbackData feedbackData = createFeedbackData();
|
| - mCollector.onResult(feedbackData);
|
| - assertFalse("Result should not be ready after connectivity data.", hasResult.get());
|
| -
|
| - // This timeout task should not trigger the callback.
|
| - mCollector.setTimedOut(true);
|
| - mCollector.maybePostResult();
|
| - UiUtils.settleDownUI(getInstrumentation());
|
| - assertFalse("Result should not be ready after timeout.", hasResult.get());
|
| -
|
| - // Trigger callback by finishing taking the screenshot.
|
| - Bitmap bitmap = createBitmap();
|
| - mCollector.onGotBitmap(bitmap, true);
|
| -
|
| - // Wait until the callback has been called.
|
| - assertTrue("Failed to acquire semaphore.", semaphore.tryAcquire(1, TimeUnit.SECONDS));
|
| - assertTrue("Result should be ready after retrieving all data.", hasResult.get());
|
| -
|
| - Bundle bundle = mCollector.getBundle();
|
| - // The FeedbackData should have been gathered from the ConnectivityTask directly.
|
| - assertEquals("CONNECTED", bundle.getString(ConnectivityTask.CHROME_HTTPS_KEY));
|
| - assertEquals(bitmap, mCollector.getScreenshot());
|
| - }
|
| -
|
| - private static ConnectivityTask.FeedbackData createFeedbackData() {
|
| - Map<ConnectivityTask.Type, Integer> connections = new HashMap<>();
|
| - connections.put(ConnectivityTask.Type.CHROME_HTTPS, ConnectivityCheckResult.CONNECTED);
|
| - return new ConnectivityTask.FeedbackData(connections, 10, 10);
|
| - }
|
| -
|
| - private static Bitmap createBitmap() {
|
| - return Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_4444);
|
| - }
|
| -
|
| - private TestFeedbackCollector createCollector(
|
| - final String url, final FeedbackCollector.FeedbackResult callback) {
|
| - return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<TestFeedbackCollector>() {
|
| - @Override
|
| - public TestFeedbackCollector call() {
|
| - return new TestFeedbackCollector(mActivity, mProfile, url, callback);
|
| - }
|
| - });
|
| - }
|
| -}
|
|
|