OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 #import "ios/shared/chrome/browser/ui/browser_list/browser_list.h" | 5 #import "ios/shared/chrome/browser/ui/browser_list/browser_list.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/scoped_observer.h" |
10 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" | 11 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" |
| 12 #import "ios/shared/chrome/browser/ui/browser_list/browser_list_observer.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
12 #include "testing/platform_test.h" | 14 #include "testing/platform_test.h" |
13 | 15 |
14 #if !defined(__has_feature) || !__has_feature(objc_arc) | 16 #if !defined(__has_feature) || !__has_feature(objc_arc) |
15 #error "This file requires ARC support." | 17 #error "This file requires ARC support." |
16 #endif | 18 #endif |
17 | 19 |
| 20 namespace { |
| 21 |
| 22 class BrowserListTestObserver : public BrowserListObserver { |
| 23 public: |
| 24 BrowserListTestObserver() = default; |
| 25 |
| 26 // Reset statistics whether events has been called. |
| 27 void ResetStatistics() { |
| 28 browser_created_called_ = false; |
| 29 browser_removed_called_ = false; |
| 30 } |
| 31 |
| 32 // Returns whether OnBrowserCreated() was invoked. |
| 33 bool browser_created_called() const { return browser_created_called_; } |
| 34 |
| 35 // Returns whether OnBrowserRemoved() was invoked. |
| 36 bool browser_removed_called() const { return browser_removed_called_; } |
| 37 |
| 38 // BrowserListObserver implementation. |
| 39 void OnBrowserCreated(BrowserList* browser_list, Browser* browser) override { |
| 40 browser_created_called_ = true; |
| 41 } |
| 42 |
| 43 void OnBrowserRemoved(BrowserList* browser_list, Browser* browser) override { |
| 44 browser_removed_called_ = true; |
| 45 } |
| 46 |
| 47 private: |
| 48 bool browser_created_called_ = false; |
| 49 bool browser_removed_called_ = false; |
| 50 }; |
| 51 |
| 52 } // namespace |
| 53 |
18 class BrowserListTest : public PlatformTest { | 54 class BrowserListTest : public PlatformTest { |
19 public: | 55 public: |
20 BrowserListTest() { | 56 BrowserListTest() { |
21 browser_state_ = TestChromeBrowserState::Builder().Build(); | 57 browser_state_ = TestChromeBrowserState::Builder().Build(); |
22 } | 58 } |
23 | 59 |
24 ios::ChromeBrowserState* browser_state() { return browser_state_.get(); } | 60 ios::ChromeBrowserState* browser_state() { return browser_state_.get(); } |
25 | 61 |
26 private: | 62 private: |
27 std::unique_ptr<ios::ChromeBrowserState> browser_state_; | 63 std::unique_ptr<ios::ChromeBrowserState> browser_state_; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 EXPECT_EQ(1, browser_list->GetIndexOfBrowser(browser_1)); | 120 EXPECT_EQ(1, browser_list->GetIndexOfBrowser(browser_1)); |
85 EXPECT_EQ(browser_1, browser_list->GetBrowserAtIndex(1)); | 121 EXPECT_EQ(browser_1, browser_list->GetBrowserAtIndex(1)); |
86 | 122 |
87 // browser_0 is now invalid. | 123 // browser_0 is now invalid. |
88 browser_list->CloseBrowserAtIndex(0); | 124 browser_list->CloseBrowserAtIndex(0); |
89 EXPECT_EQ(BrowserList::kInvalidIndex, | 125 EXPECT_EQ(BrowserList::kInvalidIndex, |
90 browser_list->GetIndexOfBrowser(browser_0)); | 126 browser_list->GetIndexOfBrowser(browser_0)); |
91 EXPECT_EQ(0, browser_list->GetIndexOfBrowser(browser_1)); | 127 EXPECT_EQ(0, browser_list->GetIndexOfBrowser(browser_1)); |
92 EXPECT_EQ(browser_1, browser_list->GetBrowserAtIndex(0)); | 128 EXPECT_EQ(browser_1, browser_list->GetBrowserAtIndex(0)); |
93 } | 129 } |
| 130 |
| 131 TEST_F(BrowserListTest, Observer) { |
| 132 BrowserList* browser_list = BrowserList::FromBrowserState(browser_state()); |
| 133 |
| 134 BrowserListTestObserver observer; |
| 135 ScopedObserver<BrowserList, BrowserListObserver> scoped_observer(&observer); |
| 136 scoped_observer.Add(browser_list); |
| 137 |
| 138 observer.ResetStatistics(); |
| 139 ASSERT_FALSE(observer.browser_created_called()); |
| 140 ASSERT_FALSE(observer.browser_removed_called()); |
| 141 |
| 142 browser_list->CreateNewBrowser(); |
| 143 EXPECT_TRUE(observer.browser_created_called()); |
| 144 EXPECT_FALSE(observer.browser_removed_called()); |
| 145 |
| 146 observer.ResetStatistics(); |
| 147 ASSERT_FALSE(observer.browser_created_called()); |
| 148 ASSERT_FALSE(observer.browser_removed_called()); |
| 149 |
| 150 browser_list->CloseBrowserAtIndex(0); |
| 151 EXPECT_FALSE(observer.browser_created_called()); |
| 152 EXPECT_TRUE(observer.browser_removed_called()); |
| 153 } |
OLD | NEW |