OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/bookmarks/bookmark_codec.h" | 5 #include "chrome/browser/bookmarks/bookmark_codec.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 ids_missing_ = true; | 193 ids_missing_ = true; |
194 | 194 |
195 maximum_id_ = std::max(maximum_id_, id); | 195 maximum_id_ = std::max(maximum_id_, id); |
196 | 196 |
197 std::wstring title; | 197 std::wstring title; |
198 value.GetString(kNameKey, &title); | 198 value.GetString(kNameKey, &title); |
199 | 199 |
200 std::wstring date_added_string; | 200 std::wstring date_added_string; |
201 if (!value.GetString(kDateAddedKey, &date_added_string)) | 201 if (!value.GetString(kDateAddedKey, &date_added_string)) |
202 date_added_string = Int64ToWString(Time::Now().ToInternalValue()); | 202 date_added_string = Int64ToWString(Time::Now().ToInternalValue()); |
| 203 base::Time date_added = base::Time::FromInternalValue( |
| 204 StringToInt64(WideToUTF16Hack(date_added_string))); |
| 205 #if !defined(OS_WIN) |
| 206 // We changed the epoch for dates on Mac & Linux from 1970 to the Windows |
| 207 // one of 1601. We assume any number we encounter from before 1970 is using |
| 208 // the old format, so we need to add the delta to it. |
| 209 if (date_added.ToInternalValue() < |
| 210 base::Time::kWindowsEpochDeltaMicroseconds) { |
| 211 date_added = base::Time::FromInternalValue(date_added.ToInternalValue() + |
| 212 base::Time::kWindowsEpochDeltaMicroseconds); |
| 213 } |
| 214 #endif |
203 | 215 |
204 std::wstring type_string; | 216 std::wstring type_string; |
205 if (!value.GetString(kTypeKey, &type_string)) | 217 if (!value.GetString(kTypeKey, &type_string)) |
206 return false; | 218 return false; |
207 | 219 |
208 if (type_string != kTypeURL && type_string != kTypeFolder) | 220 if (type_string != kTypeURL && type_string != kTypeFolder) |
209 return false; // Unknown type. | 221 return false; // Unknown type. |
210 | 222 |
211 if (type_string == kTypeURL) { | 223 if (type_string == kTypeURL) { |
212 std::wstring url_string; | 224 std::wstring url_string; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 if (parent) | 260 if (parent) |
249 parent->Add(parent->GetChildCount(), node); | 261 parent->Add(parent->GetChildCount(), node); |
250 | 262 |
251 UpdateChecksumWithFolderNode(id_string, title); | 263 UpdateChecksumWithFolderNode(id_string, title); |
252 | 264 |
253 if (!DecodeChildren(*static_cast<ListValue*>(child_values), node)) | 265 if (!DecodeChildren(*static_cast<ListValue*>(child_values), node)) |
254 return false; | 266 return false; |
255 } | 267 } |
256 | 268 |
257 node->SetTitle(title); | 269 node->SetTitle(title); |
258 node->set_date_added(Time::FromInternalValue( | 270 node->set_date_added(date_added); |
259 StringToInt64(WideToUTF16Hack(date_added_string)))); | |
260 return true; | 271 return true; |
261 } | 272 } |
262 | 273 |
263 void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node, | 274 void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node, |
264 BookmarkNode* other_node) { | 275 BookmarkNode* other_node) { |
265 maximum_id_ = 0; | 276 maximum_id_ = 0; |
266 ReassignIDsHelper(bb_node); | 277 ReassignIDsHelper(bb_node); |
267 ReassignIDsHelper(other_node); | 278 ReassignIDsHelper(other_node); |
268 ids_reassigned_ = true; | 279 ids_reassigned_ = true; |
269 } | 280 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 | 312 |
302 void BookmarkCodec::InitializeChecksum() { | 313 void BookmarkCodec::InitializeChecksum() { |
303 MD5Init(&md5_context_); | 314 MD5Init(&md5_context_); |
304 } | 315 } |
305 | 316 |
306 void BookmarkCodec::FinalizeChecksum() { | 317 void BookmarkCodec::FinalizeChecksum() { |
307 MD5Digest digest; | 318 MD5Digest digest; |
308 MD5Final(&digest, &md5_context_); | 319 MD5Final(&digest, &md5_context_); |
309 computed_checksum_ = MD5DigestToBase16(digest); | 320 computed_checksum_ = MD5DigestToBase16(digest); |
310 } | 321 } |
OLD | NEW |