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

Side by Side Diff: components/gcm_driver/instance_id/instance_id_impl.cc

Issue 1923953002: Integrate InstanceID with GCM crypto provider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@iid5default
Patch Set: RunUntilIdle after deleting GCMDriver Created 4 years, 6 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
« no previous file with comments | « components/gcm_driver/instance_id/instance_id_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "components/gcm_driver/instance_id/instance_id_impl.h" 5 #include "components/gcm_driver/instance_id/instance_id_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 default: 42 default:
43 NOTREACHED() << "Unexpected value of result cannot be converted: " 43 NOTREACHED() << "Unexpected value of result cannot be converted: "
44 << result; 44 << result;
45 } 45 }
46 return InstanceID::UNKNOWN_ERROR; 46 return InstanceID::UNKNOWN_ERROR;
47 } 47 }
48 48
49 } // namespace 49 } // namespace
50 50
51 // static 51 // static
52 std::unique_ptr<InstanceID> InstanceID::Create( 52 std::unique_ptr<InstanceID> InstanceID::Create(const std::string& app_id,
53 const std::string& app_id, 53 gcm::GCMDriver* gcm_driver) {
54 gcm::InstanceIDHandler* handler) { 54 return base::WrapUnique(new InstanceIDImpl(app_id, gcm_driver));
55 return base::WrapUnique(new InstanceIDImpl(app_id, handler));
56 } 55 }
57 56
58 InstanceIDImpl::InstanceIDImpl(const std::string& app_id, 57 InstanceIDImpl::InstanceIDImpl(const std::string& app_id,
59 gcm::InstanceIDHandler* handler) 58 gcm::GCMDriver* gcm_driver)
60 : InstanceID(app_id), handler_(handler), weak_ptr_factory_(this) { 59 : InstanceID(app_id, gcm_driver), weak_ptr_factory_(this) {
61 DCHECK(handler_); 60 Handler()->GetInstanceIDData(
62 handler_->GetInstanceIDData(
63 app_id, base::Bind(&InstanceIDImpl::GetInstanceIDDataCompleted, 61 app_id, base::Bind(&InstanceIDImpl::GetInstanceIDDataCompleted,
64 weak_ptr_factory_.GetWeakPtr())); 62 weak_ptr_factory_.GetWeakPtr()));
65 } 63 }
66 64
67 InstanceIDImpl::~InstanceIDImpl() { 65 InstanceIDImpl::~InstanceIDImpl() {
68 } 66 }
69 67
70 void InstanceIDImpl::GetID(const GetIDCallback& callback) { 68 void InstanceIDImpl::GetID(const GetIDCallback& callback) {
71 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { 69 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) {
72 delayed_task_controller_.AddTask( 70 delayed_task_controller_.AddTask(
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 DoGetToken(authorized_entity, scope, options, callback); 121 DoGetToken(authorized_entity, scope, options, callback);
124 } 122 }
125 123
126 void InstanceIDImpl::DoGetToken( 124 void InstanceIDImpl::DoGetToken(
127 const std::string& authorized_entity, 125 const std::string& authorized_entity,
128 const std::string& scope, 126 const std::string& scope,
129 const std::map<std::string, std::string>& options, 127 const std::map<std::string, std::string>& options,
130 const GetTokenCallback& callback) { 128 const GetTokenCallback& callback) {
131 EnsureIDGenerated(); 129 EnsureIDGenerated();
132 130
133 handler_->GetToken(app_id(), authorized_entity, scope, options, 131 Handler()->GetToken(app_id(), authorized_entity, scope, options,
134 base::Bind(&InstanceIDImpl::OnGetTokenCompleted, 132 base::Bind(&InstanceIDImpl::OnGetTokenCompleted,
135 weak_ptr_factory_.GetWeakPtr(), callback)); 133 weak_ptr_factory_.GetWeakPtr(), callback));
136 } 134 }
137 135
138 void InstanceIDImpl::DeleteToken(const std::string& authorized_entity, 136 void InstanceIDImpl::DeleteTokenImpl(const std::string& authorized_entity,
139 const std::string& scope, 137 const std::string& scope,
140 const DeleteTokenCallback& callback) { 138 const DeleteTokenCallback& callback) {
141 DCHECK(!authorized_entity.empty()); 139 DCHECK(!authorized_entity.empty());
142 DCHECK(!scope.empty()); 140 DCHECK(!scope.empty());
143 141
144 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { 142 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) {
145 delayed_task_controller_.AddTask( 143 delayed_task_controller_.AddTask(
146 base::Bind(&InstanceIDImpl::DoDeleteToken, 144 base::Bind(&InstanceIDImpl::DoDeleteToken,
147 weak_ptr_factory_.GetWeakPtr(), 145 weak_ptr_factory_.GetWeakPtr(),
148 authorized_entity, 146 authorized_entity,
149 scope, 147 scope,
150 callback)); 148 callback));
151 return; 149 return;
152 } 150 }
153 151
154 DoDeleteToken(authorized_entity, scope, callback); 152 DoDeleteToken(authorized_entity, scope, callback);
155 } 153 }
156 154
157 void InstanceIDImpl::DoDeleteToken( 155 void InstanceIDImpl::DoDeleteToken(
158 const std::string& authorized_entity, 156 const std::string& authorized_entity,
159 const std::string& scope, 157 const std::string& scope,
160 const DeleteTokenCallback& callback) { 158 const DeleteTokenCallback& callback) {
161 // Nothing to delete if the ID has not been generated. 159 // Nothing to delete if the ID has not been generated.
162 if (id_.empty()) { 160 if (id_.empty()) {
163 callback.Run(InstanceID::INVALID_PARAMETER); 161 callback.Run(InstanceID::INVALID_PARAMETER);
164 return; 162 return;
165 } 163 }
166 164
167 handler_->DeleteToken(app_id(), authorized_entity, scope, 165 Handler()->DeleteToken(app_id(), authorized_entity, scope,
168 base::Bind(&InstanceIDImpl::OnDeleteTokenCompleted, 166 base::Bind(&InstanceIDImpl::OnDeleteTokenCompleted,
169 weak_ptr_factory_.GetWeakPtr(), callback)); 167 weak_ptr_factory_.GetWeakPtr(), callback));
170 } 168 }
171 169
172 void InstanceIDImpl::DeleteID(const DeleteIDCallback& callback) { 170 void InstanceIDImpl::DeleteIDImpl(const DeleteIDCallback& callback) {
173 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { 171 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) {
174 delayed_task_controller_.AddTask( 172 delayed_task_controller_.AddTask(
175 base::Bind(&InstanceIDImpl::DoDeleteID, 173 base::Bind(&InstanceIDImpl::DoDeleteID,
176 weak_ptr_factory_.GetWeakPtr(), 174 weak_ptr_factory_.GetWeakPtr(),
177 callback)); 175 callback));
178 return; 176 return;
179 } 177 }
180 178
181 DoDeleteID(callback); 179 DoDeleteID(callback);
182 } 180 }
183 181
184 void InstanceIDImpl::DoDeleteID(const DeleteIDCallback& callback) { 182 void InstanceIDImpl::DoDeleteID(const DeleteIDCallback& callback) {
185 // Nothing to do if ID has not been generated. 183 // Nothing to do if ID has not been generated.
186 if (id_.empty()) { 184 if (id_.empty()) {
187 callback.Run(InstanceID::SUCCESS); 185 callback.Run(InstanceID::SUCCESS);
188 return; 186 return;
189 } 187 }
190 188
191 handler_->DeleteAllTokensForApp( 189 Handler()->DeleteAllTokensForApp(
192 app_id(), base::Bind(&InstanceIDImpl::OnDeleteIDCompleted, 190 app_id(), base::Bind(&InstanceIDImpl::OnDeleteIDCompleted,
193 weak_ptr_factory_.GetWeakPtr(), callback)); 191 weak_ptr_factory_.GetWeakPtr(), callback));
194 192
195 handler_->RemoveInstanceIDData(app_id()); 193 Handler()->RemoveInstanceIDData(app_id());
196 194
197 id_.clear(); 195 id_.clear();
198 creation_time_ = base::Time(); 196 creation_time_ = base::Time();
199 } 197 }
200 198
201 void InstanceIDImpl::OnGetTokenCompleted(const GetTokenCallback& callback, 199 void InstanceIDImpl::OnGetTokenCompleted(const GetTokenCallback& callback,
202 const std::string& token, 200 const std::string& token,
203 gcm::GCMClient::Result result) { 201 gcm::GCMClient::Result result) {
204 callback.Run(token, GCMClientResultToInstanceIDResult(result)); 202 callback.Run(token, GCMClientResultToInstanceIDResult(result));
205 } 203 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 base::Base64Encode( 256 base::Base64Encode(
259 base::StringPiece(reinterpret_cast<const char*>(bytes), sizeof(bytes)), 257 base::StringPiece(reinterpret_cast<const char*>(bytes), sizeof(bytes)),
260 &id_); 258 &id_);
261 std::replace(id_.begin(), id_.end(), '+', '-'); 259 std::replace(id_.begin(), id_.end(), '+', '-');
262 std::replace(id_.begin(), id_.end(), '/', '_'); 260 std::replace(id_.begin(), id_.end(), '/', '_');
263 id_.erase(std::remove(id_.begin(), id_.end(), '='), id_.end()); 261 id_.erase(std::remove(id_.begin(), id_.end(), '='), id_.end());
264 262
265 creation_time_ = base::Time::Now(); 263 creation_time_ = base::Time::Now();
266 264
267 // Save to the persistent store. 265 // Save to the persistent store.
268 handler_->AddInstanceIDData( 266 Handler()->AddInstanceIDData(
269 app_id(), id_, base::Int64ToString(creation_time_.ToInternalValue())); 267 app_id(), id_, base::Int64ToString(creation_time_.ToInternalValue()));
270 } 268 }
271 269
270 gcm::InstanceIDHandler* InstanceIDImpl::Handler() {
271 gcm::InstanceIDHandler* handler =
272 gcm_driver()->GetInstanceIDHandlerInternal();
273 DCHECK(handler);
274 return handler;
275 }
276
272 } // namespace instance_id 277 } // namespace instance_id
OLDNEW
« no previous file with comments | « components/gcm_driver/instance_id/instance_id_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698