| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_SYNC_BOOKMARKS_BOOKMARK_CHANGE_PROCESSOR_H_ | 5 #ifndef COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_CHANGE_PROCESSOR_H_ |
| 6 #define COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_CHANGE_PROCESSOR_H_ | 6 #define COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_CHANGE_PROCESSOR_H_ |
| 7 | 7 |
| 8 #include <stdint.h> |
| 9 |
| 8 #include <vector> | 10 #include <vector> |
| 9 | 11 |
| 10 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
| 13 #include "base/macros.h" |
| 11 #include "base/threading/thread_checker.h" | 14 #include "base/threading/thread_checker.h" |
| 12 #include "components/bookmarks/browser/bookmark_model_observer.h" | 15 #include "components/bookmarks/browser/bookmark_model_observer.h" |
| 13 #include "components/bookmarks/browser/bookmark_node.h" | 16 #include "components/bookmarks/browser/bookmark_node.h" |
| 14 #include "components/sync_bookmarks/bookmark_model_associator.h" | 17 #include "components/sync_bookmarks/bookmark_model_associator.h" |
| 15 #include "components/sync_driver/change_processor.h" | 18 #include "components/sync_driver/change_processor.h" |
| 16 #include "components/sync_driver/data_type_error_handler.h" | 19 #include "components/sync_driver/data_type_error_handler.h" |
| 17 | 20 |
| 18 class Profile; | 21 class Profile; |
| 19 | 22 |
| 20 namespace base { | 23 namespace base { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 void BookmarkNodeFaviconChanged(bookmarks::BookmarkModel* model, | 78 void BookmarkNodeFaviconChanged(bookmarks::BookmarkModel* model, |
| 76 const bookmarks::BookmarkNode* node) override; | 79 const bookmarks::BookmarkNode* node) override; |
| 77 void BookmarkNodeChildrenReordered( | 80 void BookmarkNodeChildrenReordered( |
| 78 bookmarks::BookmarkModel* model, | 81 bookmarks::BookmarkModel* model, |
| 79 const bookmarks::BookmarkNode* node) override; | 82 const bookmarks::BookmarkNode* node) override; |
| 80 | 83 |
| 81 // The change processor implementation, responsible for applying changes from | 84 // The change processor implementation, responsible for applying changes from |
| 82 // the sync model to the bookmarks model. | 85 // the sync model to the bookmarks model. |
| 83 void ApplyChangesFromSyncModel( | 86 void ApplyChangesFromSyncModel( |
| 84 const syncer::BaseTransaction* trans, | 87 const syncer::BaseTransaction* trans, |
| 85 int64 model_version, | 88 int64_t model_version, |
| 86 const syncer::ImmutableChangeRecordList& changes) override; | 89 const syncer::ImmutableChangeRecordList& changes) override; |
| 87 | 90 |
| 88 // The following methods are static and hence may be invoked at any time, and | 91 // The following methods are static and hence may be invoked at any time, and |
| 89 // do not depend on having a running ChangeProcessor. | 92 // do not depend on having a running ChangeProcessor. |
| 90 // TODO(stanisc): considier refactoring these methods out of this class. | 93 // TODO(stanisc): considier refactoring these methods out of this class. |
| 91 | 94 |
| 92 // Updates the title, URL, creation time and favicon of the bookmark |node| | 95 // Updates the title, URL, creation time and favicon of the bookmark |node| |
| 93 // with data taken from the |sync_node| sync node. | 96 // with data taken from the |sync_node| sync node. |
| 94 static void UpdateBookmarkWithSyncData(const syncer::BaseNode& sync_node, | 97 static void UpdateBookmarkWithSyncData(const syncer::BaseNode& sync_node, |
| 95 bookmarks::BookmarkModel* model, | 98 bookmarks::BookmarkModel* model, |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 // Sets the favicon of the given sync node from the given bookmark node. | 141 // Sets the favicon of the given sync node from the given bookmark node. |
| 139 static void SetSyncNodeFavicon(const bookmarks::BookmarkNode* bookmark_node, | 142 static void SetSyncNodeFavicon(const bookmarks::BookmarkNode* bookmark_node, |
| 140 bookmarks::BookmarkModel* model, | 143 bookmarks::BookmarkModel* model, |
| 141 syncer::WriteNode* sync_node); | 144 syncer::WriteNode* sync_node); |
| 142 | 145 |
| 143 // Treat the |index|th child of |parent| as a newly added node, and create a | 146 // Treat the |index|th child of |parent| as a newly added node, and create a |
| 144 // corresponding node in the sync domain using |trans|. All properties | 147 // corresponding node in the sync domain using |trans|. All properties |
| 145 // will be transferred to the new node. A node corresponding to |parent| | 148 // will be transferred to the new node. A node corresponding to |parent| |
| 146 // must already exist and be associated for this call to succeed. Returns | 149 // must already exist and be associated for this call to succeed. Returns |
| 147 // the ID of the just-created node, or if creation fails, kInvalidID. | 150 // the ID of the just-created node, or if creation fails, kInvalidID. |
| 148 static int64 CreateSyncNode(const bookmarks::BookmarkNode* parent, | 151 static int64_t CreateSyncNode( |
| 149 bookmarks::BookmarkModel* model, | 152 const bookmarks::BookmarkNode* parent, |
| 150 int index, | 153 bookmarks::BookmarkModel* model, |
| 151 syncer::WriteTransaction* trans, | 154 int index, |
| 152 BookmarkModelAssociator* associator, | 155 syncer::WriteTransaction* trans, |
| 153 sync_driver::DataTypeErrorHandler* error_handler); | 156 BookmarkModelAssociator* associator, |
| 157 sync_driver::DataTypeErrorHandler* error_handler); |
| 154 | 158 |
| 155 // Update |bookmark_node|'s sync node. | 159 // Update |bookmark_node|'s sync node. |
| 156 static int64 UpdateSyncNode(const bookmarks::BookmarkNode* bookmark_node, | 160 static int64_t UpdateSyncNode( |
| 157 bookmarks::BookmarkModel* model, | 161 const bookmarks::BookmarkNode* bookmark_node, |
| 158 syncer::WriteTransaction* trans, | 162 bookmarks::BookmarkModel* model, |
| 159 BookmarkModelAssociator* associator, | 163 syncer::WriteTransaction* trans, |
| 160 sync_driver::DataTypeErrorHandler* error_handler); | 164 BookmarkModelAssociator* associator, |
| 165 sync_driver::DataTypeErrorHandler* error_handler); |
| 161 | 166 |
| 162 // Tombstone |topmost_sync_node| node and all its children in the sync domain | 167 // Tombstone |topmost_sync_node| node and all its children in the sync domain |
| 163 // using transaction |trans|. Returns the number of removed nodes. | 168 // using transaction |trans|. Returns the number of removed nodes. |
| 164 static int RemoveSyncNodeHierarchy(syncer::WriteTransaction* trans, | 169 static int RemoveSyncNodeHierarchy(syncer::WriteTransaction* trans, |
| 165 syncer::WriteNode* topmost_sync_node, | 170 syncer::WriteNode* topmost_sync_node, |
| 166 BookmarkModelAssociator* associator); | 171 BookmarkModelAssociator* associator); |
| 167 | 172 |
| 168 // Update transaction version of |model| and |nodes| to |new_version| if | 173 // Update transaction version of |model| and |nodes| to |new_version| if |
| 169 // it's valid. | 174 // it's valid. |
| 170 static void UpdateTransactionVersion( | 175 static void UpdateTransactionVersion( |
| 171 int64 new_version, | 176 int64_t new_version, |
| 172 bookmarks::BookmarkModel* model, | 177 bookmarks::BookmarkModel* model, |
| 173 const std::vector<const bookmarks::BookmarkNode*>& nodes); | 178 const std::vector<const bookmarks::BookmarkNode*>& nodes); |
| 174 | 179 |
| 175 protected: | 180 protected: |
| 176 void StartImpl() override; | 181 void StartImpl() override; |
| 177 | 182 |
| 178 private: | 183 private: |
| 179 enum MoveOrCreate { | 184 enum MoveOrCreate { |
| 180 MOVE, | 185 MOVE, |
| 181 CREATE, | 186 CREATE, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 | 223 |
| 219 // Remove all sync nodes, except the permanent nodes. | 224 // Remove all sync nodes, except the permanent nodes. |
| 220 void RemoveAllSyncNodes(); | 225 void RemoveAllSyncNodes(); |
| 221 | 226 |
| 222 // Remove all the sync nodes associated with |node| and its children. | 227 // Remove all the sync nodes associated with |node| and its children. |
| 223 void RemoveSyncNodeHierarchy(const bookmarks::BookmarkNode* node); | 228 void RemoveSyncNodeHierarchy(const bookmarks::BookmarkNode* node); |
| 224 | 229 |
| 225 // Remove all children of |sync_node|. Returns the number of removed | 230 // Remove all children of |sync_node|. Returns the number of removed |
| 226 // children. | 231 // children. |
| 227 static int RemoveAllChildNodes(syncer::WriteTransaction* trans, | 232 static int RemoveAllChildNodes(syncer::WriteTransaction* trans, |
| 228 int64 sync_id, | 233 int64_t sync_id, |
| 229 BookmarkModelAssociator* associator); | 234 BookmarkModelAssociator* associator); |
| 230 | 235 |
| 231 // Remove |sync_node|. It should not have any children. | 236 // Remove |sync_node|. It should not have any children. |
| 232 static void RemoveOneSyncNode(syncer::WriteNode* sync_node, | 237 static void RemoveOneSyncNode(syncer::WriteNode* sync_node, |
| 233 BookmarkModelAssociator* associator); | 238 BookmarkModelAssociator* associator); |
| 234 | 239 |
| 235 // Creates or updates a sync node associated with |node|. | 240 // Creates or updates a sync node associated with |node|. |
| 236 void CreateOrUpdateSyncNode(const bookmarks::BookmarkNode* node); | 241 void CreateOrUpdateSyncNode(const bookmarks::BookmarkNode* node); |
| 237 | 242 |
| 238 // Returns false if |node| should not be synced. | 243 // Returns false if |node| should not be synced. |
| 239 bool CanSyncNode(const bookmarks::BookmarkNode* node); | 244 bool CanSyncNode(const bookmarks::BookmarkNode* node); |
| 240 | 245 |
| 241 base::ThreadChecker thread_checker_; | 246 base::ThreadChecker thread_checker_; |
| 242 | 247 |
| 243 // The bookmark model we are processing changes from. Non-NULL when | 248 // The bookmark model we are processing changes from. Non-NULL when |
| 244 // |running_| is true. | 249 // |running_| is true. |
| 245 bookmarks::BookmarkModel* bookmark_model_; | 250 bookmarks::BookmarkModel* bookmark_model_; |
| 246 | 251 |
| 247 sync_driver::SyncClient* sync_client_; | 252 sync_driver::SyncClient* sync_client_; |
| 248 | 253 |
| 249 // The two models should be associated according to this ModelAssociator. | 254 // The two models should be associated according to this ModelAssociator. |
| 250 BookmarkModelAssociator* model_associator_; | 255 BookmarkModelAssociator* model_associator_; |
| 251 | 256 |
| 252 DISALLOW_COPY_AND_ASSIGN(BookmarkChangeProcessor); | 257 DISALLOW_COPY_AND_ASSIGN(BookmarkChangeProcessor); |
| 253 }; | 258 }; |
| 254 | 259 |
| 255 } // namespace browser_sync | 260 } // namespace browser_sync |
| 256 | 261 |
| 257 #endif // COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_CHANGE_PROCESSOR_H_ | 262 #endif // COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_CHANGE_PROCESSOR_H_ |
| OLD | NEW |