1 // Copyright 2014 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.
5 #ifndef SYNC_ENGINE_DIRECTORY_COMMIT_CONTRIBUTOR_H_
6 #define SYNC_ENGINE_DIRECTORY_COMMIT_CONTRIBUTOR_H_
10 #include "base/memory/scoped_ptr.h"
11 #include "sync/engine/commit_contributor.h"
12 #include "sync/engine/directory_commit_contribution.h"
13 #include "sync/internal_api/public/base/model_type.h"
21 class DirectoryTypeDebugInfoEmitter
;
23 // This class represents the syncable::Directory as a source of items to commit
24 // to the sync server.
26 // Each instance of this class represents a particular type within the
27 // syncable::Directory. When asked, it will iterate through the directory, grab
28 // any items of its type that are ready for commit, and return them in the form
29 // of a DirectoryCommitContribution.
30 class DirectoryCommitContributor
: public CommitContributor
{
32 DirectoryCommitContributor(syncable::Directory
* dir
,
34 DirectoryTypeDebugInfoEmitter
* debug_info_emitter
);
35 ~DirectoryCommitContributor() override
;
37 scoped_ptr
<CommitContribution
> GetContribution(size_t max_entries
) override
;
40 syncable::Directory
* dir_
;
43 DirectoryTypeDebugInfoEmitter
* debug_info_emitter_
;
45 DISALLOW_COPY_AND_ASSIGN(DirectoryCommitContributor
);
50 #endif // SYNC_ENGINE_DIRECTORY_COMMIT_CONTRIBUTOR_H_