| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/common/schema.h" | 5 #include "components/policy/core/common/schema.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 if (!*it || !GetItems().Validate(**it)) | 493 if (!*it || !GetItems().Validate(**it)) |
| 494 return false; | 494 return false; |
| 495 } | 495 } |
| 496 } | 496 } |
| 497 | 497 |
| 498 return true; | 498 return true; |
| 499 } | 499 } |
| 500 | 500 |
| 501 // static | 501 // static |
| 502 Schema Schema::Parse(const std::string& content, std::string* error) { | 502 Schema Schema::Parse(const std::string& content, std::string* error) { |
| 503 // Validate as a generic JSON schema. | 503 // Validate as a generic JSON schema, and ignore unknown attributes; they |
| 504 // may become used in a future version of the schema format. |
| 504 scoped_ptr<base::DictionaryValue> dict = | 505 scoped_ptr<base::DictionaryValue> dict = |
| 505 JSONSchemaValidator::IsValidSchema(content, error); | 506 JSONSchemaValidator::IsValidSchema(content, false, error); |
| 506 if (!dict) | 507 if (!dict) |
| 507 return Schema(); | 508 return Schema(); |
| 508 | 509 |
| 509 // Validate the main type. | 510 // Validate the main type. |
| 510 std::string string_value; | 511 std::string string_value; |
| 511 if (!dict->GetString(schema::kType, &string_value) || | 512 if (!dict->GetString(schema::kType, &string_value) || |
| 512 string_value != schema::kObject) { | 513 string_value != schema::kObject) { |
| 513 *error = | 514 *error = |
| 514 "The main schema must have a type attribute with \"object\" value."; | 515 "The main schema must have a type attribute with \"object\" value."; |
| 515 return Schema(); | 516 return Schema(); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 577 | 578 |
| 578 Schema Schema::GetItems() const { | 579 Schema Schema::GetItems() const { |
| 579 CHECK(valid()); | 580 CHECK(valid()); |
| 580 CHECK_EQ(base::Value::TYPE_LIST, type()); | 581 CHECK_EQ(base::Value::TYPE_LIST, type()); |
| 581 if (node_->extra == kInvalid) | 582 if (node_->extra == kInvalid) |
| 582 return Schema(); | 583 return Schema(); |
| 583 return Schema(storage_, storage_->schema(node_->extra)); | 584 return Schema(storage_, storage_->schema(node_->extra)); |
| 584 } | 585 } |
| 585 | 586 |
| 586 } // namespace policy | 587 } // namespace policy |
| OLD | NEW |