// Copyright (c) 2020 The Chromium Embedded Framework 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 CEF_TESTS_CEFTESTS_TEST_SERVER_RUNNER_H_ #define CEF_TESTS_CEFTESTS_TEST_SERVER_RUNNER_H_ #pragma once #include #include #include "include/cef_request.h" #include "include/internal/cef_types.h" #include "tests/ceftests/test_server.h" namespace test_server { // Runs the server. All methods will be called on the UI thread. class Runner { public: // Interface implemented by the Manager that creates/owns the Runner. class Delegate { public: // Server created notification. virtual void OnServerCreated(const std::string& server_origin) = 0; // Server destroyed notification. May delete the Runner. virtual void OnServerDestroyed() = 0; // Server handler deleted notification. May delete the Manager. virtual void OnServerHandlerDeleted() = 0; // Server request notification. virtual void OnTestServerRequest( CefRefPtr request, const ResponseCallback& response_callback) = 0; protected: virtual ~Delegate() = default; }; // |delegate| will outlive this object. explicit Runner(Delegate* delegate); virtual ~Runner() = default; // Called by the Manager to create the Runner. static std::unique_ptr Create(Delegate* delegate, bool https_server); // Called by the Manager to create/destroy the server handler. virtual void StartServer() = 0; virtual void ShutdownServer() = 0; private: // Create a Runner based on CefServer. static std::unique_ptr CreateNormal(Delegate* delegate); // Create a Runner based on CefTestServer. static std::unique_ptr CreateTest(Delegate* delegate, bool https_server); protected: Delegate* const delegate_; DISALLOW_COPY_AND_ASSIGN(Runner); }; } // namespace test_server #endif // CEF_TESTS_CEFTESTS_TEST_SERVER_RUNNER_H_