1// Copyright (c) 2011 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_HTTP_POST_PROVIDER_FACTORY_H_ 6#define CHROME_BROWSER_SYNC_ENGINE_HTTP_POST_PROVIDER_FACTORY_H_ 7#pragma once 8 9namespace sync_api { 10 11class HttpPostProviderInterface; 12 13// A factory to create HttpPostProviders to hide details about the 14// implementations and dependencies. 15// A factory instance itself should be owned by whomever uses it to create 16// HttpPostProviders. 17class HttpPostProviderFactory { 18 public: 19 virtual ~HttpPostProviderFactory() {} 20 21 // Obtain a new HttpPostProviderInterface instance, owned by caller. 22 virtual HttpPostProviderInterface* Create() = 0; 23 24 // When the interface is no longer needed (ready to be cleaned up), clients 25 // must call Destroy(). 26 // This allows actual HttpPostProvider subclass implementations to be 27 // reference counted, which is useful if a particular implementation uses 28 // multiple threads to serve network requests. 29 virtual void Destroy(HttpPostProviderInterface* http) = 0; 30}; 31 32} // namespace sync_api 33 34#endif // CHROME_BROWSER_SYNC_ENGINE_HTTP_POST_PROVIDER_FACTORY_H_ 35