Index: chrome/android/javatests/src/org/chromium/chrome/browser/feedback/FeedbackCollectorTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/feedback/FeedbackCollectorTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/feedback/FeedbackCollectorTest.java |
index 9e1a79979826977e528b506b999d7f2166b9317d..b0a39fe217cd18243cace5df70c85f26e07bb818 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/feedback/FeedbackCollectorTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/feedback/FeedbackCollectorTest.java |
@@ -68,9 +68,9 @@ public class FeedbackCollectorTest { |
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); |
+ TestFeedbackCollector(Activity activity, Profile profile, String url, |
+ boolean takeScreenshot, FeedbackResult callback) { |
+ super(activity, profile, url, takeScreenshot, callback); |
} |
@Override |
@@ -218,7 +218,7 @@ public class FeedbackCollectorTest { |
@SmallTest |
@Feature({"Feedback"}) |
public void testGatheringOfData() { |
- mCollector = createCollector("http://www.example.com/", null); |
+ mCollector = createCollector("http://www.example.com/", true /* takeScreenshot */, null); |
ConnectivityTask.FeedbackData feedbackData = createFeedbackData(); |
mTestConnectivityTask.setFeedbackData(feedbackData); |
mCollector.setDescription("some description"); |
@@ -249,7 +249,8 @@ public class FeedbackCollectorTest { |
semaphore.release(); |
} |
}; |
- mCollector = createCollector("http://www.example.com/", callback); |
+ mCollector = |
+ createCollector("http://www.example.com/", true /* takeScreenshot */, callback); |
Assert.assertFalse("Result should not be ready directly after creation.", hasResult.get()); |
ConnectivityTask.FeedbackData feedbackData = createFeedbackData(); |
mCollector.onResult(feedbackData); |
@@ -285,7 +286,7 @@ public class FeedbackCollectorTest { |
semaphore.release(); |
} |
}; |
- mCollector = createCollector(null, callback); |
+ mCollector = createCollector(null, true /* takeScreenshot */, callback); |
Assert.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. |
@@ -312,7 +313,7 @@ public class FeedbackCollectorTest { |
@Test |
@SmallTest |
@Feature({"Feedback"}) |
- public void testGatheringOfDataAlwaysWaitForScreenshot() throws InterruptedException { |
+ public void testGatheringOfDataWaitForScreenshot() throws InterruptedException { |
final Semaphore semaphore = new Semaphore(0); |
final AtomicBoolean hasResult = new AtomicBoolean(false); |
FeedbackCollector.FeedbackResult callback = new FeedbackCollector.FeedbackResult() { |
@@ -322,7 +323,7 @@ public class FeedbackCollectorTest { |
semaphore.release(); |
} |
}; |
- mCollector = createCollector(null, callback); |
+ mCollector = createCollector(null, true /* takeScreenshot */, callback); |
Assert.assertFalse("Result should not be ready directly after creation.", hasResult.get()); |
ConnectivityTask.FeedbackData feedbackData = createFeedbackData(); |
mCollector.onResult(feedbackData); |
@@ -349,6 +350,39 @@ public class FeedbackCollectorTest { |
Assert.assertEquals(bitmap, mCollector.getScreenshot()); |
} |
+ @Test |
+ @SmallTest |
+ @Feature({"Feedback"}) |
+ public void testGatheringOfDataNoScreenshot() 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, false /* takeScreenshot */, callback); |
+ Assert.assertFalse("Result should not be ready directly after creation.", hasResult.get()); |
+ ConnectivityTask.FeedbackData feedbackData = createFeedbackData(); |
+ mCollector.onResult(feedbackData); |
+ Assert.assertFalse("Result should not be ready after connectivity data.", hasResult.get()); |
+ |
+ // This timeout task should trigger the callback since we shouldn't wait for the screenshot. |
+ mCollector.setTimedOut(true); |
+ mCollector.maybePostResult(); |
+ UiUtils.settleDownUI(InstrumentationRegistry.getInstrumentation()); |
+ // Wait until the callback has been called. |
+ Assert.assertTrue( |
+ "Failed to acquire semaphore.", semaphore.tryAcquire(5, TimeUnit.SECONDS)); |
+ Assert.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. |
+ Assert.assertEquals("CONNECTED", bundle.getString(ConnectivityTask.CHROME_HTTPS_KEY)); |
+ } |
+ |
private static ConnectivityTask.FeedbackData createFeedbackData() { |
Map<ConnectivityTask.Type, Integer> connections = new HashMap<>(); |
connections.put(ConnectivityTask.Type.CHROME_HTTPS, ConnectivityCheckResult.CONNECTED); |
@@ -359,12 +393,13 @@ public class FeedbackCollectorTest { |
return Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_4444); |
} |
- private TestFeedbackCollector createCollector( |
- final String url, final FeedbackCollector.FeedbackResult callback) { |
+ private TestFeedbackCollector createCollector(final String url, final boolean takeScreenshot, |
+ final FeedbackCollector.FeedbackResult callback) { |
return ThreadUtils.runOnUiThreadBlockingNoException(new Callable<TestFeedbackCollector>() { |
@Override |
public TestFeedbackCollector call() { |
- return new TestFeedbackCollector(mActivity, mProfile, url, callback); |
+ return new TestFeedbackCollector( |
+ mActivity, mProfile, url, takeScreenshot, callback); |
} |
}); |
} |