| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "ui/base/l10n/l10n_util.h" | 5 #include "ui/base/l10n/l10n_util.h" |
| 6 #include "ui/base/models/menu_model.h" | 6 #include "ui/base/models/menu_model.h" |
| 7 #include "ui/base/models/menu_model_delegate.h" | 7 #include "ui/base/models/menu_model_delegate.h" |
| 8 #include "views/controls/menu/menu_item_view.h" | 8 #include "views/controls/menu/menu_item_view.h" |
| 9 #include "views/controls/menu/menu_model_adapter.h" | 9 #include "views/controls/menu/menu_model_adapter.h" |
| 10 #include "views/controls/menu/submenu_view.h" | 10 #include "views/controls/menu/submenu_view.h" |
| 11 #include "views/test/views_test_base.h" | 11 #include "views/test/views_test_base.h" |
| 12 | 12 |
| 13 namespace { | 13 namespace { |
| 14 | 14 |
| 15 // Base command id for test menu and its submenu. | 15 // Base command id for test menu and its submenu. |
| 16 const int kRootIdBase = 100; | 16 const int kRootIdBase = 100; |
| 17 const int kSubmenuIdBase = 200; | 17 const int kSubmenuIdBase = 200; |
| 18 | 18 |
| 19 // Offset to return for GetFirstItemIndex(). This is an arbitrary | 19 // Offset to return for GetFirstItemIndex(). This is an arbitrary |
| 20 // number to ensure that we aren't assuming it is 0. | 20 // number to ensure that we aren't assuming it is 0. |
| 21 const int kFirstItemIndex = 25; | 21 const int kFirstItemIndex = 25; |
| 22 | 22 |
| 23 class MenuModelBase : public ui::MenuModel { | 23 class MenuModelBase : public ui::MenuModel { |
| 24 public: | 24 public: |
| 25 MenuModelBase(int command_id_base) : command_id_base_(command_id_base), | 25 MenuModelBase(int command_id_base) : command_id_base_(command_id_base), |
| 26 last_activation_(-1) { | 26 last_activation_(-1) { |
| 27 } | 27 } |
| 28 | 28 |
| 29 virtual ~MenuModelBase() { |
| 30 } |
| 31 |
| 29 // ui::MenuModel implementation: | 32 // ui::MenuModel implementation: |
| 30 | 33 |
| 31 virtual bool HasIcons() const OVERRIDE { | 34 virtual bool HasIcons() const OVERRIDE { |
| 32 return false; | 35 return false; |
| 33 } | 36 } |
| 34 | 37 |
| 35 virtual int GetFirstItemIndex(gfx::NativeMenu native_menu) const OVERRIDE { | 38 virtual int GetFirstItemIndex(gfx::NativeMenu native_menu) const OVERRIDE { |
| 36 return kFirstItemIndex; | 39 return kFirstItemIndex; |
| 37 } | 40 } |
| 38 | 41 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 DISALLOW_COPY_AND_ASSIGN(MenuModelBase); | 153 DISALLOW_COPY_AND_ASSIGN(MenuModelBase); |
| 151 }; | 154 }; |
| 152 | 155 |
| 153 class SubmenuModel : public MenuModelBase { | 156 class SubmenuModel : public MenuModelBase { |
| 154 public: | 157 public: |
| 155 SubmenuModel() : MenuModelBase(kSubmenuIdBase) { | 158 SubmenuModel() : MenuModelBase(kSubmenuIdBase) { |
| 156 items_.push_back(Item(TYPE_COMMAND, "submenu item 0", NULL)); | 159 items_.push_back(Item(TYPE_COMMAND, "submenu item 0", NULL)); |
| 157 items_.push_back(Item(TYPE_COMMAND, "submenu item 1", NULL)); | 160 items_.push_back(Item(TYPE_COMMAND, "submenu item 1", NULL)); |
| 158 } | 161 } |
| 159 | 162 |
| 163 virtual ~SubmenuModel() { |
| 164 } |
| 165 |
| 160 private: | 166 private: |
| 161 DISALLOW_COPY_AND_ASSIGN(SubmenuModel); | 167 DISALLOW_COPY_AND_ASSIGN(SubmenuModel); |
| 162 }; | 168 }; |
| 163 | 169 |
| 164 class RootModel : public MenuModelBase { | 170 class RootModel : public MenuModelBase { |
| 165 public: | 171 public: |
| 166 RootModel() : MenuModelBase(kRootIdBase) { | 172 RootModel() : MenuModelBase(kRootIdBase) { |
| 167 submenu_model_.reset(new SubmenuModel); | 173 submenu_model_.reset(new SubmenuModel); |
| 168 | 174 |
| 169 items_.push_back(Item(TYPE_COMMAND, "command 0", NULL)); | 175 items_.push_back(Item(TYPE_COMMAND, "command 0", NULL)); |
| 170 items_.push_back(Item(TYPE_CHECK, "check 1", NULL)); | 176 items_.push_back(Item(TYPE_CHECK, "check 1", NULL)); |
| 171 items_.push_back(Item(TYPE_SEPARATOR, "", NULL)); | 177 items_.push_back(Item(TYPE_SEPARATOR, "", NULL)); |
| 172 items_.push_back(Item(TYPE_SUBMENU, "submenu 3", submenu_model_.get())); | 178 items_.push_back(Item(TYPE_SUBMENU, "submenu 3", submenu_model_.get())); |
| 173 items_.push_back(Item(TYPE_RADIO, "radio 4", NULL)); | 179 items_.push_back(Item(TYPE_RADIO, "radio 4", NULL)); |
| 174 } | 180 } |
| 175 | 181 |
| 182 virtual ~RootModel() { |
| 183 } |
| 184 |
| 176 private: | 185 private: |
| 177 scoped_ptr<MenuModel> submenu_model_; | 186 scoped_ptr<MenuModel> submenu_model_; |
| 178 | 187 |
| 179 DISALLOW_COPY_AND_ASSIGN(RootModel); | 188 DISALLOW_COPY_AND_ASSIGN(RootModel); |
| 180 }; | 189 }; |
| 181 | 190 |
| 182 } // namespace | 191 } // namespace |
| 183 | 192 |
| 184 namespace views { | 193 namespace views { |
| 185 | 194 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 } | 289 } |
| 281 | 290 |
| 282 // Check activation. | 291 // Check activation. |
| 283 static_cast<views::MenuDelegate*>(&delegate)->ExecuteCommand(id); | 292 static_cast<views::MenuDelegate*>(&delegate)->ExecuteCommand(id); |
| 284 EXPECT_EQ(i + kFirstItemIndex, submodel->last_activation()); | 293 EXPECT_EQ(i + kFirstItemIndex, submodel->last_activation()); |
| 285 submodel->set_last_activation(-1); | 294 submodel->set_last_activation(-1); |
| 286 } | 295 } |
| 287 } | 296 } |
| 288 | 297 |
| 289 } // namespace views | 298 } // namespace views |
| OLD | NEW |