// Copyright 2018 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 COMPONENTS_UPDATE_CLIENT_PROTOCOL_HANDLER_H_ #define COMPONENTS_UPDATE_CLIENT_PROTOCOL_HANDLER_H_ #include #include "base/macros.h" namespace update_client { class ProtocolParser; class ProtocolSerializer; class ProtocolHandlerFactory { public: virtual ~ProtocolHandlerFactory() = default; virtual std::unique_ptr CreateParser() const = 0; virtual std::unique_ptr CreateSerializer() const = 0; protected: ProtocolHandlerFactory() = default; private: DISALLOW_COPY_AND_ASSIGN(ProtocolHandlerFactory); }; class ProtocolHandlerFactoryJSON final : public ProtocolHandlerFactory { public: // Overrides for ProtocolHandlerFactory. std::unique_ptr CreateParser() const override; std::unique_ptr CreateSerializer() const override; }; } // namespace update_client #endif // COMPONENTS_UPDATE_CLIENT_PROTOCOL_HANDLER_H_