Index: extensions/common/csp_validator.cc |
diff --git a/extensions/common/csp_validator.cc b/extensions/common/csp_validator.cc |
index 1dc9128f524f5735376acd53626428ce329bdd1a..86f38cc17e7db06e4dfbc406ff61e754601e17a7 100644 |
--- a/extensions/common/csp_validator.cc |
+++ b/extensions/common/csp_validator.cc |
@@ -12,6 +12,7 @@ |
#include "base/bind.h" |
#include "base/callback.h" |
#include "base/macros.h" |
+#include "base/strings/string_piece.h" |
#include "base/strings/string_split.h" |
#include "base/strings/string_tokenizer.h" |
#include "base/strings/string_util.h" |
@@ -197,7 +198,7 @@ std::string GetSecureDirectiveValues( |
const std::string& directive_name, |
const std::vector<base::StringPiece>& directive_values, |
std::vector<InstallWarning>* warnings) { |
- std::vector<std::string> sane_csp_parts(1, directive_name); |
+ std::vector<base::StringPiece> sane_csp_parts{directive_name}; |
for (base::StringPiece source_literal : directive_values) { |
std::string source_lower = base::ToLowerASCII(source_literal); |
bool is_secure_csp_token = false; |
@@ -231,7 +232,7 @@ std::string GetSecureDirectiveValues( |
} |
if (is_secure_csp_token) { |
- sane_csp_parts.push_back(source_literal.as_string()); |
+ sane_csp_parts.push_back(source_literal); |
} else if (warnings) { |
warnings->push_back(CSPInstallWarning(ErrorUtils::FormatErrorMessage( |
manifest_errors::kInvalidCSPInsecureValue, source_literal.as_string(), |
@@ -241,7 +242,9 @@ std::string GetSecureDirectiveValues( |
// End of CSP directive that was started at the beginning of this method. If |
// none of the values are secure, the policy will be empty and default to |
// 'none', which is secure. |
- sane_csp_parts.back().push_back(kDirectiveSeparator); |
+ std::string last_part = sane_csp_parts.back().as_string(); |
+ last_part.push_back(kDirectiveSeparator); |
+ sane_csp_parts.back() = last_part; |
return base::JoinString(sane_csp_parts, " "); |
} |
@@ -253,7 +256,7 @@ std::string GetAppSandboxSecureDirectiveValues( |
const std::string& directive_name, |
const std::vector<base::StringPiece>& directive_values, |
std::vector<InstallWarning>* warnings) { |
- std::vector<std::string> sane_csp_parts(1, directive_name); |
+ std::vector<std::string> sane_csp_parts{directive_name}; |
bool seen_self_or_none = false; |
for (base::StringPiece source_literal : directive_values) { |
std::string source_lower = base::ToLowerASCII(source_literal); |