Commit 78da4e20 authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Clean up PrintPreviewUI.

- Simplify ctors.
- Rewrite GetCurrentPrintPreviewStatus() as ShouldCancelRequest().

Change-Id: Ie4cbb4dc7a56c1310ec4768687e800f7f40fe61a
Reviewed-on: https://chromium-review.googlesource.com/1184507Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585274}
parent 86a0ed5a
...@@ -252,9 +252,7 @@ void PrintPreviewMessageHandler::NotifyUIPreviewPageReady( ...@@ -252,9 +252,7 @@ void PrintPreviewMessageHandler::NotifyUIPreviewPageReady(
return; return;
// Don't bother notifying the UI if this request has been cancelled already. // Don't bother notifying the UI if this request has been cancelled already.
bool cancel = false; if (PrintPreviewUI::ShouldCancelRequest(ids))
PrintPreviewUI::GetCurrentPrintPreviewStatus(ids, &cancel);
if (cancel)
return; return;
print_preview_ui->SetPrintPreviewDataForIndex(page_number, print_preview_ui->SetPrintPreviewDataForIndex(page_number,
......
...@@ -364,7 +364,7 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply( ...@@ -364,7 +364,7 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
#if BUILDFLAG(ENABLE_PRINT_PREVIEW) #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
void PrintingMessageFilter::OnCheckForCancel(const PrintHostMsg_PreviewIds& ids, void PrintingMessageFilter::OnCheckForCancel(const PrintHostMsg_PreviewIds& ids,
bool* cancel) { bool* cancel) {
PrintPreviewUI::GetCurrentPrintPreviewStatus(ids, cancel); *cancel = PrintPreviewUI::ShouldCancelRequest(ids);
} }
#endif #endif
......
...@@ -762,8 +762,7 @@ void PrintPreviewHandler::HandleGetPreview(const base::ListValue* args) { ...@@ -762,8 +762,7 @@ void PrintPreviewHandler::HandleGetPreview(const base::ListValue* args) {
preview_callbacks_[request_id] = callback_id; preview_callbacks_[request_id] = callback_id;
print_preview_ui()->OnPrintPreviewRequest(request_id); print_preview_ui()->OnPrintPreviewRequest(request_id);
// Add an additional key in order to identify |print_preview_ui| later on // Add an additional key in order to identify |print_preview_ui| later on
// when calling PrintPreviewUI::GetCurrentPrintPreviewStatus() on the IO // when calling PrintPreviewUI::ShouldCancelRequest() on the IO thread.
// thread.
settings->SetInteger(printing::kPreviewUIID, settings->SetInteger(printing::kPreviewUIID,
print_preview_ui()->GetIDForPrintPreviewUI()); print_preview_ui()->GetIDForPrintPreviewUI());
......
...@@ -48,7 +48,6 @@ ...@@ -48,7 +48,6 @@
#include "content/public/browser/web_ui_data_source.h" #include "content/public/browser/web_ui_data_source.h"
#include "content/public/common/content_features.h" #include "content/public/common/content_features.h"
#include "extensions/common/constants.h" #include "extensions/common/constants.h"
#include "printing/buildflags/buildflags.h"
#include "printing/page_size_margins.h" #include "printing/page_size_margins.h"
#include "printing/print_job_constants.h" #include "printing/print_job_constants.h"
#include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util.h"
...@@ -558,6 +557,14 @@ content::WebUIDataSource* CreatePrintPreviewUISource(Profile* profile) { ...@@ -558,6 +557,14 @@ content::WebUIDataSource* CreatePrintPreviewUISource(Profile* profile) {
return source; return source;
} }
PrintPreviewHandler* CreatePrintPreviewHandlers(content::WebUI* web_ui) {
auto handler = std::make_unique<PrintPreviewHandler>();
PrintPreviewHandler* handler_ptr = handler.get();
web_ui->AddMessageHandler(std::move(handler));
web_ui->AddMessageHandler(std::make_unique<MetricsHandler>());
return handler_ptr;
}
} // namespace } // namespace
PrintPreviewUI::PrintPreviewUI(content::WebUI* web_ui, PrintPreviewUI::PrintPreviewUI(content::WebUI* web_ui,
...@@ -565,12 +572,7 @@ PrintPreviewUI::PrintPreviewUI(content::WebUI* web_ui, ...@@ -565,12 +572,7 @@ PrintPreviewUI::PrintPreviewUI(content::WebUI* web_ui,
: ConstrainedWebDialogUI(web_ui), : ConstrainedWebDialogUI(web_ui),
initial_preview_start_time_(base::TimeTicks::Now()), initial_preview_start_time_(base::TimeTicks::Now()),
id_(g_print_preview_ui_id_map.Get().Add(this)), id_(g_print_preview_ui_id_map.Get().Add(this)),
handler_(nullptr), handler_(handler.get()) {
source_is_modifiable_(true),
source_has_selection_(false),
print_selection_only_(false),
dialog_closed_(false) {
handler_ = handler.get();
web_ui->AddMessageHandler(std::move(handler)); web_ui->AddMessageHandler(std::move(handler));
g_print_preview_request_id_map.Get().Set(id_, -1); g_print_preview_request_id_map.Get().Set(id_, -1);
...@@ -580,11 +582,7 @@ PrintPreviewUI::PrintPreviewUI(content::WebUI* web_ui) ...@@ -580,11 +582,7 @@ PrintPreviewUI::PrintPreviewUI(content::WebUI* web_ui)
: ConstrainedWebDialogUI(web_ui), : ConstrainedWebDialogUI(web_ui),
initial_preview_start_time_(base::TimeTicks::Now()), initial_preview_start_time_(base::TimeTicks::Now()),
id_(g_print_preview_ui_id_map.Get().Add(this)), id_(g_print_preview_ui_id_map.Get().Add(this)),
handler_(nullptr), handler_(CreatePrintPreviewHandlers(web_ui)) {
source_is_modifiable_(true),
source_has_selection_(false),
print_selection_only_(false),
dialog_closed_(false) {
// Set up the chrome://print/ data source. // Set up the chrome://print/ data source.
Profile* profile = Profile::FromWebUI(web_ui); Profile* profile = Profile::FromWebUI(web_ui);
...@@ -601,11 +599,6 @@ PrintPreviewUI::PrintPreviewUI(content::WebUI* web_ui) ...@@ -601,11 +599,6 @@ PrintPreviewUI::PrintPreviewUI(content::WebUI* web_ui)
// Set up the chrome://theme/ source. // Set up the chrome://theme/ source.
content::URLDataSource::Add(profile, new ThemeSource(profile)); content::URLDataSource::Add(profile, new ThemeSource(profile));
auto handler = std::make_unique<PrintPreviewHandler>();
handler_ = handler.get();
web_ui->AddMessageHandler(std::move(handler));
web_ui->AddMessageHandler(std::make_unique<MetricsHandler>());
g_print_preview_request_id_map.Get().Set(id_, -1); g_print_preview_request_id_map.Get().Set(id_, -1);
} }
...@@ -651,15 +644,11 @@ void PrintPreviewUI::SetInitialParams( ...@@ -651,15 +644,11 @@ void PrintPreviewUI::SetInitialParams(
} }
// static // static
void PrintPreviewUI::GetCurrentPrintPreviewStatus( bool PrintPreviewUI::ShouldCancelRequest(const PrintHostMsg_PreviewIds& ids) {
const PrintHostMsg_PreviewIds& ids,
bool* cancel) {
int current_id = -1; int current_id = -1;
if (!g_print_preview_request_id_map.Get().Get(ids.ui_id, &current_id)) { if (!g_print_preview_request_id_map.Get().Get(ids.ui_id, &current_id))
*cancel = true; return true;
return; return ids.request_id != current_id;
}
*cancel = (ids.request_id != current_id);
} }
int32_t PrintPreviewUI::GetIDForPrintPreviewUI() const { int32_t PrintPreviewUI::GetIDForPrintPreviewUI() const {
...@@ -823,7 +812,7 @@ void PrintPreviewUI::SetDelegateForTesting(TestingDelegate* delegate) { ...@@ -823,7 +812,7 @@ void PrintPreviewUI::SetDelegateForTesting(TestingDelegate* delegate) {
} }
void PrintPreviewUI::SetSelectedFileForTesting(const base::FilePath& path) { void PrintPreviewUI::SetSelectedFileForTesting(const base::FilePath& path) {
handler_->FileSelectedForTesting(path, 0, NULL); handler_->FileSelectedForTesting(path, 0, nullptr);
} }
void PrintPreviewUI::SetPdfSavedClosureForTesting( void PrintPreviewUI::SetPdfSavedClosureForTesting(
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chrome/browser/ui/webui/constrained_web_dialog_ui.h" #include "chrome/browser/ui/webui/constrained_web_dialog_ui.h"
#include "printing/buildflags/buildflags.h"
class PrintPreviewHandler; class PrintPreviewHandler;
struct PrintHostMsg_DidGetPreviewPageCount_Params; struct PrintHostMsg_DidGetPreviewPageCount_Params;
...@@ -76,10 +75,9 @@ class PrintPreviewUI : public ConstrainedWebDialogUI { ...@@ -76,10 +75,9 @@ class PrintPreviewUI : public ConstrainedWebDialogUI {
const PrintHostMsg_RequestPrintPreview_Params& params); const PrintHostMsg_RequestPrintPreview_Params& params);
// Determines whether to cancel a print preview request based on the request // Determines whether to cancel a print preview request based on the request
// and ui ids in |ids|. // and UI ids in |ids|.
// Can be called from any thread. // Can be called from any thread.
static void GetCurrentPrintPreviewStatus(const PrintHostMsg_PreviewIds& ids, static bool ShouldCancelRequest(const PrintHostMsg_PreviewIds& ids);
bool* cancel);
// Returns an id to uniquely identify this PrintPreviewUI. // Returns an id to uniquely identify this PrintPreviewUI.
int32_t GetIDForPrintPreviewUI() const; int32_t GetIDForPrintPreviewUI() const;
...@@ -184,24 +182,24 @@ class PrintPreviewUI : public ConstrainedWebDialogUI { ...@@ -184,24 +182,24 @@ class PrintPreviewUI : public ConstrainedWebDialogUI {
const int32_t id_; const int32_t id_;
// Weak pointer to the WebUI handler. // Weak pointer to the WebUI handler.
PrintPreviewHandler* handler_; PrintPreviewHandler* const handler_;
// Indicates whether the source document can be modified. // Indicates whether the source document can be modified.
bool source_is_modifiable_; bool source_is_modifiable_ = true;
// Indicates whether the source document has selection. // Indicates whether the source document has selection.
bool source_has_selection_; bool source_has_selection_ = false;
// Indicates whether only the selection should be printed. // Indicates whether only the selection should be printed.
bool print_selection_only_; bool print_selection_only_ = false;
// Keeps track of whether OnClosePrintPreviewDialog() has been called or not.
bool dialog_closed_ = false;
// Store the initiator title, used for populating the print preview dialog // Store the initiator title, used for populating the print preview dialog
// title. // title.
base::string16 initiator_title_; base::string16 initiator_title_;
// Keeps track of whether OnClosePrintPreviewDialog() has been called or not.
bool dialog_closed_;
DISALLOW_COPY_AND_ASSIGN(PrintPreviewUI); DISALLOW_COPY_AND_ASSIGN(PrintPreviewUI);
}; };
......
...@@ -175,7 +175,7 @@ TEST_F(PrintPreviewUIUnitTest, PrintPreviewDraftPages) { ...@@ -175,7 +175,7 @@ TEST_F(PrintPreviewUIUnitTest, PrintPreviewDraftPages) {
} }
// Test the browser-side print preview cancellation functionality. // Test the browser-side print preview cancellation functionality.
TEST_F(PrintPreviewUIUnitTest, GetCurrentPrintPreviewStatus) { TEST_F(PrintPreviewUIUnitTest, ShouldCancelRequest) {
WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents(); WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(initiator); ASSERT_TRUE(initiator);
...@@ -196,38 +196,21 @@ TEST_F(PrintPreviewUIUnitTest, GetCurrentPrintPreviewStatus) { ...@@ -196,38 +196,21 @@ TEST_F(PrintPreviewUIUnitTest, GetCurrentPrintPreviewStatus) {
preview_dialog->GetWebUI()->GetController()); preview_dialog->GetWebUI()->GetController());
ASSERT_TRUE(preview_ui); ASSERT_TRUE(preview_ui);
// Test with invalid |preview_ui_addr|. // Test with invalid UI ID.
bool cancel = false;
const int32_t kInvalidId = -5; const int32_t kInvalidId = -5;
preview_ui->GetCurrentPrintPreviewStatus( EXPECT_TRUE(preview_ui->ShouldCancelRequest({0, kInvalidId}));
PrintHostMsg_PreviewIds(0, kInvalidId), &cancel);
EXPECT_TRUE(cancel);
const int kFirstRequestId = 1000; const int kFirstRequestId = 1000;
const int kSecondRequestId = 1001; const int kSecondRequestId = 1001;
const int32_t preview_ui_addr = preview_ui->GetIDForPrintPreviewUI(); const int32_t preview_id = preview_ui->GetIDForPrintPreviewUI();
// Test with kFirstRequestId. // Test with kFirstRequestId.
preview_ui->OnPrintPreviewRequest(kFirstRequestId); preview_ui->OnPrintPreviewRequest(kFirstRequestId);
cancel = true; EXPECT_FALSE(preview_ui->ShouldCancelRequest({kFirstRequestId, preview_id}));
preview_ui->GetCurrentPrintPreviewStatus( EXPECT_TRUE(preview_ui->ShouldCancelRequest({kSecondRequestId, preview_id}));
PrintHostMsg_PreviewIds(kFirstRequestId, preview_ui_addr), &cancel);
EXPECT_FALSE(cancel);
cancel = false;
preview_ui->GetCurrentPrintPreviewStatus(
PrintHostMsg_PreviewIds(kSecondRequestId, preview_ui_addr), &cancel);
EXPECT_TRUE(cancel);
// Test with kSecondRequestId. // Test with kSecondRequestId.
preview_ui->OnPrintPreviewRequest(kSecondRequestId); preview_ui->OnPrintPreviewRequest(kSecondRequestId);
cancel = false; EXPECT_TRUE(preview_ui->ShouldCancelRequest({kFirstRequestId, preview_id}));
preview_ui->GetCurrentPrintPreviewStatus( EXPECT_FALSE(preview_ui->ShouldCancelRequest({kSecondRequestId, preview_id}));
PrintHostMsg_PreviewIds(kFirstRequestId, preview_ui_addr), &cancel);
EXPECT_TRUE(cancel);
cancel = true;
preview_ui->GetCurrentPrintPreviewStatus(
PrintHostMsg_PreviewIds(kSecondRequestId, preview_ui_addr), &cancel);
EXPECT_FALSE(cancel);
} }
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