Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(496)

Unified Diff: chrome/browser/printing/print_preview_message_handler.cc

Issue 7365003: Print Preview: Make preview generation event driven to eliminate synchronous messages. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: address comments Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/printing/print_preview_message_handler.cc
===================================================================
--- chrome/browser/printing/print_preview_message_handler.cc (revision 92494)
+++ chrome/browser/printing/print_preview_message_handler.cc (working copy)
@@ -63,7 +63,8 @@
PrintPreviewTabController::PrintPreview(tab_contents());
}
-void PrintPreviewMessageHandler::OnDidGetPreviewPageCount(int page_count) {
+void PrintPreviewMessageHandler::OnDidGetPreviewPageCount(int document_cookie,
+ int page_count) {
if (page_count <= 0)
return;
TabContents* print_preview_tab = GetPrintPreviewTab();
@@ -72,24 +73,33 @@
PrintPreviewUI* print_preview_ui =
static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
- print_preview_ui->OnDidGetPreviewPageCount(page_count);
+ print_preview_ui->OnDidGetPreviewPageCount(document_cookie, page_count);
}
-void PrintPreviewMessageHandler::OnDidPreviewPage(int page_number,
- bool* cancel) {
+void PrintPreviewMessageHandler::OnDidPreviewPage(int page_number) {
+ RenderViewHost* rvh = tab_contents()->render_view_host();
TabContents* print_preview_tab = GetPrintPreviewTab();
if (!print_preview_tab) {
- // Can't find print preview tab means we should cancel.
- *cancel = true;
+ // Can't find print preview tab means we should abort.
+ rvh->Send(new PrintMsg_AbortPreview(rvh->routing_id()));
return;
}
PrintPreviewUI* print_preview_ui =
static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
bool has_pending = print_preview_ui->HasPendingRequests();
- if (!has_pending && page_number >= 0)
+ if (has_pending) {
+ // Cancel. Next print preview request will cancel the current one.
+ // Just do the required maintainance work here.
+ StopWorker(print_preview_ui->document_cookie());
+ print_preview_ui->OnPrintPreviewCancelled();
+ return;
+ }
+
+ // Continue
+ if (page_number >= 0)
print_preview_ui->OnDidPreviewPage(page_number);
- *cancel = has_pending;
+ rvh->Send(new PrintMsg_ContinuePreview(rvh->routing_id()));
}
void PrintPreviewMessageHandler::OnPagesReadyForPreview(
@@ -114,7 +124,8 @@
if (params.reuse_existing_data) {
// Need to match normal rendering where we are expected to send this.
- print_preview_ui->OnDidGetPreviewPageCount(params.expected_pages_count);
+ print_preview_ui->OnDidGetPreviewPageCount(params.document_cookie,
+ params.expected_pages_count);
print_preview_ui->OnPreviewDataIsAvailable(
params.expected_pages_count,
@@ -175,19 +186,6 @@
}
}
-void PrintPreviewMessageHandler::OnPrintPreviewCancelled(int document_cookie) {
- // Always need to stop the worker.
- StopWorker(document_cookie);
-
- TabContents* print_preview_tab = GetPrintPreviewTab();
- if (!print_preview_tab)
- return;
-
- PrintPreviewUI* print_preview_ui =
- static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
- print_preview_ui->OnPrintPreviewCancelled();
-}
-
bool PrintPreviewMessageHandler::OnMessageReceived(
const IPC::Message& message) {
bool handled = true;
@@ -202,8 +200,6 @@
OnPagesReadyForPreview)
IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewFailed,
OnPrintPreviewFailed)
- IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewCancelled,
- OnPrintPreviewCancelled)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;

Powered by Google App Engine
This is Rietveld 408576698