[LSC] Replace base::string16 with std::u16string in //cr/browser/[a-g]*

This change replaces base::string16 with std::u16string in
//chrome/browser/[a-g]*.

Reproduction steps:
$ git grep -lw 'base::string16' chrome/browser/[a-g]* | \
      xargs sed -i 's/\bbase::string16\b/std::u16string/g'
$ git cl format

Bug: 1184339
Change-Id: I96c5d1d797ba9d1a2b4a39247f10667dd0305f4f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2751104
Commit-Queue: Jan Wilken Dörrie <[email protected]>
Commit-Queue: Daniel Cheng <[email protected]>
Owners-Override: Daniel Cheng <[email protected]>
Auto-Submit: Jan Wilken Dörrie <[email protected]>
Reviewed-by: Daniel Cheng <[email protected]>
Cr-Commit-Position: refs/heads/master@{#862182}
diff --git a/chrome/browser/accessibility/caption_controller_browsertest.cc b/chrome/browser/accessibility/caption_controller_browsertest.cc
index 5ae1da8..239686a0 100644
--- a/chrome/browser/accessibility/caption_controller_browsertest.cc
+++ b/chrome/browser/accessibility/caption_controller_browsertest.cc
@@ -43,7 +43,7 @@
   base::RunLoop run_loop;
   profile_manager->CreateProfileAsync(
       profile_path, base::BindRepeating(&UnblockOnProfileCreation, &run_loop),
-      base::string16(), std::string());
+      std::u16string(), std::string());
   run_loop.Run();
   return profile_manager->GetProfileByPath(profile_path);
 }
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
index 8fea31b..e2a60e0 100644
--- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
@@ -549,7 +549,7 @@
   DCHECK(IsLoaded());
 
   const BookmarkNode* bookmark = GetNodeByID(id, type);
-  const base::string16 title =
+  const std::u16string title =
       base::android::ConvertJavaStringToUTF16(env, j_title);
 
   if (partner_bookmarks_shim_->IsPartnerBookmark(bookmark)) {
@@ -690,7 +690,7 @@
   std::vector<const BookmarkNode*> results;
 
   bookmarks::QueryFields query;
-  query.word_phrase_query.reset(new base::string16(
+  query.word_phrase_query.reset(new std::u16string(
       base::android::ConvertJavaStringToUTF16(env, j_query)));
 
   GetBookmarksMatchingProperties(bookmark_model_, query, max_results, &results);
@@ -893,7 +893,7 @@
       *url::GURLAndroid::ToNativeGURL(env, gurl));
 }
 
-base::string16 BookmarkBridge::GetTitle(const BookmarkNode* node) const {
+std::u16string BookmarkBridge::GetTitle(const BookmarkNode* node) const {
   if (partner_bookmarks_shim_->IsPartnerBookmark(node))
     return partner_bookmarks_shim_->GetTitle(node);
 
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser/android/bookmarks/bookmark_bridge.h
index 820591d..73c4c8e4 100644
--- a/chrome/browser/android/bookmarks/bookmark_bridge.h
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.h
@@ -242,7 +242,7 @@
   bool IsBookmarked(JNIEnv* env,
                     const base::android::JavaParamRef<jobject>& gurl);
 
-  base::string16 GetTitle(const bookmarks::BookmarkNode* node) const;
+  std::u16string GetTitle(const bookmarks::BookmarkNode* node) const;
 
   // ProfileObserver override
   void OnProfileWillBeDestroyed(Profile* profile) override;
diff --git a/chrome/browser/android/bookmarks/partner_bookmarks_reader.cc b/chrome/browser/android/bookmarks/partner_bookmarks_reader.cc
index d487a95e..58b43a1 100644
--- a/chrome/browser/android/bookmarks/partner_bookmarks_reader.cc
+++ b/chrome/browser/android/bookmarks/partner_bookmarks_reader.cc
@@ -156,8 +156,8 @@
     jboolean fetch_uncached_favicons_from_server,
     jint desired_favicon_size_px,
     const JavaParamRef<jobject>& j_callback) {
-  base::string16 url;
-  base::string16 title;
+  std::u16string url;
+  std::u16string title;
   if (jurl) {
     DCHECK(!is_folder);
     url = ConvertJavaStringToUTF16(env, jurl);
diff --git a/chrome/browser/android/bookmarks/partner_bookmarks_shim.cc b/chrome/browser/android/bookmarks/partner_bookmarks_shim.cc
index 2971ce7..d68b82c 100644
--- a/chrome/browser/android/bookmarks/partner_bookmarks_shim.cc
+++ b/chrome/browser/android/bookmarks/partner_bookmarks_shim.cc
@@ -125,11 +125,11 @@
 
 void PartnerBookmarksShim::RemoveBookmark(const BookmarkNode* node) {
   DCHECK(IsEditable(node));
-  RenameBookmark(node, base::string16());
+  RenameBookmark(node, std::u16string());
 }
 
 void PartnerBookmarksShim::RenameBookmark(const BookmarkNode* node,
-                                          const base::string16& title) {
+                                          const std::u16string& title) {
   DCHECK(IsEditable(node));
   const NodeRenamingMapKey key(node->url(), node->GetTitle());
   node_rename_remove_map_[key] = title;
@@ -155,7 +155,7 @@
   return GetNodeByID(GetPartnerBookmarksRoot(), id);
 }
 
-base::string16 PartnerBookmarksShim::GetTitle(const BookmarkNode* node) const {
+std::u16string PartnerBookmarksShim::GetTitle(const BookmarkNode* node) const {
   DCHECK(node);
   DCHECK(IsPartnerBookmark(node));
 
@@ -196,7 +196,8 @@
 }
 
 PartnerBookmarksShim::NodeRenamingMapKey::NodeRenamingMapKey(
-    const GURL& url, const base::string16& provider_title)
+    const GURL& url,
+    const std::u16string& provider_title)
     : url_(url), provider_title_(provider_title) {}
 
 PartnerBookmarksShim::NodeRenamingMapKey::~NodeRenamingMapKey() {}
@@ -267,8 +268,8 @@
     }
 
     std::string url;
-    base::string16 provider_title;
-    base::string16 mapped_title;
+    std::u16string provider_title;
+    std::u16string mapped_title;
     if (!dict->GetString(kMappingUrl, &url) ||
         !dict->GetString(kMappingProviderTitle, &provider_title) ||
         !dict->GetString(kMappingTitle, &mapped_title)) {
@@ -305,7 +306,7 @@
     std::vector<const BookmarkNode*>* nodes) {
   DCHECK(nodes->size() <= max_count);
 
-  std::vector<base::string16> query_words =
+  std::vector<std::u16string> query_words =
       bookmarks::ParseBookmarkQuery(query);
   if (query_words.empty())
     return;
diff --git a/chrome/browser/android/bookmarks/partner_bookmarks_shim.h b/chrome/browser/android/bookmarks/partner_bookmarks_shim.h
index 9eb1842..ed9441b 100644
--- a/chrome/browser/android/bookmarks/partner_bookmarks_shim.h
+++ b/chrome/browser/android/bookmarks/partner_bookmarks_shim.h
@@ -77,7 +77,7 @@
 
   // Renames a given bookmark.
   void RenameBookmark(const bookmarks::BookmarkNode* node,
-                      const base::string16& title);
+                      const std::u16string& title);
 
   // For Loaded/Changed/ShimBeingDeleted notifications
   class Observer {
@@ -97,7 +97,7 @@
 
   // PartnerBookmarksShim versions of BookmarkModel/BookmarkNode methods
   const bookmarks::BookmarkNode* GetNodeByID(int64_t id) const;
-  base::string16 GetTitle(const bookmarks::BookmarkNode* node) const;
+  std::u16string GetTitle(const bookmarks::BookmarkNode* node) const;
 
   bool IsPartnerBookmark(const bookmarks::BookmarkNode* node) const;
   const bookmarks::BookmarkNode* GetPartnerBookmarksRoot() const;
@@ -112,17 +112,17 @@
   // titles are considered indistinguishable.
   class NodeRenamingMapKey {
    public:
-    NodeRenamingMapKey(const GURL& url, const base::string16& provider_title);
+    NodeRenamingMapKey(const GURL& url, const std::u16string& provider_title);
     ~NodeRenamingMapKey();
     const GURL& url() const { return url_; }
-    const base::string16& provider_title() const { return provider_title_; }
+    const std::u16string& provider_title() const { return provider_title_; }
     friend bool operator<(const NodeRenamingMapKey& a,
                           const NodeRenamingMapKey& b);
    private:
     GURL url_;
-    base::string16 provider_title_;
+    std::u16string provider_title_;
   };
-  typedef std::map<NodeRenamingMapKey, base::string16> NodeRenamingMap;
+  typedef std::map<NodeRenamingMapKey, std::u16string> NodeRenamingMap;
 
   // PartnerBookmarksShim version of BookmarkUtils methods
   void GetPartnerBookmarksMatchingProperties(
diff --git a/chrome/browser/android/bookmarks/partner_bookmarks_shim_unittest.cc b/chrome/browser/android/bookmarks/partner_bookmarks_shim_unittest.cc
index 79e25cf..93ca6d21 100644
--- a/chrome/browser/android/bookmarks/partner_bookmarks_shim_unittest.cc
+++ b/chrome/browser/android/bookmarks/partner_bookmarks_shim_unittest.cc
@@ -431,7 +431,7 @@
   // Ensure that search returns case-insensitive matches for title only.
   std::vector<const BookmarkNode*> nodes;
   bookmarks::QueryFields query;
-  query.word_phrase_query.reset(new base::string16(base::ASCIIToUTF16("WX")));
+  query.word_phrase_query.reset(new std::u16string(base::ASCIIToUTF16("WX")));
   shim->GetPartnerBookmarksMatchingProperties(query, 100, &nodes);
   ASSERT_EQ(2u, nodes.size());
   ASSERT_EQ(partner_bookmark1, nodes[1]);
@@ -439,7 +439,7 @@
 
   // Ensure that every word in the search must have a match.
   nodes.clear();
-  query.word_phrase_query.reset(new base::string16(base::ASCIIToUTF16("WX Y")));
+  query.word_phrase_query.reset(new std::u16string(base::ASCIIToUTF16("WX Y")));
   shim->GetPartnerBookmarksMatchingProperties(query, 100, &nodes);
   ASSERT_EQ(1u, nodes.size());
   ASSERT_EQ(partner_bookmark2, nodes[0]);
@@ -447,7 +447,7 @@
   // Ensure that search returns matches for URL only.
   nodes.clear();
   query.word_phrase_query.reset(
-      new base::string16(base::ASCIIToUTF16("dat.com")));
+      new std::u16string(base::ASCIIToUTF16("dat.com")));
   shim->GetPartnerBookmarksMatchingProperties(query, 100, &nodes);
   ASSERT_EQ(1u, nodes.size());
   ASSERT_EQ(partner_bookmark1, nodes[0]);
@@ -456,7 +456,7 @@
   // effective.
   nodes.clear();
   query.word_phrase_query.reset(
-      new base::string16(base::ASCIIToUTF16("folder")));
+      new std::u16string(base::ASCIIToUTF16("folder")));
 
   shim->GetPartnerBookmarksMatchingProperties(query, 100, &nodes);
   ASSERT_EQ(2u, nodes.size());
@@ -472,7 +472,7 @@
   // Test a scenario with no search results.
   nodes.clear();
   query.word_phrase_query.reset(
-      new base::string16(base::ASCIIToUTF16("foo.com")));
+      new std::u16string(base::ASCIIToUTF16("foo.com")));
   shim->GetPartnerBookmarksMatchingProperties(query, 100, &nodes);
   ASSERT_EQ(0u, nodes.size());
 }
diff --git a/chrome/browser/android/contextualsearch/contextual_search_context.cc b/chrome/browser/android/contextualsearch/contextual_search_context.cc
index a3c6d276..fc46316 100644
--- a/chrome/browser/android/contextualsearch/contextual_search_context.cc
+++ b/chrome/browser/android/contextualsearch/contextual_search_context.cc
@@ -124,13 +124,13 @@
 void ContextualSearchContext::SetSelectionSurroundings(
     int start_offset,
     int end_offset,
-    const base::string16& surrounding_text) {
+    const std::u16string& surrounding_text) {
   this->start_offset_ = start_offset;
   this->end_offset_ = end_offset;
   this->surrounding_text_ = surrounding_text;
 }
 
-const base::string16 ContextualSearchContext::GetSurroundingText() const {
+const std::u16string ContextualSearchContext::GetSurroundingText() const {
   return surrounding_text_;
 }
 
@@ -189,7 +189,7 @@
 }
 
 std::string ContextualSearchContext::GetReliableLanguage(
-    const base::string16& contents) const {
+    const std::u16string& contents) const {
   std::string model_detected_language;
   bool is_model_reliable;
   float model_reliability_score;
@@ -203,7 +203,7 @@
   return language;
 }
 
-base::string16 ContextualSearchContext::GetSelection() const {
+std::u16string ContextualSearchContext::GetSelection() const {
   int start = this->start_offset_;
   int end = this->end_offset_;
   DCHECK(start >= 0);
diff --git a/chrome/browser/android/contextualsearch/contextual_search_context.h b/chrome/browser/android/contextualsearch/contextual_search_context.h
index 798e50d1..f17157d 100644
--- a/chrome/browser/android/contextualsearch/contextual_search_context.h
+++ b/chrome/browser/android/contextualsearch/contextual_search_context.h
@@ -73,7 +73,7 @@
   void SetBasePageUrl(const GURL& base_page_url);
 
   // Gets the encoding of the base page.  This is not very important, since
-  // the surrounding text stored here in a base::string16 is implicitly encoded
+  // the surrounding text stored here in a std::u16string is implicitly encoded
   // in UTF-16 (see http://www.chromium.org/developers/chromium-string-usage).
   const std::string GetBasePageEncoding() const;
   void SetBasePageEncoding(const std::string& base_page_encoding);
@@ -84,10 +84,10 @@
   // Sets the selection and surroundings.
   void SetSelectionSurroundings(int start_offset,
                                 int end_offset,
-                                const base::string16& surrounding_text);
+                                const std::u16string& surrounding_text);
 
   // Gets the text surrounding the selection (including the selection).
-  const base::string16 GetSurroundingText() const;
+  const std::u16string GetSurroundingText() const;
 
   // Gets the start offset of the selection within the surrounding text (in
   // characters).
@@ -148,17 +148,17 @@
  private:
   // Gets the reliable language of the given |contents| using CLD, or an empty
   // string if none can reliably be determined.
-  std::string GetReliableLanguage(const base::string16& contents) const;
+  std::string GetReliableLanguage(const std::u16string& contents) const;
 
   // Gets the selection, or an empty string if none.
-  base::string16 GetSelection() const;
+  std::u16string GetSelection() const;
 
   bool can_resolve_ = false;
   bool can_send_base_page_url_ = false;
   std::string home_country_;
   GURL base_page_url_;
   std::string base_page_encoding_;
-  base::string16 surrounding_text_;
+  std::u16string surrounding_text_;
   int start_offset_ = 0;
   int end_offset_ = 0;
   int64_t previous_event_id_ = 0L;
diff --git a/chrome/browser/android/contextualsearch/contextual_search_delegate.cc b/chrome/browser/android/contextualsearch/contextual_search_delegate.cc
index ed8e565..44885494 100644
--- a/chrome/browser/android/contextualsearch/contextual_search_delegate.cc
+++ b/chrome/browser/android/contextualsearch/contextual_search_delegate.cc
@@ -122,7 +122,7 @@
     focused_frame->RequestTextSurroundingSelection(std::move(callback),
                                                    surroundingTextSize);
   } else {
-    std::move(callback).Run(base::string16(), 0, 0);
+    std::move(callback).Run(std::u16string(), 0, 0);
   }
 }
 
@@ -299,7 +299,7 @@
       template_url_service_->GetDefaultSearchProvider();
 
   TemplateURLRef::SearchTermsArgs search_terms_args =
-      TemplateURLRef::SearchTermsArgs(base::string16());
+      TemplateURLRef::SearchTermsArgs(std::u16string());
 
   // Set the Coca-integration version.
   // This is based on our current active feature.
@@ -356,7 +356,7 @@
 }
 
 void ContextualSearchDelegate::OnTextSurroundingSelectionAvailable(
-    const base::string16& surrounding_text,
+    const std::u16string& surrounding_text,
     uint32_t start_offset,
     uint32_t end_offset) {
   if (context_ == nullptr)
@@ -365,7 +365,7 @@
   // Sometimes the surroundings are 0, 0, '', so run the callback with empty
   // data in that case. See https://crbug.com/393100.
   if (start_offset == 0 && end_offset == 0 && surrounding_text.length() == 0) {
-    surrounding_text_callback_.Run(std::string(), base::string16(), 0, 0);
+    surrounding_text_callback_.Run(std::string(), std::u16string(), 0, 0);
     return;
   }
 
@@ -385,7 +385,7 @@
   size_t selection_start = start_offset;
   size_t selection_end = end_offset;
   int sample_padding_each_side = sample_surrounding_size / 2;
-  base::string16 sample_surrounding_text =
+  std::u16string sample_surrounding_text =
       SampleSurroundingText(surrounding_text, sample_padding_each_side,
                             &selection_start, &selection_end);
   DCHECK(selection_start <= selection_end);
@@ -571,12 +571,12 @@
     *endResult = std::max(0, int_value);
 }
 
-base::string16 ContextualSearchDelegate::SampleSurroundingText(
-    const base::string16& surrounding_text,
+std::u16string ContextualSearchDelegate::SampleSurroundingText(
+    const std::u16string& surrounding_text,
     int padding_each_side,
     size_t* start,
     size_t* end) {
-  base::string16 result_text = surrounding_text;
+  std::u16string result_text = surrounding_text;
   size_t start_offset = *start;
   size_t end_offset = *end;
   size_t padding_each_side_pinned =
diff --git a/chrome/browser/android/contextualsearch/contextual_search_delegate.h b/chrome/browser/android/contextualsearch/contextual_search_delegate.h
index 23c6dae..aa92a4e 100644
--- a/chrome/browser/android/contextualsearch/contextual_search_delegate.h
+++ b/chrome/browser/android/contextualsearch/contextual_search_delegate.h
@@ -41,7 +41,7 @@
       SearchTermResolutionCallback;
   // Provides text surrounding the selection to Java.
   typedef base::RepeatingCallback<
-      void(const std::string&, const base::string16&, size_t, size_t)>
+      void(const std::string&, const std::u16string&, size_t, size_t)>
       SurroundingTextCallback;
 
   // Constructs a delegate that will always call back to the given callbacks
@@ -123,7 +123,7 @@
       const bool may_send_base_page_url);
 
   void OnTextSurroundingSelectionAvailable(
-      const base::string16& surrounding_text,
+      const std::u16string& surrounding_text,
       uint32_t start_offset,
       uint32_t end_offset);
 
@@ -175,7 +175,7 @@
   // of the selection in the function result.
   // |return| the trimmed surrounding text with selection at the
   // updated start/end offsets.
-  base::string16 SampleSurroundingText(const base::string16& surrounding_text,
+  std::u16string SampleSurroundingText(const std::u16string& surrounding_text,
                                        int padding_each_side,
                                        size_t* start,
                                        size_t* end);
diff --git a/chrome/browser/android/contextualsearch/contextual_search_delegate_unittest.cc b/chrome/browser/android/contextualsearch/contextual_search_delegate_unittest.cc
index a8548d8..953c983 100644
--- a/chrome/browser/android/contextualsearch/contextual_search_delegate_unittest.cc
+++ b/chrome/browser/android/contextualsearch/contextual_search_delegate_unittest.cc
@@ -84,13 +84,13 @@
   }
 
   void CreateDefaultSearchContextAndRequestSearchTerm() {
-    base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+    std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
     CreateSearchContextAndRequestSearchTerm("Barack Obama", surrounding, 0, 6);
   }
 
   void CreateSearchContextAndRequestSearchTerm(
       const std::string& selected_text,
-      const base::string16& surrounding_text,
+      const std::u16string& surrounding_text,
       int start_offset,
       int end_offset) {
     test_context_ = new ContextualSearchContext(
@@ -141,7 +141,7 @@
   // Cannot be in an actual test because OnTextSurroundingSelectionAvailable
   // is private.
   void CallOnTextSurroundingSelectionAvailable() {
-    delegate_->OnTextSurroundingSelectionAvailable(base::string16(), 1, 2);
+    delegate_->OnTextSurroundingSelectionAvailable(std::u16string(), 1, 2);
   }
 
   void CallResolveSearchTermFromContext() {
@@ -169,7 +169,7 @@
     base::RunLoop().RunUntilIdle();
   }
 
-  void SetSurroundingContext(const base::string16& surrounding_text,
+  void SetSurroundingContext(const std::u16string& surrounding_text,
                              int start_offset,
                              int end_offset) {
     test_context_ = new ContextualSearchContext(
@@ -268,7 +268,7 @@
   }
 
   void recordSampleSelectionAvailable(const std::string& encoding,
-                                      const base::string16& surrounding_text,
+                                      const std::u16string& surrounding_text,
                                       size_t start_offset,
                                       size_t end_offset) {
     // unused.
@@ -401,7 +401,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ExpandSelectionToEnd) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Barack";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 0, 6);
   SetResponseStringAndSimulateResponse(selected_text, "0", "12");
@@ -411,7 +411,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ExpandSelectionToStart) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Obama";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 7, 12);
   SetResponseStringAndSimulateResponse(selected_text, "0", "12");
@@ -421,7 +421,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ExpandSelectionBothDirections) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Ob";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 7, 9);
   SetResponseStringAndSimulateResponse(selected_text, "0", "12");
@@ -431,7 +431,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ExpandSelectionInvalidRange) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Ob";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 7, 9);
   SetResponseStringAndSimulateResponse(selected_text, "0", "1001");
@@ -441,7 +441,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ExpandSelectionInvalidDistantStart) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Ob";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding,
                                           0xffffffff, 0xffffffff - 2);
@@ -452,7 +452,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ExpandSelectionInvalidNoOverlap) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Ob";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 0, 12);
   SetResponseStringAndSimulateResponse(selected_text, "12", "14");
@@ -462,7 +462,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ExpandSelectionInvalidDistantEndAndRange) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Ob";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding,
                                           0xffffffff, 0xffffffff - 2);
@@ -473,7 +473,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ExpandSelectionLargeNumbers) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Ob";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding,
                                           268435450, 268435455);
@@ -484,7 +484,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ContractSelectionValid) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Barack Obama just";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 0, 17);
   SetResponseStringAndSimulateResponse(selected_text, "0", "12");
@@ -494,7 +494,7 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, ContractSelectionInvalid) {
-  base::string16 surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
+  std::u16string surrounding = base::UTF8ToUTF16("Barack Obama just spoke.");
   std::string selected_text = "Barack Obama just";
   CreateSearchContextAndRequestSearchTerm(selected_text, surrounding, 0, 17);
   SetResponseStringAndSimulateResponse(selected_text, "5", "5");
@@ -515,11 +515,11 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, SampleSurroundingText) {
-  base::string16 sample = base::ASCIIToUTF16("this is Barack Obama in office.");
+  std::u16string sample = base::ASCIIToUTF16("this is Barack Obama in office.");
   int limit_each_side = 3;
   size_t start = 8;
   size_t end = 20;
-  base::string16 result =
+  std::u16string result =
       delegate_->SampleSurroundingText(sample, limit_each_side, &start, &end);
   EXPECT_EQ(static_cast<size_t>(3), start);
   EXPECT_EQ(static_cast<size_t>(15), end);
@@ -527,11 +527,11 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, SampleSurroundingTextNegativeLimit) {
-  base::string16 sample = base::ASCIIToUTF16("this is Barack Obama in office.");
+  std::u16string sample = base::ASCIIToUTF16("this is Barack Obama in office.");
   int limit_each_side = -2;
   size_t start = 8;
   size_t end = 20;
-  base::string16 result =
+  std::u16string result =
       delegate_->SampleSurroundingText(sample, limit_each_side, &start, &end);
   EXPECT_EQ(static_cast<size_t>(0), start);
   EXPECT_EQ(static_cast<size_t>(12), end);
@@ -539,11 +539,11 @@
 }
 
 TEST_F(ContextualSearchDelegateTest, SampleSurroundingTextSameStartEnd) {
-  base::string16 sample = base::ASCIIToUTF16("this is Barack Obama in office.");
+  std::u16string sample = base::ASCIIToUTF16("this is Barack Obama in office.");
   int limit_each_side = 3;
   size_t start = 11;
   size_t end = 11;
-  base::string16 result =
+  std::u16string result =
       delegate_->SampleSurroundingText(sample, limit_each_side, &start, &end);
   VLOG(0) << "start " << start;
   VLOG(0) << "end " << end;
diff --git a/chrome/browser/android/contextualsearch/contextual_search_manager.cc b/chrome/browser/android/contextualsearch/contextual_search_manager.cc
index 345d3d5..7250bb6 100644
--- a/chrome/browser/android/contextualsearch/contextual_search_manager.cc
+++ b/chrome/browser/android/contextualsearch/contextual_search_manager.cc
@@ -144,7 +144,7 @@
 
 void ContextualSearchManager::OnTextSurroundingSelectionAvailable(
     const std::string& encoding,
-    const base::string16& surrounding_text,
+    const std::u16string& surrounding_text,
     size_t start_offset,
     size_t end_offset) {
   JNIEnv* env = base::android::AttachCurrentThread();
diff --git a/chrome/browser/android/contextualsearch/contextual_search_manager.h b/chrome/browser/android/contextualsearch/contextual_search_manager.h
index f247823..8518aae 100644
--- a/chrome/browser/android/contextualsearch/contextual_search_manager.h
+++ b/chrome/browser/android/contextualsearch/contextual_search_manager.h
@@ -94,7 +94,7 @@
   // selection is available.
   void OnTextSurroundingSelectionAvailable(
       const std::string& encoding,
-      const base::string16& surrounding_text,
+      const std::u16string& surrounding_text,
       size_t start_offset,
       size_t end_offset);
 
diff --git a/chrome/browser/android/contextualsearch/simple_search_term_resolver.cc b/chrome/browser/android/contextualsearch/simple_search_term_resolver.cc
index b4f0114..7186e59 100644
--- a/chrome/browser/android/contextualsearch/simple_search_term_resolver.cc
+++ b/chrome/browser/android/contextualsearch/simple_search_term_resolver.cc
@@ -123,7 +123,7 @@
 
 void SimpleSearchTermResolver::OnTextSurroundingSelectionAvailable(
     const std::string& encoding,
-    const base::string16& surrounding_text,
+    const std::u16string& surrounding_text,
     size_t start_offset,
     size_t end_offset) {
   // For now we ignore the callback -- shouldn't happen anyway.
diff --git a/chrome/browser/android/contextualsearch/simple_search_term_resolver.h b/chrome/browser/android/contextualsearch/simple_search_term_resolver.h
index e0cc188..d150653 100644
--- a/chrome/browser/android/contextualsearch/simple_search_term_resolver.h
+++ b/chrome/browser/android/contextualsearch/simple_search_term_resolver.h
@@ -44,7 +44,7 @@
 
   void OnTextSurroundingSelectionAvailable(
       const std::string& encoding,
-      const base::string16& surrounding_text,
+      const std::u16string& surrounding_text,
       size_t start_offset,
       size_t end_offset);
 
diff --git a/chrome/browser/android/explore_sites/most_visited_client.cc b/chrome/browser/android/explore_sites/most_visited_client.cc
index cbfc183..6259f18 100644
--- a/chrome/browser/android/explore_sites/most_visited_client.cc
+++ b/chrome/browser/android/explore_sites/most_visited_client.cc
@@ -27,7 +27,7 @@
   return GURL(chrome::kChromeUINativeExploreURL);
 }
 
-base::string16 MostVisitedClient::GetExploreSitesTitle() const {
+std::u16string MostVisitedClient::GetExploreSitesTitle() const {
   return l10n_util::GetStringUTF16(IDS_NTP_EXPLORE_SITES_TILE_TITLE);
 }
 
diff --git a/chrome/browser/android/explore_sites/most_visited_client.h b/chrome/browser/android/explore_sites/most_visited_client.h
index 056a83d2..44d84460 100644
--- a/chrome/browser/android/explore_sites/most_visited_client.h
+++ b/chrome/browser/android/explore_sites/most_visited_client.h
@@ -20,7 +20,7 @@
   ~MostVisitedClient() override;
 
   GURL GetExploreSitesUrl() const override;
-  base::string16 GetExploreSitesTitle() const override;
+  std::u16string GetExploreSitesTitle() const override;
 
  private:
   MostVisitedClient();
diff --git a/chrome/browser/android/history/browsing_history_bridge.cc b/chrome/browser/android/history/browsing_history_bridge.cc
index 6ce63eb..0edff915 100644
--- a/chrome/browser/android/history/browsing_history_bridge.cc
+++ b/chrome/browser/android/history/browsing_history_bridge.cc
@@ -82,7 +82,7 @@
   for (const BrowsingHistoryService::HistoryEntry& entry : results) {
     // TODO(twellington): Move the domain logic to BrowsingHistoryServce so it
     // can be shared with ContentBrowsingHistoryDriver.
-    base::string16 domain = url_formatter::IDNToUnicode(entry.url.host());
+    std::u16string domain = url_formatter::IDNToUnicode(entry.url.host());
     // When the domain is empty, use the scheme instead. This allows for a
     // sensible treatment of e.g. file: URLs when group by domain is on.
     if (domain.empty())
diff --git a/chrome/browser/android/history_report/delta_file_commons.cc b/chrome/browser/android/history_report/delta_file_commons.cc
index 0b1e3cfc..712e2ba 100644
--- a/chrome/browser/android/history_report/delta_file_commons.cc
+++ b/chrome/browser/android/history_report/delta_file_commons.cc
@@ -114,7 +114,7 @@
   return entry_.url();
 }
 
-base::string16 DeltaFileEntryWithData::Title() const {
+std::u16string DeltaFileEntryWithData::Title() const {
   if (!Valid()) return base::UTF8ToUTF16("");
   if (is_bookmark_ && !bookmark_title_.empty()) return bookmark_title_;
   if (data_.title().empty()) return base::UTF8ToUTF16(data_.url().host_piece());
diff --git a/chrome/browser/android/history_report/delta_file_commons.h b/chrome/browser/android/history_report/delta_file_commons.h
index 8275782886..11d9093 100644
--- a/chrome/browser/android/history_report/delta_file_commons.h
+++ b/chrome/browser/android/history_report/delta_file_commons.h
@@ -39,7 +39,7 @@
   std::string Url() const;
 
   // Returns title of delta file entry.
-  base::string16 Title() const;
+  std::u16string Title() const;
 
   // Returns ranking score of url described by delta file entry.
   int32_t Score() const;
@@ -69,7 +69,7 @@
   bool data_set_;
   history::URLRow data_;
   bool is_bookmark_;
-  base::string16 bookmark_title_;
+  std::u16string bookmark_title_;
 };
 
 }  // namespace history_report
diff --git a/chrome/browser/android/hung_renderer_infobar_delegate.cc b/chrome/browser/android/hung_renderer_infobar_delegate.cc
index 7845a76..372c59c 100644
--- a/chrome/browser/android/hung_renderer_infobar_delegate.cc
+++ b/chrome/browser/android/hung_renderer_infobar_delegate.cc
@@ -56,11 +56,11 @@
   return IDR_ANDROID_INFOBAR_FROZEN_TAB;
 }
 
-base::string16 HungRendererInfoBarDelegate::GetMessageText() const {
+std::u16string HungRendererInfoBarDelegate::GetMessageText() const {
   return l10n_util::GetStringUTF16(IDS_BROWSER_HANGMONITOR_RENDERER_INFOBAR);
 }
 
-base::string16 HungRendererInfoBarDelegate::GetButtonLabel(
+std::u16string HungRendererInfoBarDelegate::GetButtonLabel(
     InfoBarButton button) const {
   return l10n_util::GetStringUTF16(
       (button == BUTTON_OK) ? IDS_BROWSER_HANGMONITOR_RENDERER_INFOBAR_END
diff --git a/chrome/browser/android/hung_renderer_infobar_delegate.h b/chrome/browser/android/hung_renderer_infobar_delegate.h
index 14f45f9c..6c7e487e 100644
--- a/chrome/browser/android/hung_renderer_infobar_delegate.h
+++ b/chrome/browser/android/hung_renderer_infobar_delegate.h
@@ -52,8 +52,8 @@
   void InfoBarDismissed() override;
   HungRendererInfoBarDelegate* AsHungRendererInfoBarDelegate() override;
   int GetIconId() const override;
-  base::string16 GetMessageText() const override;
-  base::string16 GetButtonLabel(InfoBarButton button) const override;
+  std::u16string GetMessageText() const override;
+  std::u16string GetButtonLabel(InfoBarButton button) const override;
   bool Accept() override;
   bool Cancel() override;
 
diff --git a/chrome/browser/android/instantapps/instant_apps_infobar_delegate.cc b/chrome/browser/android/instantapps/instant_apps_infobar_delegate.cc
index d6a8f3ef1..218e4049 100644
--- a/chrome/browser/android/instantapps/instant_apps_infobar_delegate.cc
+++ b/chrome/browser/android/instantapps/instant_apps_infobar_delegate.cc
@@ -67,9 +67,9 @@
   return INSTANT_APPS_INFOBAR_DELEGATE_ANDROID;
 }
 
-base::string16 InstantAppsInfoBarDelegate::GetMessageText() const {
+std::u16string InstantAppsInfoBarDelegate::GetMessageText() const {
   // Message is set in InstantAppInfobar.java
-  return base::string16();
+  return std::u16string();
 }
 
 bool InstantAppsInfoBarDelegate::Accept() {
diff --git a/chrome/browser/android/instantapps/instant_apps_infobar_delegate.h b/chrome/browser/android/instantapps/instant_apps_infobar_delegate.h
index c04ad25..07f541f 100644
--- a/chrome/browser/android/instantapps/instant_apps_infobar_delegate.h
+++ b/chrome/browser/android/instantapps/instant_apps_infobar_delegate.h
@@ -42,7 +42,7 @@
 
   // ConfirmInfoBarDelegate:
   infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
-  base::string16 GetMessageText() const override;
+  std::u16string GetMessageText() const override;
   bool Accept() override;
   bool EqualsDelegate(infobars::InfoBarDelegate* delegate) const override;
   void InfoBarDismissed() override;
diff --git a/chrome/browser/android/intent_helper.cc b/chrome/browser/android/intent_helper.cc
index cff5106..e9ddee4 100644
--- a/chrome/browser/android/intent_helper.cc
+++ b/chrome/browser/android/intent_helper.cc
@@ -18,11 +18,11 @@
 namespace chrome {
 namespace android {
 
-void SendEmail(const base::string16& d_email,
-               const base::string16& d_subject,
-               const base::string16& d_body,
-               const base::string16& d_chooser_title,
-               const base::string16& d_file_to_attach) {
+void SendEmail(const std::u16string& d_email,
+               const std::u16string& d_subject,
+               const std::u16string& d_body,
+               const std::u16string& d_chooser_title,
+               const std::u16string& d_file_to_attach) {
   JNIEnv* env = AttachCurrentThread();
   ScopedJavaLocalRef<jstring> j_email = ConvertUTF16ToJavaString(env, d_email);
   ScopedJavaLocalRef<jstring> j_subject =
diff --git a/chrome/browser/android/intent_helper.h b/chrome/browser/android/intent_helper.h
index dc30d78..ab4672a0 100644
--- a/chrome/browser/android/intent_helper.h
+++ b/chrome/browser/android/intent_helper.h
@@ -15,11 +15,11 @@
 namespace android {
 
 // Triggers a send email intent.
-void SendEmail(const base::string16& data_email,
-               const base::string16& data_subject,
-               const base::string16& data_body,
-               const base::string16& data_chooser_title,
-               const base::string16& data_file_to_attach);
+void SendEmail(const std::u16string& data_email,
+               const std::u16string& data_subject,
+               const std::u16string& data_body,
+               const std::u16string& data_chooser_title,
+               const std::u16string& data_file_to_attach);
 
 }  // namespace android
 }  // namespace chrome
diff --git a/chrome/browser/android/javascript/web_context_fetcher.cc b/chrome/browser/android/javascript/web_context_fetcher.cc
index 9ae4e72e..24b1598 100644
--- a/chrome/browser/android/javascript/web_context_fetcher.cc
+++ b/chrome/browser/android/javascript/web_context_fetcher.cc
@@ -36,7 +36,7 @@
 
 // IMPORTANT: The output of this fetch should only be handled in memory safe
 //      languages (Java) and should not be parsed in C++.
-static void ExecuteFetch(const base::string16& script,
+static void ExecuteFetch(const std::u16string& script,
                          const ScopedJavaGlobalRef<jobject>& scoped_jcallback,
                          content::RenderFrameHost* render_frame_host) {
   DCHECK(render_frame_host);
@@ -55,7 +55,7 @@
     const JavaParamRef<jobject>& jrender_frame_host) {
   auto* render_frame_host =
       content::RenderFrameHost::FromJavaRenderFrameHost(jrender_frame_host);
-  base::string16 script = base::android::ConvertJavaStringToUTF16(env, jscript);
+  std::u16string script = base::android::ConvertJavaStringToUTF16(env, jscript);
   ScopedJavaGlobalRef<jobject> scoped_jcallback(env, jcallback);
   ExecuteFetch(script, scoped_jcallback, render_frame_host);
 }
diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
index 3ae6c53..ecd7bdda 100644
--- a/chrome/browser/android/ntp/most_visited_sites_bridge.cc
+++ b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
@@ -151,7 +151,7 @@
 void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
     const std::map<SectionType, NTPTilesVector>& sections) {
   JNIEnv* env = AttachCurrentThread();
-  std::vector<base::string16> titles;
+  std::vector<std::u16string> titles;
   std::vector<base::android::ScopedJavaLocalRef<jobject>> urls;
   std::vector<std::string> allowlist_icons;
   std::vector<int> title_sources;
diff --git a/chrome/browser/android/omnibox/autocomplete_controller_android.cc b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
index 3bb7186b..98afd56 100644
--- a/chrome/browser/android/omnibox/autocomplete_controller_android.cc
+++ b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
@@ -140,7 +140,7 @@
     : controller_(new AutocompleteController(
           std::make_unique<ChromeAutocompleteProviderClient>(profile),
           AutocompleteProvider::TYPE_ZERO_SUGGEST)) {
-  AutocompleteInput input(base::string16(), metrics::OmniboxEventProto::NTP,
+  AutocompleteInput input(std::u16string(), metrics::OmniboxEventProto::NTP,
                           ChromeAutocompleteSchemeClassifier(profile));
   input.set_current_url(GURL(chrome::kChromeUINewTabURL));
   input.set_focus_type(OmniboxFocusType::ON_FOCUS);
@@ -197,8 +197,8 @@
     current_url = GURL(ConvertJavaStringToUTF16(env, j_current_url));
   if (!j_desired_tld.is_null())
     desired_tld = base::android::ConvertJavaStringToUTF8(env, j_desired_tld);
-  base::string16 text = ConvertJavaStringToUTF16(env, j_text);
-  size_t cursor_pos = j_cursor_pos == -1 ? base::string16::npos : j_cursor_pos;
+  std::u16string text = ConvertJavaStringToUTF16(env, j_text);
+  size_t cursor_pos = j_cursor_pos == -1 ? std::u16string::npos : j_cursor_pos;
   input_ = AutocompleteInput(
       text, cursor_pos, desired_tld,
       OmniboxEventProto::PageClassification(j_page_classification),
@@ -256,10 +256,10 @@
   if (!autocomplete_controller_->done())
     return;
 
-  base::string16 url = ConvertJavaStringToUTF16(env, j_current_url);
-  base::string16 current_title = ConvertJavaStringToUTF16(env, j_current_title);
+  std::u16string url = ConvertJavaStringToUTF16(env, j_current_url);
+  std::u16string current_title = ConvertJavaStringToUTF16(env, j_current_title);
   const GURL current_url = GURL(url);
-  base::string16 omnibox_text = ConvertJavaStringToUTF16(env, j_omnibox_text);
+  std::u16string omnibox_text = ConvertJavaStringToUTF16(env, j_omnibox_text);
 
   // If omnibox text is empty, set it to the current URL for the purposes of
   // populating the verbatim match.
@@ -306,7 +306,7 @@
   if (!IsValidMatch(env, selected_index, hash_code))
     return;
 
-  base::string16 url = ConvertJavaStringToUTF16(env, j_current_url);
+  std::u16string url = ConvertJavaStringToUTF16(env, j_current_url);
   const GURL current_url = GURL(url);
   const base::TimeTicks& now(base::TimeTicks::Now());
   content::WebContents* web_contents =
@@ -341,7 +341,7 @@
   OmniboxLog log(
       // For zero suggest, record an empty input string instead of the
       // current URL.
-      input_.focus_type() != OmniboxFocusType::DEFAULT ? base::string16()
+      input_.focus_type() != OmniboxFocusType::DEFAULT ? std::u16string()
                                                        : input_.text(),
       false,                /* don't know */
       input_.type(), false, /* not keyword mode */
@@ -391,7 +391,7 @@
       autocomplete_controller_->result().match_at(selected_index));
 
   if (!jnew_query_text.is_null()) {
-    base::string16 query =
+    std::u16string query =
         base::android::ConvertJavaStringToUTF16(env, jnew_query_text);
     if (!match.search_terms_args) {
       match.search_terms_args.reset(new TemplateURLRef::SearchTermsArgs(query));
@@ -516,7 +516,7 @@
   autocomplete_controller_->InlineTailPrefixes();
 
   // Get the inline-autocomplete text.
-  base::string16 inline_autocompletion;
+  std::u16string inline_autocompletion;
   if (auto* default_match = autocomplete_result.default_match())
     inline_autocompletion = default_match->inline_autocompletion;
   ScopedJavaLocalRef<jstring> inline_text =
@@ -539,7 +539,7 @@
       << "Voice matches received with no registered VoiceSuggestProvider. "
       << "Either disable voice input, or provision VoiceSuggestProvider.";
 
-  std::vector<base::string16> voice_matches;
+  std::vector<std::u16string> voice_matches;
   std::vector<float> confidence_scores;
   AppendJavaStringArrayToStringVector(env, j_voice_matches, &voice_matches);
   JavaFloatArrayToFloatVector(env, j_confidence_scores, &confidence_scores);
@@ -617,7 +617,7 @@
   if (!profile)
     return ScopedJavaLocalRef<jstring>();
   AutocompleteMatch match;
-  base::string16 query_string(ConvertJavaStringToUTF16(env, jquery));
+  std::u16string query_string(ConvertJavaStringToUTF16(env, jquery));
   AutocompleteClassifierFactory::GetForProfile(profile)->Classify(
       query_string,
       false,
diff --git a/chrome/browser/android/omnibox/omnibox_prerender.cc b/chrome/browser/android/omnibox/omnibox_prerender.cc
index 719e97e4..5b88a40 100644
--- a/chrome/browser/android/omnibox/omnibox_prerender.cc
+++ b/chrome/browser/android/omnibox/omnibox_prerender.cc
@@ -71,9 +71,9 @@
   AutocompleteResult* autocomplete_result =
       reinterpret_cast<AutocompleteResult*>(jsource_match);
   Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile_android);
-  base::string16 url_string =
+  std::u16string url_string =
       base::android::ConvertJavaStringToUTF16(env, j_url);
-  base::string16 current_url_string =
+  std::u16string current_url_string =
       base::android::ConvertJavaStringToUTF16(env, j_current_url);
   content::WebContents* web_contents =
       TabAndroid::GetNativeTab(env, j_tab)->web_contents();
diff --git a/chrome/browser/android/password_edit_delegate.h b/chrome/browser/android/password_edit_delegate.h
index 9b7ee38..8de3f3e 100644
--- a/chrome/browser/android/password_edit_delegate.h
+++ b/chrome/browser/android/password_edit_delegate.h
@@ -19,8 +19,8 @@
 
   // The method edits a password form held by the delegate. |new_username| and
   // |new_password| are user input from the PasswordEntryEditor.
-  virtual void EditSavedPassword(const base::string16& new_username,
-                                 const base::string16& new_password) = 0;
+  virtual void EditSavedPassword(const std::u16string& new_username,
+                                 const std::u16string& new_password) = 0;
 
   DISALLOW_COPY_AND_ASSIGN(PasswordEditDelegate);
 };
diff --git a/chrome/browser/android/preferences/autofill/autofill_profile_bridge.cc b/chrome/browser/android/preferences/autofill/autofill_profile_bridge.cc
index e29abb4..26322128 100644
--- a/chrome/browser/android/preferences/autofill/autofill_profile_bridge.cc
+++ b/chrome/browser/android/preferences/autofill/autofill_profile_bridge.cc
@@ -51,10 +51,10 @@
     const JavaParamRef<jobject>& j_country_name_list) {
   std::vector<std::string> country_codes = GetRegionCodes();
   std::vector<std::string> known_country_codes;
-  std::vector<base::string16> known_country_names;
+  std::vector<std::u16string> known_country_names;
   std::string locale = g_browser_process->GetApplicationLocale();
   for (auto country_code : country_codes) {
-    const base::string16& country_name =
+    const std::u16string& country_name =
         l10n_util::GetDisplayNameForCountry(country_code, locale);
     // Don't display a country code for which a name is not known yet.
     if (country_name != base::UTF8ToUTF16(country_code)) {
diff --git a/chrome/browser/android/reading_list/reading_list_bridge.cc b/chrome/browser/android/reading_list/reading_list_bridge.cc
index b5ff505..9dc2af6 100644
--- a/chrome/browser/android/reading_list/reading_list_bridge.cc
+++ b/chrome/browser/android/reading_list/reading_list_bridge.cc
@@ -21,17 +21,17 @@
   service->OnStart();
 }
 
-base::string16 ReadingListBridge::getNotificationTitle() {
+std::u16string ReadingListBridge::getNotificationTitle() {
   JNIEnv* env = base::android::AttachCurrentThread();
-  base::string16 title;
+  std::u16string title;
   base::android::ConvertJavaStringToUTF16(
       env, Java_ReadingListBridge_getNotificationTitle(env).obj(), &title);
   return title;
 }
 
-base::string16 ReadingListBridge::getNotificationSubTitle(int unread_size) {
+std::u16string ReadingListBridge::getNotificationSubTitle(int unread_size) {
   JNIEnv* env = base::android::AttachCurrentThread();
-  base::string16 subtitle;
+  std::u16string subtitle;
   base::android::ConvertJavaStringToUTF16(
       env, Java_ReadingListBridge_getNotificationText(env, unread_size).obj(),
       &subtitle);
diff --git a/chrome/browser/android/reading_list/reading_list_bridge.h b/chrome/browser/android/reading_list/reading_list_bridge.h
index 1e4159f..587acd4a7 100644
--- a/chrome/browser/android/reading_list/reading_list_bridge.h
+++ b/chrome/browser/android/reading_list/reading_list_bridge.h
@@ -15,8 +15,8 @@
 
  private:
   // ReadingListNotificationDelegate implementation.
-  base::string16 getNotificationTitle() override;
-  base::string16 getNotificationSubTitle(int unread_size) override;
+  std::u16string getNotificationTitle() override;
+  std::u16string getNotificationSubTitle(int unread_size) override;
   void OpenReadingListPage() override;
 };
 
diff --git a/chrome/browser/android/search_permissions/search_geolocation_disclosure_infobar_delegate.cc b/chrome/browser/android/search_permissions/search_geolocation_disclosure_infobar_delegate.cc
index 4e5ca23..1e9bf27 100644
--- a/chrome/browser/android/search_permissions/search_geolocation_disclosure_infobar_delegate.cc
+++ b/chrome/browser/android/search_permissions/search_geolocation_disclosure_infobar_delegate.cc
@@ -41,7 +41,7 @@
 void SearchGeolocationDisclosureInfoBarDelegate::Create(
     content::WebContents* web_contents,
     const GURL& search_url,
-    const base::string16& search_engine_name) {
+    const std::u16string& search_engine_name) {
   InfoBarService* infobar_service =
       InfoBarService::FromWebContents(web_contents);
   // Add the new delegate.
@@ -78,14 +78,14 @@
     SearchGeolocationDisclosureInfoBarDelegate(
         content::WebContents* web_contents,
         const GURL& search_url,
-        const base::string16& search_engine_name)
+        const std::u16string& search_engine_name)
     : infobars::InfoBarDelegate(),
       search_url_(search_url),
       result_(DisclosureResult::IGNORED),
       creation_time_(base::Time::Now()) {
   pref_service_ = Profile::FromBrowserContext(web_contents->GetBrowserContext())
                       ->GetPrefs();
-  base::string16 link = l10n_util::GetStringUTF16(
+  std::u16string link = l10n_util::GetStringUTF16(
       IDS_SEARCH_GEOLOCATION_DISCLOSURE_INFOBAR_SETTINGS_LINK_TEXT);
   std::vector<size_t> offsets;
   message_text_ =
diff --git a/chrome/browser/android/search_permissions/search_geolocation_disclosure_infobar_delegate.h b/chrome/browser/android/search_permissions/search_geolocation_disclosure_infobar_delegate.h
index 403d4c9..e340a7a7 100644
--- a/chrome/browser/android/search_permissions/search_geolocation_disclosure_infobar_delegate.h
+++ b/chrome/browser/android/search_permissions/search_geolocation_disclosure_infobar_delegate.h
@@ -35,7 +35,7 @@
   // Create and show the infobar.
   static void Create(content::WebContents* web_contents,
                      const GURL& search_url,
-                     const base::string16& search_engine_name);
+                     const std::u16string& search_engine_name);
 
   // Determine if there is a search geolocation disclosure infobar already open.
   static bool IsSearchGeolocationDisclosureOpen(
@@ -44,7 +44,7 @@
   void RecordSettingsClicked();
 
   // The translated text of the message to display.
-  const base::string16& message_text() const { return message_text_; }
+  const std::u16string& message_text() const { return message_text_; }
 
   // The range of the message that should be a link.
   const gfx::Range& inline_link_range() const { return inline_link_range_; }
@@ -58,7 +58,7 @@
   explicit SearchGeolocationDisclosureInfoBarDelegate(
       content::WebContents* web_contents,
       const GURL& search_url,
-      const base::string16& search_engine_name);
+      const std::u16string& search_engine_name);
 
   // InfoBarDelegate:
   void InfoBarDismissed() override;
@@ -66,7 +66,7 @@
   int GetIconId() const override;
 
   // The translated text of the message to display.
-  base::string16 message_text_;
+  std::u16string message_text_;
 
   // The range of the message that should be a link.
   gfx::Range inline_link_range_;
diff --git a/chrome/browser/android/search_permissions/search_geolocation_disclosure_tab_helper.cc b/chrome/browser/android/search_permissions/search_geolocation_disclosure_tab_helper.cc
index 4e92368..f2c0b5c 100644
--- a/chrome/browser/android/search_permissions/search_geolocation_disclosure_tab_helper.cc
+++ b/chrome/browser/android/search_permissions/search_geolocation_disclosure_tab_helper.cc
@@ -164,7 +164,7 @@
   // search |template_url| was non-null, and ShouldShowDisclosureForAPIAccess()
   // would have also seen an empty DSE origin if it were.
   DCHECK(template_url);
-  base::string16 search_engine_name = template_url->short_name();
+  std::u16string search_engine_name = template_url->short_name();
   SearchGeolocationDisclosureInfoBarDelegate::Create(web_contents(), gurl,
                                                      search_engine_name);
   shown_count++;
diff --git a/chrome/browser/android/search_permissions/search_permissions_service.cc b/chrome/browser/android/search_permissions/search_permissions_service.cc
index 01dc104..d4bfd08 100644
--- a/chrome/browser/android/search_permissions/search_permissions_service.cc
+++ b/chrome/browser/android/search_permissions/search_permissions_service.cc
@@ -54,7 +54,7 @@
       template_url_service_->RemoveObserver(this);
   }
 
-  base::string16 GetDSEName() override {
+  std::u16string GetDSEName() override {
     if (template_url_service_) {
       const TemplateURL* template_url =
           template_url_service_->GetDefaultSearchProvider();
@@ -62,7 +62,7 @@
         return template_url->short_name();
     }
 
-    return base::string16();
+    return std::u16string();
   }
 
   url::Origin GetDSEOrigin() override {
@@ -98,7 +98,7 @@
 }  // namespace
 
 struct SearchPermissionsService::PrefValue {
-  base::string16 dse_name;
+  std::u16string dse_name;
   std::string dse_origin;
   ContentSetting geolocation_setting_to_restore;
   ContentSetting notifications_setting_to_restore;
@@ -214,8 +214,8 @@
 
   PrefValue pref = GetDSEPref();
 
-  base::string16 new_dse_name = delegate_->GetDSEName();
-  base::string16 old_dse_name = pref.dse_name;
+  std::u16string new_dse_name = delegate_->GetDSEName();
+  std::u16string old_dse_name = pref.dse_name;
 
   GURL old_dse_origin(pref.dse_origin);
   GURL new_dse_origin = delegate_->GetDSEOrigin().GetURL();
@@ -421,7 +421,7 @@
       pref_service_->GetDictionary(prefs::kDSEPermissionsSettings);
 
   PrefValue pref;
-  base::string16 dse_name;
+  std::u16string dse_name;
   std::string dse_origin;
   int geolocation_setting_to_restore;
   int notifications_setting_to_restore;
diff --git a/chrome/browser/android/search_permissions/search_permissions_service.h b/chrome/browser/android/search_permissions/search_permissions_service.h
index dfc97fe..3ea0435 100644
--- a/chrome/browser/android/search_permissions/search_permissions_service.h
+++ b/chrome/browser/android/search_permissions/search_permissions_service.h
@@ -41,7 +41,7 @@
     virtual ~SearchEngineDelegate() {}
 
     // Returns the name of the current DSE.
-    virtual base::string16 GetDSEName() = 0;
+    virtual std::u16string GetDSEName() = 0;
 
     // Returns the origin of the DSE. If the current DSE is Google this will
     // return the current CCTLD.
diff --git a/chrome/browser/android/search_permissions/search_permissions_service_unittest.cc b/chrome/browser/android/search_permissions/search_permissions_service_unittest.cc
index 8d50534f..ed3f828 100644
--- a/chrome/browser/android/search_permissions/search_permissions_service_unittest.cc
+++ b/chrome/browser/android/search_permissions/search_permissions_service_unittest.cc
@@ -43,7 +43,7 @@
  public:
   TestSearchEngineDelegate()
       : dse_origin_(url::Origin::Create(GURL(kGoogleURL))) {}
-  base::string16 GetDSEName() override {
+  std::u16string GetDSEName() override {
     if (dse_origin_.host().find("google") != std::string::npos)
       return base::ASCIIToUTF16("Google");
 
diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc
index b6eff0b..fdb2250 100644
--- a/chrome/browser/android/tab_android.cc
+++ b/chrome/browser/android/tab_android.cc
@@ -174,12 +174,12 @@
   return Java_TabImpl_isNativePage(env, weak_java_tab_.get(env));
 }
 
-base::string16 TabAndroid::GetTitle() const {
+std::u16string TabAndroid::GetTitle() const {
   JNIEnv* env = base::android::AttachCurrentThread();
   ScopedJavaLocalRef<jstring> java_title =
       Java_TabImpl_getTitle(env, weak_java_tab_.get(env));
   return java_title ? base::android::ConvertJavaStringToUTF16(java_title)
-                    : base::string16();
+                    : std::u16string();
 }
 
 GURL TabAndroid::GetURL() const {
@@ -464,7 +464,7 @@
     const JavaParamRef<jstring>& jtitle) {
   DCHECK(web_contents());
 
-  base::string16 title;
+  std::u16string title;
   if (jtitle)
     title = base::android::ConvertJavaStringToUTF16(env, jtitle);
 
diff --git a/chrome/browser/android/tab_android.h b/chrome/browser/android/tab_android.h
index 66e3a3e..c9149ff 100644
--- a/chrome/browser/android/tab_android.h
+++ b/chrome/browser/android/tab_android.h
@@ -93,7 +93,7 @@
   bool IsNativePage() const;
 
   // Return the tab title.
-  base::string16 GetTitle() const;
+  std::u16string GetTitle() const;
 
   // Return the tab url.
   GURL GetURL() const;
diff --git a/chrome/browser/android/vr/autocomplete_controller.cc b/chrome/browser/android/vr/autocomplete_controller.cc
index f4f0eb1..a3a800e6 100644
--- a/chrome/browser/android/vr/autocomplete_controller.cc
+++ b/chrome/browser/android/vr/autocomplete_controller.cc
@@ -63,9 +63,9 @@
 }
 
 std::tuple<GURL, bool> AutocompleteController::GetUrlFromVoiceInput(
-    const base::string16& input) {
+    const std::u16string& input) {
   AutocompleteMatch match;
-  base::string16 culled_input;
+  std::u16string culled_input;
   base::RemoveChars(input, base::ASCIIToUTF16(" "), &culled_input);
   client_->Classify(culled_input, false, false,
                     metrics::OmniboxEventProto::INVALID_SPEC, &match, nullptr);
diff --git a/chrome/browser/android/vr/autocomplete_controller.h b/chrome/browser/android/vr/autocomplete_controller.h
index 3a98147..fbe52d4 100644
--- a/chrome/browser/android/vr/autocomplete_controller.h
+++ b/chrome/browser/android/vr/autocomplete_controller.h
@@ -38,7 +38,7 @@
   // navigates to the default search engine with |input| as query and false.
   // This function runs independently of any currently-running autocomplete
   // session.
-  std::tuple<GURL, bool> GetUrlFromVoiceInput(const base::string16& input);
+  std::tuple<GURL, bool> GetUrlFromVoiceInput(const std::u16string& input);
 
  private:
   // ::AutocompleteController::Observer:
diff --git a/chrome/browser/android/vr/vr_gl_thread.cc b/chrome/browser/android/vr/vr_gl_thread.cc
index 4c1ebfc8..6b03948 100644
--- a/chrome/browser/android/vr/vr_gl_thread.cc
+++ b/chrome/browser/android/vr/vr_gl_thread.cc
@@ -403,7 +403,7 @@
                      weak_browser_ui_, enabled));
 }
 
-void VrGLThread::SetRecognitionResult(const base::string16& result) {
+void VrGLThread::SetRecognitionResult(const std::u16string& result) {
   DCHECK(OnMainThread());
   task_runner()->PostTask(
       FROM_HERE, base::BindOnce(&BrowserUiInterface::SetRecognitionResult,
@@ -507,7 +507,7 @@
                                          weak_browser_ui_, floating));
 }
 
-void VrGLThread::ShowPlatformToast(const base::string16& text) {
+void VrGLThread::ShowPlatformToast(const std::u16string& text) {
   task_runner()->PostTask(FROM_HERE,
                           base::BindOnce(&BrowserUiInterface::ShowPlatformToast,
                                          weak_browser_ui_, text));
diff --git a/chrome/browser/android/vr/vr_gl_thread.h b/chrome/browser/android/vr/vr_gl_thread.h
index b774a10..bf7faf6d 100644
--- a/chrome/browser/android/vr/vr_gl_thread.h
+++ b/chrome/browser/android/vr/vr_gl_thread.h
@@ -130,7 +130,7 @@
   void SetSpeechRecognitionEnabled(bool enabled) override;
   void SetHasOrCanRequestRecordAudioPermission(
       bool has_or_can_request_record_audio) override;
-  void SetRecognitionResult(const base::string16& result) override;
+  void SetRecognitionResult(const std::u16string& result) override;
   void OnSpeechRecognitionStateChanged(int new_state) override;
   void SetOmniboxSuggestions(std::vector<OmniboxSuggestion> result) override;
   void OnAssetsLoaded(AssetsLoadStatus status,
@@ -149,7 +149,7 @@
   void OnSwapContents(int new_content_id) override;
   void SetDialogLocation(float x, float y) override;
   void SetDialogFloating(bool floating) override;
-  void ShowPlatformToast(const base::string16& text) override;
+  void ShowPlatformToast(const std::u16string& text) override;
   void CancelPlatformToast() override;
   void OnContentBoundsChanged(int width, int height) override;
   void PerformKeyboardInputForTesting(
diff --git a/chrome/browser/android/vr/vr_shell.cc b/chrome/browser/android/vr/vr_shell.cc
index 0aadf69..a7e03a39 100644
--- a/chrome/browser/android/vr/vr_shell.cc
+++ b/chrome/browser/android/vr/vr_shell.cc
@@ -576,7 +576,7 @@
 void VrShell::ShowToast(JNIEnv* env,
                         const base::android::JavaParamRef<jobject>& obj,
                         jstring jtext) {
-  base::string16 text;
+  std::u16string text;
   base::android::ConvertJavaStringToUTF16(env, jtext, &text);
   gl_thread_->ShowPlatformToast(text);
 }
@@ -993,7 +993,7 @@
   return ChromeLocationBarModelDelegate::ShouldDisplayURL();
 }
 
-void VrShell::OnVoiceResults(const base::string16& result) {
+void VrShell::OnVoiceResults(const std::u16string& result) {
   JNIEnv* env = base::android::AttachCurrentThread();
   GURL url;
   bool input_was_url;
diff --git a/chrome/browser/android/vr/vr_shell.h b/chrome/browser/android/vr/vr_shell.h
index 68cdb815..a53ba1d 100644
--- a/chrome/browser/android/vr/vr_shell.h
+++ b/chrome/browser/android/vr/vr_shell.h
@@ -245,7 +245,7 @@
   content::WebContents* GetActiveWebContents() const override;
   bool ShouldDisplayURL() const override;
 
-  void OnVoiceResults(const base::string16& result) override;
+  void OnVoiceResults(const std::u16string& result) override;
 
   void OnAssetsLoaded(AssetsLoadStatus status,
                       std::unique_ptr<Assets> assets,
diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc
index b8944695..66302e1a 100644
--- a/chrome/browser/android/webapk/webapk_installer.cc
+++ b/chrome/browser/android/webapk/webapk_installer.cc
@@ -235,7 +235,7 @@
       webapk::ShareTargetParamsFile* share_files =
           share_target_params->add_files();
       share_files->set_name(base::UTF16ToUTF8(share_target_params_file.name));
-      for (base::string16 mime_type : share_target_params_file.accept) {
+      for (std::u16string mime_type : share_target_params_file.accept) {
         share_files->add_accept(base::UTF16ToUTF8(mime_type));
       }
     }
@@ -290,7 +290,7 @@
     auto* shortcut_item = web_app_manifest->add_shortcuts();
     shortcut_item->set_name(base::UTF16ToUTF8(manifest_shortcut_item.name));
     shortcut_item->set_short_name(base::UTF16ToUTF8(
-        manifest_shortcut_item.short_name.value_or(base::string16())));
+        manifest_shortcut_item.short_name.value_or(std::u16string())));
     shortcut_item->set_url(manifest_shortcut_item.url.spec());
 
     for (const auto& manifest_icon : manifest_shortcut_item.icons) {
diff --git a/chrome/browser/android/webapk/webapk_installer.h b/chrome/browser/android/webapk/webapk_installer.h
index 76454c7..1d32755 100644
--- a/chrome/browser/android/webapk/webapk_installer.h
+++ b/chrome/browser/android/webapk/webapk_installer.h
@@ -219,7 +219,7 @@
 
   bool is_primary_icon_maskable_;
 
-  base::string16 short_name_;
+  std::u16string short_name_;
 
   // WebAPK server URL.
   GURL server_url_;
diff --git a/chrome/browser/android/webapk/webapk_update_data_fetcher.cc b/chrome/browser/android/webapk/webapk_update_data_fetcher.cc
index e784e3a..d50091e 100644
--- a/chrome/browser/android/webapk/webapk_update_data_fetcher.cc
+++ b/chrome/browser/android/webapk/webapk_update_data_fetcher.cc
@@ -242,8 +242,8 @@
         (info_.share_target->enctype ==
          blink::mojom::ManifestShareTarget_Enctype::kMultipartFormData);
 
-    std::vector<base::string16> file_names;
-    std::vector<std::vector<base::string16>> accepts;
+    std::vector<std::u16string> file_names;
+    std::vector<std::vector<std::u16string>> accepts;
     for (auto& f : info_.share_target->params.files) {
       file_names.push_back(f.name);
       accepts.push_back(f.accept);
@@ -257,7 +257,7 @@
   // Wraps the shortcut info in a 2D vector for convenience.
   // The inner vector represents a shortcut items, with the following fields:
   // <name>, <short name>, <launch url>, <icon url>, <icon hash>.
-  std::vector<std::vector<base::string16>> shortcuts;
+  std::vector<std::vector<std::u16string>> shortcuts;
   DCHECK_EQ(info_.shortcut_items.size(), info_.best_shortcut_icon_urls.size());
 
   for (size_t i = 0; i < info_.shortcut_items.size(); i++) {
@@ -273,7 +273,7 @@
     }
 
     shortcuts.push_back({shortcut.name,
-                         shortcut.short_name.value_or(base::string16()),
+                         shortcut.short_name.value_or(std::u16string()),
                          base::UTF8ToUTF16(shortcut.url.spec()),
                          base::UTF8ToUTF16(chosen_icon_url.spec()),
                          base::UTF8ToUTF16(chosen_icon_hash),
diff --git a/chrome/browser/android/webapk/webapk_update_manager.cc b/chrome/browser/android/webapk/webapk_update_manager.cc
index e9b58072..0241c74 100644
--- a/chrome/browser/android/webapk/webapk_update_manager.cc
+++ b/chrome/browser/android/webapk/webapk_update_manager.cc
@@ -123,11 +123,11 @@
             ? blink::mojom::ManifestShareTarget_Enctype::kMultipartFormData
             : blink::mojom::ManifestShareTarget_Enctype::kFormUrlEncoded;
 
-    std::vector<base::string16> fileNames;
+    std::vector<std::u16string> fileNames;
     base::android::AppendJavaStringArrayToStringVector(
         env, java_share_target_param_file_names, &fileNames);
 
-    std::vector<std::vector<base::string16>> accepts;
+    std::vector<std::vector<std::u16string>> accepts;
     base::android::Java2dStringArrayTo2dStringVector(
         env, java_share_target_param_accepts, &accepts);
 
@@ -170,7 +170,7 @@
   std::string webapk_package;
   ConvertJavaStringToUTF8(env, java_webapk_package, &webapk_package);
 
-  std::vector<std::vector<base::string16>> shortcuts;
+  std::vector<std::vector<std::u16string>> shortcuts;
   base::android::Java2dStringArrayTo2dStringVector(env, java_shortcuts,
                                                    &shortcuts);
 
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm
index 4fc61e6..c2a345f 100644
--- a/chrome/browser/app_controller_mac.mm
+++ b/chrome/browser/app_controller_mac.mm
@@ -334,7 +334,7 @@
   void OnProfileAdded(const base::FilePath& profile_path) override {}
 
   void OnProfileWasRemoved(const base::FilePath& profile_path,
-                           const base::string16& profile_name) override {
+                           const std::u16string& profile_name) override {
     // When a profile is deleted we need to notify the AppController,
     // so it can correctly update its pointer to the last used profile.
     [app_controller_ profileWasRemoved:profile_path];
@@ -343,7 +343,7 @@
   void OnProfileWillBeRemoved(const base::FilePath& profile_path) override {}
 
   void OnProfileNameChanged(const base::FilePath& profile_path,
-                            const base::string16& old_profile_name) override {}
+                            const std::u16string& old_profile_name) override {}
 
   void OnProfileAvatarChanged(const base::FilePath& profile_path) override {}
 
@@ -1894,7 +1894,7 @@
 void CreateGuestProfileIfNeeded() {
   g_browser_process->profile_manager()->CreateProfileAsync(
       ProfileManager::GetGuestProfilePath(),
-      base::BindRepeating(&UpdateProfileInUse), base::string16(),
+      base::BindRepeating(&UpdateProfileInUse), std::u16string(),
       std::string());
 }
 
diff --git a/chrome/browser/app_controller_mac_browsertest.mm b/chrome/browser/app_controller_mac_browsertest.mm
index c2358c04..c9bc917 100644
--- a/chrome/browser/app_controller_mac_browsertest.mm
+++ b/chrome/browser/app_controller_mac_browsertest.mm
@@ -135,7 +135,7 @@
       &CreateProfileCallback,
       base::RunLoop::QuitCurrentWhenIdleClosureDeprecated(), &profile);
   g_browser_process->profile_manager()->CreateProfileAsync(
-      profile_dir, create_callback, base::string16(), std::string());
+      profile_dir, create_callback, std::u16string(), std::string());
   base::RunLoop().Run();
   return profile;
 }
@@ -625,7 +625,7 @@
   const base::FilePath profile_path =
       profile_manager->GenerateNextProfileDirectoryPath();
   profile_storage->AddProfile(
-      profile_path, base::ASCIIToUTF16("name_1"), "12345", base::string16(),
+      profile_path, base::ASCIIToUTF16("name_1"), "12345", std::u16string(),
       /*is_consented_primary_account=*/false, /*icon_index=*/0,
       /*supervised_user_id*/ std::string(), EmptyAccountId());
 
@@ -799,7 +799,7 @@
       profile2_path,
       base::BindRepeating(&RunClosureWhenProfileInitialized,
                           run_loop.QuitClosure()),
-      base::string16(), std::string());
+      std::u16string(), std::string());
   run_loop.Run();
   Profile* profile2 = profile_manager->GetProfileByPath(profile2_path);
   ASSERT_TRUE(profile2);
@@ -861,10 +861,10 @@
   [ac mainMenuCreated];
 
   // Constants for bookmarks that we will create later.
-  const base::string16 title1(base::ASCIIToUTF16("Dinosaur Comics"));
+  const std::u16string title1(base::ASCIIToUTF16("Dinosaur Comics"));
   const GURL url1("http://qwantz.com//");
 
-  const base::string16 title2(base::ASCIIToUTF16("XKCD"));
+  const std::u16string title2(base::ASCIIToUTF16("XKCD"));
   const GURL url2("https://www.xkcd.com/");
 
   // Use the existing profile as profile 1.
diff --git a/chrome/browser/apps/app_service/extension_apps_base.cc b/chrome/browser/apps/app_service/extension_apps_base.cc
index 5246526..027267ff4 100644
--- a/chrome/browser/apps/app_service/extension_apps_base.cc
+++ b/chrome/browser/apps/app_service/extension_apps_base.cc
@@ -507,7 +507,7 @@
     return;
   }
 
-  base::string16 error;
+  std::u16string error;
   extensions::ExtensionSystem::Get(profile())
       ->extension_service()
       ->UninstallExtension(app_id, GetUninstallReason(uninstall_source),
diff --git a/chrome/browser/apps/app_service/extension_uninstaller.cc b/chrome/browser/apps/app_service/extension_uninstaller.cc
index db094aa..a6b1848 100644
--- a/chrome/browser/apps/app_service/extension_uninstaller.cc
+++ b/chrome/browser/apps/app_service/extension_uninstaller.cc
@@ -47,7 +47,7 @@
 
 void ExtensionUninstaller::OnExtensionUninstallDialogClosed(
     bool did_start_uninstall,
-    const base::string16& error) {
+    const std::u16string& error) {
   delete this;
 }
 
diff --git a/chrome/browser/apps/app_service/extension_uninstaller.h b/chrome/browser/apps/app_service/extension_uninstaller.h
index 2f430ce..0c64902 100644
--- a/chrome/browser/apps/app_service/extension_uninstaller.h
+++ b/chrome/browser/apps/app_service/extension_uninstaller.h
@@ -42,7 +42,7 @@
  private:
   // Overridden from ExtensionUninstallDialog::Delegate:
   void OnExtensionUninstallDialogClosed(bool did_start_uninstall,
-                                        const base::string16& error) override;
+                                        const std::u16string& error) override;
 
   Profile* profile_;
   std::string app_id_;
diff --git a/chrome/browser/apps/app_service/notifications_browsertest.cc b/chrome/browser/apps/app_service/notifications_browsertest.cc
index 7983c86..665bc50f 100644
--- a/chrome/browser/apps/app_service/notifications_browsertest.cc
+++ b/chrome/browser/apps/app_service/notifications_browsertest.cc
@@ -280,7 +280,7 @@
       const GURL& origin) {
     return std::make_unique<message_center::Notification>(
         message_center::NOTIFICATION_TYPE_SIMPLE, notification_id,
-        base::string16(), base::string16(), gfx::Image(),
+        std::u16string(), std::u16string(), gfx::Image(),
         base::UTF8ToUTF16(origin.host()), origin,
         message_center::NotifierId(origin),
         message_center::RichNotificationData(), nullptr);
diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc
index bc36672..02f4a3d6 100644
--- a/chrome/browser/apps/guest_view/web_view_browsertest.cc
+++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc
@@ -241,8 +241,8 @@
 void ExecuteScriptWaitForTitle(content::WebContents* web_contents,
                                const char* script,
                                const char* title) {
-  base::string16 expected_title(base::ASCIIToUTF16(title));
-  base::string16 error_title(base::ASCIIToUTF16("error"));
+  std::u16string expected_title(base::ASCIIToUTF16(title));
+  std::u16string error_title(base::ASCIIToUTF16("error"));
 
   content::TitleWatcher title_watcher(web_contents, expected_title);
   title_watcher.AlsoWaitForTitle(error_title);
diff --git a/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc b/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc
index 545e6283..06341f7 100644
--- a/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc
+++ b/chrome/browser/apps/platform_apps/api/media_galleries/media_galleries_apitest.cc
@@ -144,7 +144,7 @@
 
     StorageMonitor::GetInstance()->receiver()->ProcessAttach(
         StorageInfo(device_id_, kDevicePath, base::ASCIIToUTF16(kDeviceName),
-                    base::string16(), base::string16(), 0));
+                    std::u16string(), std::u16string(), 0));
     content::RunAllPendingInMessageLoop();
   }
 
diff --git a/chrome/browser/apps/platform_apps/app_shim_interactive_uitest_mac.mm b/chrome/browser/apps/platform_apps/app_shim_interactive_uitest_mac.mm
index 1170083..7c54023 100644
--- a/chrome/browser/apps/platform_apps/app_shim_interactive_uitest_mac.mm
+++ b/chrome/browser/apps/platform_apps/app_shim_interactive_uitest_mac.mm
@@ -291,7 +291,7 @@
   // To create a shim in a test, instead call UpdateAllShortcuts, which has been
   // blessed by g_app_shims_allow_update_and_launch_in_tests.
   base::RunLoop run_loop;
-  web_app::UpdateAllShortcuts(base::string16(), profile(), app,
+  web_app::UpdateAllShortcuts(std::u16string(), profile(), app,
                               run_loop.QuitClosure());
   run_loop.Run();
   EXPECT_TRUE(base::PathExists(shim_path_));
diff --git a/chrome/browser/apps/platform_apps/platform_app_navigation_redirector_browsertest.cc b/chrome/browser/apps/platform_apps/platform_app_navigation_redirector_browsertest.cc
index c149d7e..06e07cf4 100644
--- a/chrome/browser/apps/platform_apps/platform_app_navigation_redirector_browsertest.cc
+++ b/chrome/browser/apps/platform_apps/platform_app_navigation_redirector_browsertest.cc
@@ -153,7 +153,7 @@
 
   InstallPlatformApp(handler);
 
-  const base::string16 success_title = base::ASCIIToUTF16(success_tab_title);
+  const std::u16string success_title = base::ASCIIToUTF16(success_tab_title);
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
   content::TitleWatcher title_watcher(tab, success_title);
@@ -176,8 +176,8 @@
 
   InstallPlatformApp(handler);
 
-  const base::string16 success_title = base::ASCIIToUTF16(success_tab_title);
-  const base::string16 failure_title = base::ASCIIToUTF16(failure_tab_title);
+  const std::u16string success_title = base::ASCIIToUTF16(success_tab_title);
+  const std::u16string failure_title = base::ASCIIToUTF16(failure_tab_title);
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
   content::TitleWatcher title_watcher(tab, success_title);
@@ -277,7 +277,7 @@
 
   InstallPlatformApp(handler);
 
-  const base::string16 success_title = base::ASCIIToUTF16(success_tab_title);
+  const std::u16string success_title = base::ASCIIToUTF16(success_tab_title);
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
   content::TitleWatcher title_watcher(tab, success_title);
diff --git a/chrome/browser/ash/accessibility/accessibility_extension_loader.cc b/chrome/browser/ash/accessibility/accessibility_extension_loader.cc
index b9a64f85..6b5f7d85 100644
--- a/chrome/browser/ash/accessibility/accessibility_extension_loader.cc
+++ b/chrome/browser/ash/accessibility/accessibility_extension_loader.cc
@@ -129,7 +129,7 @@
 
   auto* extension_service =
       extensions::ExtensionSystem::Get(profile)->extension_service();
-  base::string16 error;
+  std::u16string error;
   extension_service->UninstallExtension(
       extension_id_, extensions::UninstallReason::UNINSTALL_REASON_REINSTALL,
       &error);
diff --git a/chrome/browser/ash/accessibility/accessibility_test_utils.h b/chrome/browser/ash/accessibility/accessibility_test_utils.h
index bb640b0..4f2f21e2 100644
--- a/chrome/browser/ash/accessibility/accessibility_test_utils.h
+++ b/chrome/browser/ash/accessibility/accessibility_test_utils.h
@@ -46,7 +46,7 @@
 
 
  private:
-  std::vector<base::string16> errors_;
+  std::vector<std::u16string> errors_;
   ErrorConsole* error_console_;
 };
 
diff --git a/chrome/browser/ash/accessibility/dictation.cc b/chrome/browser/ash/accessibility/dictation.cc
index cffe422..95fb2a0 100644
--- a/chrome/browser/ash/accessibility/dictation.cc
+++ b/chrome/browser/ash/accessibility/dictation.cc
@@ -96,7 +96,7 @@
 }
 
 void Dictation::OnSpeechResult(
-    const base::string16& query,
+    const std::u16string& query,
     bool is_final,
     const base::Optional<SpeechRecognizerDelegate::TranscriptTiming>&
         word_offsets) {
@@ -167,7 +167,7 @@
           ui::TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
     }
 
-    composition_->text = base::string16();
+    composition_->text = std::u16string();
   } else {
     audio::SoundsManager::Get()->Play(
         static_cast<int>(Sound::kDictationCancel));
diff --git a/chrome/browser/ash/accessibility/dictation.h b/chrome/browser/ash/accessibility/dictation.h
index 961899527..9966ca4 100644
--- a/chrome/browser/ash/accessibility/dictation.h
+++ b/chrome/browser/ash/accessibility/dictation.h
@@ -38,7 +38,7 @@
 
   // SpeechRecognizerDelegate:
   void OnSpeechResult(
-      const base::string16& query,
+      const std::u16string& query,
       bool is_final,
       const base::Optional<SpeechRecognizerDelegate::TranscriptTiming>&
           word_offsets) override;
diff --git a/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc b/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc
index 9e6ad35..50bd3f2 100644
--- a/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc
+++ b/chrome/browser/ash/accessibility/spoken_feedback_app_list_browsertest.cc
@@ -45,7 +45,7 @@
 
 class TestSuggestionChipResult : public TestSearchResult {
  public:
-  explicit TestSuggestionChipResult(const base::string16& title) {
+  explicit TestSuggestionChipResult(const std::u16string& title) {
     set_display_type(SearchResultDisplayType::kChip);
     set_title(title);
   }
diff --git a/chrome/browser/ash/app_mode/certificate_manager_dialog.cc b/chrome/browser/ash/app_mode/certificate_manager_dialog.cc
index 73f0a48..80319893 100644
--- a/chrome/browser/ash/app_mode/certificate_manager_dialog.cc
+++ b/chrome/browser/ash/app_mode/certificate_manager_dialog.cc
@@ -33,12 +33,12 @@
     : LoginWebDialog(profile,
                      delegate,
                      window,
-                     base::string16(),
+                     std::u16string(),
                      GURL(chrome::kChromeUICertificateManagerDialogURL)) {}
 
 CertificateManagerDialog::~CertificateManagerDialog() {}
 
-base::string16 CertificateManagerDialog::GetDialogTitle() const {
+std::u16string CertificateManagerDialog::GetDialogTitle() const {
   return l10n_util::GetStringUTF16(IDS_CERTIFICATE_MANAGER_TITLE);
 }
 
diff --git a/chrome/browser/ash/app_mode/certificate_manager_dialog.h b/chrome/browser/ash/app_mode/certificate_manager_dialog.h
index 95d5b4e0..c642061 100644
--- a/chrome/browser/ash/app_mode/certificate_manager_dialog.h
+++ b/chrome/browser/ash/app_mode/certificate_manager_dialog.h
@@ -22,7 +22,7 @@
   ~CertificateManagerDialog() override;
 
   // ui::WebDialogDelegate
-  base::string16 GetDialogTitle() const override;
+  std::u16string GetDialogTitle() const override;
   void GetDialogSize(gfx::Size* size) const override;
 
  private:
diff --git a/chrome/browser/ash/app_mode/kiosk_external_updater.cc b/chrome/browser/ash/app_mode/kiosk_external_updater.cc
index e4567ea..677304c 100644
--- a/chrome/browser/ash/app_mode/kiosk_external_updater.cc
+++ b/chrome/browser/ash/app_mode/kiosk_external_updater.cc
@@ -432,7 +432,7 @@
 }
 
 void KioskExternalUpdater::NotifyKioskUpdateProgress(
-    const base::string16& message) {
+    const std::u16string& message) {
   if (!notification_)
     notification_ = std::make_unique<KioskExternalUpdateNotification>(message);
   else
@@ -445,15 +445,15 @@
   }
 }
 
-base::string16 KioskExternalUpdater::GetUpdateReportMessage() const {
+std::u16string KioskExternalUpdater::GetUpdateReportMessage() const {
   DCHECK(!IsExternalUpdatePending());
   int updated = 0;
   int failed = 0;
-  base::string16 updated_apps;
-  base::string16 failed_apps;
+  std::u16string updated_apps;
+  std::u16string failed_apps;
   for (const auto& it : external_updates_) {
     const ExternalUpdate& update = it.second;
-    base::string16 app_name = base::UTF8ToUTF16(update.app_name);
+    std::u16string app_name = base::UTF8ToUTF16(update.app_name);
     if (update.update_status == UpdateStatus::kSuccess) {
       ++updated;
       if (updated_apps.empty())
@@ -471,17 +471,17 @@
     }
   }
 
-  base::string16 message =
+  std::u16string message =
       ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
           IDS_KIOSK_EXTERNAL_UPDATE_COMPLETE);
   if (updated) {
-    base::string16 success_app_msg = l10n_util::GetStringFUTF16(
+    std::u16string success_app_msg = l10n_util::GetStringFUTF16(
         IDS_KIOSK_EXTERNAL_UPDATE_SUCCESSFUL_UPDATED_APPS, updated_apps);
     message += base::ASCIIToUTF16("\n") + success_app_msg;
   }
 
   if (failed) {
-    base::string16 failed_app_msg =
+    std::u16string failed_app_msg =
         ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
             IDS_KIOSK_EXTERNAL_UPDATE_FAILED_UPDATED_APPS) +
         base::ASCIIToUTF16("\n") + failed_apps;
diff --git a/chrome/browser/ash/app_mode/kiosk_external_updater.h b/chrome/browser/ash/app_mode/kiosk_external_updater.h
index 61f6591..253575c 100644
--- a/chrome/browser/ash/app_mode/kiosk_external_updater.h
+++ b/chrome/browser/ash/app_mode/kiosk_external_updater.h
@@ -54,7 +54,7 @@
     std::string app_name;
     extensions::CRXFileInfo external_crx;
     UpdateStatus update_status;
-    base::string16 error;
+    std::u16string error;
   };
 
   // chromeos::disks::DiskMountManager::Observer overrides.
@@ -108,7 +108,7 @@
   // the local cache. |success| is true if the operation succeeded.
   void OnPutValidatedExtension(const std::string& app_id, bool success);
 
-  void NotifyKioskUpdateProgress(const base::string16& message);
+  void NotifyKioskUpdateProgress(const std::u16string& message);
 
   void MaybeValidateNextExternalUpdate();
 
@@ -122,7 +122,7 @@
   void DismissKioskUpdateNotification();
 
   // Return a detailed message for kiosk updating status.
-  base::string16 GetUpdateReportMessage() const;
+  std::u16string GetUpdateReportMessage() const;
 
   // Task runner for executing file I/O tasks.
   const scoped_refptr<base::SequencedTaskRunner> backend_task_runner_;
diff --git a/chrome/browser/ash/crosapi/clipboard_ash.cc b/chrome/browser/ash/crosapi/clipboard_ash.cc
index d0c82dbe..e493a94 100644
--- a/chrome/browser/ash/crosapi/clipboard_ash.cc
+++ b/chrome/browser/ash/crosapi/clipboard_ash.cc
@@ -18,7 +18,7 @@
 }
 
 void ClipboardAsh::GetCopyPasteText(GetCopyPasteTextCallback callback) {
-  base::string16 text;
+  std::u16string text;
 
   // There is no source that appropriately represents Lacros. Use kDefault for
   // now.
diff --git a/chrome/browser/ash/crosapi/message_center_ash.cc b/chrome/browser/ash/crosapi/message_center_ash.cc
index b0b2442..beccb8e5 100644
--- a/chrome/browser/ash/crosapi/message_center_ash.cc
+++ b/chrome/browser/ash/crosapi/message_center_ash.cc
@@ -130,7 +130,7 @@
   }
 
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override {
+             const base::Optional<std::u16string>& reply) override {
     if (button_index) {
       // Chrome OS does not support inline reply. The button index comes out of
       // trusted ash-side message center UI code and is guaranteed not to be
diff --git a/chrome/browser/ash/crosapi/message_center_ash_unittest.cc b/chrome/browser/ash/crosapi/message_center_ash_unittest.cc
index 93fe619..b381e4a 100644
--- a/chrome/browser/ash/crosapi/message_center_ash_unittest.cc
+++ b/chrome/browser/ash/crosapi/message_center_ash_unittest.cc
@@ -41,7 +41,7 @@
   return std::make_unique<message_center::Notification>(
       message_center::NOTIFICATION_TYPE_SIMPLE, id, ASCIIToUTF16("title"),
       ASCIIToUTF16("message"), /*icon=*/gfx::Image(),
-      /*display_source=*/base::string16(), GURL(), message_center::NotifierId(),
+      /*display_source=*/std::u16string(), GURL(), message_center::NotifierId(),
       message_center::RichNotificationData(), /*delegate=*/nullptr);
 }
 
diff --git a/chrome/browser/ash/login/demo_mode/demo_session.cc b/chrome/browser/ash/login/demo_mode/demo_session.cc
index a3e41e05a..aff22b4 100644
--- a/chrome/browser/ash/login/demo_mode/demo_session.cc
+++ b/chrome/browser/ash/login/demo_mode/demo_session.cc
@@ -186,7 +186,7 @@
     locale_info.iso_code = locale;
     locale_info.display_name = l10n_util::GetDisplayNameForLocale(
         locale, current_locale_iso_code, true /* is_for_ui */);
-    const base::string16 native_display_name =
+    const std::u16string native_display_name =
         l10n_util::GetDisplayNameForLocale(locale, locale,
                                            true /* is_for_ui */);
     if (locale_info.display_name != native_display_name) {
diff --git a/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc b/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc
index 13228347..10c3c34e 100644
--- a/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc
+++ b/chrome/browser/ash/login/demo_mode/demo_setup_controller.cc
@@ -350,7 +350,7 @@
 
 DemoSetupController::DemoSetupError::~DemoSetupError() = default;
 
-base::string16 DemoSetupController::DemoSetupError::GetLocalizedErrorMessage()
+std::u16string DemoSetupController::DemoSetupError::GetLocalizedErrorMessage()
     const {
   switch (error_code_) {
     case ErrorCode::kOfflinePolicyError:
@@ -428,10 +428,10 @@
       return l10n_util::GetStringUTF16(IDS_DEMO_SETUP_UNEXPECTED_ERROR);
   }
   NOTREACHED() << "No localized error message available for demo setup error.";
-  return base::string16();
+  return std::u16string();
 }
 
-base::string16
+std::u16string
 DemoSetupController::DemoSetupError::GetLocalizedRecoveryMessage() const {
   switch (recovery_method_) {
     case RecoveryMethod::kRetry:
@@ -449,7 +449,7 @@
   }
   NOTREACHED()
       << "No localized error message available for demo setup recovery method.";
-  return base::string16();
+  return std::u16string();
 }
 
 std::string DemoSetupController::DemoSetupError::GetDebugDescription() const {
diff --git a/chrome/browser/ash/login/demo_mode/demo_setup_controller.h b/chrome/browser/ash/login/demo_mode/demo_setup_controller.h
index 7249f172..b06cfb1 100644
--- a/chrome/browser/ash/login/demo_mode/demo_setup_controller.h
+++ b/chrome/browser/ash/login/demo_mode/demo_setup_controller.h
@@ -150,8 +150,8 @@
     ErrorCode error_code() const { return error_code_; }
     RecoveryMethod recovery_method() const { return recovery_method_; }
 
-    base::string16 GetLocalizedErrorMessage() const;
-    base::string16 GetLocalizedRecoveryMessage() const;
+    std::u16string GetLocalizedErrorMessage() const;
+    std::u16string GetLocalizedRecoveryMessage() const;
     std::string GetDebugDescription() const;
 
    private:
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_auth_attempt_unittest.cc b/chrome/browser/ash/login/easy_unlock/easy_unlock_auth_attempt_unittest.cc
index 42a31d8..fca11ac 100644
--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_auth_attempt_unittest.cc
+++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_auth_attempt_unittest.cc
@@ -83,7 +83,7 @@
   }
 
   // proximity_auth::ScreenlockBridge::LockHandler implementation:
-  void ShowBannerMessage(const base::string16& message,
+  void ShowBannerMessage(const std::u16string& message,
                          bool is_warning) override {
     ADD_FAILURE() << "Should not be reached.";
   }
@@ -106,7 +106,7 @@
 
   void SetAuthType(const AccountId& account_id,
                    proximity_auth::mojom::AuthType auth_type,
-                   const base::string16& auth_value) override {
+                   const std::u16string& auth_value) override {
     ADD_FAILURE() << "Should not be reached.";
   }
 
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_notification_controller.cc b/chrome/browser/ash/login/easy_unlock/easy_unlock_notification_controller.cc
index 4988883..34456a7 100644
--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_notification_controller.cc
+++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_notification_controller.cc
@@ -34,14 +34,14 @@
 // Convenience function for creating a Notification.
 std::unique_ptr<message_center::Notification> CreateNotification(
     const std::string& id,
-    const base::string16& title,
-    const base::string16& message,
+    const std::u16string& title,
+    const std::u16string& message,
     const gfx::Image& icon,
     const message_center::RichNotificationData& rich_notification_data,
     message_center::NotificationDelegate* delegate) {
   return std::make_unique<message_center::Notification>(
       message_center::NotificationType::NOTIFICATION_TYPE_SIMPLE, id, title,
-      message, icon, base::string16() /* display_source */,
+      message, icon, std::u16string() /* display_source */,
       GURL() /* origin_url */,
       message_center::NotifierId(message_center::NotifierType::SYSTEM_COMPONENT,
                                  id),
@@ -153,7 +153,7 @@
 
 void EasyUnlockNotificationController::NotificationDelegate::Click(
     const base::Optional<int>& button_index,
-    const base::Optional<base::string16>& reply) {
+    const base::Optional<std::u16string>& reply) {
   if (!notification_controller_)
     return;
 
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_notification_controller.h b/chrome/browser/ash/login/easy_unlock/easy_unlock_notification_controller.h
index 34b9bf23..bbc934c 100644
--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_notification_controller.h
+++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_notification_controller.h
@@ -50,7 +50,7 @@
 
     // message_center::NotificationDelegate:
     void Click(const base::Optional<int>& button_index,
-               const base::Optional<base::string16>& reply) override;
+               const base::Optional<std::u16string>& reply) override;
 
    private:
     ~NotificationDelegate() override;
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler.cc b/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler.cc
index eedb516..efbc0393 100644
--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler.cc
+++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler.cc
@@ -268,7 +268,7 @@
   if (existing_auth_type != proximity_auth::mojom::AuthType::OFFLINE_PASSWORD) {
     screenlock_bridge_->lock_handler()->SetAuthType(
         account_id_, proximity_auth::mojom::AuthType::OFFLINE_PASSWORD,
-        base::string16());
+        std::u16string());
   }
 
   if (hardlock_state_ == NO_PAIRING) {
@@ -293,8 +293,8 @@
         proximity_auth::ScreenlockBridge::USER_POD_CUSTOM_ICON_HARDLOCKED);
   }
 
-  base::string16 device_name = GetDeviceName();
-  base::string16 tooltip;
+  std::u16string device_name = GetDeviceName();
+  std::u16string tooltip;
   switch (hardlock_state_) {
     case USER_HARDLOCK:
       tooltip = l10n_util::GetStringFUTF16(
@@ -344,7 +344,7 @@
 void EasyUnlockScreenlockStateHandler::UpdateTooltipOptions(
     proximity_auth::ScreenlockBridge::UserPodCustomIconOptions* icon_options) {
   size_t resource_id = 0;
-  base::string16 device_name;
+  std::u16string device_name;
   resource_id = GetTooltipResourceId(state_);
   if (TooltipContainsDeviceType(state_))
     device_name = GetDeviceName();
@@ -352,7 +352,7 @@
   if (!resource_id)
     return;
 
-  base::string16 tooltip;
+  std::u16string tooltip;
   if (device_name.empty()) {
     tooltip = l10n_util::GetStringUTF16(resource_id);
   } else {
@@ -366,7 +366,7 @@
   icon_options->SetTooltip(tooltip, autoshow_tooltip);
 }
 
-base::string16 EasyUnlockScreenlockStateHandler::GetDeviceName() {
+std::u16string EasyUnlockScreenlockStateHandler::GetDeviceName() {
   return ui::GetChromeOSDeviceName();
 }
 
@@ -391,7 +391,7 @@
              proximity_auth::mojom::AuthType::OFFLINE_PASSWORD) {
     screenlock_bridge_->lock_handler()->SetAuthType(
         account_id_, proximity_auth::mojom::AuthType::OFFLINE_PASSWORD,
-        base::string16());
+        std::u16string());
   }
 }
 
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler.h b/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler.h
index 7943e794..93949cf 100644
--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler.h
+++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler.h
@@ -92,7 +92,7 @@
 
   // Gets the name to be used for the device. The name depends on the device
   // type (example values: Chromebook and Chromebox).
-  base::string16 GetDeviceName();
+  std::u16string GetDeviceName();
 
   // Updates the screenlock auth type if it has to be changed.
   void UpdateScreenlockAuthType();
diff --git a/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler_unittest.cc b/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler_unittest.cc
index 3b41f02..dc468832 100644
--- a/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler_unittest.cc
+++ b/chrome/browser/ash/login/easy_unlock/easy_unlock_screenlock_state_handler_unittest.cc
@@ -77,12 +77,12 @@
 };
 
 // Checks if `input` string has any unreplaced placeholders.
-bool StringHasPlaceholders(const base::string16& input) {
+bool StringHasPlaceholders(const std::u16string& input) {
   std::vector<size_t> offsets;
-  std::vector<base::string16> subst;
-  subst.push_back(base::string16());
+  std::vector<std::u16string> subst;
+  subst.push_back(std::u16string());
 
-  base::string16 replaced =
+  std::u16string replaced =
       base::ReplaceStringPlaceholders(input, subst, &offsets);
   return !offsets.empty();
 }
@@ -97,7 +97,7 @@
   ~TestLockHandler() override {}
 
   // proximity_auth::ScreenlockBridge::LockHandler implementation:
-  void ShowBannerMessage(const base::string16& message,
+  void ShowBannerMessage(const std::u16string& message,
                          bool is_warning) override {
     ASSERT_FALSE(true) << "Should not be reached.";
   }
@@ -127,7 +127,7 @@
 
   void SetAuthType(const AccountId& account_id,
                    proximity_auth::mojom::AuthType auth_type,
-                   const base::string16& auth_value) override {
+                   const std::u16string& auth_value) override {
     ASSERT_TRUE(account_id_ == account_id)
         << "account_id_=" << account_id_.Serialize()
         << " != account_id=" << account_id.Serialize();
@@ -162,10 +162,10 @@
   // Utility methods used by tests:
 
   // Gets last set auth value.
-  base::string16 GetAuthValue() const { return auth_value_; }
+  std::u16string GetAuthValue() const { return auth_value_; }
 
   // Sets the auth value.
-  void SetAuthValue(const base::string16& value) { auth_value_ = value; }
+  void SetAuthValue(const std::u16string& value) { auth_value_ = value; }
 
   // Returns the number of times an icon was shown since the last call to this
   // method.
@@ -194,8 +194,8 @@
   }
 
   // Gets the custom icon's tooltip text, if one is set.
-  base::string16 GetCustomIconTooltip() const {
-    base::string16 result;
+  std::u16string GetCustomIconTooltip() const {
+    std::u16string result;
     if (last_custom_icon_)
       last_custom_icon_->GetString("tooltip.text", &result);
     return result;
@@ -227,7 +227,7 @@
     EXPECT_TRUE(last_custom_icon_->HasKey("id"));
 
     if (last_custom_icon_->HasKey("tooltip")) {
-      base::string16 tooltip;
+      std::u16string tooltip;
       EXPECT_TRUE(last_custom_icon_->GetString("tooltip.text", &tooltip));
       EXPECT_FALSE(tooltip.empty());
       EXPECT_FALSE(StringHasPlaceholders(tooltip));
@@ -245,7 +245,7 @@
 
   // Auth type and value set using `SetAuthType`.
   proximity_auth::mojom::AuthType auth_type_;
-  base::string16 auth_value_;
+  std::u16string auth_value_;
 
   DISALLOW_COPY_AND_ASSIGN(TestLockHandler);
 };
@@ -559,7 +559,7 @@
 
   state_handler_->ChangeState(ScreenlockState::NO_PHONE);
 
-  EXPECT_EQ(base::string16(), lock_handler_->GetAuthValue());
+  EXPECT_EQ(std::u16string(), lock_handler_->GetAuthValue());
 }
 
 TEST_F(EasyUnlockScreenlockStateHandlerTest,
@@ -680,7 +680,7 @@
 TEST_F(EasyUnlockScreenlockStateHandlerTest, NoOverrideOnlineSignin) {
   lock_handler_->SetAuthType(account_id_,
                              proximity_auth::mojom::AuthType::ONLINE_SIGN_IN,
-                             base::string16());
+                             std::u16string());
 
   std::vector<ScreenlockState> states;
   states.push_back(ScreenlockState::NO_BLUETOOTH);
diff --git a/chrome/browser/ash/login/enrollment/enrollment_screen_view.h b/chrome/browser/ash/login/enrollment/enrollment_screen_view.h
index f85cf9b9..88bb53d4 100644
--- a/chrome/browser/ash/login/enrollment/enrollment_screen_view.h
+++ b/chrome/browser/ash/login/enrollment/enrollment_screen_view.h
@@ -56,7 +56,7 @@
 
   // Sets the enterprise manager and the device type to be shown for the user.
   virtual void SetEnterpriseDomainInfo(const std::string& manager,
-                                       const base::string16& device_type) = 0;
+                                       const std::u16string& device_type) = 0;
 
   // Shows the contents of the screen.
   virtual void Show() = 0;
diff --git a/chrome/browser/ash/login/enrollment/mock_enrollment_screen.h b/chrome/browser/ash/login/enrollment/mock_enrollment_screen.h
index ec2d54f..c3caf5f 100644
--- a/chrome/browser/ash/login/enrollment/mock_enrollment_screen.h
+++ b/chrome/browser/ash/login/enrollment/mock_enrollment_screen.h
@@ -36,7 +36,7 @@
               (Controller*, const policy::EnrollmentConfig& config));
   MOCK_METHOD(void,
               SetEnterpriseDomainInfo,
-              (const std::string& manager, const base::string16& device_type));
+              (const std::string& manager, const std::u16string& device_type));
   MOCK_METHOD(void, Show, ());
   MOCK_METHOD(void, Hide, ());
   MOCK_METHOD(void, ShowSigninScreen, ());
diff --git a/chrome/browser/ash/login/existing_user_controller.cc b/chrome/browser/ash/login/existing_user_controller.cc
index a832f6c..0879207f 100644
--- a/chrome/browser/ash/login/existing_user_controller.cc
+++ b/chrome/browser/ash/login/existing_user_controller.cc
@@ -576,7 +576,7 @@
                      weak_factory_.GetWeakPtr(), user_context));
 }
 
-base::string16 ExistingUserController::GetConnectedNetworkName() {
+std::u16string ExistingUserController::GetConnectedNetworkName() {
   return network_state_helper_->GetCurrentNetworkName();
 }
 
@@ -652,7 +652,7 @@
   // profile is ready.
   UserContext new_user_context = user_context;
   if (user_context.GetKey()->GetKeyType() == Key::KEY_TYPE_PASSWORD_PLAIN) {
-    base::string16 password(
+    std::u16string password(
         base::UTF8ToUTF16(new_user_context.GetKey()->GetSecret()));
     new_user_context.SetSyncPasswordData(password_manager::PasswordHashData(
         user_context.GetAccountId().GetUserEmail(), password,
@@ -1021,9 +1021,9 @@
   message_center::RichNotificationData data;
   data.buttons.push_back(message_center::ButtonInfo(
       l10n_util::GetStringUTF16(IDS_AUTO_LAUNCH_NOTIFICATION_BUTTON)));
-  const base::string16 title =
+  const std::u16string title =
       l10n_util::GetStringUTF16(IDS_AUTO_LAUNCH_NOTIFICATION_TITLE);
-  const base::string16 message = l10n_util::GetStringFUTF16(
+  const std::u16string message = l10n_util::GetStringFUTF16(
       IDS_ASH_LOGIN_MANAGED_SESSION_MONITORING_FULL_WARNING,
       base::UTF8ToUTF16(connector->GetEnterpriseDomainManager()));
   auto delegate =
@@ -1035,7 +1035,7 @@
   std::unique_ptr<message_center::Notification> notification =
       ash::CreateSystemNotification(
           message_center::NOTIFICATION_TYPE_SIMPLE, kAutoLaunchNotificationId,
-          title, message, base::string16(), GURL(),
+          title, message, std::u16string(), GURL(),
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT,
               kAutoLaunchNotifierId),
diff --git a/chrome/browser/ash/login/existing_user_controller.h b/chrome/browser/ash/login/existing_user_controller.h
index 502275cf..4220768e 100644
--- a/chrome/browser/ash/login/existing_user_controller.h
+++ b/chrome/browser/ash/login/existing_user_controller.h
@@ -96,7 +96,7 @@
   void ResyncUserData();
 
   // LoginDisplay::Delegate: implementation
-  base::string16 GetConnectedNetworkName() override;
+  std::u16string GetConnectedNetworkName() override;
   bool IsSigninInProgress() const override;
   void Login(const UserContext& user_context,
              const SigninSpecifics& specifics) override;
@@ -343,10 +343,10 @@
 
   // The displayed name for the next login attempt set by
   // `SetDisplayAndGivenName`.
-  base::string16 display_name_;
+  std::u16string display_name_;
 
   // The given name for the next login attempt set by `SetDisplayAndGivenName`.
-  base::string16 given_name_;
+  std::u16string given_name_;
 
   // Whether login attempt is running.
   bool is_login_in_progress_ = false;
diff --git a/chrome/browser/ash/login/existing_user_controller_browsertest.cc b/chrome/browser/ash/login/existing_user_controller_browsertest.cc
index 712a58af..8d130da 100644
--- a/chrome/browser/ash/login/existing_user_controller_browsertest.cc
+++ b/chrome/browser/ash/login/existing_user_controller_browsertest.cc
@@ -1336,7 +1336,7 @@
     login_manager_mixin_.LoginAndWaitForActiveSession(context);
   }
 
-  base::string16 ConstructManagedSessionUserWarning(std::string manager) {
+  std::u16string ConstructManagedSessionUserWarning(std::string manager) {
     return l10n_util::GetStringFUTF16(
         IDS_ASH_LOGIN_MANAGED_SESSION_MONITORING_USER_WARNING,
         base::UTF8ToUTF16(manager));
diff --git a/chrome/browser/ash/login/helper.cc b/chrome/browser/ash/login/helper.cc
index 6278fe5..045da21 100644
--- a/chrome/browser/ash/login/helper.cc
+++ b/chrome/browser/ash/login/helper.cc
@@ -68,7 +68,7 @@
 NetworkStateHelper::NetworkStateHelper() {}
 NetworkStateHelper::~NetworkStateHelper() {}
 
-base::string16 NetworkStateHelper::GetCurrentNetworkName() const {
+std::u16string NetworkStateHelper::GetCurrentNetworkName() const {
   NetworkStateHandler* nsh = NetworkHandler::Get()->network_state_handler();
   const NetworkState* network =
       nsh->ConnectedNetworkByType(NetworkTypePattern::NonVirtual());
@@ -84,7 +84,7 @@
       return l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET);
     return base::UTF8ToUTF16(network->name());
   }
-  return base::string16();
+  return std::u16string();
 }
 
 bool NetworkStateHelper::IsConnected() const {
diff --git a/chrome/browser/ash/login/helper.h b/chrome/browser/ash/login/helper.h
index 14ee4a82..21ad8bd7 100644
--- a/chrome/browser/ash/login/helper.h
+++ b/chrome/browser/ash/login/helper.h
@@ -69,7 +69,7 @@
   // that is in the "connecting" state. Otherwise empty string is returned.
   // If there are multiple connected networks, network priority:
   // Ethernet > WiFi > Cellular. Same for connecting network.
-  virtual base::string16 GetCurrentNetworkName() const;
+  virtual std::u16string GetCurrentNetworkName() const;
 
   // Returns true if the default network is in connected state.
   virtual bool IsConnected() const;
diff --git a/chrome/browser/ash/login/login_screen_policy_browsertest.cc b/chrome/browser/ash/login/login_screen_policy_browsertest.cc
index cec3ab12..15523723 100644
--- a/chrome/browser/ash/login/login_screen_policy_browsertest.cc
+++ b/chrome/browser/ash/login/login_screen_policy_browsertest.cc
@@ -192,11 +192,11 @@
 IN_PROC_BROWSER_TEST_F(LoginScreenButtonsLocalePolicy,
                        LoginShelfButtonsTextAndAlignment) {
   // Actual text on the button.
-  base::string16 actual_text =
+  std::u16string actual_text =
       ash::LoginScreenTestApi::GetShutDownButtonLabel();
 
   // Shut down text in the current locale.
-  base::string16 expected_text =
+  std::u16string expected_text =
       l10n_util::GetStringUTF16(IDS_ASH_SHELF_SHUTDOWN_BUTTON);
 
   EXPECT_EQ(expected_text, actual_text);
@@ -226,7 +226,7 @@
       ash::VIEW_ID_TRAY_ENTERPRISE, true /* open_tray */));
 
   // Text on EnterpriseManagedView tooltip in current locale.
-  base::string16 expected_text =
+  std::u16string expected_text =
       ash::features::IsManagedDeviceUIRedesignEnabled()
           ? l10n_util::GetStringFUTF16(IDS_ASH_SHORT_MANAGED_BY,
                                        base::UTF8ToUTF16(kDomain))
diff --git a/chrome/browser/ash/login/login_utils_browsertest.cc b/chrome/browser/ash/login/login_utils_browsertest.cc
index 6d7e9b1..f6e5a8d 100644
--- a/chrome/browser/ash/login/login_utils_browsertest.cc
+++ b/chrome/browser/ash/login/login_utils_browsertest.cc
@@ -31,7 +31,7 @@
 
 #if BUILDFLAG(ENABLE_RLZ)
 void GetAccessPointRlzInBackgroundThread(rlz_lib::AccessPoint point,
-                                         base::string16* rlz) {
+                                         std::u16string* rlz) {
   ASSERT_FALSE(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
   ASSERT_TRUE(rlz::RLZTracker::GetAccessPointRlz(point, rlz));
 }
@@ -84,14 +84,14 @@
   // This value must be obtained in a background thread.
   {
     base::RunLoop loop;
-    base::string16 rlz_string;
+    std::u16string rlz_string;
     base::ThreadPool::PostTaskAndReply(
         FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(&GetAccessPointRlzInBackgroundThread,
                        rlz::RLZTracker::ChromeHomePage(), &rlz_string),
         loop.QuitClosure());
     loop.Run();
-    EXPECT_EQ(base::string16(), rlz_string);
+    EXPECT_EQ(std::u16string(), rlz_string);
   }
 }
 #endif
diff --git a/chrome/browser/ash/login/mock_network_state_helper.h b/chrome/browser/ash/login/mock_network_state_helper.h
index 0fb234c..436ce09a 100644
--- a/chrome/browser/ash/login/mock_network_state_helper.h
+++ b/chrome/browser/ash/login/mock_network_state_helper.h
@@ -16,7 +16,7 @@
  public:
   MockNetworkStateHelper();
   ~MockNetworkStateHelper() override;
-  MOCK_CONST_METHOD0(GetCurrentNetworkName, base::string16(void));
+  MOCK_CONST_METHOD0(GetCurrentNetworkName, std::u16string(void));
   MOCK_CONST_METHOD0(IsConnected, bool(void));
   MOCK_CONST_METHOD0(IsConnecting, bool(void));
 };
diff --git a/chrome/browser/ash/login/profile_auth_data_unittest.cc b/chrome/browser/ash/login/profile_auth_data_unittest.cc
index 1aae9b7..bdff439 100644
--- a/chrome/browser/ash/login/profile_auth_data_unittest.cc
+++ b/chrome/browser/ash/login/profile_auth_data_unittest.cc
@@ -217,7 +217,7 @@
       ->Add(GURL(kProxyAuthURL), net::HttpAuth::AUTH_PROXY, kProxyAuthRealm,
             net::HttpAuth::AUTH_SCHEME_BASIC, net::NetworkIsolationKey(),
             kProxyAuthChallenge,
-            net::AuthCredentials(base::string16(),
+            net::AuthCredentials(std::u16string(),
                                  base::ASCIIToUTF16(proxy_auth_password)),
             std::string());
 
diff --git a/chrome/browser/ash/login/saml/in_session_password_change_manager_unittest.cc b/chrome/browser/ash/login/saml/in_session_password_change_manager_unittest.cc
index 534ccf4..3fdab89 100644
--- a/chrome/browser/ash/login/saml/in_session_password_change_manager_unittest.cc
+++ b/chrome/browser/ash/login/saml/in_session_password_change_manager_unittest.cc
@@ -36,7 +36,7 @@
 constexpr base::TimeDelta kOneYear = base::TimeDelta::FromDays(365);
 constexpr base::TimeDelta kTenYears = base::TimeDelta::FromDays(10 * 365);
 
-inline base::string16 utf16(const char* ascii) {
+inline std::u16string utf16(const char* ascii) {
   return base::ASCIIToUTF16(ascii);
 }
 
diff --git a/chrome/browser/ash/login/saml/in_session_password_sync_manager.cc b/chrome/browser/ash/login/saml/in_session_password_sync_manager.cc
index 2f3b63c3..8808c2d 100644
--- a/chrome/browser/ash/login/saml/in_session_password_sync_manager.cc
+++ b/chrome/browser/ash/login/saml/in_session_password_sync_manager.cc
@@ -84,7 +84,7 @@
     // On the lock screen: need to update the UI.
     screenlock_bridge_->lock_handler()->SetAuthType(
         primary_user_->GetAccountId(),
-        proximity_auth::mojom::AuthType::ONLINE_SIGN_IN, base::string16());
+        proximity_auth::mojom::AuthType::ONLINE_SIGN_IN, std::u16string());
   }
   lock_screen_reauth_reason_ = reauth_reason;
 }
@@ -109,7 +109,7 @@
   // Request re-auth immediately after locking the screen.
   screenlock_bridge_->lock_handler()->SetAuthType(
       primary_user_->GetAccountId(),
-      proximity_auth::mojom::AuthType::ONLINE_SIGN_IN, base::string16());
+      proximity_auth::mojom::AuthType::ONLINE_SIGN_IN, std::u16string());
 }
 
 void InSessionPasswordSyncManager::UpdateOnlineAuth() {
diff --git a/chrome/browser/ash/login/saml/in_session_password_sync_manager_unittest.cc b/chrome/browser/ash/login/saml/in_session_password_sync_manager_unittest.cc
index 3a8cd34..8abf719d 100644
--- a/chrome/browser/ash/login/saml/in_session_password_sync_manager_unittest.cc
+++ b/chrome/browser/ash/login/saml/in_session_password_sync_manager_unittest.cc
@@ -190,7 +190,7 @@
   EXPECT_CALL(*lock_handler_,
               SetAuthType(saml_login_account_id1_,
                           proximity_auth::mojom::AuthType::ONLINE_SIGN_IN,
-                          base::string16()))
+                          std::u16string()))
       .Times(1);
   user_manager_->SaveForceOnlineSignin(saml_login_account_id1_, true);
   manager_->MaybeForceReauthOnLockScreen(
@@ -210,7 +210,7 @@
   EXPECT_CALL(*lock_handler_,
               SetAuthType(saml_login_account_id1_,
                           proximity_auth::mojom::AuthType::ONLINE_SIGN_IN,
-                          base::string16()))
+                          std::u16string()))
       .Times(1);
   EXPECT_CALL(*lock_handler_, Unlock(saml_login_account_id1_)).Times(0);
   user_manager_->SaveForceOnlineSignin(saml_login_account_id1_, true);
@@ -240,7 +240,7 @@
   EXPECT_CALL(*lock_handler_,
               SetAuthType(saml_login_account_id1_,
                           proximity_auth::mojom::AuthType::ONLINE_SIGN_IN,
-                          base::string16()))
+                          std::u16string()))
       .Times(1);
   EXPECT_CALL(*lock_handler_, Unlock(saml_login_account_id1_)).Times(1);
   user_manager_->SaveForceOnlineSignin(saml_login_account_id1_, true);
diff --git a/chrome/browser/ash/login/saml/mock_lock_handler.h b/chrome/browser/ash/login/saml/mock_lock_handler.h
index 49000b0a..8f7fddb 100644
--- a/chrome/browser/ash/login/saml/mock_lock_handler.h
+++ b/chrome/browser/ash/login/saml/mock_lock_handler.h
@@ -22,7 +22,7 @@
   // proximity_auth::ScreenlockBridge::LockHandler:
   MOCK_METHOD(void,
               ShowBannerMessage,
-              (const base::string16& message, bool is_warning));
+              (const std::u16string& message, bool is_warning));
   MOCK_METHOD(
       void,
       ShowUserPodCustomIcon,
@@ -34,7 +34,7 @@
               SetAuthType,
               (const AccountId& account_id,
                proximity_auth::mojom::AuthType auth_type,
-               const base::string16& auth_value));
+               const std::u16string& auth_value));
   MOCK_METHOD(proximity_auth::mojom::AuthType,
               GetAuthType,
               (const AccountId& account_id),
diff --git a/chrome/browser/ash/login/saml/password_expiry_notification.cc b/chrome/browser/ash/login/saml/password_expiry_notification.cc
index 167f4601..c0a8efd93 100644
--- a/chrome/browser/ash/login/saml/password_expiry_notification.cc
+++ b/chrome/browser/ash/login/saml/password_expiry_notification.cc
@@ -74,7 +74,7 @@
 // A time-delta of length one minute.
 constexpr base::TimeDelta kOneMinute = base::TimeDelta::FromMinutes(1);
 
-base::string16 GetBodyText() {
+std::u16string GetBodyText() {
   return l10n_util::GetStringUTF16(IDS_PASSWORD_EXPIRY_CALL_TO_ACTION);
 }
 
@@ -96,7 +96,7 @@
   // message_center::NotificationDelegate:
   void Close(bool by_user) override;
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
 };
 
 PasswordExpiryNotificationDelegate::PasswordExpiryNotificationDelegate() =
@@ -113,7 +113,7 @@
 
 void PasswordExpiryNotificationDelegate::Click(
     const base::Optional<int>& button_index,
-    const base::Optional<base::string16>& reply) {
+    const base::Optional<std::u16string>& reply) {
   bool clicked_on_button = button_index.has_value();
   if (clicked_on_button) {
     InSessionPasswordChangeManager::Get()->StartInSessionPasswordChange();
@@ -133,13 +133,13 @@
 
   // Leaving this empty means the notification is attributed to the system -
   // ie "Chromium OS" or similar.
-  static const base::NoDestructor<base::string16> kEmptyDisplaySource;
+  static const base::NoDestructor<std::u16string> kEmptyDisplaySource;
 
   // No origin URL is needed since the notification comes from the system.
   static const base::NoDestructor<GURL> kEmptyOriginUrl;
 
-  const base::string16 title = GetTitleText(time_until_expiry);
-  const base::string16 body = GetBodyText();
+  const std::u16string title = GetTitleText(time_until_expiry);
+  const std::u16string body = GetBodyText();
   const RichNotificationData rich_notification_data = GetRichNotificationData();
   const scoped_refptr<PasswordExpiryNotificationDelegate> delegate =
       base::MakeRefCounted<PasswordExpiryNotificationDelegate>();
@@ -158,7 +158,7 @@
 }
 
 // static
-base::string16 PasswordExpiryNotification::GetTitleText(
+std::u16string PasswordExpiryNotification::GetTitleText(
     base::TimeDelta time_until_expiry) {
   if (time_until_expiry < kOneMinute) {
     // Don't need to count the seconds - just say its overdue.
diff --git a/chrome/browser/ash/login/saml/password_expiry_notification.h b/chrome/browser/ash/login/saml/password_expiry_notification.h
index ecddb2c..a8a0f2c 100644
--- a/chrome/browser/ash/login/saml/password_expiry_notification.h
+++ b/chrome/browser/ash/login/saml/password_expiry_notification.h
@@ -23,7 +23,7 @@
 
   // Returns localized title text appropriate for `time_until_expiry`, eg:
   // "Password expires in 7 days".
-  static base::string16 GetTitleText(base::TimeDelta time_until_expiry);
+  static std::u16string GetTitleText(base::TimeDelta time_until_expiry);
 
   // Hides the password expiry notification if it is currently shown.
   static void Dismiss(Profile* profile);
diff --git a/chrome/browser/ash/login/saml/password_expiry_notification_unittest.cc b/chrome/browser/ash/login/saml/password_expiry_notification_unittest.cc
index 75a3161..28f119d 100644
--- a/chrome/browser/ash/login/saml/password_expiry_notification_unittest.cc
+++ b/chrome/browser/ash/login/saml/password_expiry_notification_unittest.cc
@@ -30,11 +30,11 @@
 
 namespace {
 
-inline base::string16 utf16(const char* ascii) {
+inline std::u16string utf16(const char* ascii) {
   return base::ASCIIToUTF16(ascii);
 }
 
-inline base::string16 GetTitleText(base::TimeDelta time_until_expiry) {
+inline std::u16string GetTitleText(base::TimeDelta time_until_expiry) {
   return PasswordExpiryNotification::GetTitleText(time_until_expiry);
 }
 
diff --git a/chrome/browser/ash/login/screens/enable_debugging_screen.cc b/chrome/browser/ash/login/screens/enable_debugging_screen.cc
index 8dc1c57a..6f783bfd 100644
--- a/chrome/browser/ash/login/screens/enable_debugging_screen.cc
+++ b/chrome/browser/ash/login/screens/enable_debugging_screen.cc
@@ -84,7 +84,7 @@
       Profile::FromWebUI(
           LoginDisplayHost::default_host()->GetOobeUI()->web_ui()),
       nullptr, LoginDisplayHost::default_host()->GetNativeWindow(),
-      base::string16(), data_url);
+      std::u16string(), data_url);
   dialog->Show();
 }
 
diff --git a/chrome/browser/ash/login/screens/mock_network_screen.h b/chrome/browser/ash/login/screens/mock_network_screen.h
index 8243e16..a80ba64 100644
--- a/chrome/browser/ash/login/screens/mock_network_screen.h
+++ b/chrome/browser/ash/login/screens/mock_network_screen.h
@@ -39,11 +39,11 @@
   MOCK_METHOD(void, MockUnbind, ());
   MOCK_METHOD(void, Show, ());
   MOCK_METHOD(void, Hide, ());
-  MOCK_METHOD(void, ShowError, (const base::string16& message));
+  MOCK_METHOD(void, ShowError, (const std::u16string& message));
   MOCK_METHOD(void, ClearErrors, ());
   MOCK_METHOD(void,
               ShowConnectingStatus,
-              (bool connecting, const base::string16& network_id));
+              (bool connecting, const std::u16string& network_id));
   MOCK_METHOD(void, SetOfflineDemoModeEnabled, (bool enabled));
 
  private:
diff --git a/chrome/browser/ash/login/screens/mock_update_screen.h b/chrome/browser/ash/login/screens/mock_update_screen.h
index 3190baa..a6b3944 100644
--- a/chrome/browser/ash/login/screens/mock_update_screen.h
+++ b/chrome/browser/ash/login/screens/mock_update_screen.h
@@ -41,13 +41,13 @@
   MOCK_METHOD(void,
               SetUpdateStatus,
               (int percent,
-               const base::string16& percent_message,
-               const base::string16& timeleft_message));
+               const std::u16string& percent_message,
+               const std::u16string& timeleft_message));
   MOCK_METHOD(void, SetEstimatedTimeLeft, (int value));
   MOCK_METHOD(void, SetShowEstimatedTimeLeft, (bool value));
   MOCK_METHOD(void, SetUpdateCompleted, (bool value));
   MOCK_METHOD(void, SetShowCurtain, (bool value));
-  MOCK_METHOD(void, SetProgressMessage, (const base::string16& value));
+  MOCK_METHOD(void, SetProgressMessage, (const std::u16string& value));
   MOCK_METHOD(void, SetProgress, (int value));
   MOCK_METHOD(void, SetCancelUpdateShortcutEnabled, (bool value));
   MOCK_METHOD(void, ShowLowBatteryWarningMessage, (bool value));
diff --git a/chrome/browser/ash/login/screens/network_screen.cc b/chrome/browser/ash/login/screens/network_screen.cc
index e137fee..8d41808 100644
--- a/chrome/browser/ash/login/screens/network_screen.cc
+++ b/chrome/browser/ash/login/screens/network_screen.cc
@@ -168,7 +168,7 @@
   if (is_connected)
     view_->ClearErrors();
 
-  base::string16 network_name = network_state_helper_->GetCurrentNetworkName();
+  std::u16string network_name = network_state_helper_->GetCurrentNetworkName();
   if (is_connected)
     StopWaitingForConnection(network_name);
   else if (network_state_helper_->IsConnecting())
@@ -177,7 +177,7 @@
     StopWaitingForConnection(network_id_);
 }
 
-void NetworkScreen::StopWaitingForConnection(const base::string16& network_id) {
+void NetworkScreen::StopWaitingForConnection(const std::u16string& network_id) {
   bool is_connected = network_state_helper_->IsConnected();
   if (is_connected && continue_pressed_) {
     NotifyOnConnection();
@@ -198,7 +198,7 @@
   }
 }
 
-void NetworkScreen::WaitForConnection(const base::string16& network_id) {
+void NetworkScreen::WaitForConnection(const std::u16string& network_id) {
   if (network_id_ != network_id || !connection_timer_.IsRunning()) {
     connection_timer_.Stop();
     connection_timer_.Start(FROM_HERE, kConnectionTimeout, this,
diff --git a/chrome/browser/ash/login/screens/network_screen.h b/chrome/browser/ash/login/screens/network_screen.h
index ca575ec..de6182c 100644
--- a/chrome/browser/ash/login/screens/network_screen.h
+++ b/chrome/browser/ash/login/screens/network_screen.h
@@ -95,10 +95,10 @@
   void UpdateStatus();
 
   // Stops waiting for network to connect.
-  void StopWaitingForConnection(const base::string16& network_id);
+  void StopWaitingForConnection(const std::u16string& network_id);
 
   // Starts waiting for network connection. Shows spinner.
-  void WaitForConnection(const base::string16& network_id);
+  void WaitForConnection(const std::u16string& network_id);
 
   // Called when back button is clicked.
   void OnBackButtonClicked();
@@ -116,7 +116,7 @@
   bool is_network_subscribed_ = false;
 
   // ID of the network that we are waiting for.
-  base::string16 network_id_;
+  std::u16string network_id_;
 
   // Keeps track of the number of times OnContinueButtonClicked was called.
   // OnContinueButtonClicked is called either in response to the user pressing
diff --git a/chrome/browser/ash/login/screens/network_screen_browsertest.cc b/chrome/browser/ash/login/screens/network_screen_browsertest.cc
index a36e43e..9d34c3c6 100644
--- a/chrome/browser/ash/login/screens/network_screen_browsertest.cc
+++ b/chrome/browser/ash/login/screens/network_screen_browsertest.cc
@@ -81,7 +81,7 @@
   void SetDefaultNetworkStateHelperExpectations() {
     EXPECT_CALL(*network_state_helper(), GetCurrentNetworkName())
         .Times(AnyNumber())
-        .WillRepeatedly((Return(base::string16())));
+        .WillRepeatedly((Return(std::u16string())));
     EXPECT_CALL(*network_state_helper(), IsConnected())
         .Times(AnyNumber())
         .WillRepeatedly((Return(false)));
diff --git a/chrome/browser/ash/login/screens/parental_handoff_screen.cc b/chrome/browser/ash/login/screens/parental_handoff_screen.cc
index 606ace1..e5569811 100644
--- a/chrome/browser/ash/login/screens/parental_handoff_screen.cc
+++ b/chrome/browser/ash/login/screens/parental_handoff_screen.cc
@@ -25,11 +25,11 @@
 
 constexpr char kUserActionNext[] = "next";
 
-base::string16 GetActiveUserName() {
+std::u16string GetActiveUserName() {
   const user_manager::User* user =
       user_manager::UserManager::Get()->GetActiveUser();
   if (!user || !user->IsChild())
-    return base::string16();
+    return std::u16string();
   return user->GetDisplayName();
 }
 
diff --git a/chrome/browser/ash/login/screens/update_screen.cc b/chrome/browser/ash/login/screens/update_screen.cc
index 878a1d6..35ca385 100644
--- a/chrome/browser/ash/login/screens/update_screen.cc
+++ b/chrome/browser/ash/login/screens/update_screen.cc
@@ -431,7 +431,7 @@
                                           base::TimeDelta time_left) {
   if (!view_)
     return;
-  base::string16 time_left_message;
+  std::u16string time_left_message;
   if (time_left.InMinutes() == 0) {
     time_left_message = l10n_util::GetStringFUTF16(
         IDS_UPDATE_STATUS_SUBTITLE_TIME_LEFT,
diff --git a/chrome/browser/ash/login/screens/user_selection_screen.cc b/chrome/browser/ash/login/screens/user_selection_screen.cc
index 263a03c..913522bb 100644
--- a/chrome/browser/ash/login/screens/user_selection_screen.cc
+++ b/chrome/browser/ash/login/screens/user_selection_screen.cc
@@ -316,7 +316,7 @@
     owner_->ShowBannerMessage(
         needs_migration ? l10n_util::GetStringUTF16(
                               IDS_LOGIN_NEEDS_DIRCRYPTO_MIGRATION_BANNER)
-                        : base::string16(),
+                        : std::u16string(),
         needs_migration);
   }
 
@@ -727,7 +727,7 @@
   if (status == TokenHandleUtil::INVALID) {
     RecordReauthReason(account_id, ReauthReason::INVALID_TOKEN_HANDLE);
     SetAuthType(account_id, proximity_auth::mojom::AuthType::ONLINE_SIGN_IN,
-                base::string16());
+                std::u16string());
   }
 }
 
@@ -735,7 +735,7 @@
 
 void UserSelectionScreen::SetAuthType(const AccountId& account_id,
                                       proximity_auth::mojom::AuthType auth_type,
-                                      const base::string16& initial_value) {
+                                      const std::u16string& initial_value) {
   if (GetAuthType(account_id) ==
       proximity_auth::mojom::AuthType::FORCE_OFFLINE_PASSWORD) {
     return;
@@ -769,7 +769,7 @@
   }
 }
 
-void UserSelectionScreen::ShowBannerMessage(const base::string16& message,
+void UserSelectionScreen::ShowBannerMessage(const std::u16string& message,
                                             bool is_warning) {
   view_->ShowBannerMessage(message, is_warning);
 }
@@ -836,7 +836,7 @@
   RecordReauthReason(account_id,
                      ReauthReason::SAML_PASSWORD_SYNC_TOKEN_VALIDATION_FAILED);
   SetAuthType(account_id, proximity_auth::mojom::AuthType::ONLINE_SIGN_IN,
-              base::string16());
+              std::u16string());
 }
 
 void UserSelectionScreen::OnOnlineSigninEnforced(const AccountId& account_id) {
@@ -851,7 +851,7 @@
 void UserSelectionScreen::HardLockPod(const AccountId& account_id) {
   view_->SetAuthType(account_id,
                      proximity_auth::mojom::AuthType::OFFLINE_PASSWORD,
-                     base::string16());
+                     std::u16string());
   EasyUnlockService* service = GetEasyUnlockServiceForUser(account_id);
   if (!service)
     return;
diff --git a/chrome/browser/ash/login/screens/user_selection_screen.h b/chrome/browser/ash/login/screens/user_selection_screen.h
index 373e15f..fa026a4 100644
--- a/chrome/browser/ash/login/screens/user_selection_screen.h
+++ b/chrome/browser/ash/login/screens/user_selection_screen.h
@@ -74,7 +74,7 @@
   void SetTpmLockedState(bool is_locked, base::TimeDelta time_left);
 
   // proximity_auth::ScreenlockBridge::LockHandler implementation:
-  void ShowBannerMessage(const base::string16& message,
+  void ShowBannerMessage(const std::u16string& message,
                          bool is_warning) override;
   void ShowUserPodCustomIcon(
       const AccountId& account_id,
@@ -85,7 +85,7 @@
   void EnableInput() override;
   void SetAuthType(const AccountId& account_id,
                    proximity_auth::mojom::AuthType auth_type,
-                   const base::string16& auth_value) override;
+                   const std::u16string& auth_value) override;
   proximity_auth::mojom::AuthType GetAuthType(
       const AccountId& account_id) const override;
   ScreenType GetScreenType() const override;
diff --git a/chrome/browser/ash/login/security_token_session_controller.cc b/chrome/browser/ash/login/security_token_session_controller.cc
index 29b5ef7e..fd2a9a83 100644
--- a/chrome/browser/ash/login/security_token_session_controller.cc
+++ b/chrome/browser/ash/login/security_token_session_controller.cc
@@ -104,13 +104,13 @@
   return true;
 }
 
-void DisplayNotification(const base::string16& title,
-                         const base::string16& text) {
+void DisplayNotification(const std::u16string& title,
+                         const std::u16string& text) {
   std::unique_ptr<message_center::Notification> notification =
       ash::CreateSystemNotification(
           message_center::NOTIFICATION_TYPE_SIMPLE, kNotificationId, title,
           text,
-          /*display_source=*/base::string16(), /*origin_url=*/GURL(),
+          /*display_source=*/std::u16string(), /*origin_url=*/GURL(),
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT,
               kNotifierSecurityTokenSession),
diff --git a/chrome/browser/ash/login/session/user_session_manager.cc b/chrome/browser/ash/login/session/user_session_manager.cc
index 2cb4e28..f8f249f 100644
--- a/chrome/browser/ash/login/session/user_session_manager.cc
+++ b/chrome/browser/ash/login/session/user_session_manager.cc
@@ -1213,7 +1213,7 @@
       profile_path,
       base::BindRepeating(&UserSessionManager::OnProfileCreated, AsWeakPtr(),
                           user_context_, is_demo_session),
-      base::string16(), std::string());
+      std::u16string(), std::string());
 }
 
 void UserSessionManager::OnProfileCreated(const UserContext& user_context,
diff --git a/chrome/browser/ash/login/signin/oauth2_browsertest.cc b/chrome/browser/ash/login/signin/oauth2_browsertest.cc
index 0804147b..cfc72dc 100644
--- a/chrome/browser/ash/login/signin/oauth2_browsertest.cc
+++ b/chrome/browser/ash/login/signin/oauth2_browsertest.cc
@@ -983,7 +983,7 @@
   EXPECT_FALSE(fake_google_.IsPageRequested());
 
   // Check that throttle page is displayed instead.
-  base::string16 title;
+  std::u16string title;
   ui_test_utils::GetCurrentTabTitle(browser, &title);
   DVLOG(1) << "Loaded page at the start : " << title;
 
diff --git a/chrome/browser/ash/login/signin/signin_error_notifier_ash.cc b/chrome/browser/ash/login/signin/signin_error_notifier_ash.cc
index 757cd6c..f62c8bf 100644
--- a/chrome/browser/ash/login/signin/signin_error_notifier_ash.cc
+++ b/chrome/browser/ash/login/signin/signin_error_notifier_ash.cc
@@ -262,13 +262,13 @@
       IsSecondaryEduAccountMigratedForChildUser(
           profile_, account_dummy_token_list.size());
 
-  const base::string16 message_title =
+  const std::u16string message_title =
       are_all_accounts_migrated
           ? l10n_util::GetStringUTF16(
                 IDS_SIGNIN_ERROR_SECONDARY_ACCOUNT_BUBBLE_VIEW_TITLE)
           : l10n_util::GetStringUTF16(
                 IDS_SIGNIN_ERROR_SECONDARY_ACCOUNT_MIGRATION_BUBBLE_VIEW_TITLE);
-  const base::string16 message_body =
+  const std::u16string message_body =
       are_all_accounts_migrated
           ? GetMessageBody(true /* is_secondary_account_error */)
           : l10n_util::GetStringUTF16(
@@ -320,7 +320,7 @@
   }
 }
 
-base::string16 SigninErrorNotifier::GetMessageBody(
+std::u16string SigninErrorNotifier::GetMessageBody(
     bool is_secondary_account_error) const {
   if (is_secondary_account_error) {
     return l10n_util::GetStringUTF16(
diff --git a/chrome/browser/ash/login/signin/signin_error_notifier_ash.h b/chrome/browser/ash/login/signin/signin_error_notifier_ash.h
index 1318997..7fe725c2 100644
--- a/chrome/browser/ash/login/signin/signin_error_notifier_ash.h
+++ b/chrome/browser/ash/login/signin/signin_error_notifier_ash.h
@@ -72,7 +72,7 @@
   void HandleSecondaryAccountReauthNotificationClick(
       base::Optional<int> button_index);
 
-  base::string16 GetMessageBody(bool is_secondary_account_error) const;
+  std::u16string GetMessageBody(bool is_secondary_account_error) const;
 
   // The error controller to query for error details.
   SigninErrorController* error_controller_;
diff --git a/chrome/browser/ash/login/signin/signin_error_notifier_ash_unittest.cc b/chrome/browser/ash/login/signin/signin_error_notifier_ash_unittest.cc
index 0588897a..26f4019 100644
--- a/chrome/browser/ash/login/signin/signin_error_notifier_ash_unittest.cc
+++ b/chrome/browser/ash/login/signin/signin_error_notifier_ash_unittest.cc
@@ -185,7 +185,7 @@
   base::Optional<message_center::Notification> notification =
       display_service_->GetNotification(kPrimaryAccountErrorNotificationId);
   ASSERT_TRUE(notification);
-  base::string16 message = notification->message();
+  std::u16string message = notification->message();
   EXPECT_FALSE(message.empty());
 
   // Now set another auth error.
@@ -196,7 +196,7 @@
   notification =
       display_service_->GetNotification(kPrimaryAccountErrorNotificationId);
   ASSERT_TRUE(notification);
-  base::string16 new_message = notification->message();
+  std::u16string new_message = notification->message();
   EXPECT_FALSE(new_message.empty());
 
   ASSERT_NE(new_message, message);
@@ -259,7 +259,7 @@
   base::Optional<message_center::Notification> notification =
       display_service_->GetNotification(kSecondaryAccountErrorNotificationId);
   ASSERT_TRUE(notification);
-  base::string16 message = notification->message();
+  std::u16string message = notification->message();
   EXPECT_FALSE(message.empty());
 
   // Clear error.
@@ -278,7 +278,7 @@
   notification =
       display_service_->GetNotification(kSecondaryAccountErrorNotificationId);
   ASSERT_TRUE(notification);
-  base::string16 new_message = notification->message();
+  std::u16string new_message = notification->message();
   EXPECT_NE(new_message, message);
 }
 
diff --git a/chrome/browser/ash/login/test/dialog_window_waiter.cc b/chrome/browser/ash/login/test/dialog_window_waiter.cc
index 7643e966..313da84 100644
--- a/chrome/browser/ash/login/test/dialog_window_waiter.cc
+++ b/chrome/browser/ash/login/test/dialog_window_waiter.cc
@@ -9,7 +9,7 @@
 
 namespace chromeos {
 
-DialogWindowWaiter::DialogWindowWaiter(const base::string16& dialog_title)
+DialogWindowWaiter::DialogWindowWaiter(const std::u16string& dialog_title)
     : dialog_title_(dialog_title) {
   aura::Env::GetInstance()->AddObserver(this);
 }
diff --git a/chrome/browser/ash/login/test/dialog_window_waiter.h b/chrome/browser/ash/login/test/dialog_window_waiter.h
index 470623c..903d31eb 100644
--- a/chrome/browser/ash/login/test/dialog_window_waiter.h
+++ b/chrome/browser/ash/login/test/dialog_window_waiter.h
@@ -28,7 +28,7 @@
                            public aura::WindowObserver {
  public:
   // Starts listening for a dialog window to open with title `dialog_title`.
-  explicit DialogWindowWaiter(const base::string16& dialog_title);
+  explicit DialogWindowWaiter(const std::u16string& dialog_title);
 
   ~DialogWindowWaiter() override;
 
@@ -46,7 +46,7 @@
 
  private:
   // The title of the expected dialog window.
-  base::string16 dialog_title_;
+  std::u16string dialog_title_;
 
   base::RunLoop run_loop_;
 
diff --git a/chrome/browser/ash/login/ui/captive_portal_view.cc b/chrome/browser/ash/login/ui/captive_portal_view.cc
index 3884e1b..2c1b318 100644
--- a/chrome/browser/ash/login/ui/captive_portal_view.cc
+++ b/chrome/browser/ash/login/ui/captive_portal_view.cc
@@ -22,7 +22,7 @@
   return captive_portal::CaptivePortalDetector::kDefaultURL;
 }
 
-base::string16 WindowTitleForNetwork(const chromeos::NetworkState* network) {
+std::u16string WindowTitleForNetwork(const chromeos::NetworkState* network) {
   if (network && !network->name().empty()) {
     return l10n_util::GetStringFUTF16(IDS_LOGIN_CAPTIVE_PORTAL_WINDOW_TITLE,
                                       base::ASCIIToUTF16(network->name()));
diff --git a/chrome/browser/ash/login/ui/login_display.h b/chrome/browser/ash/login/ui/login_display.h
index dda2b797..25d1f0e 100644
--- a/chrome/browser/ash/login/ui/login_display.h
+++ b/chrome/browser/ash/login/ui/login_display.h
@@ -50,7 +50,7 @@
     virtual void OnStartKioskAutolaunchScreen() = 0;
 
     // Returns name of the currently connected network, for error message,
-    virtual base::string16 GetConnectedNetworkName() = 0;
+    virtual std::u16string GetConnectedNetworkName() = 0;
 
     // Restarts the auto-login timer if it is running.
     virtual void ResetAutoLoginTimer() = 0;
diff --git a/chrome/browser/ash/login/ui/login_screen_extension_ui/dialog_delegate.cc b/chrome/browser/ash/login/ui/login_screen_extension_ui/dialog_delegate.cc
index e9d43b4f..00b22fd 100644
--- a/chrome/browser/ash/login/ui/login_screen_extension_ui/dialog_delegate.cc
+++ b/chrome/browser/ash/login/ui/login_screen_extension_ui/dialog_delegate.cc
@@ -37,7 +37,7 @@
   return ui::MODAL_TYPE_WINDOW;
 }
 
-base::string16 DialogDelegate::GetDialogTitle() const {
+std::u16string DialogDelegate::GetDialogTitle() const {
   return l10n_util::GetStringFUTF16(IDS_LOGIN_EXTENSION_UI_DIALOG_TITLE,
                                     base::UTF8ToUTF16(extension_name_));
 }
diff --git a/chrome/browser/ash/login/ui/login_screen_extension_ui/dialog_delegate.h b/chrome/browser/ash/login/ui/login_screen_extension_ui/dialog_delegate.h
index adf91065..bf147376 100644
--- a/chrome/browser/ash/login/ui/login_screen_extension_ui/dialog_delegate.h
+++ b/chrome/browser/ash/login/ui/login_screen_extension_ui/dialog_delegate.h
@@ -44,7 +44,7 @@
 
   // ui::WebDialogDelegate:
   ui::ModalType GetDialogModalType() const override;
-  base::string16 GetDialogTitle() const override;
+  std::u16string GetDialogTitle() const override;
   GURL GetDialogContentURL() const override;
   void GetDialogSize(gfx::Size* size) const override;
   bool OnDialogCloseRequested() override;
diff --git a/chrome/browser/ash/login/ui/login_web_dialog.cc b/chrome/browser/ash/login/ui/login_web_dialog.cc
index 6d6162f..3ba49ef 100644
--- a/chrome/browser/ash/login/ui/login_web_dialog.cc
+++ b/chrome/browser/ash/login/ui/login_web_dialog.cc
@@ -50,7 +50,7 @@
 LoginWebDialog::LoginWebDialog(content::BrowserContext* browser_context,
                                Delegate* delegate,
                                gfx::NativeWindow parent_window,
-                               const base::string16& title,
+                               const std::u16string& title,
                                const GURL& url)
     : browser_context_(browser_context),
       parent_window_(parent_window),
@@ -72,7 +72,7 @@
       chrome::ShowWebDialog(parent_window_, browser_context_, this);
 }
 
-void LoginWebDialog::SetDialogTitle(const base::string16& title) {
+void LoginWebDialog::SetDialogTitle(const std::u16string& title) {
   title_ = title;
 }
 
@@ -83,7 +83,7 @@
   return ui::MODAL_TYPE_SYSTEM;
 }
 
-base::string16 LoginWebDialog::GetDialogTitle() const {
+std::u16string LoginWebDialog::GetDialogTitle() const {
   return title_;
 }
 
diff --git a/chrome/browser/ash/login/ui/login_web_dialog.h b/chrome/browser/ash/login/ui/login_web_dialog.h
index 227d24c8..200b49a 100644
--- a/chrome/browser/ash/login/ui/login_web_dialog.h
+++ b/chrome/browser/ash/login/ui/login_web_dialog.h
@@ -39,14 +39,14 @@
   LoginWebDialog(content::BrowserContext* browser_context,
                  Delegate* delegate,
                  gfx::NativeWindow parent_window,
-                 const base::string16& title,
+                 const std::u16string& title,
                  const GURL& url);
   ~LoginWebDialog() override;
 
   void Show();
 
   // Overrides dialog title.
-  void SetDialogTitle(const base::string16& title);
+  void SetDialogTitle(const std::u16string& title);
 
   static content::WebContents* GetCurrentWebContents();
 
@@ -59,7 +59,7 @@
  protected:
   // ui::WebDialogDelegate implementation.
   ui::ModalType GetDialogModalType() const override;
-  base::string16 GetDialogTitle() const override;
+  std::u16string GetDialogTitle() const override;
   GURL GetDialogContentURL() const override;
   void GetWebUIMessageHandlers(
       std::vector<content::WebUIMessageHandler*>* handlers) const override;
@@ -88,7 +88,7 @@
   // Notifications receiver.
   Delegate* const delegate_;
 
-  base::string16 title_;
+  std::u16string title_;
   const GURL url_;
 
   DISALLOW_COPY_AND_ASSIGN(LoginWebDialog);
diff --git a/chrome/browser/ash/login/ui/login_web_dialog_browsertest.cc b/chrome/browser/ash/login/ui/login_web_dialog_browsertest.cc
index ae03a12..6d62519 100644
--- a/chrome/browser/ash/login/ui/login_web_dialog_browsertest.cc
+++ b/chrome/browser/ash/login/ui/login_web_dialog_browsertest.cc
@@ -22,7 +22,7 @@
 IN_PROC_BROWSER_TEST_F(LoginWebDialogTest, CannotMinimize) {
   LoginWebDialog* dialog = new LoginWebDialog(
       browser()->profile(), nullptr, browser()->window()->GetNativeWindow(),
-      base::string16(), GURL());
+      std::u16string(), GURL());
   dialog->Show();
   aura::Window* window = dialog->get_dialog_window_for_test();
   ASSERT_TRUE(window);
@@ -34,7 +34,7 @@
 IN_PROC_BROWSER_TEST_F(LoginWebDialogTest, CloseDialogByAccelerator) {
   LoginWebDialog* dialog = new LoginWebDialog(
       browser()->profile(), nullptr, browser()->window()->GetNativeWindow(),
-      base::string16(), GURL());
+      std::u16string(), GURL());
   dialog->Show();
   gfx::NativeWindow window = dialog->get_dialog_window_for_test();
   ASSERT_TRUE(window);
@@ -49,7 +49,7 @@
 // Tests that LoginWebDialog does not crash with missing parent window.
 IN_PROC_BROWSER_TEST_F(LoginWebDialogTest, NoParentWindow) {
   LoginWebDialog* dialog = new LoginWebDialog(
-      browser()->profile(), nullptr, nullptr, base::string16(), GURL());
+      browser()->profile(), nullptr, nullptr, std::u16string(), GURL());
   dialog->Show();
   aura::Window* window = dialog->get_dialog_window_for_test();
   ASSERT_TRUE(window);
diff --git a/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.cc b/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.cc
index 22f6937..bd0d6960 100644
--- a/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.cc
+++ b/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.cc
@@ -287,7 +287,7 @@
     return ui::ModalType::MODAL_TYPE_SYSTEM;
   }
 
-  base::string16 GetDialogTitle() const override { return base::string16(); }
+  std::u16string GetDialogTitle() const override { return std::u16string(); }
 
   GURL GetDialogContentURL() const override { return GURL(); }
 
@@ -472,8 +472,8 @@
   return ui::MODAL_TYPE_WINDOW;
 }
 
-base::string16 OobeUIDialogDelegate::GetDialogTitle() const {
-  return base::string16();
+std::u16string OobeUIDialogDelegate::GetDialogTitle() const {
+  return std::u16string();
 }
 
 GURL OobeUIDialogDelegate::GetDialogContentURL() const {
diff --git a/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.h b/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.h
index abd1c791..554b9aaa 100644
--- a/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.h
+++ b/chrome/browser/ash/login/ui/oobe_ui_dialog_delegate.h
@@ -88,7 +88,7 @@
  private:
   // ui::WebDialogDelegate:
   ui::ModalType GetDialogModalType() const override;
-  base::string16 GetDialogTitle() const override;
+  std::u16string GetDialogTitle() const override;
   GURL GetDialogContentURL() const override;
   void GetWebUIMessageHandlers(
       std::vector<content::WebUIMessageHandler*>* handlers) const override;
diff --git a/chrome/browser/ash/login/ui/views/user_board_view.h b/chrome/browser/ash/login/ui/views/user_board_view.h
index af832ec..eb9aabd3 100644
--- a/chrome/browser/ash/login/ui/views/user_board_view.h
+++ b/chrome/browser/ash/login/ui/views/user_board_view.h
@@ -44,7 +44,7 @@
                                        bool multiple_recommended_locales) = 0;
   virtual void SetPublicSessionShowFullManagementDisclosure(
       bool show_full_management_disclosure) = 0;
-  virtual void ShowBannerMessage(const base::string16& message,
+  virtual void ShowBannerMessage(const std::u16string& message,
                                  bool is_warning) = 0;
   virtual void ShowUserPodCustomIcon(
       const AccountId& account_id,
@@ -53,7 +53,7 @@
   virtual void HideUserPodCustomIcon(const AccountId& account_id) = 0;
   virtual void SetAuthType(const AccountId& account_id,
                            proximity_auth::mojom::AuthType auth_type,
-                           const base::string16& initial_value) = 0;
+                           const std::u16string& initial_value) = 0;
 
   virtual void SetTpmLockedState(const AccountId& account_id,
                                  bool is_locked,
diff --git a/chrome/browser/ash/login/ui/web_contents_forced_title.cc b/chrome/browser/ash/login/ui/web_contents_forced_title.cc
index 839df813..5f6fe37b 100644
--- a/chrome/browser/ash/login/ui/web_contents_forced_title.cc
+++ b/chrome/browser/ash/login/ui/web_contents_forced_title.cc
@@ -13,7 +13,7 @@
 // static
 void WebContentsForcedTitle::CreateForWebContentsWithTitle(
     content::WebContents* web_contents,
-    const base::string16& title) {
+    const std::u16string& title) {
   if (FromWebContents(web_contents))
     return;
 
@@ -25,7 +25,7 @@
 
 WebContentsForcedTitle::WebContentsForcedTitle(
     content::WebContents* web_contents,
-    const base::string16& title)
+    const std::u16string& title)
     : content::WebContentsObserver(web_contents), title_(title) {}
 
 WebContentsForcedTitle::~WebContentsForcedTitle() {}
diff --git a/chrome/browser/ash/login/ui/web_contents_forced_title.h b/chrome/browser/ash/login/ui/web_contents_forced_title.h
index 4149dcbe..8cea572 100644
--- a/chrome/browser/ash/login/ui/web_contents_forced_title.h
+++ b/chrome/browser/ash/login/ui/web_contents_forced_title.h
@@ -20,19 +20,19 @@
       public content::WebContentsUserData<WebContentsForcedTitle> {
  public:
   static void CreateForWebContentsWithTitle(content::WebContents* web_contents,
-                                            const base::string16& title);
+                                            const std::u16string& title);
 
   ~WebContentsForcedTitle() override;
 
  private:
   friend class content::WebContentsUserData<WebContentsForcedTitle>;
   WebContentsForcedTitle(content::WebContents* web_contents,
-                         const base::string16& title);
+                         const std::u16string& title);
 
   // content::WebContentsObserver:
   void TitleWasSet(content::NavigationEntry* entry) override;
 
-  base::string16 title_;
+  std::u16string title_;
 
   WEB_CONTENTS_USER_DATA_KEY_DECL();
 
diff --git a/chrome/browser/ash/login/ui/webui_login_view.cc b/chrome/browser/ash/login/ui/webui_login_view.cc
index 6659dcb7..e8cc791 100644
--- a/chrome/browser/ash/login/ui/webui_login_view.cc
+++ b/chrome/browser/ash/login/ui/webui_login_view.cc
@@ -145,7 +145,7 @@
 
 // static
 void WebUILoginView::InitializeWebView(views::WebView* web_view,
-                                       const base::string16& title) {
+                                       const std::u16string& title) {
   WebContents* web_contents = web_view->GetWebContents();
 
   if (!title.empty())
diff --git a/chrome/browser/ash/login/ui/webui_login_view.h b/chrome/browser/ash/login/ui/webui_login_view.h
index 7089034..80f2290 100644
--- a/chrome/browser/ash/login/ui/webui_login_view.h
+++ b/chrome/browser/ash/login/ui/webui_login_view.h
@@ -59,7 +59,7 @@
 
     // Title of the web contents. This will be shown in the task manager. If
     // empty, the default webview title will be used.
-    base::string16 web_view_title;
+    std::u16string web_view_title;
   };
 
   WebUILoginView(const WebViewSettings& settings,
@@ -121,7 +121,7 @@
 
  protected:
   static void InitializeWebView(views::WebView* web_view,
-                                const base::string16& title);
+                                const std::u16string& title);
 
   // Overridden from views::View:
   void Layout() override;
diff --git a/chrome/browser/ash/login/user_board_view_mojo.cc b/chrome/browser/ash/login/user_board_view_mojo.cc
index 5bf0ded..af218204 100644
--- a/chrome/browser/ash/login/user_board_view_mojo.cc
+++ b/chrome/browser/ash/login/user_board_view_mojo.cc
@@ -98,7 +98,7 @@
           show_full_management_disclosure);
 }
 
-void UserBoardViewMojo::ShowBannerMessage(const base::string16& message,
+void UserBoardViewMojo::ShowBannerMessage(const std::u16string& message,
                                           bool is_warning) {
   // As of M69, ShowBannerMessage is used only for showing ext4 migration
   // warning banner message.
@@ -121,7 +121,7 @@
 
 void UserBoardViewMojo::SetAuthType(const AccountId& account_id,
                                     proximity_auth::mojom::AuthType auth_type,
-                                    const base::string16& initial_value) {
+                                    const std::u16string& initial_value) {
   ash::LoginScreen::Get()->GetModel()->SetTapToUnlockEnabledForUser(
       account_id, auth_type == proximity_auth::mojom::AuthType::USER_CLICK);
 
diff --git a/chrome/browser/ash/login/user_board_view_mojo.h b/chrome/browser/ash/login/user_board_view_mojo.h
index f751d32..aabc5fa 100644
--- a/chrome/browser/ash/login/user_board_view_mojo.h
+++ b/chrome/browser/ash/login/user_board_view_mojo.h
@@ -26,7 +26,7 @@
                                bool multiple_recommended_locales) override;
   void SetPublicSessionShowFullManagementDisclosure(
       bool show_full_management_disclosure) override;
-  void ShowBannerMessage(const base::string16& message,
+  void ShowBannerMessage(const std::u16string& message,
                          bool is_warning) override;
   void ShowUserPodCustomIcon(
       const AccountId& account_id,
@@ -35,7 +35,7 @@
   void HideUserPodCustomIcon(const AccountId& account_id) override;
   void SetAuthType(const AccountId& account_id,
                    proximity_auth::mojom::AuthType auth_type,
-                   const base::string16& initial_value) override;
+                   const std::u16string& initial_value) override;
   void SetTpmLockedState(const AccountId& account_id,
                          bool is_locked,
                          base::TimeDelta time_left) override;
diff --git a/chrome/browser/ash/login/users/chrome_user_manager_impl.cc b/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
index f719102..854a39e 100644
--- a/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
+++ b/chrome/browser/ash/login/users/chrome_user_manager_impl.cc
@@ -580,7 +580,7 @@
 
 void ChromeUserManagerImpl::SaveUserDisplayName(
     const AccountId& account_id,
-    const base::string16& display_name) {
+    const std::u16string& display_name) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   ChromeUserManager::SaveUserDisplayName(account_id, display_name);
 }
@@ -1395,7 +1395,7 @@
   return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(id);
 }
 
-base::string16 ChromeUserManagerImpl::GetResourceStringUTF16(
+std::u16string ChromeUserManagerImpl::GetResourceStringUTF16(
     int string_id) const {
   return l10n_util::GetStringUTF16(string_id);
 }
diff --git a/chrome/browser/ash/login/users/chrome_user_manager_impl.h b/chrome/browser/ash/login/users/chrome_user_manager_impl.h
index 6e0b375..018e7ea 100644
--- a/chrome/browser/ash/login/users/chrome_user_manager_impl.h
+++ b/chrome/browser/ash/login/users/chrome_user_manager_impl.h
@@ -93,7 +93,7 @@
       const AccountId& account_id,
       user_manager::User::OAuthTokenStatus oauth_token_status) override;
   void SaveUserDisplayName(const AccountId& account_id,
-                           const base::string16& display_name) override;
+                           const std::u16string& display_name) override;
   bool CanCurrentUserLock() const override;
   bool IsUserNonCryptohomeDataEphemeral(
       const AccountId& account_id) const override;
@@ -109,7 +109,7 @@
       const AccountId& account_id) const override;
   bool HasBrowserRestarted() const override;
   const gfx::ImageSkia& GetResourceImagekiaNamed(int id) const override;
-  base::string16 GetResourceStringUTF16(int string_id) const override;
+  std::u16string GetResourceStringUTF16(int string_id) const override;
   void ScheduleResolveLocale(const std::string& locale,
                              base::OnceClosure on_resolved_callback,
                              std::string* out_resolved_locale) const override;
diff --git a/chrome/browser/ash/login/users/default_user_image/default_user_images.cc b/chrome/browser/ash/login/users/default_user_image/default_user_images.cc
index 422cfef..246bf16 100644
--- a/chrome/browser/ash/login/users/default_user_image/default_user_images.cc
+++ b/chrome/browser/ash/login/users/default_user_image/default_user_images.cc
@@ -392,7 +392,7 @@
       int string_id = kDefaultImageDescriptions[i];
       image_data->SetString("title", string_id
                                          ? l10n_util::GetStringUTF16(string_id)
-                                         : base::string16());
+                                         : std::u16string());
     }
     image_urls->Append(std::move(image_data));
   }
diff --git a/chrome/browser/ash/login/users/fake_chrome_user_manager.cc b/chrome/browser/ash/login/users/fake_chrome_user_manager.cc
index efa4799..ac1534b 100644
--- a/chrome/browser/ash/login/users/fake_chrome_user_manager.cc
+++ b/chrome/browser/ash/login/users/fake_chrome_user_manager.cc
@@ -365,9 +365,9 @@
   return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(id);
 }
 
-base::string16 FakeChromeUserManager::GetResourceStringUTF16(
+std::u16string FakeChromeUserManager::GetResourceStringUTF16(
     int string_id) const {
-  return base::string16();
+  return std::u16string();
 }
 
 void FakeChromeUserManager::ScheduleResolveLocale(
@@ -487,7 +487,7 @@
 
 void FakeChromeUserManager::SaveUserDisplayName(
     const AccountId& account_id,
-    const base::string16& display_name) {
+    const std::u16string& display_name) {
   for (auto* user : users_) {
     if (user->GetAccountId() == account_id) {
       user->set_display_name(display_name);
@@ -496,9 +496,9 @@
   }
 }
 
-base::string16 FakeChromeUserManager::GetUserDisplayName(
+std::u16string FakeChromeUserManager::GetUserDisplayName(
     const AccountId& account_id) const {
-  return base::string16();
+  return std::u16string();
 }
 
 void FakeChromeUserManager::SaveUserDisplayEmail(
diff --git a/chrome/browser/ash/login/users/fake_chrome_user_manager.h b/chrome/browser/ash/login/users/fake_chrome_user_manager.h
index 3c8e78c..6ef93426 100644
--- a/chrome/browser/ash/login/users/fake_chrome_user_manager.h
+++ b/chrome/browser/ash/login/users/fake_chrome_user_manager.h
@@ -97,8 +97,8 @@
   void SaveForceOnlineSignin(const AccountId& account_id,
                              bool force_online_signin) override;
   void SaveUserDisplayName(const AccountId& account_id,
-                           const base::string16& display_name) override;
-  base::string16 GetUserDisplayName(const AccountId& account_id) const override;
+                           const std::u16string& display_name) override;
+  std::u16string GetUserDisplayName(const AccountId& account_id) const override;
   void SaveUserDisplayEmail(const AccountId& account_id,
                             const std::string& display_email) override;
   void SaveUserType(const user_manager::User* user) override;
@@ -134,7 +134,7 @@
       const AccountId& account_id) const override;
   bool HasBrowserRestarted() const override;
   const gfx::ImageSkia& GetResourceImagekiaNamed(int id) const override;
-  base::string16 GetResourceStringUTF16(int string_id) const override;
+  std::u16string GetResourceStringUTF16(int string_id) const override;
   void ScheduleResolveLocale(const std::string& locale,
                              base::OnceClosure on_resolved_callback,
                              std::string* out_resolved_locale) const override;
diff --git a/chrome/browser/ash/login/users/fake_supervised_user_manager.cc b/chrome/browser/ash/login/users/fake_supervised_user_manager.cc
index 1e23dbd..a2dca05 100644
--- a/chrome/browser/ash/login/users/fake_supervised_user_manager.cc
+++ b/chrome/browser/ash/login/users/fake_supervised_user_manager.cc
@@ -17,9 +17,9 @@
   return std::string();
 }
 
-base::string16 FakeSupervisedUserManager::GetManagerDisplayName(
+std::u16string FakeSupervisedUserManager::GetManagerDisplayName(
     const std::string& supervised_user_id) const {
-  return base::string16();
+  return std::u16string();
 }
 
 std::string FakeSupervisedUserManager::GetManagerUserId(
diff --git a/chrome/browser/ash/login/users/fake_supervised_user_manager.h b/chrome/browser/ash/login/users/fake_supervised_user_manager.h
index a803f9c..4f803ab2 100644
--- a/chrome/browser/ash/login/users/fake_supervised_user_manager.h
+++ b/chrome/browser/ash/login/users/fake_supervised_user_manager.h
@@ -18,7 +18,7 @@
   ~FakeSupervisedUserManager() override;
 
   std::string GetUserSyncId(const std::string& user_id) const override;
-  base::string16 GetManagerDisplayName(
+  std::u16string GetManagerDisplayName(
       const std::string& user_id) const override;
   std::string GetManagerUserId(const std::string& user_id) const override;
   std::string GetManagerDisplayEmail(const std::string& user_id) const override;
diff --git a/chrome/browser/ash/login/users/mock_user_manager.h b/chrome/browser/ash/login/users/mock_user_manager.h
index c210f96..2516e1c 100644
--- a/chrome/browser/ash/login/users/mock_user_manager.h
+++ b/chrome/browser/ash/login/users/mock_user_manager.h
@@ -45,10 +45,10 @@
                void(const AccountId&, user_manager::User::OAuthTokenStatus));
   MOCK_METHOD2(SaveForceOnlineSignin, void(const AccountId&, bool));
   MOCK_METHOD2(SaveUserDisplayName,
-               void(const AccountId&, const base::string16&));
+               void(const AccountId&, const std::u16string&));
   MOCK_METHOD2(UpdateUserAccountData,
                void(const AccountId&, const UserAccountData&));
-  MOCK_CONST_METHOD1(GetUserDisplayName, base::string16(const AccountId&));
+  MOCK_CONST_METHOD1(GetUserDisplayName, std::u16string(const AccountId&));
   MOCK_METHOD2(SaveUserDisplayEmail,
                void(const AccountId&, const std::string&));
   MOCK_CONST_METHOD0(IsCurrentUserOwner, bool(void));
@@ -108,7 +108,7 @@
   MOCK_METHOD1(PublicAccountUserLoggedIn, void(user_manager::User*));
   MOCK_METHOD1(OnUserRemoved, void(const AccountId&));
   MOCK_CONST_METHOD1(GetResourceImagekiaNamed, const gfx::ImageSkia&(int));
-  MOCK_CONST_METHOD1(GetResourceStringUTF16, base::string16(int));
+  MOCK_CONST_METHOD1(GetResourceStringUTF16, std::u16string(int));
   MOCK_CONST_METHOD3(DoScheduleResolveLocale,
                      void(const std::string&,
                           base::OnceClosure*,
diff --git a/chrome/browser/ash/login/users/supervised_user_manager.h b/chrome/browser/ash/login/users/supervised_user_manager.h
index 05d552fb..a0080b3 100644
--- a/chrome/browser/ash/login/users/supervised_user_manager.h
+++ b/chrome/browser/ash/login/users/supervised_user_manager.h
@@ -43,7 +43,7 @@
   // Returns the display name for manager of user `user_id` if it is known
   // (was previously set by a `SaveUserDisplayName` call).
   // Otherwise, returns a manager id.
-  virtual base::string16 GetManagerDisplayName(
+  virtual std::u16string GetManagerDisplayName(
       const std::string& user_id) const = 0;
 
   // Returns the user id for manager of user `user_id` if it is known (user is
diff --git a/chrome/browser/ash/login/users/supervised_user_manager_impl.cc b/chrome/browser/ash/login/users/supervised_user_manager_impl.cc
index db1ebd7b..bad1ab6d 100644
--- a/chrome/browser/ash/login/users/supervised_user_manager_impl.cc
+++ b/chrome/browser/ash/login/users/supervised_user_manager_impl.cc
@@ -108,12 +108,12 @@
   return result;
 }
 
-base::string16 SupervisedUserManagerImpl::GetManagerDisplayName(
+std::u16string SupervisedUserManagerImpl::GetManagerDisplayName(
     const std::string& user_id) const {
   PrefService* local_state = g_browser_process->local_state();
   const base::DictionaryValue* manager_names =
       local_state->GetDictionary(kSupervisedUserManagerNames);
-  base::string16 result;
+  std::u16string result;
   if (manager_names->GetStringWithoutPathExpansion(user_id, &result) &&
       !result.empty())
     return result;
diff --git a/chrome/browser/ash/login/users/supervised_user_manager_impl.h b/chrome/browser/ash/login/users/supervised_user_manager_impl.h
index 105e2d2..3b7cfd19 100644
--- a/chrome/browser/ash/login/users/supervised_user_manager_impl.h
+++ b/chrome/browser/ash/login/users/supervised_user_manager_impl.h
@@ -27,7 +27,7 @@
   ~SupervisedUserManagerImpl() override;
 
   std::string GetUserSyncId(const std::string& user_id) const override;
-  base::string16 GetManagerDisplayName(
+  std::u16string GetManagerDisplayName(
       const std::string& user_id) const override;
   std::string GetManagerUserId(const std::string& user_id) const override;
   std::string GetManagerDisplayEmail(const std::string& user_id) const override;
diff --git a/chrome/browser/ash/login/version_updater/version_updater.h b/chrome/browser/ash/login/version_updater/version_updater.h
index cd231ab..d20d6697 100644
--- a/chrome/browser/ash/login/version_updater/version_updater.h
+++ b/chrome/browser/ash/login/version_updater/version_updater.h
@@ -63,7 +63,7 @@
     // True if VersionUpdater in such a state that progress is not available or
     // applicable (e.g. checking for updates)
     bool progress_unavailable = true;
-    base::string16 progress_message = base::string16();
+    std::u16string progress_message = std::u16string();
     // Percent of update progress, between 0 and 100.
     int progress = 0;
 
diff --git a/chrome/browser/ash/login/wizard_controller_browsertest.cc b/chrome/browser/ash/login/wizard_controller_browsertest.cc
index a40f66b..6dd599e 100644
--- a/chrome/browser/ash/login/wizard_controller_browsertest.cc
+++ b/chrome/browser/ash/login/wizard_controller_browsertest.cc
@@ -417,14 +417,14 @@
   EXPECT_EQ("en-US", g_browser_process->GetApplicationLocale());
   EXPECT_STREQ("en", icu::Locale::getDefault().getLanguage());
   EXPECT_FALSE(base::i18n::IsRTL());
-  const base::string16 en_str =
+  const std::u16string en_str =
       l10n_util::GetStringUTF16(IDS_NETWORK_SELECTION_TITLE);
 
   RunSwitchLanguageTest("fr", "fr", true);
   EXPECT_EQ("fr", g_browser_process->GetApplicationLocale());
   EXPECT_STREQ("fr", icu::Locale::getDefault().getLanguage());
   EXPECT_FALSE(base::i18n::IsRTL());
-  const base::string16 fr_str =
+  const std::u16string fr_str =
       l10n_util::GetStringUTF16(IDS_NETWORK_SELECTION_TITLE);
 
   EXPECT_NE(en_str, fr_str);
@@ -433,7 +433,7 @@
   EXPECT_EQ("ar", g_browser_process->GetApplicationLocale());
   EXPECT_STREQ("ar", icu::Locale::getDefault().getLanguage());
   EXPECT_TRUE(base::i18n::IsRTL());
-  const base::string16 ar_str =
+  const std::u16string ar_str =
       l10n_util::GetStringUTF16(IDS_NETWORK_SELECTION_TITLE);
 
   EXPECT_NE(fr_str, ar_str);
diff --git a/chrome/browser/ash/notifications/deprecation_notification_controller.cc b/chrome/browser/ash/notifications/deprecation_notification_controller.cc
index 094646be..dadbfd29 100644
--- a/chrome/browser/ash/notifications/deprecation_notification_controller.cc
+++ b/chrome/browser/ash/notifications/deprecation_notification_controller.cc
@@ -82,9 +82,9 @@
   const int launcher_key_name_id = ui::DeviceUsesKeyboardLayout2()
                                        ? IDS_ASH_SHORTCUT_MODIFIER_LAUNCHER
                                        : IDS_ASH_SHORTCUT_MODIFIER_SEARCH;
-  const base::string16 launcher_key_name =
+  const std::u16string launcher_key_name =
       l10n_util::GetStringUTF16(launcher_key_name_id);
-  const base::string16 message_body =
+  const std::u16string message_body =
       l10n_util::GetStringFUTF16(message_id, launcher_key_name);
 
   ShowNotification(id, message_body);
@@ -92,7 +92,7 @@
 
 void DeprecationNotificationController::ShowNotification(
     const std::string& id,
-    const base::string16& message_body) {
+    const std::u16string& message_body) {
   auto on_click_handler =
       base::MakeRefCounted<message_center::HandleNotificationClickDelegate>(
           base::BindRepeating([]() {
@@ -103,7 +103,7 @@
   auto notification = CreateSystemNotification(
       message_center::NOTIFICATION_TYPE_SIMPLE, id,
       l10n_util::GetStringUTF16(IDS_DEPRECATED_SHORTCUT_TITLE), message_body,
-      base::string16(), GURL(),
+      std::u16string(), GURL(),
       message_center::NotifierId(message_center::NotifierType::SYSTEM_COMPONENT,
                                  kNotifierId),
       message_center::RichNotificationData(), std::move(on_click_handler),
diff --git a/chrome/browser/ash/notifications/deprecation_notification_controller.h b/chrome/browser/ash/notifications/deprecation_notification_controller.h
index c3fb3dc..a139356 100644
--- a/chrome/browser/ash/notifications/deprecation_notification_controller.h
+++ b/chrome/browser/ash/notifications/deprecation_notification_controller.h
@@ -50,7 +50,7 @@
 
   // Show a shortcut deprecation notification with the given |message_body|.
   void ShowNotification(const std::string& id,
-                        const base::string16& message_body);
+                        const std::u16string& message_body);
 
   // Returns whether to show the deprecation notice for |key_code|.
   bool ShouldShowAltBasedDeprecationNotification(ui::KeyboardCode key_code);
diff --git a/chrome/browser/ash/system/timezone_util.cc b/chrome/browser/ash/system/timezone_util.cc
index fc25759..723b56d 100644
--- a/chrome/browser/ash/system/timezone_util.cc
+++ b/chrome/browser/ash/system/timezone_util.cc
@@ -54,7 +54,7 @@
     LAZY_INSTANCE_INITIALIZER;
 
 // Returns an exemplary city in the given timezone.
-base::string16 GetExemplarCity(const icu::TimeZone& zone) {
+std::u16string GetExemplarCity(const icu::TimeZone& zone) {
   // These will be leaked at the end.
   static UResourceBundle* zone_bundle = nullptr;
   static UResourceBundle* zone_strings = nullptr;
@@ -104,7 +104,7 @@
 }
 
 // Gets the given timezone's name for visualization.
-base::string16 GetTimezoneName(const icu::TimeZone& timezone) {
+std::u16string GetTimezoneName(const icu::TimeZone& timezone) {
   // Instead of using the raw_offset, use the offset in effect now.
   // For instance, US Pacific Time, the offset shown will be -7 in summer
   // while it'll be -8 in winter.
@@ -142,7 +142,7 @@
   } else {
     timezone.getDisplayName(dst_offset != 0, icu::TimeZone::LONG, name);
   }
-  base::string16 result(l10n_util::GetStringFUTF16(
+  std::u16string result(l10n_util::GetStringFUTF16(
       IDS_OPTIONS_SETTINGS_TIMEZONE_DISPLAY_TEMPLATE,
       base::ASCIIToUTF16(offset_str), base::i18n::UnicodeStringToString16(name),
       GetExemplarCity(timezone)));
@@ -198,7 +198,7 @@
 namespace ash {
 namespace system {
 
-base::string16 GetCurrentTimezoneName() {
+std::u16string GetCurrentTimezoneName() {
   return GetTimezoneName(TimezoneSettings::GetInstance()->GetTimezone());
 }
 
diff --git a/chrome/browser/ash/system/timezone_util.h b/chrome/browser/ash/system/timezone_util.h
index 38844b6..ab33fc1 100644
--- a/chrome/browser/ash/system/timezone_util.h
+++ b/chrome/browser/ash/system/timezone_util.h
@@ -27,7 +27,7 @@
 namespace system {
 
 // Gets the current timezone's display name.
-base::string16 GetCurrentTimezoneName();
+std::u16string GetCurrentTimezoneName();
 
 // Creates a list of pairs of each timezone's ID and name.
 std::unique_ptr<base::ListValue> GetTimezoneList();
diff --git a/chrome/browser/ash/web_applications/chrome_camera_app_ui_delegate.cc b/chrome/browser/ash/web_applications/chrome_camera_app_ui_delegate.cc
index d7ae215d..10ab78b 100644
--- a/chrome/browser/ash/web_applications/chrome_camera_app_ui_delegate.cc
+++ b/chrome/browser/ash/web_applications/chrome_camera_app_ui_delegate.cc
@@ -45,7 +45,7 @@
 ChromeCameraAppUIDelegate::CameraAppDialog::CameraAppDialog(
     const std::string& url)
     : chromeos::SystemWebDialogDelegate(GURL(url),
-                                        /*title=*/base::string16()) {}
+                                        /*title=*/std::u16string()) {}
 
 ChromeCameraAppUIDelegate::CameraAppDialog::~CameraAppDialog() {}
 
diff --git a/chrome/browser/ash/web_applications/crosh_system_web_app_info.cc b/chrome/browser/ash/web_applications/crosh_system_web_app_info.cc
index 5ff57884..63f15ebc 100644
--- a/chrome/browser/ash/web_applications/crosh_system_web_app_info.cc
+++ b/chrome/browser/ash/web_applications/crosh_system_web_app_info.cc
@@ -21,7 +21,7 @@
   auto info = std::make_unique<WebApplicationInfo>();
   info->start_url = GURL(chrome::kChromeUIUntrustedCroshURL);
   info->scope = GURL(chrome::kChromeUIUntrustedCroshURL);
-  info->title = base::string16(base::ASCIIToUTF16("crosh"));
+  info->title = std::u16string(base::ASCIIToUTF16("crosh"));
   web_app::CreateIconInfoForSystemWebApp(
       info->start_url, {{"app_icon_256.png", 256, IDR_LOGO_CROSTINI_TERMINAL}},
       *info);
diff --git a/chrome/browser/ash/web_applications/media_web_app_info.cc b/chrome/browser/ash/web_applications/media_web_app_info.cc
index c200323..529cc2d 100644
--- a/chrome/browser/ash/web_applications/media_web_app_info.cc
+++ b/chrome/browser/ash/web_applications/media_web_app_info.cc
@@ -40,7 +40,7 @@
 // web app manifest's `accept` property.
 AcceptMap MakeHandlerAccept() {
   AcceptMap result;
-  const base::string16 separator = base::ASCIIToUTF16(",");
+  const std::u16string separator = base::ASCIIToUTF16(",");
   for (const auto& handler : kFileHandlers) {
     result[base::ASCIIToUTF16(std::get<0>(handler))] =
         base::SplitString(base::ASCIIToUTF16(std::get<1>(handler)), separator,
diff --git a/chrome/browser/autocomplete/autocomplete_browsertest.cc b/chrome/browser/autocomplete/autocomplete_browsertest.cc
index bb8550a56..3f1fead 100644
--- a/chrome/browser/autocomplete/autocomplete_browsertest.cc
+++ b/chrome/browser/autocomplete/autocomplete_browsertest.cc
@@ -47,7 +47,7 @@
 
 namespace {
 
-base::string16 AutocompleteResultAsString(const AutocompleteResult& result) {
+std::u16string AutocompleteResultAsString(const AutocompleteResult& result) {
   std::string output(base::StringPrintf("{%" PRIuS "} ", result.size()));
   for (size_t i = 0; i < result.size(); ++i) {
     AutocompleteMatch match = result.match_at(i);
@@ -84,7 +84,7 @@
     EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
     EXPECT_EQ(base::UTF8ToUTF16(url::kAboutBlankURL),
               omnibox_view->GetText());
-    EXPECT_EQ(base::string16(), omnibox_model->keyword());
+    EXPECT_EQ(std::u16string(), omnibox_model->keyword());
     EXPECT_FALSE(omnibox_model->is_keyword_hint());
     EXPECT_FALSE(omnibox_model->is_keyword_selected());
   }
@@ -183,7 +183,7 @@
   LocationBar* location_bar = GetLocationBar();
   OmniboxView* omnibox_view = location_bar->GetOmniboxView();
   EXPECT_EQ(base::UTF8ToUTF16(url::kAboutBlankURL), omnibox_view->GetText());
-  omnibox_view->SetUserText(base::string16());
+  omnibox_view->SetUserText(std::u16string());
   content::WindowedNotificationObserver observer(
       content::NOTIFICATION_LOAD_STOP,
       content::NotificationService::AllSources());
@@ -205,10 +205,10 @@
 
   TemplateURLService* template_url_service =
       TemplateURLServiceFactory::GetForProfile(browser()->profile());
-  base::string16 default_search_keyword =
+  std::u16string default_search_keyword =
       template_url_service->GetDefaultSearchProvider()->keyword();
 
-  base::string16 query_text = base::ASCIIToUTF16("foo");
+  std::u16string query_text = base::ASCIIToUTF16("foo");
 
   size_t selection_start, selection_end;
 
@@ -218,7 +218,7 @@
 
     location_bar->FocusSearch();
     EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
-    EXPECT_EQ(base::string16(), omnibox_view->GetText());
+    EXPECT_EQ(std::u16string(), omnibox_view->GetText());
     EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
     EXPECT_FALSE(omnibox_model->is_keyword_hint());
     EXPECT_TRUE(omnibox_model->is_keyword_selected());
@@ -237,7 +237,7 @@
     omnibox_view->SetUserText(query_text);
     EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
     EXPECT_EQ(query_text, omnibox_view->GetText());
-    EXPECT_EQ(base::string16(), omnibox_model->keyword());
+    EXPECT_EQ(std::u16string(), omnibox_model->keyword());
     EXPECT_FALSE(omnibox_model->is_keyword_hint());
     EXPECT_FALSE(omnibox_model->is_keyword_selected());
 
@@ -262,7 +262,7 @@
 
     location_bar->FocusSearch();
     EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
-    EXPECT_EQ(base::string16(), omnibox_view->GetText());
+    EXPECT_EQ(std::u16string(), omnibox_view->GetText());
     EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
     EXPECT_FALSE(omnibox_model->is_keyword_hint());
     EXPECT_TRUE(omnibox_model->is_keyword_selected());
@@ -273,7 +273,7 @@
 
     location_bar->FocusSearch();
     EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
-    EXPECT_EQ(base::string16(), omnibox_view->GetText());
+    EXPECT_EQ(std::u16string(), omnibox_view->GetText());
     EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
     EXPECT_FALSE(omnibox_model->is_keyword_hint());
     EXPECT_TRUE(omnibox_model->is_keyword_selected());
@@ -330,7 +330,7 @@
 
     EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
     EXPECT_EQ(query_text, omnibox_view->GetText());
-    EXPECT_EQ(base::string16(), omnibox_model->keyword());
+    EXPECT_EQ(std::u16string(), omnibox_model->keyword());
     EXPECT_FALSE(omnibox_model->is_keyword_hint());
     EXPECT_FALSE(omnibox_model->is_keyword_selected());
 
@@ -347,7 +347,7 @@
 
     location_bar->FocusSearch();
     EXPECT_FALSE(location_bar->GetDestinationURL().is_valid());
-    EXPECT_EQ(base::string16(), omnibox_view->GetText());
+    EXPECT_EQ(std::u16string(), omnibox_view->GetText());
     EXPECT_EQ(default_search_keyword, omnibox_model->keyword());
     EXPECT_FALSE(omnibox_model->is_keyword_hint());
     EXPECT_TRUE(omnibox_model->is_keyword_selected());
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
index 4d44fab..dc92fa4 100644
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -92,7 +92,7 @@
     initialized_ = true;
     if (url.is_valid()) {
       stripped_url_ = AutocompleteMatch::GURLToStrippedGURL(
-          url, AutocompleteInput(), template_url_service, base::string16());
+          url, AutocompleteInput(), template_url_service, std::u16string());
     }
   }
 
@@ -152,7 +152,7 @@
       // inputs.
       last_committed_stripped_url_ = AutocompleteMatch::GURLToStrippedGURL(
           last_committed_url, AutocompleteInput(), template_url_service,
-          base::string16());
+          std::u16string());
     }
   }
 
@@ -304,19 +304,19 @@
   return content::kChromeUIScheme;
 }
 
-std::vector<base::string16> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
+std::vector<std::u16string> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
   std::vector<std::string> chrome_builtins(
       chrome::kChromeHostURLs,
       chrome::kChromeHostURLs + chrome::kNumberOfChromeHostURLs);
   std::sort(chrome_builtins.begin(), chrome_builtins.end());
 
-  std::vector<base::string16> builtins;
+  std::vector<std::u16string> builtins;
 
   for (auto i(chrome_builtins.begin()); i != chrome_builtins.end(); ++i)
     builtins.push_back(base::ASCIIToUTF16(*i));
 
 #if !defined(OS_ANDROID)
-  base::string16 settings(base::ASCIIToUTF16(chrome::kChromeUISettingsHost) +
+  std::u16string settings(base::ASCIIToUTF16(chrome::kChromeUISettingsHost) +
                           base::ASCIIToUTF16("/"));
   for (size_t i = 0; i < base::size(kChromeSettingsSubPages); i++) {
     builtins.push_back(settings +
@@ -327,9 +327,9 @@
   return builtins;
 }
 
-std::vector<base::string16>
+std::vector<std::u16string>
 ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
-  std::vector<base::string16> builtins_to_provide;
+  std::vector<std::u16string> builtins_to_provide;
   builtins_to_provide.push_back(
       base::ASCIIToUTF16(chrome::kChromeUIChromeURLsURL));
 #if !defined(OS_ANDROID)
@@ -393,7 +393,7 @@
 }
 
 void ChromeAutocompleteProviderClient::Classify(
-    const base::string16& text,
+    const std::u16string& text,
     bool prefer_keyword,
     bool allow_exact_keyword_match,
     metrics::OmniboxEventProto::PageClassification page_classification,
@@ -407,7 +407,7 @@
 
 void ChromeAutocompleteProviderClient::DeleteMatchingURLsForKeywordFromHistory(
     history::KeywordID keyword_id,
-    const base::string16& term) {
+    const std::u16string& term) {
   GetHistoryService()->DeleteMatchingURLsForKeyword(keyword_id, term);
 }
 
@@ -453,7 +453,7 @@
   if (!input)
     input = &empty_input;
   const GURL stripped_url = AutocompleteMatch::GURLToStrippedGURL(
-      url, *input, GetTemplateURLService(), base::string16());
+      url, *input, GetTemplateURLService(), std::u16string());
   Browser* active_browser = BrowserList::GetInstance()->GetLastActive();
   content::WebContents* active_tab = nullptr;
   if (active_browser)
@@ -501,9 +501,9 @@
     input = &empty_input;
   const TemplateURLService* template_url_service = GetTemplateURLService();
   return AutocompleteMatch::GURLToStrippedGURL(
-             url1, *input, template_url_service, base::string16()) ==
+             url1, *input, template_url_service, std::u16string()) ==
          AutocompleteMatch::GURLToStrippedGURL(
-             url2, *input, template_url_service, base::string16());
+             url2, *input, template_url_service, std::u16string());
 }
 
 bool ChromeAutocompleteProviderClient::IsStrippedURLEqualToWebContentsURL(
@@ -530,7 +530,7 @@
   if (!input)
     input = &empty_input;
   const GURL stripped_url = AutocompleteMatch::GURLToStrippedGURL(
-      url, *input, GetTemplateURLService(), base::string16());
+      url, *input, GetTemplateURLService(), std::u16string());
 
   std::vector<TabModel*> tab_models;
   for (auto it = TabModelList::begin(); it != TabModelList::end(); ++it) {
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h
index 039c5ac..d174cd1 100644
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.h
@@ -59,8 +59,8 @@
       KeywordProvider* keyword_provider) override;
   std::string GetAcceptLanguages() const override;
   std::string GetEmbedderRepresentationOfAboutScheme() const override;
-  std::vector<base::string16> GetBuiltinURLs() override;
-  std::vector<base::string16> GetBuiltinsToProvideAsUserTypes() override;
+  std::vector<std::u16string> GetBuiltinURLs() override;
+  std::vector<std::u16string> GetBuiltinsToProvideAsUserTypes() override;
   component_updater::ComponentUpdateService* GetComponentUpdateService()
       override;
   query_tiles::TileService* GetQueryTileService() const override;
@@ -74,7 +74,7 @@
   bool IsSyncActive() const override;
   std::string ProfileUserName() const override;
   void Classify(
-      const base::string16& text,
+      const std::u16string& text,
       bool prefer_keyword,
       bool allow_exact_keyword_match,
       metrics::OmniboxEventProto::PageClassification page_classification,
@@ -82,7 +82,7 @@
       GURL* alternate_nav_url) override;
   void DeleteMatchingURLsForKeywordFromHistory(
       history::KeywordID keyword_id,
-      const base::string16& term) override;
+      const std::u16string& term) override;
   void PrefetchImage(const GURL& url) override;
   void StartServiceWorker(const GURL& destination_url) override;
   bool IsTabOpenWithURL(const GURL& url,
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
index d5c3dd4..dfe41d8c 100644
--- a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
@@ -96,7 +96,7 @@
       // If block state is unknown, check if there is an application registered
       // for the url scheme.
       GURL url(scheme + "://");
-      base::string16 application_name =
+      std::u16string application_name =
           shell_integration::GetApplicationNameForProtocol(url);
       return application_name.empty() ? metrics::OmniboxInputType::EMPTY
                                       : metrics::OmniboxInputType::URL;
diff --git a/chrome/browser/autocomplete/keyword_extensions_delegate_impl.cc b/chrome/browser/autocomplete/keyword_extensions_delegate_impl.cc
index e34a4bc..2a3e7ca 100644
--- a/chrome/browser/autocomplete/keyword_extensions_delegate_impl.cc
+++ b/chrome/browser/autocomplete/keyword_extensions_delegate_impl.cc
@@ -49,7 +49,7 @@
 
 void KeywordExtensionsDelegateImpl::DeleteSuggestion(
     const TemplateURL* template_url,
-    const base::string16& suggestion_text) {
+    const std::u16string& suggestion_text) {
   extensions::ExtensionOmniboxEventRouter::OnDeleteSuggestion(
       profile_, template_url->GetExtensionId(),
       base::UTF16ToUTF8(suggestion_text));
@@ -73,7 +73,7 @@
     const AutocompleteInput& input,
     bool minimal_changes,
     const TemplateURL* template_url,
-    const base::string16& remaining_input) {
+    const std::u16string& remaining_input) {
   DCHECK(template_url);
 
   if (input.want_asynchronous_matches()) {
@@ -150,7 +150,7 @@
       DCHECK(model);
       // It's possible to change the default suggestion while not in an editing
       // session.
-      base::string16 keyword, remaining_input;
+      std::u16string keyword, remaining_input;
       if (matches()->empty() || current_keyword_extension_id_.empty() ||
           !KeywordProvider::ExtractKeywordFromInput(input, model, &keyword,
                                                     &remaining_input))
@@ -175,7 +175,7 @@
       // ExtractKeywordFromInput() can fail if e.g. this code is triggered by
       // direct calls from the development console, outside the normal flow of
       // user input.
-      base::string16 keyword, remaining_input;
+      std::u16string keyword, remaining_input;
       if (!KeywordProvider::ExtractKeywordFromInput(input, model, &keyword,
                                                     &remaining_input))
         return;
diff --git a/chrome/browser/autocomplete/keyword_extensions_delegate_impl.h b/chrome/browser/autocomplete/keyword_extensions_delegate_impl.h
index a54ac40e..87aa6fa 100644
--- a/chrome/browser/autocomplete/keyword_extensions_delegate_impl.h
+++ b/chrome/browser/autocomplete/keyword_extensions_delegate_impl.h
@@ -35,7 +35,7 @@
 
   // KeywordExtensionsDelegate:
   void DeleteSuggestion(const TemplateURL* template_url,
-                        const base::string16& suggestion_text) override;
+                        const std::u16string& suggestion_text) override;
 
  private:
   // KeywordExtensionsDelegate:
@@ -44,7 +44,7 @@
   bool Start(const AutocompleteInput& input,
              bool minimal_changes,
              const TemplateURL* template_url,
-             const base::string16& remaining_input) override;
+             const std::u16string& remaining_input) override;
   void EnterExtensionKeywordMode(const std::string& extension_id) override;
   void MaybeEndExtensionKeywordMode() override;
 
diff --git a/chrome/browser/autocomplete/search_provider_unittest.cc b/chrome/browser/autocomplete/search_provider_unittest.cc
index e2affab..0c952c4 100644
--- a/chrome/browser/autocomplete/search_provider_unittest.cc
+++ b/chrome/browser/autocomplete/search_provider_unittest.cc
@@ -195,21 +195,20 @@
     ResultInfo(GURL gurl,
                AutocompleteMatch::Type result_type,
                bool allowed_to_be_default_match,
-               base::string16 fill_into_edit)
-      : gurl(gurl),
-        result_type(result_type),
-        allowed_to_be_default_match(allowed_to_be_default_match),
-        fill_into_edit(fill_into_edit) {
-    }
+               std::u16string fill_into_edit)
+        : gurl(gurl),
+          result_type(result_type),
+          allowed_to_be_default_match(allowed_to_be_default_match),
+          fill_into_edit(fill_into_edit) {}
 
     const GURL gurl;
     const AutocompleteMatch::Type result_type;
     const bool allowed_to_be_default_match;
-    const base::string16 fill_into_edit;
+    const std::u16string fill_into_edit;
   };
 
   struct TestData {
-    const base::string16 input;
+    const std::u16string input;
     const size_t num_results;
     const ResultInfo output[3];
   };
@@ -238,7 +237,7 @@
   // Adds a search for |term|, using the engine |t_url| to the history, and
   // returns the URL for that search.
   GURL AddSearchToHistory(TemplateURL* t_url,
-                          base::string16 term,
+                          std::u16string term,
                           int visit_count);
 
   // Used in SetUp in subclasses. See description above this class about common
@@ -248,7 +247,7 @@
 
   // Looks for a match in |provider_| with |contents| equal to |contents|.
   // Sets |match| to it if found.  Returns whether |match| was set.
-  bool FindMatchWithContents(const base::string16& contents,
+  bool FindMatchWithContents(const std::u16string& contents,
                              AutocompleteMatch* match);
 
   // Looks for a match in |provider_| with destination |url|.  Sets |match| to
@@ -264,13 +263,13 @@
   void RunTillProviderDone();
 
   // Invokes Start on provider_, then runs all pending tasks.
-  void QueryForInput(const base::string16& text,
+  void QueryForInput(const std::u16string& text,
                      bool prevent_inline_autocomplete,
                      bool prefer_keyword);
 
   // Calls QueryForInput(), finishes any suggest query, then if |wyt_match| is
   // not nullptr, sets it to the "what you typed" entry for |text|.
-  void QueryForInputAndSetWYTMatch(const base::string16& text,
+  void QueryForInputAndSetWYTMatch(const std::u16string& text,
                                    AutocompleteMatch* wyt_match);
 
   // Calls QueryForInput(), sets the JSON responses for the default and keyword
@@ -278,7 +277,7 @@
   // returned.  Use empty responses for each fetcher that shouldn't be set up /
   // configured.
   void QueryForInputAndWaitForFetcherResponses(
-      const base::string16& text,
+      const std::u16string& text,
       const bool prefer_keyword,
       const std::string& default_fetcher_response,
       const std::string& keyword_fetcher_response);
@@ -286,7 +285,7 @@
   // Notifies the URLFetcher for the suggest query corresponding to the default
   // search provider that it's done.
   // Be sure and wrap calls to this in ASSERT_NO_FATAL_FAILURE.
-  void FinishDefaultSuggestQuery(const base::string16& query_text);
+  void FinishDefaultSuggestQuery(const std::u16string& query_text);
 
   // Verifies that |matches| and |expected_matches| agree on the first
   // |num_expected_matches|, displaying an error message that includes
@@ -304,10 +303,10 @@
 
   // See description above class for details of these fields.
   TemplateURL* default_t_url_ = nullptr;
-  const base::string16 term1_ = ASCIIToUTF16("term1");
+  const std::u16string term1_ = ASCIIToUTF16("term1");
   GURL term1_url_;
   TemplateURL* keyword_t_url_ = nullptr;
-  const base::string16 keyword_term_ = ASCIIToUTF16("keyword");
+  const std::u16string keyword_term_ = ASCIIToUTF16("keyword");
   GURL keyword_url_;
 
   // SearchProviderFeatureTestComponent must come before BrowserTaskEnvironment,
@@ -465,7 +464,7 @@
   run_loop.Run();
 }
 
-void BaseSearchProviderTest::QueryForInput(const base::string16& text,
+void BaseSearchProviderTest::QueryForInput(const std::u16string& text,
                                            bool prevent_inline_autocomplete,
                                            bool prefer_keyword) {
   // Start a query.
@@ -481,7 +480,7 @@
 }
 
 void BaseSearchProviderTest::QueryForInputAndSetWYTMatch(
-    const base::string16& text,
+    const std::u16string& text,
     AutocompleteMatch* wyt_match) {
   QueryForInput(text, false, false);
   profile_.BlockUntilHistoryProcessesPendingRequests();
@@ -499,7 +498,7 @@
 }
 
 void BaseSearchProviderTest::QueryForInputAndWaitForFetcherResponses(
-    const base::string16& text,
+    const std::u16string& text,
     const bool prefer_keyword,
     const std::string& default_fetcher_response,
     const std::string& keyword_fetcher_response) {
@@ -531,7 +530,7 @@
 }
 
 GURL BaseSearchProviderTest::AddSearchToHistory(TemplateURL* t_url,
-                                                base::string16 term,
+                                                std::u16string term,
                                                 int visit_count) {
   history::HistoryService* history = HistoryServiceFactory::GetForProfile(
       &profile_, ServiceAccessType::EXPLICIT_ACCESS);
@@ -542,7 +541,7 @@
   static base::Time last_added_time;
   last_added_time = std::max(base::Time::Now(),
       last_added_time + base::TimeDelta::FromMicroseconds(1));
-  history->AddPageWithDetails(search, base::string16(), visit_count,
+  history->AddPageWithDetails(search, std::u16string(), visit_count,
                               visit_count, last_added_time, false,
                               history::SOURCE_BROWSED);
   history->SetKeywordSearchTermsForURL(search, t_url->id(), term);
@@ -550,7 +549,7 @@
 }
 
 bool BaseSearchProviderTest::FindMatchWithContents(
-    const base::string16& contents,
+    const std::u16string& contents,
     AutocompleteMatch* match) {
   for (auto i = provider_->matches().begin(); i != provider_->matches().end();
        ++i) {
@@ -576,7 +575,7 @@
 }
 
 void BaseSearchProviderTest::FinishDefaultSuggestQuery(
-    const base::string16& query_text) {
+    const std::u16string& query_text) {
   std::string text8;
   ASSERT_TRUE(
       base::UTF16ToUTF8(query_text.data(), query_text.length(), &text8));
@@ -633,7 +632,7 @@
 // Make sure we query history for the default provider and a URLFetcher is
 // created for the default provider suggest results.
 TEST_F(SearchProviderTest, QueryDefaultProvider) {
-  base::string16 term = term1_.substr(0, term1_.length() - 1);
+  std::u16string term = term1_.substr(0, term1_.length() - 1);
   QueryForInput(term, false, false);
 
   // Make sure the default providers suggest service was queried.
@@ -678,7 +677,7 @@
 // provider even if the default search provider's keyword is renamed in the
 // middle of processing the query.
 TEST_F(SearchProviderTest, HasQueryWhatYouTypedIfDefaultKeywordChanges) {
-  base::string16 query = ASCIIToUTF16("query");
+  std::u16string query = ASCIIToUTF16("query");
   QueryForInput(query, false, false);
 
   // Make sure the default provider's suggest service was queried.
@@ -711,7 +710,7 @@
 }
 
 TEST_F(SearchProviderTest, HonorPreventInlineAutocomplete) {
-  base::string16 term = term1_.substr(0, term1_.length() - 1);
+  std::u16string term = term1_.substr(0, term1_.length() - 1);
   QueryForInput(term, true, false);
 
   ASSERT_FALSE(provider_->matches().empty());
@@ -723,7 +722,7 @@
 // Issues a query that matches the registered keyword and makes sure history
 // is queried as well as URLFetchers getting created.
 TEST_F(SearchProviderTest, QueryKeywordProvider) {
-  base::string16 term = keyword_term_.substr(0, keyword_term_.length() - 1);
+  std::u16string term = keyword_term_.substr(0, keyword_term_.length() - 1);
   QueryForInput(ASCIIToUTF16("k ") + term, false, false);
 
   // Make sure the default providers suggest service was queried.
@@ -828,7 +827,7 @@
   // Add the term as a url.
   HistoryServiceFactory::GetForProfile(&profile_,
                                        ServiceAccessType::EXPLICIT_ACCESS)
-      ->AddPageWithDetails(GURL("http://docs.google.com"), base::string16(), 1,
+      ->AddPageWithDetails(GURL("http://docs.google.com"), std::u16string(), 1,
                            1, base::Time::Now(), false,
                            history::SOURCE_BROWSED);
   profile_.BlockUntilHistoryProcessesPendingRequests();
@@ -2333,13 +2332,13 @@
   // We hardcode the string "term1" below, so ensure that the search term that
   // got added to history already is that string.
   ASSERT_EQ(ASCIIToUTF16("term1"), term1_);
-  base::string16 term = term1_.substr(0, term1_.length() - 1);
+  std::u16string term = term1_.substr(0, term1_.length() - 1);
 
   AddSearchToHistory(default_t_url_, term + ASCIIToUTF16("2"), 2);
   profile_.BlockUntilHistoryProcessesPendingRequests();
 
   struct {
-    const base::string16 input;
+    const std::u16string input;
     const std::string json;
     const std::string matches[6];
   } cases[] = {
@@ -2826,7 +2825,7 @@
     QueryForInput(ASCIIToUTF16(cases[i].input), false, false);
     SearchSuggestionParser::NavigationResult result(
         ChromeAutocompleteSchemeClassifier(&profile_), GURL(cases[i].url),
-        AutocompleteMatchType::NAVSUGGEST, {}, base::string16(), std::string(),
+        AutocompleteMatchType::NAVSUGGEST, {}, std::u16string(), std::string(),
         false, 0, false, ASCIIToUTF16(cases[i].input));
     result.set_received_after_last_keystroke(false);
     AutocompleteMatch match(provider_->NavigationToMatch(result));
@@ -2840,7 +2839,7 @@
     QueryForInput(ASCIIToUTF16(cases[i].input), true, false);
     SearchSuggestionParser::NavigationResult result_prevent_inline(
         ChromeAutocompleteSchemeClassifier(&profile_), GURL(cases[i].url),
-        AutocompleteMatchType::NAVSUGGEST, {}, base::string16(), std::string(),
+        AutocompleteMatchType::NAVSUGGEST, {}, std::u16string(), std::string(),
         false, 0, false, ASCIIToUTF16(cases[i].input));
     result_prevent_inline.set_received_after_last_keystroke(false);
     AutocompleteMatch match_prevent_inline(
@@ -2856,11 +2855,11 @@
 
 // Verifies that "http://" is not trimmed for input that is a leading substring.
 TEST_F(SearchProviderTest, NavigationInlineSchemeSubstring) {
-  const base::string16 input(ASCIIToUTF16("http:"));
-  const base::string16 url(ASCIIToUTF16("http://a.com"));
+  const std::u16string input(ASCIIToUTF16("http:"));
+  const std::u16string url(ASCIIToUTF16("http://a.com"));
   SearchSuggestionParser::NavigationResult result(
       ChromeAutocompleteSchemeClassifier(&profile_), GURL(url),
-      AutocompleteMatchType::NAVSUGGEST, {}, base::string16(), std::string(),
+      AutocompleteMatchType::NAVSUGGEST, {}, std::u16string(), std::string(),
       false, 0, false, input);
   result.set_received_after_last_keystroke(false);
 
@@ -2887,7 +2886,7 @@
   SearchSuggestionParser::NavigationResult result(
       ChromeAutocompleteSchemeClassifier(&profile_),
       GURL("http://www.http.com/http"), AutocompleteMatchType::NAVSUGGEST, {},
-      base::string16(), std::string(), false, 0, false, ASCIIToUTF16("h"));
+      std::u16string(), std::string(), false, 0, false, ASCIIToUTF16("h"));
   result.set_received_after_last_keystroke(false);
   AutocompleteMatch match(provider_->NavigationToMatch(result));
   EXPECT_EQ(ASCIIToUTF16("ttp.com/http"), match.inline_autocompletion);
@@ -2913,7 +2912,7 @@
   SearchSuggestionParser::NavigationResult result(
       ChromeAutocompleteSchemeClassifier(&profile_),
       GURL("http://moon.com/moon"), AutocompleteMatchType::NAVSUGGEST, {},
-      base::string16(), std::string(), false, 0, false, ASCIIToUTF16("moon"));
+      std::u16string(), std::string(), false, 0, false, ASCIIToUTF16("moon"));
   result.set_received_after_last_keystroke(false);
   AutocompleteMatch match(provider_->NavigationToMatch(result));
   EXPECT_EQ(ASCIIToUTF16("moon.com/moon"), match.contents);
@@ -2933,7 +2932,7 @@
   SearchSuggestionParser::NavigationResult result(
       ChromeAutocompleteSchemeClassifier(&profile_),
       GURL("http://www.facebook.com"), AutocompleteMatchType::NAVSUGGEST, {},
-      base::string16(), std::string(), false, 0, false,
+      std::u16string(), std::string(), false, 0, false,
       ASCIIToUTF16("acebook"));
   result.set_received_after_last_keystroke(false);
   AutocompleteMatch match(provider_->NavigationToMatch(result));
@@ -2951,7 +2950,7 @@
   SearchSuggestionParser::NavigationResult result(
       ChromeAutocompleteSchemeClassifier(&profile_),
       GURL("http://www.yellow-animals.com/duck"),
-      AutocompleteMatchType::NAVSUGGEST, {}, base::string16(), std::string(),
+      AutocompleteMatchType::NAVSUGGEST, {}, std::u16string(), std::string(),
       false, 0, false, ASCIIToUTF16("duck"));
   result.set_received_after_last_keystroke(false);
   AutocompleteMatch match(provider_->NavigationToMatch(result));
@@ -2968,11 +2967,11 @@
 
 // Verifies that "http://" is trimmed in the general case.
 TEST_F(SearchProviderTest, DoTrimHttpScheme) {
-  const base::string16 input(ASCIIToUTF16("face book"));
-  const base::string16 url(ASCIIToUTF16("http://www.facebook.com"));
+  const std::u16string input(ASCIIToUTF16("face book"));
+  const std::u16string url(ASCIIToUTF16("http://www.facebook.com"));
   SearchSuggestionParser::NavigationResult result(
       ChromeAutocompleteSchemeClassifier(&profile_), GURL(url),
-      AutocompleteMatchType::NAVSUGGEST, {}, base::string16(), std::string(),
+      AutocompleteMatchType::NAVSUGGEST, {}, std::u16string(), std::string(),
       false, 0, false, input);
 
   QueryForInput(input, false, false);
@@ -2983,11 +2982,11 @@
 // Verifies that "http://" is not trimmed for input that has a scheme, even if
 // the input doesn't match the URL.
 TEST_F(SearchProviderTest, DontTrimHttpSchemeIfInputHasScheme) {
-  const base::string16 input(ASCIIToUTF16("https://face book"));
-  const base::string16 url(ASCIIToUTF16("http://www.facebook.com"));
+  const std::u16string input(ASCIIToUTF16("https://face book"));
+  const std::u16string url(ASCIIToUTF16("http://www.facebook.com"));
   SearchSuggestionParser::NavigationResult result(
       ChromeAutocompleteSchemeClassifier(&profile_), GURL(url),
-      AutocompleteMatchType::NAVSUGGEST, {}, base::string16(), std::string(),
+      AutocompleteMatchType::NAVSUGGEST, {}, std::u16string(), std::string(),
       false, 0, false, input);
 
   QueryForInput(input, false, false);
@@ -2998,11 +2997,11 @@
 // Verifies that "https://" is not trimmed for input that has a (non-matching)
 // scheme.
 TEST_F(SearchProviderTest, DontTrimHttpsSchemeIfInputHasScheme) {
-  const base::string16 input(ASCIIToUTF16("http://face book"));
-  const base::string16 url(ASCIIToUTF16("https://www.facebook.com"));
+  const std::u16string input(ASCIIToUTF16("http://face book"));
+  const std::u16string url(ASCIIToUTF16("https://www.facebook.com"));
   SearchSuggestionParser::NavigationResult result(
       ChromeAutocompleteSchemeClassifier(&profile_), GURL(url),
-      AutocompleteMatchType::NAVSUGGEST, {}, base::string16(), std::string(),
+      AutocompleteMatchType::NAVSUGGEST, {}, std::u16string(), std::string(),
       false, 0, false, input);
 
   QueryForInput(input, false, false);
@@ -3012,11 +3011,11 @@
 
 // Verifies that "https://" is trimmed in the general case.
 TEST_F(SearchProviderTest, DoTrimHttpsScheme) {
-  const base::string16 input(ASCIIToUTF16("face book"));
-  const base::string16 url(ASCIIToUTF16("https://www.facebook.com"));
+  const std::u16string input(ASCIIToUTF16("face book"));
+  const std::u16string url(ASCIIToUTF16("https://www.facebook.com"));
   SearchSuggestionParser::NavigationResult result(
       ChromeAutocompleteSchemeClassifier(&profile_), GURL(url),
-      AutocompleteMatchType::NAVSUGGEST, {}, base::string16(), std::string(),
+      AutocompleteMatchType::NAVSUGGEST, {}, std::u16string(), std::string(),
       false, 0, false, input);
 
   QueryForInput(input, false, false);
@@ -3665,7 +3664,7 @@
   default_t_url_ = turl_model->Add(std::make_unique<TemplateURL>(data));
   turl_model->SetUserSelectedDefaultSearchProvider(default_t_url_);
 
-  base::string16 term = term1_.substr(0, term1_.length() - 1);
+  std::u16string term = term1_.substr(0, term1_.length() - 1);
   QueryForInput(term, false, false);
 
   // And the URL matches what we expected.
@@ -3708,7 +3707,7 @@
   EXPECT_EQ(-1, answer.query_type);
 
   // Inject a scored result, which will trigger answer retrieval.
-  base::string16 query = base::ASCIIToUTF16("weather los angeles");
+  std::u16string query = base::ASCIIToUTF16("weather los angeles");
   SearchSuggestionParser::SuggestResult suggest_result(
       query, AutocompleteMatchType::SEARCH_HISTORY,
       /*subtypes=*/{}, /*from_keyword_provider=*/false,
@@ -3761,7 +3760,7 @@
 }
 
 TEST_F(InvalidSearchProviderTest, DoesNotSendSuggestRequests) {
-  base::string16 query = ASCIIToUTF16("query");
+  std::u16string query = ASCIIToUTF16("query");
   QueryForInput(query, false, false);
 
   // Make sure the default provider's suggest service was not queried.
diff --git a/chrome/browser/autocomplete/shortcuts_provider_extension_unittest.cc b/chrome/browser/autocomplete/shortcuts_provider_extension_unittest.cc
index 60e99ba9..35777a8 100644
--- a/chrome/browser/autocomplete/shortcuts_provider_extension_unittest.cc
+++ b/chrome/browser/autocomplete/shortcuts_provider_extension_unittest.cc
@@ -93,7 +93,7 @@
 #if BUILDFLAG(ENABLE_EXTENSIONS)
 TEST_F(ShortcutsProviderExtensionTest, Extension) {
   // Try an input string that matches an extension URL.
-  base::string16 text(base::ASCIIToUTF16("echo"));
+  std::u16string text(base::ASCIIToUTF16("echo"));
   std::string expected_url(
       "chrome-extension://cedabbhfglmiikkmdgcpjdkocfcmbkee/?q=echo");
   ExpectedURLs expected_urls;
@@ -111,6 +111,6 @@
 
   // Now the URL should have disappeared.
   RunShortcutsProviderTest(provider_, text, false, ExpectedURLs(),
-                           std::string(), base::string16());
+                           std::string(), std::u16string());
 }
 #endif
diff --git a/chrome/browser/autofill/address_accessory_controller_impl.cc b/chrome/browser/autofill/address_accessory_controller_impl.cc
index c52b9cd2..97ff6a2 100644
--- a/chrome/browser/autofill/address_accessory_controller_impl.cc
+++ b/chrome/browser/autofill/address_accessory_controller_impl.cc
@@ -43,7 +43,7 @@
 void AddProfileInfoAsSelectableField(UserInfo* info,
                                      const AutofillProfile* profile,
                                      ServerFieldType type) {
-  base::string16 field = profile->GetRawInfo(type);
+  std::u16string field = profile->GetRawInfo(type);
   if (type == ServerFieldType::NAME_MIDDLE && field.empty()) {
     field = profile->GetRawInfo(ServerFieldType::NAME_MIDDLE_INITIAL);
   }
@@ -142,7 +142,7 @@
 
 void AddressAccessoryControllerImpl::RefreshSuggestions() {
   std::vector<AutofillProfile*> profiles = GetProfiles();
-  base::string16 title_or_empty_message;
+  std::u16string title_or_empty_message;
   if (profiles.empty())
     title_or_empty_message =
         l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_SHEET_EMPTY_MESSAGE);
diff --git a/chrome/browser/autofill/address_accessory_controller_impl_unittest.cc b/chrome/browser/autofill/address_accessory_controller_impl_unittest.cc
index 5b6f062..e4d26e9 100644
--- a/chrome/browser/autofill/address_accessory_controller_impl_unittest.cc
+++ b/chrome/browser/autofill/address_accessory_controller_impl_unittest.cc
@@ -36,18 +36,18 @@
 using testing::StrictMock;
 using FillingSource = ManualFillingController::FillingSource;
 
-base::string16 addresses_empty_str() {
+std::u16string addresses_empty_str() {
   return l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_SHEET_EMPTY_MESSAGE);
 }
 
-base::string16 manage_addresses_str() {
+std::u16string manage_addresses_str() {
   return l10n_util::GetStringUTF16(
       IDS_AUTOFILL_ADDRESS_SHEET_ALL_ADDRESSES_LINK);
 }
 
 // Creates a AccessorySheetData::Builder with a "Manage Addresses" footer.
 AccessorySheetData::Builder AddressAccessorySheetDataBuilder(
-    const base::string16& title) {
+    const std::u16string& title) {
   return AccessorySheetData::Builder(AccessoryTabType::ADDRESSES, title)
       .AppendFooterCommand(manage_addresses_str(),
                            AccessoryAction::MANAGE_ADDRESSES);
@@ -107,7 +107,7 @@
   AutofillProfile canadian = test::GetFullValidProfileForCanada();
   personal_data_manager()->AddProfile(canadian);
 
-  AccessorySheetData result(AccessoryTabType::PASSWORDS, base::string16());
+  AccessorySheetData result(AccessoryTabType::PASSWORDS, std::u16string());
   EXPECT_CALL(mock_manual_filling_controller_, RefreshSuggestions(_))
       .WillOnce(SaveArg<0>(&result));
 
@@ -115,7 +115,7 @@
 
   ASSERT_EQ(
       result,
-      AddressAccessorySheetDataBuilder(base::string16())
+      AddressAccessorySheetDataBuilder(std::u16string())
           .AddUserInfo()
           .AppendSimpleField(canadian.GetRawInfo(ServerFieldType::NAME_FULL))
           .AppendSimpleField(canadian.GetRawInfo(ServerFieldType::COMPANY_NAME))
@@ -139,7 +139,7 @@
 }
 
 TEST_F(AddressAccessoryControllerTest, ProvidesEmptySuggestionsMessage) {
-  AccessorySheetData result(AccessoryTabType::PASSWORDS, base::string16());
+  AccessorySheetData result(AccessoryTabType::PASSWORDS, std::u16string());
   EXPECT_CALL(mock_manual_filling_controller_, RefreshSuggestions(_))
       .WillOnce(SaveArg<0>(&result));
 
@@ -150,7 +150,7 @@
 }
 
 TEST_F(AddressAccessoryControllerTest, TriggersRefreshWhenDataChanges) {
-  AccessorySheetData result(AccessoryTabType::PASSWORDS, base::string16());
+  AccessorySheetData result(AccessoryTabType::PASSWORDS, std::u16string());
   EXPECT_CALL(mock_manual_filling_controller_, RefreshSuggestions(_))
       .WillRepeatedly(SaveArg<0>(&result));
 
@@ -162,25 +162,25 @@
   // When new data is added, a refresh is automatically triggered.
   AutofillProfile email = test::GetIncompleteProfile2();
   personal_data_manager()->AddProfile(email);
-  ASSERT_EQ(result, AddressAccessorySheetDataBuilder(base::string16())
+  ASSERT_EQ(result, AddressAccessorySheetDataBuilder(std::u16string())
                         .AddUserInfo()
                         /*name full:*/
-                        .AppendSimpleField(base::string16())
+                        .AppendSimpleField(std::u16string())
                         /*company name:*/
-                        .AppendSimpleField(base::string16())
+                        .AppendSimpleField(std::u16string())
                         /*address line1:*/
-                        .AppendSimpleField(base::string16())
+                        .AppendSimpleField(std::u16string())
                         /*address line2:*/
-                        .AppendSimpleField(base::string16())
+                        .AppendSimpleField(std::u16string())
                         /*address zip:*/
-                        .AppendSimpleField(base::string16())
+                        .AppendSimpleField(std::u16string())
                         /*address city:*/
-                        .AppendSimpleField(base::string16())
+                        .AppendSimpleField(std::u16string())
                         /*address state:*/
-                        .AppendSimpleField(base::string16())
+                        .AppendSimpleField(std::u16string())
                         /*address country:*/
-                        .AppendSimpleField(base::string16())
-                        /*phone number:*/.AppendSimpleField(base::string16())
+                        .AppendSimpleField(std::u16string())
+                        /*phone number:*/.AppendSimpleField(std::u16string())
                         .AppendSimpleField(
                             email.GetRawInfo(ServerFieldType::EMAIL_ADDRESS))
                         .Build());
diff --git a/chrome/browser/autofill/android/personal_data_manager_android.cc b/chrome/browser/autofill/android/personal_data_manager_android.cc
index f67add7c..2632f51 100644
--- a/chrome/browser/autofill/android/personal_data_manager_android.cc
+++ b/chrome/browser/autofill/android/personal_data_manager_android.cc
@@ -132,7 +132,7 @@
   void OnFullCardRequestSucceeded(
       const payments::FullCardRequest& /* full_card_request */,
       const CreditCard& card,
-      const base::string16& cvc) override {
+      const std::u16string& cvc) override {
     JNIEnv* env = base::android::AttachCurrentThread();
     Java_FullCardRequestDelegate_onFullCardDetails(
         env, jdelegate_,
@@ -567,7 +567,7 @@
     const JavaParamRef<jobject>& unused_obj,
     const JavaParamRef<jstring>& jcard_number,
     const jboolean jempty_if_invalid) {
-  base::string16 card_number = ConvertJavaStringToUTF16(env, jcard_number);
+  std::u16string card_number = ConvertJavaStringToUTF16(env, jcard_number);
 
   if (static_cast<bool>(jempty_if_invalid) &&
       !IsValidCreditCardNumber(card_number)) {
@@ -824,7 +824,7 @@
 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetProfileGUIDs(
     JNIEnv* env,
     const std::vector<AutofillProfile*>& profiles) {
-  std::vector<base::string16> guids;
+  std::vector<std::u16string> guids;
   for (AutofillProfile* profile : profiles)
     guids.push_back(base::UTF8ToUTF16(profile->guid()));
 
@@ -834,7 +834,7 @@
 ScopedJavaLocalRef<jobjectArray> PersonalDataManagerAndroid::GetCreditCardGUIDs(
     JNIEnv* env,
     const std::vector<CreditCard*>& credit_cards) {
-  std::vector<base::string16> guids;
+  std::vector<std::u16string> guids;
   for (CreditCard* credit_card : credit_cards)
     guids.push_back(base::UTF8ToUTF16(credit_card->guid()));
 
@@ -871,7 +871,7 @@
   ServerFieldType excluded_field =
       include_name_in_label ? UNKNOWN_TYPE : NAME_FULL;
 
-  std::vector<base::string16> labels;
+  std::vector<std::u16string> labels;
   AutofillProfile::CreateInferredLabels(
       profiles, suggested_fields.get(), excluded_field, minimal_fields_shown,
       g_browser_process->GetApplicationLocale(), &labels);
diff --git a/chrome/browser/autofill/autofill_interactive_uitest.cc b/chrome/browser/autofill/autofill_interactive_uitest.cc
index 673edb3b3..311d731 100644
--- a/chrome/browser/autofill/autofill_interactive_uitest.cc
+++ b/chrome/browser/autofill/autofill_interactive_uitest.cc
@@ -2219,14 +2219,14 @@
   std::vector<AutofillProfile> profiles;
   for (int i = 0; i < kNumProfiles; i++) {
     AutofillProfile profile;
-    base::string16 name(base::NumberToString16(i));
-    base::string16 email(name + ASCIIToUTF16("@example.com"));
-    base::string16 street =
+    std::u16string name(base::NumberToString16(i));
+    std::u16string email(name + ASCIIToUTF16("@example.com"));
+    std::u16string street =
         ASCIIToUTF16(base::NumberToString(base::RandInt(0, 10000)) + " " +
                      streets[base::RandInt(0, streets.size() - 1)]);
-    base::string16 city =
+    std::u16string city =
         ASCIIToUTF16(cities[base::RandInt(0, cities.size() - 1)]);
-    base::string16 zip(base::NumberToString16(base::RandInt(0, 10000)));
+    std::u16string zip(base::NumberToString16(base::RandInt(0, 10000)));
     profile.SetRawInfo(NAME_FIRST, name);
     profile.SetRawInfo(EMAIL_ADDRESS, email);
     profile.SetRawInfo(ADDRESS_HOME_LINE1, street);
diff --git a/chrome/browser/autofill/autofill_keyboard_accessory_adapter.cc b/chrome/browser/autofill/autofill_keyboard_accessory_adapter.cc
index a9807f96..65a39ad 100644
--- a/chrome/browser/autofill/autofill_keyboard_accessory_adapter.cc
+++ b/chrome/browser/autofill/autofill_keyboard_accessory_adapter.cc
@@ -21,8 +21,8 @@
 constexpr size_t kMaxBulletCount = 8;
 
 namespace {
-base::string16 CreateLabel(const Suggestion& suggestion) {
-  base::string16 password =
+std::u16string CreateLabel(const Suggestion& suggestion) {
+  std::u16string password =
       suggestion.additional_label.substr(0, kMaxBulletCount);
   // The label contains the signon_realm or is empty. The additional_label can
   // never be empty since it must contain a password.
@@ -98,13 +98,13 @@
   return controller_->GetSuggestionAt(OffsetIndexFor(row));
 }
 
-const base::string16& AutofillKeyboardAccessoryAdapter::GetSuggestionValueAt(
+const std::u16string& AutofillKeyboardAccessoryAdapter::GetSuggestionValueAt(
     int row) const {
   DCHECK(controller_) << "Call GetSuggestionValueAt only from its owner!";
   return controller_->GetSuggestionValueAt(OffsetIndexFor(row));
 }
 
-const base::string16& AutofillKeyboardAccessoryAdapter::GetSuggestionLabelAt(
+const std::u16string& AutofillKeyboardAccessoryAdapter::GetSuggestionLabelAt(
     int row) const {
   DCHECK(controller_) << "Call GetSuggestionLabelAt only from its owner!";
   DCHECK(static_cast<size_t>(row) < labels_.size());
@@ -118,15 +118,15 @@
 
 bool AutofillKeyboardAccessoryAdapter::GetRemovalConfirmationText(
     int index,
-    base::string16* title,
-    base::string16* body) {
+    std::u16string* title,
+    std::u16string* body) {
   return controller_ && controller_->GetRemovalConfirmationText(
                             OffsetIndexFor(index), title, body);
 }
 
 bool AutofillKeyboardAccessoryAdapter::RemoveSuggestion(int index) {
   DCHECK(view_) << "RemoveSuggestion called before a View was set!";
-  base::string16 title, body;
+  std::u16string title, body;
   if (!GetRemovalConfirmationText(index, &title, &body))
     return false;
 
diff --git a/chrome/browser/autofill/autofill_keyboard_accessory_adapter.h b/chrome/browser/autofill/autofill_keyboard_accessory_adapter.h
index fb4a0fd..a00d338 100644
--- a/chrome/browser/autofill/autofill_keyboard_accessory_adapter.h
+++ b/chrome/browser/autofill/autofill_keyboard_accessory_adapter.h
@@ -45,8 +45,8 @@
     virtual void Show() = 0;
 
     // Ask to confirm a deletion. Triggers the callback upon confirmation.
-    virtual void ConfirmDeletion(const base::string16& confirmation_title,
-                                 const base::string16& confirmation_body,
+    virtual void ConfirmDeletion(const std::u16string& confirmation_title,
+                                 const std::u16string& confirmation_body,
                                  base::OnceClosure confirm_deletion) = 0;
   };
 
@@ -68,11 +68,11 @@
   void AcceptSuggestion(int index) override;
   int GetLineCount() const override;
   const autofill::Suggestion& GetSuggestionAt(int row) const override;
-  const base::string16& GetSuggestionValueAt(int row) const override;
-  const base::string16& GetSuggestionLabelAt(int row) const override;
+  const std::u16string& GetSuggestionValueAt(int row) const override;
+  const std::u16string& GetSuggestionLabelAt(int row) const override;
   bool GetRemovalConfirmationText(int index,
-                                  base::string16* title,
-                                  base::string16* body) override;
+                                  std::u16string* title,
+                                  std::u16string* body) override;
   bool RemoveSuggestion(int index) override;
   void SetSelectedLine(base::Optional<int> selected_line) override;
   base::Optional<int> selected_line() const override;
@@ -98,7 +98,7 @@
   std::unique_ptr<AutofillKeyboardAccessoryAdapter::AccessoryView> view_;
 
   // The labels to be used for the input chips.
-  std::vector<base::string16> labels_;
+  std::vector<std::u16string> labels_;
 
   // Position that the front element has in the suggestion list returned by
   // controller_. It is used to determine the offset suggestions.
diff --git a/chrome/browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc b/chrome/browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc
index db79b31..97a91b3 100644
--- a/chrome/browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc
+++ b/chrome/browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc
@@ -41,9 +41,10 @@
   MOCK_METHOD0(Hide, void());
   MOCK_METHOD0(Show, void());
   MOCK_METHOD3(ConfirmDeletion,
-               void(const base::string16&,
-                    const base::string16&,
+               void(const std::u16string&,
+                    const std::u16string&,
                     base::OnceClosure));
+
  private:
   DISALLOW_COPY_AND_ASSIGN(MockAccessoryView);
 };
@@ -179,7 +180,7 @@
 
   // The 1st item is usually not visible (something like clear form) and has an
   // empty label. But it needs to be handled since UI might ask for it anyway.
-  EXPECT_EQ(adapter_as_controller()->GetSuggestionLabelAt(0), base::string16());
+  EXPECT_EQ(adapter_as_controller()->GetSuggestionLabelAt(0), std::u16string());
 
   // If there is a label, use it but cap at 8 bullets.
   EXPECT_EQ(adapter_as_controller()->GetSuggestionLabelAt(1),
diff --git a/chrome/browser/autofill/credit_card_accessory_controller_impl.cc b/chrome/browser/autofill/credit_card_accessory_controller_impl.cc
index 1fe51fad..dac6b901 100644
--- a/chrome/browser/autofill/credit_card_accessory_controller_impl.cc
+++ b/chrome/browser/autofill/credit_card_accessory_controller_impl.cc
@@ -28,13 +28,13 @@
 
 namespace {
 
-base::string16 GetTitle(bool has_suggestions) {
+std::u16string GetTitle(bool has_suggestions) {
   return l10n_util::GetStringUTF16(
       has_suggestions ? IDS_MANUAL_FILLING_CREDIT_CARD_SHEET_TITLE
                       : IDS_MANUAL_FILLING_CREDIT_CARD_SHEET_EMPTY_MESSAGE);
 }
 
-void AddSimpleField(const base::string16& data,
+void AddSimpleField(const std::u16string& data,
                     UserInfo* user_info,
                     bool enabled) {
   user_info->add_field(UserInfo::Field(data, data,
@@ -46,7 +46,7 @@
 
   UserInfo user_info(data->network());
 
-  base::string16 obfuscated_number = data->ObfuscatedLastFourDigits();
+  std::u16string obfuscated_number = data->ObfuscatedLastFourDigits();
   user_info.add_field(UserInfo::Field(obfuscated_number, obfuscated_number,
                                       data->guid(), /*is_password=*/false,
                                       enabled));
@@ -55,15 +55,15 @@
     AddSimpleField(data->Expiration2DigitMonthAsString(), &user_info, enabled);
     AddSimpleField(data->Expiration4DigitYearAsString(), &user_info, enabled);
   } else {
-    AddSimpleField(base::string16(), &user_info, enabled);
-    AddSimpleField(base::string16(), &user_info, enabled);
+    AddSimpleField(std::u16string(), &user_info, enabled);
+    AddSimpleField(std::u16string(), &user_info, enabled);
   }
 
   if (data->HasNameOnCard()) {
     AddSimpleField(data->GetRawInfo(autofill::CREDIT_CARD_NAME_FULL),
                    &user_info, enabled);
   } else {
-    AddSimpleField(base::string16(), &user_info, enabled);
+    AddSimpleField(std::u16string(), &user_info, enabled);
   }
 
   return user_info;
@@ -207,7 +207,7 @@
 void CreditCardAccessoryControllerImpl::OnCreditCardFetched(
     bool did_succeed,
     const CreditCard* credit_card,
-    const base::string16& cvc) {
+    const std::u16string& cvc) {
   if (!did_succeed)
     return;
   if (!web_contents_->GetFocusedFrame())
diff --git a/chrome/browser/autofill/credit_card_accessory_controller_impl.h b/chrome/browser/autofill/credit_card_accessory_controller_impl.h
index 643a3d7..a782b1c 100644
--- a/chrome/browser/autofill/credit_card_accessory_controller_impl.h
+++ b/chrome/browser/autofill/credit_card_accessory_controller_impl.h
@@ -40,7 +40,7 @@
   // CreditCardAccessManager::Accessor:
   void OnCreditCardFetched(bool did_succeed,
                            const CreditCard* credit_card,
-                           const base::string16& cvc) override;
+                           const std::u16string& cvc) override;
 
   static void CreateForWebContentsForTesting(
       content::WebContents* web_contents,
diff --git a/chrome/browser/autofill/credit_card_accessory_controller_impl_unittest.cc b/chrome/browser/autofill/credit_card_accessory_controller_impl_unittest.cc
index 2b975cee..7b4a564 100644
--- a/chrome/browser/autofill/credit_card_accessory_controller_impl_unittest.cc
+++ b/chrome/browser/autofill/credit_card_accessory_controller_impl_unittest.cc
@@ -27,7 +27,7 @@
 using testing::SaveArgPointee;
 
 constexpr char kExampleSite[] = "https://example.com";
-const base::string16 kFirstTwelveDigits = base::ASCIIToUTF16("411111111111");
+const std::u16string kFirstTwelveDigits = base::ASCIIToUTF16("411111111111");
 
 namespace autofill {
 namespace {
@@ -100,7 +100,7 @@
 
 class MockAutofillDriver : public TestAutofillDriver {
  public:
-  MOCK_METHOD1(RendererShouldFillFieldWithValue, void(const base::string16&));
+  MOCK_METHOD1(RendererShouldFillFieldWithValue, void(const std::u16string&));
 };
 
 class CreditCardAccessoryControllerTest
@@ -159,7 +159,7 @@
   autofill::CreditCard card = test::GetCreditCard();
   data_manager_.AddCreditCard(card);
   autofill::AccessorySheetData result(autofill::AccessoryTabType::CREDIT_CARDS,
-                                      base::string16());
+                                      std::u16string());
 
   EXPECT_CALL(mock_mf_controller_, RefreshSuggestions(_))
       .WillOnce(SaveArg<0>(&result));
@@ -186,7 +186,7 @@
   autofill::CreditCard card = test::GetCreditCard();
   data_manager_.AddCreditCard(card);
   autofill::AccessorySheetData result(autofill::AccessoryTabType::CREDIT_CARDS,
-                                      base::string16());
+                                      std::u16string());
   SetFormOrigin(GURL("http://insecure.http-site.com"));
 
   EXPECT_CALL(mock_mf_controller_, RefreshSuggestions(_))
@@ -233,7 +233,7 @@
 
   autofill::CreditCard card_to_unmask;
 
-  base::string16 expected_number = kFirstTwelveDigits + card.number();
+  std::u16string expected_number = kFirstTwelveDigits + card.number();
 
   EXPECT_CALL(mock_af_driver_,
               RendererShouldFillFieldWithValue(expected_number));
diff --git a/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc b/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc
index cea824b..22c2a57f 100644
--- a/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc
+++ b/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc
@@ -380,7 +380,7 @@
 TEST_F(ManualFillingControllerLegacyTest,
        OnFillingTriggeredFillsAndClosesSheet) {
   const char kTextToFill[] = "TextToFill";
-  const base::string16 text_to_fill(base::ASCIIToUTF16(kTextToFill));
+  const std::u16string text_to_fill(base::ASCIIToUTF16(kTextToFill));
   const autofill::UserInfo::Field field(text_to_fill, text_to_fill, false,
                                         true);
 
@@ -399,7 +399,7 @@
   controller()->RefreshSuggestions(filled_passwords_sheet());
 
   // Triggering a subsequent (independent) update must reuse the latest sheet.
-  AccessorySheetData cached(AccessoryTabType::PASSWORDS, base::string16());
+  AccessorySheetData cached(AccessoryTabType::PASSWORDS, std::u16string());
   EXPECT_CALL(*view(), OnItemsAvailable).WillOnce(SaveArg<0>(&cached));
   FocusFieldAndClearExpectations(FocusedFieldType::kFillablePasswordField);
   EXPECT_EQ(cached, filled_passwords_sheet());
diff --git a/chrome/browser/autofill/manual_filling_utils.cc b/chrome/browser/autofill/manual_filling_utils.cc
index 63a2f4ba..b0385833 100644
--- a/chrome/browser/autofill/manual_filling_utils.cc
+++ b/chrome/browser/autofill/manual_filling_utils.cc
@@ -11,7 +11,7 @@
 
 AccessorySheetData CreateAccessorySheetData(
     AccessoryTabType type,
-    base::string16 title,
+    std::u16string title,
     std::vector<UserInfo> user_info,
     std::vector<FooterCommand> footer_commands) {
   AccessorySheetData data(type, std::move(title));
diff --git a/chrome/browser/autofill/manual_filling_utils.h b/chrome/browser/autofill/manual_filling_utils.h
index dc392c0..6a11b41 100644
--- a/chrome/browser/autofill/manual_filling_utils.h
+++ b/chrome/browser/autofill/manual_filling_utils.h
@@ -15,7 +15,7 @@
 // UI.
 AccessorySheetData CreateAccessorySheetData(
     AccessoryTabType type,
-    base::string16 title,
+    std::u16string title,
     std::vector<UserInfo> user_info,
     std::vector<FooterCommand> footer_commands);
 
diff --git a/chrome/browser/autofill/mock_autofill_popup_controller.h b/chrome/browser/autofill/mock_autofill_popup_controller.h
index caff468..47d9b1f 100644
--- a/chrome/browser/autofill/mock_autofill_popup_controller.h
+++ b/chrome/browser/autofill/mock_autofill_popup_controller.h
@@ -54,11 +54,11 @@
     return suggestions_[row];
   }
 
-  const base::string16& GetSuggestionValueAt(int i) const override {
+  const std::u16string& GetSuggestionValueAt(int i) const override {
     return suggestions_[i].value;
   }
 
-  const base::string16& GetSuggestionLabelAt(int row) const override {
+  const std::u16string& GetSuggestionLabelAt(int row) const override {
     return suggestions_[row].label;
   }
 
@@ -67,7 +67,7 @@
   }
 
   MOCK_METHOD3(GetRemovalConfirmationText,
-               bool(int index, base::string16* title, base::string16* body));
+               bool(int index, std::u16string* title, std::u16string* body));
   MOCK_METHOD1(RemoveSuggestion, bool(int index));
   MOCK_METHOD1(SetSelectedLine, void(base::Optional<int> selected_line));
   MOCK_CONST_METHOD0(selected_line, base::Optional<int>());
diff --git a/chrome/browser/autofill/mock_credit_card_accessory_controller.h b/chrome/browser/autofill/mock_credit_card_accessory_controller.h
index 23dbe49..e0cd2d5d 100644
--- a/chrome/browser/autofill/mock_credit_card_accessory_controller.h
+++ b/chrome/browser/autofill/mock_credit_card_accessory_controller.h
@@ -42,7 +42,7 @@
   MOCK_METHOD(void, OnPersonalDataChanged, (), (override));
   MOCK_METHOD(void,
               OnCreditCardFetched,
-              (bool, const autofill::CreditCard*, const base::string16&),
+              (bool, const autofill::CreditCard*, const std::u16string&),
               (override));
 };
 
diff --git a/chrome/browser/autofill/mock_password_accessory_controller.h b/chrome/browser/autofill/mock_password_accessory_controller.h
index 989f776..a42382610 100644
--- a/chrome/browser/autofill/mock_password_accessory_controller.h
+++ b/chrome/browser/autofill/mock_password_accessory_controller.h
@@ -23,7 +23,7 @@
   MOCK_METHOD(
       void,
       SavePasswordsForOrigin,
-      ((const std::map<base::string16, const password_manager::PasswordForm*>&),
+      ((const std::map<std::u16string, const password_manager::PasswordForm*>&),
        (const url::Origin&)));
   MOCK_METHOD(void,
               RefreshSuggestionsForField,
diff --git a/chrome/browser/background/background_contents_service.cc b/chrome/browser/background/background_contents_service.cc
index e650de0..19eb67e 100644
--- a/chrome/browser/background/background_contents_service.cc
+++ b/chrome/browser/background/background_contents_service.cc
@@ -92,7 +92,7 @@
         extension_id_(extension->id()) {}
 
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override {
+             const base::Optional<std::u16string>& reply) override {
     // Pass arguments by value as HandleClick() might destroy *this.
     HandleClick(is_hosted_app_, is_platform_app_, extension_id_, profile_);
     // *this might be destroyed now, do not access any members anymore!
@@ -143,7 +143,7 @@
 
 void NotificationImageReady(const std::string extension_name,
                             const std::string extension_id,
-                            const base::string16 message,
+                            const std::u16string message,
                             scoped_refptr<CrashNotificationDelegate> delegate,
                             Profile* profile,
                             const gfx::Image& icon) {
@@ -161,8 +161,8 @@
   // the same origin when OnExtensionUnloaded() is called.
   std::string id = kCrashedNotificationPrefix + extension_id;
   message_center::Notification notification(
-      message_center::NOTIFICATION_TYPE_SIMPLE, id, base::string16(), message,
-      notification_icon, base::string16(), GURL("chrome://extension-crash"),
+      message_center::NOTIFICATION_TYPE_SIMPLE, id, std::u16string(), message,
+      notification_icon, std::u16string(), GURL("chrome://extension-crash"),
       message_center::NotifierId(message_center::NotifierType::SYSTEM_COMPONENT,
                                  kNotifierId),
       {}, delegate);
@@ -174,7 +174,7 @@
 // Show a popup notification balloon with a crash message for a given app/
 // extension.
 void ShowBalloon(const Extension* extension, Profile* profile) {
-  const base::string16 message = l10n_util::GetStringFUTF16(
+  const std::u16string message = l10n_util::GetStringFUTF16(
       extension->is_app() ? IDS_BACKGROUND_CRASHED_APP_BALLOON_MESSAGE
                           : IDS_BACKGROUND_CRASHED_EXTENSION_BALLOON_MESSAGE,
       base::UTF8ToUTF16(extension->name()));
diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
index fc4d026..7fe0ad97 100644
--- a/chrome/browser/background/background_mode_manager.cc
+++ b/chrome/browser/background/background_mode_manager.cc
@@ -244,11 +244,11 @@
 }
 
 void BackgroundModeManager::BackgroundModeData::SetName(
-    const base::string16& new_profile_name) {
+    const std::u16string& new_profile_name) {
   name_ = new_profile_name;
 }
 
-base::string16 BackgroundModeManager::BackgroundModeData::name() {
+std::u16string BackgroundModeManager::BackgroundModeData::name() {
   return name_;
 }
 
@@ -381,7 +381,7 @@
   background_mode_data_[profile] = std::move(bmd);
 
   // Initially set the name for this background mode data.
-  base::string16 name = l10n_util::GetStringUTF16(IDS_PROFILES_DEFAULT_NAME);
+  std::u16string name = l10n_util::GetStringUTF16(IDS_PROFILES_DEFAULT_NAME);
   ProfileAttributesEntry* entry =
       profile_storage_->GetProfileAttributesWithPath(profile->GetPath());
   if (entry) {
@@ -516,7 +516,7 @@
 
   // Get the new apps (if any) and process them.
   std::set<const extensions::Extension*> new_apps = bmd->GetNewBackgroundApps();
-  std::vector<base::string16> new_names;
+  std::vector<std::u16string> new_names;
   for (auto* app : new_apps)
     new_names.push_back(base::UTF8ToUTF16(app->name()));
   OnClientsChanged(profile, new_names);
@@ -528,7 +528,7 @@
   ProfileAttributesEntry* entry =
       profile_storage_->GetProfileAttributesWithPath(profile_path);
   DCHECK(entry);
-  base::string16 profile_name = entry->GetName();
+  std::u16string profile_name = entry->GetName();
   // At this point, the profile should be registered with the background mode
   // manager, but when it's actually added to the ProfileAttributesStorage is
   // when its name is set so we need up to update that with the
@@ -547,7 +547,7 @@
   ProfileAttributesEntry* entry =
       profile_storage_->GetProfileAttributesWithPath(profile_path);
   DCHECK(entry);
-  base::string16 profile_name = entry->GetName();
+  std::u16string profile_name = entry->GetName();
   // Remove the profile from our map of profiles.
   auto it = GetBackgroundModeIterator(profile_name);
   // If a profile isn't running a background app, it may not be in the map.
@@ -566,11 +566,11 @@
 
 void BackgroundModeManager::OnProfileNameChanged(
     const base::FilePath& profile_path,
-    const base::string16& old_profile_name) {
+    const std::u16string& old_profile_name) {
   ProfileAttributesEntry* entry =
       profile_storage_->GetProfileAttributesWithPath(profile_path);
   DCHECK(entry);
-  base::string16 new_profile_name = entry->GetName();
+  std::u16string new_profile_name = entry->GetName();
   BackgroundModeInfoMap::const_iterator it =
       GetBackgroundModeIterator(old_profile_name);
   // We check that the returned iterator is valid due to unittests, but really
@@ -766,7 +766,7 @@
 
 void BackgroundModeManager::OnClientsChanged(
     const Profile* profile,
-    const std::vector<base::string16>& new_client_names) {
+    const std::vector<std::u16string>& new_client_names) {
   DCHECK(IsBackgroundModePrefEnabled());
 
   // Update the ProfileAttributesStorage with the fact whether background
@@ -832,7 +832,7 @@
 }
 
 void BackgroundModeManager::OnBackgroundClientInstalled(
-    const base::string16& name) {
+    const std::u16string& name) {
   // Background mode is disabled - don't do anything.
   if (!IsBackgroundModePrefEnabled())
     return;
@@ -1010,7 +1010,7 @@
 
 BackgroundModeManager::BackgroundModeInfoMap::iterator
 BackgroundModeManager::GetBackgroundModeIterator(
-    const base::string16& profile_name) {
+    const std::u16string& profile_name) {
   auto profile_it = background_mode_data_.end();
   for (auto it = background_mode_data_.begin();
        it != background_mode_data_.end(); ++it) {
diff --git a/chrome/browser/background/background_mode_manager.h b/chrome/browser/background/background_mode_manager.h
index c288241..4a517bd 100644
--- a/chrome/browser/background/background_mode_manager.h
+++ b/chrome/browser/background/background_mode_manager.h
@@ -200,11 +200,11 @@
 
     // Set the name associated with this background mode data for displaying in
     // the status tray.
-    void SetName(const base::string16& new_profile_name);
+    void SetName(const std::u16string& new_profile_name);
 
     // The name associated with this background mode data. This should match
     // the name in the ProfileAttributesStorage for this profile.
-    base::string16 name();
+    std::u16string name();
 
     // Used for sorting BackgroundModeData*s.
     static bool BackgroundModeDataCompare(const BackgroundModeData* bmd1,
@@ -236,7 +236,7 @@
     std::unique_ptr<BackgroundApplicationListModel> applications_;
 
     // Name associated with this profile which is used to label its submenu.
-    base::string16 name_;
+    std::u16string name_;
 
     // The profile associated with this background app data.
     Profile* profile_;
@@ -279,7 +279,7 @@
   void OnProfileAdded(const base::FilePath& profile_path) override;
   void OnProfileWillBeRemoved(const base::FilePath& profile_path) override;
   void OnProfileNameChanged(const base::FilePath& profile_path,
-                            const base::string16& old_profile_name) override;
+                            const std::u16string& old_profile_name) override;
 
   // Overrides from StatusIconMenuModel::Delegate implementation.
   void ExecuteCommand(int command_id, int event_flags) override;
@@ -292,11 +292,11 @@
   // the ProfileAttributesStorage if needed. If |new_client_names| is not empty
   // the user will be notified about the added client(s).
   void OnClientsChanged(const Profile* profile,
-                        const std::vector<base::string16>& new_client_names);
+                        const std::vector<std::u16string>& new_client_names);
 
   // Invoked when a background client is installed so we can ensure that
   // launch-on-startup is enabled if appropriate.
-  void OnBackgroundClientInstalled(const base::string16& name);
+  void OnBackgroundClientInstalled(const std::u16string& name);
 
   // Update whether Chrome should be launched on startup, depending on whether
   // |this| has any persistent background clients.
@@ -308,7 +308,7 @@
 
   // Invoked when a client is installed so we can display a platform-specific
   // notification.
-  virtual void DisplayClientInstalledNotification(const base::string16& name);
+  virtual void DisplayClientInstalledNotification(const std::u16string& name);
 
   // Invoked to put Chrome in KeepAlive mode - chrome runs in the background
   // and has a status bar icon.
@@ -361,7 +361,7 @@
   // This should not be used to iterate over the background mode data. It is
   // used to efficiently delete an item from the background mode data map.
   BackgroundModeInfoMap::iterator GetBackgroundModeIterator(
-      const base::string16& profile_name);
+      const std::u16string& profile_name);
 
   // Returns true if the "Let chrome run in the background" pref is checked.
   // (virtual to allow overriding in tests).
diff --git a/chrome/browser/background/background_mode_manager_aura.cc b/chrome/browser/background/background_mode_manager_aura.cc
index 7a88d95..6d4137f 100644
--- a/chrome/browser/background/background_mode_manager_aura.cc
+++ b/chrome/browser/background/background_mode_manager_aura.cc
@@ -13,7 +13,7 @@
 }
 
 void BackgroundModeManager::DisplayClientInstalledNotification(
-    const base::string16& name) {
+    const std::u16string& name) {
   NOTIMPLEMENTED();
 }
 
diff --git a/chrome/browser/background/background_mode_manager_chromeos.cc b/chrome/browser/background/background_mode_manager_chromeos.cc
index 755be60..05099d8 100644
--- a/chrome/browser/background/background_mode_manager_chromeos.cc
+++ b/chrome/browser/background/background_mode_manager_chromeos.cc
@@ -11,7 +11,7 @@
 }
 
 void BackgroundModeManager::DisplayClientInstalledNotification(
-    const base::string16& name) {
+    const std::u16string& name) {
   // No need to display anything on ChromeOS because all extensions run all
   // the time anyway.
 }
diff --git a/chrome/browser/background/background_mode_manager_mac.mm b/chrome/browser/background/background_mode_manager_mac.mm
index 279113e..46e6d1e7 100644
--- a/chrome/browser/background/background_mode_manager_mac.mm
+++ b/chrome/browser/background/background_mode_manager_mac.mm
@@ -154,7 +154,7 @@
 }
 
 void BackgroundModeManager::DisplayClientInstalledNotification(
-    const base::string16& name) {
+    const std::u16string& name) {
   // TODO(atwilson): Display a platform-appropriate notification here.
   // http://crbug.com/74970
 }
diff --git a/chrome/browser/background/background_mode_manager_unittest.cc b/chrome/browser/background/background_mode_manager_unittest.cc
index 4f4a35f..b3e0a7a 100644
--- a/chrome/browser/background/background_mode_manager_unittest.cc
+++ b/chrome/browser/background/background_mode_manager_unittest.cc
@@ -83,7 +83,7 @@
   MOCK_METHOD1(EnableLaunchOnStartup, void(bool should_launch));
 
   // TODO: Use strict-mocking rather than keeping state through overrides below.
-  void DisplayClientInstalledNotification(const base::string16& name) override {
+  void DisplayClientInstalledNotification(const std::u16string& name) override {
     has_shown_balloon_ = true;
   }
   void CreateStatusTrayIcon() override { have_status_tray_ = true; }
@@ -105,10 +105,10 @@
  public:
   TestStatusIcon() {}
   void SetImage(const gfx::ImageSkia& image) override {}
-  void SetToolTip(const base::string16& tool_tip) override {}
+  void SetToolTip(const std::u16string& tool_tip) override {}
   void DisplayBalloon(const gfx::ImageSkia& icon,
-                      const base::string16& title,
-                      const base::string16& contents,
+                      const std::u16string& title,
+                      const std::u16string& contents,
                       const message_center::NotifierId& notifier_id) override {}
   void UpdatePlatformContextMenu(StatusIconMenuModel* menu) override {}
 
diff --git a/chrome/browser/background/background_mode_manager_win.cc b/chrome/browser/background/background_mode_manager_win.cc
index 5a1348ac..59992d8 100644
--- a/chrome/browser/background/background_mode_manager_win.cc
+++ b/chrome/browser/background/background_mode_manager_win.cc
@@ -37,7 +37,7 @@
 }
 
 void BackgroundModeManager::DisplayClientInstalledNotification(
-    const base::string16& name) {
+    const std::u16string& name) {
   // Create a status tray notification balloon explaining to the user what has
   // been installed.
   CreateStatusTrayIcon();
diff --git a/chrome/browser/banners/android/chrome_app_banner_manager_android.cc b/chrome/browser/banners/android/chrome_app_banner_manager_android.cc
index f9c8cf2f..2e2cc68 100644
--- a/chrome/browser/banners/android/chrome_app_banner_manager_android.cc
+++ b/chrome/browser/banners/android/chrome_app_banner_manager_android.cc
@@ -116,7 +116,7 @@
   return PwaBottomSheetController::MaybeShow(
       web_contents(), GetAppName(), primary_icon_, has_maskable_primary_icon_,
       manifest_.start_url, screenshots_,
-      manifest_.description.value_or(base::string16()), expand_sheet,
+      manifest_.description.value_or(std::u16string()), expand_sheet,
       std::move(a2hs_params),
       base::BindRepeating(&ChromeAppBannerManagerAndroid::OnInstallEvent,
                           ChromeAppBannerManagerAndroid::GetAndroidWeakPtr()));
diff --git a/chrome/browser/banners/app_banner_manager_browsertest.cc b/chrome/browser/banners/app_banner_manager_browsertest.cc
index e461ca3a..c645c0af 100644
--- a/chrome/browser/banners/app_banner_manager_browsertest.cc
+++ b/chrome/browser/banners/app_banner_manager_browsertest.cc
@@ -130,16 +130,16 @@
   void InvalidateWeakPtrs() override { weak_factory_.InvalidateWeakPtrs(); }
 
   bool IsSupportedNonWebAppPlatform(
-      const base::string16& platform) const override {
+      const std::u16string& platform) const override {
     return base::EqualsASCII(platform, "chrome_web_store");
   }
 
   bool IsRelatedNonWebAppInstalled(
       const blink::Manifest::RelatedApplication& related_app) const override {
     // Corresponds to the id listed in manifest_listing_related_chrome_app.json.
-    return base::EqualsASCII(related_app.platform.value_or(base::string16()),
+    return base::EqualsASCII(related_app.platform.value_or(std::u16string()),
                              "chrome_web_store") &&
-           base::EqualsASCII(related_app.id.value_or(base::string16()),
+           base::EqualsASCII(related_app.id.value_or(std::u16string()),
                              "installed-extension-id");
   }
 
diff --git a/chrome/browser/banners/app_banner_manager_desktop.cc b/chrome/browser/banners/app_banner_manager_desktop.cc
index 6a5904d..02ad1a249 100644
--- a/chrome/browser/banners/app_banner_manager_desktop.cc
+++ b/chrome/browser/banners/app_banner_manager_desktop.cc
@@ -101,7 +101,7 @@
 }
 
 bool AppBannerManagerDesktop::IsSupportedNonWebAppPlatform(
-    const base::string16& platform) const {
+    const std::u16string& platform) const {
   if (base::EqualsASCII(platform, kPlatformChromeWebStore))
     return true;
 
@@ -124,7 +124,7 @@
   }
 
   const std::string id = base::UTF16ToUTF8(*related_app.id);
-  const base::string16& platform = *related_app.platform;
+  const std::u16string& platform = *related_app.platform;
 
   if (base::EqualsASCII(platform, kPlatformChromeWebStore)) {
     return extension_registry_->GetExtensionById(
diff --git a/chrome/browser/banners/app_banner_manager_desktop.h b/chrome/browser/banners/app_banner_manager_desktop.h
index 0814f2ad..bdaa58053 100644
--- a/chrome/browser/banners/app_banner_manager_desktop.h
+++ b/chrome/browser/banners/app_banner_manager_desktop.h
@@ -59,7 +59,7 @@
   base::WeakPtr<AppBannerManager> GetWeakPtr() override;
   void InvalidateWeakPtrs() override;
   bool IsSupportedNonWebAppPlatform(
-      const base::string16& platform) const override;
+      const std::u16string& platform) const override;
   bool IsRelatedNonWebAppInstalled(
       const blink::Manifest::RelatedApplication& related_app) const override;
   bool IsWebAppConsideredInstalled() const override;
diff --git a/chrome/browser/banners/app_banner_manager_desktop_browsertest.cc b/chrome/browser/banners/app_banner_manager_desktop_browsertest.cc
index 31ca38f..e2808252 100644
--- a/chrome/browser/banners/app_banner_manager_desktop_browsertest.cc
+++ b/chrome/browser/banners/app_banner_manager_desktop_browsertest.cc
@@ -97,7 +97,7 @@
   }
 
   // Ensure that the userChoice promise resolves.
-  const base::string16 title = base::ASCIIToUTF16("Got userChoice: accepted");
+  const std::u16string title = base::ASCIIToUTF16("Got userChoice: accepted");
   content::TitleWatcher watcher(web_contents, title);
   EXPECT_EQ(title, watcher.WaitAndGetTitle());
 
@@ -147,7 +147,7 @@
   }
 
   // Ensure that the appinstalled event fires.
-  const base::string16 title =
+  const std::u16string title =
       base::ASCIIToUTF16("Got appinstalled: listener, attr");
   content::TitleWatcher watcher(web_contents, title);
   EXPECT_EQ(title, watcher.WaitAndGetTitle());
@@ -392,7 +392,7 @@
   }
 
   // Ensure that the userChoice promise resolves.
-  const base::string16 title = base::ASCIIToUTF16("Got userChoice: accepted");
+  const std::u16string title = base::ASCIIToUTF16("Got userChoice: accepted");
   content::TitleWatcher watcher(web_contents, title);
   EXPECT_EQ(title, watcher.WaitAndGetTitle());
 
diff --git a/chrome/browser/bluetooth/bluetooth_chooser_context.cc b/chrome/browser/bluetooth/bluetooth_chooser_context.cc
index 150ee14..96b8ee6 100644
--- a/chrome/browser/bluetooth/bluetooth_chooser_context.cc
+++ b/chrome/browser/bluetooth/bluetooth_chooser_context.cc
@@ -309,7 +309,7 @@
          object.FindDictKey(kServicesKey);
 }
 
-base::string16 BluetoothChooserContext::GetObjectDisplayName(
+std::u16string BluetoothChooserContext::GetObjectDisplayName(
     const base::Value& object) {
   return base::UTF8ToUTF16(*object.FindStringKey(kDeviceNameKey));
 }
diff --git a/chrome/browser/bluetooth/bluetooth_chooser_context.h b/chrome/browser/bluetooth/bluetooth_chooser_context.h
index 4b49202..4d034d62 100644
--- a/chrome/browser/bluetooth/bluetooth_chooser_context.h
+++ b/chrome/browser/bluetooth/bluetooth_chooser_context.h
@@ -79,7 +79,7 @@
 
   // ChooserContextBase;
   bool IsValidObject(const base::Value& object) override;
-  base::string16 GetObjectDisplayName(const base::Value& object) override;
+  std::u16string GetObjectDisplayName(const base::Value& object) override;
 
  private:
   base::Value FindDeviceObject(const url::Origin& origin,
diff --git a/chrome/browser/bluetooth/web_bluetooth_browsertest.cc b/chrome/browser/bluetooth/web_bluetooth_browsertest.cc
index 016459d..9c7cfef 100644
--- a/chrome/browser/bluetooth/web_bluetooth_browsertest.cc
+++ b/chrome/browser/bluetooth/web_bluetooth_browsertest.cc
@@ -199,7 +199,7 @@
   // content::BluetoothChooser implementation:
   void AddOrUpdateDevice(const std::string& device_id,
                          bool should_update_name,
-                         const base::string16& device_name,
+                         const std::u16string& device_name,
                          bool is_gatt_connected,
                          bool is_paired,
                          int signal_strength_level) override {
diff --git a/chrome/browser/bookmarks/bookmark_html_writer_unittest.cc b/chrome/browser/bookmarks/bookmark_html_writer_unittest.cc
index 542e602e..803513a 100644
--- a/chrome/browser/bookmarks/bookmark_html_writer_unittest.cc
+++ b/chrome/browser/bookmarks/bookmark_html_writer_unittest.cc
@@ -66,8 +66,8 @@
 
   // Converts an ImportedBookmarkEntry to a string suitable for assertion
   // testing.
-  base::string16 BookmarkEntryToString(const ImportedBookmarkEntry& entry) {
-    base::string16 result;
+  std::u16string BookmarkEntryToString(const ImportedBookmarkEntry& entry) {
+    std::u16string result;
     result.append(base::ASCIIToUTF16("on_toolbar="));
     if (entry.in_toolbar)
       result.append(base::ASCIIToUTF16("true"));
@@ -93,13 +93,13 @@
   }
 
   // Creates a set of bookmark values to a string for assertion testing.
-  base::string16 BookmarkValuesToString(bool on_toolbar,
-                                  const GURL& url,
-                                  const base::string16& title,
-                                  base::Time creation_time,
-                                  const base::string16& f1,
-                                  const base::string16& f2,
-                                  const base::string16& f3) {
+  std::u16string BookmarkValuesToString(bool on_toolbar,
+                                        const GURL& url,
+                                        const std::u16string& title,
+                                        base::Time creation_time,
+                                        const std::u16string& f1,
+                                        const std::u16string& f2,
+                                        const std::u16string& f3) {
     ImportedBookmarkEntry entry;
     entry.in_toolbar = on_toolbar;
     entry.url = url;
@@ -119,11 +119,11 @@
   void AssertBookmarkEntryEquals(const ImportedBookmarkEntry& entry,
                                  bool on_toolbar,
                                  const GURL& url,
-                                 const base::string16& title,
+                                 const std::u16string& title,
                                  base::Time creation_time,
-                                 const base::string16& f1,
-                                 const base::string16& f2,
-                                 const base::string16& f3) {
+                                 const std::u16string& f1,
+                                 const std::u16string& f2,
+                                 const std::u16string& f3) {
     EXPECT_EQ(BookmarkValuesToString(on_toolbar, url, title, creation_time,
                                      f1, f2, f3),
               BookmarkEntryToString(entry));
@@ -194,15 +194,15 @@
   // Mobile
   //   url1
   //   <bookmark without a title.>
-  base::string16 f1_title = base::ASCIIToUTF16("F\"&;<1\"");
-  base::string16 f2_title = base::ASCIIToUTF16("F2");
-  base::string16 f3_title = base::ASCIIToUTF16("F 3");
-  base::string16 f4_title = base::ASCIIToUTF16("F4");
-  base::string16 url1_title = base::ASCIIToUTF16("url 1");
-  base::string16 url2_title = base::ASCIIToUTF16("url&2");
-  base::string16 url3_title = base::ASCIIToUTF16("url\"3");
-  base::string16 url4_title = base::ASCIIToUTF16("url\"&;");
-  base::string16 unnamed_bookmark_title = base::ASCIIToUTF16("");
+  std::u16string f1_title = base::ASCIIToUTF16("F\"&;<1\"");
+  std::u16string f2_title = base::ASCIIToUTF16("F2");
+  std::u16string f3_title = base::ASCIIToUTF16("F 3");
+  std::u16string f4_title = base::ASCIIToUTF16("F4");
+  std::u16string url1_title = base::ASCIIToUTF16("url 1");
+  std::u16string url2_title = base::ASCIIToUTF16("url&2");
+  std::u16string url3_title = base::ASCIIToUTF16("url\"3");
+  std::u16string url4_title = base::ASCIIToUTF16("url\"&;");
+  std::u16string unnamed_bookmark_title = base::ASCIIToUTF16("");
   GURL url1("http://url1");
   GURL url1_favicon("http://url1/icon.ico");
   GURL url2("http://url2");
@@ -282,31 +282,30 @@
   // Verify we got back what we wrote.
   ASSERT_EQ(9U, parsed_bookmarks.size());
   // Windows and ChromeOS builds use Sentence case.
-  base::string16 bookmark_folder_name =
+  std::u16string bookmark_folder_name =
       l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_FOLDER_NAME);
   AssertBookmarkEntryEquals(parsed_bookmarks[0], true, url1, url1_title, t1,
-                            bookmark_folder_name, f1_title, base::string16());
+                            bookmark_folder_name, f1_title, std::u16string());
   AssertBookmarkEntryEquals(parsed_bookmarks[1], true, url2, url2_title, t2,
                             bookmark_folder_name, f1_title, f2_title);
   AssertBookmarkEntryEquals(parsed_bookmarks[2], true, url3, url3_title, t3,
-                            bookmark_folder_name, base::string16(),
-                            base::string16());
+                            bookmark_folder_name, std::u16string(),
+                            std::u16string());
   AssertBookmarkEntryEquals(parsed_bookmarks[3], true, url4, url4_title, t4,
-                            bookmark_folder_name, base::string16(),
-                            base::string16());
+                            bookmark_folder_name, std::u16string(),
+                            std::u16string());
   AssertBookmarkEntryEquals(parsed_bookmarks[4], false, url1, url1_title, t1,
-                            base::string16(), base::string16(),
-                            base::string16());
+                            std::u16string(), std::u16string(),
+                            std::u16string());
   AssertBookmarkEntryEquals(parsed_bookmarks[5], false, url2, url2_title, t2,
-                            base::string16(), base::string16(),
-                            base::string16());
+                            std::u16string(), std::u16string(),
+                            std::u16string());
   AssertBookmarkEntryEquals(parsed_bookmarks[6], false, url1, url1_title, t1,
-                            f3_title, f4_title, base::string16());
+                            f3_title, f4_title, std::u16string());
   AssertBookmarkEntryEquals(parsed_bookmarks[7], false, url1, url1_title, t1,
-                            base::string16(), base::string16(),
-                            base::string16());
+                            std::u16string(), std::u16string(),
+                            std::u16string());
   AssertBookmarkEntryEquals(parsed_bookmarks[8], false, unnamed_bookmark_url,
-                            unnamed_bookmark_title, t2,
-                            base::string16(), base::string16(),
-                            base::string16());
+                            unnamed_bookmark_title, t2, std::u16string(),
+                            std::u16string(), std::u16string());
 }
diff --git a/chrome/browser/bookmarks/managed_bookmark_service_unittest.cc b/chrome/browser/bookmarks/managed_bookmark_service_unittest.cc
index a6c625f..873f45a 100644
--- a/chrome/browser/bookmarks/managed_bookmark_service_unittest.cc
+++ b/chrome/browser/bookmarks/managed_bookmark_service_unittest.cc
@@ -141,7 +141,7 @@
 
   static bool NodeMatchesValue(const BookmarkNode* node,
                                const base::DictionaryValue* dict) {
-    base::string16 title;
+    std::u16string title;
     if (!dict->GetString("name", &title) || node->GetTitle() != title)
       return false;
 
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc
index a424e2f..76549fd 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_browsertest.cc
@@ -287,7 +287,7 @@
     base::RunLoop run_loop;
     base::CancelableTaskTracker tracker;
     history_service()->QueryHistory(
-        base::string16(), history::QueryOptions(),
+        std::u16string(), history::QueryOptions(),
         base::BindLambdaForTesting([&](history::QueryResults results) {
           history_query_results = std::move(results);
           run_loop.QuitClosure().Run();
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
index a70e4310..af38350 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
@@ -634,7 +634,7 @@
     CreateCrashUploadList()->Clear(delete_begin_, delete_end_);
 
     FindBarStateFactory::GetForBrowserContext(profile_)->SetLastSearchText(
-        base::string16());
+        std::u16string());
   }
 
   //////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
index 3ac21cdd..d82fb3fc 100644
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -261,7 +261,7 @@
 class TestSearchEngineDelegate
     : public SearchPermissionsService::SearchEngineDelegate {
  public:
-  base::string16 GetDSEName() override { return base::string16(); }
+  std::u16string GetDSEName() override { return std::u16string(); }
 
   url::Origin GetDSEOrigin() override {
     return url::Origin::Create(DSEOrigin());
diff --git a/chrome/browser/browsing_data/cookies_tree_model.cc b/chrome/browser/browsing_data/cookies_tree_model.cc
index 2a59e7b..eef5efd 100644
--- a/chrome/browser/browsing_data/cookies_tree_model.cc
+++ b/chrome/browser/browsing_data/cookies_tree_model.cc
@@ -916,7 +916,7 @@
 
 class CookieTreeCollectionNode : public CookieTreeNode {
  public:
-  explicit CookieTreeCollectionNode(const base::string16& title)
+  explicit CookieTreeCollectionNode(const std::u16string& title)
       : CookieTreeNode(title) {}
 
   ~CookieTreeCollectionNode() override = default;
@@ -1167,7 +1167,7 @@
 // CookieTreeHostNode, public:
 
 // static
-base::string16 CookieTreeHostNode::TitleForUrl(const GURL& url) {
+std::u16string CookieTreeHostNode::TitleForUrl(const GURL& url) {
   const std::string file_origin_node_name(
       std::string(url::kFileScheme) + url::kStandardSchemeSeparator);
   return base::UTF8ToUTF16(url.SchemeIsFile()
@@ -1449,7 +1449,7 @@
     DeleteCookieNode(parent_node);
 }
 
-void CookiesTreeModel::UpdateSearchResults(const base::string16& filter) {
+void CookiesTreeModel::UpdateSearchResults(const std::u16string& filter) {
   CookieTreeNode* root = GetRoot();
   SetBatchExpectation(1, true);
   ScopedBatchUpdateNotifier notifier(this, root);
@@ -1501,73 +1501,73 @@
 
 void CookiesTreeModel::PopulateAppCacheInfo(LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateAppCacheInfoWithFilter(container, &notifier, base::string16());
+  PopulateAppCacheInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateCookieInfo(LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateCookieInfoWithFilter(container, &notifier, base::string16());
+  PopulateCookieInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateDatabaseInfo(LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateDatabaseInfoWithFilter(container, &notifier, base::string16());
+  PopulateDatabaseInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateLocalStorageInfo(LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateLocalStorageInfoWithFilter(container, &notifier, base::string16());
+  PopulateLocalStorageInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateSessionStorageInfo(
       LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateSessionStorageInfoWithFilter(container, &notifier, base::string16());
+  PopulateSessionStorageInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateIndexedDBInfo(LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateIndexedDBInfoWithFilter(container, &notifier, base::string16());
+  PopulateIndexedDBInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateFileSystemInfo(LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateFileSystemInfoWithFilter(container, &notifier, base::string16());
+  PopulateFileSystemInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateQuotaInfo(LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateQuotaInfoWithFilter(container, &notifier, base::string16());
+  PopulateQuotaInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateServiceWorkerUsageInfo(
     LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateServiceWorkerUsageInfoWithFilter(
-      container, &notifier, base::string16());
+  PopulateServiceWorkerUsageInfoWithFilter(container, &notifier,
+                                           std::u16string());
 }
 
 void CookiesTreeModel::PopulateSharedWorkerInfo(LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateSharedWorkerInfoWithFilter(container, &notifier, base::string16());
+  PopulateSharedWorkerInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateCacheStorageUsageInfo(
     LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
   PopulateCacheStorageUsageInfoWithFilter(container, &notifier,
-                                          base::string16());
+                                          std::u16string());
 }
 
 void CookiesTreeModel::PopulateMediaLicenseInfo(LocalDataContainer* container) {
   ScopedBatchUpdateNotifier notifier(this, GetRoot());
-  PopulateMediaLicenseInfoWithFilter(container, &notifier, base::string16());
+  PopulateMediaLicenseInfoWithFilter(container, &notifier, std::u16string());
 }
 
 void CookiesTreeModel::PopulateAppCacheInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->appcache_info_list_.empty())
@@ -1578,7 +1578,7 @@
        it != container->appcache_info_list_.end(); ++it) {
     const GURL url = it->origin.GetURL();
     if (filter.empty() || (CookieTreeHostNode::TitleForUrl(url).find(filter) !=
-                           base::string16::npos)) {
+                           std::u16string::npos)) {
       CookieTreeHostNode* host_node = root->GetOrCreateHostNode(url);
       CookieTreeAppCachesNode* appcaches_node =
           host_node->GetOrCreateAppCachesNode();
@@ -1591,7 +1591,7 @@
 void CookiesTreeModel::PopulateCookieInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   notifier->StartBatchUpdate();
@@ -1606,8 +1606,8 @@
                       : net::cookie_util::CookieOriginToURL(
                             it->Domain(), false /* is_https */);
 
-    if (filter.empty() || (CookieTreeHostNode::TitleForUrl(source)
-                               .find(filter) != base::string16::npos)) {
+    if (filter.empty() || (CookieTreeHostNode::TitleForUrl(source).find(
+                               filter) != std::u16string::npos)) {
       CookieTreeHostNode* host_node = root->GetOrCreateHostNode(source);
       CookieTreeCookiesNode* cookies_node =
           host_node->GetOrCreateCookiesNode();
@@ -1619,7 +1619,7 @@
 void CookiesTreeModel::PopulateDatabaseInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->database_info_list_.empty())
@@ -1630,7 +1630,7 @@
        database_info != container->database_info_list_.end(); ++database_info) {
     if (filter.empty() ||
         (CookieTreeHostNode::TitleForUrl(database_info->origin.GetURL())
-             .find(filter) != base::string16::npos)) {
+             .find(filter) != std::u16string::npos)) {
       CookieTreeHostNode* host_node =
           root->GetOrCreateHostNode(database_info->origin.GetURL());
       CookieTreeDatabasesNode* databases_node =
@@ -1644,7 +1644,7 @@
 void CookiesTreeModel::PopulateLocalStorageInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->local_storage_info_list_.empty())
@@ -1670,7 +1670,7 @@
 void CookiesTreeModel::PopulateSessionStorageInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->session_storage_info_list_.empty())
@@ -1683,8 +1683,8 @@
        ++session_storage_info) {
     const GURL& origin = session_storage_info->origin.GetURL();
 
-    if (filter.empty() || (CookieTreeHostNode::TitleForUrl(origin)
-                               .find(filter) != base::string16::npos)) {
+    if (filter.empty() || (CookieTreeHostNode::TitleForUrl(origin).find(
+                               filter) != std::u16string::npos)) {
       CookieTreeHostNode* host_node = root->GetOrCreateHostNode(origin);
       CookieTreeSessionStoragesNode* session_storages_node =
           host_node->GetOrCreateSessionStoragesNode();
@@ -1697,7 +1697,7 @@
 void CookiesTreeModel::PopulateIndexedDBInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->indexed_db_info_list_.empty())
@@ -1711,7 +1711,7 @@
 
     if (filter.empty() ||
         (CookieTreeHostNode::TitleForUrl(origin.GetURL()).find(filter) !=
-         base::string16::npos)) {
+         std::u16string::npos)) {
       CookieTreeHostNode* host_node =
           root->GetOrCreateHostNode(origin.GetURL());
       CookieTreeIndexedDBsNode* indexed_dbs_node =
@@ -1725,7 +1725,7 @@
 void CookiesTreeModel::PopulateServiceWorkerUsageInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->service_worker_info_list_.empty())
@@ -1739,7 +1739,7 @@
 
     if (filter.empty() ||
         (CookieTreeHostNode::TitleForUrl(origin.GetURL()).find(filter) !=
-         base::string16::npos)) {
+         std::u16string::npos)) {
       CookieTreeHostNode* host_node =
           root->GetOrCreateHostNode(origin.GetURL());
       CookieTreeServiceWorkersNode* service_workers_node =
@@ -1753,7 +1753,7 @@
 void CookiesTreeModel::PopulateSharedWorkerInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->shared_worker_info_list_.empty())
@@ -1766,7 +1766,7 @@
     const GURL& worker = shared_worker_info->worker;
 
     if (filter.empty() || (CookieTreeHostNode::TitleForUrl(worker).find(
-                               filter) != base::string16::npos)) {
+                               filter) != std::u16string::npos)) {
       CookieTreeHostNode* host_node = root->GetOrCreateHostNode(worker);
       CookieTreeSharedWorkersNode* shared_workers_node =
           host_node->GetOrCreateSharedWorkersNode();
@@ -1779,7 +1779,7 @@
 void CookiesTreeModel::PopulateCacheStorageUsageInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->cache_storage_info_list_.empty())
@@ -1793,7 +1793,7 @@
 
     if (filter.empty() ||
         (CookieTreeHostNode::TitleForUrl(origin.GetURL()).find(filter) !=
-         base::string16::npos)) {
+         std::u16string::npos)) {
       CookieTreeHostNode* host_node =
           root->GetOrCreateHostNode(origin.GetURL());
       CookieTreeCacheStoragesNode* cache_storages_node =
@@ -1807,7 +1807,7 @@
 void CookiesTreeModel::PopulateFileSystemInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->file_system_info_list_.empty())
@@ -1819,8 +1819,8 @@
        ++file_system_info) {
     GURL origin = file_system_info->origin.GetURL();
 
-    if (filter.empty() || (CookieTreeHostNode::TitleForUrl(origin)
-                               .find(filter) != base::string16::npos)) {
+    if (filter.empty() || (CookieTreeHostNode::TitleForUrl(origin).find(
+                               filter) != std::u16string::npos)) {
       CookieTreeHostNode* host_node = root->GetOrCreateHostNode(origin);
       CookieTreeFileSystemsNode* file_systems_node =
           host_node->GetOrCreateFileSystemsNode();
@@ -1833,7 +1833,7 @@
 void CookiesTreeModel::PopulateQuotaInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->quota_info_list_.empty())
@@ -1843,7 +1843,7 @@
   for (auto quota_info = container->quota_info_list_.begin();
        quota_info != container->quota_info_list_.end(); ++quota_info) {
     if (filter.empty() || (base::UTF8ToUTF16(quota_info->host).find(filter) !=
-                           base::string16::npos)) {
+                           std::u16string::npos)) {
       CookieTreeHostNode* host_node =
           root->GetOrCreateHostNode(GURL("http://" + quota_info->host));
       host_node->UpdateOrCreateQuotaNode(quota_info);
@@ -1854,7 +1854,7 @@
 void CookiesTreeModel::PopulateMediaLicenseInfoWithFilter(
     LocalDataContainer* container,
     ScopedBatchUpdateNotifier* notifier,
-    const base::string16& filter) {
+    const std::u16string& filter) {
   CookieTreeRootNode* root = static_cast<CookieTreeRootNode*>(GetRoot());
 
   if (container->media_license_info_list_.empty())
@@ -1867,7 +1867,7 @@
     GURL origin(media_license_info->origin);
 
     if (filter.empty() || (CookieTreeHostNode::TitleForUrl(origin).find(
-                               filter) != base::string16::npos)) {
+                               filter) != std::u16string::npos)) {
       CookieTreeHostNode* host_node = root->GetOrCreateHostNode(origin);
       CookieTreeMediaLicensesNode* media_licenses_node =
           host_node->GetOrCreateMediaLicensesNode();
diff --git a/chrome/browser/browsing_data/cookies_tree_model.h b/chrome/browser/browsing_data/cookies_tree_model.h
index 8c682344..fd0b3de 100644
--- a/chrome/browser/browsing_data/cookies_tree_model.h
+++ b/chrome/browser/browsing_data/cookies_tree_model.h
@@ -144,7 +144,7 @@
   };
 
   CookieTreeNode() {}
-  explicit CookieTreeNode(const base::string16& title)
+  explicit CookieTreeNode(const std::u16string& title)
       : ui::TreeNode<CookieTreeNode>(title) {}
   ~CookieTreeNode() override {}
 
@@ -203,7 +203,7 @@
 class CookieTreeHostNode : public CookieTreeNode {
  public:
   // Returns the host node's title to use for a given URL.
-  static base::string16 TitleForUrl(const GURL& url);
+  static std::u16string TitleForUrl(const GURL& url);
 
   explicit CookieTreeHostNode(const GURL& url);
   ~CookieTreeHostNode() override;
@@ -335,7 +335,7 @@
   void DeleteCookieNode(CookieTreeNode* cookie_node);
 
   // Filter the origins to only display matched results.
-  void UpdateSearchResults(const base::string16& filter);
+  void UpdateSearchResults(const std::u16string& filter);
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   // Returns the set of extensions which protect the data item represented by
@@ -410,42 +410,42 @@
 
   void PopulateAppCacheInfoWithFilter(LocalDataContainer* container,
                                       ScopedBatchUpdateNotifier* notifier,
-                                      const base::string16& filter);
+                                      const std::u16string& filter);
   void PopulateCookieInfoWithFilter(LocalDataContainer* container,
                                     ScopedBatchUpdateNotifier* notifier,
-                                    const base::string16& filter);
+                                    const std::u16string& filter);
   void PopulateDatabaseInfoWithFilter(LocalDataContainer* container,
                                       ScopedBatchUpdateNotifier* notifier,
-                                      const base::string16& filter);
+                                      const std::u16string& filter);
   void PopulateLocalStorageInfoWithFilter(LocalDataContainer* container,
                                           ScopedBatchUpdateNotifier* notifier,
-                                          const base::string16& filter);
+                                          const std::u16string& filter);
   void PopulateSessionStorageInfoWithFilter(LocalDataContainer* container,
                                             ScopedBatchUpdateNotifier* notifier,
-                                            const base::string16& filter);
+                                            const std::u16string& filter);
   void PopulateIndexedDBInfoWithFilter(LocalDataContainer* container,
                                        ScopedBatchUpdateNotifier* notifier,
-                                       const base::string16& filter);
+                                       const std::u16string& filter);
   void PopulateFileSystemInfoWithFilter(LocalDataContainer* container,
                                         ScopedBatchUpdateNotifier* notifier,
-                                        const base::string16& filter);
+                                        const std::u16string& filter);
   void PopulateQuotaInfoWithFilter(LocalDataContainer* container,
                                    ScopedBatchUpdateNotifier* notifier,
-                                   const base::string16& filter);
+                                   const std::u16string& filter);
   void PopulateServiceWorkerUsageInfoWithFilter(
       LocalDataContainer* container,
       ScopedBatchUpdateNotifier* notifier,
-      const base::string16& filter);
+      const std::u16string& filter);
   void PopulateSharedWorkerInfoWithFilter(LocalDataContainer* container,
                                           ScopedBatchUpdateNotifier* notifier,
-                                          const base::string16& filter);
+                                          const std::u16string& filter);
   void PopulateCacheStorageUsageInfoWithFilter(
       LocalDataContainer* container,
       ScopedBatchUpdateNotifier* notifier,
-      const base::string16& filter);
+      const std::u16string& filter);
   void PopulateMediaLicenseInfoWithFilter(LocalDataContainer* container,
                                           ScopedBatchUpdateNotifier* notifier,
-                                          const base::string16& filter);
+                                          const std::u16string& filter);
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   // The extension special storage policy; see ExtensionsProtectingNode() above.
diff --git a/chrome/browser/browsing_data/cookies_tree_model_unittest.cc b/chrome/browser/browsing_data/cookies_tree_model_unittest.cc
index 7fa002d..1ccb6b6 100644
--- a/chrome/browser/browsing_data/cookies_tree_model_unittest.cc
+++ b/chrome/browser/browsing_data/cookies_tree_model_unittest.cc
@@ -460,7 +460,7 @@
 
   // Make sure the nodes are also deleted from the model's cache.
   // http://crbug.com/43249
-  cookies_model->UpdateSearchResults(base::string16());
+  cookies_model->UpdateSearchResults(std::u16string());
 
   {
     // 2 nodes - root and app
@@ -1571,7 +1571,7 @@
   EXPECT_EQ("http://fshost3:3/",
             GetDisplayedFileSystems(cookies_model.get()));
 
-  cookies_model->UpdateSearchResults(base::string16());
+  cookies_model->UpdateSearchResults(std::u16string());
   EXPECT_EQ("http://fshost1:1/,http://fshost2:2/,http://fshost3:3/",
             GetDisplayedFileSystems(cookies_model.get()));
 }
@@ -1591,7 +1591,7 @@
   cookies_model->UpdateSearchResults(base::ASCIIToUTF16("swhost3"));
   EXPECT_EQ("", GetDisplayedServiceWorkers(cookies_model.get()));
 
-  cookies_model->UpdateSearchResults(base::string16());
+  cookies_model->UpdateSearchResults(std::u16string());
   EXPECT_EQ("https://swhost1:1/,https://swhost2:2/",
             GetDisplayedServiceWorkers(cookies_model.get()));
 }
@@ -1611,7 +1611,7 @@
   cookies_model->UpdateSearchResults(base::ASCIIToUTF16("sharedworkerhost3"));
   EXPECT_EQ("", GetDisplayedSharedWorkers(cookies_model.get()));
 
-  cookies_model->UpdateSearchResults(base::string16());
+  cookies_model->UpdateSearchResults(std::u16string());
   EXPECT_EQ(
       "https://sharedworkerhost1:1/app/worker.js,"
       "https://sharedworkerhost2:2/worker.js",
@@ -1633,7 +1633,7 @@
   cookies_model->UpdateSearchResults(base::ASCIIToUTF16("cshost3"));
   EXPECT_EQ("", GetDisplayedCacheStorages(cookies_model.get()));
 
-  cookies_model->UpdateSearchResults(base::string16());
+  cookies_model->UpdateSearchResults(std::u16string());
   EXPECT_EQ("https://cshost1:1/,https://cshost2:2/",
             GetDisplayedCacheStorages(cookies_model.get()));
 }
@@ -1664,16 +1664,16 @@
   mock_browsing_data_cookie_helper_->Notify();
   EXPECT_EQ("A,B,C,D", GetDisplayedCookies(&cookies_model));
 
-  cookies_model.UpdateSearchResults(base::string16(base::ASCIIToUTF16("foo")));
+  cookies_model.UpdateSearchResults(std::u16string(base::ASCIIToUTF16("foo")));
   EXPECT_EQ("B,C,D", GetDisplayedCookies(&cookies_model));
 
-  cookies_model.UpdateSearchResults(base::string16(base::ASCIIToUTF16("2")));
+  cookies_model.UpdateSearchResults(std::u16string(base::ASCIIToUTF16("2")));
   EXPECT_EQ("A,C", GetDisplayedCookies(&cookies_model));
 
-  cookies_model.UpdateSearchResults(base::string16(base::ASCIIToUTF16("foo3")));
+  cookies_model.UpdateSearchResults(std::u16string(base::ASCIIToUTF16("foo3")));
   EXPECT_EQ("D", GetDisplayedCookies(&cookies_model));
 
-  cookies_model.UpdateSearchResults(base::string16());
+  cookies_model.UpdateSearchResults(std::u16string());
   EXPECT_EQ("A,B,C,D", GetDisplayedCookies(&cookies_model));
 }
 
@@ -1723,7 +1723,7 @@
   // Check that all the above example.com cookies go on the example.com
   // host node.
   cookies_model.UpdateSearchResults(
-      base::string16(base::ASCIIToUTF16("example.com")));
+      std::u16string(base::ASCIIToUTF16("example.com")));
   EXPECT_EQ("B,C,D,E,F,G,H,I", GetDisplayedCookies(&cookies_model));
 
   TestingProfile profile;
@@ -1736,28 +1736,28 @@
   // settings set on that host node should apply to http://example2.com.
 
   cookies_model.UpdateSearchResults(
-      base::string16(base::ASCIIToUTF16("file://")));
+      std::u16string(base::ASCIIToUTF16("file://")));
   EXPECT_EQ("", GetDisplayedCookies(&cookies_model));
   CheckContentSettingsUrlForHostNodes(
       cookies_model.GetRoot(), CookieTreeNode::DetailedInfo::TYPE_ROOT,
       cookie_settings, GURL("file:///test/tmp.html"));
 
   cookies_model.UpdateSearchResults(
-      base::string16(base::ASCIIToUTF16("example2.com")));
+      std::u16string(base::ASCIIToUTF16("example2.com")));
   EXPECT_EQ("J", GetDisplayedCookies(&cookies_model));
   CheckContentSettingsUrlForHostNodes(
       cookies_model.GetRoot(), CookieTreeNode::DetailedInfo::TYPE_ROOT,
       cookie_settings, GURL("http://example2.com"));
 
   cookies_model.UpdateSearchResults(
-      base::string16(base::ASCIIToUTF16("example3.com")));
+      std::u16string(base::ASCIIToUTF16("example3.com")));
   EXPECT_EQ("K", GetDisplayedCookies(&cookies_model));
   CheckContentSettingsUrlForHostNodes(
       cookies_model.GetRoot(), CookieTreeNode::DetailedInfo::TYPE_ROOT,
       cookie_settings, GURL("http://example3.com"));
 
   cookies_model.UpdateSearchResults(
-      base::string16(base::ASCIIToUTF16("example4.com")));
+      std::u16string(base::ASCIIToUTF16("example4.com")));
   EXPECT_EQ("L", GetDisplayedCookies(&cookies_model));
   CheckContentSettingsUrlForHostNodes(
       cookies_model.GetRoot(), CookieTreeNode::DetailedInfo::TYPE_ROOT,
@@ -1792,7 +1792,7 @@
       CreateCookiesTreeModelWithInitialSample());
 
   cookies_model->UpdateSearchResults(
-      base::string16(base::ASCIIToUTF16("media1")));
+      std::u16string(base::ASCIIToUTF16("media1")));
   {
     SCOPED_TRACE("Search for 'media1'");
     EXPECT_EQ("", GetDisplayedCookies(cookies_model.get()));
@@ -1809,7 +1809,7 @@
   }
 
   cookies_model->UpdateSearchResults(
-      base::string16(base::ASCIIToUTF16("media")));
+      std::u16string(base::ASCIIToUTF16("media")));
   {
     SCOPED_TRACE("Search for 'media'");
     EXPECT_EQ("", GetDisplayedCookies(cookies_model.get()));
@@ -1826,7 +1826,7 @@
   }
 
   // Search for everything.
-  cookies_model->UpdateSearchResults(base::string16());
+  cookies_model->UpdateSearchResults(std::u16string());
   {
     SCOPED_TRACE("Search for everything");
     EXPECT_EQ("A,B,C", GetDisplayedCookies(cookies_model.get()));
@@ -1854,7 +1854,7 @@
   }
 
   // Search for any domain containing '1'.
-  cookies_model->UpdateSearchResults(base::string16(base::ASCIIToUTF16("1")));
+  cookies_model->UpdateSearchResults(std::u16string(base::ASCIIToUTF16("1")));
   {
     SCOPED_TRACE("Search for '1'");
     EXPECT_EQ("A", GetDisplayedCookies(cookies_model.get()));
@@ -1879,7 +1879,7 @@
   }
 
   // Search for any domain containing 'i'.
-  cookies_model->UpdateSearchResults(base::string16(base::ASCIIToUTF16("i")));
+  cookies_model->UpdateSearchResults(std::u16string(base::ASCIIToUTF16("i")));
   {
     SCOPED_TRACE("Search for 'i'");
     EXPECT_EQ("", GetDisplayedCookies(cookies_model.get()));
diff --git a/chrome/browser/browsing_data/counters/browsing_data_counter_utils.cc b/chrome/browser/browsing_data/counters/browsing_data_counter_utils.cc
index e6a110c..fcf31ba 100644
--- a/chrome/browser/browsing_data/counters/browsing_data_counter_utils.cc
+++ b/chrome/browser/browsing_data/counters/browsing_data_counter_utils.cc
@@ -44,7 +44,7 @@
 // A helper function to display the size of cache in units of MB or higher.
 // We need this, as 1 MB is the lowest nonzero cache size displayed by the
 // counter.
-base::string16 FormatBytesMBOrHigher(ResultInt bytes) {
+std::u16string FormatBytesMBOrHigher(ResultInt bytes) {
   if (ui::GetByteDisplayUnits(bytes) >= ui::DataUnits::DATA_UNITS_MEBIBYTE)
     return ui::FormatBytes(bytes);
 
@@ -66,7 +66,7 @@
   return false;
 }
 
-base::string16 GetChromeCounterTextFromResult(
+std::u16string GetChromeCounterTextFromResult(
     const BrowsingDataCounter::Result* result,
     Profile* profile) {
   std::string pref_name = result->source()->GetPrefName();
@@ -89,7 +89,7 @@
     // a subset of cache (i.e. a finite time interval), and almost zero (< 1MB).
     static const int kBytesInAMegabyte = 1024 * 1024;
     if (cache_size_bytes >= kBytesInAMegabyte) {
-      base::string16 formatted_size = FormatBytesMBOrHigher(cache_size_bytes);
+      std::u16string formatted_size = FormatBytesMBOrHigher(cache_size_bytes);
       if (!is_upper_limit) {
         return is_basic_tab ? l10n_util::GetStringFUTF16(
                                   IDS_DEL_CACHE_COUNTER_BASIC, formatted_size)
@@ -134,7 +134,7 @@
         hosted_apps_result->Value(),
         base::checked_cast<ResultInt>(hosted_apps_result->examples().size()));
 
-    std::vector<base::string16> replacements;
+    std::vector<std::u16string> replacements;
     if (hosted_apps_count > 0) {
       replacements.push_back(                                     // App1,
           base::UTF8ToUTF16(hosted_apps_result->examples()[0]));
@@ -168,7 +168,7 @@
     ResultInt account_passwords = signin_result->account_passwords();
     ResultInt signin_data_count = signin_result->WebAuthnCredentialsValue();
 
-    std::vector<base::string16> counts;
+    std::vector<std::u16string> counts;
     // TODO(crbug.com/1086433): If there are profile passwords, account
     // passwords and other sign-in data, these are combined as
     // "<1>; <2>; <3>" by recursively applying a "<1>; <2>" message.
diff --git a/chrome/browser/browsing_data/counters/browsing_data_counter_utils.h b/chrome/browser/browsing_data/counters/browsing_data_counter_utils.h
index ea14281..a267fcb 100644
--- a/chrome/browser/browsing_data/counters/browsing_data_counter_utils.h
+++ b/chrome/browser/browsing_data/counters/browsing_data_counter_utils.h
@@ -20,7 +20,7 @@
 bool ShouldShowCookieException(Profile* profile);
 
 // Constructs the text to be displayed by a counter from the given |result|.
-base::string16 GetChromeCounterTextFromResult(
+std::u16string GetChromeCounterTextFromResult(
     const browsing_data::BrowsingDataCounter::Result* result,
     Profile* profile);
 
diff --git a/chrome/browser/browsing_data/counters/browsing_data_counter_utils_unittest.cc b/chrome/browser/browsing_data/counters/browsing_data_counter_utils_unittest.cc
index 849bd0b8..573cb5c 100644
--- a/chrome/browser/browsing_data/counters/browsing_data_counter_utils_unittest.cc
+++ b/chrome/browser/browsing_data/counters/browsing_data_counter_utils_unittest.cc
@@ -80,7 +80,7 @@
         "Test params: %d bytes, %d is_upper_limit, %d is_basic_tab.",
         test_case.bytes, test_case.is_upper_limit, test_case.is_basic_tab));
 
-    base::string16 output =
+    std::u16string output =
         GetChromeCounterTextFromResult(&result, GetProfile());
     EXPECT_EQ(output, base::ASCIIToUTF16(test_case.expected_output));
   }
@@ -121,7 +121,7 @@
 
     HostedAppsCounter::HostedAppsResult result(&counter, apps.size(), examples);
 
-    base::string16 output =
+    std::u16string output =
         GetChromeCounterTextFromResult(&result, GetProfile());
     EXPECT_EQ(output, base::ASCIIToUTF16(test_case.expected_output));
   }
diff --git a/chrome/browser/certificate_manager_model.cc b/chrome/browser/certificate_manager_model.cc
index 289f2bf3..be8a2c1 100644
--- a/chrome/browser/certificate_manager_model.cc
+++ b/chrome/browser/certificate_manager_model.cc
@@ -245,7 +245,7 @@
           x509_certificate_model::GetType(cert_info.cert.get());
       bool can_be_deleted = !cert_info.on_read_only_slot;
       bool hardware_backed = cert_info.hardware_backed;
-      base::string16 name = GetName(cert_info.cert.get(), hardware_backed);
+      std::u16string name = GetName(cert_info.cert.get(), hardware_backed);
 
       cert_infos.push_back(std::make_unique<CertificateManagerModel::CertInfo>(
           /*cert=*/std::move(cert_info.cert), type, name, can_be_deleted,
@@ -258,9 +258,9 @@
     SetCertInfos(std::move(cert_infos));
   }
 
-  static base::string16 GetName(CERTCertificate* cert,
+  static std::u16string GetName(CERTCertificate* cert,
                                 bool is_hardware_backed) {
-    base::string16 name =
+    std::u16string name =
         base::UTF8ToUTF16(x509_certificate_model::GetCertNameOrNickname(cert));
     if (is_hardware_backed) {
       name = l10n_util::GetStringFUTF16(
@@ -363,7 +363,7 @@
         continue;
 
       net::CertType type = x509_certificate_model::GetType(nss_cert.get());
-      base::string16 cert_name = base::UTF8ToUTF16(
+      std::u16string cert_name = base::UTF8ToUTF16(
           x509_certificate_model::GetCertNameOrNickname(nss_cert.get()));
       cert_infos.push_back(std::make_unique<CertificateManagerModel::CertInfo>(
           std::move(nss_cert), type, std::move(cert_name),
@@ -427,9 +427,9 @@
       if (!nss_cert)
         continue;
 
-      base::string16 cert_name = base::UTF8ToUTF16(
+      std::u16string cert_name = base::UTF8ToUTF16(
           x509_certificate_model::GetCertNameOrNickname(nss_cert.get()));
-      base::string16 display_name = l10n_util::GetStringFUTF16(
+      std::u16string display_name = l10n_util::GetStringFUTF16(
           IDS_CERT_MANAGER_EXTENSION_PROVIDED_FORMAT, std::move(cert_name));
 
       cert_infos.push_back(std::make_unique<CertificateManagerModel::CertInfo>(
@@ -456,7 +456,7 @@
 
 CertificateManagerModel::CertInfo::CertInfo(net::ScopedCERTCertificate cert,
                                             net::CertType type,
-                                            base::string16 name,
+                                            std::u16string name,
                                             bool can_be_deleted,
                                             bool untrusted,
                                             Source source,
@@ -626,7 +626,7 @@
 
 int CertificateManagerModel::ImportFromPKCS12(PK11SlotInfo* slot_info,
                                               const std::string& data,
-                                              const base::string16& password,
+                                              const std::u16string& password,
                                               bool is_extractable) {
   return cert_db_->ImportFromPKCS12(slot_info, data, password, is_extractable,
                                     nullptr);
diff --git a/chrome/browser/certificate_manager_model.h b/chrome/browser/certificate_manager_model.h
index cddce32..1759abd 100644
--- a/chrome/browser/certificate_manager_model.h
+++ b/chrome/browser/certificate_manager_model.h
@@ -51,7 +51,7 @@
 
     CertInfo(net::ScopedCERTCertificate cert,
              net::CertType type,
-             base::string16 name,
+             std::u16string name,
              bool can_be_deleted,
              bool untrusted,
              Source source,
@@ -62,7 +62,7 @@
 
     CERTCertificate* cert() const { return cert_.get(); }
     net::CertType type() const { return type_; }
-    const base::string16& name() const { return name_; }
+    const std::u16string& name() const { return name_; }
     bool can_be_deleted() const { return can_be_deleted_; }
     bool untrusted() const { return untrusted_; }
     Source source() const { return source_; }
@@ -82,7 +82,7 @@
     net::CertType type_;
 
     // A user readable certificate name.
-    base::string16 name_;
+    std::u16string name_;
 
     // false if the certificate is stored on a read-only slot or provided by
     // enterprise policy or an extension, otherwise true.
@@ -198,7 +198,7 @@
   // Returns a net error code on failure.
   int ImportFromPKCS12(PK11SlotInfo* slot_info,
                        const std::string& data,
-                       const base::string16& password,
+                       const std::u16string& password,
                        bool is_extractable);
 
   // Import user certificate from DER encoded |data|.
diff --git a/chrome/browser/chooser_controller/chooser_controller.cc b/chrome/browser/chooser_controller/chooser_controller.cc
index 103923a..1ca82bc 100644
--- a/chrome/browser/chooser_controller/chooser_controller.cc
+++ b/chrome/browser/chooser_controller/chooser_controller.cc
@@ -21,7 +21,7 @@
 
 namespace {
 
-base::string16 CreateTitle(content::RenderFrameHost* render_frame_host,
+std::u16string CreateTitle(content::RenderFrameHost* render_frame_host,
                            int title_string_id_origin,
                            int title_string_id_extension) {
   url::Origin origin = render_frame_host->GetLastCommittedOrigin();
@@ -64,7 +64,7 @@
 
 ChooserController::~ChooserController() {}
 
-base::string16 ChooserController::GetTitle() const {
+std::u16string ChooserController::GetTitle() const {
   return title_;
 }
 
@@ -92,12 +92,12 @@
   return false;
 }
 
-base::string16 ChooserController::GetCancelButtonLabel() const {
+std::u16string ChooserController::GetCancelButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_CANCEL_BUTTON_TEXT);
 }
 
-base::string16 ChooserController::GetSelectAllCheckboxLabel() const {
-  return base::string16();
+std::u16string ChooserController::GetSelectAllCheckboxLabel() const {
+  return std::u16string();
 }
 
 bool ChooserController::BothButtonsAlwaysEnabled() const {
diff --git a/chrome/browser/chooser_controller/chooser_controller.h b/chrome/browser/chooser_controller/chooser_controller.h
index d9efd3d..d59fbb30 100644
--- a/chrome/browser/chooser_controller/chooser_controller.h
+++ b/chrome/browser/chooser_controller/chooser_controller.h
@@ -69,7 +69,7 @@
   // Returns the text to be displayed in the chooser title.
   // Note that this is only called once, and there is no way to update the title
   // for a given instance of ChooserController.
-  base::string16 GetTitle() const;
+  std::u16string GetTitle() const;
 
   // Returns whether the chooser needs to show an icon before the text.
   // For WebBluetooth, it is a signal strength icon.
@@ -88,20 +88,20 @@
   virtual bool ShouldShowSelectAllCheckbox() const;
 
   // Returns the text to be displayed in the chooser when there are no options.
-  virtual base::string16 GetNoOptionsText() const = 0;
+  virtual std::u16string GetNoOptionsText() const = 0;
 
   // Returns the label for OK button.
-  virtual base::string16 GetOkButtonLabel() const = 0;
+  virtual std::u16string GetOkButtonLabel() const = 0;
 
   // Returns the label for Cancel button.
-  virtual base::string16 GetCancelButtonLabel() const;
+  virtual std::u16string GetCancelButtonLabel() const;
 
   // Returns the label for SelectAll checkbox.
-  virtual base::string16 GetSelectAllCheckboxLabel() const;
+  virtual std::u16string GetSelectAllCheckboxLabel() const;
 
   // Returns the label for the throbber shown while options are initializing or
   // a re-scan is in progress.
-  virtual std::pair<base::string16, base::string16> GetThrobberLabelAndTooltip()
+  virtual std::pair<std::u16string, std::u16string> GetThrobberLabelAndTooltip()
       const = 0;
 
   // Returns whether both OK and Cancel buttons are enabled.
@@ -134,7 +134,7 @@
   virtual int GetSignalStrengthLevel(size_t index) const;
 
   // The |index|th option string which is listed in the chooser.
-  virtual base::string16 GetOption(size_t index) const = 0;
+  virtual std::u16string GetOption(size_t index) const = 0;
 
   // Returns if the |index|th option is connected.
   // This function returns false by default.
@@ -174,10 +174,10 @@
   View* view() const { return view_; }
 
  protected:
-  void set_title_for_testing(const base::string16& title) { title_ = title; }
+  void set_title_for_testing(const std::u16string& title) { title_ = title; }
 
  private:
-  base::string16 title_;
+  std::u16string title_;
   View* view_ = nullptr;
 
   DISALLOW_COPY_AND_ASSIGN(ChooserController);
diff --git a/chrome/browser/chooser_controller/fake_bluetooth_chooser_controller.cc b/chrome/browser/chooser_controller/fake_bluetooth_chooser_controller.cc
index 54860d6f..ae7fb7d 100644
--- a/chrome/browser/chooser_controller/fake_bluetooth_chooser_controller.cc
+++ b/chrome/browser/chooser_controller/fake_bluetooth_chooser_controller.cc
@@ -28,17 +28,17 @@
   return true;
 }
 
-base::string16 FakeBluetoothChooserController::GetNoOptionsText() const {
+std::u16string FakeBluetoothChooserController::GetNoOptionsText() const {
   return l10n_util::GetStringUTF16(
       IDS_BLUETOOTH_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT);
 }
 
-base::string16 FakeBluetoothChooserController::GetOkButtonLabel() const {
+std::u16string FakeBluetoothChooserController::GetOkButtonLabel() const {
   return l10n_util::GetStringUTF16(
       IDS_BLUETOOTH_DEVICE_CHOOSER_PAIR_BUTTON_TEXT);
 }
 
-std::pair<base::string16, base::string16>
+std::pair<std::u16string, std::u16string>
 FakeBluetoothChooserController::GetThrobberLabelAndTooltip() const {
   return {
       l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_SCANNING_LABEL),
@@ -58,7 +58,7 @@
   return devices_.at(index).signal_strength;
 }
 
-base::string16 FakeBluetoothChooserController::GetOption(size_t index) const {
+std::u16string FakeBluetoothChooserController::GetOption(size_t index) const {
   return base::ASCIIToUTF16(devices_.at(index).name);
 }
 
diff --git a/chrome/browser/chooser_controller/fake_bluetooth_chooser_controller.h b/chrome/browser/chooser_controller/fake_bluetooth_chooser_controller.h
index 73277651..2b72cf7 100644
--- a/chrome/browser/chooser_controller/fake_bluetooth_chooser_controller.h
+++ b/chrome/browser/chooser_controller/fake_bluetooth_chooser_controller.h
@@ -53,14 +53,14 @@
   // ChooserController:
   bool ShouldShowIconBeforeText() const override;
   bool ShouldShowReScanButton() const override;
-  base::string16 GetNoOptionsText() const override;
-  base::string16 GetOkButtonLabel() const override;
-  std::pair<base::string16, base::string16> GetThrobberLabelAndTooltip()
+  std::u16string GetNoOptionsText() const override;
+  std::u16string GetOkButtonLabel() const override;
+  std::pair<std::u16string, std::u16string> GetThrobberLabelAndTooltip()
       const override;
   bool TableViewAlwaysDisabled() const override;
   size_t NumOptions() const override;
   int GetSignalStrengthLevel(size_t index) const override;
-  base::string16 GetOption(size_t index) const override;
+  std::u16string GetOption(size_t index) const override;
   bool IsConnected(size_t index) const override;
   bool IsPaired(size_t index) const override;
   MOCK_METHOD0(RefreshOptions, void());
diff --git a/chrome/browser/chooser_controller/fake_usb_chooser_controller.cc b/chrome/browser/chooser_controller/fake_usb_chooser_controller.cc
index c634d2e..b67ee79 100644
--- a/chrome/browser/chooser_controller/fake_usb_chooser_controller.cc
+++ b/chrome/browser/chooser_controller/fake_usb_chooser_controller.cc
@@ -15,15 +15,15 @@
       IDS_USB_DEVICE_CHOOSER_PROMPT_ORIGIN, base::ASCIIToUTF16("example.com")));
 }
 
-base::string16 FakeUsbChooserController::GetNoOptionsText() const {
+std::u16string FakeUsbChooserController::GetNoOptionsText() const {
   return l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT);
 }
 
-base::string16 FakeUsbChooserController::GetOkButtonLabel() const {
+std::u16string FakeUsbChooserController::GetOkButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_USB_DEVICE_CHOOSER_CONNECT_BUTTON_TEXT);
 }
 
-std::pair<base::string16, base::string16>
+std::pair<std::u16string, std::u16string>
 FakeUsbChooserController::GetThrobberLabelAndTooltip() const {
   return {
       l10n_util::GetStringUTF16(IDS_USB_DEVICE_CHOOSER_LOADING_LABEL),
@@ -34,6 +34,6 @@
   return device_count_;
 }
 
-base::string16 FakeUsbChooserController::GetOption(size_t index) const {
+std::u16string FakeUsbChooserController::GetOption(size_t index) const {
   return base::ASCIIToUTF16(base::StringPrintf("Device #%zu", index));
 }
diff --git a/chrome/browser/chooser_controller/fake_usb_chooser_controller.h b/chrome/browser/chooser_controller/fake_usb_chooser_controller.h
index bd0dd058..44790cf9 100644
--- a/chrome/browser/chooser_controller/fake_usb_chooser_controller.h
+++ b/chrome/browser/chooser_controller/fake_usb_chooser_controller.h
@@ -19,12 +19,12 @@
   explicit FakeUsbChooserController(int device_count);
 
   // ChooserController:
-  base::string16 GetNoOptionsText() const override;
-  base::string16 GetOkButtonLabel() const override;
-  std::pair<base::string16, base::string16> GetThrobberLabelAndTooltip()
+  std::u16string GetNoOptionsText() const override;
+  std::u16string GetOkButtonLabel() const override;
+  std::pair<std::u16string, std::u16string> GetThrobberLabelAndTooltip()
       const override;
   size_t NumOptions() const override;
-  base::string16 GetOption(size_t index) const override;
+  std::u16string GetOption(size_t index) const override;
   void Select(const std::vector<size_t>& indices) override {}
   void Cancel() override {}
   void Close() override {}
diff --git a/chrome/browser/chrome_browser_main_win.cc b/chrome/browser/chrome_browser_main_win.cc
index 17abc02..ca6ea9c7 100644
--- a/chrome/browser/chrome_browser_main_win.cc
+++ b/chrome/browser/chrome_browser_main_win.cc
@@ -766,10 +766,10 @@
   // The encoding we use for the info is "title|context|direction" where
   // direction is either env_vars::kRtlLocale or env_vars::kLtrLocale depending
   // on the current locale.
-  base::string16 dlg_strings(
+  std::u16string dlg_strings(
       l10n_util::GetStringUTF16(IDS_CRASH_RECOVERY_TITLE));
   dlg_strings.push_back('|');
-  base::string16 adjusted_string(
+  std::u16string adjusted_string(
       l10n_util::GetStringUTF16(IDS_CRASH_RECOVERY_CONTENT));
   base::i18n::AdjustStringForLocaleDirection(&adjusted_string);
   dlg_strings.append(adjusted_string);
@@ -816,10 +816,10 @@
   if (parsed_command_line.HasSwitch(switches::kHideIcons)) {
     // TODO(740976): This is not up-to-date and not localized. Figure out if
     // the --hide-icons and --show-icons switches are still used.
-    base::string16 cp_applet = u"Programs and Features";
-    const base::string16 msg =
+    std::u16string cp_applet = u"Programs and Features";
+    const std::u16string msg =
         l10n_util::GetStringFUTF16(IDS_HIDE_ICONS_NOT_SUPPORTED, cp_applet);
-    const base::string16 caption = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME);
+    const std::u16string caption = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME);
     const UINT flags = MB_OKCANCEL | MB_ICONWARNING | MB_TOPMOST;
     if (IDOK == ui::MessageBox(NULL, base::AsWString(msg),
                                base::AsWString(caption), flags)) {
diff --git a/chrome/browser/chrome_content_browser_client_browsertest.cc b/chrome/browser/chrome_content_browser_client_browsertest.cc
index 38538e3..80a8cf7 100644
--- a/chrome/browser/chrome_content_browser_client_browsertest.cc
+++ b/chrome/browser/chrome_content_browser_client_browsertest.cc
@@ -310,7 +310,7 @@
       ui_test_utils::GetTestUrl(
           base::FilePath(base::FilePath::kCurrentDirectory),
           base::FilePath(FILE_PATH_LITERAL("prefers-color-scheme.html"))));
-  base::string16 tab_title;
+  std::u16string tab_title;
   ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(), &tab_title));
   EXPECT_EQ(base::ASCIIToUTF16(ExpectedColorScheme()), tab_title);
 }
@@ -429,7 +429,7 @@
       ui_test_utils::GetTestUrl(
           base::FilePath(base::FilePath::kCurrentDirectory),
           base::FilePath(FILE_PATH_LITERAL("prefers-contrast.html"))));
-  base::string16 tab_title;
+  std::u16string tab_title;
   ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(), &tab_title));
   EXPECT_EQ(base::ASCIIToUTF16(ExpectedPrefersContrast()), tab_title);
 }
@@ -476,7 +476,7 @@
 
   ui_test_utils::NavigateToURL(browser(), GURL("news:something"));
 
-  base::string16 expected_title = base::ASCIIToUTF16("abc.xyz");
+  std::u16string expected_title = base::ASCIIToUTF16("abc.xyz");
   content::TitleWatcher title_watcher(
       browser()->tab_strip_model()->GetActiveWebContents(), expected_title);
   EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
@@ -489,7 +489,7 @@
 
   ui_test_utils::NavigateToURL(browser(), GURL("bitcoin:something"));
 
-  base::string16 tab_title;
+  std::u16string tab_title;
   ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(), &tab_title));
   EXPECT_EQ(base::ASCIIToUTF16("about:blank"), tab_title);
 }
@@ -505,7 +505,7 @@
   // tab being opened.
   EXPECT_EQ(1, browser()->tab_strip_model()->count());
   // Make sure the protocol handler redirected the navigation.
-  base::string16 expected_title = base::ASCIIToUTF16("mail.google.com");
+  std::u16string expected_title = base::ASCIIToUTF16("mail.google.com");
   content::TitleWatcher title_watcher(
       browser()->tab_strip_model()->GetActiveWebContents(), expected_title);
   EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
diff --git a/chrome/browser/chrome_service_worker_browsertest.cc b/chrome/browser/chrome_service_worker_browsertest.cc
index 6a3758de..69a14d7c 100644
--- a/chrome/browser/chrome_service_worker_browsertest.cc
+++ b/chrome/browser/chrome_service_worker_browsertest.cc
@@ -89,7 +89,7 @@
   }
 
   void NavigateToPageAndWaitForReadyTitle(const std::string path) {
-    const base::string16 expected_title1 = base::ASCIIToUTF16("READY");
+    const std::u16string expected_title1 = base::ASCIIToUTF16("READY");
     content::TitleWatcher title_watcher1(
         browser()->tab_strip_model()->GetActiveWebContents(), expected_title1);
     ui_test_utils::NavigateToURL(browser(),
@@ -219,7 +219,7 @@
       ->SetDefaultContentSetting(ContentSettingsType::JAVASCRIPT,
                                  CONTENT_SETTING_BLOCK);
 
-  const base::string16 expected_title2 = base::ASCIIToUTF16("Done");
+  const std::u16string expected_title2 = base::ASCIIToUTF16("Done");
   content::TitleWatcher title_watcher2(
       browser()->tab_strip_model()->GetActiveWebContents(), expected_title2);
   ui_test_utils::NavigateToURL(
@@ -238,7 +238,7 @@
                        StartServiceWorkerAndDispatchMessage) {
   base::RunLoop run_loop;
   blink::TransferableMessage msg;
-  const base::string16 message_data = base::UTF8ToUTF16("testMessage");
+  const std::u16string message_data = base::UTF8ToUTF16("testMessage");
 
   WriteFile(FILE_PATH_LITERAL("sw.js"), "self.onfetch = function(e) {};");
   WriteFile(FILE_PATH_LITERAL("test.html"), kInstallAndWaitForActivatedPage);
@@ -352,7 +352,7 @@
 
   void InitializeServiceWorkerFetchTestPage() {
     // The message "READY" will be sent when the service worker is activated.
-    const base::string16 expected_title = base::ASCIIToUTF16("READY");
+    const std::u16string expected_title = base::ASCIIToUTF16("READY");
     content::TitleWatcher title_watcher(
         browser()->tab_strip_model()->GetActiveWebContents(), expected_title);
     ui_test_utils::NavigateToURL(browser(),
diff --git a/chrome/browser/chromeos/android_sms/fcm_connection_establisher_unittest.cc b/chrome/browser/chromeos/android_sms/fcm_connection_establisher_unittest.cc
index e8977657..a67ff40b 100644
--- a/chrome/browser/chromeos/android_sms/fcm_connection_establisher_unittest.cc
+++ b/chrome/browser/chromeos/android_sms/fcm_connection_establisher_unittest.cc
@@ -31,7 +31,7 @@
       const char* expected,
       const content::FakeServiceWorkerContext::
           StartServiceWorkerAndDispatchMessageArgs& call_args) {
-    base::string16 message_string;
+    std::u16string message_string;
     blink::DecodeStringMessage(
         std::get<blink::TransferableMessage>(call_args).owned_encoded_message,
         &message_string);
diff --git a/chrome/browser/chromeos/android_sms/pairing_lost_notifier.cc b/chrome/browser/chromeos/android_sms/pairing_lost_notifier.cc
index 856477cc..9de5a5d 100644
--- a/chrome/browser/chromeos/android_sms/pairing_lost_notifier.cc
+++ b/chrome/browser/chromeos/android_sms/pairing_lost_notifier.cc
@@ -131,7 +131,7 @@
               IDS_ANDROID_MESSAGES_PAIRING_LOST_NOTIFICATION_TITLE),
           l10n_util::GetStringUTF16(
               IDS_ANDROID_MESSAGES_PAIRING_LOST_NOTIFICATION_MESSAGE),
-          base::string16() /* display_source */, GURL() /* origin_url */,
+          std::u16string() /* display_source */, GURL() /* origin_url */,
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT,
               kAndroidSmsNotifierId),
diff --git a/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc b/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc
index 36bfcff..741cff0 100644
--- a/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc
+++ b/chrome/browser/chromeos/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc
@@ -62,7 +62,7 @@
   base::RunLoop run_loop;
   std::unique_ptr<ui::SimpleMenuModel> menu;
   auto simple_menu_model = std::make_unique<ui::SimpleMenuModel>(nullptr);
-  const base::string16 first_item_label = base::UTF8ToUTF16("FirstItemLabel");
+  const std::u16string first_item_label = base::UTF8ToUTF16("FirstItemLabel");
   simple_menu_model->AddItem(1, first_item_label);
   auto arc_app_shortcuts_menu_builder =
       std::make_unique<ArcAppShortcutsMenuBuilder>(
diff --git a/chrome/browser/chromeos/arc/arc_migration_guide_notification.cc b/chrome/browser/chromeos/arc/arc_migration_guide_notification.cc
index acf339e..60ea976 100644
--- a/chrome/browser/chromeos/arc/arc_migration_guide_notification.cc
+++ b/chrome/browser/chromeos/arc/arc_migration_guide_notification.cc
@@ -51,7 +51,7 @@
           power_manager::PowerSupplyProperties_BatteryState_NOT_PRESENT &&
       power->battery_percent() < kMigrationMinimumBatteryPercent;
 
-  const base::string16 message = ui::SubstituteChromeOSDeviceType(
+  const std::u16string message = ui::SubstituteChromeOSDeviceType(
       is_low_battery
           ? IDS_ARC_MIGRATE_ENCRYPTION_NOTIFICATION_LOW_BATTERY_MESSAGE
           : IDS_ARC_MIGRATE_ENCRYPTION_NOTIFICATION_MESSAGE);
@@ -65,7 +65,7 @@
           message_center::NOTIFICATION_TYPE_SIMPLE, kSuggestNotificationId,
           l10n_util::GetStringUTF16(
               IDS_ARC_MIGRATE_ENCRYPTION_NOTIFICATION_TITLE),
-          message, base::string16(), GURL(), notifier_id,
+          message, std::u16string(), GURL(), notifier_id,
           message_center::RichNotificationData(), std::move(delegate),
           vector_icons::kSettingsIcon,
           message_center::SystemNotificationWarningLevel::CRITICAL_WARNING);
diff --git a/chrome/browser/chromeos/arc/arc_migration_guide_notification_unittest.cc b/chrome/browser/chromeos/arc/arc_migration_guide_notification_unittest.cc
index 8bfaf13..f6eeda6 100644
--- a/chrome/browser/chromeos/arc/arc_migration_guide_notification_unittest.cc
+++ b/chrome/browser/chromeos/arc/arc_migration_guide_notification_unittest.cc
@@ -37,7 +37,7 @@
       NotificationHandler::Type::TRANSIENT);
   ASSERT_EQ(1U, notifications.size());
   EXPECT_EQ("arc_fs_migration/suggest", notifications[0].id());
-  base::string16 message = notifications[0].message();
+  std::u16string message = notifications[0].message();
   EXPECT_THAT(base::UTF16ToUTF8(notifications[0].message()),
               Not(HasSubstr("charge")));
 
diff --git a/chrome/browser/chromeos/arc/arc_support_host.cc b/chrome/browser/chromeos/arc/arc_support_host.cc
index 7d8a479..ec5efa4 100644
--- a/chrome/browser/chromeos/arc/arc_support_host.cc
+++ b/chrome/browser/chromeos/arc/arc_support_host.cc
@@ -365,7 +365,7 @@
   }
 #undef MAP_ERROR
 
-  base::string16 message;
+  std::u16string message;
   switch (error_info.error) {
     case Error::SIGN_IN_CLOUD_PROVISION_FLOW_ACCOUNT_MISSING_ERROR:
     case Error::SIGN_IN_CLOUD_PROVISION_FLOW_DOMAIN_JOIN_FAIL_ERROR:
diff --git a/chrome/browser/chromeos/arc/enterprise/arc_snapshot_reboot_notification_impl.cc b/chrome/browser/chromeos/arc/enterprise/arc_snapshot_reboot_notification_impl.cc
index a3835fb..30a1418 100644
--- a/chrome/browser/chromeos/arc/enterprise/arc_snapshot_reboot_notification_impl.cc
+++ b/chrome/browser/chromeos/arc/enterprise/arc_snapshot_reboot_notification_impl.cc
@@ -52,7 +52,7 @@
       message_center::NOTIFICATION_TYPE_SIMPLE, kNotificationId,
       l10n_util::GetStringUTF16(IDS_ARC_SNAPSHOT_RESTART_NOTIFICATION_TITLE),
       l10n_util::GetStringUTF16(IDS_ARC_SNAPSHOT_RESTART_NOTIFICATION_MESSAGE),
-      base::string16() /* display_source */, GURL(), notifier_id,
+      std::u16string() /* display_source */, GURL(), notifier_id,
       optional_fields,
       new message_center::HandleNotificationClickDelegate(
           base::BindRepeating(&ArcSnapshotRebootNotificationImpl::HandleClick,
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_content_file_system_url_util_unittest.cc b/chrome/browser/chromeos/arc/fileapi/arc_content_file_system_url_util_unittest.cc
index 2879ea7..c2fa4b2 100644
--- a/chrome/browser/chromeos/arc/fileapi/arc_content_file_system_url_util_unittest.cc
+++ b/chrome/browser/chromeos/arc/fileapi/arc_content_file_system_url_util_unittest.cc
@@ -51,7 +51,7 @@
     EXPECT_EQ(src, result);
   }
   {
-    base::string16 utf16_string = {
+    std::u16string utf16_string = {
         0x307b,  // HIRAGANA_LETTER_HO
         0x3052,  // HIRAGANA_LETTER_GE
     };
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge_unittest.cc b/chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge_unittest.cc
index 2110f3c..58431ac 100644
--- a/chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge_unittest.cc
+++ b/chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge_unittest.cc
@@ -109,7 +109,7 @@
 }
 
 TEST_F(ArcFileSystemBridgeTest, GetFileNameNonASCII) {
-  const std::string filename = base::UTF16ToUTF8(base::string16({
+  const std::string filename = base::UTF16ToUTF8(std::u16string({
       0x307b,  // HIRAGANA_LETTER_HO
       0x3052,  // HIRAGANA_LETTER_GE
   }));
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler.cc b/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler.cc
index 453999df..f91533ab 100644
--- a/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler.cc
+++ b/chrome/browser/chromeos/arc/fileapi/arc_select_files_handler.cc
@@ -399,7 +399,7 @@
   owner.android_task_id = task_id;
   select_file_dialog_->SelectFileWithFileManagerParams(
       type,
-      /*title=*/base::string16(), default_path, file_types,
+      /*title=*/std::u16string(), default_path, file_types,
       /*file_type_index=*/0,
       /*params=*/nullptr, owner, search_query, show_android_picker_apps);
   return true;
diff --git a/chrome/browser/chromeos/arc/fileapi/chrome_content_provider_url_util_unittest.cc b/chrome/browser/chromeos/arc/fileapi/chrome_content_provider_url_util_unittest.cc
index f161757..ed09eab 100644
--- a/chrome/browser/chromeos/arc/fileapi/chrome_content_provider_url_util_unittest.cc
+++ b/chrome/browser/chromeos/arc/fileapi/chrome_content_provider_url_util_unittest.cc
@@ -28,7 +28,7 @@
     EXPECT_EQ(original, decoded);
   }
   {
-    const base::string16 utf16_string = {
+    const std::u16string utf16_string = {
         0x307b,  // HIRAGANA_LETTER_HO
         0x3052,  // HIRAGANA_LETTER_GE
     };
diff --git a/chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_service.cc b/chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_service.cc
index bdbfdc3..5e52ac2 100644
--- a/chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_service.cc
+++ b/chrome/browser/chromeos/arc/input_method_manager/arc_input_method_manager_service.cc
@@ -224,7 +224,7 @@
   void OnCompositionBoundsChanged(
       const std::vector<gfx::Rect>& bounds) override {}
   void OnSurroundingTextChanged(const std::string& engine_id,
-                                const base::string16& text,
+                                const std::u16string& text,
                                 int cursor_pos,
                                 int anchor_pos,
                                 int offset_pos) override {
diff --git a/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.cc b/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.cc
index 613caa16..7809083 100644
--- a/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.cc
+++ b/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.cc
@@ -35,7 +35,7 @@
     kControlCharToKeyEvent[] = {
         {'\n', ui::VKEY_RETURN, ui::DomCode::ENTER, ui::DomKey::ENTER}};
 
-bool IsControlChar(const base::string16& text) {
+bool IsControlChar(const std::u16string& text) {
   const std::string str = base::UTF16ToUTF8(text);
   if (str.length() != 1)
     return false;
@@ -101,7 +101,7 @@
   gfx::Range text_range = gfx::Range();
   gfx::Range selection_range = gfx::Range();
   base::Optional<gfx::Range> composition_text_range = gfx::Range();
-  base::string16 text;
+  std::u16string text;
 
   if (!client) {
     return mojom::TextInputStatePtr(base::in_place, 0, text, text_range,
@@ -123,7 +123,7 @@
       composition_text_range);
 }
 
-void InputConnectionImpl::CommitText(const base::string16& text,
+void InputConnectionImpl::CommitText(const std::u16string& text,
                                      int new_cursor_pos) {
   StartStateUpdateTimer();
 
@@ -180,7 +180,7 @@
     return;
   }
 
-  base::string16 composing_text;
+  std::u16string composing_text;
   client->GetTextFromRange(composition_range, &composing_text);
 
   std::string error;
@@ -198,7 +198,7 @@
 }
 
 void InputConnectionImpl::SetComposingText(
-    const base::string16& text,
+    const std::u16string& text,
     int new_cursor_pos,
     const base::Optional<gfx::Range>& new_selection_range) {
   // It's relative to the last character of the composing text,
@@ -311,7 +311,7 @@
                      true /* is_input_state_update_requested */));
 }
 
-void InputConnectionImpl::SendControlKeyEvent(const base::string16& text) {
+void InputConnectionImpl::SendControlKeyEvent(const std::u16string& text) {
   DCHECK(IsControlChar(text));
 
   const std::string str = base::UTF16ToUTF8(text);
diff --git a/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.h b/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.h
index 4ccde91..cfd537d 100644
--- a/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.h
+++ b/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.h
@@ -39,11 +39,11 @@
       bool is_input_state_update_requested) const;
 
   // mojom::InputConnection overrides:
-  void CommitText(const base::string16& text, int new_cursor_pos) override;
+  void CommitText(const std::u16string& text, int new_cursor_pos) override;
   void DeleteSurroundingText(int before, int after) override;
   void FinishComposingText() override;
   void SetComposingText(
-      const base::string16& text,
+      const std::u16string& text,
       int new_cursor_pos,
       const base::Optional<gfx::Range>& new_selection_range) override;
   void RequestTextInputState(
@@ -59,7 +59,7 @@
   // starting timer is after API call, the timer won't be cancelled.
   void StartStateUpdateTimer();
 
-  void SendControlKeyEvent(const base::string16& text);
+  void SendControlKeyEvent(const std::u16string& text);
 
   chromeos::InputMethodEngine* const ime_engine_;  // Not owned
   ArcInputMethodManagerBridge* const imm_bridge_;  // Not owned
diff --git a/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl_unittest.cc b/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl_unittest.cc
index 5ca7c42..08dd34ef 100644
--- a/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl_unittest.cc
+++ b/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl_unittest.cc
@@ -39,7 +39,7 @@
   void OnCompositionBoundsChanged(
       const std::vector<gfx::Rect>& bounds) override {}
   void OnSurroundingTextChanged(const std::string& engine_id,
-                                const base::string16& text,
+                                const std::u16string& text,
                                 int cursor_pos,
                                 int anchor_pos,
                                 int offset_pos) override {}
@@ -135,7 +135,7 @@
   }
 
   bool GetTextFromRange(const gfx::Range& range,
-                        base::string16* text) const override {
+                        std::u16string* text) const override {
     *text = base::ASCIIToUTF16(text_.substr(range.start(), range.end()));
     return true;
   }
@@ -285,7 +285,7 @@
 }
 
 TEST_F(InputConnectionImplTest, SetComposingText) {
-  const base::string16 text = u"text";
+  const std::u16string text = u"text";
   auto connection = CreateNewConnection(1);
   engine()->FocusIn(context());
 
diff --git a/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc b/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc
index 6d6ba02c..7684c93 100644
--- a/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc
+++ b/chrome/browser/chromeos/arc/intent_helper/arc_settings_service.cc
@@ -650,7 +650,7 @@
 
 void ArcSettingsServiceImpl::SyncTimeZone() const {
   TimezoneSettings* timezone_settings = TimezoneSettings::GetInstance();
-  base::string16 timezoneID = timezone_settings->GetCurrentTimezoneID();
+  std::u16string timezoneID = timezone_settings->GetCurrentTimezoneID();
   base::DictionaryValue extras;
   extras.SetString("olsonTimeZone", timezoneID);
   SendSettingsBroadcast("org.chromium.arc.intent_helper.SET_TIME_ZONE", extras);
diff --git a/chrome/browser/chromeos/arc/intent_helper/open_with_menu.cc b/chrome/browser/chromeos/arc/intent_helper/open_with_menu.cc
index 0375bd3..a598f67 100644
--- a/chrome/browser/chromeos/arc/intent_helper/open_with_menu.cc
+++ b/chrome/browser/chromeos/arc/intent_helper/open_with_menu.cc
@@ -95,10 +95,10 @@
       proxy_->UpdateMenuItem(command_id, true, false, more_apps_label_);
     } else if (it == handlers_.end()) {
       // Hide the menu or submenu parent.
-      proxy_->UpdateMenuItem(command_id, false, true, base::string16());
+      proxy_->UpdateMenuItem(command_id, false, true, std::u16string());
     } else {
       // Update the menu with the new model.
-      const base::string16 label = l10n_util::GetStringFUTF16(
+      const std::u16string label = l10n_util::GetStringFUTF16(
           IDS_CONTENT_CONTEXT_OPEN_WITH_APP, it->second.name);
       proxy_->UpdateMenuItem(command_id, true, false, label);
       if (!it->second.icon.IsEmpty())
@@ -125,14 +125,14 @@
   for (int i = 0; i < kNumSubMenuCommands; ++i) {
     const int command_id =
         IDC_CONTENT_CONTEXT_OPEN_WITH1 + kNumMainMenuCommands + i;
-    submenu->AddItem(command_id, base::string16());
+    submenu->AddItem(command_id, std::u16string());
   }
   int command_id;
   for (int i = 0; i < kNumMainMenuCommands - 1; ++i) {
     command_id = IDC_CONTENT_CONTEXT_OPEN_WITH1 + i;
-    proxy->AddMenuItem(command_id, base::string16());
+    proxy->AddMenuItem(command_id, std::u16string());
   }
-  proxy->AddSubMenu(++command_id, base::string16(), submenu);
+  proxy->AddSubMenu(++command_id, std::u16string(), submenu);
 }
 
 std::pair<OpenWithMenu::HandlerMap, int> OpenWithMenu::BuildHandlersMap(
diff --git a/chrome/browser/chromeos/arc/intent_helper/open_with_menu.h b/chrome/browser/chromeos/arc/intent_helper/open_with_menu.h
index c3044d1f..ab6f26c 100644
--- a/chrome/browser/chromeos/arc/intent_helper/open_with_menu.h
+++ b/chrome/browser/chromeos/arc/intent_helper/open_with_menu.h
@@ -83,7 +83,7 @@
   content::BrowserContext* context_;
   RenderViewContextMenuProxy* const proxy_;
   SubMenuDelegate submenu_delegate_{this};
-  const base::string16 more_apps_label_;
+  const std::u16string more_apps_label_;
 
   // A menu model received from Ash side.
   std::unique_ptr<LinkHandlerModel> menu_model_;
diff --git a/chrome/browser/chromeos/arc/intent_helper/open_with_menu_unittest.cc b/chrome/browser/chromeos/arc/intent_helper/open_with_menu_unittest.cc
index ecb7e61..6690aaf 100644
--- a/chrome/browser/chromeos/arc/intent_helper/open_with_menu_unittest.cc
+++ b/chrome/browser/chromeos/arc/intent_helper/open_with_menu_unittest.cc
@@ -58,7 +58,7 @@
       CreateLinkHandlerInfo(num_apps));
 }
 
-base::string16 GetTitle(size_t i) {
+std::u16string GetTitle(size_t i) {
   return l10n_util::GetStringFUTF16(
       IDS_CONTENT_CONTEXT_OPEN_WITH_APP,
       base::UTF8ToUTF16(base::StringPrintf("App %" PRIuS, i)));
diff --git a/chrome/browser/chromeos/arc/intent_helper/start_smart_selection_action_menu.cc b/chrome/browser/chromeos/arc/intent_helper/start_smart_selection_action_menu.cc
index 9d7e251b..dcf30b9 100644
--- a/chrome/browser/chromeos/arc/intent_helper/start_smart_selection_action_menu.cc
+++ b/chrome/browser/chromeos/arc/intent_helper/start_smart_selection_action_menu.cc
@@ -74,7 +74,7 @@
   // Add placeholder items.
   for (size_t i = 0; i < kMaxMainMenuCommands; ++i) {
     proxy_->AddMenuItem(IDC_CONTENT_CONTEXT_START_SMART_SELECTION_ACTION1 + i,
-                        /*title=*/base::string16());
+                        /*title=*/std::u16string());
   }
 }
 
diff --git a/chrome/browser/chromeos/arc/screen_capture/arc_screen_capture_bridge.cc b/chrome/browser/chromeos/arc/screen_capture/arc_screen_capture_bridge.cc
index b4134e5..c36c0b5 100644
--- a/chrome/browser/chromeos/arc/screen_capture/arc_screen_capture_bridge.cc
+++ b/chrome/browser/chromeos/arc/screen_capture/arc_screen_capture_bridge.cc
@@ -93,7 +93,7 @@
   std::vector<std::unique_ptr<DesktopMediaList>> source_lists;
   source_lists.emplace_back(
       std::make_unique<DesktopMediaListAsh>(DesktopMediaList::Type::kScreen));
-  const base::string16 display_name16 = base::UTF8ToUTF16(display_name);
+  const std::u16string display_name16 = base::UTF8ToUTF16(display_name);
   DesktopMediaPicker::Params picker_params;
   picker_params.context = ash::Shell::GetRootWindowForDisplayId(
       display::Screen::GetScreen()->GetPrimaryDisplay().id());
diff --git a/chrome/browser/chromeos/arc/screen_capture/arc_screen_capture_session.cc b/chrome/browser/chromeos/arc/screen_capture/arc_screen_capture_session.cc
index b1cfda1a..896be4d 100644
--- a/chrome/browser/chromeos/arc/screen_capture/arc_screen_capture_session.cc
+++ b/chrome/browser/chromeos/arc/screen_capture/arc_screen_capture_session.cc
@@ -138,7 +138,7 @@
 
   if (enable_notification) {
     // Show the tray notification icon now.
-    base::string16 notification_text =
+    std::u16string notification_text =
         l10n_util::GetStringFUTF16(IDS_MEDIA_SCREEN_CAPTURE_NOTIFICATION_TEXT,
                                    base::UTF8ToUTF16(display_name));
     notification_ui_ = ScreenCaptureNotificationUI::Create(notification_text);
diff --git a/chrome/browser/chromeos/attestation/platform_verification_dialog.cc b/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
index 430bda7..b1f72e1 100644
--- a/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
+++ b/chrome/browser/chromeos/attestation/platform_verification_dialog.cc
@@ -74,7 +74,7 @@
 
 PlatformVerificationDialog::PlatformVerificationDialog(
     content::WebContents* web_contents,
-    const base::string16& domain,
+    const std::u16string& domain,
     ConsentCallback callback)
     : content::WebContentsObserver(web_contents),
       domain_(domain),
diff --git a/chrome/browser/chromeos/attestation/platform_verification_dialog.h b/chrome/browser/chromeos/attestation/platform_verification_dialog.h
index 1cfb8b6..054b205e3 100644
--- a/chrome/browser/chromeos/attestation/platform_verification_dialog.h
+++ b/chrome/browser/chromeos/attestation/platform_verification_dialog.h
@@ -48,7 +48,7 @@
 
  private:
   PlatformVerificationDialog(content::WebContents* web_contents,
-                             const base::string16& domain,
+                             const std::u16string& domain,
                              ConsentCallback callback);
 
   // content::WebContentsObserver:
@@ -57,7 +57,7 @@
 
   void ButtonPressed();
 
-  base::string16 domain_;
+  std::u16string domain_;
   ConsentCallback callback_;
 
   DISALLOW_COPY_AND_ASSIGN(PlatformVerificationDialog);
diff --git a/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager.cc b/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager.cc
index 7e43cdbb..14c1d24 100644
--- a/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager.cc
+++ b/chrome/browser/chromeos/camera_mic/vm_camera_mic_manager.cc
@@ -267,7 +267,7 @@
         /*title=*/
         l10n_util::GetStringFUTF16(message_id,
                                    l10n_util::GetStringUTF16(name_id_)),
-        /*message=*/base::string16(),
+        /*message=*/std::u16string(),
         /*icon=*/gfx::Image(),
         /*display_source=*/
         l10n_util::GetStringUTF16(IDS_CHROME_OS_NOTIFICATION_SOURCE),
@@ -299,7 +299,7 @@
   //
   // This open the settings page if the button is clicked on the notification.
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override {
+             const base::Optional<std::u16string>& reply) override {
     switch (vm_type_) {
       case VmType::kCrostiniVm:
         chrome::SettingsWindowManager::GetInstance()->ShowOSSettings(
diff --git a/chrome/browser/chromeos/child_accounts/time_limit_notifier.cc b/chrome/browser/chromeos/child_accounts/time_limit_notifier.cc
index 72ee8c4..23fd496 100644
--- a/chrome/browser/chromeos/child_accounts/time_limit_notifier.cc
+++ b/chrome/browser/chromeos/child_accounts/time_limit_notifier.cc
@@ -44,8 +44,8 @@
 // The notifier id representing the app.
 constexpr char kTimeLimitNotifierId[] = "family-link";
 
-void ShowNotification(base::string16 title,
-                      base::string16 message,
+void ShowNotification(std::u16string title,
+                      std::u16string message,
                       const std::string& notification_id,
                       content::BrowserContext* context) {
   message_center::RichNotificationData option_fields;
@@ -70,7 +70,7 @@
                 /*metadata=*/nullptr);
 }
 
-base::string16 RemainingTimeString(base::TimeDelta time_remaining) {
+std::u16string RemainingTimeString(base::TimeDelta time_remaining) {
   return ui::TimeFormat::Simple(ui::TimeFormat::FORMAT_DURATION,
                                 ui::TimeFormat::LENGTH_LONG, time_remaining);
 }
@@ -99,7 +99,7 @@
       break;
   }
 
-  const base::string16 title = l10n_util::GetStringUTF16(title_id);
+  const std::u16string title = l10n_util::GetStringUTF16(title_id);
 
   if (remaining_time >= kWarningNotificationTimeout) {
     warning_notification_timer_.Start(
@@ -121,7 +121,7 @@
     LimitType limit_type,
     base::Optional<base::Time> lock_time) {
   int title_id;
-  base::string16 message;
+  std::u16string message;
   std::string notification_id;
   switch (limit_type) {
     case LimitType::kScreenTime:
diff --git a/chrome/browser/chromeos/child_accounts/time_limits/app_time_controller.cc b/chrome/browser/chromeos/child_accounts/time_limits/app_time_controller.cc
index a58e7d6..71119cee 100644
--- a/chrome/browser/chromeos/child_accounts/time_limits/app_time_controller.cc
+++ b/chrome/browser/chromeos/child_accounts/time_limits/app_time_controller.cc
@@ -82,13 +82,13 @@
 // formatted result will be one value or two values: for example if the time
 // delta is 2 hours 30 minutes: |cutoff| of <2 will result in "2 hours" and
 // |cutoff| of 3 will result in "2 hours and 30 minutes".
-base::string16 GetTimeLimitMessage(base::TimeDelta time_limit, int cutoff) {
+std::u16string GetTimeLimitMessage(base::TimeDelta time_limit, int cutoff) {
   return ui::TimeFormat::Detailed(ui::TimeFormat::Format::FORMAT_DURATION,
                                   ui::TimeFormat::Length::LENGTH_LONG, cutoff,
                                   time_limit);
 }
 
-base::string16 GetNotificationTitleFor(const base::string16& app_name,
+std::u16string GetNotificationTitleFor(const std::u16string& app_name,
                                        AppNotification notification) {
   switch (notification) {
     case AppNotification::kFiveMinutes:
@@ -107,8 +107,8 @@
   }
 }
 
-base::string16 GetNotificationMessageFor(
-    const base::string16& app_name,
+std::u16string GetNotificationMessageFor(
+    const std::u16string& app_name,
     AppNotification notification,
     base::Optional<base::TimeDelta> time_limit) {
   switch (notification) {
@@ -619,13 +619,13 @@
          notification == AppNotification::kAvailable || time_limit.has_value());
 
   // Alright we have all the messages that we want.
-  const base::string16 app_name_16 = base::UTF8ToUTF16(app_name);
-  const base::string16 title =
+  const std::u16string app_name_16 = base::UTF8ToUTF16(app_name);
+  const std::u16string title =
       GetNotificationTitleFor(app_name_16, notification);
-  const base::string16 message =
+  const std::u16string message =
       GetNotificationMessageFor(app_name_16, notification, time_limit);
   // Family link display source.
-  const base::string16 notification_source =
+  const std::u16string notification_source =
       l10n_util::GetStringUTF16(IDS_TIME_LIMIT_NOTIFICATION_DISPLAY_SOURCE);
 
   std::string notification_id = GetNotificationIdFor(app_name, notification);
diff --git a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_enforcer_browsertest.cc b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_enforcer_browsertest.cc
index c5f2112..b8daf189 100644
--- a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_enforcer_browsertest.cc
+++ b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_enforcer_browsertest.cc
@@ -420,7 +420,7 @@
   auto* navigation_observer =
       chromeos::app_time::WebTimeNavigationObserver::FromWebContents(
           web_contents);
-  base::string16 title = web_contents->GetTitle();
+  std::u16string title = web_contents->GetTitle();
   EXPECT_EQ(title, navigation_observer->previous_title());
 
   LoadFinishedWaiter waiter(web_contents, url);
diff --git a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_error_page/web_time_limit_error_page.cc b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_error_page/web_time_limit_error_page.cc
index 1a5dfb4..49aeaa2 100644
--- a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_error_page/web_time_limit_error_page.cc
+++ b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_error_page/web_time_limit_error_page.cc
@@ -22,18 +22,18 @@
 
 namespace {
 
-base::string16 GetTimeLimitMessage(base::TimeDelta time_limit) {
+std::u16string GetTimeLimitMessage(base::TimeDelta time_limit) {
   return ui::TimeFormat::Detailed(ui::TimeFormat::Format::FORMAT_DURATION,
                                   ui::TimeFormat::Length::LENGTH_LONG,
                                   /* cutoff */ 3, time_limit);
 }
 
 std::string GetWebTimeLimitErrorPage(
-    base::string16 block_header,
-    base::string16 block_message,
+    std::u16string block_header,
+    std::u16string block_message,
     base::TimeDelta time_limit,
     const std::string& app_locale,
-    const base::Optional<base::string16>& title) {
+    const base::Optional<std::u16string>& title) {
   base::DictionaryValue strings;
 
   if (!title.has_value()) {
@@ -66,7 +66,7 @@
 
 std::string GetWebTimeLimitChromeErrorPage(
     const std::string& domain,
-    const base::Optional<base::string16>& title,
+    const base::Optional<std::u16string>& title,
     base::TimeDelta time_limit,
     const std::string& app_locale) {
   auto block_header = l10n_util::GetStringFUTF16(
diff --git a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_error_page/web_time_limit_error_page.h b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_error_page/web_time_limit_error_page.h
index e6ed68f5..2df0c99 100644
--- a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_error_page/web_time_limit_error_page.h
+++ b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_error_page/web_time_limit_error_page.h
@@ -24,7 +24,7 @@
 // |app_locale| is used to specify the locale used by the browser.
 std::string GetWebTimeLimitChromeErrorPage(
     const std::string& domain,
-    const base::Optional<base::string16>& title,
+    const base::Optional<std::u16string>& title,
     base::TimeDelta time_limit,
     const std::string& app_locale);
 
diff --git a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_navigation_throttle.cc b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_navigation_throttle.cc
index 4404363..4acc678b6 100644
--- a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_navigation_throttle.cc
+++ b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_navigation_throttle.cc
@@ -184,7 +184,7 @@
 
     app_time::WebTimeNavigationObserver* observer =
         app_time::WebTimeNavigationObserver::FromWebContents(web_contents);
-    const base::Optional<base::string16>& prev_title =
+    const base::Optional<std::u16string>& prev_title =
         observer ? observer->previous_title() : base::nullopt;
 
     return NavigationThrottle::ThrottleCheckResult(
diff --git a/chrome/browser/chromeos/child_accounts/time_limits/web_time_navigation_observer.h b/chrome/browser/chromeos/child_accounts/time_limits/web_time_navigation_observer.h
index 3e2200f1..0732ef3 100644
--- a/chrome/browser/chromeos/child_accounts/time_limits/web_time_navigation_observer.h
+++ b/chrome/browser/chromeos/child_accounts/time_limits/web_time_navigation_observer.h
@@ -73,7 +73,7 @@
     return last_navigation_info_;
   }
 
-  const base::Optional<base::string16>& previous_title() const {
+  const base::Optional<std::u16string>& previous_title() const {
     return previous_title_;
   }
 
@@ -89,7 +89,7 @@
 
   base::Optional<NavigationInfo> last_navigation_info_ = base::nullopt;
 
-  base::Optional<base::string16> previous_title_;
+  base::Optional<std::u16string> previous_title_;
 
   WEB_CONTENTS_USER_DATA_KEY_DECL();
 };
diff --git a/chrome/browser/chromeos/chromebox_for_meetings/browser/cfm_memory_details.cc b/chrome/browser/chromeos/chromebox_for_meetings/browser/cfm_memory_details.cc
index 93e5fc8..5bd05def 100644
--- a/chrome/browser/chromeos/chromebox_for_meetings/browser/cfm_memory_details.cc
+++ b/chrome/browser/chromeos/chromebox_for_meetings/browser/cfm_memory_details.cc
@@ -71,7 +71,7 @@
 
       auto& titles = proc_mem_info_mojom->titles;
       titles.reserve(proc_mem_info.titles.size());
-      for (const base::string16& title : proc_mem_info.titles) {
+      for (const std::u16string& title : proc_mem_info.titles) {
         titles.push_back(base::UTF16ToUTF8(title));
       }
 
diff --git a/chrome/browser/chromeos/crostini/crostini_export_import_notification_controller.cc b/chrome/browser/chromeos/crostini/crostini_export_import_notification_controller.cc
index a68187b..c12c321 100644
--- a/chrome/browser/chromeos/crostini/crostini_export_import_notification_controller.cc
+++ b/chrome/browser/chromeos/crostini/crostini_export_import_notification_controller.cc
@@ -67,7 +67,7 @@
 
   notification_ = std::make_unique<message_center::Notification>(
       message_center::NOTIFICATION_TYPE_PROGRESS, notification_id,
-      base::string16(), base::string16(),
+      std::u16string(), std::u16string(),
       gfx::Image(),  // icon
       l10n_util::GetStringUTF16(
           IDS_CROSTINI_EXPORT_IMPORT_NOTIFICATION_DISPLAY_SOURCE),
@@ -185,7 +185,7 @@
 
 void CrostiniExportImportNotificationController::SetStatusFailedWithMessageUI(
     Status status,
-    const base::string16& message) {
+    const std::u16string& message) {
   switch (status) {
     case Status::FAILED_UNKNOWN_REASON:
       delegate_->SetCallback(base::BindRepeating(
diff --git a/chrome/browser/chromeos/crostini/crostini_export_import_notification_controller.h b/chrome/browser/chromeos/crostini/crostini_export_import_notification_controller.h
index 0560ae6e..22c3a93f 100644
--- a/chrome/browser/chromeos/crostini/crostini_export_import_notification_controller.h
+++ b/chrome/browser/chromeos/crostini/crostini_export_import_notification_controller.h
@@ -78,7 +78,7 @@
   void SetStatusDoneUI() override;
   void SetStatusCancelledUI() override;
   void SetStatusFailedWithMessageUI(Status status,
-                                    const base::string16& message) override;
+                                    const std::u16string& message) override;
 
   void on_notification_closed() { hidden_ = true; }
 
diff --git a/chrome/browser/chromeos/crostini/crostini_export_import_status_tracker.cc b/chrome/browser/chromeos/crostini/crostini_export_import_status_tracker.cc
index 0a9a405..9ef2d8bc 100644
--- a/chrome/browser/chromeos/crostini/crostini_export_import_status_tracker.cc
+++ b/chrome/browser/chromeos/crostini/crostini_export_import_status_tracker.cc
@@ -102,7 +102,7 @@
 
 void CrostiniExportImportStatusTracker::SetStatusFailedWithMessage(
     Status status,
-    const base::string16& message) {
+    const std::u16string& message) {
   DCHECK(status_ == Status::RUNNING || status_ == Status::CANCELLING);
   status_ = status;
   SetStatusFailedWithMessageUI(status, message);
diff --git a/chrome/browser/chromeos/crostini/crostini_export_import_status_tracker.h b/chrome/browser/chromeos/crostini/crostini_export_import_status_tracker.h
index 6e74ad9..2c71934 100644
--- a/chrome/browser/chromeos/crostini/crostini_export_import_status_tracker.h
+++ b/chrome/browser/chromeos/crostini/crostini_export_import_status_tracker.h
@@ -46,7 +46,7 @@
   virtual void SetStatusDoneUI() = 0;
   virtual void SetStatusCancelledUI() = 0;
   virtual void SetStatusFailedWithMessageUI(Status status,
-                                            const base::string16& message) = 0;
+                                            const std::u16string& message) = 0;
 
   void SetStatusRunning(int progress_percent);
   void SetStatusCancelling();
@@ -61,7 +61,7 @@
   void SetStatusFailedConcurrentOperation(
       ExportImportType in_progress_operation_type);
  private:
-  void SetStatusFailedWithMessage(Status status, const base::string16& message);
+  void SetStatusFailedWithMessage(Status status, const std::u16string& message);
 
   ExportImportType type_;
   base::FilePath path_;
diff --git a/chrome/browser/chromeos/crostini/crostini_package_notification.cc b/chrome/browser/chromeos/crostini/crostini_package_notification.cc
index 26c177d3..67a78528 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_notification.cc
+++ b/chrome/browser/chromeos/crostini/crostini_package_notification.cc
@@ -47,7 +47,7 @@
     NotificationType notification_type,
     PackageOperationStatus status,
     const ContainerId& container_id,
-    const base::string16& app_name,
+    const std::u16string& app_name,
     const std::string& notification_id,
     CrostiniPackageService* package_service)
     : notification_type_(notification_type),
@@ -71,7 +71,7 @@
 
   notification_ = std::make_unique<message_center::Notification>(
       message_center::NOTIFICATION_TYPE_PROGRESS, notification_id,
-      base::string16(), base::string16(),
+      std::u16string(), std::u16string(),
       gfx::Image(),  // icon
       notification_settings_.source,
       GURL(),  // origin_url
@@ -111,7 +111,7 @@
 CrostiniPackageNotification::NotificationSettings
 CrostiniPackageNotification::GetNotificationSettingsForTypeAndAppName(
     NotificationType notification_type,
-    const base::string16& app_name) {
+    const std::u16string& app_name) {
   NotificationSettings result;
 
   switch (notification_type) {
@@ -176,8 +176,8 @@
   }
   current_status_ = status;
 
-  base::string16 title;
-  base::string16 body;
+  std::u16string title;
+  std::u16string body;
   std::vector<message_center::ButtonInfo> buttons;
   message_center::NotificationType notification_type =
       message_center::NOTIFICATION_TYPE_SIMPLE;
@@ -281,7 +281,7 @@
 
 void CrostiniPackageNotification::Click(
     const base::Optional<int>& button_index,
-    const base::Optional<base::string16>& reply) {
+    const base::Optional<std::u16string>& reply) {
   if (current_status_ == PackageOperationStatus::FAILED) {
     crostini::ShowCrostiniPackageInstallFailureView(error_message_);
   }
diff --git a/chrome/browser/chromeos/crostini/crostini_package_notification.h b/chrome/browser/chromeos/crostini/crostini_package_notification.h
index 91e32a1..8178113 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_notification.h
+++ b/chrome/browser/chromeos/crostini/crostini_package_notification.h
@@ -38,7 +38,7 @@
                               NotificationType notification_type,
                               PackageOperationStatus status,
                               const ContainerId& container_id,
-                              const base::string16& app_name,
+                              const std::u16string& app_name,
                               const std::string& notification_id,
                               CrostiniPackageService* installer_service);
   ~CrostiniPackageNotification() override;
@@ -55,7 +55,7 @@
   void Close(bool by_user) override;
 
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
 
   // GuestOsRegistryService::Observer:
   void OnRegistryUpdated(
@@ -79,22 +79,22 @@
     NotificationSettings();
     NotificationSettings(const NotificationSettings& rhs);
     ~NotificationSettings();
-    base::string16 source;
-    base::string16 queued_title;
-    base::string16 queued_body;
-    base::string16 progress_title;
-    base::string16 progress_body;
-    base::string16 success_title;
-    base::string16 success_body;
-    base::string16 failure_title;
-    base::string16 failure_body;
+    std::u16string source;
+    std::u16string queued_title;
+    std::u16string queued_body;
+    std::u16string progress_title;
+    std::u16string progress_body;
+    std::u16string success_title;
+    std::u16string success_body;
+    std::u16string failure_title;
+    std::u16string failure_body;
   };
 
   void UpdateDisplayedNotification();
 
   static NotificationSettings GetNotificationSettingsForTypeAndAppName(
       NotificationType notification_type,
-      const base::string16& app_name);
+      const std::u16string& app_name);
 
   const NotificationType notification_type_;
   PackageOperationStatus current_status_;
diff --git a/chrome/browser/chromeos/crostini/crostini_package_notification_unittest.cc b/chrome/browser/chromeos/crostini/crostini_package_notification_unittest.cc
index e881b85..0667d7bd 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_notification_unittest.cc
+++ b/chrome/browser/chromeos/crostini/crostini_package_notification_unittest.cc
@@ -64,7 +64,7 @@
       profile_.get(),
       CrostiniPackageNotification::NotificationType::PACKAGE_INSTALL,
       PackageOperationStatus::RUNNING, ContainerId::GetDefault(),
-      base::string16(), kNotificationId, service_.get());
+      std::u16string(), kNotificationId, service_.get());
 
   notification.UpdateProgress(PackageOperationStatus::SUCCEEDED, 100);
   EXPECT_EQ(notification.GetButtonCountForTesting(), 0);
@@ -75,7 +75,7 @@
       profile_.get(),
       CrostiniPackageNotification::NotificationType::PACKAGE_INSTALL,
       PackageOperationStatus::RUNNING, ContainerId::GetDefault(),
-      base::string16(), kNotificationId, service_.get());
+      std::u16string(), kNotificationId, service_.get());
 
   auto app = CrostiniTestHelper::BasicApp(kDefaultAppFileId);
   crostini_test_helper_->AddApp(app);
@@ -89,7 +89,7 @@
       profile_.get(),
       CrostiniPackageNotification::NotificationType::PACKAGE_INSTALL,
       PackageOperationStatus::RUNNING, ContainerId::GetDefault(),
-      base::string16(), kNotificationId, service_.get());
+      std::u16string(), kNotificationId, service_.get());
 
   auto app = CrostiniTestHelper::BasicApp(kDefaultAppFileId);
   crostini_test_helper_->AddApp(app);
@@ -110,7 +110,7 @@
       CrostiniPackageNotification::NotificationType::PACKAGE_INSTALL,
       PackageOperationStatus::RUNNING,
       ContainerId(kCrostiniDefaultVmName, kCrostiniDefaultContainerName),
-      base::string16(), kNotificationId, service_.get());
+      std::u16string(), kNotificationId, service_.get());
 
   app = CrostiniTestHelper::BasicApp(kSecondAppFileId);
   crostini_test_helper_->AddApp(app);
@@ -125,7 +125,7 @@
       CrostiniPackageNotification::NotificationType::PACKAGE_INSTALL,
       PackageOperationStatus::RUNNING,
       ContainerId(kCrostiniDefaultVmName, kCrostiniDefaultContainerName),
-      base::string16(), kNotificationId, service_.get());
+      std::u16string(), kNotificationId, service_.get());
 
   // Initially, the error message is blank.
   EXPECT_EQ(notification.GetErrorMessageForTesting(), "");
diff --git a/chrome/browser/chromeos/crostini/crostini_package_service.cc b/chrome/browser/chromeos/crostini/crostini_package_service.cc
index 40a0c2f..08c55f9 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_service.cc
+++ b/chrome/browser/chromeos/crostini/crostini_package_service.cc
@@ -377,7 +377,7 @@
           profile_,
           CrostiniPackageNotification::NotificationType::PACKAGE_INSTALL,
           PackageOperationStatus::QUEUED, container_id,
-          /*app_name=*/base::string16(), GetUniqueNotificationId(), this));
+          /*app_name=*/std::u16string(), GetUniqueNotificationId(), this));
 }
 
 void CrostiniPackageService::UpdatePackageOperationStatus(
diff --git a/chrome/browser/chromeos/crostini/crostini_package_service_unittest.cc b/chrome/browser/chromeos/crostini/crostini_package_service_unittest.cc
index 974dfa6..5c95e39 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_service_unittest.cc
+++ b/chrome/browser/chromeos/crostini/crostini_package_service_unittest.cc
@@ -432,7 +432,7 @@
 };
 
 // Returns the app name for one of the known apps.
-base::string16 GetAppName(KnownApp app) {
+std::u16string GetAppName(KnownApp app) {
   switch (app) {
     case DEFAULT_APP:
       return base::ASCIIToUTF16(kDefaultAppName);
@@ -470,15 +470,15 @@
         message_(base.message()),
         progress_(base.progress()) {}
 
-  const base::string16& display_source() const { return display_source_; }
-  const base::string16& title() const { return title_; }
-  const base::string16& message() const { return message_; }
+  const std::u16string& display_source() const { return display_source_; }
+  const std::u16string& title() const { return title_; }
+  const std::u16string& message() const { return message_; }
   int progress() const { return progress_; }
 
  private:
-  const base::string16 display_source_;
-  const base::string16 title_;
-  const base::string16 message_;
+  const std::u16string display_source_;
+  const std::u16string title_;
+  const std::u16string message_;
   const int progress_;
 };
 
@@ -508,17 +508,17 @@
 
 class NotificationMatcher : public MatcherInterface<PrintableNotification> {
  public:
-  NotificationMatcher(const base::string16& expected_source,
-                      const base::string16& expected_title,
-                      const base::string16& expected_message)
+  NotificationMatcher(const std::u16string& expected_source,
+                      const std::u16string& expected_title,
+                      const std::u16string& expected_message)
       : expected_source_(expected_source),
         expected_title_(expected_title),
         check_message_(true),
         expected_message_(expected_message),
         check_progress_(false),
         expected_progress_(-1) {}
-  NotificationMatcher(const base::string16& expected_source,
-                      const base::string16& expected_title,
+  NotificationMatcher(const std::u16string& expected_source,
+                      const std::u16string& expected_title,
                       int expected_progress)
       : expected_source_(expected_source),
         expected_title_(expected_title),
@@ -585,10 +585,10 @@
   }
 
  private:
-  const base::string16 expected_source_;
-  const base::string16 expected_title_;
+  const std::u16string expected_source_;
+  const std::u16string expected_title_;
   const bool check_message_;
-  const base::string16 expected_message_;
+  const std::u16string expected_message_;
   const bool check_progress_;
   const int expected_progress_;
 };
diff --git a/chrome/browser/chromeos/crostini/crostini_shelf_utils.cc b/chrome/browser/chromeos/crostini/crostini_shelf_utils.cc
index 9398b239..35c10d32 100644
--- a/chrome/browser/chromeos/crostini/crostini_shelf_utils.cc
+++ b/chrome/browser/chromeos/crostini/crostini_shelf_utils.cc
@@ -232,13 +232,13 @@
              ->FindKey(shelf_app_id) != nullptr;
 }
 
-base::string16 GetCrostiniShelfTitle(base::StringPiece shelf_app_id) {
+std::u16string GetCrostiniShelfTitle(base::StringPiece shelf_app_id) {
   if (shelf_app_id == kCrostiniInstallerShelfId) {
     return l10n_util::GetStringUTF16(IDS_CROSTINI_INSTALLER_INSTALLING);
   } else if (shelf_app_id == kCrostiniUpgraderShelfId) {
     return l10n_util::GetStringUTF16(IDS_CROSTINI_UPGRADING_LABEL);
   }
-  return base::string16();
+  return std::u16string();
 }
 
 }  // namespace crostini
diff --git a/chrome/browser/chromeos/crostini/crostini_shelf_utils.h b/chrome/browser/chromeos/crostini/crostini_shelf_utils.h
index 819d1ff..0ff0cee8 100644
--- a/chrome/browser/chromeos/crostini/crostini_shelf_utils.h
+++ b/chrome/browser/chromeos/crostini/crostini_shelf_utils.h
@@ -40,7 +40,7 @@
                           base::StringPiece shelf_app_id);
 
 // Returns the title for the specified app.
-base::string16 GetCrostiniShelfTitle(base::StringPiece shelf_app_id);
+std::u16string GetCrostiniShelfTitle(base::StringPiece shelf_app_id);
 
 }  // namespace crostini
 
diff --git a/chrome/browser/chromeos/crostini/crostini_upgrade_available_notification.cc b/chrome/browser/chromeos/crostini/crostini_upgrade_available_notification.cc
index fdee36f6..1ee265f 100644
--- a/chrome/browser/chromeos/crostini/crostini_upgrade_available_notification.cc
+++ b/chrome/browser/chromeos/crostini/crostini_upgrade_available_notification.cc
@@ -34,7 +34,7 @@
   }
 
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override {
+             const base::Optional<std::u16string>& reply) override {
     disposition_ =
         CrostiniUpgradeAvailableNotificationClosed::kNotificationBody;
     if (button_index && button_index.value() == 0) {
@@ -112,7 +112,7 @@
           IDS_CROSTINI_UPGRADE_AVAILABLE_NOTIFICATION_TITLE),
       l10n_util::GetStringUTF16(
           IDS_CROSTINI_UPGRADE_AVAILABLE_NOTIFICATION_BODY),
-      gfx::Image(), base::string16(), GURL(),
+      gfx::Image(), std::u16string(), GURL(),
       message_center::NotifierId(message_center::NotifierType::SYSTEM_COMPONENT,
                                  kNotifierCrostiniUpgradeAvailable),
       rich_notification_data,
diff --git a/chrome/browser/chromeos/crostini/crostini_upgrader.cc b/chrome/browser/chromeos/crostini/crostini_upgrader.cc
index 6df2051..72579e8b 100644
--- a/chrome/browser/chromeos/crostini/crostini_upgrader.cc
+++ b/chrome/browser/chromeos/crostini/crostini_upgrader.cc
@@ -135,7 +135,7 @@
 
 void CrostiniUpgrader::StatusTracker::SetStatusFailedWithMessageUI(
     Status status,
-    const base::string16& message) {
+    const std::u16string& message) {
   CrostiniResult result = CrostiniResult::CONTAINER_EXPORT_IMPORT_FAILED;
   if (status == Status::FAILED_INSUFFICIENT_SPACE) {
     result = CrostiniResult::CONTAINER_EXPORT_IMPORT_FAILED_SPACE;
diff --git a/chrome/browser/chromeos/crostini/crostini_upgrader.h b/chrome/browser/chromeos/crostini/crostini_upgrader.h
index 76f437d..12e39e0 100644
--- a/chrome/browser/chromeos/crostini/crostini_upgrader.h
+++ b/chrome/browser/chromeos/crostini/crostini_upgrader.h
@@ -101,7 +101,7 @@
     void SetStatusDoneUI() override;
     void SetStatusCancelledUI() override;
     void SetStatusFailedWithMessageUI(Status status,
-                                      const base::string16& message) override;
+                                      const std::u16string& message) override;
 
    private:
     bool has_notified_start_ = false;
diff --git a/chrome/browser/chromeos/crostini/crostini_util.cc b/chrome/browser/chromeos/crostini/crostini_util.cc
index ef47a0e..16d5a2ce 100644
--- a/chrome/browser/chromeos/crostini/crostini_util.cc
+++ b/chrome/browser/chromeos/crostini/crostini_util.cc
@@ -549,7 +549,7 @@
   }
 }
 
-base::string16 GetTimeRemainingMessage(base::TimeTicks start, int percent) {
+std::u16string GetTimeRemainingMessage(base::TimeTicks start, int percent) {
   // Only estimate once we've spent at least 3 seconds OR gotten 10% of the way
   // through.
   constexpr base::TimeDelta kMinTimeForEstimate =
@@ -569,7 +569,6 @@
   }
 }
 
-
 const ContainerId& DefaultContainerId() {
   static const base::NoDestructor<ContainerId> container_id(
       kCrostiniDefaultVmName, kCrostiniDefaultContainerName);
diff --git a/chrome/browser/chromeos/crostini/crostini_util.h b/chrome/browser/chromeos/crostini/crostini_util.h
index bae86682..5b6ecf2 100644
--- a/chrome/browser/chromeos/crostini/crostini_util.h
+++ b/chrome/browser/chromeos/crostini/crostini_util.h
@@ -194,7 +194,7 @@
 // Returns a string to be displayed in a notification with the estimated time
 // left for an operation to run which started and time |start| and is current
 // at |percent| way through.
-base::string16 GetTimeRemainingMessage(base::TimeTicks start, int percent);
+std::u16string GetTimeRemainingMessage(base::TimeTicks start, int percent);
 
 // Returns a pref value stored for a specific container.
 const base::Value* GetContainerPrefValue(Profile* profile,
diff --git a/chrome/browser/chromeos/eol_notification.cc b/chrome/browser/chromeos/eol_notification.cc
index 426e189..29960f9 100644
--- a/chrome/browser/chromeos/eol_notification.cc
+++ b/chrome/browser/chromeos/eol_notification.cc
@@ -133,7 +133,7 @@
                                    /*time_zone=*/icu::TimeZone::getGMT())),
         l10n_util::GetStringFUTF16(IDS_PENDING_EOL_NOTIFICATION_MESSAGE,
                                    ui::GetChromeOSDeviceName()),
-        base::string16() /* display_source */, GURL(kEolNotificationId),
+        std::u16string() /* display_source */, GURL(kEolNotificationId),
         message_center::NotifierId(
             message_center::NotifierType::SYSTEM_COMPONENT, kEolNotificationId),
         data,
@@ -151,7 +151,7 @@
         GetStringUTF16(IDS_EOL_NOTIFICATION_TITLE),
         l10n_util::GetStringFUTF16(IDS_EOL_NOTIFICATION_EOL,
                                    ui::GetChromeOSDeviceName()),
-        base::string16() /* display_source */, GURL(kEolNotificationId),
+        std::u16string() /* display_source */, GURL(kEolNotificationId),
         message_center::NotifierId(
             message_center::NotifierType::SYSTEM_COMPONENT, kEolNotificationId),
         data,
@@ -179,7 +179,7 @@
 }
 
 void EolNotification::Click(const base::Optional<int>& button_index,
-                            const base::Optional<base::string16>& reply) {
+                            const base::Optional<std::u16string>& reply) {
   if (!button_index)
     return;
 
diff --git a/chrome/browser/chromeos/eol_notification.h b/chrome/browser/chromeos/eol_notification.h
index c937eec2..590b31d 100644
--- a/chrome/browser/chromeos/eol_notification.h
+++ b/chrome/browser/chromeos/eol_notification.h
@@ -39,7 +39,7 @@
   void Close(bool by_user) override;
 
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
 
  private:
   friend class EolNotificationTest;
diff --git a/chrome/browser/chromeos/eol_notification_unittest.cc b/chrome/browser/chromeos/eol_notification_unittest.cc
index 869ff5e..b5e95a3 100644
--- a/chrome/browser/chromeos/eol_notification_unittest.cc
+++ b/chrome/browser/chromeos/eol_notification_unittest.cc
@@ -100,9 +100,9 @@
   auto notification = tester_->GetNotification("chrome://product_eol");
   ASSERT_TRUE(notification);
 
-  base::string16 expected_title =
+  std::u16string expected_title =
       base::ASCIIToUTF16("Updates end December 2019");
-  base::string16 expected_message = base::ASCIIToUTF16(
+  std::u16string expected_message = base::ASCIIToUTF16(
       "You'll still be able to use this Chrome device after that time, but it "
       "will no longer get automatic software and security updates");
   EXPECT_EQ(notification->title(), expected_title);
@@ -124,9 +124,9 @@
   auto notification = tester_->GetNotification("chrome://product_eol");
   ASSERT_TRUE(notification);
 
-  base::string16 expected_title =
+  std::u16string expected_title =
       base::ASCIIToUTF16("Updates end December 2019");
-  base::string16 expected_message = base::ASCIIToUTF16(
+  std::u16string expected_message = base::ASCIIToUTF16(
       "You'll still be able to use this Chrome device after that time, but it "
       "will no longer get automatic software and security updates");
   EXPECT_EQ(notification->title(), expected_title);
@@ -153,8 +153,8 @@
   auto notification = tester_->GetNotification("chrome://product_eol");
   ASSERT_TRUE(notification);
 
-  base::string16 expected_title = base::ASCIIToUTF16("Final software update");
-  base::string16 expected_message = base::ASCIIToUTF16(
+  std::u16string expected_title = base::ASCIIToUTF16("Final software update");
+  std::u16string expected_message = base::ASCIIToUTF16(
       "This is the last automatic software and security update for this Chrome "
       "device. To get future updates, upgrade to a newer model.");
   EXPECT_EQ(notification->title(), expected_title);
@@ -255,9 +255,9 @@
   auto notification = tester_->GetNotification("chrome://product_eol");
   ASSERT_TRUE(notification);
 
-  base::string16 expected_title =
+  std::u16string expected_title =
       base::ASCIIToUTF16("Updates end December 2019");
-  base::string16 expected_message = base::ASCIIToUTF16(
+  std::u16string expected_message = base::ASCIIToUTF16(
       "You'll still be able to use this Chrome device after that time, but it "
       "will no longer get automatic software and security updates");
   EXPECT_EQ(notification->title(), expected_title);
diff --git a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc
index f754894559..2e7ebb7f 100644
--- a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc
+++ b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate.cc
@@ -99,7 +99,7 @@
     lines.push_back(url.spec());
   }
   // Arc requires UTF16 for data.
-  base::string16 data =
+  std::u16string data =
       base::UTF8ToUTF16(base::JoinString(lines, kUriListSeparator));
   std::move(callback).Run(base::RefCountedString16::TakeString(&data));
 }
@@ -256,7 +256,7 @@
   std::string joined = base::JoinString(lines_to_send, kUriListSeparator);
   scoped_refptr<base::RefCountedMemory> data;
   if (is_arc) {
-    base::string16 utf16 = base::UTF8ToUTF16(joined);
+    std::u16string utf16 = base::UTF8ToUTF16(joined);
     data = base::RefCountedString16::TakeString(&utf16);
   } else {
     data = base::RefCountedString::TakeString(&joined);
@@ -389,7 +389,7 @@
   }
   base::Pickle pickle;
   ui::WriteCustomDataToPickle(
-      std::unordered_map<base::string16, base::string16>(
+      std::unordered_map<std::u16string, std::u16string>(
           {{kFilesAppMimeTag, kFilesAppTagExo},
            {kFilesAppMimeSources, base::UTF8ToUTF16(base::JoinString(
                                       filenames, kFilesAppSeparator))}}),
@@ -412,7 +412,7 @@
   }
 
   const ui::DataTransferEndpoint data_dst(target);
-  base::string16 file_system_url_list;
+  std::u16string file_system_url_list;
   data.ReadCustomData(ui::ClipboardBuffer::kCopyPaste, kFilesAppMimeSources,
                       &data_dst, &file_system_url_list);
   if (file_system_url_list.empty())
diff --git a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate_unittest.cc b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate_unittest.cc
index 9036d0a0..732975c9 100644
--- a/chrome/browser/chromeos/exo/chrome_data_exchange_delegate_unittest.cc
+++ b/chrome/browser/chromeos/exo/chrome_data_exchange_delegate_unittest.cc
@@ -449,7 +449,7 @@
       Data("file:///mnt/chromeos/MyFiles/shared/file1\n"
            "file:///mnt/chromeos/MyFiles/shared/file2"));
 
-  std::unordered_map<base::string16, base::string16> m;
+  std::unordered_map<std::u16string, std::u16string> m;
   ui::ReadCustomDataIntoMap(pickle.data(), pickle.size(), &m);
   EXPECT_EQ(2, m.size());
   EXPECT_EQ("exo", base::UTF16ToUTF8(m[u"fs/tag"]));
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
index 21d7496..caa594d0 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -1949,7 +1949,7 @@
 
 ExtensionFunction::ResponseAction
 AutotestPrivateGetClipboardTextDataFunction::Run() {
-  base::string16 data;
+  std::u16string data;
   // This clipboard data read is initiated an extension API, then the user
   // shouldn't see a notification if the clipboard is restricted by the rules of
   // data leak prevention policy.
@@ -1977,7 +1977,7 @@
       api::autotest_private::SetClipboardTextData::Params::Create(*args_));
   EXTENSION_FUNCTION_VALIDATE(params);
 
-  const base::string16 data = base::UTF8ToUTF16(params->data);
+  const std::u16string data = base::UTF8ToUTF16(params->data);
   ui::ScopedClipboardWriter clipboard_writer(ui::ClipboardBuffer::kCopyPaste);
   clipboard_writer.WriteText(data);
 
diff --git a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
index 8448a331..0e0a06e4 100644
--- a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
+++ b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.cc
@@ -829,7 +829,7 @@
 
 bool DeviceLocalAccountManagementPolicyProvider::UserMayLoad(
     const extensions::Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   if (account_type_ == policy::DeviceLocalAccount::TYPE_PUBLIC_SESSION ||
       account_type_ == policy::DeviceLocalAccount::TYPE_SAML_PUBLIC_SESSION) {
     // Allow extension if it is a component of Chrome.
diff --git a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.h b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.h
index cefb10f7..970beac 100644
--- a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.h
+++ b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider.h
@@ -33,7 +33,7 @@
   // extensions::ManagementPolicy::Provider:
   std::string GetDebugPolicyProviderName() const override;
   bool UserMayLoad(const extensions::Extension* extension,
-                   base::string16* error) const override;
+                   std::u16string* error) const override;
 
  private:
   const policy::DeviceLocalAccount::Type account_type_;
diff --git a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider_unittest.cc b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider_unittest.cc
index db94049a..4379a634 100644
--- a/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider_unittest.cc
+++ b/chrome/browser/chromeos/extensions/device_local_account_management_policy_provider_unittest.cc
@@ -109,15 +109,15 @@
   scoped_refptr<const extensions::Extension> extension =
       CreateExternalComponentExtension();
   ASSERT_TRUE(extension.get());
-  base::string16 error;
+  std::u16string error;
   EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-  EXPECT_EQ(base::string16(), error);
+  EXPECT_EQ(std::u16string(), error);
   error.clear();
 
   extension = CreateComponentExtension();
   ASSERT_TRUE(extension.get());
   EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-  EXPECT_EQ(base::string16(), error);
+  EXPECT_EQ(std::u16string(), error);
   error.clear();
 
   // Verify that if an extension's type has been whitelisted for use in
@@ -125,7 +125,7 @@
   extension = CreateHostedApp();
   ASSERT_TRUE(extension.get());
   EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-  EXPECT_EQ(base::string16(), error);
+  EXPECT_EQ(std::u16string(), error);
   error.clear();
 
   // Verify that if an extension's ID has been explicitly whitelisted for use in
@@ -133,7 +133,7 @@
   extension = CreateRegularExtension(kWhitelistedId);
   ASSERT_TRUE(extension.get());
   EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-  EXPECT_EQ(base::string16(), error);
+  EXPECT_EQ(std::u16string(), error);
   error.clear();
 
   // Verify that if neither the location, type nor the ID of an extension have
@@ -142,7 +142,7 @@
   extension = CreateRegularExtension(std::string());
   ASSERT_TRUE(extension.get());
   EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-  EXPECT_NE(base::string16(), error);
+  EXPECT_NE(std::u16string(), error);
   error.clear();
 
   // Verify that a minimal platform app can be installed from location
@@ -156,7 +156,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -171,7 +171,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -186,7 +186,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -211,7 +211,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -227,7 +227,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -246,7 +246,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -262,7 +262,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -278,7 +278,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -299,7 +299,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -317,7 +317,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -336,7 +336,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -356,7 +356,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -376,7 +376,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -396,7 +396,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -416,7 +416,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -436,7 +436,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -457,7 +457,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -475,7 +475,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -498,7 +498,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -521,7 +521,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 
@@ -536,7 +536,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -552,7 +552,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -568,7 +568,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 
@@ -585,7 +585,7 @@
     ASSERT_TRUE(extension);
 
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
   }
 }
@@ -602,9 +602,9 @@
     // Verify that a platform app can be installed.
     scoped_refptr<const extensions::Extension> extension = CreatePlatformApp();
     ASSERT_TRUE(extension.get());
-    base::string16 error;
+    std::u16string error;
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
 
     // Verify that an extension whose location has been whitelisted for use in
@@ -613,13 +613,13 @@
     extension = CreateExternalComponentExtension();
     ASSERT_TRUE(extension.get());
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
 
     extension = CreateComponentExtension();
     ASSERT_TRUE(extension.get());
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
 
     // Verify that an extension whose type has been whitelisted for use in other
@@ -628,7 +628,7 @@
     extension = CreateHostedApp();
     ASSERT_TRUE(extension.get());
     EXPECT_FALSE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_NE(base::string16(), error);
+    EXPECT_NE(std::u16string(), error);
     error.clear();
 
     // Verify that an extension whose ID has been whitelisted for use in other
@@ -637,7 +637,7 @@
     extension = CreateRegularExtension(kWhitelistedId);
     ASSERT_TRUE(extension.get());
     EXPECT_TRUE(provider.UserMayLoad(extension.get(), &error));
-    EXPECT_EQ(base::string16(), error);
+    EXPECT_EQ(std::u16string(), error);
     error.clear();
   }
 }
diff --git a/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc b/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc
index f5fc1e6..88f6b9d1 100644
--- a/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc
+++ b/chrome/browser/chromeos/extensions/file_manager/file_browser_handler_api.cc
@@ -218,7 +218,7 @@
 
   dialog_->SelectFile(
       ui::SelectFileDialog::SELECT_SAVEAS_FILE,
-      base::string16() /* dialog title*/, suggested_name, &allowed_file_info,
+      std::u16string() /* dialog title*/, suggested_name, &allowed_file_info,
       0 /* file type index */, std::string() /* default file extension */,
       browser->window()->GetNativeWindow(), nullptr /* params */);
 
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc
index 9a05e42..d7036a8a 100644
--- a/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc
+++ b/chrome/browser/chromeos/extensions/file_manager/private_api_drive.cc
@@ -722,7 +722,7 @@
     return;
   }
 
-  std::vector<base::string16> keywords =
+  std::vector<std::u16string> keywords =
       base::SplitString(base::UTF8ToUTF16(query_text),
                         base::StringPiece16(base::kWhitespaceUTF16),
                         base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
diff --git a/chrome/browser/chromeos/extensions/printing/print_job_controller.cc b/chrome/browser/chromeos/extensions/printing/print_job_controller.cc
index 1f79c8e..dff6c76 100644
--- a/chrome/browser/chromeos/extensions/printing/print_job_controller.cc
+++ b/chrome/browser/chromeos/extensions/printing/print_job_controller.cc
@@ -162,7 +162,7 @@
 
   auto job = base::MakeRefCounted<printing::PrintJob>();
   // Save in separate variable because |query| is moved.
-  base::string16 title = query->settings().title();
+  std::u16string title = query->settings().title();
   job->Initialize(std::move(query), title, /*page_count=*/1);
   job->SetSource(printing::PrintJob::Source::EXTENSION, extension_id);
   printing::PrintedDocument* document = job->document();
diff --git a/chrome/browser/chromeos/extensions/printing/print_job_submitter.h b/chrome/browser/chromeos/extensions/printing/print_job_submitter.h
index af31e0e..79ed4e91 100644
--- a/chrome/browser/chromeos/extensions/printing/print_job_submitter.h
+++ b/chrome/browser/chromeos/extensions/printing/print_job_submitter.h
@@ -129,7 +129,7 @@
   scoped_refptr<const extensions::Extension> extension_;
   api::printing::SubmitJobRequest request_;
   std::unique_ptr<printing::PrintSettings> settings_;
-  base::string16 printer_name_;
+  std::u16string printer_name_;
   base::ReadOnlySharedMemoryMapping flattened_pdf_mapping_;
   // This is cleared after the request is handled (successfully or not).
   SubmitJobCallback callback_;
diff --git a/chrome/browser/chromeos/extensions/signin_screen_policy_provider.cc b/chrome/browser/chromeos/extensions/signin_screen_policy_provider.cc
index ccf4809..988bd9a 100644
--- a/chrome/browser/chromeos/extensions/signin_screen_policy_provider.cc
+++ b/chrome/browser/chromeos/extensions/signin_screen_policy_provider.cc
@@ -43,7 +43,7 @@
 
 bool SigninScreenPolicyProvider::UserMayLoad(
     const extensions::Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   if (g_bypass_checks_for_testing)
     return true;
   const extensions::Feature* feature =
diff --git a/chrome/browser/chromeos/extensions/signin_screen_policy_provider.h b/chrome/browser/chromeos/extensions/signin_screen_policy_provider.h
index 9e2785a..7dca884 100644
--- a/chrome/browser/chromeos/extensions/signin_screen_policy_provider.h
+++ b/chrome/browser/chromeos/extensions/signin_screen_policy_provider.h
@@ -26,7 +26,7 @@
   // extensions::ManagementPolicy::Provider:
   std::string GetDebugPolicyProviderName() const override;
   bool UserMayLoad(const extensions::Extension* extension,
-                   base::string16* error) const override;
+                   std::u16string* error) const override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(SigninScreenPolicyProvider);
diff --git a/chrome/browser/chromeos/extensions/signin_screen_policy_provider_unittest.cc b/chrome/browser/chromeos/extensions/signin_screen_policy_provider_unittest.cc
index 6ab930e..46dfc17 100644
--- a/chrome/browser/chromeos/extensions/signin_screen_policy_provider_unittest.cc
+++ b/chrome/browser/chromeos/extensions/signin_screen_policy_provider_unittest.cc
@@ -65,7 +65,7 @@
   // Arbitrary extension (though installed via policy) should be blocked.
   scoped_refptr<const extensions::Extension> extension = CreateTestApp(
       kRandomExtensionId, extensions::Manifest::Location::EXTERNAL_POLICY);
-  base::string16 error;
+  std::u16string error;
   EXPECT_FALSE(provider_.UserMayLoad(extension.get(), &error));
   EXPECT_FALSE(error.empty());
 }
@@ -74,7 +74,7 @@
   // Essential component extensions for the login screen should always work.
   scoped_refptr<const extensions::Extension> extension = CreateTestApp(
       kGnubbyExtensionId, extensions::Manifest::Location::EXTERNAL_COMPONENT);
-  base::string16 error;
+  std::u16string error;
   EXPECT_TRUE(provider_.UserMayLoad(extension.get(), &error));
   EXPECT_TRUE(error.empty());
 }
@@ -87,7 +87,7 @@
   scoped_refptr<const extensions::Extension> extension =
       CreateTestApp(kSampleSigninExtensionId,
                     extensions::Manifest::Location::EXTERNAL_POLICY);
-  base::string16 error;
+  std::u16string error;
   EXPECT_TRUE(provider_.UserMayLoad(extension.get(), &error));
   EXPECT_TRUE(error.empty());
 }
@@ -99,7 +99,7 @@
   scoped_refptr<const extensions::Extension> extension =
       CreateTestApp(kSampleSigninExtensionId,
                     extensions::Manifest::Location::EXTERNAL_COMPONENT);
-  base::string16 error;
+  std::u16string error;
   EXPECT_FALSE(provider_.UserMayLoad(extension.get(), &error));
   EXPECT_FALSE(error.empty());
 }
@@ -107,7 +107,7 @@
 TEST_F(SigninScreenPolicyProviderTest, DenyRandomNonPolicyExtension) {
   scoped_refptr<const extensions::Extension> extension = CreateTestApp(
       kRandomExtensionId, extensions::Manifest::Location::EXTERNAL_COMPONENT);
-  base::string16 error;
+  std::u16string error;
   EXPECT_FALSE(provider_.UserMayLoad(extension.get(), &error));
   EXPECT_FALSE(error.empty());
 }
diff --git a/chrome/browser/chromeos/external_protocol_dialog.cc b/chrome/browser/chromeos/external_protocol_dialog.cc
index dd26eaad..9b093db40 100644
--- a/chrome/browser/chromeos/external_protocol_dialog.cc
+++ b/chrome/browser/chromeos/external_protocol_dialog.cc
@@ -116,7 +116,7 @@
 
 ExternalProtocolNoHandlersDialog::~ExternalProtocolNoHandlersDialog() = default;
 
-base::string16 ExternalProtocolNoHandlersDialog::GetWindowTitle() const {
+std::u16string ExternalProtocolNoHandlersDialog::GetWindowTitle() const {
   // If click to call feature is available, we display a message to the user on
   // how to use the feature.
   // TODO(crbug.com/1007995) - This is a hotfix for M78 and we plan to use our
diff --git a/chrome/browser/chromeos/external_protocol_dialog.h b/chrome/browser/chromeos/external_protocol_dialog.h
index 769c36b..f4afe9cd 100644
--- a/chrome/browser/chromeos/external_protocol_dialog.h
+++ b/chrome/browser/chromeos/external_protocol_dialog.h
@@ -30,7 +30,7 @@
   ~ExternalProtocolNoHandlersDialog() override;
 
   // views::DialogDelegate:
-  base::string16 GetWindowTitle() const override;
+  std::u16string GetWindowTitle() const override;
   views::View* GetContentsView() override;
   const views::Widget* GetWidget() const override;
   views::Widget* GetWidget() override;
diff --git a/chrome/browser/chromeos/file_manager/external_filesystem_apitest.cc b/chrome/browser/chromeos/file_manager/external_filesystem_apitest.cc
index aafebf1..f8f236fb 100644
--- a/chrome/browser/chromeos/file_manager/external_filesystem_apitest.cc
+++ b/chrome/browser/chromeos/file_manager/external_filesystem_apitest.cc
@@ -96,7 +96,7 @@
         drivefs_root_(drivefs_root) {}
 
   void SelectFileImpl(Type type,
-                      const base::string16& title,
+                      const std::u16string& title,
                       const base::FilePath& default_path,
                       const FileTypeInfo* file_types,
                       int file_type_index,
diff --git a/chrome/browser/chromeos/file_manager/file_browser_handlers.cc b/chrome/browser/chromeos/file_manager/file_browser_handlers.cc
index 6c1f53c..6069b8f4 100644
--- a/chrome/browser/chromeos/file_manager/file_browser_handlers.cc
+++ b/chrome/browser/chromeos/file_manager/file_browser_handlers.cc
@@ -97,7 +97,7 @@
 }
 
 std::string EscapedUtf8ToLower(const std::string& str) {
-  base::string16 utf16 = base::UTF8ToUTF16(
+  std::u16string utf16 = base::UTF8ToUTF16(
       net::UnescapeURLComponent(str, net::UnescapeRule::NORMAL));
   return net::EscapeUrlEncodedData(
       base::UTF16ToUTF8(base::i18n::ToLower(utf16)),
diff --git a/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc b/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc
index ed6af5a..115b5e2 100644
--- a/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc
+++ b/chrome/browser/chromeos/file_manager/file_manager_browsertest_base.cc
@@ -2657,7 +2657,7 @@
 
   if (name == "runLauncherSearch") {
     app_list::LauncherSearchProvider search_provider(profile());
-    base::string16 query;
+    std::u16string query;
     ASSERT_TRUE(value.GetString("query", &query));
 
     search_provider.Start(query);
diff --git a/chrome/browser/chromeos/file_manager/select_file_dialog_util.cc b/chrome/browser/chromeos/file_manager/select_file_dialog_util.cc
index 96990046..5bfae44b 100644
--- a/chrome/browser/chromeos/file_manager/select_file_dialog_util.cc
+++ b/chrome/browser/chromeos/file_manager/select_file_dialog_util.cc
@@ -10,9 +10,9 @@
 namespace file_manager {
 namespace util {
 
-base::string16 GetSelectFileDialogTitle(
+std::u16string GetSelectFileDialogTitle(
     ui::SelectFileDialog::Type dialog_type) {
-  base::string16 title;
+  std::u16string title;
   switch (dialog_type) {
     case ui::SelectFileDialog::SELECT_NONE:
       // Full page file manager doesn't need a title.
diff --git a/chrome/browser/chromeos/file_manager/select_file_dialog_util.h b/chrome/browser/chromeos/file_manager/select_file_dialog_util.h
index 2f2526b7..2a18a975 100644
--- a/chrome/browser/chromeos/file_manager/select_file_dialog_util.h
+++ b/chrome/browser/chromeos/file_manager/select_file_dialog_util.h
@@ -13,7 +13,7 @@
 namespace util {
 
 // Get file dialog title string from its type.
-base::string16 GetSelectFileDialogTitle(ui::SelectFileDialog::Type type);
+std::u16string GetSelectFileDialogTitle(ui::SelectFileDialog::Type type);
 
 }  // namespace util
 }  // namespace file_manager
diff --git a/chrome/browser/chromeos/file_manager/url_util.cc b/chrome/browser/chromeos/file_manager/url_util.cc
index 5b4ebfa5..872b716 100644
--- a/chrome/browser/chromeos/file_manager/url_util.cc
+++ b/chrome/browser/chromeos/file_manager/url_util.cc
@@ -75,7 +75,7 @@
 
 GURL GetFileManagerMainPageUrlWithParams(
     ui::SelectFileDialog::Type type,
-    const base::string16& title,
+    const std::u16string& title,
     const GURL& current_directory_url,
     const GURL& selection_url,
     const std::string& target_name,
@@ -104,7 +104,7 @@
       dict->Set("extensions", std::move(extensions_list));
 
       if (i < file_types->extension_description_overrides.size()) {
-        base::string16 desc = file_types->extension_description_overrides[i];
+        std::u16string desc = file_types->extension_description_overrides[i];
         dict->SetString("description", desc);
       }
 
diff --git a/chrome/browser/chromeos/file_manager/url_util.h b/chrome/browser/chromeos/file_manager/url_util.h
index be44a3e..b1c92617 100644
--- a/chrome/browser/chromeos/file_manager/url_util.h
+++ b/chrome/browser/chromeos/file_manager/url_util.h
@@ -23,7 +23,7 @@
 // in the query string section. |file_types| is optional.
 GURL GetFileManagerMainPageUrlWithParams(
     ui::SelectFileDialog::Type type,
-    const base::string16& title,
+    const std::u16string& title,
     const GURL& current_directory_url,
     const GURL& selection_url,
     const std::string& target_name,
diff --git a/chrome/browser/chromeos/file_system_provider/notification_manager.cc b/chrome/browser/chromeos/file_system_provider/notification_manager.cc
index a045d1f..b73abdc 100644
--- a/chrome/browser/chromeos/file_system_provider/notification_manager.cc
+++ b/chrome/browser/chromeos/file_system_provider/notification_manager.cc
@@ -61,7 +61,7 @@
 }
 
 void NotificationManager::Click(const base::Optional<int>& button_index,
-                                const base::Optional<base::string16>& reply) {
+                                const base::Optional<std::u16string>& reply) {
   if (!button_index)
     return;
 
@@ -105,7 +105,7 @@
               ? IDS_FILE_SYSTEM_PROVIDER_UNRESPONSIVE_WARNING
               : IDS_FILE_SYSTEM_PROVIDER_MANY_UNRESPONSIVE_WARNING),
       extension_icon_,
-      base::string16(),  // display_source
+      std::u16string(),  // display_source
       GURL(), notifier_id, rich_notification_data,
       base::MakeRefCounted<message_center::ThunkNotificationDelegate>(
           weak_factory_.GetWeakPtr()));
diff --git a/chrome/browser/chromeos/file_system_provider/notification_manager.h b/chrome/browser/chromeos/file_system_provider/notification_manager.h
index d2d6c48..b394c95 100644
--- a/chrome/browser/chromeos/file_system_provider/notification_manager.h
+++ b/chrome/browser/chromeos/file_system_provider/notification_manager.h
@@ -50,7 +50,7 @@
 
   // message_center::NotificationObserver overrides:
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
   void Close(bool by_user) override;
 
  private:
diff --git a/chrome/browser/chromeos/fileapi/external_file_url_util_unittest.cc b/chrome/browser/chromeos/fileapi/external_file_url_util_unittest.cc
index 9c9cb26..ff95b4953 100644
--- a/chrome/browser/chromeos/fileapi/external_file_url_util_unittest.cc
+++ b/chrome/browser/chromeos/fileapi/external_file_url_util_unittest.cc
@@ -66,7 +66,7 @@
             ExternalFileURLToVirtualPath(FileSystemURLToExternalFileURL(url)));
 
   // Path with multi byte characters.
-  base::string16 utf16_string;
+  std::u16string utf16_string;
   utf16_string.push_back(0x307b);  // HIRAGANA_LETTER_HO
   utf16_string.push_back(0x3052);  // HIRAGANA_LETTER_GE
   url = CreateExpectedURL(
diff --git a/chrome/browser/chromeos/first_run/drive_first_run_controller.cc b/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
index f6819ac..8642c201 100644
--- a/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
+++ b/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
@@ -433,7 +433,7 @@
 
   message_center::Notification notification(
       message_center::NOTIFICATION_TYPE_SIMPLE, kDriveOfflineNotificationId,
-      base::string16(),  // title
+      std::u16string(),  // title
       l10n_util::GetStringUTF16(IDS_DRIVE_OFFLINE_NOTIFICATION_MESSAGE),
       resource_bundle.GetImageNamed(IDR_NOTIFICATION_DRIVE),
       base::UTF8ToUTF16(extension->name()), GURL(),
diff --git a/chrome/browser/chromeos/hats/hats_dialog.cc b/chrome/browser/chromeos/hats/hats_dialog.cc
index 68a2244..e66d6003 100644
--- a/chrome/browser/chromeos/hats/hats_dialog.cc
+++ b/chrome/browser/chromeos/hats/hats_dialog.cc
@@ -145,8 +145,8 @@
   return ui::MODAL_TYPE_SYSTEM;
 }
 
-base::string16 HatsDialog::GetDialogTitle() const {
-  return base::string16();
+std::u16string HatsDialog::GetDialogTitle() const {
+  return std::u16string();
 }
 
 GURL HatsDialog::GetDialogContentURL() const {
diff --git a/chrome/browser/chromeos/hats/hats_dialog.h b/chrome/browser/chromeos/hats/hats_dialog.h
index 1be6044..1bd8592 100644
--- a/chrome/browser/chromeos/hats/hats_dialog.h
+++ b/chrome/browser/chromeos/hats/hats_dialog.h
@@ -31,7 +31,7 @@
 
   // ui::WebDialogDelegate implementation.
   ui::ModalType GetDialogModalType() const override;
-  base::string16 GetDialogTitle() const override;
+  std::u16string GetDialogTitle() const override;
   GURL GetDialogContentURL() const override;
   void GetWebUIMessageHandlers(
       std::vector<content::WebUIMessageHandler*>* handlers) const override;
diff --git a/chrome/browser/chromeos/hats/hats_notification_controller.cc b/chrome/browser/chromeos/hats/hats_notification_controller.cc
index db0e109f..11d0385a 100644
--- a/chrome/browser/chromeos/hats/hats_notification_controller.cc
+++ b/chrome/browser/chromeos/hats/hats_notification_controller.cc
@@ -184,7 +184,7 @@
 
 void HatsNotificationController::Click(
     const base::Optional<int>& button_index,
-    const base::Optional<base::string16>& reply) {
+    const base::Optional<std::u16string>& reply) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   UpdateLastInteractionTime();
diff --git a/chrome/browser/chromeos/hats/hats_notification_controller.h b/chrome/browser/chromeos/hats/hats_notification_controller.h
index 8177846..b465436 100644
--- a/chrome/browser/chromeos/hats/hats_notification_controller.h
+++ b/chrome/browser/chromeos/hats/hats_notification_controller.h
@@ -69,7 +69,7 @@
   void Initialize(bool is_new_device);
   void Close(bool by_user) override;
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
 
   // NetworkPortalDetector::Observer override:
   void OnPortalDetectionCompleted(
diff --git a/chrome/browser/chromeos/input_method/assistive_suggester.cc b/chrome/browser/chromeos/input_method/assistive_suggester.cc
index 8c3ad77..23d7d04 100644
--- a/chrome/browser/chromeos/input_method/assistive_suggester.cc
+++ b/chrome/browser/chromeos/input_method/assistive_suggester.cc
@@ -349,14 +349,14 @@
   }
 }
 
-void AssistiveSuggester::RecordAssistiveMatchMetrics(const base::string16& text,
+void AssistiveSuggester::RecordAssistiveMatchMetrics(const std::u16string& text,
                                                      int cursor_pos,
                                                      int anchor_pos) {
   int len = static_cast<int>(text.length());
   if (cursor_pos > 0 && cursor_pos <= len && cursor_pos == anchor_pos &&
       (cursor_pos == len || base::IsAsciiWhitespace(text[cursor_pos]))) {
     int start_pos = std::max(0, cursor_pos - kMaxTextBeforeCursorLength);
-    base::string16 text_before_cursor =
+    std::u16string text_before_cursor =
         text.substr(start_pos, cursor_pos - start_pos);
     // Personal info suggestion match
     AssistiveType action =
@@ -375,7 +375,7 @@
   }
 }
 
-bool AssistiveSuggester::OnSurroundingTextChanged(const base::string16& text,
+bool AssistiveSuggester::OnSurroundingTextChanged(const std::u16string& text,
                                                   int cursor_pos,
                                                   int anchor_pos) {
   if (context_id_ == -1)
@@ -387,7 +387,7 @@
   return IsSuggestionShown();
 }
 
-bool AssistiveSuggester::Suggest(const base::string16& text,
+bool AssistiveSuggester::Suggest(const std::u16string& text,
                                  int cursor_pos,
                                  int anchor_pos) {
   int len = static_cast<int>(text.length());
@@ -397,7 +397,7 @@
     // |text| could be very long, we get at most |kMaxTextBeforeCursorLength|
     // characters before cursor.
     int start_pos = std::max(0, cursor_pos - kMaxTextBeforeCursorLength);
-    base::string16 text_before_cursor =
+    std::u16string text_before_cursor =
         text.substr(start_pos, cursor_pos - start_pos);
 
     if (IsSuggestionShown()) {
diff --git a/chrome/browser/chromeos/input_method/assistive_suggester.h b/chrome/browser/chromeos/input_method/assistive_suggester.h
index 34a7b70d..6b52c9e 100644
--- a/chrome/browser/chromeos/input_method/assistive_suggester.h
+++ b/chrome/browser/chromeos/input_method/assistive_suggester.h
@@ -32,14 +32,14 @@
 
   // Checks the text before cursor, emits metric if any assistive prefix is
   // matched.
-  void RecordAssistiveMatchMetrics(const base::string16& text,
+  void RecordAssistiveMatchMetrics(const std::u16string& text,
                                    int cursor_pos,
                                    int anchor_pos);
 
   // Called when a surrounding text is changed.
   // Returns true if it changes the surrounding text, e.g. a suggestion is
   // generated or dismissed.
-  bool OnSurroundingTextChanged(const base::string16& text,
+  bool OnSurroundingTextChanged(const std::u16string& text,
                                 int cursor_pos,
                                 int anchor_pos);
 
@@ -57,7 +57,7 @@
  private:
   // Returns if any suggestion text should be displayed according to the
   // surrounding text information.
-  bool Suggest(const base::string16& text, int cursor_pos, int anchor_pos);
+  bool Suggest(const std::u16string& text, int cursor_pos, int anchor_pos);
 
   void DismissSuggestion();
 
diff --git a/chrome/browser/chromeos/input_method/assistive_window_controller.cc b/chrome/browser/chromeos/input_method/assistive_window_controller.cc
index 4e56ea2..03323e5 100644
--- a/chrome/browser/chromeos/input_method/assistive_window_controller.cc
+++ b/chrome/browser/chromeos/input_method/assistive_window_controller.cc
@@ -95,7 +95,7 @@
 // TODO(crbug/1119570): Update AcceptSuggestion signature (either use
 // announce_string, or no string)
 void AssistiveWindowController::AcceptSuggestion(
-    const base::string16& suggestion) {
+    const std::u16string& suggestion) {
   if (window_.type == ui::ime::AssistiveWindowType::kEmojiSuggestion) {
     tts_handler_->Announce(
         l10n_util::GetStringUTF8(IDS_SUGGESTION_EMOJI_SUGGESTED));
@@ -164,7 +164,7 @@
   }
 }
 
-base::string16 AssistiveWindowController::GetSuggestionText() const {
+std::u16string AssistiveWindowController::GetSuggestionText() const {
   return suggestion_text_;
 }
 
diff --git a/chrome/browser/chromeos/input_method/assistive_window_controller.h b/chrome/browser/chromeos/input_method/assistive_window_controller.h
index c3d9a01..89469a06 100644
--- a/chrome/browser/chromeos/input_method/assistive_window_controller.h
+++ b/chrome/browser/chromeos/input_method/assistive_window_controller.h
@@ -50,9 +50,9 @@
   void ShowSuggestion(const ui::ime::SuggestionDetails& details) override;
   void SetButtonHighlighted(const ui::ime::AssistiveWindowButton& button,
                             bool highlighted) override;
-  void AcceptSuggestion(const base::string16& suggestion) override;
+  void AcceptSuggestion(const std::u16string& suggestion) override;
   void HideSuggestion() override;
-  base::string16 GetSuggestionText() const override;
+  std::u16string GetSuggestionText() const override;
   size_t GetConfirmedLength() const override;
   void FocusStateChanged() override;
   void OnWidgetClosing(views::Widget* widget) override;
@@ -70,7 +70,7 @@
   AssistiveWindowProperties window_;
   ui::ime::SuggestionWindowView* suggestion_window_view_ = nullptr;
   ui::ime::UndoWindow* undo_window_ = nullptr;
-  base::string16 suggestion_text_;
+  std::u16string suggestion_text_;
   size_t confirmed_length_ = 0;
   Bounds bounds_;
 
diff --git a/chrome/browser/chromeos/input_method/assistive_window_controller_unittest.cc b/chrome/browser/chromeos/input_method/assistive_window_controller_unittest.cc
index bd3c6367..b169567 100644
--- a/chrome/browser/chromeos/input_method/assistive_window_controller_unittest.cc
+++ b/chrome/browser/chromeos/input_method/assistive_window_controller_unittest.cc
@@ -70,8 +70,8 @@
         ->set_layout_provider(ChromeLayoutProvider::CreateLayoutProvider());
   }
 
-  std::vector<base::string16> Candidates() {
-    std::vector<base::string16> candidates;
+  std::vector<std::u16string> Candidates() {
+    std::vector<std::u16string> candidates;
     for (int i = 0; i < 3; i++) {
       std::string candidate = base::NumberToString(i);
       candidates.push_back(base::UTF8ToUTF16(candidate));
@@ -93,7 +93,7 @@
   std::unique_ptr<AssistiveWindowController> controller_;
   std::unique_ptr<MockDelegate> delegate_ = std::make_unique<MockDelegate>();
   std::unique_ptr<TestingProfile> profile_;
-  const base::string16 suggestion_ = base::UTF8ToUTF16("test");
+  const std::u16string suggestion_ = base::UTF8ToUTF16("test");
   ui::ime::AssistiveWindowButton emoji_button_;
   chromeos::AssistiveWindowProperties emoji_window_;
   TestTtsHandler* tts_handler_;
@@ -167,7 +167,7 @@
   properties.type = ui::ime::AssistiveWindowType::kEmojiSuggestion;
   properties.visible = true;
   properties.candidates =
-      std::vector<base::string16>({base::UTF8ToUTF16("candidate")});
+      std::vector<std::u16string>({base::UTF8ToUTF16("candidate")});
   ui::IMEBridge::Get()
       ->GetAssistiveWindowHandler()
       ->SetAssistiveWindowProperties(properties);
diff --git a/chrome/browser/chromeos/input_method/assistive_window_properties.h b/chrome/browser/chromeos/input_method/assistive_window_properties.h
index 0f26b42..373a738 100644
--- a/chrome/browser/chromeos/input_method/assistive_window_properties.h
+++ b/chrome/browser/chromeos/input_method/assistive_window_properties.h
@@ -23,7 +23,7 @@
   ui::ime::AssistiveWindowType type = ui::ime::AssistiveWindowType::kNone;
   bool visible = false;
   std::string announce_string;
-  std::vector<base::string16> candidates;
+  std::vector<std::u16string> candidates;
   bool show_indices = false;
   bool show_setting_link = false;
 };
diff --git a/chrome/browser/chromeos/input_method/autocorrect_manager.cc b/chrome/browser/chromeos/input_method/autocorrect_manager.cc
index 2a224f6..7784340 100644
--- a/chrome/browser/chromeos/input_method/autocorrect_manager.cc
+++ b/chrome/browser/chromeos/input_method/autocorrect_manager.cc
@@ -141,7 +141,7 @@
   }
 }
 
-void AutocorrectManager::OnSurroundingTextChanged(const base::string16& text,
+void AutocorrectManager::OnSurroundingTextChanged(const std::u16string& text,
                                                   const int cursor_pos,
                                                   const int anchpr_pos) {
   std::string error;
diff --git a/chrome/browser/chromeos/input_method/autocorrect_manager.h b/chrome/browser/chromeos/input_method/autocorrect_manager.h
index ebcea06..b731019 100644
--- a/chrome/browser/chromeos/input_method/autocorrect_manager.h
+++ b/chrome/browser/chromeos/input_method/autocorrect_manager.h
@@ -39,7 +39,7 @@
 
   // To show the undo window when cursor is in an autocorrected word, this class
   // is notified of surrounding text changes.
-  void OnSurroundingTextChanged(const base::string16& text,
+  void OnSurroundingTextChanged(const std::u16string& text,
                                 int cursor_pos,
                                 int anchor_pos);
 
diff --git a/chrome/browser/chromeos/input_method/autocorrect_manager_unittest.cc b/chrome/browser/chromeos/input_method/autocorrect_manager_unittest.cc
index 4157d41..6ac8c946 100644
--- a/chrome/browser/chromeos/input_method/autocorrect_manager_unittest.cc
+++ b/chrome/browser/chromeos/input_method/autocorrect_manager_unittest.cc
@@ -58,7 +58,7 @@
   MOCK_METHOD(bool,
               AcceptSuggestionCandidate,
               (int context_id,
-               const base::string16& candidate,
+               const std::u16string& candidate,
                std::string* error),
               (override));
   MOCK_METHOD(bool,
diff --git a/chrome/browser/chromeos/input_method/candidate_window_controller_impl.cc b/chrome/browser/chromeos/input_method/candidate_window_controller_impl.cc
index 7b37e80..08f12b4 100644
--- a/chrome/browser/chromeos/input_method/candidate_window_controller_impl.cc
+++ b/chrome/browser/chromeos/input_method/candidate_window_controller_impl.cc
@@ -154,7 +154,9 @@
 }
 
 void CandidateWindowControllerImpl::UpdatePreeditText(
-    const base::string16& text, unsigned int cursor, bool visible) {
+    const std::u16string& text,
+    unsigned int cursor,
+    bool visible) {
   // If it's not visible, hide the preedit text and return.
   if (!visible || text.empty()) {
     if (candidate_window_view_)
diff --git a/chrome/browser/chromeos/input_method/candidate_window_controller_impl.h b/chrome/browser/chromeos/input_method/candidate_window_controller_impl.h
index a91f34c..4ddfdc7 100644
--- a/chrome/browser/chromeos/input_method/candidate_window_controller_impl.h
+++ b/chrome/browser/chromeos/input_method/candidate_window_controller_impl.h
@@ -65,7 +65,7 @@
   gfx::Rect GetCursorBounds() const override;
   void UpdateLookupTable(const ui::CandidateWindow& candidate_window,
                          bool visible) override;
-  void UpdatePreeditText(const base::string16& text,
+  void UpdatePreeditText(const std::u16string& text,
                          unsigned int cursor,
                          bool visible) override;
   void FocusStateChanged(bool is_focused) override;
diff --git a/chrome/browser/chromeos/input_method/emoji_suggester.cc b/chrome/browser/chromeos/input_method/emoji_suggester.cc
index 08a5dd8..ecea151 100644
--- a/chrome/browser/chromeos/input_method/emoji_suggester.cc
+++ b/chrome/browser/chromeos/input_method/emoji_suggester.cc
@@ -131,7 +131,7 @@
     const auto comma_pos = line.find_first_of(",");
     DCHECK(comma_pos != std::string::npos);
     std::string word = line.substr(0, comma_pos);
-    base::string16 emojis = base::UTF8ToUTF16(line.substr(comma_pos + 1));
+    std::u16string emojis = base::UTF8ToUTF16(line.substr(comma_pos + 1));
     // Build emoji_map_ from splitting the string of emojis.
     emoji_map_[word] =
         base::SplitString(emojis, base::UTF8ToUTF16(";"), base::TRIM_WHITESPACE,
@@ -203,7 +203,7 @@
   return SuggestionStatus::kNotHandled;
 }
 
-bool EmojiSuggester::ShouldShowSuggestion(const base::string16& text) {
+bool EmojiSuggester::ShouldShowSuggestion(const std::u16string& text) {
   if (text[text.length() - 1] != kSpaceChar)
     return false;
 
@@ -215,7 +215,7 @@
   return false;
 }
 
-bool EmojiSuggester::Suggest(const base::string16& text) {
+bool EmojiSuggester::Suggest(const std::u16string& text) {
   if (emoji_map_.empty() || text[text.length() - 1] != kSpaceChar)
     return false;
   std::string last_word =
diff --git a/chrome/browser/chromeos/input_method/emoji_suggester.h b/chrome/browser/chromeos/input_method/emoji_suggester.h
index 8c555a98..9f1fd7c 100644
--- a/chrome/browser/chromeos/input_method/emoji_suggester.h
+++ b/chrome/browser/chromeos/input_method/emoji_suggester.h
@@ -31,12 +31,12 @@
   void OnFocus(int context_id) override;
   void OnBlur() override;
   SuggestionStatus HandleKeyEvent(const ui::KeyEvent& event) override;
-  bool Suggest(const base::string16& text) override;
+  bool Suggest(const std::u16string& text) override;
   bool AcceptSuggestion(size_t index) override;
   void DismissSuggestion() override;
   AssistiveType GetProposeActionType() override;
 
-  bool ShouldShowSuggestion(const base::string16& text);
+  bool ShouldShowSuggestion(const std::u16string& text);
 
   void LoadEmojiMapForTesting(const std::string& emoji_data);
   bool GetSuggestionShownForTesting() const;
@@ -69,7 +69,7 @@
   bool suggestion_shown_ = false;
 
   // The current list of candidates.
-  std::vector<base::string16> candidates_;
+  std::vector<std::u16string> candidates_;
   AssistiveWindowProperties properties_;
 
   std::vector<ui::ime::AssistiveWindowButton> buttons_;
@@ -78,7 +78,7 @@
   ui::ime::AssistiveWindowButton learn_more_button_;
 
   // The map holding one-word-mapping to emojis.
-  std::map<std::string, std::vector<base::string16>> emoji_map_;
+  std::map<std::string, std::vector<std::u16string>> emoji_map_;
 
   base::TimeTicks session_start_;
 
diff --git a/chrome/browser/chromeos/input_method/emoji_suggester_unittest.cc b/chrome/browser/chromeos/input_method/emoji_suggester_unittest.cc
index 116fcb23..5ef340a 100644
--- a/chrome/browser/chromeos/input_method/emoji_suggester_unittest.cc
+++ b/chrome/browser/chromeos/input_method/emoji_suggester_unittest.cc
@@ -90,7 +90,7 @@
   void ClickButton(const ui::ime::AssistiveWindowButton& button) override {}
 
   bool AcceptSuggestionCandidate(int context_id,
-                                 const base::string16& candidate,
+                                 const std::u16string& candidate,
                                  std::string* error) override {
     return false;
   }
diff --git a/chrome/browser/chromeos/input_method/grammar_service_client.cc b/chrome/browser/chromeos/input_method/grammar_service_client.cc
index d87d475..8103c04 100644
--- a/chrome/browser/chromeos/input_method/grammar_service_client.cc
+++ b/chrome/browser/chromeos/input_method/grammar_service_client.cc
@@ -39,7 +39,7 @@
 
 bool GrammarServiceClient::RequestTextCheck(
     Profile* profile,
-    const base::string16& text,
+    const std::u16string& text,
     TextCheckCompleteCallback callback) const {
   if (!profile || !IsAvailable(profile)) {
     std::move(callback).Run(false, {});
@@ -58,7 +58,7 @@
 }
 
 void GrammarServiceClient::ParseGrammarCheckerResult(
-    const base::string16& text,
+    const std::u16string& text,
     TextCheckCompleteCallback callback,
     chromeos::machine_learning::mojom::GrammarCheckerResultPtr result) const {
   if (result->status == GrammarCheckerResult::Status::OK &&
diff --git a/chrome/browser/chromeos/input_method/grammar_service_client.h b/chrome/browser/chromeos/input_method/grammar_service_client.h
index fbf9b66..f78148c 100644
--- a/chrome/browser/chromeos/input_method/grammar_service_client.h
+++ b/chrome/browser/chromeos/input_method/grammar_service_client.h
@@ -35,7 +35,7 @@
 //       ...
 //     }
 //
-//     void MyTextCheck(Profile* profile, const base::string16& text) {
+//     void MyTextCheck(Profile* profile, const std::u16string& text) {
 //        client_.reset(new GrammarServiceClient);
 //        client_->RequestTextCheck(profile, 0, text,
 //            base::BindOnce(&MyClient::OnTextCheckComplete,
@@ -57,13 +57,13 @@
   // Sends grammar check request to ML service, parses the reponse
   // and calls a provided callback method.
   bool RequestTextCheck(Profile* profile,
-                        const base::string16& text,
+                        const std::u16string& text,
                         TextCheckCompleteCallback callback) const;
 
  private:
   // Parse the result returned from grammar check service.
   void ParseGrammarCheckerResult(
-      const base::string16& text,
+      const std::u16string& text,
       TextCheckCompleteCallback callback,
       chromeos::machine_learning::mojom::GrammarCheckerResultPtr result) const;
 
diff --git a/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc b/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc
index 944b1c9..1d0a350 100644
--- a/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc
+++ b/chrome/browser/chromeos/input_method/input_method_delegate_impl.cc
@@ -30,12 +30,12 @@
   return local_state->GetString(prefs::kHardwareKeyboardLayout);
 }
 
-base::string16 InputMethodDelegateImpl::GetLocalizedString(
+std::u16string InputMethodDelegateImpl::GetLocalizedString(
     int resource_id) const {
   return l10n_util::GetStringUTF16(resource_id);
 }
 
-base::string16 InputMethodDelegateImpl::GetDisplayLanguageName(
+std::u16string InputMethodDelegateImpl::GetDisplayLanguageName(
     const std::string& language_code) const {
   DCHECK(g_browser_process);
   return l10n_util::GetDisplayNameForLocale(
diff --git a/chrome/browser/chromeos/input_method/input_method_delegate_impl.h b/chrome/browser/chromeos/input_method/input_method_delegate_impl.h
index 7b47fbe9..2e6c25a7 100644
--- a/chrome/browser/chromeos/input_method/input_method_delegate_impl.h
+++ b/chrome/browser/chromeos/input_method/input_method_delegate_impl.h
@@ -23,8 +23,8 @@
 
   // InputMethodDelegate implementation.
   std::string GetHardwareKeyboardLayouts() const override;
-  base::string16 GetLocalizedString(int resource_id) const override;
-  base::string16 GetDisplayLanguageName(
+  std::u16string GetLocalizedString(int resource_id) const override;
+  std::u16string GetDisplayLanguageName(
       const std::string& language_code) const override;
   void SetHardwareKeyboardLayoutForTesting(const std::string& layout) override;
 
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.cc b/chrome/browser/chromeos/input_method/input_method_engine.cc
index eb2c2f49..d614af7 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine.cc
+++ b/chrome/browser/chromeos/input_method/input_method_engine.cc
@@ -163,7 +163,7 @@
 
 bool InputMethodEngine::AcceptSuggestionCandidate(
     int context_id,
-    const base::string16& suggestion,
+    const std::u16string& suggestion,
     std::string* error) {
   if (!IsActive()) {
     *error = kErrorNotActive;
@@ -357,7 +357,7 @@
   IMEAssistiveWindowHandlerInterface* aw_handler =
       ui::IMEBridge::Get()->GetAssistiveWindowHandler();
   if (aw_handler) {
-    base::string16 suggestion_text = aw_handler->GetSuggestionText();
+    std::u16string suggestion_text = aw_handler->GetSuggestionText();
     if (suggestion_text.empty()) {
       *error = kSuggestionNotFound;
       return false;
@@ -494,7 +494,7 @@
 }
 
 void InputMethodEngine::CommitTextToInputContext(int context_id,
-                                                 const base::string16& text) {
+                                                 const std::u16string& text) {
   ui::IMEInputContextHandlerInterface* input_context =
       ui::IMEBridge::Get()->GetInputContextHandler();
   if (!input_context)
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.h b/chrome/browser/chromeos/input_method/input_method_engine.h
index b6f8b58..f9fd5e1 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine.h
+++ b/chrome/browser/chromeos/input_method/input_method_engine.h
@@ -125,7 +125,7 @@
   void ClickButton(const ui::ime::AssistiveWindowButton& button) override;
 
   bool AcceptSuggestionCandidate(int context_id,
-                                 const base::string16& candidate,
+                                 const std::u16string& candidate,
                                  std::string* error) override;
 
   bool SetAssistiveWindowProperties(
@@ -202,7 +202,7 @@
   bool SetSelectionRange(uint32_t start, uint32_t end) override;
 
   void CommitTextToInputContext(int context_id,
-                                const base::string16& text) override;
+                                const std::u16string& text) override;
 
   bool SendKeyEvent(const ui::KeyEvent& event, std::string* error) override;
 
diff --git a/chrome/browser/chromeos/input_method/input_method_engine_base.cc b/chrome/browser/chromeos/input_method/input_method_engine_base.cc
index f255507a..dc545b2 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine_base.cc
+++ b/chrome/browser/chromeos/input_method/input_method_engine_base.cc
@@ -191,7 +191,7 @@
   }
 }
 
-void InputMethodEngineBase::SetSurroundingText(const base::string16& text,
+void InputMethodEngineBase::SetSurroundingText(const std::u16string& text,
                                                uint32_t cursor_pos,
                                                uint32_t anchor_pos,
                                                uint32_t offset_pos) {
@@ -233,7 +233,7 @@
 }
 
 bool InputMethodEngineBase::CommitText(int context_id,
-                                       const base::string16& text,
+                                       const std::u16string& text,
                                        std::string* error) {
   if (!IsActive()) {
     // TODO: Commit the text anyways.
diff --git a/chrome/browser/chromeos/input_method/input_method_engine_base.h b/chrome/browser/chromeos/input_method/input_method_engine_base.h
index 9469d8b..2ce48b2 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine_base.h
+++ b/chrome/browser/chromeos/input_method/input_method_engine_base.h
@@ -87,7 +87,7 @@
 
     // Called when a surrounding text is changed.
     virtual void OnSurroundingTextChanged(const std::string& engine_id,
-                                          const base::string16& text,
+                                          const std::u16string& text,
                                           int cursor_pos,
                                           int anchor_pos,
                                           int offset_pos) = 0;
@@ -134,7 +134,7 @@
   void Reset() override;
   void ProcessKeyEvent(const ui::KeyEvent& key_event,
                        KeyEventDoneCallback callback) override;
-  void SetSurroundingText(const base::string16& text,
+  void SetSurroundingText(const std::u16string& text,
                           uint32_t cursor_pos,
                           uint32_t anchor_pos,
                           uint32_t offset_pos) override;
@@ -150,7 +150,7 @@
   // Commit the specified text to the specified context.  Fails if the context
   // is not focused.
   bool CommitText(int context_id,
-                  const base::string16& text,
+                  const std::u16string& text,
                   std::string* error);
 
   // Notifies InputContextHandler to commit any composition text.
@@ -289,7 +289,7 @@
 
   // Notifies InputContextHanlder to commit |text|.
   virtual void CommitTextToInputContext(int context_id,
-                                        const base::string16& text) = 0;
+                                        const std::u16string& text) = 0;
 
   // Notifies InputContextHandler to delete surrounding text.
   void DeleteSurroundingTextToInputContext(int offset, size_t number_of_chars);
@@ -332,7 +332,7 @@
   std::vector<gfx::Rect> composition_bounds_;
 
   // The text to be committed from calling input.ime.commitText API.
-  base::string16 text_;
+  std::u16string text_;
   bool commit_text_changed_;
 
   // Indicates whether the IME extension is currently handling a physical key
diff --git a/chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc b/chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc
index 6ab0699..c7b3b8e 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc
+++ b/chrome/browser/chromeos/input_method/input_method_engine_browsertests.cc
@@ -160,18 +160,18 @@
 
   void WaitUntilCalled() { run_loop_.Run(); }
 
-  const base::string16& inserted_text() const { return inserted_text_; }
+  const std::u16string& inserted_text() const { return inserted_text_; }
 
  private:
   // ui::DummyTextInputClient:
   bool ShouldDoLearning() override { return true; }
-  void InsertText(const base::string16& text,
+  void InsertText(const std::u16string& text,
                   InsertTextCursorBehavior cursor_behavior) override {
     inserted_text_ = text;
     run_loop_.Quit();
   }
 
-  base::string16 inserted_text_;
+  std::u16string inserted_text_;
   base::RunLoop run_loop_;
 
   DISALLOW_COPY_AND_ASSIGN(TestTextInputClient);
diff --git a/chrome/browser/chromeos/input_method/input_method_engine_unittest.cc b/chrome/browser/chromeos/input_method/input_method_engine_unittest.cc
index 89c7789b..f4c9de0 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine_unittest.cc
+++ b/chrome/browser/chromeos/input_method/input_method_engine_unittest.cc
@@ -110,7 +110,7 @@
   void OnMenuItemActivated(const std::string& engine_id,
                            const std::string& menu_id) override {}
   void OnSurroundingTextChanged(const std::string& engine_id,
-                                const base::string16& text,
+                                const std::u16string& text,
                                 int cursor_pos,
                                 int anchor_pos,
                                 int offset) override {}
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_engine.cc b/chrome/browser/chromeos/input_method/mock_input_method_engine.cc
index 2721a8f..5e114e98d 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_engine.cc
+++ b/chrome/browser/chromeos/input_method/mock_input_method_engine.cc
@@ -31,7 +31,7 @@
 void MockInputMethodEngine::ProcessKeyEvent(const ui::KeyEvent& key_event,
                                             KeyEventDoneCallback callback) {}
 
-void MockInputMethodEngine::SetSurroundingText(const base::string16& text,
+void MockInputMethodEngine::SetSurroundingText(const std::u16string& text,
                                                uint32_t cursor_pos,
                                                uint32_t anchor_pos,
                                                uint32_t offset_pos) {}
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_engine.h b/chrome/browser/chromeos/input_method/mock_input_method_engine.h
index f4a532f..2a3c2122 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_engine.h
+++ b/chrome/browser/chromeos/input_method/mock_input_method_engine.h
@@ -35,7 +35,7 @@
   void Reset() override;
   void ProcessKeyEvent(const ui::KeyEvent& key_event,
                        KeyEventDoneCallback callback) override;
-  void SetSurroundingText(const base::string16& text,
+  void SetSurroundingText(const std::u16string& text,
                           uint32_t cursor_pos,
                           uint32_t anchor_pos,
                           uint32_t offset_pos) override;
diff --git a/chrome/browser/chromeos/input_method/native_input_method_engine.cc b/chrome/browser/chromeos/input_method/native_input_method_engine.cc
index 3d4c57b..f2ea85b 100644
--- a/chrome/browser/chromeos/input_method/native_input_method_engine.cc
+++ b/chrome/browser/chromeos/input_method/native_input_method_engine.cc
@@ -73,7 +73,7 @@
   return engine_id;
 }
 
-base::string16 ConvertToUtf16AndNormalize(const std::string& str) {
+std::u16string ConvertToUtf16AndNormalize(const std::string& str) {
   // TODO(https://crbug.com/1185629): Add a new helper in
   // base/i18n/icu_string_conversions.h that does the conversion directly
   // without a redundant UTF16->UTF8 conversion.
@@ -370,7 +370,7 @@
 
 void NativeInputMethodEngine::ImeObserver::OnSurroundingTextChanged(
     const std::string& engine_id,
-    const base::string16& text,
+    const std::u16string& text,
     int cursor_pos,
     int anchor_pos,
     int offset_pos) {
diff --git a/chrome/browser/chromeos/input_method/native_input_method_engine.h b/chrome/browser/chromeos/input_method/native_input_method_engine.h
index ac2e13b..43374ae 100644
--- a/chrome/browser/chromeos/input_method/native_input_method_engine.h
+++ b/chrome/browser/chromeos/input_method/native_input_method_engine.h
@@ -93,7 +93,7 @@
     void OnCompositionBoundsChanged(
         const std::vector<gfx::Rect>& bounds) override;
     void OnSurroundingTextChanged(const std::string& engine_id,
-                                  const base::string16& text,
+                                  const std::u16string& text,
                                   int cursor_pos,
                                   int anchor_pos,
                                   int offset_pos) override;
diff --git a/chrome/browser/chromeos/input_method/native_input_method_engine_browsertest.cc b/chrome/browser/chromeos/input_method/native_input_method_engine_browsertest.cc
index 83f3941e..6f96070 100644
--- a/chrome/browser/chromeos/input_method/native_input_method_engine_browsertest.cc
+++ b/chrome/browser/chromeos/input_method/native_input_method_engine_browsertest.cc
@@ -76,7 +76,7 @@
   void OnMenuItemActivated(const std::string& engine_id,
                            const std::string& menu_id) override {}
   void OnSurroundingTextChanged(const std::string& engine_id,
-                                const base::string16& text,
+                                const std::u16string& text,
                                 int cursor_pos,
                                 int anchor_pos,
                                 int offset) override {}
@@ -360,8 +360,8 @@
   TextInputTestHelper helper(GetBrowserInputMethod());
   SetUpTextInput(helper);
 
-  const base::string16 prefix_text = base::UTF8ToUTF16("my email is ");
-  const base::string16 expected_result_text =
+  const std::u16string prefix_text = base::UTF8ToUTF16("my email is ");
+  const std::u16string expected_result_text =
       base::UTF8ToUTF16("my email is [email protected]");
 
   helper.GetTextInputClient()->InsertText(
@@ -403,8 +403,8 @@
   TextInputTestHelper helper(GetBrowserInputMethod());
   SetUpTextInput(helper);
 
-  const base::string16 prefix_text = base::UTF8ToUTF16("my email is ");
-  const base::string16 expected_result_text =
+  const std::u16string prefix_text = base::UTF8ToUTF16("my email is ");
+  const std::u16string expected_result_text =
       base::UTF8ToUTF16("my email is [email protected]");
 
   helper.GetTextInputClient()->InsertText(
@@ -449,8 +449,8 @@
   TextInputTestHelper helper(GetBrowserInputMethod());
   SetUpTextInput(helper);
 
-  const base::string16 prefix_text = base::UTF8ToUTF16("my name is ");
-  const base::string16 expected_result_text =
+  const std::u16string prefix_text = base::UTF8ToUTF16("my name is ");
+  const std::u16string expected_result_text =
       base::UTF8ToUTF16("my name is John Wayne");
 
   helper.GetTextInputClient()->InsertText(
@@ -525,8 +525,8 @@
   engine_->Enable(kEngineIdUs);
   TextInputTestHelper helper(GetBrowserInputMethod());
   SetUpTextInput(helper);
-  const base::string16 prefix_text = base::UTF8ToUTF16("happy ");
-  const base::string16 expected_result_text = base::UTF8ToUTF16("happy 😀");
+  const std::u16string prefix_text = base::UTF8ToUTF16("happy ");
+  const std::u16string expected_result_text = base::UTF8ToUTF16("happy 😀");
 
   helper.GetTextInputClient()->InsertText(
       prefix_text,
@@ -558,8 +558,8 @@
   engine_->Enable(kEngineIdUs);
   TextInputTestHelper helper(GetBrowserInputMethod());
   SetUpTextInput(helper);
-  const base::string16 prefix_text = base::UTF8ToUTF16("happy ");
-  const base::string16 expected_result_text = base::UTF8ToUTF16("happy a");
+  const std::u16string prefix_text = base::UTF8ToUTF16("happy ");
+  const std::u16string expected_result_text = base::UTF8ToUTF16("happy a");
 
   helper.GetTextInputClient()->InsertText(
       prefix_text,
@@ -710,7 +710,7 @@
   engine_->Enable(kEngineIdUs);
   TextInputTestHelper helper(GetBrowserInputMethod());
   SetUpTextInput(helper);
-  const base::string16 prefix_text = base::UTF8ToUTF16("corrected ");
+  const std::u16string prefix_text = base::UTF8ToUTF16("corrected ");
   helper.GetTextInputClient()->InsertText(
       prefix_text,
       ui::TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
@@ -739,9 +739,9 @@
   engine_->Enable(kEngineIdUs);
   TextInputTestHelper helper(GetBrowserInputMethod());
   SetUpTextInput(helper);
-  const base::string16 corrected_text =
+  const std::u16string corrected_text =
       base::UTF8ToUTF16("hello corrected world");
-  const base::string16 typed_text = base::UTF8ToUTF16("hello typed world");
+  const std::u16string typed_text = base::UTF8ToUTF16("hello typed world");
   helper.GetTextInputClient()->InsertText(
       corrected_text,
       ui::TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
@@ -781,8 +781,8 @@
 
   TextInputTestHelper helper(GetBrowserInputMethod());
   SetUpTextInput(helper);
-  const base::string16 corrected_text = base::UTF8ToUTF16("corrected");
-  const base::string16 typed_text = base::UTF8ToUTF16("typed");
+  const std::u16string corrected_text = base::UTF8ToUTF16("corrected");
+  const std::u16string typed_text = base::UTF8ToUTF16("typed");
   helper.GetTextInputClient()->InsertText(
       corrected_text,
       ui::TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
@@ -822,8 +822,8 @@
 
   TextInputTestHelper helper(GetBrowserInputMethod());
   SetUpTextInput(helper);
-  const base::string16 corrected_text = base::UTF8ToUTF16("corrected");
-  const base::string16 typed_text = base::UTF8ToUTF16("typed");
+  const std::u16string corrected_text = base::UTF8ToUTF16("corrected");
+  const std::u16string typed_text = base::UTF8ToUTF16("typed");
   helper.GetTextInputClient()->InsertText(
       corrected_text,
       ui::TextInputClient::InsertTextCursorBehavior::kMoveCursorAfterText);
diff --git a/chrome/browser/chromeos/input_method/personal_info_suggester.cc b/chrome/browser/chromeos/input_method/personal_info_suggester.cc
index a4f94a3b..d57fcc33 100644
--- a/chrome/browser/chromeos/input_method/personal_info_suggester.cc
+++ b/chrome/browser/chromeos/input_method/personal_info_suggester.cc
@@ -99,7 +99,7 @@
 
 }  // namespace
 
-AssistiveType ProposePersonalInfoAssistiveAction(const base::string16& text) {
+AssistiveType ProposePersonalInfoAssistiveAction(const std::u16string& text) {
   std::string lower_case_utf8_text =
       base::ToLowerASCII(base::UTF16ToUTF8(text));
   if (!(RE2::FullMatch(lower_case_utf8_text, ".* $"))) {
@@ -236,7 +236,7 @@
   return SuggestionStatus::kNotHandled;
 }
 
-bool PersonalInfoSuggester::Suggest(const base::string16& text) {
+bool PersonalInfoSuggester::Suggest(const std::u16string& text) {
   if (suggestion_shown_) {
     size_t text_length = text.length();
     bool matched = false;
@@ -244,8 +244,8 @@
          offset < suggestion_.length() && offset < text_length &&
          offset < kMaxConfirmedTextLength;
          offset++) {
-      base::string16 text_before = text.substr(0, text_length - offset);
-      base::string16 confirmed_text = text.substr(text_length - offset);
+      std::u16string text_before = text.substr(0, text_length - offset);
+      std::u16string confirmed_text = text.substr(text_length - offset);
       if (base::StartsWith(suggestion_, confirmed_text,
                            base::CompareCase::INSENSITIVE_ASCII) &&
           suggestion_ == GetSuggestion(text_before)) {
@@ -267,8 +267,8 @@
   }
 }
 
-base::string16 PersonalInfoSuggester::GetSuggestion(
-    const base::string16& text) {
+std::u16string PersonalInfoSuggester::GetSuggestion(
+    const std::u16string& text) {
   proposed_action_type_ = ProposePersonalInfoAssistiveAction(text);
 
   if (proposed_action_type_ == AssistiveType::kGenericAction)
@@ -289,7 +289,7 @@
   // Currently, we are just picking the first candidate, will improve the
   // strategy in the future.
   auto* profile = autofill_profiles[0];
-  base::string16 suggestion;
+  std::u16string suggestion;
   const std::string app_locale = g_browser_process->GetApplicationLocale();
   switch (proposed_action_type_) {
     case AssistiveType::kPersonalName:
@@ -316,7 +316,7 @@
   return suggestion;
 }
 
-void PersonalInfoSuggester::ShowSuggestion(const base::string16& text,
+void PersonalInfoSuggester::ShowSuggestion(const std::u16string& text,
                                            const size_t confirmed_length) {
   if (ChromeKeyboardControllerClient::Get()->is_keyboard_visible()) {
     const std::vector<std::string> args{base::UTF16ToUTF8(text)};
diff --git a/chrome/browser/chromeos/input_method/personal_info_suggester.h b/chrome/browser/chromeos/input_method/personal_info_suggester.h
index 25a9a1e..10e44c7 100644
--- a/chrome/browser/chromeos/input_method/personal_info_suggester.h
+++ b/chrome/browser/chromeos/input_method/personal_info_suggester.h
@@ -31,7 +31,7 @@
     "personal_info_suggester_show_setting_count";
 const int kMaxShowSettingCount = 10;
 
-AssistiveType ProposePersonalInfoAssistiveAction(const base::string16& text);
+AssistiveType ProposePersonalInfoAssistiveAction(const std::u16string& text);
 
 // An agent to suggest personal information when the user types, and adopt or
 // dismiss the suggestion according to the user action.
@@ -52,7 +52,7 @@
   void OnFocus(int context_id) override;
   void OnBlur() override;
   SuggestionStatus HandleKeyEvent(const ui::KeyEvent& event) override;
-  bool Suggest(const base::string16& text) override;
+  bool Suggest(const std::u16string& text) override;
   // index defaults to 0 as not required for this suggester.
   bool AcceptSuggestion(size_t index = 0) override;
   void DismissSuggestion() override;
@@ -60,9 +60,9 @@
 
  private:
   // Get the suggestion according to |text|.
-  base::string16 GetSuggestion(const base::string16& text);
+  std::u16string GetSuggestion(const std::u16string& text);
 
-  void ShowSuggestion(const base::string16& text,
+  void ShowSuggestion(const std::u16string& text,
                       const size_t confirmed_length);
 
   int GetPrefValue(const std::string& pref_name);
@@ -99,7 +99,7 @@
   bool first_shown_ = false;
 
   // The current suggestion text shown.
-  base::string16 suggestion_;
+  std::u16string suggestion_;
 
   std::vector<ui::ime::AssistiveWindowButton> buttons_;
   int highlighted_index_;
diff --git a/chrome/browser/chromeos/input_method/personal_info_suggester_unittest.cc b/chrome/browser/chromeos/input_method/personal_info_suggester_unittest.cc
index f68353c..62b83ed 100644
--- a/chrome/browser/chromeos/input_method/personal_info_suggester_unittest.cc
+++ b/chrome/browser/chromeos/input_method/personal_info_suggester_unittest.cc
@@ -55,7 +55,7 @@
     return true;
   }
 
-  void VerifySuggestion(const base::string16 text,
+  void VerifySuggestion(const std::u16string text,
                         const size_t confirmed_length) {
     EXPECT_EQ(suggestion_text_, text);
     EXPECT_EQ(confirmed_length_, confirmed_length);
@@ -85,7 +85,7 @@
   }
 
   bool AcceptSuggestionCandidate(int context_id,
-                                 const base::string16& candidate,
+                                 const std::u16string& candidate,
                                  std::string* error) override {
     return false;
   }
@@ -110,7 +110,7 @@
   bool IsSuggestionAccepted() { return suggestion_accepted_; }
 
  private:
-  base::string16 suggestion_text_;
+  std::u16string suggestion_text_;
   size_t confirmed_length_ = 0;
   bool show_annotation_ = false;
   bool show_setting_link_ = false;
@@ -179,13 +179,13 @@
   autofill::TestAutofillClient autofill_client_;
   std::unique_ptr<autofill::TestPersonalDataManager> personal_data_;
 
-  const base::string16 email_ = base::UTF8ToUTF16("[email protected]");
-  const base::string16 first_name_ = base::UTF8ToUTF16("John");
-  const base::string16 last_name_ = base::UTF8ToUTF16("Wayne");
-  const base::string16 full_name_ = base::UTF8ToUTF16("John Wayne");
-  const base::string16 address_ =
+  const std::u16string email_ = base::UTF8ToUTF16("[email protected]");
+  const std::u16string first_name_ = base::UTF8ToUTF16("John");
+  const std::u16string last_name_ = base::UTF8ToUTF16("Wayne");
+  const std::u16string full_name_ = base::UTF8ToUTF16("John Wayne");
+  const std::u16string address_ =
       base::UTF8ToUTF16("1 Dream Road, Hollywood, CA 12345");
-  const base::string16 phone_number_ = base::UTF8ToUTF16("16505678910");
+  const std::u16string phone_number_ = base::UTF8ToUTF16("16505678910");
 };
 
 TEST_F(PersonalInfoSuggesterTest, SuggestEmail) {
diff --git a/chrome/browser/chromeos/input_method/stub_input_method_engine_observer.h b/chrome/browser/chromeos/input_method/stub_input_method_engine_observer.h
index 83d6687..52786dc 100644
--- a/chrome/browser/chromeos/input_method/stub_input_method_engine_observer.h
+++ b/chrome/browser/chromeos/input_method/stub_input_method_engine_observer.h
@@ -33,7 +33,7 @@
   void OnMenuItemActivated(const std::string& engine_id,
                            const std::string& menu_id) override {}
   void OnSurroundingTextChanged(const std::string& engine_id,
-                                const base::string16& text,
+                                const std::u16string& text,
                                 int cursor_pos,
                                 int anchor_pos,
                                 int offset) override {}
diff --git a/chrome/browser/chromeos/input_method/suggester.h b/chrome/browser/chromeos/input_method/suggester.h
index b8d5c1c..256d4f63 100644
--- a/chrome/browser/chromeos/input_method/suggester.h
+++ b/chrome/browser/chromeos/input_method/suggester.h
@@ -31,7 +31,7 @@
 
   // Check if suggestion should be displayed according to the surrounding text
   // information.
-  virtual bool Suggest(const base::string16& text) = 0;
+  virtual bool Suggest(const std::u16string& text) = 0;
 
   // Accepts the suggestion at a given index, index can be made default if
   // unnecessary. Returns true if suggestion is accepted successfully.
diff --git a/chrome/browser/chromeos/input_method/suggestion_handler_interface.h b/chrome/browser/chromeos/input_method/suggestion_handler_interface.h
index ef3b299..7def6a0 100644
--- a/chrome/browser/chromeos/input_method/suggestion_handler_interface.h
+++ b/chrome/browser/chromeos/input_method/suggestion_handler_interface.h
@@ -51,7 +51,7 @@
   virtual void ClickButton(const ui::ime::AssistiveWindowButton& button) = 0;
 
   virtual bool AcceptSuggestionCandidate(int context_id,
-                                         const base::string16& candidate,
+                                         const std::u16string& candidate,
                                          std::string* error) = 0;
 
   // Shows/Hides given assistive window. No-op if context_id doesn't match or
diff --git a/chrome/browser/chromeos/input_method/textinput_surroundingtext_browsertest.cc b/chrome/browser/chromeos/input_method/textinput_surroundingtext_browsertest.cc
index 1bf145d..c5a1614 100644
--- a/chrome/browser/chromeos/input_method/textinput_surroundingtext_browsertest.cc
+++ b/chrome/browser/chromeos/input_method/textinput_surroundingtext_browsertest.cc
@@ -35,9 +35,9 @@
   helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT_AREA);
   EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT_AREA, helper.GetTextInputType());
 
-  const base::string16 sample_text1 = base::UTF8ToUTF16("abcde");
-  const base::string16 sample_text2 = base::UTF8ToUTF16("fghij");
-  const base::string16 surrounding_text2 = sample_text1 + sample_text2;
+  const std::u16string sample_text1 = base::UTF8ToUTF16("abcde");
+  const std::u16string sample_text2 = base::UTF8ToUTF16("fghij");
+  const std::u16string surrounding_text2 = sample_text1 + sample_text2;
   gfx::Range expected_range1(5, 5);
   gfx::Range expected_range2(10, 10);
 
@@ -76,7 +76,7 @@
   helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT_AREA);
   EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT_AREA, helper.GetTextInputType());
 
-  const base::string16 sample_text = base::UTF8ToUTF16("abcde");
+  const std::u16string sample_text = base::UTF8ToUTF16("abcde");
   gfx::Range expected_range(5, 5);
 
   ui::CompositionText composition_text;
@@ -116,13 +116,13 @@
   helper.ClickElement("empty_textarea", tab);
   helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT_AREA);
   EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT_AREA, helper.GetTextInputType());
-  helper.WaitForSurroundingTextChanged(base::string16(), zero_range);
+  helper.WaitForSurroundingTextChanged(std::u16string(), zero_range);
   EXPECT_TRUE(helper.GetSurroundingText().empty());
   EXPECT_EQ(zero_range, helper.GetSelectionRange());
 
   // Click textarea containing text, so expecting new surrounding text comes.
   helper.ClickElement("filled_textarea", tab);
-  const base::string16 expected_text = base::UTF8ToUTF16("abcde");
+  const std::u16string expected_text = base::UTF8ToUTF16("abcde");
   const gfx::Range expected_range(5, 5);
   helper.WaitForSurroundingTextChanged(expected_text, expected_range);
   EXPECT_EQ(expected_text, helper.GetSurroundingText());
@@ -132,7 +132,7 @@
   helper.ClickElement("empty_textarea", tab);
   helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT_AREA);
   EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT_AREA, helper.GetTextInputType());
-  helper.WaitForSurroundingTextChanged(base::string16(), zero_range);
+  helper.WaitForSurroundingTextChanged(std::u16string(), zero_range);
   EXPECT_TRUE(helper.GetSurroundingText().empty());
   EXPECT_EQ(zero_range, helper.GetSelectionRange());
 }
diff --git a/chrome/browser/chromeos/input_method/textinput_test_helper.cc b/chrome/browser/chromeos/input_method/textinput_test_helper.cc
index 0c3f273..4c6f4e3 100644
--- a/chrome/browser/chromeos/input_method/textinput_test_helper.cc
+++ b/chrome/browser/chromeos/input_method/textinput_test_helper.cc
@@ -43,7 +43,7 @@
   input_method_->RemoveObserver(this);
 }
 
-base::string16 TextInputTestHelper::GetSurroundingText() const {
+std::u16string TextInputTestHelper::GetSurroundingText() const {
   return surrounding_text_;
 }
 
@@ -155,7 +155,7 @@
 }
 
 void TextInputTestHelper::WaitForSurroundingTextChanged(
-    const base::string16& expected_text) {
+    const std::u16string& expected_text) {
   waiting_type_ = WAIT_ON_CARET_BOUNDS_CHANGED;
   while (expected_text != surrounding_text_) {
     base::RunLoop run_loop;
@@ -165,7 +165,7 @@
 }
 
 void TextInputTestHelper::WaitForSurroundingTextChanged(
-    const base::string16& expected_text,
+    const std::u16string& expected_text,
     const gfx::Range& expected_selection) {
   waiting_type_ = WAIT_ON_CARET_BOUNDS_CHANGED;
   while (expected_text != surrounding_text_ ||
diff --git a/chrome/browser/chromeos/input_method/textinput_test_helper.h b/chrome/browser/chromeos/input_method/textinput_test_helper.h
index 1a8b586..faba3673 100644
--- a/chrome/browser/chromeos/input_method/textinput_test_helper.h
+++ b/chrome/browser/chromeos/input_method/textinput_test_helper.h
@@ -41,7 +41,7 @@
   ~TextInputTestHelper() override;
 
   // Returns the latest status notified to ui::InputMethod
-  base::string16 GetSurroundingText() const;
+  std::u16string GetSurroundingText() const;
   gfx::Rect GetCaretRect() const;
   gfx::Rect GetCompositionHead() const;
   gfx::Range GetSelectionRange() const;
@@ -57,8 +57,8 @@
   void WaitForBlur();
   void WaitForCaretBoundsChanged(const gfx::Rect& expected_caret_rect,
                                  const gfx::Rect& expected_composition_head);
-  void WaitForSurroundingTextChanged(const base::string16& expected_text);
-  void WaitForSurroundingTextChanged(const base::string16& expected_text,
+  void WaitForSurroundingTextChanged(const std::u16string& expected_text);
+  void WaitForSurroundingTextChanged(const std::u16string& expected_text,
                                      const gfx::Range& expected_selection);
   void WaitForPassageOfTimeMillis(const int milliseconds);
 
@@ -90,7 +90,7 @@
   // Represents waiting type of text input event.
   WaitImeEventType waiting_type_;
 
-  base::string16 surrounding_text_;
+  std::u16string surrounding_text_;
   gfx::Rect caret_rect_;
   gfx::Rect composition_head_;
   gfx::Range selection_range_;
diff --git a/chrome/browser/chromeos/input_method/ui/candidate_view.cc b/chrome/browser/chromeos/input_method/ui/candidate_view.cc
index c7b4d45..fbff56f 100644
--- a/chrome/browser/chromeos/input_method/ui/candidate_view.cc
+++ b/chrome/browser/chromeos/input_method/ui/candidate_view.cc
@@ -164,7 +164,7 @@
 }
 
 void CandidateView::SetEntry(const ui::CandidateWindow::Entry& entry) {
-  base::string16 label = entry.label;
+  std::u16string label = entry.label;
   if (!label.empty() && orientation_ != ui::CandidateWindow::VERTICAL)
     label += base::ASCIIToUTF16(".");
   shortcut_label_->SetText(label);
diff --git a/chrome/browser/chromeos/input_method/ui/candidate_window_view.cc b/chrome/browser/chromeos/input_method/ui/candidate_window_view.cc
index fdc29acf..54c10614 100644
--- a/chrome/browser/chromeos/input_method/ui/candidate_window_view.cc
+++ b/chrome/browser/chromeos/input_method/ui/candidate_window_view.cc
@@ -123,7 +123,7 @@
   }
 
   // Sets the displayed text.
-  void SetText(const base::string16& text) { label_->SetText(text); }
+  void SetText(const std::u16string& text) { label_->SetText(text); }
 
   // Sets the border thickness for top/bottom.
   void SetBorderFromPosition(BorderPosition position) {
@@ -238,7 +238,7 @@
   UpdateVisibility();
 }
 
-void CandidateWindowView::UpdatePreeditText(const base::string16& text) {
+void CandidateWindowView::UpdatePreeditText(const std::u16string& text) {
   preedit_->SetText(text);
 }
 
diff --git a/chrome/browser/chromeos/input_method/ui/candidate_window_view.h b/chrome/browser/chromeos/input_method/ui/candidate_window_view.h
index 5ed8be9..16e5e85 100644
--- a/chrome/browser/chromeos/input_method/ui/candidate_window_view.h
+++ b/chrome/browser/chromeos/input_method/ui/candidate_window_view.h
@@ -66,7 +66,7 @@
   void ShowPreeditText();
 
   // Updates the preedit text.
-  void UpdatePreeditText(const base::string16& text);
+  void UpdatePreeditText(const std::u16string& text);
 
   // Updates candidates of the candidate window from |candidate_window|.
   // Candidates are arranged per |orientation|.
diff --git a/chrome/browser/chromeos/input_method/ui/candidate_window_view_unittest.cc b/chrome/browser/chromeos/input_method/ui/candidate_window_view_unittest.cc
index 2ec2b7b3..54ba37af 100644
--- a/chrome/browser/chromeos/input_method/ui/candidate_window_view_unittest.cc
+++ b/chrome/browser/chromeos/input_method/ui/candidate_window_view_unittest.cc
@@ -289,20 +289,20 @@
   ui::CandidateWindow candidate_window;
   ui::CandidateWindow no_shortcut_candidate_window;
 
-  const base::string16 kSampleCandidate1 = base::UTF8ToUTF16("Sample String 1");
-  const base::string16 kSampleCandidate2 =
+  const std::u16string kSampleCandidate1 = base::UTF8ToUTF16("Sample String 1");
+  const std::u16string kSampleCandidate2 =
       base::UTF8ToUTF16("\xE3\x81\x82");  // multi byte string.
-  const base::string16 kSampleCandidate3 = base::UTF8ToUTF16(".....");
+  const std::u16string kSampleCandidate3 = base::UTF8ToUTF16(".....");
 
-  const base::string16 kSampleShortcut1 = base::UTF8ToUTF16("1");
-  const base::string16 kSampleShortcut2 = base::UTF8ToUTF16("b");
-  const base::string16 kSampleShortcut3 = base::UTF8ToUTF16("C");
+  const std::u16string kSampleShortcut1 = base::UTF8ToUTF16("1");
+  const std::u16string kSampleShortcut2 = base::UTF8ToUTF16("b");
+  const std::u16string kSampleShortcut3 = base::UTF8ToUTF16("C");
 
-  const base::string16 kSampleAnnotation1 =
+  const std::u16string kSampleAnnotation1 =
       base::UTF8ToUTF16("Sample Annotation 1");
-  const base::string16 kSampleAnnotation2 =
+  const std::u16string kSampleAnnotation2 =
       base::UTF8ToUTF16("\xE3\x81\x82");  // multi byte string.
-  const base::string16 kSampleAnnotation3 = base::UTF8ToUTF16("......");
+  const std::u16string kSampleAnnotation3 = base::UTF8ToUTF16("......");
 
   // Create CandidateWindow object.
   InitCandidateWindow(kPageSize, &candidate_window);
diff --git a/chrome/browser/chromeos/input_method/ui/suggestion_details.h b/chrome/browser/chromeos/input_method/ui/suggestion_details.h
index 9d3ed6b..1e4ffde 100644
--- a/chrome/browser/chromeos/input_method/ui/suggestion_details.h
+++ b/chrome/browser/chromeos/input_method/ui/suggestion_details.h
@@ -13,7 +13,7 @@
 namespace ime {
 
 struct SuggestionDetails {
-  base::string16 text;
+  std::u16string text;
   size_t confirmed_length = 0;
   bool show_annotation = false;
   bool show_setting_link = false;
diff --git a/chrome/browser/chromeos/input_method/ui/suggestion_view.cc b/chrome/browser/chromeos/input_method/ui/suggestion_view.cc
index e84cc407..60f1bad 100644
--- a/chrome/browser/chromeos/input_method/ui/suggestion_view.cc
+++ b/chrome/browser/chromeos/input_method/ui/suggestion_view.cc
@@ -133,8 +133,8 @@
   annotation_label_->SetVisible(details.show_annotation);
 }
 
-void SuggestionView::SetViewWithIndex(const base::string16& index,
-                                      const base::string16& text) {
+void SuggestionView::SetViewWithIndex(const std::u16string& index,
+                                      const std::u16string& text) {
   index_label_->SetText(index);
   index_label_->SetVisible(true);
   index_width_ = index_label_->GetPreferredSize().width();
@@ -142,7 +142,7 @@
   suggestion_width_ = suggestion_label_->GetPreferredSize().width();
 }
 
-void SuggestionView::SetSuggestionText(const base::string16& text,
+void SuggestionView::SetSuggestionText(const std::u16string& text,
                                        const size_t confirmed_length) {
   // SetText clears the existing style only if the text to set is different from
   // the previous one.
diff --git a/chrome/browser/chromeos/input_method/ui/suggestion_view.h b/chrome/browser/chromeos/input_method/ui/suggestion_view.h
index c6dc4daf..1b58973 100644
--- a/chrome/browser/chromeos/input_method/ui/suggestion_view.h
+++ b/chrome/browser/chromeos/input_method/ui/suggestion_view.h
@@ -52,8 +52,8 @@
 
   void SetView(const SuggestionDetails& details);
 
-  void SetViewWithIndex(const base::string16& index,
-                        const base::string16& text);
+  void SetViewWithIndex(const std::u16string& index,
+                        const std::u16string& text);
 
   void SetHighlighted(bool highlighted);
   void SetMinWidth(int width);
@@ -71,7 +71,7 @@
   // Views created in the class will be part of tree of |this|, so these
   // child views will be deleted when |this| is deleted.
 
-  void SetSuggestionText(const base::string16& text,
+  void SetSuggestionText(const std::u16string& text,
                          const size_t confirmed_length);
 
   views::Label* index_label_ = nullptr;
diff --git a/chrome/browser/chromeos/input_method/ui/suggestion_window_view.cc b/chrome/browser/chromeos/input_method/ui/suggestion_window_view.cc
index 603863f..1c7eb0b 100644
--- a/chrome/browser/chromeos/input_method/ui/suggestion_window_view.cc
+++ b/chrome/browser/chromeos/input_method/ui/suggestion_window_view.cc
@@ -99,7 +99,7 @@
 
 void SuggestionWindowView::ShowMultipleCandidates(
     const chromeos::AssistiveWindowProperties& properties) {
-  const std::vector<base::string16>& candidates = properties.candidates;
+  const std::vector<std::u16string>& candidates = properties.candidates;
   ResizeCandidateArea(candidates.size());
   for (size_t i = 0; i < candidates.size(); ++i) {
     auto* const candidate =
diff --git a/chrome/browser/chromeos/input_method/ui/suggestion_window_view_unittest.cc b/chrome/browser/chromeos/input_method/ui/suggestion_window_view_unittest.cc
index d62aa19d..17f0ede 100644
--- a/chrome/browser/chromeos/input_method/ui/suggestion_window_view_unittest.cc
+++ b/chrome/browser/chromeos/input_method/ui/suggestion_window_view_unittest.cc
@@ -78,7 +78,7 @@
   SuggestionWindowView* suggestion_window_view_;
   std::unique_ptr<MockAssistiveDelegate> delegate_ =
       std::make_unique<MockAssistiveDelegate>();
-  std::vector<base::string16> candidates_;
+  std::vector<std::u16string> candidates_;
   chromeos::AssistiveWindowProperties window_;
   AssistiveWindowButton candidate_button_;
   AssistiveWindowButton setting_link_view_;
diff --git a/chrome/browser/chromeos/kerberos/kerberos_ticket_expiry_notification.cc b/chrome/browser/chromeos/kerberos/kerberos_ticket_expiry_notification.cc
index f46dc74..8d91d29b 100644
--- a/chrome/browser/chromeos/kerberos/kerberos_ticket_expiry_notification.cc
+++ b/chrome/browser/chromeos/kerberos/kerberos_ticket_expiry_notification.cc
@@ -62,11 +62,11 @@
 void Show(Profile* profile,
           const std::string& principal_name,
           ClickCallback click_callback) {
-  const base::string16 kTitle =
+  const std::u16string kTitle =
       l10n_util::GetStringUTF16(IDS_KERBEROS_TICKET_EXPIRY_TITLE);
-  const base::string16 kBody = l10n_util::GetStringFUTF16(
+  const std::u16string kBody = l10n_util::GetStringFUTF16(
       IDS_KERBEROS_TICKET_EXPIRY_BODY, base::UTF8ToUTF16(principal_name));
-  const base::string16 kButton =
+  const std::u16string kButton =
       l10n_util::GetStringUTF16(IDS_KERBEROS_TICKET_EXPIRY_BUTTON);
 
   // For histogram reporting.
@@ -76,7 +76,7 @@
   const GURL kEmptyOriginUrl;
 
   // Empty display source to show OS name as source.
-  const base::string16 kEmptyDisplaySource;
+  const std::u16string kEmptyDisplaySource;
 
   // Office building.
   const gfx::VectorIcon& kIcon = vector_icons::kBusinessIcon;
diff --git a/chrome/browser/chromeos/launcher_search_provider/launcher_search_provider_service.cc b/chrome/browser/chromeos/launcher_search_provider/launcher_search_provider_service.cc
index d4126031..202a786 100644
--- a/chrome/browser/chromeos/launcher_search_provider/launcher_search_provider_service.cc
+++ b/chrome/browser/chromeos/launcher_search_provider/launcher_search_provider_service.cc
@@ -139,7 +139,7 @@
     // Results with a match score of 0 are discarded. This will also be used to
     // set the title tags (highlighting which parts of the title matched the
     // search query).
-    const base::string16 title = base::UTF8ToUTF16(result.title);
+    const std::u16string title = base::UTF8ToUTF16(result.title);
     TokenizedString tokenized_title(title);
     TokenizedStringMatch match;
     TokenizedString tokenized_query(base::UTF8ToUTF16(query_));
diff --git a/chrome/browser/chromeos/lock_screen_apps/app_manager_impl.cc b/chrome/browser/chromeos/lock_screen_apps/app_manager_impl.cc
index 51f5e18..5a4dc88a 100644
--- a/chrome/browser/chromeos/lock_screen_apps/app_manager_impl.cc
+++ b/chrome/browser/chromeos/lock_screen_apps/app_manager_impl.cc
@@ -512,7 +512,7 @@
     return;
   }
 
-  base::string16 error;
+  std::u16string error;
   extensions::ExtensionSystem::Get(lock_screen_profile_)
       ->extension_service()
       ->UninstallExtension(
diff --git a/chrome/browser/chromeos/lock_screen_apps/lock_screen_profile_creator_impl.cc b/chrome/browser/chromeos/lock_screen_apps/lock_screen_profile_creator_impl.cc
index 3de50cd..7a6fe0ec 100644
--- a/chrome/browser/chromeos/lock_screen_apps/lock_screen_profile_creator_impl.cc
+++ b/chrome/browser/chromeos/lock_screen_apps/lock_screen_profile_creator_impl.cc
@@ -62,7 +62,7 @@
       base::BindRepeating(&LockScreenProfileCreatorImpl::OnProfileReady,
                           weak_ptr_factory_.GetWeakPtr(),
                           tick_clock_->NowTicks()),
-      base::string16() /* name */, "" /* icon_url*/);
+      std::u16string() /* name */, "" /* icon_url*/);
 }
 
 void LockScreenProfileCreatorImpl::InitializeImpl() {
diff --git a/chrome/browser/chromeos/lock_screen_apps/toast_dialog_view.cc b/chrome/browser/chromeos/lock_screen_apps/toast_dialog_view.cc
index c8eaea6..eb258e5 100644
--- a/chrome/browser/chromeos/lock_screen_apps/toast_dialog_view.cc
+++ b/chrome/browser/chromeos/lock_screen_apps/toast_dialog_view.cc
@@ -40,7 +40,7 @@
 
 }  // namespace
 
-ToastDialogView::ToastDialogView(const base::string16& app_name,
+ToastDialogView::ToastDialogView(const std::u16string& app_name,
                                  base::OnceClosure dismissed_callback) {
   SetButtons(ui::DIALOG_BUTTON_NONE);
   SetCloseCallback(std::move(dismissed_callback));
diff --git a/chrome/browser/chromeos/lock_screen_apps/toast_dialog_view.h b/chrome/browser/chromeos/lock_screen_apps/toast_dialog_view.h
index c9aa8c27..2cada3f 100644
--- a/chrome/browser/chromeos/lock_screen_apps/toast_dialog_view.h
+++ b/chrome/browser/chromeos/lock_screen_apps/toast_dialog_view.h
@@ -21,7 +21,7 @@
 class ToastDialogView : public views::BubbleDialogDelegateView {
  public:
   METADATA_HEADER(ToastDialogView);
-  ToastDialogView(const base::string16& app_name,
+  ToastDialogView(const std::u16string& app_name,
                   base::OnceClosure dismissed_callback);
   ToastDialogView(const ToastDialogView&) = delete;
   ToastDialogView& operator=(const ToastDialogView&) = delete;
diff --git a/chrome/browser/chromeos/net/network_portal_web_dialog.cc b/chrome/browser/chromeos/net/network_portal_web_dialog.cc
index c8cf4d0..ec514b7 100644
--- a/chrome/browser/chromeos/net/network_portal_web_dialog.cc
+++ b/chrome/browser/chromeos/net/network_portal_web_dialog.cc
@@ -65,7 +65,7 @@
   return ui::MODAL_TYPE_SYSTEM;
 }
 
-base::string16 NetworkPortalWebDialog::GetDialogTitle() const {
+std::u16string NetworkPortalWebDialog::GetDialogTitle() const {
   return l10n_util::GetStringUTF16(
       IDS_CAPTIVE_PORTAL_AUTHORIZATION_DIALOG_NAME);
 }
diff --git a/chrome/browser/chromeos/net/network_portal_web_dialog.h b/chrome/browser/chromeos/net/network_portal_web_dialog.h
index 57782d6a..2b4e999 100644
--- a/chrome/browser/chromeos/net/network_portal_web_dialog.h
+++ b/chrome/browser/chromeos/net/network_portal_web_dialog.h
@@ -30,7 +30,7 @@
  private:
   // ui::WebDialogDelegate:
   ui::ModalType GetDialogModalType() const override;
-  base::string16 GetDialogTitle() const override;
+  std::u16string GetDialogTitle() const override;
   GURL GetDialogContentURL() const override;
   void GetWebUIMessageHandlers(
       std::vector<content::WebUIMessageHandler*>* handlers) const override;
diff --git a/chrome/browser/chromeos/net/shill_error.cc b/chrome/browser/chromeos/net/shill_error.cc
index 8d9d2a4..15218e4 100644
--- a/chrome/browser/chromeos/net/shill_error.cc
+++ b/chrome/browser/chromeos/net/shill_error.cc
@@ -26,10 +26,10 @@
 
 namespace shill_error {
 
-base::string16 GetShillErrorString(const std::string& error,
+std::u16string GetShillErrorString(const std::string& error,
                                    const std::string& network_id) {
   if (error.empty())
-    return base::string16();
+    return std::u16string();
   if (error == shill::kErrorOutOfRange)
     return l10n_util::GetStringUTF16(IDS_CHROMEOS_NETWORK_ERROR_OUT_OF_RANGE);
   if (error == shill::kErrorPinMissing)
diff --git a/chrome/browser/chromeos/net/shill_error.h b/chrome/browser/chromeos/net/shill_error.h
index 77837722..4703b600 100644
--- a/chrome/browser/chromeos/net/shill_error.h
+++ b/chrome/browser/chromeos/net/shill_error.h
@@ -12,7 +12,7 @@
 namespace chromeos {
 namespace shill_error {
 
-base::string16 GetShillErrorString(const std::string& error,
+std::u16string GetShillErrorString(const std::string& error,
                                    const std::string& network_id);
 
 // Returns true if |error| is known to be a configuration error.
diff --git a/chrome/browser/chromeos/night_light/night_light_client.cc b/chrome/browser/chromeos/night_light/night_light_client.cc
index 67abfff..8ffc7636 100644
--- a/chrome/browser/chromeos/night_light/night_light_client.cc
+++ b/chrome/browser/chromeos/night_light/night_light_client.cc
@@ -78,7 +78,7 @@
 }
 
 void NightLightClient::TimezoneChanged(const icu::TimeZone& timezone) {
-  const base::string16 timezone_id =
+  const std::u16string timezone_id =
       chromeos::system::TimezoneSettings::GetTimezoneID(timezone);
   if (current_timezone_id_ == timezone_id)
     return;
@@ -107,7 +107,7 @@
 }
 
 void NightLightClient::SetCurrentTimezoneIdForTesting(
-    const base::string16& timezone_id) {
+    const std::u16string& timezone_id) {
   current_timezone_id_ = timezone_id;
 }
 
diff --git a/chrome/browser/chromeos/night_light/night_light_client.h b/chrome/browser/chromeos/night_light/night_light_client.h
index 2267fb7b..cc5809e 100644
--- a/chrome/browser/chromeos/night_light/night_light_client.h
+++ b/chrome/browser/chromeos/night_light/night_light_client.h
@@ -52,7 +52,7 @@
     return last_successful_geo_request_time_;
   }
 
-  const base::string16& current_timezone_id() const {
+  const std::u16string& current_timezone_id() const {
     return current_timezone_id_;
   }
 
@@ -64,7 +64,7 @@
 
   void SetClockForTesting(base::Clock* clock);
 
-  void SetCurrentTimezoneIdForTesting(const base::string16& timezone_id);
+  void SetCurrentTimezoneIdForTesting(const std::u16string& timezone_id);
 
  protected:
   void OnGeoposition(const chromeos::Geoposition& position,
@@ -102,7 +102,7 @@
   double longitude_ = 0.0;
 
   // The ID of the current timezone in the fromat similar to "America/Chicago".
-  base::string16 current_timezone_id_;
+  std::u16string current_timezone_id_;
 
   // True as long as the schedule type is set to "sunset to sunrise" or
   // "custom", which means this client will be retrieving the IP-based
diff --git a/chrome/browser/chromeos/night_light/night_light_client_unittest.cc b/chrome/browser/chromeos/night_light/night_light_client_unittest.cc
index 7876cce..f84d872 100644
--- a/chrome/browser/chromeos/night_light/night_light_client_unittest.cc
+++ b/chrome/browser/chromeos/night_light/night_light_client_unittest.cc
@@ -27,7 +27,7 @@
       icu::UnicodeString(timezone_id, -1, US_INV)));
 }
 
-base::string16 GetTimezoneId(const icu::TimeZone& timezone) {
+std::u16string GetTimezoneId(const icu::TimeZone& timezone) {
   return chromeos::system::TimezoneSettings::GetTimezoneID(timezone);
 }
 
diff --git a/chrome/browser/chromeos/note_taking_helper_unittest.cc b/chrome/browser/chromeos/note_taking_helper_unittest.cc
index cb271e3..0346149 100644
--- a/chrome/browser/chromeos/note_taking_helper_unittest.cc
+++ b/chrome/browser/chromeos/note_taking_helper_unittest.cc
@@ -302,7 +302,7 @@
   }
   void UninstallExtension(const extensions::Extension* extension,
                           Profile* profile) {
-    base::string16 error;
+    std::u16string error;
     extensions::ExtensionSystem::Get(profile)
         ->extension_service()
         ->UninstallExtension(
diff --git a/chrome/browser/chromeos/phonehub/browser_tabs_metadata_fetcher_impl.cc b/chrome/browser/chromeos/phonehub/browser_tabs_metadata_fetcher_impl.cc
index 7de8bc2..b155511 100644
--- a/chrome/browser/chromeos/phonehub/browser_tabs_metadata_fetcher_impl.cc
+++ b/chrome/browser/chromeos/phonehub/browser_tabs_metadata_fetcher_impl.cc
@@ -48,7 +48,7 @@
       if (!tab_url.is_valid())
         continue;
 
-      const base::string16& title = current_navigation.title();
+      const std::u16string& title = current_navigation.title();
       const base::Time last_accessed_timestamp = tab->timestamp;
       browser_tab_metadata.emplace_back(tab_url, title, last_accessed_timestamp,
                                         gfx::Image());
diff --git a/chrome/browser/chromeos/phonehub/browser_tabs_metadata_fetcher_impl_unittest.cc b/chrome/browser/chromeos/phonehub/browser_tabs_metadata_fetcher_impl_unittest.cc
index fe08f7f..b2dbd5a 100644
--- a/chrome/browser/chromeos/phonehub/browser_tabs_metadata_fetcher_impl_unittest.cc
+++ b/chrome/browser/chromeos/phonehub/browser_tabs_metadata_fetcher_impl_unittest.cc
@@ -85,7 +85,7 @@
   }
 
   void AddTab(sync_sessions::SyncedSessionWindow* synced_session_window,
-              const base::string16& title,
+              const std::u16string& title,
               const GURL& url,
               const base::Time& time) {
     auto tab1 = std::make_unique<sessions::SessionTab>();
@@ -178,16 +178,16 @@
 };
 
 TEST_F(BrowserTabsMetadataFetcherImplTest, NewFetchDuringOldFetchInProgress) {
-  const base::string16 kTitleA = base::UTF8ToUTF16("A");
+  const std::u16string kTitleA = base::UTF8ToUTF16("A");
   const GURL kUrlA = GURL("http://a.com");
 
-  const base::string16 kTitleB = base::UTF8ToUTF16("B");
+  const std::u16string kTitleB = base::UTF8ToUTF16("B");
   const GURL kUrlB = GURL("http://b.com");
 
-  const base::string16 kTitleC = base::UTF8ToUTF16("C");
+  const std::u16string kTitleC = base::UTF8ToUTF16("C");
   const GURL kUrlC = GURL("http://c.com");
 
-  const base::string16 kTitleD = base::UTF8ToUTF16("D");
+  const std::u16string kTitleD = base::UTF8ToUTF16("D");
   const GURL kUrlD = GURL("http://d.com");
 
   auto synced_session_window =
@@ -243,10 +243,10 @@
 }
 
 TEST_F(BrowserTabsMetadataFetcherImplTest, BelowMaximumNumberOfTabs) {
-  const base::string16 kTitleC = base::UTF8ToUTF16("C");
+  const std::u16string kTitleC = base::UTF8ToUTF16("C");
   const GURL kUrlC = GURL("http://c.com");
 
-  const base::string16 kTitleD = base::UTF8ToUTF16("D");
+  const std::u16string kTitleD = base::UTF8ToUTF16("D");
   const GURL kUrlD = GURL("http://d.com");
 
   auto synced_session_window =
@@ -267,22 +267,22 @@
 }
 
 TEST_F(BrowserTabsMetadataFetcherImplTest, ExceedMaximumNumberOfTabs) {
-  const base::string16 kTitleA = base::UTF8ToUTF16("A");
+  const std::u16string kTitleA = base::UTF8ToUTF16("A");
   const GURL kUrlA = GURL("http://a.com");
 
-  const base::string16 kTitleB = base::UTF8ToUTF16("B");
+  const std::u16string kTitleB = base::UTF8ToUTF16("B");
   const GURL kUrlB = GURL("http://b.com");
 
-  const base::string16 kTitleC = base::UTF8ToUTF16("C");
+  const std::u16string kTitleC = base::UTF8ToUTF16("C");
   const GURL kUrlC = GURL("http://c.com");
 
-  const base::string16 kTitleD = base::UTF8ToUTF16("D");
+  const std::u16string kTitleD = base::UTF8ToUTF16("D");
   const GURL kUrlD = GURL("http://d.com");
 
-  const base::string16 kTitleE = base::UTF8ToUTF16("E");
+  const std::u16string kTitleE = base::UTF8ToUTF16("E");
   const GURL kUrlE = GURL(chrome::kChromeUINewTabURL);
 
-  const base::string16 kTitleF = base::UTF8ToUTF16("F");
+  const std::u16string kTitleF = base::UTF8ToUTF16("F");
   const GURL kUrlF = GURL("content://image.png");
 
   auto synced_session_window =
@@ -311,16 +311,16 @@
 }
 
 TEST_F(BrowserTabsMetadataFetcherImplTest, MultipleWindows) {
-  const base::string16 kTitleB = base::UTF8ToUTF16("B");
+  const std::u16string kTitleB = base::UTF8ToUTF16("B");
   const GURL kUrlB = GURL("http://b.com");
 
-  const base::string16 kTitleC = base::UTF8ToUTF16("C");
+  const std::u16string kTitleC = base::UTF8ToUTF16("C");
   const GURL kUrlC = GURL("http://c.com");
 
-  const base::string16 kTitleD = base::UTF8ToUTF16("D");
+  const std::u16string kTitleD = base::UTF8ToUTF16("D");
   const GURL kUrlD = GURL("http://d.com");
 
-  const base::string16 kTitleE = base::UTF8ToUTF16("E");
+  const std::u16string kTitleE = base::UTF8ToUTF16("E");
   const GURL kUrlE = GURL("http://e.com");
 
   auto synced_session_window_one =
diff --git a/chrome/browser/chromeos/plugin_vm/plugin_vm_manager_impl.cc b/chrome/browser/chromeos/plugin_vm/plugin_vm_manager_impl.cc
index 3f0cfab..f140dcc 100644
--- a/chrome/browser/chromeos/plugin_vm/plugin_vm_manager_impl.cc
+++ b/chrome/browser/chromeos/plugin_vm/plugin_vm_manager_impl.cc
@@ -66,8 +66,8 @@
 void ShowStartVmFailedDialog(PluginVmLaunchResult result) {
   LOG(ERROR) << "Failed to start VM with launch result "
              << static_cast<int>(result);
-  base::string16 app_name = l10n_util::GetStringUTF16(IDS_PLUGIN_VM_APP_NAME);
-  base::string16 title;
+  std::u16string app_name = l10n_util::GetStringUTF16(IDS_PLUGIN_VM_APP_NAME);
+  std::u16string title;
   int message_id;
   switch (result) {
     default:
diff --git a/chrome/browser/chromeos/plugin_vm/plugin_vm_uninstaller_notification.cc b/chrome/browser/chromeos/plugin_vm/plugin_vm_uninstaller_notification.cc
index cf9f8f7..84874f9 100644
--- a/chrome/browser/chromeos/plugin_vm/plugin_vm_uninstaller_notification.cc
+++ b/chrome/browser/chromeos/plugin_vm/plugin_vm_uninstaller_notification.cc
@@ -29,7 +29,7 @@
                             next_notification_id_++);
 }
 
-base::string16 PluginVmAppName() {
+std::u16string PluginVmAppName() {
   return l10n_util::GetStringUTF16(IDS_PLUGIN_VM_APP_NAME);
 }
 
@@ -44,13 +44,13 @@
   rich_notification_data.pinned = true;
   rich_notification_data.never_timeout = true;
 
-  base::string16 app_name = PluginVmAppName();
+  std::u16string app_name = PluginVmAppName();
   notification_ = std::make_unique<message_center::Notification>(
       message_center::NOTIFICATION_TYPE_PROGRESS, GetUniqueNotificationId(),
       l10n_util::GetStringFUTF16(
           IDS_PLUGIN_VM_REMOVING_NOTIFICATION_IN_PROGRESS_MESSAGE,
           app_name),     // title
-      base::string16(),  // message
+      std::u16string(),  // message
       gfx::Image(),      // icon
       app_name,
       GURL(),  // origin_url
@@ -66,8 +66,8 @@
 PluginVmUninstallerNotification::~PluginVmUninstallerNotification() = default;
 
 void PluginVmUninstallerNotification::SetFailed(FailedReason reason) {
-  base::string16 app_name = PluginVmAppName();
-  base::string16 message;
+  std::u16string app_name = PluginVmAppName();
+  std::u16string message;
   if (reason == FailedReason::kStopVmFailed) {
     message = l10n_util::GetStringFUTF16(
         IDS_PLUGIN_VM_SHUTDOWN_WINDOWS_TO_UNINSTALL_MESSAGE, app_name);
diff --git a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
index 2283072..cbc26f8 100644
--- a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
+++ b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
@@ -384,7 +384,7 @@
                                  const content::NotificationDetails& details) {
   return content::Details<const extensions::CrxInstallError>(details)
              ->message()
-             .find(base::UTF8ToUTF16(id)) != base::string16::npos;
+             .find(base::UTF8ToUTF16(id)) != std::u16string::npos;
 }
 
 bool IsSessionStarted() {
@@ -1758,8 +1758,8 @@
 
   std::string timezone_id1("America/Los_Angeles");
   std::string timezone_id2("Europe/Berlin");
-  base::string16 timezone_id1_utf16(base::UTF8ToUTF16(timezone_id1));
-  base::string16 timezone_id2_utf16(base::UTF8ToUTF16(timezone_id2));
+  std::u16string timezone_id1_utf16(base::UTF8ToUTF16(timezone_id1));
+  std::u16string timezone_id2_utf16(base::UTF8ToUTF16(timezone_id2));
 
   chromeos::system::TimezoneSettings* timezone_settings =
       chromeos::system::TimezoneSettings::GetInstance();
diff --git a/chrome/browser/chromeos/policy/device_policy_decoder_chromeos_unittest.cc b/chrome/browser/chromeos/policy/device_policy_decoder_chromeos_unittest.cc
index d7999ee4..99a60f82 100644
--- a/chrome/browser/chromeos/policy/device_policy_decoder_chromeos_unittest.cc
+++ b/chrome/browser/chromeos/policy/device_policy_decoder_chromeos_unittest.cc
@@ -149,7 +149,7 @@
   EXPECT_EQ(base::ListValue(list),
             *policies.GetValue(key::kDeviceUserWhitelist));
 
-  base::RepeatingCallback<base::string16(int)> l10nlookup =
+  base::RepeatingCallback<std::u16string(int)> l10nlookup =
       base::BindRepeating(&l10n_util::GetStringUTF16);
 
   // Should have a deprecation warning.
diff --git a/chrome/browser/chromeos/policy/dlp/clipboard_bubble.cc b/chrome/browser/chromeos/policy/dlp/clipboard_bubble.cc
index 0066e73..bbd17697 100644
--- a/chrome/browser/chromeos/policy/dlp/clipboard_bubble.cc
+++ b/chrome/browser/chromeos/policy/dlp/clipboard_bubble.cc
@@ -66,7 +66,7 @@
 class Button : public views::LabelButton {
  public:
   METADATA_HEADER(Button);
-  explicit Button(const base::string16& button_label) {
+  explicit Button(const std::u16string& button_label) {
     SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_CENTER);
 
     SetText(button_label);
@@ -101,7 +101,7 @@
 ADD_READONLY_PROPERTY_METADATA(int, LabelWidth)
 END_METADATA
 
-ClipboardBubbleView::ClipboardBubbleView(const base::string16& text) {
+ClipboardBubbleView::ClipboardBubbleView(const std::u16string& text) {
   SetPaintToLayer(ui::LAYER_SOLID_COLOR);
   ash::ColorProvider* color_provider = ash::ColorProvider::Get();
   layer()->SetColor(color_provider->GetBaseLayerColor(
@@ -166,10 +166,10 @@
 ADD_READONLY_PROPERTY_METADATA(gfx::Size, BubbleSize)
 END_METADATA
 
-ClipboardBlockBubble::ClipboardBlockBubble(const base::string16& text)
+ClipboardBlockBubble::ClipboardBlockBubble(const std::u16string& text)
     : ClipboardBubbleView(text) {
   // Add "Got it" button.
-  base::string16 button_label =
+  std::u16string button_label =
       l10n_util::GetStringUTF16(IDS_POLICY_DLP_CLIPBOARD_BLOCK_DISMISS_BUTTON);
   button_ = AddChildView(std::make_unique<Button>(button_label));
   button_->SetPaintToLayer();
@@ -199,10 +199,10 @@
 BEGIN_METADATA(ClipboardBlockBubble, ClipboardBubbleView)
 END_METADATA
 
-ClipboardWarnBubble::ClipboardWarnBubble(const base::string16& text)
+ClipboardWarnBubble::ClipboardWarnBubble(const std::u16string& text)
     : ClipboardBubbleView(text) {
   // Add paste button.
-  base::string16 paste_label =
+  std::u16string paste_label =
       l10n_util::GetStringUTF16(IDS_POLICY_DLP_CLIPBOARD_WARN_PROCEED_BUTTON);
   paste_button_ = AddChildView(std::make_unique<Button>(paste_label));
   paste_button_->SetPaintToLayer();
@@ -212,7 +212,7 @@
                  kBubblePadding + label_->height() + kButtonLabelSpacing));
 
   // Add cancel button.
-  base::string16 cancel_label =
+  std::u16string cancel_label =
       l10n_util::GetStringUTF16(IDS_POLICY_DLP_CLIPBOARD_WARN_DISMISS_BUTTON);
   cancel_button_ = AddChildView(std::make_unique<Button>(cancel_label));
   cancel_button_->SetPaintToLayer();
diff --git a/chrome/browser/chromeos/policy/dlp/clipboard_bubble.h b/chrome/browser/chromeos/policy/dlp/clipboard_bubble.h
index ab832b6..10a1c55 100644
--- a/chrome/browser/chromeos/policy/dlp/clipboard_bubble.h
+++ b/chrome/browser/chromeos/policy/dlp/clipboard_bubble.h
@@ -26,7 +26,7 @@
  public:
   METADATA_HEADER(ClipboardBubbleView);
 
-  explicit ClipboardBubbleView(const base::string16& text);
+  explicit ClipboardBubbleView(const std::u16string& text);
   ~ClipboardBubbleView() override;
 
   virtual gfx::Size GetBubbleSize() const = 0;
@@ -44,7 +44,7 @@
  public:
   METADATA_HEADER(ClipboardBlockBubble);
 
-  explicit ClipboardBlockBubble(const base::string16& text);
+  explicit ClipboardBlockBubble(const std::u16string& text);
   ~ClipboardBlockBubble() override;
 
   // ClipboardBubbleView::
@@ -60,7 +60,7 @@
  public:
   METADATA_HEADER(ClipboardWarnBubble);
 
-  explicit ClipboardWarnBubble(const base::string16& text);
+  explicit ClipboardWarnBubble(const std::u16string& text);
   ~ClipboardWarnBubble() override;
 
   // ClipboardBubbleView::
diff --git a/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc b/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc
index 867b306..2ce774c 100644
--- a/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc
+++ b/chrome/browser/chromeos/policy/dlp/data_transfer_dlp_controller_browsertest.cc
@@ -105,7 +105,7 @@
   FakeClipboardNotifier* helper_;
 };
 
-void SetClipboardText(base::string16 text,
+void SetClipboardText(std::u16string text,
                       std::unique_ptr<ui::DataTransferEndpoint> source) {
   ui::ScopedClipboardWriter writer(ui::ClipboardBuffer::kCopyPaste,
                                    source ? std::move(source) : nullptr);
@@ -203,7 +203,7 @@
 
   ui::DataTransferEndpoint data_dst(
       url::Origin::Create(GURL("https://google.com")));
-  base::string16 result;
+  std::u16string result;
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, &data_dst, &result);
   EXPECT_EQ(base::UTF8ToUTF16(kClipboardText1), result);
@@ -259,22 +259,22 @@
                        url::Origin::Create(GURL(kMailUrl))));
 
   ui::DataTransferEndpoint data_dst1(url::Origin::Create(GURL(kMailUrl)));
-  base::string16 result1;
+  std::u16string result1;
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, &data_dst1, &result1);
   EXPECT_EQ(base::UTF8ToUTF16(kClipboardText1), result1);
 
   ui::DataTransferEndpoint data_dst2(url::Origin::Create(GURL(kDocsUrl)));
-  base::string16 result2;
+  std::u16string result2;
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, &data_dst2, &result2);
   EXPECT_EQ(base::UTF8ToUTF16(kClipboardText1), result2);
 
   ui::DataTransferEndpoint data_dst3(url::Origin::Create(GURL(kExampleUrl)));
-  base::string16 result3;
+  std::u16string result3;
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, &data_dst3, &result3);
-  EXPECT_EQ(base::string16(), result3);
+  EXPECT_EQ(std::u16string(), result3);
   ASSERT_TRUE(dlp_controller.ObserveWidget());
 
   EXPECT_CALL(dlp_controller, OnWidgetClosing);
@@ -285,7 +285,7 @@
   testing::Mock::VerifyAndClearExpectations(helper.get());
 
   ui::DataTransferEndpoint data_dst4(url::Origin::Create(GURL(kMailUrl)));
-  base::string16 result4;
+  std::u16string result4;
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, &data_dst1, &result4);
   EXPECT_EQ(base::UTF8ToUTF16(kClipboardText1), result4);
@@ -331,22 +331,22 @@
     writer.WriteText(base::UTF8ToUTF16(kClipboardText1));
   }
   ui::DataTransferEndpoint data_dst1(ui::EndpointType::kDefault);
-  base::string16 result1;
+  std::u16string result1;
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, &data_dst1, &result1);
   EXPECT_EQ(base::UTF8ToUTF16(kClipboardText1), result1);
 
   ui::DataTransferEndpoint data_dst2(ui::EndpointType::kArc);
-  base::string16 result2;
+  std::u16string result2;
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, &data_dst2, &result2);
-  EXPECT_EQ(base::string16(), result2);
+  EXPECT_EQ(std::u16string(), result2);
 
   ui::DataTransferEndpoint data_dst3(ui::EndpointType::kCrostini);
-  base::string16 result3;
+  std::u16string result3;
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, &data_dst3, &result3);
-  EXPECT_EQ(base::string16(), result3);
+  EXPECT_EQ(std::u16string(), result3);
 }
 
 // Flaky on MSan bots: http://crbug.com/1178328
@@ -417,7 +417,7 @@
                        url::Origin::Create(GURL(kMailUrl))));
 
   // Initiate a paste on textfield_.
-  textfield_->SetText(base::string16());
+  textfield_->SetText(std::u16string());
   textfield_->RequestFocus();
   event_generator_->PressKey(ui::VKEY_V, ui::EF_CONTROL_DOWN);
   event_generator_->ReleaseKey(ui::VKEY_V, ui::EF_CONTROL_DOWN);
@@ -427,13 +427,13 @@
   ASSERT_TRUE(dlp_controller.ObserveWidget());
 
   // Initiate a paste on nullptr data_dst.
-  base::string16 result;
+  std::u16string result;
   EXPECT_CALL(dlp_controller, OnWidgetClosing);
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, nullptr, &result);
   testing::Mock::VerifyAndClearExpectations(&dlp_controller);
 
-  EXPECT_EQ(base::string16(), result);
+  EXPECT_EQ(std::u16string(), result);
   ASSERT_TRUE(dlp_controller.ObserveWidget());
 
   EXPECT_CALL(dlp_controller, OnWidgetClosing);
@@ -496,7 +496,7 @@
   }
 
   ui::DataTransferEndpoint arc_endpoint(ui::EndpointType::kArc);
-  base::string16 result;
+  std::u16string result;
   ui::Clipboard::GetForCurrentThread()->ReadText(
       ui::ClipboardBuffer::kCopyPaste, &arc_endpoint, &result);
   EXPECT_EQ(base::UTF8ToUTF16(kClipboardText1), result);
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.cc b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.cc
index 724853f..89db565 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.cc
@@ -92,7 +92,7 @@
     const ui::DataTransferEndpoint* const data_dst) {
   DCHECK(data_src);
   DCHECK(data_src->origin());
-  const base::string16 host_name =
+  const std::u16string host_name =
       base::UTF8ToUTF16(data_src->origin()->host());
   if (data_dst) {
     if (data_dst->type() == ui::EndpointType::kCrostini) {
@@ -130,7 +130,7 @@
 
   CloseWidget(widget_.get(), views::Widget::ClosedReason::kUnspecified);
 
-  const base::string16 host_name =
+  const std::u16string host_name =
       base::UTF8ToUTF16(data_src->origin()->host());
 
   if (data_dst) {
@@ -180,7 +180,7 @@
 
   CloseWidget(widget_.get(), views::Widget::ClosedReason::kUnspecified);
 
-  const base::string16 host_name =
+  const std::u16string host_name =
       base::UTF8ToUTF16(data_src->origin()->host());
 
   blink_paste_cb_ = std::move(paste_cb);
@@ -239,7 +239,7 @@
 }
 
 void DlpClipboardNotifier::ShowToast(const std::string& id,
-                                     const base::string16& text) const {
+                                     const std::u16string& text) const {
   ash::ToastData toast(id, text, kClipboardDlpBlockDurationMs,
                        /*dismiss_text=*/base::nullopt);
   toast.is_managed = true;
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.h b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.h
index 9fd33898..24e54b23 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.h
+++ b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier.h
@@ -67,7 +67,7 @@
 
  private:
   virtual void ShowToast(const std::string& id,
-                         const base::string16& text) const;
+                         const std::u16string& text) const;
 
   // ui::ClipboardObserver
   void OnClipboardDataChanged() override;
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier_unittest.cc b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier_unittest.cc
index 4819ab4..cf7cdead 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier_unittest.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_clipboard_notifier_unittest.cc
@@ -51,13 +51,13 @@
 
 class MockDlpClipboardNotifier : public DlpClipboardNotifier {
  public:
-  MOCK_METHOD1(ShowBlockBubble, void(const base::string16& text));
+  MOCK_METHOD1(ShowBlockBubble, void(const std::u16string& text));
   MOCK_METHOD3(ShowWarningBubble,
-               void(const base::string16& text,
+               void(const std::u16string& text,
                     base::RepeatingCallback<void(views::Widget*)> proceed_cb,
                     base::RepeatingCallback<void(views::Widget*)> cancel_cb));
   MOCK_CONST_METHOD2(ShowToast,
-                     void(const std::string& id, const base::string16& text));
+                     void(const std::string& id, const std::u16string& text));
 
   using DlpClipboardNotifier::BlinkProceedPressed;
   using DlpClipboardNotifier::CancelWarningPressed;
@@ -213,7 +213,7 @@
   ui::DataTransferEndpoint data_src(origin);
   ui::DataTransferEndpoint data_dst(GetParam().dst_type);
 
-  base::string16 expected_toast_str = l10n_util::GetStringFUTF16(
+  std::u16string expected_toast_str = l10n_util::GetStringFUTF16(
       IDS_POLICY_DLP_CLIPBOARD_BLOCKED_ON_COPY_VM,
       base::UTF8ToUTF16(origin.host()),
       l10n_util::GetStringUTF16(GetParam().expected_dst_name_id));
@@ -229,7 +229,7 @@
   ui::DataTransferEndpoint data_src(origin);
   ui::DataTransferEndpoint data_dst(GetParam().dst_type);
 
-  base::string16 expected_toast_str = l10n_util::GetStringFUTF16(
+  std::u16string expected_toast_str = l10n_util::GetStringFUTF16(
       IDS_POLICY_DLP_CLIPBOARD_WARN_ON_COPY_VM,
       l10n_util::GetStringUTF16(GetParam().expected_dst_name_id));
 
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc
index ff6541d..7a02cf1 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.cc
@@ -174,7 +174,7 @@
 void DlpContentManager::OnScreenCaptureStarted(
     const std::string& label,
     std::vector<content::DesktopMediaID> screen_capture_ids,
-    const base::string16& application_title,
+    const std::u16string& application_title,
     content::MediaStreamUI::StateChangeCallback state_change_callback) {
   for (const content::DesktopMediaID& id : screen_capture_ids) {
     ScreenCaptureInfo capture_info(label, id, application_title,
@@ -218,7 +218,7 @@
 DlpContentManager::ScreenCaptureInfo::ScreenCaptureInfo(
     const std::string& label,
     const content::DesktopMediaID& media_id,
-    const base::string16& application_title,
+    const std::u16string& application_title,
     content::MediaStreamUI::StateChangeCallback state_change_callback)
     : label(label),
       media_id(media_id),
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_content_manager.h b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.h
index 88538d7c..fcf96da 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_content_manager.h
+++ b/chrome/browser/chromeos/policy/dlp/dlp_content_manager.h
@@ -83,7 +83,7 @@
   void OnScreenCaptureStarted(
       const std::string& label,
       std::vector<content::DesktopMediaID> screen_capture_ids,
-      const base::string16& application_title,
+      const std::u16string& application_title,
       content::MediaStreamUI::StateChangeCallback state_change_callback);
 
   // Called when screen capture is stopped.
@@ -109,7 +109,7 @@
     ScreenCaptureInfo(
         const std::string& label,
         const content::DesktopMediaID& media_id,
-        const base::string16& application_title,
+        const std::u16string& application_title,
         content::MediaStreamUI::StateChangeCallback state_change_callback);
     ScreenCaptureInfo(const ScreenCaptureInfo& other);
     ScreenCaptureInfo& operator=(const ScreenCaptureInfo& other);
@@ -120,7 +120,7 @@
 
     std::string label;
     content::DesktopMediaID media_id;
-    base::string16 application_title;
+    std::u16string application_title;
     content::MediaStreamUI::StateChangeCallback state_change_callback;
     bool is_running = true;
     bool showing_paused_notification = false;
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.cc b/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.cc
index ee9a50d..811b94f96 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.cc
@@ -105,7 +105,7 @@
   }
 }
 
-void DlpDataTransferNotifier::ShowBlockBubble(const base::string16& text) {
+void DlpDataTransferNotifier::ShowBlockBubble(const std::u16string& text) {
   InitWidget();
   ClipboardBlockBubble* bubble =
       widget_->SetContentsView(std::make_unique<ClipboardBlockBubble>(text));
@@ -116,7 +116,7 @@
 }
 
 void DlpDataTransferNotifier::ShowWarningBubble(
-    const base::string16& text,
+    const std::u16string& text,
     base::RepeatingCallback<void(views::Widget*)> proceed_cb,
     base::RepeatingCallback<void(views::Widget*)> cancel_cb) {
   InitWidget();
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.h b/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.h
index df1ee34..df13400 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.h
+++ b/chrome/browser/chromeos/policy/dlp/dlp_data_transfer_notifier.h
@@ -30,10 +30,10 @@
       const ui::DataTransferEndpoint* const data_dst) = 0;
 
  protected:
-  virtual void ShowBlockBubble(const base::string16& text);
+  virtual void ShowBlockBubble(const std::u16string& text);
 
   virtual void ShowWarningBubble(
-      const base::string16& text,
+      const std::u16string& text,
       base::RepeatingCallback<void(views::Widget*)> proceed_cb,
       base::RepeatingCallback<void(views::Widget*)> cancel_cb);
 
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_drag_drop_notifier.cc b/chrome/browser/chromeos/policy/dlp/dlp_drag_drop_notifier.cc
index ec8c941..febb3d58 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_drag_drop_notifier.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_drag_drop_notifier.cc
@@ -23,7 +23,7 @@
     const ui::DataTransferEndpoint* const data_dst) {
   DCHECK(data_src);
   DCHECK(data_src->origin());
-  const base::string16 host_name =
+  const std::u16string host_name =
       base::UTF8ToUTF16(data_src->origin()->host());
 
   ShowBlockBubble(l10n_util::GetStringFUTF16(
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.cc b/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.cc
index 2ac0efc48..11948c4 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.cc
+++ b/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.cc
@@ -28,12 +28,12 @@
 constexpr char kDlpPolicyNotifierId[] = "policy.dlp";
 
 void ShowDlpNotification(const std::string& id,
-                         const base::string16& title,
-                         const base::string16& message) {
+                         const std::u16string& title,
+                         const std::u16string& message) {
   std::unique_ptr<message_center::Notification> notification =
       ash::CreateSystemNotification(
           message_center::NOTIFICATION_TYPE_SIMPLE, id, title, message,
-          /*display_source=*/base::string16(), GURL(),
+          /*display_source=*/std::u16string(), GURL(),
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT,
               kDlpPolicyNotifierId),
@@ -73,7 +73,7 @@
 }
 
 void ShowDlpScreenCapturePausedNotification(const std::string& capture_id,
-                                            const base::string16& app_title) {
+                                            const std::u16string& app_title) {
   ShowDlpNotification(
       GetCapturePausedNotificationId(capture_id),
       l10n_util::GetStringUTF16(IDS_POLICY_DLP_SCREEN_CAPTURE_PAUSED_TITLE),
@@ -89,7 +89,7 @@
 }
 
 void ShowDlpScreenCaptureResumedNotification(const std::string& capture_id,
-                                             const base::string16& app_title) {
+                                             const std::u16string& app_title) {
   ShowDlpNotification(
       GetCaptureResumedNotificationId(capture_id),
       l10n_util::GetStringUTF16(IDS_POLICY_DLP_SCREEN_CAPTURE_RESUMED_TITLE),
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h b/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h
index 525a7fd..44dd8f0 100644
--- a/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h
+++ b/chrome/browser/chromeos/policy/dlp/dlp_notification_helper.h
@@ -21,10 +21,10 @@
 // are shown for them. |app_title| is provided for a customized message.
 void HideDlpScreenCapturePausedNotification(const std::string& capture_id);
 void ShowDlpScreenCapturePausedNotification(const std::string& capture_id,
-                                            const base::string16& app_title);
+                                            const std::u16string& app_title);
 void HideDlpScreenCaptureResumedNotification(const std::string& capture_id);
 void ShowDlpScreenCaptureResumedNotification(const std::string& capture_id,
-                                             const base::string16& app_title);
+                                             const std::u16string& app_title);
 
 }  // namespace policy
 
diff --git a/chrome/browser/chromeos/policy/extension_install_event_log_collector_unittest.cc b/chrome/browser/chromeos/policy/extension_install_event_log_collector_unittest.cc
index 23d711c..aeb1444b 100644
--- a/chrome/browser/chromeos/policy/extension_install_event_log_collector_unittest.cc
+++ b/chrome/browser/chromeos/policy/extension_install_event_log_collector_unittest.cc
@@ -529,7 +529,7 @@
       kExtensionId1,
       extensions::CrxInstallError(
           extensions::SandboxedUnpackerFailureReason::CRX_HEADER_INVALID,
-          base::string16()));
+          std::u16string()));
   ASSERT_TRUE(VerifyEventAddedSuccessfully(1 /*expected_add_count*/,
                                            0 /*expected_add_all_count*/));
   EXPECT_EQ(em::ExtensionInstallReportLogEvent::INSTALLATION_FAILED,
diff --git a/chrome/browser/chromeos/policy/minimum_version_policy_handler.cc b/chrome/browser/chromeos/policy/minimum_version_policy_handler.cc
index c1a26b86d..1d25c66f 100644
--- a/chrome/browser/chromeos/policy/minimum_version_policy_handler.cc
+++ b/chrome/browser/chromeos/policy/minimum_version_policy_handler.cc
@@ -491,7 +491,7 @@
   NotificationType type = NotificationType::kNoConnection;
   base::OnceClosure button_click_callback;
   std::string manager = GetEnterpriseManager();
-  base::string16 device_type = ui::GetChromeOSDeviceName();
+  std::u16string device_type = ui::GetChromeOSDeviceName();
   auto close_callback =
       base::BindOnce(&MinimumVersionPolicyHandler::StopObservingNetwork,
                      weak_factory_.GetWeakPtr());
diff --git a/chrome/browser/chromeos/policy/policy_certs_browsertest.cc b/chrome/browser/chromeos/policy/policy_certs_browsertest.cc
index 86a1119..884ee2e 100644
--- a/chrome/browser/chromeos/policy/policy_certs_browsertest.cc
+++ b/chrome/browser/chromeos/policy/policy_certs_browsertest.cc
@@ -365,7 +365,7 @@
         path_profile,
         base::BindRepeating(&OnProfileInitialized, &profile_2_,
                             run_loop.QuitClosure()),
-        base::string16(), std::string());
+        std::u16string(), std::string());
 
     // Run the message loop to allow profile creation to take place; the loop is
     // terminated by OnProfileInitialized calling the loop's QuitClosure when
diff --git a/chrome/browser/chromeos/policy/powerwash_requirements_checker.cc b/chrome/browser/chromeos/policy/powerwash_requirements_checker.cc
index 77691623..f00170c7 100644
--- a/chrome/browser/chromeos/policy/powerwash_requirements_checker.cc
+++ b/chrome/browser/chromeos/policy/powerwash_requirements_checker.cc
@@ -56,7 +56,7 @@
 const char kNotificationLearnMoreLink[] =
     "https://support.google.com/chromebook?p=factory_reset";
 
-base::string16 GetEnterpriseManager() {
+std::u16string GetEnterpriseManager() {
   policy::BrowserPolicyConnectorChromeOS* connector =
       g_browser_process->platform_part()->browser_policy_connector_chromeos();
   return base::UTF8ToUTF16(connector->GetEnterpriseDomainManager());
@@ -206,7 +206,7 @@
       mc::NOTIFICATION_TYPE_SIMPLE, notification_id,
       l10n_util::GetStringUTF16(IDS_POWERWASH_REQUEST_TITLE),
       l10n_util::GetStringFUTF16(message_id, GetEnterpriseManager()),
-      base::string16{}, GURL{},
+      std::u16string{}, GURL{},
       mc::NotifierId(mc::NotifierType::SYSTEM_COMPONENT, notification_id),
       std::move(rich_data), std::move(delegate), kNotificationIcon,
       kNotificationLevel);
@@ -244,7 +244,7 @@
       mc::NOTIFICATION_TYPE_SIMPLE, notification_id,
       l10n_util::GetStringUTF16(
           IDS_POWERWASH_REQUEST_UNDEFINED_STATE_ERROR_TITLE),
-      l10n_util::GetStringUTF16(message_id), base::string16{}, GURL{},
+      l10n_util::GetStringUTF16(message_id), std::u16string{}, GURL{},
       mc::NotifierId(mc::NotifierType::SYSTEM_COMPONENT, notification_id), {},
       std::move(delegate), kNotificationIcon, kNotificationLevel);
 
diff --git a/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc b/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc
index 9215254..13359a8 100644
--- a/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc
+++ b/chrome/browser/chromeos/power/idle_action_warning_dialog_view.cc
@@ -72,7 +72,7 @@
   UpdateTitle();
 }
 
-base::string16 IdleActionWarningDialogView::GetWindowTitle() const {
+std::u16string IdleActionWarningDialogView::GetWindowTitle() const {
   const base::TimeDelta time_until_idle_action =
       std::max(idle_action_time_ - base::TimeTicks::Now(), base::TimeDelta());
   return l10n_util::GetStringFUTF16(
diff --git a/chrome/browser/chromeos/power/idle_action_warning_dialog_view.h b/chrome/browser/chromeos/power/idle_action_warning_dialog_view.h
index 0e8ae2a..9e9b2b35 100644
--- a/chrome/browser/chromeos/power/idle_action_warning_dialog_view.h
+++ b/chrome/browser/chromeos/power/idle_action_warning_dialog_view.h
@@ -30,7 +30,7 @@
   void Update(base::TimeTicks idle_action_time);
 
   // views::DialogDelegateView:
-  base::string16 GetWindowTitle() const override;
+  std::u16string GetWindowTitle() const override;
 
  private:
   ~IdleActionWarningDialogView() override;
diff --git a/chrome/browser/chromeos/printing/cups_print_job_manager_impl.cc b/chrome/browser/chromeos/printing/cups_print_job_manager_impl.cc
index 412ce92..c10c1a7 100644
--- a/chrome/browser/chromeos/printing/cups_print_job_manager_impl.cc
+++ b/chrome/browser/chromeos/printing/cups_print_job_manager_impl.cc
@@ -236,7 +236,7 @@
     if (job_details->type() == ::printing::JobEventDetails::DOC_DONE) {
       const ::printing::PrintedDocument* document = job_details->document();
       DCHECK(document);
-      base::string16 title =
+      std::u16string title =
           ::printing::SimplifyDocumentTitle(document->name());
       if (title.empty()) {
         title = ::printing::SimplifyDocumentTitle(
diff --git a/chrome/browser/chromeos/printing/cups_print_job_notification.cc b/chrome/browser/chromeos/printing/cups_print_job_notification.cc
index a1aa8f3..f4f9d28 100644
--- a/chrome/browser/chromeos/printing/cups_print_job_notification.cc
+++ b/chrome/browser/chromeos/printing/cups_print_job_notification.cc
@@ -32,7 +32,7 @@
 
 const int64_t kSuccessTimeoutSeconds = 8;
 
-base::string16 GetNotificationTitleForError(
+std::u16string GetNotificationTitleForError(
     const base::WeakPtr<CupsPrintJob>& print_job) {
   DCHECK_EQ(CupsPrintJob::State::STATE_ERROR, print_job->state());
 
@@ -81,8 +81,8 @@
   // notification will be updated in UpdateNotification().
   notification_ = std::make_unique<message_center::Notification>(
       message_center::NOTIFICATION_TYPE_SIMPLE, notification_id_,
-      base::string16(),  // title
-      base::string16(),  // body
+      std::u16string(),  // title
+      std::u16string(),  // body
       gfx::Image(),      // icon
       l10n_util::GetStringUTF16(IDS_PRINT_JOB_NOTIFICATION_DISPLAY_SOURCE),
       GURL(kCupsPrintJobNotificationId),
@@ -113,7 +113,7 @@
 
 void CupsPrintJobNotification::Click(
     const base::Optional<int>& button_index,
-    const base::Optional<base::string16>& reply) {
+    const base::Optional<std::u16string>& reply) {
   // If we are in guest mode then we need to use the OffTheRecord profile to
   // open the Print Manageament App. There is a check in Browser::Browser
   // that only OffTheRecord profiles can open browser windows in guest mode.
@@ -172,7 +172,7 @@
 void CupsPrintJobNotification::UpdateNotificationTitle() {
   if (!print_job_)
     return;
-  base::string16 title;
+  std::u16string title;
   switch (print_job_->state()) {
     case CupsPrintJob::State::STATE_WAITING:
     case CupsPrintJob::State::STATE_STARTED:
@@ -228,7 +228,7 @@
 void CupsPrintJobNotification::UpdateNotificationBodyMessage() {
   if (!print_job_)
     return;
-  base::string16 message;
+  std::u16string message;
   if (print_job_->total_page_number() > 1) {
     message = l10n_util::GetStringFUTF16(
         IDS_PRINT_JOB_NOTIFICATION_MESSAGE,
diff --git a/chrome/browser/chromeos/printing/cups_print_job_notification.h b/chrome/browser/chromeos/printing/cups_print_job_notification.h
index dbf30aed..eda569c 100644
--- a/chrome/browser/chromeos/printing/cups_print_job_notification.h
+++ b/chrome/browser/chromeos/printing/cups_print_job_notification.h
@@ -41,7 +41,7 @@
   // message_center::NotificationObserver
   void Close(bool by_user) override;
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
 
  private:
   // Update the notification based on the print job's status.
diff --git a/chrome/browser/chromeos/printing/usb_printer_notification.cc b/chrome/browser/chromeos/printing/usb_printer_notification.cc
index daa7454..2ab52fa 100644
--- a/chrome/browser/chromeos/printing/usb_printer_notification.cc
+++ b/chrome/browser/chromeos/printing/usb_printer_notification.cc
@@ -45,8 +45,8 @@
 
   notification_ = std::make_unique<message_center::Notification>(
       message_center::NOTIFICATION_TYPE_SIMPLE, notification_id_,
-      base::string16(),  // title
-      base::string16(),  // body
+      std::u16string(),  // title
+      std::u16string(),  // body
       gfx::Image(),      // icon
       l10n_util::GetStringUTF16(IDS_PRINT_JOB_NOTIFICATION_DISPLAY_SOURCE),
       GURL(),  // origin_url
@@ -76,7 +76,7 @@
 
 void UsbPrinterNotification::Click(
     const base::Optional<int>& button_index,
-    const base::Optional<base::string16>& reply) {
+    const base::Optional<std::u16string>& reply) {
   if (!button_index) {
     // Body of notification clicked.
     visible_ = false;
diff --git a/chrome/browser/chromeos/printing/usb_printer_notification.h b/chrome/browser/chromeos/printing/usb_printer_notification.h
index 99fa0d5..cd2109e 100644
--- a/chrome/browser/chromeos/printing/usb_printer_notification.h
+++ b/chrome/browser/chromeos/printing/usb_printer_notification.h
@@ -41,7 +41,7 @@
   // message_center::NotificationObserver
   void Close(bool by_user) override;
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
 
  private:
   void UpdateContents();
diff --git a/chrome/browser/chromeos/printing/usb_printer_util.cc b/chrome/browser/chromeos/printing/usb_printer_util.cc
index 486d047..5e52c855 100644
--- a/chrome/browser/chromeos/printing/usb_printer_util.cc
+++ b/chrome/browser/chromeos/printing/usb_printer_util.cc
@@ -127,7 +127,7 @@
 //
 // This is a long way to say "UTF-16 is hard to hash, let's just convert
 // to UTF-8 and hash that", which avoids all of these issues.
-void MD5UpdateString16(base::MD5Context* ctx, const base::string16& str) {
+void MD5UpdateString16(base::MD5Context* ctx, const std::u16string& str) {
   std::string tmp = base::UTF16ToUTF8(str);
   base::MD5Update(ctx, base::StringPiece(tmp.data(), tmp.size()));
 }
@@ -234,16 +234,16 @@
 
 }  // namespace
 
-base::string16 GetManufacturerName(const UsbDeviceInfo& device_info) {
-  return device_info.manufacturer_name.value_or(base::string16());
+std::u16string GetManufacturerName(const UsbDeviceInfo& device_info) {
+  return device_info.manufacturer_name.value_or(std::u16string());
 }
 
-base::string16 GetProductName(const UsbDeviceInfo& device_info) {
-  return device_info.product_name.value_or(base::string16());
+std::u16string GetProductName(const UsbDeviceInfo& device_info) {
+  return device_info.product_name.value_or(std::u16string());
 }
 
-base::string16 GetSerialNumber(const UsbDeviceInfo& device_info) {
-  return device_info.serial_number.value_or(base::string16());
+std::u16string GetSerialNumber(const UsbDeviceInfo& device_info) {
+  return device_info.serial_number.value_or(std::u16string());
 }
 
 bool UsbDeviceIsPrinter(const UsbDeviceInfo& device_info) {
diff --git a/chrome/browser/chromeos/printing/usb_printer_util.h b/chrome/browser/chromeos/printing/usb_printer_util.h
index 7dc33ff..d9a049a3 100644
--- a/chrome/browser/chromeos/printing/usb_printer_util.h
+++ b/chrome/browser/chromeos/printing/usb_printer_util.h
@@ -16,12 +16,12 @@
 class Printer;
 class UsbPrinterId;
 
-base::string16 GetManufacturerName(
+std::u16string GetManufacturerName(
     const device::mojom::UsbDeviceInfo& device_info);
 
-base::string16 GetProductName(const device::mojom::UsbDeviceInfo& device_info);
+std::u16string GetProductName(const device::mojom::UsbDeviceInfo& device_info);
 
-base::string16 GetSerialNumber(const device::mojom::UsbDeviceInfo& device_info);
+std::u16string GetSerialNumber(const device::mojom::UsbDeviceInfo& device_info);
 
 bool UsbDeviceIsPrinter(const device::mojom::UsbDeviceInfo& device_info);
 
diff --git a/chrome/browser/chromeos/release_notes/release_notes_notification.cc b/chrome/browser/chromeos/release_notes/release_notes_notification.cc
index 80c942cb..cbdb2cb0 100644
--- a/chrome/browser/chromeos/release_notes/release_notes_notification.cc
+++ b/chrome/browser/chromeos/release_notes/release_notes_notification.cc
@@ -54,9 +54,9 @@
 }
 
 void ReleaseNotesNotification::ShowReleaseNotesNotification() {
-  base::string16 title = ui::SubstituteChromeOSDeviceType(
+  std::u16string title = ui::SubstituteChromeOSDeviceType(
       IDS_RELEASE_NOTES_DEVICE_SPECIFIC_NOTIFICATION_TITLE);
-  base::string16 message =
+  std::u16string message =
       l10n_util::GetStringUTF16(IDS_RELEASE_NOTES_NOTIFICATION_MESSAGE);
 
   release_notes_available_notification_ = ash::CreateSystemNotification(
diff --git a/chrome/browser/chromeos/remote_apps/remote_apps_manager.cc b/chrome/browser/chromeos/remote_apps/remote_apps_manager.cc
index 9743a789..48c261f 100644
--- a/chrome/browser/chromeos/remote_apps/remote_apps_manager.cc
+++ b/chrome/browser/chromeos/remote_apps/remote_apps_manager.cc
@@ -76,7 +76,7 @@
  public:
   RemoteAppsPlaceholderIcon(const std::string& name, int32_t size)
       : gfx::CanvasImageSource(gfx::Size(size, size)) {
-    base::string16 sanitized_name = base::UTF8ToUTF16(std::string(name));
+    std::u16string sanitized_name = base::UTF8ToUTF16(std::string(name));
     base::i18n::UnadjustStringForLocaleDirection(&sanitized_name);
     letter_ = sanitized_name.substr(0, 1);
 
@@ -115,7 +115,7 @@
   }
 
   // The first letter of the app's name.
-  base::string16 letter_;
+  std::u16string letter_;
   ui::ResourceBundle::FontStyle font_style_ = ui::ResourceBundle::MediumFont;
 };
 
diff --git a/chrome/browser/chromeos/set_time_dialog.cc b/chrome/browser/chromeos/set_time_dialog.cc
index 08b0c47..c973e7d8 100644
--- a/chrome/browser/chromeos/set_time_dialog.cc
+++ b/chrome/browser/chromeos/set_time_dialog.cc
@@ -39,7 +39,7 @@
 
 SetTimeDialog::SetTimeDialog()
     : SystemWebDialogDelegate(GURL(chrome::kChromeUISetTimeURL),
-                              base::string16() /* title */) {}
+                              std::u16string() /* title */) {}
 
 SetTimeDialog::~SetTimeDialog() = default;
 
diff --git a/chrome/browser/chromeos/shutdown_policy_browsertest.cc b/chrome/browser/chromeos/shutdown_policy_browsertest.cc
index 2533f8e..4179e597 100644
--- a/chrome/browser/chromeos/shutdown_policy_browsertest.cc
+++ b/chrome/browser/chromeos/shutdown_policy_browsertest.cc
@@ -124,7 +124,7 @@
 
   // Returns true if the shutdown button's tooltip matches |tooltip|.
   bool HasShutdownButtonTooltip(const std::string& tooltip) {
-    base::string16 actual_tooltip =
+    std::u16string actual_tooltip =
         tray_test_api_->GetBubbleViewTooltip(ash::VIEW_ID_POWER_BUTTON);
     return base::UTF8ToUTF16(tooltip) == actual_tooltip;
   }
diff --git a/chrome/browser/chromeos/tpm_firmware_update_notification.cc b/chrome/browser/chromeos/tpm_firmware_update_notification.cc
index 30fb6d9..97fc294 100644
--- a/chrome/browser/chromeos/tpm_firmware_update_notification.cc
+++ b/chrome/browser/chromeos/tpm_firmware_update_notification.cc
@@ -49,7 +49,7 @@
     }
   }
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override {
+             const base::Optional<std::u16string>& reply) override {
     // Show the about page which contains the line item allowing the user to
     // trigger TPM firmware update installation.
     chrome::SettingsWindowManager::GetInstance()->ShowOSSettings(
@@ -80,7 +80,7 @@
           l10n_util::GetStringFUTF16(
               IDS_TPM_FIRMWARE_UPDATE_NOTIFICATION_MESSAGE,
               ui::GetChromeOSDeviceName()),
-          base::string16(), GURL(kTPMFirmwareUpdateNotificationId),
+          std::u16string(), GURL(kTPMFirmwareUpdateNotificationId),
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT,
               kTPMFirmwareUpdateNotificationId),
diff --git a/chrome/browser/chromeos/u2f_notification.cc b/chrome/browser/chromeos/u2f_notification.cc
index e0f4c6e..c7c33f0 100644
--- a/chrome/browser/chromeos/u2f_notification.cc
+++ b/chrome/browser/chromeos/u2f_notification.cc
@@ -109,7 +109,7 @@
           message_center::NOTIFICATION_TYPE_SIMPLE, kU2FNotificationId,
           l10n_util::GetStringUTF16(IDS_U2F_INSECURE_NOTIFICATION_TITLE),
           l10n_util::GetStringUTF16(IDS_U2F_INSECURE_NOTIFICATION_MESSAGE),
-          base::string16(), GURL(kU2FNotificationId),
+          std::u16string(), GURL(kU2FNotificationId),
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT,
               kU2FNotificationId),
diff --git a/chrome/browser/chromeos/ui/adb_sideloading_policy_change_notification.cc b/chrome/browser/chromeos/ui/adb_sideloading_policy_change_notification.cc
index 2831be4c..f7fa4e2 100644
--- a/chrome/browser/chromeos/ui/adb_sideloading_policy_change_notification.cc
+++ b/chrome/browser/chromeos/ui/adb_sideloading_policy_change_notification.cc
@@ -39,7 +39,7 @@
     ~AdbSideloadingPolicyChangeNotification() {}
 
 void AdbSideloadingPolicyChangeNotification::Show(Type type) {
-  base::string16 title, text;
+  std::u16string title, text;
   std::string notification_id;
   bool pinned = false;
   std::vector<message_center::ButtonInfo> notification_actions;
@@ -48,7 +48,7 @@
       base::UTF8ToUTF16(g_browser_process->platform_part()
                             ->browser_policy_connector_chromeos()
                             ->GetEnterpriseDomainManager());
-  base::string16 device_type = ui::GetChromeOSDeviceName();
+  std::u16string device_type = ui::GetChromeOSDeviceName();
 
   switch (type) {
     case Type::kNone:
@@ -89,7 +89,7 @@
   std::unique_ptr<message_center::Notification> notification =
       ash::CreateSystemNotification(
           message_center::NOTIFICATION_TYPE_SIMPLE, notification_id, title,
-          text, base::string16() /*display_source*/, GURL(),
+          text, std::u16string() /*display_source*/, GURL(),
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT, notification_id),
           message_center::RichNotificationData(),
diff --git a/chrome/browser/chromeos/ui/echo_dialog_view.cc b/chrome/browser/chromeos/ui/echo_dialog_view.cc
index d0f041f..7cdbead 100644
--- a/chrome/browser/chromeos/ui/echo_dialog_view.cc
+++ b/chrome/browser/chromeos/ui/echo_dialog_view.cc
@@ -74,11 +74,10 @@
   GetWidget()->Show();
 }
 
-void EchoDialogView::InitForEnabledEcho(const base::string16& service_name,
-                                        const base::string16& origin) {
-
+void EchoDialogView::InitForEnabledEcho(const std::u16string& service_name,
+                                        const std::u16string& origin) {
   size_t offset;
-  base::string16 text = l10n_util::GetStringFUTF16(IDS_ECHO_CONSENT_DIALOG_TEXT,
+  std::u16string text = l10n_util::GetStringFUTF16(IDS_ECHO_CONSENT_DIALOG_TEXT,
                                                    service_name, &offset);
 
   auto label = std::make_unique<views::StyledLabel>();
diff --git a/chrome/browser/chromeos/ui/echo_dialog_view.h b/chrome/browser/chromeos/ui/echo_dialog_view.h
index 18ee254..f347920 100644
--- a/chrome/browser/chromeos/ui/echo_dialog_view.h
+++ b/chrome/browser/chromeos/ui/echo_dialog_view.h
@@ -34,8 +34,8 @@
 
   struct Params {
     bool echo_enabled = false;
-    base::string16 service_name;
-    base::string16 origin;
+    std::u16string service_name;
+    std::u16string origin;
   };
 
   EchoDialogView(EchoDialogListener* listener, const Params& params);
@@ -55,8 +55,8 @@
   // url. Service name should be underlined in the dialog, and hovering over its
   // label should display tooltip containing |origin|.
   // The dialog will have both OK and Cancel buttons.
-  void InitForEnabledEcho(const base::string16& service_name,
-                          const base::string16& origin);
+  void InitForEnabledEcho(const std::u16string& service_name,
+                          const std::u16string& origin);
 
   // Initializes dialog layout that will be shown when echo extension is not
   // allowed to redeem offers. The dialog will be showing a message that the
diff --git a/chrome/browser/chromeos/ui/echo_dialog_view_unittest.cc b/chrome/browser/chromeos/ui/echo_dialog_view_unittest.cc
index 4636916..09dbd6c 100644
--- a/chrome/browser/chromeos/ui/echo_dialog_view_unittest.cc
+++ b/chrome/browser/chromeos/ui/echo_dialog_view_unittest.cc
@@ -32,7 +32,7 @@
   TestEchoDialogListener& operator=(const TestEchoDialogListener&) = delete;
 };
 
-bool IsLabelWithText(const views::View* view, const base::string16& text) {
+bool IsLabelWithText(const views::View* view, const std::u16string& text) {
   const char* class_name = view->GetClassName();
   if (!strcmp(class_name, "Label")) {
     auto* label = static_cast<const views::Label*>(view);
@@ -45,7 +45,7 @@
   return false;
 }
 
-views::View* FindLabelWithText(views::View* root, const base::string16& text) {
+views::View* FindLabelWithText(views::View* root, const std::u16string& text) {
   if (IsLabelWithText(root, text))
     return root;
   for (auto* child : root->children()) {
diff --git a/chrome/browser/chromeos/ui/gnubby_notification.cc b/chrome/browser/chromeos/ui/gnubby_notification.cc
index 205036c..07a98c5 100644
--- a/chrome/browser/chromeos/ui/gnubby_notification.cc
+++ b/chrome/browser/chromeos/ui/gnubby_notification.cc
@@ -41,16 +41,16 @@
 }
 
 void GnubbyNotification::CreateNotification() {
-  const base::string16 title =
+  const std::u16string title =
       l10n_util::GetStringUTF16(IDS_GNUBBY_NOTIFICATION_TITLE);
-  const base::string16 message =
+  const std::u16string message =
       l10n_util::GetStringUTF16(IDS_GNUBBY_NOTIFICATION_MESSAGE);
   const message_center::SystemNotificationWarningLevel colorType =
       message_center::SystemNotificationWarningLevel::NORMAL;
 
   GnubbyNotification::notification_prompt_ = ash::CreateSystemNotification(
       message_center::NOTIFICATION_TYPE_SIMPLE,
-      GnubbyNotification::kNotificationID, title, message, base::string16(),
+      GnubbyNotification::kNotificationID, title, message, std::u16string(),
       GURL(), message_center::NotifierId(),
       message_center::RichNotificationData(),
       new message_center::HandleNotificationClickDelegate(
diff --git a/chrome/browser/chromeos/ui/gnubby_notification_unittest.cc b/chrome/browser/chromeos/ui/gnubby_notification_unittest.cc
index 6bcfb92..7af9627 100644
--- a/chrome/browser/chromeos/ui/gnubby_notification_unittest.cc
+++ b/chrome/browser/chromeos/ui/gnubby_notification_unittest.cc
@@ -54,7 +54,7 @@
 };
 
 TEST_F(GnubbyNotificationTest, OneNotificationsTest) {
-  base::string16 expected_title =
+  std::u16string expected_title =
       l10n_util::GetStringUTF16(IDS_GNUBBY_NOTIFICATION_TITLE);
   gnubby_notification_->ShowNotification();
   auto notification = GetNotification();
@@ -64,7 +64,7 @@
 }
 
 TEST_F(GnubbyNotificationTest, TwoNotificationsTest) {
-  base::string16 expected_title =
+  std::u16string expected_title =
       l10n_util::GetStringUTF16(IDS_GNUBBY_NOTIFICATION_TITLE);
   gnubby_notification_->ShowNotification();
   gnubby_notification_->DismissNotification();
diff --git a/chrome/browser/chromeos/ui/idle_app_name_notification_view.cc b/chrome/browser/chromeos/ui/idle_app_name_notification_view.cc
index 128ec51..30bd64d4 100644
--- a/chrome/browser/chromeos/ui/idle_app_name_notification_view.cc
+++ b/chrome/browser/chromeos/ui/idle_app_name_notification_view.cc
@@ -109,12 +109,11 @@
   // |error| is true if something is not correct.
   // |message_visibility_time_in_ms| ms's after creation the message will start
   // to remove itself from the screen.
-  IdleAppNameNotificationDelegateView(IdleAppNameNotificationView *owner,
-                                      const base::string16& app_name,
+  IdleAppNameNotificationDelegateView(IdleAppNameNotificationView* owner,
+                                      const std::u16string& app_name,
                                       bool error,
                                       int message_visibility_time_in_ms)
-      : owner_(owner),
-        widget_closed_(false) {
+      : owner_(owner), widget_closed_(false) {
     ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance();
     // Add the application name label to the message.
     AddLabel(app_name, rb->GetFontList(ui::ResourceBundle::BoldFont),
@@ -190,7 +189,7 @@
 
  private:
   // Adds the label to the view, using |text| with a |font| and a |text_color|.
-  void AddLabel(const base::string16& text,
+  void AddLabel(const std::u16string& text,
                 const gfx::FontList& font,
                 SkColor text_color) {
     views::Label* label = new views::Label;
@@ -210,7 +209,7 @@
   IdleAppNameNotificationView* owner_;
 
   // The spoken text.
-  base::string16 spoken_text_;
+  std::u16string spoken_text_;
 
   // True if the widget got already closed.
   bool widget_closed_;
@@ -240,7 +239,7 @@
   return view_ != NULL;
 }
 
-base::string16 IdleAppNameNotificationView::GetShownTextForTest() {
+std::u16string IdleAppNameNotificationView::GetShownTextForTest() {
   ui::AXNodeData node_data;
   DCHECK(view_);
   view_->GetAccessibleNodeData(&node_data);
@@ -253,7 +252,7 @@
     const extensions::Extension* extension) {
   DCHECK(!view_);
 
-  base::string16 app_name;
+  std::u16string app_name;
   bool error = false;
   if (extension &&
       !base::ContainsOnlyChars(extension->name(), base::kWhitespaceASCII)) {
diff --git a/chrome/browser/chromeos/ui/idle_app_name_notification_view.h b/chrome/browser/chromeos/ui/idle_app_name_notification_view.h
index 15100e3..cb502c3 100644
--- a/chrome/browser/chromeos/ui/idle_app_name_notification_view.h
+++ b/chrome/browser/chromeos/ui/idle_app_name_notification_view.h
@@ -38,7 +38,7 @@
   bool IsVisible();
 
   // Returns the shown text for testing.
-  base::string16 GetShownTextForTest();
+  std::u16string GetShownTextForTest();
 
  private:
   // Show the message. This will make the message visible.
diff --git a/chrome/browser/chromeos/ui/idle_app_name_notification_view_unittest.cc b/chrome/browser/chromeos/ui/idle_app_name_notification_view_unittest.cc
index b171b63..e2833b7 100644
--- a/chrome/browser/chromeos/ui/idle_app_name_notification_view_unittest.cc
+++ b/chrome/browser/chromeos/ui/idle_app_name_notification_view_unittest.cc
@@ -112,9 +112,9 @@
   // Create a message which is visible for 10ms and fades in/out for 5ms.
   std::unique_ptr<chromeos::IdleAppNameNotificationView> message(
       new chromeos::IdleAppNameNotificationView(10, 5, correct_extension()));
-  base::string16 text = message->GetShownTextForTest();
+  std::u16string text = message->GetShownTextForTest();
   // Check that the string is the application name.
-  base::string16 name = base::ASCIIToUTF16("Test");
+  std::u16string name = base::ASCIIToUTF16("Test");
   EXPECT_EQ(name, text.substr(0, name.length()));
 }
 
@@ -123,8 +123,8 @@
   // Create a message which is visible for 10ms and fades in/out for 5ms.
   std::unique_ptr<chromeos::IdleAppNameNotificationView> message(
       new chromeos::IdleAppNameNotificationView(10, 5, NULL));
-  base::string16 text = message->GetShownTextForTest();
-  base::string16 error = l10n_util::GetStringUTF16(
+  std::u16string text = message->GetShownTextForTest();
+  std::u16string error = l10n_util::GetStringUTF16(
       IDS_IDLE_APP_NAME_UNKNOWN_APPLICATION_NOTIFICATION);
   EXPECT_EQ(error, text);
 }
diff --git a/chrome/browser/chromeos/ui/kiosk_external_update_notification.cc b/chrome/browser/chromeos/ui/kiosk_external_update_notification.cc
index 1d536bfe..3a3b7bd3f 100644
--- a/chrome/browser/chromeos/ui/kiosk_external_update_notification.cc
+++ b/chrome/browser/chromeos/ui/kiosk_external_update_notification.cc
@@ -63,7 +63,7 @@
     }
   }
 
-  void SetMessage(const base::string16& message) { label_->SetText(message); }
+  void SetMessage(const std::u16string& message) { label_->SetText(message); }
 
   // views::WidgetDelegateView overrides:
   void OnPaint(gfx::Canvas* canvas) override {
@@ -109,7 +109,7 @@
 };
 
 KioskExternalUpdateNotification::KioskExternalUpdateNotification(
-    const base::string16& message) {
+    const std::u16string& message) {
   CreateAndShowNotificationView(message);
 }
 
@@ -118,13 +118,13 @@
 }
 
 void KioskExternalUpdateNotification::ShowMessage(
-    const base::string16& message) {
+    const std::u16string& message) {
   if (view_)
     view_->SetMessage(message);
 }
 
 void KioskExternalUpdateNotification::CreateAndShowNotificationView(
-    const base::string16& message) {
+    const std::u16string& message) {
   view_ = new KioskExternalUpdateNotificationView(this);
   view_->SetMessage(message);
 
diff --git a/chrome/browser/chromeos/ui/kiosk_external_update_notification.h b/chrome/browser/chromeos/ui/kiosk_external_update_notification.h
index 51b8dc6..72ec13d 100644
--- a/chrome/browser/chromeos/ui/kiosk_external_update_notification.h
+++ b/chrome/browser/chromeos/ui/kiosk_external_update_notification.h
@@ -17,15 +17,15 @@
 // Provides the UI showing kiosk external update status to admin.
 class KioskExternalUpdateNotification {
  public:
-  explicit KioskExternalUpdateNotification(const base::string16& message);
+  explicit KioskExternalUpdateNotification(const std::u16string& message);
   virtual ~KioskExternalUpdateNotification();
 
-  void ShowMessage(const base::string16& message);
+  void ShowMessage(const std::u16string& message);
 
  private:
   friend class KioskExternalUpdateNotificationView;
   void Dismiss();
-  void CreateAndShowNotificationView(const base::string16& message);
+  void CreateAndShowNotificationView(const std::u16string& message);
 
   KioskExternalUpdateNotificationView* view_;  // Owned by views hierarchy.
 
diff --git a/chrome/browser/chromeos/ui/low_disk_notification.cc b/chrome/browser/chromeos/ui/low_disk_notification.cc
index d7fcbc3..9735d76 100644
--- a/chrome/browser/chromeos/ui/low_disk_notification.cc
+++ b/chrome/browser/chromeos/ui/low_disk_notification.cc
@@ -89,8 +89,8 @@
 
 std::unique_ptr<message_center::Notification>
 LowDiskNotification::CreateNotification(Severity severity) {
-  base::string16 title;
-  base::string16 message;
+  std::u16string title;
+  std::u16string message;
   message_center::SystemNotificationWarningLevel warning_level;
   if (severity == Severity::HIGH) {
     title =
@@ -124,7 +124,7 @@
   std::unique_ptr<message_center::Notification> notification =
       ash::CreateSystemNotification(
           message_center::NOTIFICATION_TYPE_SIMPLE, kLowDiskId, title, message,
-          base::string16(), GURL(), notifier_id, optional_fields,
+          std::u16string(), GURL(), notifier_id, optional_fields,
           new message_center::HandleNotificationClickDelegate(on_click),
           kNotificationStorageFullIcon, warning_level);
 
diff --git a/chrome/browser/chromeos/ui/low_disk_notification_unittest.cc b/chrome/browser/chromeos/ui/low_disk_notification_unittest.cc
index f610c17..0caf6da 100644
--- a/chrome/browser/chromeos/ui/low_disk_notification_unittest.cc
+++ b/chrome/browser/chromeos/ui/low_disk_notification_unittest.cc
@@ -90,7 +90,7 @@
 };
 
 TEST_F(LowDiskNotificationTest, MediumLevelNotification) {
-  base::string16 expected_title =
+  std::u16string expected_title =
       l10n_util::GetStringUTF16(IDS_LOW_DISK_NOTIFICATION_TITLE);
   low_disk_notification_->LowDiskSpace(kMediumNotification);
   auto notification = GetNotification();
@@ -100,7 +100,7 @@
 }
 
 TEST_F(LowDiskNotificationTest, HighLevelReplacesMedium) {
-  base::string16 expected_title =
+  std::u16string expected_title =
       l10n_util::GetStringUTF16(IDS_CRITICALLY_LOW_DISK_NOTIFICATION_TITLE);
   low_disk_notification_->LowDiskSpace(kMediumNotification);
   low_disk_notification_->LowDiskSpace(kHighNotification);
diff --git a/chrome/browser/chromeos/ui/passphrase_textfield.cc b/chrome/browser/chromeos/ui/passphrase_textfield.cc
index 546433e..deabce64 100644
--- a/chrome/browser/chromeos/ui/passphrase_textfield.cc
+++ b/chrome/browser/chromeos/ui/passphrase_textfield.cc
@@ -50,14 +50,14 @@
 }
 
 void PassphraseTextfield::SetFakePassphrase() {
-  static base::NoDestructor<base::string16> fake_passphrase(
+  static base::NoDestructor<std::u16string> fake_passphrase(
       base::ASCIIToUTF16("********"));
   SetText(*fake_passphrase);
   changed_ = false;
 }
 
 void PassphraseTextfield::ClearFakePassphrase() {
-  SetText(base::string16());
+  SetText(std::u16string());
   changed_ = true;
 }
 
diff --git a/chrome/browser/chromeos/ui/request_pin_view.cc b/chrome/browser/chromeos/ui/request_pin_view.cc
index 0eb2e344..021401c 100644
--- a/chrome/browser/chromeos/ui/request_pin_view.cc
+++ b/chrome/browser/chromeos/ui/request_pin_view.cc
@@ -61,7 +61,7 @@
 }
 
 void RequestPinView::ContentsChanged(views::Textfield* sender,
-                                     const base::string16& new_contents) {
+                                     const std::u16string& new_contents) {
   DialogModelChanged();
 }
 
@@ -112,7 +112,7 @@
   return textfield_;
 }
 
-base::string16 RequestPinView::GetWindowTitle() const {
+std::u16string RequestPinView::GetWindowTitle() const {
   return window_title_;
 }
 
@@ -144,7 +144,7 @@
 
 void RequestPinView::UpdateHeaderText() {
   int label_text_id = IDS_REQUEST_PIN_DIALOG_HEADER;
-  base::string16 label_text =
+  std::u16string label_text =
       l10n_util::GetStringFUTF16(label_text_id, window_title_, code_type_);
   header_label_->SetText(label_text);
   header_label_->SizeToPreferredSize();
@@ -167,7 +167,7 @@
 
   // Information label.
   int label_text_id = IDS_REQUEST_PIN_DIALOG_HEADER;
-  base::string16 label_text = l10n_util::GetStringUTF16(label_text_id);
+  std::u16string label_text = l10n_util::GetStringUTF16(label_text_id);
   auto header_label = std::make_unique<views::Label>(label_text);
   header_label->SetEnabled(true);
   header_label_ = layout->AddView(std::move(header_label));
@@ -227,7 +227,7 @@
     return;
   }
 
-  base::string16 error_message = security_token_pin::GenerateErrorMessage(
+  std::u16string error_message = security_token_pin::GenerateErrorMessage(
       error_label, attempts_left, accept_input);
 
   error_label_->SetVisible(true);
diff --git a/chrome/browser/chromeos/ui/request_pin_view.h b/chrome/browser/chromeos/ui/request_pin_view.h
index 3864d04e..34be430 100644
--- a/chrome/browser/chromeos/ui/request_pin_view.h
+++ b/chrome/browser/chromeos/ui/request_pin_view.h
@@ -59,13 +59,13 @@
 
   // views::TextfieldController:
   void ContentsChanged(views::Textfield* sender,
-                       const base::string16& new_contents) override;
+                       const std::u16string& new_contents) override;
 
   // views::DialogDelegateView:
   bool Accept() override;
   bool IsDialogButtonEnabled(ui::DialogButton button) const override;
   views::View* GetInitiallyFocusedView() override;
-  base::string16 GetWindowTitle() const override;
+  std::u16string GetWindowTitle() const override;
 
   // |code_type| - specifies whether the user is asked to enter PIN or PUK.
   // |error_label| - the error template to be displayed in red in the dialog. If
@@ -104,9 +104,9 @@
   // caller processes the previously entered PIN/PUK.
   bool locked_ = false;
 
-  base::string16 window_title_;
+  std::u16string window_title_;
   views::Label* header_label_ = nullptr;
-  base::string16 code_type_;
+  std::u16string code_type_;
   views::Textfield* textfield_ = nullptr;
   views::Label* error_label_ = nullptr;
 
diff --git a/chrome/browser/chromeos/ui/request_system_proxy_credentials_view.cc b/chrome/browser/chromeos/ui/request_system_proxy_credentials_view.cc
index 1c885fa..5d76bad79 100644
--- a/chrome/browser/chromeos/ui/request_system_proxy_credentials_view.cc
+++ b/chrome/browser/chromeos/ui/request_system_proxy_credentials_view.cc
@@ -52,7 +52,7 @@
   return username_textfield_;
 }
 
-base::string16 RequestSystemProxyCredentialsView::GetWindowTitle() const {
+std::u16string RequestSystemProxyCredentialsView::GetWindowTitle() const {
   return window_title_;
 }
 
@@ -64,11 +64,11 @@
   return proxy_server_;
 }
 
-base::string16 RequestSystemProxyCredentialsView::GetUsername() const {
+std::u16string RequestSystemProxyCredentialsView::GetUsername() const {
   return username_textfield_->GetText();
 }
 
-base::string16 RequestSystemProxyCredentialsView::GetPassword() const {
+std::u16string RequestSystemProxyCredentialsView::GetPassword() const {
   return password_textfield_->GetText();
 }
 
@@ -173,8 +173,8 @@
 
 BEGIN_METADATA(RequestSystemProxyCredentialsView, views::DialogDelegateView)
 ADD_READONLY_PROPERTY_METADATA(std::string, ProxyServer)
-ADD_READONLY_PROPERTY_METADATA(base::string16, Username)
-ADD_READONLY_PROPERTY_METADATA(base::string16, Password)
+ADD_READONLY_PROPERTY_METADATA(std::u16string, Username)
+ADD_READONLY_PROPERTY_METADATA(std::u16string, Password)
 END_METADATA
 
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/ui/request_system_proxy_credentials_view.h b/chrome/browser/chromeos/ui/request_system_proxy_credentials_view.h
index 80c37567..cee8f7fd 100644
--- a/chrome/browser/chromeos/ui/request_system_proxy_credentials_view.h
+++ b/chrome/browser/chromeos/ui/request_system_proxy_credentials_view.h
@@ -40,15 +40,15 @@
 
   // views::DialogDelegateView
   views::View* GetInitiallyFocusedView() override;
-  base::string16 GetWindowTitle() const override;
+  std::u16string GetWindowTitle() const override;
   bool ShouldShowCloseButton() const override;
 
   // Returns the proxy server for which the dialog is asking for credentials,
   // in the format scheme://host:port.
   const std::string& GetProxyServer() const;
 
-  base::string16 GetUsername() const;
-  base::string16 GetPassword() const;
+  std::u16string GetUsername() const;
+  std::u16string GetPassword() const;
 
   views::Textfield* username_textfield_for_testing() {
     return username_textfield_;
@@ -61,7 +61,7 @@
  private:
   void Init();
 
-  const base::string16 window_title_;
+  const std::u16string window_title_;
 
   views::Textfield* username_textfield_ = nullptr;
   views::Textfield* password_textfield_ = nullptr;
diff --git a/chrome/browser/chromeos/ui/screen_capture_notification_ui_chromeos.cc b/chrome/browser/chromeos/ui/screen_capture_notification_ui_chromeos.cc
index fb22c19e..21109e5 100644
--- a/chrome/browser/chromeos/ui/screen_capture_notification_ui_chromeos.cc
+++ b/chrome/browser/chromeos/ui/screen_capture_notification_ui_chromeos.cc
@@ -11,9 +11,8 @@
 namespace chromeos {
 
 ScreenCaptureNotificationUIChromeOS::ScreenCaptureNotificationUIChromeOS(
-    const base::string16& text)
-    : text_(text) {
-}
+    const std::u16string& text)
+    : text_(text) {}
 
 ScreenCaptureNotificationUIChromeOS::~ScreenCaptureNotificationUIChromeOS() {
   // MediaStreamCaptureIndicator will delete ScreenCaptureNotificationUI object
@@ -47,7 +46,7 @@
 
 // static
 std::unique_ptr<ScreenCaptureNotificationUI>
-ScreenCaptureNotificationUI::Create(const base::string16& text) {
+ScreenCaptureNotificationUI::Create(const std::u16string& text) {
   return std::unique_ptr<ScreenCaptureNotificationUI>(
       new chromeos::ScreenCaptureNotificationUIChromeOS(text));
 }
diff --git a/chrome/browser/chromeos/ui/screen_capture_notification_ui_chromeos.h b/chrome/browser/chromeos/ui/screen_capture_notification_ui_chromeos.h
index 7eb10ab6..9fa1b070 100644
--- a/chrome/browser/chromeos/ui/screen_capture_notification_ui_chromeos.h
+++ b/chrome/browser/chromeos/ui/screen_capture_notification_ui_chromeos.h
@@ -15,7 +15,7 @@
 class ScreenCaptureNotificationUIChromeOS : public ScreenCaptureNotificationUI {
  public:
   // |text| is used to specify the text for the notification.
-  explicit ScreenCaptureNotificationUIChromeOS(const base::string16& text);
+  explicit ScreenCaptureNotificationUIChromeOS(const std::u16string& text);
   ~ScreenCaptureNotificationUIChromeOS() override;
 
   // ScreenCaptureNotificationUI overrides.
@@ -26,7 +26,7 @@
  private:
   void ProcessStopRequestFromUI();
 
-  const base::string16 text_;
+  const std::u16string text_;
   base::OnceClosure stop_callback_;
 
   DISALLOW_COPY_AND_ASSIGN(ScreenCaptureNotificationUIChromeOS);
diff --git a/chrome/browser/chromeos/ui/system_proxy_notification.cc b/chrome/browser/chromeos/ui/system_proxy_notification.cc
index 3f60c8a..f57318d0 100644
--- a/chrome/browser/chromeos/ui/system_proxy_notification.cc
+++ b/chrome/browser/chromeos/ui/system_proxy_notification.cc
@@ -43,19 +43,19 @@
 SystemProxyNotification::~SystemProxyNotification() = default;
 
 void SystemProxyNotification::Show() {
-  const base::string16 title =
+  const std::u16string title =
       show_error_ ? l10n_util::GetStringUTF16(
                         IDS_SYSTEM_PROXY_AUTH_REQUIRED_NOTIFICATION_ERROR_TITLE)
                   : l10n_util::GetStringUTF16(
                         IDS_SYSTEM_PROXY_AUTH_REQUIRED_NOTIFICATION_TITLE);
-  const base::string16 body = l10n_util::GetStringFUTF16(
+  const std::u16string body = l10n_util::GetStringFUTF16(
       IDS_SYSTEM_PROXY_AUTH_REQUIRED_NOTIFICATION_BODY,
       base::ASCIIToUTF16(protection_space_.origin()));
 
   std::unique_ptr<message_center::Notification> notification =
       ash::CreateSystemNotification(
           message_center::NOTIFICATION_TYPE_SIMPLE, kNotificationId, title,
-          body, base::string16() /*display_source=*/, GURL() /*origin_url=*/,
+          body, std::u16string() /*display_source=*/, GURL() /*origin_url=*/,
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT, kNotifierId),
           message_center::RichNotificationData(),
diff --git a/chrome/browser/chromeos/ui/tpm_auto_update_notification.cc b/chrome/browser/chromeos/ui/tpm_auto_update_notification.cc
index 56b3c53..cb42ef2 100644
--- a/chrome/browser/chromeos/ui/tpm_auto_update_notification.cc
+++ b/chrome/browser/chromeos/ui/tpm_auto_update_notification.cc
@@ -25,7 +25,7 @@
 
 void ShowAutoUpdateNotification(
     TpmAutoUpdateUserNotification notification_type) {
-  base::string16 title, text;
+  std::u16string title, text;
   std::string notification_id;
   bool pinned = false;
 
@@ -53,7 +53,7 @@
   std::unique_ptr<message_center::Notification> notification =
       ash::CreateSystemNotification(
           message_center::NOTIFICATION_TYPE_SIMPLE, notification_id, title,
-          text, base::string16() /*display_source*/, GURL(),
+          text, std::u16string() /*display_source*/, GURL(),
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT, notification_id),
           message_center::RichNotificationData(),
diff --git a/chrome/browser/chromeos/ui/update_required_notification.cc b/chrome/browser/chromeos/ui/update_required_notification.cc
index 8a785f1..5bbc7933 100644
--- a/chrome/browser/chromeos/ui/update_required_notification.cc
+++ b/chrome/browser/chromeos/ui/update_required_notification.cc
@@ -22,9 +22,9 @@
 
 const char kUpdateRequiredNotificationId[] = "policy.update_required";
 
-base::string16 GetTitle(NotificationType type,
+std::u16string GetTitle(NotificationType type,
                         int days_remaining,
-                        const base::string16& device_type) {
+                        const std::u16string& device_type) {
   // |days_remaining| could be zero if we are very close to the deadline, like
   // 10 minutes as we round of the time remaining into days. In this case, we
   // need to show the last day notification title which does not mention the
@@ -56,10 +56,10 @@
   }
 }
 
-base::string16 GetMessage(NotificationType type,
+std::u16string GetMessage(NotificationType type,
                           const std::string& manager,
                           int days_remaining,
-                          const base::string16& device_type) {
+                          const std::u16string& device_type) {
   // |days_remaining| could be zero if we are very close to the deadline, like
   // 10 minutes as we round of the time remaining into days. In this case, we
   // need to show the last day notification.
@@ -81,7 +81,7 @@
   }
 }
 
-base::string16 GetButtonText(NotificationType type) {
+std::u16string GetButtonText(NotificationType type) {
   switch (type) {
     case NotificationType::kNoConnection:
       return l10n_util::GetStringUTF16(
@@ -119,16 +119,16 @@
 void UpdateRequiredNotification::Show(NotificationType type,
                                       base::TimeDelta warning_time,
                                       const std::string& manager,
-                                      const base::string16& device_type,
+                                      const std::u16string& device_type,
                                       base::OnceClosure button_click_callback,
                                       base::OnceClosure close_callback) {
   const int days_remaining = warning_time.InDays();
   notification_button_click_callback_ = std::move(button_click_callback);
   notification_close_callback_ = std::move(close_callback);
 
-  base::string16 title = GetTitle(type, days_remaining, device_type);
-  base::string16 body = GetMessage(type, manager, days_remaining, device_type);
-  base::string16 button = GetButtonText(type);
+  std::u16string title = GetTitle(type, days_remaining, device_type);
+  std::u16string body = GetMessage(type, manager, days_remaining, device_type);
+  std::u16string button = GetButtonText(type);
   if (title.empty() || body.empty() || button.empty()) {
     NOTREACHED();
     return;
@@ -140,9 +140,9 @@
 }
 
 void UpdateRequiredNotification::DisplayNotification(
-    const base::string16& title,
-    const base::string16& message,
-    const base::string16& button_text,
+    const std::u16string& title,
+    const std::u16string& message,
+    const std::u16string& button_text,
     message_center::SystemNotificationWarningLevel color_type,
     message_center::NotificationPriority priority) {
   message_center::RichNotificationData data;
@@ -152,7 +152,7 @@
       ash::CreateSystemNotification(
           message_center::NOTIFICATION_TYPE_SIMPLE,
           kUpdateRequiredNotificationId, title, message,
-          base::string16() /*display_source*/, GURL(),
+          std::u16string() /*display_source*/, GURL(),
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT,
               kUpdateRequiredNotificationId),
@@ -176,7 +176,7 @@
 
 void UpdateRequiredNotification::Click(
     const base::Optional<int>& button_index,
-    const base::Optional<base::string16>& reply) {
+    const base::Optional<std::u16string>& reply) {
   // |button_index| may be empty if the notification body was clicked.
   if (!button_index)
     return;
diff --git a/chrome/browser/chromeos/ui/update_required_notification.h b/chrome/browser/chromeos/ui/update_required_notification.h
index b8ac407..60c15de 100644
--- a/chrome/browser/chromeos/ui/update_required_notification.h
+++ b/chrome/browser/chromeos/ui/update_required_notification.h
@@ -34,7 +34,7 @@
   // message_center::NotificationObserver:
   void Close(bool by_user) override;
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
 
   // Collects notification data like title, body, button text, priority on the
   // basis of |type| and |warning_time|. Sets the |button_click_callback| to be
@@ -43,7 +43,7 @@
   void Show(policy::MinimumVersionPolicyHandler::NotificationType type,
             base::TimeDelta warning_time,
             const std::string& domain_name,
-            const base::string16& device_type,
+            const std::u16string& device_type,
             base::OnceClosure button_click_callback,
             base::OnceClosure close_callback);
 
@@ -52,9 +52,9 @@
  private:
   // Creates and displays a new notification.
   void DisplayNotification(
-      const base::string16& title,
-      const base::string16& message,
-      const base::string16& button_text,
+      const std::u16string& title,
+      const std::u16string& message,
+      const std::u16string& button_text,
       const message_center::SystemNotificationWarningLevel color_type,
       const message_center::NotificationPriority priority);
 
diff --git a/chrome/browser/chromeos/ui/update_required_notification_unittest.cc b/chrome/browser/chromeos/ui/update_required_notification_unittest.cc
index 6b3b1dce..d2e36f1 100644
--- a/chrome/browser/chromeos/ui/update_required_notification_unittest.cc
+++ b/chrome/browser/chromeos/ui/update_required_notification_unittest.cc
@@ -78,8 +78,8 @@
   // Set new value for policy pref.
   void SetPolicyPref(base::Value value);
 
-  void VerifyUpdateRequiredNotification(const base::string16& expected_title,
-                                        const base::string16& expected_message);
+  void VerifyUpdateRequiredNotification(const std::u16string& expected_title,
+                                        const std::u16string& expected_message);
 
   policy::MinimumVersionPolicyHandler* GetMinimumVersionPolicyHandler() {
     return minimum_version_policy_handler_.get();
@@ -180,8 +180,8 @@
 }
 
 void UpdateRequiredNotificationTest::VerifyUpdateRequiredNotification(
-    const base::string16& expected_title,
-    const base::string16& expected_message) {
+    const std::u16string& expected_title,
+    const std::u16string& expected_message) {
   auto notification =
       display_service()->GetNotification(kUpdateRequiredNotificationId);
   ASSERT_TRUE(notification);
@@ -214,9 +214,9 @@
   EXPECT_FALSE(GetMinimumVersionPolicyHandler()->RequirementsAreSatisfied());
 
   // Check notification is shown for offline devices with the warning time.
-  base::string16 expected_title =
+  std::u16string expected_title =
       base::ASCIIToUTF16("Update Chrome device within 10 days");
-  base::string16 expected_message = base::ASCIIToUTF16(
+  std::u16string expected_message = base::ASCIIToUTF16(
       "managed.com requires you to download an update before the deadline. The "
       "update will download automatically when you connect to the internet.");
   VerifyUpdateRequiredNotification(expected_title, expected_message);
@@ -225,9 +225,9 @@
   const base::TimeDelta warning =
       base::TimeDelta::FromDays(kLongWarningInDays - 1);
   task_environment_.FastForwardBy(warning);
-  base::string16 expected_title_last_day =
+  std::u16string expected_title_last_day =
       base::ASCIIToUTF16("Last day to update Chrome device");
-  base::string16 expected_message_last_day = base::ASCIIToUTF16(
+  std::u16string expected_message_last_day = base::ASCIIToUTF16(
       "managed.com requires you to download an update today. The "
       "update will download automatically when you connect to the internet.");
   VerifyUpdateRequiredNotification(expected_title_last_day,
@@ -261,9 +261,9 @@
       GetMinimumVersionPolicyHandler()->IsDeadlineTimerRunningForTesting());
 
   // Check notification is shown for metered network with the warning time.
-  base::string16 expected_title =
+  std::u16string expected_title =
       base::ASCIIToUTF16("Update Chrome device within 10 days");
-  base::string16 expected_message = base::ASCIIToUTF16(
+  std::u16string expected_message = base::ASCIIToUTF16(
       "managed.com requires you to connect to Wi-Fi and download an update "
       "before the deadline. Or, download from a metered connection (charges "
       "may apply).");
@@ -273,9 +273,9 @@
   const base::TimeDelta warning =
       base::TimeDelta::FromDays(kLongWarningInDays - 1);
   task_environment_.FastForwardBy(warning);
-  base::string16 expected_title_last_day =
+  std::u16string expected_title_last_day =
       base::ASCIIToUTF16("Last day to update Chrome device");
-  base::string16 expected_message_last_day = base::ASCIIToUTF16(
+  std::u16string expected_message_last_day = base::ASCIIToUTF16(
       "managed.com requires you to connect to Wi-Fi today to download an "
       "update. Or, download from a metered connection (charges may apply).");
   VerifyUpdateRequiredNotification(expected_title_last_day,
@@ -301,9 +301,9 @@
       GetMinimumVersionPolicyHandler()->IsDeadlineTimerRunningForTesting());
 
   // Check notification is shown for end of life with the warning time.
-  base::string16 expected_title =
+  std::u16string expected_title =
       base::ASCIIToUTF16("Return Chrome device within 10 days");
-  base::string16 expected_message = base::ASCIIToUTF16(
+  std::u16string expected_message = base::ASCIIToUTF16(
       "managed.com requires you to back up your data and return this Chrome "
       "device before the deadline.");
   VerifyUpdateRequiredNotification(expected_title, expected_message);
@@ -312,16 +312,16 @@
   const base::TimeDelta warning =
       base::TimeDelta::FromDays(kLongWarningInDays - 7);
   task_environment_.FastForwardBy(warning);
-  base::string16 expected_title_one_week =
+  std::u16string expected_title_one_week =
       base::ASCIIToUTF16("Return Chrome device within 1 week");
   VerifyUpdateRequiredNotification(expected_title_one_week, expected_message);
 
   // Expire the notification timer to show new notification on the last day.
   const base::TimeDelta warning_last_day = base::TimeDelta::FromDays(6);
   task_environment_.FastForwardBy(warning_last_day);
-  base::string16 expected_title_last_day =
+  std::u16string expected_title_last_day =
       base::ASCIIToUTF16("Immediate return required");
-  base::string16 expected_message_last_day = base::ASCIIToUTF16(
+  std::u16string expected_message_last_day = base::ASCIIToUTF16(
       "managed.com requires you to back up your data and return this Chrome "
       "device today.");
   VerifyUpdateRequiredNotification(expected_title_last_day,
@@ -356,9 +356,9 @@
   EXPECT_TRUE(
       GetMinimumVersionPolicyHandler()->IsDeadlineTimerRunningForTesting());
 
-  base::string16 expected_title_last_day =
+  std::u16string expected_title_last_day =
       base::ASCIIToUTF16("Immediate return required");
-  base::string16 expected_message_last_day = base::ASCIIToUTF16(
+  std::u16string expected_message_last_day = base::ASCIIToUTF16(
       "managed.com requires you to back up your data and return this Chrome "
       "device today.");
   VerifyUpdateRequiredNotification(expected_title_last_day,
@@ -387,9 +387,9 @@
 
   // Check Chromebox notification is shown for end of life with the warning
   // time.
-  base::string16 expected_title =
+  std::u16string expected_title =
       base::ASCIIToUTF16("Return Chromebox within 10 days");
-  base::string16 expected_message = base::ASCIIToUTF16(
+  std::u16string expected_message = base::ASCIIToUTF16(
       "managed.com requires you to back up your data and return this Chromebox "
       "before the deadline.");
   VerifyUpdateRequiredNotification(expected_title, expected_message);
@@ -398,7 +398,7 @@
   const base::TimeDelta warning =
       base::TimeDelta::FromDays(kLongWarningInDays - 7);
   task_environment_.FastForwardBy(warning);
-  base::string16 expected_title_one_week =
+  std::u16string expected_title_one_week =
       base::ASCIIToUTF16("Return Chromebox within 1 week");
   VerifyUpdateRequiredNotification(expected_title_one_week, expected_message);
 }
diff --git a/chrome/browser/chromeos/usb/cros_usb_detector.cc b/chrome/browser/chromeos/usb/cros_usb_detector.cc
index 8c34d8c..416b87a 100644
--- a/chrome/browser/chromeos/usb/cros_usb_detector.cc
+++ b/chrome/browser/chromeos/usb/cros_usb_detector.cc
@@ -51,9 +51,9 @@
 
 const char kNotifierUsb[] = "crosusb.connected";
 
-base::string16 ProductLabelFromDevice(
+std::u16string ProductLabelFromDevice(
     const device::mojom::UsbDeviceInfo& device_info) {
-  base::string16 product_label =
+  std::u16string product_label =
       l10n_util::GetStringUTF16(IDS_CROSUSB_UNKNOWN_DEVICE);
   if (device_info.product_name.has_value() &&
       !device_info.product_name->empty()) {
@@ -152,7 +152,7 @@
         disposition_(CrosUsbNotificationClosed::kUnknown) {}
 
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override {
+             const base::Optional<std::u16string>& reply) override {
     disposition_ = CrosUsbNotificationClosed::kUnknown;
     if (button_index && *button_index < static_cast<int>(vm_names_.size())) {
       HandleConnectToVm(vm_names_[*button_index]);
@@ -228,11 +228,11 @@
 }
 
 void ShowNotificationForDevice(const std::string& guid,
-                               const base::string16& label) {
+                               const std::u16string& label) {
   message_center::RichNotificationData rich_notification_data;
   std::vector<std::string> vm_names;
   std::string settings_sub_page;
-  base::string16 vm_name;
+  std::u16string vm_name;
   rich_notification_data.small_image = gfx::Image(
       gfx::CreateVectorIcon(vector_icons::kUsbIcon, 64, gfx::kGoogleBlue800));
   rich_notification_data.accent_color = ash::kSystemNotificationColorNormal;
@@ -256,7 +256,7 @@
         chromeos::settings::mojom::kPluginVmUsbPreferencesSubpagePath;
   }
 
-  base::string16 message;
+  std::u16string message;
   if (vm_names.size() == 1) {
     message = l10n_util::GetStringFUTF16(
         IDS_CROSUSB_DEVICE_DETECTED_NOTIFICATION, label, vm_name);
@@ -271,7 +271,7 @@
   message_center::Notification notification(
       message_center::NOTIFICATION_TYPE_MULTIPLE, notification_id,
       l10n_util::GetStringUTF16(IDS_CROSUSB_DEVICE_DETECTED_NOTIFICATION_TITLE),
-      message, gfx::Image(), base::string16(), GURL(),
+      message, gfx::Image(), std::u16string(), GURL(),
       message_center::NotifierId(message_center::NotifierType::SYSTEM_COMPONENT,
                                  kNotifierUsb),
       rich_notification_data,
@@ -323,7 +323,7 @@
 }  // namespace
 
 CrosUsbDeviceInfo::CrosUsbDeviceInfo(std::string guid,
-                                     base::string16 label,
+                                     std::u16string label,
                                      base::Optional<std::string> shared_vm_name,
                                      bool prompt_before_sharing)
     : guid(guid),
@@ -573,7 +573,7 @@
 
   // Copy strings prior to moving |device_info| and |new_device|.
   std::string guid = device_info->guid;
-  base::string16 label = new_device.label;
+  std::u16string label = new_device.label;
 
   new_device.info = std::move(device_info);
   auto result = usb_devices_.emplace(guid, std::move(new_device));
diff --git a/chrome/browser/chromeos/usb/cros_usb_detector.h b/chrome/browser/chromeos/usb/cros_usb_detector.h
index adbbdc3..ab616c8 100644
--- a/chrome/browser/chromeos/usb/cros_usb_detector.h
+++ b/chrome/browser/chromeos/usb/cros_usb_detector.h
@@ -50,14 +50,14 @@
 // CrosUsbDetector only exposes devices which can be shared with Guest OSes.
 struct CrosUsbDeviceInfo {
   CrosUsbDeviceInfo(std::string guid,
-                    base::string16 label,
+                    std::u16string label,
                     base::Optional<std::string> shared_vm_name,
                     bool prompt_before_sharing);
   CrosUsbDeviceInfo(const CrosUsbDeviceInfo&);
   ~CrosUsbDeviceInfo();
 
   std::string guid;
-  base::string16 label;
+  std::u16string label;
   // Name of VM shared with. Unset if not shared. The device may be shared but
   // not yet attached.
   base::Optional<std::string> shared_vm_name;
@@ -136,7 +136,7 @@
     // Device information from the USB manager.
     device::mojom::UsbDeviceInfoPtr info;
 
-    base::string16 label;
+    std::u16string label;
 
     // Whether the device can be shared with guest OSes.
     bool shareable = false;
diff --git a/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc b/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc
index 924d01b..e66fdc4 100644
--- a/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc
+++ b/chrome/browser/chromeos/usb/cros_usb_detector_unittest.cc
@@ -260,12 +260,12 @@
   }
 
  protected:
-  base::string16 connection_message(const char* product_name) {
+  std::u16string connection_message(const char* product_name) {
     return base::ASCIIToUTF16(base::StringPrintf(
         "Open Settings to connect %s to Linux", product_name));
   }
 
-  base::string16 expected_title() {
+  std::u16string expected_title() {
     return base::ASCIIToUTF16("USB device detected");
   }
 
diff --git a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_notification_controller.cc b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_notification_controller.cc
index 2892a60..1a47df1 100644
--- a/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_notification_controller.cc
+++ b/chrome/browser/chromeos/wilco_dtc_supportd/wilco_dtc_supportd_notification_controller.cc
@@ -49,7 +49,7 @@
       const WilcoDtcSupportdNotificationDelegate& other) = delete;
 
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override {
+             const base::Optional<std::u16string>& reply) override {
     if (button_index && *button_index == 0) {
       auto help_app(
           base::MakeRefCounted<HelpAppLauncher>(nullptr /* parent_window */));
@@ -179,7 +179,7 @@
           message_center::NOTIFICATION_TYPE_SIMPLE, notification_id,
           l10n_util::GetStringUTF16(title_id),
           l10n_util::GetStringUTF16(message_id),
-          base::string16() /* display_source */, GURL() /* origin_url */,
+          std::u16string() /* display_source */, GURL() /* origin_url */,
           message_center::NotifierId(
               message_center::NotifierType::SYSTEM_COMPONENT, kNotifierWilco),
           rich_data,
diff --git a/chrome/browser/component_updater/sw_reporter_installer_win.cc b/chrome/browser/component_updater/sw_reporter_installer_win.cc
index 09973ed..3b7821a2 100644
--- a/chrome/browser/component_updater/sw_reporter_installer_win.cc
+++ b/chrome/browser/component_updater/sw_reporter_installer_win.cc
@@ -86,7 +86,7 @@
   return *registration_cb_for_testing;
 }
 
-void ReportUploadsWithUma(const base::string16& upload_results) {
+void ReportUploadsWithUma(const std::u16string& upload_results) {
   base::String16Tokenizer tokenizer(upload_results, u";");
   bool last_result = false;
   while (tokenizer.GetNext()) {
@@ -210,7 +210,7 @@
 
     std::vector<std::wstring> argv = {exe_path.value()};
     for (const auto& value : *arguments) {
-      base::string16 argument;
+      std::u16string argument;
       if (!value.GetAsString(&argument)) {
         ReportConfigurationError(kBadParams);
         return false;
diff --git a/chrome/browser/content_settings/content_settings_browsertest.cc b/chrome/browser/content_settings/content_settings_browsertest.cc
index 288f6be..6637de5 100644
--- a/chrome/browser/content_settings/content_settings_browsertest.cc
+++ b/chrome/browser/content_settings/content_settings_browsertest.cc
@@ -795,11 +795,11 @@
   for (auto* op : kTestOps) {
     EXPECT_TRUE(ExecJs(tab, base::StringPrintf(kBaseCall, op)));
 
-    base::string16 expected_title(
+    std::u16string expected_title(
         base::ASCIIToUTF16(base::StringPrintf(kBaseExpected, op)));
     content::TitleWatcher title_watcher(tab, expected_title);
 
-    base::string16 unexpected_title(
+    std::u16string unexpected_title(
         base::ASCIIToUTF16(base::StringPrintf(kBaseUnexpected, op)));
     title_watcher.AlsoWaitForTitle(unexpected_title);
 
@@ -1119,7 +1119,7 @@
 
   content::WebContents* web_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
-  base::string16 expected_title(base::ASCIIToUTF16("Imported"));
+  std::u16string expected_title(base::ASCIIToUTF16("Imported"));
   content::TitleWatcher title_watcher(web_contents, expected_title);
   title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("Failed"));
 
@@ -1172,7 +1172,7 @@
   content::WebContents* web_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
 
-  base::string16 expected_title(base::ASCIIToUTF16("Failed"));
+  std::u16string expected_title(base::ASCIIToUTF16("Failed"));
   content::TitleWatcher title_watcher(web_contents, expected_title);
   title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("Imported"));
 
diff --git a/chrome/browser/conversions/conversions_usecounter_browsertest.cc b/chrome/browser/conversions/conversions_usecounter_browsertest.cc
index f02a8c9..fb2c3b2c 100644
--- a/chrome/browser/conversions/conversions_usecounter_browsertest.cc
+++ b/chrome/browser/conversions/conversions_usecounter_browsertest.cc
@@ -113,7 +113,7 @@
   // Wait for the conversion redirect to be intercepted. This is indicated by
   // window title changing when the img element for the conversion request fires
   // an onerror event.
-  const base::string16 kConvertTitle = base::ASCIIToUTF16("converted");
+  const std::u16string kConvertTitle = base::ASCIIToUTF16("converted");
   content::TitleWatcher watcher(web_contents, kConvertTitle);
   EXPECT_EQ(kConvertTitle, watcher.WaitAndGetTitle());
 
diff --git a/chrome/browser/crash_recovery_browsertest.cc b/chrome/browser/crash_recovery_browsertest.cc
index 47d426f3..de44968 100644
--- a/chrome/browser/crash_recovery_browsertest.cc
+++ b/chrome/browser/crash_recovery_browsertest.cc
@@ -103,8 +103,8 @@
       "data:text/html,<script>document.title=new Date().valueOf()</script>");
   ui_test_utils::NavigateToURL(browser(), url);
 
-  base::string16 title_before_crash;
-  base::string16 title_after_crash;
+  std::u16string title_before_crash;
+  std::u16string title_after_crash;
 
   ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(),
                                                 &title_before_crash));
@@ -134,8 +134,8 @@
   ui_test_utils::NavigateToURL(browser(),
                                embedded_test_server()->GetURL(kTestPath));
 
-  base::string16 title_before_crash;
-  base::string16 title_after_crash;
+  std::u16string title_before_crash;
+  std::u16string title_after_crash;
 
   ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(),
                                                 &title_before_crash));
@@ -160,8 +160,8 @@
       base::FilePath(kTitle2File)));
   ui_test_utils::NavigateToURL(browser(), url);
 
-  base::string16 title_before_crash;
-  base::string16 title_after_crash;
+  std::u16string title_before_crash;
+  std::u16string title_after_crash;
 
   ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(),
                                                 &title_before_crash));
diff --git a/chrome/browser/custom_handlers/protocol_handler_registry_browsertest.cc b/chrome/browser/custom_handlers/protocol_handler_registry_browsertest.cc
index cbdfb71f..54c235b2 100644
--- a/chrome/browser/custom_handlers/protocol_handler_registry_browsertest.cc
+++ b/chrome/browser/custom_handlers/protocol_handler_registry_browsertest.cc
@@ -194,7 +194,7 @@
   GURL handler_url = embedded_test_server()->GetURL("/%s");
   AddProtocolHandler("urn", handler_url);
 
-  base::string16 expected_title = base::ASCIIToUTF16("OK");
+  std::u16string expected_title = base::ASCIIToUTF16("OK");
   content::TitleWatcher title_watcher(
       browser()->tab_strip_model()->GetActiveWebContents(), expected_title);
 
diff --git a/chrome/browser/custom_handlers/register_protocol_handler_permission_request.cc b/chrome/browser/custom_handlers/register_protocol_handler_permission_request.cc
index 70069e2f..3c0b037 100644
--- a/chrome/browser/custom_handlers/register_protocol_handler_permission_request.cc
+++ b/chrome/browser/custom_handlers/register_protocol_handler_permission_request.cc
@@ -32,7 +32,7 @@
   return permissions::RequestType::kRegisterProtocolHandler;
 }
 
-base::string16
+std::u16string
 RegisterProtocolHandlerPermissionRequest::GetMessageTextFragment() const {
   ProtocolHandler old_handler = registry_->GetHandlerFor(handler_.protocol());
   return old_handler.IsEmpty()
diff --git a/chrome/browser/custom_handlers/register_protocol_handler_permission_request.h b/chrome/browser/custom_handlers/register_protocol_handler_permission_request.h
index 92a357c..d55e193e 100644
--- a/chrome/browser/custom_handlers/register_protocol_handler_permission_request.h
+++ b/chrome/browser/custom_handlers/register_protocol_handler_permission_request.h
@@ -33,7 +33,7 @@
  private:
   // permissions::PermissionRequest:
   permissions::RequestType GetRequestType() const override;
-  base::string16 GetMessageTextFragment() const override;
+  std::u16string GetMessageTextFragment() const override;
   GURL GetOrigin() const override;
   void PermissionGranted(bool is_one_time) override;
   void PermissionDenied() override;
diff --git a/chrome/browser/data_reduction_proxy/data_reduction_promo_infobar_delegate_android.cc b/chrome/browser/data_reduction_proxy/data_reduction_promo_infobar_delegate_android.cc
index 59e3a06..650ebef9 100644
--- a/chrome/browser/data_reduction_proxy/data_reduction_promo_infobar_delegate_android.cc
+++ b/chrome/browser/data_reduction_proxy/data_reduction_promo_infobar_delegate_android.cc
@@ -52,10 +52,10 @@
   return DATA_REDUCTION_PROMO_INFOBAR_DELEGATE_ANDROID;
 }
 
-base::string16 DataReductionPromoInfoBarDelegateAndroid::GetMessageText()
+std::u16string DataReductionPromoInfoBarDelegateAndroid::GetMessageText()
     const {
   // Message is set in DataReductionPromoInfoBar.java.
-  return base::string16();
+  return std::u16string();
 }
 
 bool DataReductionPromoInfoBarDelegateAndroid::Accept() {
diff --git a/chrome/browser/data_reduction_proxy/data_reduction_promo_infobar_delegate_android.h b/chrome/browser/data_reduction_proxy/data_reduction_promo_infobar_delegate_android.h
index e4257b5..9732411 100644
--- a/chrome/browser/data_reduction_proxy/data_reduction_promo_infobar_delegate_android.h
+++ b/chrome/browser/data_reduction_proxy/data_reduction_promo_infobar_delegate_android.h
@@ -44,7 +44,7 @@
 
   // ConfirmInfoBarDelegate:
   infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
-  base::string16 GetMessageText() const override;
+  std::u16string GetMessageText() const override;
   bool Accept() override;
 
   DISALLOW_COPY_AND_ASSIGN(DataReductionPromoInfoBarDelegateAndroid);
diff --git a/chrome/browser/data_saver/lite_video_browsertest.cc b/chrome/browser/data_saver/lite_video_browsertest.cc
index 4dc740a5..3819028 100644
--- a/chrome/browser/data_saver/lite_video_browsertest.cc
+++ b/chrome/browser/data_saver/lite_video_browsertest.cc
@@ -137,7 +137,7 @@
   // The test starts a local http test server to load the test page
   void RunMediaTestPage(const std::string& html_page,
                         const base::StringPairs& query_params,
-                        const base::string16& expected_title) {
+                        const std::u16string& expected_title) {
     std::string query = media::GetURLQueryString(query_params);
     content::TitleWatcher title_watcher(
         browser()->tab_strip_model()->GetActiveWebContents(), expected_title);
diff --git a/chrome/browser/devtools/devtools_file_helper.cc b/chrome/browser/devtools/devtools_file_helper.cc
index bde2af7..a86bc0fd 100644
--- a/chrome/browser/devtools/devtools_file_helper.cc
+++ b/chrome/browser/devtools/devtools_file_helper.cc
@@ -117,7 +117,7 @@
       file_type_info.extensions[0].push_back(ext);
     }
     select_file_dialog_->SelectFile(
-        type, base::string16(), default_path, &file_type_info, 0, ext,
+        type, std::u16string(), default_path, &file_type_info, 0, ext,
         platform_util::GetTopLevel(web_contents->GetNativeView()), nullptr);
   }
 
@@ -347,9 +347,9 @@
     RemoveFileSystem(file_system_path);
 
   std::string path_display_name = path.AsEndingWithSeparator().AsUTF8Unsafe();
-  base::string16 message = l10n_util::GetStringFUTF16(
-      IDS_DEV_TOOLS_CONFIRM_ADD_FILE_SYSTEM_MESSAGE,
-      base::UTF8ToUTF16(path_display_name));
+  std::u16string message =
+      l10n_util::GetStringFUTF16(IDS_DEV_TOOLS_CONFIRM_ADD_FILE_SYSTEM_MESSAGE,
+                                 base::UTF8ToUTF16(path_display_name));
   show_info_bar_callback.Run(
       message, BindOnce(&DevToolsFileHelper::AddUserConfirmedFileSystem,
                         weak_factory_.GetWeakPtr(), type, path));
diff --git a/chrome/browser/devtools/devtools_file_helper.h b/chrome/browser/devtools/devtools_file_helper.h
index df74930e..a11f31a 100644
--- a/chrome/browser/devtools/devtools_file_helper.h
+++ b/chrome/browser/devtools/devtools_file_helper.h
@@ -66,7 +66,7 @@
 
   using SaveCallback = base::OnceCallback<void(const std::string&)>;
   using ShowInfoBarCallback =
-      base::RepeatingCallback<void(const base::string16&,
+      base::RepeatingCallback<void(const std::u16string&,
                                    base::OnceCallback<void(bool)>)>;
 
   // Saves |content| to the file and associates its path with given |url|.
diff --git a/chrome/browser/devtools/devtools_infobar_delegate.cc b/chrome/browser/devtools/devtools_infobar_delegate.cc
index aa2f030..35bd517 100644
--- a/chrome/browser/devtools/devtools_infobar_delegate.cc
+++ b/chrome/browser/devtools/devtools_infobar_delegate.cc
@@ -9,14 +9,14 @@
 #include "ui/base/l10n/l10n_util.h"
 
 // static
-void DevToolsInfoBarDelegate::Create(const base::string16& message,
+void DevToolsInfoBarDelegate::Create(const std::u16string& message,
                                      Callback callback) {
   std::unique_ptr<ConfirmInfoBarDelegate> delegate(
       new DevToolsInfoBarDelegate(message, std::move(callback)));
   GlobalConfirmInfoBar::Show(std::move(delegate));
 }
 
-DevToolsInfoBarDelegate::DevToolsInfoBarDelegate(const base::string16& message,
+DevToolsInfoBarDelegate::DevToolsInfoBarDelegate(const std::u16string& message,
                                                  Callback callback)
     : message_(message), callback_(std::move(callback)) {}
 
@@ -30,11 +30,11 @@
   return DEV_TOOLS_INFOBAR_DELEGATE;
 }
 
-base::string16 DevToolsInfoBarDelegate::GetMessageText() const {
+std::u16string DevToolsInfoBarDelegate::GetMessageText() const {
   return message_;
 }
 
-base::string16 DevToolsInfoBarDelegate::GetButtonLabel(
+std::u16string DevToolsInfoBarDelegate::GetButtonLabel(
     InfoBarButton button) const {
   return l10n_util::GetStringUTF16((button == BUTTON_OK)
                                        ? IDS_DEV_TOOLS_CONFIRM_ALLOW_BUTTON
diff --git a/chrome/browser/devtools/devtools_infobar_delegate.h b/chrome/browser/devtools/devtools_infobar_delegate.h
index f421e2a..91893fe 100644
--- a/chrome/browser/devtools/devtools_infobar_delegate.h
+++ b/chrome/browser/devtools/devtools_infobar_delegate.h
@@ -15,19 +15,19 @@
  public:
   using Callback = base::OnceCallback<void(bool)>;
 
-  static void Create(const base::string16& message, Callback callback);
+  static void Create(const std::u16string& message, Callback callback);
 
  private:
-  DevToolsInfoBarDelegate(const base::string16& message, Callback callback);
+  DevToolsInfoBarDelegate(const std::u16string& message, Callback callback);
   ~DevToolsInfoBarDelegate() override;
 
   infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
-  base::string16 GetMessageText() const override;
-  base::string16 GetButtonLabel(InfoBarButton button) const override;
+  std::u16string GetMessageText() const override;
+  std::u16string GetButtonLabel(InfoBarButton button) const override;
   bool Accept() override;
   bool Cancel() override;
 
-  const base::string16 message_;
+  const std::u16string message_;
   Callback callback_;
 
   DISALLOW_COPY_AND_ASSIGN(DevToolsInfoBarDelegate);
diff --git a/chrome/browser/devtools/devtools_toggle_action.cc b/chrome/browser/devtools/devtools_toggle_action.cc
index 11e3509d..e63fe3b 100644
--- a/chrome/browser/devtools/devtools_toggle_action.cc
+++ b/chrome/browser/devtools/devtools_toggle_action.cc
@@ -4,11 +4,10 @@
 
 #include "chrome/browser/devtools/devtools_toggle_action.h"
 
-DevToolsToggleAction::RevealParams::RevealParams(const base::string16& url,
+DevToolsToggleAction::RevealParams::RevealParams(const std::u16string& url,
                                                  size_t line_number,
                                                  size_t column_number)
-    : url(url), line_number(line_number), column_number(column_number) {
-}
+    : url(url), line_number(line_number), column_number(column_number) {}
 
 DevToolsToggleAction::RevealParams::~RevealParams() {
 }
@@ -65,10 +64,9 @@
 }
 
 // static
-DevToolsToggleAction DevToolsToggleAction::Reveal(
-    const base::string16& url,
-    size_t line_number,
-    size_t column_number) {
+DevToolsToggleAction DevToolsToggleAction::Reveal(const std::u16string& url,
+                                                  size_t line_number,
+                                                  size_t column_number) {
   return DevToolsToggleAction(
       new RevealParams(url, line_number, column_number));
 }
diff --git a/chrome/browser/devtools/devtools_toggle_action.h b/chrome/browser/devtools/devtools_toggle_action.h
index d9021b5..7726539 100644
--- a/chrome/browser/devtools/devtools_toggle_action.h
+++ b/chrome/browser/devtools/devtools_toggle_action.h
@@ -26,12 +26,12 @@
   };
 
   struct RevealParams {
-    RevealParams(const base::string16& url,
+    RevealParams(const std::u16string& url,
                  size_t line_number,
                  size_t column_number);
     ~RevealParams();
 
-    base::string16 url;
+    std::u16string url;
     size_t line_number;
     size_t column_number;
   };
@@ -46,7 +46,7 @@
   static DevToolsToggleAction PauseInDebugger();
   static DevToolsToggleAction Inspect();
   static DevToolsToggleAction Toggle();
-  static DevToolsToggleAction Reveal(const base::string16& url,
+  static DevToolsToggleAction Reveal(const std::u16string& url,
                                      size_t line_number,
                                      size_t column_number);
   static DevToolsToggleAction NoOp();
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc
index 20562b6..2eb1fa6 100644
--- a/chrome/browser/devtools/devtools_ui_bindings.cc
+++ b/chrome/browser/devtools/devtools_ui_bindings.cc
@@ -1490,7 +1490,7 @@
 }
 
 void DevToolsUIBindings::ShowDevToolsInfoBar(
-    const base::string16& message,
+    const std::u16string& message,
     DevToolsInfoBarDelegate::Callback callback) {
   if (!delegate_->GetInfoBarService()) {
     std::move(callback).Run(false);
diff --git a/chrome/browser/devtools/devtools_ui_bindings.h b/chrome/browser/devtools/devtools_ui_bindings.h
index a4987fd..2b026d95 100644
--- a/chrome/browser/devtools/devtools_ui_bindings.h
+++ b/chrome/browser/devtools/devtools_ui_bindings.h
@@ -223,7 +223,7 @@
   void SearchCompleted(int request_id,
                        const std::string& file_system_path,
                        const std::vector<std::string>& file_paths);
-  void ShowDevToolsInfoBar(const base::string16& message,
+  void ShowDevToolsInfoBar(const std::u16string& message,
                            DevToolsInfoBarDelegate::Callback callback);
 
   // Extensions support.
diff --git a/chrome/browser/devtools/devtools_window_testing.cc b/chrome/browser/devtools/devtools_window_testing.cc
index c9a142e..33518b9 100644
--- a/chrome/browser/devtools/devtools_window_testing.cc
+++ b/chrome/browser/devtools/devtools_window_testing.cc
@@ -109,7 +109,7 @@
     window->ready_for_test_callback_ = runner->QuitClosure();
     runner->Run();
   }
-  base::string16 harness = base::UTF8ToUTF16(
+  std::u16string harness = base::UTF8ToUTF16(
       content::DevToolsFrontendHost::GetFrontendResource(kHarnessScript));
   window->main_web_contents_->GetMainFrame()->ExecuteJavaScript(
       harness, base::NullCallback());
diff --git a/chrome/browser/devtools/global_confirm_info_bar.cc b/chrome/browser/devtools/global_confirm_info_bar.cc
index de1a690..99504be9 100644
--- a/chrome/browser/devtools/global_confirm_info_bar.cc
+++ b/chrome/browser/devtools/global_confirm_info_bar.cc
@@ -26,14 +26,14 @@
 
   // ConfirmInfoBarDelegate:
   infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
-  base::string16 GetLinkText() const override;
+  std::u16string GetLinkText() const override;
   GURL GetLinkURL() const override;
   bool LinkClicked(WindowOpenDisposition disposition) override;
   void InfoBarDismissed() override;
-  base::string16 GetMessageText() const override;
+  std::u16string GetMessageText() const override;
   gfx::ElideBehavior GetMessageElideBehavior() const override;
   int GetButtons() const override;
-  base::string16 GetButtonLabel(InfoBarButton button) const override;
+  std::u16string GetButtonLabel(InfoBarButton button) const override;
   bool Accept() override;
   bool Cancel() override;
 
@@ -55,7 +55,7 @@
                           : INVALID;
 }
 
-base::string16 GlobalConfirmInfoBar::DelegateProxy::GetLinkText() const {
+std::u16string GlobalConfirmInfoBar::DelegateProxy::GetLinkText() const {
   return global_info_bar_ ? global_info_bar_->delegate_->GetLinkText()
                           : ConfirmInfoBarDelegate::GetLinkText();
 }
@@ -94,9 +94,9 @@
   }
 }
 
-base::string16 GlobalConfirmInfoBar::DelegateProxy::GetMessageText() const {
+std::u16string GlobalConfirmInfoBar::DelegateProxy::GetMessageText() const {
   return global_info_bar_ ? global_info_bar_->delegate_->GetMessageText()
-                          : base::string16();
+                          : std::u16string();
 }
 
 gfx::ElideBehavior
@@ -113,7 +113,7 @@
                           : BUTTON_NONE;
 }
 
-base::string16 GlobalConfirmInfoBar::DelegateProxy::GetButtonLabel(
+std::u16string GlobalConfirmInfoBar::DelegateProxy::GetButtonLabel(
     InfoBarButton button) const {
   return global_info_bar_ ? global_info_bar_->delegate_->GetButtonLabel(button)
                           : ConfirmInfoBarDelegate::GetButtonLabel(button);
diff --git a/chrome/browser/devtools/global_confirm_info_bar_browsertest.cc b/chrome/browser/devtools/global_confirm_info_bar_browsertest.cc
index 90295ea..cfb37f27 100644
--- a/chrome/browser/devtools/global_confirm_info_bar_browsertest.cc
+++ b/chrome/browser/devtools/global_confirm_info_bar_browsertest.cc
@@ -26,7 +26,7 @@
 
   InfoBarIdentifier GetIdentifier() const override { return TEST_INFOBAR; }
 
-  base::string16 GetMessageText() const override {
+  std::u16string GetMessageText() const override {
     return base::ASCIIToUTF16("GlobalConfirmInfoBar browser tests delegate.");
   }
 
diff --git a/chrome/browser/diagnostics/diagnostics_writer.cc b/chrome/browser/diagnostics/diagnostics_writer.cc
index 6f1798fa..d24a11f 100644
--- a/chrome/browser/diagnostics/diagnostics_writer.cc
+++ b/chrome/browser/diagnostics/diagnostics_writer.cc
@@ -45,7 +45,7 @@
   virtual bool Init() = 0;
 
   // Writes a string to the console with the current color.
-  virtual bool Write(const base::string16& text) = 0;
+  virtual bool Write(const std::u16string& text) = 0;
 
   // Called when the program is about to exit.
   virtual void OnQuit() = 0;
@@ -76,7 +76,7 @@
 
   bool Init() override { return SetIOHandles(); }
 
-  bool Write(const base::string16& txt) override {
+  bool Write(const std::u16string& txt) override {
     DWORD sz = txt.size();
     return (TRUE ==
             ::WriteConsoleW(std_out_, base::as_wcstr(txt), sz, &sz, NULL));
@@ -146,7 +146,7 @@
     return true;
   }
 
-  bool Write(const base::string16& text) override {
+  bool Write(const std::u16string& text) override {
     // We're assuming that the terminal is using UTF-8 encoding.
     printf("%s", base::UTF16ToUTF8(text).c_str());
     return true;
diff --git a/chrome/browser/downgrade/user_data_snapshot_browsertest.cc b/chrome/browser/downgrade/user_data_snapshot_browsertest.cc
index 704dea5..04f4d4485 100644
--- a/chrome/browser/downgrade/user_data_snapshot_browsertest.cc
+++ b/chrome/browser/downgrade/user_data_snapshot_browsertest.cc
@@ -271,16 +271,16 @@
   const GURL that_other_url_{"https://www.thatotherul.com"};
   const GURL mobile_url_{"https://www.mobile.com"};
 
-  const base::string16 folder_title_ = base::ASCIIToUTF16("Folder");
-  const base::string16 sub_folder_title_ = base::ASCIIToUTF16("Sub Folder");
-  const base::string16 sub_folder_url_title_ =
+  const std::u16string folder_title_ = base::ASCIIToUTF16("Folder");
+  const std::u16string sub_folder_title_ = base::ASCIIToUTF16("Sub Folder");
+  const std::u16string sub_folder_url_title_ =
       base::ASCIIToUTF16("Sub Folder URL");
-  const base::string16 that_url_title_ = base::ASCIIToUTF16("That URL");
-  const base::string16 folder_url_title_ = base::ASCIIToUTF16("Folder URL");
-  const base::string16 other_url_title_ = base::ASCIIToUTF16("Other URL");
-  const base::string16 that_other_url_title_ =
+  const std::u16string that_url_title_ = base::ASCIIToUTF16("That URL");
+  const std::u16string folder_url_title_ = base::ASCIIToUTF16("Folder URL");
+  const std::u16string other_url_title_ = base::ASCIIToUTF16("Other URL");
+  const std::u16string that_other_url_title_ =
       base::ASCIIToUTF16("That Other URL");
-  const base::string16 mobile_url_title_ = base::ASCIIToUTF16("Mobile URL");
+  const std::u16string mobile_url_title_ = base::ASCIIToUTF16("Mobile URL");
 };
 
 IN_PROC_BROWSER_TEST_F(BookmarksSnapshotTest, PRE_PRE_PRE_Test) {}
@@ -300,7 +300,7 @@
           source(source) {}
     ~HistoryEntry() = default;
     GURL url;
-    base::string16 title;
+    std::u16string title;
     base::Time time;
     history::VisitSource source;
   };
@@ -323,7 +323,7 @@
     base::RunLoop run_loop;
     base::CancelableTaskTracker tracker;
     history_service->QueryHistory(
-        base::string16(), history::QueryOptions(),
+        std::u16string(), history::QueryOptions(),
         base::BindOnce(&HistorySnapshotTest::SetQueryResults,
                        base::Unretained(this), run_loop.QuitClosure()),
         &tracker);
diff --git a/chrome/browser/download/android/dangerous_download_infobar_delegate.cc b/chrome/browser/download/android/dangerous_download_infobar_delegate.cc
index 25871d4..8deb0ed 100644
--- a/chrome/browser/download/android/dangerous_download_infobar_delegate.cc
+++ b/chrome/browser/download/android/dangerous_download_infobar_delegate.cc
@@ -61,7 +61,7 @@
     download_item_->Remove();
 }
 
-base::string16 DangerousDownloadInfoBarDelegate::GetMessageText() const {
+std::u16string DangerousDownloadInfoBarDelegate::GetMessageText() const {
   return message_text_;
 }
 
diff --git a/chrome/browser/download/android/dangerous_download_infobar_delegate.h b/chrome/browser/download/android/dangerous_download_infobar_delegate.h
index dc2e88d8..e4e1c07 100644
--- a/chrome/browser/download/android/dangerous_download_infobar_delegate.h
+++ b/chrome/browser/download/android/dangerous_download_infobar_delegate.h
@@ -35,14 +35,14 @@
   int GetIconId() const override;
   bool ShouldExpire(const NavigationDetails& details) const override;
   void InfoBarDismissed() override;
-  base::string16 GetMessageText() const override;
+  std::u16string GetMessageText() const override;
   bool Accept() override;
   bool Cancel() override;
 
   // The download item that is requesting the infobar. Could get deleted while
   // the infobar is showing.
   download::DownloadItem* download_item_;
-  base::string16 message_text_;
+  std::u16string message_text_;
 
   DISALLOW_COPY_AND_ASSIGN(DangerousDownloadInfoBarDelegate);
 };
diff --git a/chrome/browser/download/android/download_controller.cc b/chrome/browser/download/android/download_controller.cc
index ac24e34b..79629288 100644
--- a/chrome/browser/download/android/download_controller.cc
+++ b/chrome/browser/download/android/download_controller.cc
@@ -314,7 +314,7 @@
     return;
 
   JNIEnv* env = base::android::AttachCurrentThread();
-  base::string16 file_name =
+  std::u16string file_name =
       net::GetSuggestedFilename(info.url, info.content_disposition,
                                 std::string(),  // referrer_charset
                                 std::string(),  // suggested_name
diff --git a/chrome/browser/download/android/duplicate_download_infobar_delegate.cc b/chrome/browser/download/android/duplicate_download_infobar_delegate.cc
index 8664a5d..682a6d16 100644
--- a/chrome/browser/download/android/duplicate_download_infobar_delegate.cc
+++ b/chrome/browser/download/android/duplicate_download_infobar_delegate.cc
@@ -22,8 +22,8 @@
   return false;
 }
 
-base::string16 DuplicateDownloadInfoBarDelegate::GetMessageText() const {
-  return base::string16();
+std::u16string DuplicateDownloadInfoBarDelegate::GetMessageText() const {
+  return std::u16string();
 }
 
 bool DuplicateDownloadInfoBarDelegate::ShouldExpire(
diff --git a/chrome/browser/download/android/duplicate_download_infobar_delegate.h b/chrome/browser/download/android/duplicate_download_infobar_delegate.h
index 37ac4adf..54a7f66 100644
--- a/chrome/browser/download/android/duplicate_download_infobar_delegate.h
+++ b/chrome/browser/download/android/duplicate_download_infobar_delegate.h
@@ -30,7 +30,7 @@
   virtual bool DuplicateRequestExists() const;
 
   // ConfirmInfoBarDelegate implementation.
-  base::string16 GetMessageText() const override;
+  std::u16string GetMessageText() const override;
   bool ShouldExpire(const NavigationDetails& details) const override;
 };
 
diff --git a/chrome/browser/download/android/mixed_content_download_infobar_delegate.cc b/chrome/browser/download/android/mixed_content_download_infobar_delegate.cc
index 5f8f8ab..04b58fd 100644
--- a/chrome/browser/download/android/mixed_content_download_infobar_delegate.cc
+++ b/chrome/browser/download/android/mixed_content_download_infobar_delegate.cc
@@ -61,11 +61,11 @@
   PostReply(false);
 }
 
-base::string16 MixedContentDownloadInfoBarDelegate::GetMessageText() const {
+std::u16string MixedContentDownloadInfoBarDelegate::GetMessageText() const {
   return message_text_;
 }
 
-base::string16 MixedContentDownloadInfoBarDelegate::GetButtonLabel(
+std::u16string MixedContentDownloadInfoBarDelegate::GetButtonLabel(
     InfoBarButton button) const {
   if (mixed_content_status_ == MixedContentStatus::WARN) {
     return l10n_util::GetStringUTF16(
diff --git a/chrome/browser/download/android/mixed_content_download_infobar_delegate.h b/chrome/browser/download/android/mixed_content_download_infobar_delegate.h
index 40ddc3c5..c649b64 100644
--- a/chrome/browser/download/android/mixed_content_download_infobar_delegate.h
+++ b/chrome/browser/download/android/mixed_content_download_infobar_delegate.h
@@ -40,15 +40,15 @@
   int GetIconId() const override;
   bool ShouldExpire(const NavigationDetails& details) const override;
   void InfoBarDismissed() override;
-  base::string16 GetMessageText() const override;
-  base::string16 GetButtonLabel(InfoBarButton button) const override;
+  std::u16string GetMessageText() const override;
+  std::u16string GetButtonLabel(InfoBarButton button) const override;
   bool Accept() override;
   bool Cancel() override;
 
   // Calls callback_ with the appropriate result.
   void PostReply(bool should_download);
 
-  base::string16 message_text_;
+  std::u16string message_text_;
   download::DownloadItem::MixedContentStatus mixed_content_status_;
   ResultCallback callback_;
 
diff --git a/chrome/browser/download/android/string_utils.cc b/chrome/browser/download/android/string_utils.cc
index 1eb53ef7..7f36996 100644
--- a/chrome/browser/download/android/string_utils.cc
+++ b/chrome/browser/download/android/string_utils.cc
@@ -14,7 +14,7 @@
 static ScopedJavaLocalRef<jstring> JNI_StringUtils_GetFailStateMessage(
     JNIEnv* env,
     jint fail_state) {
-  base::string16 message = OfflineItemUtils::GetFailStateMessage(
+  std::u16string message = OfflineItemUtils::GetFailStateMessage(
       static_cast<offline_items_collection::FailState>(fail_state));
   l10n_util::GetStringFUTF16(IDS_DOWNLOAD_STATUS_INTERRUPTED, message);
   return ConvertUTF16ToJavaString(env, message);
diff --git a/chrome/browser/download/download_browsertest.cc b/chrome/browser/download/download_browsertest.cc
index 7944ce5..5ce090b 100644
--- a/chrome/browser/download/download_browsertest.cc
+++ b/chrome/browser/download/download_browsertest.cc
@@ -876,9 +876,9 @@
     // TODO(ahendrickson) -- |expected_title_in_progress| and
     // |expected_title_finished| need to be checked.
     base::FilePath filename = base::FilePath::FromUTF8Unsafe(url.path());
-    base::string16 expected_title_in_progress(
+    std::u16string expected_title_in_progress(
         base::ASCIIToUTF16(partial_indication) + filename.LossyDisplayName());
-    base::string16 expected_title_finished(
+    std::u16string expected_title_finished(
         base::ASCIIToUTF16(total_indication) + filename.LossyDisplayName());
 
     // Download a partial web page in a background tab and wait.
@@ -4543,8 +4543,8 @@
 
   // Clicking the <a download> in the iframe should navigate the iframe,
   // not the main frame.
-  base::string16 expected_title(base::UTF8ToUTF16("Loaded as iframe"));
-  base::string16 failed_title(base::UTF8ToUTF16("Loaded as main frame"));
+  std::u16string expected_title(base::UTF8ToUTF16("Loaded as iframe"));
+  std::u16string failed_title(base::UTF8ToUTF16("Loaded as main frame"));
   content::TitleWatcher title_watcher(web_contents, expected_title);
   title_watcher.AlsoWaitForTitle(failed_title);
   render_frame_host->ExecuteJavaScriptForTests(base::ASCIIToUTF16("runTest();"),
diff --git a/chrome/browser/download/download_file_picker.cc b/chrome/browser/download/download_file_picker.cc
index 21db341..cce46b5 100644
--- a/chrome/browser/download/download_file_picker.cc
+++ b/chrome/browser/download/download_file_picker.cc
@@ -62,14 +62,10 @@
       web_contents ? platform_util::GetTopLevel(web_contents->GetNativeView())
                    : gfx::kNullNativeWindow;
 
-  select_file_dialog_->SelectFile(ui::SelectFileDialog::SELECT_SAVEAS_FILE,
-                                  base::string16(),
-                                  suggested_path_,
-                                  &file_type_info,
-                                  0,
-                                  base::FilePath::StringType(),
-                                  owning_window,
-                                  NULL);
+  select_file_dialog_->SelectFile(
+      ui::SelectFileDialog::SELECT_SAVEAS_FILE, std::u16string(),
+      suggested_path_, &file_type_info, 0, base::FilePath::StringType(),
+      owning_window, NULL);
 }
 
 DownloadFilePicker::~DownloadFilePicker() {
diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/download/download_item_model.cc
index 56b6f8122..1847220 100644
--- a/chrome/browser/download/download_item_model.cc
+++ b/chrome/browser/download/download_item_model.cc
@@ -159,18 +159,18 @@
       content::DownloadItemUtils::GetBrowserContext(download_));
 }
 
-base::string16 DownloadItemModel::GetTabProgressStatusText() const {
+std::u16string DownloadItemModel::GetTabProgressStatusText() const {
   int64_t total = GetTotalBytes();
   int64_t size = download_->GetReceivedBytes();
-  base::string16 received_size = ui::FormatBytes(size);
-  base::string16 amount = received_size;
+  std::u16string received_size = ui::FormatBytes(size);
+  std::u16string amount = received_size;
 
   // Adjust both strings for the locale direction since we don't yet know which
   // string we'll end up using for constructing the final progress string.
   base::i18n::AdjustStringForLocaleDirection(&amount);
 
   if (total) {
-    base::string16 total_text = ui::FormatBytes(total);
+    std::u16string total_text = ui::FormatBytes(total);
     base::i18n::AdjustStringForLocaleDirection(&total_text);
 
     base::i18n::AdjustStringForLocaleDirection(&received_size);
@@ -180,11 +180,11 @@
     amount.assign(received_size);
   }
   int64_t current_speed = download_->CurrentSpeed();
-  base::string16 speed_text = ui::FormatSpeed(current_speed);
+  std::u16string speed_text = ui::FormatSpeed(current_speed);
   base::i18n::AdjustStringForLocaleDirection(&speed_text);
 
   base::TimeDelta remaining;
-  base::string16 time_remaining;
+  std::u16string time_remaining;
   if (download_->IsPaused()) {
     time_remaining = l10n_util::GetStringUTF16(IDS_DOWNLOAD_PROGRESS_PAUSED);
   } else if (download_->TimeRemaining(&remaining)) {
@@ -202,7 +202,6 @@
       IDS_DOWNLOAD_TAB_PROGRESS_STATUS, speed_text, amount, time_remaining);
 }
 
-
 int64_t DownloadItemModel::GetCompletedBytes() const {
   return download_->GetReceivedBytes();
 }
diff --git a/chrome/browser/download/download_item_model.h b/chrome/browser/download/download_item_model.h
index 513bd64..94470e5f 100644
--- a/chrome/browser/download/download_item_model.h
+++ b/chrome/browser/download/download_item_model.h
@@ -34,7 +34,7 @@
   // DownloadUIModel implementation.
   ContentId GetContentId() const override;
   Profile* profile() const override;
-  base::string16 GetTabProgressStatusText() const override;
+  std::u16string GetTabProgressStatusText() const override;
   int64_t GetCompletedBytes() const override;
   int64_t GetTotalBytes() const override;
   int PercentComplete() const override;
diff --git a/chrome/browser/download/download_open_prompt.cc b/chrome/browser/download/download_open_prompt.cc
index aac377f..a83d39b 100644
--- a/chrome/browser/download/download_open_prompt.cc
+++ b/chrome/browser/download/download_open_prompt.cc
@@ -29,10 +29,10 @@
       DownloadOpenPrompt::OpenCallback open_callback);
   ~DownloadOpenConfirmationDialog() override;
 
-  base::string16 GetTitle() override;
-  base::string16 GetDialogMessage() override;
-  base::string16 GetAcceptButtonTitle() override;
-  base::string16 GetCancelButtonTitle() override;
+  std::u16string GetTitle() override;
+  std::u16string GetDialogMessage() override;
+  std::u16string GetAcceptButtonTitle() override;
+  std::u16string GetCancelButtonTitle() override;
 
  private:
   void OnAccepted() override;
@@ -63,22 +63,22 @@
 
 DownloadOpenConfirmationDialog::~DownloadOpenConfirmationDialog() = default;
 
-base::string16 DownloadOpenConfirmationDialog::GetTitle() {
+std::u16string DownloadOpenConfirmationDialog::GetTitle() {
   return l10n_util::GetStringUTF16(IDS_DOWNLOAD_OPEN_CONFIRMATION_DIALOG_TITLE);
 }
 
-base::string16 DownloadOpenConfirmationDialog::GetDialogMessage() {
+std::u16string DownloadOpenConfirmationDialog::GetDialogMessage() {
   return l10n_util::GetStringFUTF16(
       IDS_DOWNLOAD_OPEN_CONFIRMATION_DIALOG_MESSAGE,
       base::UTF8ToUTF16(extension_name_),
       file_path_.BaseName().AsUTF16Unsafe());
 }
 
-base::string16 DownloadOpenConfirmationDialog::GetAcceptButtonTitle() {
+std::u16string DownloadOpenConfirmationDialog::GetAcceptButtonTitle() {
   return l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_YES_BUTTON_LABEL);
 }
 
-base::string16 DownloadOpenConfirmationDialog::GetCancelButtonTitle() {
+std::u16string DownloadOpenConfirmationDialog::GetCancelButtonTitle() {
   return l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_NO_BUTTON_LABEL);
 }
 
diff --git a/chrome/browser/download/download_permission_request.cc b/chrome/browser/download/download_permission_request.cc
index 5b1b77e..3d0d7c5 100644
--- a/chrome/browser/download/download_permission_request.cc
+++ b/chrome/browser/download/download_permission_request.cc
@@ -28,7 +28,7 @@
 }
 
 #if defined(OS_ANDROID)
-base::string16 DownloadPermissionRequest::GetMessageText() const {
+std::u16string DownloadPermissionRequest::GetMessageText() const {
   return l10n_util::GetStringFUTF16(
       IDS_MULTI_DOWNLOAD_WARNING, url_formatter::FormatOriginForSecurityDisplay(
                                       request_origin_,
@@ -37,7 +37,7 @@
 }
 #endif
 
-base::string16 DownloadPermissionRequest::GetMessageTextFragment() const {
+std::u16string DownloadPermissionRequest::GetMessageTextFragment() const {
   return l10n_util::GetStringUTF16(IDS_MULTI_DOWNLOAD_PERMISSION_FRAGMENT);
 }
 
diff --git a/chrome/browser/download/download_permission_request.h b/chrome/browser/download/download_permission_request.h
index 5d16272..82030e8 100644
--- a/chrome/browser/download/download_permission_request.h
+++ b/chrome/browser/download/download_permission_request.h
@@ -26,9 +26,9 @@
   // permissions::PermissionRequest:
   permissions::RequestType GetRequestType() const override;
 #if defined(OS_ANDROID)
-  base::string16 GetMessageText() const override;
+  std::u16string GetMessageText() const override;
 #endif
-  base::string16 GetMessageTextFragment() const override;
+  std::u16string GetMessageTextFragment() const override;
   GURL GetOrigin() const override;
   void PermissionGranted(bool is_one_time) override;
   void PermissionDenied() override;
diff --git a/chrome/browser/download/download_query.cc b/chrome/browser/download/download_query.cc
index 98cf64b..1b6396ba 100644
--- a/chrome/browser/download/download_query.cc
+++ b/chrome/browser/download/download_query.cc
@@ -48,16 +48,18 @@
 template<> bool GetAs(const base::Value& in, std::string* out) {
   return in.GetAsString(out);
 }
-template<> bool GetAs(const base::Value& in, base::string16* out) {
+template <>
+bool GetAs(const base::Value& in, std::u16string* out) {
   return in.GetAsString(out);
 }
-template<> bool GetAs(const base::Value& in, std::vector<base::string16>* out) {
+template <>
+bool GetAs(const base::Value& in, std::vector<std::u16string>* out) {
   out->clear();
   const base::ListValue* list = NULL;
   if (!in.GetAsList(&list))
     return false;
   for (size_t i = 0; i < list->GetSize(); ++i) {
-    base::string16 element;
+    std::u16string element;
     if (!list->GetString(i, &element)) {
       out->clear();
       return false;
@@ -95,7 +97,7 @@
   return !item.GetFileExternallyRemoved();
 }
 
-base::string16 GetFilename(const DownloadItem& item) {
+std::u16string GetFilename(const DownloadItem& item) {
   // This filename will be compared with strings that could be passed in by the
   // user, who only sees LossyDisplayNames.
   return item.GetTargetFilePath().LossyDisplayName();
@@ -206,26 +208,26 @@
 }  // anonymous namespace
 
 // static
-bool DownloadQuery::MatchesQuery(const std::vector<base::string16>& query_terms,
+bool DownloadQuery::MatchesQuery(const std::vector<std::u16string>& query_terms,
                                  const DownloadItem& item) {
   if (query_terms.empty())
     return true;
 
-  base::string16 original_url_raw(
+  std::u16string original_url_raw(
       base::UTF8ToUTF16(item.GetOriginalUrl().spec()));
-  base::string16 url_raw(base::UTF8ToUTF16(item.GetURL().spec()));
+  std::u16string url_raw(base::UTF8ToUTF16(item.GetURL().spec()));
   // Try to also match query with above URLs formatted in user display friendly
   // way. This will unescape characters (including spaces) and trim all extra
   // data (like username and password) from raw url so that for example raw url
   // "http://some.server.org/example%20download/file.zip" will be matched with
   // search term "example download".
-  base::string16 original_url_formatted(
+  std::u16string original_url_formatted(
       url_formatter::FormatUrl(item.GetOriginalUrl()));
-  base::string16 url_formatted(url_formatter::FormatUrl(item.GetURL()));
-  base::string16 path(item.GetTargetFilePath().LossyDisplayName());
+  std::u16string url_formatted(url_formatter::FormatUrl(item.GetURL()));
+  std::u16string path(item.GetTargetFilePath().LossyDisplayName());
 
   for (auto it = query_terms.begin(); it != query_terms.end(); ++it) {
-    base::string16 term = base::i18n::ToLower(*it);
+    std::u16string term = base::i18n::ToLower(*it);
     if (!base::i18n::StringSearchIgnoringCaseAndAccents(
             term, original_url_raw, NULL, NULL) &&
         !base::i18n::StringSearchIgnoringCaseAndAccents(
@@ -276,7 +278,7 @@
     case FILTER_EXISTS:
       return AddFilter(BuildFilter<bool>(value, EQ, &GetExists));
     case FILTER_FILENAME:
-      return AddFilter(BuildFilter<base::string16>(value, EQ, &GetFilename));
+      return AddFilter(BuildFilter<std::u16string>(value, EQ, &GetFilename));
     case FILTER_FILENAME_REGEX:
       return AddFilter(BuildRegexFilter(value, &GetFilenameUTF8));
     case FILTER_MIME:
@@ -284,7 +286,7 @@
     case FILTER_PAUSED:
       return AddFilter(BuildFilter<bool>(value, EQ, &IsPaused));
     case FILTER_QUERY: {
-      std::vector<base::string16> query_terms;
+      std::vector<std::u16string> query_terms;
       return GetAs(value, &query_terms) &&
              (query_terms.empty() ||
               AddFilter(base::BindRepeating(&MatchesQuery, query_terms)));
@@ -406,7 +408,7 @@
       break;
     case SORT_FILENAME:
       sorters_.push_back(
-          Sorter::Build<base::string16>(direction, &GetFilename));
+          Sorter::Build<std::u16string>(direction, &GetFilename));
       break;
     case SORT_DANGER:
       sorters_.push_back(Sorter::Build<DownloadDangerType>(
diff --git a/chrome/browser/download/download_query.h b/chrome/browser/download/download_query.h
index 33a2bfdf..25275fcb 100644
--- a/chrome/browser/download/download_query.h
+++ b/chrome/browser/download/download_query.h
@@ -63,7 +63,7 @@
     FILTER_FILENAME_REGEX,       // string
     FILTER_MIME,                 // string
     FILTER_PAUSED,               // bool
-    FILTER_QUERY,                // vector<base::string16>
+    FILTER_QUERY,                // vector<std::u16string>
     FILTER_STARTED_AFTER,        // string
     FILTER_STARTED_BEFORE,       // string
     FILTER_START_TIME,           // string
@@ -97,7 +97,7 @@
     DESCENDING,
   };
 
-  static bool MatchesQuery(const std::vector<base::string16>& query_terms,
+  static bool MatchesQuery(const std::vector<std::u16string>& query_terms,
                            const download::DownloadItem& item);
 
   DownloadQuery();
diff --git a/chrome/browser/download/download_query_unittest.cc b/chrome/browser/download/download_query_unittest.cc
index 137c234e7..ae229e3 100644
--- a/chrome/browser/download/download_query_unittest.cc
+++ b/chrome/browser/download/download_query_unittest.cc
@@ -143,10 +143,11 @@
   CHECK(query_.AddFilter(name, base::Value(cpp_value)));
 }
 
-template<> void DownloadQueryTest::AddFilter(
-    DownloadQuery::FilterType name, std::vector<base::string16> cpp_value) {
+template <>
+void DownloadQueryTest::AddFilter(DownloadQuery::FilterType name,
+                                  std::vector<std::u16string> cpp_value) {
   std::unique_ptr<base::ListValue> list(new base::ListValue());
-  for (std::vector<base::string16>::const_iterator it = cpp_value.begin();
+  for (std::vector<std::u16string>::const_iterator it = cpp_value.begin();
        it != cpp_value.end(); ++it) {
     list->AppendString(*it);
   }
diff --git a/chrome/browser/download/download_shelf_context_menu.cc b/chrome/browser/download/download_shelf_context_menu.cc
index 8ef7463..7efa4641 100644
--- a/chrome/browser/download/download_shelf_context_menu.cc
+++ b/chrome/browser/download/download_shelf_context_menu.cc
@@ -109,7 +109,7 @@
   return false;
 }
 
-base::string16 DownloadShelfContextMenu::GetLabelForCommandId(
+std::u16string DownloadShelfContextMenu::GetLabelForCommandId(
     int command_id) const {
   int id = -1;
 
diff --git a/chrome/browser/download/download_shelf_context_menu.h b/chrome/browser/download/download_shelf_context_menu.h
index 0f6bc41..57bbc1e 100644
--- a/chrome/browser/download/download_shelf_context_menu.h
+++ b/chrome/browser/download/download_shelf_context_menu.h
@@ -43,7 +43,7 @@
   bool IsCommandIdVisible(int command_id) const override;
   void ExecuteCommand(int command_id, int event_flags) override;
   bool IsItemForCommandIdDynamic(int command_id) const override;
-  base::string16 GetLabelForCommandId(int command_id) const override;
+  std::u16string GetLabelForCommandId(int command_id) const override;
 
  private:
   // Detaches self from |download_item_|. Called when the DownloadItem is
diff --git a/chrome/browser/download/download_target_determiner_unittest.cc b/chrome/browser/download/download_target_determiner_unittest.cc
index ed9cc28..418edf2 100644
--- a/chrome/browser/download/download_target_determiner_unittest.cc
+++ b/chrome/browser/download/download_target_determiner_unittest.cc
@@ -2467,10 +2467,8 @@
     content::WebPluginMimeType plugin_mime_type(mime_type,
                                                 extension,
                                                 "Test file");
-    content::WebPluginInfo plugin_info(base::string16(),
-                                       path,
-                                       base::string16(),
-                                       base::string16());
+    content::WebPluginInfo plugin_info(std::u16string(), path, std::u16string(),
+                                       std::u16string());
     plugin_info.mime_types.push_back(plugin_mime_type);
     plugin_info.type = type;
 
diff --git a/chrome/browser/download/download_ui_model.cc b/chrome/browser/download/download_ui_model.cc
index dbf4534..558318c 100644
--- a/chrome/browser/download/download_ui_model.cc
+++ b/chrome/browser/download/download_ui_model.cc
@@ -40,9 +40,9 @@
 
 // TODO(qinmin): Migrate this description generator to OfflineItemUtils once
 // that component gets used to build desktop UI.
-base::string16 FailStateMessage(FailState fail_state) {
+std::u16string FailStateMessage(FailState fail_state) {
   int string_id = IDS_DOWNLOAD_INTERRUPTED_STATUS;
-  base::string16 status_text;
+  std::u16string status_text;
 
   switch (fail_state) {
     case FailState::FILE_ACCESS_DENIED:
@@ -167,13 +167,13 @@
   return false;
 }
 
-base::string16 DownloadUIModel::GetProgressSizesString() const {
-  base::string16 size_ratio;
+std::u16string DownloadUIModel::GetProgressSizesString() const {
+  std::u16string size_ratio;
   int64_t size = GetCompletedBytes();
   int64_t total = GetTotalBytes();
   if (total > 0) {
     ui::DataUnits amount_units = ui::GetByteDisplayUnits(total);
-    base::string16 simple_size =
+    std::u16string simple_size =
         ui::FormatBytesWithUnits(size, amount_units, false);
 
     // In RTL locales, we render the text "size/total" in an RTL context. This
@@ -181,7 +181,7 @@
     // as "MB 123/456" because it ends with an LTR run. In order to solve this,
     // we mark the total string as an LTR string if the UI layout is
     // right-to-left so that the string "456 MB" is treated as an LTR run.
-    base::string16 simple_total =
+    std::u16string simple_total =
         base::i18n::GetDisplayStringInLTRDirectionality(
             ui::FormatBytesWithUnits(total, amount_units, true));
     size_ratio = l10n_util::GetStringFUTF16(IDS_DOWNLOAD_STATUS_SIZES,
@@ -192,22 +192,22 @@
   return size_ratio;
 }
 
-base::string16 DownloadUIModel::GetInterruptReasonText() const {
+std::u16string DownloadUIModel::GetInterruptReasonText() const {
   if (GetState() != DownloadItem::INTERRUPTED ||
       GetLastFailState() == FailState::USER_CANCELED) {
-    return base::string16();
+    return std::u16string();
   }
   return FailStateMessage(GetLastFailState());
 }
 
-base::string16 DownloadUIModel::GetStatusText() const {
+std::u16string DownloadUIModel::GetStatusText() const {
   switch (GetState()) {
     case DownloadItem::IN_PROGRESS:
       return GetInProgressStatusString();
     case DownloadItem::COMPLETE:
       return GetFileExternallyRemoved()
                  ? l10n_util::GetStringUTF16(IDS_DOWNLOAD_STATUS_REMOVED)
-                 : base::string16();
+                 : std::u16string();
     case DownloadItem::INTERRUPTED: {
       const FailState fail_state = GetLastFailState();
       if (fail_state != FailState::USER_CANCELED) {
@@ -221,12 +221,12 @@
       return l10n_util::GetStringUTF16(IDS_DOWNLOAD_STATUS_CANCELLED);
     case DownloadItem::MAX_DOWNLOAD_STATE:
       NOTREACHED();
-      return base::string16();
+      return std::u16string();
   }
 }
 
-base::string16 DownloadUIModel::GetTooltipText() const {
-  base::string16 tooltip = GetFileNameToReportUser().LossyDisplayName();
+std::u16string DownloadUIModel::GetTooltipText() const {
+  std::u16string tooltip = GetFileNameToReportUser().LossyDisplayName();
   if (GetState() == DownloadItem::INTERRUPTED &&
       GetLastFailState() != FailState::USER_CANCELED) {
     tooltip += base::ASCIIToUTF16("\n") +
@@ -235,7 +235,7 @@
   return tooltip;
 }
 
-base::string16 DownloadUIModel::GetWarningText(const base::string16& filename,
+std::u16string DownloadUIModel::GetWarningText(const std::u16string& filename,
                                                size_t* offset) const {
   *offset = std::string::npos;
   switch (GetDangerType()) {
@@ -309,10 +309,10 @@
       break;
   }
 
-  return base::string16();
+  return std::u16string();
 }
 
-base::string16 DownloadUIModel::GetWarningConfirmButtonText() const {
+std::u16string DownloadUIModel::GetWarningConfirmButtonText() const {
   const auto kDangerousFile = download::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE;
   return l10n_util::GetStringUTF16(
       (GetDangerType() == kDangerousFile && IsExtensionDownload())
@@ -330,8 +330,8 @@
   return nullptr;
 }
 
-base::string16 DownloadUIModel::GetTabProgressStatusText() const {
-  return base::string16();
+std::u16string DownloadUIModel::GetTabProgressStatusText() const {
+  return std::u16string();
 }
 
 int64_t DownloadUIModel::GetCompletedBytes() const {
@@ -636,7 +636,7 @@
   return false;
 }
 
-base::string16 DownloadUIModel::GetInProgressStatusString() const {
+std::u16string DownloadUIModel::GetInProgressStatusString() const {
   DCHECK_EQ(DownloadItem::IN_PROGRESS, GetState());
 
   TimeDelta time_remaining;
@@ -644,7 +644,7 @@
   bool time_remaining_known = (!IsPaused() && TimeRemaining(&time_remaining));
 
   // Indication of progress. (E.g.:"100/200 MB" or "100MB")
-  base::string16 size_ratio = GetProgressSizesString();
+  std::u16string size_ratio = GetProgressSizesString();
 
   // The download is a CRX (app, extension, theme, ...) and it is being unpacked
   // and validated.
diff --git a/chrome/browser/download/download_ui_model.h b/chrome/browser/download/download_ui_model.h
index 59dfc29..53fab1c 100644
--- a/chrome/browser/download/download_ui_model.h
+++ b/chrome/browser/download/download_ui_model.h
@@ -59,14 +59,14 @@
   // "100/200 MB" where the numerator is the transferred size and the
   // denominator is the total size. If the total isn't known, returns the
   // transferred size as a string (e.g.: "100 MB").
-  base::string16 GetProgressSizesString() const;
+  std::u16string GetProgressSizesString() const;
 
   // Returns a long descriptive string for a download that's in the INTERRUPTED
   // state. For other downloads, the returned string will be empty.
-  base::string16 GetInterruptReasonText() const;
+  std::u16string GetInterruptReasonText() const;
 
   // Returns a short one-line status string for the download.
-  base::string16 GetStatusText() const;
+  std::u16string GetStatusText() const;
 
   // Returns a string suitable for use as a tooltip. For a regular download, the
   // tooltip is the filename. For an interrupted download, the string states the
@@ -74,17 +74,17 @@
   // example:
   //    Report.pdf
   //    Network disconnected
-  base::string16 GetTooltipText() const;
+  std::u16string GetTooltipText() const;
 
   // Get the warning text to display for a dangerous download. |filename| is the
   // (possibly-elided) filename; if it is present in the resulting string,
   // |offset| will be set to the starting position of the filename.
-  base::string16 GetWarningText(const base::string16& filename,
+  std::u16string GetWarningText(const std::u16string& filename,
                                 size_t* offset) const;
 
   // Get the caption text for a button for confirming a dangerous download
   // warning.
-  base::string16 GetWarningConfirmButtonText() const;
+  std::u16string GetWarningConfirmButtonText() const;
 
   // Returns the profile associated with this download.
   virtual Profile* profile() const;
@@ -94,7 +94,7 @@
 
   // Returns the localized status text for an in-progress download. This
   // is the progress status used in the WebUI interface.
-  virtual base::string16 GetTabProgressStatusText() const;
+  virtual std::u16string GetTabProgressStatusText() const;
 
   // Get the number of bytes that has completed so far.
   virtual int64_t GetCompletedBytes() const;
@@ -325,7 +325,7 @@
 
  private:
   // Returns a string indicating the status of an in-progress download.
-  base::string16 GetInProgressStatusString() const;
+  std::u16string GetInProgressStatusString() const;
 
   DISALLOW_COPY_AND_ASSIGN(DownloadUIModel);
 };
diff --git a/chrome/browser/download/notification/download_item_notification.cc b/chrome/browser/download/notification/download_item_notification.cc
index b847cd3..01c599d 100644
--- a/chrome/browser/download/notification/download_item_notification.cc
+++ b/chrome/browser/download/notification/download_item_notification.cc
@@ -216,8 +216,8 @@
 
   notification_ = std::make_unique<message_center::Notification>(
       message_center::NOTIFICATION_TYPE_PROGRESS, GetNotificationId(),
-      base::string16(),  // title
-      base::string16(),  // body
+      std::u16string(),  // title
+      std::u16string(),  // body
       gfx::Image(),      // icon
       l10n_util::GetStringUTF16(
           IDS_DOWNLOAD_NOTIFICATION_DISPLAY_SOURCE),  // display_source
@@ -301,7 +301,7 @@
 
 void DownloadItemNotification::Click(
     const base::Optional<int>& button_index,
-    const base::Optional<base::string16>& reply) {
+    const base::Optional<std::u16string>& reply) {
   if (!item_)
     return;
 
@@ -700,8 +700,8 @@
   return actions;
 }
 
-base::string16 DownloadItemNotification::GetTitle() const {
-  base::string16 title_text;
+std::u16string DownloadItemNotification::GetTitle() const {
+  std::u16string title_text;
 
   if (item_->IsDangerous()) {
     if (item_->MightBeMalicious() &&
@@ -719,7 +719,7 @@
     return l10n_util::GetStringUTF16(IDS_PROMPT_BLOCKED_MIXED_DOWNLOAD_TITLE);
   }
 
-  base::string16 file_name =
+  std::u16string file_name =
       item_->GetFileNameToReportUser().LossyDisplayName();
   if (IsScanning()) {
     return l10n_util::GetStringFUTF16(IDS_DOWNLOAD_STATUS_SCAN_TITLE,
@@ -754,7 +754,7 @@
   return title_text;
 }
 
-base::string16 DownloadItemNotification::GetCommandLabel(
+std::u16string DownloadItemNotification::GetCommandLabel(
     DownloadCommands::Command command) const {
   int id = -1;
   switch (command) {
@@ -805,16 +805,16 @@
     case DownloadCommands::BYPASS_DEEP_SCANNING:
       // Only for menu.
       NOTREACHED();
-      return base::string16();
+      return std::u16string();
   }
   CHECK(id != -1);
   return l10n_util::GetStringUTF16(id);
 }
 
-base::string16 DownloadItemNotification::GetWarningStatusString() const {
+std::u16string DownloadItemNotification::GetWarningStatusString() const {
   // Should only be called if IsDangerous() or IsMixedContent().
   DCHECK(item_->IsDangerous() || item_->IsMixedContent());
-  base::string16 elided_filename =
+  std::u16string elided_filename =
       item_->GetFileNameToReportUser().LossyDisplayName();
   // If mixed content, that warning is shown first.
   if (item_->IsMixedContent()) {
@@ -884,10 +884,10 @@
     }
   }
   NOTREACHED();
-  return base::string16();
+  return std::u16string();
 }
 
-base::string16 DownloadItemNotification::GetInProgressSubStatusString() const {
+std::u16string DownloadItemNotification::GetInProgressSubStatusString() const {
   // "Paused"
   if (item_->IsPaused())
     return l10n_util::GetStringUTF16(IDS_DOWNLOAD_PROGRESS_PAUSED);
@@ -928,7 +928,7 @@
   return l10n_util::GetStringUTF16(IDS_DOWNLOAD_STATUS_STARTING);
 }
 
-base::string16 DownloadItemNotification::GetSubStatusString() const {
+std::u16string DownloadItemNotification::GetSubStatusString() const {
   if (item_->IsMixedContent() || item_->IsDangerous())
     return GetWarningStatusString();
 
@@ -954,7 +954,7 @@
       if (item_->GetFileExternallyRemoved()) {
         return l10n_util::GetStringUTF16(IDS_DOWNLOAD_STATUS_REMOVED);
       } else {
-        base::string16 file_name =
+        std::u16string file_name =
             item_->GetFileNameToReportUser().LossyDisplayName();
         base::i18n::AdjustStringForLocaleDirection(&file_name);
         return file_name;
@@ -966,7 +966,7 @@
       FailState fail_state = item_->GetLastFailState();
       if (fail_state != FailState::USER_CANCELED) {
         // "Failed - <REASON>"
-        base::string16 interrupt_reason = item_->GetInterruptReasonText();
+        std::u16string interrupt_reason = item_->GetInterruptReasonText();
         DCHECK(!interrupt_reason.empty());
         return l10n_util::GetStringFUTF16(IDS_DOWNLOAD_STATUS_INTERRUPTED,
                                           interrupt_reason);
@@ -979,19 +979,19 @@
       NOTREACHED();
   }
 
-  return base::string16();
+  return std::u16string();
 }
 
-base::string16 DownloadItemNotification::GetStatusString() const {
+std::u16string DownloadItemNotification::GetStatusString() const {
   if (item_->IsDangerous() || item_->IsMixedContent())
-    return base::string16();
+    return std::u16string();
 
   if (IsScanning()) {
     return l10n_util::GetStringUTF16(IDS_PROMPT_DEEP_SCANNING_DOWNLOAD_SHORT);
   }
 
   // The hostname. (E.g.:"example.com" or "127.0.0.1")
-  base::string16 host_name = url_formatter::FormatUrlForSecurityDisplay(
+  std::u16string host_name = url_formatter::FormatUrlForSecurityDisplay(
       item_->GetURL(), url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS);
 
   bool show_size_ratio = true;
@@ -1010,7 +1010,7 @@
       } else {
         // Otherwise, the download should be completed.
         // "3.4 MB from example.com"
-        base::string16 size = ui::FormatBytes(item_->GetCompletedBytes());
+        std::u16string size = ui::FormatBytes(item_->GetCompletedBytes());
         return l10n_util::GetStringFUTF16(
             IDS_DOWNLOAD_NOTIFICATION_STATUS_COMPLETED, size, host_name);
       }
@@ -1021,7 +1021,7 @@
 
   // Indication of progress (E.g.:"100/200 MB" or "100 MB"), or just the
   // received bytes if the |show_size_ratio| flag is false.
-  base::string16 size = show_size_ratio
+  std::u16string size = show_size_ratio
                             ? item_->GetProgressSizesString()
                             : ui::FormatBytes(item_->GetCompletedBytes());
 
diff --git a/chrome/browser/download/notification/download_item_notification.h b/chrome/browser/download/notification/download_item_notification.h
index 84f34401..6f9de05 100644
--- a/chrome/browser/download/notification/download_item_notification.h
+++ b/chrome/browser/download/notification/download_item_notification.h
@@ -63,7 +63,7 @@
   // NotificationObserver:
   void Close(bool by_user) override;
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
 
   void ShutDown();
 
@@ -94,25 +94,25 @@
   void OnDecodeImageFailed() override;
 
   // Returns a short one-line status string for the download.
-  base::string16 GetTitle() const;
+  std::u16string GetTitle() const;
 
   // Returns a short one-line status string for a download command.
-  base::string16 GetCommandLabel(DownloadCommands::Command command) const;
+  std::u16string GetCommandLabel(DownloadCommands::Command command) const;
 
   // Get the warning text to notify a dangerous download. Should only be called
   // if IsDangerous() is true.
-  base::string16 GetWarningStatusString() const;
+  std::u16string GetWarningStatusString() const;
 
   // Get the sub status text of the current in-progress download status. Should
   // be called only for downloads in progress.
-  base::string16 GetInProgressSubStatusString() const;
+  std::u16string GetInProgressSubStatusString() const;
 
   // Get the sub status text. Can be called for downloads in all states.
   // If the state does not have sub status string, it returns empty string.
-  base::string16 GetSubStatusString() const;
+  std::u16string GetSubStatusString() const;
 
   // Get the status text.
-  base::string16 GetStatusString() const;
+  std::u16string GetStatusString() const;
 
   bool IsScanning() const;
   bool AllowedToOpenWhileScanning() const;
diff --git a/chrome/browser/download/offline_item_utils.cc b/chrome/browser/download/offline_item_utils.cc
index be7ed86..351fa17 100644
--- a/chrome/browser/download/offline_item_utils.cc
+++ b/chrome/browser/download/offline_item_utils.cc
@@ -230,7 +230,7 @@
 }
 
 // static
-base::string16 OfflineItemUtils::GetFailStateMessage(FailState fail_state) {
+std::u16string OfflineItemUtils::GetFailStateMessage(FailState fail_state) {
   int string_id = IDS_DOWNLOAD_INTERRUPTED_STATUS;
 
   switch (fail_state) {
diff --git a/chrome/browser/download/offline_item_utils.h b/chrome/browser/download/offline_item_utils.h
index b926148..60b70a9 100644
--- a/chrome/browser/download/offline_item_utils.h
+++ b/chrome/browser/download/offline_item_utils.h
@@ -40,7 +40,7 @@
       offline_items_collection::FailState fail_state);
 
   // Gets the short text to display for a offline_items_collection::FailState.
-  static base::string16 GetFailStateMessage(
+  static std::u16string GetFailStateMessage(
       offline_items_collection::FailState fail_state);
 
   // Converts download::DownloadItem::DownloadRenameResult to
diff --git a/chrome/browser/download/save_package_file_picker.cc b/chrome/browser/download/save_package_file_picker.cc
index 247470d..6ecbe21 100644
--- a/chrome/browser/download/save_package_file_picker.cc
+++ b/chrome/browser/download/save_package_file_picker.cc
@@ -235,14 +235,10 @@
     select_file_dialog_ = ui::SelectFileDialog::Create(
         this, std::make_unique<ChromeSelectFilePolicy>(web_contents));
     select_file_dialog_->SelectFile(
-        ui::SelectFileDialog::SELECT_SAVEAS_FILE,
-        base::string16(),
-        suggested_path_copy,
-        &file_type_info,
-        file_type_index,
+        ui::SelectFileDialog::SELECT_SAVEAS_FILE, std::u16string(),
+        suggested_path_copy, &file_type_info, file_type_index,
         default_extension_copy,
-        platform_util::GetTopLevel(web_contents->GetNativeView()),
-        NULL);
+        platform_util::GetTopLevel(web_contents->GetNativeView()), NULL);
   } else {
     // Just use 'suggested_path_copy' instead of opening the dialog prompt.
     // Go through FileSelected() for consistency.
diff --git a/chrome/browser/enterprise/connectors/analysis/analysis_service_settings.h b/chrome/browser/enterprise/connectors/analysis/analysis_service_settings.h
index 0cbae676..181c849 100644
--- a/chrome/browser/enterprise/connectors/analysis/analysis_service_settings.h
+++ b/chrome/browser/enterprise/connectors/analysis/analysis_service_settings.h
@@ -100,7 +100,7 @@
   bool block_large_files_ = false;
   bool block_unsupported_file_types_ = false;
   size_t minimum_data_size_ = 100;
-  base::string16 custom_message_text_;
+  std::u16string custom_message_text_;
   GURL custom_message_learn_more_url_;
   std::string service_provider_name_;
 };
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc
index cc32561..d4da2ead 100644
--- a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc
+++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc
@@ -184,7 +184,7 @@
     std::fill(result_.text_results.begin(), result_.text_results.end(), true);
 
     int64_t content_size = 0;
-    for (const base::string16& entry : data_.text)
+    for (const std::u16string& entry : data_.text)
       content_size += (entry.size() * sizeof(char16_t));
 
     ReportAnalysisConnectorWarningBypass(
@@ -370,7 +370,7 @@
     BinaryUploadService::Result result,
     enterprise_connectors::ContentAnalysisResponse response) {
   int64_t content_size = 0;
-  for (const base::string16& entry : data_.text)
+  for (const std::u16string& entry : data_.text)
     content_size += (entry.size() * sizeof(char16_t));
   RecordDeepScanMetrics(access_point_,
                         base::TimeTicks::Now() - upload_start_time_,
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h
index 1c677d8e..f552b9d 100644
--- a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h
+++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.h
@@ -73,7 +73,7 @@
     GURL url;
 
     // Text data to scan, such as plain text, URLs, HTML content, etc.
-    std::vector<base::string16> text;
+    std::vector<std::u16string> text;
 
     // List of files to scan.
     std::vector<base::FilePath> paths;
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate_browsertest.cc b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate_browsertest.cc
index 0f2b4e5..cd17970 100644
--- a/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate_browsertest.cc
+++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_delegate_browsertest.cc
@@ -40,7 +40,7 @@
 
 constexpr char kUserName[] = "[email protected]";
 
-base::string16 text() {
+std::u16string text() {
   return base::UTF8ToUTF16(std::string(100, 'a'));
 }
 
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.cc b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.cc
index 1bff31b..c80aa31 100644
--- a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.cc
+++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.cc
@@ -221,8 +221,8 @@
   Show();
 }
 
-base::string16 ContentAnalysisDialog::GetWindowTitle() const {
-  return base::string16();
+std::u16string ContentAnalysisDialog::GetWindowTitle() const {
+  return std::u16string();
 }
 
 void ContentAnalysisDialog::AcceptButtonCallback() {
@@ -360,7 +360,7 @@
 
 void ContentAnalysisDialog::ShowResult(
     ContentAnalysisDelegate::FinalResult result,
-    const base::string16& custom_message,
+    const std::u16string& custom_message,
     const GURL& learn_more_url) {
   DCHECK(is_pending());
   final_result_ = result;
@@ -429,7 +429,7 @@
 
   // Update the message's text, and send an alert for screen readers since the
   // text changed.
-  base::string16 new_message = GetDialogMessage();
+  std::u16string new_message = GetDialogMessage();
   message_->SetText(new_message);
   message_->GetViewAccessibility().AnnounceText(std::move(new_message));
 
@@ -547,7 +547,7 @@
   }
 }
 
-base::string16 ContentAnalysisDialog::GetDialogMessage() const {
+std::u16string ContentAnalysisDialog::GetDialogMessage() const {
   switch (dialog_status_) {
     case DeepScanningDialogStatus::PENDING:
       return GetPendingMessage();
@@ -560,7 +560,7 @@
   }
 }
 
-base::string16 ContentAnalysisDialog::GetCancelButtonText() const {
+std::u16string ContentAnalysisDialog::GetCancelButtonText() const {
   int text_id;
   switch (dialog_status_) {
     case DeepScanningDialogStatus::SUCCESS:
@@ -579,7 +579,7 @@
   return l10n_util::GetStringUTF16(text_id);
 }
 
-base::string16 ContentAnalysisDialog::GetBypassWarningButtonText() const {
+std::u16string ContentAnalysisDialog::GetBypassWarningButtonText() const {
   DCHECK(is_warning());
   return l10n_util::GetStringUTF16(IDS_DEEP_SCANNING_DIALOG_PROCEED_BUTTON);
 }
@@ -660,13 +660,13 @@
   return use_dark ? IDR_UPLOAD_VIOLATION_DARK : IDR_UPLOAD_VIOLATION;
 }
 
-base::string16 ContentAnalysisDialog::GetPendingMessage() const {
+std::u16string ContentAnalysisDialog::GetPendingMessage() const {
   DCHECK(is_pending());
   return l10n_util::GetPluralStringFUTF16(
       IDS_DEEP_SCANNING_DIALOG_UPLOAD_PENDING_MESSAGE, files_count_);
 }
 
-base::string16 ContentAnalysisDialog::GetFailureMessage() const {
+std::u16string ContentAnalysisDialog::GetFailureMessage() const {
   DCHECK(is_failure());
 
   // If the admin has specified a custom message for this failure, it takes
@@ -688,7 +688,7 @@
       IDS_DEEP_SCANNING_DIALOG_UPLOAD_FAILURE_MESSAGE, files_count_);
 }
 
-base::string16 ContentAnalysisDialog::GetWarningMessage() const {
+std::u16string ContentAnalysisDialog::GetWarningMessage() const {
   DCHECK(is_warning());
 
   // If the admin has specified a custom message for this warning, it takes
@@ -700,13 +700,13 @@
       IDS_DEEP_SCANNING_DIALOG_UPLOAD_WARNING_MESSAGE, files_count_);
 }
 
-base::string16 ContentAnalysisDialog::GetSuccessMessage() const {
+std::u16string ContentAnalysisDialog::GetSuccessMessage() const {
   DCHECK(is_success());
   return l10n_util::GetPluralStringFUTF16(
       IDS_DEEP_SCANNING_DIALOG_SUCCESS_MESSAGE, files_count_);
 }
 
-base::string16 ContentAnalysisDialog::GetCustomMessage() const {
+std::u16string ContentAnalysisDialog::GetCustomMessage() const {
   DCHECK(is_warning() || is_failure());
   DCHECK(has_custom_message());
   return l10n_util::GetStringFUTF16(IDS_DEEP_SCANNING_DIALOG_CUSTOM_MESSAGE,
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.h b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.h
index b13294c..1e66c1c 100644
--- a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.h
+++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.h
@@ -112,7 +112,7 @@
                         int files_count);
 
   // views::DialogDelegate:
-  base::string16 GetWindowTitle() const override;
+  std::u16string GetWindowTitle() const override;
   bool ShouldShowCloseButton() const override;
   views::View* GetContentsView() override;
   views::Widget* GetWidget() override;
@@ -125,7 +125,7 @@
   // Updates the dialog with the result, and simply delete it from memory if
   // nothing should be shown.
   void ShowResult(ContentAnalysisDelegate::FinalResult result,
-                  const base::string16& custom_message,
+                  const std::u16string& custom_message,
                   const GURL& learn_more_url);
 
   // Accessors to simplify |dialog_status_| checking.
@@ -185,13 +185,13 @@
   std::unique_ptr<views::View> CreateSideIcon();
 
   // Returns the appropriate dialog message depending on |dialog_status_|.
-  base::string16 GetDialogMessage() const;
+  std::u16string GetDialogMessage() const;
 
   // Returns the text for the Cancel button depending on |dialog_status_|.
-  base::string16 GetCancelButtonText() const;
+  std::u16string GetCancelButtonText() const;
 
   // Returns the text for the Ok button for the warning case.
-  base::string16 GetBypassWarningButtonText() const;
+  std::u16string GetBypassWarningButtonText() const;
 
   // Returns the appropriate paste top image ID depending on |dialog_status_|.
   int GetPasteImageId(bool use_dark) const;
@@ -200,19 +200,19 @@
   int GetUploadImageId(bool use_dark) const;
 
   // Returns the appropriate pending message depending on |files_count_|.
-  base::string16 GetPendingMessage() const;
+  std::u16string GetPendingMessage() const;
 
   // Returns the appropriate failure message depending on |final_result_| and
   // |files_count_|.
-  base::string16 GetFailureMessage() const;
+  std::u16string GetFailureMessage() const;
 
   // Returns the appropriate warning message depending on |files_count_|.
-  base::string16 GetWarningMessage() const;
+  std::u16string GetWarningMessage() const;
 
   // Returns the appropriate success message depending on |files_count_|.
-  base::string16 GetSuccessMessage() const;
+  std::u16string GetSuccessMessage() const;
 
-  base::string16 GetCustomMessage() const;
+  std::u16string GetCustomMessage() const;
 
   // Show the dialog. Sets |shown_| to true.
   void Show();
@@ -247,7 +247,7 @@
   // Used to show the appropriate message.
   ContentAnalysisDelegate::FinalResult final_result_ =
       ContentAnalysisDelegate::FinalResult::SUCCESS;
-  base::string16 final_custom_message_;
+  std::u16string final_custom_message_;
   GURL final_learn_more_url_;
 
   // Used to animate dialog height changes.
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog_browsertest.cc b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog_browsertest.cc
index 8123f45..75937c19 100644
--- a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog_browsertest.cc
+++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog_browsertest.cc
@@ -72,7 +72,7 @@
   }]
 })";
 
-base::string16 text() {
+std::u16string text() {
   return base::UTF8ToUTF16(std::string(100, 'a'));
 }
 
@@ -343,8 +343,8 @@
                        base::TimeTicks timestamp) override {
     // The dialog initially shows the pending message for the appropriate access
     // point and scan type.
-    base::string16 pending_message = dialog->GetMessageForTesting()->GetText();
-    base::string16 expected_message = l10n_util::GetPluralStringFUTF16(
+    std::u16string pending_message = dialog->GetMessageForTesting()->GetText();
+    std::u16string expected_message = l10n_util::GetPluralStringFUTF16(
         IDS_DEEP_SCANNING_DIALOG_UPLOAD_PENDING_MESSAGE, file_scan() ? 1 : 0);
     ASSERT_EQ(pending_message, expected_message);
 
@@ -379,8 +379,8 @@
                      ContentAnalysisDelegate::FinalResult result) override {
     // The dialog shows the failure or success message for the appropriate
     // access point and scan type.
-    base::string16 final_message = dialog->GetMessageForTesting()->GetText();
-    base::string16 expected_message = GetExpectedMessage();
+    std::u16string final_message = dialog->GetMessageForTesting()->GetText();
+    std::u16string expected_message = GetExpectedMessage();
 
     ASSERT_EQ(final_message, expected_message);
 
@@ -415,7 +415,7 @@
     ASSERT_FALSE(dialog->GetSideIconSpinnerForTesting());
   }
 
-  virtual base::string16 GetExpectedMessage() {
+  virtual std::u16string GetExpectedMessage() {
     int files_count = file_scan() ? 1 : 0;
     return success()
                ? l10n_util::GetPluralStringFUTF16(
@@ -445,7 +445,7 @@
 class ContentAnalysisDialogCustomMessageAppearanceBrowserTest
     : public ContentAnalysisDialogAppearanceBrowserTest {
  private:
-  base::string16 GetExpectedMessage() override {
+  std::u16string GetExpectedMessage() override {
     int files_count = file_scan() ? 1 : 0;
     return success()
                ? l10n_util::GetPluralStringFUTF16(
diff --git a/chrome/browser/enterprise/connectors/common.h b/chrome/browser/enterprise/connectors/common.h
index ecfa02552..126465c 100644
--- a/chrome/browser/enterprise/connectors/common.h
+++ b/chrome/browser/enterprise/connectors/common.h
@@ -69,7 +69,7 @@
   bool block_password_protected_files = false;
   bool block_large_files = false;
   bool block_unsupported_file_types = false;
-  base::string16 custom_message_text;
+  std::u16string custom_message_text;
   GURL custom_message_learn_more_url;
 
   // Minimum text size for BulkDataEntry scans. 0 means no minimum.
diff --git a/chrome/browser/enterprise/reporting/browser_report_generator_unittest.cc b/chrome/browser/enterprise/reporting/browser_report_generator_unittest.cc
index f333628..09cfc0d 100644
--- a/chrome/browser/enterprise/reporting/browser_report_generator_unittest.cc
+++ b/chrome/browser/enterprise/reporting/browser_report_generator_unittest.cc
@@ -74,7 +74,7 @@
   void InitializeProfile() {
     profile_manager_.profile_attributes_storage()->AddProfile(
         profile_manager()->profiles_dir().AppendASCII(kProfileId),
-        base::ASCIIToUTF16(kProfileName), std::string(), base::string16(),
+        base::ASCIIToUTF16(kProfileName), std::string(), std::u16string(),
         false, 0, std::string(), EmptyAccountId());
   }
 
diff --git a/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.cc b/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.cc
index 9237130..813e47c 100644
--- a/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.cc
+++ b/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.cc
@@ -64,9 +64,9 @@
 
   callback_ = std::move(callback);
 
-  const base::string16 title = l10n_util::GetPluralStringFUTF16(
+  const std::u16string title = l10n_util::GetPluralStringFUTF16(
       kNotificationTitles[notify_type_], extension_ids_.size());
-  const base::string16 body = l10n_util::GetPluralStringFUTF16(
+  const std::u16string body = l10n_util::GetPluralStringFUTF16(
       kNotificationBodies[notify_type_], extension_ids_.size());
   GURL original_url("https://chrome.google.com/webstore");
   gfx::Image icon(gfx::CreateVectorIcon(
@@ -76,7 +76,7 @@
 
   notification_ = std::make_unique<message_center::Notification>(
       message_center::NOTIFICATION_TYPE_SIMPLE, kNotificationIds[notify_type_],
-      title, body, icon, /*source=*/base::string16(), original_url,
+      title, body, icon, /*source=*/std::u16string(), original_url,
       message_center::NotifierId(message_center::NotifierType::APPLICATION,
                                  kExtensionRequestNotifierId),
       message_center::RichNotificationData(),
@@ -96,7 +96,7 @@
 
 void ExtensionRequestNotification::Click(
     const base::Optional<int>& button_index,
-    const base::Optional<base::string16>& reply) {
+    const base::Optional<std::u16string>& reply) {
   for (const std::string& extension_id : extension_ids_) {
     NavigateParams params(profile_, GURL(kChromeWebstoreUrl + extension_id),
                           ui::PAGE_TRANSITION_LINK);
diff --git a/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.h b/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.h
index 1c23b450..948471b2 100644
--- a/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.h
+++ b/chrome/browser/enterprise/reporting/extension_request/extension_request_notification.h
@@ -42,7 +42,7 @@
  private:
   // message_center::NotificationObserver
   void Click(const base::Optional<int>& button_index,
-             const base::Optional<base::string16>& reply) override;
+             const base::Optional<std::u16string>& reply) override;
   void Close(bool by_user) override;
 
   std::unique_ptr<message_center::Notification> notification_;
diff --git a/chrome/browser/enterprise/reporting/extension_request/extension_request_notification_unittest.cc b/chrome/browser/enterprise/reporting/extension_request/extension_request_notification_unittest.cc
index 85db284..a90ca2b 100644
--- a/chrome/browser/enterprise/reporting/extension_request/extension_request_notification_unittest.cc
+++ b/chrome/browser/enterprise/reporting/extension_request/extension_request_notification_unittest.cc
@@ -105,7 +105,7 @@
       close_run_loop.QuitClosure());
   display_service_tester_->SimulateClick(
       NotificationHandler::Type::TRANSIENT, kNotificationIds[GetNotifyType()],
-      base::Optional<int>(), base::Optional<base::string16>());
+      base::Optional<int>(), base::Optional<std::u16string>());
   close_run_loop.Run();
 
   EXPECT_FALSE(GetNotification().has_value());
diff --git a/chrome/browser/enterprise/reporting/extension_request/extension_request_observer_unittest.cc b/chrome/browser/enterprise/reporting/extension_request/extension_request_observer_unittest.cc
index 68b8f516..c535597 100644
--- a/chrome/browser/enterprise/reporting/extension_request/extension_request_observer_unittest.cc
+++ b/chrome/browser/enterprise/reporting/extension_request/extension_request_observer_unittest.cc
@@ -142,7 +142,7 @@
         close_run_loop.QuitClosure());
     display_service_tester_->SimulateClick(
         NotificationHandler::Type::TRANSIENT, notification_id,
-        base::Optional<int>(), base::Optional<base::string16>());
+        base::Optional<int>(), base::Optional<std::u16string>());
     close_run_loop.Run();
 
     // Verify that only |expected_removed_requests| are removed from the pref.
diff --git a/chrome/browser/enterprise/reporting/profile_report_generator_unittest.cc b/chrome/browser/enterprise/reporting/profile_report_generator_unittest.cc
index 8136c304..df85528 100644
--- a/chrome/browser/enterprise/reporting/profile_report_generator_unittest.cc
+++ b/chrome/browser/enterprise/reporting/profile_report_generator_unittest.cc
@@ -155,7 +155,7 @@
       profile_manager()->profiles_dir().AppendASCII(kIdleProfile);
   profile_manager()->profile_attributes_storage()->AddProfile(
       profile_path, base::ASCIIToUTF16(kIdleProfile), std::string(),
-      base::string16(), false, 0, std::string(), EmptyAccountId());
+      std::u16string(), false, 0, std::string(), EmptyAccountId());
   std::unique_ptr<em::ChromeUserProfileInfo> response =
       generator_.MaybeGenerate(profile_path, kIdleProfile, ReportType::kFull);
   ASSERT_FALSE(response.get());
diff --git a/chrome/browser/enterprise/reporting/report_generator_unittest.cc b/chrome/browser/enterprise/reporting/report_generator_unittest.cc
index b20c886..e0c7abd 100644
--- a/chrome/browser/enterprise/reporting/report_generator_unittest.cc
+++ b/chrome/browser/enterprise/reporting/report_generator_unittest.cc
@@ -174,7 +174,7 @@
         case kIdle:
           profile_manager_.profile_attributes_storage()->AddProfile(
               profile_manager()->profiles_dir().AppendASCII(profile_name),
-              base::ASCIIToUTF16(profile_name), std::string(), base::string16(),
+              base::ASCIIToUTF16(profile_name), std::string(), std::u16string(),
               false, 0, std::string(), EmptyAccountId());
           break;
         case kActive:
diff --git a/chrome/browser/enterprise/reporting/report_request_queue_generator_unittest.cc b/chrome/browser/enterprise/reporting/report_request_queue_generator_unittest.cc
index 11774b4..f89e21a 100644
--- a/chrome/browser/enterprise/reporting/report_request_queue_generator_unittest.cc
+++ b/chrome/browser/enterprise/reporting/report_request_queue_generator_unittest.cc
@@ -86,7 +86,7 @@
   void CreateIdleProfile(std::string profile_name) {
     profile_manager_.profile_attributes_storage()->AddProfile(
         profile_manager()->profiles_dir().AppendASCII(profile_name),
-        base::ASCIIToUTF16(profile_name), std::string(), base::string16(),
+        base::ASCIIToUTF16(profile_name), std::string(), std::u16string(),
         false, 0, std::string(), EmptyAccountId());
   }
 
diff --git a/chrome/browser/extensions/active_tab_apitest.cc b/chrome/browser/extensions/active_tab_apitest.cc
index eadb0953..0e719bd 100644
--- a/chrome/browser/extensions/active_tab_apitest.cc
+++ b/chrome/browser/extensions/active_tab_apitest.cc
@@ -163,7 +163,7 @@
         browser(),
         embedded_test_server()->GetURL(
             "google.com", "/extensions/api_test/active_tab_cors/page.html"));
-    base::string16 title = base::ASCIIToUTF16("page");
+    std::u16string title = base::ASCIIToUTF16("page");
     content::TitleWatcher watcher(
         browser()->tab_strip_model()->GetActiveWebContents(), title);
     ASSERT_EQ(title, watcher.WaitAndGetTitle());
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc b/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc
index c9998d7..794a5372 100644
--- a/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc
+++ b/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc
@@ -53,7 +53,7 @@
 void RemoveDuplicatePhoneNumberAtIndex(size_t index,
                                        const std::string& country_code,
                                        base::ListValue* list) {
-  base::string16 new_value;
+  std::u16string new_value;
   if (!list->GetString(index, &new_value)) {
     NOTREACHED() << "List should have a value at index " << index;
     return;
@@ -65,7 +65,7 @@
     if (i == index)
       continue;
 
-    base::string16 existing_value;
+    std::u16string existing_value;
     if (!list->GetString(i, &existing_value)) {
       NOTREACHED() << "List should have a value at index " << i;
       continue;
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_util.cc b/chrome/browser/extensions/api/autofill_private/autofill_util.cc
index 22bcc27..b978bcc 100644
--- a/chrome/browser/extensions/api/autofill_private/autofill_util.cc
+++ b/chrome/browser/extensions/api/autofill_private/autofill_util.cc
@@ -38,7 +38,7 @@
     autofill::ServerFieldType type) {
   std::unique_ptr<std::vector<std::string>> list(new std::vector<std::string>);
 
-  std::vector<base::string16> values;
+  std::vector<std::u16string> values;
   if (autofill::AutofillType(type).group() == autofill::FieldTypeGroup::kName) {
     values.push_back(
         profile.GetInfo(autofill::AutofillType(type),
@@ -52,7 +52,7 @@
   if (values.size() == 1 && values.front().empty())
     return list;
 
-  for (const base::string16& value16 : values)
+  for (const std::u16string& value16 : values)
     list->push_back(base::UTF16ToUTF8(value16));
 
   return list;
@@ -68,7 +68,7 @@
 
 autofill_private::AddressEntry ProfileToAddressEntry(
     const autofill::AutofillProfile& profile,
-    const base::string16& label) {
+    const std::u16string& label) {
   autofill_private::AddressEntry address;
 
   // Add all address fields to the entry.
@@ -97,9 +97,9 @@
   address.language_code.reset(new std::string(profile.language_code()));
 
   // Parse |label| so that it can be used to create address metadata.
-  base::string16 separator =
+  std::u16string separator =
       l10n_util::GetStringUTF16(IDS_AUTOFILL_ADDRESS_SUMMARY_SEPARATOR);
-  std::vector<base::string16> label_pieces = base::SplitStringUsingSubstr(
+  std::vector<std::u16string> label_pieces = base::SplitStringUsingSubstr(
       label, separator, base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
 
   // Create address metadata and add it to |address|.
@@ -150,7 +150,7 @@
   // Create card metadata and add it to |card|.
   std::unique_ptr<autofill_private::AutofillMetadata> metadata(
       new autofill_private::AutofillMetadata);
-  std::pair<base::string16, base::string16> label_pieces =
+  std::pair<std::u16string, std::u16string> label_pieces =
       credit_card.LabelPieces();
   metadata->summary_label = base::UTF16ToUTF8(label_pieces.first);
   metadata->summary_sublabel =
@@ -179,7 +179,7 @@
     const autofill::PersonalDataManager& personal_data) {
   const std::vector<autofill::AutofillProfile*>& profiles =
       personal_data.GetProfiles();
-  std::vector<base::string16> labels;
+  std::vector<std::u16string> labels;
   autofill::AutofillProfile::CreateDifferentiatingLabels(
       profiles, g_browser_process->GetApplicationLocale(), &labels);
   DCHECK_EQ(labels.size(), profiles.size());
diff --git a/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc b/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc
index d014a74..070d2be9 100644
--- a/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc
+++ b/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc
@@ -160,7 +160,7 @@
     index = size_t{*details.index};
   }
 
-  base::string16 title;  // Optional.
+  std::u16string title;  // Optional.
   if (details.title.get())
     title = base::UTF8ToUTF16(*details.title);
 
@@ -528,7 +528,7 @@
   if (params->query.as_string) {
     bookmarks::QueryFields query;
     query.word_phrase_query.reset(
-        new base::string16(base::UTF8ToUTF16(*params->query.as_string)));
+        new std::u16string(base::UTF8ToUTF16(*params->query.as_string)));
     bookmarks::GetBookmarksMatchingProperties(
         BookmarkModelFactory::GetForBrowserContext(GetProfile()), query,
         std::numeric_limits<int>::max(), &nodes);
@@ -539,12 +539,12 @@
     bookmarks::QueryFields query;
     if (object.query) {
       query.word_phrase_query.reset(
-          new base::string16(base::UTF8ToUTF16(*object.query)));
+          new std::u16string(base::UTF8ToUTF16(*object.query)));
     }
     if (object.url)
-      query.url.reset(new base::string16(base::UTF8ToUTF16(*object.url)));
+      query.url.reset(new std::u16string(base::UTF8ToUTF16(*object.url)));
     if (object.title)
-      query.title.reset(new base::string16(base::UTF8ToUTF16(*object.title)));
+      query.title.reset(new std::u16string(base::UTF8ToUTF16(*object.title)));
     bookmarks::GetBookmarksMatchingProperties(
         BookmarkModelFactory::GetForBrowserContext(GetProfile()), query,
         std::numeric_limits<int>::max(), &nodes);
@@ -673,7 +673,7 @@
     return BadMessage();
 
   // Optional but we need to distinguish non present from an empty title.
-  base::string16 title;
+  std::u16string title;
   bool has_title = false;
   if (params->changes.title.get()) {
     title = base::UTF8ToUTF16(*params->changes.title);
@@ -746,7 +746,7 @@
   // such a case if file-selection dialogs are forbidden by policy, we will not
   // show an InfoBar, which is better than letting one appear out of the blue.
   select_file_dialog_->SelectFile(
-      type, base::string16(), default_path, &file_type_info, 0,
+      type, std::u16string(), default_path, &file_type_info, 0,
       base::FilePath::StringType(), owning_window, nullptr);
 }
 
diff --git a/chrome/browser/extensions/api/commands/command_service.cc b/chrome/browser/extensions/api/commands/command_service.cc
index c470139..6e12425 100644
--- a/chrome/browser/extensions/api/commands/command_service.cc
+++ b/chrome/browser/extensions/api/commands/command_service.cc
@@ -319,8 +319,8 @@
         shortcut, ":", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
     CHECK(tokens.size() >= 2);
 
-    return Command(command_name, base::string16(), tokens[1].as_string(),
-           global);
+    return Command(command_name, std::u16string(), tokens[1].as_string(),
+                   global);
   }
 
   return Command();
diff --git a/chrome/browser/extensions/api/commands/commands.cc b/chrome/browser/extensions/api/commands/commands.cc
index 5f5991f..216ad66c 100644
--- a/chrome/browser/extensions/api/commands/commands.cc
+++ b/chrome/browser/extensions/api/commands/commands.cc
@@ -19,9 +19,8 @@
   std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue());
   result->SetString("name", command.command_name());
   result->SetString("description", command.description());
-  result->SetString("shortcut",
-                    active ? command.accelerator().GetShortcutText() :
-                             base::string16());
+  result->SetString("shortcut", active ? command.accelerator().GetShortcutText()
+                                       : std::u16string());
   return result;
 }
 
diff --git a/chrome/browser/extensions/api/debugger/extension_dev_tools_infobar_delegate.cc b/chrome/browser/extensions/api/debugger/extension_dev_tools_infobar_delegate.cc
index f9ba058..18d678b 100644
--- a/chrome/browser/extensions/api/debugger/extension_dev_tools_infobar_delegate.cc
+++ b/chrome/browser/extensions/api/debugger/extension_dev_tools_infobar_delegate.cc
@@ -82,7 +82,7 @@
   return false;
 }
 
-base::string16 ExtensionDevToolsInfoBarDelegate::GetMessageText() const {
+std::u16string ExtensionDevToolsInfoBarDelegate::GetMessageText() const {
   return l10n_util::GetStringFUTF16(IDS_DEV_TOOLS_INFOBAR_LABEL,
                                     extension_name_);
 }
diff --git a/chrome/browser/extensions/api/debugger/extension_dev_tools_infobar_delegate.h b/chrome/browser/extensions/api/debugger/extension_dev_tools_infobar_delegate.h
index 6870d67..48b4dc0 100644
--- a/chrome/browser/extensions/api/debugger/extension_dev_tools_infobar_delegate.h
+++ b/chrome/browser/extensions/api/debugger/extension_dev_tools_infobar_delegate.h
@@ -43,7 +43,7 @@
   // ConfirmInfoBarDelegate:
   infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
   bool ShouldExpire(const NavigationDetails& details) const override;
-  base::string16 GetMessageText() const override;
+  std::u16string GetMessageText() const override;
   gfx::ElideBehavior GetMessageElideBehavior() const override;
   int GetButtons() const override;
 
@@ -59,7 +59,7 @@
       base::OnceClosure destroyed_callback);
 
   const std::string extension_id_;
-  const base::string16 extension_name_;
+  const std::u16string extension_name_;
   // infobar_ is set after attaching an extension and is deleted 5 seconds after
   // detaching the extension. |infobar_| owns this object and is therefore
   // guaranteed to outlive it.
diff --git a/chrome/browser/extensions/api/declarative/declarative_apitest.cc b/chrome/browser/extensions/api/declarative/declarative_apitest.cc
index d289d56..aa2c4b1 100644
--- a/chrome/browser/extensions/api/declarative/declarative_apitest.cc
+++ b/chrome/browser/extensions/api/declarative/declarative_apitest.cc
@@ -100,7 +100,7 @@
 class DeclarativeApiTest : public ExtensionApiTest {
  public:
   std::string GetTitle() {
-    base::string16 title(
+    std::u16string title(
         browser()->tab_strip_model()->GetActiveWebContents()->GetTitle());
     return base::UTF16ToUTF8(title);
   }
@@ -127,10 +127,10 @@
 
 class DeclarativeApiTestWithOriginPolicy : public DeclarativeApiTest {
  protected:
-  base::string16 NavigateToAndReturnTitle(const char* url) {
+  std::u16string NavigateToAndReturnTitle(const char* url) {
     EXPECT_TRUE(server());
     ui_test_utils::NavigateToURL(browser(), GURL(server()->GetURL(url)));
-    base::string16 title;
+    std::u16string title;
     ui_test_utils::GetCurrentTabTitle(browser(), &title);
     return title;
   }
diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
index 1dccf3bb..d752a78 100644
--- a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
+++ b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
@@ -1020,7 +1020,7 @@
   ExtensionService* extension_service = extensions::ExtensionSystem::Get(
       browser()->profile())->extension_service();
 
-  base::string16 error;
+  std::u16string error;
   ASSERT_TRUE(extension_service->UninstallExtension(
       extension->id(),
       UNINSTALL_REASON_FOR_TESTING,
diff --git a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
index cd235ae..a79f268 100644
--- a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
+++ b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
@@ -5081,7 +5081,7 @@
   ui_test_utils::NavigateToURL(browser(), page_url);
   EXPECT_EQ(page_url, web_contents->GetLastCommittedURL());
 
-  base::string16 expected_title = base::ASCIIToUTF16("script loaded");
+  std::u16string expected_title = base::ASCIIToUTF16("script loaded");
   content::TitleWatcher title_watcher(web_contents, expected_title);
   EXPECT_TRUE(TryLoadScript("pass.js"));
   // Check that the script in the web bundle is correctly loaded even when the
@@ -5154,7 +5154,7 @@
   ui_test_utils::NavigateToURL(browser(), page_url);
   EXPECT_EQ(page_url, web_contents->GetLastCommittedURL());
 
-  base::string16 expected_title = base::ASCIIToUTF16("script loaded");
+  std::u16string expected_title = base::ASCIIToUTF16("script loaded");
   content::TitleWatcher title_watcher(web_contents, expected_title);
   EXPECT_TRUE(TryLoadScript(pass_js_url));
   // Check that the pass_js_url script in the web bundle is correctly loaded
@@ -5276,7 +5276,7 @@
   ui_test_utils::NavigateToURL(browser(), page_url);
   EXPECT_EQ(page_url, web_contents->GetLastCommittedURL());
   {
-    base::string16 expected_title = base::ASCIIToUTF16("redirected");
+    std::u16string expected_title = base::ASCIIToUTF16("redirected");
     content::TitleWatcher title_watcher(web_contents, expected_title);
     EXPECT_TRUE(TryLoadScript("redirect.js"));
     EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
@@ -5285,7 +5285,7 @@
     // In the current implementation, extensions can redirect the request to
     // the other resource in the web bundle even if the resource is not listed
     // in the resources attribute.
-    base::string16 expected_title =
+    std::u16string expected_title =
         base::ASCIIToUTF16("redirected_to_unlisted");
     content::TitleWatcher title_watcher(web_contents, expected_title);
     EXPECT_TRUE(TryLoadScript("redirect_to_unlisted.js"));
diff --git a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_unittest.cc b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_unittest.cc
index 7a81f4a9..f895d8c 100644
--- a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_unittest.cc
@@ -189,9 +189,9 @@
     // Verify the error. Only verify if the |expected_error| is a substring of
     // the actual error, since some string may be prepended/appended while
     // creating the actual error.
-    const std::vector<base::string16>* errors = error_reporter()->GetErrors();
+    const std::vector<std::u16string>* errors = error_reporter()->GetErrors();
     ASSERT_EQ(1u, errors->size());
-    EXPECT_NE(base::string16::npos,
+    EXPECT_NE(std::u16string::npos,
               errors->at(0).find(base::UTF8ToUTF16(error_with_filename)))
         << "expected: " << error_with_filename << " actual: " << errors->at(0);
 
@@ -325,7 +325,7 @@
     ASSERT_TRUE(result->is_list());
     const base::ListValue& ids_value = base::Value::AsListValue(*result);
 
-    base::string16 error;
+    std::u16string error;
     std::vector<std::string> actual_ids;
     for (const auto& val : ids_value)
       actual_ids.push_back(val.GetString());
diff --git a/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc b/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc
index 60385fb..e118272 100644
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_api.cc
@@ -55,7 +55,7 @@
   // |web_contents| is the WebContents for which the stream is created, and will
   // also be used to determine where to show the picker's UI.
   content::WebContents* web_contents = NULL;
-  base::string16 target_name;
+  std::u16string target_name;
   GURL origin;
   if (params->target_tab) {
     if (!params->target_tab->url) {
diff --git a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc
index 73a5a056..f499966 100644
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.cc
@@ -76,7 +76,7 @@
     const std::vector<api::desktop_capture::DesktopCaptureSourceType>& sources,
     content::WebContents* web_contents,
     const GURL& origin,
-    const base::string16 target_name) {
+    const std::u16string target_name) {
   DCHECK(!picker_controller_);
 
   gfx::NativeWindow parent_window = web_contents->GetTopLevelNativeWindow();
diff --git a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.h b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.h
index a52f8fd..93f450a 100644
--- a/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.h
+++ b/chrome/browser/extensions/api/desktop_capture/desktop_capture_base.h
@@ -44,7 +44,7 @@
           sources,
       content::WebContents* web_contents,
       const GURL& origin,
-      const base::string16 target_name);
+      const std::u16string target_name);
 
   // Returns the calling application name to show in the picker.
   std::string GetCallerDisplayName() const;
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.cc b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
index 0683253d..17c396e 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
@@ -813,7 +813,7 @@
 }
 
 void DeveloperPrivateGetExtensionSizeFunction::OnSizeCalculated(
-    const base::string16& size) {
+    const std::u16string& size) {
   Respond(OneArgument(base::Value(size)));
 }
 
@@ -1281,7 +1281,7 @@
 
 bool DeveloperPrivateChooseEntryFunction::ShowPicker(
     ui::SelectFileDialog::Type picker_type,
-    const base::string16& select_title,
+    const std::u16string& select_title,
     const ui::SelectFileDialog::FileTypeInfo& info,
     int file_type_index) {
   content::WebContents* web_contents = GetSenderWebContents();
@@ -1623,7 +1623,7 @@
 
   if (params->select_type == developer::SELECT_TYPE_FILE)
     type = ui::SelectFileDialog::SELECT_OPEN_FILE;
-  base::string16 select_title;
+  std::u16string select_title;
 
   int file_type_index = 0;
   if (params->file_type == developer::FILE_TYPE_LOAD) {
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.h b/chrome/browser/extensions/api/developer_private/developer_private_api.h
index 1eae5f92..6ca2a4c 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api.h
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.h
@@ -392,7 +392,7 @@
   ~DeveloperPrivateGetExtensionSizeFunction() override;
   ResponseAction Run() override;
 
-  void OnSizeCalculated(const base::string16& size);
+  void OnSizeCalculated(const std::u16string& size);
 
   DISALLOW_COPY_AND_ASSIGN(DeveloperPrivateGetExtensionSizeFunction);
 };
@@ -497,7 +497,7 @@
  protected:
   ~DeveloperPrivateChooseEntryFunction() override;
   bool ShowPicker(ui::SelectFileDialog::Type picker_type,
-                  const base::string16& select_title,
+                  const std::u16string& select_title,
                   const ui::SelectFileDialog::FileTypeInfo& info,
                   int file_type_index);
 };
diff --git a/chrome/browser/extensions/api/developer_private/entry_picker.cc b/chrome/browser/extensions/api/developer_private/entry_picker.cc
index ad7d48b8..38eb490 100644
--- a/chrome/browser/extensions/api/developer_private/entry_picker.cc
+++ b/chrome/browser/extensions/api/developer_private/entry_picker.cc
@@ -30,7 +30,7 @@
                          content::WebContents* web_contents,
                          ui::SelectFileDialog::Type picker_type,
                          const base::FilePath& last_directory,
-                         const base::string16& select_title,
+                         const std::u16string& select_title,
                          const ui::SelectFileDialog::FileTypeInfo& info,
                          int file_type_index)
     : client_(client) {
diff --git a/chrome/browser/extensions/api/developer_private/entry_picker.h b/chrome/browser/extensions/api/developer_private/entry_picker.h
index 36be5fc..d9eaa55 100644
--- a/chrome/browser/extensions/api/developer_private/entry_picker.h
+++ b/chrome/browser/extensions/api/developer_private/entry_picker.h
@@ -30,7 +30,7 @@
               content::WebContents* web_contents,
               ui::SelectFileDialog::Type picker_type,
               const base::FilePath& last_directory,
-              const base::string16& select_title,
+              const std::u16string& select_title,
               const ui::SelectFileDialog::FileTypeInfo& info,
               int file_type_index);
 
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
index ce60a3f..6f0cd03 100644
--- a/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
+++ b/chrome/browser/extensions/api/developer_private/extension_info_generator_unittest.cc
@@ -283,7 +283,7 @@
       kContextUrl, logging::LOG_ERROR, 1, 1));
   error_console->ReportError(std::make_unique<ManifestError>(
       extension->id(), base::UTF8ToUTF16("message"), base::UTF8ToUTF16("key"),
-      base::string16()));
+      std::u16string()));
   error_console->ReportError(std::make_unique<RuntimeError>(
       extension->id(), false, base::UTF8ToUTF16("source"),
       base::UTF8ToUTF16("message"),
@@ -333,7 +333,7 @@
     const api::developer_private::Permission& info_permission =
         info->permissions.simple_permissions[i];
     EXPECT_EQ(message.message(), base::UTF8ToUTF16(info_permission.message));
-    const std::vector<base::string16>& submessages = message.submessages();
+    const std::vector<std::u16string>& submessages = message.submessages();
     ASSERT_EQ(submessages.size(), info_permission.submessages.size());
     for (size_t j = 0; j < submessages.size(); ++j) {
       EXPECT_EQ(submessages[j],
diff --git a/chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.cc b/chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.cc
index de51c93..3cd1483 100644
--- a/chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.cc
+++ b/chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.cc
@@ -61,7 +61,7 @@
     for (const SavedFileEntry& entry : retained_file_entries)
       retained_file_paths.push_back(entry.path);
   }
-  std::vector<base::string16> retained_device_messages;
+  std::vector<std::u16string> retained_device_messages;
   if (extension->permissions_data()->HasAPIPermission(APIPermission::kUsb)) {
     retained_device_messages =
         DevicePermissionsManager::Get(profile_)
diff --git a/chrome/browser/extensions/api/device_permissions_manager_unittest.cc b/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
index a2cfc5f9..5b0b307 100644
--- a/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
+++ b/chrome/browser/extensions/api/device_permissions_manager_unittest.cc
@@ -337,10 +337,10 @@
 }
 
 TEST_F(DevicePermissionsManagerTest, PermissionMessages) {
-  base::string16 empty;
-  base::string16 product(base::ASCIIToUTF16("Widget"));
-  base::string16 manufacturer(base::ASCIIToUTF16("ACME"));
-  base::string16 serial_number(base::ASCIIToUTF16("A"));
+  std::u16string empty;
+  std::u16string product(base::ASCIIToUTF16("Widget"));
+  std::u16string manufacturer(base::ASCIIToUTF16("ACME"));
+  std::u16string serial_number(base::ASCIIToUTF16("A"));
 
   EXPECT_EQ(base::ASCIIToUTF16("Unknown product 0001 from vendor 0000"),
             DevicePermissionsManager::GetPermissionMessage(
diff --git a/chrome/browser/extensions/api/file_system/chrome_file_system_delegate.cc b/chrome/browser/extensions/api/file_system/chrome_file_system_delegate.cc
index 8ac4eaa..0c93b50 100644
--- a/chrome/browser/extensions/api/file_system/chrome_file_system_delegate.cc
+++ b/chrome/browser/extensions/api/file_system/chrome_file_system_delegate.cc
@@ -298,7 +298,7 @@
 
 void ChromeFileSystemDelegate::ConfirmSensitiveDirectoryAccess(
     bool has_write_permission,
-    const base::string16& app_name,
+    const std::u16string& app_name,
     content::WebContents* web_contents,
     base::OnceClosure on_accept,
     base::OnceClosure on_cancel) {
diff --git a/chrome/browser/extensions/api/file_system/chrome_file_system_delegate.h b/chrome/browser/extensions/api/file_system/chrome_file_system_delegate.h
index 5aaf22f..721d206 100644
--- a/chrome/browser/extensions/api/file_system/chrome_file_system_delegate.h
+++ b/chrome/browser/extensions/api/file_system/chrome_file_system_delegate.h
@@ -40,7 +40,7 @@
       FileSystemDelegate::FilesSelectedCallback files_selected_callback,
       base::OnceClosure file_selection_canceled_callback) override;
   void ConfirmSensitiveDirectoryAccess(bool has_write_permission,
-                                       const base::string16& app_name,
+                                       const std::u16string& app_name,
                                        content::WebContents* web_contents,
                                        base::OnceClosure on_accept,
                                        base::OnceClosure on_cancel) override;
diff --git a/chrome/browser/extensions/api/file_system/file_entry_picker.cc b/chrome/browser/extensions/api/file_system/file_entry_picker.cc
index abad0a6c..79882041 100644
--- a/chrome/browser/extensions/api/file_system/file_entry_picker.cc
+++ b/chrome/browser/extensions/api/file_system/file_entry_picker.cc
@@ -35,7 +35,7 @@
   select_file_dialog_ = ui::SelectFileDialog::Create(
       this, std::make_unique<ChromeSelectFilePolicy>(web_contents));
   select_file_dialog_->SelectFile(
-      picker_type, base::string16(), suggested_name, &file_type_info, 0,
+      picker_type, std::u16string(), suggested_name, &file_type_info, 0,
       base::FilePath::StringType(), owning_window, nullptr);
 }
 
diff --git a/chrome/browser/extensions/api/file_system/request_file_system_notification.cc b/chrome/browser/extensions/api/file_system/request_file_system_notification.cc
index 4ea51d3..905eb73 100644
--- a/chrome/browser/extensions/api/file_system/request_file_system_notification.cc
+++ b/chrome/browser/extensions/api/file_system/request_file_system_notification.cc
@@ -95,10 +95,10 @@
   message_center::RichNotificationData data;
 
   // TODO(mtomasz): Share this code with RequestFileSystemDialogView.
-  const base::string16 display_name =
+  const std::u16string display_name =
       base::UTF8ToUTF16(!volume->volume_label().empty() ? volume->volume_label()
                                                         : volume->volume_id());
-  const base::string16 message = l10n_util::GetStringFUTF16(
+  const std::u16string message = l10n_util::GetStringFUTF16(
       writable
           ? IDS_FILE_SYSTEM_REQUEST_FILE_SYSTEM_NOTIFICATION_WRITABLE_MESSAGE
           : IDS_FILE_SYSTEM_REQUEST_FILE_SYSTEM_NOTIFICATION_MESSAGE,
@@ -108,7 +108,7 @@
       message_center::NOTIFICATION_TYPE_SIMPLE, notification_id,
       base::UTF8ToUTF16(extension.name()), message,
       gfx::Image(),      // Updated asynchronously later.
-      base::string16(),  // display_source
+      std::u16string(),  // display_source
       GURL(),
       message_center::NotifierId(message_center::NotifierType::SYSTEM_COMPONENT,
                                  notification_id),
diff --git a/chrome/browser/extensions/api/history/history_api.cc b/chrome/browser/extensions/api/history/history_api.cc
index 62045725..46440fce 100644
--- a/chrome/browser/extensions/api/history/history_api.cc
+++ b/chrome/browser/extensions/api/history/history_api.cc
@@ -292,7 +292,7 @@
   std::unique_ptr<Search::Params> params(Search::Params::Create(*args_));
   EXTENSION_FUNCTION_VALIDATE(params.get());
 
-  base::string16 search_text = base::UTF8ToUTF16(params->query.text);
+  std::u16string search_text = base::UTF8ToUTF16(params->query.text);
 
   history::QueryOptions options;
   options.SetRecentDayRange(1);
diff --git a/chrome/browser/extensions/api/i18n/i18n_apitest.cc b/chrome/browser/extensions/api/i18n/i18n_apitest.cc
index 64f71ab..fcb0a76 100644
--- a/chrome/browser/extensions/api/i18n/i18n_apitest.cc
+++ b/chrome/browser/extensions/api/i18n/i18n_apitest.cc
@@ -48,7 +48,7 @@
       embedded_test_server()->GetURL("/extensions/test_file.html"));
   EXPECT_TRUE(catcher.GetNextResult());
 
-  base::string16 title;
+  std::u16string title;
   ui_test_utils::GetCurrentTabTitle(browser(), &title);
   EXPECT_EQ(std::string("FIRSTMESSAGE"), base::UTF16ToUTF8(title));
 
diff --git a/chrome/browser/extensions/api/input_ime/input_ime_api.cc b/chrome/browser/extensions/api/input_ime/input_ime_api.cc
index f813b82..36f2bf1 100644
--- a/chrome/browser/extensions/api/input_ime/input_ime_api.cc
+++ b/chrome/browser/extensions/api/input_ime/input_ime_api.cc
@@ -98,7 +98,7 @@
   } else {
     ch = event.GetCharacter();
   }
-  return base::UTF16ToUTF8(base::string16(1, ch));
+  return base::UTF16ToUTF8(std::u16string(1, ch));
 }
 
 ui::KeyEvent ConvertKeyboardEventToUIKeyEvent(
@@ -269,7 +269,7 @@
     const std::vector<gfx::Rect>& bounds) {}
 
 void ImeObserver::OnSurroundingTextChanged(const std::string& component_id,
-                                           const base::string16& text,
+                                           const std::u16string& text,
                                            int cursor_pos,
                                            int anchor_pos,
                                            int offset_pos) {
diff --git a/chrome/browser/extensions/api/input_ime/input_ime_api.h b/chrome/browser/extensions/api/input_ime/input_ime_api.h
index d7276fb..ed845c0 100644
--- a/chrome/browser/extensions/api/input_ime/input_ime_api.h
+++ b/chrome/browser/extensions/api/input_ime/input_ime_api.h
@@ -60,7 +60,7 @@
   void OnCompositionBoundsChanged(
       const std::vector<gfx::Rect>& bounds) override;
   void OnSurroundingTextChanged(const std::string& component_id,
-                                const base::string16& text,
+                                const std::u16string& text,
                                 int cursor_pos,
                                 int anchor_pos,
                                 int offset_pos) override;
diff --git a/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc b/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
index 3caa2de..692385ee 100644
--- a/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
+++ b/chrome/browser/extensions/api/language_settings_private/language_settings_private_api.cc
@@ -666,9 +666,9 @@
   }
 
   // Map of sorted [display name -> input methods].
-  std::map<base::string16, language_settings_private::InputMethod,
-           l10n_util::StringComparator<base::string16>>
-      input_map(l10n_util::StringComparator<base::string16>(collator.get()));
+  std::map<std::u16string, language_settings_private::InputMethod,
+           l10n_util::StringComparator<std::u16string>>
+      input_map(l10n_util::StringComparator<std::u16string>(collator.get()));
 
   for (const auto& descriptor : descriptors) {
     language_settings_private::InputMethod input_method;
diff --git a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc
index ff08e38..e8084fb 100644
--- a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc
+++ b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc
@@ -203,7 +203,7 @@
 
   // ExtensionUninstallDialog::Delegate implementation.
   void OnExtensionUninstallDialogClosed(bool did_start_uninstall,
-                                        const base::string16& error) override {
+                                        const std::u16string& error) override {
     function_->OnExtensionUninstallDialogClosed(did_start_uninstall, error);
   }
 
@@ -637,7 +637,7 @@
     content::BrowserContext* context,
     const std::string& transient_extension_id,
     extensions::UninstallReason reason,
-    base::string16* error) const {
+    std::u16string* error) const {
   return extensions::ExtensionSystem::Get(context)
       ->extension_service()
       ->UninstallExtension(transient_extension_id, reason, error);
diff --git a/chrome/browser/extensions/api/management/chrome_management_api_delegate.h b/chrome/browser/extensions/api/management/chrome_management_api_delegate.h
index 955e64f..3408052 100644
--- a/chrome/browser/extensions/api/management/chrome_management_api_delegate.h
+++ b/chrome/browser/extensions/api/management/chrome_management_api_delegate.h
@@ -72,7 +72,7 @@
   bool UninstallExtension(content::BrowserContext* context,
                           const std::string& transient_extension_id,
                           extensions::UninstallReason reason,
-                          base::string16* error) const override;
+                          std::u16string* error) const override;
   void SetLaunchType(content::BrowserContext* context,
                      const std::string& extension_id,
                      extensions::LaunchType launch_type) const override;
diff --git a/chrome/browser/extensions/api/management/management_api_unittest.cc b/chrome/browser/extensions/api/management/management_api_unittest.cc
index 092ce03..58a8a5b 100644
--- a/chrome/browser/extensions/api/management/management_api_unittest.cc
+++ b/chrome/browser/extensions/api/management/management_api_unittest.cc
@@ -795,7 +795,7 @@
   bool UninstallExtension(content::BrowserContext* context,
                           const std::string& transient_extension_id,
                           UninstallReason reason,
-                          base::string16* error) const override {
+                          std::u16string* error) const override {
     return true;
   }
   bool CreateAppShortcutFunctionDelegate(
diff --git a/chrome/browser/extensions/api/messaging/incognito_connectability_infobar_delegate.cc b/chrome/browser/extensions/api/messaging/incognito_connectability_infobar_delegate.cc
index e4ef618..a708254 100644
--- a/chrome/browser/extensions/api/messaging/incognito_connectability_infobar_delegate.cc
+++ b/chrome/browser/extensions/api/messaging/incognito_connectability_infobar_delegate.cc
@@ -16,7 +16,7 @@
 // static
 infobars::InfoBar* IncognitoConnectabilityInfoBarDelegate::Create(
     InfoBarService* infobar_service,
-    const base::string16& message,
+    const std::u16string& message,
     IncognitoConnectabilityInfoBarDelegate::InfoBarCallback callback) {
   return infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
       std::unique_ptr<ConfirmInfoBarDelegate>(
@@ -25,7 +25,7 @@
 }
 
 IncognitoConnectabilityInfoBarDelegate::IncognitoConnectabilityInfoBarDelegate(
-    const base::string16& message,
+    const std::u16string& message,
     InfoBarCallback callback)
     : message_(message), answered_(false), callback_(std::move(callback)) {}
 
@@ -45,11 +45,11 @@
   return INCOGNITO_CONNECTABILITY_INFOBAR_DELEGATE;
 }
 
-base::string16 IncognitoConnectabilityInfoBarDelegate::GetMessageText() const {
+std::u16string IncognitoConnectabilityInfoBarDelegate::GetMessageText() const {
   return message_;
 }
 
-base::string16 IncognitoConnectabilityInfoBarDelegate::GetButtonLabel(
+std::u16string IncognitoConnectabilityInfoBarDelegate::GetButtonLabel(
     InfoBarButton button) const {
   return l10n_util::GetStringUTF16((button == BUTTON_OK) ? IDS_PERMISSION_ALLOW
                                                          : IDS_PERMISSION_DENY);
diff --git a/chrome/browser/extensions/api/messaging/incognito_connectability_infobar_delegate.h b/chrome/browser/extensions/api/messaging/incognito_connectability_infobar_delegate.h
index d4f1f434..97c8760d 100644
--- a/chrome/browser/extensions/api/messaging/incognito_connectability_infobar_delegate.h
+++ b/chrome/browser/extensions/api/messaging/incognito_connectability_infobar_delegate.h
@@ -24,7 +24,7 @@
   // Creates a confirmation infobar and delegate and adds the infobar to
   // |infobar_service|.
   static infobars::InfoBar* Create(InfoBarService* infobar_service,
-                                   const base::string16& message,
+                                   const std::u16string& message,
                                    InfoBarCallback callback);
 
   // Marks the infobar as answered so that the callback is not executed when the
@@ -32,18 +32,18 @@
   void set_answered() { answered_ = true; }
 
  private:
-  IncognitoConnectabilityInfoBarDelegate(const base::string16& message,
+  IncognitoConnectabilityInfoBarDelegate(const std::u16string& message,
                                          InfoBarCallback callback);
   ~IncognitoConnectabilityInfoBarDelegate() override;
 
   // ConfirmInfoBarDelegate:
   infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
-  base::string16 GetMessageText() const override;
-  base::string16 GetButtonLabel(InfoBarButton button) const override;
+  std::u16string GetMessageText() const override;
+  std::u16string GetButtonLabel(InfoBarButton button) const override;
   bool Accept() override;
   bool Cancel() override;
 
-  base::string16 message_;
+  std::u16string message_;
   bool answered_;
   InfoBarCallback callback_;
 };
diff --git a/chrome/browser/extensions/api/notifications/extension_notification_handler.cc b/chrome/browser/extensions/api/notifications/extension_notification_handler.cc
index 7ee32b0..90e763b4 100644
--- a/chrome/browser/extensions/api/notifications/extension_notification_handler.cc
+++ b/chrome/browser/extensions/api/notifications/extension_notification_handler.cc
@@ -87,7 +87,7 @@
     const GURL& origin,
     const std::string& notification_id,
     const base::Optional<int>& action_index,
-    const base::Optional<base::string16>& reply,
+    const base::Optional<std::u16string>& reply,
     base::OnceClosure completed_closure) {
   DCHECK(!reply.has_value());
 
diff --git a/chrome/browser/extensions/api/notifications/extension_notification_handler.h b/chrome/browser/extensions/api/notifications/extension_notification_handler.h
index 60464d79..cc3875e 100644
--- a/chrome/browser/extensions/api/notifications/extension_notification_handler.h
+++ b/chrome/browser/extensions/api/notifications/extension_notification_handler.h
@@ -34,7 +34,7 @@
                const GURL& origin,
                const std::string& notification_id,
                const base::Optional<int>& action_index,
-               const base::Optional<base::string16>& reply,
+               const base::Optional<std::u16string>& reply,
                base::OnceClosure completed_closure) override;
   void DisableNotifications(Profile* profile, const GURL& origin) override;
 
diff --git a/chrome/browser/extensions/api/notifications/notifications_api.cc b/chrome/browser/extensions/api/notifications/notifications_api.cc
index a4795b8f..a8b745f 100644
--- a/chrome/browser/extensions/api/notifications/notifications_api.cc
+++ b/chrome/browser/extensions/api/notifications/notifications_api.cc
@@ -254,8 +254,8 @@
   message_center::NotificationType type =
       MapApiTemplateTypeToType(options->type);
 
-  const base::string16 title(base::UTF8ToUTF16(*options->title));
-  const base::string16 message(base::UTF8ToUTF16(*options->message));
+  const std::u16string title(base::UTF8ToUTF16(*options->title));
+  const std::u16string message(base::UTF8ToUTF16(*options->message));
   gfx::Image icon;
 
   if (!options->icon_bitmap.get() ||
diff --git a/chrome/browser/extensions/api/omnibox/omnibox_api.cc b/chrome/browser/extensions/api/omnibox/omnibox_api.cc
index 38c8eb3..1601fbb 100644
--- a/chrome/browser/extensions/api/omnibox/omnibox_api.cc
+++ b/chrome/browser/extensions/api/omnibox/omnibox_api.cc
@@ -312,7 +312,7 @@
     const omnibox::SuggestResult &suggestion) {
   ACMatchClassifications match_classifications;
   if (suggestion.description_styles) {
-    base::string16 description = base::UTF8ToUTF16(suggestion.description);
+    std::u16string description = base::UTF8ToUTF16(suggestion.description);
     std::vector<int> styles(description.length(), 0);
 
     for (const omnibox::MatchClassification& style :
@@ -359,7 +359,7 @@
 void ApplyDefaultSuggestionForExtensionKeyword(
     Profile* profile,
     const TemplateURL* keyword,
-    const base::string16& remaining_input,
+    const std::u16string& remaining_input,
     AutocompleteMatch* match) {
   DCHECK(keyword->type() == TemplateURL::OMNIBOX_API_EXTENSION);
 
@@ -368,18 +368,18 @@
   if (!suggestion || suggestion->description.empty())
     return;  // fall back to the universal default
 
-  const base::string16 kPlaceholderText(base::ASCIIToUTF16("%s"));
-  const base::string16 kReplacementText(base::ASCIIToUTF16("<input>"));
+  const std::u16string kPlaceholderText(base::ASCIIToUTF16("%s"));
+  const std::u16string kReplacementText(base::ASCIIToUTF16("<input>"));
 
-  base::string16 description = base::UTF8ToUTF16(suggestion->description);
+  std::u16string description = base::UTF8ToUTF16(suggestion->description);
   ACMatchClassifications& description_styles = match->contents_class;
   description_styles = StyleTypesToACMatchClassifications(*suggestion);
 
   // Replace "%s" with the user's input and adjust the style offsets to the
   // new length of the description.
   size_t placeholder(description.find(kPlaceholderText, 0));
-  if (placeholder != base::string16::npos) {
-    base::string16 replacement =
+  if (placeholder != std::u16string::npos) {
+    std::u16string replacement =
         remaining_input.empty() ? kReplacementText : remaining_input;
     description.replace(placeholder, kPlaceholderText.length(), replacement);
 
diff --git a/chrome/browser/extensions/api/omnibox/omnibox_api.h b/chrome/browser/extensions/api/omnibox/omnibox_api.h
index c8515e7..8790117 100644
--- a/chrome/browser/extensions/api/omnibox/omnibox_api.h
+++ b/chrome/browser/extensions/api/omnibox/omnibox_api.h
@@ -164,7 +164,7 @@
 void ApplyDefaultSuggestionForExtensionKeyword(
     Profile* profile,
     const TemplateURL* keyword,
-    const base::string16& remaining_input,
+    const std::u16string& remaining_input,
     AutocompleteMatch* match);
 
 // This function converts style information populated by the JSON schema
diff --git a/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc b/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc
index 8962c65..1bca4e2 100644
--- a/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc
+++ b/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc
@@ -63,7 +63,7 @@
       ->autocomplete_controller();
 }
 
-base::string16 AutocompleteResultAsString(const AutocompleteResult& result) {
+std::u16string AutocompleteResultAsString(const AutocompleteResult& result) {
   std::string output(base::StringPrintf("{%" PRIuS "} ", result.size()));
   for (size_t i = 0; i < result.size(); ++i) {
     AutocompleteMatch match = result.match_at(i);
@@ -153,7 +153,7 @@
     EXPECT_EQ(AutocompleteProvider::TYPE_KEYWORD,
               result.match_at(3).provider->type());
 
-    base::string16 description =
+    std::u16string description =
         ASCIIToUTF16("Description with style: <match>, [dim], (url till end)");
     EXPECT_EQ(description, result.match_at(1).contents);
     ASSERT_EQ(6u, result.match_at(1).contents_class.size());
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_api.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_api.cc
index 64babfff..6e6963ce 100644
--- a/chrome/browser/extensions/api/passwords_private/passwords_private_api.cc
+++ b/chrome/browser/extensions/api/passwords_private/passwords_private_api.cc
@@ -128,7 +128,7 @@
 }
 
 void PasswordsPrivateRequestPlaintextPasswordFunction::GotPassword(
-    base::Optional<base::string16> password) {
+    base::Optional<std::u16string> password) {
   if (password) {
     Respond(OneArgument(base::Value(std::move(*password))));
     return;
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_api.h b/chrome/browser/extensions/api/passwords_private/passwords_private_api.h
index 6d1ec0d1..d02ef6a 100644
--- a/chrome/browser/extensions/api/passwords_private/passwords_private_api.h
+++ b/chrome/browser/extensions/api/passwords_private/passwords_private_api.h
@@ -120,7 +120,7 @@
   ResponseAction Run() override;
 
  private:
-  void GotPassword(base::Optional<base::string16> password);
+  void GotPassword(base::Optional<std::u16string> password);
 };
 
 class PasswordsPrivateGetSavedPasswordListFunction : public ExtensionFunction {
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate.h b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate.h
index dad22bc..f1e2a65 100644
--- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate.h
+++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate.h
@@ -36,7 +36,7 @@
 class PasswordsPrivateDelegate : public KeyedService {
  public:
   using PlaintextPasswordCallback =
-      base::OnceCallback<void(base::Optional<base::string16>)>;
+      base::OnceCallback<void(base::Optional<std::u16string>)>;
 
   using StartPasswordCheckCallback =
       base::OnceCallback<void(password_manager::BulkLeakCheckService::State)>;
@@ -62,8 +62,8 @@
   // |new_username|: The new username.
   // |new_password|: The new password.
   virtual bool ChangeSavedPassword(const std::vector<int>& ids,
-                                   const base::string16& new_username,
-                                   const base::string16& new_password) = 0;
+                                   const std::u16string& new_username,
+                                   const std::u16string& new_password) = 0;
 
   // Removes the saved password entries corresponding to the |ids| generated for
   // each entry of the password list. Any invalid id will be ignored.
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc
index e5aff7a..bf1266e 100644
--- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc
+++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.cc
@@ -216,8 +216,8 @@
 
 bool PasswordsPrivateDelegateImpl::ChangeSavedPassword(
     const std::vector<int>& ids,
-    const base::string16& new_username,
-    const base::string16& new_password) {
+    const std::u16string& new_username,
+    const std::u16string& new_password) {
   const std::vector<std::string> sort_keys =
       GetSortKeys(password_id_generator_, ids);
 
@@ -306,7 +306,7 @@
     // Copying occurs here so javascript doesn't need plaintext password.
     callback = base::BindOnce(
         [](PlaintextPasswordCallback callback,
-           base::Optional<base::string16> password) {
+           base::Optional<std::u16string> password) {
           if (!password) {
             std::move(callback).Run(base::nullopt);
             return;
@@ -315,7 +315,7 @@
               ui::ClipboardBuffer::kCopyPaste);
           clipboard_writer.WriteText(*password);
           clipboard_writer.MarkAsConfidential();
-          std::move(callback).Run(base::string16());
+          std::move(callback).Run(std::u16string());
         },
         std::move(callback));
   }
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.h b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.h
index 47f9f59..aee9edd 100644
--- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.h
+++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl.h
@@ -51,8 +51,8 @@
   void GetSavedPasswordsList(UiEntriesCallback callback) override;
   void GetPasswordExceptionsList(ExceptionEntriesCallback callback) override;
   bool ChangeSavedPassword(const std::vector<int>& ids,
-                           const base::string16& new_username,
-                           const base::string16& new_password) override;
+                           const std::u16string& new_username,
+                           const std::u16string& new_password) override;
   void RemoveSavedPasswords(const std::vector<int>& ids) override;
   void RemovePasswordExceptions(const std::vector<int>& ids) override;
   void UndoRemoveSavedPasswordOrException() override;
diff --git a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc
index 9e627b4..e51a6229 100644
--- a/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc
+++ b/chrome/browser/extensions/api/passwords_private/passwords_private_delegate_impl_unittest.cc
@@ -400,12 +400,12 @@
       .WillOnce(Return(true));
 
   MockPlaintextPasswordCallback password_callback;
-  EXPECT_CALL(password_callback, Run(Eq(base::string16())));
+  EXPECT_CALL(password_callback, Run(Eq(std::u16string())));
   delegate.RequestPlaintextPassword(
       0, api::passwords_private::PLAINTEXT_REASON_COPY, password_callback.Get(),
       nullptr);
 
-  base::string16 result;
+  std::u16string result;
   test_clipboard_->ReadText(ui::ClipboardBuffer::kCopyPaste,
                             /* data_dst = */ nullptr, &result);
   EXPECT_EQ(form.password_value, result);
@@ -478,10 +478,10 @@
       0, api::passwords_private::PLAINTEXT_REASON_COPY, password_callback.Get(),
       nullptr);
   // Clipboard should not be modifiend in case Reauth failed
-  base::string16 result;
+  std::u16string result;
   test_clipboard_->ReadText(ui::ClipboardBuffer::kCopyPaste,
                             /* data_dst = */ nullptr, &result);
-  EXPECT_EQ(base::string16(), result);
+  EXPECT_EQ(std::u16string(), result);
   EXPECT_EQ(before_call, test_clipboard_->GetLastModifiedTime());
 
   // Since Reauth had failed password was not copied and metric wasn't recorded
diff --git a/chrome/browser/extensions/api/passwords_private/test_passwords_private_delegate.cc b/chrome/browser/extensions/api/passwords_private/test_passwords_private_delegate.cc
index 85fcc4d1..961608d 100644
--- a/chrome/browser/extensions/api/passwords_private/test_passwords_private_delegate.cc
+++ b/chrome/browser/extensions/api/passwords_private/test_passwords_private_delegate.cc
@@ -65,8 +65,8 @@
 
 bool TestPasswordsPrivateDelegate::ChangeSavedPassword(
     const std::vector<int>& ids,
-    const base::string16& new_username,
-    const base::string16& new_password) {
+    const std::u16string& new_username,
+    const std::u16string& new_password) {
   for (int id : ids) {
     if (static_cast<size_t>(id) >= current_entries_.size()) {
       return false;
diff --git a/chrome/browser/extensions/api/passwords_private/test_passwords_private_delegate.h b/chrome/browser/extensions/api/passwords_private/test_passwords_private_delegate.h
index 28f1bd2f..6b75b26 100644
--- a/chrome/browser/extensions/api/passwords_private/test_passwords_private_delegate.h
+++ b/chrome/browser/extensions/api/passwords_private/test_passwords_private_delegate.h
@@ -27,8 +27,8 @@
   // list of entries has each of the ids, vector of ids isn't empty and if the
   // new password isn't empty.
   bool ChangeSavedPassword(const std::vector<int>& ids,
-                           const base::string16& new_username,
-                           const base::string16& new_password) override;
+                           const std::u16string& new_username,
+                           const std::u16string& new_password) override;
   void RemoveSavedPasswords(const std::vector<int>& id) override;
   void RemovePasswordExceptions(const std::vector<int>& ids) override;
   // Simplified version of undo logic, only use for testing.
@@ -116,7 +116,7 @@
   std::vector<api::passwords_private::ExceptionEntry>
       last_deleted_exceptions_batch_;
 
-  base::Optional<base::string16> plaintext_password_ =
+  base::Optional<std::u16string> plaintext_password_ =
       base::ASCIIToUTF16("plaintext");
 
   // List of insecure credentials.
diff --git a/chrome/browser/extensions/api/proxy/proxy_api.cc b/chrome/browser/extensions/api/proxy/proxy_api.cc
index d1070806..3bc96061 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api.cc
@@ -58,11 +58,10 @@
   }
 }
 
-void ProxyEventRouter::OnPACScriptError(
-    EventRouterForwarder* event_router,
-    void* profile,
-    int line_number,
-    const base::string16& error) {
+void ProxyEventRouter::OnPACScriptError(EventRouterForwarder* event_router,
+                                        void* profile,
+                                        int line_number,
+                                        const std::u16string& error) {
   std::unique_ptr<base::ListValue> args(new base::ListValue());
   std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
   dict->SetBoolean(proxy_api_constants::kProxyEventFatal, false);
diff --git a/chrome/browser/extensions/api/proxy/proxy_api.h b/chrome/browser/extensions/api/proxy/proxy_api.h
index 46fb521..f73c241 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api.h
+++ b/chrome/browser/extensions/api/proxy/proxy_api.h
@@ -58,7 +58,7 @@
   void OnPACScriptError(EventRouterForwarder* event_router,
                         void* profile,
                         int line_number,
-                        const base::string16& error);
+                        const std::u16string& error);
 
  private:
   friend struct base::DefaultSingletonTraits<ProxyEventRouter>;
diff --git a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
index 1a56cf91..248fa1b 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
@@ -113,7 +113,7 @@
     return true;
 
   // TODO(battre): Handle UTF-8 URLs (http://crbug.com/72692).
-  base::string16 pac_url16;
+  std::u16string pac_url16;
   if (pac_dict->HasKey(proxy_api_constants::kProxyConfigPacScriptUrl) &&
       !pac_dict->GetString(proxy_api_constants::kProxyConfigPacScriptUrl,
                            &pac_url16)) {
@@ -140,7 +140,7 @@
   if (!pac_dict)
     return true;
 
-  base::string16 pac_data16;
+  std::u16string pac_data16;
   if (pac_dict->HasKey(proxy_api_constants::kProxyConfigPacScriptData) &&
       !pac_dict->GetString(proxy_api_constants::kProxyConfigPacScriptData,
                            &pac_data16)) {
@@ -175,7 +175,7 @@
     scheme = default_scheme;
 
   // TODO(battre): handle UTF-8 in hostnames (http://crbug.com/72692).
-  base::string16 host16;
+  std::u16string host16;
   if (!proxy_server->GetString(proxy_api_constants::kProxyConfigRuleHost,
                                &host16)) {
     LOG(ERROR) << "Could not parse a 'rules.*.host' entry.";
@@ -283,7 +283,7 @@
       result.append(joiner);
 
     // TODO(battre): handle UTF-8 (http://crbug.com/72692).
-    base::string16 entry;
+    std::u16string entry;
     if (!list->GetString(i, &entry)) {
       LOG(ERROR) << "'rules.bypassList' could not be parsed.";
       *bad_message = true;
diff --git a/chrome/browser/extensions/api/settings_overrides/settings_overrides_browsertest.cc b/chrome/browser/extensions/api/settings_overrides/settings_overrides_browsertest.cc
index 41731f39..0889f80 100644
--- a/chrome/browser/extensions/api/settings_overrides/settings_overrides_browsertest.cc
+++ b/chrome/browser/extensions/api/settings_overrides/settings_overrides_browsertest.cc
@@ -185,7 +185,7 @@
                        TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
 
   std::string new_tab_url_ext = ext_turl.new_tab_url_ref().ReplaceSearchTerms(
-      TemplateURLRef::SearchTermsArgs(base::string16()),
+      TemplateURLRef::SearchTermsArgs(std::u16string()),
       UIThreadSearchTermsData());
 
   EXPECT_EQ(new_tab_url_ext, search::GetNewTabPageURL(profile).spec());
diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_manager.cc b/chrome/browser/extensions/api/system_indicator/system_indicator_manager.cc
index 902cecad..af75a0ff 100644
--- a/chrome/browser/extensions/api/system_indicator/system_indicator_manager.cc
+++ b/chrome/browser/extensions/api/system_indicator/system_indicator_manager.cc
@@ -128,7 +128,7 @@
   // Get the icon image and tool tip for the status icon. The extension name is
   // used as the tool tip.
   gfx::ImageSkia icon_skia = manifest_icon_.image().AsImageSkia();
-  base::string16 tool_tip = base::UTF8ToUTF16(extension_->name());
+  std::u16string tool_tip = base::UTF8ToUTF16(extension_->name());
 
   status_icon_ = status_tray_->CreateStatusIcon(StatusTray::OTHER_ICON,
                                                 icon_skia, tool_tip);
diff --git a/chrome/browser/extensions/api/tab_groups/tab_groups_api.cc b/chrome/browser/extensions/api/tab_groups/tab_groups_api.cc
index 44fedb4..df63f4f6 100644
--- a/chrome/browser/extensions/api/tab_groups/tab_groups_api.cc
+++ b/chrome/browser/extensions/api/tab_groups/tab_groups_api.cc
@@ -181,7 +181,7 @@
   if (params->update_properties.color != api::tab_groups::COLOR_NONE)
     color = tab_groups_util::ColorToColorId(params->update_properties.color);
 
-  base::string16 title = visual_data->title();
+  std::u16string title = visual_data->title();
   if (params->update_properties.title.get())
     title = base::UTF8ToUTF16(*params->update_properties.title);
 
diff --git a/chrome/browser/extensions/api/tab_groups/tab_groups_api_unittest.cc b/chrome/browser/extensions/api/tab_groups/tab_groups_api_unittest.cc
index efebc9b2..86df4d2c 100644
--- a/chrome/browser/extensions/api/tab_groups/tab_groups_api_unittest.cc
+++ b/chrome/browser/extensions/api/tab_groups/tab_groups_api_unittest.cc
@@ -212,17 +212,17 @@
   // Create 3 groups with different colors.
   tab_groups::TabGroupId group1 = tab_strip_model->AddToNewGroup({0});
   tab_groups::TabGroupVisualData visual_data1(
-      base::string16(), tab_groups::TabGroupColorId::kGrey);
+      std::u16string(), tab_groups::TabGroupColorId::kGrey);
   tab_group_model->GetTabGroup(group1)->SetVisualData(visual_data1);
 
   tab_groups::TabGroupId group2 = tab_strip_model->AddToNewGroup({1});
   tab_groups::TabGroupVisualData visual_data2(
-      base::string16(), tab_groups::TabGroupColorId::kRed);
+      std::u16string(), tab_groups::TabGroupColorId::kRed);
   tab_group_model->GetTabGroup(group2)->SetVisualData(visual_data2);
 
   tab_groups::TabGroupId group3 = tab_strip_model->AddToNewGroup({2});
   tab_groups::TabGroupVisualData visual_data3(
-      base::string16(), tab_groups::TabGroupColorId::kBlue);
+      std::u16string(), tab_groups::TabGroupColorId::kBlue);
   tab_group_model->GetTabGroup(group3)->SetVisualData(visual_data3);
 
   // Query by color and verify results.
diff --git a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
index a21745b..3cb10ea6 100644
--- a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
+++ b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
@@ -209,7 +209,7 @@
   return true;
 }
 
-bool ChromeVirtualKeyboardDelegate::InsertText(const base::string16& text) {
+bool ChromeVirtualKeyboardDelegate::InsertText(const std::u16string& text) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   ui::TextInputClient* tic = GetFocusedTextInputClient();
   if (!tic || tic->GetTextInputType() == ui::TEXT_INPUT_TYPE_NONE)
diff --git a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.h b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.h
index 5ab0e8f..ebc1927 100644
--- a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.h
+++ b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.h
@@ -36,7 +36,7 @@
       OnKeyboardSettingsCallback on_settings_callback) override;
   void OnKeyboardConfigChanged() override;
   bool HideKeyboard() override;
-  bool InsertText(const base::string16& text) override;
+  bool InsertText(const std::u16string& text) override;
   bool OnKeyboardLoaded() override;
   void SetHotrodKeyboard(bool enable) override;
   bool LockKeyboard(bool state) override;
diff --git a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
index 1220977e..e3051aa 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
@@ -475,8 +475,8 @@
 TEST(ExtensionWebRequestHelpersTest, TestCalculateOnAuthRequiredDelta) {
   const bool cancel = true;
 
-  base::string16 username = base::ASCIIToUTF16("foo");
-  base::string16 password = base::ASCIIToUTF16("bar");
+  std::u16string username = base::ASCIIToUTF16("foo");
+  std::u16string password = base::ASCIIToUTF16("bar");
   net::AuthCredentials credentials(username, password);
 
   EventResponseDelta delta = CalculateOnAuthRequiredDelta(
@@ -1910,9 +1910,9 @@
 TEST(ExtensionWebRequestHelpersTest, TestMergeOnAuthRequiredResponses) {
   helpers::IgnoredActions ignored_actions;
   EventResponseDeltas deltas;
-  base::string16 username = base::ASCIIToUTF16("foo");
-  base::string16 password = base::ASCIIToUTF16("bar");
-  base::string16 password2 = base::ASCIIToUTF16("baz");
+  std::u16string username = base::ASCIIToUTF16("foo");
+  std::u16string password = base::ASCIIToUTF16("bar");
+  std::u16string password2 = base::ASCIIToUTF16("baz");
 
   // Check that we can handle if not returning credentials.
   {
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
index c1208be..c7cbf332 100644
--- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -2981,7 +2981,7 @@
           "content/test/data", GURL(origin));
   GURL main_url(origin + "/appcache/simple_page_with_manifest.html");
 
-  base::string16 expected_title = base::ASCIIToUTF16("AppCache updated");
+  std::u16string expected_title = base::ASCIIToUTF16("AppCache updated");
 
   // Load the main page first to make sure it is cached. After the first
   // navigation, load the extension, then navigate again.
@@ -3050,7 +3050,7 @@
           "content/test/data", GURL(origin));
   GURL main_url(origin + "/appcache/simple_page_with_manifest.html");
 
-  base::string16 expected_title = base::ASCIIToUTF16("AppCache updated");
+  std::u16string expected_title = base::ASCIIToUTF16("AppCache updated");
 
   // Load the main page first to make sure it is cached. After the first
   // navigation, load the extension, then navigate again.
@@ -3342,7 +3342,7 @@
   GURL page_url = embedded_test_server()->GetURL("/test.html");
   content::WebContents* web_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
-  base::string16 expected_title =
+  std::u16string expected_title =
       base::ASCIIToUTF16("ScriptDone:UrnUUIDScriptDone");
   content::TitleWatcher title_watcher(web_contents, expected_title);
   ui_test_utils::NavigateToURL(browser(), page_url);
@@ -3476,7 +3476,7 @@
   ui_test_utils::NavigateToURL(browser(), page_url);
   EXPECT_EQ(page_url, web_contents->GetLastCommittedURL());
 
-  base::string16 expected_title1 = base::ASCIIToUTF16("script loaded");
+  std::u16string expected_title1 = base::ASCIIToUTF16("script loaded");
   content::TitleWatcher title_watcher1(web_contents, expected_title1);
   EXPECT_TRUE(TryLoadScript("pass.js"));
   // Check that the script in the web bundle is correctly loaded even when the
@@ -3485,7 +3485,7 @@
 
   EXPECT_FALSE(TryLoadScript("cancel.js"));
 
-  base::string16 expected_title2 = base::ASCIIToUTF16("urn uuid script loaded");
+  std::u16string expected_title2 = base::ASCIIToUTF16("urn uuid script loaded");
   content::TitleWatcher title_watcher2(web_contents, expected_title2);
   EXPECT_TRUE(TryLoadScript(pass_urn_uuid_js_url));
   // Check that the urn UUID script in the web bundle is correctly loaded even
@@ -3587,7 +3587,7 @@
   content::WebContents* web_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
 
-  base::string16 expected_title =
+  std::u16string expected_title =
       base::ASCIIToUTF16("200:bar-changed, inserted");
   content::TitleWatcher title_watcher(
       browser()->tab_strip_model()->GetActiveWebContents(), expected_title);
@@ -3691,7 +3691,7 @@
   content::WebContents* web_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
 
-  base::string16 expected_title = base::ASCIIToUTF16("failed to load");
+  std::u16string expected_title = base::ASCIIToUTF16("failed to load");
   content::TitleWatcher title_watcher(
       browser()->tab_strip_model()->GetActiveWebContents(), expected_title);
 
@@ -3824,7 +3824,7 @@
   ui_test_utils::NavigateToURL(browser(), page_url);
   EXPECT_EQ(page_url, web_contents->GetLastCommittedURL());
   {
-    base::string16 expected_title = base::ASCIIToUTF16("redirected");
+    std::u16string expected_title = base::ASCIIToUTF16("redirected");
     content::TitleWatcher title_watcher(web_contents, expected_title);
     EXPECT_TRUE(TryLoadScript("redirect.js"));
     EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
@@ -3833,7 +3833,7 @@
     // In the current implementation, extensions can redirect the request to
     // the other resource in the web bundle even if the resource is not listed
     // in the resources attribute.
-    base::string16 expected_title =
+    std::u16string expected_title =
         base::ASCIIToUTF16("redirected_to_unlisted");
     content::TitleWatcher title_watcher(web_contents, expected_title);
     EXPECT_TRUE(TryLoadScript("redirect_to_unlisted.js"));
diff --git a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_browsertest.cc b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_browsertest.cc
index 24b2f031..7551603 100644
--- a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_browsertest.cc
+++ b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_browsertest.cc
@@ -309,7 +309,7 @@
 
   content::TitleWatcher title_watcher(tab, base::ASCIIToUTF16("success"));
   title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("failure"));
-  base::string16 result = title_watcher.WaitAndGetTitle();
+  std::u16string result = title_watcher.WaitAndGetTitle();
   EXPECT_EQ(base::ASCIIToUTF16("success"), result);
 }
 #endif  // BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION)
diff --git a/chrome/browser/extensions/api/webrtc_desktop_capture_private/webrtc_desktop_capture_private_api.cc b/chrome/browser/extensions/api/webrtc_desktop_capture_private/webrtc_desktop_capture_private_api.cc
index d212ed1..f940fe4 100644
--- a/chrome/browser/extensions/api/webrtc_desktop_capture_private/webrtc_desktop_capture_private_api.cc
+++ b/chrome/browser/extensions/api/webrtc_desktop_capture_private/webrtc_desktop_capture_private_api.cc
@@ -63,7 +63,7 @@
       !network::IsUrlPotentiallyTrustworthy(origin)) {
     return RespondNow(Error(kUrlNotSecure));
   }
-  base::string16 target_name =
+  std::u16string target_name =
       base::UTF8ToUTF16(network::IsUrlPotentiallyTrustworthy(origin)
                             ? net::GetHostAndOptionalPort(origin)
                             : origin.spec());
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
index 9bbcf59..6e0b2fc 100644
--- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
+++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
@@ -345,7 +345,7 @@
 WebstorePrivateBeginInstallWithManifest3Function::
     ~WebstorePrivateBeginInstallWithManifest3Function() = default;
 
-base::string16 WebstorePrivateBeginInstallWithManifest3Function::
+std::u16string WebstorePrivateBeginInstallWithManifest3Function::
     GetBlockedByPolicyErrorMessageForTesting() const {
   return blocked_by_policy_error_message_;
 }
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.h b/chrome/browser/extensions/api/webstore_private/webstore_private_api.h
index 3be1205..2215fbb 100644
--- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.h
+++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.h
@@ -60,7 +60,7 @@
 
   WebstorePrivateBeginInstallWithManifest3Function();
 
-  base::string16 GetBlockedByPolicyErrorMessageForTesting() const;
+  std::u16string GetBlockedByPolicyErrorMessageForTesting() const;
   bool GetFrictionDialogShownForTesting() const {
     return friction_dialog_shown_;
   }
@@ -140,7 +140,7 @@
   // ExtensionInstallPrompt to prompt for confirmation of the install.
   scoped_refptr<Extension> dummy_extension_;
 
-  base::string16 blocked_by_policy_error_message_;
+  std::u16string blocked_by_policy_error_message_;
 
 #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
   std::unique_ptr<ParentPermissionDialog> parent_permission_dialog_;
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_unittest.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_unittest.cc
index d825b10e..bbaa572102 100644
--- a/chrome/browser/extensions/api/webstore_private/webstore_private_unittest.cc
+++ b/chrome/browser/extensions/api/webstore_private/webstore_private_unittest.cc
@@ -361,7 +361,7 @@
 
   void VerifyBlockedByPolicyFunctionResult(
       WebstorePrivateBeginInstallWithManifest3Function* function,
-      const base::string16& expected_blocked_message) {
+      const std::u16string& expected_blocked_message) {
     const base::Value* result;
     ASSERT_TRUE(function->GetResultList() &&
                 function->GetResultList()->Get(0, &result));
@@ -513,7 +513,7 @@
                               GenerateArgs(kExtensionId, kExtensionManifest),
                               profile());
   VerifyPendingList({}, profile());
-  VerifyBlockedByPolicyFunctionResult(function.get(), base::string16());
+  VerifyBlockedByPolicyFunctionResult(function.get(), std::u16string());
 }
 
 TEST_F(WebstorePrivateBeginInstallWithManifest3Test,
@@ -530,7 +530,7 @@
   api_test_utils::RunFunction(function.get(),
                               GenerateArgs(kExtensionId, kExtensionManifest),
                               profile());
-  VerifyBlockedByPolicyFunctionResult(function.get(), base::string16());
+  VerifyBlockedByPolicyFunctionResult(function.get(), std::u16string());
 }
 
 TEST_F(WebstorePrivateBeginInstallWithManifest3Test,
@@ -547,7 +547,7 @@
   api_test_utils::RunFunction(function.get(),
                               GenerateArgs(kExtensionId, kExtensionManifest),
                               profile());
-  VerifyBlockedByPolicyFunctionResult(function.get(), base::string16());
+  VerifyBlockedByPolicyFunctionResult(function.get(), std::u16string());
 }
 
 TEST_F(WebstorePrivateBeginInstallWithManifest3Test,
diff --git a/chrome/browser/extensions/chrome_extension_web_contents_observer.cc b/chrome/browser/extensions/chrome_extension_web_contents_observer.cc
index 07ccbdc..71abe6d 100644
--- a/chrome/browser/extensions/chrome_extension_web_contents_observer.cc
+++ b/chrome/browser/extensions/chrome_extension_web_contents_observer.cc
@@ -108,8 +108,8 @@
 
 void ChromeExtensionWebContentsObserver::OnDetailedConsoleMessageAdded(
     content::RenderFrameHost* render_frame_host,
-    const base::string16& message,
-    const base::string16& source,
+    const std::u16string& message,
+    const std::u16string& source,
     const StackTrace& stack_trace,
     int32_t severity_level) {
   DCHECK(initialized());
diff --git a/chrome/browser/extensions/chrome_extension_web_contents_observer.h b/chrome/browser/extensions/chrome_extension_web_contents_observer.h
index 527ae33c6..0c34b654 100644
--- a/chrome/browser/extensions/chrome_extension_web_contents_observer.h
+++ b/chrome/browser/extensions/chrome_extension_web_contents_observer.h
@@ -55,8 +55,8 @@
   // Adds a message to the extensions ErrorConsole.
   void OnDetailedConsoleMessageAdded(
       content::RenderFrameHost* render_frame_host,
-      const base::string16& message,
-      const base::string16& source,
+      const std::u16string& message,
+      const std::u16string& source,
       const StackTrace& stack_trace,
       int32_t severity_level);
 
diff --git a/chrome/browser/extensions/content_verifier_test_utils.cc b/chrome/browser/extensions/content_verifier_test_utils.cc
index abae946..330a185 100644
--- a/chrome/browser/extensions/content_verifier_test_utils.cc
+++ b/chrome/browser/extensions/content_verifier_test_utils.cc
@@ -72,12 +72,12 @@
 }
 
 bool ForceInstallProvider::UserMayModifySettings(const Extension* extension,
-                                                 base::string16* error) const {
+                                                 std::u16string* error) const {
   return extension->id() != id_;
 }
 
 bool ForceInstallProvider::MustRemainEnabled(const Extension* extension,
-                                             base::string16* error) const {
+                                             std::u16string* error) const {
   return extension->id() == id_;
 }
 
diff --git a/chrome/browser/extensions/content_verifier_test_utils.h b/chrome/browser/extensions/content_verifier_test_utils.h
index 409e8e3..34fe20d 100644
--- a/chrome/browser/extensions/content_verifier_test_utils.h
+++ b/chrome/browser/extensions/content_verifier_test_utils.h
@@ -72,9 +72,9 @@
 
   std::string GetDebugPolicyProviderName() const override;
   bool UserMayModifySettings(const Extension* extension,
-                             base::string16* error) const override;
+                             std::u16string* error) const override;
   bool MustRemainEnabled(const Extension* extension,
-                         base::string16* error) const override;
+                         std::u16string* error) const override;
 
  private:
   // The extension id we want to disallow uninstall/disable for.
diff --git a/chrome/browser/extensions/context_menu_matcher.cc b/chrome/browser/extensions/context_menu_matcher.cc
index a81b8f2..dcaa4f6 100644
--- a/chrome/browser/extensions/context_menu_matcher.cc
+++ b/chrome/browser/extensions/context_menu_matcher.cc
@@ -57,7 +57,7 @@
 
 void ContextMenuMatcher::AppendExtensionItems(
     const MenuItem::ExtensionKey& extension_key,
-    const base::string16& selection_text,
+    const std::u16string& selection_text,
     int* index,
     bool is_action_menu) {
   DCHECK_GE(*index, 0);
@@ -107,7 +107,7 @@
   } else {
     int menu_id = ConvertToExtensionsCustomCommandId(*index);
     (*index)++;
-    base::string16 title;
+    std::u16string title;
     MenuItem::List submenu_items;
 
     if (items.size() > 1 || items[0]->type() != MenuItem::NORMAL) {
@@ -170,16 +170,16 @@
   extension_menu_models_.clear();
 }
 
-base::string16 ContextMenuMatcher::GetTopLevelContextMenuTitle(
+std::u16string ContextMenuMatcher::GetTopLevelContextMenuTitle(
     const MenuItem::ExtensionKey& extension_key,
-    const base::string16& selection_text) {
+    const std::u16string& selection_text) {
   const Extension* extension = NULL;
   MenuItem::List items;
   bool can_cross_incognito;
   GetRelevantExtensionTopLevelItems(
       extension_key, &extension, &can_cross_incognito, &items);
 
-  base::string16 title;
+  std::u16string title;
 
   if (items.empty() ||
       items.size() > 1 ||
@@ -291,7 +291,7 @@
 void ContextMenuMatcher::RecursivelyAppendExtensionItems(
     const MenuItem::List& items,
     bool can_cross_incognito,
-    const base::string16& selection_text,
+    const std::u16string& selection_text,
     ui::SimpleMenuModel* menu_model,
     int* index,
     bool is_action_menu_top_level) {
@@ -330,8 +330,8 @@
       ++num_visible_items;
 
     extension_item_map_[menu_id] = item->id();
-    base::string16 title = item->TitleWithReplacement(selection_text,
-                                                kMaxExtensionItemTitleLength);
+    std::u16string title = item->TitleWithReplacement(
+        selection_text, kMaxExtensionItemTitleLength);
     if (item->type() == MenuItem::NORMAL) {
       MenuItem::List children =
           GetRelevantExtensionItems(item->children(), can_cross_incognito);
diff --git a/chrome/browser/extensions/context_menu_matcher.h b/chrome/browser/extensions/context_menu_matcher.h
index c827825f..544c212 100644
--- a/chrome/browser/extensions/context_menu_matcher.h
+++ b/chrome/browser/extensions/context_menu_matcher.h
@@ -52,7 +52,7 @@
   // action context menus, in which menu items are not placed in submenus
   // and the extension's icon is not shown.
   void AppendExtensionItems(const MenuItem::ExtensionKey& extension_key,
-                            const base::string16& selection_text,
+                            const std::u16string& selection_text,
                             int* index,
                             bool is_action_menu);
 
@@ -63,9 +63,9 @@
 
   // This function returns the top level context menu title of an extension
   // based on a printable selection text.
-  base::string16 GetTopLevelContextMenuTitle(
+  std::u16string GetTopLevelContextMenuTitle(
       const MenuItem::ExtensionKey& extension_key,
-      const base::string16& selection_text);
+      const std::u16string& selection_text);
 
   void set_smart_text_selection_enabled(bool enabled) {
     is_smart_text_selection_enabled_ = enabled;
@@ -98,7 +98,7 @@
   // Used for recursively adding submenus of extension items.
   void RecursivelyAppendExtensionItems(const MenuItem::List& items,
                                        bool can_cross_incognito,
-                                       const base::string16& selection_text,
+                                       const std::u16string& selection_text,
                                        ui::SimpleMenuModel* menu_model,
                                        int* index,
                                        bool is_action_menu_top_level);
diff --git a/chrome/browser/extensions/context_menu_matcher_unittest.cc b/chrome/browser/extensions/context_menu_matcher_unittest.cc
index cc3ec9e..9790b260 100644
--- a/chrome/browser/extensions/context_menu_matcher_unittest.cc
+++ b/chrome/browser/extensions/context_menu_matcher_unittest.cc
@@ -89,7 +89,7 @@
           profile_.get(), nullptr, menu_model.get(),
           base::BindRepeating(MenuItemHasAnyContext));
 
-  base::string16 printable_selection_text;
+  std::u16string printable_selection_text;
   int index = 0;
 
   // Add the items associated with the test extension.
@@ -124,7 +124,7 @@
           base::BindRepeating(MenuItemHasAnyContext));
 
   // Add the items associated with the test extension.
-  base::string16 printable_selection_text;
+  std::u16string printable_selection_text;
   int index = 0;
   extension_items->AppendExtensionItems(MenuItem::ExtensionKey(extension->id()),
                                         printable_selection_text, &index,
@@ -170,7 +170,7 @@
           base::BindRepeating(MenuItemHasAnyContext));
 
   // Add the items associated with the test extension.
-  base::string16 printable_selection_text;
+  std::u16string printable_selection_text;
   int index = 0;
   extension_items->AppendExtensionItems(MenuItem::ExtensionKey(extension->id()),
                                         printable_selection_text, &index,
diff --git a/chrome/browser/extensions/convert_user_script.cc b/chrome/browser/extensions/convert_user_script.cc
index 359d9e0..2d1e153 100644
--- a/chrome/browser/extensions/convert_user_script.cc
+++ b/chrome/browser/extensions/convert_user_script.cc
@@ -34,8 +34,10 @@
 namespace extensions {
 
 scoped_refptr<Extension> ConvertUserScriptToExtension(
-    const base::FilePath& user_script_path, const GURL& original_url,
-    const base::FilePath& extensions_dir, base::string16* error) {
+    const base::FilePath& user_script_path,
+    const GURL& original_url,
+    const base::FilePath& extensions_dir,
+    std::u16string* error) {
   using ContentScript = api::content_scripts::ContentScript;
 
   std::string content;
@@ -166,7 +168,7 @@
   }
 
   // TODO(rdevlin.cronin): Continue removing std::string errors and replacing
-  // with base::string16
+  // with std::u16string
   std::string utf8_error;
   scoped_refptr<Extension> extension =
       Extension::Create(temp_dir.GetPath(), Manifest::INTERNAL, *root,
diff --git a/chrome/browser/extensions/convert_user_script.h b/chrome/browser/extensions/convert_user_script.h
index 1a910a0..1d996b0b 100644
--- a/chrome/browser/extensions/convert_user_script.h
+++ b/chrome/browser/extensions/convert_user_script.h
@@ -27,8 +27,10 @@
 // NOTE: The caller takes ownership of the directory at extension->path() on the
 // returned object.
 scoped_refptr<extensions::Extension> ConvertUserScriptToExtension(
-    const base::FilePath& user_script, const GURL& original_url,
-    const base::FilePath& extensions_dir, base::string16* error);
+    const base::FilePath& user_script,
+    const GURL& original_url,
+    const base::FilePath& extensions_dir,
+    std::u16string* error);
 
 }  // namespace extensions
 
diff --git a/chrome/browser/extensions/convert_user_script_unittest.cc b/chrome/browser/extensions/convert_user_script_unittest.cc
index d95186b..91ebffa 100644
--- a/chrome/browser/extensions/convert_user_script_unittest.cc
+++ b/chrome/browser/extensions/convert_user_script_unittest.cc
@@ -43,13 +43,13 @@
   test_file = test_file.AppendASCII("extensions")
                        .AppendASCII("user_script_basic.user.js");
 
-  base::string16 error;
+  std::u16string error;
   scoped_refptr<Extension> extension(
       ConvertUserScriptToExtension(test_file, GURL("http://www.google.com/foo"),
                                    extensions_dir.GetPath(), &error));
 
   ASSERT_TRUE(extension.get());
-  EXPECT_EQ(base::string16(), error);
+  EXPECT_EQ(std::u16string(), error);
 
   // Use a temp dir so that the extensions dir will clean itself up.
   base::ScopedTempDir ext_dir;
@@ -96,13 +96,13 @@
   test_file = test_file.AppendASCII("extensions")
                        .AppendASCII("user_script_no_metadata.user.js");
 
-  base::string16 error;
+  std::u16string error;
   scoped_refptr<Extension> extension(ConvertUserScriptToExtension(
       test_file, GURL("http://www.google.com/foo/bar.user.js?monkey"),
       extensions_dir.GetPath(), &error));
 
   ASSERT_TRUE(extension.get());
-  EXPECT_EQ(base::string16(), error);
+  EXPECT_EQ(std::u16string(), error);
 
   // Use a temp dir so that the extensions dir will clean itself up.
   base::ScopedTempDir ext_dir;
@@ -145,7 +145,7 @@
   test_file = test_file.AppendASCII("extensions")
                        .AppendASCII("user_script_not_utf8.user.js");
 
-  base::string16 error;
+  std::u16string error;
   scoped_refptr<Extension> extension(ConvertUserScriptToExtension(
       test_file, GURL("http://www.google.com/foo/bar.user.js?monkey"),
       extensions_dir.GetPath(), &error));
@@ -163,13 +163,13 @@
   test_file = test_file.AppendASCII("extensions")
                        .AppendASCII("user_script_run_at_start.user.js");
 
-  base::string16 error;
+  std::u16string error;
   scoped_refptr<Extension> extension(
       ConvertUserScriptToExtension(test_file, GURL("http://www.google.com/foo"),
                                    extensions_dir.GetPath(), &error));
 
   ASSERT_TRUE(extension.get());
-  EXPECT_EQ(base::string16(), error);
+  EXPECT_EQ(std::u16string(), error);
 
   // Use a temp dir so that the extensions dir will clean itself up.
   base::ScopedTempDir ext_dir;
@@ -198,13 +198,13 @@
   test_file = test_file.AppendASCII("extensions")
                        .AppendASCII("user_script_run_at_end.user.js");
 
-  base::string16 error;
+  std::u16string error;
   scoped_refptr<Extension> extension(
       ConvertUserScriptToExtension(test_file, GURL("http://www.google.com/foo"),
                                    extensions_dir.GetPath(), &error));
 
   ASSERT_TRUE(extension.get());
-  EXPECT_EQ(base::string16(), error);
+  EXPECT_EQ(std::u16string(), error);
 
   // Use a temp dir so that the extensions dir will clean itself up.
   base::ScopedTempDir ext_dir;
@@ -234,13 +234,13 @@
                        .AppendASCII("user_script_run_at_idle.user.js");
   ASSERT_TRUE(base::PathExists(test_file)) << test_file.value();
 
-  base::string16 error;
+  std::u16string error;
   scoped_refptr<Extension> extension(
       ConvertUserScriptToExtension(test_file, GURL("http://www.google.com/foo"),
                                    extensions_dir.GetPath(), &error));
 
   ASSERT_TRUE(extension.get());
-  EXPECT_EQ(base::string16(), error);
+  EXPECT_EQ(std::u16string(), error);
 
   // Use a temp dir so that the extensions dir will clean itself up.
   base::ScopedTempDir ext_dir;
diff --git a/chrome/browser/extensions/convert_web_app.cc b/chrome/browser/extensions/convert_web_app.cc
index bfca290..85b8b2f 100644
--- a/chrome/browser/extensions/convert_web_app.cc
+++ b/chrome/browser/extensions/convert_web_app.cc
@@ -140,7 +140,7 @@
 
 std::unique_ptr<base::DictionaryValue> CreateURLHandlersForBookmarkApp(
     const GURL& scope_url,
-    const base::string16& title) {
+    const std::u16string& title) {
   auto matches = std::make_unique<base::ListValue>();
   matches->AppendString(scope_url.GetOrigin().Resolve(scope_url.path()).spec() +
                         "*");
diff --git a/chrome/browser/extensions/convert_web_app.h b/chrome/browser/extensions/convert_web_app.h
index 38d99dc..e1f0ab0 100644
--- a/chrome/browser/extensions/convert_web_app.h
+++ b/chrome/browser/extensions/convert_web_app.h
@@ -45,7 +45,7 @@
 // So if you change this, you also have to change GetScopeURLFromBookmarkApp().
 std::unique_ptr<base::DictionaryValue> CreateURLHandlersForBookmarkApp(
     const GURL& scope_url,
-    const base::string16& title);
+    const std::u16string& title);
 
 // Retrieves the scope URL from a Bookmark App's URL handlers.
 GURL GetScopeURLFromBookmarkApp(const Extension* extension);
diff --git a/chrome/browser/extensions/corb_and_cors_extension_browsertest.cc b/chrome/browser/extensions/corb_and_cors_extension_browsertest.cc
index 0a4289f..da0ec33 100644
--- a/chrome/browser/extensions/corb_and_cors_extension_browsertest.cc
+++ b/chrome/browser/extensions/corb_and_cors_extension_browsertest.cc
@@ -1731,7 +1731,7 @@
   // is restricted to secure contexts.
   GURL main_url(origin + "/appcache/simple_page_with_manifest.html");
   ui_test_utils::NavigateToURL(browser(), main_url);
-  base::string16 expected_title = base::ASCIIToUTF16("AppCache updated");
+  std::u16string expected_title = base::ASCIIToUTF16("AppCache updated");
   content::TitleWatcher title_watcher(active_web_contents(), expected_title);
   EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
   ui_test_utils::NavigateToURL(browser(), main_url);
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index 77ee3d0..6bb7ec07 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -237,7 +237,7 @@
 }
 
 void CrxInstaller::ConvertUserScriptOnSharedFileThread() {
-  base::string16 error;
+  std::u16string error;
   scoped_refptr<Extension> extension = ConvertUserScriptToExtension(
       source_file_, download_url_, install_directory_, &error);
   if (!extension.get()) {
@@ -954,7 +954,7 @@
   // TODO(aa): All paths to resources inside extensions should be created
   // lazily and based on the Extension's root path at that moment.
   // TODO(rdevlin.cronin): Continue removing std::string errors and replacing
-  // with base::string16
+  // with std::u16string
   std::string extension_id = extension()->id();
   std::string error;
   extension_ = file_util::LoadExtension(
diff --git a/chrome/browser/extensions/crx_installer_browsertest.cc b/chrome/browser/extensions/crx_installer_browsertest.cc
index 66a837a..37e3b15 100644
--- a/chrome/browser/extensions/crx_installer_browsertest.cc
+++ b/chrome/browser/extensions/crx_installer_browsertest.cc
@@ -108,13 +108,13 @@
   bool did_succeed() const { return !extension_id_.empty(); }
   const std::string& extension_id() { return extension_id_; }
   bool confirmation_requested() const { return confirmation_requested_; }
-  const base::string16& error() const { return error_; }
+  const std::u16string& error() const { return error_; }
 
   void set_extension_id(const std::string& id) { extension_id_ = id; }
   void set_confirmation_requested(bool requested) {
     confirmation_requested_ = requested;
   }
-  void set_error(const base::string16& error) { error_ = error; }
+  void set_error(const std::u16string& error) { error_ = error; }
 
   std::unique_ptr<ExtensionInstallPrompt> CreatePrompt();
 
@@ -125,7 +125,7 @@
   // Data reported back to us by the prompt we created.
   bool confirmation_requested_;
   std::string extension_id_;
-  base::string16 error_;
+  std::u16string error_;
 
   std::unique_ptr<ScopedTestDialogAutoConfirm> auto_confirm;
 
@@ -228,7 +228,7 @@
   }
 
   bool UserMayLoad(const Extension* extension,
-                   base::string16* error) const override {
+                   std::u16string* error) const override {
     if (error)
       *error = base::UTF8ToUTF16("Dummy error message");
     return false;
@@ -624,7 +624,7 @@
     EXPECT_EQ(kTestData[i], mock_prompt->confirmation_requested()) <<
         kTestData[i];
     if (kTestData[i]) {
-      EXPECT_EQ(base::string16(), mock_prompt->error()) << kTestData[i];
+      EXPECT_EQ(std::u16string(), mock_prompt->error()) << kTestData[i];
     } else {
       EXPECT_EQ(l10n_util::GetStringUTF16(
           IDS_EXTENSION_INSTALL_DISALLOWED_ON_SITE),
diff --git a/chrome/browser/extensions/dev_mode_bubble_delegate.cc b/chrome/browser/extensions/dev_mode_bubble_delegate.cc
index 2617d0c..3645b3b 100644
--- a/chrome/browser/extensions/dev_mode_bubble_delegate.cc
+++ b/chrome/browser/extensions/dev_mode_bubble_delegate.cc
@@ -49,37 +49,37 @@
     service()->DisableExtension(list[i], disable_reason::DISABLE_USER_ACTION);
 }
 
-base::string16 DevModeBubbleDelegate::GetTitle() const {
+std::u16string DevModeBubbleDelegate::GetTitle() const {
   return l10n_util::GetStringUTF16(IDS_EXTENSIONS_DISABLE_DEVELOPER_MODE_TITLE);
 }
 
-base::string16 DevModeBubbleDelegate::GetMessageBody(
+std::u16string DevModeBubbleDelegate::GetMessageBody(
     bool anchored_to_browser_action,
     int extension_count) const {
   return l10n_util::GetStringUTF16(IDS_EXTENSIONS_DISABLE_DEVELOPER_MODE_BODY);
 }
 
-base::string16 DevModeBubbleDelegate::GetOverflowText(
-    const base::string16& overflow_count) const {
+std::u16string DevModeBubbleDelegate::GetOverflowText(
+    const std::u16string& overflow_count) const {
   return l10n_util::GetStringFUTF16(
             IDS_EXTENSIONS_DISABLED_AND_N_MORE,
             overflow_count);
 }
 
-base::string16 DevModeBubbleDelegate::GetLearnMoreLabel() const {
-  return base::string16();
+std::u16string DevModeBubbleDelegate::GetLearnMoreLabel() const {
+  return std::u16string();
 }
 
 GURL DevModeBubbleDelegate::GetLearnMoreUrl() const {
   return GURL();
 }
 
-base::string16 DevModeBubbleDelegate::GetActionButtonLabel() const {
+std::u16string DevModeBubbleDelegate::GetActionButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_DISABLE);
 }
 
-base::string16 DevModeBubbleDelegate::GetDismissButtonLabel() const {
-  return base::string16();
+std::u16string DevModeBubbleDelegate::GetDismissButtonLabel() const {
+  return std::u16string();
 }
 
 bool DevModeBubbleDelegate::ShouldCloseOnDeactivate() const {
diff --git a/chrome/browser/extensions/dev_mode_bubble_delegate.h b/chrome/browser/extensions/dev_mode_bubble_delegate.h
index 720d46f..e817b58 100644
--- a/chrome/browser/extensions/dev_mode_bubble_delegate.h
+++ b/chrome/browser/extensions/dev_mode_bubble_delegate.h
@@ -28,15 +28,15 @@
       const std::string& extension_id,
       ExtensionMessageBubbleController::BubbleAction user_action) override;
   void PerformAction(const ExtensionIdList& list) override;
-  base::string16 GetTitle() const override;
-  base::string16 GetMessageBody(bool anchored_to_browser_action,
+  std::u16string GetTitle() const override;
+  std::u16string GetMessageBody(bool anchored_to_browser_action,
                                 int extension_count) const override;
-  base::string16 GetOverflowText(
-      const base::string16& overflow_count) const override;
-  base::string16 GetLearnMoreLabel() const override;
+  std::u16string GetOverflowText(
+      const std::u16string& overflow_count) const override;
+  std::u16string GetLearnMoreLabel() const override;
   GURL GetLearnMoreUrl() const override;
-  base::string16 GetActionButtonLabel() const override;
-  base::string16 GetDismissButtonLabel() const override;
+  std::u16string GetActionButtonLabel() const override;
+  std::u16string GetDismissButtonLabel() const override;
   bool ShouldCloseOnDeactivate() const override;
   bool ShouldShow(const ExtensionIdList& extensions) const override;
   void OnShown(const ExtensionIdList& extensions) override;
diff --git a/chrome/browser/extensions/device_permissions_dialog_controller.cc b/chrome/browser/extensions/device_permissions_dialog_controller.cc
index ba49d70..65a0fed 100644
--- a/chrome/browser/extensions/device_permissions_dialog_controller.cc
+++ b/chrome/browser/extensions/device_permissions_dialog_controller.cc
@@ -33,15 +33,15 @@
   return prompt_->multiple();
 }
 
-base::string16 DevicePermissionsDialogController::GetNoOptionsText() const {
+std::u16string DevicePermissionsDialogController::GetNoOptionsText() const {
   return l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT);
 }
 
-base::string16 DevicePermissionsDialogController::GetOkButtonLabel() const {
+std::u16string DevicePermissionsDialogController::GetOkButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_DEVICE_PERMISSIONS_DIALOG_SELECT);
 }
 
-std::pair<base::string16, base::string16>
+std::pair<std::u16string, std::u16string>
 DevicePermissionsDialogController::GetThrobberLabelAndTooltip() const {
   return {
       l10n_util::GetStringUTF16(IDS_DEVICE_PERMISSIONS_DIALOG_LOADING_LABEL),
@@ -53,9 +53,9 @@
   return prompt_->GetDeviceCount();
 }
 
-base::string16 DevicePermissionsDialogController::GetOption(
+std::u16string DevicePermissionsDialogController::GetOption(
     size_t index) const {
-  base::string16 device_name = prompt_->GetDeviceName(index);
+  std::u16string device_name = prompt_->GetDeviceName(index);
   const auto& it = device_name_map_.find(device_name);
   DCHECK(it != device_name_map_.end());
   return it->second == 1
@@ -90,7 +90,7 @@
 
 void DevicePermissionsDialogController::OnDeviceAdded(
     size_t index,
-    const base::string16& device_name) {
+    const std::u16string& device_name) {
   if (view()) {
     ++device_name_map_[device_name];
     view()->OnOptionAdded(index);
@@ -99,7 +99,7 @@
 
 void DevicePermissionsDialogController::OnDeviceRemoved(
     size_t index,
-    const base::string16& device_name) {
+    const std::u16string& device_name) {
   if (view()) {
     DCHECK_GT(device_name_map_[device_name], 0);
     if (--device_name_map_[device_name] == 0)
diff --git a/chrome/browser/extensions/device_permissions_dialog_controller.h b/chrome/browser/extensions/device_permissions_dialog_controller.h
index eef852d..65286cc 100644
--- a/chrome/browser/extensions/device_permissions_dialog_controller.h
+++ b/chrome/browser/extensions/device_permissions_dialog_controller.h
@@ -24,12 +24,12 @@
   // ChooserController:
   bool ShouldShowHelpButton() const override;
   bool AllowMultipleSelection() const override;
-  base::string16 GetNoOptionsText() const override;
-  base::string16 GetOkButtonLabel() const override;
-  std::pair<base::string16, base::string16> GetThrobberLabelAndTooltip()
+  std::u16string GetNoOptionsText() const override;
+  std::u16string GetOkButtonLabel() const override;
+  std::pair<std::u16string, std::u16string> GetThrobberLabelAndTooltip()
       const override;
   size_t NumOptions() const override;
-  base::string16 GetOption(size_t index) const override;
+  std::u16string GetOption(size_t index) const override;
   void Select(const std::vector<size_t>& indices) override;
   void Cancel() override;
   void Close() override;
@@ -37,14 +37,14 @@
 
   // extensions::DevicePermissionsPrompt::Prompt::Observer:
   void OnDevicesInitialized() override;
-  void OnDeviceAdded(size_t index, const base::string16& device_name) override;
+  void OnDeviceAdded(size_t index, const std::u16string& device_name) override;
   void OnDeviceRemoved(size_t index,
-                       const base::string16& device_name) override;
+                       const std::u16string& device_name) override;
 
  private:
   scoped_refptr<extensions::DevicePermissionsPrompt::Prompt> prompt_;
   // Maps from device name to number of devices.
-  std::unordered_map<base::string16, int> device_name_map_;
+  std::unordered_map<std::u16string, int> device_name_map_;
 
   DISALLOW_COPY_AND_ASSIGN(DevicePermissionsDialogController);
 };
diff --git a/chrome/browser/extensions/error_console/error_console_browsertest.cc b/chrome/browser/extensions/error_console/error_console_browsertest.cc
index 7528606..2d2dd6ec 100644
--- a/chrome/browser/extensions/error_console/error_console_browsertest.cc
+++ b/chrome/browser/extensions/error_console/error_console_browsertest.cc
@@ -34,8 +34,8 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "url/gurl.h"
 
-using base::string16;
 using base::UTF8ToUTF16;
+using std::u16string;
 
 namespace extensions {
 
diff --git a/chrome/browser/extensions/extension_bookmarklet_browsertest.cc b/chrome/browser/extensions/extension_bookmarklet_browsertest.cc
index 422c3abd..75b8d01 100644
--- a/chrome/browser/extensions/extension_bookmarklet_browsertest.cc
+++ b/chrome/browser/extensions/extension_bookmarklet_browsertest.cc
@@ -39,7 +39,7 @@
 
   content::WebContents* web_contents =
       browser()->tab_strip_model()->GetActiveWebContents();
-  const base::string16 expected_title = base::ASCIIToUTF16("foo");
+  const std::u16string expected_title = base::ASCIIToUTF16("foo");
   ASSERT_EQ(expected_title, web_contents->GetTitle());
 
   // Attempt to set the page title via Javascript. Don't try to block since
diff --git a/chrome/browser/extensions/extension_browsertest.cc b/chrome/browser/extensions/extension_browsertest.cc
index 00f13589..3b3924c 100644
--- a/chrome/browser/extensions/extension_browsertest.cc
+++ b/chrome/browser/extensions/extension_browsertest.cc
@@ -711,7 +711,7 @@
       VLOG(1) << "  " << extension->id();
 
     VLOG(1) << "Errors follow:";
-    const std::vector<base::string16>* errors =
+    const std::vector<std::u16string>* errors =
         LoadErrorReporter::GetInstance()->GetErrors();
     for (auto iter = errors->begin(); iter != errors->end(); ++iter)
       VLOG(1) << *iter;
diff --git a/chrome/browser/extensions/extension_context_menu_browsertest.cc b/chrome/browser/extensions/extension_context_menu_browsertest.cc
index ec4b982..6dbf824 100644
--- a/chrome/browser/extensions/extension_context_menu_browsertest.cc
+++ b/chrome/browser/extensions/extension_context_menu_browsertest.cc
@@ -182,10 +182,10 @@
 
   bool MenuHasExtensionItemWithLabel(TestRenderViewContextMenu* menu,
                                      const std::string& label) {
-    base::string16 label16 = base::UTF8ToUTF16(label);
+    std::u16string label16 = base::UTF8ToUTF16(label);
     for (const auto& it : menu->extension_items().extension_item_map_) {
       const MenuItem::Id& id = it.second;
-      base::string16 tmp_label;
+      std::u16string tmp_label;
       EXPECT_TRUE(GetItemLabel(menu, id, &tmp_label));
       if (tmp_label == label16)
         return true;
@@ -198,7 +198,7 @@
   // false.
   bool GetItemLabel(TestRenderViewContextMenu* menu,
                     const MenuItem::Id& id,
-                    base::string16* result) const {
+                    std::u16string* result) const {
     int command_id = 0;
     if (!FindCommandId(menu, id, &command_id))
       return false;
@@ -615,7 +615,7 @@
   std::unique_ptr<TestRenderViewContextMenu> menu(
       TestRenderViewContextMenu::Create(GetWebContents(), url, GURL(), GURL()));
 
-  base::string16 label;
+  std::u16string label;
   ASSERT_TRUE(GetItemLabel(menu.get(), item->id(), &label));
   ASSERT_TRUE(label.size() <= limit);
 }
@@ -762,7 +762,7 @@
   // name.
   MenuModel* model = nullptr;
   int index = 0;
-  base::string16 label;
+  std::u16string label;
   ASSERT_TRUE(menu->GetMenuModelAndItemIndex(
       ContextMenuMatcher::ConvertToExtensionsCustomCommandId(0),
       &model,
diff --git a/chrome/browser/extensions/extension_context_menu_model.cc b/chrome/browser/extensions/extension_context_menu_model.cc
index 8f2eee9..4240984 100644
--- a/chrome/browser/extensions/extension_context_menu_model.cc
+++ b/chrome/browser/extensions/extension_context_menu_model.cc
@@ -175,7 +175,7 @@
 
   // ExtensionUninstallDialog::Delegate:
   void OnExtensionUninstallDialogClosed(bool did_start_uninstall,
-                                        const base::string16& error) override {
+                                        const std::u16string& error) override {
     delete this;
   }
 
@@ -452,7 +452,7 @@
 
   int index = 0;
   extension_items_->AppendExtensionItems(MenuItem::ExtensionKey(extension_id_),
-                                         base::string16(), &index,
+                                         std::u16string(), &index,
                                          true);  // is_action_menu
 }
 
diff --git a/chrome/browser/extensions/extension_context_menu_model_unittest.cc b/chrome/browser/extensions/extension_context_menu_model_unittest.cc
index c83daed8..1129f1f7 100644
--- a/chrome/browser/extensions/extension_context_menu_model_unittest.cc
+++ b/chrome/browser/extensions/extension_context_menu_model_unittest.cc
@@ -181,11 +181,11 @@
 // For this test, all the extension items have same label
 // |kTestExtensionItemLabel|.
 int CountExtensionItems(const ExtensionContextMenuModel& model) {
-  base::string16 expected_label = base::ASCIIToUTF16(kTestExtensionItemLabel);
+  std::u16string expected_label = base::ASCIIToUTF16(kTestExtensionItemLabel);
   int num_items_found = 0;
   int num_custom_found = 0;
   for (int i = 0; i < model.GetItemCount(); ++i) {
-    base::string16 actual_label = model.GetLabelAt(i);
+    std::u16string actual_label = model.GetLabelAt(i);
     int command_id = model.GetCommandIdAt(i);
     // If the command id is not visible, it should not be counted.
     if (model.IsCommandIdVisible(command_id)) {
@@ -568,9 +568,9 @@
   // For laziness.
   const ExtensionContextMenuModel::MenuEntries visibility_command =
       ExtensionContextMenuModel::TOGGLE_VISIBILITY;
-  const base::string16 pin_string =
+  const std::u16string pin_string =
       l10n_util::GetStringUTF16(IDS_EXTENSIONS_PIN_TO_TOOLBAR);
-  const base::string16 unpin_string =
+  const std::u16string unpin_string =
       l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNPIN_FROM_TOOLBAR);
 
   {
@@ -647,9 +647,9 @@
   // For laziness.
   const ExtensionContextMenuModel::MenuEntries visibility_command =
       ExtensionContextMenuModel::TOGGLE_VISIBILITY;
-  const base::string16 unpin_string =
+  const std::u16string unpin_string =
       l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNPIN_FROM_TOOLBAR);
-  const base::string16 force_pinned_string =
+  const std::u16string force_pinned_string =
       l10n_util::GetStringUTF16(IDS_EXTENSIONS_PINNED_BY_ADMIN);
 
   {
@@ -1151,7 +1151,7 @@
     }
 
     // Uninstall the extension so as not to conflict with more additions.
-    base::string16 error;
+    std::u16string error;
     EXPECT_TRUE(service()->UninstallExtension(
         extension->id(), UNINSTALL_REASON_FOR_TESTING, &error));
     EXPECT_TRUE(error.empty()) << error;
diff --git a/chrome/browser/extensions/extension_disabled_ui.cc b/chrome/browser/extensions/extension_disabled_ui.cc
index c76c579..a201cdc 100644
--- a/chrome/browser/extensions/extension_disabled_ui.cc
+++ b/chrome/browser/extensions/extension_disabled_ui.cc
@@ -64,12 +64,12 @@
   Severity GetSeverity() override;
   bool HasMenuItem() override;
   int MenuItemCommandID() override;
-  base::string16 MenuItemLabel() override;
+  std::u16string MenuItemLabel() override;
   void ExecuteMenuItem(Browser* browser) override;
-  base::string16 GetBubbleViewTitle() override;
-  std::vector<base::string16> GetBubbleViewMessages() override;
-  base::string16 GetBubbleViewAcceptButtonLabel() override;
-  base::string16 GetBubbleViewCancelButtonLabel() override;
+  std::u16string GetBubbleViewTitle() override;
+  std::vector<std::u16string> GetBubbleViewMessages() override;
+  std::u16string GetBubbleViewAcceptButtonLabel() override;
+  std::u16string GetBubbleViewCancelButtonLabel() override;
   void OnBubbleViewDidClose(Browser* browser) override;
   void BubbleViewAcceptButtonPressed(Browser* browser) override;
   void BubbleViewCancelButtonPressed(Browser* browser) override;
@@ -78,7 +78,7 @@
 
   // ExtensionUninstallDialog::Delegate:
   void OnExtensionUninstallDialogClosed(bool did_start_uninstall,
-                                        const base::string16& error) override;
+                                        const std::u16string& error) override;
 
  private:
   // content::NotificationObserver:
@@ -147,7 +147,7 @@
   return id_provider_.menu_command_id();
 }
 
-base::string16 ExtensionDisabledGlobalError::MenuItemLabel() {
+std::u16string ExtensionDisabledGlobalError::MenuItemLabel() {
   std::string extension_name = extension_->name();
   // Ampersands need to be escaped to avoid being treated like
   // mnemonics in the menu.
@@ -167,7 +167,7 @@
   ShowBubbleView(browser);
 }
 
-base::string16 ExtensionDisabledGlobalError::GetBubbleViewTitle() {
+std::u16string ExtensionDisabledGlobalError::GetBubbleViewTitle() {
   if (is_remote_install_) {
     return l10n_util::GetStringFUTF16(
         IDS_EXTENSION_DISABLED_REMOTE_INSTALL_ERROR_TITLE,
@@ -178,9 +178,9 @@
   }
 }
 
-std::vector<base::string16>
+std::vector<std::u16string>
 ExtensionDisabledGlobalError::GetBubbleViewMessages() {
-  std::vector<base::string16> messages;
+  std::vector<std::u16string> messages;
 
   std::unique_ptr<const PermissionSet> granted_permissions =
       ExtensionPrefs::Get(service_->GetBrowserContext())
@@ -207,7 +207,7 @@
   return messages;
 }
 
-base::string16 ExtensionDisabledGlobalError::GetBubbleViewAcceptButtonLabel() {
+std::u16string ExtensionDisabledGlobalError::GetBubbleViewAcceptButtonLabel() {
   if (is_remote_install_) {
     return l10n_util::GetStringUTF16(
         extension_->is_app()
@@ -218,7 +218,7 @@
       IDS_EXTENSION_PROMPT_PERMISSIONS_ACCEPT_BUTTON);
 }
 
-base::string16 ExtensionDisabledGlobalError::GetBubbleViewCancelButtonLabel() {
+std::u16string ExtensionDisabledGlobalError::GetBubbleViewCancelButtonLabel() {
   return l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_UNINSTALL_BUTTON);
 }
 
@@ -280,7 +280,7 @@
 
 void ExtensionDisabledGlobalError::OnExtensionUninstallDialogClosed(
     bool did_start_uninstall,
-    const base::string16& error) {
+    const std::u16string& error) {
   // No need to do anything.
 }
 
diff --git a/chrome/browser/extensions/extension_error_ui_default.cc b/chrome/browser/extensions/extension_error_ui_default.cc
index ab49910..71f6afa 100644
--- a/chrome/browser/extensions/extension_error_ui_default.cc
+++ b/chrome/browser/extensions/extension_error_ui_default.cc
@@ -25,7 +25,7 @@
 
 namespace {
 
-base::string16 GenerateTitle(const ExtensionSet& forbidden) {
+std::u16string GenerateTitle(const ExtensionSet& forbidden) {
   int app_count = 0;
   int extension_count = 0;
   for (const auto& extension : forbidden) {
@@ -45,10 +45,10 @@
                                           extension_count);
 }
 
-std::vector<base::string16> GenerateMessage(
+std::vector<std::u16string> GenerateMessage(
     const ExtensionSet& forbidden,
     content::BrowserContext* browser_context) {
-  std::vector<base::string16> message;
+  std::vector<std::u16string> message;
   message.reserve(forbidden.size());
   ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context);
   for (const auto& extension : forbidden) {
@@ -86,29 +86,29 @@
     return 0;
   }
 
-  base::string16 MenuItemLabel() override {
+  std::u16string MenuItemLabel() override {
     NOTREACHED();
     return {};
   }
 
   void ExecuteMenuItem(Browser* browser) override { NOTREACHED(); }
 
-  base::string16 GetBubbleViewTitle() override {
+  std::u16string GetBubbleViewTitle() override {
     return GenerateTitle(delegate_->GetBlocklistedExtensions());
   }
 
-  std::vector<base::string16> GetBubbleViewMessages() override {
+  std::vector<std::u16string> GetBubbleViewMessages() override {
     return GenerateMessage(delegate_->GetBlocklistedExtensions(),
                            delegate_->GetContext());
   }
 
-  base::string16 GetBubbleViewAcceptButtonLabel() override {
+  std::u16string GetBubbleViewAcceptButtonLabel() override {
     return l10n_util::GetStringUTF16(IDS_EXTENSION_ALERT_ITEM_OK);
   }
 
-  base::string16 GetBubbleViewCancelButtonLabel() override { return {}; }
+  std::u16string GetBubbleViewCancelButtonLabel() override { return {}; }
 
-  base::string16 GetBubbleViewDetailsButtonLabel() override {
+  std::u16string GetBubbleViewDetailsButtonLabel() override {
     return l10n_util::GetStringUTF16(IDS_EXTENSION_ALERT_ITEM_DETAILS);
   }
 
diff --git a/chrome/browser/extensions/extension_error_ui_default_unittest.cc b/chrome/browser/extensions/extension_error_ui_default_unittest.cc
index 5c35016..ea732f3 100644
--- a/chrome/browser/extensions/extension_error_ui_default_unittest.cc
+++ b/chrome/browser/extensions/extension_error_ui_default_unittest.cc
@@ -50,11 +50,11 @@
   extensions::ExtensionErrorUIDefault ui(&delegate);
   GlobalErrorWithStandardBubble* bubble = ui.GetErrorForTesting();
 
-  base::string16 title = bubble->GetBubbleViewTitle();
+  std::u16string title = bubble->GetBubbleViewTitle();
   EXPECT_THAT(title,
               l10n_util::GetPluralStringFUTF16(IDS_EXTENSION_ALERT_TITLE, 2));
 
-  std::vector<base::string16> messages = bubble->GetBubbleViewMessages();
+  std::vector<std::u16string> messages = bubble->GetBubbleViewMessages();
 
   EXPECT_THAT(
       messages,
@@ -76,10 +76,10 @@
   extensions::ExtensionErrorUIDefault ui(&delegate);
   GlobalErrorWithStandardBubble* bubble = ui.GetErrorForTesting();
 
-  base::string16 title = bubble->GetBubbleViewTitle();
+  std::u16string title = bubble->GetBubbleViewTitle();
   EXPECT_THAT(title, l10n_util::GetPluralStringFUTF16(IDS_APP_ALERT_TITLE, 1));
 
-  std::vector<base::string16> messages = bubble->GetBubbleViewMessages();
+  std::vector<std::u16string> messages = bubble->GetBubbleViewMessages();
 
   EXPECT_THAT(messages, testing::ElementsAre(l10n_util::GetStringFUTF16(
                             IDS_APP_ALERT_ITEM_BLOCKLISTED_OTHER,
@@ -101,10 +101,10 @@
   extensions::ExtensionErrorUIDefault ui(&delegate);
   GlobalErrorWithStandardBubble* bubble = ui.GetErrorForTesting();
 
-  base::string16 title = bubble->GetBubbleViewTitle();
+  std::u16string title = bubble->GetBubbleViewTitle();
   EXPECT_THAT(title, l10n_util::GetPluralStringFUTF16(IDS_APP_ALERT_TITLE, 1));
 
-  std::vector<base::string16> messages = bubble->GetBubbleViewMessages();
+  std::vector<std::u16string> messages = bubble->GetBubbleViewMessages();
 
   EXPECT_THAT(messages, testing::ElementsAre(l10n_util::GetStringFUTF16(
                             IDS_EXTENSION_ALERT_ITEM_BLOCKLISTED_MALWARE,
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index 4aace22..bc3a65da 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -114,7 +114,7 @@
   has_webstore_data_ = true;
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetDialogTitle() const {
+std::u16string ExtensionInstallPrompt::Prompt::GetDialogTitle() const {
   int id = -1;
   switch (type_) {
     case INSTALL_PROMPT:
@@ -181,7 +181,7 @@
   return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL;
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetAcceptButtonLabel() const {
+std::u16string ExtensionInstallPrompt::Prompt::GetAcceptButtonLabel() const {
   int id = -1;
   switch (type_) {
     case INSTALL_PROMPT:
@@ -253,10 +253,10 @@
       NOTREACHED();
   }
 
-  return id != -1 ? l10n_util::GetStringUTF16(id) : base::string16();
+  return id != -1 ? l10n_util::GetStringUTF16(id) : std::u16string();
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetAbortButtonLabel() const {
+std::u16string ExtensionInstallPrompt::Prompt::GetAbortButtonLabel() const {
   int id = -1;
   switch (type_) {
     case INSTALL_PROMPT:
@@ -286,7 +286,7 @@
   return l10n_util::GetStringUTF16(id);
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetPermissionsHeading() const {
+std::u16string ExtensionInstallPrompt::Prompt::GetPermissionsHeading() const {
   int id = -1;
   switch (type_) {
     case INSTALL_PROMPT:
@@ -315,12 +315,12 @@
   return l10n_util::GetStringUTF16(id);
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetRetainedFilesHeading() const {
+std::u16string ExtensionInstallPrompt::Prompt::GetRetainedFilesHeading() const {
   return l10n_util::GetPluralStringFUTF16(
       IDS_EXTENSION_PROMPT_RETAINED_FILES, GetRetainedFileCount());
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetRetainedDevicesHeading()
+std::u16string ExtensionInstallPrompt::Prompt::GetRetainedDevicesHeading()
     const {
   return l10n_util::GetPluralStringFUTF16(
       IDS_EXTENSION_PROMPT_RETAINED_DEVICES, GetRetainedDeviceCount());
@@ -359,33 +359,33 @@
   }
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetRatingCount() const {
+std::u16string ExtensionInstallPrompt::Prompt::GetRatingCount() const {
   CHECK(AllowWebstoreData(type_));
   return l10n_util::GetStringFUTF16(IDS_EXTENSION_RATING_COUNT,
                                     base::NumberToString16(rating_count_));
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetUserCount() const {
+std::u16string ExtensionInstallPrompt::Prompt::GetUserCount() const {
   CHECK(AllowWebstoreData(type_));
 
   if (show_user_count_) {
     return l10n_util::GetStringFUTF16(IDS_EXTENSION_USER_COUNT,
                                       base::UTF8ToUTF16(localized_user_count_));
   }
-  return base::string16();
+  return std::u16string();
 }
 
 size_t ExtensionInstallPrompt::Prompt::GetPermissionCount() const {
   return prompt_permissions_.permissions.size();
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetPermission(
+std::u16string ExtensionInstallPrompt::Prompt::GetPermission(
     size_t index) const {
   CHECK_LT(index, prompt_permissions_.permissions.size());
   return prompt_permissions_.permissions[index];
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetPermissionsDetails(
+std::u16string ExtensionInstallPrompt::Prompt::GetPermissionsDetails(
     size_t index) const {
   CHECK_LT(index, prompt_permissions_.details.size());
   return prompt_permissions_.details[index];
@@ -395,8 +395,8 @@
   return retained_files_.size();
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetRetainedFile(size_t index)
-    const {
+std::u16string ExtensionInstallPrompt::Prompt::GetRetainedFile(
+    size_t index) const {
   CHECK_LT(index, retained_files_.size());
   return retained_files_[index].AsUTF16Unsafe();
 }
@@ -405,7 +405,7 @@
   return retained_device_messages_.size();
 }
 
-base::string16 ExtensionInstallPrompt::Prompt::GetRetainedDeviceMessageString(
+std::u16string ExtensionInstallPrompt::Prompt::GetRetainedDeviceMessageString(
     size_t index) const {
   CHECK_LT(index, retained_device_messages_.size());
   return retained_device_messages_[index];
diff --git a/chrome/browser/extensions/extension_install_prompt.h b/chrome/browser/extensions/extension_install_prompt.h
index 85df7a8..8f437373 100644
--- a/chrome/browser/extensions/extension_install_prompt.h
+++ b/chrome/browser/extensions/extension_install_prompt.h
@@ -114,14 +114,14 @@
     PromptType type() const { return type_; }
 
     // Getters for UI element labels.
-    base::string16 GetDialogTitle() const;
+    std::u16string GetDialogTitle() const;
     int GetDialogButtons() const;
     // Returns the empty string when there should be no "accept" button.
-    base::string16 GetAcceptButtonLabel() const;
-    base::string16 GetAbortButtonLabel() const;
-    base::string16 GetPermissionsHeading() const;
-    base::string16 GetRetainedFilesHeading() const;
-    base::string16 GetRetainedDevicesHeading() const;
+    std::u16string GetAcceptButtonLabel() const;
+    std::u16string GetAbortButtonLabel() const;
+    std::u16string GetPermissionsHeading() const;
+    std::u16string GetRetainedFilesHeading() const;
+    std::u16string GetRetainedDevicesHeading() const;
 
 #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
     void set_requires_parent_permission(bool requires_parent_permission) {
@@ -145,15 +145,15 @@
     // that they append to the star display area.
     typedef void(*StarAppender)(const gfx::ImageSkia*, void*);
     void AppendRatingStars(StarAppender appender, void* data) const;
-    base::string16 GetRatingCount() const;
-    base::string16 GetUserCount() const;
+    std::u16string GetRatingCount() const;
+    std::u16string GetUserCount() const;
     size_t GetPermissionCount() const;
-    base::string16 GetPermission(size_t index) const;
-    base::string16 GetPermissionsDetails(size_t index) const;
+    std::u16string GetPermission(size_t index) const;
+    std::u16string GetPermissionsDetails(size_t index) const;
     size_t GetRetainedFileCount() const;
-    base::string16 GetRetainedFile(size_t index) const;
+    std::u16string GetRetainedFile(size_t index) const;
     size_t GetRetainedDeviceCount() const;
-    base::string16 GetRetainedDeviceMessageString(size_t index) const;
+    std::u16string GetRetainedDeviceMessageString(size_t index) const;
 
     const extensions::Extension* extension() const { return extension_; }
     void set_extension(const extensions::Extension* extension) {
@@ -165,7 +165,7 @@
       retained_files_ = retained_files;
     }
     void set_retained_device_messages(
-        const std::vector<base::string16>& retained_device_messages) {
+        const std::vector<std::u16string>& retained_device_messages) {
       retained_device_messages_ = retained_device_messages;
     }
 
@@ -237,7 +237,7 @@
     bool has_webstore_data_;
 
     std::vector<base::FilePath> retained_files_;
-    std::vector<base::string16> retained_device_messages_;
+    std::vector<std::u16string> retained_device_messages_;
 
     base::ObserverList<Observer> observers_;
 
diff --git a/chrome/browser/extensions/extension_management_internal.cc b/chrome/browser/extensions/extension_management_internal.cc
index a5472cad..601e45fc 100644
--- a/chrome/browser/extensions/extension_management_internal.cc
+++ b/chrome/browser/extensions/extension_management_internal.cc
@@ -102,7 +102,7 @@
 
   // Parses the blocked permission settings.
   const base::ListValue* list_value = nullptr;
-  base::string16 error;
+  std::u16string error;
 
   // Set default blocked permissions, or replace with extension specific blocks.
   APIPermissionSet parsed_blocked_permissions;
diff --git a/chrome/browser/extensions/extension_management_unittest.cc b/chrome/browser/extensions/extension_management_unittest.cc
index e7cb98a4..c2437e7 100644
--- a/chrome/browser/extensions/extension_management_unittest.cc
+++ b/chrome/browser/extensions/extension_management_unittest.cc
@@ -337,12 +337,12 @@
                    const base::DictionaryValue* forcelist,
                    const base::ListValue* allowed_types,
                    const Extension* extension,
-                   base::string16* error);
-  bool UserMayModifySettings(const Extension* extension, base::string16* error);
+                   std::u16string* error);
+  bool UserMayModifySettings(const Extension* extension, std::u16string* error);
   bool ExtensionMayModifySettings(const Extension* source_extension,
                                   const Extension* extension,
-                                  base::string16* error);
-  bool MustRemainEnabled(const Extension* extension, base::string16* error);
+                                  std::u16string* error);
+  bool MustRemainEnabled(const Extension* extension, std::u16string* error);
 
  protected:
   std::unique_ptr<StandardManagementPolicyProvider> provider_;
@@ -363,7 +363,7 @@
     const base::DictionaryValue* forcelist,
     const base::ListValue* allowed_types,
     const Extension* extension,
-    base::string16* error) {
+    std::u16string* error) {
   SetUpPolicyProvider();
   if (blocklist)
     SetPref(true, pref_names::kInstallDenyList, blocklist->CreateDeepCopy());
@@ -377,7 +377,7 @@
 }
 
 bool ExtensionAdminPolicyTest::UserMayModifySettings(const Extension* extension,
-                                                     base::string16* error) {
+                                                     std::u16string* error) {
   SetUpPolicyProvider();
   return provider_->UserMayModifySettings(extension, error);
 }
@@ -385,14 +385,14 @@
 bool ExtensionAdminPolicyTest::ExtensionMayModifySettings(
     const Extension* source_extension,
     const Extension* extension,
-    base::string16* error) {
+    std::u16string* error) {
   SetUpPolicyProvider();
   return provider_->ExtensionMayModifySettings(source_extension, extension,
                                                error);
 }
 
 bool ExtensionAdminPolicyTest::MustRemainEnabled(const Extension* extension,
-                                                 base::string16* error) {
+                                                 std::u16string* error) {
   SetUpPolicyProvider();
   return provider_->MustRemainEnabled(extension, error);
 }
@@ -1053,7 +1053,7 @@
   CreateExtension(Manifest::COMPONENT);
   EXPECT_TRUE(UserMayLoad(nullptr, nullptr, nullptr, nullptr, extension_.get(),
                           nullptr));
-  base::string16 error;
+  std::u16string error;
   EXPECT_TRUE(UserMayLoad(nullptr, nullptr, nullptr, nullptr, extension_.get(),
                           &error));
   EXPECT_TRUE(error.empty());
@@ -1077,7 +1077,7 @@
   base::ListValue blocklist;
   EXPECT_TRUE(UserMayLoad(&blocklist, nullptr, nullptr, nullptr,
                           extension_.get(), nullptr));
-  base::string16 error;
+  std::u16string error;
   EXPECT_TRUE(UserMayLoad(&blocklist, nullptr, nullptr, nullptr,
                           extension_.get(), &error));
   EXPECT_TRUE(error.empty());
@@ -1096,7 +1096,7 @@
   blocklist.AppendString(extension_->id());
   EXPECT_TRUE(UserMayLoad(nullptr, &allowlist, nullptr, nullptr,
                           extension_.get(), nullptr));
-  base::string16 error;
+  std::u16string error;
   EXPECT_TRUE(UserMayLoad(nullptr, &allowlist, nullptr, nullptr,
                           extension_.get(), &error));
   EXPECT_TRUE(error.empty());
@@ -1111,7 +1111,7 @@
   blocklist.AppendString("*");
   EXPECT_FALSE(UserMayLoad(&blocklist, nullptr, nullptr, nullptr,
                            extension_.get(), nullptr));
-  base::string16 error;
+  std::u16string error;
   EXPECT_FALSE(UserMayLoad(&blocklist, nullptr, nullptr, nullptr,
                            extension_.get(), &error));
   EXPECT_FALSE(error.empty());
@@ -1160,7 +1160,7 @@
 TEST_F(ExtensionAdminPolicyTest, UserMayModifySettings) {
   CreateExtension(Manifest::INTERNAL);
   EXPECT_TRUE(UserMayModifySettings(extension_.get(), nullptr));
-  base::string16 error;
+  std::u16string error;
   EXPECT_TRUE(UserMayModifySettings(extension_.get(), &error));
   EXPECT_TRUE(error.empty());
 
@@ -1204,7 +1204,7 @@
 TEST_F(ExtensionAdminPolicyTest, MustRemainEnabled) {
   CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD);
   EXPECT_TRUE(MustRemainEnabled(extension_.get(), nullptr));
-  base::string16 error;
+  std::u16string error;
   EXPECT_TRUE(MustRemainEnabled(extension_.get(), &error));
   EXPECT_FALSE(error.empty());
 
diff --git a/chrome/browser/extensions/extension_message_bubble_controller.cc b/chrome/browser/extensions/extension_message_bubble_controller.cc
index 25c5e79c..9395187 100644
--- a/chrome/browser/extensions/extension_message_bubble_controller.cc
+++ b/chrome/browser/extensions/extension_message_bubble_controller.cc
@@ -47,7 +47,7 @@
 
 ExtensionMessageBubbleController::Delegate::~Delegate() {}
 
-base::string16 ExtensionMessageBubbleController::Delegate::GetLearnMoreLabel()
+std::u16string ExtensionMessageBubbleController::Delegate::GetLearnMoreLabel()
     const {
   return l10n_util::GetStringUTF16(IDS_LEARN_MORE);
 }
@@ -127,14 +127,14 @@
          delegate_->ShouldShow(GetExtensionIdList());
 }
 
-std::vector<base::string16>
+std::vector<std::u16string>
 ExtensionMessageBubbleController::GetExtensionList() {
   ExtensionIdList* list = GetOrCreateExtensionList();
   if (list->empty())
-    return std::vector<base::string16>();
+    return std::vector<std::u16string>();
 
   ExtensionRegistry* registry = ExtensionRegistry::Get(profile());
-  std::vector<base::string16> return_value;
+  std::vector<std::u16string> return_value;
   for (const std::string& id : *list) {
     const Extension* extension =
         registry->GetExtensionById(id, ExtensionRegistry::EVERYTHING);
@@ -143,11 +143,11 @@
   return return_value;
 }
 
-base::string16 ExtensionMessageBubbleController::GetExtensionListForDisplay() {
+std::u16string ExtensionMessageBubbleController::GetExtensionListForDisplay() {
   if (!delegate_->ShouldShowExtensionList())
-    return base::string16();
+    return std::u16string();
 
-  std::vector<base::string16> extension_list = GetExtensionList();
+  std::vector<std::u16string> extension_list = GetExtensionList();
   if (extension_list.size() > kMaxExtensionsToShow) {
     int old_size = extension_list.size();
     extension_list.erase(extension_list.begin() + kMaxExtensionsToShow,
@@ -156,8 +156,8 @@
         base::NumberToString16(old_size - kMaxExtensionsToShow)));
   }
   const char16_t bullet_point = 0x2022;
-  base::string16 prefix = bullet_point + base::ASCIIToUTF16(" ");
-  for (base::string16& str : extension_list)
+  std::u16string prefix = bullet_point + base::ASCIIToUTF16(" ");
+  for (std::u16string& str : extension_list)
     str.insert(0, prefix);
   return base::JoinString(extension_list, base::ASCIIToUTF16("\n"));
 }
diff --git a/chrome/browser/extensions/extension_message_bubble_controller.h b/chrome/browser/extensions/extension_message_bubble_controller.h
index b700396a5..85c28a7 100644
--- a/chrome/browser/extensions/extension_message_bubble_controller.h
+++ b/chrome/browser/extensions/extension_message_bubble_controller.h
@@ -49,22 +49,21 @@
     virtual void PerformAction(const ExtensionIdList& list) = 0;
 
     // Text for various UI labels shown in the bubble.
-    virtual base::string16 GetTitle() const = 0;
+    virtual std::u16string GetTitle() const = 0;
     // Fetches the message to show in the body. |anchored_to_browser_action|
     // will be true if the bubble is anchored against a specific extension
     // icon, allowing the bubble to show a different message than when it is
     // anchored against something else (e.g. show "This extension has..."
     // instead of "An extension has...").
     // |extension_count| is the number of extensions being referenced.
-    virtual base::string16 GetMessageBody(
-        bool anchored_to_browser_action,
-        int extension_count) const = 0;
-    virtual base::string16 GetOverflowText(
-        const base::string16& overflow_count) const = 0;
-    virtual base::string16 GetLearnMoreLabel() const;
+    virtual std::u16string GetMessageBody(bool anchored_to_browser_action,
+                                          int extension_count) const = 0;
+    virtual std::u16string GetOverflowText(
+        const std::u16string& overflow_count) const = 0;
+    virtual std::u16string GetLearnMoreLabel() const;
     virtual GURL GetLearnMoreUrl() const = 0;
-    virtual base::string16 GetActionButtonLabel() const = 0;
-    virtual base::string16 GetDismissButtonLabel() const = 0;
+    virtual std::u16string GetActionButtonLabel() const = 0;
+    virtual std::u16string GetDismissButtonLabel() const = 0;
 
     // Returns true if the bubble should close when the widget deactivates.
     virtual bool ShouldCloseOnDeactivate() const = 0;
@@ -148,12 +147,12 @@
   bool ShouldShow();
 
   // Obtains a list of all extensions (by name) the controller knows about.
-  std::vector<base::string16> GetExtensionList();
+  std::vector<std::u16string> GetExtensionList();
 
   // Returns the list of all extensions to display in the bubble, including
   // bullets and newlines. If the extension list should not be displayed,
   // returns an empty string.
-  base::string16 GetExtensionListForDisplay();
+  std::u16string GetExtensionListForDisplay();
 
   // Obtains a list of all extensions (by id) the controller knows about.
   const ExtensionIdList& GetExtensionIdList();
diff --git a/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc b/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc
index 8c034e9..8e49485 100644
--- a/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc
+++ b/chrome/browser/extensions/extension_message_bubble_controller_unittest.cc
@@ -385,7 +385,7 @@
       const std::string& extension_name) {
     controller->SetIsActiveBubble();
     EXPECT_TRUE(controller->ShouldShow());
-    std::vector<base::string16> override_extensions =
+    std::vector<std::u16string> override_extensions =
         controller->GetExtensionList();
     ASSERT_EQ(1U, override_extensions.size());
     EXPECT_EQ(base::UTF8ToUTF16(extension_name), override_extensions[0]);
@@ -441,7 +441,7 @@
 
   // The list will contain one enabled unpacked extension (ext 2).
   EXPECT_TRUE(controller->ShouldShow());
-  std::vector<base::string16> override_extensions =
+  std::vector<std::u16string> override_extensions =
       controller->GetExtensionList();
   ASSERT_EQ(1U, override_extensions.size());
   EXPECT_EQ(base::ASCIIToUTF16("Extension 2"), override_extensions[0]);
@@ -520,7 +520,7 @@
   EXPECT_FALSE(controller->delegate()->HasBubbleInfoBeenAcknowledged(kId1));
 
   EXPECT_FALSE(controller->ShouldShow());
-  std::vector<base::string16> suspicious_extensions =
+  std::vector<std::u16string> suspicious_extensions =
       controller->GetExtensionList();
   EXPECT_EQ(0U, suspicious_extensions.size());
   EXPECT_EQ(0U, controller->link_click_count());
@@ -595,7 +595,7 @@
 
   // The list will contain one enabled unpacked extension.
   EXPECT_TRUE(controller->ShouldShow());
-  std::vector<base::string16> dev_mode_extensions =
+  std::vector<std::u16string> dev_mode_extensions =
       controller->GetExtensionList();
   ASSERT_EQ(2U, dev_mode_extensions.size());
   EXPECT_TRUE(base::ASCIIToUTF16("Extension 2") == dev_mode_extensions[0]);
@@ -783,7 +783,7 @@
 
     // The list will contain one enabled unpacked extension (ext 2).
     EXPECT_TRUE(controller->ShouldShow());
-    std::vector<base::string16> override_extensions =
+    std::vector<std::u16string> override_extensions =
         controller->GetExtensionList();
     ASSERT_EQ(1U, override_extensions.size());
     EXPECT_TRUE(base::ASCIIToUTF16("Extension 2") ==
@@ -928,7 +928,7 @@
   EXPECT_FALSE(controller->delegate()->HasBubbleInfoBeenAcknowledged(kId1));
 
   EXPECT_FALSE(controller->ShouldShow());
-  std::vector<base::string16> suspicious_extensions =
+  std::vector<std::u16string> suspicious_extensions =
       controller->GetExtensionList();
   EXPECT_EQ(0U, suspicious_extensions.size());
 
@@ -1024,7 +1024,7 @@
 
   // The list will contain one enabled unpacked extension (ext 2).
   EXPECT_TRUE(controller->ShouldShow());
-  std::vector<base::string16> override_extensions =
+  std::vector<std::u16string> override_extensions =
       controller->GetExtensionList();
   ASSERT_EQ(1U, override_extensions.size());
   EXPECT_TRUE(base::ASCIIToUTF16("Extension 2") ==
@@ -1206,7 +1206,7 @@
   // The list will contain one enabled unpacked extension (ext 2).
   EXPECT_TRUE(controller->ShouldShow());
   EXPECT_FALSE(controller->ShouldShow());
-  std::vector<base::string16> override_extensions =
+  std::vector<std::u16string> override_extensions =
       controller->GetExtensionList();
   ASSERT_EQ(1U, override_extensions.size());
   EXPECT_EQ(base::ASCIIToUTF16("Extension 2"), override_extensions[0]);
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index fa96b7e..94cf9a1 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -795,7 +795,7 @@
     // to become invalid. Instead, use |extension->id()|.
     const std::string& transient_extension_id,
     UninstallReason reason,
-    base::string16* error) {
+    std::u16string* error) {
   CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
 
   scoped_refptr<const Extension> extension =
@@ -1249,7 +1249,7 @@
     }
   }
   for (auto extension_id : remove_list) {
-    base::string16 error;
+    std::u16string error;
     if (!UninstallExtension(extension_id, UNINSTALL_REASON_INTERNAL_MANAGEMENT,
                             &error)) {
       SYSLOG(WARNING) << "Extension with id " << extension_id
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h
index f86268b..777e5cc 100644
--- a/chrome/browser/extensions/extension_service.h
+++ b/chrome/browser/extensions/extension_service.h
@@ -264,7 +264,7 @@
   // extension).
   bool UninstallExtension(const std::string& extension_id,
                           UninstallReason reason,
-                          base::string16* error);
+                          std::u16string* error);
 
   // Enables the extension. If the extension is already enabled, does
   // nothing.
diff --git a/chrome/browser/extensions/extension_service_test_with_install.cc b/chrome/browser/extensions/extension_service_test_with_install.cc
index 9820c49..86af4401 100644
--- a/chrome/browser/extensions/extension_service_test_with_install.cc
+++ b/chrome/browser/extensions/extension_service_test_with_install.cc
@@ -68,12 +68,12 @@
 }
 
 // static
-std::vector<base::string16> ExtensionServiceTestWithInstall::GetErrors() {
-  const std::vector<base::string16>* errors =
+std::vector<std::u16string> ExtensionServiceTestWithInstall::GetErrors() {
+  const std::vector<std::u16string>* errors =
       LoadErrorReporter::GetInstance()->GetErrors();
-  std::vector<base::string16> ret_val;
+  std::vector<std::u16string> ret_val;
 
-  for (const base::string16& error : *errors) {
+  for (const std::u16string& error : *errors) {
     std::string utf8_error = base::UTF16ToUTF8(error);
     if (utf8_error.find(".svn") == std::string::npos) {
       ret_val.push_back(error);
@@ -207,7 +207,7 @@
     const base::FilePath& path,
     InstallState install_state,
     const std::string& expected_old_name) {
-  std::vector<base::string16> errors = GetErrors();
+  std::vector<std::u16string> errors = GetErrors();
   const Extension* extension = nullptr;
   if (install_state != INSTALL_FAILED) {
     if (install_state == INSTALL_NEW || install_state == INSTALL_WITHOUT_LOAD)
@@ -299,7 +299,7 @@
   else
     content::RunAllTasksUntilIdle();
 
-  std::vector<base::string16> errors = GetErrors();
+  std::vector<std::u16string> errors = GetErrors();
   int error_count = errors.size();
   int enabled_extension_count = registry()->enabled_extensions().size();
   int installed_extension_count =
diff --git a/chrome/browser/extensions/extension_service_test_with_install.h b/chrome/browser/extensions/extension_service_test_with_install.h
index 71466f1..d20ba21 100644
--- a/chrome/browser/extensions/extension_service_test_with_install.h
+++ b/chrome/browser/extensions/extension_service_test_with_install.h
@@ -41,7 +41,7 @@
   void InitializeExtensionService(
       const ExtensionServiceInitParams& params) override;
 
-  static std::vector<base::string16> GetErrors();
+  static std::vector<std::u16string> GetErrors();
 
   void PackCRX(const base::FilePath& dir_path,
                const base::FilePath& pem_path,
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 4c45066..e560626b 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -1465,7 +1465,7 @@
       GURL("http://www.aaronboodman.com/scripts/user_script_basic.user.js"));
 
   content::RunAllTasksUntilIdle();
-  std::vector<base::string16> errors = GetErrors();
+  std::vector<std::u16string> errors = GetErrors();
   EXPECT_TRUE(installed_) << "Nothing was installed.";
   EXPECT_FALSE(was_update_) << path.value();
   ASSERT_EQ(1u, loaded_.size()) << "Nothing was loaded.";
@@ -5193,8 +5193,8 @@
 void CreateDatabase(storage::DatabaseTracker* db_tracker,
                     const std::string& origin_id) {
   DCHECK(db_tracker->task_runner()->RunsTasksInCurrentSequence());
-  base::string16 db_name = base::UTF8ToUTF16("db");
-  base::string16 description = base::UTF8ToUTF16("db_description");
+  std::u16string db_name = base::UTF8ToUTF16("db");
+  std::u16string description = base::UTF8ToUTF16("db_description");
   int64_t size;
   db_tracker->DatabaseOpened(origin_id, db_name, description, 1, &size);
   db_tracker->DatabaseClosed(origin_id, db_name);
@@ -7594,7 +7594,7 @@
   std::string id = (*(registry()->enabled_extensions().begin()))->id();
   service()->BlocklistExtensionForTest(id);
   EXPECT_NE(nullptr, registry()->GetInstalledExtension(id));
-  base::string16 error;
+  std::u16string error;
   EXPECT_TRUE(service()->UninstallExtension(id, UNINSTALL_REASON_USER_INITIATED,
                                             nullptr));
   EXPECT_EQ(nullptr, registry()->GetInstalledExtension(id));
diff --git a/chrome/browser/extensions/extension_sync_service.cc b/chrome/browser/extensions/extension_sync_service.cc
index 8ecc93c..0aa5115af0 100644
--- a/chrome/browser/extensions/extension_sync_service.cc
+++ b/chrome/browser/extensions/extension_sync_service.cc
@@ -330,7 +330,7 @@
 
   // Handle uninstalls first.
   if (extension_sync_data.uninstalled()) {
-    base::string16 error;
+    std::u16string error;
     bool uninstalled = true;
     if (!extension) {
       error = base::ASCIIToUTF16("Unknown extension");
diff --git a/chrome/browser/extensions/extension_ui_util.cc b/chrome/browser/extensions/extension_ui_util.cc
index ca0da5b..a9f64fb 100644
--- a/chrome/browser/extensions/extension_ui_util.cc
+++ b/chrome/browser/extensions/extension_ui_util.cc
@@ -53,10 +53,10 @@
       !IsBlockedByPolicy(extension, context);
 }
 
-base::string16 GetEnabledExtensionNameForUrl(const GURL& url,
+std::u16string GetEnabledExtensionNameForUrl(const GURL& url,
                                              content::BrowserContext* context) {
   if (!url.SchemeIs(extensions::kExtensionScheme))
-    return base::string16();
+    return std::u16string();
 
   extensions::ExtensionRegistry* extension_registry =
       extensions::ExtensionRegistry::Get(context);
@@ -64,7 +64,7 @@
       extension_registry->enabled_extensions().GetByID(url.host());
   return extension ? base::CollapseWhitespace(
                          base::UTF8ToUTF16(extension->name()), false)
-                   : base::string16();
+                   : std::u16string();
 }
 
 bool IsRenderedIconSufficientlyVisibleForBrowserContext(
diff --git a/chrome/browser/extensions/extension_ui_util.h b/chrome/browser/extensions/extension_ui_util.h
index 1484b8d..a08c7967 100644
--- a/chrome/browser/extensions/extension_ui_util.h
+++ b/chrome/browser/extensions/extension_ui_util.h
@@ -40,7 +40,7 @@
 // If |url| is an extension URL, returns the name of the associated extension,
 // with whitespace collapsed. Otherwise, returns empty string. |context| is used
 // to get at the extension registry.
-base::string16 GetEnabledExtensionNameForUrl(const GURL& url,
+std::u16string GetEnabledExtensionNameForUrl(const GURL& url,
                                              content::BrowserContext* context);
 
 // Returns true if the icon, rendered in the toolbar of the current context,
diff --git a/chrome/browser/extensions/extension_uninstall_dialog.cc b/chrome/browser/extensions/extension_uninstall_dialog.cc
index a21a6bf..0395388 100644
--- a/chrome/browser/extensions/extension_uninstall_dialog.cc
+++ b/chrome/browser/extensions/extension_uninstall_dialog.cc
@@ -199,7 +199,7 @@
   return show_report_abuse_checkbox_ || show_remove_data_checkbox_;
 }
 
-base::string16 ExtensionUninstallDialog::GetCheckboxLabel() const {
+std::u16string ExtensionUninstallDialog::GetCheckboxLabel() const {
   DCHECK(ShouldShowCheckbox());
 
   if (show_report_abuse_checkbox_) {
@@ -231,7 +231,7 @@
   }
 
   bool success = false;
-  base::string16 error;
+  std::u16string error;
   switch (action) {
     case CLOSE_ACTION_UNINSTALL_AND_CHECKBOX_CHECKED:
       DCHECK(profile_);
@@ -275,7 +275,7 @@
   delegate_->OnExtensionUninstallDialogClosed(success, error);
 }
 
-bool ExtensionUninstallDialog::Uninstall(base::string16* error) {
+bool ExtensionUninstallDialog::Uninstall(std::u16string* error) {
   DCHECK(profile_);
   const Extension* current_extension =
       ExtensionRegistry::Get(profile_)->GetExtensionById(
diff --git a/chrome/browser/extensions/extension_uninstall_dialog.h b/chrome/browser/extensions/extension_uninstall_dialog.h
index 311228d1..433448a 100644
--- a/chrome/browser/extensions/extension_uninstall_dialog.h
+++ b/chrome/browser/extensions/extension_uninstall_dialog.h
@@ -56,7 +56,7 @@
     // |did_start_uninstall| indicates whether the uninstall process for the
     // extension started. If this is false, |error| will contain the reason.
     virtual void OnExtensionUninstallDialogClosed(bool did_start_uninstall,
-                                                  const base::string16& error) {
+                                                  const std::u16string& error) {
     }
 
    protected:
@@ -101,7 +101,7 @@
 
   // Returns the string to be displayed with the checkbox. Must not be called if
   // ShouldShowCheckbox() returns false.
-  base::string16 GetCheckboxLabel() const;
+  std::u16string GetCheckboxLabel() const;
 
   // Called when the dialog is closing to do any book-keeping.
   void OnDialogClosed(CloseAction action);
@@ -127,7 +127,7 @@
  private:
   // Uninstalls the extension. Returns true on success, and populates |error| on
   // failure.
-  bool Uninstall(base::string16* error);
+  bool Uninstall(std::u16string* error);
 
   // Handles the "report abuse" checkbox being checked at the close of the
   // dialog.
diff --git a/chrome/browser/extensions/external_install_error.cc b/chrome/browser/extensions/external_install_error.cc
index 8b8d030f..be36189 100644
--- a/chrome/browser/extensions/external_install_error.cc
+++ b/chrome/browser/extensions/external_install_error.cc
@@ -48,9 +48,9 @@
 namespace {
 
 // Return the menu label for a global error.
-base::string16 GetMenuItemLabel(const Extension* extension) {
+std::u16string GetMenuItemLabel(const Extension* extension) {
   if (!extension)
-    return base::string16();
+    return std::u16string();
 
   int id = -1;
   if (extension->is_app())
@@ -87,7 +87,7 @@
   Severity GetSeverity() override;
   bool HasMenuItem() override;
   int MenuItemCommandID() override;
-  base::string16 MenuItemLabel() override;
+  std::u16string MenuItemLabel() override;
   void ExecuteMenuItem(Browser* browser) override;
   bool HasBubbleView() override;
   bool HasShownBubbleView() override;
@@ -115,14 +115,14 @@
   Severity GetSeverity() override;
   bool HasMenuItem() override;
   int MenuItemCommandID() override;
-  base::string16 MenuItemLabel() override;
+  std::u16string MenuItemLabel() override;
   void ExecuteMenuItem(Browser* browser) override;
 
   // GlobalErrorWithStandardBubble implementation.
-  base::string16 GetBubbleViewTitle() override;
-  std::vector<base::string16> GetBubbleViewMessages() override;
-  base::string16 GetBubbleViewAcceptButtonLabel() override;
-  base::string16 GetBubbleViewCancelButtonLabel() override;
+  std::u16string GetBubbleViewTitle() override;
+  std::vector<std::u16string> GetBubbleViewMessages() override;
+  std::u16string GetBubbleViewAcceptButtonLabel() override;
+  std::u16string GetBubbleViewCancelButtonLabel() override;
   int GetDefaultDialogButton() const override;
   void OnBubbleViewDidClose(Browser* browser) override;
   void BubbleViewAcceptButtonPressed(Browser* browser) override;
@@ -161,7 +161,7 @@
   return id_provider_.menu_command_id();
 }
 
-base::string16 ExternalInstallMenuAlert::MenuItemLabel() {
+std::u16string ExternalInstallMenuAlert::MenuItemLabel() {
   return GetMenuItemLabel(error_->GetExtension());
 }
 
@@ -212,7 +212,7 @@
   return id_provider_.menu_command_id();
 }
 
-base::string16 ExternalInstallBubbleAlert::MenuItemLabel() {
+std::u16string ExternalInstallBubbleAlert::MenuItemLabel() {
   return GetMenuItemLabel(error_->GetExtension());
 }
 
@@ -223,15 +223,15 @@
   error_->DidOpenBubbleView();
 }
 
-base::string16 ExternalInstallBubbleAlert::GetBubbleViewTitle() {
+std::u16string ExternalInstallBubbleAlert::GetBubbleViewTitle() {
   return l10n_util::GetStringFUTF16(
       IDS_EXTENSION_EXTERNAL_INSTALL_ALERT_BUBBLE_TITLE,
       base::UTF8ToUTF16(prompt_->extension()->name()));
 }
 
-std::vector<base::string16>
+std::vector<std::u16string>
 ExternalInstallBubbleAlert::GetBubbleViewMessages() {
-  std::vector<base::string16> messages;
+  std::vector<std::u16string> messages;
   int heading_id =
       IDS_EXTENSION_EXTERNAL_INSTALL_ALERT_BUBBLE_HEADING_EXTENSION;
   if (prompt_->extension()->is_app())
@@ -265,11 +265,11 @@
   return GlobalErrorWithStandardBubble::GetDefaultDialogButton();
 }
 
-base::string16 ExternalInstallBubbleAlert::GetBubbleViewAcceptButtonLabel() {
+std::u16string ExternalInstallBubbleAlert::GetBubbleViewAcceptButtonLabel() {
   return prompt_->GetAcceptButtonLabel();
 }
 
-base::string16 ExternalInstallBubbleAlert::GetBubbleViewCancelButtonLabel() {
+std::u16string ExternalInstallBubbleAlert::GetBubbleViewCancelButtonLabel() {
   return prompt_->GetAbortButtonLabel();
 }
 
diff --git a/chrome/browser/extensions/forced_extensions/force_installed_metrics_unittest.cc b/chrome/browser/extensions/forced_extensions/force_installed_metrics_unittest.cc
index 85b6f2b7..0661ba56 100644
--- a/chrome/browser/extensions/forced_extensions/force_installed_metrics_unittest.cc
+++ b/chrome/browser/extensions/forced_extensions/force_installed_metrics_unittest.cc
@@ -593,11 +593,11 @@
   install_stage_tracker()->ReportSandboxedUnpackerFailureReason(
       kExtensionId1,
       CrxInstallError(SandboxedUnpackerFailureReason::CRX_FILE_NOT_READABLE,
-                      base::string16()));
+                      std::u16string()));
   install_stage_tracker()->ReportSandboxedUnpackerFailureReason(
       kExtensionId2,
       CrxInstallError(SandboxedUnpackerFailureReason::UNZIP_FAILED,
-                      base::string16()));
+                      std::u16string()));
   // ForceInstalledMetrics shuts down timer because all extension are either
   // loaded or failed.
   EXPECT_FALSE(fake_timer_->IsRunning());
@@ -619,7 +619,7 @@
   install_stage_tracker()->ReportSandboxedUnpackerFailureReason(
       kExtensionId1,
       CrxInstallError(SandboxedUnpackerFailureReason::CRX_HEADER_INVALID,
-                      base::string16()));
+                      std::u16string()));
   scoped_refptr<const Extension> ext2 = CreateNewExtension(
       kExtensionName2, kExtensionId2, ExtensionStatus::kPending);
   registry()->AddEnabled(ext2.get());
@@ -645,7 +645,7 @@
   install_stage_tracker()->ReportSandboxedUnpackerFailureReason(
       kExtensionId1,
       CrxInstallError(SandboxedUnpackerFailureReason::CRX_HEADER_INVALID,
-                      base::string16()));
+                      std::u16string()));
   scoped_refptr<const Extension> ext2 = CreateNewExtension(
       kExtensionName2, kExtensionId2, ExtensionStatus::kPending);
   registry()->AddEnabled(ext2.get());
@@ -672,7 +672,7 @@
   install_stage_tracker()->ReportSandboxedUnpackerFailureReason(
       kExtensionId1,
       CrxInstallError(SandboxedUnpackerFailureReason::CRX_HEADER_INVALID,
-                      base::string16()));
+                      std::u16string()));
   scoped_refptr<const Extension> ext2 = CreateNewExtension(
       kExtensionName2, kExtensionId2, ExtensionStatus::kPending);
   registry()->AddEnabled(ext2.get());
diff --git a/chrome/browser/extensions/forced_extensions/install_stage_tracker.h b/chrome/browser/extensions/forced_extensions/install_stage_tracker.h
index f809622..bf7f08b 100644
--- a/chrome/browser/extensions/forced_extensions/install_stage_tracker.h
+++ b/chrome/browser/extensions/forced_extensions/install_stage_tracker.h
@@ -358,7 +358,7 @@
     base::Optional<base::TimeTicks> installation_complete_time;
     // Detailed error description when extension failed to install with
     // SandboxedUnpackerFailureReason equal to UNPACKER_CLIENT FAILED.
-    base::Optional<base::string16> unpacker_client_failed_error;
+    base::Optional<std::u16string> unpacker_client_failed_error;
   };
 
   class Observer : public base::CheckedObserver {
diff --git a/chrome/browser/extensions/install_prompt_permissions.cc b/chrome/browser/extensions/install_prompt_permissions.cc
index 6192485..1fb6aa3 100644
--- a/chrome/browser/extensions/install_prompt_permissions.cc
+++ b/chrome/browser/extensions/install_prompt_permissions.cc
@@ -38,9 +38,9 @@
   for (const extensions::PermissionMessage& msg : permissions_messages) {
     permissions.push_back(msg.message());
     // Add a dash to the front of each permission detail.
-    base::string16 details_str;
+    std::u16string details_str;
     if (!msg.submessages().empty()) {
-      std::vector<base::string16> detail_lines_with_bullets;
+      std::vector<std::u16string> detail_lines_with_bullets;
       for (const auto& detail_line : msg.submessages()) {
         detail_lines_with_bullets.push_back(base::ASCIIToUTF16("- ") +
                                             detail_line);
diff --git a/chrome/browser/extensions/install_prompt_permissions.h b/chrome/browser/extensions/install_prompt_permissions.h
index 7f4c65a..240142d 100644
--- a/chrome/browser/extensions/install_prompt_permissions.h
+++ b/chrome/browser/extensions/install_prompt_permissions.h
@@ -26,8 +26,8 @@
   void AddPermissionMessages(
       const extensions::PermissionMessages& permissions_messages);
 
-  std::vector<base::string16> permissions;
-  std::vector<base::string16> details;
+  std::vector<std::u16string> permissions;
+  std::vector<std::u16string> details;
   std::vector<bool> is_showing_details;
 };
 
diff --git a/chrome/browser/extensions/install_verifier.cc b/chrome/browser/extensions/install_verifier.cc
index 8ee620b..bd09443 100644
--- a/chrome/browser/extensions/install_verifier.cc
+++ b/chrome/browser/extensions/install_verifier.cc
@@ -320,7 +320,7 @@
 
 bool InstallVerifier::MustRemainDisabled(const Extension* extension,
                                          disable_reason::DisableReason* reason,
-                                         base::string16* error) const {
+                                         std::u16string* error) const {
   CHECK(extension);
   if (!CanUseExtensionApis(*extension))
     return false;
diff --git a/chrome/browser/extensions/install_verifier.h b/chrome/browser/extensions/install_verifier.h
index 0ea0cd59..9a5eb16 100644
--- a/chrome/browser/extensions/install_verifier.h
+++ b/chrome/browser/extensions/install_verifier.h
@@ -92,7 +92,7 @@
   std::string GetDebugPolicyProviderName() const override;
   bool MustRemainDisabled(const Extension* extension,
                           disable_reason::DisableReason* reason,
-                          base::string16* error) const override;
+                          std::u16string* error) const override;
 
  private:
   // We keep a list of operations to the current set of extensions.
diff --git a/chrome/browser/extensions/install_verifier_unittest.cc b/chrome/browser/extensions/install_verifier_unittest.cc
index 01d26a4..7082fc57 100644
--- a/chrome/browser/extensions/install_verifier_unittest.cc
+++ b/chrome/browser/extensions/install_verifier_unittest.cc
@@ -108,7 +108,7 @@
     EXPECT_EQ(test_case.expected_from_store_status == FROM_STORE,
               InstallVerifier::IsFromStore(*extension, profile()));
     disable_reason::DisableReason disable_reason;
-    base::string16 error;
+    std::u16string error;
     EXPECT_EQ(
         test_case.expected_must_remain_disabled_status == MUST_REMAIN_DISABLED,
         install_verifier->MustRemainDisabled(extension.get(), &disable_reason,
diff --git a/chrome/browser/extensions/load_error_reporter.cc b/chrome/browser/extensions/load_error_reporter.cc
index 6b02b13..95a8894 100644
--- a/chrome/browser/extensions/load_error_reporter.cc
+++ b/chrome/browser/extensions/load_error_reporter.cc
@@ -51,7 +51,7 @@
     content::BrowserContext* browser_context,
     bool be_noisy) {
   std::string path_str = base::UTF16ToUTF8(extension_path.LossyDisplayName());
-  base::string16 message = base::UTF8ToUTF16(base::StringPrintf(
+  std::u16string message = base::UTF8ToUTF16(base::StringPrintf(
       "%s %s. %s",
       l10n_util::GetStringUTF8(IDS_EXTENSIONS_LOAD_ERROR_MESSAGE).c_str(),
       path_str.c_str(), error.c_str()));
@@ -60,7 +60,7 @@
     observer.OnLoadFailure(browser_context, extension_path, error);
 }
 
-void LoadErrorReporter::ReportError(const base::string16& message,
+void LoadErrorReporter::ReportError(const std::u16string& message,
                                     bool be_noisy) {
   // NOTE: There won't be a |ui_task_runner_| in the unit test environment.
   CHECK(!ui_task_runner_ || ui_task_runner_->BelongsToCurrentThread())
@@ -80,7 +80,7 @@
   }
 }
 
-const std::vector<base::string16>* LoadErrorReporter::GetErrors() {
+const std::vector<std::u16string>* LoadErrorReporter::GetErrors() {
   return &errors_;
 }
 
diff --git a/chrome/browser/extensions/load_error_reporter.h b/chrome/browser/extensions/load_error_reporter.h
index f3d483a6..bb9acfeb 100644
--- a/chrome/browser/extensions/load_error_reporter.h
+++ b/chrome/browser/extensions/load_error_reporter.h
@@ -59,10 +59,10 @@
 
   // Report an error. Errors always go to VLOG(1). Optionally, they can also
   // cause a noisy alert box.
-  void ReportError(const base::string16& message, bool be_noisy);
+  void ReportError(const std::u16string& message, bool be_noisy);
 
   // Get the errors that have been reported so far.
-  const std::vector<base::string16>* GetErrors();
+  const std::vector<std::u16string>* GetErrors();
 
   // Clear the list of errors reported so far.
   void ClearErrors();
@@ -78,7 +78,7 @@
   ~LoadErrorReporter();
 
   scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
-  std::vector<base::string16> errors_;
+  std::vector<std::u16string> errors_;
   bool enable_noisy_errors_;
 
   base::ObserverList<Observer>::Unchecked observers_;
diff --git a/chrome/browser/extensions/menu_manager.cc b/chrome/browser/extensions/menu_manager.cc
index 96656b8..4a18451 100644
--- a/chrome/browser/extensions/menu_manager.cc
+++ b/chrome/browser/extensions/menu_manager.cc
@@ -171,9 +171,9 @@
   return result;
 }
 
-base::string16 MenuItem::TitleWithReplacement(const base::string16& selection,
+std::u16string MenuItem::TitleWithReplacement(const std::u16string& selection,
                                               size_t max_length) const {
-  base::string16 result = base::UTF8ToUTF16(title_);
+  std::u16string result = base::UTF8ToUTF16(title_);
   // TODO(asargent) - Change this to properly handle %% escaping so you can
   // put "%s" in titles that won't get substituted.
   base::ReplaceSubstringsAfterOffset(
diff --git a/chrome/browser/extensions/menu_manager.h b/chrome/browser/extensions/menu_manager.h
index c8bf74c..e2ea24e 100644
--- a/chrome/browser/extensions/menu_manager.h
+++ b/chrome/browser/extensions/menu_manager.h
@@ -208,8 +208,8 @@
 
   // Returns the title with any instances of %s replaced by |selection|. The
   // result will be no longer than |max_length|.
-  base::string16 TitleWithReplacement(const base::string16& selection,
-                                size_t max_length) const;
+  std::u16string TitleWithReplacement(const std::u16string& selection,
+                                      size_t max_length) const;
 
   // Sets the checked state to |checked|. Returns true if successful.
   bool SetChecked(bool checked);
diff --git a/chrome/browser/extensions/menu_manager_unittest.cc b/chrome/browser/extensions/menu_manager_unittest.cc
index b24fab5d..0cee839 100644
--- a/chrome/browser/extensions/menu_manager_unittest.cc
+++ b/chrome/browser/extensions/menu_manager_unittest.cc
@@ -636,7 +636,7 @@
   ASSERT_TRUE(info->GetString("pageUrl", &tmp));
   ASSERT_EQ(params.page_url.spec(), tmp);
 
-  base::string16 tmp16;
+  std::u16string tmp16;
   ASSERT_TRUE(info->GetString("selectionText", &tmp16));
   ASSERT_EQ(params.selection_text, tmp16);
 
diff --git a/chrome/browser/extensions/ntp_overridden_bubble_delegate.cc b/chrome/browser/extensions/ntp_overridden_bubble_delegate.cc
index 1c76cdd..3ef616cc 100644
--- a/chrome/browser/extensions/ntp_overridden_bubble_delegate.cc
+++ b/chrome/browser/extensions/ntp_overridden_bubble_delegate.cc
@@ -118,37 +118,37 @@
   }
 }
 
-base::string16 NtpOverriddenBubbleDelegate::GetTitle() const {
+std::u16string NtpOverriddenBubbleDelegate::GetTitle() const {
   return l10n_util::GetStringUTF16(
       IDS_EXTENSIONS_NTP_CONTROLLED_TITLE_HOME_PAGE_BUBBLE);
 }
 
-base::string16 NtpOverriddenBubbleDelegate::GetMessageBody(
+std::u16string NtpOverriddenBubbleDelegate::GetMessageBody(
     bool anchored_to_browser_action,
     int extension_count) const {
-  base::string16 body =
+  std::u16string body =
       l10n_util::GetStringUTF16(IDS_EXTENSIONS_NTP_CONTROLLED_FIRST_LINE);
   body += l10n_util::GetStringUTF16(
       IDS_EXTENSIONS_SETTINGS_API_THIRD_LINE_CONFIRMATION);
   return body;
 }
 
-base::string16 NtpOverriddenBubbleDelegate::GetOverflowText(
-    const base::string16& overflow_count) const {
+std::u16string NtpOverriddenBubbleDelegate::GetOverflowText(
+    const std::u16string& overflow_count) const {
   // Does not have more than one extension in the list at a time.
   NOTREACHED();
-  return base::string16();
+  return std::u16string();
 }
 
 GURL NtpOverriddenBubbleDelegate::GetLearnMoreUrl() const {
   return GURL(chrome::kExtensionControlledSettingLearnMoreURL);
 }
 
-base::string16 NtpOverriddenBubbleDelegate::GetActionButtonLabel() const {
+std::u16string NtpOverriddenBubbleDelegate::GetActionButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_EXTENSION_CONTROLLED_RESTORE_SETTINGS);
 }
 
-base::string16 NtpOverriddenBubbleDelegate::GetDismissButtonLabel() const {
+std::u16string NtpOverriddenBubbleDelegate::GetDismissButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_EXTENSION_CONTROLLED_KEEP_CHANGES);
 }
 
diff --git a/chrome/browser/extensions/ntp_overridden_bubble_delegate.h b/chrome/browser/extensions/ntp_overridden_bubble_delegate.h
index 430d22243..f27b155 100644
--- a/chrome/browser/extensions/ntp_overridden_bubble_delegate.h
+++ b/chrome/browser/extensions/ntp_overridden_bubble_delegate.h
@@ -44,14 +44,14 @@
       extensions::ExtensionMessageBubbleController::BubbleAction user_action)
       override;
   void PerformAction(const extensions::ExtensionIdList& list) override;
-  base::string16 GetTitle() const override;
-  base::string16 GetMessageBody(bool anchored_to_browser_action,
+  std::u16string GetTitle() const override;
+  std::u16string GetMessageBody(bool anchored_to_browser_action,
                                 int extension_count) const override;
-  base::string16 GetOverflowText(
-      const base::string16& overflow_count) const override;
+  std::u16string GetOverflowText(
+      const std::u16string& overflow_count) const override;
   GURL GetLearnMoreUrl() const override;
-  base::string16 GetActionButtonLabel() const override;
-  base::string16 GetDismissButtonLabel() const override;
+  std::u16string GetActionButtonLabel() const override;
+  std::u16string GetDismissButtonLabel() const override;
   bool ShouldCloseOnDeactivate() const override;
   bool ShouldShow(const ExtensionIdList& extensions) const override;
   void OnShown(const ExtensionIdList& extensions) override;
diff --git a/chrome/browser/extensions/pack_extension_job.cc b/chrome/browser/extensions/pack_extension_job.cc
index b3decec..8dba52d 100644
--- a/chrome/browser/extensions/pack_extension_job.cc
+++ b/chrome/browser/extensions/pack_extension_job.cc
@@ -109,11 +109,11 @@
 }
 
 // static
-base::string16 PackExtensionJob::StandardSuccessMessage(
+std::u16string PackExtensionJob::StandardSuccessMessage(
     const base::FilePath& crx_file,
     const base::FilePath& key_file) {
-  base::string16 crx_file_string = crx_file.LossyDisplayName();
-  base::string16 key_file_string = key_file.LossyDisplayName();
+  std::u16string crx_file_string = crx_file.LossyDisplayName();
+  std::u16string key_file_string = key_file.LossyDisplayName();
   if (key_file_string.empty()) {
     return l10n_util::GetStringFUTF16(
         IDS_EXTENSION_PACK_DIALOG_SUCCESS_BODY_UPDATE,
diff --git a/chrome/browser/extensions/pack_extension_job.h b/chrome/browser/extensions/pack_extension_job.h
index ae18f5a..65ba274 100644
--- a/chrome/browser/extensions/pack_extension_job.h
+++ b/chrome/browser/extensions/pack_extension_job.h
@@ -45,8 +45,8 @@
   void Start();
 
   // The standard packing success message.
-  static base::string16 StandardSuccessMessage(const base::FilePath& crx_file,
-                                         const base::FilePath& key_file);
+  static std::u16string StandardSuccessMessage(const base::FilePath& crx_file,
+                                               const base::FilePath& key_file);
 
   void set_synchronous() { run_mode_ = RunMode::SYNCHRONOUS; }
 
diff --git a/chrome/browser/extensions/permission_messages_unittest.cc b/chrome/browser/extensions/permission_messages_unittest.cc
index 11cad06..c4b4b1e 100644
--- a/chrome/browser/extensions/permission_messages_unittest.cc
+++ b/chrome/browser/extensions/permission_messages_unittest.cc
@@ -68,7 +68,7 @@
 
   // Returns the permission messages that would display in the prompt that
   // requests all the optional permissions for the current |app_|.
-  std::vector<base::string16> GetOptionalPermissionMessages() {
+  std::vector<std::u16string> GetOptionalPermissionMessages() {
     std::unique_ptr<const PermissionSet> granted_permissions =
         env_.GetExtensionPrefs()->GetGrantedPermissions(app_->id());
     const PermissionSet& optional_permissions =
@@ -85,21 +85,21 @@
         PermissionsParser::GetOptionalPermissions(app_.get()));
   }
 
-  std::vector<base::string16> active_permissions() {
+  std::vector<std::u16string> active_permissions() {
     return GetMessages(app_->permissions_data()->active_permissions());
   }
 
-  std::vector<base::string16> required_permissions() {
+  std::vector<std::u16string> required_permissions() {
     return GetMessages(PermissionsParser::GetRequiredPermissions(app_.get()));
   }
 
-  std::vector<base::string16> optional_permissions() {
+  std::vector<std::u16string> optional_permissions() {
     return GetMessages(PermissionsParser::GetOptionalPermissions(app_.get()));
   }
 
  private:
-  std::vector<base::string16> GetMessages(const PermissionSet& permissions) {
-    std::vector<base::string16> messages;
+  std::vector<std::u16string> GetMessages(const PermissionSet& permissions) {
+    std::vector<std::u16string> messages;
     for (const PermissionMessage& msg :
          message_provider_->GetPermissionMessages(
              message_provider_->GetAllPermissionIDs(permissions,
@@ -337,7 +337,7 @@
   PermissionMessages messages = GetMessages(permission.GetPermissions());
   ASSERT_EQ(1U, messages.size());
   EXPECT_EQ(base::ASCIIToUTF16(kMessage), messages.front().message());
-  const std::vector<base::string16>& submessages =
+  const std::vector<std::u16string>& submessages =
       messages.front().submessages();
   ASSERT_EQ(base::size(kDetails), submessages.size());
   for (size_t i = 0; i < submessages.size(); i++)
diff --git a/chrome/browser/extensions/permissions_based_management_policy_provider.cc b/chrome/browser/extensions/permissions_based_management_policy_provider.cc
index 449c630..6a75083 100644
--- a/chrome/browser/extensions/permissions_based_management_policy_provider.cc
+++ b/chrome/browser/extensions/permissions_based_management_policy_provider.cc
@@ -38,7 +38,7 @@
 
 bool PermissionsBasedManagementPolicyProvider::UserMayLoad(
     const Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   // Component extensions are always allowed.
   if (Manifest::IsComponentLocation(extension->location()))
     return true;
diff --git a/chrome/browser/extensions/permissions_based_management_policy_provider.h b/chrome/browser/extensions/permissions_based_management_policy_provider.h
index fc8ca72..dad65f0 100644
--- a/chrome/browser/extensions/permissions_based_management_policy_provider.h
+++ b/chrome/browser/extensions/permissions_based_management_policy_provider.h
@@ -28,7 +28,7 @@
   // ManagementPolicy::Provider implementation.
   std::string GetDebugPolicyProviderName() const override;
   bool UserMayLoad(const Extension* extension,
-                           base::string16* error) const override;
+                   std::u16string* error) const override;
 
  private:
   ExtensionManagement* settings_;
diff --git a/chrome/browser/extensions/permissions_based_management_policy_provider_unittest.cc b/chrome/browser/extensions/permissions_based_management_policy_provider_unittest.cc
index 3abfe4d..4a2f68a 100644
--- a/chrome/browser/extensions/permissions_based_management_policy_provider_unittest.cc
+++ b/chrome/browser/extensions/permissions_based_management_policy_provider_unittest.cc
@@ -106,7 +106,7 @@
                                     &required_permissions,
                                     &optional_permissions);
 
-  base::string16 error16;
+  std::u16string error16;
   // The extension should be allowed to be loaded by default.
   error16.clear();
   EXPECT_TRUE(provider_.UserMayLoad(extension.get(), &error16));
diff --git a/chrome/browser/extensions/process_manager_browsertest.cc b/chrome/browser/extensions/process_manager_browsertest.cc
index 82e37226..1c1037a 100644
--- a/chrome/browser/extensions/process_manager_browsertest.cc
+++ b/chrome/browser/extensions/process_manager_browsertest.cc
@@ -1761,7 +1761,7 @@
   EXPECT_EQ(extension, pm->GetExtensionForWebContents(tab));
   javascript_dialogs::AppModalDialogManager* js_dialog_manager =
       javascript_dialogs::AppModalDialogManager::GetInstance();
-  base::string16 hosted_app_title = base::ASCIIToUTF16("hosted_app");
+  std::u16string hosted_app_title = base::ASCIIToUTF16("hosted_app");
   EXPECT_EQ(hosted_app_title, js_dialog_manager->GetTitle(
                                   tab, tab->GetLastCommittedURL().GetOrigin()));
 
diff --git a/chrome/browser/extensions/proxy_overridden_bubble_delegate.cc b/chrome/browser/extensions/proxy_overridden_bubble_delegate.cc
index 34017d7..c54bfd24 100644
--- a/chrome/browser/extensions/proxy_overridden_bubble_delegate.cc
+++ b/chrome/browser/extensions/proxy_overridden_bubble_delegate.cc
@@ -77,12 +77,12 @@
     service()->DisableExtension(list[i], disable_reason::DISABLE_USER_ACTION);
 }
 
-base::string16 ProxyOverriddenBubbleDelegate::GetTitle() const {
+std::u16string ProxyOverriddenBubbleDelegate::GetTitle() const {
   return l10n_util::GetStringUTF16(
       IDS_EXTENSIONS_PROXY_CONTROLLED_TITLE_HOME_PAGE_BUBBLE);
 }
 
-base::string16 ProxyOverriddenBubbleDelegate::GetMessageBody(
+std::u16string ProxyOverriddenBubbleDelegate::GetMessageBody(
     bool anchored_to_browser_action,
     int extension_count) const {
   if (anchored_to_browser_action) {
@@ -99,22 +99,22 @@
   }
 }
 
-base::string16 ProxyOverriddenBubbleDelegate::GetOverflowText(
-    const base::string16& overflow_count) const {
+std::u16string ProxyOverriddenBubbleDelegate::GetOverflowText(
+    const std::u16string& overflow_count) const {
   // Does not have more than one extension in the list at a time.
   NOTREACHED();
-  return base::string16();
+  return std::u16string();
 }
 
 GURL ProxyOverriddenBubbleDelegate::GetLearnMoreUrl() const {
   return GURL(chrome::kExtensionControlledSettingLearnMoreURL);
 }
 
-base::string16 ProxyOverriddenBubbleDelegate::GetActionButtonLabel() const {
+std::u16string ProxyOverriddenBubbleDelegate::GetActionButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_EXTENSION_CONTROLLED_RESTORE_SETTINGS);
 }
 
-base::string16 ProxyOverriddenBubbleDelegate::GetDismissButtonLabel() const {
+std::u16string ProxyOverriddenBubbleDelegate::GetDismissButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_EXTENSION_CONTROLLED_KEEP_CHANGES);
 }
 
diff --git a/chrome/browser/extensions/proxy_overridden_bubble_delegate.h b/chrome/browser/extensions/proxy_overridden_bubble_delegate.h
index 4ec2d19..27adbde 100644
--- a/chrome/browser/extensions/proxy_overridden_bubble_delegate.h
+++ b/chrome/browser/extensions/proxy_overridden_bubble_delegate.h
@@ -26,14 +26,14 @@
       const std::string& extension_id,
       ExtensionMessageBubbleController::BubbleAction user_action) override;
   void PerformAction(const ExtensionIdList& list) override;
-  base::string16 GetTitle() const override;
-  base::string16 GetMessageBody(bool anchored_to_browser_action,
+  std::u16string GetTitle() const override;
+  std::u16string GetMessageBody(bool anchored_to_browser_action,
                                 int extension_count) const override;
-  base::string16 GetOverflowText(
-      const base::string16& overflow_count) const override;
+  std::u16string GetOverflowText(
+      const std::u16string& overflow_count) const override;
   GURL GetLearnMoreUrl() const override;
-  base::string16 GetActionButtonLabel() const override;
-  base::string16 GetDismissButtonLabel() const override;
+  std::u16string GetActionButtonLabel() const override;
+  std::u16string GetDismissButtonLabel() const override;
   bool ShouldCloseOnDeactivate() const override;
   bool ShouldShow(const ExtensionIdList& extensions) const override;
   void OnShown(const ExtensionIdList& extensions) override;
diff --git a/chrome/browser/extensions/service_worker_apitest.cc b/chrome/browser/extensions/service_worker_apitest.cc
index 37b040b..4537a6c 100644
--- a/chrome/browser/extensions/service_worker_apitest.cc
+++ b/chrome/browser/extensions/service_worker_apitest.cc
@@ -376,7 +376,7 @@
   ASSERT_EQ(kErrorsExpected, error_list.size());
   ASSERT_EQ(
       error_list[0]->message(),
-      base::string16(base::ASCIIToUTF16("Service worker registration failed")));
+      std::u16string(base::ASCIIToUTF16("Service worker registration failed")));
 }
 
 // Tests chrome.runtime.onInstalled fires for extension service workers.
@@ -1219,7 +1219,7 @@
             NavigateAndExtractInnerText(get_resource_url("another.html")));
 
   // Uninstall the extension. Opening pages should fail again.
-  base::string16 error;
+  std::u16string error;
   extension_service()->UninstallExtension(
       extension_id, UninstallReason::UNINSTALL_REASON_FOR_TESTING, &error);
   base::RunLoop().RunUntilIdle();
@@ -2424,7 +2424,7 @@
       run_loop_.QuitWhenIdle();
     }
 
-    base::string16 expected_message_;
+    std::u16string expected_message_;
     base::RunLoop run_loop_;
     ScopedObserver<content::ServiceWorkerContext,
                    content::ServiceWorkerContextObserver>
diff --git a/chrome/browser/extensions/settings_api_bubble_delegate.cc b/chrome/browser/extensions/settings_api_bubble_delegate.cc
index 2bb1e69..8d07e20 100644
--- a/chrome/browser/extensions/settings_api_bubble_delegate.cc
+++ b/chrome/browser/extensions/settings_api_bubble_delegate.cc
@@ -89,7 +89,7 @@
   }
 }
 
-base::string16 SettingsApiBubbleDelegate::GetTitle() const {
+std::u16string SettingsApiBubbleDelegate::GetTitle() const {
   switch (type_) {
     case BUBBLE_TYPE_HOME_PAGE:
       return l10n_util::GetStringUTF16(
@@ -102,10 +102,10 @@
           IDS_EXTENSIONS_SETTINGS_API_TITLE_SEARCH_ENGINE_BUBBLE);
   }
   NOTREACHED();
-  return base::string16();
+  return std::u16string();
 }
 
-base::string16 SettingsApiBubbleDelegate::GetMessageBody(
+std::u16string SettingsApiBubbleDelegate::GetMessageBody(
     bool anchored_to_browser_action,
     int extension_count) const {
   const Extension* extension =
@@ -114,7 +114,7 @@
       extension ? SettingsOverrides::Get(extension) : NULL;
   if (!extension || !settings) {
     NOTREACHED();
-    return base::string16();
+    return std::u16string();
   }
 
   bool home_change = settings->homepage != NULL;
@@ -124,7 +124,7 @@
   int first_line_id = 0;
   int second_line_id = 0;
 
-  base::string16 body;
+  std::u16string body;
   switch (type_) {
     case BUBBLE_TYPE_HOME_PAGE:
       first_line_id = anchored_to_browser_action ?
@@ -178,22 +178,22 @@
   return body;
 }
 
-base::string16 SettingsApiBubbleDelegate::GetOverflowText(
-    const base::string16& overflow_count) const {
+std::u16string SettingsApiBubbleDelegate::GetOverflowText(
+    const std::u16string& overflow_count) const {
   // Does not have more than one extension in the list at a time.
   NOTREACHED();
-  return base::string16();
+  return std::u16string();
 }
 
 GURL SettingsApiBubbleDelegate::GetLearnMoreUrl() const {
   return GURL(chrome::kExtensionControlledSettingLearnMoreURL);
 }
 
-base::string16 SettingsApiBubbleDelegate::GetActionButtonLabel() const {
+std::u16string SettingsApiBubbleDelegate::GetActionButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_EXTENSION_CONTROLLED_RESTORE_SETTINGS);
 }
 
-base::string16 SettingsApiBubbleDelegate::GetDismissButtonLabel() const {
+std::u16string SettingsApiBubbleDelegate::GetDismissButtonLabel() const {
   return l10n_util::GetStringUTF16(IDS_EXTENSION_CONTROLLED_KEEP_CHANGES);
 }
 
diff --git a/chrome/browser/extensions/settings_api_bubble_delegate.h b/chrome/browser/extensions/settings_api_bubble_delegate.h
index 4f718f20..019b937 100644
--- a/chrome/browser/extensions/settings_api_bubble_delegate.h
+++ b/chrome/browser/extensions/settings_api_bubble_delegate.h
@@ -34,14 +34,14 @@
       const std::string& extension_id,
       ExtensionMessageBubbleController::BubbleAction user_action) override;
   void PerformAction(const ExtensionIdList& list) override;
-  base::string16 GetTitle() const override;
-  base::string16 GetMessageBody(bool anchored_to_browser_action,
+  std::u16string GetTitle() const override;
+  std::u16string GetMessageBody(bool anchored_to_browser_action,
                                 int extension_count) const override;
-  base::string16 GetOverflowText(
-      const base::string16& overflow_count) const override;
+  std::u16string GetOverflowText(
+      const std::u16string& overflow_count) const override;
   GURL GetLearnMoreUrl() const override;
-  base::string16 GetActionButtonLabel() const override;
-  base::string16 GetDismissButtonLabel() const override;
+  std::u16string GetActionButtonLabel() const override;
+  std::u16string GetDismissButtonLabel() const override;
   bool ShouldCloseOnDeactivate() const override;
   bool ShouldShow(const ExtensionIdList& extensions) const override;
   void OnShown(const ExtensionIdList& extensions) override;
diff --git a/chrome/browser/extensions/shared_module_service_unittest.cc b/chrome/browser/extensions/shared_module_service_unittest.cc
index 4fa5153..6374e52 100644
--- a/chrome/browser/extensions/shared_module_service_unittest.cc
+++ b/chrome/browser/extensions/shared_module_service_unittest.cc
@@ -160,7 +160,7 @@
   EXPECT_TRUE(InstallExtension(importing_extension.get(), false));
 
   // Uninstall the extension that imports our module.
-  base::string16 error;
+  std::u16string error;
   service()->UninstallExtension(importing_extension->id(),
                                 extensions::UNINSTALL_REASON_FOR_TESTING,
                                 &error);
@@ -297,7 +297,7 @@
   EXPECT_TRUE(InstallExtension(importing_extension.get(), false));
 
   // Uninstall the extension that imports our modules.
-  base::string16 error;
+  std::u16string error;
   service()->UninstallExtension(importing_extension->id(),
                                 extensions::UNINSTALL_REASON_FOR_TESTING,
                                 &error);
diff --git a/chrome/browser/extensions/standard_management_policy_provider.cc b/chrome/browser/extensions/standard_management_policy_provider.cc
index b94d1f2c..98054ad 100644
--- a/chrome/browser/extensions/standard_management_policy_provider.cc
+++ b/chrome/browser/extensions/standard_management_policy_provider.cc
@@ -24,7 +24,7 @@
 // fills |error| with corresponding error message if necessary.
 bool AdminPolicyIsModifiable(const Extension* source_extension,
                              const Extension* extension,
-                             base::string16* error) {
+                             std::u16string* error) {
   // Component and force installed extensions can enable/disable all other
   // extensions including force installed ones (but component are off limits).
   const bool component_or_force_installed =
@@ -74,7 +74,7 @@
 
 bool StandardManagementPolicyProvider::UserMayLoad(
     const Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   // Component extensions are always allowed, besides the camera app that can be
   // disabled by extension policy. This is a temporary solution until there's a
   // dedicated policy to disable the camera, at which point the special check in
@@ -138,7 +138,7 @@
 
 bool StandardManagementPolicyProvider::UserMayInstall(
     const Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   ExtensionManagement::InstallationMode installation_mode =
       settings_->GetInstallationMode(extension);
 
@@ -153,27 +153,27 @@
 
 bool StandardManagementPolicyProvider::UserMayModifySettings(
     const Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   return AdminPolicyIsModifiable(nullptr, extension, error);
 }
 
 bool StandardManagementPolicyProvider::ExtensionMayModifySettings(
     const Extension* source_extension,
     const Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   return AdminPolicyIsModifiable(source_extension, extension, error);
 }
 
 bool StandardManagementPolicyProvider::MustRemainEnabled(
     const Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   return !AdminPolicyIsModifiable(nullptr, extension, error);
 }
 
 bool StandardManagementPolicyProvider::MustRemainDisabled(
     const Extension* extension,
     disable_reason::DisableReason* reason,
-    base::string16* error) const {
+    std::u16string* error) const {
   std::string required_version;
   if (!settings_->CheckMinimumVersion(extension, &required_version)) {
     if (reason)
@@ -191,7 +191,7 @@
 
 bool StandardManagementPolicyProvider::MustRemainInstalled(
     const Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   ExtensionManagement::InstallationMode mode =
       settings_->GetInstallationMode(extension);
   // Disallow removing of recommended extension, to avoid re-install it
@@ -211,7 +211,7 @@
 
 bool StandardManagementPolicyProvider::ShouldForceUninstall(
     const Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   if (UserMayLoad(extension, error))
     return false;
   if (settings_->GetInstallationMode(extension) ==
@@ -223,7 +223,7 @@
 
 bool StandardManagementPolicyProvider::ReturnLoadError(
     const extensions::Extension* extension,
-    base::string16* error) const {
+    std::u16string* error) const {
   if (error) {
     *error = l10n_util::GetStringFUTF16(
         IDS_EXTENSION_CANT_INSTALL_POLICY_BLOCKED,
diff --git a/chrome/browser/extensions/standard_management_policy_provider.h b/chrome/browser/extensions/standard_management_policy_provider.h
index 631456f6..ef4230ea 100644
--- a/chrome/browser/extensions/standard_management_policy_provider.h
+++ b/chrome/browser/extensions/standard_management_policy_provider.h
@@ -27,28 +27,28 @@
   // ManagementPolicy::Provider implementation.
   std::string GetDebugPolicyProviderName() const override;
   bool UserMayLoad(const Extension* extension,
-                   base::string16* error) const override;
+                   std::u16string* error) const override;
   bool UserMayInstall(const Extension* extension,
-                      base::string16* error) const override;
+                      std::u16string* error) const override;
   bool UserMayModifySettings(const Extension* extension,
-                             base::string16* error) const override;
+                             std::u16string* error) const override;
   bool ExtensionMayModifySettings(const Extension* source_extension,
                                   const Extension* extension,
-                                  base::string16* error) const override;
+                                  std::u16string* error) const override;
   bool MustRemainEnabled(const Extension* extension,
-                         base::string16* error) const override;
+                         std::u16string* error) const override;
   bool MustRemainDisabled(const Extension* extension,
                           disable_reason::DisableReason* reason,
-                          base::string16* error) const override;
+                          std::u16string* error) const override;
   bool MustRemainInstalled(const Extension* extension,
-                           base::string16* error) const override;
+                           std::u16string* error) const override;
   bool ShouldForceUninstall(const Extension* extension,
-                            base::string16* error) const override;
+                            std::u16string* error) const override;
 
  private:
   const ExtensionManagement* settings_;
   bool ReturnLoadError(const extensions::Extension* extension,
-                       base::string16* error) const;
+                       std::u16string* error) const;
 };
 
 }  // namespace extensions
diff --git a/chrome/browser/extensions/standard_management_policy_provider_unittest.cc b/chrome/browser/extensions/standard_management_policy_provider_unittest.cc
index 6aa3ea3b..67e7355 100644
--- a/chrome/browser/extensions/standard_management_policy_provider_unittest.cc
+++ b/chrome/browser/extensions/standard_management_policy_provider_unittest.cc
@@ -42,16 +42,16 @@
 TEST_F(StandardManagementPolicyProviderTest, RequiredExtension) {
   auto extension = CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD);
 
-  base::string16 error16;
+  std::u16string error16;
   EXPECT_TRUE(provider_.UserMayLoad(extension.get(), &error16));
-  EXPECT_EQ(base::string16(), error16);
+  EXPECT_EQ(std::u16string(), error16);
 
   // We won't check the exact wording of the error, but it should say
   // something.
   EXPECT_FALSE(provider_.UserMayModifySettings(extension.get(), &error16));
-  EXPECT_NE(base::string16(), error16);
+  EXPECT_NE(std::u16string(), error16);
   EXPECT_TRUE(provider_.MustRemainEnabled(extension.get(), &error16));
-  EXPECT_NE(base::string16(), error16);
+  EXPECT_NE(std::u16string(), error16);
 
   // Component/policy extensions can modify and disable policy extensions, while
   // all others cannot.
@@ -72,14 +72,14 @@
 TEST_F(StandardManagementPolicyProviderTest, ComponentExtension) {
   auto extension = CreateExtension(Manifest::COMPONENT);
 
-  base::string16 error16;
+  std::u16string error16;
   EXPECT_TRUE(provider_.UserMayLoad(extension.get(), &error16));
-  EXPECT_EQ(base::string16(), error16);
+  EXPECT_EQ(std::u16string(), error16);
 
   EXPECT_FALSE(provider_.UserMayModifySettings(extension.get(), &error16));
-  EXPECT_NE(base::string16(), error16);
+  EXPECT_NE(std::u16string(), error16);
   EXPECT_TRUE(provider_.MustRemainEnabled(extension.get(), &error16));
-  EXPECT_NE(base::string16(), error16);
+  EXPECT_NE(std::u16string(), error16);
 
   // No extension can modify or disable component extensions.
   auto component = extension;
@@ -99,13 +99,13 @@
 TEST_F(StandardManagementPolicyProviderTest, NotRequiredExtension) {
   auto extension = CreateExtension(Manifest::INTERNAL);
 
-  base::string16 error16;
+  std::u16string error16;
   EXPECT_TRUE(provider_.UserMayLoad(extension.get(), &error16));
-  EXPECT_EQ(base::string16(), error16);
+  EXPECT_EQ(std::u16string(), error16);
   EXPECT_TRUE(provider_.UserMayModifySettings(extension.get(), &error16));
-  EXPECT_EQ(base::string16(), error16);
+  EXPECT_EQ(std::u16string(), error16);
   EXPECT_FALSE(provider_.MustRemainEnabled(extension.get(), &error16));
-  EXPECT_EQ(base::string16(), error16);
+  EXPECT_EQ(std::u16string(), error16);
 
   // All extension types can modify or disable internal extensions.
   auto component = CreateExtension(Manifest::COMPONENT);
diff --git a/chrome/browser/extensions/startup_helper.cc b/chrome/browser/extensions/startup_helper.cc
index c4e7607..78a84a6 100644
--- a/chrome/browser/extensions/startup_helper.cc
+++ b/chrome/browser/extensions/startup_helper.cc
@@ -88,7 +88,7 @@
         success_(false) {}
 
   bool success() const { return success_; }
-  const base::string16& error() const { return error_; }
+  const std::u16string& error() const { return error_; }
 
   void Start() {
     GetExtensionFileTaskRunner()->PostTask(
@@ -146,7 +146,7 @@
   bool success_;
 
   // If the unpacking wasn't successful, this contains an error message.
-  base::string16 error_;
+  std::u16string error_;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(ValidateCrxHelper);
diff --git a/chrome/browser/extensions/suspicious_extension_bubble_delegate.cc b/chrome/browser/extensions/suspicious_extension_bubble_delegate.cc
index 77755c88..811dab8 100644
--- a/chrome/browser/extensions/suspicious_extension_bubble_delegate.cc
+++ b/chrome/browser/extensions/suspicious_extension_bubble_delegate.cc
@@ -72,11 +72,11 @@
   // "Well, my work here is done".
 }
 
-base::string16 SuspiciousExtensionBubbleDelegate::GetTitle() const {
+std::u16string SuspiciousExtensionBubbleDelegate::GetTitle() const {
   return l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNSUPPORTED_DISABLED_TITLE);
 }
 
-base::string16 SuspiciousExtensionBubbleDelegate::GetMessageBody(
+std::u16string SuspiciousExtensionBubbleDelegate::GetMessageBody(
     bool anchored_to_browser_action,
     int extension_count) const {
   int message_id = extension_count == 1 ?
@@ -86,8 +86,8 @@
       message_id, l10n_util::GetStringUTF16(IDS_EXTENSION_WEB_STORE_TITLE));
 }
 
-base::string16 SuspiciousExtensionBubbleDelegate::GetOverflowText(
-    const base::string16& overflow_count) const {
+std::u16string SuspiciousExtensionBubbleDelegate::GetOverflowText(
+    const std::u16string& overflow_count) const {
   return l10n_util::GetStringFUTF16(
             IDS_EXTENSIONS_DISABLED_AND_N_MORE,
             overflow_count);
@@ -97,13 +97,12 @@
   return GURL(chrome::kRemoveNonCWSExtensionURL);
 }
 
-base::string16
-SuspiciousExtensionBubbleDelegate::GetActionButtonLabel() const {
-  return base::string16();
+std::u16string SuspiciousExtensionBubbleDelegate::GetActionButtonLabel() const {
+  return std::u16string();
 }
 
-base::string16
-SuspiciousExtensionBubbleDelegate::GetDismissButtonLabel() const {
+std::u16string SuspiciousExtensionBubbleDelegate::GetDismissButtonLabel()
+    const {
   return l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNSUPPORTED_DISABLED_BUTTON);
 }
 
diff --git a/chrome/browser/extensions/suspicious_extension_bubble_delegate.h b/chrome/browser/extensions/suspicious_extension_bubble_delegate.h
index a4143396..8f15a6c2 100644
--- a/chrome/browser/extensions/suspicious_extension_bubble_delegate.h
+++ b/chrome/browser/extensions/suspicious_extension_bubble_delegate.h
@@ -24,14 +24,14 @@
       const std::string& extension_id,
       ExtensionMessageBubbleController::BubbleAction user_action) override;
   void PerformAction(const extensions::ExtensionIdList& list) override;
-  base::string16 GetTitle() const override;
-  base::string16 GetMessageBody(bool anchored_to_browser_action,
+  std::u16string GetTitle() const override;
+  std::u16string GetMessageBody(bool anchored_to_browser_action,
                                 int extension_count) const override;
-  base::string16 GetOverflowText(
-      const base::string16& overflow_count) const override;
+  std::u16string GetOverflowText(
+      const std::u16string& overflow_count) const override;
   GURL GetLearnMoreUrl() const override;
-  base::string16 GetActionButtonLabel() const override;
-  base::string16 GetDismissButtonLabel() const override;
+  std::u16string GetActionButtonLabel() const override;
+  std::u16string GetDismissButtonLabel() const override;
   bool ShouldCloseOnDeactivate() const override;
   bool ShouldShowExtensionList() const override;
   bool ShouldShow(const ExtensionIdList& extensions) const override;
diff --git a/chrome/browser/extensions/theme_installed_infobar_delegate.cc b/chrome/browser/extensions/theme_installed_infobar_delegate.cc
index 535efecd1..61a08d1f 100644
--- a/chrome/browser/extensions/theme_installed_infobar_delegate.cc
+++ b/chrome/browser/extensions/theme_installed_infobar_delegate.cc
@@ -90,7 +90,7 @@
   return this;
 }
 
-base::string16 ThemeInstalledInfoBarDelegate::GetMessageText() const {
+std::u16string ThemeInstalledInfoBarDelegate::GetMessageText() const {
   return l10n_util::GetStringFUTF16(IDS_THEME_INSTALL_INFOBAR_LABEL,
                                     base::UTF8ToUTF16(theme_name_));
 }
@@ -99,7 +99,7 @@
   return BUTTON_CANCEL;
 }
 
-base::string16 ThemeInstalledInfoBarDelegate::GetButtonLabel(
+std::u16string ThemeInstalledInfoBarDelegate::GetButtonLabel(
     InfoBarButton button) const {
   DCHECK_EQ(BUTTON_CANCEL, button);
   return l10n_util::GetStringUTF16(IDS_THEME_INSTALL_INFOBAR_UNDO_BUTTON);
diff --git a/chrome/browser/extensions/theme_installed_infobar_delegate.h b/chrome/browser/extensions/theme_installed_infobar_delegate.h
index c2f6a4f..819fd89e 100644
--- a/chrome/browser/extensions/theme_installed_infobar_delegate.h
+++ b/chrome/browser/extensions/theme_installed_infobar_delegate.h
@@ -43,9 +43,9 @@
   infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
   const gfx::VectorIcon& GetVectorIcon() const override;
   ThemeInstalledInfoBarDelegate* AsThemePreviewInfobarDelegate() override;
-  base::string16 GetMessageText() const override;
+  std::u16string GetMessageText() const override;
   int GetButtons() const override;
-  base::string16 GetButtonLabel(InfoBarButton button) const override;
+  std::u16string GetButtonLabel(InfoBarButton button) const override;
   bool Cancel() override;
 
   // ThemeServiceObserver:
diff --git a/chrome/browser/extensions/unpacked_installer.cc b/chrome/browser/extensions/unpacked_installer.cc
index 1ace444..e62cfef 100644
--- a/chrome/browser/extensions/unpacked_installer.cc
+++ b/chrome/browser/extensions/unpacked_installer.cc
@@ -212,7 +212,7 @@
     return;
   }
 
-  base::string16 error_message;
+  std::u16string error_message;
   if (errors.count(PreloadCheck::DISALLOWED_BY_POLICY))
     error_message = policy_check_->GetErrorMessage();
   else
diff --git a/chrome/browser/extensions/warning_badge_service.cc b/chrome/browser/extensions/warning_badge_service.cc
index 63d697f0..2a6e40e 100644
--- a/chrome/browser/extensions/warning_badge_service.cc
+++ b/chrome/browser/extensions/warning_badge_service.cc
@@ -36,7 +36,7 @@
   // Implementation for GlobalError:
   bool HasMenuItem() override;
   int MenuItemCommandID() override;
-  base::string16 MenuItemLabel() override;
+  std::u16string MenuItemLabel() override;
   void ExecuteMenuItem(Browser* browser) override;
 
   bool HasBubbleView() override;
@@ -65,7 +65,7 @@
   return GetMenuItemCommandID();
 }
 
-base::string16 ErrorBadge::MenuItemLabel() {
+std::u16string ErrorBadge::MenuItemLabel() {
   return l10n_util::GetStringUTF16(IDS_EXTENSION_WARNINGS_WRENCH_MENU_ITEM);
 }
 
diff --git a/chrome/browser/extensions/webstore_installer.cc b/chrome/browser/extensions/webstore_installer.cc
index 1d197b0..1af2339 100644
--- a/chrome/browser/extensions/webstore_installer.cc
+++ b/chrome/browser/extensions/webstore_installer.cc
@@ -353,7 +353,7 @@
     return;
 
   // TODO(rdevlin.cronin): Continue removing std::string errors and
-  // replacing with base::string16. See crbug.com/71980.
+  // replacing with std::u16string. See crbug.com/71980.
   const extensions::CrxInstallError* error =
       content::Details<const extensions::CrxInstallError>(details).ptr();
   const std::string utf8_error = base::UTF16ToUTF8(error->message());
diff --git a/chrome/browser/extensions/zipfile_installer_unittest.cc b/chrome/browser/extensions/zipfile_installer_unittest.cc
index 4c93615..69a81e9 100644
--- a/chrome/browser/extensions/zipfile_installer_unittest.cc
+++ b/chrome/browser/extensions/zipfile_installer_unittest.cc
@@ -61,7 +61,7 @@
           base::TimeDelta::FromMilliseconds(100));
       quit_closure = run_loop.QuitClosure();
       run_loop.Run();
-      const std::vector<base::string16>* errors = error_reporter->GetErrors();
+      const std::vector<std::u16string>* errors = error_reporter->GetErrors();
       if (!errors->empty()) {
         if (!expect_error) {
           FAIL() << "Error(s) happened when unzipping extension: "
diff --git a/chrome/browser/favicon/content_favicon_driver_browsertest.cc b/chrome/browser/favicon/content_favicon_driver_browsertest.cc
index 0d6af31d..d47ff382 100644
--- a/chrome/browser/favicon/content_favicon_driver_browsertest.cc
+++ b/chrome/browser/favicon/content_favicon_driver_browsertest.cc
@@ -107,7 +107,7 @@
 
   void AlsoRequireUrl(const GURL& url) { required_url_ = url; }
 
-  void AlsoRequireTitle(const base::string16& title) {
+  void AlsoRequireTitle(const std::u16string& title) {
     required_title_ = title;
   }
 
@@ -167,7 +167,7 @@
 
   base::RepeatingClosure quit_closure_;
   GURL required_url_;
-  base::Optional<base::string16> required_title_;
+  base::Optional<std::u16string> required_title_;
   base::WeakPtrFactory<PendingTaskWaiter> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(PendingTaskWaiter);
diff --git a/chrome/browser/favicon/favicon_utils.cc b/chrome/browser/favicon/favicon_utils.cc
index 7fab9df..0626815 100644
--- a/chrome/browser/favicon/favicon_utils.cc
+++ b/chrome/browser/favicon/favicon_utils.cc
@@ -63,7 +63,7 @@
                             int offset,
                             gfx::Canvas* canvas) {
   // Get the appropriate letter to draw, then eventually draw it.
-  base::string16 icon_text = favicon::GetFallbackIconText(icon_url);
+  std::u16string icon_text = favicon::GetFallbackIconText(icon_url);
   if (icon_text.empty())
     return;
 
diff --git a/chrome/browser/federated_learning/floc_id_provider_browsertest.cc b/chrome/browser/federated_learning/floc_id_provider_browsertest.cc
index be5cfed0..f0ec44a 100644
--- a/chrome/browser/federated_learning/floc_id_provider_browsertest.cc
+++ b/chrome/browser/federated_learning/floc_id_provider_browsertest.cc
@@ -271,7 +271,7 @@
     HistoryServiceFactory::GetForProfile(browser()->profile(),
                                          ServiceAccessType::EXPLICIT_ACCESS)
         ->QueryHistory(
-            base::string16(), history::QueryOptions(),
+            std::u16string(), history::QueryOptions(),
             base::BindLambdaForTesting(
                 [&](history::QueryResults results) { run_loop.Quit(); }),
             &tracker);
diff --git a/chrome/browser/federated_learning/floc_id_provider_impl.cc b/chrome/browser/federated_learning/floc_id_provider_impl.cc
index 3580365..d9f8fff 100644
--- a/chrome/browser/federated_learning/floc_id_provider_impl.cc
+++ b/chrome/browser/federated_learning/floc_id_provider_impl.cc
@@ -334,7 +334,7 @@
   options.end_time = now;
   options.duplicate_policy = history::QueryOptions::KEEP_ALL_DUPLICATES;
 
-  history_service_->QueryHistory(base::string16(), options, std::move(callback),
+  history_service_->QueryHistory(std::u16string(), options, std::move(callback),
                                  &history_task_tracker_);
 }
 
diff --git a/chrome/browser/file_select_helper.cc b/chrome/browser/file_select_helper.cc
index 2cce1ef..61915e7 100644
--- a/chrome/browser/file_select_helper.cc
+++ b/chrome/browser/file_select_helper.cc
@@ -280,7 +280,7 @@
     std::vector<FileChooserFileInfoPtr> chooser_files;
     for (const auto& file_path : entry->results_) {
       chooser_files.push_back(FileChooserFileInfo::NewNativeFile(
-          blink::mojom::NativeFileInfo::New(file_path, base::string16())));
+          blink::mojom::NativeFileInfo::New(file_path, std::u16string())));
     }
 
     listener_->FileSelected(std::move(chooser_files), base_dir_,
@@ -430,7 +430,7 @@
 
 std::unique_ptr<ui::SelectFileDialog::FileTypeInfo>
 FileSelectHelper::GetFileTypesFromAcceptType(
-    const std::vector<base::string16>& accept_types) {
+    const std::vector<std::u16string>& accept_types) {
   std::unique_ptr<ui::SelectFileDialog::FileTypeInfo> base_file_type(
       new ui::SelectFileDialog::FileTypeInfo());
   if (accept_types.empty())
@@ -689,7 +689,7 @@
 
 #if defined(OS_ANDROID)
   // Android needs the original MIME types and an additional capture value.
-  std::pair<std::vector<base::string16>, bool> accept_types =
+  std::pair<std::vector<std::u16string>, bool> accept_types =
       std::make_pair(params->accept_types, params->use_media_capture);
 #endif
 
diff --git a/chrome/browser/file_select_helper.h b/chrome/browser/file_select_helper.h
index dfc6678..eed27a9 100644
--- a/chrome/browser/file_select_helper.h
+++ b/chrome/browser/file_select_helper.h
@@ -247,7 +247,7 @@
   // |accept_types| contains only valid lowercased MIME types or file extensions
   // beginning with a period (.).
   static std::unique_ptr<ui::SelectFileDialog::FileTypeInfo>
-  GetFileTypesFromAcceptType(const std::vector<base::string16>& accept_types);
+  GetFileTypesFromAcceptType(const std::vector<std::u16string>& accept_types);
 
   // Check the accept type is valid. It is expected to be all lower case with
   // no whitespace.
diff --git a/chrome/browser/file_select_helper_unittest.cc b/chrome/browser/file_select_helper_unittest.cc
index c795747..6032b41b 100644
--- a/chrome/browser/file_select_helper_unittest.cc
+++ b/chrome/browser/file_select_helper_unittest.cc
@@ -367,17 +367,17 @@
   scoped_refptr<FileSelectHelper> file_select_helper =
       new FileSelectHelper(&profile);
 
-  std::vector<base::string16> accept_types{
+  std::vector<std::u16string> accept_types{
       // normal file extension
-      base::string16{0x2e, 'm', 'p', '4'},
+      std::u16string{0x2e, 'm', 'p', '4'},
       // file extension with some chinese
-      base::string16{0x2e, 0x65a4, 0x62f7, 0x951f},
+      std::u16string{0x2e, 0x65a4, 0x62f7, 0x951f},
       // file extension with fire emoji
-      base::string16{0x2e, 55357, 56613},
+      std::u16string{0x2e, 55357, 56613},
       // mime type
-      base::string16({'i', 'm', 'a', 'g', 'e', '/', 'p', 'n', 'g'}),
+      std::u16string({'i', 'm', 'a', 'g', 'e', '/', 'p', 'n', 'g'}),
       // non-ascii mime type which should be ignored
-      base::string16({'t', 'e', 'x', 't', '/', 0x65a4, 0x62f7, 0x951f})};
+      std::u16string({'t', 'e', 'x', 't', '/', 0x65a4, 0x62f7, 0x951f})};
 
   std::unique_ptr<ui::SelectFileDialog::FileTypeInfo> file_type_info =
       file_select_helper->GetFileTypesFromAcceptType(accept_types);
diff --git a/chrome/browser/font_family_cache.cc b/chrome/browser/font_family_cache.cc
index b134e46..9e2487d 100644
--- a/chrome/browser/font_family_cache.cc
+++ b/chrome/browser/font_family_cache.cc
@@ -52,17 +52,17 @@
   // (font family / script) combinations - see http://crbug.com/308095.
   for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) {
     const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i];
-    base::string16 result = FetchAndCacheFont(script, map_name);
+    std::u16string result = FetchAndCacheFont(script, map_name);
     if (!result.empty())
       (*map)[script] = result;
   }
 }
 
-base::string16 FontFamilyCache::FetchFont(const char* script,
+std::u16string FontFamilyCache::FetchFont(const char* script,
                                           const char* map_name) {
   std::string pref_name = base::StringPrintf("%s.%s", map_name, script);
   std::string font = prefs_->GetString(pref_name.c_str());
-  base::string16 font16 = base::UTF8ToUTF16(font);
+  std::u16string font16 = base::UTF8ToUTF16(font);
 
   // Lazily constructs the map if it doesn't already exist.
   ScriptFontMap& map = font_family_map_[map_name];
@@ -70,7 +70,7 @@
   return font16;
 }
 
-base::string16 FontFamilyCache::FetchAndCacheFont(const char* script,
+std::u16string FontFamilyCache::FetchAndCacheFont(const char* script,
                                                   const char* map_name) {
   FontFamilyMap::const_iterator it = font_family_map_.find(map_name);
   if (it != font_family_map_.end()) {
diff --git a/chrome/browser/font_family_cache.h b/chrome/browser/font_family_cache.h
index 15e7c97..4f06f5c5 100644
--- a/chrome/browser/font_family_cache.h
+++ b/chrome/browser/font_family_cache.h
@@ -45,14 +45,14 @@
  protected:
   // Exposed and virtual for testing.
   // Fetches the font without checking the cache.
-  virtual base::string16 FetchFont(const char* script, const char* map_name);
+  virtual std::u16string FetchFont(const char* script, const char* map_name);
 
  private:
   FRIEND_TEST_ALL_PREFIXES(::FontFamilyCacheTest, Caching);
 
   // Map from script to font.
   // Key comparison uses pointer equality.
-  using ScriptFontMap = std::unordered_map<const char*, base::string16>;
+  using ScriptFontMap = std::unordered_map<const char*, std::u16string>;
 
   // Map from font family to ScriptFontMap.
   // Key comparison uses pointer equality.
@@ -67,7 +67,7 @@
   // |script| and |map_name| must be compile time constants. Two behaviors rely
   // on this: key comparison uses pointer equality, and keys must outlive the
   // maps.
-  base::string16 FetchAndCacheFont(const char* script, const char* map_name);
+  std::u16string FetchAndCacheFont(const char* script, const char* map_name);
 
   // Called when font family preferences changed.
   // Invalidates the cached entry, and removes the relevant observer.
diff --git a/chrome/browser/font_family_cache_unittest.cc b/chrome/browser/font_family_cache_unittest.cc
index 0bcc1e64..2e46a6f 100644
--- a/chrome/browser/font_family_cache_unittest.cc
+++ b/chrome/browser/font_family_cache_unittest.cc
@@ -18,7 +18,7 @@
   explicit TestingFontFamilyCache(Profile* profile)
       : FontFamilyCache(profile), fetch_font_count_(0) {}
   ~TestingFontFamilyCache() override {}
-  base::string16 FetchFont(const char* script, const char* map_name) override {
+  std::u16string FetchFont(const char* script, const char* map_name) override {
     ++fetch_font_count_;
     return FontFamilyCache::FetchFont(script, map_name);
   }
diff --git a/chrome/browser/geolocation/geolocation_permission_context_delegate_unittest.cc b/chrome/browser/geolocation/geolocation_permission_context_delegate_unittest.cc
index 6746e5d7..b78d30f 100644
--- a/chrome/browser/geolocation/geolocation_permission_context_delegate_unittest.cc
+++ b/chrome/browser/geolocation/geolocation_permission_context_delegate_unittest.cc
@@ -29,7 +29,7 @@
 class TestSearchEngineDelegate
     : public SearchPermissionsService::SearchEngineDelegate {
  public:
-  base::string16 GetDSEName() override { return base::string16(); }
+  std::u16string GetDSEName() override { return std::u16string(); }
 
   url::Origin GetDSEOrigin() override {
     return url::Origin::Create(GURL(kDSETestUrl));
diff --git a/chrome/browser/google/google_update_win.cc b/chrome/browser/google/google_update_win.cc
index e8278c7..ed72548 100644
--- a/chrome/browser/google/google_update_win.cc
+++ b/chrome/browser/google/google_update_win.cc
@@ -271,7 +271,7 @@
   // and 100 (inclusive), is an estimation as to what percentage of the upgrade
   // has completed. |new_version| indicates the version that is being download
   // and installed.
-  void NotifyUpgradeProgress(int progress, const base::string16& new_version);
+  void NotifyUpgradeProgress(int progress, const std::u16string& new_version);
 
   // Starts an update check.
   void BeginUpdateCheck();
@@ -289,7 +289,7 @@
   // will result in callers being notified via their delegates.
   void OnUpgradeError(UpdateCheckResult check_result,
                       base::Optional<int> installer_exit_code,
-                      const base::string16& error_string);
+                      const std::u16string& error_string);
 
   // Returns true if |current_state| and |state_value| can be obtained from the
   // ongoing update check. Otherwise, populates |hresult| with the reason they
@@ -313,7 +313,7 @@
                     GoogleUpdateErrorCode* error_code,
                     HRESULT* hresult,
                     base::Optional<int>* installer_exit_code,
-                    base::string16* error_string) const;
+                    std::u16string* error_string) const;
 
   // Returns true if |current_state| and |state_value| constitute a final state
   // for the ongoing update check, in which case |upgrade_status| is populated
@@ -325,7 +325,7 @@
   bool IsFinalState(const Microsoft::WRL::ComPtr<ICurrentState>& current_state,
                     CurrentState state_value,
                     GoogleUpdateUpgradeStatus* upgrade_status,
-                    base::string16* new_version) const;
+                    std::u16string* new_version) const;
 
   // Returns true if |current_state| and |state_value| constitute an
   // intermediate state for the ongoing update check. |new_version| will be
@@ -336,7 +336,7 @@
   bool IsIntermediateState(
       const Microsoft::WRL::ComPtr<ICurrentState>& current_state,
       CurrentState state_value,
-      base::string16* new_version,
+      std::u16string* new_version,
       int* progress) const;
 
   // Polls Google Update to determine the state of the ongoing check or
@@ -391,7 +391,7 @@
   // caller.
   GoogleUpdateUpgradeStatus status_;
   UpdateState update_state_;
-  base::string16 html_error_message_;
+  std::u16string html_error_message_;
 
   DISALLOW_COPY_AND_ASSIGN(UpdateCheckDriver);
 };
@@ -486,7 +486,7 @@
 
 void UpdateCheckDriver::NotifyUpgradeProgress(
     int progress,
-    const base::string16& new_version) {
+    const std::u16string& new_version) {
   DCHECK(result_runner_->RunsTasksInCurrentSequence());
 
   for (const auto& delegate : delegates_) {
@@ -518,7 +518,7 @@
   }
 
   DCHECK(FAILED(result.hresult));
-  OnUpgradeError(result, base::nullopt, base::string16());
+  OnUpgradeError(result, base::nullopt, std::u16string());
   result_runner_->DeleteSoon(FROM_HERE, this);
 }
 
@@ -653,7 +653,7 @@
     GoogleUpdateErrorCode* error_code,
     HRESULT* hresult,
     base::Optional<int>* installer_exit_code,
-    base::string16* error_string) const {
+    std::u16string* error_string) const {
   if (state_value == STATE_ERROR) {
     // In general, errors reported by Google Update fall under this category
     // (see special case below).
@@ -709,7 +709,7 @@
     const Microsoft::WRL::ComPtr<ICurrentState>& current_state,
     CurrentState state_value,
     GoogleUpdateUpgradeStatus* upgrade_status,
-    base::string16* new_version) const {
+    std::u16string* new_version) const {
   if (state_value == STATE_UPDATE_AVAILABLE && !install_update_if_possible_) {
     base::win::ScopedBstr version;
     *upgrade_status = UPGRADE_IS_AVAILABLE;
@@ -732,7 +732,7 @@
 bool UpdateCheckDriver::IsIntermediateState(
     const Microsoft::WRL::ComPtr<ICurrentState>& current_state,
     CurrentState state_value,
-    base::string16* new_version,
+    std::u16string* new_version,
     int* progress) const {
   // ERROR will have been handled in IsErrorState. UPDATE_AVAILABLE, and
   // NO_UPDATE will have been handled in IsFinalState if not doing an install,
@@ -809,14 +809,14 @@
   HRESULT hresult = S_OK;
   GoogleUpdateErrorCode error_code = GOOGLE_UPDATE_NO_ERROR;
   base::Optional<int> installer_exit_code;
-  base::string16 error_string;
+  std::u16string error_string;
   GoogleUpdateUpgradeStatus upgrade_status = UPGRADE_ERROR;
-  base::string16 new_version;
+  std::u16string new_version;
   int progress = 0;
 
   if (!GetCurrentState(&state, &state_value, &hresult)) {
     OnUpgradeError({GOOGLE_UPDATE_ONDEMAND_CLASS_REPORTED_ERROR, hresult},
-                   base::nullopt, base::string16());
+                   base::nullopt, std::u16string());
   } else if (IsErrorState(state, state_value, &error_code, &hresult,
                           &installer_exit_code, &error_string)) {
     OnUpgradeError({error_code, hresult}, installer_exit_code, error_string);
@@ -868,7 +868,7 @@
 
 void UpdateCheckDriver::OnUpgradeError(UpdateCheckResult check_result,
                                        base::Optional<int> installer_exit_code,
-                                       const base::string16& error_string) {
+                                       const std::u16string& error_string) {
   status_ = UPGRADE_ERROR;
   update_state_.error_code = check_result.error_code;
   update_state_.hresult = check_result.hresult;
@@ -881,7 +881,7 @@
     return;
   }
 
-  base::string16 html_error_msg = base::StringPrintf(
+  std::u16string html_error_msg = base::StringPrintf(
       u"%d: <a href='%ls0x%X' target=_blank>0x%X</a>", update_state_.error_code,
       base::UTF8ToWide(chrome::kUpgradeHelpCenterBaseURL).c_str(),
       update_state_.hresult, update_state_.hresult);
diff --git a/chrome/browser/google/google_update_win.h b/chrome/browser/google/google_update_win.h
index 2261da4..659e27e 100644
--- a/chrome/browser/google/google_update_win.h
+++ b/chrome/browser/google/google_update_win.h
@@ -62,7 +62,7 @@
   // indicates the new version that is available. Otherwise (if |new_version| is
   // empty), Chrome is up to date. This method will only be invoked when
   // BeginUpdateCheck is called with |install_update_if_possible| == false.
-  virtual void OnUpdateCheckComplete(const base::string16& new_version) = 0;
+  virtual void OnUpdateCheckComplete(const std::u16string& new_version) = 0;
 
   // Invoked zero or more times during an upgrade. |progress|, a number between
   // 0 and 100 (inclusive), is an estimation as to what percentage of the
@@ -70,12 +70,12 @@
   // download and installed. This method will only be invoked when
   // BeginUpdateCheck is called with |install_update_if_possible| == true.
   virtual void OnUpgradeProgress(int progress,
-                                 const base::string16& new_version) = 0;
+                                 const std::u16string& new_version) = 0;
 
   // Invoked following a successful upgrade. |new_version| indicates the version
   // to which Chrome was updated. This method will only be invoked when
   // BeginUpdateCheck is called with |install_update_if_possible| == true.
-  virtual void OnUpgradeComplete(const base::string16& new_version) = 0;
+  virtual void OnUpgradeComplete(const std::u16string& new_version) = 0;
 
   // Invoked following an unrecoverable error, indicated by |error_code|.
   // |html_error_message|, if not empty, must be a localized string containing
@@ -84,8 +84,8 @@
   // state information).  |new_version|, if not empty, indicates the version
   // to which an upgrade attempt was made.
   virtual void OnError(GoogleUpdateErrorCode error_code,
-                       const base::string16& html_error_message,
-                       const base::string16& new_version) = 0;
+                       const std::u16string& html_error_message,
+                       const std::u16string& new_version) = 0;
 
  protected:
   UpdateCheckDelegate() {}
@@ -117,7 +117,7 @@
 
   // The next version available or an empty string if either no update is
   // available or an error occurred before the new version was discovered.
-  base::string16 new_version;
+  std::u16string new_version;
 
   // S_OK if the last check or update succeeded; otherwise, the failing error
   // from Google Update or COM.
diff --git a/chrome/browser/google/google_update_win_unittest.cc b/chrome/browser/google/google_update_win_unittest.cc
index 646b925..4598014 100644
--- a/chrome/browser/google/google_update_win_unittest.cc
+++ b/chrome/browser/google/google_update_win_unittest.cc
@@ -52,7 +52,7 @@
 
 namespace {
 
-// GMock's HasSubstr does not support base::string16. Hence redefine it as a
+// GMock's HasSubstr does not support std::u16string. Hence redefine it as a
 // generic matcher.
 MATCHER_P(HasSubstr, str, "") {
   return arg.find(str) != arg.npos;
@@ -66,12 +66,13 @@
     return weak_ptr_factory_.GetWeakPtr();
   }
 
-  MOCK_METHOD1(OnUpdateCheckComplete, void(const base::string16&));
-  MOCK_METHOD2(OnUpgradeProgress, void(int, const base::string16&));
-  MOCK_METHOD1(OnUpgradeComplete, void(const base::string16&));
-  MOCK_METHOD3(OnError, void(GoogleUpdateErrorCode,
-                             const base::string16&,
-                             const base::string16&));
+  MOCK_METHOD1(OnUpdateCheckComplete, void(const std::u16string&));
+  MOCK_METHOD2(OnUpgradeProgress, void(int, const std::u16string&));
+  MOCK_METHOD1(OnUpgradeComplete, void(const std::u16string&));
+  MOCK_METHOD3(OnError,
+               void(GoogleUpdateErrorCode,
+                    const std::u16string&,
+                    const std::u16string&));
 
  private:
   base::WeakPtrFactory<UpdateCheckDelegate> weak_ptr_factory_;
@@ -99,7 +100,7 @@
 
   // Adds an expectation for get_completionMessage that will return the given
   // message any number of times.
-  void ExpectCompletionMessage(const base::string16& completion_message) {
+  void ExpectCompletionMessage(const std::u16string& completion_message) {
     completion_message_ = completion_message;
     EXPECT_CALL(*this, get_completionMessage(_))
         .WillRepeatedly(
@@ -113,7 +114,7 @@
 
   // Adds an expectation for get_availableVersion that will return the given
   // version any number of times.
-  void ExpectAvailableVersion(const base::string16& available_version) {
+  void ExpectAvailableVersion(const std::u16string& available_version) {
     available_version_ = available_version;
     EXPECT_CALL(*this, get_availableVersion(_))
         .WillRepeatedly(
@@ -194,8 +195,8 @@
                                      VARIANT *, EXCEPINFO *, UINT *));
 
  private:
-  base::string16 completion_message_;
-  base::string16 available_version_;
+  std::u16string completion_message_;
+  std::u16string available_version_;
 
   DISALLOW_COPY_AND_ASSIGN(MockCurrentState);
 };
@@ -268,7 +269,7 @@
   // Adds a MockCurrentState to the back of the sequence to be returned by the
   // mock IAppWeb for an ERROR state.
   void PushErrorState(LONG error_code,
-                      const base::string16& completion_message,
+                      const std::u16string& completion_message,
                       LONG installer_result_code) {
     CComObject<MockCurrentState>* mock_state = MakeNextState(STATE_ERROR);
     EXPECT_CALL(*mock_state, get_errorCode(_))
@@ -283,7 +284,7 @@
 
   // Adds a MockCurrentState to the back of the sequence to be returned by the
   // mock IAppWeb for an UPDATE_AVAILABLE state.
-  void PushUpdateAvailableState(const base::string16& new_version) {
+  void PushUpdateAvailableState(const std::u16string& new_version) {
     MakeNextState(STATE_UPDATE_AVAILABLE)->ExpectAvailableVersion(new_version);
   }
 
@@ -660,7 +661,7 @@
   StrictMock<MockGoogleUpdateFactory> mock_google_update_factory_;
 
   // The new version that the fixture will pretend is available.
-  base::string16 new_version_;
+  std::u16string new_version_;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(GoogleUpdateWinTest);
@@ -904,7 +905,7 @@
 
 // Test a failed upgrade where Google Update reports that the installer failed.
 TEST_P(GoogleUpdateWinTest, UpdateFailed) {
-  const base::string16 error(u"It didn't work.");
+  const std::u16string error(u"It didn't work.");
   static const HRESULT GOOPDATEINSTALL_E_INSTALLER_FAILED = 0x80040902;
   static const int kInstallerError = 12;
 
diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc
index fce76bea..407075e 100644
--- a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc
+++ b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc
@@ -53,7 +53,7 @@
 #if BUILDFLAG(ENABLE_PLUGINS)
 
 void ChromeWebViewPermissionHelperDelegate::BlockedUnauthorizedPlugin(
-    const base::string16& name,
+    const std::u16string& name,
     const std::string& identifier) {
   const char kPluginName[] = "name";
   const char kPluginIdentifier[] = "identifier";
diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h
index 6a080f7..4209085 100644
--- a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h
+++ b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h
@@ -55,7 +55,7 @@
  private:
 #if BUILDFLAG(ENABLE_PLUGINS)
   // chrome::mojom::PluginAuthHost methods.
-  void BlockedUnauthorizedPlugin(const base::string16& name,
+  void BlockedUnauthorizedPlugin(const std::u16string& name,
                                  const std::string& identifier) override;
 
   content::WebContentsFrameReceiverSet<chrome::mojom::PluginAuthHost>