web_engine_main_delegate.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef FUCHSIA_WEB_WEBENGINE_WEB_ENGINE_MAIN_DELEGATE_H_
  5. #define FUCHSIA_WEB_WEBENGINE_WEB_ENGINE_MAIN_DELEGATE_H_
  6. #include <fuchsia/web/cpp/fidl.h>
  7. #include <lib/zx/channel.h>
  8. #include <memory>
  9. #include <string>
  10. #include "content/public/app/content_main_delegate.h"
  11. #include "fuchsia_web/webengine/web_engine_export.h"
  12. #include "third_party/abseil-cpp/absl/types/optional.h"
  13. namespace content {
  14. class ContentClient;
  15. } // namespace content
  16. class WebEngineContentBrowserClient;
  17. class WebEngineContentRendererClient;
  18. class WEB_ENGINE_EXPORT WebEngineMainDelegate
  19. : public content::ContentMainDelegate {
  20. public:
  21. explicit WebEngineMainDelegate();
  22. WebEngineMainDelegate(const WebEngineMainDelegate&) = delete;
  23. WebEngineMainDelegate& operator=(const WebEngineMainDelegate&) = delete;
  24. ~WebEngineMainDelegate() override;
  25. WebEngineContentBrowserClient* browser_client() {
  26. return browser_client_.get();
  27. }
  28. // ContentMainDelegate implementation.
  29. absl::optional<int> BasicStartupComplete() override;
  30. void PreSandboxStartup() override;
  31. absl::variant<int, content::MainFunctionParams> RunProcess(
  32. const std::string& process_type,
  33. content::MainFunctionParams main_function_params) override;
  34. content::ContentClient* CreateContentClient() override;
  35. content::ContentBrowserClient* CreateContentBrowserClient() override;
  36. content::ContentRendererClient* CreateContentRendererClient() override;
  37. static WebEngineMainDelegate* GetInstanceForTest();
  38. private:
  39. std::unique_ptr<content::ContentClient> content_client_;
  40. std::unique_ptr<WebEngineContentBrowserClient> browser_client_;
  41. std::unique_ptr<WebEngineContentRendererClient> renderer_client_;
  42. };
  43. #endif // FUCHSIA_WEB_WEBENGINE_WEB_ENGINE_MAIN_DELEGATE_H_