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

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

Issue 1830983002: Implement InstanceIDAndroid using InstanceIDWithSubtype.java (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@iid1subtype
Patch Set: Make mNativeInstanceIDAndroid non-final Created 4 years, 8 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') | tools/android/eclipse/.classpath » ('j') | 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 "base/base64.h" 10 #include "base/base64.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 } // namespace 47 } // namespace
48 48
49 // static 49 // static
50 scoped_ptr<InstanceID> InstanceID::Create(const std::string& app_id, 50 scoped_ptr<InstanceID> InstanceID::Create(const std::string& app_id,
51 gcm::InstanceIDHandler* handler) { 51 gcm::InstanceIDHandler* handler) {
52 return make_scoped_ptr(new InstanceIDImpl(app_id, handler)); 52 return make_scoped_ptr(new InstanceIDImpl(app_id, handler));
53 } 53 }
54 54
55 InstanceIDImpl::InstanceIDImpl(const std::string& app_id, 55 InstanceIDImpl::InstanceIDImpl(const std::string& app_id,
56 gcm::InstanceIDHandler* handler) 56 gcm::InstanceIDHandler* handler)
57 : InstanceID(app_id, handler), weak_ptr_factory_(this) { 57 : InstanceID(app_id), handler_(handler), weak_ptr_factory_(this) {
58 handler->GetInstanceIDData( 58 DCHECK(handler_);
59 handler_->GetInstanceIDData(
59 app_id, base::Bind(&InstanceIDImpl::GetInstanceIDDataCompleted, 60 app_id, base::Bind(&InstanceIDImpl::GetInstanceIDDataCompleted,
60 weak_ptr_factory_.GetWeakPtr())); 61 weak_ptr_factory_.GetWeakPtr()));
61 } 62 }
62 63
63 InstanceIDImpl::~InstanceIDImpl() { 64 InstanceIDImpl::~InstanceIDImpl() {
64 } 65 }
65 66
66 void InstanceIDImpl::GetID(const GetIDCallback& callback) { 67 void InstanceIDImpl::GetID(const GetIDCallback& callback) {
67 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { 68 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) {
68 delayed_task_controller_.AddTask( 69 delayed_task_controller_.AddTask(
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 DoGetToken(authorized_entity, scope, options, callback); 120 DoGetToken(authorized_entity, scope, options, callback);
120 } 121 }
121 122
122 void InstanceIDImpl::DoGetToken( 123 void InstanceIDImpl::DoGetToken(
123 const std::string& authorized_entity, 124 const std::string& authorized_entity,
124 const std::string& scope, 125 const std::string& scope,
125 const std::map<std::string, std::string>& options, 126 const std::map<std::string, std::string>& options,
126 const GetTokenCallback& callback) { 127 const GetTokenCallback& callback) {
127 EnsureIDGenerated(); 128 EnsureIDGenerated();
128 129
129 handler()->GetToken(app_id(), authorized_entity, scope, options, 130 handler_->GetToken(app_id(), authorized_entity, scope, options,
130 base::Bind(&InstanceIDImpl::OnGetTokenCompleted, 131 base::Bind(&InstanceIDImpl::OnGetTokenCompleted,
131 weak_ptr_factory_.GetWeakPtr(), callback)); 132 weak_ptr_factory_.GetWeakPtr(), callback));
132 } 133 }
133 134
134 void InstanceIDImpl::DeleteToken(const std::string& authorized_entity, 135 void InstanceIDImpl::DeleteToken(const std::string& authorized_entity,
135 const std::string& scope, 136 const std::string& scope,
136 const DeleteTokenCallback& callback) { 137 const DeleteTokenCallback& callback) {
137 DCHECK(!authorized_entity.empty()); 138 DCHECK(!authorized_entity.empty());
138 DCHECK(!scope.empty()); 139 DCHECK(!scope.empty());
139 140
140 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { 141 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) {
141 delayed_task_controller_.AddTask( 142 delayed_task_controller_.AddTask(
(...skipping 11 matching lines...) Expand all
153 void InstanceIDImpl::DoDeleteToken( 154 void InstanceIDImpl::DoDeleteToken(
154 const std::string& authorized_entity, 155 const std::string& authorized_entity,
155 const std::string& scope, 156 const std::string& scope,
156 const DeleteTokenCallback& callback) { 157 const DeleteTokenCallback& callback) {
157 // Nothing to delete if the ID has not been generated. 158 // Nothing to delete if the ID has not been generated.
158 if (id_.empty()) { 159 if (id_.empty()) {
159 callback.Run(InstanceID::INVALID_PARAMETER); 160 callback.Run(InstanceID::INVALID_PARAMETER);
160 return; 161 return;
161 } 162 }
162 163
163 handler()->DeleteToken(app_id(), authorized_entity, scope, 164 handler_->DeleteToken(app_id(), authorized_entity, scope,
164 base::Bind(&InstanceIDImpl::OnDeleteTokenCompleted, 165 base::Bind(&InstanceIDImpl::OnDeleteTokenCompleted,
165 weak_ptr_factory_.GetWeakPtr(), callback)); 166 weak_ptr_factory_.GetWeakPtr(), callback));
166 } 167 }
167 168
168 void InstanceIDImpl::DeleteID(const DeleteIDCallback& callback) { 169 void InstanceIDImpl::DeleteID(const DeleteIDCallback& callback) {
169 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) { 170 if (!delayed_task_controller_.CanRunTaskWithoutDelay()) {
170 delayed_task_controller_.AddTask( 171 delayed_task_controller_.AddTask(
171 base::Bind(&InstanceIDImpl::DoDeleteID, 172 base::Bind(&InstanceIDImpl::DoDeleteID,
172 weak_ptr_factory_.GetWeakPtr(), 173 weak_ptr_factory_.GetWeakPtr(),
173 callback)); 174 callback));
174 return; 175 return;
175 } 176 }
176 177
177 DoDeleteID(callback); 178 DoDeleteID(callback);
178 } 179 }
179 180
180 void InstanceIDImpl::DoDeleteID(const DeleteIDCallback& callback) { 181 void InstanceIDImpl::DoDeleteID(const DeleteIDCallback& callback) {
181 // Nothing to do if ID has not been generated. 182 // Nothing to do if ID has not been generated.
182 if (id_.empty()) { 183 if (id_.empty()) {
183 callback.Run(InstanceID::SUCCESS); 184 callback.Run(InstanceID::SUCCESS);
184 return; 185 return;
185 } 186 }
186 187
187 handler()->DeleteAllTokensForApp( 188 handler_->DeleteAllTokensForApp(
188 app_id(), base::Bind(&InstanceIDImpl::OnDeleteIDCompleted, 189 app_id(), base::Bind(&InstanceIDImpl::OnDeleteIDCompleted,
189 weak_ptr_factory_.GetWeakPtr(), callback)); 190 weak_ptr_factory_.GetWeakPtr(), callback));
190 191
191 handler()->RemoveInstanceIDData(app_id()); 192 handler_->RemoveInstanceIDData(app_id());
192 193
193 id_.clear(); 194 id_.clear();
194 creation_time_ = base::Time(); 195 creation_time_ = base::Time();
195 } 196 }
196 197
197 void InstanceIDImpl::OnGetTokenCompleted(const GetTokenCallback& callback, 198 void InstanceIDImpl::OnGetTokenCompleted(const GetTokenCallback& callback,
198 const std::string& token, 199 const std::string& token,
199 gcm::GCMClient::Result result) { 200 gcm::GCMClient::Result result) {
200 callback.Run(token, GCMClientResultToInstanceIDResult(result)); 201 callback.Run(token, GCMClientResultToInstanceIDResult(result));
201 } 202 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 base::Base64Encode( 255 base::Base64Encode(
255 base::StringPiece(reinterpret_cast<const char*>(bytes), sizeof(bytes)), 256 base::StringPiece(reinterpret_cast<const char*>(bytes), sizeof(bytes)),
256 &id_); 257 &id_);
257 std::replace(id_.begin(), id_.end(), '+', '-'); 258 std::replace(id_.begin(), id_.end(), '+', '-');
258 std::replace(id_.begin(), id_.end(), '/', '_'); 259 std::replace(id_.begin(), id_.end(), '/', '_');
259 id_.erase(std::remove(id_.begin(), id_.end(), '='), id_.end()); 260 id_.erase(std::remove(id_.begin(), id_.end(), '='), id_.end());
260 261
261 creation_time_ = base::Time::Now(); 262 creation_time_ = base::Time::Now();
262 263
263 // Save to the persistent store. 264 // Save to the persistent store.
264 handler()->AddInstanceIDData( 265 handler_->AddInstanceIDData(
265 app_id(), id_, base::Int64ToString(creation_time_.ToInternalValue())); 266 app_id(), id_, base::Int64ToString(creation_time_.ToInternalValue()));
266 } 267 }
267 268
268 } // namespace instance_id 269 } // namespace instance_id
OLDNEW
« no previous file with comments | « components/gcm_driver/instance_id/instance_id_impl.h ('k') | tools/android/eclipse/.classpath » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698