chromeos: extract ShellViewsDelegate into its own header

And makes ash_standalone use it too.

BUG=none
TEST=none

Change-Id: Iba9f80c0fd4d6a40928efce574df15e2faf75c9e
Reviewed-on: https://chromium-review.googlesource.com/546695
Reviewed-by: Elliot Glaysher <[email protected]>
Commit-Queue: Scott Violet <[email protected]>
Cr-Commit-Position: refs/heads/master@{#481993}
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index 3cee95a..fea3fa9 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -1007,6 +1007,8 @@
     "shell/panel_window.h",
     "shell/shell_delegate_impl.cc",
     "shell/shell_delegate_impl.h",
+    "shell/shell_views_delegate.cc",
+    "shell/shell_views_delegate.h",
     "shell/toplevel_window.cc",
     "shell/toplevel_window.h",
     "shell/widgets.cc",
diff --git a/ash/mus/standalone/ash_standalone_main.cc b/ash/mus/standalone/ash_standalone_main.cc
index b595679..386338e 100644
--- a/ash/mus/standalone/ash_standalone_main.cc
+++ b/ash/mus/standalone/ash_standalone_main.cc
@@ -7,6 +7,7 @@
 #include "ash/shell/example_app_list_presenter.h"
 #include "ash/shell/example_session_controller_client.h"
 #include "ash/shell/shell_delegate_impl.h"
+#include "ash/shell/shell_views_delegate.h"
 #include "ash/shell/window_type_launcher.h"
 #include "ash/shell/window_watcher.h"
 #include "ash/shell_observer.h"
@@ -97,6 +98,7 @@
 }  // namespace ash
 
 MojoResult ServiceMain(MojoHandle service_request_handle) {
+  ash::shell::ShellViewsDelegate shell_views_delegate;
   const bool show_primary_host_on_connect = false;
   std::unique_ptr<ash::ShellInit> shell_init_ptr =
       base::MakeUnique<ash::ShellInit>();
diff --git a/ash/shell/content/client/shell_browser_main_parts.cc b/ash/shell/content/client/shell_browser_main_parts.cc
index fae6a9f..f8f291b 100644
--- a/ash/shell/content/client/shell_browser_main_parts.cc
+++ b/ash/shell/content/client/shell_browser_main_parts.cc
@@ -11,6 +11,7 @@
 #include "ash/shell/example_app_list_presenter.h"
 #include "ash/shell/example_session_controller_client.h"
 #include "ash/shell/shell_delegate_impl.h"
+#include "ash/shell/shell_views_delegate.h"
 #include "ash/shell/window_type_launcher.h"
 #include "ash/shell/window_watcher.h"
 #include "ash/shell_init_params.h"
@@ -40,7 +41,6 @@
 #include "ui/display/screen.h"
 #include "ui/message_center/message_center.h"
 #include "ui/views/examples/examples_window_with_content.h"
-#include "ui/views/test/test_views_delegate.h"
 #include "ui/wm/core/wm_state.h"
 
 #if defined(USE_X11)
@@ -50,37 +50,6 @@
 namespace ash {
 namespace shell {
 
-namespace {
-
-class ShellViewsDelegate : public views::TestViewsDelegate {
- public:
-  ShellViewsDelegate() {}
-  ~ShellViewsDelegate() override {}
-
-  // Overridden from views::TestViewsDelegate:
-  views::NonClientFrameView* CreateDefaultNonClientFrameView(
-      views::Widget* widget) override {
-    return ash::Shell::Get()->CreateDefaultNonClientFrameView(widget);
-  }
-  void OnBeforeWidgetInit(
-      views::Widget::InitParams* params,
-      views::internal::NativeWidgetDelegate* delegate) override {
-    if (params->opacity == views::Widget::InitParams::INFER_OPACITY)
-      params->opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
-
-    if (params->native_widget)
-      return;
-
-    if (!params->parent && !params->context && !params->child)
-      params->context = Shell::GetPrimaryRootWindow();
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(ShellViewsDelegate);
-};
-
-}  // namespace
-
 ShellBrowserMainParts::ShellBrowserMainParts(
     const content::MainFunctionParams& parameters)
     : BrowserMainParts(), delegate_(nullptr) {}
diff --git a/ash/shell/shell_views_delegate.cc b/ash/shell/shell_views_delegate.cc
new file mode 100644
index 0000000..1522fa8
--- /dev/null
+++ b/ash/shell/shell_views_delegate.cc
@@ -0,0 +1,35 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ash/shell/shell_views_delegate.h"
+
+#include "ash/shell.h"
+
+namespace ash {
+namespace shell {
+
+ShellViewsDelegate::ShellViewsDelegate() = default;
+
+ShellViewsDelegate::~ShellViewsDelegate() = default;
+
+views::NonClientFrameView* ShellViewsDelegate::CreateDefaultNonClientFrameView(
+    views::Widget* widget) {
+  return ash::Shell::Get()->CreateDefaultNonClientFrameView(widget);
+}
+
+void ShellViewsDelegate::OnBeforeWidgetInit(
+    views::Widget::InitParams* params,
+    views::internal::NativeWidgetDelegate* delegate) {
+  if (params->opacity == views::Widget::InitParams::INFER_OPACITY)
+    params->opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
+
+  if (params->native_widget)
+    return;
+
+  if (!params->parent && !params->context && !params->child)
+    params->context = Shell::GetPrimaryRootWindow();
+}
+
+}  // namespace shell
+}  // namespace ash
diff --git a/ash/shell/shell_views_delegate.h b/ash/shell/shell_views_delegate.h
new file mode 100644
index 0000000..d14c175
--- /dev/null
+++ b/ash/shell/shell_views_delegate.h
@@ -0,0 +1,32 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_SHELL_SHELL_VIEWS_DELEGATE_H_
+#define ASH_SHELL_SHELL_VIEWS_DELEGATE_H_
+
+#include "ui/views/test/test_views_delegate.h"
+
+namespace ash {
+namespace shell {
+
+class ShellViewsDelegate : public views::TestViewsDelegate {
+ public:
+  ShellViewsDelegate();
+  ~ShellViewsDelegate() override;
+
+  // views::TestViewsDelegate:
+  views::NonClientFrameView* CreateDefaultNonClientFrameView(
+      views::Widget* widget) override;
+  void OnBeforeWidgetInit(
+      views::Widget::InitParams* params,
+      views::internal::NativeWidgetDelegate* delegate) override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(ShellViewsDelegate);
+};
+
+}  // namespace shell
+}  // namespace ash
+
+#endif  // ASH_SHELL_SHELL_VIEWS_DELEGATE_H_