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

Unified Diff: chrome/browser/printing/print_job_worker.cc

Issue 10483006: Print support for Windows Metro... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync'd to ToT... Created 8 years, 6 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/printing/print_job_worker.h ('k') | chrome/browser/printing/print_view_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/printing/print_job_worker.cc
diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc
index 1162cc5426117ccb9b3289386f035350812fb777..54082cf440fadc66bf6a75dafeffebd909f703e9 100644
--- a/chrome/browser/printing/print_job_worker.cc
+++ b/chrome/browser/printing/print_job_worker.cc
@@ -69,6 +69,11 @@ void PrintJobWorker::SetNewOwner(PrintJobWorkerOwner* new_owner) {
owner_ = new_owner;
}
+void PrintJobWorker::SetPrintDestination(
+ PrintDestinationInterface* destination) {
+ destination_ = destination;
+}
+
void PrintJobWorker::GetSettings(bool ask_user_for_settings,
gfx::NativeView parent_view,
int document_page_count,
@@ -85,7 +90,9 @@ void PrintJobWorker::GetSettings(bool ask_user_for_settings,
// MessageLoop::current()->SetNestableTasksAllowed(true);
printing_context_->set_margin_type(margin_type);
- if (ask_user_for_settings) {
+ // When we delegate to a destination, we don't ask the user for settings.
+ // TODO(mad): Ask the destination for settings.
+ if (ask_user_for_settings && destination_.get() == NULL) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::Bind(&HoldRefCallback, make_scoped_refptr(owner_),
@@ -241,6 +248,8 @@ void PrintJobWorker::OnNewPage() {
}
// We have enough information to initialize page_number_.
page_number_.Init(document_->settings(), page_count);
+ if (destination_.get() != NULL)
+ destination_->SetPageCount(page_count);
}
DCHECK_NE(page_number_, PageNumber::npos());
@@ -308,6 +317,18 @@ void PrintJobWorker::SpoolPage(PrintedPage* page) {
return;
}
+ if (destination_.get() != NULL) {
+ std::vector<uint8> metabytes(page->metafile()->GetDataSize());
+ bool success = page->metafile()->GetData(
+ reinterpret_cast<void*>(&metabytes[0]), metabytes.size());
+ DCHECK(success) << "Failed to get metafile data.";
+ destination_->SetPageContent(
+ page->page_number(),
+ reinterpret_cast<void*>(&metabytes[0]),
+ metabytes.size());
+ return;
+ }
+
// Actual printing.
#if defined(OS_WIN) || defined(OS_MACOSX)
document_->RenderPrintedPage(*page, printing_context_->context());
« no previous file with comments | « chrome/browser/printing/print_job_worker.h ('k') | chrome/browser/printing/print_view_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698