Skip to content

Commit

Permalink
Improvements in --debug-print switch implementation.
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
vitalybuka@chromium.org committed Jun 12, 2014
1 parent d03d2e1 commit c95198b
Show file tree
Hide file tree
Showing 17 changed files with 448 additions and 330 deletions.
6 changes: 5 additions & 1 deletion chrome/browser/printing/print_job.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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);

Expand Down
38 changes: 9 additions & 29 deletions chrome/browser/printing/print_job_worker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down Expand Up @@ -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,
Expand Down
8 changes: 7 additions & 1 deletion chrome/browser/printing/print_view_manager_base.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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();

Expand Down
5 changes: 2 additions & 3 deletions printing/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ component("printing") {
"page_range.h",
"page_setup.cc",
"page_setup.h",
"page_size_margins.cc",
"page_size_margins.h",
"pdf_metafile_cg_mac.cc",
"pdf_metafile_cg_mac.h",
Expand All @@ -52,8 +51,8 @@ component("printing") {
"print_job_constants.h",
"print_settings.cc",
"print_settings.h",
"print_settings_initializer.cc",
"print_settings_initializer.h",
"print_settings_conversion.cc",
"print_settings_conversion.h",
"print_settings_initializer_mac.cc",
"print_settings_initializer_mac.h",
"print_settings_initializer_win.cc",
Expand Down
29 changes: 0 additions & 29 deletions printing/page_size_margins.cc

This file was deleted.

7 changes: 0 additions & 7 deletions printing/page_size_margins.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@

#include "printing/printing_export.h"

namespace base {
class DictionaryValue;
}

namespace printing {

// Struct that holds margin and content area sizes of a page. Units are
Expand All @@ -24,9 +20,6 @@ struct PageSizeMargins {
double margin_left;
};

PRINTING_EXPORT void GetCustomMarginsFromJobSettings(
const base::DictionaryValue& settings, PageSizeMargins* page_size_margins);

} // namespace printing

#endif // PRINTING_PAGE_SIZE_MARGINS_H_
3 changes: 3 additions & 0 deletions printing/print_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ class PRINTING_EXPORT PrintSettings {
void Clear();

void SetCustomMargins(const PageMargins& requested_margins_in_points);
const PageMargins& requested_custom_margins_in_points() const {
return requested_custom_margins_in_points_;
}
void set_margin_type(MarginType margin_type) { margin_type_ = margin_type; }
MarginType margin_type() const { return margin_type_; }

Expand Down
Loading

0 comments on commit c95198b

Please sign in to comment.