| Index: components/policy/core/common/schema.cc
 | 
| diff --git a/components/policy/core/common/schema.cc b/components/policy/core/common/schema.cc
 | 
| index 180466b029ce57a2956fff3ca2dc15078da26683..d50bd8abc4d031cd8c445f32e5cb0626f5d8ad84 100644
 | 
| --- a/components/policy/core/common/schema.cc
 | 
| +++ b/components/policy/core/common/schema.cc
 | 
| @@ -737,7 +737,8 @@ bool Schema::Validate(const base::Value& value,
 | 
|  bool Schema::Normalize(base::Value* value,
 | 
|                         SchemaOnErrorStrategy strategy,
 | 
|                         std::string* error_path,
 | 
| -                       std::string* error) const {
 | 
| +                       std::string* error,
 | 
| +                       bool* changed) const {
 | 
|    if (!valid()) {
 | 
|      SchemaErrorFound(error_path, error, "The schema is invalid.");
 | 
|      return false;
 | 
| @@ -776,7 +777,8 @@ bool Schema::Normalize(base::Value* value,
 | 
|          if (!subschema.Normalize(sub_value,
 | 
|                                   StrategyForNextLevel(strategy),
 | 
|                                   error_path,
 | 
| -                                 error)) {
 | 
| +                                 error,
 | 
| +                                 changed)) {
 | 
|            // Invalid property was detected.
 | 
|            AddDictKeyPrefixToPath(it.key(), error_path);
 | 
|            if (StrategyAllowInvalidOnTopLevel(strategy))
 | 
| @@ -786,6 +788,8 @@ bool Schema::Normalize(base::Value* value,
 | 
|          }
 | 
|        }
 | 
|      }
 | 
| +    if (changed && !drop_list.empty())
 | 
| +      *changed = true;
 | 
|      for (std::vector<std::string>::const_iterator it = drop_list.begin();
 | 
|           it != drop_list.end();
 | 
|           ++it) {
 | 
| @@ -797,11 +801,11 @@ bool Schema::Normalize(base::Value* value,
 | 
|      for (size_t index = 0; index < list->GetSize(); index++) {
 | 
|        base::Value* sub_value = NULL;
 | 
|        list->Get(index, &sub_value);
 | 
| -      if (!sub_value ||
 | 
| -          !GetItems().Normalize(sub_value,
 | 
| -                                StrategyForNextLevel(strategy),
 | 
| -                                error_path,
 | 
| -                                error)) {
 | 
| +      if (!sub_value || !GetItems().Normalize(sub_value,
 | 
| +                                              StrategyForNextLevel(strategy),
 | 
| +                                              error_path,
 | 
| +                                              error,
 | 
| +                                              changed)) {
 | 
|          // Invalid list item was detected.
 | 
|          AddListIndexPrefixToPath(index, error_path);
 | 
|          if (StrategyAllowInvalidOnTopLevel(strategy))
 | 
| @@ -810,6 +814,8 @@ bool Schema::Normalize(base::Value* value,
 | 
|            return false;
 | 
|        }
 | 
|      }
 | 
| +    if (changed && !drop_list.empty())
 | 
| +      *changed = true;
 | 
|      for (std::vector<size_t>::reverse_iterator it = drop_list.rbegin();
 | 
|           it != drop_list.rend(); ++it) {
 | 
|        list->Remove(*it, NULL);
 | 
| 
 |