blob: 081bd606d6a220da5982955f856d8cce412fe83c [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/web/crw_network_activity_indicator_manager.h"
#import <UIKit/UIKit.h>
#include "base/mac/scoped_nsobject.h"
#include "testing/gtest_mac.h"
#include "testing/platform_test.h"
namespace {
NSString* const kNetworkActivityKeyOne =
@"CRWNetworkActivityIndicatorManagerTest.NetworkActivityIndicatorKeyOne";
NSString* const kNetworkActivityKeyTwo =
@"CRWNetworkActivityIndicatorManagerTest.NetworkActivityIndicatorKeyTwo";
class CRWNetworkActivityIndicatorManagerTest : public PlatformTest {
public:
CRWNetworkActivityIndicatorManagerTest()
: manager_([[CRWNetworkActivityIndicatorManager alloc] init]) {}
protected:
void ExpectNetworkActivity(NSUInteger groupOneCount,
NSUInteger groupTwoCount) {
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne],
groupOneCount);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo],
groupTwoCount);
EXPECT_EQ([manager_ numTotalNetworkTasks], groupOneCount + groupTwoCount);
if (groupOneCount + groupTwoCount > 0U) {
EXPECT_TRUE(
[[UIApplication sharedApplication]
isNetworkActivityIndicatorVisible]);
} else {
EXPECT_FALSE(
[[UIApplication sharedApplication]
isNetworkActivityIndicatorVisible]);
}
}
base::scoped_nsobject<CRWNetworkActivityIndicatorManager> manager_;
};
TEST_F(CRWNetworkActivityIndicatorManagerTest, TestNumNetworkTasksForGroup) {
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 0U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 2U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 0U);
[manager_ startNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 2U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 3U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 0U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 3U);
[manager_ stopNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyOne], 0U);
EXPECT_EQ([manager_ numNetworkTasksForGroup:kNetworkActivityKeyTwo], 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest, TestNumTotalNetworkTasks) {
EXPECT_EQ([manager_ numTotalNetworkTasks], 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
EXPECT_EQ([manager_ numTotalNetworkTasks], 2U);
[manager_ startNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
EXPECT_EQ([manager_ numTotalNetworkTasks], 5U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
EXPECT_EQ([manager_ numTotalNetworkTasks], 3U);
[manager_ stopNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
EXPECT_EQ([manager_ numTotalNetworkTasks], 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
StartStopNetworkTaskForOneGroup) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTaskForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(1U, 0U);
[manager_ stopNetworkTaskForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
StartStopNetworkTaskForTwoGroups) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTaskForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(1U, 0U);
[manager_ startNetworkTaskForGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(1U, 1U);
[manager_ stopNetworkTaskForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 1U);
[manager_ stopNetworkTaskForGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
StartStopNetworkTasksForOneGroup) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(2U, 0U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
StartStopNetworkTasksForTwoGroups) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(2U, 0U);
[manager_ startNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(2U, 3U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 3U);
[manager_ stopNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest, ClearNetworkTasksForGroup) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(2U, 0U);
[manager_ clearNetworkTasksForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest,
ClearNetworkTasksForUnusedGroup) {
ExpectNetworkActivity(0U, 0U);
[manager_ clearNetworkTasksForGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 0U);
}
TEST_F(CRWNetworkActivityIndicatorManagerTest, StartStopNetworkTasksInChunks) {
ExpectNetworkActivity(0U, 0U);
[manager_ startNetworkTasks:2U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(2U, 0U);
[manager_ startNetworkTasks:3U forGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(2U, 3U);
[manager_ startNetworkTasks:7U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(9U, 3U);
[manager_ startNetworkTaskForGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(9U, 4U);
[manager_ stopNetworkTasks:4U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(5U, 4U);
[manager_ stopNetworkTasks:2U forGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(5U, 2U);
[manager_ stopNetworkTasks:5U forGroup:kNetworkActivityKeyOne];
ExpectNetworkActivity(0U, 2U);
[manager_ clearNetworkTasksForGroup:kNetworkActivityKeyTwo];
ExpectNetworkActivity(0U, 0U);
}
} // namespace