Commit c1e30636 authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Modernize PrintPreviewDialogController code.

- Use range-based for loops.
- Add a GetPrintPreviewUIForDialog() helper function.

Change-Id: Ib571f575d53f8f8b6ad857e61f2b1111cf2ab5a1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1497857
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#637934}
parent d239d5a6
...@@ -57,6 +57,12 @@ namespace printing { ...@@ -57,6 +57,12 @@ namespace printing {
namespace { namespace {
PrintPreviewUI* GetPrintPreviewUIForDialog(WebContents* dialog) {
content::WebUI* web_ui = dialog->GetWebUI();
return web_ui ? static_cast<PrintPreviewUI*>(web_ui->GetController())
: nullptr;
}
// A ui::WebDialogDelegate that specifies the print preview dialog appearance. // A ui::WebDialogDelegate that specifies the print preview dialog appearance.
class PrintPreviewDialogDelegate : public ui::WebDialogDelegate, class PrintPreviewDialogDelegate : public ui::WebDialogDelegate,
public content::WebContentsObserver { public content::WebContentsObserver {
...@@ -85,8 +91,7 @@ class PrintPreviewDialogDelegate : public ui::WebDialogDelegate, ...@@ -85,8 +91,7 @@ class PrintPreviewDialogDelegate : public ui::WebDialogDelegate,
PrintPreviewDialogDelegate::PrintPreviewDialogDelegate(WebContents* initiator) PrintPreviewDialogDelegate::PrintPreviewDialogDelegate(WebContents* initiator)
: content::WebContentsObserver(initiator) {} : content::WebContentsObserver(initiator) {}
PrintPreviewDialogDelegate::~PrintPreviewDialogDelegate() { PrintPreviewDialogDelegate::~PrintPreviewDialogDelegate() = default;
}
ui::ModalType PrintPreviewDialogDelegate::GetDialogModalType() const { ui::ModalType PrintPreviewDialogDelegate::GetDialogModalType() const {
// Not used, returning dummy value. // Not used, returning dummy value.
...@@ -167,10 +172,7 @@ bool PrintPreviewDialogDelegate::ShouldShowDialogTitle() const { ...@@ -167,10 +172,7 @@ bool PrintPreviewDialogDelegate::ShouldShowDialogTitle() const {
} // namespace } // namespace
PrintPreviewDialogController::PrintPreviewDialogController() PrintPreviewDialogController::PrintPreviewDialogController() = default;
: waiting_for_new_preview_page_(false),
is_creating_print_preview_dialog_(false) {
}
// static // static
PrintPreviewDialogController* PrintPreviewDialogController::GetInstance() { PrintPreviewDialogController* PrintPreviewDialogController::GetInstance() {
...@@ -260,11 +262,8 @@ void PrintPreviewDialogController::Observe( ...@@ -260,11 +262,8 @@ void PrintPreviewDialogController::Observe(
void PrintPreviewDialogController::ForEachPreviewDialog( void PrintPreviewDialogController::ForEachPreviewDialog(
base::Callback<void(content::WebContents*)> callback) { base::Callback<void(content::WebContents*)> callback) {
for (PrintPreviewDialogMap::const_iterator it = preview_dialog_map_.begin(); for (const auto& it : preview_dialog_map_)
it != preview_dialog_map_.end(); callback.Run(it.first);
++it) {
callback.Run(it->first);
}
} }
// static // static
...@@ -283,7 +282,7 @@ void PrintPreviewDialogController::EraseInitiatorInfo( ...@@ -283,7 +282,7 @@ void PrintPreviewDialogController::EraseInitiatorInfo(
preview_dialog_map_[preview_dialog] = nullptr; preview_dialog_map_[preview_dialog] = nullptr;
} }
PrintPreviewDialogController::~PrintPreviewDialogController() {} PrintPreviewDialogController::~PrintPreviewDialogController() = default;
void PrintPreviewDialogController::OnRendererProcessClosed( void PrintPreviewDialogController::OnRendererProcessClosed(
content::RenderProcessHost* rph) { content::RenderProcessHost* rph) {
...@@ -291,29 +290,24 @@ void PrintPreviewDialogController::OnRendererProcessClosed( ...@@ -291,29 +290,24 @@ void PrintPreviewDialogController::OnRendererProcessClosed(
// |preview_dialog_map_| because RemoveFoo() can change |preview_dialog_map_|. // |preview_dialog_map_| because RemoveFoo() can change |preview_dialog_map_|.
std::vector<WebContents*> closed_initiators; std::vector<WebContents*> closed_initiators;
std::vector<WebContents*> closed_preview_dialogs; std::vector<WebContents*> closed_preview_dialogs;
for (auto iter = preview_dialog_map_.begin(); for (auto& it : preview_dialog_map_) {
iter != preview_dialog_map_.end(); ++iter) { WebContents* preview_dialog = it.first;
WebContents* preview_dialog = iter->first; WebContents* initiator = it.second;
WebContents* initiator = iter->second; if (preview_dialog->GetMainFrame()->GetProcess() == rph)
if (preview_dialog->GetMainFrame()->GetProcess() == rph) {
closed_preview_dialogs.push_back(preview_dialog); closed_preview_dialogs.push_back(preview_dialog);
} else if (initiator && initiator->GetMainFrame()->GetProcess() == rph) { else if (initiator && initiator->GetMainFrame()->GetProcess() == rph)
closed_initiators.push_back(initiator); closed_initiators.push_back(initiator);
}
} }
for (size_t i = 0; i < closed_preview_dialogs.size(); ++i) { for (WebContents* dialog : closed_preview_dialogs) {
RemovePreviewDialog(closed_preview_dialogs[i]); RemovePreviewDialog(dialog);
if (content::WebUI* web_ui = closed_preview_dialogs[i]->GetWebUI()) { auto* print_preview_ui = GetPrintPreviewUIForDialog(dialog);
PrintPreviewUI* print_preview_ui = if (print_preview_ui)
static_cast<PrintPreviewUI*>(web_ui->GetController()); print_preview_ui->OnPrintPreviewDialogClosed();
if (print_preview_ui)
print_preview_ui->OnPrintPreviewDialogClosed();
}
} }
for (size_t i = 0; i < closed_initiators.size(); ++i) for (WebContents* initiator : closed_initiators)
RemoveInitiator(closed_initiators[i]); RemoveInitiator(initiator);
} }
void PrintPreviewDialogController::OnWebContentsDestroyed( void PrintPreviewDialogController::OnWebContentsDestroyed(
...@@ -430,12 +424,15 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog( ...@@ -430,12 +424,15 @@ WebContents* PrintPreviewDialogController::CreatePrintPreviewDialog(
void PrintPreviewDialogController::SaveInitiatorTitle( void PrintPreviewDialogController::SaveInitiatorTitle(
WebContents* preview_dialog) { WebContents* preview_dialog) {
WebContents* initiator = GetInitiator(preview_dialog); WebContents* initiator = GetInitiator(preview_dialog);
if (initiator && preview_dialog->GetWebUI()) { if (!initiator)
PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( return;
preview_dialog->GetWebUI()->GetController());
print_preview_ui->SetInitiatorTitle( auto* print_preview_ui = GetPrintPreviewUIForDialog(preview_dialog);
PrintViewManager::FromWebContents(initiator)->RenderSourceName()); if (!print_preview_ui)
} return;
print_preview_ui->SetInitiatorTitle(
PrintViewManager::FromWebContents(initiator)->RenderSourceName());
} }
void PrintPreviewDialogController::AddObservers(WebContents* contents) { void PrintPreviewDialogController::AddObservers(WebContents* contents) {
...@@ -501,13 +498,10 @@ void PrintPreviewDialogController::RemoveInitiator( ...@@ -501,13 +498,10 @@ void PrintPreviewDialogController::RemoveInitiator(
PrintViewManager::FromWebContents(initiator)->PrintPreviewDone(); PrintViewManager::FromWebContents(initiator)->PrintPreviewDone();
// initiator is closed. Close the print preview dialog too. // Initiator is closed. Close the print preview dialog too.
if (content::WebUI* web_ui = preview_dialog->GetWebUI()) { auto* print_preview_ui = GetPrintPreviewUIForDialog(preview_dialog);
PrintPreviewUI* print_preview_ui = if (print_preview_ui)
static_cast<PrintPreviewUI*>(web_ui->GetController()); print_preview_ui->OnInitiatorClosed();
if (print_preview_ui)
print_preview_ui->OnInitiatorClosed();
}
} }
void PrintPreviewDialogController::RemovePreviewDialog( void PrintPreviewDialogController::RemovePreviewDialog(
......
...@@ -130,11 +130,11 @@ class PrintPreviewDialogController ...@@ -130,11 +130,11 @@ class PrintPreviewDialogController
// True if the controller is waiting for a new preview dialog via // True if the controller is waiting for a new preview dialog via
// content::NAVIGATION_TYPE_NEW_PAGE. // content::NAVIGATION_TYPE_NEW_PAGE.
bool waiting_for_new_preview_page_; bool waiting_for_new_preview_page_ = false;
// Whether the PrintPreviewDialogController is in the middle of creating a // Whether the PrintPreviewDialogController is in the middle of creating a
// print preview dialog. // print preview dialog.
bool is_creating_print_preview_dialog_; bool is_creating_print_preview_dialog_ = false;
// How many web contents (dialogs and initiators) are watching a given render // How many web contents (dialogs and initiators) are watching a given render
// process host. Used to determine when a render process host's // process host. Used to determine when a render process host's
......
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