summaryrefslogtreecommitdiffstats
path: root/chrome/browser/bookmarks/bookmark_model.cc
diff options
context:
space:
mode:
authormunjal@chromium.org <munjal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-28 20:23:33 +0000
committermunjal@chromium.org <munjal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-28 20:23:33 +0000
commitfc7c36a2c51aeba1da2495ffa5f6944179b93974 (patch)
tree909b0fa25ab0c23c1157af27515927e3a426fba3 /chrome/browser/bookmarks/bookmark_model.cc
parent1e7377df1449c4e543a50c8a8a1425599c8425f7 (diff)
downloadchromium_src-fc7c36a2c51aeba1da2495ffa5f6944179b93974.zip
chromium_src-fc7c36a2c51aeba1da2495ffa5f6944179b93974.tar.gz
chromium_src-fc7c36a2c51aeba1da2495ffa5f6944179b93974.tar.bz2
We need to save bookmarks file when the persist_ids settings changes
or when the file is detected to be changed externally. Review URL: http://codereview.chromium.org/114055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17105 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/bookmarks/bookmark_model.cc')
-rw-r--r--chrome/browser/bookmarks/bookmark_model.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/chrome/browser/bookmarks/bookmark_model.cc b/chrome/browser/bookmarks/bookmark_model.cc
index 5fc0af8..1f75e0a 100644
--- a/chrome/browser/bookmarks/bookmark_model.cc
+++ b/chrome/browser/bookmarks/bookmark_model.cc
@@ -89,6 +89,7 @@ BookmarkModel::BookmarkModel(Profile* profile)
: profile_(profile),
loaded_(false),
persist_ids_(false),
+ file_changed_(false),
root_(GURL()),
bookmark_bar_node_(NULL),
other_node_(NULL),
@@ -392,6 +393,9 @@ void BookmarkModel::SetPersistIDs(bool value) {
PrefService* pref_service = profile_->GetPrefs();
pref_service->SetBoolean(kPrefPersistIDs, persist_ids_);
}
+ // Need to save the bookmark data if the value of persist IDs changes.
+ if (store_.get())
+ store_->ScheduleSave();
}
bool BookmarkModel::IsBookmarkedNoLock(const GURL& url) {
@@ -449,6 +453,8 @@ void BookmarkModel::DoneLoading(
bookmark_bar_node_ = details->bb_node();
other_node_ = details->other_folder_node();
next_node_id_ = details->max_id();
+ if (details->computed_checksum() != details->stored_checksum())
+ SetFileChanged();
index_.reset(details->index());
details->release();
@@ -700,6 +706,16 @@ int BookmarkModel::generate_next_node_id() {
return next_node_id_++;
}
+void BookmarkModel::SetFileChanged() {
+ file_changed_ = true;
+ // If bookmarks file changed externally, the IDs may have changed externally.
+ // in that case, the decoder may have reassigned IDs to make them unique.
+ // So when the file has changed externally and IDs are persisted, we should
+ // save the bookmarks file to persist new IDs.
+ if (persist_ids_ && store_.get())
+ store_->ScheduleSave();
+}
+
BookmarkStorage::LoadDetails* BookmarkModel::CreateLoadDetails() {
BookmarkNode* bb_node = CreateBookmarkNode();
BookmarkNode* other_folder_node = CreateOtherBookmarksNode();