OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/common/update_manifest.h" | 5 #include "extensions/common/update_manifest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 if (node->ns != expected_namespace) { | 53 if (node->ns != expected_namespace) { |
54 return false; | 54 return false; |
55 } | 55 } |
56 return 0 == strcmp(expected_name, reinterpret_cast<const char*>(node->name)); | 56 return 0 == strcmp(expected_name, reinterpret_cast<const char*>(node->name)); |
57 } | 57 } |
58 | 58 |
59 // Returns child nodes of |root| with name |name| in namespace |xml_namespace|. | 59 // Returns child nodes of |root| with name |name| in namespace |xml_namespace|. |
60 static std::vector<xmlNode*> GetChildren(xmlNode* root, xmlNs* xml_namespace, | 60 static std::vector<xmlNode*> GetChildren(xmlNode* root, xmlNs* xml_namespace, |
61 const char* name) { | 61 const char* name) { |
62 std::vector<xmlNode*> result; | 62 std::vector<xmlNode*> result; |
63 for (xmlNode* child = root->children; child != NULL; child = child->next) { | 63 for (xmlNode* child = root->children; child != nullptr; child = child->next) { |
64 if (!TagNameEquals(child, name, xml_namespace)) { | 64 if (!TagNameEquals(child, name, xml_namespace)) { |
65 continue; | 65 continue; |
66 } | 66 } |
67 result.push_back(child); | 67 result.push_back(child); |
68 } | 68 } |
69 return result; | 69 return result; |
70 } | 70 } |
71 | 71 |
72 // Returns the value of a named attribute, or the empty string. | 72 // Returns the value of a named attribute, or the empty string. |
73 static std::string GetAttribute(xmlNode* node, const char* attribute_name) { | 73 static std::string GetAttribute(xmlNode* node, const char* attribute_name) { |
74 const xmlChar* name = reinterpret_cast<const xmlChar*>(attribute_name); | 74 const xmlChar* name = reinterpret_cast<const xmlChar*>(attribute_name); |
75 for (xmlAttr* attr = node->properties; attr != NULL; attr = attr->next) { | 75 for (xmlAttr* attr = node->properties; attr != nullptr; attr = attr->next) { |
76 if (!xmlStrcmp(attr->name, name) && attr->children && | 76 if (!xmlStrcmp(attr->name, name) && attr->children && |
77 attr->children->content) { | 77 attr->children->content) { |
78 return std::string(reinterpret_cast<const char*>( | 78 return std::string(reinterpret_cast<const char*>( |
79 attr->children->content)); | 79 attr->children->content)); |
80 } | 80 } |
81 } | 81 } |
82 return std::string(); | 82 return std::string(); |
83 } | 83 } |
84 | 84 |
85 // This is used for the xml parser to report errors. This assumes the context | 85 // This is used for the xml parser to report errors. This assumes the context |
(...skipping 20 matching lines...) Expand all Loading... |
106 } | 106 } |
107 | 107 |
108 private: | 108 private: |
109 xmlDocPtr document_; | 109 xmlDocPtr document_; |
110 }; | 110 }; |
111 | 111 |
112 // Returns a pointer to the xmlNs on |node| with the |expected_href|, or | 112 // Returns a pointer to the xmlNs on |node| with the |expected_href|, or |
113 // NULL if there isn't one with that href. | 113 // NULL if there isn't one with that href. |
114 static xmlNs* GetNamespace(xmlNode* node, const char* expected_href) { | 114 static xmlNs* GetNamespace(xmlNode* node, const char* expected_href) { |
115 const xmlChar* href = reinterpret_cast<const xmlChar*>(expected_href); | 115 const xmlChar* href = reinterpret_cast<const xmlChar*>(expected_href); |
116 for (xmlNs* ns = node->ns; ns != NULL; ns = ns->next) { | 116 for (xmlNs* ns = node->ns; ns != nullptr; ns = ns->next) { |
117 if (ns->href && !xmlStrcmp(ns->href, href)) { | 117 if (ns->href && !xmlStrcmp(ns->href, href)) { |
118 return ns; | 118 return ns; |
119 } | 119 } |
120 } | 120 } |
121 return NULL; | 121 return nullptr; |
122 } | 122 } |
123 | 123 |
124 | 124 |
125 // Helper function that reads in values for a single <app> tag. It returns a | 125 // Helper function that reads in values for a single <app> tag. It returns a |
126 // boolean indicating success or failure. On failure, it writes a error message | 126 // boolean indicating success or failure. On failure, it writes a error message |
127 // into |error_detail|. | 127 // into |error_detail|. |
128 static bool ParseSingleAppTag(xmlNode* app_node, xmlNs* xml_namespace, | 128 static bool ParseSingleAppTag(xmlNode* app_node, xmlNs* xml_namespace, |
129 UpdateManifest::Result* result, | 129 UpdateManifest::Result* result, |
130 std::string *error_detail) { | 130 std::string *error_detail) { |
131 // Read the extension id. | 131 // Read the extension id. |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 std::string error; | 276 std::string error; |
277 if (!ParseSingleAppTag(apps[i], gupdate_ns, ¤t, &error)) { | 277 if (!ParseSingleAppTag(apps[i], gupdate_ns, ¤t, &error)) { |
278 ParseError("%s", error.c_str()); | 278 ParseError("%s", error.c_str()); |
279 } else { | 279 } else { |
280 results_.list.push_back(current); | 280 results_.list.push_back(current); |
281 } | 281 } |
282 } | 282 } |
283 | 283 |
284 return true; | 284 return true; |
285 } | 285 } |
OLD | NEW |