Index: ios/shared/chrome/browser/ui/browser_list/browser_list.mm |
diff --git a/ios/shared/chrome/browser/ui/browser_list/browser_list.mm b/ios/shared/chrome/browser/ui/browser_list/browser_list.mm |
index 10d966608d5a0f46ee4ad261f15421fe42f2ad37..94a039f48422f4e67c5ffcbe98657d42b440e23f 100644 |
--- a/ios/shared/chrome/browser/ui/browser_list/browser_list.mm |
+++ b/ios/shared/chrome/browser/ui/browser_list/browser_list.mm |
@@ -9,6 +9,7 @@ |
#include "base/logging.h" |
#include "base/memory/ptr_util.h" |
#include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
+#import "ios/shared/chrome/browser/ui/browser_list/browser_list_observer.h" |
#if !defined(__has_feature) || !__has_feature(objc_arc) |
#error "This file requires ARC support." |
@@ -58,12 +59,25 @@ int BrowserList::GetIndexOfBrowser(const Browser* browser) const { |
Browser* BrowserList::CreateNewBrowser() { |
browsers_.push_back(base::MakeUnique<Browser>(browser_state_)); |
- return browsers_.back().get(); |
+ Browser* browser_created = browsers_.back().get(); |
+ for (BrowserListObserver& observer : observers_) |
+ observer.OnBrowserCreated(this, browser_created); |
+ return browser_created; |
} |
void BrowserList::CloseBrowserAtIndex(int index) { |
- DCHECK(ContainsIndex(index)); |
+ Browser* browser_removed = GetBrowserAtIndex(index); |
+ for (BrowserListObserver& observer : observers_) |
+ observer.OnBrowserRemoved(this, browser_removed); |
browsers_.erase(browsers_.begin() + index); |
} |
+void BrowserList::AddObserver(BrowserListObserver* observer) { |
+ observers_.AddObserver(observer); |
+} |
+ |
+void BrowserList::RemoveObserver(BrowserListObserver* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
const int BrowserList::kInvalidIndex; |