blob: aa2862f07d4a85c52fe9f2071d70b9c6fbde78c0 [file] [log] [blame]
// Copyright 2019 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.
#include "ios/chrome/browser/metrics/chrome_browser_state_client.h"
#include "base/time/default_clock.h"
#include "base/time/default_tick_clock.h"
#include "base/time/time.h"
#include "components/network_time/network_time_tracker.h"
#include "ios/chrome/browser/application_context.h"
#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
#include "ios/chrome/browser/browser_state/test_chrome_browser_state_manager.h"
#include "ios/chrome/test/ios_chrome_scoped_testing_chrome_browser_state_manager.h"
#include "ios/web/public/test/web_task_environment.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
namespace metrics {
class ChromeBrowserStateClientTest : public PlatformTest {
public:
ChromeBrowserStateClientTest()
: scoped_browser_state_manager_(
std::make_unique<TestChromeBrowserStateManager>(
TestChromeBrowserState::Builder().Build())) {}
~ChromeBrowserStateClientTest() override {}
void SetUp() override { PlatformTest::SetUp(); }
private:
web::WebTaskEnvironment task_environment_;
IOSChromeScopedTestingChromeBrowserStateManager scoped_browser_state_manager_;
};
TEST_F(ChromeBrowserStateClientTest, GetNetworkTime) {
// Set initial time of the network clock.
base::TimeDelta resolution = base::Milliseconds(17);
base::TimeDelta latency = base::Milliseconds(50);
base::DefaultClock clock;
base::DefaultTickClock tick_clock;
GetApplicationContext()->GetNetworkTimeTracker()->UpdateNetworkTime(
clock.Now() - latency / 2, resolution, latency, tick_clock.NowTicks());
// Verify network clock gives non-null time.
ChromeBrowserStateClient profile_client;
EXPECT_FALSE(profile_client.GetNetworkTime().is_null());
}
TEST_F(ChromeBrowserStateClientTest, GetSyncService) {
ChromeBrowserStateClient profile_client;
// Verify if it possible to retrieve the instance of the SyncService
// associated with the ChromeBrowserState.
EXPECT_TRUE(profile_client.GetSyncService());
}
TEST_F(ChromeBrowserStateClientTest, GetNumberOfProfilesOnDisk) {
ChromeBrowserStateClient profile_client;
// On ChromeBrowserState was created and registered with the
// ChromeBrowserStateManager, check the client returns the correct
// value.
EXPECT_EQ(1, profile_client.GetNumberOfProfilesOnDisk());
}
} // namespace metrics