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

Side by Side Diff: chrome/browser/ui/webui/print_preview_handler_unittest.cc

Issue 9114062: Move chrome/browser/ui/webui/print_preview* to chrome/browser/ui/webui/print_preview/ (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: rebase Created 8 years, 11 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
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/json/json_writer.h"
6 #include "base/values.h"
7 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/printing/background_printing_manager.h"
9 #include "chrome/browser/printing/print_preview_tab_controller.h"
10 #include "chrome/browser/printing/print_preview_unit_test_base.h"
11 #include "chrome/browser/printing/print_view_manager.h"
12 #include "chrome/browser/ui/browser_list.h"
13 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
14 #include "chrome/browser/ui/webui/print_preview_handler.h"
15 #include "chrome/browser/ui/webui/print_preview_ui.h"
16 #include "content/public/browser/web_contents.h"
17 #include "printing/page_size_margins.h"
18 #include "printing/print_job_constants.h"
19
20 namespace {
21
22 DictionaryValue* GetCustomMarginsDictionary(
23 const double margin_top, const double margin_right,
24 const double margin_bottom, const double margin_left) {
25 base::DictionaryValue* custom_settings = new base::DictionaryValue();
26 custom_settings->SetDouble(printing::kSettingMarginTop, margin_top);
27 custom_settings->SetDouble(printing::kSettingMarginRight, margin_right);
28 custom_settings->SetDouble(printing::kSettingMarginBottom, margin_bottom);
29 custom_settings->SetDouble(printing::kSettingMarginLeft, margin_left);
30 return custom_settings;
31 }
32
33 } // namespace
34
35 class PrintPreviewHandlerTest : public PrintPreviewUnitTestBase {
36 public:
37 PrintPreviewHandlerTest() :
38 preview_ui_(NULL),
39 preview_tab_(NULL) {
40 }
41 virtual ~PrintPreviewHandlerTest() {}
42
43 protected:
44 virtual void SetUp() OVERRIDE {
45 PrintPreviewUnitTestBase::SetUp();
46
47 browser()->NewTab();
48 EXPECT_EQ(1, browser()->tab_count());
49 OpenPrintPreviewTab();
50 }
51
52 virtual void TearDown() OVERRIDE {
53 DeletePrintPreviewTab();
54 ClearStickySettings();
55 }
56
57 void OpenPrintPreviewTab() {
58 TabContentsWrapper* initiator_tab =
59 browser()->GetSelectedTabContentsWrapper();
60 ASSERT_TRUE(initiator_tab);
61
62 printing::PrintPreviewTabController* controller =
63 printing::PrintPreviewTabController::GetInstance();
64 ASSERT_TRUE(controller);
65
66 initiator_tab->print_view_manager()->PrintPreviewNow();
67 preview_tab_ = controller->GetOrCreatePreviewTab(initiator_tab);
68 ASSERT_TRUE(preview_tab_);
69
70 preview_ui_ =
71 static_cast<PrintPreviewUI*>(preview_tab_->web_contents()->GetWebUI());
72 ASSERT_TRUE(preview_ui_);
73 }
74
75 void DeletePrintPreviewTab() {
76 printing::BackgroundPrintingManager* bg_printing_manager =
77 g_browser_process->background_printing_manager();
78 ASSERT_TRUE(bg_printing_manager->HasPrintPreviewTab(preview_tab_));
79
80 // Deleting TabContentsWrapper* to avoid warings from pref_notifier_impl.cc
81 // after the test ends.
82 delete preview_tab_;
83 }
84
85 void CheckCustomMargins(const double margin_top,
86 const double margin_right,
87 const double margin_bottom,
88 const double margin_left) {
89 EXPECT_EQ(PrintPreviewHandler::last_used_page_size_margins_->margin_top,
90 margin_top);
91 EXPECT_EQ(PrintPreviewHandler::last_used_page_size_margins_->margin_right,
92 margin_right);
93 EXPECT_EQ(PrintPreviewHandler::last_used_page_size_margins_->margin_bottom,
94 margin_bottom);
95 EXPECT_EQ(PrintPreviewHandler::last_used_page_size_margins_->margin_left,
96 margin_left);
97 }
98
99 void RequestPrintWithDefaultMargins() {
100 // Set the minimal dummy settings to make the HandlePrint() code happy.
101 DictionaryValue settings;
102 settings.SetBoolean(printing::kSettingPreviewModifiable, true);
103 settings.SetInteger(printing::kSettingColor, printing::COLOR);
104 settings.SetBoolean(printing::kSettingPrintToPDF, false);
105 settings.SetInteger(printing::kSettingMarginsType,
106 printing::DEFAULT_MARGINS);
107
108 // Put |settings| in to |args| as a JSON string.
109 std::string json_string;
110 base::JSONWriter::Write(&settings, false, &json_string);
111 ListValue args;
112 args.Append(new base::StringValue(json_string)); // |args| takes ownership.
113 preview_ui_->handler_->HandlePrint(&args);
114 }
115
116 void RequestPrintWithCustomMargins(
117 const double margin_top, const double margin_right,
118 const double margin_bottom, const double margin_left) {
119 // Set the minimal dummy settings to make the HandlePrint() code happy.
120 DictionaryValue settings;
121 settings.SetBoolean(printing::kSettingPreviewModifiable, true);
122 settings.SetInteger(printing::kSettingColor, printing::COLOR);
123 settings.SetBoolean(printing::kSettingPrintToPDF, false);
124 settings.SetInteger(printing::kSettingMarginsType,
125 printing::CUSTOM_MARGINS);
126
127 // Creating custom margins dictionary and nesting it in |settings|.
128 DictionaryValue* custom_settings = GetCustomMarginsDictionary(
129 margin_top, margin_right, margin_bottom, margin_left);
130 // |settings| takes ownership.
131 settings.Set(printing::kSettingMarginsCustom, custom_settings);
132
133 // Put |settings| in to |args| as a JSON string.
134 std::string json_string;
135 base::JSONWriter::Write(&settings, false, &json_string);
136 ListValue args;
137 args.Append(new base::StringValue(json_string)); // |args| takes ownership.
138 preview_ui_->handler_->HandlePrint(&args);
139 }
140
141 PrintPreviewUI* preview_ui_;
142
143 private:
144 void ClearStickySettings() {
145 PrintPreviewHandler::last_used_margins_type_ = printing::DEFAULT_MARGINS;
146 delete PrintPreviewHandler::last_used_page_size_margins_;
147 PrintPreviewHandler::last_used_page_size_margins_ = NULL;
148 }
149
150 TabContentsWrapper* preview_tab_;
151 };
152
153 // Tests that margin settings are saved correctly when printing with custom
154 // margins selected.
155 TEST_F(PrintPreviewHandlerTest, StickyMarginsCustom) {
156 const double kMarginTop = 25.5;
157 const double kMarginRight = 26.5;
158 const double kMarginBottom = 27.5;
159 const double kMarginLeft = 28.5;
160 RequestPrintWithCustomMargins(
161 kMarginTop, kMarginRight, kMarginBottom, kMarginLeft);
162 EXPECT_EQ(1, browser()->tab_count());
163
164 // Checking that sticky settings were saved correctly.
165 EXPECT_EQ(PrintPreviewHandler::last_used_color_model_, printing::COLOR);
166 EXPECT_EQ(PrintPreviewHandler::last_used_margins_type_,
167 printing::CUSTOM_MARGINS);
168 ASSERT_TRUE(PrintPreviewHandler::last_used_page_size_margins_);
169 CheckCustomMargins(kMarginTop, kMarginRight, kMarginBottom, kMarginLeft);
170 }
171
172 // Tests that margin settings are saved correctly when printing with default
173 // margins selected.
174 TEST_F(PrintPreviewHandlerTest, StickyMarginsDefault) {
175 RequestPrintWithDefaultMargins();
176 EXPECT_EQ(1, browser()->tab_count());
177
178 // Checking that sticky settings were saved correctly.
179 EXPECT_EQ(PrintPreviewHandler::last_used_color_model_, printing::COLOR);
180 EXPECT_EQ(PrintPreviewHandler::last_used_margins_type_,
181 printing::DEFAULT_MARGINS);
182 ASSERT_FALSE(PrintPreviewHandler::last_used_page_size_margins_);
183 }
184
185 // Tests that margin settings are saved correctly when printing with custom
186 // margins selected and then again with default margins selected.
187 TEST_F(PrintPreviewHandlerTest, StickyMarginsCustomThenDefault) {
188 const double kMarginTop = 125.5;
189 const double kMarginRight = 126.5;
190 const double kMarginBottom = 127.5;
191 const double kMarginLeft = 128.5;
192 RequestPrintWithCustomMargins(
193 kMarginTop, kMarginRight, kMarginBottom, kMarginLeft);
194 EXPECT_EQ(1, browser()->tab_count());
195 DeletePrintPreviewTab();
196 EXPECT_EQ(PrintPreviewHandler::last_used_margins_type_,
197 printing::CUSTOM_MARGINS);
198 ASSERT_TRUE(PrintPreviewHandler::last_used_page_size_margins_);
199 CheckCustomMargins(kMarginTop, kMarginRight, kMarginBottom, kMarginLeft);
200
201 OpenPrintPreviewTab();
202 RequestPrintWithDefaultMargins();
203
204 // Checking that sticky settings were saved correctly.
205 EXPECT_EQ(PrintPreviewHandler::last_used_color_model_, printing::COLOR);
206 EXPECT_EQ(PrintPreviewHandler::last_used_margins_type_,
207 printing::DEFAULT_MARGINS);
208 ASSERT_TRUE(PrintPreviewHandler::last_used_page_size_margins_);
209 CheckCustomMargins(kMarginTop, kMarginRight, kMarginBottom, kMarginLeft);
210 }
211
212 // Tests that margin settings are retrieved correctly after printing with custom
213 // margins.
214 TEST_F(PrintPreviewHandlerTest, GetLastUsedMarginSettingsCustom) {
215 const double kMarginTop = 125.5;
216 const double kMarginRight = 126.5;
217 const double kMarginBottom = 127.5;
218 const double kMarginLeft = 128.5;
219 RequestPrintWithCustomMargins(
220 kMarginTop, kMarginRight, kMarginBottom, kMarginLeft);
221 base::DictionaryValue initial_settings;
222 preview_ui_->handler_->GetLastUsedMarginSettings(&initial_settings);
223 int margins_type;
224 EXPECT_TRUE(initial_settings.GetInteger(printing::kSettingMarginsType,
225 &margins_type));
226 EXPECT_EQ(margins_type, printing::CUSTOM_MARGINS);
227 double margin_value;
228 EXPECT_TRUE(initial_settings.GetDouble(printing::kSettingMarginTop,
229 &margin_value));
230 EXPECT_EQ(kMarginTop, margin_value);
231 EXPECT_TRUE(initial_settings.GetDouble(printing::kSettingMarginRight,
232 &margin_value));
233 EXPECT_EQ(kMarginRight, margin_value);
234 EXPECT_TRUE(initial_settings.GetDouble(printing::kSettingMarginBottom,
235 &margin_value));
236 EXPECT_EQ(kMarginBottom, margin_value);
237 EXPECT_TRUE(initial_settings.GetDouble(printing::kSettingMarginLeft,
238 &margin_value));
239 EXPECT_EQ(kMarginLeft, margin_value);
240 }
241
242 // Tests that margin settings are retrieved correctly after printing with
243 // default margins.
244 TEST_F(PrintPreviewHandlerTest, GetLastUsedMarginSettingsDefault) {
245 RequestPrintWithDefaultMargins();
246 base::DictionaryValue initial_settings;
247 preview_ui_->handler_->GetLastUsedMarginSettings(&initial_settings);
248 int margins_type;
249 EXPECT_TRUE(initial_settings.GetInteger(printing::kSettingMarginsType,
250 &margins_type));
251 EXPECT_EQ(margins_type, printing::DEFAULT_MARGINS);
252 double margin_value;
253 EXPECT_FALSE(initial_settings.GetDouble(printing::kSettingMarginTop,
254 &margin_value));
255 EXPECT_FALSE(initial_settings.GetDouble(printing::kSettingMarginRight,
256 &margin_value));
257 EXPECT_FALSE(initial_settings.GetDouble(printing::kSettingMarginBottom,
258 &margin_value));
259 EXPECT_FALSE(initial_settings.GetDouble(printing::kSettingMarginLeft,
260 &margin_value));
261 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/print_preview_handler.cc ('k') | chrome/browser/ui/webui/print_preview_ui.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698