diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-12 16:56:55 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-12 16:56:55 +0000 |
commit | c95198b79bd2e7e9c37bcce2923ffaa51db96aa8 (patch) | |
tree | af2469a0a94463648f9d6737572c0877a3b1fd19 /chrome/browser/printing | |
parent | d03d2e1c530c0329de57e31e76390defe6cad676 (diff) | |
download | chromium_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.cc | 6 | ||||
-rw-r--r-- | chrome/browser/printing/print_job_worker.cc | 38 | ||||
-rw-r--r-- | chrome/browser/printing/print_view_manager_base.cc | 8 |
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(); |