summaryrefslogtreecommitdiffstats
path: root/chrome/browser/printing
diff options
context:
space:
mode:
authorwittman@chromium.org <wittman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-11 10:46:10 +0000
committerwittman@chromium.org <wittman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-11 10:46:10 +0000
commitd494302fa6af992c43d9447b6f594b26140fe142 (patch)
tree4dc7a7b8ee2a90a462abd71fae4f3822e35fe0be /chrome/browser/printing
parentfc38a0027c65756ea4474d5d990d31e306af8d3f (diff)
downloadchromium_src-d494302fa6af992c43d9447b6f594b26140fe142.zip
chromium_src-d494302fa6af992c43d9447b6f594b26140fe142.tar.gz
chromium_src-d494302fa6af992c43d9447b6f594b26140fe142.tar.bz2
Close web contents modal dialogs on content load start
Address the failure of some web contents modal dialogs to close when interstitial WebUI is displayed by closing the dialogs on content load start. Remove existing ad hoc support in dialogs for closing on page loading in favor of a uniform approach. I'm using load start as the trigger for dialog close as this seems to be the point in time at which the user first perceives the page to be changing. Notes on the print preview changes: with this change the dialog is closed when load starts and the initiator tab gets removed via RemovePreviewDialog, so there is no longer a need to handle NOTIFICATION_NAV_ENTRY_COMITTED for the initiator tab. The PrintViewManager::PrintPreviewDone() DCHECK is removed since now PrintViewManager::RenderViewGone() may be invoked and print_preview_state_ reset due to WebContents closure before the dialog is destroyed and PrintPreviewDone() is invoked. BUG=240575 Review URL: https://chromiumcodereview.appspot.com/17500003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@211058 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/printing')
-rw-r--r--chrome/browser/printing/background_printing_manager.cc9
-rw-r--r--chrome/browser/printing/print_preview_dialog_controller.cc187
-rw-r--r--chrome/browser/printing/print_preview_dialog_controller.h52
-rw-r--r--chrome/browser/printing/print_preview_dialog_controller_browsertest.cc32
-rw-r--r--chrome/browser/printing/print_preview_dialog_controller_unittest.cc68
-rw-r--r--chrome/browser/printing/print_view_manager.h2
6 files changed, 179 insertions, 171 deletions
diff --git a/chrome/browser/printing/background_printing_manager.cc b/chrome/browser/printing/background_printing_manager.cc
index c97f89a..1fa468c 100644
--- a/chrome/browser/printing/background_printing_manager.cc
+++ b/chrome/browser/printing/background_printing_manager.cc
@@ -63,16 +63,15 @@ void BackgroundPrintingManager::OwnPrintPreviewDialog(
rph_source);
}
- // Activate the initiator tab.
+ // Activate the initiator.
PrintPreviewDialogController* dialog_controller =
PrintPreviewDialogController::GetInstance();
if (!dialog_controller)
return;
- WebContents* initiator_tab =
- dialog_controller->GetInitiatorTab(preview_dialog);
- if (!initiator_tab)
+ WebContents* initiator = dialog_controller->GetInitiator(preview_dialog);
+ if (!initiator)
return;
- initiator_tab->GetDelegate()->ActivateContents(initiator_tab);
+ initiator->GetDelegate()->ActivateContents(initiator);
}
void BackgroundPrintingManager::Observe(
diff --git a/chrome/browser/printing/print_preview_dialog_controller.cc b/chrome/browser/printing/print_preview_dialog_controller.cc
index f5d8a57..2009403 100644
--- a/chrome/browser/printing/print_preview_dialog_controller.cc
+++ b/chrome/browser/printing/print_preview_dialog_controller.cc
@@ -74,7 +74,7 @@ void EnableInternalPDFPluginForContents(WebContents* preview_dialog) {
// will look like.
class PrintPreviewDialogDelegate : public WebDialogDelegate {
public:
- explicit PrintPreviewDialogDelegate(WebContents* initiator_tab);
+ explicit PrintPreviewDialogDelegate(WebContents* initiator);
virtual ~PrintPreviewDialogDelegate();
virtual ui::ModalType GetDialogModalType() const OVERRIDE;
@@ -90,14 +90,13 @@ class PrintPreviewDialogDelegate : public WebDialogDelegate {
virtual bool ShouldShowDialogTitle() const OVERRIDE;
private:
- WebContents* initiator_tab_;
+ WebContents* initiator_;
DISALLOW_COPY_AND_ASSIGN(PrintPreviewDialogDelegate);
};
-PrintPreviewDialogDelegate::PrintPreviewDialogDelegate(
- WebContents* initiator_tab) {
- initiator_tab_ = initiator_tab;
+PrintPreviewDialogDelegate::PrintPreviewDialogDelegate(WebContents* initiator)
+ : initiator_(initiator) {
}
PrintPreviewDialogDelegate::~PrintPreviewDialogDelegate() {
@@ -129,7 +128,7 @@ void PrintPreviewDialogDelegate::GetDialogSize(gfx::Size* size) const {
const int kBorder = 25;
const int kConstrainedWindowOverlap = 3;
gfx::Rect rect;
- initiator_tab_->GetView()->GetContainerBounds(&rect);
+ initiator_->GetView()->GetContainerBounds(&rect);
size->set_width(std::max(rect.width(), kMinDialogSize.width()) - 2 * kBorder);
size->set_height(std::max(rect.height(), kMinDialogSize.height()) - kBorder +
kConstrainedWindowOverlap);
@@ -165,7 +164,7 @@ bool PrintPreviewDialogDelegate::ShouldShowDialogTitle() const {
// renderer to the browser.
class PrintPreviewWebContentDelegate : public WebDialogWebContentsDelegate {
public:
- PrintPreviewWebContentDelegate(Profile* profile, WebContents* initiator_tab);
+ PrintPreviewWebContentDelegate(Profile* profile, WebContents* initiator);
virtual ~PrintPreviewWebContentDelegate();
// Overridden from WebDialogWebContentsDelegate:
@@ -181,9 +180,9 @@ class PrintPreviewWebContentDelegate : public WebDialogWebContentsDelegate {
PrintPreviewWebContentDelegate::PrintPreviewWebContentDelegate(
Profile* profile,
- WebContents* initiator_tab)
+ WebContents* initiator)
: WebDialogWebContentsDelegate(profile, new ChromeWebContentsHandler),
- tab_(initiator_tab) {}
+ tab_(initiator) {}
PrintPreviewWebContentDelegate::~PrintPreviewWebContentDelegate() {}
@@ -216,28 +215,28 @@ PrintPreviewDialogController* PrintPreviewDialogController::GetInstance() {
}
// static
-void PrintPreviewDialogController::PrintPreview(WebContents* initiator_tab) {
- if (initiator_tab->ShowingInterstitialPage())
+void PrintPreviewDialogController::PrintPreview(WebContents* initiator) {
+ if (initiator->ShowingInterstitialPage())
return;
PrintPreviewDialogController* dialog_controller = GetInstance();
if (!dialog_controller)
return;
- if (!dialog_controller->GetOrCreatePreviewDialog(initiator_tab))
- PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewDone();
+ if (!dialog_controller->GetOrCreatePreviewDialog(initiator))
+ PrintViewManager::FromWebContents(initiator)->PrintPreviewDone();
}
WebContents* PrintPreviewDialogController::GetOrCreatePreviewDialog(
- WebContents* initiator_tab) {
- DCHECK(initiator_tab);
+ WebContents* initiator) {
+ DCHECK(initiator);
- // Get the print preview dialog for |initiator_tab|.
- WebContents* preview_dialog = GetPrintPreviewForContents(initiator_tab);
+ // Get the print preview dialog for |initiator|.
+ WebContents* preview_dialog = GetPrintPreviewForContents(initiator);
if (!preview_dialog)
- return CreatePrintPreviewDialog(initiator_tab);
+ return CreatePrintPreviewDialog(initiator);
- // Show the initiator tab holding the existing preview dialog.
- initiator_tab->GetDelegate()->ActivateContents(initiator_tab);
+ // Show the initiator holding the existing preview dialog.
+ initiator->GetDelegate()->ActivateContents(initiator);
return preview_dialog;
}
@@ -252,7 +251,7 @@ WebContents* PrintPreviewDialogController::GetPrintPreviewForContents(
for (it = preview_dialog_map_.begin();
it != preview_dialog_map_.end();
++it) {
- // If |contents| is an initiator tab.
+ // If |contents| is an initiator.
if (contents == it->second) {
// Return the associated preview dialog.
return it->first;
@@ -261,7 +260,7 @@ WebContents* PrintPreviewDialogController::GetPrintPreviewForContents(
return NULL;
}
-WebContents* PrintPreviewDialogController::GetInitiatorTab(
+WebContents* PrintPreviewDialogController::GetInitiator(
WebContents* preview_dialog) {
PrintPreviewDialogMap::iterator it = preview_dialog_map_.find(preview_dialog);
return (it != preview_dialog_map_.end()) ? it->second : NULL;
@@ -297,13 +296,13 @@ bool PrintPreviewDialogController::IsPrintPreviewURL(const GURL& url) {
url.host() == chrome::kChromeUIPrintHost);
}
-void PrintPreviewDialogController::EraseInitiatorTabInfo(
+void PrintPreviewDialogController::EraseInitiatorInfo(
WebContents* preview_dialog) {
PrintPreviewDialogMap::iterator it = preview_dialog_map_.find(preview_dialog);
if (it == preview_dialog_map_.end())
return;
- RemoveObservers(it->second);
+ RemoveObservers(it->second, INITIATOR);
preview_dialog_map_[preview_dialog] = NULL;
}
@@ -313,17 +312,17 @@ void PrintPreviewDialogController::OnRendererProcessClosed(
content::RenderProcessHost* rph) {
// 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_initiators;
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;
+ WebContents* initiator = iter->second;
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);
+ } else if (initiator &&
+ initiator->GetRenderProcessHost() == rph) {
+ closed_initiators.push_back(initiator);
}
}
@@ -335,8 +334,8 @@ void PrintPreviewDialogController::OnRendererProcessClosed(
print_preview_ui->OnPrintPreviewDialogClosed();
}
- for (size_t i = 0; i < closed_initiator_tabs.size(); ++i)
- RemoveInitiatorTab(closed_initiator_tabs[i]);
+ for (size_t i = 0; i < closed_initiators.size(); ++i)
+ RemoveInitiator(closed_initiators[i]);
}
void PrintPreviewDialogController::OnWebContentsDestroyed(
@@ -350,7 +349,7 @@ void PrintPreviewDialogController::OnWebContentsDestroyed(
if (contents == preview_dialog)
RemovePreviewDialog(contents);
else
- RemoveInitiatorTab(contents);
+ RemoveInitiator(contents);
}
void PrintPreviewDialogController::OnNavEntryCommitted(
@@ -361,42 +360,40 @@ void PrintPreviewDialogController::OnNavEntryCommitted(
return;
}
- if (contents == preview_dialog) {
- // Preview dialog navigated.
- if (details) {
- content::PageTransition transition_type =
- details->entry->GetTransitionType();
- content::NavigationType nav_type = details->type;
-
- // 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_dialog);
- return;
- }
-
- // Cloud print sign-in causes a reload.
- if (!waiting_for_new_preview_page_ &&
- transition_type == content::PAGE_TRANSITION_RELOAD &&
- nav_type == content::NAVIGATION_TYPE_EXISTING_PAGE &&
- IsPrintPreviewURL(details->previous_url)) {
- return;
- }
+ DCHECK_EQ(contents, preview_dialog);
+
+ // Preview dialog navigated.
+ if (details) {
+ content::PageTransition transition_type =
+ details->entry->GetTransitionType();
+ content::NavigationType nav_type = details->type;
+
+ // 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;
+ SaveInitiatorTitle(preview_dialog);
+ return;
+ }
+
+ // Cloud print sign-in causes a reload.
+ if (!waiting_for_new_preview_page_ &&
+ transition_type == content::PAGE_TRANSITION_RELOAD &&
+ nav_type == content::NAVIGATION_TYPE_EXISTING_PAGE &&
+ IsPrintPreviewURL(details->previous_url)) {
+ return;
}
- NOTREACHED();
- return;
}
- RemoveInitiatorTab(contents);
+ NOTREACHED();
}
WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog(
- WebContents* initiator_tab) {
+ WebContents* initiator) {
base::AutoReset<bool> auto_reset(&is_creating_print_preview_dialog_, true);
Profile* profile =
- Profile::FromBrowserContext(initiator_tab->GetBrowserContext());
+ Profile::FromBrowserContext(initiator->GetBrowserContext());
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kChromeFrame)) {
// Chrome Frame only ever runs on the native desktop, so it is safe to
// create the popup on the native desktop.
@@ -412,45 +409,48 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog(
// |web_dialog_ui_delegate| deletes itself in
// PrintPreviewDialogDelegate::OnDialogClosed().
WebDialogDelegate* web_dialog_delegate =
- new PrintPreviewDialogDelegate(initiator_tab);
+ new PrintPreviewDialogDelegate(initiator);
// |web_dialog_delegate|'s owner is |constrained_delegate|.
PrintPreviewWebContentDelegate* pp_wcd =
- new PrintPreviewWebContentDelegate(profile, initiator_tab);
+ new PrintPreviewWebContentDelegate(profile, initiator);
ConstrainedWebDialogDelegate* constrained_delegate =
CreateConstrainedWebDialog(profile,
web_dialog_delegate,
pp_wcd,
- initiator_tab);
+ initiator);
WebContents* preview_dialog = constrained_delegate->GetWebContents();
EnableInternalPDFPluginForContents(preview_dialog);
PrintViewManager::CreateForWebContents(preview_dialog);
// Add an entry to the map.
- preview_dialog_map_[preview_dialog] = initiator_tab;
+ preview_dialog_map_[preview_dialog] = initiator;
waiting_for_new_preview_page_ = true;
- AddObservers(initiator_tab);
- AddObservers(preview_dialog);
+ AddObservers(initiator, INITIATOR);
+ AddObservers(preview_dialog, PREVIEW_DIALOG);
return preview_dialog;
}
-void PrintPreviewDialogController::SaveInitiatorTabTitle(
+void PrintPreviewDialogController::SaveInitiatorTitle(
WebContents* preview_dialog) {
- WebContents* initiator_tab = GetInitiatorTab(preview_dialog);
- if (initiator_tab && preview_dialog->GetWebUI()) {
+ WebContents* initiator = GetInitiator(preview_dialog);
+ if (initiator && preview_dialog->GetWebUI()) {
PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
preview_dialog->GetWebUI()->GetController());
- print_preview_ui->SetInitiatorTabTitle(
- PrintViewManager::FromWebContents(initiator_tab)->RenderSourceName());
+ print_preview_ui->SetInitiatorTitle(
+ PrintViewManager::FromWebContents(initiator)->RenderSourceName());
}
}
-void PrintPreviewDialogController::AddObservers(WebContents* contents) {
+void PrintPreviewDialogController::AddObservers(WebContents* contents,
+ ContentsType contents_type) {
registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
content::Source<WebContents>(contents));
- registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
- content::Source<NavigationController>(&contents->GetController()));
+ if (contents_type == PREVIEW_DIALOG) {
+ registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
+ content::Source<NavigationController>(&contents->GetController()));
+ }
// Multiple sites may share the same RenderProcessHost, so check if this
// notification has already been added.
@@ -463,11 +463,14 @@ void PrintPreviewDialogController::AddObservers(WebContents* contents) {
}
}
-void PrintPreviewDialogController::RemoveObservers(WebContents* contents) {
+void PrintPreviewDialogController::RemoveObservers(WebContents* contents,
+ ContentsType contents_type) {
registrar_.Remove(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
content::Source<WebContents>(contents));
- registrar_.Remove(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
- content::Source<NavigationController>(&contents->GetController()));
+ if (contents_type == PREVIEW_DIALOG) {
+ registrar_.Remove(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
+ content::Source<NavigationController>(&contents->GetController()));
+ }
// Multiple sites may share the same RenderProcessHost, so check if this
// notification has already been added.
@@ -480,43 +483,43 @@ void PrintPreviewDialogController::RemoveObservers(WebContents* contents) {
}
}
-void PrintPreviewDialogController::RemoveInitiatorTab(
- WebContents* initiator_tab) {
- WebContents* preview_dialog = GetPrintPreviewForContents(initiator_tab);
+void PrintPreviewDialogController::RemoveInitiator(
+ WebContents* initiator) {
+ WebContents* preview_dialog = GetPrintPreviewForContents(initiator);
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.
+ // initiator's observers.
preview_dialog_map_[preview_dialog] = NULL;
- RemoveObservers(initiator_tab);
+ RemoveObservers(initiator, INITIATOR);
- PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewDone();
+ PrintViewManager::FromWebContents(initiator)->PrintPreviewDone();
- // Initiator tab is closed. Close the print preview dialog too.
+ // initiator 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();
+ print_preview_ui->OnInitiatorClosed();
}
void PrintPreviewDialogController::RemovePreviewDialog(
WebContents* preview_dialog) {
- // Remove the initiator tab's observers before erasing the mapping.
- WebContents* initiator_tab = GetInitiatorTab(preview_dialog);
- if (initiator_tab) {
- RemoveObservers(initiator_tab);
- PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewDone();
+ // Remove the initiator's observers before erasing the mapping.
+ WebContents* initiator = GetInitiator(preview_dialog);
+ if (initiator) {
+ RemoveObservers(initiator, INITIATOR);
+ PrintViewManager::FromWebContents(initiator)->PrintPreviewDone();
}
// Print preview WebContents is destroyed. Notify |PrintPreviewUI| to abort
- // the initiator tab preview request.
+ // the initiator preview request.
PrintPreviewUI* print_preview_ui =
static_cast<PrintPreviewUI*>(preview_dialog->GetWebUI()->GetController());
if (print_preview_ui)
print_preview_ui->OnPrintPreviewDialogDestroyed();
preview_dialog_map_.erase(preview_dialog);
- RemoveObservers(preview_dialog);
+ RemoveObservers(preview_dialog, 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 0ce70db..da5d385 100644
--- a/chrome/browser/printing/print_preview_dialog_controller.h
+++ b/chrome/browser/printing/print_preview_dialog_controller.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+ // Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -22,9 +22,9 @@ class WebContents;
namespace printing {
-// 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.
+// For print preview, the WebContents that initiates the printing operation is
+// the initiator, 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.
@@ -36,14 +36,14 @@ class PrintPreviewDialogController
static PrintPreviewDialogController* GetInstance();
- // Initiate print preview for |initiator_tab|.
+ // Initiate print preview for |initiator|.
// Call this instead of GetOrCreatePreviewDialog().
- static void PrintPreview(content::WebContents* initiator_tab);
+ static void PrintPreview(content::WebContents* initiator);
- // Get/Create the print preview dialog for |initiator_tab|.
+ // Get/Create the print preview dialog for |initiator|.
// Exposed for unit tests.
content::WebContents* GetOrCreatePreviewDialog(
- content::WebContents* initiator_tab);
+ content::WebContents* initiator);
// Returns the preview dialog for |contents|.
// Returns |contents| if |contents| is a preview dialog.
@@ -51,9 +51,9 @@ class PrintPreviewDialogController
content::WebContents* GetPrintPreviewForContents(
content::WebContents* contents) const;
- // Returns the initiator tab for |preview_dialog|.
- // Returns NULL if no initiator tab exists for |preview_dialog|.
- content::WebContents* GetInitiatorTab(content::WebContents* preview_dialog);
+ // Returns the initiator for |preview_dialog|.
+ // Returns NULL if no initiator exists for |preview_dialog|.
+ content::WebContents* GetInitiator(content::WebContents* preview_dialog);
// content::NotificationObserver implementation.
virtual void Observe(int type,
@@ -66,8 +66,8 @@ class PrintPreviewDialogController
// Returns true if |url| is a print preview url.
static bool IsPrintPreviewURL(const GURL& url);
- // Erase the initiator tab info associated with |preview_tab|.
- void EraseInitiatorTabInfo(content::WebContents* preview_tab);
+ // Erase the initiator info associated with |preview_dialog|.
+ void EraseInitiatorInfo(content::WebContents* preview_dialog);
bool is_creating_print_preview_dialog() const {
return is_creating_print_preview_dialog_;
@@ -76,9 +76,16 @@ class PrintPreviewDialogController
private:
friend class base::RefCounted<PrintPreviewDialogController>;
- // 1:1 relationship between a print preview dialog and its initiator tab.
+ // Used to distinguish between the two varieties of WebContents dealt with by
+ // this class.
+ enum ContentsType {
+ INITIATOR,
+ PREVIEW_DIALOG
+ };
+
+ // 1:1 relationship between a print preview dialog and its initiator.
// Key: Print preview dialog.
- // Value: Initiator tab.
+ // Value: Initiator.
typedef std::map<content::WebContents*, content::WebContents*>
PrintPreviewDialogMap;
@@ -99,21 +106,22 @@ class PrintPreviewDialogController
// Creates a new print preview dialog.
content::WebContents* CreatePrintPreviewDialog(
- content::WebContents* initiator_tab);
+ content::WebContents* initiator);
- // Helper function to store the title of the initiator tab associated with
+ // Helper function to store the title of the initiator associated with
// |preview_dialog| in |preview_dialog|'s PrintPreviewUI.
- void SaveInitiatorTabTitle(content::WebContents* preview_dialog);
+ void SaveInitiatorTitle(content::WebContents* preview_dialog);
// Adds/Removes observers for notifications from |contents|.
- void AddObservers(content::WebContents* contents);
- void RemoveObservers(content::WebContents* contents);
+ void AddObservers(content::WebContents* contents, ContentsType contents_type);
+ void RemoveObservers(content::WebContents* contents,
+ ContentsType contents_type);
// Removes WebContents when they close/crash/navigate.
- void RemoveInitiatorTab(content::WebContents* initiator_tab);
+ void RemoveInitiator(content::WebContents* initiator);
void RemovePreviewDialog(content::WebContents* preview_dialog);
- // Mapping between print preview dialog and the corresponding initiator tab.
+ // Mapping between print preview dialog and the corresponding initiator.
PrintPreviewDialogMap preview_dialog_map_;
// A registrar for listening notifications.
diff --git a/chrome/browser/printing/print_preview_dialog_controller_browsertest.cc b/chrome/browser/printing/print_preview_dialog_controller_browsertest.cc
index b9bcb4e..c64c3bf8 100644
--- a/chrome/browser/printing/print_preview_dialog_controller_browsertest.cc
+++ b/chrome/browser/printing/print_preview_dialog_controller_browsertest.cc
@@ -103,11 +103,11 @@ class PrintPreviewDialogDestroyedObserver : public WebContentsObserver {
class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
public:
- PrintPreviewDialogControllerBrowserTest() : initiator_tab_(NULL) {}
+ PrintPreviewDialogControllerBrowserTest() : initiator_(NULL) {}
virtual ~PrintPreviewDialogControllerBrowserTest() {}
- WebContents* initiator_tab() {
- return initiator_tab_;
+ WebContents* initiator() {
+ return initiator_;
}
void PrintPreview() {
@@ -120,7 +120,7 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
WebContents* GetPrintPreviewDialog() {
printing::PrintPreviewDialogController* dialog_controller =
printing::PrintPreviewDialogController::GetInstance();
- return dialog_controller->GetPrintPreviewForContents(initiator_tab_);
+ return dialog_controller->GetPrintPreviewForContents(initiator_);
}
private:
@@ -143,14 +143,14 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
cloned_tab_observer_.reset(new PrintPreviewDialogClonedObserver(first_tab));
chrome::DuplicateTab(browser());
- initiator_tab_ = browser()->tab_strip_model()->GetActiveWebContents();
- ASSERT_TRUE(initiator_tab_);
- ASSERT_NE(first_tab, initiator_tab_);
+ initiator_ = browser()->tab_strip_model()->GetActiveWebContents();
+ ASSERT_TRUE(initiator_);
+ ASSERT_NE(first_tab, initiator_);
}
virtual void CleanUpOnMainThread() OVERRIDE {
cloned_tab_observer_.reset();
- initiator_tab_ = NULL;
+ initiator_ = NULL;
}
RequestPrintPreviewObserver* request_preview_tab_observer() {
@@ -158,13 +158,13 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
}
scoped_ptr<PrintPreviewDialogClonedObserver> cloned_tab_observer_;
- WebContents* initiator_tab_;
+ WebContents* initiator_;
DISALLOW_COPY_AND_ASSIGN(PrintPreviewDialogControllerBrowserTest);
};
-// Test to verify that when a initiator tab navigates, we can create a new
-// preview dialog for the new tab contents.
+// Test to verify that when a initiator navigates, we can create a new preview
+// dialog for the new tab contents.
IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest,
NavigateFromInitiatorTab) {
// print for the first time.
@@ -175,7 +175,7 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest,
// Check a new print preview dialog got created.
ASSERT_TRUE(preview_dialog);
- ASSERT_NE(initiator_tab(), preview_dialog);
+ ASSERT_NE(initiator(), preview_dialog);
// Navigate in the initiator tab. Make sure navigating destroys the print
// preview dialog.
@@ -193,8 +193,8 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest,
EXPECT_TRUE(new_preview_dialog);
}
-// Test to verify that after reloading the initiator tab, it creates a new
-// print preview dialog.
+// Test to verify that after reloading the initiator, it creates a new print
+// preview dialog.
IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest,
ReloadInitiatorTab) {
// print for the first time.
@@ -204,9 +204,9 @@ IN_PROC_BROWSER_TEST_F(PrintPreviewDialogControllerBrowserTest,
// Check a new print preview dialog got created.
ASSERT_TRUE(preview_dialog);
- ASSERT_NE(initiator_tab(), preview_dialog);
+ ASSERT_NE(initiator(), preview_dialog);
- // Reload the initiator tab. Make sure reloading destroys the print preview
+ // Reload the initiator. Make sure reloading destroys the print preview
// dialog.
PrintPreviewDialogDestroyedObserver dialog_destroyed_observer(preview_dialog);
content::WindowedNotificationObserver notification_observer(
diff --git a/chrome/browser/printing/print_preview_dialog_controller_unittest.cc b/chrome/browser/printing/print_preview_dialog_controller_unittest.cc
index a336631..6ec20ba 100644
--- a/chrome/browser/printing/print_preview_dialog_controller_unittest.cc
+++ b/chrome/browser/printing/print_preview_dialog_controller_unittest.cc
@@ -16,23 +16,23 @@
using content::WebContents;
-// Test crashes on Aura due to initiator tab's native view having no parent.
+// Test crashes on Aura due to initiator's native view having no parent.
// http://crbug.com/104284
#if defined(USE_AURA)
#define MAYBE_GetOrCreatePreviewDialog DISABLED_GetOrCreatePreviewDialog
#define MAYBE_MultiplePreviewDialogs DISABLED_MultiplePreviewDialogs
-#define MAYBE_ClearInitiatorTabDetails DISABLED_ClearInitiatorTabDetails
+#define MAYBE_ClearInitiatorDetails DISABLED_ClearInitiatorDetails
#else
#define MAYBE_GetOrCreatePreviewDialog GetOrCreatePreviewDialog
#define MAYBE_MultiplePreviewDialogs MultiplePreviewDialogs
-#define MAYBE_ClearInitiatorTabDetails ClearInitiatorTabDetails
+#define MAYBE_ClearInitiatorDetails ClearInitiatorDetails
#endif
namespace printing {
typedef PrintPreviewTest PrintPreviewDialogControllerUnitTest;
-// Create/Get a preview dialog for initiator tab.
+// Create/Get a preview dialog for initiator.
TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_GetOrCreatePreviewDialog) {
// Lets start with one window with one tab.
EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
@@ -40,38 +40,37 @@ TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_GetOrCreatePreviewDialog) {
chrome::NewTab(browser());
EXPECT_EQ(1, browser()->tab_strip_model()->count());
- // Create a reference to initiator tab contents.
- WebContents* initiator_tab =
- browser()->tab_strip_model()->GetActiveWebContents();
+ // Create a reference to initiator contents.
+ WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents();
PrintPreviewDialogController* dialog_controller =
PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(dialog_controller);
- // Get the preview dialog for initiator tab.
- PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewNow(false);
+ // Get the preview dialog for initiator.
+ PrintViewManager::FromWebContents(initiator)->PrintPreviewNow(false);
WebContents* preview_dialog =
- dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
+ dialog_controller->GetOrCreatePreviewDialog(initiator);
// 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_NE(initiator_tab, preview_dialog);
+ EXPECT_NE(initiator, preview_dialog);
- // Get the print preview dialog for the same initiator tab.
+ // Get the print preview dialog for the same initiator.
WebContents* new_preview_dialog =
- dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
+ dialog_controller->GetOrCreatePreviewDialog(initiator);
// Preview dialog already exists. Tab count remains the same.
EXPECT_EQ(1, browser()->tab_strip_model()->count());
- // 1:1 relationship between initiator tab and preview dialog.
+ // 1:1 relationship between initiator and preview dialog.
EXPECT_EQ(new_preview_dialog, preview_dialog);
}
-// Tests multiple print preview dialogs exist in the same browser for
-// different initiator tabs. If a preview dialog already exists for an
-// initiator tab, that initiator tab gets focused.
+// Tests multiple print preview dialogs exist in the same browser for different
+// initiators. If a preview dialog already exists for an initiator, that
+// initiator gets focused.
TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_MultiplePreviewDialogs) {
// Lets start with one window and two tabs.
EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
@@ -80,7 +79,7 @@ TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_MultiplePreviewDialogs) {
EXPECT_EQ(0, tab_strip_model->count());
- // Create some new initiator tabs.
+ // Create some new initiators.
chrome::NewTab(browser());
WebContents* web_contents_1 = tab_strip_model->GetActiveWebContents();
ASSERT_TRUE(web_contents_1);
@@ -109,8 +108,8 @@ TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_MultiplePreviewDialogs) {
EXPECT_NE(web_contents_2, preview_dialog_2);
EXPECT_NE(preview_dialog_1, preview_dialog_2);
- // 2 initiator tabs and 2 preview dialogs exist in the same browser.
- // The preview dialogs are constrained in their respective initiator tabs.
+ // 2 initiators and 2 preview dialogs exist in the same browser. The preview
+ // dialogs are constrained in their respective initiators.
EXPECT_EQ(2, tab_strip_model->count());
int tab_1_index = tab_strip_model->GetIndexOfWebContents(web_contents_1);
@@ -125,7 +124,7 @@ TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_MultiplePreviewDialogs) {
EXPECT_EQ(-1, preview_dialog_2_index);
// Since |preview_dialog_2_index| was the most recently created dialog, its
- // initiator tab should have focus.
+ // initiator should have focus.
EXPECT_EQ(tab_2_index, tab_strip_model->active_index());
// When we get the preview dialog for |web_contents_1|,
@@ -134,39 +133,38 @@ TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_MultiplePreviewDialogs) {
EXPECT_EQ(tab_1_index, tab_strip_model->active_index());
}
-// 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) {
+// Check clearing the initiator details associated with a print preview dialog
+// allows the initiator to create another print preview dialog.
+TEST_F(PrintPreviewDialogControllerUnitTest, MAYBE_ClearInitiatorDetails) {
// Lets start with one window with one tab.
EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
EXPECT_EQ(0, browser()->tab_strip_model()->count());
chrome::NewTab(browser());
EXPECT_EQ(1, browser()->tab_strip_model()->count());
- // Create a reference to initiator tab contents.
- WebContents* initiator_tab =
- browser()->tab_strip_model()->GetActiveWebContents();
+ // Create a reference to initiator contents.
+ WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents();
PrintPreviewDialogController* dialog_controller =
PrintPreviewDialogController::GetInstance();
ASSERT_TRUE(dialog_controller);
- // Get the preview dialog for the initiator tab.
- PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewNow(false);
+ // Get the preview dialog for the initiator.
+ PrintViewManager::FromWebContents(initiator)->PrintPreviewNow(false);
WebContents* preview_dialog =
- dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
+ dialog_controller->GetOrCreatePreviewDialog(initiator);
// 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_NE(initiator_tab, preview_dialog);
+ EXPECT_NE(initiator, preview_dialog);
- // Clear the initiator tab details associated with the preview dialog.
- dialog_controller->EraseInitiatorTabInfo(preview_dialog);
+ // Clear the initiator details associated with the preview dialog.
+ dialog_controller->EraseInitiatorInfo(preview_dialog);
- // Get a new print preview dialog for the initiator tab.
+ // Get a new print preview dialog for the initiator.
WebContents* new_preview_dialog =
- dialog_controller->GetOrCreatePreviewDialog(initiator_tab);
+ dialog_controller->GetOrCreatePreviewDialog(initiator);
// New print preview dialog is a constrained window, so the number of tabs is
// still 1.
diff --git a/chrome/browser/printing/print_view_manager.h b/chrome/browser/printing/print_view_manager.h
index 55b4708..616ff00 100644
--- a/chrome/browser/printing/print_view_manager.h
+++ b/chrome/browser/printing/print_view_manager.h
@@ -46,7 +46,7 @@ class PrintViewManager : public content::NotificationObserver,
bool PrintForSystemDialogNow();
// Same as PrintNow(), but for the case where a user press "ctrl+shift+p" to
- // show the native system dialog. This can happen from both initiator tab and
+ // show the native system dialog. This can happen from both initiator and
// preview dialog.
bool AdvancedPrintNow();