views_content_client_main_parts_chromeos.cc 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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/browser/context_factory.h"
  5. #include "content/public/common/result_codes.h"
  6. #include "content/shell/browser/shell_browser_context.h"
  7. #include "ui/aura/window.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. #include "ui/wm/test/wm_test_helper.h"
  11. namespace ui {
  12. namespace {
  13. class ViewsContentClientMainPartsChromeOS
  14. : public ViewsContentClientMainPartsAura {
  15. public:
  16. explicit ViewsContentClientMainPartsChromeOS(
  17. ViewsContentClient* views_content_client);
  18. ViewsContentClientMainPartsChromeOS(
  19. const ViewsContentClientMainPartsChromeOS&) = delete;
  20. ViewsContentClientMainPartsChromeOS& operator=(
  21. const ViewsContentClientMainPartsChromeOS&) = delete;
  22. ~ViewsContentClientMainPartsChromeOS() override {}
  23. // content::BrowserMainParts:
  24. int PreMainMessageLoopRun() override;
  25. void PostMainMessageLoopRun() override;
  26. private:
  27. // Enable a minimal set of views::corewm to be initialized.
  28. std::unique_ptr<::wm::WMTestHelper> wm_test_helper_;
  29. };
  30. ViewsContentClientMainPartsChromeOS::ViewsContentClientMainPartsChromeOS(
  31. ViewsContentClient* views_content_client)
  32. : ViewsContentClientMainPartsAura(views_content_client) {}
  33. int ViewsContentClientMainPartsChromeOS::PreMainMessageLoopRun() {
  34. ViewsContentClientMainPartsAura::PreMainMessageLoopRun();
  35. // Set up basic pieces of views::corewm.
  36. wm_test_helper_ = std::make_unique<wm::WMTestHelper>(gfx::Size(1024, 768));
  37. // Ensure the X window gets mapped.
  38. wm_test_helper_->host()->Show();
  39. // Ensure Aura knows where to open new windows.
  40. aura::Window* root_window = wm_test_helper_->host()->window();
  41. views_content_client()->OnPreMainMessageLoopRun(browser_context(),
  42. root_window);
  43. return content::RESULT_CODE_NORMAL_EXIT;
  44. }
  45. void ViewsContentClientMainPartsChromeOS::PostMainMessageLoopRun() {
  46. wm_test_helper_.reset();
  47. ViewsContentClientMainPartsAura::PostMainMessageLoopRun();
  48. }
  49. } // namespace
  50. // static
  51. std::unique_ptr<ViewsContentClientMainParts>
  52. ViewsContentClientMainParts::Create(ViewsContentClient* views_content_client) {
  53. return std::make_unique<ViewsContentClientMainPartsChromeOS>(
  54. views_content_client);
  55. }
  56. } // namespace ui