// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "content/public/browser/context_factory.h" #include "content/public/common/result_codes.h" #include "content/shell/browser/shell_browser_context.h" #include "ui/aura/window.h" #include "ui/views_content_client/views_content_client.h" #include "ui/views_content_client/views_content_client_main_parts_aura.h" #include "ui/wm/test/wm_test_helper.h" namespace ui { namespace { class ViewsContentClientMainPartsChromeOS : public ViewsContentClientMainPartsAura { public: explicit ViewsContentClientMainPartsChromeOS( ViewsContentClient* views_content_client); ViewsContentClientMainPartsChromeOS( const ViewsContentClientMainPartsChromeOS&) = delete; ViewsContentClientMainPartsChromeOS& operator=( const ViewsContentClientMainPartsChromeOS&) = delete; ~ViewsContentClientMainPartsChromeOS() override {} // content::BrowserMainParts: int PreMainMessageLoopRun() override; void PostMainMessageLoopRun() override; private: // Enable a minimal set of views::corewm to be initialized. std::unique_ptr<::wm::WMTestHelper> wm_test_helper_; }; ViewsContentClientMainPartsChromeOS::ViewsContentClientMainPartsChromeOS( ViewsContentClient* views_content_client) : ViewsContentClientMainPartsAura(views_content_client) {} int ViewsContentClientMainPartsChromeOS::PreMainMessageLoopRun() { ViewsContentClientMainPartsAura::PreMainMessageLoopRun(); // Set up basic pieces of views::corewm. wm_test_helper_ = std::make_unique(gfx::Size(1024, 768)); // Ensure the X window gets mapped. wm_test_helper_->host()->Show(); // Ensure Aura knows where to open new windows. aura::Window* root_window = wm_test_helper_->host()->window(); views_content_client()->OnPreMainMessageLoopRun(browser_context(), root_window); return content::RESULT_CODE_NORMAL_EXIT; } void ViewsContentClientMainPartsChromeOS::PostMainMessageLoopRun() { wm_test_helper_.reset(); ViewsContentClientMainPartsAura::PostMainMessageLoopRun(); } } // namespace // static std::unique_ptr ViewsContentClientMainParts::Create(ViewsContentClient* views_content_client) { return std::make_unique( views_content_client); } } // namespace ui