Index: chrome/browser/sync/glue/session_model_associator.h |
=================================================================== |
--- chrome/browser/sync/glue/session_model_associator.h (revision 56425) |
+++ chrome/browser/sync/glue/session_model_associator.h (working copy) |
@@ -1,201 +0,0 @@ |
-// Copyright (c) 2010 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. |
- |
-#ifndef CHROME_BROWSER_SYNC_GLUE_SESSION_MODEL_ASSOCIATOR_H_ |
-#define CHROME_BROWSER_SYNC_GLUE_SESSION_MODEL_ASSOCIATOR_H_ |
-#pragma once |
- |
-#include <map> |
-#include <string> |
-#include <vector> |
-#include "base/basictypes.h" |
-#include "base/gtest_prod_util.h" |
-#include "base/observer_list.h" |
-#include "chrome/browser/sessions/session_service.h" |
-#include "chrome/browser/sessions/session_types.h" |
-#include "chrome/browser/sync/engine/syncapi.h" |
-#include "chrome/browser/sync/glue/model_associator.h" |
-#include "chrome/browser/sync/protocol/session_specifics.pb.h" |
-#include "chrome/browser/sync/syncable/model_type.h" |
-#include "chrome/common/notification_registrar.h" |
- |
-class Profile; |
-class ProfileSyncService; |
- |
-namespace sync_api { |
-class ReadNode; |
-class WriteNode; |
-class WriteTransaction; |
-} // namespace sync_api |
- |
-namespace sync_pb { |
-class SessionSpecifics; |
-} // namespace sync_pb |
- |
-namespace browser_sync { |
- |
-static const char kSessionsTag[] = "google_chrome_sessions"; |
-// Contains all logic for associating the Chrome sessions model and |
-// the sync sessions model. |
-class SessionModelAssociator : public PerDataTypeAssociatorInterface< |
- sync_pb::SessionSpecifics, std::string>, public NonThreadSafe { |
- public: |
- |
- // Does not take ownership of sync_service. |
- explicit SessionModelAssociator(ProfileSyncService* sync_service); |
- virtual ~SessionModelAssociator(); |
- |
- |
- // AssociatorInterface and PerDataTypeAssociator Interface implementation. |
- virtual void AbortAssociation() { |
- return; |
- // No implementation needed, this associator runs on the main |
- // thread. |
- } |
- |
- // Used to re-associate a foreign session. |
- virtual void Associate(const sync_pb::SessionSpecifics* specifics, |
- int64 sync_id); |
- |
- // Updates the sync model with the local client data. |
- virtual bool AssociateModels(); |
- |
- // The has_nodes out parameter is set to true if the chrome model |
- // has user-created nodes. The method may return false if an error |
- // occurred. |
- virtual bool ChromeModelHasUserCreatedNodes(bool* has_nodes); |
- |
- // Will update the new tab page with current foreign sessions excluding the |
- // one being disassociated. |
- virtual void Disassociate(int64 sync_id); |
- |
- // TODO(jerrica): Add functionality to stop rendering foreign sessions to the |
- // new tab page. |
- virtual bool DisassociateModels() { |
- // There is no local model stored with which to disassociate. |
- return true; |
- } |
- |
- // Returns the chrome session specifics for the given sync id. |
- // Returns NULL if no specifics are found for the given sync id. |
- virtual const sync_pb::SessionSpecifics* GetChromeNodeFromSyncId( |
- int64 sync_id); |
- |
- // Returns whether a node with the given permanent tag was found and update |
- // |sync_id| with that node's id. |
- virtual bool GetSyncIdForTaggedNode(const std::string* tag, int64* sync_id); |
- |
- // Returns sync id for the given chrome model id. |
- // Returns sync_api::kInvalidId if the sync node is not found for the given |
- // chrome id. |
- virtual int64 GetSyncIdFromChromeId(std::string id); |
- |
- |
- // Initializes the given sync node from the given chrome node id. |
- // Returns false if no sync node was found for the given chrome node id or |
- // if the initialization of sync node fails. |
- virtual bool InitSyncNodeFromChromeId(std::string id, |
- sync_api::BaseNode* sync_node) { |
- return false; |
- } |
- |
- // The has_nodes out parameter is set to true if the sync model has |
- // nodes other than the permanent tagged nodes. The method may |
- // return false if an error occurred. |
- virtual bool SyncModelHasUserCreatedNodes(bool* has_nodes); |
- |
- // Returns the tag used to uniquely identify this machine's session in the |
- // sync model. |
- std::string GetCurrentMachineTag(); |
- |
- // Pulls the current sync model from the server, and returns true upon update |
- // of the client model. |
- bool GetSessionDataFromSyncModel(std::vector<ForeignSession*>* windows); |
- |
- |
- // Helper method for converting session specifics to windows. |
- void AppendForeignSessionFromSpecifics( |
- const sync_pb::SessionSpecifics* specifics, |
- std::vector<ForeignSession*>* session); |
- |
- // Fills the given empty vector with foreign session windows to restore. |
- // If the vector is returned empty, then the session data could not be |
- // converted back into windows. |
- void AppendForeignSessionWithID(int64 id, |
- std::vector<ForeignSession*>* session, |
- sync_api::BaseTransaction* trans); |
- |
- // Returns the syncable model type. |
- static syncable::ModelType model_type() { return syncable::SESSIONS; } |
- |
- // Updates the server data based upon the current client session. If no node |
- // corresponding to this machine exists in the sync model, one is created. |
- void UpdateSyncModelDataFromClient(); |
- |
- private: |
- FRIEND_TEST_ALL_PREFIXES(ProfileSyncServiceSessionTest, WriteSessionToNode); |
- FRIEND_TEST_ALL_PREFIXES(ProfileSyncServiceSessionTest, |
- WriteForeignSessionToNode); |
- |
- // Returns the session service from |sync_service_|. |
- SessionService* GetSessionService(); |
- |
- // Initializes the tag corresponding to this machine. |
- void InitializeCurrentMachineTag(); |
- |
- // Populates the navigation portion of the session specifics. |
- void PopulateSessionSpecificsNavigation(const TabNavigation* navigation, |
- sync_pb::TabNavigation* tab_navigation); |
- |
- // Populates the tab portion of the session specifics. |
- void PopulateSessionSpecificsTab(const SessionTab* tab, |
- sync_pb::SessionTab* session_tab); |
- |
- // Populates the window portion of the session specifics. |
- void PopulateSessionSpecificsWindow(const SessionWindow* window, |
- sync_pb::SessionWindow* session_window); |
- |
- // Specifies whether the window has tabs to sync. The new tab page does not |
- // count. If no tabs to sync, it returns true, otherwise false; |
- bool WindowHasNoTabsToSync(const SessionWindow* window); |
- |
- // Internal method used in the callback to obtain the current session. |
- // We don't own |windows|. |
- void OnGotSession(int handle, std::vector<SessionWindow*>* windows); |
- |
- // Used to populate a session tab from the session specifics tab provided. |
- void AppendSessionTabNavigation(std::vector<TabNavigation>* navigations, |
- const sync_pb::TabNavigation* navigation); |
- |
- // Used to populate a session tab from the session specifics tab provided. |
- void PopulateSessionTabFromSpecifics(SessionTab* session_tab, |
- const sync_pb::SessionTab* tab, SessionID id); |
- |
- // Used to populate a session window from the session specifics window |
- // provided. |
- void PopulateSessionWindowFromSpecifics(SessionWindow* session_window, |
- const sync_pb::SessionWindow* window); |
- |
- // Updates the current session on the server. Creates a node for this machine |
- // if there is not one already. |
- bool UpdateSyncModel(sync_pb::SessionSpecifics* session_data, |
- sync_api::WriteTransaction* trans, |
- const sync_api::ReadNode* root); |
- |
- // Stores the machine tag. |
- std::string current_machine_tag_; |
- |
- // Weak pointer. |
- ProfileSyncService* sync_service_; |
- |
- // Consumer used to obtain the current session. |
- CancelableRequestConsumer consumer_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SessionModelAssociator); |
-}; |
- |
-} // namespace browser_sync |
- |
-#endif // CHROME_BROWSER_SYNC_GLUE_SESSION_MODEL_ASSOCIATOR_H_ |
- |