Commit 1ab6de81 authored by thestig@chromium.org's avatar thestig@chromium.org

Cleanup: Remove more uses of deprecated PrintPreviewDialogController methods.

BUG=163671

Review URL: https://chromiumcodereview.appspot.com/12250008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182099 0039d316-1c4b-4281-b951-d872f2087c98
parent 0ca00fca
...@@ -215,52 +215,42 @@ PrintPreviewDialogController* PrintPreviewDialogController::GetInstance() { ...@@ -215,52 +215,42 @@ PrintPreviewDialogController* PrintPreviewDialogController::GetInstance() {
} }
// static // static
void PrintPreviewDialogController::PrintPreview(WebContents* tab) { void PrintPreviewDialogController::PrintPreview(WebContents* initiator_tab) {
if (tab->ShowingInterstitialPage()) if (initiator_tab->ShowingInterstitialPage())
return; return;
PrintPreviewDialogController* tab_controller = GetInstance(); PrintPreviewDialogController* dialog_controller = GetInstance();
if (!tab_controller) if (!dialog_controller)
return; return;
if (!tab_controller->GetOrCreatePreviewTab(tab)) if (!dialog_controller->GetOrCreatePreviewDialog(initiator_tab))
PrintViewManager::FromWebContents(tab)->PrintPreviewDone(); PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewDone();
} }
WebContents* PrintPreviewDialogController::GetOrCreatePreviewDialog( WebContents* PrintPreviewDialogController::GetOrCreatePreviewDialog(
WebContents* initiator_tab) { WebContents* initiator_tab) {
return GetOrCreatePreviewTab(initiator_tab);
}
WebContents* PrintPreviewDialogController::GetOrCreatePreviewTab(
WebContents* initiator_tab) {
DCHECK(initiator_tab); DCHECK(initiator_tab);
// Get the print preview tab for |initiator_tab|. // Get the print preview dialog for |initiator_tab|.
WebContents* preview_tab = GetPrintPreviewForTab(initiator_tab); WebContents* preview_dialog = GetPrintPreviewForContents(initiator_tab);
if (!preview_tab) if (!preview_dialog)
return CreatePrintPreviewTab(initiator_tab); return CreatePrintPreviewTab(initiator_tab);
// Show the initiator tab holding the existing preview tab. // Show the initiator tab holding the existing preview dialog.
initiator_tab->GetDelegate()->ActivateContents(initiator_tab); initiator_tab->GetDelegate()->ActivateContents(initiator_tab);
return preview_tab; return preview_dialog;
} }
WebContents* PrintPreviewDialogController::GetPrintPreviewForContents( WebContents* PrintPreviewDialogController::GetPrintPreviewForContents(
WebContents* contents) const { WebContents* contents) const {
return GetPrintPreviewForTab(contents); // |preview_tab_map_| is keyed by the preview dialog, so if find() succeeds,
} // then |contents| is the preview dialog.
PrintPreviewTabMap::const_iterator it = preview_tab_map_.find(contents);
WebContents* PrintPreviewDialogController::GetPrintPreviewForTab(
WebContents* tab) const {
// |preview_tab_map_| is keyed by the preview tab, so if find() succeeds, then
// |tab| is the preview tab.
PrintPreviewTabMap::const_iterator it = preview_tab_map_.find(tab);
if (it != preview_tab_map_.end()) if (it != preview_tab_map_.end())
return tab; return contents;
for (it = preview_tab_map_.begin(); it != preview_tab_map_.end(); ++it) { for (it = preview_tab_map_.begin(); it != preview_tab_map_.end(); ++it) {
// If |tab| is an initiator tab. // If |contents| is an initiator tab.
if (tab == it->second) { if (contents == it->second) {
// Return the associated preview tab. // Return the associated preview tab.
return it->first; return it->first;
} }
...@@ -299,11 +289,6 @@ bool PrintPreviewDialogController::IsPrintPreviewDialog(WebContents* contents) { ...@@ -299,11 +289,6 @@ bool PrintPreviewDialogController::IsPrintPreviewDialog(WebContents* contents) {
return IsPrintPreviewURL(contents->GetURL()); return IsPrintPreviewURL(contents->GetURL());
} }
// static
bool PrintPreviewDialogController::IsPrintPreviewTab(WebContents* tab) {
return IsPrintPreviewURL(tab->GetURL());
}
// static // static
bool PrintPreviewDialogController::IsPrintPreviewURL(const GURL& url) { bool PrintPreviewDialogController::IsPrintPreviewURL(const GURL& url) {
return (url.SchemeIs(chrome::kChromeUIScheme) && return (url.SchemeIs(chrome::kChromeUIScheme) &&
...@@ -357,7 +342,7 @@ void PrintPreviewDialogController::OnRendererProcessClosed( ...@@ -357,7 +342,7 @@ void PrintPreviewDialogController::OnRendererProcessClosed(
} }
void PrintPreviewDialogController::OnWebContentsDestroyed(WebContents* tab) { void PrintPreviewDialogController::OnWebContentsDestroyed(WebContents* tab) {
WebContents* preview_tab = GetPrintPreviewForTab(tab); WebContents* preview_tab = GetPrintPreviewForContents(tab);
if (!preview_tab) { if (!preview_tab) {
NOTREACHED(); NOTREACHED();
return; return;
...@@ -371,7 +356,7 @@ void PrintPreviewDialogController::OnWebContentsDestroyed(WebContents* tab) { ...@@ -371,7 +356,7 @@ void PrintPreviewDialogController::OnWebContentsDestroyed(WebContents* tab) {
void PrintPreviewDialogController::OnNavEntryCommitted( void PrintPreviewDialogController::OnNavEntryCommitted(
WebContents* tab, content::LoadCommittedDetails* details) { WebContents* tab, content::LoadCommittedDetails* details) {
WebContents* preview_tab = GetPrintPreviewForTab(tab); WebContents* preview_tab = GetPrintPreviewForContents(tab);
if (!preview_tab) { if (!preview_tab) {
NOTREACHED(); NOTREACHED();
return; return;
...@@ -499,7 +484,7 @@ void PrintPreviewDialogController::RemoveObservers(WebContents* tab) { ...@@ -499,7 +484,7 @@ void PrintPreviewDialogController::RemoveObservers(WebContents* tab) {
void PrintPreviewDialogController::RemoveInitiatorTab( void PrintPreviewDialogController::RemoveInitiatorTab(
WebContents* initiator_tab) { WebContents* initiator_tab) {
WebContents* preview_tab = GetPrintPreviewForTab(initiator_tab); WebContents* preview_tab = GetPrintPreviewForContents(initiator_tab);
DCHECK(preview_tab); DCHECK(preview_tab);
// Update the map entry first, so when the print preview tab gets destroyed // Update the map entry first, so when the print preview tab gets destroyed
// and reaches RemovePreviewTab(), it does not attempt to also remove the // and reaches RemovePreviewTab(), it does not attempt to also remove the
......
...@@ -52,21 +52,12 @@ class PrintPreviewDialogController ...@@ -52,21 +52,12 @@ class PrintPreviewDialogController
content::WebContents* GetOrCreatePreviewDialog( content::WebContents* GetOrCreatePreviewDialog(
content::WebContents* initiator_tab); content::WebContents* initiator_tab);
// DEPRECATED. Use GetOrCreatePreviewDialog() instead.
// TODO(thestig) Remove.
content::WebContents* GetOrCreatePreviewTab(
content::WebContents* initiator_tab);
// Returns the preview dialog for |contents|. // Returns the preview dialog for |contents|.
// Returns |contents| if |contents| is a preview dialog. // Returns |contents| if |contents| is a preview dialog.
// Returns NULL if no preview dialog exists for |contents|. // Returns NULL if no preview dialog exists for |contents|.
content::WebContents* GetPrintPreviewForContents( content::WebContents* GetPrintPreviewForContents(
content::WebContents* contents) const; content::WebContents* contents) const;
// DEPRECATED. Use GetPrintPreviewForContents() instead.
// TODO(thestig) Remove.
content::WebContents* GetPrintPreviewForTab(content::WebContents* tab) const;
// Returns initiator tab for |preview_tab|. // Returns initiator tab for |preview_tab|.
// Returns NULL if no initiator tab exists for |preview_tab|. // Returns NULL if no initiator tab exists for |preview_tab|.
content::WebContents* GetInitiatorTab(content::WebContents* preview_tab); content::WebContents* GetInitiatorTab(content::WebContents* preview_tab);
...@@ -79,10 +70,6 @@ class PrintPreviewDialogController ...@@ -79,10 +70,6 @@ class PrintPreviewDialogController
// Returns true if |contents| is a print preview dialog. // Returns true if |contents| is a print preview dialog.
static bool IsPrintPreviewDialog(content::WebContents* contents); static bool IsPrintPreviewDialog(content::WebContents* contents);
// DEPRECATED. Use IsPrintPreviewDialog() instead.
// TODO(thestig) Remove.
static bool IsPrintPreviewTab(content::WebContents* tab);
// Returns true if |url| is a print preview url. // Returns true if |url| is a print preview url.
static bool IsPrintPreviewURL(const GURL& url); static bool IsPrintPreviewURL(const GURL& url);
......
...@@ -31,22 +31,23 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest { ...@@ -31,22 +31,23 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
} }
}; };
class TabDestroyedObserver : public content::WebContentsObserver { class PrintPreviewDialogDestroyedObserver
: public content::WebContentsObserver {
public: public:
explicit TabDestroyedObserver(WebContents* contents) explicit PrintPreviewDialogDestroyedObserver(WebContents* dialog)
: content::WebContentsObserver(contents), : content::WebContentsObserver(dialog),
tab_destroyed_(false) { dialog_destroyed_(false) {
} }
virtual ~TabDestroyedObserver() {} virtual ~PrintPreviewDialogDestroyedObserver() {}
bool tab_destroyed() { return tab_destroyed_; } bool dialog_destroyed() { return dialog_destroyed_; }
private: private:
virtual void WebContentsDestroyed(WebContents* tab) OVERRIDE { virtual void WebContentsDestroyed(WebContents* contents) OVERRIDE {
tab_destroyed_ = true; dialog_destroyed_ = true;
} }
bool tab_destroyed_; bool dialog_destroyed_;
}; };
// Test to verify that when a initiator tab navigates, we can create a new // Test to verify that when a initiator tab navigates, we can create a new
...@@ -61,33 +62,33 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest, ...@@ -61,33 +62,33 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest,
browser()->tab_strip_model()->GetActiveWebContents(); browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(initiator_tab); ASSERT_TRUE(initiator_tab);
printing::PrintPreviewDialogController* tab_controller = printing::PrintPreviewDialogController* dialog_controller =
printing::PrintPreviewDialogController::GetInstance(); printing::PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(tab_controller); ASSERT_TRUE(dialog_controller);
// Get the preview tab for initiator tab. // Get the preview tab for initiator tab.
printing::PrintViewManager* print_view_manager = printing::PrintViewManager* print_view_manager =
printing::PrintViewManager::FromWebContents(initiator_tab); printing::PrintViewManager::FromWebContents(initiator_tab);
print_view_manager->PrintPreviewNow(false); print_view_manager->PrintPreviewNow(false);
WebContents* preview_tab = WebContents* preview_tab =
tab_controller->GetOrCreatePreviewTab(initiator_tab); dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
// New print preview tab is created. // New print preview tab is created.
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
ASSERT_TRUE(preview_tab); ASSERT_TRUE(preview_tab);
ASSERT_NE(initiator_tab, preview_tab); ASSERT_NE(initiator_tab, preview_tab);
TabDestroyedObserver observer(preview_tab); PrintPreviewDialogDestroyedObserver observer(preview_tab);
// Navigate in the initiator tab. // Navigate in the initiator tab.
GURL url(chrome::kChromeUINewTabURL); GURL url(chrome::kChromeUINewTabURL);
ui_test_utils::NavigateToURL(browser(), url); ui_test_utils::NavigateToURL(browser(), url);
ASSERT_TRUE(observer.tab_destroyed()); ASSERT_TRUE(observer.dialog_destroyed());
// Get the print preview tab for initiator tab. // Get the print preview tab for initiator tab.
print_view_manager->PrintPreviewNow(false); print_view_manager->PrintPreviewNow(false);
WebContents* new_preview_tab = WebContents* new_preview_tab =
tab_controller->GetOrCreatePreviewTab(initiator_tab); dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
// New preview tab is created. // New preview tab is created.
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
...@@ -106,22 +107,22 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest, ...@@ -106,22 +107,22 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest,
browser()->tab_strip_model()->GetActiveWebContents(); browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(initiator_tab); ASSERT_TRUE(initiator_tab);
printing::PrintPreviewDialogController* tab_controller = printing::PrintPreviewDialogController* dialog_controller =
printing::PrintPreviewDialogController::GetInstance(); printing::PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(tab_controller); ASSERT_TRUE(dialog_controller);
// Get the preview tab for initiator tab. // Get the preview tab for initiator tab.
printing::PrintViewManager* print_view_manager = printing::PrintViewManager* print_view_manager =
printing::PrintViewManager::FromWebContents(initiator_tab); printing::PrintViewManager::FromWebContents(initiator_tab);
print_view_manager->PrintPreviewNow(false); print_view_manager->PrintPreviewNow(false);
WebContents* preview_tab = WebContents* preview_tab =
tab_controller->GetOrCreatePreviewTab(initiator_tab); dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
// New print preview tab is created. // New print preview tab is created.
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
ASSERT_TRUE(preview_tab); ASSERT_TRUE(preview_tab);
ASSERT_NE(initiator_tab, preview_tab); ASSERT_NE(initiator_tab, preview_tab);
TabDestroyedObserver tab_destroyed_observer(preview_tab); PrintPreviewDialogDestroyedObserver dialog_destroyed_observer(preview_tab);
// Reload the initiator tab. // Reload the initiator tab.
content::WindowedNotificationObserver notification_observer( content::WindowedNotificationObserver notification_observer(
...@@ -130,12 +131,12 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest, ...@@ -130,12 +131,12 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest,
chrome::Reload(browser(), CURRENT_TAB); chrome::Reload(browser(), CURRENT_TAB);
notification_observer.Wait(); notification_observer.Wait();
ASSERT_TRUE(tab_destroyed_observer.tab_destroyed()); ASSERT_TRUE(dialog_destroyed_observer.dialog_destroyed());
// Get the print preview tab for initiator tab. // Get the print preview tab for initiator tab.
print_view_manager->PrintPreviewNow(false); print_view_manager->PrintPreviewNow(false);
WebContents* new_preview_tab = WebContents* new_preview_tab =
tab_controller->GetOrCreatePreviewTab(initiator_tab); dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
EXPECT_TRUE(new_preview_tab); EXPECT_TRUE(new_preview_tab);
......
...@@ -19,19 +19,21 @@ using content::WebContents; ...@@ -19,19 +19,21 @@ using content::WebContents;
// Test crashes on Aura due to initiator tab's native view having no parent. // Test crashes on Aura due to initiator tab's native view having no parent.
// http://crbug.com/104284 // http://crbug.com/104284
#if defined(USE_AURA) #if defined(USE_AURA)
#define MAYBE_GetOrCreatePreviewTab DISABLED_GetOrCreatePreviewTab #define MAYBE_GetOrCreatePreviewDialog DISABLED_GetOrCreatePreviewDialog
#define MAYBE_MultiplePreviewTabs DISABLED_MultiplePreviewTabs #define MAYBE_MultiplePreviewDialogs DISABLED_MultiplePreviewDialogs
#define MAYBE_ClearInitiatorTabDetails DISABLED_ClearInitiatorTabDetails #define MAYBE_ClearInitiatorTabDetails DISABLED_ClearInitiatorTabDetails
#else #else
#define MAYBE_GetOrCreatePreviewTab GetOrCreatePreviewTab #define MAYBE_GetOrCreatePreviewDialog GetOrCreatePreviewDialog
#define MAYBE_MultiplePreviewTabs MultiplePreviewTabs #define MAYBE_MultiplePreviewDialogs MultiplePreviewDialogs
#define MAYBE_ClearInitiatorTabDetails ClearInitiatorTabDetails #define MAYBE_ClearInitiatorTabDetails ClearInitiatorTabDetails
#endif #endif
namespace printing {
typedef PrintPreviewTest PrintPreviewDialogControllerUnitTest; typedef PrintPreviewTest PrintPreviewDialogControllerUnitTest;
// Create/Get a preview tab for initiator tab. // Create/Get a preview dialog for initiator tab.
TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_GetOrCreatePreviewTab) { TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_GetOrCreatePreviewDialog) {
// Lets start with one window with one tab. // Lets start with one window with one tab.
EXPECT_EQ(1u, BrowserList::size()); EXPECT_EQ(1u, BrowserList::size());
EXPECT_EQ(0, browser()->tab_strip_model()->count()); EXPECT_EQ(0, browser()->tab_strip_model()->count());
...@@ -42,91 +44,98 @@ TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_GetOrCreatePreviewTab) { ...@@ -42,91 +44,98 @@ TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_GetOrCreatePreviewTab) {
WebContents* initiator_tab = WebContents* initiator_tab =
browser()->tab_strip_model()->GetActiveWebContents(); browser()->tab_strip_model()->GetActiveWebContents();
printing::PrintPreviewDialogController* tab_controller = PrintPreviewDialogController* dialog_controller =
printing::PrintPreviewDialogController::GetInstance(); PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(tab_controller); ASSERT_TRUE(dialog_controller);
// Get the preview tab for initiator tab. // Get the preview dialog for initiator tab.
printing::PrintViewManager::FromWebContents(initiator_tab)-> PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewNow(false);
PrintPreviewNow(false); WebContents* preview_dialog =
WebContents* preview_tab = dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
tab_controller->GetOrCreatePreviewTab(initiator_tab);
// New print preview tab is created. // New print preview dialog is a constrained window, so the number of tabs is
// still 1.
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
EXPECT_NE(initiator_tab, preview_tab); EXPECT_NE(initiator_tab, preview_dialog);
// Get the print preview tab for initiator tab. // Get the print preview dialog for the same initiator tab.
WebContents* new_preview_tab = WebContents* new_preview_dialog =
tab_controller->GetOrCreatePreviewTab(initiator_tab); dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
// Preview tab already exists. Tab count remains the same. // Preview dialog already exists. Tab count remains the same.
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
// 1:1 relationship between initiator and preview tab. // 1:1 relationship between initiator tab and preview dialog.
EXPECT_EQ(new_preview_tab, preview_tab); EXPECT_EQ(new_preview_dialog, preview_dialog);
} }
// To show multiple print preview tabs exist in the same browser for // Tests multiple print preview dialogs exist in the same browser for
// different initiator tabs. If preview tab already exists for an initiator, it // different initiator tabs. If a preview dialog already exists for an
// gets focused. // initiator tab, that initiator tab gets focused.
TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_MultiplePreviewTabs) { TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_MultiplePreviewDialogs) {
// Lets start with one window and two tabs. // Lets start with one window and two tabs.
EXPECT_EQ(1u, BrowserList::size()); EXPECT_EQ(1u, BrowserList::size());
TabStripModel* model = browser()->tab_strip_model(); TabStripModel* tab_strip_model = browser()->tab_strip_model();
ASSERT_TRUE(model); ASSERT_TRUE(tab_strip_model);
EXPECT_EQ(0, model->count()); EXPECT_EQ(0, tab_strip_model->count());
// Create some new initiator tabs.
chrome::NewTab(browser()); chrome::NewTab(browser());
WebContents* web_contents_1 = model->GetActiveWebContents(); WebContents* web_contents_1 = tab_strip_model->GetActiveWebContents();
ASSERT_TRUE(web_contents_1); ASSERT_TRUE(web_contents_1);
chrome::NewTab(browser()); chrome::NewTab(browser());
WebContents* web_contents_2 = model->GetActiveWebContents(); WebContents* web_contents_2 = tab_strip_model->GetActiveWebContents();
ASSERT_TRUE(web_contents_2); ASSERT_TRUE(web_contents_2);
EXPECT_EQ(2, model->count()); EXPECT_EQ(2, tab_strip_model->count());
printing::PrintPreviewDialogController* tab_controller = PrintPreviewDialogController* dialog_controller =
printing::PrintPreviewDialogController::GetInstance(); PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(tab_controller); ASSERT_TRUE(dialog_controller);
// Create preview tab for |tab_contents_1| // Create preview dialog for |web_contents_1|
printing::PrintViewManager::FromWebContents(web_contents_1)-> PrintViewManager::FromWebContents(web_contents_1)->PrintPreviewNow(false);
PrintPreviewNow(false); WebContents* preview_dialog_1 =
WebContents* preview_tab_1 = dialog_controller->GetOrCreatePreviewDialog(web_contents_1);
tab_controller->GetOrCreatePreviewTab(web_contents_1);
EXPECT_NE(web_contents_1, preview_dialog_1);
EXPECT_NE(web_contents_1, preview_tab_1); EXPECT_EQ(2, tab_strip_model->count());
EXPECT_EQ(2, model->count());
// Create preview dialog for |web_contents_2|
// Create preview tab for |tab_contents_2| PrintViewManager::FromWebContents(web_contents_2)->PrintPreviewNow(false);
printing::PrintViewManager::FromWebContents(web_contents_2)-> WebContents* preview_dialog_2 =
PrintPreviewNow(false); dialog_controller->GetOrCreatePreviewDialog(web_contents_2);
WebContents* preview_tab_2 =
tab_controller->GetOrCreatePreviewTab(web_contents_2); EXPECT_NE(web_contents_2, preview_dialog_2);
EXPECT_NE(preview_dialog_1, preview_dialog_2);
EXPECT_NE(web_contents_2, preview_tab_2); // 2 initiator tabs and 2 preview dialogs exist in the same browser.
// 2 initiator tab and 2 preview tabs exist in the same browser. // The preview dialogs are constrained in their respective initiator tabs.
// The preview tabs are constrained in their respective initiator tabs. EXPECT_EQ(2, tab_strip_model->count());
EXPECT_EQ(2, model->count());
int tab_1_index = tab_strip_model->GetIndexOfWebContents(web_contents_1);
int tab_1_index = model->GetIndexOfWebContents(web_contents_1); int tab_2_index = tab_strip_model->GetIndexOfWebContents(web_contents_2);
int tab_2_index = model->GetIndexOfWebContents(web_contents_2); int preview_dialog_1_index =
int preview_tab_1_index = model->GetIndexOfWebContents(preview_tab_1); tab_strip_model->GetIndexOfWebContents(preview_dialog_1);
int preview_tab_2_index = model->GetIndexOfWebContents(preview_tab_2); int preview_dialog_2_index =
tab_strip_model->GetIndexOfWebContents(preview_dialog_2);
EXPECT_EQ(-1, preview_tab_1_index);
EXPECT_EQ(-1, preview_tab_2_index); // Constrained dialogs are not in the TabStripModel.
EXPECT_EQ(tab_2_index, model->active_index()); EXPECT_EQ(-1, preview_dialog_1_index);
EXPECT_EQ(-1, preview_dialog_2_index);
// When we get the preview tab for |tab_contents_1|,
// |preview_tab_1| is activated and focused. // Since |preview_dialog_2_index| was the most recently created dialog, its
tab_controller->GetOrCreatePreviewTab(web_contents_1); // initiator tab should have focus.
EXPECT_EQ(tab_1_index, model->active_index()); EXPECT_EQ(tab_2_index, tab_strip_model->active_index());
// When we get the preview dialog for |web_contents_1|,
// |preview_dialog_1| is activated and focused.
dialog_controller->GetOrCreatePreviewDialog(web_contents_1);
EXPECT_EQ(tab_1_index, tab_strip_model->active_index());
} }
// Clear the initiator tab details associated with preview tab. // Check clearing the initiator tab details associated with a print preview
// dialog allows the initiator tab to create another print preview dialog.
TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_ClearInitiatorTabDetails) { TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_ClearInitiatorTabDetails) {
// Lets start with one window with one tab. // Lets start with one window with one tab.
EXPECT_EQ(1u, BrowserList::size()); EXPECT_EQ(1u, BrowserList::size());
...@@ -138,28 +147,32 @@ TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_ClearInitiatorTabDetails) { ...@@ -138,28 +147,32 @@ TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_ClearInitiatorTabDetails) {
WebContents* initiator_tab = WebContents* initiator_tab =
browser()->tab_strip_model()->GetActiveWebContents(); browser()->tab_strip_model()->GetActiveWebContents();
printing::PrintPreviewDialogController* tab_controller = PrintPreviewDialogController* dialog_controller =
printing::PrintPreviewDialogController::GetInstance(); PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(tab_controller); ASSERT_TRUE(dialog_controller);
// Get the preview tab for initiator tab. // Get the preview dialog for the initiator tab.
printing::PrintViewManager::FromWebContents(initiator_tab)-> PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewNow(false);
PrintPreviewNow(false); WebContents* preview_dialog =
WebContents* preview_tab = dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
tab_controller->GetOrCreatePreviewTab(initiator_tab);
// New print preview tab is created. Current focus is on preview tab. // New print preview dialog is a constrained window, so the number of tabs is
// still 1.
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
EXPECT_NE(initiator_tab, preview_tab); EXPECT_NE(initiator_tab, preview_dialog);
// Clear the initiator tab details associated with the preview tab. // Clear the initiator tab details associated with the preview dialog.
tab_controller->EraseInitiatorTabInfo(preview_tab); dialog_controller->EraseInitiatorTabInfo(preview_dialog);
// Get the print preview tab for initiator tab. // Get a new print preview dialog for the initiator tab.
WebContents* new_preview_tab = WebContents* new_preview_dialog =
tab_controller->GetOrCreatePreviewTab(initiator_tab); dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
// New preview tab is created. // New print preview dialog is a constrained window, so the number of tabs is
// still 1.
EXPECT_EQ(1, browser()->tab_strip_model()->count()); EXPECT_EQ(1, browser()->tab_strip_model()->count());
EXPECT_NE(new_preview_tab, preview_tab); // Verify a new print preview dialog has been created.
EXPECT_NE(new_preview_dialog, preview_dialog);
} }
} // namespace printing
...@@ -73,20 +73,19 @@ PrintPreviewMessageHandler::PrintPreviewMessageHandler( ...@@ -73,20 +73,19 @@ PrintPreviewMessageHandler::PrintPreviewMessageHandler(
PrintPreviewMessageHandler::~PrintPreviewMessageHandler() { PrintPreviewMessageHandler::~PrintPreviewMessageHandler() {
} }
WebContents* PrintPreviewMessageHandler::GetPrintPreviewTab() { WebContents* PrintPreviewMessageHandler::GetPrintPreviewDialog() {
PrintPreviewDialogController* tab_controller = PrintPreviewDialogController* dialog_controller =
PrintPreviewDialogController::GetInstance(); PrintPreviewDialogController::GetInstance();
if (!tab_controller) if (!dialog_controller)
return NULL; return NULL;
return dialog_controller->GetPrintPreviewForContents(web_contents());
return tab_controller->GetPrintPreviewForTab(web_contents());
} }
PrintPreviewUI* PrintPreviewMessageHandler::GetPrintPreviewUI() { PrintPreviewUI* PrintPreviewMessageHandler::GetPrintPreviewUI() {
WebContents* tab = GetPrintPreviewTab(); WebContents* dialog = GetPrintPreviewDialog();
if (!tab || !tab->GetWebUI()) if (!dialog || !dialog->GetWebUI())
return NULL; return NULL;
return static_cast<PrintPreviewUI*>(tab->GetWebUI()->GetController()); return static_cast<PrintPreviewUI*>(dialog->GetWebUI()->GetController());
} }
void PrintPreviewMessageHandler::OnRequestPrintPreview( void PrintPreviewMessageHandler::OnRequestPrintPreview(
...@@ -96,7 +95,7 @@ void PrintPreviewMessageHandler::OnRequestPrintPreview( ...@@ -96,7 +95,7 @@ void PrintPreviewMessageHandler::OnRequestPrintPreview(
PrintPreviewForWebNode(); PrintPreviewForWebNode();
} }
PrintPreviewDialogController::PrintPreview(web_contents()); PrintPreviewDialogController::PrintPreview(web_contents());
PrintPreviewUI::SetInitialParams(GetPrintPreviewTab(), params); PrintPreviewUI::SetInitialParams(GetPrintPreviewDialog(), params);
} }
void PrintPreviewMessageHandler::OnDidGetPreviewPageCount( void PrintPreviewMessageHandler::OnDidGetPreviewPageCount(
......
...@@ -41,8 +41,9 @@ class PrintPreviewMessageHandler ...@@ -41,8 +41,9 @@ class PrintPreviewMessageHandler
explicit PrintPreviewMessageHandler(content::WebContents* web_contents); explicit PrintPreviewMessageHandler(content::WebContents* web_contents);
friend class content::WebContentsUserData<PrintPreviewMessageHandler>; friend class content::WebContentsUserData<PrintPreviewMessageHandler>;
// Gets the print preview tab associated with the WebContents being observed. // Gets the print preview dialog associated with the WebContents being
content::WebContents* GetPrintPreviewTab(); // observed.
content::WebContents* GetPrintPreviewDialog();
// Gets the PrintPreviewUI associated with the WebContents being observed. // Gets the PrintPreviewUI associated with the WebContents being observed.
PrintPreviewUI* GetPrintPreviewUI(); PrintPreviewUI* GetPrintPreviewUI();
......
...@@ -472,7 +472,8 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) { ...@@ -472,7 +472,8 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
web_ui()->GetController()); web_ui()->GetController());
print_preview_ui->OnHidePreviewDialog(); print_preview_ui->OnHidePreviewDialog();
// Do this so the initiator tab can open a new print preview dialog. // Do this so the initiator tab can open a new print preview dialog, while
// the current print preview dialog is still handling its print job.
ClearInitiatorTabDetails(); ClearInitiatorTabDetails();
// The PDF being printed contains only the pages that the user selected, // The PDF being printed contains only the pages that the user selected,
......
...@@ -28,21 +28,21 @@ void TestTabStripModelObserver::TabBlockedStateChanged( ...@@ -28,21 +28,21 @@ void TestTabStripModelObserver::TabBlockedStateChanged(
// Need to do this later - the print preview dialog has not been created yet. // Need to do this later - the print preview dialog has not been created yet.
MessageLoop::current()->PostTask( MessageLoop::current()->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&TestTabStripModelObserver::ObservePrintPreviewTabContents, base::Bind(&TestTabStripModelObserver::ObservePrintPreviewDialog,
base::Unretained(this), base::Unretained(this),
contents)); contents));
} }
void TestTabStripModelObserver::ObservePrintPreviewTabContents( void TestTabStripModelObserver::ObservePrintPreviewDialog(
content::WebContents* contents) { content::WebContents* contents) {
printing::PrintPreviewDialogController* tab_controller = printing::PrintPreviewDialogController* dialog_controller =
printing::PrintPreviewDialogController::GetInstance(); printing::PrintPreviewDialogController::GetInstance();
if (tab_controller) { if (!dialog_controller)
content::WebContents* preview_tab = return;
tab_controller->GetPrintPreviewForTab(contents); content::WebContents* preview_dialog =
if (preview_tab) { dialog_controller->GetPrintPreviewForContents(contents);
RegisterAsObserver(content::Source<content::NavigationController>( if (!preview_dialog)
&preview_tab->GetController())); return;
} RegisterAsObserver(content::Source<content::NavigationController>(
} &preview_dialog->GetController()));
} }
...@@ -30,7 +30,7 @@ class TestTabStripModelObserver : public content::TestNavigationObserver, ...@@ -30,7 +30,7 @@ class TestTabStripModelObserver : public content::TestNavigationObserver,
private: private:
// Callback to observer the print preview dialog associated with |contents|. // Callback to observer the print preview dialog associated with |contents|.
void ObservePrintPreviewTabContents(content::WebContents* contents); void ObservePrintPreviewDialog(content::WebContents* contents);
// TabStripModelObserver: // TabStripModelObserver:
virtual void TabBlockedStateChanged(content::WebContents* contents, virtual void TabBlockedStateChanged(content::WebContents* contents,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment