diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-02 00:35:19 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-02 00:35:19 +0000 |
commit | f7464bd0ed5ac1cb6b489454e5f44fe6e26afeae (patch) | |
tree | 3da3c15b557ae8a2cb52a521082f37d854d137d5 | |
parent | 122d07816c975828f6d51313351b5d55d2d54665 (diff) | |
download | chromium_src-f7464bd0ed5ac1cb6b489454e5f44fe6e26afeae.zip chromium_src-f7464bd0ed5ac1cb6b489454e5f44fe6e26afeae.tar.gz chromium_src-f7464bd0ed5ac1cb6b489454e5f44fe6e26afeae.tar.bz2 |
Cleanup: Remove vector::at() calls in SimpleMenuModel. Do CHECKs instead.
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/10458045
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@140139 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ui/base/models/simple_menu_model.cc | 32 | ||||
-rw-r--r-- | ui/base/models/simple_menu_model.h | 3 |
2 files changed, 21 insertions, 14 deletions
diff --git a/ui/base/models/simple_menu_model.cc b/ui/base/models/simple_menu_model.cc index 3a38b0d..7537faf 100644 --- a/ui/base/models/simple_menu_model.cc +++ b/ui/base/models/simple_menu_model.cc @@ -185,7 +185,7 @@ void SimpleMenuModel::InsertSubMenuWithStringIdAt( } void SimpleMenuModel::SetIcon(int index, const gfx::ImageSkia& icon) { - items_[index].icon = icon; + items_[ValidateItemIndex(index)].icon = icon; } void SimpleMenuModel::Clear() { @@ -194,7 +194,7 @@ void SimpleMenuModel::Clear() { int SimpleMenuModel::GetIndexOfCommandId(int command_id) { for (ItemVector::iterator i = items_.begin(); i != items_.end(); ++i) { - if ((*i).command_id == command_id) { + if (i->command_id == command_id) { return FlipIndex(static_cast<int>(std::distance(items_.begin(), i))); } } @@ -218,17 +218,17 @@ int SimpleMenuModel::GetItemCount() const { } MenuModel::ItemType SimpleMenuModel::GetTypeAt(int index) const { - return items_.at(FlipIndex(index)).type; + return items_[ValidateItemIndex(FlipIndex(index))].type; } int SimpleMenuModel::GetCommandIdAt(int index) const { - return items_.at(FlipIndex(index)).command_id; + return items_[ValidateItemIndex(FlipIndex(index))].command_id; } string16 SimpleMenuModel::GetLabelAt(int index) const { if (IsItemDynamicAt(index)) return delegate_->GetLabelForCommandId(GetCommandIdAt(index)); - return items_.at(FlipIndex(index)).label; + return items_[ValidateItemIndex(FlipIndex(index))].label; } bool SimpleMenuModel::IsItemDynamicAt(int index) const { @@ -249,20 +249,20 @@ bool SimpleMenuModel::GetAcceleratorAt(int index, bool SimpleMenuModel::IsItemCheckedAt(int index) const { if (!delegate_) return false; - int item_index = FlipIndex(index); - MenuModel::ItemType item_type = items_[item_index].type; + MenuModel::ItemType item_type = GetTypeAt(index); return (item_type == TYPE_CHECK || item_type == TYPE_RADIO) ? delegate_->IsCommandIdChecked(GetCommandIdAt(index)) : false; } int SimpleMenuModel::GetGroupIdAt(int index) const { - return items_.at(FlipIndex(index)).group_id; + return items_[ValidateItemIndex(FlipIndex(index))].group_id; } bool SimpleMenuModel::GetIconAt(int index, gfx::ImageSkia* icon) { if (IsItemDynamicAt(index)) return delegate_->GetIconForCommandId(GetCommandIdAt(index), icon); + ValidateItemIndex(index); if (items_[index].icon.isNull()) return false; @@ -271,21 +271,19 @@ bool SimpleMenuModel::GetIconAt(int index, gfx::ImageSkia* icon) { } ButtonMenuItemModel* SimpleMenuModel::GetButtonMenuItemAt(int index) const { - return items_.at(FlipIndex(index)).button_model; + return items_[ValidateItemIndex(FlipIndex(index))].button_model; } bool SimpleMenuModel::IsEnabledAt(int index) const { int command_id = GetCommandIdAt(index); - if (!delegate_ || command_id == kSeparatorId || - items_.at(FlipIndex(index)).button_model) + if (!delegate_ || command_id == kSeparatorId || GetButtonMenuItemAt(index)) return true; return delegate_->IsCommandIdEnabled(command_id); } bool SimpleMenuModel::IsVisibleAt(int index) const { int command_id = GetCommandIdAt(index); - if (!delegate_ || command_id == kSeparatorId || - items_.at(FlipIndex(index)).button_model) + if (!delegate_ || command_id == kSeparatorId || GetButtonMenuItemAt(index)) return true; return delegate_->IsCommandIdVisible(command_id); } @@ -306,7 +304,7 @@ void SimpleMenuModel::ActivatedAt(int index, int event_flags) { } MenuModel* SimpleMenuModel::GetSubmenuModelAt(int index) const { - return items_.at(FlipIndex(index)).submenu; + return items_[ValidateItemIndex(FlipIndex(index))].submenu; } void SimpleMenuModel::MenuWillShow() { @@ -340,6 +338,12 @@ int SimpleMenuModel::FlipIndex(int index) const { //////////////////////////////////////////////////////////////////////////////// // SimpleMenuModel, Private: +int SimpleMenuModel::ValidateItemIndex(int index) const { + CHECK_GE(index, 0); + CHECK_LT(static_cast<size_t>(index), items_.size()); + return index; +} + void SimpleMenuModel::AppendItem(const Item& item) { ValidateItem(item); items_.push_back(item); diff --git a/ui/base/models/simple_menu_model.h b/ui/base/models/simple_menu_model.h index 217a0cf..e7c41d9 100644 --- a/ui/base/models/simple_menu_model.h +++ b/ui/base/models/simple_menu_model.h @@ -155,6 +155,9 @@ class UI_EXPORT SimpleMenuModel : public MenuModel { typedef std::vector<Item> ItemVector; + // Caller needs to call FlipIndex() if necessary. Returns |index|. + int ValidateItemIndex(int index) const; + // Functions for inserting items into |items_|. void AppendItem(const Item& item); void InsertItemAtIndex(const Item& item, int index); |