FTP: split the directory listing parser test and re-enable it on TSan bots

The test was disabled on TSan bots becuase it was taking too much time.
This change converts one huge test which parses ~30 directory listings
to ~30 separate test cases.

This change also moves ToLower/ToUpper from ui/base/l10n_util
to base/i18n/case_conversion so that they can be used in net/ftp.

BUG=79022
Review URL: http://codereview.chromium.org/6905027

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84413 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/webdata/autofill_table.cc b/chrome/browser/webdata/autofill_table.cc
index 75a9503..8e5242a 100644
--- a/chrome/browser/webdata/autofill_table.cc
+++ b/chrome/browser/webdata/autofill_table.cc
@@ -12,6 +12,7 @@
 #include <vector>
 
 #include "app/sql/statement.h"
+#include "base/i18n/case_conversion.h"
 #include "base/logging.h"
 #include "base/string_number_conversions.h"
 #include "base/time.h"
@@ -429,7 +430,7 @@
     s.BindString16(0, name);
     s.BindInt(1, limit);
   } else {
-    string16 prefix_lower = l10n_util::ToLower(prefix);
+    string16 prefix_lower = base::i18n::ToLower(prefix);
     string16 next_prefix = prefix_lower;
     next_prefix[next_prefix.length() - 1]++;
 
@@ -625,7 +626,7 @@
 
   s.BindString16(0, element.name);
   s.BindString16(1, element.value);
-  s.BindString16(2, l10n_util::ToLower(element.value));
+  s.BindString16(2, base::i18n::ToLower(element.value));
 
   if (!s.Run()) {
     NOTREACHED();
@@ -824,7 +825,7 @@
 
   s.BindString16(0, entry.key().name());
   s.BindString16(1, entry.key().value());
-  s.BindString16(2, l10n_util::ToLower(entry.key().value()));
+  s.BindString16(2, base::i18n::ToLower(entry.key().value()));
   s.BindInt(3, entry.timestamps().size());
 
   if (!s.Run()) {