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

Side by Side Diff: chrome/browser/printing/print_preview_message_handler.cc

Issue 7747033: Merge 97702, 97820, 97976 (Closed) Base URL: svn://chrome-svn/chrome/branches/835/src/
Patch Set: Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/printing/print_preview_message_handler.h" 5 #include "chrome/browser/printing/print_preview_message_handler.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/ref_counted_memory.h" 10 #include "base/memory/ref_counted_memory.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 return NULL; 75 return NULL;
76 return tab_controller->GetPrintPreviewForTab(tab_contents()); 76 return tab_controller->GetPrintPreviewForTab(tab_contents());
77 } 77 }
78 78
79 void PrintPreviewMessageHandler::OnRequestPrintPreview() { 79 void PrintPreviewMessageHandler::OnRequestPrintPreview() {
80 PrintPreviewTabController::PrintPreview(tab_contents()); 80 PrintPreviewTabController::PrintPreview(tab_contents());
81 } 81 }
82 82
83 void PrintPreviewMessageHandler::OnDidGetPreviewPageCount( 83 void PrintPreviewMessageHandler::OnDidGetPreviewPageCount(
84 const PrintHostMsg_DidGetPreviewPageCount_Params& params) { 84 const PrintHostMsg_DidGetPreviewPageCount_Params& params) {
85 if (params.page_count <= 0) 85 if (params.page_count <= 0) {
86 NOTREACHED();
86 return; 87 return;
88 }
87 TabContents* print_preview_tab = GetPrintPreviewTab(); 89 TabContents* print_preview_tab = GetPrintPreviewTab();
88 if (!print_preview_tab) 90 if (!print_preview_tab)
89 return; 91 return;
90 92
91 PrintPreviewUI* print_preview_ui = 93 PrintPreviewUI* print_preview_ui =
92 static_cast<PrintPreviewUI*>(print_preview_tab->web_ui()); 94 static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
93 print_preview_ui->OnDidGetPreviewPageCount(params); 95 print_preview_ui->OnDidGetPreviewPageCount(params);
94 } 96 }
95 97
96 void PrintPreviewMessageHandler::OnDidPreviewPage( 98 void PrintPreviewMessageHandler::OnDidPreviewPage(
97 const PrintHostMsg_DidPreviewPage_Params& params) { 99 const PrintHostMsg_DidPreviewPage_Params& params) {
98 RenderViewHost* rvh = tab_contents()->render_view_host();
99 TabContents* print_preview_tab = GetPrintPreviewTab(); 100 TabContents* print_preview_tab = GetPrintPreviewTab();
100 if (!(print_preview_tab && print_preview_tab->web_ui())) { 101 if (!print_preview_tab || !print_preview_tab->web_ui())
101 // Can't find print preview tab means we should abort.
102 rvh->Send(new PrintMsg_AbortPreview(rvh->routing_id()));
103 return; 102 return;
104 }
105 103
106 PrintPreviewUI* print_preview_ui = 104 PrintPreviewUI* print_preview_ui =
107 static_cast<PrintPreviewUI*>(print_preview_tab->web_ui()); 105 static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
108 bool has_pending = print_preview_ui->HasPendingRequests();
109 if (has_pending) {
110 // Cancel. Next print preview request will cancel the current one.
111 // Just do the required maintainance work here.
112 StopWorker(print_preview_ui->document_cookie());
113 print_preview_ui->OnPrintPreviewCancelled();
114 return;
115 }
116
117 int requested_preview_page_index = INVALID_PAGE_INDEX;
118 int page_number = params.page_number; 106 int page_number = params.page_number;
119 107
120 if (page_number == FIRST_PAGE_INDEX) 108 if (page_number == FIRST_PAGE_INDEX)
121 print_preview_ui->ClearAllPreviewData(); 109 print_preview_ui->ClearAllPreviewData();
122 110
123 if (page_number >= FIRST_PAGE_INDEX && params.data_size) { 111 if (page_number >= FIRST_PAGE_INDEX && params.data_size) {
124 RefCountedBytes* data_bytes = 112 RefCountedBytes* data_bytes =
125 GetDataFromHandle(params.metafile_data_handle, params.data_size); 113 GetDataFromHandle(params.metafile_data_handle, params.data_size);
126 DCHECK(data_bytes); 114 DCHECK(data_bytes);
127 115
128 print_preview_ui->SetPrintPreviewDataForIndex(page_number, data_bytes); 116 print_preview_ui->SetPrintPreviewDataForIndex(page_number, data_bytes);
129 print_preview_ui->OnDidPreviewPage(page_number, params.preview_request_id); 117 print_preview_ui->OnDidPreviewPage(page_number, params.preview_request_id);
130 // TODO(kmadhusu): Query |PrintPreviewUI| and update
131 // |requested_preview_page_index| accordingly.
132 } 118 }
133
134 rvh->Send(new PrintMsg_ContinuePreview(rvh->routing_id(),
135 requested_preview_page_index));
136 } 119 }
137 120
138 void PrintPreviewMessageHandler::OnPagesReadyForPreview( 121 void PrintPreviewMessageHandler::OnPagesReadyForPreview(
139 const PrintHostMsg_DidPreviewDocument_Params& params) { 122 const PrintHostMsg_DidPreviewDocument_Params& params) {
123 // Always try to stop the worker.
140 StopWorker(params.document_cookie); 124 StopWorker(params.document_cookie);
141 125
126 if (params.expected_pages_count <= 0) {
127 NOTREACHED();
128 return;
129 }
130
142 // Get the print preview tab. 131 // Get the print preview tab.
143 TabContents* print_preview_tab = GetPrintPreviewTab(); 132 TabContents* print_preview_tab = GetPrintPreviewTab();
144 // User might have closed it already. 133 // User might have closed it already.
145 if (!print_preview_tab) 134 if (!print_preview_tab)
146 return; 135 return;
147 136
148 PrintPreviewUI* print_preview_ui = 137 PrintPreviewUI* print_preview_ui =
149 static_cast<PrintPreviewUI*>(print_preview_tab->web_ui()); 138 static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
150 139
151 TabContentsWrapper* wrapper = 140 TabContentsWrapper* wrapper =
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 HasTabContents(wrapper)) { 187 HasTabContents(wrapper)) {
199 // Preview tab was hidden to serve the print request. 188 // Preview tab was hidden to serve the print request.
200 delete wrapper; 189 delete wrapper;
201 } else { 190 } else {
202 PrintPreviewUI* print_preview_ui = 191 PrintPreviewUI* print_preview_ui =
203 static_cast<PrintPreviewUI*>(print_preview_tab->web_ui()); 192 static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
204 print_preview_ui->OnPrintPreviewFailed(); 193 print_preview_ui->OnPrintPreviewFailed();
205 } 194 }
206 } 195 }
207 196
197 void PrintPreviewMessageHandler::OnPrintPreviewCancelled(int document_cookie) {
198 // Always need to stop the worker.
199 StopWorker(document_cookie);
200 }
201
208 bool PrintPreviewMessageHandler::OnMessageReceived( 202 bool PrintPreviewMessageHandler::OnMessageReceived(
209 const IPC::Message& message) { 203 const IPC::Message& message) {
210 bool handled = true; 204 bool handled = true;
211 IPC_BEGIN_MESSAGE_MAP(PrintPreviewMessageHandler, message) 205 IPC_BEGIN_MESSAGE_MAP(PrintPreviewMessageHandler, message)
212 IPC_MESSAGE_HANDLER(PrintHostMsg_RequestPrintPreview, 206 IPC_MESSAGE_HANDLER(PrintHostMsg_RequestPrintPreview,
213 OnRequestPrintPreview) 207 OnRequestPrintPreview)
214 IPC_MESSAGE_HANDLER(PrintHostMsg_DidGetPreviewPageCount, 208 IPC_MESSAGE_HANDLER(PrintHostMsg_DidGetPreviewPageCount,
215 OnDidGetPreviewPageCount) 209 OnDidGetPreviewPageCount)
216 IPC_MESSAGE_HANDLER(PrintHostMsg_DidPreviewPage, 210 IPC_MESSAGE_HANDLER(PrintHostMsg_DidPreviewPage,
217 OnDidPreviewPage) 211 OnDidPreviewPage)
218 IPC_MESSAGE_HANDLER(PrintHostMsg_PagesReadyForPreview, 212 IPC_MESSAGE_HANDLER(PrintHostMsg_PagesReadyForPreview,
219 OnPagesReadyForPreview) 213 OnPagesReadyForPreview)
220 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewFailed, 214 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewFailed,
221 OnPrintPreviewFailed) 215 OnPrintPreviewFailed)
216 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewCancelled,
217 OnPrintPreviewCancelled)
222 IPC_MESSAGE_UNHANDLED(handled = false) 218 IPC_MESSAGE_UNHANDLED(handled = false)
223 IPC_END_MESSAGE_MAP() 219 IPC_END_MESSAGE_MAP()
224 return handled; 220 return handled;
225 } 221 }
226 222
227 void PrintPreviewMessageHandler::DidStartLoading() { 223 void PrintPreviewMessageHandler::DidStartLoading() {
228 if (tab_contents()->delegate() && 224 if (tab_contents()->delegate() &&
229 printing::PrintPreviewTabController::IsPrintPreviewTab(tab_contents())) { 225 printing::PrintPreviewTabController::IsPrintPreviewTab(tab_contents())) {
230 tab_contents()->SetContentRestrictions(CONTENT_RESTRICTION_PRINT); 226 tab_contents()->SetContentRestrictions(CONTENT_RESTRICTION_PRINT);
231 } 227 }
232 } 228 }
233 229
234 } // namespace printing 230 } // namespace printing
OLDNEW
« no previous file with comments | « chrome/browser/printing/print_preview_message_handler.h ('k') | chrome/browser/printing/printing_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698