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
5#include "content/shell/browser/shell_browser_context.h"
6#include "ui/aura/env.h"
7#include "ui/gfx/screen.h"
8#include "ui/views/widget/desktop_aura/desktop_screen.h"
9#include "ui/views_content_client/views_content_client.h"
10#include "ui/views_content_client/views_content_client_main_parts_aura.h"
11
12namespace ui {
13
14namespace {
15
16class ViewsContentClientMainPartsDesktopAura
17    : public ViewsContentClientMainPartsAura {
18 public:
19  ViewsContentClientMainPartsDesktopAura(
20      const content::MainFunctionParams& content_params,
21      ViewsContentClient* views_content_client);
22  virtual ~ViewsContentClientMainPartsDesktopAura() {}
23
24  // content::BrowserMainParts:
25  virtual void PreMainMessageLoopRun() OVERRIDE;
26
27 private:
28  DISALLOW_COPY_AND_ASSIGN(ViewsContentClientMainPartsDesktopAura);
29};
30
31ViewsContentClientMainPartsDesktopAura::ViewsContentClientMainPartsDesktopAura(
32    const content::MainFunctionParams& content_params,
33    ViewsContentClient* views_content_client)
34    : ViewsContentClientMainPartsAura(content_params, views_content_client) {
35}
36
37void ViewsContentClientMainPartsDesktopAura::PreMainMessageLoopRun() {
38  ViewsContentClientMainPartsAura::PreMainMessageLoopRun();
39
40  aura::Env::CreateInstance(true);
41  gfx::Screen::SetScreenInstance(
42      gfx::SCREEN_TYPE_NATIVE, views::CreateDesktopScreen());
43
44  views_content_client()->task().Run(browser_context(), NULL);
45}
46
47}  // namespace
48
49// static
50ViewsContentClientMainParts* ViewsContentClientMainParts::Create(
51    const content::MainFunctionParams& content_params,
52    ViewsContentClient* views_content_client) {
53  return new ViewsContentClientMainPartsDesktopAura(
54      content_params, views_content_client);
55}
56
57}  // namespace ui
58