Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / printing / printer_query.cc
index 6770e57..6cd11ff 100644 (file)
 #include "base/threading/thread_restrictions.h"
 #include "base/values.h"
 #include "chrome/browser/printing/print_job_worker.h"
-#include "chrome/browser/printing/printing_ui_web_contents_observer.h"
 
 namespace printing {
 
-PrinterQuery::PrinterQuery()
-    : io_message_loop_(base::MessageLoop::current()),
-      worker_(new PrintJobWorker(this)),
+PrinterQuery::PrinterQuery(int render_process_id, int render_view_id)
+    : worker_(new PrintJobWorker(render_process_id, render_view_id, this)),
       is_print_dialog_box_shown_(false),
       cookie_(PrintSettings::NewCookie()),
       last_status_(PrintingContext::FAILED) {
@@ -57,10 +55,6 @@ PrintJobWorker* PrinterQuery::DetachWorker(PrintJobWorkerOwner* new_owner) {
   return worker_.release();
 }
 
-base::MessageLoop* PrinterQuery::message_loop() {
-  return io_message_loop_;
-}
-
 const PrintSettings& PrinterQuery::settings() const {
   return settings_;
 }
@@ -71,43 +65,34 @@ int PrinterQuery::cookie() const {
 
 void PrinterQuery::GetSettings(
     GetSettingsAskParam ask_user_for_settings,
-    scoped_ptr<PrintingUIWebContentsObserver> web_contents_observer,
     int expected_page_count,
     bool has_selection,
     MarginType margin_type,
     const base::Closure& callback) {
-  DCHECK_EQ(io_message_loop_, base::MessageLoop::current());
+  DCHECK(RunsTasksOnCurrentThread());
   DCHECK(!is_print_dialog_box_shown_);
 
   StartWorker(callback);
 
   // Real work is done in PrintJobWorker::GetSettings().
   is_print_dialog_box_shown_ = ask_user_for_settings == ASK_USER;
-  worker_->message_loop()->PostTask(
-      FROM_HERE,
-      base::Bind(&PrintJobWorker::GetSettings,
-                 base::Unretained(worker_.get()),
-                 is_print_dialog_box_shown_,
-                 base::Passed(&web_contents_observer),
-                 expected_page_count,
-                 has_selection,
-                 margin_type));
+  worker_->PostTask(FROM_HERE,
+                    base::Bind(&PrintJobWorker::GetSettings,
+                               base::Unretained(worker_.get()),
+                               is_print_dialog_box_shown_,
+                               expected_page_count,
+                               has_selection,
+                               margin_type));
 }
 
-void PrinterQuery::SetSettings(const base::DictionaryValue& new_settings,
+void PrinterQuery::SetSettings(scoped_ptr<base::DictionaryValue> new_settings,
                                const base::Closure& callback) {
   StartWorker(callback);
 
-  worker_->message_loop()->PostTask(
-      FROM_HERE,
-      base::Bind(&PrintJobWorker::SetSettings,
-                 base::Unretained(worker_.get()),
-                 new_settings.DeepCopy()));
-}
-
-void PrinterQuery::SetWorkerDestination(
-    PrintDestinationInterface* destination) {
-  worker_->SetPrintDestination(destination);
+  worker_->PostTask(FROM_HERE,
+                    base::Bind(&PrintJobWorker::SetSettings,
+                               base::Unretained(worker_.get()),
+                               base::Passed(&new_settings)));
 }
 
 void PrinterQuery::StartWorker(const base::Closure& callback) {
@@ -115,7 +100,7 @@ void PrinterQuery::StartWorker(const base::Closure& callback) {
   DCHECK(worker_.get());
 
   // Lazily create the worker thread. There is one worker thread per print job.
-  if (!worker_->message_loop())
+  if (!worker_->IsRunning())
     worker_->Start();
 
   callback_ = callback;