Index: chrome/browser/infobars/infobar_tab_helper.cc |
=================================================================== |
--- chrome/browser/infobars/infobar_tab_helper.cc (revision 134398) |
+++ chrome/browser/infobars/infobar_tab_helper.cc (working copy) |
@@ -38,8 +38,10 @@ |
return; |
} |
- for (size_t i = 0; i < infobars_.size(); ++i) { |
- if (GetInfoBarDelegateAt(i)->EqualsDelegate(delegate)) { |
+ for (InfoBars::const_iterator i(infobars_.begin()); i != infobars_.end(); |
+ ++i) { |
+ if ((*i)->EqualsDelegate(delegate)) { |
+ DCHECK_NE(*i, delegate); |
delegate->InfoBarClosed(); |
return; |
} |
@@ -75,17 +77,14 @@ |
return; |
} |
- size_t i; |
- for (i = 0; i < infobars_.size(); ++i) { |
- if (GetInfoBarDelegateAt(i) == old_delegate) |
- break; |
- } |
- DCHECK_LT(i, infobars_.size()); |
+ InfoBars::iterator i(std::find(infobars_.begin(), infobars_.end(), |
+ old_delegate)); |
+ DCHECK(i != infobars_.end()); |
- infobars_.insert(infobars_.begin() + i, new_delegate); |
+ i = infobars_.insert(i, new_delegate) + 1; |
// Remove the old delegate before notifying, so that if any observers call |
// back to AddInfoBar() or similar, we don't dupe-check against this delegate. |
- infobars_.erase(infobars_.begin() + i + 1); |
+ infobars_.erase(i); |
old_delegate->clear_owner(); |
InfoBarReplacedDetails replaced_details(old_delegate, new_delegate); |
@@ -106,18 +105,13 @@ |
return; |
} |
- size_t i; |
- for (i = 0; i < infobars_.size(); ++i) { |
- if (GetInfoBarDelegateAt(i) == delegate) |
- break; |
- } |
- DCHECK_LT(i, infobars_.size()); |
- InfoBarDelegate* infobar = infobars_[i]; |
+ InfoBars::iterator i(std::find(infobars_.begin(), infobars_.end(), delegate)); |
+ DCHECK(i != infobars_.end()); |
- infobar->clear_owner(); |
+ delegate->clear_owner(); |
// Remove the delegate before notifying, so that if any observers call back to |
// AddInfoBar() or similar, we don't dupe-check against this delegate. |
- infobars_.erase(infobars_.begin() + i); |
+ infobars_.erase(i); |
// Remove ourselves as an observer if we are tracking no more InfoBars. |
if (infobars_.empty()) { |
registrar_.Remove( |
@@ -126,7 +120,7 @@ |
&web_contents()->GetController())); |
} |
- InfoBarRemovedDetails removed_details(infobar, animate); |
+ InfoBarRemovedDetails removed_details(delegate, animate); |
content::NotificationService::current()->Notify( |
chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, |
content::Source<InfoBarTabHelper>(this), |