Move JoinString to the base namespace.

Change "Separator" from string to StringPIece (most are constants). Remove char versions for symmetry with SplitString.

Update callers who pass empty separators to use a base::StringPiece()

Change chromecast/base/metrics/cast_metrics_helper.cc to not use JoinString at all and just append to the output (code is simpler and faster).

[email protected] for chromeos

Committed: https://crrev.com/0eabfa001ba06d3c66992b95b69a988ef0633992
Cr-Commit-Position: refs/heads/master@{#338762}

patch from issue 1223153003 at patchset 160001 (http://crrev.com/1223153003#ps160001)

BUG=

Review URL: https://codereview.chromium.org/1230243005

Cr-Commit-Position: refs/heads/master@{#338819}
diff --git a/ui/app_list/search/history.cc b/ui/app_list/search/history.cc
index 6c54024..7d38bb2 100644
--- a/ui/app_list/search/history.cc
+++ b/ui/app_list/search/history.cc
@@ -17,7 +17,8 @@
 // Normalize the given string by joining all its tokens with a space.
 std::string NormalizeString(const std::string& utf8) {
   TokenizedString tokenized(base::UTF8ToUTF16(utf8));
-  return base::UTF16ToUTF8(JoinString(tokenized.tokens(), ' '));
+  return base::UTF16ToUTF8(
+      base::JoinString(tokenized.tokens(), base::ASCIIToUTF16(" ")));
 }
 
 }  // namespace
diff --git a/ui/app_list/search/tokenized_string_char_iterator_unittest.cc b/ui/app_list/search/tokenized_string_char_iterator_unittest.cc
index 3846014..d5fe1b3 100644
--- a/ui/app_list/search/tokenized_string_char_iterator_unittest.cc
+++ b/ui/app_list/search/tokenized_string_char_iterator_unittest.cc
@@ -48,7 +48,7 @@
     iter.NextChar();
   }
 
-  EXPECT_EQ(expects, JoinString(results, ' '));
+  EXPECT_EQ(expects, base::JoinString(results, " "));
   TestBeyondTheEnd(&iter);
 }
 
@@ -62,7 +62,7 @@
     iter.NextToken();
   }
 
-  EXPECT_EQ(expects, JoinString(results, ' '));
+  EXPECT_EQ(expects, base::JoinString(results, " "));
   TestBeyondTheEnd(&iter);
 }
 
@@ -80,7 +80,7 @@
     iter.NextToken();
   }
 
-  EXPECT_EQ(expects, JoinString(results, ' '));
+  EXPECT_EQ(expects, base::JoinString(results, " "));
   TestBeyondTheEnd(&iter);
 }
 
diff --git a/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc b/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc
index e7a815c4..73ec4bf8 100644
--- a/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc
+++ b/ui/base/dragdrop/os_exchange_data_provider_aurax11.cc
@@ -199,7 +199,7 @@
       paths.push_back(url_spec);
   }
 
-  std::string joined_data = JoinString(paths, '\n');
+  std::string joined_data = base::JoinString(paths, "\n");
   scoped_refptr<base::RefCountedMemory> mem(
       base::RefCountedString::TakeString(&joined_data));
   format_map_.Insert(atom_cache_.GetAtom(Clipboard::kMimeTypeURIList), mem);
diff --git a/ui/gfx/font_list_impl.cc b/ui/gfx/font_list_impl.cc
index 4037032..907f4efa 100644
--- a/ui/gfx/font_list_impl.cc
+++ b/ui/gfx/font_list_impl.cc
@@ -18,7 +18,7 @@
 std::string BuildDescription(const std::vector<std::string>& families,
                              int style,
                              int size_pixels) {
-  std::string description = JoinString(families, ',');
+  std::string description = base::JoinString(families, ",");
   description += ",";
 
   if (style & gfx::Font::BOLD)
diff --git a/ui/gfx/font_render_params_linux.cc b/ui/gfx/font_render_params_linux.cc
index f09f703..b62c525 100644
--- a/ui/gfx/font_render_params_linux.cc
+++ b/ui/gfx/font_render_params_linux.cc
@@ -192,7 +192,8 @@
 uint32 HashFontRenderParamsQuery(const FontRenderParamsQuery& query) {
   return base::Hash(base::StringPrintf(
       "%d|%d|%d|%s|%f", query.pixel_size, query.point_size, query.style,
-      JoinString(query.families, ',').c_str(), query.device_scale_factor));
+      base::JoinString(query.families, ",").c_str(),
+      query.device_scale_factor));
 }
 
 }  // namespace
diff --git a/ui/gfx/text_elider_unittest.cc b/ui/gfx/text_elider_unittest.cc
index 5eeea5c4..b0baa422 100644
--- a/ui/gfx/text_elider_unittest.cc
+++ b/ui/gfx/text_elider_unittest.cc
@@ -668,7 +668,8 @@
                                  TRUNCATE_LONG_WORDS,
                                  &lines));
     if (cases[i].output) {
-      const std::string result = UTF16ToUTF8(JoinString(lines, '|'));
+      const std::string result =
+          UTF16ToUTF8(base::JoinString(lines, ASCIIToUTF16("|")));
       EXPECT_EQ(cases[i].output, result) << "Case " << i << " failed!";
     } else {
       EXPECT_TRUE(lines.empty()) << "Case " << i << " failed!";
@@ -715,7 +716,8 @@
                                  wrap_behavior,
                                  &lines));
     if (cases[i].output) {
-      const std::string result = UTF16ToUTF8(JoinString(lines, '|'));
+      const std::string result =
+          UTF16ToUTF8(base::JoinString(lines, base::ASCIIToUTF16("|")));
       EXPECT_EQ(cases[i].output, result) << "Case " << i << " failed!";
     } else {
       EXPECT_TRUE(lines.empty()) << "Case " << i << " failed!";
@@ -784,7 +786,8 @@
                                  &lines));
     std::string expected_output(cases[i].output);
     base::ReplaceSubstringsAfterOffset(&expected_output, 0, "...", kEllipsis);
-    const std::string result = UTF16ToUTF8(JoinString(lines, '|'));
+    const std::string result =
+        UTF16ToUTF8(base::JoinString(lines, base::ASCIIToUTF16("|")));
     EXPECT_EQ(expected_output, result) << "Case " << i << " failed!";
   }
 }
diff --git a/ui/gl/gl_context.cc b/ui/gl/gl_context.cc
index 1049bfd..2098411 100644
--- a/ui/gl/gl_context.cc
+++ b/ui/gl/gl_context.cc
@@ -100,7 +100,7 @@
     DCHECK(extension != nullptr);
     exts.push_back(extension);
   }
-  return JoinString(exts, " ");
+  return base::JoinString(exts, " ");
 }
 
 std::string GLContext::GetGLVersion() {
diff --git a/ui/gl/gl_gl_api_implementation.cc b/ui/gl/gl_gl_api_implementation.cc
index 1d6fcb1..76af744 100644
--- a/ui/gl/gl_gl_api_implementation.cc
+++ b/ui/gl/gl_gl_api_implementation.cc
@@ -492,7 +492,7 @@
     }
 
     // Construct filtered extensions string for GL_EXTENSIONS string lookups.
-    filtered_exts_str_ = JoinString(filtered_exts_, " ");
+    filtered_exts_str_ = base::JoinString(filtered_exts_, " ");
   }
 }
 
@@ -530,7 +530,7 @@
   if (it != ext.end())
     ext.erase(it);
 
-  extensions_ = JoinString(ext, " ");
+  extensions_ = base::JoinString(ext, " ");
 }
 
 bool VirtualGLApi::MakeCurrent(GLContext* virtual_context, GLSurface* surface) {
diff --git a/ui/gl/gl_implementation.cc b/ui/gl/gl_implementation.cc
index 4fae0ec53..96921bc 100644
--- a/ui/gl/gl_implementation.cc
+++ b/ui/gl/gl_implementation.cc
@@ -173,7 +173,7 @@
       std::remove_if(extension_vec.begin(), extension_vec.end(), is_disabled),
       extension_vec.end());
 
-  return JoinString(extension_vec, " ");
+  return base::JoinString(extension_vec, " ");
 }
 
 DisableNullDrawGLBindings::DisableNullDrawGLBindings() {
diff --git a/ui/message_center/cocoa/notification_controller.mm b/ui/message_center/cocoa/notification_controller.mm
index f9266a2..1b4e96a 100644
--- a/ui/message_center/cocoa/notification_controller.mm
+++ b/ui/message_center/cocoa/notification_controller.mm
@@ -883,7 +883,8 @@
   }
 
   *actualLines = wrapped.size();
-  return lines == 1 ? wrapped[0] : JoinString(wrapped, '\n');
+  return lines == 1 ? wrapped[0]
+                    : base::JoinString(wrapped, base::ASCIIToUTF16("\n"));
 }
 
 - (base::string16)wrapText:(const base::string16&)text
diff --git a/ui/message_center/views/bounded_label.cc b/ui/message_center/views/bounded_label.cc
index 5bf6f15..f9f6ffb 100644
--- a/ui/message_center/views/bounded_label.cc
+++ b/ui/message_center/views/bounded_label.cc
@@ -113,10 +113,10 @@
                                    std::max(width - insets.width(), 0);
     int text_height = std::numeric_limits<int>::max();
     std::vector<base::string16> wrapped = GetWrappedText(text_width, lines);
-    gfx::Canvas::SizeStringInt(JoinString(wrapped, '\n'), font_list(),
-                               &text_width, &text_height,
-                               owner_->GetLineHeight(),
-                               GetTextFlags());
+    gfx::Canvas::SizeStringInt(
+        base::JoinString(wrapped, base::ASCIIToUTF16("\n")),
+        font_list(), &text_width, &text_height, owner_->GetLineHeight(),
+        GetTextFlags());
     size.set_width(text_width + insets.width());
     size.set_height(text_height + insets.height());
     SetCachedSize(key, size);
@@ -177,7 +177,8 @@
     gfx::Rect bounds(width(), height);
     bounds.Inset(owner_->GetInsets());
     if (bounds.width() != wrapped_text_width_ || lines != wrapped_text_lines_) {
-      wrapped_text_ = JoinString(GetWrappedText(bounds.width(), lines), '\n');
+      wrapped_text_ = base::JoinString(GetWrappedText(bounds.width(), lines),
+                                       base::ASCIIToUTF16("\n"));
       wrapped_text_width_ = bounds.width();
       wrapped_text_lines_ = lines;
     }
@@ -343,7 +344,8 @@
 }
 
 base::string16 BoundedLabel::GetWrappedTextForTest(int width, int lines) {
-  return JoinString(label_->GetWrappedText(width, lines), '\n');
+  return base::JoinString(label_->GetWrappedText(width, lines),
+                          base::ASCIIToUTF16("\n"));
 }
 
 }  // namespace message_center
diff --git a/ui/message_center/views/notification_view.cc b/ui/message_center/views/notification_view.cc
index 5f314b5d..e9294f8 100644
--- a/ui/message_center/views/notification_view.cc
+++ b/ui/message_center/views/notification_view.cc
@@ -334,7 +334,8 @@
     accessible_lines.push_back(items[i].title + base::ASCIIToUTF16(" ") +
                                items[i].message);
   }
-  set_accessible_name(JoinString(accessible_lines, '\n'));
+  set_accessible_name(
+      base::JoinString(accessible_lines, base::ASCIIToUTF16("\n")));
 }
 
 NotificationView::NotificationView(MessageCenterController* controller,
diff --git a/ui/views/controls/table/table_view.cc b/ui/views/controls/table/table_view.cc
index 8104a96f..6c37e52 100644
--- a/ui/views/controls/table/table_view.cc
+++ b/ui/views/controls/table/table_view.cc
@@ -448,7 +448,7 @@
         name_parts.push_back(value);
       }
     }
-    state->name = JoinString(name_parts, base::ASCIIToUTF16(", "));
+    state->name = base::JoinString(name_parts, base::ASCIIToUTF16(", "));
   }
 }