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

Unified Diff: components/bookmarks/browser/bookmark_storage.cc

Issue 305973004: BookmarkClient can add extra nodes to BookmarkModel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: components/bookmarks/browser/bookmark_storage.cc
diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookmarks/browser/bookmark_storage.cc
index 38d6579d8733df2671344a8b2b97d69046814bf6..5f095a97c27d4bfbd2cbc51d1fc10e6cbf386162 100644
--- a/components/bookmarks/browser/bookmark_storage.cc
+++ b/components/bookmarks/browser/bookmark_storage.cc
@@ -12,9 +12,11 @@
#include "base/metrics/histogram.h"
#include "base/sequenced_task_runner.h"
#include "base/time/time.h"
+#include "base/values.h"
#include "components/bookmarks/browser/bookmark_codec.h"
#include "components/bookmarks/browser/bookmark_index.h"
#include "components/bookmarks/browser/bookmark_model.h"
+#include "components/bookmarks/browser/managed_bookmarks_tracker.h"
#include "components/bookmarks/common/bookmark_constants.h"
#include "components/startup_metric_utils/startup_metric_utils.h"
@@ -50,9 +52,11 @@ void AddBookmarksToIndex(BookmarkLoadDetails* details,
void LoadCallback(const base::FilePath& path,
BookmarkStorage* storage,
BookmarkLoadDetails* details,
+ scoped_ptr<base::ListValue> initial_managed_bookmarks,
base::SequencedTaskRunner* task_runner) {
startup_metric_utils::ScopedSlowStartupUMA
scoped_timer("Startup.SlowStartupBookmarksLoad");
+ bool load_index = false;
bool bookmark_file_exists = base::PathExists(path);
if (bookmark_file_exists) {
JSONFileValueSerializer serializer(path);
@@ -76,15 +80,31 @@ void LoadCallback(const base::FilePath& path,
UMA_HISTOGRAM_TIMES("Bookmarks.DecodeTime",
TimeTicks::Now() - start_time);
- start_time = TimeTicks::Now();
- AddBookmarksToIndex(details, details->bb_node());
- AddBookmarksToIndex(details, details->other_folder_node());
- AddBookmarksToIndex(details, details->mobile_folder_node());
- UMA_HISTOGRAM_TIMES("Bookmarks.CreateBookmarkIndexTime",
- TimeTicks::Now() - start_time);
+ load_index = true;
}
}
+ // Load the managed bookmarks.
+ if (!initial_managed_bookmarks->empty()) {
+ int64 max_node_id = ManagedBookmarksTracker::LoadInitial(
+ details->managed_node(),
+ initial_managed_bookmarks.get(),
+ details->max_id());
+ details->managed_node()->set_visible(!details->managed_node()->empty());
+ details->set_max_id(max_node_id);
+ load_index = true;
+ }
+
+ if (load_index) {
+ TimeTicks start_time = TimeTicks::Now();
+ AddBookmarksToIndex(details, details->bb_node());
+ AddBookmarksToIndex(details, details->other_folder_node());
+ AddBookmarksToIndex(details, details->mobile_folder_node());
+ AddBookmarksToIndex(details, details->managed_node());
+ UMA_HISTOGRAM_TIMES("Bookmarks.CreateBookmarkIndexTime",
+ TimeTicks::Now() - start_time);
+ }
+
task_runner->PostTask(FROM_HERE,
base::Bind(&BookmarkStorage::OnLoadFinished, storage));
}
@@ -97,11 +117,13 @@ BookmarkLoadDetails::BookmarkLoadDetails(
BookmarkPermanentNode* bb_node,
BookmarkPermanentNode* other_folder_node,
BookmarkPermanentNode* mobile_folder_node,
+ BookmarkPermanentNode* managed_node,
BookmarkIndex* index,
int64 max_id)
: bb_node_(bb_node),
other_folder_node_(other_folder_node),
mobile_folder_node_(mobile_folder_node),
+ managed_node_(managed_node),
index_(index),
model_sync_transaction_version_(
BookmarkNode::kInvalidSyncTransactionVersion),
@@ -134,16 +156,19 @@ BookmarkStorage::~BookmarkStorage() {
void BookmarkStorage::LoadBookmarks(
scoped_ptr<BookmarkLoadDetails> details,
+ scoped_ptr<base::ListValue> initial_managed_bookmarks,
const scoped_refptr<base::SequencedTaskRunner>& task_runner) {
DCHECK(!details_.get());
DCHECK(details);
details_ = details.Pass();
- sequenced_task_runner_->PostTask(FROM_HERE,
- base::Bind(&LoadCallback,
- writer_.path(),
- make_scoped_refptr(this),
- details_.get(),
- task_runner));
+ sequenced_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&LoadCallback,
+ writer_.path(),
+ make_scoped_refptr(this),
+ details_.get(),
+ base::Passed(&initial_managed_bookmarks),
+ task_runner));
}
void BookmarkStorage::ScheduleSave() {

Powered by Google App Engine
This is Rietveld 408576698