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

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: Fix indent & commenting capitalization. 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..7b83977251abe6df1f8a5be847f78a4467cb1c00 100644
--- a/chrome/test/data/webui/print_preview.js
+++ b/chrome/test/data/webui/print_preview.js
@@ -2,85 +2,132 @@
// 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,
+ setColorAsDefault: true,
+ disableCopiesOption: true,
+ });
+ }));
+ mockHandler.stubs().getPreview(NOT_NULL).
+ will(callFunction(function() {
+ updatePrintPreview(1, 'title', true);
+ }));
+
+ mockHandler.stubs().getPrinters().
+ will(callFunction(function() {
+ setPrinters([{
+ printerName: 'FooName',
+ deviceName: 'FooDevice',
+ }, {
+ printerName: 'BarName',
+ deviceName: 'BarDevice',
+ },
+ ]);
+ }));
+
+ // Register our mock as a handler of the chrome.send messages.
+ registerMockMessageCallbacks(mockHandler, MockPrintPreviewHandler);
+ },
+ testGenPreamble: function(testFixture, testName) {
+ GEN(' if (!HasPDFLib()) {');
+ GEN(' LOG(WARNING)');
+ GEN(' << "Skipping test ' + testFixture + '.' + testName + '"');
+ GEN(' << ": No PDF Lib.";');
+ GEN(' SUCCEED();');
+ GEN(' return;');
+ GEN(' }');
+ },
+ typedefCppFixture: null,
+};
+
+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('');
+GEN('class PrintPreviewWebUITest');
+GEN(' : public WebUIBrowserTest {');
+GEN(' protected:');
+GEN(' // WebUIBrowserTest override.');
+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