views_content_client_main_parts.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Copyright 2014 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 UI_VIEWS_CONTENT_CLIENT_VIEWS_CONTENT_CLIENT_MAIN_PARTS_H_
  5. #define UI_VIEWS_CONTENT_CLIENT_VIEWS_CONTENT_CLIENT_MAIN_PARTS_H_
  6. #include <memory>
  7. #include "base/memory/raw_ptr.h"
  8. #include "build/build_config.h"
  9. #include "content/public/browser/browser_main_parts.h"
  10. namespace base {
  11. class RunLoop;
  12. }
  13. namespace content {
  14. class ShellBrowserContext;
  15. }
  16. namespace views {
  17. class TestViewsDelegate;
  18. }
  19. namespace ui {
  20. class ViewsContentClient;
  21. class ViewsContentClientMainParts : public content::BrowserMainParts {
  22. public:
  23. // Platform-specific create function.
  24. static std::unique_ptr<ViewsContentClientMainParts> Create(
  25. ViewsContentClient* views_content_client);
  26. static void PreBrowserMain();
  27. ViewsContentClientMainParts(const ViewsContentClientMainParts&) = delete;
  28. ViewsContentClientMainParts& operator=(const ViewsContentClientMainParts&) =
  29. delete;
  30. ~ViewsContentClientMainParts() override;
  31. // content::BrowserMainParts:
  32. int PreMainMessageLoopRun() override;
  33. void PostMainMessageLoopRun() override;
  34. content::ShellBrowserContext* browser_context() {
  35. return browser_context_.get();
  36. }
  37. ViewsContentClient* views_content_client() {
  38. return views_content_client_;
  39. }
  40. protected:
  41. explicit ViewsContentClientMainParts(
  42. ViewsContentClient* views_content_client);
  43. #if BUILDFLAG(IS_APPLE)
  44. views::TestViewsDelegate* views_delegate() { return views_delegate_.get(); }
  45. #endif
  46. private:
  47. std::unique_ptr<content::ShellBrowserContext> browser_context_;
  48. std::unique_ptr<views::TestViewsDelegate> views_delegate_;
  49. raw_ptr<ViewsContentClient> views_content_client_;
  50. std::unique_ptr<base::RunLoop> run_loop_;
  51. };
  52. } // namespace ui
  53. #endif // UI_VIEWS_CONTENT_CLIENT_VIEWS_CONTENT_CLIENT_MAIN_PARTS_H_