summaryrefslogtreecommitdiffstats
path: root/chrome/browser/printing
diff options
context:
space:
mode:
authorvitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-12 16:56:55 +0000
committervitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-12 16:56:55 +0000
commitc95198b79bd2e7e9c37bcce2923ffaa51db96aa8 (patch)
treeaf2469a0a94463648f9d6737572c0877a3b1fd19 /chrome/browser/printing
parentd03d2e1c530c0329de57e31e76390defe6cad676 (diff)
downloadchromium_src-c95198b79bd2e7e9c37bcce2923ffaa51db96aa8.zip
chromium_src-c95198b79bd2e7e9c37bcce2923ffaa51db96aa8.tar.gz
chromium_src-c95198b79bd2e7e9c37bcce2923ffaa51db96aa8.tar.bz2
Improvements in --debug-print switch implementation.
* Renamed print_settings_initializer.* into print_settings_conversion.* * Dump on FILE thread. * Added PrintSettingsToJobSettingsDebug to dump PrintSettings. * Added PrintedDocument::CreateDebugDumpPath for consistent dump file naming. * Dump PDFs received from renderer process. * Moved GetCustomMarginsFromJobSettings into print_settings_conversion.cc. * Moved Parsing PageRanges into print_settings_conversion.* BUG=379961 Review URL: https://codereview.chromium.org/329683002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276716 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/printing')
-rw-r--r--chrome/browser/printing/print_job.cc6
-rw-r--r--chrome/browser/printing/print_job_worker.cc38
-rw-r--r--chrome/browser/printing/print_view_manager_base.cc8
3 files changed, 21 insertions, 31 deletions
diff --git a/chrome/browser/printing/print_job.cc b/chrome/browser/printing/print_job.cc
index 0171951..4a58440 100644
--- a/chrome/browser/printing/print_job.cc
+++ b/chrome/browser/printing/print_job.cc
@@ -12,6 +12,7 @@
#include "base/timer/timer.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/printing/print_job_worker.h"
+#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
#include "printing/printed_document.h"
#include "printing/printed_page.h"
@@ -69,7 +70,10 @@ void PrintJob::Initialize(PrintJobWorkerOwner* job,
settings_ = job->settings();
PrintedDocument* new_doc =
- new PrintedDocument(settings_, source_, job->cookie());
+ new PrintedDocument(settings_,
+ source_,
+ job->cookie(),
+ content::BrowserThread::GetBlockingPool());
new_doc->set_page_count(page_count);
UpdatePrintedDocument(new_doc);
diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc
index 88ef3e9..f794785 100644
--- a/chrome/browser/printing/print_job_worker.cc
+++ b/chrome/browser/printing/print_job_worker.cc
@@ -120,39 +120,19 @@ void PrintJobWorker::SetSettings(
DCHECK_EQ(message_loop(), base::MessageLoop::current());
BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&HoldRefCallback, make_scoped_refptr(owner_),
+ BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(&HoldRefCallback,
+ make_scoped_refptr(owner_),
base::Bind(&PrintJobWorker::UpdatePrintSettings,
- base::Unretained(this), new_settings)));
+ base::Unretained(this),
+ base::Owned(new_settings))));
}
void PrintJobWorker::UpdatePrintSettings(
const base::DictionaryValue* const new_settings) {
- // Create new PageRanges based on |new_settings|.
- PageRanges new_ranges;
- const base::ListValue* page_range_array;
- if (new_settings->GetList(kSettingPageRange, &page_range_array)) {
- for (size_t index = 0; index < page_range_array->GetSize(); ++index) {
- const base::DictionaryValue* dict;
- if (!page_range_array->GetDictionary(index, &dict))
- continue;
-
- PageRange range;
- if (!dict->GetInteger(kSettingPageRangeFrom, &range.from) ||
- !dict->GetInteger(kSettingPageRangeTo, &range.to)) {
- continue;
- }
-
- // Page numbers are 1-based in the dictionary.
- // Page numbers are 0-based for the printing context.
- range.from--;
- range.to--;
- new_ranges.push_back(range);
- }
- }
PrintingContext::Result result =
- printing_context_->UpdatePrintSettings(*new_settings, new_ranges);
- delete new_settings;
+ printing_context_->UpdatePrintSettings(*new_settings);
GetSettingsDone(result);
}
@@ -272,8 +252,8 @@ void PrintJobWorker::OnNewPage() {
while (true) {
// Is the page available?
- scoped_refptr<PrintedPage> page;
- if (!document_->GetPage(page_number_.ToInt(), &page)) {
+ scoped_refptr<PrintedPage> page = document_->GetPage(page_number_.ToInt());
+ if (!page) {
// We need to wait for the page to be available.
base::MessageLoop::current()->PostDelayedTask(
FROM_HERE,
diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc
index a26af75..8dbab41 100644
--- a/chrome/browser/printing/print_view_manager_base.cc
+++ b/chrome/browser/printing/print_view_manager_base.cc
@@ -50,12 +50,16 @@
using base::TimeDelta;
using content::BrowserThread;
+namespace printing {
+
+namespace {
+
#if defined(OS_WIN) && !defined(WIN_PDF_METAFILE_FOR_PRINTING)
// Limits memory usage by raster to 64 MiB.
const int kMaxRasterSizeInPixels = 16*1024*1024;
#endif
-namespace printing {
+} // namespace
PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents)
: content::WebContentsObserver(web_contents),
@@ -234,6 +238,8 @@ void PrintViewManagerBase::OnDidPrintPage(
reinterpret_cast<const unsigned char*>(shared_buf.memory()),
params.data_size);
+ document->DebugDumpData(bytes, FILE_PATH_LITERAL(".pdf"));
+
if (!pdf_to_emf_converter_)
pdf_to_emf_converter_ = PdfToEmfConverter::CreateDefault();