This source file includes following definitions.
- CreateTestData
- IsShowingWebContentsModalDialog
- SetUp
- TEST_F
- TEST_F
- TEST_F
#include <vector>
#include "base/memory/ref_counted_memory.h"
#include "base/prefs/pref_service.h"
#include "chrome/browser/printing/print_preview_dialog_controller.h"
#include "chrome/browser/printing/print_preview_test.h"
#include "chrome/browser/printing/print_view_manager.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_tabstrip.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/webui/print_preview/print_preview_ui.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/browser_with_test_window_test.h"
#include "components/web_modal/web_contents_modal_dialog_manager.h"
#include "content/public/browser/plugin_service.h"
#include "content/public/browser/site_instance.h"
#include "content/public/browser/web_contents.h"
#include "printing/print_job_constants.h"
using content::WebContents;
using web_modal::WebContentsModalDialogManager;
namespace {
base::RefCountedBytes* CreateTestData() {
const unsigned char blob1[] =
"12346102356120394751634516591348710478123649165419234519234512349134";
std::vector<unsigned char> preview_data(blob1, blob1 + sizeof(blob1));
return new base::RefCountedBytes(preview_data);
}
bool IsShowingWebContentsModalDialog(WebContents* tab) {
WebContentsModalDialogManager* web_contents_modal_dialog_manager =
WebContentsModalDialogManager::FromWebContents(tab);
return web_contents_modal_dialog_manager->IsDialogActive();
}
}
class PrintPreviewUIUnitTest : public PrintPreviewTest {
public:
PrintPreviewUIUnitTest();
virtual ~PrintPreviewUIUnitTest();
protected:
virtual void SetUp() OVERRIDE;
DISALLOW_COPY_AND_ASSIGN(PrintPreviewUIUnitTest);
};
PrintPreviewUIUnitTest::PrintPreviewUIUnitTest() {}
PrintPreviewUIUnitTest::~PrintPreviewUIUnitTest() {}
void PrintPreviewUIUnitTest::SetUp() {
PrintPreviewTest::SetUp();
chrome::NewTab(browser());
}
TEST_F(PrintPreviewUIUnitTest, PrintPreviewData) {
WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(initiator);
EXPECT_FALSE(IsShowingWebContentsModalDialog(initiator));
printing::PrintPreviewDialogController* controller =
printing::PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(controller);
printing::PrintViewManager* print_view_manager =
printing::PrintViewManager::FromWebContents(initiator);
print_view_manager->PrintPreviewNow(false);
WebContents* preview_dialog = controller->GetOrCreatePreviewDialog(initiator);
EXPECT_NE(initiator, preview_dialog);
EXPECT_EQ(1, browser()->tab_strip_model()->count());
EXPECT_TRUE(IsShowingWebContentsModalDialog(initiator));
PrintPreviewUI* preview_ui = static_cast<PrintPreviewUI*>(
preview_dialog->GetWebUI()->GetController());
ASSERT_TRUE(preview_ui != NULL);
scoped_refptr<base::RefCountedBytes> data;
preview_ui->GetPrintPreviewDataForIndex(
printing::COMPLETE_PREVIEW_DOCUMENT_INDEX,
&data);
EXPECT_EQ(NULL, data.get());
scoped_refptr<base::RefCountedBytes> dummy_data = CreateTestData();
preview_ui->SetPrintPreviewDataForIndex(
printing::COMPLETE_PREVIEW_DOCUMENT_INDEX,
dummy_data.get());
preview_ui->GetPrintPreviewDataForIndex(
printing::COMPLETE_PREVIEW_DOCUMENT_INDEX,
&data);
EXPECT_EQ(dummy_data->size(), data->size());
EXPECT_EQ(dummy_data.get(), data.get());
dummy_data = new base::RefCountedBytes();
preview_ui->SetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX,
dummy_data.get());
preview_ui->ClearAllPreviewData();
preview_ui->GetPrintPreviewDataForIndex(
printing::COMPLETE_PREVIEW_DOCUMENT_INDEX,
&data);
EXPECT_EQ(NULL, data.get());
}
TEST_F(PrintPreviewUIUnitTest, PrintPreviewDraftPages) {
WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(initiator);
printing::PrintPreviewDialogController* controller =
printing::PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(controller);
printing::PrintViewManager* print_view_manager =
printing::PrintViewManager::FromWebContents(initiator);
print_view_manager->PrintPreviewNow(false);
WebContents* preview_dialog = controller->GetOrCreatePreviewDialog(initiator);
EXPECT_NE(initiator, preview_dialog);
EXPECT_EQ(1, browser()->tab_strip_model()->count());
EXPECT_TRUE(IsShowingWebContentsModalDialog(initiator));
PrintPreviewUI* preview_ui = static_cast<PrintPreviewUI*>(
preview_dialog->GetWebUI()->GetController());
ASSERT_TRUE(preview_ui != NULL);
scoped_refptr<base::RefCountedBytes> data;
preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX, &data);
EXPECT_EQ(NULL, data.get());
scoped_refptr<base::RefCountedBytes> dummy_data = CreateTestData();
preview_ui->SetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX,
dummy_data.get());
preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX, &data);
EXPECT_EQ(dummy_data->size(), data->size());
EXPECT_EQ(dummy_data.get(), data.get());
preview_ui->SetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 2,
dummy_data.get());
preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 2,
&data);
EXPECT_EQ(dummy_data->size(), data->size());
EXPECT_EQ(dummy_data.get(), data.get());
preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 1,
&data);
EXPECT_EQ(NULL, data.get());
preview_ui->SetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 1,
dummy_data.get());
preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX + 1,
&data);
EXPECT_EQ(dummy_data->size(), data->size());
EXPECT_EQ(dummy_data.get(), data.get());
preview_ui->ClearAllPreviewData();
preview_ui->GetPrintPreviewDataForIndex(printing::FIRST_PAGE_INDEX, &data);
EXPECT_EQ(NULL, data.get());
}
TEST_F(PrintPreviewUIUnitTest, GetCurrentPrintPreviewStatus) {
WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(initiator);
printing::PrintPreviewDialogController* controller =
printing::PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(controller);
printing::PrintViewManager* print_view_manager =
printing::PrintViewManager::FromWebContents(initiator);
print_view_manager->PrintPreviewNow(false);
WebContents* preview_dialog = controller->GetOrCreatePreviewDialog(initiator);
EXPECT_NE(initiator, preview_dialog);
EXPECT_EQ(1, browser()->tab_strip_model()->count());
EXPECT_TRUE(IsShowingWebContentsModalDialog(initiator));
PrintPreviewUI* preview_ui = static_cast<PrintPreviewUI*>(
preview_dialog->GetWebUI()->GetController());
ASSERT_TRUE(preview_ui != NULL);
bool cancel = false;
const int32 kInvalidId = -5;
preview_ui->GetCurrentPrintPreviewStatus(kInvalidId, 0, &cancel);
EXPECT_TRUE(cancel);
const int kFirstRequestId = 1000;
const int kSecondRequestId = 1001;
const int32 preview_ui_addr = preview_ui->GetIDForPrintPreviewUI();
preview_ui->OnPrintPreviewRequest(kFirstRequestId);
cancel = true;
preview_ui->GetCurrentPrintPreviewStatus(preview_ui_addr, kFirstRequestId,
&cancel);
EXPECT_FALSE(cancel);
cancel = false;
preview_ui->GetCurrentPrintPreviewStatus(preview_ui_addr, kSecondRequestId,
&cancel);
EXPECT_TRUE(cancel);
preview_ui->OnPrintPreviewRequest(kSecondRequestId);
cancel = false;
preview_ui->GetCurrentPrintPreviewStatus(preview_ui_addr, kFirstRequestId,
&cancel);
EXPECT_TRUE(cancel);
cancel = true;
preview_ui->GetCurrentPrintPreviewStatus(preview_ui_addr, kSecondRequestId,
&cancel);
EXPECT_FALSE(cancel);
}