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; |
+}); |