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 |