• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2006-2009 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 CHROME_BROWSER_SYNC_ENGINE_PROCESS_UPDATES_COMMAND_H_
6 #define CHROME_BROWSER_SYNC_ENGINE_PROCESS_UPDATES_COMMAND_H_
7 #pragma once
8 
9 #include "chrome/browser/sync/engine/model_changing_syncer_command.h"
10 #include "chrome/browser/sync/engine/syncer_types.h"
11 
12 namespace syncable {
13 class ScopedDirLookup;
14 }
15 
16 namespace sync_pb {
17 class SyncEntity;
18 }
19 
20 namespace browser_sync {
21 
22 // A syncer command for processing updates.
23 //
24 // Preconditions - updates in the SyncerSesssion have been downloaded
25 //                 and verified.
26 //
27 // Postconditions - All of the verified SyncEntity data will be copied to
28 //                  the server fields of the corresponding syncable entries.
29 // TODO(tim): This should not be ModelChanging (bug 36592).
30 class ProcessUpdatesCommand : public ModelChangingSyncerCommand {
31  public:
32   ProcessUpdatesCommand();
33   virtual ~ProcessUpdatesCommand();
34 
35   // ModelChangingSyncerCommand implementation.
36   virtual bool ModelNeutralExecuteImpl(sessions::SyncSession* session);
37   virtual void ModelChangingExecuteImpl(sessions::SyncSession* session);
38 
39  private:
40   ServerUpdateProcessingResult ProcessUpdate(
41       const syncable::ScopedDirLookup& dir,
42       const sync_pb::SyncEntity& proto_update);
43   DISALLOW_COPY_AND_ASSIGN(ProcessUpdatesCommand);
44 };
45 
46 }  // namespace browser_sync
47 
48 #endif  // CHROME_BROWSER_SYNC_ENGINE_PROCESS_UPDATES_COMMAND_H_
49