Index: chrome/browser/component_updater/origin_trials_component_installer.cc |
diff --git a/chrome/browser/component_updater/origin_trials_component_installer.cc b/chrome/browser/component_updater/origin_trials_component_installer.cc |
index 455403d0e72d6226246ce976f611e002f3e41d90..0a651b2c6f4bb9427eb7181ef10b994acfaa9c34 100644 |
--- a/chrome/browser/component_updater/origin_trials_component_installer.cc |
+++ b/chrome/browser/component_updater/origin_trials_component_installer.cc |
@@ -20,18 +20,19 @@ |
// The client-side configuration for the origin trial framework can be |
// overridden by an installed component named 'OriginTrials' (extension id |
-// kfoklmclfodeliojeaekpoflbkkhojea. This component currently consists of just a |
+// llkgjffcdpffmhiakmfcdcblohccpfmo. This component currently consists of just a |
// manifest.json file, which can contain a custom key named 'origin-trials'. The |
// value of this key is a dictionary: |
// |
// { |
// "public-key": "<base64-encoding of replacement public key>", |
// "disabled-features": [<list of features to disable>], |
-// "revoked-tokens": "<base64-encoded data>" |
+// "disabled-tokens": |
+// { |
+// "signatures": [<list of token signatures to disable, base64-encoded>] |
+// } |
// } |
// |
-// TODO(iclelland): Implement support for revoked tokens. |
-// |
// If the component is not present in the user data directory, the default |
// configuration will be used. |
@@ -43,6 +44,8 @@ static const char kManifestOriginTrialsKey[] = "origin-trials"; |
static const char kManifestPublicKeyPath[] = "origin-trials.public-key"; |
static const char kManifestDisabledFeaturesPath[] = |
"origin-trials.disabled-features"; |
+static const char kManifestDisabledTokenSignaturesPath[] = |
+ "origin-trials.disabled-tokens.signatures"; |
// Extension id is llkgjffcdpffmhiakmfcdcblohccpfmo |
const uint8_t kSha256Hash[] = {0xbb, 0xa6, 0x95, 0x52, 0x3f, 0x55, 0xc7, 0x80, |
@@ -101,6 +104,15 @@ void OriginTrialsComponentInstallerTraits::ComponentReady( |
} else { |
local_state->ClearPref(prefs::kOriginTrialDisabledFeatures); |
} |
+ base::ListValue* disabled_tokens_list = nullptr; |
+ const bool manifest_has_disabled_tokens = manifest->GetList( |
+ kManifestDisabledTokenSignaturesPath, &disabled_tokens_list); |
+ if (manifest_has_disabled_tokens && !disabled_tokens_list->empty()) { |
+ ListPrefUpdate update(local_state, prefs::kOriginTrialDisabledTokens); |
+ update->Swap(disabled_tokens_list); |
+ } else { |
+ local_state->ClearPref(prefs::kOriginTrialDisabledTokens); |
+ } |
} |
base::FilePath OriginTrialsComponentInstallerTraits::GetRelativeInstallDir() |