Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(543)

Unified Diff: chrome/browser/ui/webui/print_preview/print_preview_handler.cc

Issue 10827068: gdata: Fix "save as pdf" to work on Google Drive. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments from satorux. Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/gdata/gdata_util.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
Albert Bodenhamer 2012/08/02 16:20:59 Could you create a bug to unify/simplify the flow
kinaba 2012/08/03 05:19:49 Done.
+#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();
}
« no previous file with comments | « chrome/browser/chromeos/gdata/gdata_util.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698