1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file.
4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#ifndef SYNC_TEST_FAKE_SERVER_ENTITY_BUILDER_H_
6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#define SYNC_TEST_FAKE_SERVER_ENTITY_BUILDER_H_
7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include <string>
9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "sync/internal_api/public/base/model_type.h"
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "sync/test/fake_server/fake_server_entity.h"
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "url/gurl.h"
14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace fake_server {
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Parent class for FakeServerEntity builders.
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class EntityBuilder {
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) public:
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual ~EntityBuilder();
21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Builds a FakeServerEntity and returns a scoped_ptr tht owns it. If building
23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // was not successful, the returned scoped_ptr will not own a
24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // FakeServerEntity*.
25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  virtual scoped_ptr<FakeServerEntity> Build() = 0;
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) protected:
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  EntityBuilder(syncer::ModelType model_type, const std::string& name);
29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  std::string id_;
31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  syncer::ModelType model_type_;
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  std::string name_;
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)};
34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace fake_server
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif  // SYNC_TEST_FAKE_SERVER_ENTITY_BUILDER_H_
38