1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/extensions/api/cloud_print_private/cloud_print_private_api.h" 6 7#include <string> 8 9#include "base/threading/sequenced_worker_pool.h" 10#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" 11#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h" 12#include "chrome/common/extensions/api/cloud_print_private.h" 13#include "google_apis/google_api_keys.h" 14#include "net/base/net_util.h" 15 16namespace extensions { 17 18CloudPrintTestsDelegate* CloudPrintTestsDelegate::instance_ = NULL; 19 20CloudPrintTestsDelegate* CloudPrintTestsDelegate::instance() { 21 return instance_; 22} 23 24CloudPrintTestsDelegate::CloudPrintTestsDelegate() { 25 instance_ = this; 26} 27 28CloudPrintTestsDelegate::~CloudPrintTestsDelegate() { 29 instance_ = NULL; 30} 31 32CloudPrintPrivateSetupConnectorFunction:: 33 CloudPrintPrivateSetupConnectorFunction() { 34} 35 36CloudPrintPrivateSetupConnectorFunction:: 37 ~CloudPrintPrivateSetupConnectorFunction() { 38} 39 40bool CloudPrintPrivateSetupConnectorFunction::RunAsync() { 41#if defined(ENABLE_FULL_PRINTING) 42 using api::cloud_print_private::SetupConnector::Params; 43 scoped_ptr<Params> params(Params::Create(*args_)); 44 if (CloudPrintTestsDelegate::instance()) { 45 CloudPrintTestsDelegate::instance()->SetupConnector( 46 params->user_email, 47 params->robot_email, 48 params->credentials, 49 params->user_settings); 50 } else { 51 CloudPrintProxyService* service = 52 CloudPrintProxyServiceFactory::GetForProfile(GetProfile()); 53 if (!service) 54 return false; 55 scoped_ptr<base::DictionaryValue> user_setings( 56 params->user_settings.ToValue()); 57 service->EnableForUserWithRobot(params->credentials, 58 params->robot_email, 59 params->user_email, 60 *user_setings); 61 } 62 SendResponse(true); 63 return true; 64#else 65 return false; 66#endif 67} 68 69CloudPrintPrivateGetHostNameFunction::CloudPrintPrivateGetHostNameFunction() { 70} 71 72CloudPrintPrivateGetHostNameFunction::~CloudPrintPrivateGetHostNameFunction() { 73} 74 75bool CloudPrintPrivateGetHostNameFunction::RunAsync() { 76 SetResult(new base::StringValue( 77 CloudPrintTestsDelegate::instance() ? 78 CloudPrintTestsDelegate::instance()->GetHostName() : 79 net::GetHostName())); 80 SendResponse(true); 81 return true; 82} 83 84CloudPrintPrivateGetPrintersFunction::CloudPrintPrivateGetPrintersFunction() { 85} 86 87CloudPrintPrivateGetPrintersFunction::~CloudPrintPrivateGetPrintersFunction() { 88} 89 90void CloudPrintPrivateGetPrintersFunction::SendResults( 91 const std::vector<std::string>& printers) { 92 results_ = api::cloud_print_private::GetPrinters::Results::Create(printers); 93 SendResponse(true); 94} 95 96bool CloudPrintPrivateGetPrintersFunction::RunAsync() { 97#if defined(ENABLE_FULL_PRINTING) 98 std::vector<std::string> result; 99 if (CloudPrintTestsDelegate::instance()) { 100 SendResults(CloudPrintTestsDelegate::instance()->GetPrinters()); 101 } else { 102 CloudPrintProxyService* service = 103 CloudPrintProxyServiceFactory::GetForProfile(GetProfile()); 104 if (!service) 105 return false; 106 service->GetPrinters( 107 base::Bind(&CloudPrintPrivateGetPrintersFunction::SendResults, this)); 108 } 109 return true; 110#else 111 return false; 112#endif 113} 114 115 116CloudPrintPrivateGetClientIdFunction::CloudPrintPrivateGetClientIdFunction() { 117} 118 119CloudPrintPrivateGetClientIdFunction::~CloudPrintPrivateGetClientIdFunction() { 120} 121 122bool CloudPrintPrivateGetClientIdFunction::RunAsync() { 123 SetResult(new base::StringValue( 124 CloudPrintTestsDelegate::instance() ? 125 CloudPrintTestsDelegate::instance()->GetClientId() : 126 google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT))); 127 SendResponse(true); 128 return true; 129} 130 131} // namespace extensions 132