| Index: content/renderer/origin_trials/trial_token_validator_unittest.cc
|
| diff --git a/content/renderer/origin_trials/trial_token_validator_unittest.cc b/content/renderer/origin_trials/trial_token_validator_unittest.cc
|
| index 2bdb88836eebd36f3018be63fb67536b06c6a737..5d471c0ac5dbef1e27e789b15cb32535f810d04a 100644
|
| --- a/content/renderer/origin_trials/trial_token_validator_unittest.cc
|
| +++ b/content/renderer/origin_trials/trial_token_validator_unittest.cc
|
| @@ -4,6 +4,9 @@
|
|
|
| #include "content/renderer/origin_trials/trial_token_validator.h"
|
|
|
| +#include <set>
|
| +#include <string>
|
| +
|
| #include "base/macros.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/strings/string_util.h"
|
| @@ -72,12 +75,23 @@ const char kUnparsableToken[] = "abcde";
|
|
|
| class TestContentRendererClient : public content::ContentRendererClient {
|
| public:
|
| + // ContentRendererClient methods
|
| base::StringPiece GetOriginTrialPublicKey() override {
|
| return base::StringPiece(reinterpret_cast<const char*>(key_),
|
| arraysize(kTestPublicKey));
|
| }
|
| + bool IsOriginTrialFeatureDisabled(const std::string& feature) override {
|
| + return disabled_features_.count(feature) > 0;
|
| + }
|
| +
|
| + // Test setup methods
|
| void SetOriginTrialPublicKey(const uint8_t* key) { key_ = key; }
|
| + void DisableFeature(const std::string& feature) {
|
| + disabled_features_.insert(feature);
|
| + }
|
| + private:
|
| const uint8_t* key_ = nullptr;
|
| + std::set<std::string> disabled_features_;
|
| };
|
|
|
| } // namespace
|
| @@ -93,6 +107,10 @@ class TrialTokenValidatorTest : public testing::Test {
|
| test_content_renderer_client_.SetOriginTrialPublicKey(key);
|
| }
|
|
|
| + void DisableFeature(const std::string& feature) {
|
| + test_content_renderer_client_.DisableFeature(feature);
|
| + }
|
| +
|
| TrialTokenValidator trial_token_validator_;
|
|
|
| private:
|
| @@ -137,4 +155,15 @@ TEST_F(TrialTokenValidatorTest, ValidateValidTokenWithIncorrectKey) {
|
| kSampleToken, kAppropriateOrigin, kAppropriateFeatureName));
|
| }
|
|
|
| +TEST_F(TrialTokenValidatorTest, ValidatorRespectsDisabledFeatures) {
|
| + // Disable an irrelevant feature; token should still validate
|
| + DisableFeature(kInappropriateFeatureName);
|
| + EXPECT_TRUE(trial_token_validator_.validateToken(
|
| + kSampleToken, kAppropriateOrigin, kAppropriateFeatureName));
|
| + // Disable the token's feature; it should no longer be valid
|
| + DisableFeature(kAppropriateFeatureName);
|
| + EXPECT_FALSE(trial_token_validator_.validateToken(
|
| + kSampleToken, kAppropriateOrigin, kAppropriateFeatureName));
|
| +}
|
| +
|
| } // namespace content
|
|
|