Index: chrome/browser/policy/schema_map.h |
diff --git a/chrome/browser/policy/schema_map.h b/chrome/browser/policy/schema_map.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..44e9c6c6c09c6f97ef27405561992e0e4cfe6a4b |
--- /dev/null |
+++ b/chrome/browser/policy/schema_map.h |
@@ -0,0 +1,56 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_POLICY_SCHEMA_MAP_H_ |
+#define CHROME_BROWSER_POLICY_SCHEMA_MAP_H_ |
+ |
+#include <map> |
+#include <string> |
+ |
+#include "base/memory/ref_counted.h" |
+#include "components/policy/core/common/policy_namespace.h" |
+ |
+namespace policy { |
+ |
+class PolicyBundle; |
+class Schema; |
+ |
+typedef std::map<std::string, Schema> ComponentMap; |
bartfab (slow)
2013/10/30 12:34:49
Is a forward-declaration of Schema really sufficie
Joao da Silva
2013/10/31 13:34:56
It is, but this could be confusing for users of th
|
+typedef std::map<PolicyDomain, ComponentMap> DomainMap; |
+ |
+// Contains a mapping of policy namespaces (domain + component ID) to its |
+// corresponding Schema. |
+class SchemaMap : public base::RefCountedThreadSafe<SchemaMap> { |
+ public: |
+ SchemaMap(); |
+ // Takes ownership of |map| (its contents will be swapped). |
+ explicit SchemaMap(DomainMap& map); |
+ |
+ const DomainMap& GetDomains() const; |
+ |
+ const ComponentMap& GetComponents(PolicyDomain domain) const; |
bartfab (slow)
2013/10/30 12:34:49
Could this return a pointer instead, eliminating t
Joao da Silva
2013/10/31 13:34:56
Done.
|
+ |
+ const Schema* GetSchema(PolicyDomain domain, |
bartfab (slow)
2013/10/30 12:34:49
Why this accessor? Would it not be cleaner to have
Joao da Silva
2013/10/31 13:34:56
Done.
|
+ const std::string& component_id) const; |
+ |
+ const Schema* GetSchema(const PolicyNamespace& ns) const; |
+ |
+ // Removes all the policies in |bundle| that don't match the known schemas. |
+ // Unknown components are also dropped. |
+ void FilterBundle(PolicyBundle* bundle) const; |
+ |
+ private: |
+ friend class base::RefCountedThreadSafe<SchemaMap>; |
+ |
+ ~SchemaMap(); |
+ |
+ DomainMap map_; |
+ const ComponentMap kEmptyComponentMap_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SchemaMap); |
bartfab (slow)
2013/10/30 12:34:49
#include "base/basictypes.h"
Joao da Silva
2013/10/31 13:34:56
Done.
|
+}; |
+ |
+} // namespace policy |
+ |
+#endif // CHROME_BROWSER_POLICY_SCHEMA_MAP_H_ |