Index: chrome/browser/chromeos/arc/arc_policy_bridge.cc |
diff --git a/chrome/browser/chromeos/arc/arc_policy_bridge.cc b/chrome/browser/chromeos/arc/arc_policy_bridge.cc |
index 15f7bf78cb47343bf12fd9fc865f9a94de5293b3..e472d9ad5d5cfe7b2903ad00a0e400ded09f0c7f 100644 |
--- a/chrome/browser/chromeos/arc/arc_policy_bridge.cc |
+++ b/chrome/browser/chromeos/arc/arc_policy_bridge.cc |
@@ -4,9 +4,6 @@ |
#include "chrome/browser/chromeos/arc/arc_policy_bridge.h" |
-#include <string> |
- |
-#include "base/json/json_reader.h" |
#include "base/json/json_string_value_serializer.h" |
#include "base/logging.h" |
#include "base/values.h" |
@@ -20,60 +17,6 @@ |
#include "policy/policy_constants.h" |
namespace arc { |
- |
-namespace { |
- |
-// invert_bool_value: If the Chrome policy and the ARC policy with boolean value |
-// have opposite semantics, set this to true so the bool is inverted before |
-// being added. Otherwise, set it to false. |
-void AddPolicy(const std::string arc_policy_name, |
- const std::string policy_name, |
- const policy::PolicyMap& policy_map, |
- bool invert_bool_value, |
- base::DictionaryValue& filtered_policies) { |
- const base::Value* const policy_value = policy_map.GetValue(policy_name); |
- if (policy_value) { |
- if (invert_bool_value && policy_value->IsType(base::Value::TYPE_BOOLEAN)) { |
- bool bool_value; |
- policy_value->GetAsBoolean(&bool_value); |
- filtered_policies.SetBoolean(arc_policy_name, !bool_value); |
- } else { |
- filtered_policies.Set(arc_policy_name, |
- policy_value->CreateDeepCopy().release()); |
- } |
- } |
-} |
- |
-std::string GetFilteredJSONPolicies(const policy::PolicyMap& policy_map) { |
- base::DictionaryValue filtered_policies; |
- // Parse ArcApplicationPolicy as JSON string before adding other policies to |
- // the dictionary. |
- const base::Value* const app_policy_value = |
- policy_map.GetValue(policy::key::kArcApplicationPolicy); |
- if (app_policy_value) { |
- std::string app_policy_string; |
- app_policy_value->GetAsString(&app_policy_string); |
- std::unique_ptr<base::DictionaryValue> app_policy_dict = |
- base::DictionaryValue::From(base::JSONReader::Read(app_policy_string)); |
- if (app_policy_dict) { |
- filtered_policies.Swap(app_policy_dict.get()); |
- } else { |
- LOG(ERROR) << "Value of ArcApplicationPolicy has invalid format: " |
- << app_policy_string; |
- } |
- } |
- |
- // Keep them sorted by the ARC policy names. |
- AddPolicy("cameraDisabled", policy::key::kVideoCaptureAllowed, policy_map, |
- true, filtered_policies); |
- |
- std::string policy_json; |
- JSONStringValueSerializer serializer(&policy_json); |
- serializer.Serialize(filtered_policies); |
- return policy_json; |
-} |
- |
-} // namespace |
ArcPolicyBridge::ArcPolicyBridge(ArcBridgeService* bridge_service) |
: ArcService(bridge_service), binding_(this) { |
@@ -146,4 +89,23 @@ |
->policy_service(); |
} |
+std::string ArcPolicyBridge::GetFilteredJSONPolicies( |
+ const policy::PolicyMap& policy_map) { |
+ // TODO(phweiss): Implement general filtering mechanism when more policies |
+ // need to be passed on. |
+ // Create dictionary with the desired policies. |
+ base::DictionaryValue filtered_policies; |
+ const std::string policy_name = policy::key::kArcApplicationPolicy; |
+ const base::Value* const policy_value = policy_map.GetValue(policy_name); |
+ if (policy_value) { |
+ filtered_policies.Set(policy_name, |
+ policy_value->CreateDeepCopy().release()); |
+ } |
+ // Convert dictionary to JSON. |
+ std::string policy_json; |
+ JSONStringValueSerializer serializer(&policy_json); |
+ serializer.Serialize(filtered_policies); |
+ return policy_json; |
+} |
+ |
} // namespace arc |