Skip to content

Commit

Permalink
Add a method to query whether printing is active.
Browse files Browse the repository at this point in the history
relevant downstream link: 
https://chrome-internal-review.googlesource.com/#/c/156479/

BUG=344057

Review URL: https://codereview.chromium.org/184343013

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@255994 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
sgurun@chromium.org committed Mar 10, 2014
1 parent 8d9478d commit e03adc9
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@
package org.chromium.chrome.browser.printing;

import android.app.Activity;
import android.content.Context;
import android.print.PrintManager;

import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R;
import org.chromium.printing.PrintDocumentAdapterWrapper;
import org.chromium.printing.PrintManagerDelegateImpl;
import org.chromium.printing.PrintingController;
import org.chromium.printing.PrintingControllerImpl;

Expand All @@ -26,11 +23,8 @@ public static PrintingController create(Activity activity) {
String defaultJobTitle = activity.getResources().getString(R.string.menu_print);
TabPrinter.setDefaultTitle(defaultJobTitle);

PrintManager printManager =
(PrintManager) activity.getSystemService(Context.PRINT_SERVICE);
String errorText = activity.getResources().getString(R.string.error_printing_failed);
return PrintingControllerImpl.create(new PrintManagerDelegateImpl(printManager),
new PrintDocumentAdapterWrapper(), errorText);
return PrintingControllerImpl.create(new PrintDocumentAdapterWrapper(), errorText);
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,21 +142,11 @@ public void onLayoutFinished(PrintDocumentInfo info, boolean changed) {

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);
}
Expand All @@ -174,10 +164,19 @@ public PrintingControllerImpl call() throws Exception {
private void startControllerOnUiThread(final PrintingControllerImpl controller,
final TestShellTab tab) {
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.
}
};

runTestOnUiThread(new Runnable() {
@Override
public void run() {
controller.startPrint(new TabPrinter(tab));
controller.startPrint(new TabPrinter(tab), mockPrintManagerDelegate);
}
});
} catch (Throwable e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.chromium.content.browser.BrowserStartupController;
import org.chromium.content.browser.ContentView;
import org.chromium.content.browser.DeviceUtils;
import org.chromium.printing.PrintManagerDelegateImpl;
import org.chromium.printing.PrintingController;
import org.chromium.sync.signin.ChromeSigninController;
import org.chromium.ui.base.ActivityWindowAndroid;
Expand Down Expand Up @@ -248,7 +249,8 @@ public boolean onOptionsItemSelected(MenuItem item) {
return true;
case R.id.print:
if (getActiveTab() != null) {
mPrintingController.startPrint(new TabPrinter(getActiveTab()));
mPrintingController.startPrint(new TabPrinter(getActiveTab()),
new PrintManagerDelegateImpl(this));
}
return true;
case R.id.distill_page:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package org.chromium.printing;

import android.content.Context;
import android.print.PrintAttributes;
import android.print.PrintDocumentAdapter;
import android.print.PrintManager;
Expand All @@ -14,8 +15,8 @@
public class PrintManagerDelegateImpl implements PrintManagerDelegate {
private final PrintManager mPrintManager;

public PrintManagerDelegateImpl(PrintManager printManager) {
mPrintManager = printManager;
public PrintManagerDelegateImpl(Context context) {
mPrintManager = (PrintManager) context.getSystemService(Context.PRINT_SERVICE);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,19 @@ public interface PrintingController {
*/
int[] getPageNumbers();

/**
* @return If the controller is busy.
*/
public boolean isBusy();

/**
* Initiates the printing process for the Android API.
*
* @param printable An object capable of starting native side PDF generation, i.e. typically
* a Tab.
* @param printManager The print manager that manages the print job.
*/
void startPrint(final Printable printable);
void startPrint(final Printable printable, PrintManagerDelegate printManager);

/**
* This method is called by the native side to signal PDF writing process is completed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator

private final String mErrorMessage;

private final PrintManagerDelegate mPrintManager;

private PrintingContextInterface mPrintingContext;

/** The file descriptor into which the PDF will be written. Provided by the framework. */
Expand Down Expand Up @@ -86,10 +84,10 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator
/** Total number of pages to print with initial print dialog settings. */
private int mLastKnownMaxPages = PrintDocumentInfo.PAGE_COUNT_UNKNOWN;

private PrintingControllerImpl(PrintManagerDelegate printManager,
PrintDocumentAdapterWrapper printDocumentAdapterWrapper,
private boolean mIsBusy = false;

private PrintingControllerImpl(PrintDocumentAdapterWrapper printDocumentAdapterWrapper,
String errorText) {
mPrintManager = printManager;
mErrorMessage = errorText;
mPrintDocumentAdapterWrapper = printDocumentAdapterWrapper;
mPrintDocumentAdapterWrapper.setPdfGenerator(this);
Expand All @@ -107,13 +105,12 @@ private PrintingControllerImpl(PrintManagerDelegate printManager,
* doesn't need any string dependency.
* @return The resulting PrintingController.
*/
public static PrintingController create(PrintManagerDelegate printManager,
public static PrintingController create(
PrintDocumentAdapterWrapper printDocumentAdapterWrapper, String errorText) {
ThreadUtils.assertOnUiThread();

if (sInstance == null) {
sInstance = new PrintingControllerImpl(printManager,
printDocumentAdapterWrapper, errorText);
sInstance = new PrintingControllerImpl(printDocumentAdapterWrapper, errorText);
}
return sInstance;
}
Expand Down Expand Up @@ -160,15 +157,22 @@ public int[] getPageNumbers() {
return mPages == null ? null : mPages.clone();
}

@Override
public boolean isBusy() {
return mIsBusy;
}

@Override
public void setPrintingContext(final PrintingContextInterface printingContext) {
mPrintingContext = printingContext;
}

@Override
public void startPrint(final Printable printable) {
public void startPrint(final Printable printable, PrintManagerDelegate printManager) {
if (mIsBusy) return;
mIsBusy = true;
mPrintable = printable;
mPrintDocumentAdapterWrapper.print(mPrintManager, printable.getTitle());
mPrintDocumentAdapterWrapper.print(printManager, printable.getTitle());
}

@Override
Expand Down Expand Up @@ -323,6 +327,9 @@ public void onFinish() {
mFileDescriptor = -1;

resetCallbacks();
// The printmanager contract is that onFinish() is always called as the last
// callback. We set busy to false here.
mIsBusy = false;
}

private void resetCallbacks() {
Expand Down

0 comments on commit e03adc9

Please sign in to comment.