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 3// found in the LICENSE file. 4 5#include "base/string16.h" 6#include "base/utf_string_conversions.h" 7#include "chrome/app/chrome_command_ids.h" 8#include "chrome/common/chrome_switches.h" 9#include "chrome/common/url_constants.h" 10#include "chrome/test/automation/browser_proxy.h" 11#include "chrome/test/automation/tab_proxy.h" 12#include "chrome/test/ui/ui_test.h" 13#include "grit/generated_resources.h" 14#include "ui/base/l10n/l10n_util.h" 15 16namespace { 17 18class PrintPreviewUITest : public UITest { 19 public: 20 PrintPreviewUITest() { 21 dom_automation_enabled_ = true; 22 // TODO(thestig): Remove when print preview is enabled by default. 23 launch_arguments_.AppendSwitch(switches::kEnablePrintPreview); 24 } 25 26 void AssertIsPrintPage(TabProxy* tab) { 27 std::wstring title; 28 ASSERT_TRUE(tab->GetTabTitle(&title)); 29 string16 expected_title = 30 l10n_util::GetStringUTF16(IDS_PRINT_PREVIEW_TITLE); 31 ASSERT_EQ(expected_title, WideToUTF16Hack(title)); 32 } 33}; 34 35// TODO(thestig) Remove this test in the future if loading 36// chrome::kChromeUIPrintURL directly does not make sense. 37TEST_F(PrintPreviewUITest, LoadPrintPreviewByURL) { 38 scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); 39 ASSERT_TRUE(browser.get()); 40 41 scoped_refptr<TabProxy> tab = browser->GetActiveTab(); 42 ASSERT_TRUE(tab.get()); 43 44 // Go to the print preview tab via URL. 45 NavigateToURL(GURL(chrome::kChromeUIPrintURL)); 46 AssertIsPrintPage(tab); 47} 48 49TEST_F(PrintPreviewUITest, PrintCommandDisabled) { 50 scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); 51 ASSERT_TRUE(browser.get()); 52 53 // Go to the about:blank page. 54 NavigateToURL(GURL(chrome::kAboutBlankURL)); 55 56 // Make sure there is 1 tab and print is enabled. Create print preview tab. 57 int tab_count; 58 ASSERT_TRUE(browser->GetTabCount(&tab_count)); 59 ASSERT_EQ(1, tab_count); 60 bool enabled; 61 ASSERT_TRUE(browser->IsMenuCommandEnabled(IDC_PRINT, &enabled)); 62 ASSERT_TRUE(enabled); 63 ASSERT_TRUE(browser->RunCommand(IDC_PRINT)); 64 65 // Make sure there are 2 tabs and print is disabled. 66 ASSERT_TRUE(browser->GetTabCount(&tab_count)); 67 ASSERT_EQ(2, tab_count); 68 scoped_refptr<TabProxy> tab = browser->GetActiveTab(); 69 ASSERT_TRUE(tab.get()); 70 AssertIsPrintPage(tab); 71 ASSERT_TRUE(browser->IsMenuCommandEnabled(IDC_PRINT, &enabled)); 72 ASSERT_FALSE(enabled); 73} 74 75} // namespace 76