| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/bookmarks/browser/bookmark_storage.h" | 5 #include "components/bookmarks/browser/bookmark_storage.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
| 10 #include "base/json/json_file_value_serializer.h" | 10 #include "base/json/json_file_value_serializer.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 | 49 |
| 50 void LoadCallback(const base::FilePath& path, | 50 void LoadCallback(const base::FilePath& path, |
| 51 const base::WeakPtr<BookmarkStorage>& storage, | 51 const base::WeakPtr<BookmarkStorage>& storage, |
| 52 scoped_ptr<BookmarkLoadDetails> details, | 52 scoped_ptr<BookmarkLoadDetails> details, |
| 53 base::SequencedTaskRunner* task_runner) { | 53 base::SequencedTaskRunner* task_runner) { |
| 54 startup_metric_utils::ScopedSlowStartupUMA | 54 startup_metric_utils::ScopedSlowStartupUMA |
| 55 scoped_timer("Startup.SlowStartupBookmarksLoad"); | 55 scoped_timer("Startup.SlowStartupBookmarksLoad"); |
| 56 bool load_index = false; | 56 bool load_index = false; |
| 57 bool bookmark_file_exists = base::PathExists(path); | 57 bool bookmark_file_exists = base::PathExists(path); |
| 58 if (bookmark_file_exists) { | 58 if (bookmark_file_exists) { |
| 59 JSONFileValueSerializer serializer(path); | 59 JSONFileValueDeserializer deserializer(path); |
| 60 scoped_ptr<base::Value> root(serializer.Deserialize(NULL, NULL)); | 60 scoped_ptr<base::Value> root(deserializer.Deserialize(NULL, NULL)); |
| 61 | 61 |
| 62 if (root.get()) { | 62 if (root.get()) { |
| 63 // Building the index can take a while, so we do it on the background | 63 // Building the index can take a while, so we do it on the background |
| 64 // thread. | 64 // thread. |
| 65 int64 max_node_id = 0; | 65 int64 max_node_id = 0; |
| 66 BookmarkCodec codec; | 66 BookmarkCodec codec; |
| 67 TimeTicks start_time = TimeTicks::Now(); | 67 TimeTicks start_time = TimeTicks::Now(); |
| 68 codec.Decode(details->bb_node(), details->other_folder_node(), | 68 codec.Decode(details->bb_node(), details->other_folder_node(), |
| 69 details->mobile_folder_node(), &max_node_id, *root.get()); | 69 details->mobile_folder_node(), &max_node_id, *root.get()); |
| 70 details->set_max_id(std::max(max_node_id, details->max_id())); | 70 details->set_max_id(std::max(max_node_id, details->max_id())); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 } | 206 } |
| 207 | 207 |
| 208 std::string data; | 208 std::string data; |
| 209 if (!SerializeData(&data)) | 209 if (!SerializeData(&data)) |
| 210 return false; | 210 return false; |
| 211 writer_.WriteNow(data); | 211 writer_.WriteNow(data); |
| 212 return true; | 212 return true; |
| 213 } | 213 } |
| 214 | 214 |
| 215 } // namespace bookmarks | 215 } // namespace bookmarks |
| OLD | NEW |