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

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

Issue 3418034: Printing: Push checking of |context| one level lower, as the different (Closed)
Patch Set: One more. Created 10 years, 2 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
« no previous file with comments | « no previous file | printing/printing_context_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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_job_worker.h" 5 #include "chrome/browser/printing/print_job_worker.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "chrome/browser/chrome_thread.h" 8 #include "chrome/browser/chrome_thread.h"
9 #include "chrome/browser/printing/print_job.h" 9 #include "chrome/browser/printing/print_job.h"
10 #include "chrome/common/notification_service.h" 10 #include "chrome/common/notification_service.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 this, &PrintJobWorker::GetSettingsDone, result)); 130 this, &PrintJobWorker::GetSettingsDone, result));
131 } 131 }
132 #endif // defined(OS_MACOSX) || defined(USE_X11) 132 #endif // defined(OS_MACOSX) || defined(USE_X11)
133 133
134 void PrintJobWorker::StartPrinting(PrintedDocument* new_document) { 134 void PrintJobWorker::StartPrinting(PrintedDocument* new_document) {
135 DCHECK_EQ(message_loop(), MessageLoop::current()); 135 DCHECK_EQ(message_loop(), MessageLoop::current());
136 DCHECK_EQ(page_number_, PageNumber::npos()); 136 DCHECK_EQ(page_number_, PageNumber::npos());
137 DCHECK_EQ(document_, new_document); 137 DCHECK_EQ(document_, new_document);
138 DCHECK(document_.get()); 138 DCHECK(document_.get());
139 DCHECK(new_document->settings().Equals(printing_context_.settings())); 139 DCHECK(new_document->settings().Equals(printing_context_.settings()));
140 #if !defined(OS_MACOSX) 140
141 DCHECK(printing_context_.context());
142 #endif
143 if (!document_.get() || page_number_ != PageNumber::npos() || 141 if (!document_.get() || page_number_ != PageNumber::npos() ||
144 document_ != new_document) { 142 document_ != new_document) {
145 return; 143 return;
146 } 144 }
147 145
148 PrintingContext::Result result = 146 PrintingContext::Result result =
149 printing_context_.NewDocument(document_->name()); 147 printing_context_.NewDocument(document_->name());
150 if (result != PrintingContext::OK) { 148 if (result != PrintingContext::OK) {
151 OnFailure(); 149 OnFailure();
152 return; 150 return;
153 } 151 }
154 152
155 // Try to print already cached data. It may already have been generated for 153 // Try to print already cached data. It may already have been generated for
156 // the print preview. 154 // the print preview.
157 OnNewPage(); 155 OnNewPage();
158 // Don't touch this anymore since the instance could be destroyed. It happens 156 // Don't touch this anymore since the instance could be destroyed. It happens
159 // if all the pages are printed a one sweep and the client doesn't have a 157 // if all the pages are printed a one sweep and the client doesn't have a
160 // handle to us anymore. There's a timing issue involved between the worker 158 // handle to us anymore. There's a timing issue involved between the worker
161 // thread and the UI thread. Take no chance. 159 // thread and the UI thread. Take no chance.
162 } 160 }
163 161
164 void PrintJobWorker::OnDocumentChanged(PrintedDocument* new_document) { 162 void PrintJobWorker::OnDocumentChanged(PrintedDocument* new_document) {
165 DCHECK_EQ(message_loop(), MessageLoop::current()); 163 DCHECK_EQ(message_loop(), MessageLoop::current());
166 DCHECK_EQ(page_number_, PageNumber::npos()); 164 DCHECK_EQ(page_number_, PageNumber::npos());
167 DCHECK(!new_document || 165 DCHECK(!new_document ||
168 new_document->settings().Equals(printing_context_.settings())); 166 new_document->settings().Equals(printing_context_.settings()));
169 #if !defined(OS_MACOSX) 167
170 DCHECK(printing_context_.context());
171 #endif
172 if (page_number_ != PageNumber::npos()) 168 if (page_number_ != PageNumber::npos())
173 return; 169 return;
174 170
175 document_ = new_document; 171 document_ = new_document;
176 } 172 }
177 173
178 void PrintJobWorker::OnNewPage() { 174 void PrintJobWorker::OnNewPage() {
179 if (!document_.get()) { 175 if (!document_.get()) {
180 // Spurious message. 176 // Spurious message.
181 return; 177 return;
182 } 178 }
183 // message_loop() could return NULL when the print job is cancelled. 179 // message_loop() could return NULL when the print job is cancelled.
184 DCHECK_EQ(message_loop(), MessageLoop::current()); 180 DCHECK_EQ(message_loop(), MessageLoop::current());
185 #if !defined(OS_MACOSX)
186 DCHECK(printing_context_.context());
187 if (!printing_context_.context())
188 return;
189 #endif
190 181
191 if (page_number_ == PageNumber::npos()) { 182 if (page_number_ == PageNumber::npos()) {
192 // Find first page to print. 183 // Find first page to print.
193 int page_count = document_->page_count(); 184 int page_count = document_->page_count();
194 if (!page_count) { 185 if (!page_count) {
195 // We still don't know how many pages the document contains. We can't 186 // We still don't know how many pages the document contains. We can't
196 // start to print the document yet since the header/footer may refer to 187 // start to print the document yet since the header/footer may refer to
197 // the document's page count. 188 // the document's page count.
198 return; 189 return;
199 } 190 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 } 223 }
233 224
234 void PrintJobWorker::DismissDialog() { 225 void PrintJobWorker::DismissDialog() {
235 printing_context_.DismissDialog(); 226 printing_context_.DismissDialog();
236 } 227 }
237 228
238 void PrintJobWorker::OnDocumentDone() { 229 void PrintJobWorker::OnDocumentDone() {
239 DCHECK_EQ(message_loop(), MessageLoop::current()); 230 DCHECK_EQ(message_loop(), MessageLoop::current());
240 DCHECK_EQ(page_number_, PageNumber::npos()); 231 DCHECK_EQ(page_number_, PageNumber::npos());
241 DCHECK(document_.get()); 232 DCHECK(document_.get());
242 #if !defined(OS_MACOSX)
243 DCHECK(printing_context_.context());
244 #endif
245 233
246 if (printing_context_.DocumentDone() != PrintingContext::OK) { 234 if (printing_context_.DocumentDone() != PrintingContext::OK) {
247 OnFailure(); 235 OnFailure();
248 return; 236 return;
249 } 237 }
250 238
251 // Tell everyone! 239 // Tell everyone!
252 NotificationTask* task = new NotificationTask(); 240 NotificationTask* task = new NotificationTask();
253 task->Init(owner_, 241 task->Init(owner_,
254 JobEventDetails::DOC_DONE, 242 JobEventDetails::DOC_DONE,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 printing::PrintJobWorker* obj) { 309 printing::PrintJobWorker* obj) {
322 DCHECK(!owner_.get()); 310 DCHECK(!owner_.get());
323 owner_ = obj->owner_; 311 owner_ = obj->owner_;
324 } 312 }
325 313
326 void RunnableMethodTraits<printing::PrintJobWorker>::ReleaseCallee( 314 void RunnableMethodTraits<printing::PrintJobWorker>::ReleaseCallee(
327 printing::PrintJobWorker* obj) { 315 printing::PrintJobWorker* obj) {
328 DCHECK_EQ(owner_, obj->owner_); 316 DCHECK_EQ(owner_, obj->owner_);
329 owner_ = NULL; 317 owner_ = NULL;
330 } 318 }
OLDNEW
« no previous file with comments | « no previous file | printing/printing_context_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698