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

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: Fix issue that turned up on Windows 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
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/values.h" 7 #include "base/values.h"
8 #include "printing/page_setup.h"
8 #include "printing/print_settings_initializer.h" 9 #include "printing/print_settings_initializer.h"
9 10
10 namespace printing { 11 namespace printing {
11 12
12 PrintingContext::PrintingContext(const std::string& app_locale) 13 PrintingContext::PrintingContext(const std::string& app_locale)
13 : dialog_box_dismissed_(false), 14 : dialog_box_dismissed_(false),
14 in_print_job_(false), 15 in_print_job_(false),
15 abort_printing_(false), 16 abort_printing_(false),
16 app_locale_(app_locale) { 17 app_locale_(app_locale) {
17 } 18 }
18 19
19 PrintingContext::~PrintingContext() { 20 PrintingContext::~PrintingContext() {
20 } 21 }
21 22
23 void PrintingContext::set_margin_type(MarginType type) {
24 DCHECK(type != CUSTOM_MARGINS);
25 settings_.margin_type = type;
26 }
27
22 void PrintingContext::ResetSettings() { 28 void PrintingContext::ResetSettings() {
23 ReleaseContext(); 29 ReleaseContext();
24 30
25 settings_.Clear(); 31 settings_.Clear();
26 32
27 in_print_job_ = false; 33 in_print_job_ = false;
28 dialog_box_dismissed_ = false; 34 dialog_box_dismissed_ = false;
29 abort_printing_ = false; 35 abort_printing_ = false;
30 } 36 }
31 37
32 PrintingContext::Result PrintingContext::OnError() { 38 PrintingContext::Result PrintingContext::OnError() {
33 ResetSettings(); 39 ResetSettings();
34 return abort_printing_ ? CANCEL : FAILED; 40 return abort_printing_ ? CANCEL : FAILED;
35 } 41 }
36 42
37 PrintingContext::Result PrintingContext::UpdatePrintSettings( 43 PrintingContext::Result PrintingContext::UpdatePrintSettings(
38 const base::DictionaryValue& job_settings, 44 const base::DictionaryValue& job_settings,
39 const PageRanges& ranges) { 45 const PageRanges& ranges) {
46 ResetSettings();
47
48 if (!job_settings.GetBoolean(printing::kSettingHeaderFooterEnabled,
49 &settings_.display_header_footer)) {
50 NOTREACHED();
51 }
52
53 int margin_type = DEFAULT_MARGINS;
54 if (!job_settings.GetInteger(printing::kSettingMarginsType, &margin_type) ||
55 (margin_type != DEFAULT_MARGINS &&
Lei Zhang 2011/10/15 03:42:19 Maybe in printing/print_job_constants.h make sure
56 margin_type != NO_MARGINS &&
57 margin_type != CUSTOM_MARGINS &&
58 margin_type != PRINTABLE_AREA_MARGINS)) {
59 NOTREACHED();
60 }
61 settings_.margin_type = static_cast<MarginType>(margin_type);
62
63 if (margin_type == CUSTOM_MARGINS) {
64 double top_margin_in_points = 0;
65 double bottom_margin_in_points = 0;
66 double left_margin_in_points = 0;
67 double right_margin_in_points = 0;
68 DictionaryValue* custom_margins;
69 if (!job_settings.GetDictionary(printing::kSettingMarginsCustom,
70 &custom_margins) ||
71 !custom_margins->GetDouble(printing::kSettingMarginTop,
72 &top_margin_in_points) ||
73 !custom_margins->GetDouble(printing::kSettingMarginBottom,
74 &bottom_margin_in_points) ||
75 !custom_margins->GetDouble(printing::kSettingMarginLeft,
76 &left_margin_in_points) ||
77 !custom_margins->GetDouble(printing::kSettingMarginRight,
78 &right_margin_in_points)) {
79 NOTREACHED();
80 }
81 PageMargins margins_in_points;
82 margins_in_points.Clear();
83 margins_in_points.top = top_margin_in_points;
84 margins_in_points.bottom = bottom_margin_in_points;
85 margins_in_points.left = left_margin_in_points;
86 margins_in_points.right = right_margin_in_points;
87
88 settings_.SetCustomMargins(margins_in_points);
89 }
90
40 PrintingContext::Result result = UpdatePrinterSettings(job_settings, ranges); 91 PrintingContext::Result result = UpdatePrinterSettings(job_settings, ranges);
41 printing::PrintSettingsInitializer::InitHeaderFooterStrings(job_settings, 92 printing::PrintSettingsInitializer::InitHeaderFooterStrings(job_settings,
42 &settings_); 93 &settings_);
43 return result; 94 return result;
44 } 95 }
45 96
46 } // namespace printing 97 } // namespace printing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698