| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/callback.h" | 5 #include "base/callback.h" |
| 6 #include "base/utf_string_conversions.h" | 6 #include "base/utf_string_conversions.h" |
| 7 #include "chrome/test/base/ui_test_utils.h" | 7 #include "chrome/test/base/ui_test_utils.h" |
| 8 #include "chrome/test/base/view_event_test_base.h" | 8 #include "chrome/test/base/view_event_test_base.h" |
| 9 #include "ui/base/models/menu_model.h" | 9 #include "ui/base/models/menu_model.h" |
| 10 #include "ui/ui_controls/ui_controls.h" | 10 #include "ui/ui_controls/ui_controls.h" |
| 11 #include "ui/views/controls/button/menu_button.h" | 11 #include "ui/views/controls/button/menu_button.h" |
| 12 #include "ui/views/controls/button/menu_button_listener.h" | 12 #include "ui/views/controls/button/menu_button_listener.h" |
| 13 #include "ui/views/controls/menu/menu_controller.h" | 13 #include "ui/views/controls/menu/menu_controller.h" |
| 14 #include "ui/views/controls/menu/menu_item_view.h" | 14 #include "ui/views/controls/menu/menu_item_view.h" |
| 15 #include "ui/views/controls/menu/menu_model_adapter.h" | 15 #include "ui/views/controls/menu/menu_model_adapter.h" |
| 16 #include "ui/views/controls/menu/menu_runner.h" | 16 #include "ui/views/controls/menu/menu_runner.h" |
| 17 #include "ui/views/controls/menu/submenu_view.h" | 17 #include "ui/views/controls/menu/submenu_view.h" |
| 18 #include "ui/views/test/test_views_delegate.h" | 18 #include "ui/views/test/test_views_delegate.h" |
| 19 #include "ui/views/views_delegate.h" | |
| 20 #include "ui/views/widget/root_view.h" | 19 #include "ui/views/widget/root_view.h" |
| 21 #include "ui/views/widget/widget.h" | 20 #include "ui/views/widget/widget.h" |
| 22 | 21 |
| 23 namespace { | 22 namespace { |
| 24 | 23 |
| 25 const int kTopMenuBaseId = 100; | 24 const int kTopMenuBaseId = 100; |
| 26 const int kSubMenuBaseId = 200; | 25 const int kSubMenuBaseId = 200; |
| 27 | 26 |
| 28 // ViewsDelegate::GetDispositionForEvent() is used by views::MenuModelAdapter. | |
| 29 class TestViewsDelegate : public views::ViewsDelegate { | |
| 30 public: | |
| 31 TestViewsDelegate() { | |
| 32 } | |
| 33 | |
| 34 ~TestViewsDelegate() { | |
| 35 } | |
| 36 | |
| 37 // views::ViewsDelegate implementation | |
| 38 virtual void SaveWindowPlacement(const views::Widget* widget, | |
| 39 const std::string& window_name, | |
| 40 const gfx::Rect& bounds, | |
| 41 ui::WindowShowState show_state) OVERRIDE { | |
| 42 } | |
| 43 | |
| 44 virtual bool GetSavedWindowPlacement( | |
| 45 const std::string& window_name, | |
| 46 gfx::Rect* bounds, | |
| 47 ui::WindowShowState* show_state) const OVERRIDE { | |
| 48 return false; | |
| 49 } | |
| 50 | |
| 51 virtual void NotifyAccessibilityEvent( | |
| 52 views::View* view, ui::AccessibilityTypes::Event event_type) OVERRIDE { | |
| 53 } | |
| 54 | |
| 55 virtual void NotifyMenuItemFocused(const string16& menu_name, | |
| 56 const string16& menu_item_name, | |
| 57 int item_index, | |
| 58 int item_count, | |
| 59 bool has_submenu) OVERRIDE { | |
| 60 } | |
| 61 | |
| 62 #if defined(OS_WIN) | |
| 63 virtual HICON GetDefaultWindowIcon() const OVERRIDE { | |
| 64 return NULL; | |
| 65 } | |
| 66 #endif | |
| 67 virtual views::NonClientFrameView* CreateDefaultNonClientFrameView( | |
| 68 views::Widget* widget) OVERRIDE { | |
| 69 return NULL; | |
| 70 } | |
| 71 | |
| 72 virtual bool UseTransparentWindows() const OVERRIDE { | |
| 73 return false; | |
| 74 } | |
| 75 | |
| 76 virtual void AddRef() OVERRIDE { | |
| 77 } | |
| 78 | |
| 79 virtual void ReleaseRef() OVERRIDE { | |
| 80 } | |
| 81 | |
| 82 // Converts views::Event::flags to a WindowOpenDisposition. | |
| 83 virtual int GetDispositionForEvent(int event_flags) OVERRIDE { | |
| 84 return 0; | |
| 85 } | |
| 86 | |
| 87 #if defined(USE_AURA) | |
| 88 virtual views::NativeWidgetHelperAura* CreateNativeWidgetHelper( | |
| 89 views::NativeWidgetAura* native_widget) OVERRIDE { | |
| 90 return NULL; | |
| 91 } | |
| 92 #endif | |
| 93 | |
| 94 content::WebContents* CreateWebContents( | |
| 95 content::BrowserContext* browser_context, | |
| 96 content::SiteInstance* site_instance) OVERRIDE { | |
| 97 return NULL; | |
| 98 } | |
| 99 | |
| 100 private: | |
| 101 DISALLOW_COPY_AND_ASSIGN(TestViewsDelegate); | |
| 102 }; | |
| 103 | |
| 104 // Implement most of the ui::MenuModel pure virtual methods for subclasses | 27 // Implement most of the ui::MenuModel pure virtual methods for subclasses |
| 105 // | 28 // |
| 106 // Exceptions: | 29 // Exceptions: |
| 107 // virtual int GetItemCount() const = 0; | 30 // virtual int GetItemCount() const = 0; |
| 108 // virtual ItemType GetTypeAt(int index) const = 0; | 31 // virtual ItemType GetTypeAt(int index) const = 0; |
| 109 // virtual int GetCommandIdAt(int index) const = 0; | 32 // virtual int GetCommandIdAt(int index) const = 0; |
| 110 // virtual string16 GetLabelAt(int index) const = 0; | 33 // virtual string16 GetLabelAt(int index) const = 0; |
| 111 class CommonMenuModel : public ui::MenuModel { | 34 class CommonMenuModel : public ui::MenuModel { |
| 112 public: | 35 public: |
| 113 CommonMenuModel() { | 36 CommonMenuModel() { |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 // Generate a mouse click on the specified view and post a new task. | 296 // Generate a mouse click on the specified view and post a new task. |
| 374 virtual void Click(views::View* view, const base::Closure& next) { | 297 virtual void Click(views::View* view, const base::Closure& next) { |
| 375 ui_test_utils::MoveMouseToCenterAndPress( | 298 ui_test_utils::MoveMouseToCenterAndPress( |
| 376 view, | 299 view, |
| 377 ui_controls::LEFT, | 300 ui_controls::LEFT, |
| 378 ui_controls::DOWN | ui_controls::UP, | 301 ui_controls::DOWN | ui_controls::UP, |
| 379 next); | 302 next); |
| 380 } | 303 } |
| 381 | 304 |
| 382 views::ViewsDelegate* old_views_delegate_; | 305 views::ViewsDelegate* old_views_delegate_; |
| 383 TestViewsDelegate views_delegate_; | 306 views::TestViewsDelegate views_delegate_; |
| 384 | 307 |
| 385 views::MenuButton* button_; | 308 views::MenuButton* button_; |
| 386 TopMenuModel top_menu_model_; | 309 TopMenuModel top_menu_model_; |
| 387 views::MenuModelAdapter menu_model_adapter_; | 310 views::MenuModelAdapter menu_model_adapter_; |
| 388 views::MenuItemView* menu_; | 311 views::MenuItemView* menu_; |
| 389 scoped_ptr<views::MenuRunner> menu_runner_; | 312 scoped_ptr<views::MenuRunner> menu_runner_; |
| 390 }; | 313 }; |
| 391 | 314 |
| 392 #if defined(OS_WIN) | 315 #if defined(OS_WIN) |
| 393 #define MAYBE_RebuildMenu DISABLED_RebuildMenu | 316 #define MAYBE_RebuildMenu DISABLED_RebuildMenu |
| 394 #else | 317 #else |
| 395 #define MAYBE_RebuildMenu RebuildMenu | 318 #define MAYBE_RebuildMenu RebuildMenu |
| 396 #endif | 319 #endif |
| 397 VIEW_TEST(MenuModelAdapterTest, MAYBE_RebuildMenu) | 320 VIEW_TEST(MenuModelAdapterTest, MAYBE_RebuildMenu) |
| OLD | NEW |