| Index: chrome/browser/sync/glue/model_associator.h
|
| ===================================================================
|
| --- chrome/browser/sync/glue/model_associator.h (revision 22320)
|
| +++ chrome/browser/sync/glue/model_associator.h (working copy)
|
| @@ -1,141 +0,0 @@
|
| -// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifdef CHROME_PERSONALIZATION
|
| -
|
| -#ifndef CHROME_BROWSER_SYNC_GLUE_MODEL_ASSOCATOR_H_
|
| -#define CHROME_BROWSER_SYNC_GLUE_MODEL_ASSOCATOR_H_
|
| -
|
| -#include <map>
|
| -#include <set>
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/ref_counted.h"
|
| -#include "base/scoped_ptr.h"
|
| -#include "base/string16.h"
|
| -
|
| -class BookmarkNode;
|
| -
|
| -namespace sync_api {
|
| -class BaseNode;
|
| -class BaseTransaction;
|
| -class ReadNode;
|
| -};
|
| -
|
| -class ProfileSyncService;
|
| -
|
| -namespace browser_sync {
|
| -
|
| -// Contains all model assocation related logic:
|
| -// * Algorithm to associate bookmark model and sync model.
|
| -// * Methods to get a bookmark node for a given sync node and vice versa.
|
| -// * Persisting model assocations and loading them back.
|
| -class ModelAssociator
|
| - : public base::RefCountedThreadSafe<ModelAssociator> {
|
| - public:
|
| - explicit ModelAssociator(ProfileSyncService* sync_service);
|
| - virtual ~ModelAssociator() { }
|
| -
|
| - // Clears all assocations .
|
| - void ClearAll();
|
| -
|
| - // Returns sync id for the given bookmark node id.
|
| - // Returns sync_api::kInvalidId if the sync node is not found for the given
|
| - // bookmark node id.
|
| - int64 GetSyncIdFromBookmarkId(int64 node_id) const;
|
| -
|
| - // Stores bookmark node id for the given sync id in bookmark_id. Returns true
|
| - // if the bookmark id was successfully found; false otherwise.
|
| - bool GetBookmarkIdFromSyncId(int64 sync_id, int64* bookmark_id) const;
|
| -
|
| - // Initializes the given sync node from the given bookmark node id.
|
| - // Returns false if no sync node was found for the given bookmark node id or
|
| - // if the initialization of sync node fails.
|
| - bool InitSyncNodeFromBookmarkId(int64 node_id, sync_api::BaseNode* sync_node);
|
| -
|
| - // Returns the bookmark node for the given sync id.
|
| - // Returns NULL if no bookmark node is found for the given sync id.
|
| - const BookmarkNode* GetBookmarkNodeFromSyncId(int64 sync_id);
|
| -
|
| - // Associates the given bookmark node id with the given sync id.
|
| - void AssociateIds(int64 node_id, int64 sync_id);
|
| - // Disassociate the ids that correspond to the given sync id.
|
| - void DisassociateIds(int64 sync_id);
|
| -
|
| - // Returns whether the bookmark model has user created nodes or not. That is,
|
| - // whether there are nodes in the bookmark model except the bookmark bar and
|
| - // other bookmarks.
|
| - bool BookmarkModelHasUserCreatedNodes() const;
|
| -
|
| - // Returns whether the sync model has nodes other than the permanent tagged
|
| - // nodes.
|
| - bool SyncModelHasUserCreatedNodes();
|
| -
|
| - // AssociateModels iterates through both the sync and the browser
|
| - // bookmark model, looking for matched pairs of items. For any pairs it
|
| - // finds, it will call AssociateSyncID. For any unmatched items,
|
| - // MergeAndAssociateModels will try to repair the match, e.g. by adding a new
|
| - // node. After successful completion, the models should be identical and
|
| - // corresponding. Returns true on success. On failure of this step, we
|
| - // should abort the sync operation and report an error to the user.
|
| - bool AssociateModels();
|
| -
|
| - protected:
|
| - // Stores the id of the node with the given tag in |sync_id|.
|
| - // Returns of that node was found successfully.
|
| - // Tests override this.
|
| - virtual bool GetSyncIdForTaggedNode(const string16& tag, int64* sync_id);
|
| -
|
| - // Returns sync service instance.
|
| - ProfileSyncService* sync_service() { return sync_service_; }
|
| -
|
| - private:
|
| - typedef std::map<int64, int64> BookmarkIdToSyncIdMap;
|
| - typedef std::map<int64, int64> SyncIdToBookmarkIdMap;
|
| - typedef std::set<int64> DirtyAssocationsSyncIds;
|
| -
|
| - // Posts a task to persist dirty assocations.
|
| - void PostPersistAssociationsTask();
|
| - // Persists all dirty assocations.
|
| - void PersistAssociations();
|
| -
|
| - // Loads the persisted assocations into in-memory maps.
|
| - // If the persisted associations are out-of-date due to some reason, returns
|
| - // false; otehrwise returns true.
|
| - bool LoadAssociations();
|
| -
|
| - // Matches up the bookmark model and the sync model to build model
|
| - // assocations.
|
| - bool BuildAssocations();
|
| -
|
| - // Associate a top-level node of the bookmark model with a permanent node in
|
| - // the sync domain. Such permanent nodes are identified by a tag that is
|
| - // well known to the server and the client, and is unique within a particular
|
| - // user's share. For example, "other_bookmarks" is the tag for the Other
|
| - // Bookmarks folder. The sync nodes are server-created.
|
| - bool AssociateTaggedPermanentNode(const BookmarkNode* permanent_node,
|
| - const string16& tag);
|
| -
|
| - // Compare the properties of a pair of nodes from either domain.
|
| - bool NodesMatch(const BookmarkNode* bookmark,
|
| - const sync_api::BaseNode* sync_node) const;
|
| -
|
| - ProfileSyncService* sync_service_;
|
| - BookmarkIdToSyncIdMap id_map_;
|
| - SyncIdToBookmarkIdMap id_map_inverse_;
|
| - // Stores sync ids for dirty associations.
|
| - DirtyAssocationsSyncIds dirty_assocations_sync_ids_;
|
| -
|
| - // Indicates whether there is already a pending task to persist dirty model
|
| - // associations.
|
| - bool task_pending_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ModelAssociator);
|
| -};
|
| -
|
| -} // namespace browser_sync
|
| -
|
| -#endif // CHROME_BROWSER_SYNC_GLUE_MODEL_ASSOCATOR_H_
|
| -#endif // CHROME_PERSONALIZATION
|
|
|