| Index: chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| index 66009cba46129547c7b38beca918586eb25c8814..181de07bb8a66524d3fea018d0be1a011dc8a908 100644
|
| --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| @@ -59,6 +59,10 @@
|
| #include "printing/print_settings.h"
|
| #include "unicode/ulocdata.h"
|
|
|
| +#ifdef OS_CHROMEOS
|
| +#include "chrome/browser/chromeos/gdata/gdata_util.h"
|
| +#endif
|
| +
|
| #if !defined(OS_MACOSX)
|
| #include "base/command_line.h"
|
| #include "chrome/common/chrome_switches.h"
|
| @@ -213,6 +217,22 @@ void PrintToPdfCallback(Metafile* metafile, const FilePath& path) {
|
| base::Bind(&base::DeletePointer<Metafile>, metafile));
|
| }
|
|
|
| +#ifdef OS_CHROMEOS
|
| +void PrintToPdfCallbackWithCheck(Metafile* metafile,
|
| + gdata::GDataFileError error,
|
| + const FilePath& path) {
|
| + if (error != gdata::GDATA_FILE_OK) {
|
| + LOG(ERROR) << "Save to pdf failed to write: " << error;
|
| + } else {
|
| + metafile->SaveTo(path);
|
| + }
|
| + // |metafile| must be deleted on the UI thread.
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&base::DeletePointer<Metafile>, metafile));
|
| +}
|
| +#endif
|
| +
|
| static base::LazyInstance<printing::StickySettings> sticky_settings =
|
| LAZY_INSTANCE_INITIALIZER;
|
|
|
| @@ -911,9 +931,18 @@ void PrintPreviewHandler::PostPrintToPdfTask(base::RefCountedBytes* data) {
|
| printing::PreviewMetafile* metafile = new printing::PreviewMetafile;
|
| metafile->InitFromData(static_cast<const void*>(data->front()), data->size());
|
| // PrintToPdfCallback takes ownership of |metafile|.
|
| +#ifdef OS_CHROMEOS
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + gdata::util::PrepareWritableFileAndRun(
|
| + Profile::FromBrowserContext(preview_web_contents()->GetBrowserContext()),
|
| + *print_to_pdf_path_,
|
| + base::Bind(&PrintToPdfCallbackWithCheck, metafile));
|
| +#else
|
| BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
|
| base::Bind(&PrintToPdfCallback, metafile,
|
| *print_to_pdf_path_));
|
| +#endif
|
| +
|
| print_to_pdf_path_.reset();
|
| ActivateInitiatorTabAndClosePreviewTab();
|
| }
|
|
|