1// Copyright 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SYNC_INTERNAL_API_PUBLIC_USER_SHARE_H_
6#define SYNC_INTERNAL_API_PUBLIC_USER_SHARE_H_
7
8#include <string>
9
10#include "base/memory/scoped_ptr.h"
11#include "sync/base/sync_export.h"
12#include "sync/internal_api/public/sync_manager.h"
13
14namespace syncer {
15
16namespace syncable {
17class Directory;
18}
19
20// A UserShare encapsulates the syncable pieces that represent an authenticated
21// user and their data (share).
22// This encompasses all pieces required to build transaction objects on the
23// syncable share.
24struct SYNC_EXPORT_PRIVATE UserShare {
25  UserShare();
26  ~UserShare();
27
28  // The Directory itself, which is the parent of Transactions.
29  scoped_ptr<syncable::Directory> directory;
30
31  // The credentials used by sync when talking to the sync server.
32  //
33  // Note: some or all of the sync_credentials fields may be empty.
34  SyncCredentials sync_credentials;
35};
36
37}  // namespace syncer
38
39#endif  // SYNC_INTERNAL_API_PUBLIC_USER_SHARE_H_
40