| Index: chrome/browser/sync/glue/session_model_associator.h
|
| diff --git a/chrome/browser/sync/glue/session_model_associator.h b/chrome/browser/sync/glue/session_model_associator.h
|
| index 957914077c88c591cc34f5e7f4e8b9d79e3008e5..561f1b5664cd487deacddda117f75c6a366d46ba 100644
|
| --- a/chrome/browser/sync/glue/session_model_associator.h
|
| +++ b/chrome/browser/sync/glue/session_model_associator.h
|
| @@ -14,6 +14,7 @@
|
| #include "base/format_macros.h"
|
| #include "base/gtest_prod_util.h"
|
| #include "base/memory/scoped_vector.h"
|
| +#include "base/memory/weak_ptr.h"
|
| #include "base/observer_list.h"
|
| #include "base/stringprintf.h"
|
| #include "base/threading/non_thread_safe.h"
|
| @@ -27,6 +28,7 @@
|
| #include "chrome/browser/sync/glue/synced_window_delegate.h"
|
| #include "chrome/browser/sync/protocol/session_specifics.pb.h"
|
| #include "chrome/browser/sync/syncable/model_type.h"
|
| +#include "chrome/browser/sync/weak_handle.h"
|
|
|
| class Profile;
|
| class ProfileSyncService;
|
| @@ -50,6 +52,7 @@ static const char kSessionsTag[] = "google_chrome_sessions";
|
| // the sync sessions model.
|
| class SessionModelAssociator
|
| : public PerDataTypeAssociatorInterface<SyncedTabDelegate, size_t>,
|
| + public base::SupportsWeakPtr<SessionModelAssociator>,
|
| public base::NonThreadSafe {
|
| public:
|
| // Does not take ownership of sync_service.
|
| @@ -183,6 +186,23 @@ class SessionModelAssociator
|
| // when a local change is made, or when timeout_milli occurs, whichever is
|
| // first.
|
| void BlockUntilLocalChangeForTest(int64 timeout_milli);
|
| +
|
| + // Callback for when the session name has been computed.
|
| + void OnSessionNameInitialized(const std::string name);
|
| +
|
| +#if defined(OS_WIN)
|
| + // Returns the computer name or the empty string an error occurred.
|
| + static std::string GetComputerName();
|
| +#endif
|
| +
|
| +#if defined(OS_MACOSX)
|
| + // Returns the Hardware model name, without trailing numbers, if possible.
|
| + // See http://www.cocoadev.com/index.pl?MacintoshModels for an example list of
|
| + // models. If an error occurs trying to read the model, this simply returns
|
| + // "Unknown".
|
| + static std::string GetHardwareModelName();
|
| +#endif
|
| +
|
| private:
|
| FRIEND_TEST_ALL_PREFIXES(ProfileSyncServiceSessionTest, WriteSessionToNode);
|
| FRIEND_TEST_ALL_PREFIXES(ProfileSyncServiceSessionTest,
|
| @@ -191,8 +211,11 @@ class SessionModelAssociator
|
| WriteForeignSessionToNode);
|
| FRIEND_TEST_ALL_PREFIXES(ProfileSyncServiceSessionTest, TabNodePoolEmpty);
|
| FRIEND_TEST_ALL_PREFIXES(ProfileSyncServiceSessionTest, TabNodePoolNonEmpty);
|
| + FRIEND_TEST_ALL_PREFIXES(SessionModelAssociatorTest, PopulateSessionHeader);
|
| FRIEND_TEST_ALL_PREFIXES(SessionModelAssociatorTest, PopulateSessionWindow);
|
| FRIEND_TEST_ALL_PREFIXES(SessionModelAssociatorTest, PopulateSessionTab);
|
| + FRIEND_TEST_ALL_PREFIXES(SessionModelAssociatorTest,
|
| + InitializeCurrentSessionName);
|
|
|
| // Keep all the links to local tab data in one place.
|
| class TabLinks {
|
| @@ -321,6 +344,9 @@ class SessionModelAssociator
|
| // Initializes the tag corresponding to this machine.
|
| void InitializeCurrentMachineTag(sync_api::WriteTransaction* trans);
|
|
|
| + // Initializes the user visible name for this session
|
| + void InitializeCurrentSessionName();
|
| +
|
| // 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();
|
| @@ -338,6 +364,12 @@ class SessionModelAssociator
|
| const int64 sync_id,
|
| sync_api::WriteTransaction* trans);
|
|
|
| + // Used to populate a session header from the session specifics header
|
| + // provided.
|
| + static void PopulateSessionHeaderFromSpecifics(
|
| + const sync_pb::SessionHeader& header_specifics,
|
| + SyncedSession* session_header);
|
| +
|
| // Used to populate a session window from the session specifics window
|
| // provided. Tracks any foreign session data created through |tracker|.
|
| static void PopulateSessionWindowFromSpecifics(
|
| @@ -395,9 +427,12 @@ class SessionModelAssociator
|
| // For testing only.
|
| void QuitLoopForTest();
|
|
|
| - // Local client name.
|
| + // Unique client tag.
|
| std::string current_machine_tag_;
|
|
|
| + // User-visible machine name.
|
| + std::string current_session_name_;
|
| +
|
| // Pool of all used/available sync nodes associated with tabs.
|
| TabNodePool tab_pool_;
|
|
|
|
|