diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-06 00:37:06 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-06 00:37:06 +0000 |
commit | d959538b0a69164776b6410bc2c87f46a2c80e89 (patch) | |
tree | 4ea53df6c62413322e341548a6be8698063f16ab /chrome | |
parent | a63d0d570c7bceed23becb2bb92decc3b7de1213 (diff) | |
download | chromium_src-d959538b0a69164776b6410bc2c87f46a2c80e89.zip chromium_src-d959538b0a69164776b6410bc2c87f46a2c80e89.tar.gz chromium_src-d959538b0a69164776b6410bc2c87f46a2c80e89.tar.bz2 |
Cleanup: Rename print preview tab to print preview dialog in PrintPreviewDialogController.
BUG=163671
Review URL: https://chromiumcodereview.appspot.com/12471003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@186300 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
3 files changed, 148 insertions, 163 deletions
diff --git a/chrome/browser/printing/print_preview_dialog_controller.cc b/chrome/browser/printing/print_preview_dialog_controller.cc index a91fb04..85b7826 100644 --- a/chrome/browser/printing/print_preview_dialog_controller.cc +++ b/chrome/browser/printing/print_preview_dialog_controller.cc @@ -21,7 +21,6 @@ #include "chrome/browser/ui/browser_navigator.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/host_desktop.h" -#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/webui/chrome_web_contents_handler.h" #include "chrome/browser/ui/webui/constrained_web_dialog_ui.h" #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" @@ -54,7 +53,7 @@ using ui::WebDialogWebContentsDelegate; namespace { -void EnableInternalPDFPluginForTab(WebContents* preview_tab) { +void EnableInternalPDFPluginForContents(WebContents* preview_dialog) { // Always enable the internal PDF plugin for the print preview page. base::FilePath pdf_plugin_path; if (!PathService::Get(chrome::FILE_PDF_PLUGIN, &pdf_plugin_path)) @@ -66,17 +65,17 @@ void EnableInternalPDFPluginForTab(WebContents* preview_tab) { return; ChromePluginServiceFilter::GetInstance()->OverridePluginForTab( - preview_tab->GetRenderProcessHost()->GetID(), - preview_tab->GetRenderViewHost()->GetRoutingID(), + preview_dialog->GetRenderProcessHost()->GetID(), + preview_dialog->GetRenderViewHost()->GetRoutingID(), GURL(), pdf_plugin); } // WebDialogDelegate that specifies what the print preview dialog // will look like. -class PrintPreviewTabDelegate : public WebDialogDelegate { +class PrintPreviewDialogDelegate : public WebDialogDelegate { public: - explicit PrintPreviewTabDelegate(WebContents* initiator_tab); - virtual ~PrintPreviewTabDelegate(); + explicit PrintPreviewDialogDelegate(WebContents* initiator_tab); + virtual ~PrintPreviewDialogDelegate(); virtual ui::ModalType GetDialogModalType() const OVERRIDE; virtual string16 GetDialogTitle() const OVERRIDE; @@ -93,37 +92,38 @@ class PrintPreviewTabDelegate : public WebDialogDelegate { private: WebContents* initiator_tab_; - DISALLOW_COPY_AND_ASSIGN(PrintPreviewTabDelegate); + DISALLOW_COPY_AND_ASSIGN(PrintPreviewDialogDelegate); }; -PrintPreviewTabDelegate::PrintPreviewTabDelegate(WebContents* initiator_tab) { +PrintPreviewDialogDelegate::PrintPreviewDialogDelegate( + WebContents* initiator_tab) { initiator_tab_ = initiator_tab; } -PrintPreviewTabDelegate::~PrintPreviewTabDelegate() { +PrintPreviewDialogDelegate::~PrintPreviewDialogDelegate() { } -ui::ModalType PrintPreviewTabDelegate::GetDialogModalType() const { +ui::ModalType PrintPreviewDialogDelegate::GetDialogModalType() const { // Not used, returning dummy value. NOTREACHED(); return ui::MODAL_TYPE_WINDOW; } -string16 PrintPreviewTabDelegate::GetDialogTitle() const { +string16 PrintPreviewDialogDelegate::GetDialogTitle() const { // Only used on Windows? UI folks prefer no title. return string16(); } -GURL PrintPreviewTabDelegate::GetDialogContentURL() const { +GURL PrintPreviewDialogDelegate::GetDialogContentURL() const { return GURL(chrome::kChromeUIPrintURL); } -void PrintPreviewTabDelegate::GetWebUIMessageHandlers( +void PrintPreviewDialogDelegate::GetWebUIMessageHandlers( std::vector<WebUIMessageHandler*>* /* handlers */) const { // PrintPreviewUI adds its own message handlers. } -void PrintPreviewTabDelegate::GetDialogSize(gfx::Size* size) const { +void PrintPreviewDialogDelegate::GetDialogSize(gfx::Size* size) const { DCHECK(size); const gfx::Size kMinDialogSize(800, 480); const int kBorder = 50; @@ -141,21 +141,21 @@ void PrintPreviewTabDelegate::GetDialogSize(gfx::Size* size) const { #endif } -std::string PrintPreviewTabDelegate::GetDialogArgs() const { +std::string PrintPreviewDialogDelegate::GetDialogArgs() const { return std::string(); } -void PrintPreviewTabDelegate::OnDialogClosed( +void PrintPreviewDialogDelegate::OnDialogClosed( const std::string& /* json_retval */) { } -void PrintPreviewTabDelegate::OnCloseContents(WebContents* /* source */, - bool* out_close_dialog) { +void PrintPreviewDialogDelegate::OnCloseContents(WebContents* /* source */, + bool* out_close_dialog) { if (out_close_dialog) *out_close_dialog = true; } -bool PrintPreviewTabDelegate::ShouldShowDialogTitle() const { +bool PrintPreviewDialogDelegate::ShouldShowDialogTitle() const { // Not used, returning dummy value. NOTREACHED(); return false; @@ -234,7 +234,7 @@ WebContents* PrintPreviewDialogController::GetOrCreatePreviewDialog( // Get the print preview dialog for |initiator_tab|. WebContents* preview_dialog = GetPrintPreviewForContents(initiator_tab); if (!preview_dialog) - return CreatePrintPreviewTab(initiator_tab); + return CreatePrintPreviewDialog(initiator_tab); // Show the initiator tab holding the existing preview dialog. initiator_tab->GetDelegate()->ActivateContents(initiator_tab); @@ -243,16 +243,18 @@ WebContents* PrintPreviewDialogController::GetOrCreatePreviewDialog( WebContents* PrintPreviewDialogController::GetPrintPreviewForContents( WebContents* contents) const { - // |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); - if (it != preview_tab_map_.end()) + // |preview_dialog_map_| is keyed by the preview dialog, so if find() + // succeeds, then |contents| is the preview dialog. + PrintPreviewDialogMap::const_iterator it = preview_dialog_map_.find(contents); + if (it != preview_dialog_map_.end()) return contents; - for (it = preview_tab_map_.begin(); it != preview_tab_map_.end(); ++it) { + for (it = preview_dialog_map_.begin(); + it != preview_dialog_map_.end(); + ++it) { // If |contents| is an initiator tab. if (contents == it->second) { - // Return the associated preview tab. + // Return the associated preview dialog. return it->first; } } @@ -260,11 +262,9 @@ WebContents* PrintPreviewDialogController::GetPrintPreviewForContents( } WebContents* PrintPreviewDialogController::GetInitiatorTab( - WebContents* preview_tab) { - PrintPreviewTabMap::iterator it = preview_tab_map_.find(preview_tab); - if (it != preview_tab_map_.end()) - return preview_tab_map_[preview_tab]; - return NULL; + WebContents* preview_dialog) { + PrintPreviewDialogMap::iterator it = preview_dialog_map_.find(preview_dialog); + return (it != preview_dialog_map_.end()) ? it->second : NULL; } void PrintPreviewDialogController::Observe( @@ -278,9 +278,10 @@ void PrintPreviewDialogController::Observe( OnWebContentsDestroyed(content::Source<WebContents>(source).ptr()); } else { DCHECK_EQ(content::NOTIFICATION_NAV_ENTRY_COMMITTED, type); - WebContents* tab = + WebContents* contents = content::Source<NavigationController>(source)->GetWebContents(); - OnNavEntryCommitted(tab, + OnNavEntryCommitted( + contents, content::Details<content::LoadCommittedDetails>(details).ptr()); } } @@ -297,39 +298,39 @@ bool PrintPreviewDialogController::IsPrintPreviewURL(const GURL& url) { } void PrintPreviewDialogController::EraseInitiatorTabInfo( - WebContents* preview_tab) { - PrintPreviewTabMap::iterator it = preview_tab_map_.find(preview_tab); - if (it == preview_tab_map_.end()) + WebContents* preview_dialog) { + PrintPreviewDialogMap::iterator it = preview_dialog_map_.find(preview_dialog); + if (it == preview_dialog_map_.end()) return; RemoveObservers(it->second); - preview_tab_map_[preview_tab] = NULL; + preview_dialog_map_[preview_dialog] = NULL; } PrintPreviewDialogController::~PrintPreviewDialogController() {} void PrintPreviewDialogController::OnRendererProcessClosed( content::RenderProcessHost* rph) { - // Store tabs in a vector and deal with them after iterating through - // |preview_tab_map_| because RemoveFooTab() can change |preview_tab_map_|. + // Store contents in a vector and deal with them after iterating through + // |preview_dialog_map_| because RemoveFoo() can change |preview_dialog_map_|. std::vector<WebContents*> closed_initiator_tabs; - std::vector<WebContents*> closed_preview_tabs; - for (PrintPreviewTabMap::iterator iter = preview_tab_map_.begin(); - iter != preview_tab_map_.end(); ++iter) { - WebContents* preview_tab = iter->first; + std::vector<WebContents*> closed_preview_dialogs; + for (PrintPreviewDialogMap::iterator iter = preview_dialog_map_.begin(); + iter != preview_dialog_map_.end(); ++iter) { + WebContents* preview_dialog = iter->first; WebContents* initiator_tab = iter->second; - if (preview_tab->GetRenderProcessHost() == rph) { - closed_preview_tabs.push_back(preview_tab); + if (preview_dialog->GetRenderProcessHost() == rph) { + closed_preview_dialogs.push_back(preview_dialog); } else if (initiator_tab && initiator_tab->GetRenderProcessHost() == rph) { closed_initiator_tabs.push_back(initiator_tab); } } - for (size_t i = 0; i < closed_preview_tabs.size(); ++i) { - RemovePreviewTab(closed_preview_tabs[i]); + for (size_t i = 0; i < closed_preview_dialogs.size(); ++i) { + RemovePreviewDialog(closed_preview_dialogs[i]); PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( - closed_preview_tabs[i]->GetWebUI()->GetController()); + closed_preview_dialogs[i]->GetWebUI()->GetController()); if (print_preview_ui) print_preview_ui->OnPrintPreviewDialogClosed(); } @@ -338,41 +339,41 @@ void PrintPreviewDialogController::OnRendererProcessClosed( RemoveInitiatorTab(closed_initiator_tabs[i]); } -void PrintPreviewDialogController::OnWebContentsDestroyed(WebContents* tab) { - WebContents* preview_tab = GetPrintPreviewForContents(tab); - if (!preview_tab) { +void PrintPreviewDialogController::OnWebContentsDestroyed( + WebContents* contents) { + WebContents* preview_dialog = GetPrintPreviewForContents(contents); + if (!preview_dialog) { NOTREACHED(); return; } - if (tab == preview_tab) - RemovePreviewTab(tab); + if (contents == preview_dialog) + RemovePreviewDialog(contents); else - RemoveInitiatorTab(tab); + RemoveInitiatorTab(contents); } void PrintPreviewDialogController::OnNavEntryCommitted( - WebContents* tab, content::LoadCommittedDetails* details) { - WebContents* preview_tab = GetPrintPreviewForContents(tab); - if (!preview_tab) { + WebContents* contents, content::LoadCommittedDetails* details) { + WebContents* preview_dialog = GetPrintPreviewForContents(contents); + if (!preview_dialog) { NOTREACHED(); return; } - bool source_tab_is_preview_tab = (tab == preview_tab); - if (source_tab_is_preview_tab) { - // Preview tab navigated. + if (contents == preview_dialog) { + // Preview dialog navigated. if (details) { content::PageTransition transition_type = details->entry->GetTransitionType(); content::NavigationType nav_type = details->type; - // New |preview_tab| is created. Don't update/erase map entry. + // New |preview_dialog| is created. Don't update/erase map entry. if (waiting_for_new_preview_page_ && transition_type == content::PAGE_TRANSITION_AUTO_TOPLEVEL && nav_type == content::NAVIGATION_TYPE_NEW_PAGE) { waiting_for_new_preview_page_ = false; - SaveInitiatorTabTitle(preview_tab); + SaveInitiatorTabTitle(preview_dialog); return; } @@ -388,10 +389,10 @@ void PrintPreviewDialogController::OnNavEntryCommitted( return; } - RemoveInitiatorTab(tab); + RemoveInitiatorTab(contents); } -WebContents* PrintPreviewDialogController::CreatePrintPreviewTab( +WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog( WebContents* initiator_tab) { base::AutoReset<bool> auto_reset(&is_creating_print_preview_dialog_, true); Profile* profile = @@ -409,10 +410,10 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewTab( } // |web_dialog_ui_delegate| deletes itself in - // PrintPreviewTabDelegate::OnDialogClosed(). + // PrintPreviewDialogDelegate::OnDialogClosed(). WebDialogDelegate* web_dialog_delegate = - new PrintPreviewTabDelegate(initiator_tab); - // |web_tab_content_delegate|'s owner is |constrained_web_ui_delegate|. + new PrintPreviewDialogDelegate(initiator_tab); + // |web_dialog_delegate|'s owner is |constrained_delegate|. PrintPreviewWebContentDelegate* pp_wcd = new PrintPreviewWebContentDelegate(profile, initiator_tab); ConstrainedWebDialogDelegate* constrained_delegate = @@ -420,18 +421,18 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewTab( web_dialog_delegate, pp_wcd, initiator_tab); - WebContents* preview_tab = constrained_delegate->GetWebContents(); - EnableInternalPDFPluginForTab(preview_tab); - PrintViewManager::CreateForWebContents(preview_tab); + WebContents* preview_dialog = constrained_delegate->GetWebContents(); + EnableInternalPDFPluginForContents(preview_dialog); + PrintViewManager::CreateForWebContents(preview_dialog); // Add an entry to the map. - preview_tab_map_[preview_tab] = initiator_tab; + preview_dialog_map_[preview_dialog] = initiator_tab; waiting_for_new_preview_page_ = true; AddObservers(initiator_tab); - AddObservers(preview_tab); + AddObservers(preview_dialog); - return preview_tab; + return preview_dialog; } void PrintPreviewDialogController::SaveInitiatorTabTitle( @@ -445,16 +446,16 @@ void PrintPreviewDialogController::SaveInitiatorTabTitle( } } -void PrintPreviewDialogController::AddObservers(WebContents* tab) { +void PrintPreviewDialogController::AddObservers(WebContents* contents) { registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, - content::Source<WebContents>(tab)); + content::Source<WebContents>(contents)); registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, - content::Source<NavigationController>(&tab->GetController())); + content::Source<NavigationController>(&contents->GetController())); // Multiple sites may share the same RenderProcessHost, so check if this // notification has already been added. content::Source<content::RenderProcessHost> rph_source( - tab->GetRenderProcessHost()); + contents->GetRenderProcessHost()); if (!registrar_.IsRegistered(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, rph_source)) { registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, @@ -462,16 +463,16 @@ void PrintPreviewDialogController::AddObservers(WebContents* tab) { } } -void PrintPreviewDialogController::RemoveObservers(WebContents* tab) { +void PrintPreviewDialogController::RemoveObservers(WebContents* contents) { registrar_.Remove(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, - content::Source<WebContents>(tab)); + content::Source<WebContents>(contents)); registrar_.Remove(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, - content::Source<NavigationController>(&tab->GetController())); + content::Source<NavigationController>(&contents->GetController())); // Multiple sites may share the same RenderProcessHost, so check if this // notification has already been added. content::Source<content::RenderProcessHost> rph_source( - tab->GetRenderProcessHost()); + contents->GetRenderProcessHost()); if (registrar_.IsRegistered(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, rph_source)) { registrar_.Remove(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, @@ -481,26 +482,27 @@ void PrintPreviewDialogController::RemoveObservers(WebContents* tab) { void PrintPreviewDialogController::RemoveInitiatorTab( WebContents* initiator_tab) { - WebContents* preview_tab = GetPrintPreviewForContents(initiator_tab); - DCHECK(preview_tab); - // Update the map entry first, so when the print preview tab gets destroyed - // and reaches RemovePreviewTab(), it does not attempt to also remove the + WebContents* preview_dialog = GetPrintPreviewForContents(initiator_tab); + DCHECK(preview_dialog); + // Update the map entry first, so when the print preview dialog gets destroyed + // and reaches RemovePreviewDialog(), it does not attempt to also remove the // initiator tab's observers. - preview_tab_map_[preview_tab] = NULL; + preview_dialog_map_[preview_dialog] = NULL; RemoveObservers(initiator_tab); PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewDone(); - // Initiator tab is closed. Close the print preview tab too. - PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( - preview_tab->GetWebUI()->GetController()); + // Initiator tab is closed. Close the print preview dialog too. + PrintPreviewUI* print_preview_ui = + static_cast<PrintPreviewUI*>(preview_dialog->GetWebUI()->GetController()); if (print_preview_ui) print_preview_ui->OnInitiatorTabClosed(); } -void PrintPreviewDialogController::RemovePreviewTab(WebContents* preview_tab) { +void PrintPreviewDialogController::RemovePreviewDialog( + WebContents* preview_dialog) { // Remove the initiator tab's observers before erasing the mapping. - WebContents* initiator_tab = GetInitiatorTab(preview_tab); + WebContents* initiator_tab = GetInitiatorTab(preview_dialog); if (initiator_tab) { RemoveObservers(initiator_tab); PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewDone(); @@ -508,13 +510,13 @@ void PrintPreviewDialogController::RemovePreviewTab(WebContents* preview_tab) { // Print preview WebContents is destroyed. Notify |PrintPreviewUI| to abort // the initiator tab preview request. - PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( - preview_tab->GetWebUI()->GetController()); + PrintPreviewUI* print_preview_ui = + static_cast<PrintPreviewUI*>(preview_dialog->GetWebUI()->GetController()); if (print_preview_ui) print_preview_ui->OnPrintPreviewDialogDestroyed(); - preview_tab_map_.erase(preview_tab); - RemoveObservers(preview_tab); + preview_dialog_map_.erase(preview_dialog); + RemoveObservers(preview_dialog); } } // namespace printing diff --git a/chrome/browser/printing/print_preview_dialog_controller.h b/chrome/browser/printing/print_preview_dialog_controller.h index c944213..0ce70db 100644 --- a/chrome/browser/printing/print_preview_dialog_controller.h +++ b/chrome/browser/printing/print_preview_dialog_controller.h @@ -22,19 +22,12 @@ class WebContents; namespace printing { -// For print preview, a print preview (PP) tab is linked with the initiator tab -// that initiated the printing operation. If the tab initiates a second -// printing operation while the first print preview tab is still open, that PP -// tab is focused/activated. There may be more than one PP tab open. There is a -// 1:1 relationship between PP tabs and initiating tabs. This class manages PP -// tabs and initiator tabs. -// -// THE ABOVE COMMENT IS OBSOLETE -// -// This class needs to be renamed. It no longer controls tabs. All tests need to -// be reevaluated as to whether they're useful. The comments, both here and in -// the tests, need to be fixed so that they don't lie. -// http://crbug.com/163671 +// For print preview, the tab that initiates the printing operation is the +// initiator tab, and the constrained dialog that shows the print preview is +// the print preview dialog. +// This class manages print preview dialog creation and destruction, and keeps +// track of the 1:1 relationship between initiatora tabs and print preview +// dialogs. class PrintPreviewDialogController : public base::RefCounted<PrintPreviewDialogController>, public content::NotificationObserver { @@ -58,9 +51,9 @@ class PrintPreviewDialogController content::WebContents* GetPrintPreviewForContents( content::WebContents* contents) const; - // Returns initiator tab for |preview_tab|. - // Returns NULL if no initiator tab exists for |preview_tab|. - content::WebContents* GetInitiatorTab(content::WebContents* preview_tab); + // Returns the initiator tab for |preview_dialog|. + // Returns NULL if no initiator tab exists for |preview_dialog|. + content::WebContents* GetInitiatorTab(content::WebContents* preview_dialog); // content::NotificationObserver implementation. virtual void Observe(int type, @@ -83,11 +76,11 @@ class PrintPreviewDialogController private: friend class base::RefCounted<PrintPreviewDialogController>; - // 1:1 relationship between initiator tab and print preview tab. - // Key: Preview tab. + // 1:1 relationship between a print preview dialog and its initiator tab. + // Key: Print preview dialog. // Value: Initiator tab. typedef std::map<content::WebContents*, content::WebContents*> - PrintPreviewTabMap; + PrintPreviewDialogMap; virtual ~PrintPreviewDialogController(); @@ -96,37 +89,37 @@ class PrintPreviewDialogController void OnRendererProcessClosed(content::RenderProcessHost* rph); // Handler for the WEB_CONTENTS_DESTROYED notification. This is observed when - // either tab is closed. - void OnWebContentsDestroyed(content::WebContents* tab); + // either WebContents is closed. + void OnWebContentsDestroyed(content::WebContents* contents); // Handler for the NAV_ENTRY_COMMITTED notification. This is observed when the // renderer is navigated to a different page. - void OnNavEntryCommitted(content::WebContents* tab, + void OnNavEntryCommitted(content::WebContents* contents, content::LoadCommittedDetails* details); - // Creates a new print preview tab. - content::WebContents* CreatePrintPreviewTab( + // Creates a new print preview dialog. + content::WebContents* CreatePrintPreviewDialog( content::WebContents* initiator_tab); // Helper function to store the title of the initiator tab associated with // |preview_dialog| in |preview_dialog|'s PrintPreviewUI. void SaveInitiatorTabTitle(content::WebContents* preview_dialog); - // Adds/Removes observers for notifications from |tab|. - void AddObservers(content::WebContents* tab); - void RemoveObservers(content::WebContents* tab); + // Adds/Removes observers for notifications from |contents|. + void AddObservers(content::WebContents* contents); + void RemoveObservers(content::WebContents* contents); - // Removes tabs when they close/crash/navigate. + // Removes WebContents when they close/crash/navigate. void RemoveInitiatorTab(content::WebContents* initiator_tab); - void RemovePreviewTab(content::WebContents* preview_tab); + void RemovePreviewDialog(content::WebContents* preview_dialog); - // Mapping between print preview tab and the corresponding initiator tab. - PrintPreviewTabMap preview_tab_map_; + // Mapping between print preview dialog and the corresponding initiator tab. + PrintPreviewDialogMap preview_dialog_map_; // A registrar for listening notifications. content::NotificationRegistrar registrar_; - // True if the controller is waiting for a new preview tab via + // True if the controller is waiting for a new preview dialog via // content::NAVIGATION_TYPE_NEW_PAGE. bool waiting_for_new_preview_page_; diff --git a/chrome/browser/printing/print_preview_dialog_controller_browsertest.cc b/chrome/browser/printing/print_preview_dialog_controller_browsertest.cc index d54b11e..ee17e94 100644 --- a/chrome/browser/printing/print_preview_dialog_controller_browsertest.cc +++ b/chrome/browser/printing/print_preview_dialog_controller_browsertest.cc @@ -51,12 +51,9 @@ class PrintPreviewDialogDestroyedObserver }; // Test to verify that when a initiator tab navigates, we can create a new -// preview tab for the new tab contents. +// preview dialog for the new tab contents. IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest, NavigateFromInitiatorTab) { - // Lets start with one tab. - EXPECT_EQ(1, browser()->tab_strip_model()->count()); - // Create a reference to initiator tab contents. WebContents* initiator_tab = browser()->tab_strip_model()->GetActiveWebContents(); @@ -66,42 +63,37 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest, printing::PrintPreviewDialogController::GetInstance(); ASSERT_TRUE(dialog_controller); - // Get the preview tab for initiator tab. + // Get the preview dialog for the initiator tab. printing::PrintViewManager* print_view_manager = printing::PrintViewManager::FromWebContents(initiator_tab); print_view_manager->PrintPreviewNow(false); - WebContents* preview_tab = + WebContents* preview_dialog = dialog_controller->GetOrCreatePreviewDialog(initiator_tab); - // New print preview tab is created. - EXPECT_EQ(1, browser()->tab_strip_model()->count()); - ASSERT_TRUE(preview_tab); - ASSERT_NE(initiator_tab, preview_tab); - PrintPreviewDialogDestroyedObserver observer(preview_tab); + // Check a new print preview dialog got created. + ASSERT_TRUE(preview_dialog); + ASSERT_NE(initiator_tab, preview_dialog); - // Navigate in the initiator tab. + // Navigate in the initiator tab. Make sure navigating destroys the print + // preview dialog. + PrintPreviewDialogDestroyedObserver observer(preview_dialog); GURL url(chrome::kChromeUINewTabURL); ui_test_utils::NavigateToURL(browser(), url); - ASSERT_TRUE(observer.dialog_destroyed()); - // Get the print preview tab for initiator tab. + // Get the print preview dialog for the initiator tab. print_view_manager->PrintPreviewNow(false); - WebContents* new_preview_tab = + WebContents* new_preview_dialog = dialog_controller->GetOrCreatePreviewDialog(initiator_tab); - // New preview tab is created. - EXPECT_EQ(1, browser()->tab_strip_model()->count()); - EXPECT_TRUE(new_preview_tab); + // Check a new preview dialog got created. + EXPECT_TRUE(new_preview_dialog); } // Test to verify that after reloading the initiator tab, it creates a new -// print preview tab. +// print preview dialog. IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest, ReloadInitiatorTab) { - // Lets start with one tab. - EXPECT_EQ(1, browser()->tab_strip_model()->count()); - // Create a reference to initiator tab contents. WebContents* initiator_tab = browser()->tab_strip_model()->GetActiveWebContents(); @@ -111,33 +103,31 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest, printing::PrintPreviewDialogController::GetInstance(); ASSERT_TRUE(dialog_controller); - // Get the preview tab for initiator tab. + // Create a preview dialog for the initiator tab. printing::PrintViewManager* print_view_manager = printing::PrintViewManager::FromWebContents(initiator_tab); print_view_manager->PrintPreviewNow(false); - WebContents* preview_tab = + WebContents* preview_dialog = dialog_controller->GetOrCreatePreviewDialog(initiator_tab); - // New print preview tab is created. - EXPECT_EQ(1, browser()->tab_strip_model()->count()); - ASSERT_TRUE(preview_tab); - ASSERT_NE(initiator_tab, preview_tab); - PrintPreviewDialogDestroyedObserver dialog_destroyed_observer(preview_tab); + // Check a new print preview dialog got created. + ASSERT_TRUE(preview_dialog); + ASSERT_NE(initiator_tab, preview_dialog); - // Reload the initiator tab. + // Reload the initiator tab. Make sure reloading destroys the print preview + // dialog. + PrintPreviewDialogDestroyedObserver dialog_destroyed_observer(preview_dialog); content::WindowedNotificationObserver notification_observer( content::NOTIFICATION_LOAD_STOP, content::NotificationService::AllSources()); chrome::Reload(browser(), CURRENT_TAB); notification_observer.Wait(); - ASSERT_TRUE(dialog_destroyed_observer.dialog_destroyed()); - // Get the print preview tab for initiator tab. + // Create a preview dialog for the initiator tab. print_view_manager->PrintPreviewNow(false); - WebContents* new_preview_tab = + WebContents* new_preview_dialog = dialog_controller->GetOrCreatePreviewDialog(initiator_tab); - EXPECT_EQ(1, browser()->tab_strip_model()->count()); - EXPECT_TRUE(new_preview_tab); + EXPECT_TRUE(new_preview_dialog); } |