[base] Use std::wstring for CommandLine on Windows
This change modifies base::CommandLine::StringType to be std::wstring on
Windows. It relies on changing base::FilePath::StringType to
std::wstring on Windows as well, in order to compile once base::string16
is no longer std::wstring.
Bug: 911896
Change-Id: I07accc7e043fadf2b584799b699881f300e18bb2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1875748
Reviewed-by: Robert Liao <[email protected]>
Reviewed-by: Daniel Cheng <[email protected]>
Commit-Queue: Jan Wilken Dörrie <[email protected]>
Cr-Commit-Position: refs/heads/master@{#709226}
diff --git a/base/command_line_unittest.cc b/base/command_line_unittest.cc
index 28d1901..a4107b5 100644
--- a/base/command_line_unittest.cc
+++ b/base/command_line_unittest.cc
@@ -108,14 +108,14 @@
TEST(CommandLineTest, CommandLineFromString) {
#if defined(OS_WIN)
- CommandLine cl = CommandLine::FromString(StrCat(
- {STRING16_LITERAL("program --foo= -bAr /Spaetzel=pierogi /Baz flim "),
- STRING16_LITERAL("--other-switches=\"--dog=canine --cat=feline\" "),
- STRING16_LITERAL("-spaetzle=Crepe -=loosevalue FLAN "),
- STRING16_LITERAL("--input-translation=\"45\"--output-rotation "),
- STRING16_LITERAL("--quotes="), kTrickyQuoted, STRING16_LITERAL(" "),
- STRING16_LITERAL("-- -- --not-a-switch "),
- STRING16_LITERAL("\"in the time of submarines...\"")}));
+ CommandLine cl = CommandLine::FromString(
+ L"program --foo= -bAr /Spaetzel=pierogi /Baz flim "
+ L"--other-switches=\"--dog=canine --cat=feline\" "
+ L"-spaetzle=Crepe -=loosevalue FLAN "
+ L"--input-translation=\"45\"--output-rotation "
+ L"--quotes=" +
+ kTrickyQuoted +
+ L" -- -- --not-a-switch \"in the time of submarines...\"");
EXPECT_FALSE(cl.GetCommandLineString().empty());
EXPECT_FALSE(cl.HasSwitch("cruller"));
@@ -172,7 +172,7 @@
// Tests behavior with an empty input string.
TEST(CommandLineTest, EmptyString) {
#if defined(OS_WIN)
- CommandLine cl_from_string = CommandLine::FromString(string16());
+ CommandLine cl_from_string = CommandLine::FromString(std::wstring());
EXPECT_TRUE(cl_from_string.GetCommandLineString().empty());
EXPECT_TRUE(cl_from_string.GetProgram().empty());
EXPECT_EQ(1U, cl_from_string.argv().size());
@@ -205,11 +205,11 @@
cl.AppendArg(kFifthArgName);
#if defined(OS_WIN)
- CommandLine::StringType expected_first_arg(UTF8ToUTF16(kFirstArgName));
- CommandLine::StringType expected_second_arg(UTF8ToUTF16(kSecondArgName));
- CommandLine::StringType expected_third_arg(UTF8ToUTF16(kThirdArgName));
- CommandLine::StringType expected_fourth_arg(UTF8ToUTF16(kFourthArgName));
- CommandLine::StringType expected_fifth_arg(UTF8ToUTF16(kFifthArgName));
+ CommandLine::StringType expected_first_arg(UTF8ToWide(kFirstArgName));
+ CommandLine::StringType expected_second_arg(UTF8ToWide(kSecondArgName));
+ CommandLine::StringType expected_third_arg(UTF8ToWide(kThirdArgName));
+ CommandLine::StringType expected_fourth_arg(UTF8ToWide(kFourthArgName));
+ CommandLine::StringType expected_fifth_arg(UTF8ToWide(kFifthArgName));
#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
CommandLine::StringType expected_first_arg(kFirstArgName);
CommandLine::StringType expected_second_arg(kSecondArgName);
@@ -293,15 +293,16 @@
#if defined(OS_WIN)
EXPECT_EQ(
- StrCat({STRING16_LITERAL("Program "), STRING16_LITERAL("--switch1 "),
- STRING16_LITERAL("--switch2=value "),
- STRING16_LITERAL("--switch3=\"a value with spaces\" "),
- STRING16_LITERAL("--switch4=\"\\\"a value with quotes\\\"\" "),
- // Even though the switches are unique, appending can add
- // repeat switches to argv.
- STRING16_LITERAL("--quotes=\"\\\"a value with quotes\\\"\" "),
- STRING16_LITERAL("--quotes=\""), kTrickyQuoted,
- STRING16_LITERAL("\"")}),
+ L"Program "
+ L"--switch1 "
+ L"--switch2=value "
+ L"--switch3=\"a value with spaces\" "
+ L"--switch4=\"\\\"a value with quotes\\\"\" "
+ // Even though the switches are unique, appending can add repeat
+ // switches to argv.
+ L"--quotes=\"\\\"a value with quotes\\\"\" "
+ L"--quotes=\"" +
+ kTrickyQuoted + L"\"",
cl.GetCommandLineString());
#endif
}
@@ -358,12 +359,12 @@
// against regressions.
TEST(CommandLineTest, ProgramQuotes) {
// Check that quotes are not added for paths without spaces.
- const FilePath kProgram(STRING16_LITERAL("Program"));
+ const FilePath kProgram(L"Program");
CommandLine cl_program(kProgram);
EXPECT_EQ(kProgram.value(), cl_program.GetProgram().value());
EXPECT_EQ(kProgram.value(), cl_program.GetCommandLineString());
- const FilePath kProgramPath(STRING16_LITERAL("Program Path"));
+ const FilePath kProgramPath(L"Program Path");
// Check that quotes are not returned from GetProgram().
CommandLine cl_program_path(kProgramPath);
@@ -371,13 +372,12 @@
// Check that quotes are added to command line string paths containing spaces.
CommandLine::StringType cmd_string(cl_program_path.GetCommandLineString());
- EXPECT_EQ(STRING16_LITERAL("\"Program Path\""), cmd_string);
+ EXPECT_EQ(L"\"Program Path\"", cmd_string);
// Check the optional quoting of placeholders in programs.
- CommandLine cl_quote_placeholder(FilePath(STRING16_LITERAL("%1")));
- EXPECT_EQ(STRING16_LITERAL("%1"),
- cl_quote_placeholder.GetCommandLineString());
- EXPECT_EQ(STRING16_LITERAL("\"%1\""),
+ CommandLine cl_quote_placeholder(FilePath(L"%1"));
+ EXPECT_EQ(L"%1", cl_quote_placeholder.GetCommandLineString());
+ EXPECT_EQ(L"\"%1\"",
cl_quote_placeholder.GetCommandLineStringWithPlaceholders());
}
#endif