Index: trunk/src/chrome/browser/printing/print_preview_dialog_controller.cc |
=================================================================== |
--- trunk/src/chrome/browser/printing/print_preview_dialog_controller.cc (revision 214772) |
+++ trunk/src/chrome/browser/printing/print_preview_dialog_controller.cc (working copy) |
@@ -74,7 +74,7 @@ |
// will look like. |
class PrintPreviewDialogDelegate : public WebDialogDelegate { |
public: |
- explicit PrintPreviewDialogDelegate(WebContents* initiator); |
+ explicit PrintPreviewDialogDelegate(WebContents* initiator_tab); |
virtual ~PrintPreviewDialogDelegate(); |
virtual ui::ModalType GetDialogModalType() const OVERRIDE; |
@@ -90,13 +90,14 @@ |
virtual bool ShouldShowDialogTitle() const OVERRIDE; |
private: |
- WebContents* initiator_; |
+ WebContents* initiator_tab_; |
DISALLOW_COPY_AND_ASSIGN(PrintPreviewDialogDelegate); |
}; |
-PrintPreviewDialogDelegate::PrintPreviewDialogDelegate(WebContents* initiator) |
- : initiator_(initiator) { |
+PrintPreviewDialogDelegate::PrintPreviewDialogDelegate( |
+ WebContents* initiator_tab) { |
+ initiator_tab_ = initiator_tab; |
} |
PrintPreviewDialogDelegate::~PrintPreviewDialogDelegate() { |
@@ -128,7 +129,7 @@ |
const int kBorder = 25; |
const int kConstrainedWindowOverlap = 3; |
gfx::Rect rect; |
- initiator_->GetView()->GetContainerBounds(&rect); |
+ initiator_tab_->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); |
@@ -164,7 +165,7 @@ |
// renderer to the browser. |
class PrintPreviewWebContentDelegate : public WebDialogWebContentsDelegate { |
public: |
- PrintPreviewWebContentDelegate(Profile* profile, WebContents* initiator); |
+ PrintPreviewWebContentDelegate(Profile* profile, WebContents* initiator_tab); |
virtual ~PrintPreviewWebContentDelegate(); |
// Overridden from WebDialogWebContentsDelegate: |
@@ -180,9 +181,9 @@ |
PrintPreviewWebContentDelegate::PrintPreviewWebContentDelegate( |
Profile* profile, |
- WebContents* initiator) |
+ WebContents* initiator_tab) |
: WebDialogWebContentsDelegate(profile, new ChromeWebContentsHandler), |
- tab_(initiator) {} |
+ tab_(initiator_tab) {} |
PrintPreviewWebContentDelegate::~PrintPreviewWebContentDelegate() {} |
@@ -215,28 +216,28 @@ |
} |
// static |
-void PrintPreviewDialogController::PrintPreview(WebContents* initiator) { |
- if (initiator->ShowingInterstitialPage()) |
+void PrintPreviewDialogController::PrintPreview(WebContents* initiator_tab) { |
+ if (initiator_tab->ShowingInterstitialPage()) |
return; |
PrintPreviewDialogController* dialog_controller = GetInstance(); |
if (!dialog_controller) |
return; |
- if (!dialog_controller->GetOrCreatePreviewDialog(initiator)) |
- PrintViewManager::FromWebContents(initiator)->PrintPreviewDone(); |
+ if (!dialog_controller->GetOrCreatePreviewDialog(initiator_tab)) |
+ PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewDone(); |
} |
WebContents* PrintPreviewDialogController::GetOrCreatePreviewDialog( |
- WebContents* initiator) { |
- DCHECK(initiator); |
+ WebContents* initiator_tab) { |
+ DCHECK(initiator_tab); |
- // Get the print preview dialog for |initiator|. |
- WebContents* preview_dialog = GetPrintPreviewForContents(initiator); |
+ // Get the print preview dialog for |initiator_tab|. |
+ WebContents* preview_dialog = GetPrintPreviewForContents(initiator_tab); |
if (!preview_dialog) |
- return CreatePrintPreviewDialog(initiator); |
+ return CreatePrintPreviewDialog(initiator_tab); |
- // Show the initiator holding the existing preview dialog. |
- initiator->GetDelegate()->ActivateContents(initiator); |
+ // Show the initiator tab holding the existing preview dialog. |
+ initiator_tab->GetDelegate()->ActivateContents(initiator_tab); |
return preview_dialog; |
} |
@@ -251,7 +252,7 @@ |
for (it = preview_dialog_map_.begin(); |
it != preview_dialog_map_.end(); |
++it) { |
- // If |contents| is an initiator. |
+ // If |contents| is an initiator tab. |
if (contents == it->second) { |
// Return the associated preview dialog. |
return it->first; |
@@ -260,7 +261,7 @@ |
return NULL; |
} |
-WebContents* PrintPreviewDialogController::GetInitiator( |
+WebContents* PrintPreviewDialogController::GetInitiatorTab( |
WebContents* preview_dialog) { |
PrintPreviewDialogMap::iterator it = preview_dialog_map_.find(preview_dialog); |
return (it != preview_dialog_map_.end()) ? it->second : NULL; |
@@ -296,13 +297,13 @@ |
url.host() == chrome::kChromeUIPrintHost); |
} |
-void PrintPreviewDialogController::EraseInitiatorInfo( |
+void PrintPreviewDialogController::EraseInitiatorTabInfo( |
WebContents* preview_dialog) { |
PrintPreviewDialogMap::iterator it = preview_dialog_map_.find(preview_dialog); |
if (it == preview_dialog_map_.end()) |
return; |
- RemoveObservers(it->second, INITIATOR); |
+ RemoveObservers(it->second); |
preview_dialog_map_[preview_dialog] = NULL; |
} |
@@ -312,17 +313,17 @@ |
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_initiators; |
+ std::vector<WebContents*> closed_initiator_tabs; |
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 = iter->second; |
+ WebContents* initiator_tab = iter->second; |
if (preview_dialog->GetRenderProcessHost() == rph) { |
closed_preview_dialogs.push_back(preview_dialog); |
- } else if (initiator && |
- initiator->GetRenderProcessHost() == rph) { |
- closed_initiators.push_back(initiator); |
+ } else if (initiator_tab && |
+ initiator_tab->GetRenderProcessHost() == rph) { |
+ closed_initiator_tabs.push_back(initiator_tab); |
} |
} |
@@ -334,8 +335,8 @@ |
print_preview_ui->OnPrintPreviewDialogClosed(); |
} |
- for (size_t i = 0; i < closed_initiators.size(); ++i) |
- RemoveInitiator(closed_initiators[i]); |
+ for (size_t i = 0; i < closed_initiator_tabs.size(); ++i) |
+ RemoveInitiatorTab(closed_initiator_tabs[i]); |
} |
void PrintPreviewDialogController::OnWebContentsDestroyed( |
@@ -349,7 +350,7 @@ |
if (contents == preview_dialog) |
RemovePreviewDialog(contents); |
else |
- RemoveInitiator(contents); |
+ RemoveInitiatorTab(contents); |
} |
void PrintPreviewDialogController::OnNavEntryCommitted( |
@@ -360,40 +361,42 @@ |
return; |
} |
- DCHECK_EQ(contents, preview_dialog); |
+ if (contents == preview_dialog) { |
+ // Preview dialog navigated. |
+ if (details) { |
+ content::PageTransition transition_type = |
+ details->entry->GetTransitionType(); |
+ content::NavigationType nav_type = details->type; |
- // 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; |
+ } |
- // 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; |
+ } |
} |
- |
- // 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; |
} |
- NOTREACHED(); |
+ RemoveInitiatorTab(contents); |
} |
WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog( |
- WebContents* initiator) { |
+ WebContents* initiator_tab) { |
base::AutoReset<bool> auto_reset(&is_creating_print_preview_dialog_, true); |
Profile* profile = |
- Profile::FromBrowserContext(initiator->GetBrowserContext()); |
+ Profile::FromBrowserContext(initiator_tab->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. |
@@ -409,48 +412,45 @@ |
// |web_dialog_ui_delegate| deletes itself in |
// PrintPreviewDialogDelegate::OnDialogClosed(). |
WebDialogDelegate* web_dialog_delegate = |
- new PrintPreviewDialogDelegate(initiator); |
+ new PrintPreviewDialogDelegate(initiator_tab); |
// |web_dialog_delegate|'s owner is |constrained_delegate|. |
PrintPreviewWebContentDelegate* pp_wcd = |
- new PrintPreviewWebContentDelegate(profile, initiator); |
+ new PrintPreviewWebContentDelegate(profile, initiator_tab); |
ConstrainedWebDialogDelegate* constrained_delegate = |
CreateConstrainedWebDialog(profile, |
web_dialog_delegate, |
pp_wcd, |
- initiator); |
+ initiator_tab); |
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; |
+ preview_dialog_map_[preview_dialog] = initiator_tab; |
waiting_for_new_preview_page_ = true; |
- AddObservers(initiator, INITIATOR); |
- AddObservers(preview_dialog, PREVIEW_DIALOG); |
+ AddObservers(initiator_tab); |
+ AddObservers(preview_dialog); |
return preview_dialog; |
} |
-void PrintPreviewDialogController::SaveInitiatorTitle( |
+void PrintPreviewDialogController::SaveInitiatorTabTitle( |
WebContents* preview_dialog) { |
- WebContents* initiator = GetInitiator(preview_dialog); |
- if (initiator && preview_dialog->GetWebUI()) { |
+ WebContents* initiator_tab = GetInitiatorTab(preview_dialog); |
+ if (initiator_tab && preview_dialog->GetWebUI()) { |
PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
preview_dialog->GetWebUI()->GetController()); |
- print_preview_ui->SetInitiatorTitle( |
- PrintViewManager::FromWebContents(initiator)->RenderSourceName()); |
+ print_preview_ui->SetInitiatorTabTitle( |
+ PrintViewManager::FromWebContents(initiator_tab)->RenderSourceName()); |
} |
} |
-void PrintPreviewDialogController::AddObservers(WebContents* contents, |
- ContentsType contents_type) { |
+void PrintPreviewDialogController::AddObservers(WebContents* contents) { |
registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, |
content::Source<WebContents>(contents)); |
- if (contents_type == PREVIEW_DIALOG) { |
- registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
- content::Source<NavigationController>(&contents->GetController())); |
- } |
+ 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,14 +463,11 @@ |
} |
} |
-void PrintPreviewDialogController::RemoveObservers(WebContents* contents, |
- ContentsType contents_type) { |
+void PrintPreviewDialogController::RemoveObservers(WebContents* contents) { |
registrar_.Remove(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, |
content::Source<WebContents>(contents)); |
- if (contents_type == PREVIEW_DIALOG) { |
- registrar_.Remove(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
- content::Source<NavigationController>(&contents->GetController())); |
- } |
+ 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. |
@@ -483,43 +480,43 @@ |
} |
} |
-void PrintPreviewDialogController::RemoveInitiator( |
- WebContents* initiator) { |
- WebContents* preview_dialog = GetPrintPreviewForContents(initiator); |
+void PrintPreviewDialogController::RemoveInitiatorTab( |
+ WebContents* initiator_tab) { |
+ 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's observers. |
+ // initiator tab's observers. |
preview_dialog_map_[preview_dialog] = NULL; |
- RemoveObservers(initiator, INITIATOR); |
+ RemoveObservers(initiator_tab); |
- PrintViewManager::FromWebContents(initiator)->PrintPreviewDone(); |
+ PrintViewManager::FromWebContents(initiator_tab)->PrintPreviewDone(); |
- // initiator is closed. Close the print preview dialog too. |
+ // 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->OnInitiatorClosed(); |
+ print_preview_ui->OnInitiatorTabClosed(); |
} |
void PrintPreviewDialogController::RemovePreviewDialog( |
WebContents* preview_dialog) { |
- // Remove the initiator's observers before erasing the mapping. |
- WebContents* initiator = GetInitiator(preview_dialog); |
- if (initiator) { |
- RemoveObservers(initiator, INITIATOR); |
- PrintViewManager::FromWebContents(initiator)->PrintPreviewDone(); |
+ // 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(); |
} |
// Print preview WebContents is destroyed. Notify |PrintPreviewUI| to abort |
- // the initiator preview request. |
+ // the initiator tab 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, PREVIEW_DIALOG); |
+ RemoveObservers(preview_dialog); |
} |
} // namespace printing |