OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/common/origin_trials/chrome_origin_trial_policy.h" | 5 #include "chrome/common/origin_trials/chrome_origin_trial_policy.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 21 matching lines...) Expand all Loading... |
32 if (base::CommandLine::InitializedForCurrentProcess()) { | 32 if (base::CommandLine::InitializedForCurrentProcess()) { |
33 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 33 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
34 if (command_line->HasSwitch(switches::kOriginTrialPublicKey)) { | 34 if (command_line->HasSwitch(switches::kOriginTrialPublicKey)) { |
35 SetPublicKeyFromASCIIString( | 35 SetPublicKeyFromASCIIString( |
36 command_line->GetSwitchValueASCII(switches::kOriginTrialPublicKey)); | 36 command_line->GetSwitchValueASCII(switches::kOriginTrialPublicKey)); |
37 } | 37 } |
38 if (command_line->HasSwitch(switches::kOriginTrialDisabledFeatures)) { | 38 if (command_line->HasSwitch(switches::kOriginTrialDisabledFeatures)) { |
39 SetDisabledFeatures(command_line->GetSwitchValueASCII( | 39 SetDisabledFeatures(command_line->GetSwitchValueASCII( |
40 switches::kOriginTrialDisabledFeatures)); | 40 switches::kOriginTrialDisabledFeatures)); |
41 } | 41 } |
| 42 if (command_line->HasSwitch(switches::kOriginTrialDisabledTokens)) { |
| 43 SetDisabledTokens(command_line->GetSwitchValueASCII( |
| 44 switches::kOriginTrialDisabledTokens)); |
| 45 } |
42 } | 46 } |
43 } | 47 } |
44 | 48 |
45 ChromeOriginTrialPolicy::~ChromeOriginTrialPolicy() {} | 49 ChromeOriginTrialPolicy::~ChromeOriginTrialPolicy() {} |
46 | 50 |
47 base::StringPiece ChromeOriginTrialPolicy::GetPublicKey() const { | 51 base::StringPiece ChromeOriginTrialPolicy::GetPublicKey() const { |
48 return base::StringPiece(public_key_); | 52 return base::StringPiece(public_key_); |
49 } | 53 } |
50 | 54 |
51 bool ChromeOriginTrialPolicy::IsFeatureDisabled( | 55 bool ChromeOriginTrialPolicy::IsFeatureDisabled( |
52 base::StringPiece feature) const { | 56 base::StringPiece feature) const { |
53 return disabled_features_.count(feature.as_string()) > 0; | 57 return disabled_features_.count(feature.as_string()) > 0; |
54 } | 58 } |
55 | 59 |
| 60 bool ChromeOriginTrialPolicy::IsTokenDisabled( |
| 61 base::StringPiece token_signature) const { |
| 62 return disabled_tokens_.count(token_signature.as_string()) > 0; |
| 63 } |
| 64 |
56 bool ChromeOriginTrialPolicy::SetPublicKeyFromASCIIString( | 65 bool ChromeOriginTrialPolicy::SetPublicKeyFromASCIIString( |
57 const std::string& ascii_public_key) { | 66 const std::string& ascii_public_key) { |
58 // Base64-decode the incoming string. Set the key if it is correctly formatted | 67 // Base64-decode the incoming string. Set the key if it is correctly formatted |
59 std::string new_public_key; | 68 std::string new_public_key; |
60 if (!base::Base64Decode(ascii_public_key, &new_public_key)) | 69 if (!base::Base64Decode(ascii_public_key, &new_public_key)) |
61 return false; | 70 return false; |
62 if (new_public_key.size() != 32) | 71 if (new_public_key.size() != 32) |
63 return false; | 72 return false; |
64 public_key_.swap(new_public_key); | 73 public_key_.swap(new_public_key); |
65 return true; | 74 return true; |
66 } | 75 } |
67 | 76 |
68 bool ChromeOriginTrialPolicy::SetDisabledFeatures( | 77 bool ChromeOriginTrialPolicy::SetDisabledFeatures( |
69 const std::string& disabled_feature_list) { | 78 const std::string& disabled_feature_list) { |
70 std::set<std::string> new_disabled_features; | 79 std::set<std::string> new_disabled_features; |
71 const std::vector<std::string> features = | 80 const std::vector<std::string> features = |
72 base::SplitString(disabled_feature_list, "|", base::TRIM_WHITESPACE, | 81 base::SplitString(disabled_feature_list, "|", base::TRIM_WHITESPACE, |
73 base::SPLIT_WANT_NONEMPTY); | 82 base::SPLIT_WANT_NONEMPTY); |
74 for (const std::string& feature : features) | 83 for (const std::string& feature : features) |
75 new_disabled_features.insert(feature); | 84 new_disabled_features.insert(feature); |
76 disabled_features_.swap(new_disabled_features); | 85 disabled_features_.swap(new_disabled_features); |
77 return true; | 86 return true; |
78 } | 87 } |
| 88 |
| 89 bool ChromeOriginTrialPolicy::SetDisabledTokens( |
| 90 const std::string& disabled_token_list) { |
| 91 std::set<std::string> new_disabled_tokens; |
| 92 const std::vector<std::string> tokens = |
| 93 base::SplitString(disabled_token_list, "|", base::TRIM_WHITESPACE, |
| 94 base::SPLIT_WANT_NONEMPTY); |
| 95 for (const std::string& ascii_token : tokens) { |
| 96 std::string token_signature; |
| 97 if (!base::Base64Decode(ascii_token, &token_signature)) |
| 98 continue; |
| 99 if (token_signature.size() != 64) |
| 100 continue; |
| 101 new_disabled_tokens.insert(token_signature); |
| 102 } |
| 103 disabled_tokens_.swap(new_disabled_tokens); |
| 104 return true; |
| 105 } |
OLD | NEW |