mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-05 03:36:08 +03:00
99 lines
2.9 KiB
C++
99 lines
2.9 KiB
C++
// Copyright 2018 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef NET_TEST_TEST_WITH_TASK_ENVIRONMENT_H_
|
|
#define NET_TEST_TEST_WITH_TASK_ENVIRONMENT_H_
|
|
|
|
#include <memory>
|
|
|
|
#include "base/test/task_environment.h"
|
|
#include "base/time/time.h"
|
|
#include "testing/gtest/include/gtest/gtest.h"
|
|
|
|
namespace base {
|
|
class TickClock;
|
|
} // namespace base
|
|
|
|
namespace net {
|
|
|
|
class FileNetLogObserver;
|
|
|
|
// Inherit from this class if a TaskEnvironment is needed in a test.
|
|
// Use in class hierachies where inheritance from ::testing::Test at the same
|
|
// time is not desirable or possible (for example, when inheriting from
|
|
// PlatformTest at the same time).
|
|
class WithTaskEnvironment {
|
|
public:
|
|
WithTaskEnvironment(const WithTaskEnvironment&) = delete;
|
|
WithTaskEnvironment& operator=(const WithTaskEnvironment&) = delete;
|
|
|
|
protected:
|
|
// Always uses MainThreadType::IO, |time_source| may optionally be provided
|
|
// to mock time.
|
|
explicit WithTaskEnvironment(
|
|
base::test::TaskEnvironment::TimeSource time_source =
|
|
base::test::TaskEnvironment::TimeSource::DEFAULT);
|
|
|
|
~WithTaskEnvironment();
|
|
|
|
[[nodiscard]] bool MainThreadIsIdle() const {
|
|
return task_environment_.MainThreadIsIdle();
|
|
}
|
|
|
|
[[nodiscard]] base::RepeatingClosure QuitClosure() {
|
|
return task_environment_.QuitClosure();
|
|
}
|
|
|
|
void RunUntilQuit() { task_environment_.RunUntilQuit(); }
|
|
|
|
void RunUntilIdle() { task_environment_.RunUntilIdle(); }
|
|
|
|
void FastForwardBy(base::TimeDelta delta) {
|
|
task_environment_.FastForwardBy(delta);
|
|
}
|
|
|
|
void FastForwardUntilNoTasksRemain() {
|
|
task_environment_.FastForwardUntilNoTasksRemain();
|
|
}
|
|
|
|
// Only valid for instances using TimeSource::MOCK_TIME.
|
|
void AdvanceClock(base::TimeDelta delta) {
|
|
task_environment_.AdvanceClock(delta);
|
|
}
|
|
|
|
[[nodiscard]] const base::TickClock* GetMockTickClock() {
|
|
return task_environment_.GetMockTickClock();
|
|
}
|
|
|
|
[[nodiscard]] size_t GetPendingMainThreadTaskCount() const {
|
|
return task_environment_.GetPendingMainThreadTaskCount();
|
|
}
|
|
|
|
[[nodiscard]] base::TimeDelta NextMainThreadPendingTaskDelay() const {
|
|
return task_environment_.NextMainThreadPendingTaskDelay();
|
|
}
|
|
|
|
private:
|
|
void MaybeStartNetLog();
|
|
|
|
base::test::TaskEnvironment task_environment_;
|
|
std::unique_ptr<FileNetLogObserver> file_net_log_observer_;
|
|
};
|
|
|
|
// Inherit from this class instead of ::testing::Test directly if a
|
|
// TaskEnvironment is needed in a test.
|
|
class TestWithTaskEnvironment : public ::testing::Test,
|
|
public WithTaskEnvironment {
|
|
public:
|
|
TestWithTaskEnvironment(const TestWithTaskEnvironment&) = delete;
|
|
TestWithTaskEnvironment& operator=(const TestWithTaskEnvironment&) = delete;
|
|
|
|
protected:
|
|
using WithTaskEnvironment::WithTaskEnvironment;
|
|
};
|
|
|
|
} // namespace net
|
|
|
|
#endif // NET_TEST_TEST_WITH_TASK_ENVIRONMENT_H_
|