146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "content/shell/browser/shell_browser_context.h"
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/aura/env.h"
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/gfx/screen.h"
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/views/widget/desktop_aura/desktop_screen.h"
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/views_content_client/views_content_client.h"
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/views_content_client/views_content_client_main_parts_aura.h"
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace ui {
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace {
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class ViewsContentClientMainPartsDesktopAura
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    : public ViewsContentClientMainPartsAura {
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ViewsContentClientMainPartsDesktopAura(
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      const content::MainFunctionParams& content_params,
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      ViewsContentClient* views_content_client);
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual ~ViewsContentClientMainPartsDesktopAura() {}
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // content::BrowserMainParts:
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void PreMainMessageLoopRun() OVERRIDE;
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private:
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ViewsContentClientMainPartsDesktopAura);
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)ViewsContentClientMainPartsDesktopAura::ViewsContentClientMainPartsDesktopAura(
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    const content::MainFunctionParams& content_params,
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    ViewsContentClient* views_content_client)
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    : ViewsContentClientMainPartsAura(content_params, views_content_client) {
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void ViewsContentClientMainPartsDesktopAura::PreMainMessageLoopRun() {
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ViewsContentClientMainPartsAura::PreMainMessageLoopRun();
3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  aura::Env::CreateInstance(true);
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  gfx::Screen::SetScreenInstance(
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      gfx::SCREEN_TYPE_NATIVE, views::CreateDesktopScreen());
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  views_content_client()->task().Run(browser_context(), NULL);
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// static
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)ViewsContentClientMainParts* ViewsContentClientMainParts::Create(
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    const content::MainFunctionParams& content_params,
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    ViewsContentClient* views_content_client) {
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return new ViewsContentClientMainPartsDesktopAura(
5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      content_params, views_content_client);
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace ui
58