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

Side by Side Diff: chrome/browser/ui/webui/print_preview_handler.cc

Issue 6533006: Print Preview: Hook up the print button to initiate printing without displaying a print dialog. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Addressed review comments. Created 9 years, 9 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/ui/webui/print_preview_handler.h" 5 #include "chrome/browser/ui/webui/print_preview_handler.h"
6 6
7 #include "base/json/json_reader.h"
7 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
8 #include "base/values.h" 9 #include "base/values.h"
10 #include "content/browser/browser_thread.h"
9 #include "content/browser/renderer_host/render_view_host.h" 11 #include "content/browser/renderer_host/render_view_host.h"
10 #include "content/browser/browser_thread.h"
11 #include "printing/backend/print_backend.h" 12 #include "printing/backend/print_backend.h"
12 13
13 class EnumeratePrintersTaskProxy 14 class EnumeratePrintersTaskProxy
14 : public base::RefCountedThreadSafe<EnumeratePrintersTaskProxy, 15 : public base::RefCountedThreadSafe<EnumeratePrintersTaskProxy,
15 BrowserThread::DeleteOnUIThread> { 16 BrowserThread::DeleteOnUIThread> {
16 public: 17 public:
17 EnumeratePrintersTaskProxy(const base::WeakPtr<PrintPreviewHandler>& handler, 18 EnumeratePrintersTaskProxy(const base::WeakPtr<PrintPreviewHandler>& handler,
18 printing::PrintBackend* print_backend) 19 printing::PrintBackend* print_backend)
19 : handler_(handler), 20 : handler_(handler),
20 print_backend_(print_backend) { 21 print_backend_(print_backend) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 73
73 void PrintPreviewHandler::HandleGetPrinters(const ListValue*) { 74 void PrintPreviewHandler::HandleGetPrinters(const ListValue*) {
74 scoped_refptr<EnumeratePrintersTaskProxy> task = 75 scoped_refptr<EnumeratePrintersTaskProxy> task =
75 new EnumeratePrintersTaskProxy(AsWeakPtr(), print_backend_.get()); 76 new EnumeratePrintersTaskProxy(AsWeakPtr(), print_backend_.get());
76 BrowserThread::PostTask( 77 BrowserThread::PostTask(
77 BrowserThread::FILE, FROM_HERE, 78 BrowserThread::FILE, FROM_HERE,
78 NewRunnableMethod(task.get(), 79 NewRunnableMethod(task.get(),
79 &EnumeratePrintersTaskProxy::EnumeratePrinters)); 80 &EnumeratePrintersTaskProxy::EnumeratePrinters));
80 } 81 }
81 82
82 void PrintPreviewHandler::HandlePrint(const ListValue*) { 83 void PrintPreviewHandler::HandlePrint(const ListValue* args) {
83 web_ui_->GetRenderViewHost()->PrintForPrintPreview(); 84 std::string json_str;
85 if (!args->GetString(0, &json_str)) {
86 NOTREACHED() << "Could not read JSON argument";
87 return;
88 }
89
90 if (json_str.empty()) {
91 NOTREACHED() << "Empty print job settings";
92 return;
93 }
94 scoped_ptr<DictionaryValue> settings(static_cast<DictionaryValue*>(
95 base::JSONReader::Read(json_str, false)));
96 if (!settings.get() || !settings->IsType(Value::TYPE_DICTIONARY)) {
97 NOTREACHED() << "Print job settings must be a dictionary.";
98 return;
99 }
100
101 if (settings->empty()) {
102 NOTREACHED() << "Print job settings dictionary is empty";
103 return;
104 }
105 web_ui_->GetRenderViewHost()->PrintForPrintPreview(*settings);
84 } 106 }
85 107
86 void PrintPreviewHandler::SendPrinterList(const ListValue& printers) { 108 void PrintPreviewHandler::SendPrinterList(const ListValue& printers) {
87 web_ui_->CallJavascriptFunction(L"setPrinters", printers); 109 web_ui_->CallJavascriptFunction(L"setPrinters", printers);
88 } 110 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/print_preview_handler.h ('k') | chrome/common/render_messages_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698