1// Copyright (c) 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_VERIFY_UPDATES_COMMAND_H_
6#define CHROME_BROWSER_SYNC_ENGINE_VERIFY_UPDATES_COMMAND_H_
7#pragma once
8
9#include "base/basictypes.h"
10
11#include "chrome/browser/sync/engine/model_safe_worker.h"
12#include "chrome/browser/sync/engine/model_changing_syncer_command.h"
13#include "chrome/browser/sync/engine/syncproto.h"
14#include "chrome/browser/sync/engine/syncer_types.h"
15
16namespace syncable {
17class WriteTransaction;
18}
19
20namespace browser_sync {
21
22// Verifies the response from a GetUpdates request. All invalid updates will be
23// noted in the SyncSession after this command is executed.
24class VerifyUpdatesCommand : public ModelChangingSyncerCommand {
25 public:
26  VerifyUpdatesCommand();
27  virtual ~VerifyUpdatesCommand();
28
29  // SyncerCommand implementation.
30  virtual void ModelChangingExecuteImpl(sessions::SyncSession* session);
31
32 private:
33  struct VerifyUpdateResult {
34    VerifyResult value;
35    ModelSafeGroup placement;
36  };
37  VerifyUpdateResult VerifyUpdate(syncable::WriteTransaction* trans,
38                                  const SyncEntity& entry,
39                                  const ModelSafeRoutingInfo& routes);
40  DISALLOW_COPY_AND_ASSIGN(VerifyUpdatesCommand);
41};
42
43}  // namespace browser_sync
44
45#endif  // CHROME_BROWSER_SYNC_ENGINE_VERIFY_UPDATES_COMMAND_H_
46