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 <vector> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted_memory.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/printing/print_preview_dialog_controller.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/printing/print_preview_test.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/printing/print_view_manager.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_commands.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_tabstrip.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/browser_with_test_window_test.h" 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "components/web_modal/web_contents_modal_dialog_manager.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/plugin_service.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/site_instance.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "printing/print_job_constants.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents; 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)using web_modal::WebContentsModalDialogManager; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base::RefCountedBytes* CreateTestData() { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const unsigned char blob1[] = 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "12346102356120394751634516591348710478123649165419234519234512349134"; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<unsigned char> preview_data(blob1, blob1 + sizeof(blob1)); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new base::RefCountedBytes(preview_data); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool IsShowingWebContentsModalDialog(WebContents* tab) { 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContentsModalDialogManager* web_contents_modal_dialog_manager = 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContentsModalDialogManager::FromWebContents(tab); 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return web_contents_modal_dialog_manager->IsDialogActive(); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrintPreviewUIUnitTest : public PrintPreviewTest { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrintPreviewUIUnitTest(); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~PrintPreviewUIUnitTest(); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() OVERRIDE; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PrintPreviewUIUnitTest); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PrintPreviewUIUnitTest::PrintPreviewUIUnitTest() {} 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PrintPreviewUIUnitTest::~PrintPreviewUIUnitTest() {} 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void PrintPreviewUIUnitTest::SetUp() { 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrintPreviewTest::SetUp(); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome::NewTab(browser()); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Create/Get a preview tab for initiator. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PrintPreviewUIUnitTest, PrintPreviewData) { 66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents(); 67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ASSERT_TRUE(initiator); 68ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_FALSE(IsShowingWebContentsModalDialog(initiator)); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) printing::PrintPreviewDialogController* controller = 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) printing::PrintPreviewDialogController::GetInstance(); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(controller); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printing::PrintViewManager* print_view_manager = 75ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch printing::PrintViewManager::FromWebContents(initiator); 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) print_view_manager->PrintPreviewNow(false); 77ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebContents* preview_dialog = controller->GetOrCreatePreviewDialog(initiator); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_NE(initiator, preview_dialog); 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, browser()->tab_strip_model()->count()); 81ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_TRUE(IsShowingWebContentsModalDialog(initiator)); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* preview_ui = static_cast<PrintPreviewUI*>( 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) preview_dialog->GetWebUI()->GetController()); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(preview_ui != NULL); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<base::RefCountedBytes> data; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetPrintPreviewDataForIndex( 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &data); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, data.get()); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<base::RefCountedBytes> dummy_data = CreateTestData(); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->SetPrintPreviewDataForIndex( 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dummy_data.get()); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetPrintPreviewDataForIndex( 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &data); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(dummy_data->size(), data->size()); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(dummy_data.get(), data.get()); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This should not cause any memory leaks. 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dummy_data = new base::RefCountedBytes(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->SetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX, 107868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) dummy_data.get()); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clear the preview data. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->ClearAllPreviewData(); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetPrintPreviewDataForIndex( 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &data); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, data.get()); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Set and get the individual draft pages. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PrintPreviewUIUnitTest, PrintPreviewDraftPages) { 120ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents(); 121ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ASSERT_TRUE(initiator); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) printing::PrintPreviewDialogController* controller = 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) printing::PrintPreviewDialogController::GetInstance(); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(controller); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printing::PrintViewManager* print_view_manager = 128ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch printing::PrintViewManager::FromWebContents(initiator); 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) print_view_manager->PrintPreviewNow(false); 130ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebContents* preview_dialog = controller->GetOrCreatePreviewDialog(initiator); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_NE(initiator, preview_dialog); 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, browser()->tab_strip_model()->count()); 134ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_TRUE(IsShowingWebContentsModalDialog(initiator)); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* preview_ui = static_cast<PrintPreviewUI*>( 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) preview_dialog->GetWebUI()->GetController()); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(preview_ui != NULL); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<base::RefCountedBytes> data; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX, &data); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, data.get()); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<base::RefCountedBytes> dummy_data = CreateTestData(); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->SetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dummy_data.get()); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX, &data); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(dummy_data->size(), data->size()); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(dummy_data.get(), data.get()); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set and get the third page data. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->SetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 2, 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dummy_data.get()); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 2, 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &data); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(dummy_data->size(), data->size()); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(dummy_data.get(), data.get()); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Get the second page data. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 1, 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &data); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, data.get()); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->SetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 1, 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dummy_data.get()); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 1, 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &data); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(dummy_data->size(), data->size()); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(dummy_data.get(), data.get()); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clear the preview data. 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->ClearAllPreviewData(); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX, &data); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, data.get()); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test the browser-side print preview cancellation functionality. 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PrintPreviewUIUnitTest, GetCurrentPrintPreviewStatus) { 180ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents(); 181ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ASSERT_TRUE(initiator); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) printing::PrintPreviewDialogController* controller = 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) printing::PrintPreviewDialogController::GetInstance(); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(controller); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printing::PrintViewManager* print_view_manager = 188ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch printing::PrintViewManager::FromWebContents(initiator); 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) print_view_manager->PrintPreviewNow(false); 190ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch WebContents* preview_dialog = controller->GetOrCreatePreviewDialog(initiator); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 192ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_NE(initiator, preview_dialog); 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1, browser()->tab_strip_model()->count()); 194ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_TRUE(IsShowingWebContentsModalDialog(initiator)); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* preview_ui = static_cast<PrintPreviewUI*>( 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) preview_dialog->GetWebUI()->GetController()); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(preview_ui != NULL); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test with invalid |preview_ui_addr|. 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool cancel = false; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int32 kInvalidId = -5; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetCurrentPrintPreviewStatus(kInvalidId, 0, &cancel); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(cancel); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kFirstRequestId = 1000; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kSecondRequestId = 1001; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int32 preview_ui_addr = preview_ui->GetIDForPrintPreviewUI(); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test with kFirstRequestId. 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->OnPrintPreviewRequest(kFirstRequestId); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cancel = true; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetCurrentPrintPreviewStatus(preview_ui_addr, kFirstRequestId, 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &cancel); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(cancel); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cancel = false; 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetCurrentPrintPreviewStatus(preview_ui_addr, kSecondRequestId, 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &cancel); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(cancel); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test with kSecondRequestId. 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->OnPrintPreviewRequest(kSecondRequestId); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cancel = false; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetCurrentPrintPreviewStatus(preview_ui_addr, kFirstRequestId, 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &cancel); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(cancel); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cancel = true; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preview_ui->GetCurrentPrintPreviewStatus(preview_ui_addr, kSecondRequestId, 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &cancel); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(cancel); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 234