blob: 0560401205d760352d6d861f3ac61d15d1b425b3 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FUCHSIA_WEB_WEBENGINE_CONTEXT_PROVIDER_IMPL_H_
#define FUCHSIA_WEB_WEBENGINE_CONTEXT_PROVIDER_IMPL_H_
#include <fuchsia/web/cpp/fidl.h>
#include "fuchsia_web/webengine/web_engine_export.h"
#include "fuchsia_web/webinstance_host/web_instance_host.h"
namespace sys {
class OutgoingDirectory;
} // namespace sys
class WEB_ENGINE_EXPORT ContextProviderImpl
: public fuchsia::web::ContextProvider {
public:
// The impl will offer capabilities to child instances via
// `outgoing_directory`. ContextProviderImpl owners must serve the directory
// before creating web instances, and must ensure that the directory outlives
// the ContextProviderImpl instance.
explicit ContextProviderImpl(sys::OutgoingDirectory& outgoing_directory);
~ContextProviderImpl() override;
ContextProviderImpl(const ContextProviderImpl&) = delete;
ContextProviderImpl& operator=(const ContextProviderImpl&) = delete;
// fuchsia::web::ContextProvider implementation.
void Create(
fuchsia::web::CreateContextParams params,
fidl::InterfaceRequest<fuchsia::web::Context> context_request) override;
// Exposes the fuchsia.web.Debug API to offer to clients.
fuchsia::web::Debug* debug_api();
private:
// Manages an isolated Environment, and the web instances hosted within it.
// Services for each web instance are provided by the Service Directory
// provided in the Create() call.
WebInstanceHostWithoutServices web_instance_host_;
};
#endif // FUCHSIA_WEB_WEBENGINE_CONTEXT_PROVIDER_IMPL_H_