diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-21 09:59:42 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-21 09:59:42 +0000 |
commit | 91835ca82c6ff7f1aeb68e314a3842da1aca6841 (patch) | |
tree | c7e8119bd0fb2a8e1d6910c969e1d3f62dbff1f8 /sync/internal_api/syncapi_server_connection_manager.h | |
parent | 7983f3bae6ab9c86aea81816e6bb1bd15ab114fe (diff) | |
download | chromium_src-91835ca82c6ff7f1aeb68e314a3842da1aca6841.zip chromium_src-91835ca82c6ff7f1aeb68e314a3842da1aca6841.tar.gz chromium_src-91835ca82c6ff7f1aeb68e314a3842da1aca6841.tar.bz2 |
[Sync] Move 'syncapi_core' and 'sync_unit_tests' targets to sync/
Also move related test files.
Lock down deps for sync/internal_api.
Clean up some deps on chrome/browser/sync.
BUG=117585
TEST=
Review URL: https://chromiumcodereview.appspot.com/10147003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133349 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/internal_api/syncapi_server_connection_manager.h')
-rw-r--r-- | sync/internal_api/syncapi_server_connection_manager.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/sync/internal_api/syncapi_server_connection_manager.h b/sync/internal_api/syncapi_server_connection_manager.h new file mode 100644 index 0000000..fafde1e --- /dev/null +++ b/sync/internal_api/syncapi_server_connection_manager.h @@ -0,0 +1,78 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SYNC_INTERNAL_API_SYNCAPI_SERVER_CONNECTION_MANAGER_H_ +#define SYNC_INTERNAL_API_SYNCAPI_SERVER_CONNECTION_MANAGER_H_ +#pragma once + +#include <string> + +#include "base/compiler_specific.h" +#include "base/gtest_prod_util.h" +#include "base/memory/scoped_ptr.h" +#include "sync/engine/net/server_connection_manager.h" + +namespace sync_api { + +class HttpPostProviderFactory; +class HttpPostProviderInterface; + +// This provides HTTP Post functionality through the interface provided +// to the sync API by the application hosting the syncer backend. +class SyncAPIBridgedConnection + : public browser_sync::ServerConnectionManager::Connection { + public: + SyncAPIBridgedConnection(browser_sync::ServerConnectionManager* scm, + HttpPostProviderFactory* factory); + + virtual ~SyncAPIBridgedConnection(); + + virtual bool Init(const char* path, + const std::string& auth_token, + const std::string& payload, + browser_sync::HttpResponse* response) OVERRIDE; + + virtual void Abort() OVERRIDE; + + private: + // Pointer to the factory we use for creating HttpPostProviders. We do not + // own |factory_|. + HttpPostProviderFactory* factory_; + + HttpPostProviderInterface* post_provider_; + + DISALLOW_COPY_AND_ASSIGN(SyncAPIBridgedConnection); +}; + +// A ServerConnectionManager subclass used by the syncapi layer. We use a +// subclass so that we can override MakePost() to generate a POST object using +// an instance of the HttpPostProviderFactory class. +class SyncAPIServerConnectionManager + : public browser_sync::ServerConnectionManager { + public: + // Takes ownership of factory. + SyncAPIServerConnectionManager(const std::string& server, + int port, + bool use_ssl, + const std::string& client_version, + HttpPostProviderFactory* factory); + virtual ~SyncAPIServerConnectionManager(); + + // ServerConnectionManager overrides. + virtual Connection* MakeConnection() OVERRIDE; + + private: + FRIEND_TEST_ALL_PREFIXES(SyncAPIServerConnectionManagerTest, EarlyAbortPost); + FRIEND_TEST_ALL_PREFIXES(SyncAPIServerConnectionManagerTest, AbortPost); + + // A factory creating concrete HttpPostProviders for use whenever we need to + // issue a POST to sync servers. + scoped_ptr<HttpPostProviderFactory> post_provider_factory_; + + DISALLOW_COPY_AND_ASSIGN(SyncAPIServerConnectionManager); +}; + +} // namespace sync_api + +#endif // SYNC_INTERNAL_API_SYNCAPI_SERVER_CONNECTION_MANAGER_H_ |