views_delegate.cc 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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. #include "ui/views/views_delegate.h"
  5. #include <utility>
  6. #include "base/command_line.h"
  7. #include "build/build_config.h"
  8. #include "build/chromeos_buildflags.h"
  9. #include "ui/views/views_touch_selection_controller_factory.h"
  10. #include "ui/views/widget/native_widget_private.h"
  11. #if defined(USE_AURA)
  12. #include "ui/views/touchui/touch_selection_menu_runner_views.h"
  13. #endif
  14. namespace views {
  15. namespace {
  16. ViewsDelegate* views_delegate = nullptr;
  17. } // namespace
  18. ViewsDelegate::ViewsDelegate()
  19. : editing_controller_factory_(new ViewsTouchEditingControllerFactory) {
  20. DCHECK(!views_delegate);
  21. views_delegate = this;
  22. ui::TouchEditingControllerFactory::SetInstance(
  23. editing_controller_factory_.get());
  24. #if BUILDFLAG(ENABLE_DESKTOP_AURA) || BUILDFLAG(IS_CHROMEOS_ASH)
  25. // TouchSelectionMenuRunnerViews is not supported on Mac or Cast.
  26. // It is also not used on Ash (the ChromeViewsDelegate() for Ash will
  27. // immediately replace this). But tests running without the Chrome layer
  28. // will not get the replacement.
  29. touch_selection_menu_runner_ =
  30. std::make_unique<TouchSelectionMenuRunnerViews>();
  31. #endif
  32. }
  33. ViewsDelegate::~ViewsDelegate() {
  34. ui::TouchEditingControllerFactory::SetInstance(nullptr);
  35. DCHECK_EQ(this, views_delegate);
  36. views_delegate = nullptr;
  37. }
  38. ViewsDelegate* ViewsDelegate::GetInstance() {
  39. return views_delegate;
  40. }
  41. void ViewsDelegate::SaveWindowPlacement(const Widget* widget,
  42. const std::string& window_name,
  43. const gfx::Rect& bounds,
  44. ui::WindowShowState show_state) {}
  45. bool ViewsDelegate::GetSavedWindowPlacement(
  46. const Widget* widget,
  47. const std::string& window_name,
  48. gfx::Rect* bounds,
  49. ui::WindowShowState* show_state) const {
  50. return false;
  51. }
  52. void ViewsDelegate::NotifyMenuItemFocused(const std::u16string& menu_name,
  53. const std::u16string& menu_item_name,
  54. int item_index,
  55. int item_count,
  56. bool has_submenu) {}
  57. ViewsDelegate::ProcessMenuAcceleratorResult
  58. ViewsDelegate::ProcessAcceleratorWhileMenuShowing(
  59. const ui::Accelerator& accelerator) {
  60. return ProcessMenuAcceleratorResult::LEAVE_MENU_OPEN;
  61. }
  62. bool ViewsDelegate::ShouldCloseMenuIfMouseCaptureLost() const {
  63. return true;
  64. }
  65. #if BUILDFLAG(IS_WIN)
  66. HICON ViewsDelegate::GetDefaultWindowIcon() const {
  67. return nullptr;
  68. }
  69. HICON ViewsDelegate::GetSmallWindowIcon() const {
  70. return nullptr;
  71. }
  72. bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const {
  73. return false;
  74. }
  75. #elif BUILDFLAG(ENABLE_DESKTOP_AURA) && \
  76. (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
  77. gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
  78. return nullptr;
  79. }
  80. #endif
  81. std::unique_ptr<NonClientFrameView>
  82. ViewsDelegate::CreateDefaultNonClientFrameView(Widget* widget) {
  83. return nullptr;
  84. }
  85. bool ViewsDelegate::IsShuttingDown() const {
  86. return false;
  87. }
  88. void ViewsDelegate::AddRef() {}
  89. void ViewsDelegate::ReleaseRef() {}
  90. void ViewsDelegate::OnBeforeWidgetInit(
  91. Widget::InitParams* params,
  92. internal::NativeWidgetDelegate* delegate) {}
  93. bool ViewsDelegate::WindowManagerProvidesTitleBar(bool maximized) {
  94. return false;
  95. }
  96. #if BUILDFLAG(IS_MAC)
  97. ui::ContextFactory* ViewsDelegate::GetContextFactory() {
  98. return nullptr;
  99. }
  100. #endif
  101. std::string ViewsDelegate::GetApplicationName() {
  102. base::FilePath program = base::CommandLine::ForCurrentProcess()->GetProgram();
  103. return program.BaseName().AsUTF8Unsafe();
  104. }
  105. #if BUILDFLAG(IS_WIN)
  106. int ViewsDelegate::GetAppbarAutohideEdges(HMONITOR monitor,
  107. base::OnceClosure callback) {
  108. return EDGE_BOTTOM;
  109. }
  110. #endif
  111. #if defined(USE_AURA)
  112. void ViewsDelegate::SetTouchSelectionMenuRunner(
  113. std::unique_ptr<TouchSelectionMenuRunnerViews> menu_runner) {
  114. touch_selection_menu_runner_ = std::move(menu_runner);
  115. }
  116. #endif
  117. } // namespace views