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

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

Issue 1548113002: Switch to standard integer types in components/, part 2 of 4. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: gn Created 4 years, 12 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 "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>
8
7 #include <algorithm> 9 #include <algorithm>
8 #include "base/base64.h" 10 #include "base/base64.h"
9 #include "base/bind.h" 11 #include "base/bind.h"
10 #include "base/logging.h" 12 #include "base/logging.h"
11 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
12 #include "base/message_loop/message_loop.h" 14 #include "base/message_loop/message_loop.h"
13 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
14 #include "components/gcm_driver/gcm_driver_desktop.h" 16 #include "components/gcm_driver/gcm_driver_desktop.h"
15 #include "crypto/random.h" 17 #include "crypto/random.h"
16 18
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 } 228 }
227 229
228 void InstanceIDImpl::GetInstanceIDDataCompleted( 230 void InstanceIDImpl::GetInstanceIDDataCompleted(
229 const std::string& instance_id, 231 const std::string& instance_id,
230 const std::string& extra_data) { 232 const std::string& extra_data) {
231 id_ = instance_id; 233 id_ = instance_id;
232 234
233 if (extra_data.empty()) { 235 if (extra_data.empty()) {
234 creation_time_ = base::Time(); 236 creation_time_ = base::Time();
235 } else { 237 } else {
236 int64 time_internal = 0LL; 238 int64_t time_internal = 0LL;
237 if (!base::StringToInt64(extra_data, &time_internal)) { 239 if (!base::StringToInt64(extra_data, &time_internal)) {
238 DVLOG(1) << "Failed to parse the time data: " + extra_data; 240 DVLOG(1) << "Failed to parse the time data: " + extra_data;
239 return; 241 return;
240 } 242 }
241 creation_time_ = base::Time::FromInternalValue(time_internal); 243 creation_time_ = base::Time::FromInternalValue(time_internal);
242 } 244 }
243 245
244 delayed_task_controller_.SetReady(); 246 delayed_task_controller_.SetReady();
245 } 247 }
246 248
247 gcm::InstanceIDHandler* InstanceIDImpl::GetInstanceIDHandler() const { 249 gcm::InstanceIDHandler* InstanceIDImpl::GetInstanceIDHandler() const {
248 gcm::InstanceIDHandler* handler = gcm_driver_->GetInstanceIDHandler(); 250 gcm::InstanceIDHandler* handler = gcm_driver_->GetInstanceIDHandler();
249 DCHECK(handler); 251 DCHECK(handler);
250 return handler; 252 return handler;
251 } 253 }
252 254
253 void InstanceIDImpl::EnsureIDGenerated() { 255 void InstanceIDImpl::EnsureIDGenerated() {
254 if (!id_.empty()) 256 if (!id_.empty())
255 return; 257 return;
256 258
257 // Now produce the ID in the following steps: 259 // Now produce the ID in the following steps:
258 260
259 // 1) Generates the random number in 8 bytes which is required by the server. 261 // 1) Generates the random number in 8 bytes which is required by the server.
260 // We don't want to be strictly cryptographically secure. The server might 262 // We don't want to be strictly cryptographically secure. The server might
261 // reject the ID if there is a conflict or problem. 263 // reject the ID if there is a conflict or problem.
262 uint8 bytes[kInstanceIDByteLength]; 264 uint8_t bytes[kInstanceIDByteLength];
263 crypto::RandBytes(bytes, sizeof(bytes)); 265 crypto::RandBytes(bytes, sizeof(bytes));
264 266
265 // 2) Transforms the first 4 bits to 0x7. Note that this is required by the 267 // 2) Transforms the first 4 bits to 0x7. Note that this is required by the
266 // server. 268 // server.
267 bytes[0] &= 0x0f; 269 bytes[0] &= 0x0f;
268 bytes[0] |= 0x70; 270 bytes[0] |= 0x70;
269 271
270 // 3) Encode the value in Android-compatible base64 scheme: 272 // 3) Encode the value in Android-compatible base64 scheme:
271 // * URL safe: '/' replaced by '_' and '+' replaced by '-'. 273 // * URL safe: '/' replaced by '_' and '+' replaced by '-'.
272 // * No padding: any trailing '=' will be removed. 274 // * No padding: any trailing '=' will be removed.
273 base::Base64Encode( 275 base::Base64Encode(
274 base::StringPiece(reinterpret_cast<const char*>(bytes), sizeof(bytes)), 276 base::StringPiece(reinterpret_cast<const char*>(bytes), sizeof(bytes)),
275 &id_); 277 &id_);
276 std::replace(id_.begin(), id_.end(), '+', '-'); 278 std::replace(id_.begin(), id_.end(), '+', '-');
277 std::replace(id_.begin(), id_.end(), '/', '_'); 279 std::replace(id_.begin(), id_.end(), '/', '_');
278 id_.erase(std::remove(id_.begin(), id_.end(), '='), id_.end()); 280 id_.erase(std::remove(id_.begin(), id_.end(), '='), id_.end());
279 281
280 creation_time_ = base::Time::Now(); 282 creation_time_ = base::Time::Now();
281 283
282 // Save to the persistent store. 284 // Save to the persistent store.
283 GetInstanceIDHandler()->AddInstanceIDData( 285 GetInstanceIDHandler()->AddInstanceIDData(
284 app_id(), 286 app_id(),
285 id_, 287 id_,
286 base::Int64ToString(creation_time_.ToInternalValue())); 288 base::Int64ToString(creation_time_.ToInternalValue()));
287 } 289 }
288 290
289 } // namespace instance_id 291 } // namespace instance_id
OLDNEW
« no previous file with comments | « components/gcm_driver/instance_id/instance_id_driver_unittest.cc ('k') | components/gcm_driver/registration_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698