Index: chrome/android/javatests/src/org/chromium/chrome/browser/printing/PrintingControllerTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/printing/PrintingControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/printing/PrintingControllerTest.java |
index bd7b862b79d96f8a99a208a6917ff01f61b3ff2e..255bae1d5c0ec263ea175988a7ec2e474259f1a5 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/printing/PrintingControllerTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/printing/PrintingControllerTest.java |
@@ -13,16 +13,12 @@ import android.print.PrintDocumentInfo; |
import android.test.suitebuilder.annotation.LargeTest; |
import org.chromium.base.ApiCompatibilityUtils; |
-import org.chromium.base.test.util.DisabledTest; |
import org.chromium.base.test.util.Feature; |
import org.chromium.base.test.util.TestFileUtil; |
import org.chromium.base.test.util.UrlUtils; |
import org.chromium.chrome.browser.printing.TabPrinter; |
import org.chromium.chrome.testshell.ChromiumTestShellTestBase; |
import org.chromium.chrome.testshell.TestShellTab; |
-import org.chromium.printing.PrintDocumentAdapterWrapper; |
-import org.chromium.printing.PrintManagerDelegate; |
-import org.chromium.printing.PrintingControllerImpl; |
import java.io.File; |
import java.io.FileInputStream; |
@@ -75,30 +71,18 @@ public class PrintingControllerTest extends ChromiumTestShellTestBase { |
* Test a basic printing flow by emulating the corresponding system calls to the printing |
* controller: onStart, onLayout, onWrite, onFinish. Each one is called once, and in this |
* order, in the UI thread. |
- @LargeTest |
- @Feature({"Printing"}) |
- crbug.com/330291 |
*/ |
- @DisabledTest |
+ @LargeTest |
+ @Feature({"Printing"}) |
public void testNormalPrintingFlow() throws Throwable { |
if (!ApiCompatibilityUtils.isPrintingSupported()) return; |
final TestShellTab currentTab = launchChromiumTestShellWithUrl(URL).getActiveTab(); |
assertTrue(waitForActiveShellToBeDoneLoading()); |
- final PrintManagerDelegate mockPrintManagerDelegate = new PrintManagerDelegate() { |
- @Override |
- public void print(String printJobName, |
- PrintDocumentAdapter documentAdapter, |
- PrintAttributes attributes) { |
- // Do nothing, as we will emulate the framework call sequence within the test. |
- } |
- }; |
- final PrintingControllerImpl printingController = |
- (PrintingControllerImpl) PrintingControllerImpl.create(mockPrintManagerDelegate, |
- new PrintDocumentAdapterWrapper(), PRINT_JOB_NAME); |
+ final PrintingControllerImpl printingController = createControllerOnUiThread(); |
- startController(printingController, currentTab); |
+ startControllerOnUiThread(printingController, currentTab); |
// {@link PrintDocumentAdapter#onStart} is always called first. |
callStartOnUiThread(printingController); |
@@ -156,7 +140,39 @@ public class PrintingControllerTest extends ChromiumTestShellTestBase { |
} |
- private void startController(final PrintingControllerImpl controller, final TestShellTab tab) { |
+ private PrintingControllerImpl createControllerOnUiThread() { |
+ try { |
+ final PrintManagerDelegate mockPrintManagerDelegate = new PrintManagerDelegate() { |
+ @Override |
+ public void print(String printJobName, |
+ PrintDocumentAdapter documentAdapter, |
+ PrintAttributes attributes) { |
+ // Do nothing, as we will emulate the framework call sequence within the test. |
+ } |
+ }; |
+ |
+ final FutureTask<PrintingControllerImpl> task = |
+ new FutureTask<PrintingControllerImpl>(new Callable<PrintingControllerImpl>() { |
+ @Override |
+ public PrintingControllerImpl call() throws Exception { |
+ return (PrintingControllerImpl) PrintingControllerImpl.create( |
+ mockPrintManagerDelegate, |
+ new PrintDocumentAdapterWrapper(), |
+ PRINT_JOB_NAME); |
+ } |
+ }); |
+ |
+ runTestOnUiThread(task); |
+ PrintingControllerImpl result = task.get(TEST_TIMEOUT, TimeUnit.MILLISECONDS); |
+ return result; |
+ } catch (Throwable e) { |
+ fail("Error on creating PrintingControllerImpl on the UI thread: " + e); |
+ } |
+ return null; |
+ } |
+ |
+ private void startControllerOnUiThread(final PrintingControllerImpl controller, |
+ final TestShellTab tab) { |
try { |
runTestOnUiThread(new Runnable() { |
@Override |