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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webui/print_preview.js
diff --git a/chrome/test/data/webui/print_preview.js b/chrome/test/data/webui/print_preview.js
index beb1c14fa99de9994995b9de3285b0514197c330..3e15e5a714c7df96c8112f6ecdbb1d62626dccba 100644
--- a/chrome/test/data/webui/print_preview.js
+++ b/chrome/test/data/webui/print_preview.js
@@ -2,85 +2,146 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-(function() {
- function MockHandler() {
- this.__proto__ = MockHandler.prototype;
- };
+/**
+ * TestFixture for print preview WebUI testing.
+ * @extends {testing.Test}
+ * @constructor
+ **/
+function PrintPreviewWebUITest() {}
- MockHandler.prototype = {
- 'getDefaultPrinter': function() {
- console.log('getDefaultPrinter');
- setDefaultPrinter('FooDevice');
- },
- 'getPrinters': function() {
- console.log('getPrinters');
- setPrinters([
- {
- 'printerName': 'FooName',
- 'deviceName': 'FooDevice',
- },
- {
- 'printerName': 'BarName',
- 'deviceName': 'BarDevice',
- },
- ]);
- },
- 'getPreview': function(settings) {
- console.log('getPreview(' + settings + ')');
- updatePrintPreview(1, 'title', true);
- },
- 'print': function(settings) {
- console.log('print(' + settings + ')');
- },
- 'getPrinterCapabilities': function(printer_name) {
- console.log('getPrinterCapabilities(' + printer_name + ')');
- updateWithPrinterCapabilities({
- 'disableColorOption': true,
- 'setColorAsDefault': true,
- 'disableCopiesOption': true
- });
- },
- 'showSystemDialog': function() {
- console.log('showSystemDialog');
- },
- 'managePrinters': function() {
- console.log('managePrinters');
- },
- 'closePrintPreviewTab': function() {
- console.log('closePrintPreviewTab');
- },
- 'hidePreview': function() {
- console.log('hidePreview');
- },
- };
+PrintPreviewWebUITest.prototype = {
+ '__proto__': testing.Test.prototype,
- function registerCallbacks() {
- console.log('registeringCallbacks');
- var mock_handler = new MockHandler();
- for (func in MockHandler.prototype) {
- if (typeof(mock_handler[func]) == 'function')
- registerMessageCallback(func,
- mock_handler,
- mock_handler[func]);
- }
- };
+ /**
+ * Browse to the sample page, cause print preview & call our PreLoad().
+ **/
+ 'browsePrintPreload': 'print_preview_hello_world_test.html',
- if ('window' in this && 'registerMessageCallback' in window)
- registerCallbacks();
- })();
+ /**
+ * Register a mock handler to ensure expectations are met and print preview
+ * behaves correctly.
+ **/
+ 'PreLoad': function() {
-// Tests.
-function FLAKY_TestPrinterList() {
- var printer_list = $('printer-list');
- assertTrue(!!printer_list, 'printer_list');
- assertTrue(printer_list.options.length >= 2, 'printer-list has at least 2');
- expectEquals('FooName', printer_list.options[0].text, '0 text is FooName');
- expectEquals('FooDevice', printer_list.options[0].value,
+ /**
+ * Create a handler class with empty methods to allow mocking to register
+ * expectations and for registration of handlers with chrome.send.
+ **/
+ function MockPrintPreviewHandler() {}
+
+ MockPrintPreviewHandler.prototype = {
+ 'getDefaultPrinter': function() {
+ },
+ 'getPrinters': function() {
+ },
+ 'getPreview': function(settings) {
+ },
+ 'print': function(settings) {
+ },
+ 'getPrinterCapabilities': function(printerName) {
+ },
+ 'showSystemDialog': function() {
+ },
+ 'managePrinters': function() {
+ },
+ 'closePrintPreviewTab': function() {
+ },
+ 'hidePreview': function() {
+ },
+ };
+
+ // Create the actual mock and register stubs for methods expected to be
+ // called before our tests run. Specific expectations can be made in the
+ // tests themselves.
+ var mockHandler = this.mockHandler = mock(MockPrintPreviewHandler);
+ mockHandler.stubs().getDefaultPrinter().
+ will(callFunction(
+ function() {
+ setDefaultPrinter('FooDevice');
+ }));
+ mockHandler.stubs().getPrinterCapabilities(NOT_NULL).
+ will(callFunction(
+ function() {
+ updateWithPrinterCapabilities({
+ '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.
+ 'setColorAsDefault': true,
+ 'disableCopiesOption': true
+ });
+ }));
+ mockHandler.stubs().getPreview(NOT_NULL).
+ will(callFunction(
+ 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.
+ updatePrintPreview(1, 'title', true);
+ }));
+
+ mockHandler.stubs().getPrinters().
+ will(callFunction(
+ function() {
+ setPrinters([
+ {
Evan Stade 2011/07/08 23:04:46 merge L80-81
Sheridan Rawlins 2011/07/08 23:47:24 Done.
+ 'printerName': 'FooName',
Evan Stade 2011/07/08 23:04:46 indent wrong again
Sheridan Rawlins 2011/07/08 23:47:24 Done.
+ 'deviceName': 'FooDevice',
+ },
Evan Stade 2011/07/08 23:04:46 merge L84-85
Sheridan Rawlins 2011/07/08 23:47:24 Done.
+ {
+ 'printerName': 'BarName',
+ 'deviceName': 'BarDevice',
+ },
+ ]);
+ }));
+
+ // Register our mock as a handler of the chrome.send messages.
+ registerMockMessageCallbacks(mockHandler, MockPrintPreviewHandler);
+ },
+};
+
+GEN('#include "base/command_line.h"');
+GEN('#include "base/path_service.h"');
+GEN('#include "base/stringprintf.h"');
+GEN('#include "chrome/browser/ui/webui/web_ui_browsertest.h"');
+GEN('#include "chrome/common/chrome_paths.h"');
+GEN('#include "chrome/common/chrome_switches.h"');
+GEN('#include "googleurl/src/gurl.h"');
+GEN('#include "testing/gtest/include/gtest/gtest.h"');
+GEN('');
+GEN('class PrintPreviewWebUITest');
+GEN(' : public WebUIBrowserTest {');
+GEN(' protected:');
+GEN(' // WebUIBrowserTest:');
+GEN(' virtual void SetUpOnMainThread() OVERRIDE {');
+GEN(' WebUIBrowserTest::SetUpOnMainThread();');
+GEN(' if (!HasPDFLib())');
+GEN(' ' +
+ 'skipTest(base::StringPrintf("%s:%d: No PDF Lib.", __FILE__, __LINE__));');
+GEN(' }');
+GEN('');
+GEN(' virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {');
+GEN(' WebUIBrowserTest::SetUpCommandLine(command_line);');
+GEN('#if !defined(GOOGLE_CHROME_BUILD) || defined(OS_CHROMEOS) || \\');
+GEN(' defined(OS_MACOSX)');
+GEN(' // Don\'t enable the flag for chrome builds, which should be on by ' +
+ 'default.');
+GEN(' command_line->AppendSwitch(switches::kEnablePrintPreview);');
+GEN('#else');
+GEN(' ASSERT_TRUE(switches::IsPrintPreviewEnabled());');
+GEN('#endif');
+GEN(' }');
+GEN('');
+GEN(' bool HasPDFLib() const {');
+GEN(' FilePath pdf;');
+GEN(' return PathService::Get(chrome::FILE_PDF_PLUGIN, &pdf) &&');
+GEN(' file_util::PathExists(pdf);');
+GEN(' }');
+GEN('};');
+GEN('');
+
+TEST_F('PrintPreviewWebUITest', 'FLAKY_TestPrinterList', function() {
+ var printerList = $('printer-list');
+ assertTrue(!!printerList, 'printerList');
+ assertTrue(printerList.options.length >= 2, 'printer-list has at least 2');
+ expectEquals('FooName', printerList.options[0].text, '0 text is FooName');
+ expectEquals('FooDevice', printerList.options[0].value,
'0 value is FooDevice');
- expectEquals('BarName', printer_list.options[1].text, '1 text is BarName');
- expectEquals('BarDevice', printer_list.options[1].value,
+ expectEquals('BarName', printerList.options[1].text, '1 text is BarName');
+ expectEquals('BarDevice', printerList.options[1].value,
'1 value is BarDevice');
-}
-
-var test_fixture = 'PrintPreviewWebUITest';
-var test_add_library = false;
+});

Powered by Google App Engine
This is Rietveld 408576698