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

Side by Side Diff: third_party/libaddressinput/chromium/cpp/src/validating_util.cc

Issue 144353002: [rac] Use stale libaddressinput data if download fails (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (C) 2013 Google Inc. 1 // Copyright (C) 2013 Google Inc.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 97
98 wrapped.append(kChecksumPrefix, kChecksumPrefixLength); 98 wrapped.append(kChecksumPrefix, kChecksumPrefixLength);
99 wrapped.append(MD5String(data)); 99 wrapped.append(MD5String(data));
100 wrapped.push_back(kSeparator); 100 wrapped.push_back(kSeparator);
101 wrapped.append(data); 101 wrapped.append(data);
102 102
103 return wrapped; 103 return wrapped;
104 } 104 }
105 105
106 // static 106 // static
107 bool ValidatingUtil::UnwrapTimestamp(std::string* data, time_t now) { 107 ValidatingUtil::TimestampStatus ValidatingUtil::UnwrapTimestamp(
108 std::string* data,
109 time_t now) {
108 assert(data != NULL); 110 assert(data != NULL);
109 if (now < 0) { 111 if (now < 0) {
110 return false; 112 return TIMESTAMP_INVALID;
111 } 113 }
112 114
113 std::string timestamp_string; 115 std::string timestamp_string;
114 if (!UnwrapHeader( 116 if (!UnwrapHeader(
115 kTimestampPrefix, kTimestampPrefixLength, data, &timestamp_string)) { 117 kTimestampPrefix, kTimestampPrefixLength, data, &timestamp_string)) {
116 return false; 118 return TIMESTAMP_INVALID;
117 } 119 }
118 120
119 time_t timestamp = atol(timestamp_string.c_str()); 121 time_t timestamp = atol(timestamp_string.c_str());
120 if (timestamp < 0) { 122 if (timestamp < 0) {
121 return false; 123 return TIMESTAMP_INVALID;
124 }
125
126 double age_in_seconds = difftime(now, timestamp);
127 if (age_in_seconds < 0.0) {
128 return TIMESTAMP_INVALID;
122 } 129 }
123 130
124 // One month contains: 131 // One month contains:
125 // 30 days * 132 // 30 days *
126 // 24 hours per day * 133 // 24 hours per day *
127 // 60 minutes per hour * 134 // 60 minutes per hour *
128 // 60 seconds per minute. 135 // 60 seconds per minute.
129 static const double kOneMonthInSeconds = 30.0 * 24.0 * 60.0 * 60.0; 136 static const double kOneMonthInSeconds = 30.0 * 24.0 * 60.0 * 60.0;
130 double age_in_seconds = difftime(now, timestamp); 137 return age_in_seconds < kOneMonthInSeconds ? TIMESTAMP_VALID
131 return !(age_in_seconds < 0.0) && age_in_seconds < kOneMonthInSeconds; 138 : TIMESTAMP_STALE;
132 } 139 }
133 140
134 // static 141 // static
135 bool ValidatingUtil::UnwrapChecksum(std::string* data) { 142 bool ValidatingUtil::UnwrapChecksum(std::string* data) {
136 assert(data != NULL); 143 assert(data != NULL);
137 std::string checksum; 144 std::string checksum;
138 if (!UnwrapHeader(kChecksumPrefix, kChecksumPrefixLength, data, &checksum)) { 145 if (!UnwrapHeader(kChecksumPrefix, kChecksumPrefixLength, data, &checksum)) {
139 return false; 146 return false;
140 } 147 }
141 return checksum == MD5String(*data); 148 return checksum == MD5String(*data);
142 } 149 }
143 150
144 } // namespace addressinput 151 } // namespace addressinput
145 } // namespace i18n 152 } // namespace i18n
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698