| Index: base/feature_list_unittest.cc
|
| diff --git a/base/feature_list_unittest.cc b/base/feature_list_unittest.cc
|
| index 9d1dcb72f3094a963f71d8c889cb483b29a4a99e..cd234cdb98d2e424c4c49e8a62fef8b2b7bba02f 100644
|
| --- a/base/feature_list_unittest.cc
|
| +++ b/base/feature_list_unittest.cc
|
| @@ -13,6 +13,7 @@
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "base/metrics/field_trial.h"
|
| +#include "base/metrics/persistent_memory_allocator.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -468,4 +469,36 @@ TEST_F(FeatureListTest, UninitializedInstance_IsEnabledReturnsFalse) {
|
| EXPECT_FALSE(FeatureList::IsEnabled(kFeatureOffByDefault));
|
| }
|
|
|
| +TEST_F(FeatureListTest, StoreAndRetrieveFeaturesFromSharedMemory) {
|
| + std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
|
| +
|
| + // Create some overrides.
|
| + feature_list->RegisterOverride(kFeatureOffByDefaultName,
|
| + FeatureList::OVERRIDE_ENABLE_FEATURE, nullptr);
|
| + feature_list->RegisterOverride(
|
| + kFeatureOnByDefaultName, FeatureList::OVERRIDE_DISABLE_FEATURE, nullptr);
|
| + feature_list->FinalizeInitialization();
|
| +
|
| + // Create an allocator and store the overrides.
|
| + std::unique_ptr<SharedMemory> shm(new SharedMemory());
|
| + shm->CreateAndMapAnonymous(4 << 10);
|
| + SharedPersistentMemoryAllocator allocator(std::move(shm), 1, "", false);
|
| + feature_list->AddFeaturesToAllocator(&allocator);
|
| +
|
| + std::unique_ptr<base::FeatureList> feature_list2(new base::FeatureList);
|
| +
|
| + // Check that the new feature list is empty.
|
| + EXPECT_FALSE(feature_list2->IsFeatureOverriddenFromCommandLine(
|
| + kFeatureOffByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE));
|
| + EXPECT_FALSE(feature_list2->IsFeatureOverriddenFromCommandLine(
|
| + kFeatureOnByDefaultName, FeatureList::OVERRIDE_DISABLE_FEATURE));
|
| +
|
| + feature_list2->InitializeFromSharedMemory(&allocator);
|
| + // Check that the new feature list now has 2 overrides.
|
| + EXPECT_TRUE(feature_list2->IsFeatureOverriddenFromCommandLine(
|
| + kFeatureOffByDefaultName, FeatureList::OVERRIDE_ENABLE_FEATURE));
|
| + EXPECT_TRUE(feature_list2->IsFeatureOverriddenFromCommandLine(
|
| + kFeatureOnByDefaultName, FeatureList::OVERRIDE_DISABLE_FEATURE));
|
| +}
|
| +
|
| } // namespace base
|
|
|