print_preview_ui_browsertest.cc revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/prefs/pref_service.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/app/chrome_command_ids.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/content_settings/host_content_settings_map.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/task_manager/task_manager_browsertest_util.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_commands.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_dialogs.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h"
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/ui_test_utils.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h"
209ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/web_contents_observer.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_utils.h"
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/test/test_navigation_observer.h"
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_utils.h"
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#if defined(OS_WIN)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/aura/window.h"
27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ui/aura/window_tree_host.h"
28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using task_manager::browsertest_util::MatchAboutBlankTab;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using task_manager::browsertest_util::MatchAnyPrint;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using task_manager::browsertest_util::MatchAnyTab;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using task_manager::browsertest_util::MatchPrint;
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochusing task_manager::browsertest_util::WaitForTaskManagerRows;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace {
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrintPreviewTest : public InProcessBrowserTest {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PrintPreviewTest() {}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void Print() {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    content::TestNavigationObserver nav_observer(NULL);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    nav_observer.StartWatchingNewWebContents();
45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    chrome::ExecuteCommand(browser(), IDC_PRINT);
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    nav_observer.Wait();
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    nav_observer.StopWatchingNewWebContents();
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
51558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochIN_PROC_BROWSER_TEST_F(PrintPreviewTest, PrintCommands) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // We start off at about:blank page.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make sure there is 1 tab and print is enabled.
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(1, browser()->tab_strip_model()->count());
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(chrome::IsCommandEnabled(browser(), IDC_PRINT));
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make sure advanced print command (Ctrl+Shift+p) is enabled.
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ADVANCED_PRINT));
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Create the print preview dialog.
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Print();
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Make sure print is disabled.
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(chrome::IsCommandEnabled(browser(), IDC_PRINT));
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Make sure advanced print command (Ctrl+Shift+p) is enabled.
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ADVANCED_PRINT));
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::TestNavigationObserver reload_observer(
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      browser()->tab_strip_model()->GetActiveWebContents());
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chrome::Reload(browser(), CURRENT_TAB);
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  reload_observer.Wait();
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(chrome::IsCommandEnabled(browser(), IDC_PRINT));
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make sure advanced print command (Ctrl+Shift+p) is enabled.
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ADVANCED_PRINT));
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Disable the test for mac, see http://crbug/367665.
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) && !defined(OS_IOS)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_TaskManagerNewPrintPreview DISABLED_TaskManagerNewPrintPreview
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
85558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#define MAYBE_TaskManagerNewPrintPreview TaskManagerNewPrintPreview
862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(PrintPreviewTest, MAYBE_TaskManagerNewPrintPreview) {
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chrome::ShowTaskManager(browser());  // Show task manager BEFORE print dialog.
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyPrint()));
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Create the print preview dialog.
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Print();
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyPrint()));
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchPrint("about:blank")));
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Disable the test for mac as it started being flaky, see http://crbug/367665.
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) && !defined(OS_IOS)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_TaskManagerExistingPrintPreview DISABLED_TaskManagerExistingPrintPreview
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_TaskManagerExistingPrintPreview TaskManagerExistingPrintPreview
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(PrintPreviewTest,
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       MAYBE_TaskManagerExistingPrintPreview) {
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Create the print preview dialog.
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Print();
1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  chrome::ShowTaskManager(browser());  // Show task manager AFTER print dialog.
1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyPrint()));
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchPrint("about:blank")));
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_WIN)
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)BOOL CALLBACK EnumerateChildren(HWND hwnd, LPARAM l_param) {
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  HWND* child = reinterpret_cast<HWND*>(l_param);
1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  *child = hwnd;
1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The first child window is the plugin, then its children. So stop
1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // enumerating after the first callback.
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return FALSE;
1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This test verifies that constrained windows aren't covered by windowed NPAPI
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// plugins. The code which fixes this is in WebContentsViewAura::WindowObserver.
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(PrintPreviewTest, WindowedNPAPIPluginHidden) {
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  browser()->profile()->GetPrefs()->SetBoolean(prefs::kPluginsAlwaysAuthorize,
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                               true);
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // First load the page and wait for the NPAPI plugin's window to display.
1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::string16 expected_title(base::ASCIIToUTF16("ready"));
1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  content::WebContents* tab =
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      browser()->tab_strip_model()->GetActiveWebContents();
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  content::TitleWatcher title_watcher(tab, expected_title);
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  GURL url = ui_test_utils::GetTestUrl(
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      base::FilePath().AppendASCII("printing"),
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      base::FilePath().AppendASCII("npapi_plugin.html"));
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ui_test_utils::NavigateToURL(browser(), url);
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Now get the region of the plugin before and after the print preview is
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // shown. They should be different.
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HWND hwnd = tab->GetNativeView()->GetHost()->GetAcceleratedWidget();
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HWND child = NULL;
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EnumChildWindows(hwnd, EnumerateChildren,reinterpret_cast<LPARAM>(&child));
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RECT region_before, region_after;
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int result = GetWindowRgnBox(child, &region_before);
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(result, SIMPLEREGION);
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Now print preview.
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Print();
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  result = GetWindowRgnBox(child, &region_after);
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (result == NULLREGION) {
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Depending on the browser window size, the plugin could be full covered.
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return;
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (result == COMPLEXREGION) {
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Complex region, by definition not equal to the initial region.
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return;
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ASSERT_EQ(result, SIMPLEREGION);
176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  bool rects_equal =
177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      region_before.left == region_after.left &&
178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      region_before.top == region_after.top &&
179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      region_before.right == region_after.right &&
180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      region_before.bottom == region_after.bottom;
181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ASSERT_FALSE(rects_equal);
182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(PrintPreviewTest, NoCrashOnCloseWithOtherTabs) {
185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Now print preview.
186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  Print();
187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ui_test_utils::NavigateToURLWithDisposition(
189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      browser(), GURL("about:blank"), NEW_FOREGROUND_TAB,
190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  browser()->tab_strip_model()->ActivateTabAt(0, true);
193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Navigate main tab to hide print preview.
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  browser()->tab_strip_model()->ActivateTabAt(1, true);
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)