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