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

Side by Side Diff: printing/printing_context.cc

Issue 8201027: Move margin processing code to the browser process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address nits Created 9 years, 2 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « printing/printing_context.h ('k') | printing/printing_context_cairo.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "printing/printing_context.h" 5 #include "printing/printing_context.h"
6 6
7 #include "base/logging.h"
7 #include "base/values.h" 8 #include "base/values.h"
9 #include "printing/page_setup.h"
8 #include "printing/print_settings_initializer.h" 10 #include "printing/print_settings_initializer.h"
9 11
10 namespace printing { 12 namespace printing {
11 13
12 PrintingContext::PrintingContext(const std::string& app_locale) 14 PrintingContext::PrintingContext(const std::string& app_locale)
13 : dialog_box_dismissed_(false), 15 : dialog_box_dismissed_(false),
14 in_print_job_(false), 16 in_print_job_(false),
15 abort_printing_(false), 17 abort_printing_(false),
16 app_locale_(app_locale) { 18 app_locale_(app_locale) {
17 } 19 }
18 20
19 PrintingContext::~PrintingContext() { 21 PrintingContext::~PrintingContext() {
20 } 22 }
21 23
24 void PrintingContext::set_margin_type(MarginType type) {
25 DCHECK(type != CUSTOM_MARGINS);
26 settings_.margin_type = type;
27 }
28
22 void PrintingContext::ResetSettings() { 29 void PrintingContext::ResetSettings() {
23 ReleaseContext(); 30 ReleaseContext();
24 31
25 settings_.Clear(); 32 settings_.Clear();
26 33
27 in_print_job_ = false; 34 in_print_job_ = false;
28 dialog_box_dismissed_ = false; 35 dialog_box_dismissed_ = false;
29 abort_printing_ = false; 36 abort_printing_ = false;
30 } 37 }
31 38
32 PrintingContext::Result PrintingContext::OnError() { 39 PrintingContext::Result PrintingContext::OnError() {
33 ResetSettings(); 40 ResetSettings();
34 return abort_printing_ ? CANCEL : FAILED; 41 return abort_printing_ ? CANCEL : FAILED;
35 } 42 }
36 43
37 PrintingContext::Result PrintingContext::UpdatePrintSettings( 44 PrintingContext::Result PrintingContext::UpdatePrintSettings(
38 const base::DictionaryValue& job_settings, 45 const base::DictionaryValue& job_settings,
39 const PageRanges& ranges) { 46 const PageRanges& ranges) {
47 ResetSettings();
48
49 if (!job_settings.GetBoolean(printing::kSettingHeaderFooterEnabled,
50 &settings_.display_header_footer)) {
51 NOTREACHED();
52 }
53
54 int margin_type = DEFAULT_MARGINS;
55 if (!job_settings.GetInteger(printing::kSettingMarginsType, &margin_type) ||
56 (margin_type != DEFAULT_MARGINS &&
57 margin_type != NO_MARGINS &&
58 margin_type != CUSTOM_MARGINS &&
59 margin_type != PRINTABLE_AREA_MARGINS)) {
60 NOTREACHED();
61 }
62 settings_.margin_type = static_cast<MarginType>(margin_type);
63
64 if (margin_type == CUSTOM_MARGINS) {
65 double top_margin_in_points = 0;
66 double bottom_margin_in_points = 0;
67 double left_margin_in_points = 0;
68 double right_margin_in_points = 0;
69 DictionaryValue* custom_margins;
70 if (!job_settings.GetDictionary(printing::kSettingMarginsCustom,
71 &custom_margins) ||
72 !custom_margins->GetDouble(printing::kSettingMarginTop,
73 &top_margin_in_points) ||
74 !custom_margins->GetDouble(printing::kSettingMarginBottom,
75 &bottom_margin_in_points) ||
76 !custom_margins->GetDouble(printing::kSettingMarginLeft,
77 &left_margin_in_points) ||
78 !custom_margins->GetDouble(printing::kSettingMarginRight,
79 &right_margin_in_points)) {
80 NOTREACHED();
81 }
82 PageMargins margins_in_points;
83 margins_in_points.Clear();
84 margins_in_points.top = top_margin_in_points;
85 margins_in_points.bottom = bottom_margin_in_points;
86 margins_in_points.left = left_margin_in_points;
87 margins_in_points.right = right_margin_in_points;
88
89 settings_.SetCustomMargins(margins_in_points);
90 }
91
40 PrintingContext::Result result = UpdatePrinterSettings(job_settings, ranges); 92 PrintingContext::Result result = UpdatePrinterSettings(job_settings, ranges);
41 printing::PrintSettingsInitializer::InitHeaderFooterStrings(job_settings, 93 printing::PrintSettingsInitializer::InitHeaderFooterStrings(job_settings,
42 &settings_); 94 &settings_);
43 return result; 95 return result;
44 } 96 }
45 97
46 } // namespace printing 98 } // namespace printing
OLDNEW
« no previous file with comments | « printing/printing_context.h ('k') | printing/printing_context_cairo.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698