Commit 6ac76551 authored by Wez's avatar Wez Committed by Commit Bot

[base] Verify that process-wide FeatureList is not leaked by tests.

Bug: 875486
Change-Id: I902d0e8246d01239f31d7cefc88be069bdc69756
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1846043
Auto-Submit: Wez <wez@chromium.org>
Reviewed-by: default avatarAlbert J. Wong <ajwong@chromium.org>
Reviewed-by: default avatarYuchen Liu <yucliu@chromium.org>
Commit-Queue: Wez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710875}
parent 79adc1dc
......@@ -124,23 +124,31 @@ class CheckForLeakedGlobals : public testing::EmptyTestEventListener {
// Check for leaks in individual tests.
void OnTestStart(const testing::TestInfo& test) override {
feature_list_set_before_test_ = FeatureList::GetInstance();
thread_pool_set_before_test_ = ThreadPoolInstance::Get();
}
void OnTestEnd(const testing::TestInfo& test) override {
DCHECK_EQ(feature_list_set_before_test_, FeatureList::GetInstance())
<< " in test " << test.test_case_name() << "." << test.name();
DCHECK_EQ(thread_pool_set_before_test_, ThreadPoolInstance::Get())
<< " in test " << test.test_case_name() << "." << test.name();
}
// Check for leaks in test cases (consisting of one or more tests).
void OnTestCaseStart(const testing::TestCase& test_case) override {
feature_list_set_before_case_ = FeatureList::GetInstance();
thread_pool_set_before_case_ = ThreadPoolInstance::Get();
}
void OnTestCaseEnd(const testing::TestCase& test_case) override {
DCHECK_EQ(feature_list_set_before_case_, FeatureList::GetInstance())
<< " in case " << test_case.name();
DCHECK_EQ(thread_pool_set_before_case_, ThreadPoolInstance::Get())
<< " in case " << test_case.name();
}
private:
FeatureList* feature_list_set_before_test_ = nullptr;
FeatureList* feature_list_set_before_case_ = nullptr;
ThreadPoolInstance* thread_pool_set_before_test_ = nullptr;
ThreadPoolInstance* thread_pool_set_before_case_ = nullptr;
......
......@@ -29,14 +29,23 @@ class CastFeaturesTest : public testing::Test {
~CastFeaturesTest() override {}
// testing::Test implementation:
void SetUp() override { ResetCastFeaturesForTesting(); }
void TearDown() override { ResetCastFeaturesForTesting(); }
void SetUp() override {
original_feature_list_ = base::FeatureList::ClearInstanceForTesting();
ResetCastFeaturesForTesting();
}
void TearDown() override {
ResetCastFeaturesForTesting();
base::FeatureList::RestoreInstanceForTesting(
std::move(original_feature_list_));
}
private:
// A field trial list must be created before attempting to create FieldTrials.
// In production, this instance lives in CastBrowserMainParts.
base::FieldTrialList field_trial_list_;
std::unique_ptr<base::FeatureList> original_feature_list_;
DISALLOW_COPY_AND_ASSIGN(CastFeaturesTest);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment