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

Side by Side Diff: chrome/browser/ui/libgtk2ui/print_dialog_gtk2.cc

Issue 568633002: Extracted MetafilePlayer interface from printing::MetafilePlayer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@no_expose
Patch Set: Thu Sep 11 22:54:16 PDT 2014 Created 6 years, 3 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/ui/libgtk2ui/print_dialog_gtk2.h" 5 #include "chrome/browser/ui/libgtk2ui/print_dialog_gtk2.h"
6 6
7 #include <gtk/gtkunixprint.h> 7 #include <gtk/gtkunixprint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 gtk_settings_); 354 gtk_settings_);
355 g_signal_connect(dialog_, "response", G_CALLBACK(OnResponseThunk), this); 355 g_signal_connect(dialog_, "response", G_CALLBACK(OnResponseThunk), this);
356 gtk_widget_show(dialog_); 356 gtk_widget_show(dialog_);
357 357
358 // We need to call gtk_window_present after making the widgets visible to make 358 // We need to call gtk_window_present after making the widgets visible to make
359 // sure window gets correctly raised and gets focus. 359 // sure window gets correctly raised and gets focus.
360 int time = views::X11DesktopHandler::get()->wm_user_time_ms(); 360 int time = views::X11DesktopHandler::get()->wm_user_time_ms();
361 gtk_window_present_with_time(GTK_WINDOW(dialog_), time); 361 gtk_window_present_with_time(GTK_WINDOW(dialog_), time);
362 } 362 }
363 363
364 void PrintDialogGtk2::PrintDocument(const printing::Metafile* metafile, 364 void PrintDialogGtk2::PrintDocument(const printing::MetafilePlayer& metafile,
365 const base::string16& document_name) { 365 const base::string16& document_name) {
366 // This runs on the print worker thread, does not block the UI thread. 366 // This runs on the print worker thread, does not block the UI thread.
367 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI)); 367 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI));
368 368
369 // The document printing tasks can outlive the PrintingContext that created 369 // The document printing tasks can outlive the PrintingContext that created
370 // this dialog. 370 // this dialog.
371 AddRef(); 371 AddRef();
372 372
373 bool error = false; 373 bool success = base::CreateTemporaryFile(&path_to_pdf_);
374 if (!base::CreateTemporaryFile(&path_to_pdf_)) { 374
375 LOG(ERROR) << "Creating temporary file failed"; 375 if (success) {
376 error = true; 376 base::File file;
377 file.Initialize(path_to_pdf_,
378 base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE);
379 success = metafile.SaveTo(&file);
380 file.Close();
381 if (!success)
382 base::DeleteFile(path_to_pdf_, false);
377 } 383 }
378 384
379 if (!error && !metafile->SaveTo(path_to_pdf_)) { 385 if (!success) {
380 LOG(ERROR) << "Saving metafile failed"; 386 LOG(ERROR) << "Saving metafile failed";
381 base::DeleteFile(path_to_pdf_, false); 387 // Matches AddRef() above.
382 error = true; 388 Release();
389 return;
383 } 390 }
384 391
385 if (error) { 392 // No errors, continue printing.
386 // Matches AddRef() above. 393 BrowserThread::PostTask(
387 Release(); 394 BrowserThread::UI,
388 } else { 395 FROM_HERE,
389 // No errors, continue printing. 396 base::Bind(&PrintDialogGtk2::SendDocumentToPrinter, this, document_name));
390 BrowserThread::PostTask(
391 BrowserThread::UI, FROM_HERE,
392 base::Bind(&PrintDialogGtk2::SendDocumentToPrinter, this,
393 document_name));
394 }
395 } 397 }
396 398
397 void PrintDialogGtk2::AddRefToDialog() { 399 void PrintDialogGtk2::AddRefToDialog() {
398 AddRef(); 400 AddRef();
399 } 401 }
400 402
401 void PrintDialogGtk2::ReleaseDialog() { 403 void PrintDialogGtk2::ReleaseDialog() {
402 Release(); 404 Release();
403 } 405 }
404 406
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 context_->InitWithSettings(*settings); 533 context_->InitWithSettings(*settings);
532 } 534 }
533 535
534 void PrintDialogGtk2::OnWindowDestroying(aura::Window* window) { 536 void PrintDialogGtk2::OnWindowDestroying(aura::Window* window) {
535 DCHECK_EQ(libgtk2ui::GetAuraTransientParent(dialog_), window); 537 DCHECK_EQ(libgtk2ui::GetAuraTransientParent(dialog_), window);
536 538
537 libgtk2ui::ClearAuraTransientParent(dialog_); 539 libgtk2ui::ClearAuraTransientParent(dialog_);
538 window->RemoveObserver(this); 540 window->RemoveObserver(this);
539 Release(); 541 Release();
540 } 542 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/libgtk2ui/print_dialog_gtk2.h ('k') | chrome/browser/ui/webui/print_preview/print_preview_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698