OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/policy/core/browser/android/policy_converter.h" | 5 #include "components/policy/core/browser/android/policy_converter.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/android/jni_android.h" | 10 #include "base/android/jni_android.h" |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 case base::Value::Type::LIST: { | 169 case base::Value::Type::LIST: { |
170 std::string string_value; | 170 std::string string_value; |
171 if (value->GetAsString(&string_value)) { | 171 if (value->GetAsString(&string_value)) { |
172 std::unique_ptr<base::Value> decoded_value = | 172 std::unique_ptr<base::Value> decoded_value = |
173 base::JSONReader::Read(string_value); | 173 base::JSONReader::Read(string_value); |
174 if (decoded_value) | 174 if (decoded_value) |
175 return decoded_value; | 175 return decoded_value; |
176 } | 176 } |
177 return value; | 177 return value; |
178 } | 178 } |
| 179 case base::Value::Type::DELETED: { |
| 180 // TODO(crbug.com/697817): This means a use-after-free. |
| 181 CHECK(false); |
| 182 return nullptr; |
| 183 } |
179 } | 184 } |
180 | 185 |
181 NOTREACHED(); | 186 NOTREACHED(); |
182 return std::unique_ptr<base::Value>(); | 187 return std::unique_ptr<base::Value>(); |
183 } | 188 } |
184 | 189 |
185 // static | 190 // static |
186 bool PolicyConverter::Register(JNIEnv* env) { | 191 bool PolicyConverter::Register(JNIEnv* env) { |
187 return RegisterNativesImpl(env); | 192 return RegisterNativesImpl(env); |
188 } | 193 } |
189 | 194 |
190 void PolicyConverter::SetPolicyValue(const std::string& key, | 195 void PolicyConverter::SetPolicyValue(const std::string& key, |
191 std::unique_ptr<base::Value> value) { | 196 std::unique_ptr<base::Value> value) { |
192 const Schema schema = policy_schema_->GetKnownProperty(key); | 197 const Schema schema = policy_schema_->GetKnownProperty(key); |
193 const PolicyNamespace ns(POLICY_DOMAIN_CHROME, std::string()); | 198 const PolicyNamespace ns(POLICY_DOMAIN_CHROME, std::string()); |
194 policy_bundle_->Get(ns).Set( | 199 policy_bundle_->Get(ns).Set( |
195 key, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM, | 200 key, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, POLICY_SOURCE_PLATFORM, |
196 ConvertValueToSchema(std::move(value), schema), nullptr); | 201 ConvertValueToSchema(std::move(value), schema), nullptr); |
197 } | 202 } |
198 | 203 |
199 } // namespace android | 204 } // namespace android |
200 } // namespace policy | 205 } // namespace policy |
OLD | NEW |