1 // Copyright (c) 2013 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 "ui/views/views_delegate.h"
6
7 #include <utility>
8
9 #include "base/command_line.h"
10 #include "build/build_config.h"
11 #include "ui/views/views_touch_selection_controller_factory.h"
12 #include "ui/views/widget/native_widget_private.h"
13
14 #if defined(USE_AURA)
15 #include "ui/views/touchui/touch_selection_menu_runner_views.h"
16 #endif
17
18 namespace views {
19
20 namespace {
21
22 ViewsDelegate* views_delegate = nullptr;
23
24 } // namespace
25
ViewsDelegate()26 ViewsDelegate::ViewsDelegate()
27 : editing_controller_factory_(new ViewsTouchEditingControllerFactory) {
28 DCHECK(!views_delegate);
29 views_delegate = this;
30
31 ui::TouchEditingControllerFactory::SetInstance(
32 editing_controller_factory_.get());
33
34 #if defined(USE_AURA)
35 touch_selection_menu_runner_ =
36 std::make_unique<TouchSelectionMenuRunnerViews>();
37 #endif
38 }
39
~ViewsDelegate()40 ViewsDelegate::~ViewsDelegate() {
41 ui::TouchEditingControllerFactory::SetInstance(nullptr);
42
43 DCHECK_EQ(this, views_delegate);
44 views_delegate = nullptr;
45 }
46
GetInstance()47 ViewsDelegate* ViewsDelegate::GetInstance() {
48 return views_delegate;
49 }
50
SaveWindowPlacement(const Widget * widget,const std::string & window_name,const gfx::Rect & bounds,ui::WindowShowState show_state)51 void ViewsDelegate::SaveWindowPlacement(const Widget* widget,
52 const std::string& window_name,
53 const gfx::Rect& bounds,
54 ui::WindowShowState show_state) {}
55
GetSavedWindowPlacement(const Widget * widget,const std::string & window_name,gfx::Rect * bounds,ui::WindowShowState * show_state) const56 bool ViewsDelegate::GetSavedWindowPlacement(
57 const Widget* widget,
58 const std::string& window_name,
59 gfx::Rect* bounds,
60 ui::WindowShowState* show_state) const {
61 return false;
62 }
63
NotifyMenuItemFocused(const base::string16 & menu_name,const base::string16 & menu_item_name,int item_index,int item_count,bool has_submenu)64 void ViewsDelegate::NotifyMenuItemFocused(const base::string16& menu_name,
65 const base::string16& menu_item_name,
66 int item_index,
67 int item_count,
68 bool has_submenu) {}
69
70 ViewsDelegate::ProcessMenuAcceleratorResult
ProcessAcceleratorWhileMenuShowing(const ui::Accelerator & accelerator)71 ViewsDelegate::ProcessAcceleratorWhileMenuShowing(
72 const ui::Accelerator& accelerator) {
73 return ProcessMenuAcceleratorResult::LEAVE_MENU_OPEN;
74 }
75
76 #if defined(OS_WIN)
GetDefaultWindowIcon() const77 HICON ViewsDelegate::GetDefaultWindowIcon() const {
78 return nullptr;
79 }
80
GetSmallWindowIcon() const81 HICON ViewsDelegate::GetSmallWindowIcon() const {
82 return nullptr;
83 }
84
IsWindowInMetro(gfx::NativeWindow window) const85 bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const {
86 return false;
87 }
88 #elif BUILDFLAG(ENABLE_DESKTOP_AURA) && \
89 (defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD))
GetDefaultWindowIcon() const90 gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
91 return nullptr;
92 }
93 #endif
94
95 std::unique_ptr<NonClientFrameView>
CreateDefaultNonClientFrameView(Widget * widget)96 ViewsDelegate::CreateDefaultNonClientFrameView(Widget* widget) {
97 return nullptr;
98 }
99
IsShuttingDown() const100 bool ViewsDelegate::IsShuttingDown() const {
101 return false;
102 }
103
AddRef()104 void ViewsDelegate::AddRef() {}
105
ReleaseRef()106 void ViewsDelegate::ReleaseRef() {}
107
OnBeforeWidgetInit(Widget::InitParams * params,internal::NativeWidgetDelegate * delegate)108 void ViewsDelegate::OnBeforeWidgetInit(
109 Widget::InitParams* params,
110 internal::NativeWidgetDelegate* delegate) {}
111
WindowManagerProvidesTitleBar(bool maximized)112 bool ViewsDelegate::WindowManagerProvidesTitleBar(bool maximized) {
113 return false;
114 }
115
116 #if defined(OS_APPLE)
GetContextFactory()117 ui::ContextFactory* ViewsDelegate::GetContextFactory() {
118 return nullptr;
119 }
120 #endif
121
GetApplicationName()122 std::string ViewsDelegate::GetApplicationName() {
123 base::FilePath program = base::CommandLine::ForCurrentProcess()->GetProgram();
124 return program.BaseName().AsUTF8Unsafe();
125 }
126
127 #if defined(OS_WIN)
GetAppbarAutohideEdges(HMONITOR monitor,base::OnceClosure callback)128 int ViewsDelegate::GetAppbarAutohideEdges(HMONITOR monitor,
129 base::OnceClosure callback) {
130 return EDGE_BOTTOM;
131 }
132 #endif
133
134 #if defined(USE_AURA)
SetTouchSelectionMenuRunner(std::unique_ptr<TouchSelectionMenuRunnerViews> menu_runner)135 void ViewsDelegate::SetTouchSelectionMenuRunner(
136 std::unique_ptr<TouchSelectionMenuRunnerViews> menu_runner) {
137 touch_selection_menu_runner_ = std::move(menu_runner);
138 }
139 #endif
140
141 } // namespace views
142