#ifndef REMOTING_HOST_CHROMOTING_HOST_CONTEXT_H_
#define REMOTING_HOST_CHROMOTING_HOST_CONTEXT_H_
#include <memory>
#include "base/memory/scoped_refptr.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "components/policy/core/common/management/platform_management_service.h"
namespace base {
class SingleThreadTaskRunner;
}
namespace net {
class URLRequestContextGetter;
}
namespace network {
class SharedURLLoaderFactory;
class TransitionalURLLoaderFactoryOwner;
}
namespace remoting {
class AutoThreadTaskRunner;
class ChromotingHostContext {
public:
static std::unique_ptr<ChromotingHostContext> Create(
scoped_refptr<AutoThreadTaskRunner> ui_task_runner);
#if BUILDFLAG(IS_CHROMEOS_ASH)
static std::unique_ptr<ChromotingHostContext> CreateForChromeOS(
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> file_task_runner);
#endif
ChromotingHostContext(const ChromotingHostContext&) = delete;
ChromotingHostContext& operator=(const ChromotingHostContext&) = delete;
~ChromotingHostContext();
std::unique_ptr<ChromotingHostContext> Copy();
scoped_refptr<AutoThreadTaskRunner> ui_task_runner() const;
scoped_refptr<AutoThreadTaskRunner> audio_task_runner() const;
scoped_refptr<AutoThreadTaskRunner> file_task_runner() const;
scoped_refptr<AutoThreadTaskRunner> input_task_runner() const;
scoped_refptr<AutoThreadTaskRunner> network_task_runner() const;
scoped_refptr<AutoThreadTaskRunner> video_capture_task_runner() const;
scoped_refptr<AutoThreadTaskRunner> video_encode_task_runner() const;
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter()
const;
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory();
policy::ManagementService* management_service();
private:
ChromotingHostContext(
scoped_refptr<AutoThreadTaskRunner> ui_task_runner,
scoped_refptr<AutoThreadTaskRunner> audio_task_runner,
scoped_refptr<AutoThreadTaskRunner> file_task_runner,
scoped_refptr<AutoThreadTaskRunner> input_task_runner,
scoped_refptr<AutoThreadTaskRunner> network_task_runner,
scoped_refptr<AutoThreadTaskRunner> video_capture_task_runner,
scoped_refptr<AutoThreadTaskRunner> video_encode_task_runner,
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter);
scoped_refptr<AutoThreadTaskRunner> ui_task_runner_;
scoped_refptr<AutoThreadTaskRunner> audio_task_runner_;
scoped_refptr<AutoThreadTaskRunner> file_task_runner_;
scoped_refptr<AutoThreadTaskRunner> input_task_runner_;
scoped_refptr<AutoThreadTaskRunner> network_task_runner_;
scoped_refptr<AutoThreadTaskRunner> video_capture_task_runner_;
scoped_refptr<AutoThreadTaskRunner> video_encode_task_runner_;
scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
std::unique_ptr<network::TransitionalURLLoaderFactoryOwner>
url_loader_factory_owner_;
};
}
#endif