views_content_client_main_parts_desktop_aura.cc 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. #include "content/public/common/result_codes.h"
  5. #include "content/shell/browser/shell_browser_context.h"
  6. #include "ui/display/screen.h"
  7. #include "ui/views/widget/desktop_aura/desktop_screen.h"
  8. #include "ui/views_content_client/views_content_client.h"
  9. #include "ui/views_content_client/views_content_client_main_parts_aura.h"
  10. namespace ui {
  11. namespace {
  12. class ViewsContentClientMainPartsDesktopAura
  13. : public ViewsContentClientMainPartsAura {
  14. public:
  15. explicit ViewsContentClientMainPartsDesktopAura(
  16. ViewsContentClient* views_content_client);
  17. ViewsContentClientMainPartsDesktopAura(
  18. const ViewsContentClientMainPartsDesktopAura&) = delete;
  19. ViewsContentClientMainPartsDesktopAura& operator=(
  20. const ViewsContentClientMainPartsDesktopAura&) = delete;
  21. ~ViewsContentClientMainPartsDesktopAura() override = default;
  22. // ViewsContentClientMainPartsAura:
  23. int PreMainMessageLoopRun() override;
  24. void PostMainMessageLoopRun() override;
  25. private:
  26. std::unique_ptr<display::Screen> screen_;
  27. };
  28. ViewsContentClientMainPartsDesktopAura::ViewsContentClientMainPartsDesktopAura(
  29. ViewsContentClient* views_content_client)
  30. : ViewsContentClientMainPartsAura(views_content_client) {}
  31. int ViewsContentClientMainPartsDesktopAura::PreMainMessageLoopRun() {
  32. ViewsContentClientMainPartsAura::PreMainMessageLoopRun();
  33. screen_ = views::CreateDesktopScreen();
  34. views_content_client()->OnPreMainMessageLoopRun(browser_context(), nullptr);
  35. return content::RESULT_CODE_NORMAL_EXIT;
  36. }
  37. void ViewsContentClientMainPartsDesktopAura::PostMainMessageLoopRun() {
  38. screen_.reset();
  39. ViewsContentClientMainPartsAura::PostMainMessageLoopRun();
  40. }
  41. } // namespace
  42. // static
  43. std::unique_ptr<ViewsContentClientMainParts>
  44. ViewsContentClientMainParts::Create(ViewsContentClient* views_content_client) {
  45. return std::make_unique<ViewsContentClientMainPartsDesktopAura>(
  46. views_content_client);
  47. }
  48. } // namespace ui