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

Side by Side Diff: chrome/browser/extensions/api/instance_id/instance_id_api.cc

Issue 1128123003: Implement InstanceID API functions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix android build Created 5 years, 7 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/extensions/api/instance_id/instance_id_api.h" 5 #include "chrome/browser/extensions/api/instance_id/instance_id_api.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/services/gcm/instance_id/instance_id_profile_service.h"
10 #include "chrome/browser/services/gcm/instance_id/instance_id_profile_service_fa ctory.h"
11 #include "chrome/common/extensions/api/instance_id.h"
12 #include "components/gcm_driver/instance_id/instance_id_driver.h"
8 #include "extensions/common/extension.h" 13 #include "extensions/common/extension.h"
9 14
10 namespace extensions { 15 namespace extensions {
11 16
17 namespace {
18
19 // Error messages.
20 const char kInvalidParameter[] = "Function was called with invalid parameters.";
21 const char kDisabled[] = "Instance ID is currently disabled.";
22 const char kNetworkError[] = "Network error occurred.";
23 const char kServerError[] = "Server error occurred.";
24 const char kUnknownError[] = "Unknown error occurred.";
25
26 const char* InstanceIDResultToError(instance_id::InstanceID::Result result) {
27 switch (result) {
28 case instance_id::InstanceID::INVALID_PARAMETER:
29 return kInvalidParameter;
30 case instance_id::InstanceID::DISABLED:
31 return kDisabled;
32 case instance_id::InstanceID::NETWORK_ERROR:
33 return kNetworkError;
34 case instance_id::InstanceID::SERVER_ERROR:
35 return kServerError;
36 case instance_id::InstanceID::UNKNOWN_ERROR:
37 return kUnknownError;
38 default:
39 NOTREACHED() << "Unexpected value of result cannot be converted: "
40 << result;
41 }
42 return "";
43 }
44
45 } // namespace
46
47 InstanceIDApiFunction::InstanceIDApiFunction() {
48 }
49
50 InstanceIDApiFunction::~InstanceIDApiFunction() {
51 }
52
53 ExtensionFunction::ResponseAction InstanceIDApiFunction::Run() {
54 if (Profile::FromBrowserContext(browser_context())->IsOffTheRecord()) {
55 return RespondNow(Error(
56 "chrome.instanceID not supported in incognito mode"));
57 }
58
59 if (!IsEnabled()) {
60 return RespondNow(Error(
61 InstanceIDResultToError(instance_id::InstanceID::DISABLED)));
62 }
63
64 return DoWork();
65 }
66
67 bool InstanceIDApiFunction::IsEnabled() const {
68 Profile* profile = Profile::FromBrowserContext(browser_context());
69
70 return instance_id::InstanceIDProfileService::IsInstanceIDEnabled(profile);
71 }
72
73 instance_id::InstanceID* InstanceIDApiFunction::GetInstanceID() const {
74 return instance_id::InstanceIDProfileServiceFactory::GetForProfile(
75 Profile::FromBrowserContext(browser_context()))->driver()->
76 GetInstanceID(extension()->id());
77 }
78
12 InstanceIDGetIDFunction::InstanceIDGetIDFunction() {} 79 InstanceIDGetIDFunction::InstanceIDGetIDFunction() {}
13 80
14 InstanceIDGetIDFunction::~InstanceIDGetIDFunction() {} 81 InstanceIDGetIDFunction::~InstanceIDGetIDFunction() {}
15 82
16 ExtensionFunction::ResponseAction InstanceIDGetIDFunction::Run() { 83 ExtensionFunction::ResponseAction InstanceIDGetIDFunction::DoWork() {
17 NOTIMPLEMENTED(); 84 return RespondNow(
18 return RespondLater(); 85 OneArgument(new base::StringValue(GetInstanceID()->GetID())));
19 } 86 }
20 87
21 InstanceIDGetCreationTimeFunction::InstanceIDGetCreationTimeFunction() {} 88 InstanceIDGetCreationTimeFunction::InstanceIDGetCreationTimeFunction() {}
22 89
23 InstanceIDGetCreationTimeFunction::~InstanceIDGetCreationTimeFunction() {} 90 InstanceIDGetCreationTimeFunction::~InstanceIDGetCreationTimeFunction() {}
24 91
25 ExtensionFunction::ResponseAction InstanceIDGetCreationTimeFunction::Run() { 92 ExtensionFunction::ResponseAction InstanceIDGetCreationTimeFunction::DoWork() {
26 NOTIMPLEMENTED(); 93 return RespondNow(OneArgument(
27 return RespondLater(); 94 new base::FundamentalValue(
95 GetInstanceID()->GetCreationTime().ToDoubleT())));
28 } 96 }
29 97
30 InstanceIDGetTokenFunction::InstanceIDGetTokenFunction() {} 98 InstanceIDGetTokenFunction::InstanceIDGetTokenFunction() {}
31 99
32 InstanceIDGetTokenFunction::~InstanceIDGetTokenFunction() {} 100 InstanceIDGetTokenFunction::~InstanceIDGetTokenFunction() {}
33 101
34 ExtensionFunction::ResponseAction InstanceIDGetTokenFunction::Run() { 102 ExtensionFunction::ResponseAction InstanceIDGetTokenFunction::DoWork() {
35 NOTIMPLEMENTED(); 103 scoped_ptr<api::instance_id::GetToken::Params> params =
104 api::instance_id::GetToken::Params::Create(*args_);
105 EXTENSION_FUNCTION_VALIDATE(params.get());
106
107 std::map<std::string, std::string> options;
108 if (params->get_token_params.options.get()) {
109 base::DictionaryValue::Iterator iter(
110 params->get_token_params.options->additional_properties);
111 for (; !iter.IsAtEnd(); iter.Advance()) {
112 const base::StringValue* string_value = NULL;
113 if (!iter.value().GetAsString(&string_value)) {
114 return RespondNow(Error(InstanceIDResultToError(
115 instance_id::InstanceID::INVALID_PARAMETER)));
116 }
117 options[iter.key()] = string_value->GetString();
118 }
119 }
120
121 GetInstanceID()->GetToken(
122 params->get_token_params.authorized_entity,
123 params->get_token_params.scope,
124 options,
125 base::Bind(&InstanceIDGetTokenFunction::GetTokenCompleted, this));
126
36 return RespondLater(); 127 return RespondLater();
37 } 128 }
38 129
130 void InstanceIDGetTokenFunction::GetTokenCompleted(
131 instance_id::InstanceID* instance_id,
fgorski 2015/05/07 19:59:53 you are completely ignoring this one. Would it mak
jianli 2015/05/07 20:47:01 Indeed I has removed this from my other patch that
132 const std::string& token,
133 instance_id::InstanceID::Result result) {
134 if (result == instance_id::InstanceID::SUCCESS)
135 Respond(OneArgument(new base::StringValue(token)));
136 else
137 Respond(Error(InstanceIDResultToError(result)));
138 }
139
39 InstanceIDDeleteTokenFunction::InstanceIDDeleteTokenFunction() {} 140 InstanceIDDeleteTokenFunction::InstanceIDDeleteTokenFunction() {}
40 141
41 InstanceIDDeleteTokenFunction::~InstanceIDDeleteTokenFunction() {} 142 InstanceIDDeleteTokenFunction::~InstanceIDDeleteTokenFunction() {}
42 143
43 ExtensionFunction::ResponseAction InstanceIDDeleteTokenFunction::Run() { 144 ExtensionFunction::ResponseAction InstanceIDDeleteTokenFunction::DoWork() {
44 NOTIMPLEMENTED(); 145 scoped_ptr<api::instance_id::DeleteToken::Params> params =
146 api::instance_id::DeleteToken::Params::Create(*args_);
147 EXTENSION_FUNCTION_VALIDATE(params.get());
148
149 GetInstanceID()->DeleteToken(
150 params->delete_token_params.authorized_entity,
151 params->delete_token_params.scope,
152 base::Bind(&InstanceIDDeleteTokenFunction::DeleteTokenCompleted, this));
153
45 return RespondLater(); 154 return RespondLater();
46 } 155 }
47 156
157 void InstanceIDDeleteTokenFunction::DeleteTokenCompleted(
158 instance_id::InstanceID* instance_id,
159 instance_id::InstanceID::Result result) {
160 if (result == instance_id::InstanceID::SUCCESS)
161 Respond(NoArguments());
162 else
163 Respond(Error(InstanceIDResultToError(result)));
164 }
165
48 InstanceIDDeleteIDFunction::InstanceIDDeleteIDFunction() {} 166 InstanceIDDeleteIDFunction::InstanceIDDeleteIDFunction() {}
49 167
50 InstanceIDDeleteIDFunction::~InstanceIDDeleteIDFunction() {} 168 InstanceIDDeleteIDFunction::~InstanceIDDeleteIDFunction() {}
51 169
52 ExtensionFunction::ResponseAction InstanceIDDeleteIDFunction::Run() { 170 ExtensionFunction::ResponseAction InstanceIDDeleteIDFunction::DoWork() {
53 NOTIMPLEMENTED(); 171 GetInstanceID()->DeleteID(
172 base::Bind(&InstanceIDDeleteIDFunction::DeleteIDCompleted, this));
173
54 return RespondLater(); 174 return RespondLater();
55 } 175 }
56 176
177 void InstanceIDDeleteIDFunction::DeleteIDCompleted(
178 instance_id::InstanceID* instance_id,
179 instance_id::InstanceID::Result result) {
180 if (result == instance_id::InstanceID::SUCCESS)
181 Respond(NoArguments());
182 else
183 Respond(Error(InstanceIDResultToError(result)));
184 }
185
57 } // namespace extensions 186 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698