diff --git a/shell/app/atom_content_client.cc b/shell/app/atom_content_client.cc index 6d5114c38504..607ec84740be 100644 --- a/shell/app/atom_content_client.cc +++ b/shell/app/atom_content_client.cc @@ -5,6 +5,7 @@ #include "shell/app/atom_content_client.h" #include +#include #include #include "base/command_line.h" @@ -163,14 +164,19 @@ void ComputeBuiltInPlugins(std::vector* plugins) { #endif // BUILDFLAG(ENABLE_PDF_VIEWER) } -void ConvertStringWithSeparatorToVector(std::vector* vec, - const char* separator, - const char* cmd_switch) { +void AppendDelimitedSwitchToVector(const base::StringPiece cmd_switch, + std::vector* append_me) { auto* command_line = base::CommandLine::ForCurrentProcess(); - auto string_with_separator = command_line->GetSwitchValueASCII(cmd_switch); - if (!string_with_separator.empty()) - *vec = base::SplitString(string_with_separator, separator, - base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY); + auto switch_value = command_line->GetSwitchValueASCII(cmd_switch); + if (!switch_value.empty()) { + constexpr base::StringPiece delimiter(",", 1); + auto tokens = + base::SplitString(switch_value, delimiter, base::TRIM_WHITESPACE, + base::SPLIT_WANT_NONEMPTY); + append_me->reserve(append_me->size() + tokens.size()); + std::move(std::begin(tokens), std::end(tokens), + std::back_inserter(*append_me)); + } } } // namespace @@ -202,30 +208,19 @@ base::RefCountedMemory* AtomContentClient::GetDataResourceBytes( } void AtomContentClient::AddAdditionalSchemes(Schemes* schemes) { - std::vector splited; - ConvertStringWithSeparatorToVector(&splited, ",", - switches::kServiceWorkerSchemes); - for (const std::string& scheme : splited) - schemes->service_worker_schemes.push_back(scheme); + AppendDelimitedSwitchToVector(switches::kServiceWorkerSchemes, + &schemes->service_worker_schemes); + AppendDelimitedSwitchToVector(switches::kStandardSchemes, + &schemes->standard_schemes); + AppendDelimitedSwitchToVector(switches::kSecureSchemes, + &schemes->secure_schemes); + AppendDelimitedSwitchToVector(switches::kBypassCSPSchemes, + &schemes->csp_bypassing_schemes); + AppendDelimitedSwitchToVector(switches::kCORSSchemes, + &schemes->cors_enabled_schemes); + schemes->service_worker_schemes.push_back(url::kFileScheme); - - ConvertStringWithSeparatorToVector(&splited, ",", switches::kStandardSchemes); - for (const std::string& scheme : splited) - schemes->standard_schemes.push_back(scheme); schemes->standard_schemes.push_back("chrome-extension"); - - ConvertStringWithSeparatorToVector(&splited, ",", switches::kSecureSchemes); - for (const std::string& scheme : splited) - schemes->secure_schemes.push_back(scheme); - - ConvertStringWithSeparatorToVector(&splited, ",", - switches::kBypassCSPSchemes); - for (const std::string& scheme : splited) - schemes->csp_bypassing_schemes.push_back(scheme); - - ConvertStringWithSeparatorToVector(&splited, ",", switches::kCORSSchemes); - for (const std::string& scheme : splited) - schemes->cors_enabled_schemes.push_back(scheme); } void AtomContentClient::AddPepperPlugins(