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

Side by Side Diff: chrome/test/data/webui/print_preview.js

Issue 7237030: Added options browser_tests using the generator and js handler framework. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added documentation for newly added classes. Created 9 years, 5 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 (function() { 5 /**
6 function MockHandler() { 6 * TestFixture for print preview WebUI testing.
7 this.__proto__ = MockHandler.prototype; 7 * @extends {testing.Test}
8 }; 8 * @constructor
9 **/
10 function PrintPreviewWebUITest() {}
9 11
10 MockHandler.prototype = { 12 PrintPreviewWebUITest.prototype = {
11 'getDefaultPrinter': function() { 13 '__proto__': testing.Test.prototype,
12 console.log('getDefaultPrinter');
13 setDefaultPrinter('FooDevice');
14 },
15 'getPrinters': function() {
16 console.log('getPrinters');
17 setPrinters([
18 {
19 'printerName': 'FooName',
20 'deviceName': 'FooDevice',
21 },
22 {
23 'printerName': 'BarName',
24 'deviceName': 'BarDevice',
25 },
26 ]);
27 },
28 'getPreview': function(settings) {
29 console.log('getPreview(' + settings + ')');
30 updatePrintPreview(1, 'title', true);
31 },
32 'print': function(settings) {
33 console.log('print(' + settings + ')');
34 },
35 'getPrinterCapabilities': function(printer_name) {
36 console.log('getPrinterCapabilities(' + printer_name + ')');
37 updateWithPrinterCapabilities({
38 'disableColorOption': true,
39 'setColorAsDefault': true,
40 'disableCopiesOption': true
41 });
42 },
43 'showSystemDialog': function() {
44 console.log('showSystemDialog');
45 },
46 'managePrinters': function() {
47 console.log('managePrinters');
48 },
49 'closePrintPreviewTab': function() {
50 console.log('closePrintPreviewTab');
51 },
52 'hidePreview': function() {
53 console.log('hidePreview');
54 },
55 };
56 14
57 function registerCallbacks() { 15 /**
58 console.log('registeringCallbacks'); 16 * Browse to the sample page, cause print preview & call our PreLoad().
59 var mock_handler = new MockHandler(); 17 **/
60 for (func in MockHandler.prototype) { 18 'browsePrintPreload': 'print_preview_hello_world_test.html',
61 if (typeof(mock_handler[func]) == 'function')
62 registerMessageCallback(func,
63 mock_handler,
64 mock_handler[func]);
65 }
66 };
67 19
68 if ('window' in this && 'registerMessageCallback' in window) 20 /**
69 registerCallbacks(); 21 * Register a mock handler to ensure expectations are met and print preview
70 })(); 22 * behaves correctly.
23 **/
24 'PreLoad': function() {
71 25
72 // Tests. 26 /**
73 function FLAKY_TestPrinterList() { 27 * Create a handler class with empty methods to allow mocking to register
74 var printer_list = $('printer-list'); 28 * expectations and for registration of handlers with chrome.send.
75 assertTrue(!!printer_list, 'printer_list'); 29 **/
76 assertTrue(printer_list.options.length >= 2, 'printer-list has at least 2'); 30 function MockPrintPreviewHandler() {}
77 expectEquals('FooName', printer_list.options[0].text, '0 text is FooName'); 31
78 expectEquals('FooDevice', printer_list.options[0].value, 32 MockPrintPreviewHandler.prototype = {
33 'getDefaultPrinter': function() {
34 },
35 'getPrinters': function() {
36 },
37 'getPreview': function(settings) {
38 },
39 'print': function(settings) {
40 },
41 'getPrinterCapabilities': function(printerName) {
42 },
43 'showSystemDialog': function() {
44 },
45 'managePrinters': function() {
46 },
47 'closePrintPreviewTab': function() {
48 },
49 'hidePreview': function() {
50 },
51 };
52
53 // Create the actual mock and register stubs for methods expected to be
54 // called before our tests run. Specific expectations can be made in the
55 // tests themselves.
56 var mockHandler = this.mockHandler = mock(MockPrintPreviewHandler);
57 mockHandler.stubs().getDefaultPrinter().
58 will(callFunction(
59 function() {
60 setDefaultPrinter('FooDevice');
61 }));
62 mockHandler.stubs().getPrinterCapabilities(NOT_NULL).
63 will(callFunction(
64 function() {
65 updateWithPrinterCapabilities({
66 'disableColorOption': true,
Evan Stade 2011/07/08 23:04:46 indent is wrong, see http://google-styleguide.goog
Sheridan Rawlins 2011/07/08 23:47:24 Done.
67 'setColorAsDefault': true,
68 'disableCopiesOption': true
69 });
70 }));
71 mockHandler.stubs().getPreview(NOT_NULL).
72 will(callFunction(
73 function() {
Evan Stade 2011/07/08 23:04:46 put `function() {` on the line above (throughout f
Sheridan Rawlins 2011/07/08 23:47:24 Done.
74 updatePrintPreview(1, 'title', true);
75 }));
76
77 mockHandler.stubs().getPrinters().
78 will(callFunction(
79 function() {
80 setPrinters([
81 {
Evan Stade 2011/07/08 23:04:46 merge L80-81
Sheridan Rawlins 2011/07/08 23:47:24 Done.
82 'printerName': 'FooName',
Evan Stade 2011/07/08 23:04:46 indent wrong again
Sheridan Rawlins 2011/07/08 23:47:24 Done.
83 'deviceName': 'FooDevice',
84 },
Evan Stade 2011/07/08 23:04:46 merge L84-85
Sheridan Rawlins 2011/07/08 23:47:24 Done.
85 {
86 'printerName': 'BarName',
87 'deviceName': 'BarDevice',
88 },
89 ]);
90 }));
91
92 // Register our mock as a handler of the chrome.send messages.
93 registerMockMessageCallbacks(mockHandler, MockPrintPreviewHandler);
94 },
95 };
96
97 GEN('#include "base/command_line.h"');
98 GEN('#include "base/path_service.h"');
99 GEN('#include "base/stringprintf.h"');
100 GEN('#include "chrome/browser/ui/webui/web_ui_browsertest.h"');
101 GEN('#include "chrome/common/chrome_paths.h"');
102 GEN('#include "chrome/common/chrome_switches.h"');
103 GEN('#include "googleurl/src/gurl.h"');
104 GEN('#include "testing/gtest/include/gtest/gtest.h"');
105 GEN('');
106 GEN('class PrintPreviewWebUITest');
107 GEN(' : public WebUIBrowserTest {');
108 GEN(' protected:');
109 GEN(' // WebUIBrowserTest:');
110 GEN(' virtual void SetUpOnMainThread() OVERRIDE {');
111 GEN(' WebUIBrowserTest::SetUpOnMainThread();');
112 GEN(' if (!HasPDFLib())');
113 GEN(' ' +
114 'skipTest(base::StringPrintf("%s:%d: No PDF Lib.", __FILE__, __LINE__));');
115 GEN(' }');
116 GEN('');
117 GEN(' virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {');
118 GEN(' WebUIBrowserTest::SetUpCommandLine(command_line);');
119 GEN('#if !defined(GOOGLE_CHROME_BUILD) || defined(OS_CHROMEOS) || \\');
120 GEN(' defined(OS_MACOSX)');
121 GEN(' // Don\'t enable the flag for chrome builds, which should be on by ' +
122 'default.');
123 GEN(' command_line->AppendSwitch(switches::kEnablePrintPreview);');
124 GEN('#else');
125 GEN(' ASSERT_TRUE(switches::IsPrintPreviewEnabled());');
126 GEN('#endif');
127 GEN(' }');
128 GEN('');
129 GEN(' bool HasPDFLib() const {');
130 GEN(' FilePath pdf;');
131 GEN(' return PathService::Get(chrome::FILE_PDF_PLUGIN, &pdf) &&');
132 GEN(' file_util::PathExists(pdf);');
133 GEN(' }');
134 GEN('};');
135 GEN('');
136
137 TEST_F('PrintPreviewWebUITest', 'FLAKY_TestPrinterList', function() {
138 var printerList = $('printer-list');
139 assertTrue(!!printerList, 'printerList');
140 assertTrue(printerList.options.length >= 2, 'printer-list has at least 2');
141 expectEquals('FooName', printerList.options[0].text, '0 text is FooName');
142 expectEquals('FooDevice', printerList.options[0].value,
79 '0 value is FooDevice'); 143 '0 value is FooDevice');
80 expectEquals('BarName', printer_list.options[1].text, '1 text is BarName'); 144 expectEquals('BarName', printerList.options[1].text, '1 text is BarName');
81 expectEquals('BarDevice', printer_list.options[1].value, 145 expectEquals('BarDevice', printerList.options[1].value,
82 '1 value is BarDevice'); 146 '1 value is BarDevice');
83 } 147 });
84
85 var test_fixture = 'PrintPreviewWebUITest';
86 var test_add_library = false;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698