Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(773)

Unified Diff: ios/clean/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm

Issue 2908623004: [ios clean] Toolbar displays total number of tabs. (Closed)
Patch Set: Minor comment changes. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/clean/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm
diff --git a/ios/clean/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm b/ios/clean/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm
index 0a0c698ddf2551994edab108a2fc19144050cb32..6132d0d25a0e52009ff8e933b4370b971f73269d 100644
--- a/ios/clean/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm
+++ b/ios/clean/chrome/browser/ui/toolbar/toolbar_mediator_unittest.mm
@@ -5,6 +5,9 @@
#import "ios/clean/chrome/browser/ui/toolbar/toolbar_mediator.h"
#include "base/memory/ptr_util.h"
+#include "ios/chrome/browser/web_state_list/fake_web_state_list_delegate.h"
+#include "ios/chrome/browser/web_state_list/web_state_list.h"
+#import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h"
#import "ios/clean/chrome/browser/ui/toolbar/toolbar_consumer.h"
#import "ios/shared/chrome/browser/ui/toolbar/toolbar_test_util.h"
#import "ios/web/public/test/fakes/test_navigation_manager.h"
@@ -18,7 +21,8 @@
#error "This file requires ARC support."
#endif
-@interface TestToolbarMediator : ToolbarMediator<CRWWebStateObserver>
+@interface TestToolbarMediator
+ : ToolbarMediator<CRWWebStateObserver, WebStateListObserving>
@end
@implementation TestToolbarMediator
@@ -26,6 +30,7 @@
namespace {
+static const int kNumberOfWebStates = 3;
static const char kTestUrl[] = "http://www.chromium.org";
class ToolbarMediatorTest : public PlatformTest {
@@ -39,11 +44,30 @@ class ToolbarMediatorTest : public PlatformTest {
mediator_ = [[TestToolbarMediator alloc] init];
consumer_ = OCMProtocolMock(@protocol(ToolbarConsumer));
}
+ // Explicitly dissconnect the mediator so there won't be any WebStateList
marq (ping after 24h) 2017/05/29 11:04:37 typo: disconnect newline before this comment?
sczs 2017/05/30 00:18:21 Done.
+ // observers when web_state_list_ gets dealloc.
+ ~ToolbarMediatorTest() override { [mediator_ disconnect]; }
marq (ping after 24h) 2017/05/29 11:04:37 I think we only use one-liner method implementatio
sczs 2017/05/30 00:18:21 Done.
marq (ping after 24h) 2017/05/30 09:47:03 Not done?
sczs 2017/05/30 18:14:12 I was pretty sure I had made this change. Now I re
protected:
+ void SetUpWebStateList() {
+ web_state_list_ = base::MakeUnique<WebStateList>(&web_state_list_delegate_);
+ for (int i = 0; i < kNumberOfWebStates; i++) {
+ InsertWebState(i);
+ }
+ }
+
+ void InsertWebState(int index) {
+ auto web_state = base::MakeUnique<web::TestWebState>();
+ GURL url("http://test/" + std::to_string(index));
+ web_state->SetCurrentURL(url);
+ web_state_list_->InsertWebState(index, std::move(web_state));
+ }
+
TestToolbarMediator* mediator_;
ToolbarTestWebState test_web_state_;
ToolbarTestNavigationManager* navigation_manager_;
+ std::unique_ptr<WebStateList> web_state_list_;
+ FakeWebStateListDelegate web_state_list_delegate_;
id consumer_;
};
@@ -65,6 +89,15 @@ TEST_F(ToolbarMediatorTest, TestToolbarSetupWithNoConsumer) {
[[consumer_ reject] setIsLoading:YES];
}
+// Test no WebstateList related setup is being done on the Toolbar if there's no
+// WebstateList.
+TEST_F(ToolbarMediatorTest, TestToolbarSetupWithNoWebstateList) {
+ mediator_.consumer = consumer_;
+ mediator_.webState = &test_web_state_;
+
+ [[[consumer_ reject] ignoringNonObjectArgs] setNumberOfTabs:0];
+}
+
// Test the Toolbar Setup gets called when the mediator's WebState and Consumer
// have been set.
TEST_F(ToolbarMediatorTest, TestToolbarSetup) {
@@ -87,10 +120,30 @@ TEST_F(ToolbarMediatorTest, TestToolbarSetupReverse) {
[[consumer_ verify] setIsLoading:YES];
}
+// Test the WebstateList related setup gets called when the mediator's WebState
+// and Consumer have been set.
+TEST_F(ToolbarMediatorTest, TestWebstateListRelatedSetup) {
+ SetUpWebStateList();
+ mediator_.webStateList = web_state_list_.get();
+ mediator_.consumer = consumer_;
+
+ [[consumer_ verify] setNumberOfTabs:3];
+}
+
+// Test the WebstateList related setup gets called when the mediator's WebState
+// and Consumer have been set in reverse order.
+TEST_F(ToolbarMediatorTest, TestWebstateListRelatedSetupReverse) {
+ mediator_.consumer = consumer_;
+ SetUpWebStateList();
+ mediator_.webStateList = web_state_list_.get();
+
+ [[consumer_ verify] setNumberOfTabs:3];
+}
+
// Test the Toolbar is updated when the Webstate observer method DidStartLoading
// is triggered by SetLoading.
TEST_F(ToolbarMediatorTest, TestDidStartLoading) {
- // Change the default loading state to false so we can verify the Webstate
+ // Change the default loading state to false to verify the Webstate
// callback with true.
test_web_state_.SetLoading(false);
mediator_.webState = &test_web_state_;
@@ -136,4 +189,26 @@ TEST_F(ToolbarMediatorTest, TestLoadingProgress) {
[[consumer_ verify] setLoadingProgress:0.42];
}
+// Test that increasing the number of Webstates will update the consumer with
+// the right value.
+TEST_F(ToolbarMediatorTest, TestIncreaseNumberOfWebstates) {
+ SetUpWebStateList();
+ mediator_.webStateList = web_state_list_.get();
+ mediator_.consumer = consumer_;
+
+ InsertWebState(3);
marq (ping after 24h) 2017/05/29 11:04:37 Mild nit: if for some reason kNumberOfWebStates is
sczs 2017/05/30 00:18:21 Done.
+ [[consumer_ verify] setNumberOfTabs:kNumberOfWebStates + 1];
+}
+
+// Test that decreasing the number of Webstates will update the consumer with
+// the right value.
+TEST_F(ToolbarMediatorTest, TestDecreaseNumberOfWebstates) {
+ SetUpWebStateList();
+ mediator_.webStateList = web_state_list_.get();
+ mediator_.consumer = consumer_;
+
+ web_state_list_->DetachWebStateAt(0);
+ [[consumer_ verify] setNumberOfTabs:kNumberOfWebStates - 1];
+}
+
} // namespace

Powered by Google App Engine
This is Rietveld 408576698