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

Side by Side Diff: components/bookmarks/browser/bookmark_storage.h

Issue 305973004: BookmarkClient can add extra nodes to BookmarkModel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: renamed methods Created 6 years, 6 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 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 #ifndef COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_STORAGE_H_ 5 #ifndef COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_STORAGE_H_
6 #define COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_STORAGE_H_ 6 #define COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_STORAGE_H_
7 7
8 #include "base/callback_forward.h"
8 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
9 #include "base/files/important_file_writer.h" 10 #include "base/files/important_file_writer.h"
10 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/memory/scoped_vector.h"
12 #include "components/bookmarks/browser/bookmark_node.h" 14 #include "components/bookmarks/browser/bookmark_node.h"
13 15
14 class BookmarkModel; 16 class BookmarkModel;
15 17
16 namespace base { 18 namespace base {
17 class SequencedTaskRunner; 19 class SequencedTaskRunner;
18 } 20 }
19 21
20 namespace bookmarks { 22 namespace bookmarks {
21 23
22 class BookmarkIndex; 24 class BookmarkIndex;
23 25
26 // A list of BookmarkPermanentNodes that owns them.
27 typedef ScopedVector<BookmarkPermanentNode> BookmarkPermanentNodeList;
28
29 // A callback that generates a BookmarkPermanentNodeList, given a max ID to
30 // use. The max ID argument will be updated after any new nodes have been
31 // created and assigned IDs.
32 typedef base::Callback<BookmarkPermanentNodeList(int64*)> LoadExtraCallback;
33
24 // BookmarkLoadDetails is used by BookmarkStorage when loading bookmarks. 34 // BookmarkLoadDetails is used by BookmarkStorage when loading bookmarks.
25 // BookmarkModel creates a BookmarkLoadDetails and passes it (including 35 // BookmarkModel creates a BookmarkLoadDetails and passes it (including
26 // ownership) to BookmarkStorage. BookmarkStorage loads the bookmarks (and 36 // ownership) to BookmarkStorage. BookmarkStorage loads the bookmarks (and
27 // index) in the background thread, then calls back to the BookmarkModel (on 37 // index) in the background thread, then calls back to the BookmarkModel (on
28 // the main thread) when loading is done, passing ownership back to the 38 // the main thread) when loading is done, passing ownership back to the
29 // BookmarkModel. While loading BookmarkModel does not maintain references to 39 // BookmarkModel. While loading BookmarkModel does not maintain references to
30 // the contents of the BookmarkLoadDetails, this ensures we don't have any 40 // the contents of the BookmarkLoadDetails, this ensures we don't have any
31 // threading problems. 41 // threading problems.
32 class BookmarkLoadDetails { 42 class BookmarkLoadDetails {
33 public: 43 public:
34 BookmarkLoadDetails(BookmarkPermanentNode* bb_node, 44 BookmarkLoadDetails(BookmarkPermanentNode* bb_node,
35 BookmarkPermanentNode* other_folder_node, 45 BookmarkPermanentNode* other_folder_node,
36 BookmarkPermanentNode* mobile_folder_node, 46 BookmarkPermanentNode* mobile_folder_node,
47 const LoadExtraCallback& load_extra_callback,
37 BookmarkIndex* index, 48 BookmarkIndex* index,
38 int64 max_id); 49 int64 max_id);
39 ~BookmarkLoadDetails(); 50 ~BookmarkLoadDetails();
40 51
52 void LoadExtraNodes();
53
41 BookmarkPermanentNode* bb_node() { return bb_node_.get(); } 54 BookmarkPermanentNode* bb_node() { return bb_node_.get(); }
42 BookmarkPermanentNode* release_bb_node() { return bb_node_.release(); } 55 BookmarkPermanentNode* release_bb_node() { return bb_node_.release(); }
43 BookmarkPermanentNode* mobile_folder_node() { 56 BookmarkPermanentNode* mobile_folder_node() {
44 return mobile_folder_node_.get(); 57 return mobile_folder_node_.get();
45 } 58 }
46 BookmarkPermanentNode* release_mobile_folder_node() { 59 BookmarkPermanentNode* release_mobile_folder_node() {
47 return mobile_folder_node_.release(); 60 return mobile_folder_node_.release();
48 } 61 }
49 BookmarkPermanentNode* other_folder_node() { 62 BookmarkPermanentNode* other_folder_node() {
50 return other_folder_node_.get(); 63 return other_folder_node_.get();
51 } 64 }
52 BookmarkPermanentNode* release_other_folder_node() { 65 BookmarkPermanentNode* release_other_folder_node() {
53 return other_folder_node_.release(); 66 return other_folder_node_.release();
54 } 67 }
68 const BookmarkPermanentNodeList& extra_nodes() {
69 return extra_nodes_;
70 }
71 void release_extra_nodes(std::vector<BookmarkPermanentNode*>* extra_nodes) {
72 extra_nodes_.release(extra_nodes);
73 }
55 BookmarkIndex* index() { return index_.get(); } 74 BookmarkIndex* index() { return index_.get(); }
56 BookmarkIndex* release_index() { return index_.release(); } 75 BookmarkIndex* release_index() { return index_.release(); }
57 76
58 const BookmarkNode::MetaInfoMap& model_meta_info_map() const { 77 const BookmarkNode::MetaInfoMap& model_meta_info_map() const {
59 return model_meta_info_map_; 78 return model_meta_info_map_;
60 } 79 }
61 void set_model_meta_info_map(const BookmarkNode::MetaInfoMap& meta_info_map) { 80 void set_model_meta_info_map(const BookmarkNode::MetaInfoMap& meta_info_map) {
62 model_meta_info_map_ = meta_info_map; 81 model_meta_info_map_ = meta_info_map;
63 } 82 }
64 83
(...skipping 24 matching lines...) Expand all
89 // checksum of the file doesn't match, some IDs are missing or not 108 // checksum of the file doesn't match, some IDs are missing or not
90 // unique. Basically, if the user modified the bookmarks directly we'll 109 // unique. Basically, if the user modified the bookmarks directly we'll
91 // reassign the ids to ensure they are unique. 110 // reassign the ids to ensure they are unique.
92 void set_ids_reassigned(bool value) { ids_reassigned_ = value; } 111 void set_ids_reassigned(bool value) { ids_reassigned_ = value; }
93 bool ids_reassigned() const { return ids_reassigned_; } 112 bool ids_reassigned() const { return ids_reassigned_; }
94 113
95 private: 114 private:
96 scoped_ptr<BookmarkPermanentNode> bb_node_; 115 scoped_ptr<BookmarkPermanentNode> bb_node_;
97 scoped_ptr<BookmarkPermanentNode> other_folder_node_; 116 scoped_ptr<BookmarkPermanentNode> other_folder_node_;
98 scoped_ptr<BookmarkPermanentNode> mobile_folder_node_; 117 scoped_ptr<BookmarkPermanentNode> mobile_folder_node_;
118 LoadExtraCallback load_extra_callback_;
119 BookmarkPermanentNodeList extra_nodes_;
99 scoped_ptr<BookmarkIndex> index_; 120 scoped_ptr<BookmarkIndex> index_;
100 BookmarkNode::MetaInfoMap model_meta_info_map_; 121 BookmarkNode::MetaInfoMap model_meta_info_map_;
101 int64 model_sync_transaction_version_; 122 int64 model_sync_transaction_version_;
102 int64 max_id_; 123 int64 max_id_;
103 std::string computed_checksum_; 124 std::string computed_checksum_;
104 std::string stored_checksum_; 125 std::string stored_checksum_;
105 bool ids_reassigned_; 126 bool ids_reassigned_;
106 127
107 DISALLOW_COPY_AND_ASSIGN(BookmarkLoadDetails); 128 DISALLOW_COPY_AND_ASSIGN(BookmarkLoadDetails);
108 }; 129 };
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 183
163 // Sequenced task runner where file I/O operations will be performed at. 184 // Sequenced task runner where file I/O operations will be performed at.
164 scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner_; 185 scoped_refptr<base::SequencedTaskRunner> sequenced_task_runner_;
165 186
166 DISALLOW_COPY_AND_ASSIGN(BookmarkStorage); 187 DISALLOW_COPY_AND_ASSIGN(BookmarkStorage);
167 }; 188 };
168 189
169 } // namespace bookmarks 190 } // namespace bookmarks
170 191
171 #endif // COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_STORAGE_H_ 192 #endif // COMPONENTS_BOOKMARKS_BROWSER_BOOKMARK_STORAGE_H_
OLDNEW
« no previous file with comments | « components/bookmarks/browser/bookmark_model.cc ('k') | components/bookmarks/browser/bookmark_storage.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698