diff --git a/DEPS b/DEPS
index 8bc6c33..af60339 100644
--- a/DEPS
+++ b/DEPS
@@ -22,7 +22,7 @@
   'libcxx_revision': '48198f9110397fff47fe7c37cbfa296be7d44d3d',
   'libcxxabi_revision': '4ad1009ab3a59fa7a6896d74d5e4de5885697f95',
   'sfntly_revision': '1bdaae8fc788a5ac8936d68bf24f37d977a13dac',
-  'skia_revision': '96a6c4df417a2382dd183b0dbc1c614819795f2a',
+  'skia_revision': '4de8a4dcf70fdaef7ff4e875e6f7c018053491d7',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and V8 without interference from each other.
diff --git a/base/allocator/BUILD.gn b/base/allocator/BUILD.gn
index 09d4f85..8d96317 100644
--- a/base/allocator/BUILD.gn
+++ b/base/allocator/BUILD.gn
@@ -30,7 +30,9 @@
 
   action("prep_libc") {
     script = "prep_libc.py"
-    outputs = [ "$target_gen_dir/allocator/libcmt.lib" ]
+    outputs = [
+      "$target_gen_dir/allocator/libcmt.lib",
+    ]
     args = [
       visual_studio_path + "/vc/lib",
       rebase_path("$target_gen_dir/allocator"),
diff --git a/base/process/kill.h b/base/process/kill.h
index f697701..de72d7a 100644
--- a/base/process/kill.h
+++ b/base/process/kill.h
@@ -9,7 +9,6 @@
 #define BASE_PROCESS_KILL_H_
 
 #include "base/files/file_path.h"
-#include "base/process/process.h"
 #include "base/process/process_handle.h"
 #include "base/time/time.h"
 
@@ -147,10 +146,10 @@
 // On Linux this method does not block the calling thread.
 // On OS X this method may block for up to 2 seconds.
 //
-// NOTE: The process must have been opened with the PROCESS_TERMINATE and
-// SYNCHRONIZE permissions.
+// NOTE: The process handle must have been opened with the PROCESS_TERMINATE
+// and SYNCHRONIZE permissions.
 //
-BASE_EXPORT void EnsureProcessTerminated(Process process);
+BASE_EXPORT void EnsureProcessTerminated(ProcessHandle process_handle);
 
 #if defined(OS_POSIX) && !defined(OS_MACOSX)
 // The nicer version of EnsureProcessTerminated() that is patient and will
diff --git a/base/process/kill_mac.cc b/base/process/kill_mac.cc
index a2632f6..9257ee6 100644
--- a/base/process/kill_mac.cc
+++ b/base/process/kill_mac.cc
@@ -165,8 +165,8 @@
 
 }  // namespace
 
-void EnsureProcessTerminated(Process process) {
-  WaitForChildToDie(process.pid(), kWaitBeforeKillSeconds);
+void EnsureProcessTerminated(ProcessHandle process) {
+  WaitForChildToDie(process, kWaitBeforeKillSeconds);
 }
 
 }  // namespace base
diff --git a/base/process/kill_posix.cc b/base/process/kill_posix.cc
index 3f304ca..d17e990 100644
--- a/base/process/kill_posix.cc
+++ b/base/process/kill_posix.cc
@@ -463,13 +463,13 @@
 
 }  // namespace
 
-void EnsureProcessTerminated(Process process) {
+void EnsureProcessTerminated(ProcessHandle process) {
   // If the child is already dead, then there's nothing to do.
-  if (IsChildDead(process.pid()))
+  if (IsChildDead(process))
     return;
 
   const unsigned timeout = 2;  // seconds
-  BackgroundReaper* reaper = new BackgroundReaper(process.pid(), timeout);
+  BackgroundReaper* reaper = new BackgroundReaper(process, timeout);
   PlatformThread::CreateNonJoinable(0, reaper);
 }
 
diff --git a/base/process/kill_win.cc b/base/process/kill_win.cc
index 0a0c99c..b102a87 100644
--- a/base/process/kill_win.cc
+++ b/base/process/kill_win.cc
@@ -38,7 +38,7 @@
 
 class TimerExpiredTask : public win::ObjectWatcher::Delegate {
  public:
-  explicit TimerExpiredTask(Process process);
+  explicit TimerExpiredTask(ProcessHandle process);
   ~TimerExpiredTask();
 
   void TimedOut();
@@ -50,23 +50,24 @@
   void KillProcess();
 
   // The process that we are watching.
-  Process process_;
+  ProcessHandle process_;
 
   win::ObjectWatcher watcher_;
 
   DISALLOW_COPY_AND_ASSIGN(TimerExpiredTask);
 };
 
-TimerExpiredTask::TimerExpiredTask(Process process) : process_(process.Pass()) {
-  watcher_.StartWatching(process_.Handle(), this);
+TimerExpiredTask::TimerExpiredTask(ProcessHandle process) : process_(process) {
+  watcher_.StartWatching(process_, this);
 }
 
 TimerExpiredTask::~TimerExpiredTask() {
   TimedOut();
+  DCHECK(!process_) << "Make sure to close the handle.";
 }
 
 void TimerExpiredTask::TimedOut() {
-  if (process_.IsValid())
+  if (process_)
     KillProcess();
 }
 
@@ -75,7 +76,8 @@
   tracked_objects::ScopedTracker tracking_profile(
       FROM_HERE_WITH_EXPLICIT_FUNCTION("TimerExpiredTask_OnObjectSignaled"));
 
-  process_.Close();
+  CloseHandle(process_);
+  process_ = NULL;
 }
 
 void TimerExpiredTask::KillProcess() {
@@ -86,10 +88,10 @@
   // terminates.  We just care that it eventually terminates, and that's what
   // TerminateProcess should do for us. Don't check for the result code since
   // it fails quite often. This should be investigated eventually.
-  base::KillProcess(process_.Handle(), kProcessKilledExitCode, false);
+  base::KillProcess(process_, kProcessKilledExitCode, false);
 
   // Now, just cleanup as if the process exited normally.
-  OnObjectSignaled(process_.Handle());
+  OnObjectSignaled(process_);
 }
 
 }  // namespace
@@ -239,18 +241,19 @@
   return false;
 }
 
-void EnsureProcessTerminated(Process process) {
-  DCHECK(!process.is_current());
+void EnsureProcessTerminated(ProcessHandle process) {
+  DCHECK(process != GetCurrentProcess());
 
   // If already signaled, then we are done!
-  if (WaitForSingleObject(process.Handle(), 0) == WAIT_OBJECT_0) {
+  if (WaitForSingleObject(process, 0) == WAIT_OBJECT_0) {
+    CloseHandle(process);
     return;
   }
 
   MessageLoop::current()->PostDelayedTask(
       FROM_HERE,
       base::Bind(&TimerExpiredTask::TimedOut,
-                 base::Owned(new TimerExpiredTask(process.Pass()))),
+                 base::Owned(new TimerExpiredTask(process))),
       base::TimeDelta::FromMilliseconds(kWaitInterval));
 }
 
diff --git a/base/process/launch.h b/base/process/launch.h
index 0450ddf..06abb29 100644
--- a/base/process/launch.h
+++ b/base/process/launch.h
@@ -22,6 +22,7 @@
 #include "base/posix/file_descriptor_shuffle.h"
 #elif defined(OS_WIN)
 #include <windows.h>
+#include "base/win/scoped_handle.h"
 #endif
 
 namespace base {
@@ -173,8 +174,9 @@
 //
 // Example (including literal quotes)
 //  cmdline = "c:\windows\explorer.exe" -foo "c:\bar\"
-BASE_EXPORT Process LaunchProcess(const string16& cmdline,
-                                  const LaunchOptions& options);
+BASE_EXPORT bool LaunchProcess(const string16& cmdline,
+                               const LaunchOptions& options,
+                               win::ScopedHandle* process_handle);
 
 // Launches a process with elevated privileges.  This does not behave exactly
 // like LaunchProcess as it uses ShellExecuteEx instead of CreateProcess to
diff --git a/base/process/launch_win.cc b/base/process/launch_win.cc
index 1d83ef9..3c787fe 100644
--- a/base/process/launch_win.cc
+++ b/base/process/launch_win.cc
@@ -232,17 +232,6 @@
   return true;
 }
 
-// TODO(rvargas) crbug.com/416721: Remove this stub after LaunchProcess is
-// fully migrated to use Process.
-Process LaunchProcess(const string16& cmdline,
-                      const LaunchOptions& options) {
-  win::ScopedHandle process_handle;
-  if (LaunchProcess(cmdline, options, &process_handle))
-    return Process(process_handle.Take());
-
-  return Process();
-}
-
 bool LaunchProcess(const CommandLine& cmdline,
                    const LaunchOptions& options,
                    ProcessHandle* process_handle) {
diff --git a/base/process/process_util_unittest.cc b/base/process/process_util_unittest.cc
index af88fe1..c98884d 100644
--- a/base/process/process_util_unittest.cc
+++ b/base/process/process_util_unittest.cc
@@ -888,14 +888,14 @@
 }
 
 TEST_F(ProcessUtilTest, DelayedTermination) {
-  base::Process child_process(SpawnChild("process_util_test_never_die"));
-  ASSERT_TRUE(child_process.IsValid());
-  base::EnsureProcessTerminated(child_process.Duplicate());
-  base::WaitForSingleProcess(child_process.Handle(),
-                             base::TimeDelta::FromSeconds(5));
+  base::ProcessHandle child_process = SpawnChild("process_util_test_never_die");
+  ASSERT_TRUE(child_process);
+  base::EnsureProcessTerminated(child_process);
+  base::WaitForSingleProcess(child_process, base::TimeDelta::FromSeconds(5));
 
   // Check that process was really killed.
-  EXPECT_TRUE(IsProcessDead(child_process.Handle()));
+  EXPECT_TRUE(IsProcessDead(child_process));
+  base::CloseProcessHandle(child_process);
 }
 
 MULTIPROCESS_TEST_MAIN(process_util_test_never_die) {
@@ -906,14 +906,16 @@
 }
 
 TEST_F(ProcessUtilTest, ImmediateTermination) {
-  base::Process child_process(SpawnChild("process_util_test_die_immediately"));
-  ASSERT_TRUE(child_process.IsValid());
+  base::ProcessHandle child_process =
+      SpawnChild("process_util_test_die_immediately");
+  ASSERT_TRUE(child_process);
   // Give it time to die.
   sleep(2);
-  base::EnsureProcessTerminated(child_process.Duplicate());
+  base::EnsureProcessTerminated(child_process);
 
   // Check that process was really killed.
-  EXPECT_TRUE(IsProcessDead(child_process.Handle()));
+  EXPECT_TRUE(IsProcessDead(child_process));
+  base::CloseProcessHandle(child_process);
 }
 
 MULTIPROCESS_TEST_MAIN(process_util_test_die_immediately) {
diff --git a/build/android/pylib/base/test_instance_factory.py b/build/android/pylib/base/test_instance_factory.py
index 9f62278..5204b2e 100644
--- a/build/android/pylib/base/test_instance_factory.py
+++ b/build/android/pylib/base/test_instance_factory.py
@@ -2,10 +2,17 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from pylib import constants
+from pylib.gtest import gtest_test_instance
+from pylib.utils import isolator
 
-def CreateTestInstance(_args, error_func):
 
-  # TODO(jbudorick) Add gtest test instance.
+def CreateTestInstance(args, error_func):
+
+  if args.command == 'gtest':
+    return gtest_test_instance.GtestTestInstance(
+        args, isolator.Isolator(constants.ISOLATE_DEPS_DIR))
   # TODO(jbudorick) Add instrumentation test instance.
-  error_func('No test instances currently supported.')
+
+  error_func('Unable to create %s test instance.' % args.command)
 
diff --git a/build/android/pylib/gtest/gtest_test_instance.py b/build/android/pylib/gtest/gtest_test_instance.py
new file mode 100644
index 0000000..1e87693
--- /dev/null
+++ b/build/android/pylib/gtest/gtest_test_instance.py
@@ -0,0 +1,137 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import logging
+import os
+import shutil
+import sys
+
+from pylib import constants
+from pylib.base import test_instance
+
+sys.path.append(os.path.join(
+    constants.DIR_SOURCE_ROOT, 'build', 'util', 'lib', 'common'))
+import unittest_util
+
+
+# Used for filtering large data deps at a finer grain than what's allowed in
+# isolate files since pushing deps to devices is expensive.
+# Wildcards are allowed.
+_DEPS_EXCLUSION_LIST = [
+    'chrome/test/data/extensions/api_test',
+    'chrome/test/data/extensions/secure_shell',
+    'chrome/test/data/firefox*',
+    'chrome/test/data/gpu',
+    'chrome/test/data/image_decoding',
+    'chrome/test/data/import',
+    'chrome/test/data/page_cycler',
+    'chrome/test/data/perf',
+    'chrome/test/data/pyauto_private',
+    'chrome/test/data/safari_import',
+    'chrome/test/data/scroll',
+    'chrome/test/data/third_party',
+    'third_party/hunspell_dictionaries/*.dic',
+    # crbug.com/258690
+    'webkit/data/bmp_decoder',
+    'webkit/data/ico_decoder',
+]
+
+
+class GtestTestInstance(test_instance.TestInstance):
+
+  def __init__(self, options, isolate_delegate):
+    super(GtestTestInstance, self).__init__()
+    self._apk_path = os.path.join(
+        constants.GetOutDirectory(), '%s_apk' % options.suite_name,
+        '%s-debug.apk' % options.suite_name)
+    self._data_deps = []
+    self._gtest_filter = options.test_filter
+    if options.isolate_file_path:
+      self._isolate_abs_path = os.path.abspath(options.isolate_file_path)
+      self._isolate_delegate = isolate_delegate
+      self._isolated_abs_path = os.path.join(
+          constants.GetOutDirectory(), '%s.isolated' % options.suite_name)
+    else:
+      logging.warning('No isolate file provided. No data deps will be pushed.');
+      self._isolate_delegate = None
+    self._suite = options.suite_name
+
+  #override
+  def TestType(self):
+    return 'gtest'
+
+  #override
+  def SetUp(self):
+    """Map data dependencies via isolate."""
+    if self._isolate_delegate:
+      self._isolate_delegate.Remap(
+          self._isolate_abs_path, self._isolated_abs_path)
+      self._isolate_delegate.PurgeExcluded(_DEPS_EXCLUSION_LIST)
+      self._isolate_delegate.MoveOutputDeps()
+      self._data_deps.extend([(constants.ISOLATE_DEPS_DIR, None)])
+
+  def GetDataDependencies(self):
+    """Returns the test suite's data dependencies.
+
+    Returns:
+      A list of (host_path, device_path) tuples to push. If device_path is
+      None, the client is responsible for determining where to push the file.
+    """
+    return self._data_deps
+
+  def FilterTests(self, test_list, disabled_prefixes=None):
+    """Filters |test_list| based on prefixes and, if present, a filter string.
+
+    Args:
+      test_list: The list of tests to filter.
+      disabled_prefixes: A list of test prefixes to filter. Defaults to
+        DISABLED_, FLAKY_, FAILS_, PRE_, and MANUAL_
+    Returns:
+      A filtered list of tests to run.
+    """
+    gtest_filter_strings = [
+        self._GenerateDisabledFilterString(disabled_prefixes)]
+    if self._gtest_filter:
+      gtest_filter_strings.append(self._gtest_filter)
+
+    filtered_test_list = test_list
+    for gtest_filter_string in gtest_filter_strings:
+      logging.info('gtest filter string: %s' % gtest_filter_string)
+      filtered_test_list = unittest_util.FilterTestNames(
+          filtered_test_list, gtest_filter_string)
+    logging.info('final list of tests: %s' % (str(filtered_test_list)))
+    return filtered_test_list
+
+  def _GenerateDisabledFilterString(self, disabled_prefixes):
+    disabled_filter_items = []
+
+    if disabled_prefixes is None:
+      disabled_prefixes = ['DISABLED_', 'FLAKY_', 'FAILS_', 'PRE_', 'MANUAL_']
+    disabled_filter_items += ['%s*' % dp for dp in disabled_prefixes]
+
+    disabled_tests_file_path = os.path.join(
+        constants.DIR_SOURCE_ROOT, 'build', 'android', 'pylib', 'gtest',
+        'filter', '%s_disabled' % self._suite)
+    if disabled_tests_file_path and os.path.exists(disabled_tests_file_path):
+      with open(disabled_tests_file_path) as disabled_tests_file:
+        disabled_filter_items += [
+            '%s' % l for l in (line.strip() for line in disabled_tests_file)
+            if l and not l.startswith('#')]
+
+    return '*-%s' % ':'.join(disabled_filter_items)
+
+  #override
+  def TearDown(self):
+    """Clear the mappings created by SetUp."""
+    if self._isolate_delegate:
+      self._isolate_delegate.Clear()
+
+  @property
+  def apk(self):
+    return self._apk_path
+
+  @property
+  def suite(self):
+    return self._suite
+
diff --git a/build/config/android/config.gni b/build/config/android/config.gni
index e2bd165..82405dd 100644
--- a/build/config/android/config.gni
+++ b/build/config/android/config.gni
@@ -95,12 +95,9 @@
   # Toolchain root directory for each build. The actual binaries are inside
   # a "bin" directory inside of these.
   _android_toolchain_version = "4.9"
-  x86_android_toolchain_root =
-      "$android_ndk_root/toolchains/x86-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
-  arm_android_toolchain_root =
-      "$android_ndk_root/toolchains/arm-linux-androideabi-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
-  mips_android_toolchain_root =
-      "$android_ndk_root/toolchains/mipsel-linux-android-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
+  x86_android_toolchain_root = "$android_ndk_root/toolchains/x86-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
+  arm_android_toolchain_root = "$android_ndk_root/toolchains/arm-linux-androideabi-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
+  mips_android_toolchain_root = "$android_ndk_root/toolchains/mipsel-linux-android-${_android_toolchain_version}/prebuilt/${android_host_os}-${android_host_arch}"
 
   # Location of libgcc. This is only needed for the current GN toolchain, so we
   # only need to define the current one, rather than one for every platform
@@ -109,20 +106,17 @@
     android_prebuilt_arch = "android-x86"
     _binary_prefix = "i686-linux-android"
     android_toolchain_root = "$x86_android_toolchain_root"
-    android_libgcc_file =
-        "$android_toolchain_root/lib/gcc/i686-linux-android/${_android_toolchain_version}/libgcc.a"
+    android_libgcc_file = "$android_toolchain_root/lib/gcc/i686-linux-android/${_android_toolchain_version}/libgcc.a"
   } else if (cpu_arch == "arm") {
     android_prebuilt_arch = "android-arm"
     _binary_prefix = "arm-linux-androideabi"
     android_toolchain_root = "$arm_android_toolchain_root"
-    android_libgcc_file =
-        "$android_toolchain_root/lib/gcc/arm-linux-androideabi/${_android_toolchain_version}/libgcc.a"
+    android_libgcc_file = "$android_toolchain_root/lib/gcc/arm-linux-androideabi/${_android_toolchain_version}/libgcc.a"
   } else if (cpu_arch == "mipsel") {
     android_prebuilt_arch = "android-mips"
     _binary_prefix = "mipsel-linux-android"
     android_toolchain_root = "$mips_android_toolchain_root"
-    android_libgcc_file =
-        "$android_toolchain_root/lib/gcc/mipsel-linux-android/${_android_toolchain_version}/libgcc.a"
+    android_libgcc_file = "$android_toolchain_root/lib/gcc/mipsel-linux-android/${_android_toolchain_version}/libgcc.a"
   } else {
     assert(false, "Need android libgcc support for your target arch.")
   }
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index 41fd75f..ce6e428 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -333,7 +333,9 @@
       sources = [
         _input_jar_path,
       ]
-      outputs = [ _output_jar_path ]
+      outputs = [
+        _output_jar_path,
+      ]
     }
   }
 
@@ -901,8 +903,12 @@
       _final_deps += [ ":${_template_name}__standalone_dex" ]
       _rebased_build_config = rebase_path(_build_config, root_build_dir)
       dex("${_template_name}__standalone_dex") {
-        sources = [_jar_path]
-        inputs = [_build_config]
+        sources = [
+          _jar_path,
+        ]
+        inputs = [
+          _build_config,
+        ]
         output = invoker.standalone_dex_path
         dex_arg_key = "${_rebased_build_config}:final_dex:dependency_dex_files"
         args = [ "--inputs=@FileArg($dex_arg_key)" ]
@@ -1033,7 +1039,9 @@
     }
 
     depfile = "$target_gen_dir/$target_name.d"
-    outputs = [ depfile ]
+    outputs = [
+      depfile,
+    ]
 
     args = [
       "--depfile",
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index d1342ac..5d0cb37 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -1312,7 +1312,9 @@
       script = "//build/android/gyp/pack_arm_relocations.py"
       packed_libraries_dir = "$_native_libs_dir/$android_app_abi"
       depfile = "$target_gen_dir/$target_name.d"
-      outputs = [ depfile ]
+      outputs = [
+        depfile,
+      ]
       inputs = [
         _build_config,
       ]
@@ -1440,8 +1442,7 @@
   android_apk(target_name) {
     _apk_name = test_suite_name
     final_apk_path = "$root_build_dir/${_apk_name}_apk/${_apk_name}-debug.apk"
-    java_files =
-        [ "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java" ]
+    java_files = [ "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActivity.java" ]
     android_manifest = "//testing/android/java/AndroidManifest.xml"
     native_libs = [ unittests_binary ]
     deps = [
diff --git a/build/go/rules.gni b/build/go/rules.gni
index d4b1f50..9f97854 100644
--- a/build/go/rules.gni
+++ b/build/go/rules.gni
@@ -39,7 +39,9 @@
       ":$static_library_name",
     ]
     script = "//build/go/go.py"
-    outputs = [ "${target_out_dir}/${target_name}" ]
+    outputs = [
+      "${target_out_dir}/${target_name}",
+    ]
 
     # Since go test does not permit specifying an output directory or output
     # binary name, we create a temporary build directory, and the python
@@ -79,7 +81,9 @@
       ":$static_library_name",
     ]
     script = "//build/go/go.py"
-    outputs = [ "${target_out_dir}/${target_name}" ]
+    outputs = [
+      "${target_out_dir}/${target_name}",
+    ]
 
     # Since go test does not permit specifying an output directory or output
     # binary name, we create a temporary build directory, and the python
diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn
index 0df6545..fc1ecbf 100644
--- a/build/secondary/third_party/android_tools/BUILD.gn
+++ b/build/secondary/third_party/android_tools/BUILD.gn
@@ -44,8 +44,7 @@
   deps = [
     ":android_support_v7_appcompat_resources",
   ]
-  jar_path =
-      "$android_sdk_root/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar"
+  jar_path = "$android_sdk_root/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar"
 }
 
 android_resources("android_support_v7_mediarouter_resources") {
@@ -63,6 +62,5 @@
     ":android_support_v7_mediarouter_resources",
     ":android_support_v7_appcompat_java",
   ]
-  jar_path =
-      "$android_sdk_root/extras/android/support/v7/mediarouter/libs/android-support-v7-mediarouter.jar"
+  jar_path = "$android_sdk_root/extras/android/support/v7/mediarouter/libs/android-support-v7-mediarouter.jar"
 }
diff --git a/build/secondary/third_party/icu/BUILD.gn b/build/secondary/third_party/icu/BUILD.gn
index b618673..8b64f70 100644
--- a/build/secondary/third_party/icu/BUILD.gn
+++ b/build/secondary/third_party/icu/BUILD.gn
@@ -481,7 +481,9 @@
         ]
       }
 
-      outputs = [ "$root_out_dir/icudtl.dat" ]
+      outputs = [
+        "$root_out_dir/icudtl.dat",
+      ]
     }
   }
 } else {
@@ -491,7 +493,9 @@
       sources = [
         "windows/icudt.dll",
       ]
-      outputs = [ "$root_out_dir/icudt.dll" ]
+      outputs = [
+        "$root_out_dir/icudt.dll",
+      ]
     }
   } else {
     source_set("icudata") {
diff --git a/build/secondary/tools/grit/BUILD.gn b/build/secondary/tools/grit/BUILD.gn
index dee3d06..660bf1b 100644
--- a/build/secondary/tools/grit/BUILD.gn
+++ b/build/secondary/tools/grit/BUILD.gn
@@ -15,7 +15,9 @@
 
   # Note that we can't call this "grit_sources.stamp" because that file is
   # implicitly created by GN for script actions.
-  outputs = [ "$target_out_dir/grit_sources.script.stamp" ]
+  outputs = [
+    "$target_out_dir/grit_sources.script.stamp",
+  ]
 
   args = [
     rebase_path("//tools/grit", root_build_dir),
diff --git a/build/secondary/tools/grit/repack.gni b/build/secondary/tools/grit/repack.gni
index cba1732..1030674 100644
--- a/build/secondary/tools/grit/repack.gni
+++ b/build/secondary/tools/grit/repack.gni
@@ -29,7 +29,9 @@
     script = "//tools/grit/grit/format/repack.py"
 
     inputs = invoker.sources
-    outputs = [ invoker.output ]
+    outputs = [
+      invoker.output,
+    ]
 
     args = []
     if (defined(invoker.repack_options)) {
diff --git a/build/toolchain/android/BUILD.gn b/build/toolchain/android/BUILD.gn
index e074333..d21ed27 100644
--- a/build/toolchain/android/BUILD.gn
+++ b/build/toolchain/android/BUILD.gn
@@ -65,8 +65,7 @@
     mkdir_command = "mkdir -p lib.stripped"
     strip_command =
         "$android_strip --strip-unneeded -o $temp_stripped_soname $soname"
-    replace_command =
-        "if ! cmp -s $temp_stripped_soname $stripped_soname; then mv $temp_stripped_soname $stripped_soname; fi"
+    replace_command = "if ! cmp -s $temp_stripped_soname $stripped_soname; then mv $temp_stripped_soname $stripped_soname; fi"
     postsolink = "$mkdir_command && $strip_command && $replace_command"
     solink_outputs = [ stripped_soname ]
 
diff --git a/build/toolchain/gcc_toolchain.gni b/build/toolchain/gcc_toolchain.gni
index 4a4ef45..cec9b08 100644
--- a/build/toolchain/gcc_toolchain.gni
+++ b/build/toolchain/gcc_toolchain.gni
@@ -84,33 +84,33 @@
 
     tool("cc") {
       depfile = "{{output}}.d"
-      command =
-          "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
+      command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
       depsformat = "gcc"
       description = "CC {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
+      ]
     }
 
     tool("cxx") {
       depfile = "{{output}}.d"
-      command =
-          "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} -c {{source}} -o {{output}}"
+      command = "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} -c {{source}} -o {{output}}"
       depsformat = "gcc"
       description = "CXX {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
+      ]
     }
 
     tool("asm") {
       # For GCC we can just use the C compiler to compile assembly.
       depfile = "{{output}}.d"
-      command =
-          "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
+      command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
       depsformat = "gcc"
       description = "ASM {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
+      ]
     }
 
     tool("alink") {
@@ -118,8 +118,9 @@
       command = "rm -f {{output}} && $ar rcs {{output}} @$rspfile"
       description = "AR {{output}}"
       rspfile_content = "{{inputs}}"
-      outputs =
-          [ "{{target_out_dir}}/{{target_output_name}}{{output_extension}}" ]
+      outputs = [
+        "{{target_out_dir}}/{{target_output_name}}{{output_extension}}",
+      ]
       default_output_extension = ".a"
       output_prefix = "lib"
     }
@@ -137,17 +138,14 @@
       temporary_tocname = sofile + ".tmp"
       link_command =
           "$ld -shared {{ldflags}} -o $sofile -Wl,-soname=$soname @$rspfile"
-      toc_command =
-          "{ readelf -d $sofile | grep SONAME ; nm -gD -f p $soname | cut -f1-2 -d' '; } > $temporary_tocname"
-      replace_command =
-          "if ! cmp -s $temporary_tocname $tocfile; then mv $temporary_tocname $tocfile; fi"
+      toc_command = "{ readelf -d $sofile | grep SONAME ; nm -gD -f p $soname | cut -f1-2 -d' '; } > $temporary_tocname"
+      replace_command = "if ! cmp -s $temporary_tocname $tocfile; then mv $temporary_tocname $tocfile; fi"
 
       command = "$link_command && $toc_command && $replace_command"
       if (defined(invoker.postsolink)) {
         command += " && " + invoker.postsolink
       }
-      rspfile_content =
-          "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix"
+      rspfile_content = "-Wl,--whole-archive {{inputs}} {{solibs}} -Wl,--no-whole-archive $solink_libs_section_prefix {{libs}} $solink_libs_section_postfix"
 
       description = "SOLINK $sofile"
 
@@ -179,14 +177,15 @@
     tool("link") {
       outfile = "{{root_out_dir}}/{{target_output_name}}{{output_extension}}"
       rspfile = "$outfile.rsp"
-      command =
-          "$ld {{ldflags}} -o $outfile -Wl,--start-group @$rspfile {{solibs}} -Wl,--end-group $libs_section_prefix {{libs}} $libs_section_postfix"
+      command = "$ld {{ldflags}} -o $outfile -Wl,--start-group @$rspfile {{solibs}} -Wl,--end-group $libs_section_prefix {{libs}} $libs_section_postfix"
       if (defined(invoker.postlink)) {
         command += " && " + invoker.postlink
       }
       description = "LINK $outfile"
       rspfile_content = "{{inputs}}"
-      outputs = [ outfile ]
+      outputs = [
+        outfile,
+      ]
       if (defined(invoker.link_outputs)) {
         outputs += invoker.link_outputs
       }
@@ -198,8 +197,7 @@
     }
 
     tool("copy") {
-      command =
-          "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})"
+      command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})"
       description = "COPY {{source}} {{output}}"
     }
 
diff --git a/build/toolchain/mac/BUILD.gn b/build/toolchain/mac/BUILD.gn
index 052e76c..26ad865 100644
--- a/build/toolchain/mac/BUILD.gn
+++ b/build/toolchain/mac/BUILD.gn
@@ -57,61 +57,61 @@
 
     tool("cc") {
       depfile = "{{output}}.d"
-      command =
-          "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
+      command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
       depsformat = "gcc"
       description = "CC {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
+      ]
     }
 
     tool("cxx") {
       depfile = "{{output}}.d"
-      command =
-          "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} -c {{source}} -o {{output}}"
+      command = "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} -c {{source}} -o {{output}}"
       depsformat = "gcc"
       description = "CXX {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
+      ]
     }
 
     tool("asm") {
       # For GCC we can just use the C compiler to compile assembly.
       depfile = "{{output}}.d"
-      command =
-          "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
+      command = "$cc -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} -c {{source}} -o {{output}}"
       depsformat = "gcc"
       description = "ASM {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
+      ]
     }
 
     tool("objc") {
       depfile = "{{output}}.d"
-      command =
-          "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} {{cflags_objc}} -c {{source}} -o {{output}}"
+      command = "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_c}} {{cflags_objc}} -c {{source}} -o {{output}}"
       depsformat = "gcc"
       description = "OBJC {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
+      ]
     }
 
     tool("objcxx") {
       depfile = "{{output}}.d"
-      command =
-          "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} {{cflags_objcc}} -c {{source}} -o {{output}}"
+      command = "$cxx -MMD -MF $depfile {{defines}} {{include_dirs}} {{cflags}} {{cflags_cc}} {{cflags_objcc}} -c {{source}} -o {{output}}"
       depsformat = "gcc"
       description = "OBJCXX {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.o",
+      ]
     }
 
     tool("alink") {
-      command =
-          "rm -f {{output}} && ./gyp-mac-tool filter-libtool libtool -static -o {{output}} {{inputs}}"
+      command = "rm -f {{output}} && ./gyp-mac-tool filter-libtool libtool -static -o {{output}} {{inputs}}"
       description = "LIBTOOL-STATIC {{output}}"
-      outputs =
-          [ "{{target_out_dir}}/{{target_output_name}}{{output_extension}}" ]
+      outputs = [
+        "{{target_out_dir}}/{{target_output_name}}{{output_extension}}",
+      ]
       default_output_extension = ".a"
       output_prefix = "lib"
     }
@@ -131,17 +131,12 @@
       tocname = dylib + ".TOC"
       temporary_tocname = dylib + ".tmp"
 
-      does_reexport_command =
-          "[ ! -e $dylib -o ! -e $tocname ] || otool -l $dylib | grep -q LC_REEXPORT_DYLIB"
-      link_command =
-          "$ld -shared {{ldflags}} -o $dylib -Wl,-filelist,$rspfile {{solibs}} {{libs}}"
-      replace_command =
-          "if ! cmp -s $temporary_tocname $tocname; then mv $temporary_tocname $tocname"
-      extract_toc_command =
-          "{ otool -l $dylib | grep LC_ID_DYLIB -A 5; nm -gP $dylib | cut -f1-2 -d' ' | grep -v U\$\$; true; }"
+      does_reexport_command = "[ ! -e $dylib -o ! -e $tocname ] || otool -l $dylib | grep -q LC_REEXPORT_DYLIB"
+      link_command = "$ld -shared {{ldflags}} -o $dylib -Wl,-filelist,$rspfile {{solibs}} {{libs}}"
+      replace_command = "if ! cmp -s $temporary_tocname $tocname; then mv $temporary_tocname $tocname"
+      extract_toc_command = "{ otool -l $dylib | grep LC_ID_DYLIB -A 5; nm -gP $dylib | cut -f1-2 -d' ' | grep -v U\$\$; true; }"
 
-      command =
-          "if $does_reexport_command ; then $link_command && $extract_toc_command > $tocname; else $link_command && $extract_toc_command > $temporary_tocname && $replace_command ; fi; fi"
+      command = "if $does_reexport_command ; then $link_command && $extract_toc_command > $tocname; else $link_command && $extract_toc_command > $temporary_tocname && $replace_command ; fi; fi"
 
       rspfile_content = "{{inputs_newline}}"
 
@@ -172,11 +167,12 @@
     tool("link") {
       outfile = "{{root_out_dir}}/{{target_output_name}}{{output_extension}}"
       rspfile = "$outfile.rsp"
-      command =
-          "$ld {{ldflags}} -o $outfile -Wl,-filelist,$rspfile {{solibs}} {{libs}}"
+      command = "$ld {{ldflags}} -o $outfile -Wl,-filelist,$rspfile {{solibs}} {{libs}}"
       description = "LINK $outfile"
       rspfile_content = "{{inputs_newline}}"
-      outputs = [ outfile ]
+      outputs = [
+        outfile,
+      ]
     }
 
     tool("stamp") {
@@ -185,8 +181,7 @@
     }
 
     tool("copy") {
-      command =
-          "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})"
+      command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} && cp -af {{source}} {{output}})"
       description = "COPY {{source}} {{output}}"
     }
 
diff --git a/build/toolchain/nacl/BUILD.gn b/build/toolchain/nacl/BUILD.gn
index bea30e0..b923608 100644
--- a/build/toolchain/nacl/BUILD.gn
+++ b/build/toolchain/nacl/BUILD.gn
@@ -9,16 +9,14 @@
   ld = toolprefix + "g++"
 
   tool("cc") {
-    command =
-        "$cc -MMD -MF \$out.d \$defines \$includes \$cflags \$cflags_c -c \$in -o \$out"
+    command = "$cc -MMD -MF \$out.d \$defines \$includes \$cflags \$cflags_c -c \$in -o \$out"
     description = "CC(NaCl x86 Newlib) \$out"
     depfile = "\$out.d"
     depsformat = "gcc"
   }
   tool("cxx") {
     # cflags_pch_cc
-    command =
-        "$cxx -MMD -MF \$out.d \$defines \$includes \$cflags \$cflags_cc -c \$in -o \$out"
+    command = "$cxx -MMD -MF \$out.d \$defines \$includes \$cflags \$cflags_cc -c \$in -o \$out"
     description = "CXX(NaCl x86 Newlib) \$out"
     depfile = "\$out.d"
     depsformat = "gcc"
@@ -28,16 +26,14 @@
     description = "AR(NaCl x86 Newlib) \$out"
   }
   tool("solink") {
-    command =
-        "if [ ! -e \$lib -o ! -e \${lib}.TOC ]; then $ld -shared \$ldflags -o \$lib -Wl,-soname=\$soname -Wl,--whole-archive \$in \$solibs -Wl,--no-whole-archive \$libs && { readelf -d \${lib} | grep SONAME ; nm -gD -f p \${lib} | cut -f1-2 -d' '; } > \${lib}.TOC; else $ld -shared \$ldflags -o \$lib -Wl,-soname=\$soname -Wl,--whole-archive \$in \$solibs -Wl,--no-whole-archive \$libs && { readelf -d \${lib} | grep SONAME ; nm -gD -f p \${lib} | cut -f1-2 -d' '; } > \${lib}.tmp && if ! cmp -s \${lib}.tmp \${lib}.TOC; then mv \${lib}.tmp \${lib}.TOC ; fi; fi"
+    command = "if [ ! -e \$lib -o ! -e \${lib}.TOC ]; then $ld -shared \$ldflags -o \$lib -Wl,-soname=\$soname -Wl,--whole-archive \$in \$solibs -Wl,--no-whole-archive \$libs && { readelf -d \${lib} | grep SONAME ; nm -gD -f p \${lib} | cut -f1-2 -d' '; } > \${lib}.TOC; else $ld -shared \$ldflags -o \$lib -Wl,-soname=\$soname -Wl,--whole-archive \$in \$solibs -Wl,--no-whole-archive \$libs && { readelf -d \${lib} | grep SONAME ; nm -gD -f p \${lib} | cut -f1-2 -d' '; } > \${lib}.tmp && if ! cmp -s \${lib}.tmp \${lib}.TOC; then mv \${lib}.tmp \${lib}.TOC ; fi; fi"
     description = "SOLINK(NaCl x86 Newlib) \$lib"
 
     #pool = "link_pool"
     restat = "1"
   }
   tool("link") {
-    command =
-        "$ld \$ldflags -o \$out -Wl,--start-group \$in \$solibs -Wl,--end-group \$libs"
+    command = "$ld \$ldflags -o \$out -Wl,--start-group \$in \$solibs -Wl,--end-group \$libs"
     description = "LINK(NaCl x86 Newlib) \$out"
 
     #pool = "link_pool"
diff --git a/build/toolchain/win/BUILD.gn b/build/toolchain/win/BUILD.gn
index 1be1cf4..b8f87e7 100644
--- a/build/toolchain/win/BUILD.gn
+++ b/build/toolchain/win/BUILD.gn
@@ -81,12 +81,12 @@
     tool("cc") {
       rspfile = "{{output}}.rsp"
       pdbname = "{{target_out_dir}}/{{target_output_name}}_c.pdb"
-      command =
-          "ninja -t msvc -e $env -- $cl /nologo /showIncludes /FC @$rspfile /c {{source}} /Fo{{output}} /Fd$pdbname"
+      command = "ninja -t msvc -e $env -- $cl /nologo /showIncludes /FC @$rspfile /c {{source}} /Fo{{output}} /Fd$pdbname"
       depsformat = "msvc"
       description = "CC {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.obj" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.obj",
+      ]
       rspfile_content = "{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}}"
     }
 
@@ -95,37 +95,36 @@
 
       # The PDB name needs to be different between C and C++ compiled files.
       pdbname = "{{target_out_dir}}/{{target_output_name}}_cc.pdb"
-      command =
-          "ninja -t msvc -e $env -- $cl /nologo /showIncludes /FC @$rspfile /c {{source}} /Fo{{output}} /Fd$pdbname"
+      command = "ninja -t msvc -e $env -- $cl /nologo /showIncludes /FC @$rspfile /c {{source}} /Fo{{output}} /Fd$pdbname"
       depsformat = "msvc"
       description = "CXX {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.obj" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.obj",
+      ]
       rspfile_content = "{{defines}} {{include_dirs}} {{cflags}} {{cflags_c}}"
     }
 
     tool("rc") {
-      command =
-          "$python_path gyp-win-tool rc-wrapper $env rc.exe {{defines}} {{include_dirs}} /fo{{output}} {{source}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.res" ]
+      command = "$python_path gyp-win-tool rc-wrapper $env rc.exe {{defines}} {{include_dirs}} /fo{{output}} {{source}}"
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.res",
+      ]
       description = "RC {{output}}"
     }
 
     tool("asm") {
       # TODO(brettw): "/safeseh" assembler argument is hardcoded here. Extract
       # assembler flags to a variable like cflags. crbug.com/418613
-      command =
-          "$python_path gyp-win-tool asm-wrapper $env ml.exe {{defines}} {{include_dirs}} /safeseh /c /Fo {{output}} {{source}}"
+      command = "$python_path gyp-win-tool asm-wrapper $env ml.exe {{defines}} {{include_dirs}} /safeseh /c /Fo {{output}} {{source}}"
       description = "ASM {{output}}"
-      outputs =
-          [ "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.obj" ]
+      outputs = [
+        "{{source_out_dir}}/{{target_output_name}}.{{source_name_part}}.obj",
+      ]
     }
 
     tool("alink") {
       rspfile = "{{output}}.rsp"
-      command =
-          "$python_path gyp-win-tool link-wrapper $env False lib.exe /nologo /ignore:4221 /OUT:{{output}} @$rspfile"
+      command = "$python_path gyp-win-tool link-wrapper $env False lib.exe /nologo /ignore:4221 /OUT:{{output}} @$rspfile"
       description = "LIB {{output}}"
       outputs = [
         # Ignore {{output_extension}} and always use .lib, there's no reason to
@@ -145,8 +144,7 @@
           "{{root_out_dir}}/{{target_output_name}}{{output_extension}}.lib"  # e.g. foo.dll.lib
       rspfile = "${dllname}.rsp"
 
-      link_command =
-          "$python_path gyp-win-tool link-wrapper $env False link.exe /nologo /IMPLIB:$libname /DLL /OUT:$dllname /PDB:${dllname}.pdb @$rspfile"
+      link_command = "$python_path gyp-win-tool link-wrapper $env False link.exe /nologo /IMPLIB:$libname /DLL /OUT:$dllname /PDB:${dllname}.pdb @$rspfile"
 
       # TODO(brettw) support manifests
       #manifest_command = "$python_path gyp-win-tool manifest-wrapper $env mt.exe -nologo -manifest $manifests -out:${dllname}.manifest"
@@ -170,8 +168,7 @@
     tool("link") {
       rspfile = "{{output}}.rsp"
 
-      link_command =
-          "$python_path gyp-win-tool link-wrapper $env False link.exe /nologo /OUT:{{output}} /PDB:{{output}}.pdb @$rspfile"
+      link_command = "$python_path gyp-win-tool link-wrapper $env False link.exe /nologo /OUT:{{output}} /PDB:{{output}}.pdb @$rspfile"
 
       # TODO(brettw) support manifests
       #manifest_command = "$python_path gyp-win-tool manifest-wrapper $env mt.exe -nologo -manifest $manifests -out:{{output}}.manifest"
@@ -180,8 +177,9 @@
 
       default_output_extension = ".exe"
       description = "LINK {{output}}"
-      outputs =
-          [ "{{root_out_dir}}/{{target_output_name}}{{output_extension}}" ]
+      outputs = [
+        "{{root_out_dir}}/{{target_output_name}}{{output_extension}}",
+      ]
 
       # The use of inputs_newline is to work around a fixed per-line buffer
       # size in the linker.
diff --git a/build/util/BUILD.gn b/build/util/BUILD.gn
index 3fc7757..c18f0ce 100644
--- a/build/util/BUILD.gn
+++ b/build/util/BUILD.gn
@@ -15,7 +15,9 @@
   ]
 
   output_file = "$root_gen_dir/webkit_version.h"
-  outputs = [ output_file ]
+  outputs = [
+    output_file,
+  ]
 
   args = [
     "-f",
diff --git a/cc/layers/heads_up_display_layer_impl.cc b/cc/layers/heads_up_display_layer_impl.cc
index bb68571..ea9e713 100644
--- a/cc/layers/heads_up_display_layer_impl.cc
+++ b/cc/layers/heads_up_display_layer_impl.cc
@@ -17,6 +17,7 @@
 #include "cc/output/renderer.h"
 #include "cc/quads/texture_draw_quad.h"
 #include "cc/resources/memory_history.h"
+#include "cc/trees/layer_tree_host_impl.h"
 #include "cc/trees/layer_tree_impl.h"
 #include "skia/ext/platform_canvas.h"
 #include "third_party/khronos/GLES2/gl2.h"
@@ -276,6 +277,9 @@
         DrawFPSDisplay(canvas, layer_tree_impl()->frame_rate_counter(), 0, 0);
   }
 
+  area = DrawGpuRasterizationStatus(canvas, 0, area.bottom(),
+                                    SkMaxScalar(area.width(), 150));
+
   if (debug_state.ShowMemoryStats())
     DrawMemoryDisplay(canvas, 0, area.bottom(), SkMaxScalar(area.width(), 150));
 }
@@ -529,6 +533,57 @@
   return area;
 }
 
+SkRect HeadsUpDisplayLayerImpl::DrawGpuRasterizationStatus(SkCanvas* canvas,
+                                                           int right,
+                                                           int top,
+                                                           int width) const {
+  std::string status;
+  SkColor color = SK_ColorRED;
+  switch (layer_tree_impl()->GetGpuRasterizationStatus()) {
+    case GpuRasterizationStatus::ON:
+      status = "GPU raster: on";
+      color = SK_ColorGREEN;
+      break;
+    case GpuRasterizationStatus::ON_FORCED:
+      status = "GPU raster: on (forced)";
+      color = SK_ColorGREEN;
+      break;
+    case GpuRasterizationStatus::OFF_DEVICE:
+      status = "GPU raster: off (device)";
+      color = SK_ColorRED;
+      break;
+    case GpuRasterizationStatus::OFF_VIEWPORT:
+      status = "GPU raster: off (viewport)";
+      color = SK_ColorYELLOW;
+      break;
+    case GpuRasterizationStatus::OFF_CONTENT:
+      status = "GPU raster: off (content)";
+      color = SK_ColorYELLOW;
+      break;
+  }
+
+  if (status.empty())
+    return SkRect::MakeEmpty();
+
+  const int kPadding = 4;
+  const int kFontHeight = 13;
+
+  const int height = kFontHeight + 2 * kPadding;
+  const int left = bounds().width() - width - right;
+  const SkRect area = SkRect::MakeXYWH(left, top, width, height);
+
+  SkPaint paint = CreatePaint();
+  DrawGraphBackground(canvas, &paint, area);
+
+  SkPoint gpu_status_pos = SkPoint::Make(left + kPadding, top + kFontHeight);
+
+  paint.setColor(color);
+  DrawText(canvas, &paint, status, SkPaint::kLeft_Align, kFontHeight,
+           gpu_status_pos);
+
+  return area;
+}
+
 SkRect HeadsUpDisplayLayerImpl::DrawPaintTimeDisplay(
     SkCanvas* canvas,
     const PaintTimeCounter* paint_time_counter,
diff --git a/cc/layers/heads_up_display_layer_impl.h b/cc/layers/heads_up_display_layer_impl.h
index c826092..3e9436b 100644
--- a/cc/layers/heads_up_display_layer_impl.h
+++ b/cc/layers/heads_up_display_layer_impl.h
@@ -105,6 +105,10 @@
                            int top,
                            int right,
                            int width) const;
+  SkRect DrawGpuRasterizationStatus(SkCanvas* canvas,
+                                    int right,
+                                    int top,
+                                    int width) const;
   SkRect DrawPaintTimeDisplay(SkCanvas* canvas,
                               const PaintTimeCounter* paint_time_counter,
                               int top,
diff --git a/cc/surfaces/BUILD.gn b/cc/surfaces/BUILD.gn
index ea44068..6c7c1cc 100644
--- a/cc/surfaces/BUILD.gn
+++ b/cc/surfaces/BUILD.gn
@@ -7,7 +7,9 @@
     "surface_id.h",
   ]
 
-  deps = [ "//base" ]
+  deps = [
+    "//base",
+  ]
 }
 
 component("surfaces") {
@@ -50,4 +52,3 @@
     configs += [ "//build/config/compiler:optimize_max" ]
   }
 }
-
diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
index c2fce2a..6c7cfe0 100644
--- a/cc/trees/layer_tree_host.cc
+++ b/cc/trees/layer_tree_host.cc
@@ -377,6 +377,7 @@
   sync_tree->set_sent_top_controls_delta(0.f);
 
   host_impl->SetUseGpuRasterization(UseGpuRasterization());
+  host_impl->set_gpu_rasterization_status(GetGpuRasterizationStatus());
   RecordGpuRasterizationHistogram();
 
   host_impl->SetViewportSize(device_viewport_size_);
@@ -636,6 +637,21 @@
   }
 }
 
+GpuRasterizationStatus LayerTreeHost::GetGpuRasterizationStatus() const {
+  if (settings_.gpu_rasterization_forced) {
+    return GpuRasterizationStatus::ON_FORCED;
+  } else if (settings_.gpu_rasterization_enabled) {
+    if (!has_gpu_rasterization_trigger_) {
+      return GpuRasterizationStatus::OFF_VIEWPORT;
+    } else if (!content_is_suitable_for_gpu_rasterization_) {
+      return GpuRasterizationStatus::OFF_CONTENT;
+    } else {
+      return GpuRasterizationStatus::ON;
+    }
+  }
+  return GpuRasterizationStatus::OFF_DEVICE;
+}
+
 void LayerTreeHost::SetHasGpuRasterizationTrigger(bool has_trigger) {
   if (has_trigger == has_gpu_rasterization_trigger_)
     return;
diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h
index de91b76..0ad4c6f 100644
--- a/cc/trees/layer_tree_host.h
+++ b/cc/trees/layer_tree_host.h
@@ -66,6 +66,7 @@
 struct PendingPageScaleAnimation;
 struct RenderingStats;
 struct ScrollAndScaleSet;
+enum class GpuRasterizationStatus;
 
 // Provides information on an Impl's rendering capabilities back to the
 // LayerTreeHost.
@@ -208,6 +209,7 @@
   }
   void SetHasGpuRasterizationTrigger(bool has_trigger);
   bool UseGpuRasterization() const;
+  GpuRasterizationStatus GetGpuRasterizationStatus() const;
 
   void SetViewportSize(const gfx::Size& device_viewport_size);
   void SetTopControlsLayoutHeight(float height);
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 10b0685..0a45cb7 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -191,6 +191,7 @@
     : client_(client),
       proxy_(proxy),
       use_gpu_rasterization_(false),
+      gpu_rasterization_status_(GpuRasterizationStatus::OFF_DEVICE),
       input_handler_client_(NULL),
       did_lock_scrolling_layer_(false),
       should_bubble_scrolls_(false),
diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h
index 900e658..c248a21 100644
--- a/cc/trees/layer_tree_host_impl.h
+++ b/cc/trees/layer_tree_host_impl.h
@@ -62,6 +62,14 @@
 class UIResourceRequest;
 struct RendererCapabilitiesImpl;
 
+enum class GpuRasterizationStatus {
+  ON,
+  ON_FORCED,
+  OFF_DEVICE,
+  OFF_VIEWPORT,
+  OFF_CONTENT
+};
+
 // LayerTreeHost->Proxy callback interface.
 class LayerTreeHostImplClient {
  public:
@@ -279,6 +287,15 @@
   TileManager* tile_manager() { return tile_manager_.get(); }
   void SetUseGpuRasterization(bool use_gpu);
   bool use_gpu_rasterization() const { return use_gpu_rasterization_; }
+
+  GpuRasterizationStatus gpu_rasterization_status() const {
+    return gpu_rasterization_status_;
+  }
+  void set_gpu_rasterization_status(
+      GpuRasterizationStatus gpu_rasterization_status) {
+    gpu_rasterization_status_ = gpu_rasterization_status;
+  }
+
   bool create_low_res_tiling() const {
     return settings_.create_low_res_tiling && !use_gpu_rasterization_;
   }
@@ -591,6 +608,7 @@
   scoped_ptr<ResourceProvider> resource_provider_;
   scoped_ptr<TileManager> tile_manager_;
   bool use_gpu_rasterization_;
+  GpuRasterizationStatus gpu_rasterization_status_;
   scoped_ptr<RasterWorkerPool> raster_worker_pool_;
   scoped_ptr<ResourcePool> resource_pool_;
   scoped_ptr<ResourcePool> staging_resource_pool_;
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index ad355fa..a278fbf 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -823,6 +823,10 @@
   return layer_tree_host_impl_->use_gpu_rasterization();
 }
 
+GpuRasterizationStatus LayerTreeImpl::GetGpuRasterizationStatus() const {
+  return layer_tree_host_impl_->gpu_rasterization_status();
+}
+
 bool LayerTreeImpl::create_low_res_tiling() const {
   return layer_tree_host_impl_->create_low_res_tiling();
 }
diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h
index 60a097d..ef4f877 100644
--- a/cc/trees/layer_tree_impl.h
+++ b/cc/trees/layer_tree_impl.h
@@ -90,6 +90,7 @@
   void DidAnimateScrollOffset();
   void InputScrollAnimationFinished();
   bool use_gpu_rasterization() const;
+  GpuRasterizationStatus GetGpuRasterizationStatus() const;
   bool create_low_res_tiling() const;
   BlockingTaskRunner* BlockingMainThreadTaskRunner() const;
   bool RequiresHighResToDraw() const;
diff --git a/crypto/BUILD.gn b/crypto/BUILD.gn
index dd4136a..94388f7 100644
--- a/crypto/BUILD.gn
+++ b/crypto/BUILD.gn
@@ -40,6 +40,7 @@
     "hmac_openssl.cc",
     "mac_security_services_lock.cc",
     "mac_security_services_lock.h",
+
     # TODO(brettw) these mocks should be moved to a test_support_crypto target
     # if possible.
     "mock_apple_keychain.cc",
@@ -232,9 +233,7 @@
     ]
 
     if (use_openssl || !is_linux) {
-      sources -= [
-        "rsa_private_key_nss_unittest.cc",
-      ]
+      sources -= [ "rsa_private_key_nss_unittest.cc" ]
     }
 
     if (use_openssl) {
@@ -293,9 +292,13 @@
 # on the current SSL library should just depend on this.
 group("platform") {
   if (use_openssl) {
-    deps = [ "//third_party/boringssl" ]
+    deps = [
+      "//third_party/boringssl",
+    ]
   } else {
-    deps = [ "//net/third_party/nss/ssl:libssl" ]
+    deps = [
+      "//net/third_party/nss/ssl:libssl",
+    ]
     if (is_linux) {
       # On Linux, we use the system NSS (excepting SSL where we always use our
       # own).
diff --git a/gpu/BUILD.gn b/gpu/BUILD.gn
index 25a80b3..99060ba 100644
--- a/gpu/BUILD.gn
+++ b/gpu/BUILD.gn
@@ -92,9 +92,7 @@
     "command_buffer/tests/occlusion_query_unittest.cc",
   ]
 
-  defines = [
-    "GL_GLEXT_PROTOTYPES",
-  ]
+  defines = [ "GL_GLEXT_PROTOTYPES" ]
 
   deps = [
     ":gpu",
@@ -117,11 +115,10 @@
   libs = []
 
   if (is_android) {
-    deps += [
-      "//testing/android:native_test_native_code",
-    ]
+    deps += [ "//testing/android:native_test_native_code" ]
     libs += [ "android" ]
   }
+
   # TODO(GYP)
   #     ['OS == "win"', {
   #       'dependencies': [
diff --git a/gpu/command_buffer/client/BUILD.gn b/gpu/command_buffer/client/BUILD.gn
index 810948a..04aa039 100644
--- a/gpu/command_buffer/client/BUILD.gn
+++ b/gpu/command_buffer/client/BUILD.gn
@@ -33,14 +33,21 @@
 
 group("gles2_cmd_helper") {
   if (is_component_build) {
-    deps = [ "//gpu" ]
+    deps = [
+      "//gpu",
+    ]
   } else {
-    deps = [ ":gles2_cmd_helper_sources" ]
+    deps = [
+      ":gles2_cmd_helper_sources",
+    ]
   }
 }
 
 source_set("gles2_cmd_helper_sources") {
-  visibility = [ ":gles2_cmd_helper", "//gpu" ]
+  visibility = [
+    ":gles2_cmd_helper",
+    "//gpu",
+  ]
   sources = [
     "gles2_cmd_helper.cc",
     "gles2_cmd_helper.h",
@@ -54,7 +61,9 @@
     cflags = [ "/wd4267" ]  # size_t to int truncation.
   }
 
-  deps = [ ":client" ]
+  deps = [
+    ":client",
+  ]
 }
 
 gles2_c_lib_source_files = [
@@ -97,7 +106,9 @@
 # in. Useful when a target uses the interface, but permits its users to choose
 # an implementation.
 source_set("gles2_interface") {
-  sources = [ "gles2_interface.h" ]
+  sources = [
+    "gles2_interface.h",
+  ]
   public_configs = [ "//third_party/khronos:khronos_headers" ]
   deps = [
     "//base",
@@ -173,4 +184,3 @@
     "//gpu/command_buffer/common",
   ]
 }
-
diff --git a/gpu/command_buffer/service/BUILD.gn b/gpu/command_buffer/service/BUILD.gn
index 351e5c9..58c9977 100644
--- a/gpu/command_buffer/service/BUILD.gn
+++ b/gpu/command_buffer/service/BUILD.gn
@@ -121,9 +121,7 @@
 
   defines = [ "GPU_IMPLEMENTATION" ]
 
-  configs += [
-    "//third_party/khronos:khronos_headers",
-  ]
+  configs += [ "//third_party/khronos:khronos_headers" ]
 
   # Prefer mesa GL headers to system headers, which cause problems on Win.
   include_dirs = [ "//third_party/mesa/src/include" ]
@@ -164,5 +162,7 @@
 }
 
 proto_library("disk_cache_proto") {
-  sources = [ "disk_cache_proto.proto" ]
+  sources = [
+    "disk_cache_proto.proto",
+  ]
 }
diff --git a/gpu/config/BUILD.gn b/gpu/config/BUILD.gn
index 27e377d..df7153d 100644
--- a/gpu/config/BUILD.gn
+++ b/gpu/config/BUILD.gn
@@ -58,7 +58,10 @@
 
   if (is_win) {
     deps += [ "//third_party/libxml" ]
-    libs = [ "dxguid.lib", "setupapi.lib" ]
+    libs = [
+      "dxguid.lib",
+      "setupapi.lib",
+    ]
 
     if (is_chrome_branded && is_official_build) {
       sources += [
@@ -74,18 +77,14 @@
     defines += [ "USE_LIBPCI=1" ]
   }
   if (is_linux && use_libpci && (use_x11 || use_ozone)) {
-    deps += [
-      "//build/config/linux:libpci",
-    ]
+    deps += [ "//build/config/linux:libpci" ]
   }
   if (is_linux && use_x11) {
     configs += [
       "//build/config/linux:x11",
       "//build/config/linux:xext",
     ]
-    deps += [
-      "//third_party/libXNVCtrl",
-    ]
+    deps += [ "//third_party/libXNVCtrl" ]
   } else {
     sources -= [ "gpu_info_collector_x11.cc" ]
   }
@@ -93,4 +92,3 @@
     sources -= [ "gpu_info_collector_ozone.cc" ]
   }
 }
-
diff --git a/mojo/tools/roll/net_sql.patch b/mojo/tools/roll/net_sql.patch
index fd87d4c..f594a1e 100644
--- a/mojo/tools/roll/net_sql.patch
+++ b/mojo/tools/roll/net_sql.patch
@@ -1,8 +1,8 @@
 diff --git a/net/BUILD.gn b/net/BUILD.gn
-index 05da14c..00d47f4 100644
+index 73eb465..4cecaef 100644
 --- a/net/BUILD.gn
 +++ b/net/BUILD.gn
-@@ -564,6 +564,8 @@ grit("net_resources") {
+@@ -541,6 +541,8 @@ grit("net_resources") {
    ]
  }
  
@@ -11,7 +11,7 @@
  static_library("extras") {
    sources = gypi_values.net_extras_sources
    configs += [ "//build/config/compiler:wexit_time_destructors" ]
-@@ -573,6 +575,8 @@ static_library("extras") {
+@@ -550,6 +552,8 @@ static_library("extras") {
    ]
  }
  
@@ -20,19 +20,19 @@
  static_library("http_server") {
    sources = [
      "server/http_connection.cc",
-@@ -1120,11 +1124,14 @@ source_set("quic_tools") {
- test("net_unittests") {
-   sources = gypi_values.net_test_sources
+@@ -1124,11 +1128,14 @@ if (!is_android && !is_win && !is_mac) {
+   test("net_unittests") {
+     sources = gypi_values.net_test_sources
  
-+  sources -= [
-+    "extras/sqlite/sqlite_channel_id_store_unittest.cc",
-+  ]
++    sources -= [
++      "extras/sqlite/sqlite_channel_id_store_unittest.cc",
++    ]
 +
-   configs += [ ":net_win_size_truncation" ]
-   defines = []
+     configs += [ ":net_win_size_truncation" ]
+     defines = []
  
-   deps = [
--    ":extras",
-     ":http_server",
-     ":net",
-     ":quic_tools",
+     deps = [
+-      ":extras",
+       ":http_server",
+       ":net",
+       ":quic_tools",
diff --git a/mojo/tools/roll/skia_build.patch b/mojo/tools/roll/skia_build.patch
index dcceab3..1fdf63f 100644
--- a/mojo/tools/roll/skia_build.patch
+++ b/mojo/tools/roll/skia_build.patch
@@ -1,24 +1,27 @@
 diff --git a/skia/BUILD.gn b/skia/BUILD.gn
-index 1944183..a57b6a1 100644
+index 9aeaa0d..83c4d8b 100644
 --- a/skia/BUILD.gn
 +++ b/skia/BUILD.gn
-@@ -11,15 +11,6 @@ if (cpu_arch == "arm") {
+@@ -11,18 +11,6 @@ if (cpu_arch == "arm") {
  skia_support_gpu = !is_ios
  skia_support_pdf = !is_ios && (enable_basic_printing || enable_print_preview)
  
 -# The list of Skia defines that are to be set for blink.
--gypi_blink_skia_defines = exec_script(
--    "//build/gypi_to_gn.py",
--    [ rebase_path("//third_party/WebKit/public/blink_skia_config.gypi"),
--      "--replace=<(skia_include_path)=//third_party/skia/include",
--      "--replace=<(skia_src_path)=//third_party/skia/src" ],
--    "scope",
--    [ "//third_party/WebKit/public/blink_skia_config.gypi" ])
+-gypi_blink_skia_defines =
+-    exec_script("//build/gypi_to_gn.py",
+-                [
+-                  rebase_path(
+-                      "//third_party/WebKit/public/blink_skia_config.gypi"),
+-                  "--replace=<(skia_include_path)=//third_party/skia/include",
+-                  "--replace=<(skia_src_path)=//third_party/skia/src",
+-                ],
+-                "scope",
+-                [ "//third_party/WebKit/public/blink_skia_config.gypi" ])
 -
  # The list of Skia defines that are to be set for chromium.
- gypi_skia_defines = exec_script(
-     "//build/gypi_to_gn.py",
-@@ -108,8 +99,7 @@ config("skia_config") {
+ gypi_skia_defines =
+     exec_script("//build/gypi_to_gn.py",
+@@ -126,8 +114,7 @@ config("skia_config") {
      "//third_party/skia/src/lazy",
    ]
  
diff --git a/net/BUILD.gn b/net/BUILD.gn
index fab7665..4cecaef 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -22,11 +22,10 @@
 }
 
 # The list of net files is kept in net.gypi. Read it.
-gypi_values = exec_script(
-    "//build/gypi_to_gn.py",
-    [ rebase_path("net.gypi") ],
-    "scope",
-    [ "net.gypi" ])
+gypi_values = exec_script("//build/gypi_to_gn.py",
+                          [ rebase_path("net.gypi") ],
+                          "scope",
+                          [ "net.gypi" ])
 
 # Disable Kerberos on ChromeOS, Android and iOS, at least for now. It needs
 # configuration (krb5.conf and so on).
@@ -70,8 +69,7 @@
 
 component("net") {
   sources =
-    gypi_values.net_nacl_common_sources +
-    gypi_values.net_non_nacl_sources
+      gypi_values.net_nacl_common_sources + gypi_values.net_non_nacl_sources
 
   cflags = []
   defines = [
@@ -81,7 +79,7 @@
     # doesn't seem to be set in the regular builds, so we're skipping this
     # capability here.
     "DLOPEN_KERBEROS",
-    "NET_IMPLEMENTATION"
+    "NET_IMPLEMENTATION",
   ]
   configs += [ ":net_win_size_truncation" ]
   public_configs = [ ":net_config" ]
@@ -89,10 +87,10 @@
 
   public_deps = [
     "//crypto",
-    "//crypto:platform"
+    "//crypto:platform",
   ]
   deps = [
-   ":net_resources",
+    ":net_resources",
     "//base",
     "//base:i18n",
     "//base:prefs",
@@ -250,9 +248,7 @@
       ]
     }
     if (is_win) {
-      sources -= [
-        "cert/sha256_legacy_support_nss_win.cc",
-      ]
+      sources -= [ "cert/sha256_legacy_support_nss_win.cc" ]
     }
   } else {
     sources -= [
@@ -283,9 +279,7 @@
       "ssl/openssl_ssl_util.h",
     ]
     if (is_mac) {
-      sources -= [
-        "ssl/openssl_platform_key_mac.cc",
-      ]
+      sources -= [ "ssl/openssl_platform_key_mac.cc" ]
     }
     if (is_win) {
       sources -= [
@@ -309,9 +303,7 @@
       "ssl/openssl_client_key_store.h",
     ]
     if (is_android) {
-      sources -= [
-        "base/openssl_private_key_store_android.cc",
-      ]
+      sources -= [ "base/openssl_private_key_store_android.cc" ]
     }
   } else if (is_android) {
     # Android doesn't use these even when using OpenSSL.
@@ -513,7 +505,7 @@
       "base/address_tracker_linux.cc",
       "base/address_tracker_linux.h",
       "base/net_util_linux.cc",
-      "base/net_util_linux.h"
+      "base/net_util_linux.h",
     ]
     set_sources_assignment_filter(sources_assignment_filter)
 
@@ -577,7 +569,7 @@
   ]
   configs += [
     "//build/config/compiler:wexit_time_destructors",
-    ":net_win_size_truncation"
+    ":net_win_size_truncation",
   ]
   deps = [
     ":net",
@@ -709,7 +701,7 @@
   ]
 
   if (!use_openssl && (use_nss_certs || is_ios)) {
-    public_deps += ["//crypto:platform" ]
+    public_deps += [ "//crypto:platform" ]
   }
 
   if (!is_android) {
@@ -733,9 +725,7 @@
   }
 
   if (!use_nss_certs) {
-    sources -= [
-      "test/cert_test_util_nss.cc",
-    ]
+    sources -= [ "test/cert_test_util_nss.cc" ]
   }
 }
 
@@ -799,7 +789,9 @@
 if (!is_ios && !is_android) {
   executable("crash_cache") {
     testonly = true
-    sources = [ "tools/crash_cache/crash_cache.cc" ]
+    sources = [
+      "tools/crash_cache/crash_cache.cc",
+    ]
     configs += [ ":net_win_size_truncation" ]
     deps = [
       ":net",
@@ -810,7 +802,9 @@
 
   executable("crl_set_dump") {
     testonly = true
-    sources = [ "tools/crl_set_dump/crl_set_dump.cc" ]
+    sources = [
+      "tools/crl_set_dump/crl_set_dump.cc",
+    ]
     configs += [ ":net_win_size_truncation" ]
     deps = [
       ":net",
@@ -820,7 +814,9 @@
 
   executable("dns_fuzz_stub") {
     testonly = true
-    sources = [ "tools/dns_fuzz_stub/dns_fuzz_stub.cc" ]
+    sources = [
+      "tools/dns_fuzz_stub/dns_fuzz_stub.cc",
+    ]
     configs += [ ":net_win_size_truncation" ]
     deps = [
       ":net",
@@ -842,7 +838,9 @@
 
   executable("get_server_time") {
     testonly = true
-    sources = [ "tools/get_server_time/get_server_time.cc" ]
+    sources = [
+      "tools/get_server_time/get_server_time.cc",
+    ]
     configs += [ ":net_win_size_truncation" ]
     deps = [
       ":net",
@@ -855,7 +853,9 @@
   if (use_v8_in_net) {
     executable("net_watcher") {
       testonly = true
-      sources = [ "tools/net_watcher/net_watcher.cc" ]
+      sources = [
+        "tools/net_watcher/net_watcher.cc",
+      ]
       deps = [
         ":net",
         ":net_with_v8",
@@ -874,7 +874,9 @@
 
   executable("run_testserver") {
     testonly = true
-    sources = [ "tools/testserver/run_testserver.cc" ]
+    sources = [
+      "tools/testserver/run_testserver.cc",
+    ]
     deps = [
       ":net",  # TODO(brettw) bug 363749: this shouldn't be necessary. It's not
                # in the GYP build, and can be removed when the bug is fixed.
@@ -887,7 +889,9 @@
 
   executable("stress_cache") {
     testonly = true
-    sources = [ "disk_cache/blockfile/stress_cache.cc" ]
+    sources = [
+      "disk_cache/blockfile/stress_cache.cc",
+    ]
     configs += [ ":net_win_size_truncation" ]
     deps = [
       ":net",
@@ -897,7 +901,9 @@
   }
 
   executable("tld_cleanup") {
-    sources = [ "tools/tld_cleanup/tld_cleanup.cc" ]
+    sources = [
+      "tools/tld_cleanup/tld_cleanup.cc",
+    ]
     configs += [ ":net_win_size_truncation" ]
     deps = [
       "//base",
@@ -985,7 +991,9 @@
 
   executable("flip_in_mem_edsm_server") {
     testonly = true
-    sources = [ "tools/flip_server/flip_in_mem_edsm_server.cc" ]
+    sources = [
+      "tools/flip_server/flip_in_mem_edsm_server.cc",
+    ]
     deps = [
       ":flip_in_mem_edsm_server_base",
       ":net",
@@ -1039,7 +1047,9 @@
   }
 
   executable("quic_client") {
-    sources = [ "tools/quic/quic_client_bin.cc" ]
+    sources = [
+      "tools/quic/quic_client_bin.cc",
+    ]
     deps = [
       ":quic_base",
       ":net",
@@ -1074,7 +1084,9 @@
 if (is_android || is_linux) {
   executable("disk_cache_memory_test") {
     testonly = true
-    sources = [ "tools/disk_cache_memory_test/disk_cache_memory_test.cc" ]
+    sources = [
+      "tools/disk_cache_memory_test/disk_cache_memory_test.cc",
+    ]
     deps = [
       ":net",
       "//base",
@@ -1086,311 +1098,308 @@
 # TODO(GYP) Also doesn't work on Windows; dependency on boringssl is wrong.
 # TODO(GYP) Also doesn't work on Mac, need to figure out why not.
 if (!is_android && !is_win && !is_mac) {
-
-source_set("quic_tools") {
-  sources = [
-    "quic/quic_dispatcher.cc",
-    "quic/quic_dispatcher.h",
-    "quic/quic_in_memory_cache.cc",
-    "quic/quic_in_memory_cache.h",
-    "quic/quic_per_connection_packet_writer.cc",
-    "quic/quic_per_connection_packet_writer.h",
-    "quic/quic_server.cc",
-    "quic/quic_server.h",
-    "quic/quic_server_packet_writer.cc",
-    "quic/quic_server_packet_writer.h",
-    "quic/quic_server_session.cc",
-    "quic/quic_server_session.h",
-    "quic/quic_spdy_server_stream.cc",
-    "quic/quic_spdy_server_stream.h",
-    "quic/quic_time_wait_list_manager.cc",
-    "quic/quic_time_wait_list_manager.h",
-  ]
-  deps = [
-    ":net",
-    "//base",
-    "//base/third_party/dynamic_annotations",
-    "//url",
-  ]
-}
-
-test("net_unittests") {
-  sources = gypi_values.net_test_sources
-
-  sources -= [
-    "extras/sqlite/sqlite_channel_id_store_unittest.cc",
-  ]
-
-  configs += [ ":net_win_size_truncation" ]
-  defines = []
-
-  deps = [
-    ":http_server",
-    ":net",
-    ":quic_tools",
-    ":test_support",
-    "//base",
-    "//base:i18n",
-    "//base:prefs_test_support",
-    "//base/allocator",
-    "//base/third_party/dynamic_annotations",
-    "//crypto",
-    "//crypto:platform",
-    "//crypto:test_support",
-    "//net/base/registry_controlled_domains",
-    "//testing/gmock",
-    "//testing/gtest",
-    "//third_party/zlib",
-    "//url",
-  ]
-
-  if (is_linux) {
-    sources += gypi_values.net_linux_test_sources
-    deps += [
-      ":balsa",
-      ":epoll_server",
-      ":flip_in_mem_edsm_server_base",
-      ":quic_base",
+  source_set("quic_tools") {
+    sources = [
+      "quic/quic_dispatcher.cc",
+      "quic/quic_dispatcher.h",
+      "quic/quic_in_memory_cache.cc",
+      "quic/quic_in_memory_cache.h",
+      "quic/quic_per_connection_packet_writer.cc",
+      "quic/quic_per_connection_packet_writer.h",
+      "quic/quic_server.cc",
+      "quic/quic_server.h",
+      "quic/quic_server_packet_writer.cc",
+      "quic/quic_server_packet_writer.h",
+      "quic/quic_server_session.cc",
+      "quic/quic_server_session.h",
+      "quic/quic_spdy_server_stream.cc",
+      "quic/quic_spdy_server_stream.h",
+      "quic/quic_time_wait_list_manager.cc",
+      "quic/quic_time_wait_list_manager.h",
+    ]
+    deps = [
+      ":net",
+      "//base",
+      "//base/third_party/dynamic_annotations",
+      "//url",
     ]
   }
 
-  if (is_mac || is_ios) {
-    sources += gypi_values.net_base_test_mac_ios_sources
-  }
+  test("net_unittests") {
+    sources = gypi_values.net_test_sources
 
-  if (is_chromeos) {
     sources -= [
-      "proxy/proxy_config_service_linux_unittest.cc",
+      "extras/sqlite/sqlite_channel_id_store_unittest.cc",
     ]
-  }
 
-  if (is_android) {
-    sources -= [
-      # See bug http://crbug.com/344533.
-      "disk_cache/blockfile/index_table_v3_unittest.cc",
-      # No res_ninit() et al on Android, so this doesn't make a lot of
-      # sense.
-      "dns/dns_config_service_posix_unittest.cc",
-    ]
-    deps += [
-      ":net_javatests",  # FIXME(brettw)
-      ":net_test_jni_headers",
-    ]
-  }
+    configs += [ ":net_win_size_truncation" ]
+    defines = []
 
-  if (!use_nss_certs) {
-    sources -= [
-      "ssl/client_cert_store_nss_unittest.cc",
+    deps = [
+      ":http_server",
+      ":net",
+      ":quic_tools",
+      ":test_support",
+      "//base",
+      "//base:i18n",
+      "//base:prefs_test_support",
+      "//base/allocator",
+      "//base/third_party/dynamic_annotations",
+      "//crypto",
+      "//crypto:platform",
+      "//crypto:test_support",
+      "//net/base/registry_controlled_domains",
+      "//testing/gmock",
+      "//testing/gtest",
+      "//third_party/zlib",
+      "//url",
     ]
-    if (is_chromeos) {  # Already removed for all non-ChromeOS builds.
-      sources -= [
-        "ssl/client_cert_store_chromeos_unittest.cc",
+
+    if (is_linux) {
+      sources += gypi_values.net_linux_test_sources
+      deps += [
+        ":balsa",
+        ":epoll_server",
+        ":flip_in_mem_edsm_server_base",
+        ":quic_base",
       ]
     }
-  }
 
-  if (use_openssl) {
-    # When building for OpenSSL, we need to exclude NSS specific tests
-    # or functionality not supported by OpenSSL yet.
-    # TODO(bulach): Add equivalent tests when the underlying
-    #               functionality is ported to OpenSSL.
-    sources -= [
-      "cert/nss_cert_database_unittest.cc",
-      "cert/x509_util_nss_unittest.cc",
-      "quic/test_tools/crypto_test_utils_nss.cc",
-    ]
+    if (is_mac || is_ios) {
+      sources += gypi_values.net_base_test_mac_ios_sources
+    }
+
     if (is_chromeos) {
-      # These were already removed in the non-ChromeOS case.
+      sources -= [ "proxy/proxy_config_service_linux_unittest.cc" ]
+    }
+
+    if (is_android) {
       sources -= [
-        "cert/nss_cert_database_chromeos_unittest.cc",
-        "cert/nss_profile_filter_chromeos_unittest.cc",
+        # See bug http://crbug.com/344533.
+        "disk_cache/blockfile/index_table_v3_unittest.cc",
+
+        # No res_ninit() et al on Android, so this doesn't make a lot of
+        # sense.
+        "dns/dns_config_service_posix_unittest.cc",
+      ]
+      deps += [
+        ":net_javatests",  # FIXME(brettw)
+        ":net_test_jni_headers",
       ]
     }
-  } else {
-    sources -= [
-      "cert/x509_util_openssl_unittest.cc",
-      "quic/test_tools/crypto_test_utils_openssl.cc",
-      "socket/ssl_client_socket_openssl_unittest.cc",
-      "socket/ssl_session_cache_openssl_unittest.cc",
-    ]
-    if (!is_desktop_linux && !is_chromeos) {
-      sources -= [ "cert/nss_cert_database_unittest.cc" ]
+
+    if (!use_nss_certs) {
+      sources -= [ "ssl/client_cert_store_nss_unittest.cc" ]
+      if (is_chromeos) {  # Already removed for all non-ChromeOS builds.
+        sources -= [ "ssl/client_cert_store_chromeos_unittest.cc" ]
+      }
+    }
+
+    if (use_openssl) {
+      # When building for OpenSSL, we need to exclude NSS specific tests
+      # or functionality not supported by OpenSSL yet.
+      # TODO(bulach): Add equivalent tests when the underlying
+      #               functionality is ported to OpenSSL.
+      sources -= [
+        "cert/nss_cert_database_unittest.cc",
+        "cert/x509_util_nss_unittest.cc",
+        "quic/test_tools/crypto_test_utils_nss.cc",
+      ]
+      if (is_chromeos) {
+        # These were already removed in the non-ChromeOS case.
+        sources -= [
+          "cert/nss_cert_database_chromeos_unittest.cc",
+          "cert/nss_profile_filter_chromeos_unittest.cc",
+        ]
+      }
+    } else {
+      sources -= [
+        "cert/x509_util_openssl_unittest.cc",
+        "quic/test_tools/crypto_test_utils_openssl.cc",
+        "socket/ssl_client_socket_openssl_unittest.cc",
+        "socket/ssl_session_cache_openssl_unittest.cc",
+      ]
+      if (!is_desktop_linux && !is_chromeos) {
+        sources -= [ "cert/nss_cert_database_unittest.cc" ]
+      }
+    }
+
+    if (use_kerberos) {
+      defines += [ "USE_KERBEROS" ]
+    } else {
+      sources -= [
+        "http/http_auth_gssapi_posix_unittest.cc",
+        "http/http_auth_handler_negotiate_unittest.cc",
+        "http/mock_gssapi_library_posix.cc",
+        "http/mock_gssapi_library_posix.h",
+      ]
+    }
+
+    if (use_openssl || (!is_desktop_linux && !is_chromeos && !is_ios)) {
+      # Only include this test when on Posix and using NSS for
+      # cert verification or on iOS (which also uses NSS for certs).
+      sources -= [ "ocsp/nss_ocsp_unittest.cc" ]
+    }
+
+    if (!use_openssl_certs) {
+      sources -= [ "ssl/openssl_client_key_store_unittest.cc" ]
+    }
+
+    if (!enable_websockets) {
+      sources -= [
+        "websockets/websocket_basic_stream_test.cc",
+        "websockets/websocket_channel_test.cc",
+        "websockets/websocket_deflate_predictor_impl_test.cc",
+        "websockets/websocket_deflate_stream_test.cc",
+        "websockets/websocket_deflater_test.cc",
+        "websockets/websocket_errors_test.cc",
+        "websockets/websocket_extension_parser_test.cc",
+        "websockets/websocket_frame_parser_test.cc",
+        "websockets/websocket_frame_test.cc",
+        "websockets/websocket_handshake_challenge_test.cc",
+        "websockets/websocket_handshake_stream_create_helper_test.cc",
+        "websockets/websocket_inflater_test.cc",
+        "websockets/websocket_stream_test.cc",
+        "websockets/websocket_test_util.cc",
+        "websockets/websocket_test_util.h",
+      ]
+    }
+
+    if (disable_file_support) {
+      sources -= [
+        "base/directory_lister_unittest.cc",
+        "url_request/url_request_file_job_unittest.cc",
+      ]
+    }
+
+    if (disable_ftp_support) {
+      sources -= [
+        "ftp/ftp_auth_cache_unittest.cc",
+        "ftp/ftp_ctrl_response_buffer_unittest.cc",
+        "ftp/ftp_directory_listing_parser_ls_unittest.cc",
+        "ftp/ftp_directory_listing_parser_netware_unittest.cc",
+        "ftp/ftp_directory_listing_parser_os2_unittest.cc",
+        "ftp/ftp_directory_listing_parser_unittest.cc",
+        "ftp/ftp_directory_listing_parser_unittest.h",
+        "ftp/ftp_directory_listing_parser_vms_unittest.cc",
+        "ftp/ftp_directory_listing_parser_windows_unittest.cc",
+        "ftp/ftp_network_transaction_unittest.cc",
+        "ftp/ftp_util_unittest.cc",
+        "url_request/url_request_ftp_job_unittest.cc",
+      ]
+    }
+
+    if (!enable_built_in_dns) {
+      sources -= [
+        "dns/address_sorter_posix_unittest.cc",
+        "dns/address_sorter_unittest.cc",
+      ]
+    }
+
+    # Always need use_v8_in_net to be 1 to run on Android, so just remove
+    # net_unittest's dependency on v8 when using icu alternatives instead of
+    # setting use_v8_in_net to 0.
+    if (use_v8_in_net && !use_icu_alternatives_on_android) {
+      deps += [ ":net_with_v8" ]
+    } else {
+      sources -= [
+        "proxy/proxy_resolver_v8_unittest.cc",
+        "proxy/proxy_resolver_v8_tracing_unittest.cc",
+      ]
+    }
+
+    if (!enable_mdns) {
+      sources -= [
+        "dns/mdns_cache_unittest.cc",
+        "dns/mdns_client_unittest.cc",
+        "dns/record_parsed_unittest.cc",
+        "dns/record_rdata_unittest.cc",
+      ]
+    }
+
+    if (is_ios) {
+      # TODO(GYP)
+      #  'actions': [
+      #    {
+      #      'action_name': 'copy_test_data',
+      #      'variables': {
+      #        'test_data_files': [
+      #          'data/ssl/certificates/',
+      #          'data/test.html',
+      #          'data/url_request_unittest/',
+      #        ],
+      #        'test_data_prefix': 'net',
+      #      },
+      #      'includes': [ '../build/copy_test_data_ios.gypi' ],
+      #    },
+      #  ],
+      sources -= [
+        # TODO(droger): The following tests are disabled because the
+        # implementation is missing or incomplete.
+        # KeygenHandler::GenKeyAndSignChallenge() is not ported to iOS.
+        "base/keygen_handler_unittest.cc",
+        "disk_cache/backend_unittest.cc",
+        "disk_cache/blockfile/block_files_unittest.cc",
+
+        # Need to read input data files.
+        "filter/gzip_filter_unittest.cc",
+        "socket/ssl_server_socket_unittest.cc",
+        "spdy/fuzzing/hpack_fuzz_util_test.cc",
+
+        # Need TestServer.
+        "proxy/proxy_script_fetcher_impl_unittest.cc",
+        "socket/ssl_client_socket_unittest.cc",
+        "url_request/url_fetcher_impl_unittest.cc",
+        "url_request/url_request_context_builder_unittest.cc",
+
+        # Needs GetAppOutput().
+        "test/python_utils_unittest.cc",
+
+        # The following tests are disabled because they don't apply to
+        # iOS.
+        # OS is not "linux" or "freebsd" or "openbsd".
+        "socket/unix_domain_client_socket_posix_unittest.cc",
+        "socket/unix_domain_listen_socket_posix_unittest.cc",
+        "socket/unix_domain_server_socket_posix_unittest.cc",
+
+        # See bug http://crbug.com/344533.
+        "disk_cache/blockfile/index_table_v3_unittest.cc",
+      ]
+    }
+
+    if (is_android) {
+      sources -= [ "dns/dns_config_service_posix_unittest.cc" ]
+
+      # TODO(GYP)
+      # # TODO(mmenke):  This depends on test_support_base, which depends on
+      # #                icu.  Figure out a way to remove that dependency.
+      # 'dependencies': [
+      #   '../testing/android/native_test.gyp:native_test_native_code',
+      # ]
+
+      set_sources_assignment_filter([])
+      sources += [ "base/address_tracker_linux_unittest.cc" ]
+      set_sources_assignment_filter(sources_assignment_filter)
+    }
+
+    if (use_icu_alternatives_on_android) {
+      sources -= [
+        "base/filename_util_unittest.cc",
+        "base/net_util_icu_unittest.cc",
+      ]
+      deps -= [ "//base:i18n" ]
     }
   }
 
-  if (use_kerberos) {
-    defines += [ "USE_KERBEROS" ]
-  } else {
-    sources -= [
-      "http/http_auth_gssapi_posix_unittest.cc",
-      "http/http_auth_handler_negotiate_unittest.cc",
-      "http/mock_gssapi_library_posix.cc",
-      "http/mock_gssapi_library_posix.h",
+  executable("quic_server") {
+    sources = [
+      "quic/quic_server_bin.cc",
+    ]
+    deps = [
+      ":quic_tools",
+      ":net",
+      "//base",
+      "//third_party/boringssl",
     ]
   }
-
-  if (use_openssl || (!is_desktop_linux && !is_chromeos && !is_ios)) {
-    # Only include this test when on Posix and using NSS for
-    # cert verification or on iOS (which also uses NSS for certs).
-    sources -= [ "ocsp/nss_ocsp_unittest.cc" ]
-  }
-
-  if (!use_openssl_certs) {
-    sources -= [ "ssl/openssl_client_key_store_unittest.cc" ]
-  }
-
-  if (!enable_websockets) {
-    sources -= [
-      "websockets/websocket_basic_stream_test.cc",
-      "websockets/websocket_channel_test.cc",
-      "websockets/websocket_deflate_predictor_impl_test.cc",
-      "websockets/websocket_deflate_stream_test.cc",
-      "websockets/websocket_deflater_test.cc",
-      "websockets/websocket_errors_test.cc",
-      "websockets/websocket_extension_parser_test.cc",
-      "websockets/websocket_frame_parser_test.cc",
-      "websockets/websocket_frame_test.cc",
-      "websockets/websocket_handshake_challenge_test.cc",
-      "websockets/websocket_handshake_stream_create_helper_test.cc",
-      "websockets/websocket_inflater_test.cc",
-      "websockets/websocket_stream_test.cc",
-      "websockets/websocket_test_util.cc",
-      "websockets/websocket_test_util.h",
-    ]
-  }
-
-  if (disable_file_support) {
-    sources -= [
-      "base/directory_lister_unittest.cc",
-      "url_request/url_request_file_job_unittest.cc",
-    ]
-  }
-
-  if (disable_ftp_support) {
-    sources -= [
-      "ftp/ftp_auth_cache_unittest.cc",
-      "ftp/ftp_ctrl_response_buffer_unittest.cc",
-      "ftp/ftp_directory_listing_parser_ls_unittest.cc",
-      "ftp/ftp_directory_listing_parser_netware_unittest.cc",
-      "ftp/ftp_directory_listing_parser_os2_unittest.cc",
-      "ftp/ftp_directory_listing_parser_unittest.cc",
-      "ftp/ftp_directory_listing_parser_unittest.h",
-      "ftp/ftp_directory_listing_parser_vms_unittest.cc",
-      "ftp/ftp_directory_listing_parser_windows_unittest.cc",
-      "ftp/ftp_network_transaction_unittest.cc",
-      "ftp/ftp_util_unittest.cc",
-      "url_request/url_request_ftp_job_unittest.cc",
-    ]
-  }
-
-  if (!enable_built_in_dns) {
-    sources -= [
-      "dns/address_sorter_posix_unittest.cc",
-      "dns/address_sorter_unittest.cc",
-    ]
-  }
-
-  # Always need use_v8_in_net to be 1 to run on Android, so just remove
-  # net_unittest's dependency on v8 when using icu alternatives instead of
-  # setting use_v8_in_net to 0.
-  if (use_v8_in_net && !use_icu_alternatives_on_android) {
-    deps += [ ":net_with_v8" ]
-  } else {
-    sources -= [
-      "proxy/proxy_resolver_v8_unittest.cc",
-      "proxy/proxy_resolver_v8_tracing_unittest.cc",
-    ]
-  }
-
-  if (!enable_mdns) {
-    sources -= [
-      "dns/mdns_cache_unittest.cc",
-      "dns/mdns_client_unittest.cc",
-      "dns/record_parsed_unittest.cc",
-      "dns/record_rdata_unittest.cc",
-    ]
-  }
-
-  if (is_ios) {
-    # TODO(GYP)
-    #  'actions': [
-    #    {
-    #      'action_name': 'copy_test_data',
-    #      'variables': {
-    #        'test_data_files': [
-    #          'data/ssl/certificates/',
-    #          'data/test.html',
-    #          'data/url_request_unittest/',
-    #        ],
-    #        'test_data_prefix': 'net',
-    #      },
-    #      'includes': [ '../build/copy_test_data_ios.gypi' ],
-    #    },
-    #  ],
-    sources -= [
-      # TODO(droger): The following tests are disabled because the
-      # implementation is missing or incomplete.
-      # KeygenHandler::GenKeyAndSignChallenge() is not ported to iOS.
-      "base/keygen_handler_unittest.cc",
-      "disk_cache/backend_unittest.cc",
-      "disk_cache/blockfile/block_files_unittest.cc",
-      # Need to read input data files.
-      "filter/gzip_filter_unittest.cc",
-      "socket/ssl_server_socket_unittest.cc",
-      "spdy/fuzzing/hpack_fuzz_util_test.cc",
-      # Need TestServer.
-      "proxy/proxy_script_fetcher_impl_unittest.cc",
-      "socket/ssl_client_socket_unittest.cc",
-      "url_request/url_fetcher_impl_unittest.cc",
-      "url_request/url_request_context_builder_unittest.cc",
-      # Needs GetAppOutput().
-      "test/python_utils_unittest.cc",
-
-      # The following tests are disabled because they don't apply to
-      # iOS.
-      # OS is not "linux" or "freebsd" or "openbsd".
-      "socket/unix_domain_client_socket_posix_unittest.cc",
-      "socket/unix_domain_listen_socket_posix_unittest.cc",
-      "socket/unix_domain_server_socket_posix_unittest.cc",
-
-      # See bug http://crbug.com/344533.
-      "disk_cache/blockfile/index_table_v3_unittest.cc",
-    ]
-  }
-
-  if (is_android) {
-    sources -= [
-      "dns/dns_config_service_posix_unittest.cc",
-    ]
-    # TODO(GYP)
-    # # TODO(mmenke):  This depends on test_support_base, which depends on
-    # #                icu.  Figure out a way to remove that dependency.
-    # 'dependencies': [
-    #   '../testing/android/native_test.gyp:native_test_native_code',
-    # ]
-
-    set_sources_assignment_filter([])
-    sources += [ "base/address_tracker_linux_unittest.cc" ]
-    set_sources_assignment_filter(sources_assignment_filter)
-  }
-
-  if (use_icu_alternatives_on_android) {
-    sources -= [
-      "base/filename_util_unittest.cc",
-      "base/net_util_icu_unittest.cc",
-    ]
-    deps -= [ "//base:i18n" ]
-  }
-}
-
-executable("quic_server") {
-  sources = [ "quic/quic_server_bin.cc" ]
-  deps = [
-    ":quic_tools",
-    ":net",
-    "//base",
-    "//third_party/boringssl",
-  ]
-}
-
 }  # !is_android && !is_win && !is_mac
diff --git a/net/android/BUILD.gn b/net/android/BUILD.gn
index f583e7f..db15835 100644
--- a/net/android/BUILD.gn
+++ b/net/android/BUILD.gn
@@ -19,7 +19,8 @@
 }
 
 android_aidl("remote_android_keystore_aidl") {
-  interface_file = "java/src/org/chromium/net/IRemoteAndroidKeyStoreInterface.aidl"
+  interface_file =
+      "java/src/org/chromium/net/IRemoteAndroidKeyStoreInterface.aidl"
   sources = [
     "java/src/org/chromium/net/IRemoteAndroidKeyStore.aidl",
     "java/src/org/chromium/net/IRemoteAndroidKeyStoreCallbacks.aidl",
@@ -45,7 +46,7 @@
     "java/NetError.template",
   ]
   inputs = [
-    "../base/net_error_list.h"
+    "../base/net_error_list.h",
   ]
 }
 
@@ -54,7 +55,7 @@
     "../base/mime_util.h",
     "../base/network_change_notifier.h",
     "cert_verify_result_android.h",
-    "keystore.h"
+    "keystore.h",
   ]
   outputs = [
     "org/chromium/net/CertificateMimeType.java",
diff --git a/net/base/registry_controlled_domains/BUILD.gn b/net/base/registry_controlled_domains/BUILD.gn
index 89f4d46..d231ac1 100644
--- a/net/base/registry_controlled_domains/BUILD.gn
+++ b/net/base/registry_controlled_domains/BUILD.gn
@@ -14,10 +14,11 @@
     "effective_tld_names_unittest6.gperf",
   ]
   outputs = [
-    "${target_gen_dir}/{{source_name_part}}-inc.cc"
+    "${target_gen_dir}/{{source_name_part}}-inc.cc",
   ]
   args = [
     "{{source}}",
-    rebase_path("${target_gen_dir}/{{source_name_part}}-inc.cc", root_build_dir)
+    rebase_path("${target_gen_dir}/{{source_name_part}}-inc.cc",
+                root_build_dir),
   ]
 }
diff --git a/net/third_party/nss/ssl/BUILD.gn b/net/third_party/nss/ssl/BUILD.gn
index c958c13..918e453 100644
--- a/net/third_party/nss/ssl/BUILD.gn
+++ b/net/third_party/nss/ssl/BUILD.gn
@@ -90,9 +90,7 @@
 
     # Must be after ssl_config since we want our SSL headers to take
     # precedence.
-    public_configs += [
-      "//third_party/nss:system_nss_no_ssl_config"
-    ]
+    public_configs += [ "//third_party/nss:system_nss_no_ssl_config" ]
   } else if (is_mac) {
     libs = [ "Security.framework" ]
   }
@@ -118,9 +116,7 @@
   }
 
   if (is_mac || is_ios || is_win) {
-    sources -= [
-      "bodge/secitem_array.c",
-    ]
+    sources -= [ "bodge/secitem_array.c" ]
     public_deps = [
       "//third_party/nss:nspr",
       "//third_party/nss:nss",
diff --git a/sandbox/linux/BUILD.gn b/sandbox/linux/BUILD.gn
index ff4a238..af3a950 100644
--- a/sandbox/linux/BUILD.gn
+++ b/sandbox/linux/BUILD.gn
@@ -10,7 +10,7 @@
   compile_credentials = is_linux
 
   compile_seccomp_bpf_demo =
-    (is_linux && (cpu_arch == "x86" || cpu_arch == "x64"))
+      is_linux && (cpu_arch == "x86" || cpu_arch == "x64")
 }
 
 # We have two principal targets: sandbox and sandbox_linux_unittests
@@ -58,9 +58,7 @@
       "seccomp-bpf/sandbox_bpf_test_runner.cc",
       "seccomp-bpf/sandbox_bpf_test_runner.h",
     ]
-    deps += [
-      ":seccomp_bpf",
-    ]
+    deps += [ ":seccomp_bpf" ]
   }
 }
 
@@ -95,9 +93,7 @@
   }
 
   if (compile_suid_client) {
-    sources += [
-      "suid/client/setuid_sandbox_client_unittest.cc",
-    ]
+    sources += [ "suid/client/setuid_sandbox_client_unittest.cc" ]
   }
   if (use_seccomp_bpf) {
     sources += [
@@ -202,7 +198,7 @@
 }
 
 if (is_linux) {
-# The setuid sandbox for Linux.
+  # The setuid sandbox for Linux.
   executable("chrome_sandbox") {
     sources = [
       "suid/common/sandbox.h",
@@ -215,6 +211,7 @@
     cflags = [
       # For ULLONG_MAX
       "-std=gnu99",
+
       # These files have a suspicious comparison.
       # TODO fix this and re-enable this warning.
       "-Wno-sign-compare",
@@ -258,6 +255,7 @@
       "services/proc_util.cc",
       "services/proc_util.h",
     ]
+
     # For capabilities.cc.
     configs += [ "//build/config/linux:libcap" ]
   }
@@ -329,7 +327,6 @@
   #    ":sandbox_linux_unittests",
   #  ]
   #}
-
   # TODO(GYP) convert this.
   #      {
   #      'target_name': 'sandbox_linux_jni_unittests_apk',
diff --git a/sdch/BUILD.gn b/sdch/BUILD.gn
index 727fb49..fb23be7 100644
--- a/sdch/BUILD.gn
+++ b/sdch/BUILD.gn
@@ -82,10 +82,14 @@
   # logging.h from being used).
   if (is_win) {
     cflags = [
-      "/FI", "sdch/logging_forward.h",
+      "/FI",
+      "sdch/logging_forward.h",
     ]
   } else {
     logging_file = rebase_path("logging_forward.h", root_build_dir)
-    cflags = [ "-include", logging_file ]
+    cflags = [
+      "-include",
+      logging_file,
+    ]
   }
 }
diff --git a/skia/BUILD.gn b/skia/BUILD.gn
index 9c88863..83c4d8b 100644
--- a/skia/BUILD.gn
+++ b/skia/BUILD.gn
@@ -12,67 +12,82 @@
 skia_support_pdf = !is_ios && (enable_basic_printing || enable_print_preview)
 
 # The list of Skia defines that are to be set for chromium.
-gypi_skia_defines = exec_script(
-    "//build/gypi_to_gn.py",
-    [ rebase_path("//third_party/skia/gyp/skia_for_chromium_defines.gypi"),
-      "--replace=<(skia_include_path)=//third_party/skia/include",
-      "--replace=<(skia_src_path)=//third_party/skia/src" ],
-    "scope",
-    [ "//third_party/skia/gyp/skia_for_chromium_defines.gypi" ])
+gypi_skia_defines =
+    exec_script("//build/gypi_to_gn.py",
+                [
+                  rebase_path(
+                      "//third_party/skia/gyp/skia_for_chromium_defines.gypi"),
+                  "--replace=<(skia_include_path)=//third_party/skia/include",
+                  "--replace=<(skia_src_path)=//third_party/skia/src",
+                ],
+                "scope",
+                [ "//third_party/skia/gyp/skia_for_chromium_defines.gypi" ])
 
 # The list of Skia core sources that are to be set for chromium.
-gypi_skia_core = exec_script(
-    "//build/gypi_to_gn.py",
-    [ rebase_path("//third_party/skia/gyp/core.gypi"),
-      "--replace=<(skia_include_path)=//third_party/skia/include",
-      "--replace=<(skia_src_path)=//third_party/skia/src" ],
-    "scope",
-    [ "//third_party/skia/gyp/core.gypi" ])
+gypi_skia_core =
+    exec_script("//build/gypi_to_gn.py",
+                [
+                  rebase_path("//third_party/skia/gyp/core.gypi"),
+                  "--replace=<(skia_include_path)=//third_party/skia/include",
+                  "--replace=<(skia_src_path)=//third_party/skia/src",
+                ],
+                "scope",
+                [ "//third_party/skia/gyp/core.gypi" ])
 
 # The list of Skia gpu sources that are to be set for chromium.
-gypi_skia_gpu = exec_script(
-    "//build/gypi_to_gn.py",
-    [ rebase_path("//third_party/skia/gyp/gpu.gypi"),
-      "--replace=<(skia_include_path)=//third_party/skia/include",
-      "--replace=<(skia_src_path)=//third_party/skia/src" ],
-    "scope",
-    [ "//third_party/skia/gyp/gpu.gypi" ])
+gypi_skia_gpu =
+    exec_script("//build/gypi_to_gn.py",
+                [
+                  rebase_path("//third_party/skia/gyp/gpu.gypi"),
+                  "--replace=<(skia_include_path)=//third_party/skia/include",
+                  "--replace=<(skia_src_path)=//third_party/skia/src",
+                ],
+                "scope",
+                [ "//third_party/skia/gyp/gpu.gypi" ])
 
 # The list of Skia pdf sources that are to be set for chromium.
-gypi_skia_pdf = exec_script(
-    "//build/gypi_to_gn.py",
-    [ rebase_path("//third_party/skia/gyp/pdf.gypi"),
-      "--replace=<(skia_include_path)=//third_party/skia/include",
-      "--replace=<(skia_src_path)=//third_party/skia/src" ],
-    "scope",
-    [ "//third_party/skia/gyp/pdf.gypi" ])
+gypi_skia_pdf =
+    exec_script("//build/gypi_to_gn.py",
+                [
+                  rebase_path("//third_party/skia/gyp/pdf.gypi"),
+                  "--replace=<(skia_include_path)=//third_party/skia/include",
+                  "--replace=<(skia_src_path)=//third_party/skia/src",
+                ],
+                "scope",
+                [ "//third_party/skia/gyp/pdf.gypi" ])
 
 # The list of Skia effects that are to be set for chromium.
-gypi_skia_effects = exec_script(
-    "//build/gypi_to_gn.py",
-    [ rebase_path("//third_party/skia/gyp/effects.gypi"),
-      "--replace=<(skia_include_path)=//third_party/skia/include",
-      "--replace=<(skia_src_path)=//third_party/skia/src" ],
-    "scope",
-    [ "//third_party/skia/gyp/effects.gypi" ])
+gypi_skia_effects =
+    exec_script("//build/gypi_to_gn.py",
+                [
+                  rebase_path("//third_party/skia/gyp/effects.gypi"),
+                  "--replace=<(skia_include_path)=//third_party/skia/include",
+                  "--replace=<(skia_src_path)=//third_party/skia/src",
+                ],
+                "scope",
+                [ "//third_party/skia/gyp/effects.gypi" ])
 
 # The list of Skia utilss that are to be set for chromium.
-gypi_skia_utils = exec_script(
-    "//build/gypi_to_gn.py",
-    [ rebase_path("//third_party/skia/gyp/utils.gypi"),
-      "--replace=<(skia_include_path)=//third_party/skia/include",
-      "--replace=<(skia_src_path)=//third_party/skia/src" ],
-    "scope",
-    [ "//third_party/skia/gyp/utils.gypi" ])
+gypi_skia_utils =
+    exec_script("//build/gypi_to_gn.py",
+                [
+                  rebase_path("//third_party/skia/gyp/utils.gypi"),
+                  "--replace=<(skia_include_path)=//third_party/skia/include",
+                  "--replace=<(skia_src_path)=//third_party/skia/src",
+                ],
+                "scope",
+                [ "//third_party/skia/gyp/utils.gypi" ])
 
 # The list of Skia files is kept in skia_gn_files.gypi. Read it.
-gypi_values = exec_script(
-    "//build/gypi_to_gn.py",
-    [ rebase_path("skia_gn_files.gypi"),
-      "--replace=<(skia_include_path)=//third_party/skia/include",
-      "--replace=<(skia_src_path)=//third_party/skia/src" ],
-    "scope",
-    [ "skia_gn_files.gypi" ])
+gypi_values =
+    exec_script("//build/gypi_to_gn.py",
+                [
+                  rebase_path("skia_gn_files.gypi"),
+                  "--replace=<(skia_include_path)=//third_party/skia/include",
+                  "--replace=<(skia_src_path)=//third_party/skia/src",
+                ],
+                "scope",
+                [ "skia_gn_files.gypi" ])
 
 # External-facing config for dependent code.
 config("skia_config") {
@@ -168,14 +183,11 @@
     # Forcing the unoptimized path for the offset image filter in skia until
     # all filters used in Blink support the optimized path properly
     "SK_DISABLE_OFFSETIMAGEFILTER_OPTIMIZATION",
-
     "IGNORE_ROT_AA_RECT_OPT",
-
     "SK_IGNORE_BLURRED_RRECT_OPT",
 
     # this flag forces Skia not to use typographic metrics with GDI.
     "SK_GDI_ALWAYS_USE_TEXTMETRICS_FOR_FONT_METRICS",
-
     "SK_USE_DISCARDABLE_SCALEDIMAGECACHE",
   ]
 
@@ -224,7 +236,7 @@
       # Android devices are typically more memory constrained, so default to a
       # smaller glyph cache (it may be overriden at runtime when the renderer
       # starts up, depending on the actual device memory).
-      "SK_DEFAULT_FONT_CACHE_LIMIT=1048576"  # 1024 * 1024
+      "SK_DEFAULT_FONT_CACHE_LIMIT=1048576",  # 1024 * 1024
     ]
   } else {
     defines += [ "SK_DEFAULT_FONT_CACHE_LIMIT=20971520" ]  # 20 * 1024 * 1024
@@ -239,15 +251,15 @@
     defines += [ "SK_FONTHOST_USES_FONTMGR" ]
 
     cflags = [
-      "/wd4244", # conversion from 'type1( __int64)' to 'type2 (unsigned int)'
-      "/wd4267", # conversion from 'size_t' (64 bit) to 'type'(32 bit).
-      "/wd4341", # signed value is out of range for enum constant.
-      "/wd4345", # Object is default-initialized if initialization is omitted.
-      "/wd4390", # ';'empty statement found in looping;is it what was intended?
-      "/wd4554", # 'operator' : check operator precedence for possible error
-      "/wd4748", # compiler will disable optimizations if a function has inline
-                 # assembly code contains flow control(jmp or jcc) statements.
-      "/wd4800", # forcing value to bool 'true/false'(assigning int to bool).
+      "/wd4244",  # conversion from 'type1( __int64)' to 'type2 (unsigned int)'
+      "/wd4267",  # conversion from 'size_t' (64 bit) to 'type'(32 bit).
+      "/wd4341",  # signed value is out of range for enum constant.
+      "/wd4345",  # Object is default-initialized if initialization is omitted.
+      "/wd4390",  # ';'empty statement found in looping;is it what was intended?
+      "/wd4554",  # 'operator' : check operator precedence for possible error
+      "/wd4748",  # compiler will disable optimizations if a function has inline
+                  # assembly code contains flow control(jmp or jcc) statements.
+      "/wd4800",  # forcing value to bool 'true/false'(assigning int to bool).
     ]
   }
 }
@@ -324,59 +336,58 @@
 
   # Remove unused util files include in utils.gypi
   sources -= [
-  "//third_party/skia/include/utils/SkBoundaryPatch.h",
-  "//third_party/skia/include/utils/SkFrontBufferedStream.h",
-  "//third_party/skia/include/utils/SkCamera.h",
-  "//third_party/skia/include/utils/SkCanvasStateUtils.h",
-  "//third_party/skia/include/utils/SkCubicInterval.h",
-  "//third_party/skia/include/utils/SkCullPoints.h",
-  "//third_party/skia/include/utils/SkDebugUtils.h",
-  "//third_party/skia/include/utils/SkDumpCanvas.h",
-  "//third_party/skia/include/utils/SkEventTracer.h",
-  "//third_party/skia/include/utils/SkInterpolator.h",
-  "//third_party/skia/include/utils/SkLayer.h",
-  "//third_party/skia/include/utils/SkMeshUtils.h",
-  "//third_party/skia/include/utils/SkNinePatch.h",
-  "//third_party/skia/include/utils/SkParse.h",
-  "//third_party/skia/include/utils/SkParsePaint.h",
-  "//third_party/skia/include/utils/SkParsePath.h",
-  "//third_party/skia/include/utils/SkRandom.h",
+    "//third_party/skia/include/utils/SkBoundaryPatch.h",
+    "//third_party/skia/include/utils/SkFrontBufferedStream.h",
+    "//third_party/skia/include/utils/SkCamera.h",
+    "//third_party/skia/include/utils/SkCanvasStateUtils.h",
+    "//third_party/skia/include/utils/SkCubicInterval.h",
+    "//third_party/skia/include/utils/SkCullPoints.h",
+    "//third_party/skia/include/utils/SkDebugUtils.h",
+    "//third_party/skia/include/utils/SkDumpCanvas.h",
+    "//third_party/skia/include/utils/SkEventTracer.h",
+    "//third_party/skia/include/utils/SkInterpolator.h",
+    "//third_party/skia/include/utils/SkLayer.h",
+    "//third_party/skia/include/utils/SkMeshUtils.h",
+    "//third_party/skia/include/utils/SkNinePatch.h",
+    "//third_party/skia/include/utils/SkParse.h",
+    "//third_party/skia/include/utils/SkParsePaint.h",
+    "//third_party/skia/include/utils/SkParsePath.h",
+    "//third_party/skia/include/utils/SkRandom.h",
+    "//third_party/skia/src/utils/SkBitmapHasher.cpp",
+    "//third_party/skia/src/utils/SkBitmapHasher.h",
+    "//third_party/skia/src/utils/SkBoundaryPatch.cpp",
+    "//third_party/skia/src/utils/SkFrontBufferedStream.cpp",
+    "//third_party/skia/src/utils/SkCamera.cpp",
+    "//third_party/skia/src/utils/SkCanvasStack.h",
+    "//third_party/skia/src/utils/SkCubicInterval.cpp",
+    "//third_party/skia/src/utils/SkCullPoints.cpp",
+    "//third_party/skia/src/utils/SkDumpCanvas.cpp",
+    "//third_party/skia/src/utils/SkFloatUtils.h",
+    "//third_party/skia/src/utils/SkGatherPixelRefsAndRects.cpp",
+    "//third_party/skia/src/utils/SkGatherPixelRefsAndRects.h",
+    "//third_party/skia/src/utils/SkInterpolator.cpp",
+    "//third_party/skia/src/utils/SkLayer.cpp",
+    "//third_party/skia/src/utils/SkMD5.cpp",
+    "//third_party/skia/src/utils/SkMD5.h",
+    "//third_party/skia/src/utils/SkMeshUtils.cpp",
+    "//third_party/skia/src/utils/SkNinePatch.cpp",
+    "//third_party/skia/src/utils/SkOSFile.cpp",
+    "//third_party/skia/src/utils/SkParse.cpp",
+    "//third_party/skia/src/utils/SkParseColor.cpp",
+    "//third_party/skia/src/utils/SkParsePath.cpp",
+    "//third_party/skia/src/utils/SkPathUtils.cpp",
+    "//third_party/skia/src/utils/SkSHA1.cpp",
+    "//third_party/skia/src/utils/SkSHA1.h",
+    "//third_party/skia/src/utils/SkTFitsIn.h",
+    "//third_party/skia/src/utils/SkTLogic.h",
 
-  "//third_party/skia/src/utils/SkBitmapHasher.cpp",
-  "//third_party/skia/src/utils/SkBitmapHasher.h",
-  "//third_party/skia/src/utils/SkBoundaryPatch.cpp",
-  "//third_party/skia/src/utils/SkFrontBufferedStream.cpp",
-  "//third_party/skia/src/utils/SkCamera.cpp",
-  "//third_party/skia/src/utils/SkCanvasStack.h",
-  "//third_party/skia/src/utils/SkCubicInterval.cpp",
-  "//third_party/skia/src/utils/SkCullPoints.cpp",
-  "//third_party/skia/src/utils/SkDumpCanvas.cpp",
-  "//third_party/skia/src/utils/SkFloatUtils.h",
-  "//third_party/skia/src/utils/SkGatherPixelRefsAndRects.cpp",
-  "//third_party/skia/src/utils/SkGatherPixelRefsAndRects.h",
-  "//third_party/skia/src/utils/SkInterpolator.cpp",
-  "//third_party/skia/src/utils/SkLayer.cpp",
-  "//third_party/skia/src/utils/SkMD5.cpp",
-  "//third_party/skia/src/utils/SkMD5.h",
-  "//third_party/skia/src/utils/SkMeshUtils.cpp",
-  "//third_party/skia/src/utils/SkNinePatch.cpp",
-  "//third_party/skia/src/utils/SkOSFile.cpp",
-  "//third_party/skia/src/utils/SkParse.cpp",
-  "//third_party/skia/src/utils/SkParseColor.cpp",
-  "//third_party/skia/src/utils/SkParsePath.cpp",
-  "//third_party/skia/src/utils/SkPathUtils.cpp",
-  "//third_party/skia/src/utils/SkSHA1.cpp",
-  "//third_party/skia/src/utils/SkSHA1.h",
-  "//third_party/skia/src/utils/SkTFitsIn.h",
-  "//third_party/skia/src/utils/SkTLogic.h",
+    # We don't currently need to change thread affinity, so leave out this complexity for now.
+    "//third_party/skia/src/utils/SkThreadUtils_pthread_mach.cpp",
+    "//third_party/skia/src/utils/SkThreadUtils_pthread_linux.cpp",
 
-  # We don't currently need to change thread affinity, so leave out this complexity for now.
-  "//third_party/skia/src/utils/SkThreadUtils_pthread_mach.cpp",
-  "//third_party/skia/src/utils/SkThreadUtils_pthread_linux.cpp",
-
-  #testing
-  "//third_party/skia/src/fonts/SkGScalerContext.cpp",
-  "//third_party/skia/src/fonts/SkGScalerContext.h",
+    #testing
+    "//third_party/skia/src/fonts/SkGScalerContext.cpp",
+    "//third_party/skia/src/fonts/SkGScalerContext.h",
   ]
 
   if (is_win) {
@@ -415,9 +426,7 @@
     sources -= [ "ext/SkThread_chrome.cc" ]
   }
   if (is_android && (!enable_basic_printing && !enable_print_preview)) {
-    sources -= [
-      "ext/skia_utils_base.cc",
-    ]
+    sources -= [ "ext/skia_utils_base.cc" ]
   }
 
   # Fixup skia library sources.
@@ -447,9 +456,7 @@
     ]
   }
   if (!is_mac) {
-    sources -= [
-      "//third_party/skia/src/ports/SkFontHost_mac.cpp",
-    ]
+    sources -= [ "//third_party/skia/src/ports/SkFontHost_mac.cpp" ]
   }
 
   if (!is_linux) {
@@ -500,7 +507,7 @@
   configs -= [ "//build/config/compiler:chromium_code" ]
   configs += [
     ":skia_library_config",
-    "//build/config/compiler:no_chromium_code"
+    "//build/config/compiler:no_chromium_code",
   ]
   public_configs = [ ":skia_config" ]
 
@@ -525,16 +532,12 @@
       "//build/config/linux:freetype2",
       "//build/config/linux:pangocairo",
     ]
-    deps += [
-      "//third_party/icu:icuuc",
-    ]
+    deps += [ "//third_party/icu:icuuc" ]
   }
 
   if (is_android) {
     set_sources_assignment_filter([])
-    sources += [
-      "ext/platform_device_linux.cc",
-    ]
+    sources += [ "ext/platform_device_linux.cc" ]
     set_sources_assignment_filter(sources_assignment_filter)
     deps += [
       "//third_party/expat",
@@ -593,9 +596,8 @@
       if (cpu_arch == "x86") {
         sources += [ "//third_party/skia/src/opts/SkBlitRow_opts_SSE4_asm.S" ]
       } else {  # x64
-        sources += [
-          "//third_party/skia/src/opts/SkBlitRow_opts_SSE4_x64_asm.S"
-        ]
+        sources +=
+            [ "//third_party/skia/src/opts/SkBlitRow_opts_SSE4_x64_asm.S" ]
       }
     }
 
@@ -632,9 +634,7 @@
         # when running this.
         if (!arm_use_neon) {
           configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
-          cflags += [
-            "-mfpu=neon"
-          ]
+          cflags += [ "-mfpu=neon" ]
         }
 
         #ldflags = [
@@ -672,7 +672,6 @@
         "//third_party/skia/src/opts/SkXfermode_opts_none.cpp",
       ]
     }
-
   } else if (cpu_arch == "mipsel") {
     cflags += [ "-fomit-frame-pointer" ]
     sources = [
@@ -698,7 +697,7 @@
   configs += [
     ":skia_config",
     ":skia_library_config",
-    "//build/config/compiler:no_chromium_code"
+    "//build/config/compiler:no_chromium_code",
   ]
 
   deps = [
diff --git a/testing/android/BUILD.gn b/testing/android/BUILD.gn
index eefa22d..1cf250b 100644
--- a/testing/android/BUILD.gn
+++ b/testing/android/BUILD.gn
@@ -8,7 +8,7 @@
 source_set("native_test_native_code") {
   testonly = true
   sources = [
-    "native_test_launcher.cc"
+    "native_test_launcher.cc",
   ]
   libs = [ "log" ]
   deps = [
@@ -36,6 +36,6 @@
     "native_test_util.h",
   ]
   deps = [
-    "//base"
+    "//base",
   ]
 }
diff --git a/testing/android/junit/BUILD.gn b/testing/android/junit/BUILD.gn
index 5c668d5..938f22d 100644
--- a/testing/android/junit/BUILD.gn
+++ b/testing/android/junit/BUILD.gn
@@ -10,7 +10,7 @@
 java_library("junit_test_support") {
   DEPRECATED_java_in_dir = "java/src"
   deps = [
-    "//third_party/junit"
+    "//third_party/junit",
   ]
 }
 
diff --git a/testing/perf/BUILD.gn b/testing/perf/BUILD.gn
index d158f19..9d7ca91 100644
--- a/testing/perf/BUILD.gn
+++ b/testing/perf/BUILD.gn
@@ -3,6 +3,10 @@
 # found in the LICENSE file.
 
 source_set("perf") {
-  sources = [ "perf_test.cc" ]
-  deps = [ "//base" ]
+  sources = [
+    "perf_test.cc",
+  ]
+  deps = [
+    "//base",
+  ]
 }
diff --git a/third_party/cython/rules.gni b/third_party/cython/rules.gni
index cea1e36..3938110 100644
--- a/third_party/cython/rules.gni
+++ b/third_party/cython/rules.gni
@@ -20,7 +20,9 @@
     visibility = target_visibility
     script = cython_script
     sources = invoker.sources
-    outputs = [ cython_output ]
+    outputs = [
+      cython_output,
+    ]
     args = [
              "--cplus",
              "-I",
@@ -115,8 +117,9 @@
     sources = [
       "$root_out_dir/${shared_library_prefix}${shared_library_name}${shared_library_suffix}",
     ]
-    outputs =
-        [ "$root_out_dir/python/$python_base_module/${target_name}${python_module_suffix}" ]
+    outputs = [
+      "$root_out_dir/python/$python_base_module/${target_name}${python_module_suffix}",
+    ]
     deps = [
       ":$shared_library_name",
     ]
diff --git a/third_party/yasm/BUILD.gn b/third_party/yasm/BUILD.gn
index 3b2b884..cd9b453 100644
--- a/third_party/yasm/BUILD.gn
+++ b/third_party/yasm/BUILD.gn
@@ -285,7 +285,9 @@
       "source/patched-yasm/modules/arch/x86/x86regtmod.gperf",
     ]
 
-    outputs = [ "$target_gen_dir/{{source_name_part}}.c" ]
+    outputs = [
+      "$target_gen_dir/{{source_name_part}}.c",
+    ]
     args = [
       "{{source}}",
       rebase_path(target_gen_dir, root_build_dir) + "/{{source_name_part}}.c",
@@ -309,7 +311,9 @@
       "$yasm_gen_include_dir/x86insn_nasm.gperf",
     ]
 
-    outputs = [ "$yasm_gen_include_dir/{{source_name_part}}.c" ]
+    outputs = [
+      "$yasm_gen_include_dir/{{source_name_part}}.c",
+    ]
     args = [
       "{{source}}",
       rebase_path(yasm_gen_include_dir, root_build_dir) +
@@ -344,7 +348,9 @@
     sources = [
       "source/patched-yasm/modules/parsers/nasm/nasm-std.mac",
     ]
-    outputs = [ "$yasm_gen_include_dir/nasm-macros.c" ]
+    outputs = [
+      "$yasm_gen_include_dir/nasm-macros.c",
+    ]
     macro_varname = "nasm_standard_mac"
   }
 
@@ -354,7 +360,9 @@
     sources = [
       "$target_gen_dir/$version_file",
     ]
-    outputs = [ "$yasm_gen_include_dir/nasm-version.c" ]
+    outputs = [
+      "$yasm_gen_include_dir/nasm-version.c",
+    ]
     macro_varname = "nasm_version_mac"
     deps = [
       ":generate_version",
@@ -366,7 +374,9 @@
     sources = [
       "source/patched-yasm/modules/objfmts/coff/win64-gas.mac",
     ]
-    outputs = [ "$yasm_gen_include_dir/win64-gas.c" ]
+    outputs = [
+      "$yasm_gen_include_dir/win64-gas.c",
+    ]
     macro_varname = "win64_gas_stdmac"
   }
 
@@ -375,7 +385,9 @@
     sources = [
       "source/patched-yasm/modules/objfmts/coff/win64-nasm.mac",
     ]
-    outputs = [ "$yasm_gen_include_dir/win64-nasm.c" ]
+    outputs = [
+      "$yasm_gen_include_dir/win64-nasm.c",
+    ]
     macro_varname = "win64_nasm_stdmac"
   }
 
@@ -385,7 +397,9 @@
       "source/patched-yasm/modules/parsers/gas/gas-token.re",
       "source/patched-yasm/modules/parsers/nasm/nasm-token.re",
     ]
-    outputs = [ "$target_gen_dir/{{source_name_part}}.c" ]
+    outputs = [
+      "$target_gen_dir/{{source_name_part}}.c",
+    ]
     args = [
       "-b",
       "-o",
@@ -400,7 +414,9 @@
     inputs = [
       "source/patched-yasm/modules/arch/lc3b/lc3bid.re",
     ]
-    outputs = [ "$target_gen_dir/lc3bid.c" ]
+    outputs = [
+      "$target_gen_dir/lc3bid.c",
+    ]
     args = [
       "-s",
       "-o",
@@ -416,7 +432,9 @@
     inputs = [
       "source/patched-yasm/COPYING",
     ]
-    outputs = [ "$yasm_gen_include_dir/license.c" ]
+    outputs = [
+      "$yasm_gen_include_dir/license.c",
+    ]
     args = [
       "license_msg",
       rebase_path(outputs[0], root_build_dir),
@@ -430,7 +448,9 @@
       "source/patched-yasm/libyasm/module.in",
       config_makefile,
     ]
-    outputs = [ "$target_gen_dir/module.c" ]
+    outputs = [
+      "$target_gen_dir/module.c",
+    ]
     args = [
       rebase_path(inputs[0], root_build_dir),
       rebase_path(config_makefile, root_build_dir),
@@ -440,7 +460,9 @@
 
   compiled_action("generate_version") {
     tool = ":genversion"
-    outputs = [ "$target_gen_dir/$version_file" ]
+    outputs = [
+      "$target_gen_dir/$version_file",
+    ]
     args = [ rebase_path(outputs[0], root_build_dir) ]
   }
 
diff --git a/third_party/yasm/yasm_assemble.gni b/third_party/yasm/yasm_assemble.gni
index fdbf624..56d7e11 100644
--- a/third_party/yasm/yasm_assemble.gni
+++ b/third_party/yasm/yasm_assemble.gni
@@ -172,7 +172,9 @@
     # exactly duplicate the naming and location of object files from the
     # native build, which would be:
     # "$root_out_dir/${target_name}.{{source_dir_part}}.$asm_obj_extension"
-    outputs = [ "$target_out_dir/{{source_name_part}}.o" ]
+    outputs = [
+      "$target_out_dir/{{source_name_part}}.o",
+    ]
     args += [
       "-o",
       rebase_path(outputs[0], root_build_dir),
diff --git a/tools/android/forwarder2/BUILD.gn b/tools/android/forwarder2/BUILD.gn
index 87e6abf..acbd617 100644
--- a/tools/android/forwarder2/BUILD.gn
+++ b/tools/android/forwarder2/BUILD.gn
@@ -88,7 +88,11 @@
 
   # GYP: //tools/android/forwarder2/forwarder.gyp:forwarder2
   copy("host_forwarder_copy") {
-    sources = ["$root_out_dir/host_forwarder"]
-    outputs = ["$root_build_dir/host_forwarder"]
+    sources = [
+      "$root_out_dir/host_forwarder",
+    ]
+    outputs = [
+      "$root_build_dir/host_forwarder",
+    ]
   }
 }
diff --git a/tools/android/md5sum/BUILD.gn b/tools/android/md5sum/BUILD.gn
index 5f91a88..9b458c7 100644
--- a/tools/android/md5sum/BUILD.gn
+++ b/tools/android/md5sum/BUILD.gn
@@ -10,6 +10,7 @@
     ":md5sum_prepare_dist($default_toolchain)",
     ":md5sum_copy_host($host_toolchain)",
   ]
+
   # TODO(cjhopman): Remove once group datadeps are fixed.
   deps = datadeps
 }
@@ -17,10 +18,10 @@
 # GYP: //tools/android/md5sum/md5sum.gyp:md5sum_bin_device (and md5sum_bin_host)
 executable("md5sum_bin") {
   sources = [
-    "md5sum.cc"
+    "md5sum.cc",
   ]
   deps = [
-    "//base"
+    "//base",
   ]
 
   # TODO(GYP)
@@ -43,11 +44,10 @@
   # GYP: //tools/android/md5sum/md5sum.gyp:md5sum_bin_host
   copy("md5sum_copy_host") {
     sources = [
-      "$root_out_dir/md5sum_bin"
+      "$root_out_dir/md5sum_bin",
     ]
     outputs = [
-      "$root_build_dir/md5sum_bin_host"
+      "$root_build_dir/md5sum_bin_host",
     ]
   }
 }
-
diff --git a/tools/generate_library_loader/generate_library_loader.gni b/tools/generate_library_loader/generate_library_loader.gni
index debeddd..2b6874a 100644
--- a/tools/generate_library_loader/generate_library_loader.gni
+++ b/tools/generate_library_loader/generate_library_loader.gni
@@ -24,13 +24,21 @@
       visibility = invoker.visibility
     }
 
-    outputs = [ output_h, output_cc ]
+    outputs = [
+      output_h,
+      output_cc,
+    ]
 
     args = [
-      "--name", invoker.name,
-      "--output-h", rebase_path(output_h),
-      "--output-cc", rebase_path(output_cc),
-      "--header", invoker.header,
+      "--name",
+      invoker.name,
+      "--output-h",
+      rebase_path(output_h),
+      "--output-cc",
+      rebase_path(output_cc),
+      "--header",
+      invoker.header,
+
       # Note GYP build exposes a per-target variable to control this, which, if
       # manually set to true, will disable dlopen(). Its not clear this is
       # needed, so here we just leave off. If this can be done globally, we can
@@ -39,7 +47,10 @@
       "--link-directly=0",
     ]
     if (defined(invoker.bundled_header)) {
-      args += [ "--bundled-header", invoker.bundled_header ]
+      args += [
+        "--bundled-header",
+        invoker.bundled_header,
+      ]
     }
     args += invoker.functions
   }
@@ -48,7 +59,12 @@
     if (defined(invoker.config)) {
       public_configs = [ invoker.config ]
     }
-    sources = [ output_h, output_cc ]
-    deps = [ ":${target_name}_loader" ]
+    sources = [
+      output_h,
+      output_cc,
+    ]
+    deps = [
+      ":${target_name}_loader",
+    ]
   }
 }
diff --git a/tools/relocation_packer/BUILD.gn b/tools/relocation_packer/BUILD.gn
index d841277..cbbc6fd 100644
--- a/tools/relocation_packer/BUILD.gn
+++ b/tools/relocation_packer/BUILD.gn
@@ -16,7 +16,9 @@
   # GYP: //tools/relocation_packer/relocation_packer.gyp:lib_relocation_packer
   source_set("lib_relocation_packer") {
     defines = [ target_define ]
-    deps = [ "//third_party/elfutils:libelf" ]
+    deps = [
+      "//third_party/elfutils:libelf",
+    ]
     configs -= [ "//build/config/compiler:chromium_code" ]
     configs += [ "//build/config/compiler:no_chromium_code" ]
     sources = [
@@ -37,7 +39,9 @@
       ":lib_relocation_packer",
       "//third_party/elfutils:libelf",
     ]
-    sources = [ "src/main.cc" ]
+    sources = [
+      "src/main.cc",
+    ]
   }
 
   # GYP: //tools/relocation_packer/relocation_packer.gyp:relocation_packer_unittests
@@ -61,7 +65,7 @@
     ]
     defines = [
       target_define,
-      "INTERMEDIATE_DIR=\"$rebased_test_data\""
+      "INTERMEDIATE_DIR=\"$rebased_test_data\"",
     ]
     include_dirs = [ "//" ]
     deps = [
@@ -84,9 +88,12 @@
 
   # GYP: //tools/relocation_packer/relocation_packer.gyp:relocation_packer_test_data
   shared_library("relocation_packer_test_data") {
-    cflags = [ "-O0", "-g0" ]
+    cflags = [
+      "-O0",
+      "-g0",
+    ]
     sources = [
-      "test_data/elf_file_unittest_relocs.cc"
+      "test_data/elf_file_unittest_relocs.cc",
     ]
   }
 
@@ -124,12 +131,17 @@
     ]
 
     args = [
-      "--android-pack-relocations", rebase_path(relocation_packer_exe, root_build_dir),
-      "--android-objcopy", rebase_path(android_objcopy, root_build_dir),
+      "--android-pack-relocations",
+      rebase_path(relocation_packer_exe, root_build_dir),
+      "--android-objcopy",
+      rebase_path(android_objcopy, root_build_dir),
       "--added-section=$added_section",
-      "--test-file", rebase_path(test_file, root_build_dir),
-      "--packed-output", rebase_path(packed_output, root_build_dir),
-      "--unpacked-output", rebase_path(unpacked_output, root_build_dir),
+      "--test-file",
+      rebase_path(test_file, root_build_dir),
+      "--packed-output",
+      rebase_path(packed_output, root_build_dir),
+      "--unpacked-output",
+      rebase_path(unpacked_output, root_build_dir),
     ]
   }
 }
diff --git a/tools/relocation_packer/config.gni b/tools/relocation_packer/config.gni
index fec2752..90e3979 100644
--- a/tools/relocation_packer/config.gni
+++ b/tools/relocation_packer/config.gni
@@ -2,13 +2,12 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-relocation_packing_supported = (
-    (target_arch == "arm") || (target_arch == "arm64"))
+relocation_packing_supported = target_arch == "arm" || target_arch == "arm64"
 
 if (relocation_packing_supported) {
   relocation_packer_target = "//tools/relocation_packer($host_toolchain)"
-  relocation_packer_dir = get_label_info(
-      "$relocation_packer_target", "root_out_dir")
+  relocation_packer_dir =
+      get_label_info("$relocation_packer_target", "root_out_dir")
   relocation_packer_exe = "${relocation_packer_dir}/relocation_packer"
 
   if (target_arch == "arm") {
diff --git a/tools/xdisplaycheck/BUILD.gn b/tools/xdisplaycheck/BUILD.gn
index 23a52ae..779e163 100644
--- a/tools/xdisplaycheck/BUILD.gn
+++ b/tools/xdisplaycheck/BUILD.gn
@@ -7,9 +7,9 @@
     "xdisplaycheck.cc",
   ]
 
-  configs += [
-    "//build/config/linux:x11"
-  ]
+  configs += [ "//build/config/linux:x11" ]
 
-  deps = [ "//build/config/sanitizers:deps" ]
+  deps = [
+    "//build/config/sanitizers:deps",
+  ]
 }
diff --git a/url/BUILD.gn b/url/BUILD.gn
index feece8d..3bffec2 100644
--- a/url/BUILD.gn
+++ b/url/BUILD.gn
@@ -60,9 +60,7 @@
   configs += [ ":url_icu_config" ]
 
   if (is_win) {
-    cflags = [
-      "/wd4267", # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
-    ]
+    cflags = [ "/wd4267" ]  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
   }
 
   deps = [
@@ -124,12 +122,8 @@
     ]
 
     if (use_icu_alternatives_on_android) {
-      sources -= [
-        "url_canon_icu_unittest.cc",
-      ]
-      deps -= [
-        "//third_party/icu:icuuc",
-      ]
+      sources -= [ "url_canon_icu_unittest.cc" ]
+      deps -= [ "//third_party/icu:icuuc" ]
     }
   }
 }
