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