cloud_print_private_api.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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 40 41bool CloudPrintPrivateSetupConnectorFunction::RunImpl() { 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 if (!CloudPrintProxyServiceFactory::GetForProfile(profile_)) 52 return false; 53 scoped_ptr<base::DictionaryValue> user_setings( 54 params->user_settings.ToValue()); 55 CloudPrintProxyServiceFactory::GetForProfile(profile_)-> 56 EnableForUserWithRobot(params->credentials, 57 params->robot_email, 58 params->user_email, 59 *user_setings); 60 } 61 SendResponse(true); 62 return true; 63} 64 65CloudPrintPrivateGetHostNameFunction::CloudPrintPrivateGetHostNameFunction() { 66} 67 68CloudPrintPrivateGetHostNameFunction::~CloudPrintPrivateGetHostNameFunction() { 69} 70 71bool CloudPrintPrivateGetHostNameFunction::RunImpl() { 72 SetResult(Value::CreateStringValue( 73 CloudPrintTestsDelegate::instance() ? 74 CloudPrintTestsDelegate::instance()->GetHostName() : 75 net::GetHostName())); 76 SendResponse(true); 77 return true; 78} 79 80CloudPrintPrivateGetPrintersFunction::CloudPrintPrivateGetPrintersFunction() { 81} 82 83CloudPrintPrivateGetPrintersFunction::~CloudPrintPrivateGetPrintersFunction() { 84} 85 86void CloudPrintPrivateGetPrintersFunction::CollectPrinters() { 87 std::vector<std::string> result; 88 if (CloudPrintTestsDelegate::instance()) { 89 result = CloudPrintTestsDelegate::instance()->GetPrinters(); 90 } else { 91 CloudPrintProxyService::GetPrintersAvalibleForRegistration(&result); 92 } 93 results_ = api::cloud_print_private::GetPrinters::Results::Create(result); 94 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, 95 base::Bind(&CloudPrintPrivateGetPrintersFunction::SendResponse, 96 this, true)); 97} 98 99 100bool CloudPrintPrivateGetPrintersFunction::RunImpl() { 101 content::BrowserThread::GetBlockingPool()->PostTask(FROM_HERE, 102 base::Bind(&CloudPrintPrivateGetPrintersFunction::CollectPrinters, this)); 103 return true; 104} 105 106 107CloudPrintPrivateGetClientIdFunction::CloudPrintPrivateGetClientIdFunction() { 108} 109 110CloudPrintPrivateGetClientIdFunction::~CloudPrintPrivateGetClientIdFunction() { 111} 112 113bool CloudPrintPrivateGetClientIdFunction::RunImpl() { 114 SetResult(Value::CreateStringValue( 115 CloudPrintTestsDelegate::instance() ? 116 CloudPrintTestsDelegate::instance()->GetClientId() : 117 google_apis::GetOAuth2ClientID(google_apis::CLIENT_CLOUD_PRINT))); 118 SendResponse(true); 119 return true; 120} 121 122} // namespace extensions 123