Roll base to 5e00da80f6adb7082d1c0e88d3274cf87cc43bc5 and tonic to f7acabb8fa6c91124486a41194eac3cd421b70d0.

TBR=jamesr@chromium.org

Review URL: https://codereview.chromium.org/2022983003 .
diff --git a/DEPS b/DEPS
index 58ffb77..44183a5 100644
--- a/DEPS
+++ b/DEPS
@@ -21,7 +21,7 @@
   'chromium_git': 'https://chromium.googlesource.com',
   'skia_revision': '8cc209111876b7c78b5ec577c9221d8ed5e21024',
   'v8_revision': '3f036fc0ba4ca4483fe77822f8605c277d37ee24',
-  'base_revision': '163fb42027bea947916ba4d2fa03aa0ed7c3f99e',
+  'base_revision': '5e00da80f6adb7082d1c0e88d3274cf87cc43bc5',
   'angle_revision': '46ccef1992a8ede16a596c3dd73cff13c047267d',
   'buildtools_revision': '222bd42ce39d1bd8f08fe089b066f49c469e1cdf',
   'dart_revision': 'f64c907557646699fada4acb7e9a82346a369993',
@@ -31,7 +31,7 @@
   'boringssl_revision': '642f1498d056dbba3e50ed5a232ab2f482626dec',
   'lss_revision': '6f97298fe3794e92c8c896a6bc06e0b36e4c3de3',
   'nacl_revision': 'f5bc68c59b147b66d553dc6fc17426682cf138e2',
-  'tonic_revision': 'e41f72c684e0da61304ebd6f3147d0fe23ffbb56',
+  'tonic_revision': 'f7acabb8fa6c91124486a41194eac3cd421b70d0',
   'gurl_revision': '561639dfb664ee4c14371f569213b9d41f4fe110',
 }
 
@@ -51,7 +51,7 @@
    Var('chromium_git') + '/chromium/buildtools.git' + '@' +  Var('buildtools_revision'),
 
   'src/testing/gtest':
-   Var('chromium_git') + '/external/googletest.git' + '@' + 'be1868139ffe0ccd0e8e3b37292b84c821d9c8ad', # from svn revision 704
+   Var('chromium_git') + '/external/googletest.git' + '@' + '00a70a9667d92a4695d84e4fa36b64f611f147da', # from svn revision 725
 
   'src/testing/gmock':
    Var('chromium_git') + '/external/googlemock.git' + '@' + '29763965ab52f24565299976b936d1265cb6a271', # from svn revision 501
diff --git a/apps/benchmark/benchmark_app.cc b/apps/benchmark/benchmark_app.cc
index 12c2c50..3e2ea0b 100644
--- a/apps/benchmark/benchmark_app.cc
+++ b/apps/benchmark/benchmark_app.cc
@@ -75,8 +75,9 @@
   std::string ComputeCategoriesStr() {
     std::set<std::string> category_set;
     for (const Measurement& measurement : args_.measurements) {
-      std::vector<std::string> categories;
-      base::SplitString(measurement.target_event.categories, ',', &categories);
+      std::vector<std::string> categories =
+          base::SplitString(measurement.target_event.categories, ",",
+                            base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
       category_set.insert(categories.begin(), categories.end());
     }
     std::vector<std::string> unique_categories(category_set.begin(),
diff --git a/apps/benchmark/run_args.cc b/apps/benchmark/run_args.cc
index 6f4adba..42e399c 100644
--- a/apps/benchmark/run_args.cc
+++ b/apps/benchmark/run_args.cc
@@ -30,8 +30,8 @@
 bool GetMeasurement(const std::string& measurement_spec, Measurement* result) {
   // Measurements are described in the format:
   // <measurement type>/<event category>/<event name>.
-  std::vector<std::string> parts;
-  base::SplitString(measurement_spec, '/', &parts);
+  std::vector<std::string> parts = base::SplitString(
+      measurement_spec, "/", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
   if (parts.size() < 1) {
     LOG(ERROR) << "Could not parse the measurement description: "
                << measurement_spec;
diff --git a/build/config/BUILD.gn b/build/config/BUILD.gn
index 0eff7b1..810f3a7 100644
--- a/build/config/BUILD.gn
+++ b/build/config/BUILD.gn
@@ -135,6 +135,12 @@
   }
 }
 
+# TODO(vtl): Chromium supports precompiled headers (on a per-target basis), but
+# we don't. Stuff from //base depends on this. Add stuff here if we ever want
+# precompiled headers.
+config("precompiled_headers") {
+}
+
 # Default libraries ------------------------------------------------------------
 
 # This config defines the default libraries applied to all targets.
diff --git a/examples/device_name/java/src/org/chromium/mojo/examples/DeviceName.java b/examples/device_name/java/src/org/chromium/mojo/examples/DeviceName.java
index 1fdbad0..13e2e52 100644
--- a/examples/device_name/java/src/org/chromium/mojo/examples/DeviceName.java
+++ b/examples/device_name/java/src/org/chromium/mojo/examples/DeviceName.java
@@ -7,8 +7,8 @@
 import android.content.Context;
 import android.os.Build;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 
 /**
  * Example Java class providing functionality to the native side.
diff --git a/examples/native_run_app/native_run_app.cc b/examples/native_run_app/native_run_app.cc
index 090ba7e..dc02ff0 100644
--- a/examples/native_run_app/native_run_app.cc
+++ b/examples/native_run_app/native_run_app.cc
@@ -22,6 +22,7 @@
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
 #include "mojo/public/c/system/main.h"
 #include "mojo/public/cpp/application/application_delegate.h"
 #include "mojo/public/cpp/application/application_impl_base.h"
@@ -95,8 +96,10 @@
 
     std::string input(reinterpret_cast<const char*>(&bytes_read[0]),
                       bytes_read.size());
-    command_line_.clear();
-    base::SplitStringAlongWhitespace(input, &command_line_);
+    // TODO(vtl): Are these arguments really what we want? Probably not.
+    command_line_ =
+        base::SplitString(input, base::kWhitespaceASCII, base::KEEP_WHITESPACE,
+                          base::SPLIT_WANT_NONEMPTY);
 
     if (command_line_.empty()) {
       Start();
diff --git a/examples/ui/tile/tile_app.cc b/examples/ui/tile/tile_app.cc
index 989fa38..bdd24ae 100644
--- a/examples/ui/tile/tile_app.cc
+++ b/examples/ui/tile/tile_app.cc
@@ -42,7 +42,8 @@
     std::string key_str(connection_url, key.begin, key.len);
     std::string value_str(connection_url, value.begin, value.len);
     if (key_str == "views") {
-      base::SplitString(value_str, ',', &params->view_urls);
+      params->view_urls = base::SplitString(
+          value_str, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
     } else if (key_str == "vm") {
       if (value_str == "any")
         params->version_mode = TileParams::VersionMode::kAny;
diff --git a/gin/modules/file_module_provider.cc b/gin/modules/file_module_provider.cc
index b8465ae..fc8ae99 100644
--- a/gin/modules/file_module_provider.cc
+++ b/gin/modules/file_module_provider.cc
@@ -20,8 +20,8 @@
   if (!runner)
     return;
 
-  std::vector<std::string> components;
-  base::SplitString(id, '/', &components);
+  std::vector<std::string> components =
+      base::SplitString(id, "/", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
 
   base::FilePath path;
   for (size_t i = 0; i < components.size(); ++i) {
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
index 8caca94..502bfc2 100644
--- a/gpu/command_buffer/service/feature_info.cc
+++ b/gpu/command_buffer/service/feature_info.cc
@@ -73,8 +73,8 @@
 void StringToWorkarounds(
     const std::string& types, FeatureInfo::Workarounds* workarounds) {
   DCHECK(workarounds);
-  std::vector<std::string> pieces;
-  base::SplitString(types, ',', &pieces);
+  std::vector<std::string> pieces = base::SplitString(
+      types, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
   for (size_t i = 0; i < pieces.size(); ++i) {
     int number = 0;
     bool succeed = base::StringToInt(pieces[i], &number);
diff --git a/gpu/command_buffer/service/gpu_tracer.cc b/gpu/command_buffer/service/gpu_tracer.cc
index 33d318d..ae783ac 100644
--- a/gpu/command_buffer/service/gpu_tracer.cc
+++ b/gpu/command_buffer/service/gpu_tracer.cc
@@ -51,21 +51,11 @@
                                  int64 start_time,
                                  int64 end_time) {
   TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP1(
-      TRACE_DISABLED_BY_DEFAULT("gpu.device"),
-      name.c_str(),
-      local_trace_id_,
-      named_thread_.thread_id(),
-      start_time,
-      "gl_category",
-      category.c_str());
+      TRACE_DISABLED_BY_DEFAULT("gpu.device"), name.c_str(), local_trace_id_,
+      named_thread_.GetThreadId(), start_time, "gl_category", category.c_str());
   TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP1(
-      TRACE_DISABLED_BY_DEFAULT("gpu.device"),
-      name.c_str(),
-      local_trace_id_,
-      named_thread_.thread_id(),
-      end_time,
-      "gl_category",
-      category.c_str());
+      TRACE_DISABLED_BY_DEFAULT("gpu.device"), name.c_str(), local_trace_id_,
+      named_thread_.GetThreadId(), end_time, "gl_category", category.c_str());
   ++local_trace_id_;
 }
 
diff --git a/gpu/command_buffer/service/test_helper.cc b/gpu/command_buffer/service/test_helper.cc
index 096a60c..28d16ae 100644
--- a/gpu/command_buffer/service/test_helper.cc
+++ b/gpu/command_buffer/service/test_helper.cc
@@ -270,7 +270,7 @@
 
   SetupFeatureInfoInitExpectationsWithGLVersion(gl, extensions, "", gl_version);
 
-  std::string l_version(base::StringToLowerASCII(std::string(gl_version)));
+  std::string l_version(base::ToLowerASCII(std::string(gl_version)));
   bool is_es3 = (l_version.substr(0, 12) == "opengl es 3.");
 
   EXPECT_CALL(*gl, GetIntegerv(GL_MAX_RENDERBUFFER_SIZE, _))
@@ -345,7 +345,7 @@
       .WillOnce(Return(reinterpret_cast<const uint8*>(gl_version)))
       .RetiresOnSaturation();
 
-  std::string l_version(base::StringToLowerASCII(std::string(gl_version)));
+  std::string l_version(base::ToLowerASCII(std::string(gl_version)));
   bool is_es3 = (l_version.substr(0, 12) == "opengl es 3.");
 
   if (strstr(extensions, "GL_ARB_texture_float") ||
diff --git a/gpu/config/gpu_control_list.cc b/gpu/config/gpu_control_list.cc
index eaa2e61..4d72fa6 100644
--- a/gpu/config/gpu_control_list.cc
+++ b/gpu/config/gpu_control_list.cc
@@ -24,8 +24,10 @@
 bool ProcessVersionString(const std::string& version_string,
                           char splitter,
                           std::vector<std::string>* version) {
+  char splitter_string[2] = {splitter, '\0'};
   DCHECK(version);
-  base::SplitString(version_string, splitter, version);
+  *version = base::SplitString(version_string, splitter_string,
+                               base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
   if (version->size() == 0)
     return false;
   // If the splitter is '-', we assume it's a date with format "mm-dd-yyyy";
@@ -1004,8 +1006,8 @@
   if (gl_version_info_.get() == NULL && gl_type_ == kGLTypeNone)
     return false;
 
-  std::vector<std::string> segments;
-  base::SplitString(gl_version, ' ', &segments);
+  std::vector<std::string> segments = base::SplitString(
+      gl_version, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
   std::string number;
   GLType gl_type = kGLTypeNone;
   if (segments.size() > 2 &&
@@ -1015,7 +1017,8 @@
 
     gl_type = kGLTypeGLES;
     if (segments.size() > 3 &&
-        base::StartsWithASCII(segments[3], "(ANGLE", false)) {
+        base::StartsWith(segments[3], "(ANGLE",
+                         base::CompareCase::INSENSITIVE_ASCII)) {
       gl_type = kGLTypeANGLE;
     }
   } else {
diff --git a/gpu/config/gpu_info_collector.cc b/gpu/config/gpu_info_collector.cc
index 0851bca..b60aeab 100644
--- a/gpu/config/gpu_info_collector.cc
+++ b/gpu/config/gpu_info_collector.cc
@@ -69,8 +69,8 @@
       sub_string = version_string.substr(begin, end - begin);
     else
       sub_string = version_string.substr(begin);
-    std::vector<std::string> pieces;
-    base::SplitString(sub_string, '.', &pieces);
+    std::vector<std::string> pieces = base::SplitString(
+        sub_string, ".", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
     if (pieces.size() >= 2)
       return pieces[0] + "." + pieces[1];
   }
diff --git a/gpu/config/gpu_info_collector_android.cc b/gpu/config/gpu_info_collector_android.cc
index 97a79e5..d3b457f 100644
--- a/gpu/config/gpu_info_collector_android.cc
+++ b/gpu/config/gpu_info_collector_android.cc
@@ -37,8 +37,8 @@
     sub_string = version_string.substr(begin, end - begin);
   else
     sub_string = version_string.substr(begin);
-  std::vector<std::string> pieces;
-  base::SplitString(sub_string, '.', &pieces);
+  std::vector<std::string> pieces = base::SplitString(
+      sub_string, ".", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
   if (pieces.size() < 2)
     return "0";
   return pieces[0] + "." + pieces[1];
diff --git a/gpu/config/gpu_info_collector_linux.cc b/gpu/config/gpu_info_collector_linux.cc
index 413e949..3af0127 100644
--- a/gpu/config/gpu_info_collector_linux.cc
+++ b/gpu/config/gpu_info_collector_linux.cc
@@ -56,7 +56,8 @@
   base::StringTokenizer t(contents, "\r\n");
   while (t.GetNext()) {
     std::string line = t.token();
-    if (base::StartsWithASCII(line, "ReleaseVersion=", true)) {
+    if (base::StartsWith(line, "ReleaseVersion=",
+                         base::CompareCase::SENSITIVE)) {
       size_t begin = line.find_first_of("0123456789");
       if (begin != std::string::npos) {
         size_t end = line.find_first_not_of("0123456789.", begin);
@@ -244,10 +245,11 @@
   DCHECK(gpu_info);
 
   std::string gl_version = gpu_info->gl_version;
-  if (base::StartsWithASCII(gl_version, "OpenGL ES", true))
+  if (base::StartsWith(gl_version, "OpenGL ES", base::CompareCase::SENSITIVE))
     gl_version = gl_version.substr(10);
-  std::vector<std::string> pieces;
-  base::SplitStringAlongWhitespace(gl_version, &pieces);
+  std::vector<std::string> pieces =
+      base::SplitString(gl_version, base::kWhitespaceASCII,
+                        base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
   // In linux, the gl version string might be in the format of
   //   GLVersion DriverVendor DriverVersion
   if (pieces.size() < 3)
diff --git a/gpu/config/gpu_test_expectations_parser.cc b/gpu/config/gpu_test_expectations_parser.cc
index 9a6e191..82b3858 100644
--- a/gpu/config/gpu_test_expectations_parser.cc
+++ b/gpu/config/gpu_test_expectations_parser.cc
@@ -129,9 +129,9 @@
 };
 
 Token ParseToken(const std::string& word) {
-  if (base::StartsWithASCII(word, "//", false))
+  if (base::StartsWith(word, "//", base::CompareCase::INSENSITIVE_ASCII))
     return kTokenComment;
-  if (base::StartsWithASCII(word, "0x", false))
+  if (base::StartsWith(word, "0x", base::CompareCase::INSENSITIVE_ASCII))
     return kConfigGPUDeviceID;
 
   for (int32 i = 0; i < kNumberOfExactMatchTokens; ++i) {
@@ -172,8 +172,8 @@
   entries_.clear();
   error_messages_.clear();
 
-  std::vector<std::string> lines;
-  base::SplitString(data, '\n', &lines);
+  std::vector<std::string> lines = base::SplitString(
+      data, "\n", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
   bool rt = true;
   for (size_t i = 0; i < lines.size(); ++i) {
     if (!ParseLine(lines[i], i + 1))
@@ -219,8 +219,9 @@
 bool GPUTestExpectationsParser::ParseConfig(
     const std::string& config_data, GPUTestConfig* config) {
   DCHECK(config);
-  std::vector<std::string> tokens;
-  base::SplitStringAlongWhitespace(config_data, &tokens);
+  std::vector<std::string> tokens =
+      base::SplitString(config_data, base::kWhitespaceASCII,
+                        base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
 
   for (size_t i = 0; i < tokens.size(); ++i) {
     Token token = ParseToken(tokens[i]);
@@ -263,8 +264,9 @@
 
 bool GPUTestExpectationsParser::ParseLine(
     const std::string& line_data, size_t line_number) {
-  std::vector<std::string> tokens;
-  base::SplitStringAlongWhitespace(line_data, &tokens);
+  std::vector<std::string> tokens =
+      base::SplitString(line_data, base::kWhitespaceASCII,
+                        base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
   int32 stage = kLineParserBegin;
   GPUTestExpectationEntry entry;
   entry.line_number = line_number;
diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
index 5d67988..96ddedf 100644
--- a/gpu/config/gpu_util.cc
+++ b/gpu/config/gpu_util.cc
@@ -34,8 +34,8 @@
 
 void StringToIntSet(const std::string& str, std::set<int>* list) {
   DCHECK(list);
-  std::vector<std::string> pieces;
-  base::SplitString(str, ',', &pieces);
+  std::vector<std::string> pieces =
+      base::SplitString(str, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
   for (size_t i = 0; i < pieces.size(); ++i) {
     int number = 0;
     bool succeed = base::StringToInt(pieces[i], &number);
diff --git a/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java b/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
index 6edf95f..2332fcf 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
@@ -7,7 +7,7 @@
 import android.content.Context;
 import android.test.InstrumentationTestCase;
 
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.library_loader.LibraryLoader;
 import org.chromium.base.library_loader.LibraryProcessType;
 
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java
index 605cfb0..91b993c 100644
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java
+++ b/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java
@@ -4,8 +4,8 @@
 
 package org.chromium.mojo.bindings;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
diff --git a/mojo/android/system/src/org/chromium/mojo/system/impl/BaseRunLoop.java b/mojo/android/system/src/org/chromium/mojo/system/impl/BaseRunLoop.java
index 0d09560..b39d5ed 100644
--- a/mojo/android/system/src/org/chromium/mojo/system/impl/BaseRunLoop.java
+++ b/mojo/android/system/src/org/chromium/mojo/system/impl/BaseRunLoop.java
@@ -4,8 +4,8 @@
 
 package org.chromium.mojo.system.impl;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.mojo.system.RunLoop;
 
 import java.lang.Runnable;
diff --git a/mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java b/mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java
index 9cfe61f..72fdd6b 100644
--- a/mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java
+++ b/mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java
@@ -4,8 +4,8 @@
 
 package org.chromium.mojo.system.impl;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.mojo.system.AsyncWaiter;
 import org.chromium.mojo.system.Core;
 import org.chromium.mojo.system.DataPipe;
diff --git a/sandbox/linux/services/thread_helpers.cc b/sandbox/linux/services/thread_helpers.cc
index c1ba04a..89648bc 100644
--- a/sandbox/linux/services/thread_helpers.cc
+++ b/sandbox/linux/services/thread_helpers.cc
@@ -121,12 +121,12 @@
   const char* message;
 
   if (action == ThreadAction::Start) {
-    // Should start the thread before calling thread_id().
+    // Should start the thread before calling GetThreadId().
     if (!thread->Start())
       return false;
   }
 
-  const base::PlatformThreadId thread_id = thread->thread_id();
+  const base::PlatformThreadId thread_id = thread->GetThreadId();
   const std::string thread_id_dir_str =
       "self/task/" + base::IntToString(thread_id) + "/";
 
diff --git a/services/http_server/http_request_parser.cc b/services/http_server/http_request_parser.cc
index 5aff0d0..d21107d 100644
--- a/services/http_server/http_request_parser.cc
+++ b/services/http_server/http_request_parser.cc
@@ -79,8 +79,8 @@
   // Request main main header, eg. GET /foobar.html HTTP/1.1
   {
     const std::string header_line = ShiftLine();
-    std::vector<std::string> header_line_tokens;
-    base::SplitString(header_line, ' ', &header_line_tokens);
+    std::vector<std::string> header_line_tokens = base::SplitString(
+        header_line, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
     DCHECK_EQ(3u, header_line_tokens.size());
     // Method.
     http_request_->method = header_line_tokens[0];
@@ -89,8 +89,7 @@
     // know) anything about the server address.
     http_request_->relative_url = header_line_tokens[1];
     // Protocol.
-    const std::string protocol =
-        base::StringToLowerASCII(header_line_tokens[2]);
+    const std::string protocol = base::ToLowerASCII(header_line_tokens[2]);
     CHECK(protocol == "http/1.0" || protocol == "http/1.1") <<
         "Protocol not supported: " << protocol;
   }
diff --git a/services/java_handler/java/src/org/chromium/services/java_handler/JavaHandler.java b/services/java_handler/java/src/org/chromium/services/java_handler/JavaHandler.java
index 5af2df7..9969637 100644
--- a/services/java_handler/java/src/org/chromium/services/java_handler/JavaHandler.java
+++ b/services/java_handler/java/src/org/chromium/services/java_handler/JavaHandler.java
@@ -9,8 +9,8 @@
 
 import dalvik.system.DexClassLoader;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.mojo.system.Core;
 import org.chromium.mojo.system.MessagePipeHandle;
 import org.chromium.mojo.system.impl.CoreImpl;
diff --git a/services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java b/services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java
index fc39880..387f6f5 100644
--- a/services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java
+++ b/services/native_viewport/android/src/org/chromium/mojo/PlatformViewportAndroid.java
@@ -14,8 +14,8 @@
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputConnection;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.mojo.keyboard.KeyboardServiceImpl;
 import org.chromium.mojo.keyboard.KeyboardServiceState;
 
diff --git a/services/python/mojo_url_redirector/mojo_url_redirector_apptest.cc b/services/python/mojo_url_redirector/mojo_url_redirector_apptest.cc
index 5e8e7b7..5d72314 100644
--- a/services/python/mojo_url_redirector/mojo_url_redirector_apptest.cc
+++ b/services/python/mojo_url_redirector/mojo_url_redirector_apptest.cc
@@ -166,8 +166,9 @@
       http_server::HttpRequestPtr request,
       const mojo::Callback<void(http_server::HttpResponsePtr)>& callback) {
   // The relative url should be of the form "/<platform>/<app>_location".
-  std::vector<std::string> url_components;
-  base::SplitString(request->relative_url, '/', &url_components);
+  std::vector<std::string> url_components =
+      base::SplitString(request->relative_url.get(), "/", base::TRIM_WHITESPACE,
+                        base::SPLIT_WANT_ALL);
   ASSERT_EQ(3u, url_components.size());
   std::string requested_platform = url_components[1];
   EXPECT_TRUE(requested_platform == kPlatform1 ||
diff --git a/shell/android/apk/src/org/chromium/mojo/shell/AndroidHandler.java b/shell/android/apk/src/org/chromium/mojo/shell/AndroidHandler.java
index e2df455..17f0189 100644
--- a/shell/android/apk/src/org/chromium/mojo/shell/AndroidHandler.java
+++ b/shell/android/apk/src/org/chromium/mojo/shell/AndroidHandler.java
@@ -9,8 +9,8 @@
 
 import dalvik.system.DexClassLoader;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.TraceEvent;
 
 import java.io.File;
diff --git a/shell/android/apk/src/org/chromium/mojo/shell/Bootstrap.java b/shell/android/apk/src/org/chromium/mojo/shell/Bootstrap.java
index 0df8871..257e8f5 100644
--- a/shell/android/apk/src/org/chromium/mojo/shell/Bootstrap.java
+++ b/shell/android/apk/src/org/chromium/mojo/shell/Bootstrap.java
@@ -6,7 +6,7 @@
 
 import android.content.Context;
 
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.JNINamespace;
 
 import java.io.File;
 
diff --git a/shell/android/apk/src/org/chromium/mojo/shell/JavaApplicationRegistry.java b/shell/android/apk/src/org/chromium/mojo/shell/JavaApplicationRegistry.java
index 1c33677..0d72b13 100644
--- a/shell/android/apk/src/org/chromium/mojo/shell/JavaApplicationRegistry.java
+++ b/shell/android/apk/src/org/chromium/mojo/shell/JavaApplicationRegistry.java
@@ -6,9 +6,9 @@
 
 import android.os.HandlerThread;
 
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.ApplicationStatus;
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
 import org.chromium.mojo.application.ApplicationConnection;
 import org.chromium.mojo.application.ApplicationDelegate;
 import org.chromium.mojo.application.ApplicationRunner;
diff --git a/shell/android/apk/src/org/chromium/mojo/shell/NativeHandlerThread.java b/shell/android/apk/src/org/chromium/mojo/shell/NativeHandlerThread.java
index 334372e..1481616 100644
--- a/shell/android/apk/src/org/chromium/mojo/shell/NativeHandlerThread.java
+++ b/shell/android/apk/src/org/chromium/mojo/shell/NativeHandlerThread.java
@@ -6,7 +6,7 @@
 
 import android.os.HandlerThread;
 
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.JNINamespace;
 
 /**
  * Handler thread associated with a native message loop.
diff --git a/shell/android/apk/src/org/chromium/mojo/shell/ShellService.java b/shell/android/apk/src/org/chromium/mojo/shell/ShellService.java
index af65505..0578e81 100644
--- a/shell/android/apk/src/org/chromium/mojo/shell/ShellService.java
+++ b/shell/android/apk/src/org/chromium/mojo/shell/ShellService.java
@@ -16,9 +16,9 @@
 import android.os.IBinder;
 import android.util.Log;
 
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.ApplicationStatus;
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
 import org.chromium.mojo.bindings.ConnectionErrorHandler;
 import org.chromium.mojo.bindings.InterfaceRequest;
 import org.chromium.mojo.system.MojoException;
diff --git a/shell/android/tests/src/org/chromium/mojo/shell/ShellTestBase.java b/shell/android/tests/src/org/chromium/mojo/shell/ShellTestBase.java
index 1b8df8a..3817ada 100644
--- a/shell/android/tests/src/org/chromium/mojo/shell/ShellTestBase.java
+++ b/shell/android/tests/src/org/chromium/mojo/shell/ShellTestBase.java
@@ -7,8 +7,8 @@
 import android.content.Context;
 import android.content.res.AssetManager;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/shell/context.cc b/shell/context.cc
index 4abe127..3154c8a 100644
--- a/shell/context.cc
+++ b/shell/context.cc
@@ -138,8 +138,8 @@
   base::ReplaceSubstringsAfterOffset(&handlers_spec, 0, "\\,", ",");
 #endif
 
-  std::vector<std::string> parts;
-  base::SplitString(handlers_spec, ',', &parts);
+  std::vector<std::string> parts = base::SplitString(
+      handlers_spec, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
   if (parts.size() % 2 != 0) {
     LOG(ERROR) << "Invalid value for switch " << switches::kContentHandlers
                << ": must be a comma-separated list of mimetype/url pairs."
@@ -162,9 +162,9 @@
 
 void InitNativeOptions(ApplicationManager* manager,
                        const base::CommandLine& command_line) {
-  std::vector<std::string> force_in_process_url_list;
-  base::SplitString(command_line.GetSwitchValueASCII(switches::kForceInProcess),
-                    ',', &force_in_process_url_list);
+  std::vector<std::string> force_in_process_url_list = base::SplitString(
+      command_line.GetSwitchValueASCII(switches::kForceInProcess), ",",
+      base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
   for (const auto& force_in_process_url : force_in_process_url_list) {
     GURL url(force_in_process_url);
     if (!url.is_valid()) {
diff --git a/testing/android/native_test/java/src/org/chromium/native_test/NativeTestActivity.java b/testing/android/native_test/java/src/org/chromium/native_test/NativeTestActivity.java
index 35a79f8..2476d2e 100644
--- a/testing/android/native_test/java/src/org/chromium/native_test/NativeTestActivity.java
+++ b/testing/android/native_test/java/src/org/chromium/native_test/NativeTestActivity.java
@@ -11,8 +11,8 @@
 import android.os.Environment;
 import android.os.Handler;
 
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.CommandLine;
-import org.chromium.base.JNINamespace;
 import org.chromium.base.Log;
 
 import java.io.File;
diff --git a/ui/android/java/src/org/chromium/ui/base/Clipboard.java b/ui/android/java/src/org/chromium/ui/base/Clipboard.java
index 67aaca2..fd0625d 100644
--- a/ui/android/java/src/org/chromium/ui/base/Clipboard.java
+++ b/ui/android/java/src/org/chromium/ui/base/Clipboard.java
@@ -11,8 +11,8 @@
 import android.os.Build;
 import android.widget.Toast;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.ui.R;
 
 /**
diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
index 78f86c9..e91a5d7 100644
--- a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
+++ b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
@@ -6,7 +6,7 @@
 
 import android.content.Context;
 
-import org.chromium.base.CalledByNative;
+import org.chromium.base.annotations.CalledByNative;
 
 /**
  * UI utilities for accessing form factor information.
diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
index bc6efb7..1101834 100644
--- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
+++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
@@ -18,9 +18,9 @@
 import android.text.TextUtils;
 import android.util.Log;
 
-import org.chromium.base.CalledByNative;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.ContentUriUtils;
-import org.chromium.base.JNINamespace;
 import org.chromium.ui.R;
 
 import java.io.File;
diff --git a/ui/android/java/src/org/chromium/ui/base/ViewAndroid.java b/ui/android/java/src/org/chromium/ui/base/ViewAndroid.java
index f339713..917701e 100644
--- a/ui/android/java/src/org/chromium/ui/base/ViewAndroid.java
+++ b/ui/android/java/src/org/chromium/ui/base/ViewAndroid.java
@@ -6,7 +6,7 @@
 
 import android.view.View;
 
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.JNINamespace;
 
 /**
  * From the Chromium architecture point of view, ViewAndroid and its native counterpart
diff --git a/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java b/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
index 8f1c58f..beff2c3 100644
--- a/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
+++ b/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java
@@ -15,8 +15,8 @@
 import android.util.SparseArray;
 import android.widget.Toast;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.ui.VSyncMonitor;
 
 import java.lang.ref.WeakReference;
diff --git a/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java b/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java
index 8ffaae4..4776b71 100644
--- a/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java
+++ b/ui/android/java/src/org/chromium/ui/gfx/BitmapHelper.java
@@ -8,8 +8,8 @@
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 
 /**
  * Helper class to decode and sample down bitmap resources.
diff --git a/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java b/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
index 3856951..5ab8611 100644
--- a/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
+++ b/ui/android/java/src/org/chromium/ui/gfx/DeviceDisplayInfo.java
@@ -13,8 +13,8 @@
 import android.view.Surface;
 import android.view.WindowManager;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 
 /**
  * This class facilitates access to android information typically only
diff --git a/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java b/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java
index e8fc5b9..6dfc1a6 100644
--- a/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java
+++ b/ui/android/java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java
@@ -11,8 +11,8 @@
 import android.util.TypedValue;
 import android.view.ViewConfiguration;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 import org.chromium.ui.R;
 
 /**
diff --git a/ui/events/devices/x11/touch_factory_x11.cc b/ui/events/devices/x11/touch_factory_x11.cc
index bd7b157..216c7db 100644
--- a/ui/events/devices/x11/touch_factory_x11.cc
+++ b/ui/events/devices/x11/touch_factory_x11.cc
@@ -62,10 +62,10 @@
           switches::kTouchDevices);
 
   if (!touch_devices.empty()) {
-    std::vector<std::string> devs;
+    std::vector<std::string> devs = base::SplitString(
+        touch_devices, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
     std::vector<int> device_ids;
     int devid;
-    base::SplitString(touch_devices, ',', &devs);
     for (std::vector<std::string>::iterator iter = devs.begin();
         iter != devs.end(); ++iter) {
       if (base::StringToInt(*iter, reinterpret_cast<int*>(&devid)))
diff --git a/ui/gl/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java b/ui/gl/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java
index bc57e1f..3503781 100644
--- a/ui/gl/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java
+++ b/ui/gl/android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java
@@ -6,7 +6,7 @@
 
 import android.graphics.SurfaceTexture;
 
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.JNINamespace;
 
 /**
  * Listener to an android SurfaceTexture object for frame availability.
diff --git a/ui/gl/android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java b/ui/gl/android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java
index 7f8e5cf..4629692 100644
--- a/ui/gl/android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java
+++ b/ui/gl/android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java
@@ -8,8 +8,8 @@
 import android.os.Build;
 import android.util.Log;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 
 /**
  * Wrapper class for the underlying platform's SurfaceTexture in order to
diff --git a/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java b/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
index 31cc62a..01dd141 100644
--- a/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
+++ b/ui/gl/android/java/src/org/chromium/ui/gl/VSyncProvider.java
@@ -7,8 +7,8 @@
 import android.view.Choreographer;
 import android.view.Choreographer.FrameCallback;
 
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
 
 /**
  * Java implementation of ui/gfx/vsync_provider.h that uses the {@link Choreographer} to compute the
diff --git a/ui/gl/gl_version_info.cc b/ui/gl/gl_version_info.cc
index 375580f..c5fba80 100644
--- a/ui/gl/gl_version_info.cc
+++ b/ui/gl/gl_version_info.cc
@@ -17,7 +17,7 @@
       minor_version(0),
       is_es3(false) {
   if (version_str) {
-    std::string lstr(base::StringToLowerASCII(std::string(version_str)));
+    std::string lstr(base::ToLowerASCII(std::string(version_str)));
     is_es = (lstr.length() > 12) && (lstr.substr(0, 9) == "opengl es");
     if (is_es)
       lstr = lstr.substr(10, 3);