diff --git a/tools/accessibility/inspect/ax_dump_events.cc b/tools/accessibility/inspect/ax_dump_events.cc
index 5846b85..0cdf971 100644
--- a/tools/accessibility/inspect/ax_dump_events.cc
+++ b/tools/accessibility/inspect/ax_dump_events.cc
@@ -8,6 +8,7 @@
 
 #include "base/at_exit.h"
 #include "base/command_line.h"
+#include "base/message_loop/message_pump_type.h"
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/task/single_thread_task_executor.h"
@@ -63,8 +64,7 @@
   }
 
   base::AtExitManager exit_manager;
-  base::SingleThreadTaskExecutor main_task_executor(
-      base::MessagePump::Type::UI);
+  base::SingleThreadTaskExecutor main_task_executor(base::MessagePumpType::UI);
   const auto server = std::make_unique<tools::AXEventServer>(pid, pattern_str);
   base::RunLoop().Run();
   return 0;
diff --git a/tools/android/customtabs_benchmark/BUILD.gn b/tools/android/customtabs_benchmark/BUILD.gn
index 27cf5e0..e8dec60 100644
--- a/tools/android/customtabs_benchmark/BUILD.gn
+++ b/tools/android/customtabs_benchmark/BUILD.gn
@@ -21,6 +21,6 @@
   deps = [
     ":customtabs_benchmark_apk_resources",
     "//third_party/android_deps:android_support_v4_java",
-    "//third_party/custom_tabs_client:custom_tabs_support_java",
+    "//third_party/android_sdk/androidx_browser:androidx_browser_java",
   ]
 }
diff --git a/tools/android/customtabs_benchmark/java/src/org/chromium/customtabs/test/MainActivity.java b/tools/android/customtabs_benchmark/java/src/org/chromium/customtabs/test/MainActivity.java
index 3e205ec8..b16f4c13 100644
--- a/tools/android/customtabs_benchmark/java/src/org/chromium/customtabs/test/MainActivity.java
+++ b/tools/android/customtabs_benchmark/java/src/org/chromium/customtabs/test/MainActivity.java
@@ -18,11 +18,6 @@
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.SystemClock;
-import android.support.customtabs.CustomTabsCallback;
-import android.support.customtabs.CustomTabsClient;
-import android.support.customtabs.CustomTabsIntent;
-import android.support.customtabs.CustomTabsServiceConnection;
-import android.support.customtabs.CustomTabsSession;
 import android.support.v4.app.BundleCompat;
 import android.util.Log;
 import android.view.View;
@@ -39,6 +34,12 @@
 import java.util.Random;
 import java.util.Set;
 
+import androidx.browser.customtabs.CustomTabsCallback;
+import androidx.browser.customtabs.CustomTabsClient;
+import androidx.browser.customtabs.CustomTabsIntent;
+import androidx.browser.customtabs.CustomTabsServiceConnection;
+import androidx.browser.customtabs.CustomTabsSession;
+
 /** Activity used to benchmark Custom Tabs PLT.
  *
  * This activity contains benchmark code for two modes:
diff --git a/tools/android/eclipse/.classpath b/tools/android/eclipse/.classpath
index e9af384..17f6778 100644
--- a/tools/android/eclipse/.classpath
+++ b/tools/android/eclipse/.classpath
@@ -114,10 +114,8 @@
     <classpathentry kind="src" path="third_party/android_data_chart/java/src"/>
     <classpathentry kind="src" path="third_party/android_protobuf/src/java/src/main/java" including="com/google/protobuf/nano/*"/>
     <classpathentry kind="src" path="third_party/android_swipe_refresh/java/src"/>
+    <classpathentry kind="src" path="third_party/androidx_browser/src/browser/src"/>
     <classpathentry kind="src" path="third_party/cacheinvalidation/src/java"/>
-    <classpathentry kind="src" path="third_party/custom_tabs_client/src/customtabs/src"/>
-    <classpathentry kind="src" path="third_party/custom_tabs_client/src/Application/src/main/java"/>
-    <classpathentry kind="src" path="third_party/custom_tabs_client/src/shared/src/main/java"/>
     <classpathentry kind="src" path="third_party/gif_player/src"/>
     <classpathentry kind="src" path="third_party/junit/src/src/main/java"/>
     <classpathentry kind="src" path="third_party/mockito/src/src/main/java"/>
diff --git a/tools/android/roll/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy b/tools/android/roll/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
index 0f3fe2b..a98ddf6 100644
--- a/tools/android/roll/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
+++ b/tools/android/roll/android_deps/buildSrc/src/main/groovy/BuildConfigGenerator.groovy
@@ -231,15 +231,14 @@
     private static void addSpecialTreatment(StringBuilder sb, String dependencyId) {
         if (isPlayServicesTarget(dependencyId)) {
             if (Pattern.matches(".*cast_framework.*", dependencyId)) {
-                sb.append('  # Removing all resources from cast framework as they are unused bloat.\n')
-                sb.append('  strip_resources = true\n')
+                sb.append('  # Cannot get rid of cast framework resources: crbug.com/985139.\n')
             } else {
                 sb.append('  # Removing drawables from GMS .aars as they are unused bloat.\n')
                 sb.append('  strip_drawables = true\n')
             }
         }
         switch(dependencyId) {
-            case 'android_arch_lifecycle_runtime_java':
+            case 'android_arch_lifecycle_runtime':
                 sb.append('  # https://crbug.com/887942#c1\n')
                 sb.append('  ignore_proguard_configs = true\n')
                 break
diff --git a/tools/clang/scripts/build.py b/tools/clang/scripts/build.py
index 4637e56d..b0009f1 100755
--- a/tools/clang/scripts/build.py
+++ b/tools/clang/scripts/build.py
@@ -245,16 +245,6 @@
   args.gcc_toolchain = gcc_dir
 
 
-def SetMacXcodePath():
-  """Set DEVELOPER_DIR to the path to hermetic Xcode.app on Mac OS X."""
-  if sys.platform != 'darwin':
-    return
-
-  xcode_path = os.path.join(CHROMIUM_DIR, 'build', 'mac_files', 'Xcode.app')
-  if os.path.exists(xcode_path):
-    os.environ['DEVELOPER_DIR'] = xcode_path
-
-
 def VerifyVersionOfBuiltClangMatchesVERSION():
   """Checks that `clang --version` outputs RELEASE_VERSION. If this
   fails, update.RELEASE_VERSION is out-of-date and needs to be updated (possibly
@@ -348,15 +338,6 @@
                       default=sys.platform in ('linux2', 'darwin'))
   args = parser.parse_args()
 
-  # TODO(crbug.com/985289): Remove when rolling past r366427.
-  if args.llvm_force_head_revision:
-    global RELEASE_VERSION
-    RELEASE_VERSION = '10.0.0'
-    old_lib_dir = os.path.join(LLVM_BUILD_DIR, 'lib', 'clang', '9.0.0')
-    if (os.path.isdir(old_lib_dir)):
-      print('Removing old lib dir: ' + old_lib_dir)
-      RmTree(old_lib_dir)
-
   if args.lto_lld and not args.bootstrap:
     print('--lto-lld requires --bootstrap')
     return 1
@@ -413,10 +394,6 @@
   WriteStampFile('', STAMP_FILE)
   WriteStampFile('', FORCE_HEAD_REVISION_FILE)
 
-  # DEVELOPER_DIR needs to be set when Xcode isn't in a standard location
-  # and xcode-select wasn't run.
-  SetMacXcodePath()
-
   AddCMakeToPath(args)
   DeleteChromeToolsShim()
 
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index b15304e..d7a06ef 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -37,14 +37,13 @@
 # Do NOT CHANGE this if you don't know what you're doing -- see
 # https://chromium.googlesource.com/chromium/src/+/master/docs/updating_clang.md
 # Reverting problematic clang rolls is safe, though.
-CLANG_REVISION = 'f7e52fbdb5a7af8ea0808e98458b497125a5eca1'
-CLANG_SVN_REVISION = '365097'
-CLANG_SUB_REVISION = 8
+CLANG_REVISION = '7859fed6eaff162a995bbcc58b142a5358a882ee'
+CLANG_SVN_REVISION = '368354'
+CLANG_SUB_REVISION = 1
 
 PACKAGE_VERSION = '%s-%s-%s' % (CLANG_SVN_REVISION, CLANG_REVISION[:8],
                                 CLANG_SUB_REVISION)
-# TODO(crbug.com/985289): Bump when rolling past r366427.
-RELEASE_VERSION = '9.0.0'
+RELEASE_VERSION = '10.0.0'
 
 
 CDS_URL = os.environ.get('CDS_CLANG_BUCKET_OVERRIDE',
@@ -139,22 +138,23 @@
     os.makedirs(path)
 
 
-def DownloadAndUnpack(url, output_dir, path_prefix=None):
-  """Download an archive from url and extract into output_dir. If path_prefix is
-     not None, only extract files whose paths within the archive start with
-     path_prefix."""
+def DownloadAndUnpack(url, output_dir, path_prefixes=None):
+  """Download an archive from url and extract into output_dir. If path_prefixes
+     is not None, only extract files whose paths within the archive start with
+     any prefix in path_prefixes."""
   with tempfile.TemporaryFile() as f:
     DownloadUrl(url, f)
     f.seek(0)
     EnsureDirExists(output_dir)
     if url.endswith('.zip'):
-      assert path_prefix is None
+      assert path_prefixes is None
       zipfile.ZipFile(f).extractall(path=output_dir)
     else:
       t = tarfile.open(mode='r:gz', fileobj=f)
       members = None
-      if path_prefix is not None:
-        members = [m for m in t.getmembers() if m.name.startswith(path_prefix)]
+      if path_prefixes is not None:
+        members = [m for m in t.getmembers()
+                   if any(m.name.startswith(p) for p in path_prefixes)]
       t.extractall(path=output_dir, members=members)
 
 
@@ -167,14 +167,11 @@
   return CDS_URL + '/Linux_x64/'
 
 
-def DownloadAndUnpackClangPackage(platform, output_dir, runtimes_only=False):
+def DownloadAndUnpackClangPackage(platform, output_dir, path_prefixes=None):
   cds_file = "clang-%s.tgz" %  PACKAGE_VERSION
   cds_full_url = GetPlatformUrlPrefix(platform) + cds_file
   try:
-    path_prefix = None
-    if runtimes_only:
-      path_prefix = 'lib/clang/' + RELEASE_VERSION + '/lib/'
-    DownloadAndUnpack(cds_full_url, output_dir, path_prefix)
+    DownloadAndUnpack(cds_full_url, output_dir, path_prefixes)
   except URLError:
     print('Failed to download prebuilt clang %s' % cds_file)
     print('Use --force-local-build if you want to build locally.')
@@ -263,7 +260,12 @@
 
   DownloadAndUnpackClangPackage(sys.platform, LLVM_BUILD_DIR)
   if 'win' in target_os:
-    DownloadAndUnpackClangPackage('win32', LLVM_BUILD_DIR, runtimes_only=True)
+    # When doing win/cross builds on other hosts, get the Windows runtime
+    # libraries, and llvm-symbolizer.exe (needed in asan builds).
+    path_prefixes =  [ 'lib/clang/' + RELEASE_VERSION + '/lib/',
+                       'bin/llvm-symbolizer.exe' ]
+    DownloadAndUnpackClangPackage('win32', LLVM_BUILD_DIR,
+                                  path_prefixes=path_prefixes)
   if sys.platform == 'win32':
     CopyDiaDllTo(os.path.join(LLVM_BUILD_DIR, 'bin'))
   WriteStampFile(expected_stamp, STAMP_FILE)
@@ -291,11 +293,6 @@
                       help='Verify that clang has the passed-in version.')
   args = parser.parse_args()
 
-  # TODO(crbug.com/985289): Remove when rolling past r366427.
-  if args.llvm_force_head_revision:
-    global RELEASE_VERSION
-    RELEASE_VERSION = '10.0.0'
-
   if args.force_local_build:
     print(('update.py --force-local-build is no longer used to build clang; '
            'use build.py instead.'))
diff --git a/tools/clang/translation_unit/TranslationUnitGenerator.cpp b/tools/clang/translation_unit/TranslationUnitGenerator.cpp
index 2493b63a..a5d88eb 100644
--- a/tools/clang/translation_unit/TranslationUnitGenerator.cpp
+++ b/tools/clang/translation_unit/TranslationUnitGenerator.cpp
@@ -144,6 +144,14 @@
   source_file_paths_->insert(path);
 }
 
+template <typename T>
+static T* getValueOrNull(llvm::ErrorOr<T*> maybe_val) {
+  if (maybe_val) {
+    return *maybe_val;
+  }
+  return nullptr;
+}
+
 void IncludeFinderPPCallbacks::InclusionDirective(
     clang::SourceLocation hash_loc,
     const clang::Token& include_tok,
@@ -160,11 +168,10 @@
     return;
 
   assert(!current_files_.top().empty());
-  const clang::DirectoryEntry* const search_path_entry =
-      source_manager_->getFileManager().getDirectory(search_path);
+  const clang::DirectoryEntry* const search_path_entry = getValueOrNull(
+      source_manager_->getFileManager().getDirectory(search_path));
   const clang::DirectoryEntry* const current_file_parent_entry =
-      source_manager_->getFileManager()
-          .getFile(current_files_.top().c_str())
+      (*source_manager_->getFileManager().getFile(current_files_.top().c_str()))
           ->getDir();
 
   // If the include file was found relatively to the current file's parent
diff --git a/tools/fuchsia/local-sdk.py b/tools/fuchsia/local-sdk.py
index 51db83b0..4a3610c 100755
--- a/tools/fuchsia/local-sdk.py
+++ b/tools/fuchsia/local-sdk.py
@@ -37,7 +37,8 @@
   Run('scripts/fx', '--dir', build_dir, 'set', 'terminal.qemu-'+ arch,
       '--with=//topaz/packages/sdk:topaz', '--with-base=//sdk/bundles:tools',
       '--args=is_debug=false', '--args=build_sdk_archives=true')
-  Run('scripts/fx', 'build', 'topaz/public/sdk:fuchsia_dart', 'sdk')
+  Run('scripts/fx', 'build', 'topaz/public/sdk:fuchsia_dart', 'sdk',
+      'build/images')
 
 
 def main(args):
diff --git a/tools/grit/grit/__init__.py b/tools/grit/grit/__init__.py
index 766fd349..91ac9ee 100644
--- a/tools/grit/grit/__init__.py
+++ b/tools/grit/grit/__init__.py
@@ -5,4 +5,15 @@
 '''Package 'grit'
 '''
 
-pass
+from __future__ import print_function
+
+import os
+import sys
+
+
+_CUR_DIR = os.path.abspath(os.path.dirname(__file__))
+_GRIT_DIR = os.path.dirname(_CUR_DIR)
+_THIRD_PARTY_DIR = os.path.join(_GRIT_DIR, 'third_party')
+
+if _THIRD_PARTY_DIR not in sys.path:
+  sys.path.insert(0, _THIRD_PARTY_DIR)
diff --git a/tools/grit/grit/node/base.py b/tools/grit/grit/node/base.py
index 80446a8..0519b59 100644
--- a/tools/grit/grit/node/base.py
+++ b/tools/grit/grit/node/base.py
@@ -610,7 +610,7 @@
       The data in gzipped or brotli compressed format. If the format is
       unspecified then this returns the data uncompressed.
     '''
-    if self.attrs.get('compress') == 'gzip':
+    if self.attrs.get('compress') in ('gzip', 'true'):
       # We only use rsyncable compression on Linux.
       # We exclude ChromeOS since ChromeOS bots are Linux based but do not have
       # the --rsyncable option built in for gzip. See crbug.com/617950.
@@ -618,7 +618,7 @@
         return grit.format.gzip_string.GzipStringRsyncable(data)
       return grit.format.gzip_string.GzipString(data)
 
-    elif self.attrs.get('compress') in ('true', 'brotli'):
+    elif self.attrs.get('compress') == 'brotli':
       # The length of the uncompressed data as 8 bytes little-endian.
       size_bytes = struct.pack("<q", len(data))
       data = brotli_util.BrotliCompress(data)
diff --git a/tools/grit/grit/node/brotli_util.py b/tools/grit/grit/node/brotli_util.py
index d518215..77f70e4 100644
--- a/tools/grit/grit/node/brotli_util.py
+++ b/tools/grit/grit/node/brotli_util.py
@@ -18,7 +18,12 @@
 
 def BrotliCompress(data):
   if not __brotli_executable:
-    raise Exception('SetBrotliCommand has not been called yet!')
+    raise Exception('Add "use_brotli = true" to you GN grit(...) target ' +
+                    'if you want to use brotli.')
   compress = subprocess.Popen(__brotli_executable + ['-', '-f'],
                               stdin=subprocess.PIPE, stdout=subprocess.PIPE)
   return compress.communicate(data)[0]
+
+def IsInitialized():
+  global __brotli_executable
+  return __brotli_executable is not None
diff --git a/tools/grit/grit/node/structure.py b/tools/grit/grit/node/structure.py
index 69784f5..04b5693b 100644
--- a/tools/grit/grit/node/structure.py
+++ b/tools/grit/grit/node/structure.py
@@ -139,12 +139,6 @@
              'preprocess': 'false',
              'flattenhtml': 'false',
              'fallback_to_low_resolution': 'default',
-             # TODO(joi) this is a hack - should output all generated files
-             # as SCons dependencies; however, for now there is a bug I can't
-             # find where GRIT doesn't build the matching fileset, therefore
-             # this hack so that only the files you really need are marked as
-             # dependencies.
-             'sconsdep' : 'false',
              'variables': '',
              'compress': 'false',
              'use_base_dir': 'true',
diff --git a/tools/grit/grit/node/structure_unittest.py b/tools/grit/grit/node/structure_unittest.py
index fe22d4a..ea43f41 100755
--- a/tools/grit/grit/node/structure_unittest.py
+++ b/tools/grit/grit/node/structure_unittest.py
@@ -126,24 +126,13 @@
         base_dir=test_data_root)
     node, = root.GetChildrenOfType(structure.StructureNode)
     node.RunPreSubstitutionGatherer()
-
-    # Using the mock brotli decompression executable.
-    brotli_util.SetBrotliCommand([sys.executable,
-                                 os.path.join(os.path.dirname(__file__),
-                                 'mock_brotli.py')])
     compressed = node.GetDataPackValue(lang='en', encoding=1)
-    # Assert that the first two bytes in compressed format is BROTLI_CONST.
-    self.assertEqual(constants.BROTLI_CONST, compressed[0:2])
 
-    # Compare the actual size of the uncompressed test data with
-    # the size appended during compression.
-    actual_size = len(util.ReadFile(
-        os.path.join(test_data_root, 'test_text.txt'), util.BINARY))
-    uncompress_size = struct.unpack('<i', compressed[2:6])[0]
-    uncompress_size += struct.unpack('<h', compressed[6:8])[0] << 4*8
-    self.assertEqual(actual_size, uncompress_size)
-
-    self.assertEqual('This has been mock compressed!', compressed[8:])
+    decompressed_data = zlib.decompress(compressed, 16 + zlib.MAX_WBITS)
+    self.assertEqual(
+        util.ReadFile(
+            os.path.join(test_data_root, 'test_text.txt'), util.BINARY),
+        decompressed_data)
 
   def testCompressBrotli(self):
     test_data_root = util.PathFromRoot('grit/testdata')
diff --git a/tools/grit/grit/tool/build.py b/tools/grit/grit/tool/build.py
index 436830a..2fb8df3 100644
--- a/tools/grit/grit/tool/build.py
+++ b/tools/grit/grit/tool/build.py
@@ -149,6 +149,7 @@
     return 'A tool that builds RC files for compilation.'
 
   def Run(self, opts, args):
+    brotli_util.SetBrotliCommand(None)
     os.environ['cwd'] = os.getcwd()
     self.output_directory = '.'
     first_ids_file = None
@@ -256,6 +257,16 @@
 
     self.Process()
 
+    # Check that brotli was used if initialized.
+    if brotli_util.IsInitialized():
+      brotli_used = False
+      for node in self.res.ActiveDescendants():
+        if node.attrs.get('compress') == 'brotli':
+          brotli_used = True
+      if not brotli_used:
+        raise Exception('"use_brotli" was set to true in GN grit(...) target, ' +
+                        'but no resources were brotli compressed.')
+
     if assert_output_files:
       if not self.CheckAssertedOutputFiles(assert_output_files):
         return 2
diff --git a/tools/grit/grit_info.py b/tools/grit/grit_info.py
index b16f0ae..55738f2 100755
--- a/tools/grit/grit_info.py
+++ b/tools/grit/grit_info.py
@@ -37,20 +37,6 @@
     if output.attrs['lang']:
       lang_folders[output.attrs['lang']] = os.path.dirname(path)
 
-  # Add all generated files, once for each output language.
-  for node in grd:
-    if node.name == 'structure':
-      with node:
-        # TODO(joi) Should remove the "if sconsdep is true" thing as it is a
-        # hack - see grit/node/structure.py
-        if node.HasFileForLanguage() and node.attrs['sconsdep'] == 'true':
-          for lang in lang_folders:
-            path = node.FileForLanguage(lang, lang_folders[lang],
-                                        create_file=False,
-                                        return_if_not_generated=False)
-            if path:
-              target.append(path)
-
   return [t.replace('\\', '/') for t in target]
 
 
diff --git a/tools/grit/grit_rule.gni b/tools/grit/grit_rule.gni
index 636628a..002d8dc9 100644
--- a/tools/grit/grit_rule.gni
+++ b/tools/grit/grit_rule.gni
@@ -347,16 +347,6 @@
     depfile = "$depfile_dir/${grit_output_name}_stamp.d"
     outputs = [ "${depfile}.stamp" ] + grit_outputs + pak_info_outputs
 
-    brotli_target = "//third_party/brotli:brotli($host_toolchain)"
-
-    brotli_executable = get_label_info(brotli_target, "root_out_dir") + "/" +
-                        get_label_info(brotli_target, "name")
-    if (host_os == "win") {
-      brotli_executable += ".exe"
-    }
-
-    inputs += [ brotli_executable ]
-
     args = [
              "-i",
              source_path,
@@ -369,10 +359,24 @@
              rebase_path(depfile, root_build_dir),
              "--write-only-new=1",
              "--depend-on-stamp",
-             "--brotli",
-             rebase_path(brotli_executable, root_build_dir),
            ] + grit_defines
 
+    # Add brotli executable if using brotli.
+    if (defined(invoker.use_brotli) && invoker.use_brotli) {
+      brotli_target = "//third_party/brotli:brotli($host_toolchain)"
+      brotli_executable = get_label_info(brotli_target, "root_out_dir") + "/" +
+                          get_label_info(brotli_target, "name")
+      if (host_os == "win") {
+        brotli_executable += ".exe"
+      }
+
+      inputs += [ brotli_executable ]
+      args += [
+        "--brotli",
+        rebase_path(brotli_executable, root_build_dir),
+      ]
+    }
+
     # Add extra defines with -D flags.
     define_args = []
     if (defined(invoker.defines)) {
@@ -448,10 +452,12 @@
     deps = [
       "//tools/grit:grit_sources",
     ]
-    if (is_mac && is_asan) {
-      deps += [ "//tools/grit:brotli_mac_asan_workaround" ]
-    } else {
-      deps += [ brotli_target ]
+    if (defined(invoker.use_brotli) && invoker.use_brotli) {
+      if (is_mac && is_asan) {
+        deps += [ "//tools/grit:brotli_mac_asan_workaround" ]
+      } else {
+        deps += [ "//third_party/brotli:brotli($host_toolchain)" ]
+      }
     }
     if (defined(invoker.deps)) {
       deps += invoker.deps
diff --git a/tools/grit/third_party/six/LICENSE b/tools/grit/third_party/six/LICENSE
new file mode 100644
index 0000000..e558f9d
--- /dev/null
+++ b/tools/grit/third_party/six/LICENSE
@@ -0,0 +1,18 @@
+Copyright (c) 2010-2015 Benjamin Peterson
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/grit/third_party/six/README b/tools/grit/third_party/six/README
new file mode 100644
index 0000000..ee628a9
--- /dev/null
+++ b/tools/grit/third_party/six/README
@@ -0,0 +1,16 @@
+Six is a Python 2 and 3 compatibility library.  It provides utility functions
+for smoothing over the differences between the Python versions with the goal of
+writing Python code that is compatible on both Python versions.  See the
+documentation for more information on what is provided.
+
+Six supports every Python version since 2.6.  It is contained in only one Python
+file, so it can be easily copied into your project. (The copyright and license
+notice must be retained.)
+
+Online documentation is at https://pythonhosted.org/six/.
+
+Bugs can be reported to https://bitbucket.org/gutworth/six.  The code can also
+be found there.
+
+For questions about six or porting in general, email the python-porting mailing
+list: https://mail.python.org/mailman/listinfo/python-porting
diff --git a/tools/grit/third_party/six/README.chromium b/tools/grit/third_party/six/README.chromium
new file mode 100644
index 0000000..100b24d0
--- /dev/null
+++ b/tools/grit/third_party/six/README.chromium
@@ -0,0 +1,13 @@
+Name: six
+Short Name: six
+URL: https://bitbucket.org/gutworth/six/commits/tag/1.10.0
+Version: 1.10.0
+Revision: 403:e5218c3f66a2
+License: Apache License, Version 2.0
+
+Description:
+Six is a Python 2 and 3 compatibility library.
+
+Local Modifications:
+- Copied six.py as __init__.py.
+- Kept LICENSE and README.
diff --git a/tools/grit/third_party/six/__init__.py b/tools/grit/third_party/six/__init__.py
new file mode 100644
index 0000000..56e4272
--- /dev/null
+++ b/tools/grit/third_party/six/__init__.py
@@ -0,0 +1,868 @@
+# Copyright (c) 2010-2015 Benjamin Peterson
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+"""Utilities for writing code that runs on Python 2 and 3"""
+
+from __future__ import absolute_import
+
+import functools
+import itertools
+import operator
+import sys
+import types
+
+__author__ = "Benjamin Peterson <benjamin@python.org>"
+__version__ = "1.10.0"
+
+
+# Useful for very coarse version differentiation.
+PY2 = sys.version_info[0] == 2
+PY3 = sys.version_info[0] == 3
+PY34 = sys.version_info[0:2] >= (3, 4)
+
+if PY3:
+    string_types = str,
+    integer_types = int,
+    class_types = type,
+    text_type = str
+    binary_type = bytes
+
+    MAXSIZE = sys.maxsize
+else:
+    string_types = basestring,
+    integer_types = (int, long)
+    class_types = (type, types.ClassType)
+    text_type = unicode
+    binary_type = str
+
+    if sys.platform.startswith("java"):
+        # Jython always uses 32 bits.
+        MAXSIZE = int((1 << 31) - 1)
+    else:
+        # It's possible to have sizeof(long) != sizeof(Py_ssize_t).
+        class X(object):
+
+            def __len__(self):
+                return 1 << 31
+        try:
+            len(X())
+        except OverflowError:
+            # 32-bit
+            MAXSIZE = int((1 << 31) - 1)
+        else:
+            # 64-bit
+            MAXSIZE = int((1 << 63) - 1)
+        del X
+
+
+def _add_doc(func, doc):
+    """Add documentation to a function."""
+    func.__doc__ = doc
+
+
+def _import_module(name):
+    """Import module, returning the module after the last dot."""
+    __import__(name)
+    return sys.modules[name]
+
+
+class _LazyDescr(object):
+
+    def __init__(self, name):
+        self.name = name
+
+    def __get__(self, obj, tp):
+        result = self._resolve()
+        setattr(obj, self.name, result)  # Invokes __set__.
+        try:
+            # This is a bit ugly, but it avoids running this again by
+            # removing this descriptor.
+            delattr(obj.__class__, self.name)
+        except AttributeError:
+            pass
+        return result
+
+
+class MovedModule(_LazyDescr):
+
+    def __init__(self, name, old, new=None):
+        super(MovedModule, self).__init__(name)
+        if PY3:
+            if new is None:
+                new = name
+            self.mod = new
+        else:
+            self.mod = old
+
+    def _resolve(self):
+        return _import_module(self.mod)
+
+    def __getattr__(self, attr):
+        _module = self._resolve()
+        value = getattr(_module, attr)
+        setattr(self, attr, value)
+        return value
+
+
+class _LazyModule(types.ModuleType):
+
+    def __init__(self, name):
+        super(_LazyModule, self).__init__(name)
+        self.__doc__ = self.__class__.__doc__
+
+    def __dir__(self):
+        attrs = ["__doc__", "__name__"]
+        attrs += [attr.name for attr in self._moved_attributes]
+        return attrs
+
+    # Subclasses should override this
+    _moved_attributes = []
+
+
+class MovedAttribute(_LazyDescr):
+
+    def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):
+        super(MovedAttribute, self).__init__(name)
+        if PY3:
+            if new_mod is None:
+                new_mod = name
+            self.mod = new_mod
+            if new_attr is None:
+                if old_attr is None:
+                    new_attr = name
+                else:
+                    new_attr = old_attr
+            self.attr = new_attr
+        else:
+            self.mod = old_mod
+            if old_attr is None:
+                old_attr = name
+            self.attr = old_attr
+
+    def _resolve(self):
+        module = _import_module(self.mod)
+        return getattr(module, self.attr)
+
+
+class _SixMetaPathImporter(object):
+
+    """
+    A meta path importer to import six.moves and its submodules.
+
+    This class implements a PEP302 finder and loader. It should be compatible
+    with Python 2.5 and all existing versions of Python3
+    """
+
+    def __init__(self, six_module_name):
+        self.name = six_module_name
+        self.known_modules = {}
+
+    def _add_module(self, mod, *fullnames):
+        for fullname in fullnames:
+            self.known_modules[self.name + "." + fullname] = mod
+
+    def _get_module(self, fullname):
+        return self.known_modules[self.name + "." + fullname]
+
+    def find_module(self, fullname, path=None):
+        if fullname in self.known_modules:
+            return self
+        return None
+
+    def __get_module(self, fullname):
+        try:
+            return self.known_modules[fullname]
+        except KeyError:
+            raise ImportError("This loader does not know module " + fullname)
+
+    def load_module(self, fullname):
+        try:
+            # in case of a reload
+            return sys.modules[fullname]
+        except KeyError:
+            pass
+        mod = self.__get_module(fullname)
+        if isinstance(mod, MovedModule):
+            mod = mod._resolve()
+        else:
+            mod.__loader__ = self
+        sys.modules[fullname] = mod
+        return mod
+
+    def is_package(self, fullname):
+        """
+        Return true, if the named module is a package.
+
+        We need this method to get correct spec objects with
+        Python 3.4 (see PEP451)
+        """
+        return hasattr(self.__get_module(fullname), "__path__")
+
+    def get_code(self, fullname):
+        """Return None
+
+        Required, if is_package is implemented"""
+        self.__get_module(fullname)  # eventually raises ImportError
+        return None
+    get_source = get_code  # same as get_code
+
+_importer = _SixMetaPathImporter(__name__)
+
+
+class _MovedItems(_LazyModule):
+
+    """Lazy loading of moved objects"""
+    __path__ = []  # mark as package
+
+
+_moved_attributes = [
+    MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"),
+    MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"),
+    MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"),
+    MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"),
+    MovedAttribute("intern", "__builtin__", "sys"),
+    MovedAttribute("map", "itertools", "builtins", "imap", "map"),
+    MovedAttribute("getcwd", "os", "os", "getcwdu", "getcwd"),
+    MovedAttribute("getcwdb", "os", "os", "getcwd", "getcwdb"),
+    MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"),
+    MovedAttribute("reload_module", "__builtin__", "importlib" if PY34 else "imp", "reload"),
+    MovedAttribute("reduce", "__builtin__", "functools"),
+    MovedAttribute("shlex_quote", "pipes", "shlex", "quote"),
+    MovedAttribute("StringIO", "StringIO", "io"),
+    MovedAttribute("UserDict", "UserDict", "collections"),
+    MovedAttribute("UserList", "UserList", "collections"),
+    MovedAttribute("UserString", "UserString", "collections"),
+    MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"),
+    MovedAttribute("zip", "itertools", "builtins", "izip", "zip"),
+    MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"),
+    MovedModule("builtins", "__builtin__"),
+    MovedModule("configparser", "ConfigParser"),
+    MovedModule("copyreg", "copy_reg"),
+    MovedModule("dbm_gnu", "gdbm", "dbm.gnu"),
+    MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"),
+    MovedModule("http_cookiejar", "cookielib", "http.cookiejar"),
+    MovedModule("http_cookies", "Cookie", "http.cookies"),
+    MovedModule("html_entities", "htmlentitydefs", "html.entities"),
+    MovedModule("html_parser", "HTMLParser", "html.parser"),
+    MovedModule("http_client", "httplib", "http.client"),
+    MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"),
+    MovedModule("email_mime_nonmultipart", "email.MIMENonMultipart", "email.mime.nonmultipart"),
+    MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"),
+    MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"),
+    MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"),
+    MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"),
+    MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"),
+    MovedModule("cPickle", "cPickle", "pickle"),
+    MovedModule("queue", "Queue"),
+    MovedModule("reprlib", "repr"),
+    MovedModule("socketserver", "SocketServer"),
+    MovedModule("_thread", "thread", "_thread"),
+    MovedModule("tkinter", "Tkinter"),
+    MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"),
+    MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"),
+    MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"),
+    MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"),
+    MovedModule("tkinter_tix", "Tix", "tkinter.tix"),
+    MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"),
+    MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"),
+    MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"),
+    MovedModule("tkinter_colorchooser", "tkColorChooser",
+                "tkinter.colorchooser"),
+    MovedModule("tkinter_commondialog", "tkCommonDialog",
+                "tkinter.commondialog"),
+    MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"),
+    MovedModule("tkinter_font", "tkFont", "tkinter.font"),
+    MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"),
+    MovedModule("tkinter_tksimpledialog", "tkSimpleDialog",
+                "tkinter.simpledialog"),
+    MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"),
+    MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"),
+    MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"),
+    MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"),
+    MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"),
+    MovedModule("xmlrpc_server", "SimpleXMLRPCServer", "xmlrpc.server"),
+]
+# Add windows specific modules.
+if sys.platform == "win32":
+    _moved_attributes += [
+        MovedModule("winreg", "_winreg"),
+    ]
+
+for attr in _moved_attributes:
+    setattr(_MovedItems, attr.name, attr)
+    if isinstance(attr, MovedModule):
+        _importer._add_module(attr, "moves." + attr.name)
+del attr
+
+_MovedItems._moved_attributes = _moved_attributes
+
+moves = _MovedItems(__name__ + ".moves")
+_importer._add_module(moves, "moves")
+
+
+class Module_six_moves_urllib_parse(_LazyModule):
+
+    """Lazy loading of moved objects in six.moves.urllib_parse"""
+
+
+_urllib_parse_moved_attributes = [
+    MovedAttribute("ParseResult", "urlparse", "urllib.parse"),
+    MovedAttribute("SplitResult", "urlparse", "urllib.parse"),
+    MovedAttribute("parse_qs", "urlparse", "urllib.parse"),
+    MovedAttribute("parse_qsl", "urlparse", "urllib.parse"),
+    MovedAttribute("urldefrag", "urlparse", "urllib.parse"),
+    MovedAttribute("urljoin", "urlparse", "urllib.parse"),
+    MovedAttribute("urlparse", "urlparse", "urllib.parse"),
+    MovedAttribute("urlsplit", "urlparse", "urllib.parse"),
+    MovedAttribute("urlunparse", "urlparse", "urllib.parse"),
+    MovedAttribute("urlunsplit", "urlparse", "urllib.parse"),
+    MovedAttribute("quote", "urllib", "urllib.parse"),
+    MovedAttribute("quote_plus", "urllib", "urllib.parse"),
+    MovedAttribute("unquote", "urllib", "urllib.parse"),
+    MovedAttribute("unquote_plus", "urllib", "urllib.parse"),
+    MovedAttribute("urlencode", "urllib", "urllib.parse"),
+    MovedAttribute("splitquery", "urllib", "urllib.parse"),
+    MovedAttribute("splittag", "urllib", "urllib.parse"),
+    MovedAttribute("splituser", "urllib", "urllib.parse"),
+    MovedAttribute("uses_fragment", "urlparse", "urllib.parse"),
+    MovedAttribute("uses_netloc", "urlparse", "urllib.parse"),
+    MovedAttribute("uses_params", "urlparse", "urllib.parse"),
+    MovedAttribute("uses_query", "urlparse", "urllib.parse"),
+    MovedAttribute("uses_relative", "urlparse", "urllib.parse"),
+]
+for attr in _urllib_parse_moved_attributes:
+    setattr(Module_six_moves_urllib_parse, attr.name, attr)
+del attr
+
+Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes
+
+_importer._add_module(Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse"),
+                      "moves.urllib_parse", "moves.urllib.parse")
+
+
+class Module_six_moves_urllib_error(_LazyModule):
+
+    """Lazy loading of moved objects in six.moves.urllib_error"""
+
+
+_urllib_error_moved_attributes = [
+    MovedAttribute("URLError", "urllib2", "urllib.error"),
+    MovedAttribute("HTTPError", "urllib2", "urllib.error"),
+    MovedAttribute("ContentTooShortError", "urllib", "urllib.error"),
+]
+for attr in _urllib_error_moved_attributes:
+    setattr(Module_six_moves_urllib_error, attr.name, attr)
+del attr
+
+Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes
+
+_importer._add_module(Module_six_moves_urllib_error(__name__ + ".moves.urllib.error"),
+                      "moves.urllib_error", "moves.urllib.error")
+
+
+class Module_six_moves_urllib_request(_LazyModule):
+
+    """Lazy loading of moved objects in six.moves.urllib_request"""
+
+
+_urllib_request_moved_attributes = [
+    MovedAttribute("urlopen", "urllib2", "urllib.request"),
+    MovedAttribute("install_opener", "urllib2", "urllib.request"),
+    MovedAttribute("build_opener", "urllib2", "urllib.request"),
+    MovedAttribute("pathname2url", "urllib", "urllib.request"),
+    MovedAttribute("url2pathname", "urllib", "urllib.request"),
+    MovedAttribute("getproxies", "urllib", "urllib.request"),
+    MovedAttribute("Request", "urllib2", "urllib.request"),
+    MovedAttribute("OpenerDirector", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"),
+    MovedAttribute("ProxyHandler", "urllib2", "urllib.request"),
+    MovedAttribute("BaseHandler", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"),
+    MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"),
+    MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"),
+    MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"),
+    MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPHandler", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"),
+    MovedAttribute("FileHandler", "urllib2", "urllib.request"),
+    MovedAttribute("FTPHandler", "urllib2", "urllib.request"),
+    MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"),
+    MovedAttribute("UnknownHandler", "urllib2", "urllib.request"),
+    MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"),
+    MovedAttribute("urlretrieve", "urllib", "urllib.request"),
+    MovedAttribute("urlcleanup", "urllib", "urllib.request"),
+    MovedAttribute("URLopener", "urllib", "urllib.request"),
+    MovedAttribute("FancyURLopener", "urllib", "urllib.request"),
+    MovedAttribute("proxy_bypass", "urllib", "urllib.request"),
+]
+for attr in _urllib_request_moved_attributes:
+    setattr(Module_six_moves_urllib_request, attr.name, attr)
+del attr
+
+Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes
+
+_importer._add_module(Module_six_moves_urllib_request(__name__ + ".moves.urllib.request"),
+                      "moves.urllib_request", "moves.urllib.request")
+
+
+class Module_six_moves_urllib_response(_LazyModule):
+
+    """Lazy loading of moved objects in six.moves.urllib_response"""
+
+
+_urllib_response_moved_attributes = [
+    MovedAttribute("addbase", "urllib", "urllib.response"),
+    MovedAttribute("addclosehook", "urllib", "urllib.response"),
+    MovedAttribute("addinfo", "urllib", "urllib.response"),
+    MovedAttribute("addinfourl", "urllib", "urllib.response"),
+]
+for attr in _urllib_response_moved_attributes:
+    setattr(Module_six_moves_urllib_response, attr.name, attr)
+del attr
+
+Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes
+
+_importer._add_module(Module_six_moves_urllib_response(__name__ + ".moves.urllib.response"),
+                      "moves.urllib_response", "moves.urllib.response")
+
+
+class Module_six_moves_urllib_robotparser(_LazyModule):
+
+    """Lazy loading of moved objects in six.moves.urllib_robotparser"""
+
+
+_urllib_robotparser_moved_attributes = [
+    MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"),
+]
+for attr in _urllib_robotparser_moved_attributes:
+    setattr(Module_six_moves_urllib_robotparser, attr.name, attr)
+del attr
+
+Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes
+
+_importer._add_module(Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser"),
+                      "moves.urllib_robotparser", "moves.urllib.robotparser")
+
+
+class Module_six_moves_urllib(types.ModuleType):
+
+    """Create a six.moves.urllib namespace that resembles the Python 3 namespace"""
+    __path__ = []  # mark as package
+    parse = _importer._get_module("moves.urllib_parse")
+    error = _importer._get_module("moves.urllib_error")
+    request = _importer._get_module("moves.urllib_request")
+    response = _importer._get_module("moves.urllib_response")
+    robotparser = _importer._get_module("moves.urllib_robotparser")
+
+    def __dir__(self):
+        return ['parse', 'error', 'request', 'response', 'robotparser']
+
+_importer._add_module(Module_six_moves_urllib(__name__ + ".moves.urllib"),
+                      "moves.urllib")
+
+
+def add_move(move):
+    """Add an item to six.moves."""
+    setattr(_MovedItems, move.name, move)
+
+
+def remove_move(name):
+    """Remove item from six.moves."""
+    try:
+        delattr(_MovedItems, name)
+    except AttributeError:
+        try:
+            del moves.__dict__[name]
+        except KeyError:
+            raise AttributeError("no such move, %r" % (name,))
+
+
+if PY3:
+    _meth_func = "__func__"
+    _meth_self = "__self__"
+
+    _func_closure = "__closure__"
+    _func_code = "__code__"
+    _func_defaults = "__defaults__"
+    _func_globals = "__globals__"
+else:
+    _meth_func = "im_func"
+    _meth_self = "im_self"
+
+    _func_closure = "func_closure"
+    _func_code = "func_code"
+    _func_defaults = "func_defaults"
+    _func_globals = "func_globals"
+
+
+try:
+    advance_iterator = next
+except NameError:
+    def advance_iterator(it):
+        return it.next()
+next = advance_iterator
+
+
+try:
+    callable = callable
+except NameError:
+    def callable(obj):
+        return any("__call__" in klass.__dict__ for klass in type(obj).__mro__)
+
+
+if PY3:
+    def get_unbound_function(unbound):
+        return unbound
+
+    create_bound_method = types.MethodType
+
+    def create_unbound_method(func, cls):
+        return func
+
+    Iterator = object
+else:
+    def get_unbound_function(unbound):
+        return unbound.im_func
+
+    def create_bound_method(func, obj):
+        return types.MethodType(func, obj, obj.__class__)
+
+    def create_unbound_method(func, cls):
+        return types.MethodType(func, None, cls)
+
+    class Iterator(object):
+
+        def next(self):
+            return type(self).__next__(self)
+
+    callable = callable
+_add_doc(get_unbound_function,
+         """Get the function out of a possibly unbound function""")
+
+
+get_method_function = operator.attrgetter(_meth_func)
+get_method_self = operator.attrgetter(_meth_self)
+get_function_closure = operator.attrgetter(_func_closure)
+get_function_code = operator.attrgetter(_func_code)
+get_function_defaults = operator.attrgetter(_func_defaults)
+get_function_globals = operator.attrgetter(_func_globals)
+
+
+if PY3:
+    def iterkeys(d, **kw):
+        return iter(d.keys(**kw))
+
+    def itervalues(d, **kw):
+        return iter(d.values(**kw))
+
+    def iteritems(d, **kw):
+        return iter(d.items(**kw))
+
+    def iterlists(d, **kw):
+        return iter(d.lists(**kw))
+
+    viewkeys = operator.methodcaller("keys")
+
+    viewvalues = operator.methodcaller("values")
+
+    viewitems = operator.methodcaller("items")
+else:
+    def iterkeys(d, **kw):
+        return d.iterkeys(**kw)
+
+    def itervalues(d, **kw):
+        return d.itervalues(**kw)
+
+    def iteritems(d, **kw):
+        return d.iteritems(**kw)
+
+    def iterlists(d, **kw):
+        return d.iterlists(**kw)
+
+    viewkeys = operator.methodcaller("viewkeys")
+
+    viewvalues = operator.methodcaller("viewvalues")
+
+    viewitems = operator.methodcaller("viewitems")
+
+_add_doc(iterkeys, "Return an iterator over the keys of a dictionary.")
+_add_doc(itervalues, "Return an iterator over the values of a dictionary.")
+_add_doc(iteritems,
+         "Return an iterator over the (key, value) pairs of a dictionary.")
+_add_doc(iterlists,
+         "Return an iterator over the (key, [values]) pairs of a dictionary.")
+
+
+if PY3:
+    def b(s):
+        return s.encode("latin-1")
+
+    def u(s):
+        return s
+    unichr = chr
+    import struct
+    int2byte = struct.Struct(">B").pack
+    del struct
+    byte2int = operator.itemgetter(0)
+    indexbytes = operator.getitem
+    iterbytes = iter
+    import io
+    StringIO = io.StringIO
+    BytesIO = io.BytesIO
+    _assertCountEqual = "assertCountEqual"
+    if sys.version_info[1] <= 1:
+        _assertRaisesRegex = "assertRaisesRegexp"
+        _assertRegex = "assertRegexpMatches"
+    else:
+        _assertRaisesRegex = "assertRaisesRegex"
+        _assertRegex = "assertRegex"
+else:
+    def b(s):
+        return s
+    # Workaround for standalone backslash
+
+    def u(s):
+        return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape")
+    unichr = unichr
+    int2byte = chr
+
+    def byte2int(bs):
+        return ord(bs[0])
+
+    def indexbytes(buf, i):
+        return ord(buf[i])
+    iterbytes = functools.partial(itertools.imap, ord)
+    import StringIO
+    StringIO = BytesIO = StringIO.StringIO
+    _assertCountEqual = "assertItemsEqual"
+    _assertRaisesRegex = "assertRaisesRegexp"
+    _assertRegex = "assertRegexpMatches"
+_add_doc(b, """Byte literal""")
+_add_doc(u, """Text literal""")
+
+
+def assertCountEqual(self, *args, **kwargs):
+    return getattr(self, _assertCountEqual)(*args, **kwargs)
+
+
+def assertRaisesRegex(self, *args, **kwargs):
+    return getattr(self, _assertRaisesRegex)(*args, **kwargs)
+
+
+def assertRegex(self, *args, **kwargs):
+    return getattr(self, _assertRegex)(*args, **kwargs)
+
+
+if PY3:
+    exec_ = getattr(moves.builtins, "exec")
+
+    def reraise(tp, value, tb=None):
+        if value is None:
+            value = tp()
+        if value.__traceback__ is not tb:
+            raise value.with_traceback(tb)
+        raise value
+
+else:
+    def exec_(_code_, _globs_=None, _locs_=None):
+        """Execute code in a namespace."""
+        if _globs_ is None:
+            frame = sys._getframe(1)
+            _globs_ = frame.f_globals
+            if _locs_ is None:
+                _locs_ = frame.f_locals
+            del frame
+        elif _locs_ is None:
+            _locs_ = _globs_
+        exec("""exec _code_ in _globs_, _locs_""")
+
+    exec_("""def reraise(tp, value, tb=None):
+    raise tp, value, tb
+""")
+
+
+if sys.version_info[:2] == (3, 2):
+    exec_("""def raise_from(value, from_value):
+    if from_value is None:
+        raise value
+    raise value from from_value
+""")
+elif sys.version_info[:2] > (3, 2):
+    exec_("""def raise_from(value, from_value):
+    raise value from from_value
+""")
+else:
+    def raise_from(value, from_value):
+        raise value
+
+
+print_ = getattr(moves.builtins, "print", None)
+if print_ is None:
+    def print_(*args, **kwargs):
+        """The new-style print function for Python 2.4 and 2.5."""
+        fp = kwargs.pop("file", sys.stdout)
+        if fp is None:
+            return
+
+        def write(data):
+            if not isinstance(data, basestring):
+                data = str(data)
+            # If the file has an encoding, encode unicode with it.
+            if (isinstance(fp, file) and
+                    isinstance(data, unicode) and
+                    fp.encoding is not None):
+                errors = getattr(fp, "errors", None)
+                if errors is None:
+                    errors = "strict"
+                data = data.encode(fp.encoding, errors)
+            fp.write(data)
+        want_unicode = False
+        sep = kwargs.pop("sep", None)
+        if sep is not None:
+            if isinstance(sep, unicode):
+                want_unicode = True
+            elif not isinstance(sep, str):
+                raise TypeError("sep must be None or a string")
+        end = kwargs.pop("end", None)
+        if end is not None:
+            if isinstance(end, unicode):
+                want_unicode = True
+            elif not isinstance(end, str):
+                raise TypeError("end must be None or a string")
+        if kwargs:
+            raise TypeError("invalid keyword arguments to print()")
+        if not want_unicode:
+            for arg in args:
+                if isinstance(arg, unicode):
+                    want_unicode = True
+                    break
+        if want_unicode:
+            newline = unicode("\n")
+            space = unicode(" ")
+        else:
+            newline = "\n"
+            space = " "
+        if sep is None:
+            sep = space
+        if end is None:
+            end = newline
+        for i, arg in enumerate(args):
+            if i:
+                write(sep)
+            write(arg)
+        write(end)
+if sys.version_info[:2] < (3, 3):
+    _print = print_
+
+    def print_(*args, **kwargs):
+        fp = kwargs.get("file", sys.stdout)
+        flush = kwargs.pop("flush", False)
+        _print(*args, **kwargs)
+        if flush and fp is not None:
+            fp.flush()
+
+_add_doc(reraise, """Reraise an exception.""")
+
+if sys.version_info[0:2] < (3, 4):
+    def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS,
+              updated=functools.WRAPPER_UPDATES):
+        def wrapper(f):
+            f = functools.wraps(wrapped, assigned, updated)(f)
+            f.__wrapped__ = wrapped
+            return f
+        return wrapper
+else:
+    wraps = functools.wraps
+
+
+def with_metaclass(meta, *bases):
+    """Create a base class with a metaclass."""
+    # This requires a bit of explanation: the basic idea is to make a dummy
+    # metaclass for one level of class instantiation that replaces itself with
+    # the actual metaclass.
+    class metaclass(meta):
+
+        def __new__(cls, name, this_bases, d):
+            return meta(name, bases, d)
+    return type.__new__(metaclass, 'temporary_class', (), {})
+
+
+def add_metaclass(metaclass):
+    """Class decorator for creating a class with a metaclass."""
+    def wrapper(cls):
+        orig_vars = cls.__dict__.copy()
+        slots = orig_vars.get('__slots__')
+        if slots is not None:
+            if isinstance(slots, str):
+                slots = [slots]
+            for slots_var in slots:
+                orig_vars.pop(slots_var)
+        orig_vars.pop('__dict__', None)
+        orig_vars.pop('__weakref__', None)
+        return metaclass(cls.__name__, cls.__bases__, orig_vars)
+    return wrapper
+
+
+def python_2_unicode_compatible(klass):
+    """
+    A decorator that defines __unicode__ and __str__ methods under Python 2.
+    Under Python 3 it does nothing.
+
+    To support Python 2 and 3 with a single code base, define a __str__ method
+    returning text and apply this decorator to the class.
+    """
+    if PY2:
+        if '__str__' not in klass.__dict__:
+            raise ValueError("@python_2_unicode_compatible cannot be applied "
+                             "to %s because it doesn't define __str__()." %
+                             klass.__name__)
+        klass.__unicode__ = klass.__str__
+        klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
+    return klass
+
+
+# Complete the moves implementation.
+# This code is at the end of this module to speed up module loading.
+# Turn this module into a package.
+__path__ = []  # required for PEP 302 and PEP 451
+__package__ = __name__  # see PEP 366 @ReservedAssignment
+if globals().get("__spec__") is not None:
+    __spec__.submodule_search_locations = []  # PEP 451 @UndefinedVariable
+# Remove other six meta path importers, since they cause problems. This can
+# happen if six is removed from sys.modules and then reloaded. (Setuptools does
+# this for some reason.)
+if sys.meta_path:
+    for i, importer in enumerate(sys.meta_path):
+        # Here's some real nastiness: Another "instance" of the six module might
+        # be floating around. Therefore, we can't use isinstance() to check for
+        # the six meta path importer, since the other six instance will have
+        # inserted an importer with different class.
+        if (type(importer).__name__ == "_SixMetaPathImporter" and
+                importer.name == __name__):
+            del sys.meta_path[i]
+            break
+    del i, importer
+# Finally, add the importer to the meta path import hook.
+sys.meta_path.append(_importer)
diff --git a/tools/gritsettings/resource_ids b/tools/gritsettings/resource_ids
index def08e61..a4c39b1 100644
--- a/tools/gritsettings/resource_ids
+++ b/tools/gritsettings/resource_ids
@@ -147,7 +147,7 @@
     "structures": [13350],
   },
   "chrome/browser/resources/sync_file_system_internals/sync_file_system_internals_resources.grd": {
-    "includes": [13850],
+    "includes": [13860],
   },
   "chrome/browser/resources/tab_strip/tab_strip_resources.grd": {
     "structures": [13880],
@@ -158,7 +158,7 @@
   "chrome/browser/resources/webapks/webapks_ui_resources.grd": {
     "includes": [13910],
   },
-  "chrome/browser/resources/welcome/onboarding_welcome_resources.grd": {
+  "chrome/browser/resources/welcome/welcome_resources.grd": {
     "includes": [13920],
     "structures": [13970],
   },
diff --git a/tools/gritsettings/translation_expectations.pyl b/tools/gritsettings/translation_expectations.pyl
index 98e497c7..2f3da38 100644
--- a/tools/gritsettings/translation_expectations.pyl
+++ b/tools/gritsettings/translation_expectations.pyl
@@ -30,6 +30,7 @@
       "chrome/android/features/keyboard_accessory/internal/java/strings/android_keyboard_accessory_strings.grd",
       "chrome/android/features/autofill_assistant/java/strings/android_chrome_autofill_assistant_strings.grd",
       "chrome/android/features/start_surface/internal/java/strings/android_chrome_start_surface_strings.grd",
+      "chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd",
       "chrome/android/touchless/java/strings/touchless_strings.grd",
       "chrome/android/webapk/strings/android_webapk_strings.grd",
       "chrome/app/chromium_strings.grd",
diff --git a/tools/mb/mb.py b/tools/mb/mb.py
index ba3af5a..12a5e2c 100755
--- a/tools/mb/mb.py
+++ b/tools/mb/mb.py
@@ -419,9 +419,9 @@
       ('infra/tools/luci/logdog/butler/${platform}',
        'git_revision:e1abc57be62d198b5c2f487bfb2fa2d2eb0e867c'),
       ('infra/tools/luci/vpython-native/${platform}',
-       'git_revision:cc09450f1c27c0034ec08b1f6d63bbc298294763'),
+       'git_revision:98a268c6432f18aedd55d62b9621765316dc2a16'),
       ('infra/tools/luci/vpython/${platform}',
-       'git_revision:cc09450f1c27c0034ec08b1f6d63bbc298294763'),
+       'git_revision:98a268c6432f18aedd55d62b9621765316dc2a16'),
     ]
     for pkg, vers in cipd_packages:
       cmd.append('--cipd-package=.swarming_module:%s:%s' % (pkg, vers))
@@ -519,7 +519,7 @@
     if self.platform == 'darwin':
       os_dim = ('os', 'Mac-10.13')
     elif self.platform.startswith('linux'):
-      os_dim = ('os', 'Ubuntu-14.04')
+      os_dim = ('os', 'Ubuntu-16.04')
     elif self.platform == 'win32':
       os_dim = ('os', 'Windows-10')
     else:
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index ebd83ca..a4232ec 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -16,6 +16,7 @@
     'chrome': {
       'chromeos-amd64-generic-google-rel': 'official_cros_chrome_sdk',
       'chromeos-betty-google-rel': 'official_cros_chrome_sdk_headless_ozone',
+      'chromeos-kevin-google-rel': 'official_cros_chrome_sdk_headless_ozone',
       'linux-chromeos-google-rel': 'official_goma_chromeos_minimal_symbols',
       'linux-google-rel': 'official_goma',
       'mac-google-rel': 'official_goma',
@@ -75,17 +76,7 @@
 
     'chromium.android.fyi': {
       'Memory Infra Tester': 'android_release_thumb_bot',
-      'NDK Next arm Builder':
-        'android_ndk_next_release_bot_minimal_symbols',
-      'NDK Next arm64 Builder':
-        'android_ndk_next_release_bot_minimal_symbols_arm64',
-      'NDK Next x64 Builder':
-        'android_ndk_next_release_bot_minimal_symbols_x64',
-      'NDK Next x86 Builder':
-        'android_ndk_next_release_bot_minimal_symbols_x86',
-      'x64 Device Tester': 'android_shared_release_bot_x64',
-      'x86 Cloud Tester': 'android_debug_static_bot_x86',
-      'x86 Emulator Tester': 'android_debug_static_bot_x86',
+      'android-pie-x86-fyi-rel': 'android_release_bot_minimal_symbols_x86',
     },
 
     'chromium.chromedriver': {
@@ -207,6 +198,7 @@
       'chromeos-amd64-generic-rel-vm-tests': 'cros_chrome_sdk_headless_ozone_dcheck_always_on',
       'chromeos-kevin-rel-hw-tests': 'cros_chrome_sdk_headless_ozone',
       'chromeos-vm-code-coverage': 'cros_chrome_sdk_headless_ozone_coverage',
+      'linux-bfcache-rel': 'release_bot_minimal_symbols',
       'linux-chromeos-code-coverage': 'chromeos_with_codecs_release_bot_coverage',
       'linux-chromeos-oobe-code-coverage': 'chromeos_with_codecs_release_bot_coverage',
       'linux-fieldtrial-rel': 'release_bot_minimal_symbols',
@@ -401,13 +393,14 @@
       'GPU FYI Mac Builder': 'gpu_fyi_tests_release_trybot',
       'GPU FYI Mac Builder (dbg)': 'gpu_fyi_tests_debug_trybot',
       'GPU FYI Mac dEQP Builder': 'deqp_release_trybot',
+      'GPU FYI Perf Android 64 Builder': 'gpu_tests_android_vulkan_release_trybot_arm64',
       'GPU FYI Win Builder': 'gpu_fyi_tests_release_trybot_x86',
       'GPU FYI Win Builder (dbg)': 'gpu_fyi_tests_debug_trybot_x86',
       'GPU FYI Win dEQP Builder': 'deqp_release_trybot_x86',
       'GPU FYI Win x64 Builder': 'gpu_fyi_tests_release_trybot',
       'GPU FYI Win x64 Builder (dbg)': 'gpu_fyi_tests_debug_trybot',
       'GPU FYI Win x64 dEQP Builder': 'deqp_release_trybot',
-      'GPU FYI XR Win Builder': 'gpu_fyi_tests_release_trybot_x86',
+      'GPU FYI XR Win x64 Builder': 'gpu_fyi_tests_release_trybot',
       'Linux FYI GPU TSAN Release': 'gpu_fyi_tests_release_trybot_tsan',
       'Mac FYI GPU ASAN Release': 'gpu_fyi_tests_release_trybot_asan',
       'Optional Android Release (Nexus 5X)': 'gpu_tests_android_release_trybot_arm64',
@@ -551,8 +544,12 @@
       'Linux Snapshot Builder': 'release_bot',
       'Mac V8 FYI Release (Intel)': 'gpu_tests_release_trybot',
       'V8 Android GN (dbg)': 'android_debug_bot',
-      'V8 Linux GN': 'release_bot',
+      'V8 Blink Linux': 'release_bot',
+      'V8 Blink Linux Debug': 'release_bot_v8_debug',
       'V8 Blink Linux Layout NG': 'release_bot',
+      'V8 Blink Mac': 'release_bot',
+      'V8 Blink Win': 'release_bot',
+      'V8 Linux GN': 'release_bot',
       'V8-Blink Linux 64': 'release_bot',
       'V8-Blink Linux 64 - future': 'release_bot',
       'V8-Blink Linux 64 (dbg)': 'release_bot_v8_debug',
@@ -639,6 +636,7 @@
       'android-marshmallow-arm64-rel': 'gpu_tests_android_release_trybot_arm64_resource_whitelisting',
       'android-oreo-arm64-cts-networkservice-dbg': 'android_debug_trybot_arm64',
       'android-oreo-arm64-rel': 'android_release_trybot_arm64_webview_google',
+      'android-pie-x86-fyi-rel': 'android_release_trybot_x86',
       'android_archive_rel_ng': 'android_release_trybot',
       'android_arm64_dbg_recipe': 'android_debug_trybot_compile_only_arm64',
       'android-binary-size': 'android_binary_size',
@@ -692,8 +690,10 @@
       'linux_angle_ozone_rel_ng': 'gpu_fyi_tests_ozone_linux_system_gbm_libdrm_release_trybot',
       'linux_angle_deqp_rel_ng': 'deqp_release_trybot',
       'mac-angle-rel': 'gpu_fyi_tests_release_trybot',
-      'win-angle-rel': 'gpu_fyi_tests_release_trybot_x86',
-      'win_angle_deqp_rel_ng': 'deqp_release_trybot_x86',
+      'win-angle-rel-32': 'gpu_fyi_tests_release_trybot_x86',
+      'win-angle-rel-64': 'gpu_fyi_tests_release_trybot',
+      'win-angle-deqp-rel-32': 'deqp_release_trybot_x86',
+      'win-angle-deqp-rel-64': 'deqp_release_trybot',
     },
 
     'tryserver.chrome': {
@@ -742,6 +742,7 @@
       'gpu-fyi-try-linux-intel-dqp': 'deqp_release_trybot',
       'gpu-fyi-try-linux-intel-exp': 'gpu_fyi_tests_release_trybot',
       'gpu-fyi-try-linux-intel-rel': 'gpu_fyi_tests_release_trybot',
+      'gpu-fyi-try-linux-intel-skv': 'gpu_fyi_tests_release_trybot',
       'gpu-fyi-try-linux-nvidia-dbg': 'gpu_fyi_tests_debug_trybot',
       'gpu-fyi-try-linux-nvidia-dqp': 'deqp_release_trybot',
       'gpu-fyi-try-linux-nvidia-exp': 'gpu_fyi_tests_release_trybot',
@@ -763,6 +764,7 @@
       'linux-ozone-rel': 'ozone_linux_release_trybot',
       'linux-rel': 'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange_code_coverage',
       'linux-trusty-rel': 'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange',
+      'linux-viz-rel': 'release_trybot',
       'linux-webkit-msan-rel': 'msan_release_bot',
       'linux_arm': 'release_trybot_arm',
       'linux_chromium_archive_rel_ng': 'release_bot',
@@ -843,20 +845,20 @@
     },
 
     'tryserver.chromium.win': {
-      'gpu-fyi-try-win-xr-builder': 'gpu_fyi_tests_release_trybot_x86',
-      'gpu-fyi-try-win7-amd-dbg': 'gpu_fyi_tests_debug_trybot_x86',
-      'gpu-fyi-try-win7-amd-dqp': 'deqp_release_trybot_x86',
-      'gpu-fyi-try-win7-amd-rel': 'gpu_fyi_tests_release_trybot_x86',
+      'gpu-fyi-try-win-xr-builder-64': 'gpu_fyi_tests_release_trybot',
+      'gpu-fyi-try-win7-amd-dbg-32': 'gpu_fyi_tests_debug_trybot_x86',
+      'gpu-fyi-try-win7-amd-dqp-32': 'deqp_release_trybot_x86',
+      'gpu-fyi-try-win7-amd-rel-32': 'gpu_fyi_tests_release_trybot_x86',
       'gpu-fyi-try-win7-nvidia-dqp-64': 'deqp_release_trybot',
-      'gpu-fyi-try-win7-nvidia-rel': 'gpu_fyi_tests_release_trybot_x86',
+      'gpu-fyi-try-win7-nvidia-rel-32': 'gpu_fyi_tests_release_trybot_x86',
       'gpu-fyi-try-win7-nvidia-rel-64': 'gpu_fyi_tests_release_trybot',
-      'gpu-fyi-try-win10-intel-dqp': 'deqp_release_trybot_x86',
+      'gpu-fyi-try-win10-intel-dqp-64': 'deqp_release_trybot',
       'gpu-fyi-try-win10-intel-exp-64': 'gpu_fyi_tests_release_trybot',
-      'gpu-fyi-try-win10-intel-rel': 'gpu_fyi_tests_release_trybot_x86',
-      'gpu-fyi-try-win10-nvidia-dbg': 'gpu_fyi_tests_debug_trybot_x86',
-      'gpu-fyi-try-win10-nvidia-dqp': 'deqp_release_trybot_x86',
+      'gpu-fyi-try-win10-intel-rel-64': 'gpu_fyi_tests_release_trybot',
+      'gpu-fyi-try-win10-nvidia-dbg-64': 'gpu_fyi_tests_debug_trybot',
+      'gpu-fyi-try-win10-nvidia-dqp-64': 'deqp_release_trybot',
       'gpu-fyi-try-win10-nvidia-exp-64': 'gpu_fyi_tests_release_trybot',
-      'gpu-fyi-try-win10-nvidia-rel': 'gpu_fyi_tests_release_trybot_x86',
+      'gpu-fyi-try-win10-nvidia-rel-64': 'gpu_fyi_tests_release_trybot',
       'gpu-try-win10-nvidia-dbg': 'gpu_tests_debug_trybot_x86',
       'gpu-try-win10-nvidia-rel': 'gpu_tests_release_trybot_x86_resource_whitelisting',
       'win10_chromium_x64_dbg_ng': 'gpu_tests_debug_trybot',
@@ -874,7 +876,7 @@
       'win_chromium_dbg_ng': 'gpu_tests_debug_trybot_x86',
       'win_chromium_x64_rel_ng': 'gpu_tests_release_trybot',
       'win_mojo': 'release_trybot_x86',
-      'win_optional_gpu_tests_rel': 'gpu_fyi_tests_release_trybot_x86',
+      'win_optional_gpu_tests_rel': 'gpu_fyi_tests_release_trybot',
       'win_upload_clang': 'release_bot',
     },
 
@@ -1070,22 +1072,6 @@
       'android', 'jumbo', 'release_bot', 'minimal_symbols',
     ],
 
-    'android_ndk_next_release_bot_minimal_symbols': [
-      'android', 'ndk_next', 'release_bot', 'minimal_symbols', 'strip_debug_info',
-    ],
-
-    'android_ndk_next_release_bot_minimal_symbols_arm64': [
-      'android', 'ndk_next', 'release_bot', 'minimal_symbols', 'arm64', 'strip_debug_info',
-    ],
-
-    'android_ndk_next_release_bot_minimal_symbols_x64': [
-      'android', 'ndk_next', 'release_bot', 'minimal_symbols', 'x64', 'strip_debug_info',
-    ],
-
-    'android_ndk_next_release_bot_minimal_symbols_x86': [
-      'android', 'ndk_next', 'release_bot', 'minimal_symbols', 'x86', 'strip_debug_info',
-    ],
-
     'android_release_bot_minimal_symbols': [
       'android', 'release_bot', 'minimal_symbols',
       'strip_debug_info',
@@ -1101,6 +1087,11 @@
       'strip_debug_info', 'webview_google',
     ],
 
+    'android_release_bot_minimal_symbols_x86': [
+      'android', 'release_bot', 'minimal_symbols', 'x86',
+      'strip_debug_info',
+    ],
+
     'android_release_thumb_bot': [
       'android', 'release_bot', 'arm_thumb',
     ],
@@ -1118,8 +1109,8 @@
       'webview_google',
     ],
 
-    'android_shared_release_bot_x64': [
-      'android_without_codecs', 'shared_release_bot', 'x64', 'dcheck_always_on',
+    'android_release_trybot_x86': [
+      'android', 'release_trybot', 'strip_debug_info', 'x86',
     ],
 
     'android_webview_google_debug_static_bot': [
@@ -1985,7 +1976,7 @@
     },
 
     'cast': {
-      'gn_args': 'is_chromecast=true',
+      'gn_args': 'is_chromecast=true use_v4l2=true',
     },
 
     'cast_audio': {
@@ -2250,12 +2241,6 @@
       'gn_args': 'is_msan=true msan_track_origins=0 use_prebuilt_instrumented_libraries=true',
     },
 
-    'ndk_next': {
-      # GCC is unsupported starting in r13.
-      'mixins': ['clang'],
-      'gn_args': 'android_ndk_version="r13b" android_ndk_major_version=13',
-    },
-
     'no_com_init_hooks': {
       'gn_args': 'com_init_check_hook_disabled=true',
     },
@@ -2291,8 +2276,8 @@
 
     'ozone_linux': {
       'gn_args': ('ozone_auto_platforms=false ozone_platform_wayland=true '
-                  'ozone_platform="x11" '
-                  'ozone_platform_x11=true ozone_platform_gbm=true '
+                  'ozone_platform_headless=true ozone_platform_x11=true '
+                  'ozone_platform_gbm=true '
                   'use_xkbcommon=true use_ozone=true'),
     },
 
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 72938f4..00ef9820 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -1671,6 +1671,15 @@
   </description>
 </action>
 
+<action name="Android.DirectAction.List">
+  <owner>szermatt@chromium.org</owner>
+  <owner>autofill_assistant@google.com</owner>
+  <description>
+    Call to Activity.onListDirectActions made by the system on behalf of the
+    assist app. Available starting with Android Q.
+  </description>
+</action>
+
 <action name="Android.Download.InfoBar.Accelerated">
   <owner>shaktisahu@chromium.org</owner>
   <description>
@@ -14010,6 +14019,14 @@
   </description>
 </action>
 
+<action name="NTPRicherPicker.Backgrounds.DailyRefreshEnabled">
+  <owner>yyushkina@chromium.org</owner>
+  <owner>dbeam@chromium.org</owner>
+  <description>
+    Daily refresh was enabled by clicking 'Done' in the richer picker
+  </description>
+</action>
+
 <action name="NTPRicherPicker.Backgrounds.DefaultDeselected">
   <owner>yyushkina@chromium.org</owner>
   <owner>dbeam@chromium.org</owner>
@@ -14024,6 +14041,14 @@
   <description>'No background' was selected in the richer picker.</description>
 </action>
 
+<action name="NTPRicherPicker.Backgrounds.RefreshToggleClicked">
+  <owner>yyushkina@chromium.org</owner>
+  <owner>dbeam@chromium.org</owner>
+  <description>
+    'Refresh daily' toggle was clicked in the richer picker.
+  </description>
+</action>
+
 <action name="NTPRicherPicker.Backgrounds.UploadCanceled">
   <owner>yyushkina@chromium.org</owner>
   <owner>dbeam@chromium.org</owner>
@@ -21508,6 +21533,11 @@
   <description>Please enter the description of this user action.</description>
 </action>
 
+<action name="Test_Action">
+  <owner>Please list the metric's owners. Add more owner tags as needed.</owner>
+  <description>Please enter the description of the metric.</description>
+</action>
+
 <action name="TextToSpeech.Pause">
   <owner>dmazzoni@chromium.org</owner>
   <description>Synthesized speech is paused.</description>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 8f5f3dbf..3d703d2 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -4985,6 +4985,7 @@
   <int value="216" label="RFH_NO_MATCHING_NAVIGATION_REQUEST_ON_COMMIT"/>
   <int value="217" label="AUTH_INVALID_ICON_URL"/>
   <int value="218" label="MDDH_INVALID_STREAM_SELECTION_INFO"/>
+  <int value="219" label="REGISTER_PROTOCOL_HANDLER_INVALID_URL"/>
 </enum>
 
 <enum name="BadMessageReasonExtensions">
@@ -13459,6 +13460,22 @@
   <int value="2" label="Migration resumed"/>
 </enum>
 
+<enum name="DirectActionId">
+  <int value="0" label="Unknown action"/>
+  <int value="1" label="A direct action not on this enum"/>
+  <int value="2" label="go_back"/>
+  <int value="3" label="reload"/>
+  <int value="4" label="go_forward"/>
+  <int value="5" label="bookmark_this_page"/>
+  <int value="6" label="downloads"/>
+  <int value="7" label="preferences"/>
+  <int value="8" label="open_history"/>
+  <int value="9" label="help"/>
+  <int value="10" label="new_tab"/>
+  <int value="11" label="close_tab"/>
+  <int value="12" label="close_all_tabs"/>
+</enum>
+
 <enum name="DirectCompositionVideoPresentationMode">
   <int value="0" label="Zero copy decode swap chain"/>
   <int value="1" label="Upload and video processor blit"/>
@@ -17713,6 +17730,7 @@
   <int value="577" label="VmManagementCliAllowed"/>
   <int value="578" label="CheckURLsInRealTime"/>
   <int value="579" label="CACertificateManagementAllowed"/>
+  <int value="580" label="PasswordLeakDetectionEnabled"/>
 </enum>
 
 <enum name="EnterprisePolicyInvalidations">
@@ -20233,6 +20251,14 @@
   <int value="1363" label="ACTION_ENABLE"/>
   <int value="1364" label="ACTION_DISABLE"/>
   <int value="1365" label="FILEMANAGERPRIVATEINTERNAL_IMPORTCROSTINIIMAGE"/>
+  <int value="1366" label="AUTOTESTPRIVATE_GETSHELFITEMS"/>
+  <int value="1367" label="MANAGEMENT_INSTALLREPLACEMENTANDROIDAPP"/>
+  <int value="1368" label="MANAGEMENT_CANINSTALLREPLACEMENTANDROIDAPP"/>
+  <int value="1369" label="AUTOTESTPRIVATE_REGISTERCOMPONENT"/>
+  <int value="1370" label="LOGINSCREENSTORAGE_STOREPERSISTENTDATA"/>
+  <int value="1371" label="LOGINSCREENSTORAGE_RETRIEVEPERSISTENTDATA"/>
+  <int value="1372" label="LOGINSCREENSTORAGE_STORECREDENTIALS"/>
+  <int value="1373" label="LOGINSCREENSTORAGE_RETRIEVECREDENTIALS"/>
 </enum>
 
 <enum name="ExtensionIconState">
@@ -20611,7 +20637,7 @@
   <int value="59" label="kEnterprisePlatformKeysPrivate"/>
   <int value="60" label="kDeleted_ExperienceSamplingPrivate"/>
   <int value="61" label="kExperimental"/>
-  <int value="62" label="kExtensionView"/>
+  <int value="62" label="kDeleted_ExtensionView"/>
   <int value="63" label="kExternallyConnectableAllUrls"/>
   <int value="64" label="kFeedbackPrivate"/>
   <int value="65" label="kFileBrowserHandler"/>
@@ -20770,6 +20796,7 @@
   <int value="218" label="kDeclarativeNetRequestFeedback"/>
   <int value="219" label="kTransientBackground"/>
   <int value="220" label="kLogin"/>
+  <int value="221" label="kLoginScreenStorage"/>
 </enum>
 
 <enum name="ExtensionServiceVerifyAllSuccess">
@@ -24230,8 +24257,8 @@
   <int value="2978" label="ToggleEventHandlerDuringParsing"/>
   <int value="2979" label="FragmentDoubleHash"/>
   <int value="2980" label="V8RegExpMatchAllWithNonGlobalRegExp"/>
-  <int value="2981" label="CSSValueOverflowXOverlay"/>
-  <int value="2982" label="CSSValueOverflowYOverlay"/>
+  <int value="2981" label="OBSOLETE_CSSValueOverflowXOverlay"/>
+  <int value="2982" label="OBSOLETE_CSSValueOverflowYOverlay"/>
   <int value="2983" label="ContentIndexAdd"/>
   <int value="2984" label="ContentIndexDelete"/>
   <int value="2985" label="ContentIndexGet"/>
@@ -24242,6 +24269,9 @@
   <int value="2990" label="V8SpeechRecognition_Constructor"/>
   <int value="2991" label="V8SpeechRecognition_Grammars_AttributeGetter"/>
   <int value="2992" label="V8SpeechRecognition_Grammars_AttributeSetter"/>
+  <int value="2993" label="ContactsManagerSelect"/>
+  <int value="2994" label="V8MediaSession_SetPositionState_Method"/>
+  <int value="2995" label="CSSValueOverflowOverlay"/>
 </enum>
 
 <enum name="FeaturePolicyAllowlistType">
@@ -29296,6 +29326,16 @@
   <int value="3" label="GPU"/>
 </enum>
 
+<enum name="HeavyAdStatus">
+  <int value="0" label="Not heavy"/>
+  <int value="1" label="Network">
+    The ad exceeded the network threshold for the Heavy Ad Intervention.
+  </int>
+  <int value="2" label="CPU">
+    The ad exceeded the CPU threshold for the Heavy Ad Intervention.
+  </int>
+</enum>
+
 <enum name="HeavyPageCappingInfoBarInteraction">
   <int value="0" label="InfoBar shown">
     The user was shown the capping heavy pages InfoBar.
@@ -30152,12 +30192,20 @@
 </enum>
 
 <enum name="IDBKeyPathType">
+  <obsolete>
+    Removed August 2019. Was added to measure use of features which not all
+    actively developed browser engines supported. No longer relevant.
+  </obsolete>
   <int value="0" label="None">No key path.</int>
   <int value="1" label="String">Key path is a string.</int>
   <int value="2" label="Array">Key path is an array of strings.</int>
 </enum>
 
 <enum name="IDBKeyType">
+  <obsolete>
+    Removed August 2019. Was added to measure use of features which not all
+    actively developed browser engines supported. No longer relevant.
+  </obsolete>
   <int value="0" label="Invalid">Invalid key.</int>
   <int value="1" label="Array">Key is an array.</int>
   <int value="2" label="Binary">Key is a binary buffer.</int>
@@ -30655,6 +30703,7 @@
   <int value="91" label="FLASH_DEPRECATION_INFOBAR_DELEGATE"/>
   <int value="92" label="SEND_TAB_TO_SELF_INFOBAR_DELEGATE"/>
   <int value="93" label="TAB_SHARING_INFOBAR_DELEGATE"/>
+  <int value="94" label="SAFETY_TIP_INFOBAR_DELEGATE"/>
 </enum>
 
 <enum name="InfoBarResponse">
@@ -34047,6 +34096,7 @@
   <int value="-2123795624" label="ArcSmartTextSelection:enabled"/>
   <int value="-2122048316"
       label="DisplayPersistenceToggleInPermissionPrompts:enabled"/>
+  <int value="-2119958901" label="WebXRAnchors:disabled"/>
   <int value="-2119827860" label="ash-disable-maximize-mode-window-backdrop"/>
   <int value="-2119530966" label="enable-webrtc-dtls12"/>
   <int value="-2119493239" label="enable-app-info-dialog-mac"/>
@@ -34102,6 +34152,7 @@
   <int value="-2058762785"
       label="AllowDownloadResumptionWithoutStrongValidators:disabled"/>
   <int value="-2058656447" label="ContextualSearchUrlActions:enabled"/>
+  <int value="-2056351013" label="AutofillUpdatedCardUnmaskPromptUi:enabled"/>
   <int value="-2054612904" label="BuiltInModuleInfra:enabled"/>
   <int value="-2053860791" label="XGEOVisibleNetworks:enabled"/>
   <int value="-2048927838" label="AutoplayWhitelistSettings:enabled"/>
@@ -34570,6 +34621,7 @@
   <int value="-1446425986" label="ProtectSyncCredentialOnReauth:disabled"/>
   <int value="-1444051091" label="ash-disable-night-light"/>
   <int value="-1443796945" label="OfflinePagesSharing:disabled"/>
+  <int value="-1442753429" label="SystemTrayFeaturePodsPagination:disabled"/>
   <int value="-1441340278" label="NewTabPageIcons:enabled"/>
   <int value="-1440440375" label="WebVrAutopresent:enabled"/>
   <int value="-1440152291" label="disable-gesture-typing"/>
@@ -34902,6 +34954,7 @@
   <int value="-1027124889" label="NtlmV2Enabled:enabled"/>
   <int value="-1022971520" label="enable-search-button-in-omnibox-for-str"/>
   <int value="-1022165708" label="BreakingNewsPush:disabled"/>
+  <int value="-1021097344" label="PolicyAtomicGroup:disabled"/>
   <int value="-1020450980" label="gesture-deletion"/>
   <int value="-1019967332" label="VrBrowsing:enabled"/>
   <int value="-1019492310"
@@ -35012,6 +35065,7 @@
   <int value="-866993841" label="OfflinePagesCTV2:disabled"/>
   <int value="-864266073" label="cros-regions-mode"/>
   <int value="-864234985" label="UseDdljsonApi:enabled"/>
+  <int value="-864232986" label="StartSurfaceAndroid:disabled"/>
   <int value="-864205629" label="enable-offline-load-stale-cache"/>
   <int value="-861678473" label="disable-offer-upload-credit-cards"/>
   <int value="-861343291" label="ChromeHome:disabled"/>
@@ -35023,6 +35077,7 @@
   <int value="-855130893" label="enable-touch-calibration-setting"/>
   <int value="-854716639" label="TranslateAndroidManualTrigger:enabled"/>
   <int value="-853594220" label="disable-new-avatar-menu"/>
+  <int value="-850821337" label="WebContentsForceDark:enabled"/>
   <int value="-848691867" label="DesktopPWAWindowing:enabled"/>
   <int value="-847651283" label="new-password-form-parsing:disabled"/>
   <int value="-847216521" label="ChromeDuplex:enabled"/>
@@ -35164,6 +35219,7 @@
   <int value="-660160292" label="enable-apps-show-on-first-paint"/>
   <int value="-656345197" label="CrossOriginEmbedderPolicy:disabled"/>
   <int value="-654196854" label="PasswordsKeyboardAccessory:enabled"/>
+  <int value="-653616608" label="MacSyscallSandbox:disabled"/>
   <int value="-650504533" label="enable-speculative-launch-service-worker"/>
   <int value="-650213879" label="OmniboxZeroSuggestionsOnNTP:disabled"/>
   <int value="-650176557" label="OfflinePagesSvelteConcurrentLoading:enabled"/>
@@ -35217,6 +35273,7 @@
   <int value="-572012175" label="AssistantEnableStereoAudioInput:disabled"/>
   <int value="-571236436" label="AppManagement:disabled"/>
   <int value="-570889908" label="CCTModuleDexLoading:enabled"/>
+  <int value="-568448085" label="SharedClipboardReceiver:disabled"/>
   <int value="-567920515" label="disable-experimental-hotwording"/>
   <int value="-563980787" label="disable-webrtc"/>
   <int value="-562274241" label="enable-extension-action-redesign"/>
@@ -35310,8 +35367,6 @@
   <int value="-428599163" label="NTPDownloadSuggestions:enabled"/>
   <int value="-426815606" label="HomepageTile:enabled"/>
   <int value="-424701311" label="SignedHTTPExchange:disabled"/>
-  <int value="-424544273"
-      label="enable-experimental-accessibility-chromevox-rich-text-indication"/>
   <int value="-424134004" label="WebPaymentsExperimentalFeatures:disabled"/>
   <int value="-418868128" label="enable-experimental-web-platform-features"/>
   <int value="-416660617" label="EnforceTLS13Downgrade:disabled"/>
@@ -35451,6 +35506,7 @@
   <int value="-234687894"
       label="NonValidatingReloadOnRefreshContentV2:disabled"/>
   <int value="-234231190" label="SharingDeviceRegistration:enabled"/>
+  <int value="-231967261" label="AutofillUpdatedCardUnmaskPromptUi:disabled"/>
   <int value="-231922000" label="enable-renderer-mojo-channel"/>
   <int value="-231426350" label="AutofillEnableToolbarStatusChip:enabled"/>
   <int value="-230824955" label="NTPMostLikelyFaviconsFromServer:enabled"/>
@@ -35739,7 +35795,9 @@
   <int value="161409456" label="AutofillUseMobileLabelDisambiguation:disabled"/>
   <int value="161694478" label="OmniboxNewAnswerLayout:enabled"/>
   <int value="173288154" label="PrintPdfAsImage:enabled"/>
+  <int value="174759256" label="LockScreenMediaControls:enabled"/>
   <int value="178337215" label="enable-md-history"/>
+  <int value="178693406" label="LockScreenMediaControls:disabled"/>
   <int value="180074362" label="memory-pressure-thresholds"/>
   <int value="181150000" label="CrosVmCupsProxy:enabled"/>
   <int value="183208826" label="TabGroups:enabled"/>
@@ -35765,6 +35823,7 @@
   <int value="217455219" label="SyncStandaloneTransport:enabled"/>
   <int value="218890378" label="ManualSaving:disabled"/>
   <int value="219117936" label="AllowReaderForAccessibility:enabled"/>
+  <int value="221212638" label="StartSurfaceAndroid:enabled"/>
   <int value="222184258"
       label="AutofillEnforceMinRequiredFieldsForHeuristics:disabled"/>
   <int value="223591010" label="CastMediaRouteProvider:enabled"/>
@@ -35964,6 +36023,7 @@
       label="AutofillEnforceMinRequiredFieldsForQuery:enabled"/>
   <int value="510814146" label="OfflineBookmarks:enabled"/>
   <int value="511179195" label="ShoppingAssist:disabled"/>
+  <int value="511392922" label="SharedClipboardReceiver:enabled"/>
   <int value="513258875" label="WinrtSensorsImplementation:disabled"/>
   <int value="513356954" label="InstantTethering:disabled"/>
   <int value="513372959" label="ViewsProfileChooser:enabled"/>
@@ -35995,6 +36055,7 @@
   <int value="564522013" label="Av1Decoder:disabled"/>
   <int value="565406673" label="EnableVirtualKeyboardMdUi:enabled"/>
   <int value="567368307" label="enable-experimental-canvas-features"/>
+  <int value="573385109" label="SharedClipboardUI:enabled"/>
   <int value="575380532" label="ExperimentalAccessibilityLabels:disabled"/>
   <int value="575394365" label="AndroidPaymentApps:disabled"/>
   <int value="575829120" label="shelf-hotseat"/>
@@ -36184,6 +36245,7 @@
   <int value="834033186" label="enable-data-reduction-proxy-dev"/>
   <int value="834326277" label="enable-answers-in-suggest"/>
   <int value="835018878" label="disable-quic"/>
+  <int value="835324823" label="ForceDiceMigration:enabled"/>
   <int value="836406476" label="EnableTouchableAppContextMenu:enabled"/>
   <int value="838887742" label="manual-enhanced-bookmarks"/>
   <int value="839798268" label="SafeBrowsingTelemetryForApkDownloads:disabled"/>
@@ -36223,6 +36285,7 @@
   <int value="887011602" label="enable-spelling-auto-correct"/>
   <int value="892899792" label="MaterialDesignIncognitoNTP:disabled"/>
   <int value="900614020" label="ContentSuggestionsShowSummary:disabled"/>
+  <int value="902839593" label="WebContentsForceDark:disabled"/>
   <int value="903267263" label="disable-offline-pages"/>
   <int value="908302031"
       label="OmniboxUIExperimentElideSuggestionUrlAfterHost:enabled"/>
@@ -36239,6 +36302,7 @@
   <int value="926852901" label="DataReductionProxyMainMenu:disabled"/>
   <int value="929462705" label="disable-link-disambiguation-popup"/>
   <int value="934292666" label="DownloadRename:enabled"/>
+  <int value="935364646" label="ForceDiceMigration:disabled"/>
   <int value="935655516" label="password-import-export:disabled"/>
   <int value="936341613" label="OfflinePagesCT:disabled"/>
   <int value="936919953" label="bypass-app-banner-engagement-checks"/>
@@ -36348,6 +36412,7 @@
   <int value="1081546525" label="ash-enable-docked-windows"/>
   <int value="1082054180" label="PersistentWindowBounds:disabled"/>
   <int value="1083201516" label="PersistentWindowBounds:enabled"/>
+  <int value="1084972292" label="WebXRAnchors:enabled"/>
   <int value="1085130793" label="LongPressBackForHistory:disabled"/>
   <int value="1087235172" label="file-manager-enable-new-audio-player"/>
   <int value="1088915385" label="new-password-form-parsing:enabled"/>
@@ -36570,6 +36635,7 @@
   <int value="1373777956" label="disable-threaded-gpu-rasterization"/>
   <int value="1375165388" label="LazyFrameLoading:enabled"/>
   <int value="1376437124" label="show-cert-link"/>
+  <int value="1376535351" label="PrefetchRedirectError:enabled"/>
   <int value="1377056573" label="browser-side-navigation:enabled"/>
   <int value="1378310092" label="disable-suggestions-service"/>
   <int value="1379944457" label="EnableMessagesWebPush:disabled"/>
@@ -36580,6 +36646,7 @@
   <int value="1384614036" label="disable-unified-media-pipeline"/>
   <int value="1386300777"
       label="OmniboxUIExperimentHideSuggestionUrlTrivialSubdomains:disabled"/>
+  <int value="1387356699" label="PolicyAtomicGroup:enabled"/>
   <int value="1389729816" label="data-reduction-proxy-lo-fi"/>
   <int value="1392935139" label="KidsManagementUrlClassification:enabled"/>
   <int value="1393500952" label="EnableVirtualKeyboardUkm:disabled"/>
@@ -36638,6 +36705,7 @@
   <int value="1481562816" label="disable-password-link"/>
   <int value="1482039233" label="SearchSuggestionsOnLocalNtp:disabled"/>
   <int value="1482839038" label="AutofillCreditCardAuthentication:enabled"/>
+  <int value="1483980996" label="MacSyscallSandbox:enabled"/>
   <int value="1486171015" label="disable-fill-on-account-select"/>
   <int value="1486784197" label="MouseSubframeNoImplicitCapture:disabled"/>
   <int value="1487341558" label="MacViewsAutofillPopup:enabled"/>
@@ -36687,6 +36755,7 @@
   <int value="1559034872" label="AutofillPrefilledFields:enabled"/>
   <int value="1560188739" label="reader-mode-heuristics"/>
   <int value="1563255033" label="memlog-stack-mode"/>
+  <int value="1566084951" label="PrefetchRedirectError:disabled"/>
   <int value="1567839560"
       label="ChromeHomePersonalizedOmniboxSuggestions:disabled"/>
   <int value="1571998166" label="DetectingHeavyPages:disabled"/>
@@ -36968,6 +37037,7 @@
   <int value="1957472162"
       label="AutofillUpstreamEditableExpirationDate:disabled"/>
   <int value="1958387645" label="ScanCardsInWebPayments:enabled"/>
+  <int value="1959020463" label="SystemTrayFeaturePodsPagination:enabled"/>
   <int value="1959148757" label="OffMainThreadFetch:enabled"/>
   <int value="1960169775" label="NewPhotoPicker:disabled"/>
   <int value="1961425320" label="force-qtkit"/>
@@ -37044,6 +37114,7 @@
   <int value="2063091429" label="OfflinePagesSharing:enabled"/>
   <int value="2067634730" label="LsdPermissionPrompt:disabled"/>
   <int value="2067735898" label="WebVrAutopresentFromIntent:enabled"/>
+  <int value="2068193488" label="SharedClipboardUI:disabled"/>
   <int value="2069999572"
       label="AllowSignedHTTPExchangeCertsWithoutExtension:disabled"/>
   <int value="2071229145" label="BloatedRendererDetection:enabled"/>
@@ -38933,6 +39004,12 @@
   <int value="1" label="Has errors"/>
 </enum>
 
+<enum name="MediaPlayerWatchTimeType">
+  <int value="0" label="Non-HLS"/>
+  <int value="1" label="HLS audio-only"/>
+  <int value="2" label="HLS video"/>
+</enum>
+
 <enum name="MediaRecorderVEAUsed">
   <int value="0" label="Not used"/>
   <int value="1" label="Used"/>
@@ -39744,6 +39821,22 @@
   </int>
 </enum>
 
+<enum name="MirroringServiceErrorType">
+  <int value="0" label="ANSWER_TIME_OUT"/>
+  <int value="1" label="ANSWER_NOT_OK"/>
+  <int value="2" label="ANSWER_MISMATCHED_CAST_MODE"/>
+  <int value="3" label="ANSWER_MISMATCHED_SSRC_LENGTH"/>
+  <int value="4" label="ANSWER_SELECT_MULTIPLE_AUDIO"/>
+  <int value="5" label="ANSWER_SELECT_MULTIPLE_VIDEO"/>
+  <int value="6" label="ANSWER_SELECT_INVALID_INDEX"/>
+  <int value="7" label="ANSWER_NO_AUDIO_OR_VIDEO"/>
+  <int value="8" label="AUDIO_CAPTURE_ERROR"/>
+  <int value="9" label="VIDEO_CAPTURE_ERROR"/>
+  <int value="10" label="RTP_STREAM_ERROR"/>
+  <int value="11" label="ENCODING_ERROR"/>
+  <int value="12" label="CAST_TRANSPORT_ERROR"/>
+</enum>
+
 <enum name="MissingStartType">
   <int value="0" label="Nothing missing"/>
   <int value="1" label="Start missing"/>
@@ -39799,6 +39892,12 @@
   <int value="4" label="Interrupted"/>
 </enum>
 
+<enum name="MobileDownloadBackgroundTargetDeterminationResult">
+  <int value="0" label="Success"/>
+  <int value="1" label="Target path missing"/>
+  <int value="2" label="Path reservation failed"/>
+</enum>
+
 <enum name="MobileDownloadCancelReason">
   <int value="0" label="Not canceled"/>
   <int value="1" label="Click on the cancel button"/>
@@ -43126,6 +43225,9 @@
 </enum>
 
 <enum name="NTPBackgroundCustomizationAvailability">
+  <obsolete>
+    Removed 2019-08.
+  </obsolete>
   <int value="0" label="Background customization available"/>
   <int value="1" label="Background customization feature unavailable"/>
   <int value="2" label="Background customization unavailable due to theme"/>
@@ -43264,6 +43366,9 @@
 </enum>
 
 <enum name="NTPShortcutCustomizationAvailability">
+  <obsolete>
+    Removed 2019-08.
+  </obsolete>
   <int value="0" label="Shortcut customization available"/>
   <int value="1" label="Shortcut customization feature unavailable"/>
   <int value="2"
@@ -44649,6 +44754,9 @@
     Failed to create a server blacklist because it has more than one
     configuration.
   </int>
+  <int value="5" label="Invalid regular expression">
+    There was an invalid RE2 in the regexps field.
+  </int>
 </enum>
 
 <enum name="OptimizationGuideProcessHintsResult">
@@ -47220,9 +47328,9 @@
   <int value="1" label="Local-Memory Failure"/>
   <int value="2" label="Mapped-File Success"/>
   <int value="3" label="Mapped-File Failure"/>
-  <int value="5" label="Mapped-File Already Exists"/>
-  <int value="6" label="No Spare File"/>
-  <int value="7" label="Could Not Create Upload Directory"/>
+  <int value="4" label="Mapped-File Already Exists"/>
+  <int value="5" label="No Spare File"/>
+  <int value="6" label="Could Not Create Upload Directory"/>
 </enum>
 
 <enum name="PhotoEditorFileType">
@@ -48035,6 +48143,13 @@
   <int value="2" label="Wrong prediction"/>
 </enum>
 
+<enum name="PrefetchRedirect">
+  <int value="0" label="Prefetch request made"/>
+  <int value="1" label="Prefetch request was redirected normally"/>
+  <int value="2"
+      label="Prefetch request was redirected to Signed Exchange handler"/>
+</enum>
+
 <enum name="PrefetchStatus">
   <int value="0" label="undefined"/>
   <int value="1" label="success from cache"/>
@@ -48657,6 +48772,8 @@
              loop was detected"/>
   <int value="10" label="(DEPRECATED IN M74) Disallowed by PreviewsState"/>
   <int value="11" label="The chrome-proxy header is invalid"/>
+  <int value="12" label="The network probe has not completed yet"/>
+  <int value="13" label="The network probe completed and failed"/>
 </enum>
 
 <enum name="PreviewsServerLitePageServerResponse">
@@ -51526,6 +51643,13 @@
   <int value="3" label="Load"/>
 </enum>
 
+<enum name="RevokeTokenAction">
+  <int value="0" label="None"/>
+  <int value="1" label="Invalidate token for primary account"/>
+  <int value="2" label="Revoke token for secondary accounts"/>
+  <int value="3" label="Revoke tokens for primary and secondary accounts"/>
+</enum>
+
 <enum name="Rollback_OobeRestoreResult">
   <int value="0" label="Succeeded"/>
   <int value="1" label="Stage 1 Failure"/>
@@ -51737,6 +51861,27 @@
   <int value="4" label="NOT_SUPPORTED"/>
 </enum>
 
+<enum name="SamlInSessionPasswordChangeEvent">
+  <summary>
+    Track how often we try to guide users through the in-session flow to change
+    their SAML password, and how often they complete the flow.
+  </summary>
+  <int value="0" label="In-session PW-change manager enabled and created."/>
+  <int value="1" label="User notified that password will soon expire."/>
+  <int value="2" label="User notified urgently: password will soon expire."/>
+  <int value="3" label="User notified urgently: password already expired."/>
+  <int value="4" label="User acknowledges and begins change password flow."/>
+  <int value="5" label="SAML password is changed during in-session flow."/>
+  <int value="6" label="Password scraping succeeds during in-session change."/>
+  <int value="7" label="Password scraping partial success - 1 password only."/>
+  <int value="8" label="Password scraping fails - no passwords scraped."/>
+  <int value="9" label="Cryptohome password changed using scraped passwords."/>
+  <int value="10" label="Cryptohome password changed using retyped passwords."/>
+  <int value="11" label="Cryptohome change failed: wrong password scraped."/>
+  <int value="12" label="Cryptohome change failed: wrong password retyped."/>
+  <int value="13" label="In-session change password flow complete."/>
+</enum>
+
 <enum name="SamplingProfilerUnwindResult">
   <summary>Track reason for unwind failures in sampling profiler.</summary>
   <int value="0" label="Futex wait for signal handler failed."/>
@@ -53742,6 +53887,7 @@
   <int value="1" label="Ping"/>
   <int value="2" label="Ack"/>
   <int value="3" label="ClickToCall"/>
+  <int value="4" label="SharedClipboard"/>
 </enum>
 
 <enum name="SharingVapidKeyCreationResult">
@@ -54996,12 +55142,24 @@
   <int value="2" label="Unset"/>
 </enum>
 
+<enum name="SmartLockFindAndConnectToHostResult">
+  <int value="0" label="Found and connected to host"/>
+  <int value="1" label="Canceled, Bluetooth disabled"/>
+  <int value="2" label="Canceled, user entered password"/>
+  <int value="3" label="Connection attempt failure with SecureChannel service"/>
+  <int value="4"
+      label="Timed out (phone is too far, it or its Bluetooth is off, or a
+             connection error occurred)"/>
+</enum>
+
 <enum name="SmartLockGetRemoteStatusResultFailureReason">
-  <int value="0" label="Timed out Bluetooth disabled"/>
-  <int value="1" label="Timed out could not establish authenticated channel"/>
+  <int value="0" label="Canceled, Bluetooth disabled"/>
+  <int value="1"
+      label="(Deprecated) Timed out could not establish authenticated channel"/>
   <int value="2" label="Timed out did not receive remote status update"/>
-  <int value="3" label="User entered password while Bluetooth disabled"/>
-  <int value="4" label="User entered password while connecting"/>
+  <int value="3"
+      label="(Deprecated) User entered password while Bluetooth disabled"/>
+  <int value="4" label="Canceled, user entered password"/>
   <int value="5" label="Authenticated channel dropped"/>
 </enum>
 
@@ -59367,7 +59525,7 @@
   <int value="0" label="Unknown"/>
   <int value="1" label="Ethernet"/>
   <int value="2" label="Wifi"/>
-  <int value="3" label="WiMAX"/>
+  <int value="3" label="WiMAX (Deprecated)"/>
   <int value="4" label="Bluetooth"/>
   <int value="5" label="Cellular"/>
   <int value="6" label="Tethered (Ethernet)"/>
@@ -61033,6 +61191,7 @@
   <int value="0" label="Results do not match"/>
   <int value="1" label="Results match"/>
   <int value="2" label="Results changed"/>
+  <int value="3" label="HitTestData outdated"/>
 </enum>
 
 <enum name="VoiceInteractionEventSource">
@@ -61805,6 +61964,13 @@
   <int value="5" label="Unknown"/>
 </enum>
 
+<enum name="WebPushDeviceState">
+  <int value="0" label="Not idle, not high priority"/>
+  <int value="1" label="Not idle, high priority"/>
+  <int value="2" label="Idle, not high priority"/>
+  <int value="3" label="Idle, high priority"/>
+</enum>
+
 <enum name="WebRequest.RequestHeader">
   <int value="0" label="kNone"/>
   <int value="1" label="kOther"/>
diff --git a/tools/metrics/histograms/expand_owners.py b/tools/metrics/histograms/expand_owners.py
index ab07071..cde9615a 100644
--- a/tools/metrics/histograms/expand_owners.py
+++ b/tools/metrics/histograms/expand_owners.py
@@ -4,7 +4,7 @@
 
 """Functions for extracting email addresses from OWNERS files."""
 
-import histogram_ownership
+import extract_histograms
 import os
 import re
 
@@ -35,13 +35,16 @@
     Error: Raised if the given path is not well-formatted.
   """
   if _IsWellFormattedFilePath(path):
-    # Four '..' are used because calling dirname() yields the path to this
-    # module's directory, histograms, and the chromium directory is up four
+    # Three '..' are used because calling dirname() yields the path to this
+    # module's directory, histograms, and the directory above tools is up three
     # directory levels from the histograms directory.
-    path_to_chromium_directory = [
-        os.path.dirname(__file__), '..', '..', '..', '..']
+    path_to_dir_above_tools = [os.path.dirname(__file__), '..', '..', '..']
+
+    # _SRC is removed because the file system on the machine running the code
+    # may not have an src directory.
+    path_without_src = path[len(_SRC):]
     return os.path.abspath(
-        os.path.join(*(path_to_chromium_directory + path.split('/'))))
+        os.path.join(*(path_to_dir_above_tools + path_without_src.split('/'))))
   else:
     raise Error('The given path {} is not well-formatted.'
                 'Well-formatted paths begin with "src/" and end with "OWNERS"'
@@ -196,7 +199,7 @@
       is_email = email_pattern.match(owner_text)
 
       is_primary_owner = (is_email or
-          owner_text == histogram_ownership.DUMMY_OWNER)
+          owner_text == extract_histograms.OWNER_PLACEHOLDER)
       if index == 0 and not is_primary_owner:
         raise Error('The histogram {} must have a primary owner, i.e. an '
                     'individual\'s email address.'
diff --git a/tools/metrics/histograms/expand_owners_in_histograms_xml_unittest.py b/tools/metrics/histograms/expand_owners_in_histograms_xml_unittest.py
index e200c64..205a3a7 100644
--- a/tools/metrics/histograms/expand_owners_in_histograms_xml_unittest.py
+++ b/tools/metrics/histograms/expand_owners_in_histograms_xml_unittest.py
@@ -11,7 +11,9 @@
 
 class ExpandOwnersInHistogramsXmlTest(unittest.TestCase):
 
-  def testExpandOwners(self):
+  # TODO(caitlinfischer): Figure out what to do with this test after seeing the
+  # results of attempting to submit dummy histograms in crrev.com/c/1737370.
+  def DISABLED_testExpandOwners(self):
     """Checks that no errors are raised when expanding OWNERS files."""
     path = os.path.join(os.path.dirname(__file__), 'histograms.xml')
     with open(path, 'r') as histograms_file:
@@ -33,4 +35,4 @@
 
 
 if __name__ == '__main__':
-    unittest.main()
+    unittest.main()
\ No newline at end of file
diff --git a/tools/metrics/histograms/extract_histograms.py b/tools/metrics/histograms/extract_histograms.py
index c1b91af8..5cb1a726 100644
--- a/tools/metrics/histograms/extract_histograms.py
+++ b/tools/metrics/histograms/extract_histograms.py
@@ -97,7 +97,7 @@
 
 
 def _NormalizeString(s):
-  """Replaces all whitespace sequences with a single space.
+  r"""Replaces all whitespace sequences with a single space.
 
   The function properly handles multi-line strings and XML escaped characters.
 
diff --git a/tools/metrics/histograms/histogram_ownership.py b/tools/metrics/histograms/histogram_ownership.py
index a4eee34..5d7f9cff 100755
--- a/tools/metrics/histograms/histogram_ownership.py
+++ b/tools/metrics/histograms/histogram_ownership.py
@@ -7,6 +7,7 @@
 histograms.
 """
 
+import extract_histograms
 import os
 import sys
 import xml.etree.ElementTree
@@ -14,8 +15,6 @@
 sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
 import path_util
 
-DUMMY_OWNER = "Please list the metric's owners. Add more owner tags as needed."
-
 def main():
   tree = xml.etree.ElementTree.parse(path_util.GetHistogramsFile())
   root = tree.getroot()
@@ -42,7 +41,7 @@
         continue
       if node.tag != 'owner':
         continue
-      if node.text == DUMMY_OWNER:
+      if node.text == extract_histograms.OWNER_PLACEHOLDER:
         continue
       assert '@' in node.text
       owners.append(node.text)
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 1853eed..ed925e9 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -520,6 +520,7 @@
   <owner>jessejames@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
   <owner>alemate@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Delay between login_prompt_visible and Chrome OS OOBE startup sound
     playback. Depends on sound subsystem initialization time.
@@ -718,7 +719,7 @@
 </histogram>
 
 <histogram name="AccountManager.Migrations.Result" enum="BooleanSuccess"
-    expires_after="2019-11-05">
+    expires_after="2020-01-26">
   <owner>sinhak@chromium.org</owner>
   <summary>
     Tracks the final result of migrating accounts to Chrome OS Account Manager.
@@ -727,7 +728,7 @@
 </histogram>
 
 <histogram base="true" name="AccountManager.Migrations.StepResult"
-    enum="BooleanSuccess" expires_after="2019-11-05">
+    enum="BooleanSuccess" expires_after="2020-01-26">
 <!-- Name completed by histogram_suffixes
      name="AccountManagerMigrationSteps" -->
 
@@ -740,7 +741,7 @@
 </histogram>
 
 <histogram name="AccountManager.NumAccounts" units="count"
-    expires_after="2019-11-05">
+    expires_after="2020-01-26">
   <owner>sinhak@chromium.org</owner>
   <summary>
     Tracks the number of accounts stored in Chrome OS Account Manager by a given
@@ -965,7 +966,7 @@
   </summary>
 </histogram>
 
-<histogram name="Ads.Media.BytesReceived" units="KB" expires_after="2019-10-20">
+<histogram name="Ads.Media.BytesReceived" units="KB" expires_after="2020-01-26">
   <owner>johnidel@chromium.org</owner>
   <summary>
     Total number of bytes buffered over the lifetime of a WebMediaPlayer inside
@@ -1112,7 +1113,8 @@
   </summary>
 </histogram>
 
-<histogram name="AnchorElementMetrics.Clicked.AreaRank" units="rank">
+<histogram name="AnchorElementMetrics.Clicked.AreaRank" units="rank"
+    expires_after="2020-02-02">
   <owner>chelu@chromium.org</owner>
   <owner>tbansal@chromium.org</owner>
   <summary>
@@ -1496,7 +1498,7 @@
 </histogram>
 
 <histogram name="Android.Activity.ChromeTabbedActivity.SystemBackAction"
-    enum="AndroidActivitySystemBackAction">
+    enum="AndroidActivitySystemBackAction" expires_after="2020-01-26">
   <owner>twellington@chromium.org</owner>
   <summary>
     What happened when the user hit the system back button in
@@ -1504,7 +1506,8 @@
   </summary>
 </histogram>
 
-<histogram name="Android.AppNotificationStatus" enum="NotificationAppStatus">
+<histogram name="Android.AppNotificationStatus" enum="NotificationAppStatus"
+    expires_after="2020-02-02">
   <owner>peter@chromium.org</owner>
   <summary>
     Records whether notifications are enabled for Chrome, as the Android app,
@@ -1571,12 +1574,45 @@
 </histogram>
 
 <histogram name="Android.BackgroundTaskScheduler.TaskCanceled"
-    enum="BackgroundTaskId">
+    enum="BackgroundTaskId" expires_after="2020-01-26">
   <owner>fgorski@chromium.org</owner>
   <owner>nyquist@chromium.org</owner>
   <summary>Records that a specific background task has been canceled.</summary>
 </histogram>
 
+<histogram name="Android.BackgroundTaskScheduler.TaskCreated.WithExpiration"
+    enum="BackgroundTaskId" expires_after="2020-01-31">
+  <owner>ioanastefan@chromium.org</owner>
+  <owner>nator@chromium.org</owner>
+  <owner>knollr@chromium.org</owner>
+  <summary>
+    Records that a specific task has been created with an expiration deadline.
+    Recorded when the task is scheduled.
+  </summary>
+</histogram>
+
+<histogram name="Android.BackgroundTaskScheduler.TaskCreated.WithoutExpiration"
+    enum="BackgroundTaskId" expires_after="2020-01-31">
+  <owner>ioanastefan@chromium.org</owner>
+  <owner>nator@chromium.org</owner>
+  <owner>knollr@chromium.org</owner>
+  <summary>
+    Records that a specific task has been created without the expiration feature
+    activated. Recorded when the task is scheduled.
+  </summary>
+</histogram>
+
+<histogram name="Android.BackgroundTaskScheduler.TaskExpired"
+    enum="BackgroundTaskId" expires_after="2020-01-31">
+  <owner>ioanastefan@chromium.org</owner>
+  <owner>nator@chromium.org</owner>
+  <owner>knollr@chromium.org</owner>
+  <summary>
+    Records that a specific background task has expired. Recorded before the
+    task is to be started.
+  </summary>
+</histogram>
+
 <histogram name="Android.BackgroundTaskScheduler.TaskLoadedNative"
     enum="BackgroundTaskId" expires_after="2020-01-20">
   <owner>fgorski@chromium.org</owner>
@@ -1606,7 +1642,7 @@
 </histogram>
 
 <histogram name="Android.BackgroundTaskScheduler.TaskScheduled.Failure"
-    enum="BackgroundTaskId">
+    enum="BackgroundTaskId" expires_after="2020-01-26">
   <owner>fgorski@chromium.org</owner>
   <owner>nyquist@chromium.org</owner>
   <summary>
@@ -1615,7 +1651,7 @@
 </histogram>
 
 <histogram name="Android.BackgroundTaskScheduler.TaskScheduled.Success"
-    enum="BackgroundTaskId">
+    enum="BackgroundTaskId" expires_after="2020-01-26">
   <owner>fgorski@chromium.org</owner>
   <owner>nyquist@chromium.org</owner>
   <summary>
@@ -1631,7 +1667,7 @@
 </histogram>
 
 <histogram name="Android.BackgroundTaskScheduler.TaskStopped"
-    enum="BackgroundTaskId">
+    enum="BackgroundTaskId" expires_after="2020-01-26">
   <owner>fgorski@chromium.org</owner>
   <owner>nyquist@chromium.org</owner>
   <summary>
@@ -1992,6 +2028,17 @@
   </summary>
 </histogram>
 
+<histogram name="Android.DirectAction.Perform" enum="DirectActionId"
+    expires_after="M78">
+  <owner>szermatt@chromium.org</owner>
+  <owner>autofill_assistant@google.com</owner>
+  <summary>
+    Counts calls to Activity.onPerformDirectAction made by the system on behalf
+    of the assist app and which action was performed, if any. Available starting
+    with Android Q.
+  </summary>
+</histogram>
+
 <histogram name="Android.Download.InfoBar.CloseButtonClicked"
     enum="DownloadInfoBarState" expires_after="M85">
   <owner>shaktisahu@chromium.org</owner>
@@ -2041,7 +2088,7 @@
 </histogram>
 
 <histogram name="Android.DownloadManager.Filter"
-    enum="AndroidDownloadFilterType">
+    enum="AndroidDownloadFilterType" expires_after="2020-01-26">
   <owner>dtrainor@chromium.org</owner>
   <owner>clank-downloads@google.com</owner>
   <summary>
@@ -2111,7 +2158,7 @@
 </histogram>
 
 <histogram name="Android.DownloadManager.Menu.Action"
-    enum="Android.DownloadManager.Menu.Actions">
+    enum="Android.DownloadManager.Menu.Actions" expires_after="2020-01-26">
   <owner>dtrainor@chromium.org</owner>
   <owner>clank-downloads@google.com</owner>
   <summary>The count of Download Home top level menu actions taken.</summary>
@@ -2195,7 +2242,7 @@
 </histogram>
 
 <histogram name="Android.DownloadManager.OpenSource.Video"
-    enum="AndroidDownloadOpenSource">
+    enum="AndroidDownloadOpenSource" expires_after="2020-02-02">
   <owner>xingliu@chromium.org</owner>
   <owner>clank-downloads@google.com</owner>
   <summary>Records how users open video download files on Android.</summary>
@@ -2670,7 +2717,7 @@
 </histogram>
 
 <histogram base="true" name="Android.MemoryPressureNotification"
-    enum="Android.MemoryPressureNotification">
+    enum="Android.MemoryPressureNotification" expires_after="2020-02-02">
   <owner>ssid@chromium.org</owner>
   <summary>
     Memory pressure notifications sent by Android through ComponentCallbacks2.
@@ -3912,7 +3959,7 @@
 </histogram>
 
 <histogram name="AndroidSms.FcmMessageDispatchFailure"
-    enum="AndroidSmsFcmMessageType">
+    enum="AndroidSmsFcmMessageType" expires_after="2020-02-02">
   <owner>azeemarshad@chromium.org</owner>
   <summary>
     Records message types for which all retry attempts failed when dispatching
@@ -3932,7 +3979,7 @@
 </histogram>
 
 <histogram name="AndroidSms.FcmMessageDispatchSuccess"
-    enum="AndroidSmsFcmMessageType">
+    enum="AndroidSmsFcmMessageType" expires_after="2020-01-26">
   <owner>azeemarshad@chromium.org</owner>
   <summary>
     Records message types for which dispatching to Android Messages for Web
@@ -3942,7 +3989,7 @@
 </histogram>
 
 <histogram name="AndroidSms.MultiDeviceFeatureState"
-    enum="MultiDevice_FeatureState">
+    enum="MultiDevice_FeatureState" expires_after="2020-01-26">
   <owner>jlklein@chromium.org</owner>
   <summary>
     Indicates the feature state of the Messages feature. This metric is emitted
@@ -4386,7 +4433,7 @@
   </summary>
 </histogram>
 
-<histogram name="Apps.AppLaunch" enum="AppLaunch">
+<histogram name="Apps.AppLaunch" enum="AppLaunch" expires_after="2020-02-02">
   <owner>tapted@chromium.org</owner>
   <owner>benwells@chromium.org</owner>
   <summary>
@@ -4643,7 +4690,8 @@
   </summary>
 </histogram>
 
-<histogram name="Apps.AppListHide.InputLatency" units="ms">
+<histogram name="Apps.AppListHide.InputLatency" units="ms"
+    expires_after="2020-02-02">
   <owner>wutao@chromium.org</owner>
   <summary>
     Elapsed time from the input event to hide the launcher UI. This is logged
@@ -4742,7 +4790,7 @@
 </histogram>
 
 <histogram name="Apps.AppListPlayStoreQueryState"
-    enum="AppListPlayStoreQueryState">
+    enum="AppListPlayStoreQueryState" expires_after="2020-01-26">
   <owner>hejq@chromium.org</owner>
   <summary>The state of a Play Store app search request.</summary>
 </histogram>
@@ -4934,7 +4982,8 @@
   </summary>
 </histogram>
 
-<histogram name="Apps.AppListShow.InputLatency" units="ms">
+<histogram name="Apps.AppListShow.InputLatency" units="ms"
+    expires_after="2020-02-02">
   <owner>wutao@chromium.org</owner>
   <summary>
     Elapsed time from the input event to show the launcher UI. This is logged
@@ -5428,7 +5477,8 @@
 </histogram>
 
 <histogram base="true"
-    name="Apps.PaginationTransition.DragScroll.PresentationTime" units="ms">
+    name="Apps.PaginationTransition.DragScroll.PresentationTime" units="ms"
+    expires_after="2020-01-26">
 <!-- Name completed by histogram_suffixes
      name="TabletOrClamshellMode" -->
 
@@ -5444,7 +5494,7 @@
 
 <histogram base="true"
     name="Apps.PaginationTransition.DragScroll.PresentationTime.MaxLatency"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
 <!-- Name completed by histogram_suffixes
      name="TabletOrClamshellMode" -->
 
@@ -5473,7 +5523,7 @@
 </histogram>
 
 <histogram base="true" name="Apps.StateTransition.Drag.PresentationTime"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
 <!-- Name completed by histogram_suffixes
      name="TabletOrClamshellMode" -->
 
@@ -5504,13 +5554,13 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.AndroidBootTime" units="ms">
+<histogram name="Arc.AndroidBootTime" units="ms" expires_after="2020-01-26">
   <owner>elijahtaylor@google.com</owner>
   <owner>shihuis@google.com</owner>
   <summary>The time elapsed for booting up the ARC instance.</summary>
 </histogram>
 
-<histogram name="Arc.AppCount">
+<histogram name="Arc.AppCount" expires_after="2020-01-26">
   <owner>elijahtaylor@google.com</owner>
   <owner>shihuis@google.com</owner>
   <summary>
@@ -5646,7 +5696,8 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.CumulativeUseTime" units="seconds">
+<histogram name="Arc.CumulativeUseTime" units="seconds"
+    expires_after="2020-02-02">
   <owner>elijahtaylor@google.com</owner>
   <owner>shihuis@google.com</owner>
   <summary>
@@ -5712,12 +5763,14 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.CustomTabs.SessionLifetime2.All" units="ms">
+<histogram name="Arc.CustomTabs.SessionLifetime2.All" units="ms"
+    expires_after="2020-01-26">
   <owner>hashimoto@google.com</owner>
   <summary>Lifetime of each session. Recorded when a session ends.</summary>
 </histogram>
 
-<histogram name="Arc.CustomTabs.SessionLifetime2.Closed" units="ms">
+<histogram name="Arc.CustomTabs.SessionLifetime2.Closed" units="ms"
+    expires_after="2020-01-26">
   <owner>hashimoto@google.com</owner>
   <summary>
     Lifetime of each session. Recorded when a session is closed.
@@ -5725,7 +5778,7 @@
 </histogram>
 
 <histogram name="Arc.CustomTabs.SessionLifetime2.ForwardedToNormalTab"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>hashimoto@google.com</owner>
   <summary>
     Lifetime of each session. Recorded when a session ends because the tab was
@@ -5733,7 +5786,8 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.EngagementTime.ArcTotal" units="ms">
+<histogram name="Arc.EngagementTime.ArcTotal" units="ms"
+    expires_after="2020-01-26">
   <owner>maajid@google.com</owner>
   <owner>shaochuan@google.com</owner>
   <owner>shihuis@google.com</owner>
@@ -5746,7 +5800,8 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.EngagementTime.Background" units="ms">
+<histogram name="Arc.EngagementTime.Background" units="ms"
+    expires_after="2020-02-02">
   <owner>maajid@google.com</owner>
   <owner>shaochuan@google.com</owner>
   <owner>shihuis@google.com</owner>
@@ -5757,7 +5812,8 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.EngagementTime.Foreground" units="ms">
+<histogram name="Arc.EngagementTime.Foreground" units="ms"
+    expires_after="2020-01-26">
   <owner>maajid@google.com</owner>
   <owner>shaochuan@google.com</owner>
   <owner>shihuis@google.com</owner>
@@ -5767,7 +5823,8 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.EngagementTime.Total" units="ms">
+<histogram name="Arc.EngagementTime.Total" units="ms"
+    expires_after="2020-01-26">
   <owner>maajid@google.com</owner>
   <owner>shaochuan@google.com</owner>
   <owner>shihuis@google.com</owner>
@@ -5852,7 +5909,8 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.IntentHelper.OpenType" enum="ArcIntentHelperOpenType">
+<histogram name="Arc.IntentHelper.OpenType" enum="ArcIntentHelperOpenType"
+    expires_after="2020-02-02">
   <owner>hashimoto@google.com</owner>
   <owner>shihuis@google.com</owner>
   <summary>
@@ -5923,7 +5981,8 @@
   <summary>The elapsed time since last OOM kill event.</summary>
 </histogram>
 
-<histogram name="Arc.OptInAction" enum="ArcOptInAction">
+<histogram name="Arc.OptInAction" enum="ArcOptInAction"
+    expires_after="2020-01-26">
   <owner>elijahtaylor@google.com</owner>
   <owner>shihuis@google.com</owner>
   <summary>Arc OptIn action taken by user.</summary>
@@ -5935,13 +5994,15 @@
   <summary>Arc OptIn cancelation reason.</summary>
 </histogram>
 
-<histogram name="Arc.OptInResult" enum="ArcOptInResult">
+<histogram name="Arc.OptInResult" enum="ArcOptInResult"
+    expires_after="2020-01-26">
   <owner>elijahtaylor@google.com</owner>
   <owner>khmel@google.com</owner>
   <summary>Arc OptIn flow result.</summary>
 </histogram>
 
-<histogram name="Arc.OptInSilentAuthCode" enum="ArcOptInSilentAuthCode">
+<histogram name="Arc.OptInSilentAuthCode" enum="ArcOptInSilentAuthCode"
+    expires_after="2020-02-02">
   <owner>elijahtaylor@google.com</owner>
   <summary>
     Arc Silent Auth Code status. This status is set during the ARC OptIn flow.
@@ -5997,7 +6058,8 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.PlayStoreSearch.ReturnedAppsTotal" units="apps">
+<histogram name="Arc.PlayStoreSearch.ReturnedAppsTotal" units="apps"
+    expires_after="2020-01-26">
   <owner>hejq@chromium.org</owner>
   <summary>
     The total number of returned apps of a Play Store app discovery query.
@@ -6030,7 +6092,7 @@
 </histogram>
 
 <histogram base="true" name="Arc.Provisioning.Result"
-    enum="ArcProvisioningResult">
+    enum="ArcProvisioningResult" expires_after="2020-02-02">
 <!-- Name completed by histogram_suffixes name="ArcUserTypes" -->
 
   <owner>alexchau@google.com</owner>
@@ -6062,7 +6124,8 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.Reauthorization.Result" enum="ArcProvisioningResult">
+<histogram name="Arc.Reauthorization.Result" enum="ArcProvisioningResult"
+    expires_after="2020-01-26">
 <!-- Name completed by histogram_suffixes name="ArcUserTypes" -->
 
   <owner>khmel@google.com</owner>
@@ -6135,7 +6198,7 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.State" enum="BooleanEnabled">
+<histogram name="Arc.State" enum="BooleanEnabled" expires_after="2020-01-26">
   <owner>elijahtaylor@google.com</owner>
   <owner>shihuis@google.com</owner>
   <summary>
@@ -6196,7 +6259,8 @@
   </summary>
 </histogram>
 
-<histogram name="Arc.UserInteraction" enum="ArcUserInteraction">
+<histogram name="Arc.UserInteraction" enum="ArcUserInteraction"
+    expires_after="2020-01-26">
   <owner>jhorwich@chromium.org</owner>
   <owner>elijahtaylor@chromium.org</owner>
   <owner>shihuis@google.com</owner>
@@ -6448,9 +6512,10 @@
 </histogram>
 
 <histogram name="Ash.Display.PrimaryDisplayZoomAtStartup" units="%"
-    expires_after="M79">
+    expires_after="2019-12-31">
   <owner>jamescook@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-system-services@google.com</owner>
   <summary>
     The display zoom setting for the primary display, recorded on startup.
   </summary>
@@ -6682,6 +6747,7 @@
 <histogram name="Ash.Login.Lock.UserClicks" enum="LockScreenUserClickTarget"
     expires_after="M82">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     The numbers of times that users click on the shelf buttons, trays and lock
     screen note on the ChromeOS lock screen.
@@ -6691,6 +6757,7 @@
 <histogram name="Ash.Login.Login.UserClicks" enum="LoginScreenUserClickTarget"
     expires_after="M82">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     The numbers of times that users click on the shelf buttons and trays on the
     ChromeOS login screen.
@@ -6876,7 +6943,8 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.Shelf.Menu.NumItemsEnabledUponSelection" units="Count">
+<histogram name="Ash.Shelf.Menu.NumItemsEnabledUponSelection" units="Count"
+    expires_after="2020-01-26">
   <owner>bruthig@google.com</owner>
   <owner>tdanderson@google.com</owner>
   <summary>
@@ -6904,7 +6972,8 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.Shelf.NumberOfPinnedItems" units="Icons">
+<histogram name="Ash.Shelf.NumberOfPinnedItems" units="Icons"
+    expires_after="2020-01-26">
   <owner>bruthig@google.com</owner>
   <owner>tdanderson@google.com</owner>
   <summary>
@@ -7111,7 +7180,7 @@
 </histogram>
 
 <histogram base="true" name="Ash.SplitViewResize.PresentationTime.MaxLatency"
-    units="ms">
+    units="ms" expires_after="2020-02-02">
 <!-- Name completed by histogram_suffixes name="SplitViewResizeModes" -->
 
   <owner>omrilio@chromium.org</owner>
@@ -7133,7 +7202,7 @@
 </histogram>
 
 <histogram name="Ash.SwipeDownDrag.Tab.PresentationTime.MaxLatency.TabletMode"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>omrilio@chromium.org</owner>
   <summary>
     Maximum latency of the presentation timestamp while dragging a tab in tablet
@@ -7141,14 +7210,15 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.SwipeDownDrag.Tab.PresentationTime.TabletMode" units="ms">
+<histogram name="Ash.SwipeDownDrag.Tab.PresentationTime.TabletMode" units="ms"
+    expires_after="2020-01-26">
   <owner>omrilio@chromium.org</owner>
   <summary>Presentation time while dragging a tab in tablet mode.</summary>
 </histogram>
 
 <histogram
     name="Ash.SwipeDownDrag.Window.PresentationTime.MaxLatency.TabletMode"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>omrilio@chromium.org</owner>
   <summary>
     Maximum latency of the presentation timestamp while dragging maximized
@@ -7205,7 +7275,8 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.TabletMode.AnimationSmoothness.Enter" units="%">
+<histogram name="Ash.TabletMode.AnimationSmoothness.Enter" units="%"
+    expires_after="2020-01-26">
   <owner>oshima@chromium.org</owner>
   <owner>sammiequon@chromium.org</owner>
   <summary>
@@ -7215,7 +7286,8 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.TabletMode.AnimationSmoothness.Exit" units="%">
+<histogram name="Ash.TabletMode.AnimationSmoothness.Exit" units="%"
+    expires_after="2020-01-26">
   <owner>oshima@chromium.org</owner>
   <owner>sammiequon@chromium.org</owner>
   <summary>
@@ -7345,7 +7417,8 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.TouchView.TouchViewActive" units="ms">
+<histogram name="Ash.TouchView.TouchViewActive" units="ms"
+    expires_after="2020-01-26">
   <owner>girard@chromium.org</owner>
   <summary>
     The length of time that TouchView is active, for each activation.
@@ -7369,7 +7442,8 @@
   <summary>The length of time between TouchView activations.</summary>
 </histogram>
 
-<histogram name="Ash.TouchView.TouchViewInactiveTotal" units="minutes">
+<histogram name="Ash.TouchView.TouchViewInactiveTotal" units="minutes"
+    expires_after="2020-02-02">
   <owner>girard@chromium.org</owner>
   <summary>
     The total time that TouchView is not active during a session.
@@ -7642,7 +7716,7 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.WindowSelector.Items">
+<histogram name="Ash.WindowSelector.Items" expires_after="2020-01-26">
   <owner>flackr@chromium.org</owner>
   <owner>kuscher@google.com</owner>
   <summary>
@@ -7670,7 +7744,8 @@
   </summary>
 </histogram>
 
-<histogram name="Ash.WindowSelector.OverviewClosedItems">
+<histogram name="Ash.WindowSelector.OverviewClosedItems"
+    expires_after="2020-01-26">
   <owner>flackr@chromium.org</owner>
   <summary>
     The number of items closed from the window overview for a single session.
@@ -7780,7 +7855,7 @@
 </histogram>
 
 <histogram name="Assistant.EntryPoint" enum="AssistantEntryPoint"
-    expires_after="2019-11-01">
+    expires_after="2020-01-26">
   <owner>xiaohuic@chromium.org</owner>
   <owner>meilinw@chromium.org</owner>
   <summary>
@@ -7829,7 +7904,7 @@
 </histogram>
 
 <histogram name="Assistant.QueryCountPerEntryPoint" enum="AssistantEntryPoint"
-    expires_after="2019-10-15">
+    expires_after="2020-02-02">
   <owner>xiaohuic@chromium.org</owner>
   <owner>meilinw@chromium.org</owner>
   <summary>Number of queries fired for each entry point.</summary>
@@ -8768,7 +8843,7 @@
 </histogram>
 
 <histogram name="Aura.CreatedGpuBrowserCompositor" enum="CompositorType"
-    expires_after="M77">
+    expires_after="2020-02-02">
   <owner>jbauman@chromium.org</owner>
   <summary>
     Whether the browser compositor uses GPU or the software renderer.
@@ -13455,7 +13530,8 @@
   <summary>Gamma properties of image color space.</summary>
 </histogram>
 
-<histogram base="true" name="Blink.Compositing.LayerPromotionCount">
+<histogram base="true" name="Blink.Compositing.LayerPromotionCount"
+    expires_after="2020-01-26">
   <owner>paint-dev@chromium.org</owner>
   <summary>
     Number of composited layers based on various reasons. Recorded when a page
@@ -13577,7 +13653,7 @@
 </histogram>
 
 <histogram name="Blink.DecodedImage.JpegDensity.100px"
-    units="0.01 bits per pixel">
+    units="0.01 bits per pixel" expires_after="2020-02-02">
   <owner>deymo@google.com</owner>
   <owner>compression-dev@google.com</owner>
   <summary>
@@ -13589,7 +13665,7 @@
 </histogram>
 
 <histogram name="Blink.DecodedImage.JpegDensity.400px"
-    units="0.01 bits per pixel">
+    units="0.01 bits per pixel" expires_after="2020-01-26">
   <owner>deymo@google.com</owner>
   <owner>compression-dev@google.com</owner>
   <summary>
@@ -13606,7 +13682,8 @@
   <summary>Image orientation inferred during decode.</summary>
 </histogram>
 
-<histogram name="Blink.DecodedImage.WebPFileFormat" enum="WebPFileFormat">
+<histogram name="Blink.DecodedImage.WebPFileFormat" enum="WebPFileFormat"
+    expires_after="2020-02-02">
   <owner>mcasas@chromium.org</owner>
   <owner>andrescj@chromium.org</owner>
   <summary>
@@ -13645,7 +13722,8 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.DecodedImageType" enum="DecodedImageType">
+<histogram name="Blink.DecodedImageType" enum="DecodedImageType"
+    expires_after="2020-01-26">
   <owner>urvang@chromium.org</owner>
   <summary>Image codec inferred during decode.</summary>
 </histogram>
@@ -13929,7 +14007,7 @@
 </histogram>
 
 <histogram name="Blink.LazyLoad.CrossOriginFrames.InitialDeferralAction"
-    enum="LazyLoad.FrameInitialDeferralAction">
+    enum="LazyLoad.FrameInitialDeferralAction" expires_after="2020-01-26">
   <owner>sclittle@chromium.org</owner>
   <summary>
     Records the initial lazy loading action taken for a cross-origin iframe.
@@ -13938,7 +14016,7 @@
 
 <histogram
     name="Blink.LazyLoad.CrossOriginFrames.LoadStartedAfterBeingDeferred"
-    enum="NQEEffectiveConnectionType">
+    enum="NQEEffectiveConnectionType" expires_after="2020-02-02">
   <owner>sclittle@chromium.org</owner>
   <summary>
     Records the effective connection type whenever a lazily-loaded iframe that
@@ -13952,7 +14030,7 @@
 </histogram>
 
 <histogram name="Blink.LazyLoad.CrossOriginFrames.VisibleAfterBeingDeferred"
-    enum="NQEEffectiveConnectionType">
+    enum="NQEEffectiveConnectionType" expires_after="2020-02-02">
   <owner>sclittle@chromium.org</owner>
   <summary>
     Records the effective connection type whenever a lazily-loaded iframe that
@@ -13966,6 +14044,7 @@
 
 <histogram base="true" name="Blink.MainFrame.AnimateRatio" units="%"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -13977,6 +14056,7 @@
 
 <histogram base="true" name="Blink.MainFrame.CompositingCommitRatio" units="%"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -13988,6 +14068,7 @@
 
 <histogram base="true" name="Blink.MainFrame.CompositingRatio" units="%"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -13999,6 +14080,7 @@
 
 <histogram base="true" name="Blink.MainFrame.ForcedStyleAndLayoutRatio"
     units="%" expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -14011,6 +14093,7 @@
 
 <histogram base="true" name="Blink.MainFrame.HandleInputEventsRatio" units="%"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -14022,6 +14105,7 @@
 
 <histogram base="true" name="Blink.MainFrame.IntersectionObservationRatio"
     units="%" expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -14033,6 +14117,7 @@
 
 <histogram base="true" name="Blink.MainFrame.PaintRatio" units="%"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -14044,6 +14129,7 @@
 
 <histogram base="true" name="Blink.MainFrame.PrePaintRatio" units="%"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -14055,6 +14141,7 @@
 
 <histogram base="true" name="Blink.MainFrame.ProxyCommitRatio" units="%"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -14064,8 +14151,22 @@
   </summary>
 </histogram>
 
+<histogram base="true" name="Blink.MainFrame.ScrollingCoordinatorRatio"
+    units="%" expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
+  <owner>paint-dev@chromium.org</owner>
+<!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
+
+  <summary>
+    The percentage of the total BeginMainFrame execution time used for the
+    ScrollingCoordinator update in Blink, for each frame that we record.
+    Recorded in ScrollingCoordinator::UpdateAfterPaint.
+  </summary>
+</histogram>
+
 <histogram base="true" name="Blink.MainFrame.StyleAndLayoutRatio" units="%"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -14077,6 +14178,7 @@
 
 <histogram base="true" name="Blink.MainFrame.UpdateLayersRatio" units="%"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="BlinkMainFrameUpdateTimeSuffixes" -->
 
@@ -14088,6 +14190,7 @@
 
 <histogram name="Blink.MainFrame.UpdateTime" units="microseconds"
     expires_after="2020-3-1">
+  <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
   <summary>
     Time between a BeginMainFrame and paint results commit in Blink.
@@ -14150,7 +14253,8 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.OffscreenCanvas.ContextType" enum="CanvasContextType">
+<histogram name="Blink.OffscreenCanvas.ContextType" enum="CanvasContextType"
+    expires_after="2020-02-02">
   <owner>aaronhk@chromium.org</owner>
   <owner>fserb@chromium.org</owner>
   <summary>
@@ -14159,7 +14263,8 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.OffscreenCanvas.NewOffscreenCanvas" enum="Boolean">
+<histogram name="Blink.OffscreenCanvas.NewOffscreenCanvas" enum="Boolean"
+    expires_after="2020-02-02">
   <owner>aaronhk@chromium.org</owner>
   <owner>fserb@chromium.org</owner>
   <summary>
@@ -14320,14 +14425,14 @@
 </histogram>
 
 <histogram name="Blink.ResourceFetcher.StaleWhileRevalidate"
-    enum="BooleanAttempted" expires_after="M77">
+    enum="BooleanAttempted" expires_after="2020-01-26">
   <owner>dtapuska@chromium.org</owner>
   <owner>kenjibaheux@google.com</owner>
   <summary>Count of resources attempted Stale Revalidation.</summary>
 </histogram>
 
 <histogram name="Blink.ResourceFetcher.StaleWhileRevalidateDuration" units="ms"
-    expires_after="M77">
+    expires_after="2020-02-02">
   <owner>dtapuska@chromium.org</owner>
   <owner>kenjibaheux@google.com</owner>
   <summary>Duration of completed stale revalidation attempts.</summary>
@@ -14458,7 +14563,7 @@
 </histogram>
 
 <histogram name="Blink.ResourceLoadScheduler.TrafficBytes.KBPerFrameStatus"
-    enum="RendererSchedulerFrameType2" expires_after="M77">
+    enum="RendererSchedulerFrameType2" expires_after="2020-02-02">
   <owner>toyoshim@chromium.org</owner>
   <owner>altimin@chromium.org</owner>
   <summary>
@@ -14645,6 +14750,17 @@
   <summary>Records the result of a call to the SmsReceiver API.</summary>
 </histogram>
 
+<histogram name="Blink.Sms.Receive.RequestedTimeout" units="ms">
+  <owner>goto@chromium.org</owner>
+  <owner>reillyg@chromium.org</owner>
+  <owner>ayui@chromium.org</owner>
+  <summary>
+    Records the timeout value specified when the API is called regardless of
+    whether or not the call actually timed out. The value of 0 indicates that no
+    value was specified.
+  </summary>
+</histogram>
+
 <histogram name="Blink.Sms.Receive.TimeCancel" units="ms">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
@@ -14675,6 +14791,16 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.Sms.Receive.TimeSmsReceive" units="ms">
+  <owner>goto@chromium.org</owner>
+  <owner>reillyg@chromium.org</owner>
+  <owner>ayui@chromium.org</owner>
+  <summary>
+    Records the duration from when the API is called to when an SMS has been
+    successfully received.
+  </summary>
+</histogram>
+
 <histogram name="Blink.Sms.Receive.TimeSuccess" units="ms">
   <owner>goto@chromium.org</owner>
   <owner>reillyg@chromium.org</owner>
@@ -15093,7 +15219,7 @@
 </histogram>
 
 <histogram name="Blink.VisibleBeforeLoaded.LazyLoadEligibleFrames.BelowTheFold"
-    enum="NQEEffectiveConnectionType">
+    enum="NQEEffectiveConnectionType" expires_after="2020-02-02">
   <owner>sclittle@chromium.org</owner>
   <summary>
     Records the effective connection type whenever a lazyload-eligible (i.e.
@@ -15103,7 +15229,7 @@
 </histogram>
 
 <histogram name="Blink.VisibleBeforeLoaded.LazyLoadImages.AboveTheFold"
-    enum="NQEEffectiveConnectionType">
+    enum="NQEEffectiveConnectionType" expires_after="2020-02-02">
   <owner>sclittle@chromium.org</owner>
   <owner>rajendrant@chromium.org</owner>
   <summary>
@@ -15113,7 +15239,7 @@
 </histogram>
 
 <histogram name="Blink.VisibleBeforeLoaded.LazyLoadImages.BelowTheFold"
-    enum="NQEEffectiveConnectionType">
+    enum="NQEEffectiveConnectionType" expires_after="2020-02-02">
   <owner>sclittle@chromium.org</owner>
   <owner>rajendrant@chromium.org</owner>
   <summary>
@@ -15123,7 +15249,7 @@
 </histogram>
 
 <histogram name="Blink.VisibleLoadTime.LazyLoadEligibleFrames.AboveTheFold"
-    units="ms">
+    units="ms" expires_after="2020-02-02">
   <owner>sclittle@chromium.org</owner>
   <summary>
     Milliseconds spent waiting for an above the fold iframe to load. Only fires
@@ -15133,7 +15259,7 @@
 </histogram>
 
 <histogram name="Blink.VisibleLoadTime.LazyLoadEligibleFrames.BelowTheFold"
-    units="ms">
+    units="ms" expires_after="2020-02-02">
   <owner>sclittle@chromium.org</owner>
   <summary>
     Milliseconds spent waiting for a below the fold iframe to load. Only fires
@@ -15143,7 +15269,7 @@
 </histogram>
 
 <histogram base="true" name="Blink.VisibleLoadTime.LazyLoadImages.AboveTheFold"
-    units="ms">
+    units="ms" expires_after="2020-02-02">
   <owner>rajendrant@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -15155,7 +15281,7 @@
 </histogram>
 
 <histogram base="true" name="Blink.VisibleLoadTime.LazyLoadImages.BelowTheFold"
-    units="ms">
+    units="ms" expires_after="2020-02-02">
   <owner>rajendrant@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -15245,7 +15371,7 @@
   <summary>Duration of time taken to run ThreadState::completeSweep().</summary>
 </histogram>
 
-<histogram name="BlinkGC.GCReason" enum="GCReason">
+<histogram name="BlinkGC.GCReason" enum="GCReason" expires_after="2020-01-26">
   <owner>haraken@chromium.org</owner>
   <summary>A type of Blink GC.</summary>
 </histogram>
@@ -15510,13 +15636,13 @@
   </summary>
 </histogram>
 
-<histogram name="BlinkGC.TimeForMarking" units="ms" expires_after="2020-04-01">
-  <owner>mlippautz@chromium.org</owner>
+<histogram name="BlinkGC.TimeForMarking" units="ms" expires_after="M84">
+  <owner>omerkatz@chromium.org</owner>
   <owner>oilpan-reviews@chromium.org</owner>
   <summary>
-    Sum of all durations of all marking phases (incremental and non-incremental)
-    within one Blink garbage collection cycle. Reported once per garbage
-    collection at the end.
+    Accumulated sum of all durations of individual phases contributing to
+    marking (main thread and background helpers) within one Blink garbage
+    collection. Reported once per garbage collection at the end.
   </summary>
 </histogram>
 
@@ -16412,7 +16538,8 @@
   </summary>
 </histogram>
 
-<histogram name="BlueZ.ResultOfConnection" enum="BlueZResultOfConnection">
+<histogram name="BlueZ.ResultOfConnection" enum="BlueZResultOfConnection"
+    expires_after="2020-02-02">
   <owner>mcchou@chromium.org</owner>
   <summary>
     This is specific to Chrome OS. Records the outcomes of connection requests
@@ -16421,7 +16548,8 @@
   </summary>
 </histogram>
 
-<histogram name="BlueZ.ResultOfPairing" enum="BlueZResultOfPairing">
+<histogram name="BlueZ.ResultOfPairing" enum="BlueZResultOfPairing"
+    expires_after="2020-01-26">
   <owner>mcchou@chromium.org</owner>
   <summary>
     This is specific to Chrome OS. Records the outcomes of pairing with remote
@@ -16530,7 +16658,7 @@
 </histogram>
 
 <histogram name="BookmarkManager.CommandMenuOpened"
-    enum="BookmarkManagerMenuSource">
+    enum="BookmarkManagerMenuSource" expires_after="2020-02-02">
   <owner>calamity@chromium.org</owner>
   <summary>
     Logs where the menu was opened from when a user action opens the command
@@ -16612,12 +16740,13 @@
   </summary>
 </histogram>
 
-<histogram name="Bookmarks.EntryPoint" enum="BookmarksEntryPoint">
+<histogram name="Bookmarks.EntryPoint" enum="BookmarksEntryPoint"
+    expires_after="2020-02-02">
   <owner>ianwen@chromium.org</owner>
   <summary>How users add a new bookmark.</summary>
 </histogram>
 
-<histogram name="Bookmarks.FileSize" units="KB">
+<histogram name="Bookmarks.FileSize" units="KB" expires_after="2020-01-26">
   <owner>mamir@chromium.org</owner>
   <summary>
     The size of the file used to persist bookmarks. It's recorded every time the
@@ -16638,7 +16767,8 @@
   </summary>
 </histogram>
 
-<histogram name="Bookmarks.LaunchLocation" enum="BookmarkLaunchLocation">
+<histogram name="Bookmarks.LaunchLocation" enum="BookmarkLaunchLocation"
+    expires_after="2020-01-26">
   <owner>ianwen@chromium.org</owner>
   <summary>Logs a UI location from which a bookmark is launched.</summary>
 </histogram>
@@ -16669,7 +16799,8 @@
   </summary>
 </histogram>
 
-<histogram name="Bookmarks.OpenBookmarkType" enum="BookmarkType">
+<histogram name="Bookmarks.OpenBookmarkType" enum="BookmarkType"
+    expires_after="2020-01-26">
   <owner>wychen@chromium.org</owner>
   <summary>
     Logs whether the bookmark entry is a user bookmark or a partner bookmark
@@ -16780,7 +16911,7 @@
 </histogram>
 
 <histogram name="Browser.Tabs.SelectionToVisibilityRequestTime"
-    units="microseconds">
+    units="microseconds" expires_after="2020-01-26">
   <owner>sadrul@chromium.org</owner>
   <owner>sky@chromium.org</owner>
   <summary>
@@ -16829,8 +16960,10 @@
   <owner>rhalavati@chromium.org</owner>
   <owner>chrome-privacy-core@google.com</owner>
   <summary>
-    Number of open guest browser windows at the same time. Recorded when a new
-    browser is created.
+    Number of open guest windows at the same time. Recorded when a new guest
+    window is created. Please note that this metric double counts the lower
+    numbers, meaning that if user opens three windows (without closing any in
+    between), then buckets 1, 2, and 3 will all be incremented in turn.
   </summary>
 </histogram>
 
@@ -16838,8 +16971,10 @@
   <owner>rhalavati@chromium.org</owner>
   <owner>chrome-privacy-core@google.com</owner>
   <summary>
-    Number of open incognito browser windows at the same time. Recorded when a
-    new browser is created.
+    Number of open incognito windows at the same time. Recorded when a new
+    incognito window is created. Please note that this metric double counts the
+    lower numbers, meaning that if user opens three windows (without closing any
+    in between), then buckets 1, 2, and 3 will all be incremented in turn.
   </summary>
 </histogram>
 
@@ -16866,7 +17001,7 @@
 </histogram>
 
 <histogram name="BrowserDialogs.ExternalProtocol.HandleState"
-    enum="HandleStateType">
+    enum="HandleStateType" expires_after="2020-01-26">
   <owner>dominickn@chromium.org</owner>
   <owner>meacer@chromium.org</owner>
   <summary>
@@ -17012,7 +17147,8 @@
   </summary>
 </histogram>
 
-<histogram name="BrowserRenderProcessHost.OnChannelError" enum="BooleanHit">
+<histogram name="BrowserRenderProcessHost.OnChannelError" enum="BooleanHit"
+    expires_after="2020-01-26">
   <owner>wfh@chromium.org</owner>
   <summary>
     Number of times BrowserRenderProcessHost::OnChannelError was called.
@@ -17615,6 +17751,7 @@
 <histogram name="CaptivePortal.Notification.Status"
     enum="CaptivePortalNotificationStatus" expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Count of displayed and not displayed due to errors notifications about
     captive portal.
@@ -17624,6 +17761,7 @@
 <histogram name="CaptivePortal.Notification.UserAction"
     enum="CaptivePortalNotificationUserAction" expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Count of clicked, closed and ignored captive portal notifications.
   </summary>
@@ -17632,6 +17770,7 @@
 <histogram name="CaptivePortal.OOBE.DetectionDuration" units="ms"
     expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Duration of the captive portal detection process for a particular network at
     OOBE. Detection duration is recorded each time portal detection is completed
@@ -17642,6 +17781,7 @@
 <histogram name="CaptivePortal.OOBE.DetectionResult" enum="CaptivePortalStatus"
     expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     The result of captive portal detection attempts performed at OOBE. Detection
     result is recorded when portal detection is completed for an active network
@@ -17652,6 +17792,7 @@
 <histogram name="CaptivePortal.OOBE.DiscrepancyWithShill"
     expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     The result of captive portal detection attempts at OOBE if it diverges from
     network manager results. Detection result is recorded each time portal
@@ -17662,6 +17803,7 @@
 <histogram name="CaptivePortal.OOBE.PortalToOnlineTransition" units="ms"
     expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Number of milliseconds passed between consecutive reports for the same
     network about portal and online states.
@@ -17671,6 +17813,7 @@
 <histogram name="CaptivePortal.RedirectTime" units="ms"
     expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Number of milliseconds between start of request to gstatic.com/generate_204
     and receipt of response with redirect to captive portal login page.
@@ -17680,6 +17823,7 @@
 <histogram name="CaptivePortal.Session.DetectionDuration" units="ms"
     expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Duration of the captive portal detection process for a particular network in
     user session. Detection duration is recorded each time portal detection is
@@ -17691,6 +17835,7 @@
     enum="CaptivePortalStatus" expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
   <owner>michaeldo@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     The result of captive portal detection attempts performed in user session.
     Detection result is recorded when portal detection is completed for an
@@ -17702,6 +17847,7 @@
 <histogram name="CaptivePortal.Session.DiscrepancyWithShill"
     enum="CaptivePortalStatus" expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     The result of captive portal detection attempts in session if it diverges
     from network manager results. Detection result is recorded each time portal
@@ -17712,6 +17858,7 @@
 <histogram name="CaptivePortal.Session.PortalToOnlineTransition" units="ms"
     expires_after="2020-02-01">
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Number of milliseconds passed between consecutive reports for the same
     network about portal and online states.
@@ -18114,7 +18261,7 @@
 </histogram>
 
 <histogram name="ChildProcess.Crashed.UtilityProcessHash"
-    enum="UtilityProcessNameHash">
+    enum="UtilityProcessNameHash" expires_after="2020-01-26">
   <owner>wfh@chromium.org</owner>
   <summary>
     Count of child utility process crashes, bucketed by the hash of their
@@ -18795,7 +18942,7 @@
 </histogram>
 
 <histogram name="ChromeOS.Apps.ExternalProtocolDialog"
-    enum="ArcIntentHandlerAction" expires_after="2019-09-17">
+    enum="ArcIntentHandlerAction" expires_after="M82">
   <owner>dominickn@chromium.org</owner>
   <owner>melzhang@chromium.org</owner>
   <owner>mxcai@chromium.org</owner>
@@ -18806,7 +18953,7 @@
 </histogram>
 
 <histogram name="ChromeOS.Apps.ExternalProtocolDialog.Accepted"
-    enum="ArcExternalProtocolAction" expires_after="2019-09-17">
+    enum="ArcExternalProtocolAction" expires_after="M82">
   <owner>dominickn@chromium.org</owner>
   <owner>melzhang@chromium.org</owner>
   <owner>mxcai@chromium.org</owner>
@@ -18818,7 +18965,7 @@
 </histogram>
 
 <histogram name="ChromeOS.Apps.ExternalProtocolDialog.Rejected"
-    enum="ArcExternalProtocolAction" expires_after="2019-09-17">
+    enum="ArcExternalProtocolAction" expires_after="M82">
   <owner>dominickn@chromium.org</owner>
   <owner>melzhang@chromium.org</owner>
   <owner>mxcai@chromium.org</owner>
@@ -18829,7 +18976,7 @@
 </histogram>
 
 <histogram name="ChromeOS.Apps.IntentPickerAction"
-    enum="ArcIntentHandlerAction">
+    enum="ArcIntentHandlerAction" expires_after="2020-01-26">
   <owner>elijahtaylor@google.com</owner>
   <owner>dominickn@chromium.org</owner>
   <owner>shihuis@google.com</owner>
@@ -18946,7 +19093,7 @@
 </histogram>
 
 <histogram name="ChromeOS.CWP.CollectPerf"
-    enum="ChromeOSProfileCollectionStatus">
+    enum="ChromeOSProfileCollectionStatus" expires_after="2020-01-26">
   <owner>aalexand@google.com</owner>
   <owner>gmx@chromium.org</owner>
   <summary>
@@ -19075,7 +19222,8 @@
   </summary>
 </histogram>
 
-<histogram name="ChromeOS.MemoryPressureLevel" enum="MemoryPressureLevel">
+<histogram name="ChromeOS.MemoryPressureLevel" enum="MemoryPressureLevel"
+    expires_after="2020-01-26">
   <owner>xdai@chromium.org</owner>
   <summary>
     The memory pressure level in Chrome OS, which is recorded periodically (once
@@ -19138,6 +19286,16 @@
   </summary>
 </histogram>
 
+<histogram name="ChromeOS.SAML.InSessionPasswordChangeEvent"
+    enum="SamlInSessionPasswordChangeEvent" expires_after="M83">
+  <owner>olsen@chromium.org</owner>
+  <owner>rsorokin@chromium.org</owner>
+  <summary>
+    Records how often users are guided through the SAML in-session password
+    change flow, and how often it is completed succesfully.
+  </summary>
+</histogram>
+
 <histogram name="ChromeOS.SAML.Scraping.PasswordCount" expires_after="M77">
   <owner>bartfab@chromium.org</owner>
   <summary>
@@ -20227,7 +20385,7 @@
 </histogram>
 
 <histogram name="Compositing.DirectRenderer.GL.DrawFrameUs"
-    units="microseconds">
+    units="microseconds" expires_after="2020-01-26">
   <owner>weiliangc@chromium.org</owner>
   <summary>
     Time spent drawing of composited layers by GLRenderer, in microseconds. This
@@ -21352,7 +21510,8 @@
   <summary>The default autoplay setting at profile open.</summary>
 </histogram>
 
-<histogram name="ContentSettings.DefaultCookiesSetting" enum="ContentSetting">
+<histogram name="ContentSettings.DefaultCookiesSetting" enum="ContentSetting"
+    expires_after="2020-01-26">
   <owner>toyoshim@chromium.org</owner>
   <summary>The default cookies setting at profile open.</summary>
 </histogram>
@@ -21436,7 +21595,7 @@
 </histogram>
 
 <histogram name="ContentSettings.DefaultNotificationsSetting"
-    enum="ContentSetting">
+    enum="ContentSetting" expires_after="2020-01-26">
   <owner>toyoshim@chromium.org</owner>
   <summary>The default notification setting at profile open.</summary>
 </histogram>
@@ -22135,7 +22294,7 @@
 </histogram>
 
 <histogram name="ContentSuggestions.Feed.Network.RequestStatusCode"
-    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2019-10-01">
+    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2020-02-02">
   <owner>pnoland@chromium.org</owner>
   <summary>
     Android: The integer status code of network requests made by the feed
@@ -22223,7 +22382,7 @@
 </histogram>
 
 <histogram name="ContentSuggestions.Feed.PagePopulatingTime" units="ms"
-    expires_after="2019-12-01">
+    expires_after="2020-01-26">
   <owner>gangwu@chromium.org</owner>
   <owner>fgorski@chromium.org</owner>
   <summary>
@@ -22306,7 +22465,7 @@
 </histogram>
 
 <histogram name="ContentSuggestions.Feed.Scheduler.RefreshTrigger"
-    enum="RefreshTrigger" expires_after="2019-10-01">
+    enum="RefreshTrigger" expires_after="2020-02-02">
   <owner>skym@chromium.org</owner>
   <summary>
     The scheduler watches for various triggers, which cause it to decide if a
@@ -22687,7 +22846,8 @@
   </summary>
 </histogram>
 
-<histogram name="ContextMenu.Shown" enum="BooleanPresent">
+<histogram name="ContextMenu.Shown" enum="BooleanPresent"
+    expires_after="2020-01-26">
   <owner>mpearson@chromium.org</owner>
   <summary>
     Recorded when a context menu is shown, sliced by whether a web contents was
@@ -22990,7 +23150,8 @@
   <summary>Intervals between access time updates for each cookie.</summary>
 </histogram>
 
-<histogram name="Cookie.CommitProblem" enum="CookieCommitProblem">
+<histogram name="Cookie.CommitProblem" enum="CookieCommitProblem"
+    expires_after="2020-01-26">
   <owner>morlovich@chromium.org</owner>
   <summary>
     Recorded when a problem occurs trying to commit changes to the cookie store
@@ -23056,7 +23217,7 @@
   </summary>
 </histogram>
 
-<histogram name="Cookie.CorruptMetaTable">
+<histogram name="Cookie.CorruptMetaTable" expires_after="2020-01-26">
   <owner>tnagel@chromium.org</owner>
   <summary>
     Records the detection of a corrupted meta table. See http://crbug.com/111376
@@ -23173,7 +23334,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cookie.LoadProblem" enum="CookieLoadProblem">
+<histogram name="Cookie.LoadProblem" enum="CookieLoadProblem"
+    expires_after="2020-01-26">
   <owner>morlovich@chromium.org</owner>
   <summary>
     Recorded when a problem is recorded when loading the persistent cookie
@@ -23350,7 +23512,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cookie.TimeDatabaseMigrationToV10" units="ms">
+<histogram name="Cookie.TimeDatabaseMigrationToV10" units="ms"
+    expires_after="2020-02-02">
   <owner>pwnall@chromium.org</owner>
   <summary>
     The amount of time (ms) to migrate a v9 cookie database to v10.
@@ -23969,7 +24132,7 @@
   </summary>
 </histogram>
 
-<histogram name="Cras.StreamFlags" units="value">
+<histogram name="Cras.StreamFlags" units="value" expires_after="2020-01-26">
   <owner>yuhsuan@chromium.org</owner>
   <owner>chromeos-audio@google.com</owner>
   <summary>
@@ -23996,7 +24159,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cras.StreamTimeoutMilliSeconds" units="ms">
+<histogram name="Cras.StreamTimeoutMilliSeconds" units="ms"
+    expires_after="2020-02-02">
   <owner>hychao@chromium.org</owner>
   <owner>chromeos-audio@google.com</owner>
   <summary>
@@ -24007,7 +24171,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cras.UnderrunsPerDevice" units="count">
+<histogram name="Cras.UnderrunsPerDevice" units="count"
+    expires_after="2020-01-26">
   <owner>yuhsuan@chromium.org</owner>
   <owner>chromeos-audio@google.com</owner>
   <summary>
@@ -24028,7 +24193,8 @@
   </summary>
 </histogram>
 
-<histogram name="CrashExitCodes.Renderer" enum="CrashExitCodes">
+<histogram name="CrashExitCodes.Renderer" enum="CrashExitCodes"
+    expires_after="2020-01-26">
   <owner>wfh@chromium.org</owner>
   <summary>
     The exit codes for crashed renderer processes. Note: Due to
@@ -24220,7 +24386,8 @@
   </summary>
 </histogram>
 
-<histogram name="CrosDisks.FilesystemType" enum="CrosDisksFilesystemType">
+<histogram name="CrosDisks.FilesystemType" enum="CrosDisksFilesystemType"
+    expires_after="2020-02-02">
   <owner>benchan@chromium.org</owner>
   <summary>
     The type of file system that Chrome OS cros-disks daemon is requested to
@@ -24247,7 +24414,7 @@
 </histogram>
 
 <histogram name="CrosDisksClient.MountCompletedError"
-    enum="CrosDisksClientMountError">
+    enum="CrosDisksClientMountError" expires_after="2020-02-02">
   <owner>amistry@chromium.org</owner>
   <summary>
     The error code of disk mount signals received from the Chrome OS cros-disks
@@ -24256,7 +24423,7 @@
 </histogram>
 
 <histogram name="CrosDisksClient.MountErrorMountType"
-    enum="CrosDisksMountTypeError">
+    enum="CrosDisksMountTypeError" expires_after="2020-02-02">
   <owner>amistry@chromium.org</owner>
   <summary>
     The {mount type}x{mount error code} received from the Chrome OS cros-disks
@@ -24626,6 +24793,61 @@
   </summary>
 </histogram>
 
+<histogram name="CryptAuth.EnrollmentV2.ExecutionTime.ClientAppMetadataFetch"
+    units="ms" expires_after="2020-06-01">
+  <owner>nohle@chromium.org</owner>
+  <owner>better-together-dev@google.com</owner>
+  <summary>
+    Records the execution time of the async ClientAppMetadata retrieval during
+    the CryptAuth v2 Enrollment flow. Recorded when the async callback is
+    invoked or when the call times out.
+  </summary>
+</histogram>
+
+<histogram name="CryptAuth.EnrollmentV2.ExecutionTime.EnrollKeys" units="ms"
+    expires_after="2020-06-01">
+  <owner>nohle@chromium.org</owner>
+  <owner>better-together-dev@google.com</owner>
+  <summary>
+    Records the execution time of the async EnrollKeys API call to CryptAuth
+    during the CryptAuth v2 Enrollment flow. Recorded when the async callback is
+    invoked or when the call times out.
+  </summary>
+</histogram>
+
+<histogram name="CryptAuth.EnrollmentV2.ExecutionTime.GcmRegistration"
+    units="ms" expires_after="2020-06-01">
+  <owner>nohle@chromium.org</owner>
+  <owner>better-together-dev@google.com</owner>
+  <summary>
+    Records the execution time of the async GCM registration call during the
+    CryptAuth v2 Enrollment flow. Recorded when the async callback is invoked or
+    when the call times out.
+  </summary>
+</histogram>
+
+<histogram name="CryptAuth.EnrollmentV2.ExecutionTime.KeyCreation" units="ms"
+    expires_after="2020-06-01">
+  <owner>nohle@chromium.org</owner>
+  <owner>better-together-dev@google.com</owner>
+  <summary>
+    Records the execution time of the async key creation call during the
+    CryptAuth v2 Enrollment flow. Recorded when the async callback is invoked or
+    when the call times out.
+  </summary>
+</histogram>
+
+<histogram name="CryptAuth.EnrollmentV2.ExecutionTime.SyncKeys" units="ms"
+    expires_after="2020-06-01">
+  <owner>nohle@chromium.org</owner>
+  <owner>better-together-dev@google.com</owner>
+  <summary>
+    Records the execution time of the async SyncKeys API call to CryptAuth
+    during the CryptAuth v2 Enrollment flow. Recorded when the async callback is
+    invoked or when the call times out.
+  </summary>
+</histogram>
+
 <histogram name="CryptAuth.EnrollmentV2.InvocationReason"
     enum="CryptAuthV2EnrollmentInvocationReason" expires_after="2020-06-01">
   <owner>nohle@chromium.org</owner>
@@ -24892,7 +25114,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cryptohome.HomedirEncryptionType" enum="HomedirEncryptionType">
+<histogram name="Cryptohome.HomedirEncryptionType" enum="HomedirEncryptionType"
+    expires_after="2020-01-26">
   <owner>dspaid@chromium.org</owner>
   <summary>
     The encryption type used for a user's cryptohome directory. This is logged
@@ -24919,6 +25142,7 @@
     enum="CryptohomeMigrationToGaiaId" expires_after="M97">
   <owner>alemate@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     This is the status of cryptohome migration to GaiaId. Every time user logs
     in current migration status is recorded.
@@ -25067,7 +25291,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cryptohome.TimeToTakeTpmOwnership" units="ms">
+<histogram name="Cryptohome.TimeToTakeTpmOwnership" units="ms"
+    expires_after="2020-02-02">
   <owner>apronin@chromium.org</owner>
   <owner>cros-hwsec+uma@chromium.org</owner>
   <summary>
@@ -25076,7 +25301,8 @@
   </summary>
 </histogram>
 
-<histogram name="Cryptohome.TpmResults" enum="CryptohomeTpmResults">
+<histogram name="Cryptohome.TpmResults" enum="CryptohomeTpmResults"
+    expires_after="2020-01-26">
   <owner>afakhry@chromium.org</owner>
   <summary>
     The errors resulting from interacting with the Trusted Platform Module (TPM)
@@ -25093,7 +25319,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="CustomTab.SessionDuration" units="ms">
+<histogram base="true" name="CustomTab.SessionDuration" units="ms"
+    expires_after="2020-01-26">
   <owner>ranj@chromium.org</owner>
   <owner>yfriedman@chromium.org</owner>
 <!-- Name completed by histogram_suffixes name="CustomTabOpenSource" -->
@@ -25159,7 +25386,7 @@
 </histogram>
 
 <histogram base="true" name="CustomTabs.DetachedResourceRequest.RedirectsCount"
-    units="redirects">
+    units="redirects" expires_after="2020-01-26">
   <owner>lizeb@chromium.org</owner>
   <summary>
     Number of redirects followed by a detached resource request until success or
@@ -25168,7 +25395,7 @@
 </histogram>
 
 <histogram name="CustomTabs.DynamicModule.CreateActivityDelegateTime"
-    units="ms" expires_after="2019-11-01">
+    units="ms" expires_after="2020-01-26">
   <owner>mvanouwerkerk@chromium.org</owner>
   <summary>
     Time to create an activity delegate for a custom tabs dynamic module.
@@ -25177,7 +25404,7 @@
 </histogram>
 
 <histogram name="CustomTabs.DynamicModule.CreatePackageContextTime" units="ms"
-    expires_after="2019-11-01">
+    expires_after="2020-01-26">
   <owner>mvanouwerkerk@chromium.org</owner>
   <summary>
     Time to create the package context for a custom tabs dynamic module. Android
@@ -25186,7 +25413,7 @@
 </histogram>
 
 <histogram name="CustomTabs.DynamicModule.DestructionReason"
-    enum="CustomTabsDynamicModuleDestructionReason" expires_after="2019-11-01">
+    enum="CustomTabsDynamicModuleDestructionReason" expires_after="2020-01-26">
   <owner>mvanouwerkerk@chromium.org</owner>
   <summary>
     Possible reasons for destroying a custom tabs dynamic module. Android only.
@@ -25204,7 +25431,7 @@
 </histogram>
 
 <histogram name="CustomTabs.DynamicModule.EntryPointLoadClassTime" units="ms"
-    expires_after="2019-11-01">
+    expires_after="2020-01-26">
   <owner>mvanouwerkerk@chromium.org</owner>
   <summary>
     Time to load the entry point class for a custom tabs dynamic module. Android
@@ -25213,7 +25440,7 @@
 </histogram>
 
 <histogram name="CustomTabs.DynamicModule.EntryPointNewInstanceTime" units="ms"
-    expires_after="2019-11-01">
+    expires_after="2020-01-26">
   <owner>mvanouwerkerk@chromium.org</owner>
   <summary>
     Time to instantiate the entry point class for a custom tabs dynamic module.
@@ -25222,7 +25449,7 @@
 </histogram>
 
 <histogram name="CustomTabs.DynamicModule.LoadResult"
-    enum="CustomTabsDynamicModuleLoadResult" expires_after="2019-11-01">
+    enum="CustomTabsDynamicModuleLoadResult" expires_after="2020-01-26">
   <owner>mvanouwerkerk@chromium.org</owner>
   <summary>
     Possible results when loading a custom tabs dynamic module. Android only.
@@ -25252,7 +25479,7 @@
 </histogram>
 
 <histogram name="CustomTabs.DynamicModule.ResidentSet.OnModuleDestroy"
-    units="KB" expires_after="2019-11-01">
+    units="KB" expires_after="2020-01-26">
   <owner>msalama@google.com</owner>
   <owner>lizeb@chromium.org</owner>
   <owner>mvanouwerkerk@chromium.org</owner>
@@ -25263,7 +25490,7 @@
 </histogram>
 
 <histogram name="CustomTabs.DynamicModule.ResidentSet.OnModuleLoad" units="KB"
-    expires_after="2019-11-01">
+    expires_after="2020-01-26">
   <owner>msalama@google.com</owner>
   <owner>lizeb@chromium.org</owner>
   <owner>mvanouwerkerk@chromium.org</owner>
@@ -25351,7 +25578,7 @@
 </histogram>
 
 <histogram name="CustomTabs.ParallelRequestStatusOnStart"
-    enum="CustomTabsParallelRequestStatusOnStart">
+    enum="CustomTabsParallelRequestStatusOnStart" expires_after="2020-01-26">
   <owner>lizeb@chromium.org</owner>
   <summary>
     Recorded only on Android. Whether a parallel request was requested by the
@@ -25427,7 +25654,7 @@
 </histogram>
 
 <histogram name="CustomTabs.SpeculationStatusOnStart"
-    enum="CustomTabsSpeculationStatusOnStart">
+    enum="CustomTabsSpeculationStatusOnStart" expires_after="2020-01-26">
   <owner>mattcary@chromium.org</owner>
   <summary>
     Recorded only for Android. How a speculation was started or why it was
@@ -25442,7 +25669,7 @@
 </histogram>
 
 <histogram name="CustomTabs.SpeculationStatusOnSwap"
-    enum="CustomTabsSpeculationStatusOnSwap">
+    enum="CustomTabsSpeculationStatusOnSwap" expires_after="2020-01-26">
   <owner>mattcary@chromium.org</owner>
   <summary>
     Recorded only for Android. Recorded when a speculation is requesting to swap
@@ -25450,7 +25677,8 @@
   </summary>
 </histogram>
 
-<histogram name="CustomTabs.Visible" enum="VisibleTab" expires_after="M77">
+<histogram name="CustomTabs.Visible" enum="VisibleTab"
+    expires_after="2020-01-26">
   <owner>yusufo@chromium.org</owner>
   <summary>
     Recorded only for Android. Records on every metrics upload whether the
@@ -31387,7 +31615,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="Download.DownloadSize" units="KB">
+<histogram base="true" name="Download.DownloadSize" units="KB"
+    expires_after="2020-01-26">
 <!-- Name completed by histogram_suffixes name="Download.Parallelizable" -->
 
   <owner>dtrainor@chromium.org</owner>
@@ -31828,7 +32057,7 @@
 </histogram>
 
 <histogram name="Download.MapErrorNetworkFailed.NetworkService"
-    enum="NetErrorCodes" expires_after="M78">
+    enum="NetErrorCodes" expires_after="2020-01-26">
   <owner>dtrainor@chromium.org</owner>
   <owner>qinmin@chromium.org</owner>
   <summary>
@@ -31993,7 +32222,7 @@
 </histogram>
 
 <histogram name="Download.ParallelDownload.CreationEvent"
-    enum="ParallelDownloadCreationEvent">
+    enum="ParallelDownloadCreationEvent" expires_after="2020-01-26">
   <owner>xingliu@chromium.org</owner>
   <summary>
     When parallel downloading feature is enabled, a download may be created as
@@ -33293,7 +33522,8 @@
   </summary>
 </histogram>
 
-<histogram name="EasyUnlock.AuthEvent.SignIn" enum="EasyUnlockAuthEvent">
+<histogram name="EasyUnlock.AuthEvent.SignIn" enum="EasyUnlockAuthEvent"
+    expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <summary>
     Measures the use of Smart Lock on the sign-in screen: records whether a
@@ -33312,7 +33542,8 @@
   </summary>
 </histogram>
 
-<histogram name="EasyUnlock.AuthEvent.Unlock" enum="EasyUnlockAuthEvent">
+<histogram name="EasyUnlock.AuthEvent.Unlock" enum="EasyUnlockAuthEvent"
+    expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <summary>
     Measures the use of Smart Lock on the lock screen: records whether a Smart
@@ -34970,7 +35201,8 @@
   </summary>
 </histogram>
 
-<histogram name="EnterpriseCheck.IsManaged" enum="BooleanEnabled">
+<histogram name="EnterpriseCheck.IsManaged" enum="BooleanEnabled"
+    expires_after="2020-02-02">
   <owner>rogerta@chromium.org</owner>
   <summary>
     Whether the machine is managed via MDM. This check is performed once at
@@ -35460,7 +35692,7 @@
   </summary>
 </histogram>
 
-<histogram name="Event.HitTest" enum="EventHitTest">
+<histogram name="Event.HitTest" enum="EventHitTest" expires_after="2020-01-26">
   <owner>dtapuska@chromium.org</owner>
   <summary>
     For each hit test, records whether it was a hit or miss, and why.
@@ -35592,7 +35824,8 @@
   </summary>
 </histogram>
 
-<histogram name="Event.Latency.BlockingTime.TouchEndDefaultAllowed" units="ms">
+<histogram name="Event.Latency.BlockingTime.TouchEndDefaultAllowed" units="ms"
+    expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between the renderer main thread receiving a touchend event and acking
@@ -35603,7 +35836,7 @@
 </histogram>
 
 <histogram name="Event.Latency.BlockingTime.TouchEndDefaultPrevented"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between the renderer main thread receiving a touchend event and acking
@@ -35613,7 +35846,8 @@
   </summary>
 </histogram>
 
-<histogram name="Event.Latency.BlockingTime.TouchMoveDefaultAllowed" units="ms">
+<histogram name="Event.Latency.BlockingTime.TouchMoveDefaultAllowed" units="ms"
+    expires_after="2020-02-02">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between the renderer main thread receiving a touchmove event and acking
@@ -35635,7 +35869,7 @@
 </histogram>
 
 <histogram name="Event.Latency.BlockingTime.TouchStartDefaultAllowed"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between the renderer main thread receiving a touchstart event and
@@ -35646,7 +35880,7 @@
 </histogram>
 
 <histogram name="Event.Latency.BlockingTime.TouchStartDefaultPrevented"
-    units="ms">
+    units="ms" expires_after="2020-02-02">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between the renderer main thread receiving a touchstart event and
@@ -36257,7 +36491,8 @@
   </summary>
 </histogram>
 
-<histogram name="Event.Latency.EndToEnd.TouchpadPinch" units="microseconds">
+<histogram name="Event.Latency.EndToEnd.TouchpadPinch" units="microseconds"
+    expires_after="2020-02-02">
   <owner>input-dev@chromium.org</owner>
   <summary>
     Time between the OS receiving a touchpad pinch event and the resulting GPU
@@ -36326,7 +36561,7 @@
 </histogram>
 
 <histogram name="Event.Latency.QueueingTime.KeyPressDefaultAllowed" units="ms"
-    expires_after="M78">
+    expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <owner>input-dev@chromium.org</owner>
   <summary>
@@ -36350,7 +36585,8 @@
   </summary>
 </histogram>
 
-<histogram name="Event.Latency.QueueingTime.TouchEndDefaultAllowed" units="ms">
+<histogram name="Event.Latency.QueueingTime.TouchEndDefaultAllowed" units="ms"
+    expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between sending a touchend event to the renderer main thread and when
@@ -36362,7 +36598,7 @@
 </histogram>
 
 <histogram name="Event.Latency.QueueingTime.TouchEndDefaultPrevented"
-    units="ms" expires_after="M77">
+    units="ms" expires_after="2020-02-02">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between sending a touchend event to the renderer main thread and when
@@ -36373,7 +36609,8 @@
   </summary>
 </histogram>
 
-<histogram name="Event.Latency.QueueingTime.TouchMoveDefaultAllowed" units="ms">
+<histogram name="Event.Latency.QueueingTime.TouchMoveDefaultAllowed" units="ms"
+    expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between sending a touchmove event to the renderer main thread and when
@@ -36385,7 +36622,7 @@
 </histogram>
 
 <histogram name="Event.Latency.QueueingTime.TouchMoveDefaultPrevented"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between sending a touchmove event to the renderer main thread and when
@@ -36397,7 +36634,7 @@
 </histogram>
 
 <histogram name="Event.Latency.QueueingTime.TouchStartDefaultAllowed"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between sending a touchstart event to the renderer main thread and when
@@ -36409,7 +36646,7 @@
 </histogram>
 
 <histogram name="Event.Latency.QueueingTime.TouchStartDefaultPrevented"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between sending a touchstart event to the renderer main thread and when
@@ -36702,7 +36939,7 @@
 
 <histogram
     name="Event.Latency.ScrollBegin.Touch.BrowserNotifiedToBeforeGpuSwap2"
-    units="microseconds">
+    units="microseconds" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between the browser receives the notification of the first ScrollUpdate
@@ -36727,7 +36964,8 @@
   </summary>
 </histogram>
 
-<histogram name="Event.Latency.ScrollBegin.Touch.GpuSwap2" units="microseconds">
+<histogram name="Event.Latency.ScrollBegin.Touch.GpuSwap2" units="microseconds"
+    expires_after="2020-02-02">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between gpu starts to swap the first ScrollUpdate gesture event in a
@@ -36929,7 +37167,7 @@
 
 <histogram
     name="Event.Latency.ScrollBegin.Wheel.RendererSwapToBrowserNotified2"
-    units="microseconds">
+    units="microseconds" expires_after="2020-02-02">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between the renderer starts to swap a frame induced by the first
@@ -36941,7 +37179,7 @@
 </histogram>
 
 <histogram name="Event.Latency.ScrollBegin.Wheel.TimeToHandled2"
-    units="microseconds">
+    units="microseconds" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between initial creation of a wheel event and the first generated
@@ -37424,7 +37662,7 @@
 </histogram>
 
 <histogram name="Event.Latency.ScrollUpdate.Touch.GpuSwap2"
-    units="microseconds">
+    units="microseconds" expires_after="2020-02-02">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between gpu starts to swap a ScrollUpdate gesture event with touch
@@ -37441,7 +37679,7 @@
 </histogram>
 
 <histogram name="Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2"
-    units="microseconds">
+    units="microseconds" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between the ScrollUpdate gesture event with touch source, is handled on
@@ -37505,7 +37743,7 @@
 </histogram>
 
 <histogram name="Event.Latency.ScrollUpdate.Touch.TimeToHandled2"
-    units="microseconds">
+    units="microseconds" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between initial creation of a touch event and the generated
@@ -37611,7 +37849,7 @@
 
 <histogram
     name="Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2"
-    units="microseconds">
+    units="microseconds" expires_after="2020-01-26">
   <owner>tdresser@chromium.org</owner>
   <summary>
     Time between the browser receives the notification of a ScrollUpdate gesture
@@ -38278,7 +38516,8 @@
   </summary>
 </histogram>
 
-<histogram name="Event.Touch.TimedOutOnMobileSite" enum="BooleanTimedOut">
+<histogram name="Event.Touch.TimedOutOnMobileSite" enum="BooleanTimedOut"
+    expires_after="2020-02-02">
   <owner>tdresser@chromium.org</owner>
   <summary>
     On mobile-optimized sites, whether the ack response from the renderer for
@@ -38806,7 +39045,7 @@
 </histogram>
 
 <histogram name="ExploreSites.ClickedNTPCategoryIndex"
-    enum="MostVisitedTileIndex">
+    enum="MostVisitedTileIndex" expires_after="2020-02-02">
   <owner>dimich@chromium.org</owner>
   <summary>
     0-based index of a category tile on NTP which was clicked by the user.
@@ -38843,7 +39082,8 @@
   <summary>Tracks the result of image decoding for the favicons.</summary>
 </histogram>
 
-<histogram name="ExploreSites.MonthlyHostCount" units="hosts">
+<histogram name="ExploreSites.MonthlyHostCount" units="hosts"
+    expires_after="2020-01-26">
   <owner>dimich@chromium.org</owner>
   <summary>
     Number of unique hosts visited by the user during the last 30 days. Reported
@@ -38883,7 +39123,7 @@
   </summary>
 </histogram>
 
-<histogram name="ExploreSites.SiteTilesClickIndex">
+<histogram name="ExploreSites.SiteTilesClickIndex" expires_after="2020-02-02">
   <obsolete>
     Deprecated with M77 and replaced by ExploreSites.SiteTilesClickIndex2.
   </obsolete>
@@ -44526,7 +44766,8 @@
   </summary>
 </histogram>
 
-<histogram name="Feedback.RequestSource" enum="FeedbackSource">
+<histogram name="Feedback.RequestSource" enum="FeedbackSource"
+    expires_after="2020-02-02">
   <owner>afakhry@chromium.org</owner>
   <summary>Records the source that requested showing the feedback app.</summary>
 </histogram>
@@ -44581,7 +44822,7 @@
 </histogram>
 
 <histogram base="true" name="FileBrowser.CrostiniSharedPaths.Depth"
-    units="depth" expires_after="2019-10-01">
+    units="depth" expires_after="2020-01-26">
   <owner>joelhockey@chromium.org</owner>
   <owner>tbuckley@chromium.org</owner>
   <summary>
@@ -44601,7 +44842,7 @@
 </histogram>
 
 <histogram name="FileBrowser.DownloadDestination.IsGoogleDrive.Changed"
-    enum="BooleanEnabled" expires_after="M79">
+    enum="BooleanEnabled" expires_after="M89">
   <owner>slangley@chromium.org</owner>
   <owner>weifangsun@chromium.org</owner>
   <summary>
@@ -44611,7 +44852,7 @@
 </histogram>
 
 <histogram name="FileBrowser.DownloadDestination.IsGoogleDrive.Started"
-    enum="BooleanEnabled" expires_after="M79">
+    enum="BooleanEnabled" expires_after="M89">
   <owner>slangley@chromium.org</owner>
   <owner>weifangsun@chromium.org</owner>
   <summary>
@@ -45420,6 +45661,7 @@
     expires_after="M85">
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Counts the number of fingerprint attempts until successful screen unlock.
   </summary>
@@ -45429,6 +45671,7 @@
     expires_after="M85">
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Counts the number of times that the fingerprint match successfully vs.
     rejected.
@@ -45440,6 +45683,7 @@
   <owner>norvez@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>Counts the number of fingers enrolled by the user.</summary>
 </histogram>
 
@@ -45448,6 +45692,7 @@
   <owner>norvez@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Measures the time it took to capture the fingerprint image in the 'match'
     case.
@@ -45459,6 +45704,7 @@
   <owner>norvez@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Measures the time it took to run matcher in the 'match' case.
   </summary>
@@ -45469,6 +45715,7 @@
   <owner>norvez@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Measures the time it took between the detection of a finger and the 'match'
     event being sent to the AP.
@@ -45480,6 +45727,7 @@
   <owner>norvez@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Measures the time it took to capture the fingerprint image in the 'no-match'
     case.
@@ -45491,6 +45739,7 @@
   <owner>norvez@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Measures the time it took to run the matcher in the 'no-match' case.
   </summary>
@@ -45501,6 +45750,7 @@
   <owner>norvez@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Measures the time it took between the detection of a finger and the
     'no-match' event being sent to the AP.
@@ -45511,6 +45761,7 @@
     expires_after="M85">
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Track whether fingerprint is enabled to unlock the screen, when the user
     logs in.
@@ -45758,6 +46009,18 @@
   <summary>Time to retrieve the fallback fonts on the system.</summary>
 </histogram>
 
+<histogram name="ForceDiceMigration.RevokeTokenAction" enum="RevokeTokenAction"
+    expires_after="2020-01-25">
+  <owner>msalama@chromium.org</owner>
+  <owner>msarda@chromium.org</owner>
+  <summary>
+    Tracks revoke actions taken by the account reconcilior to force Dice
+    migration. To enforce consistency, the reconcilior may invalidate the
+    primary account or revoke one or more secondary account tokens, if no
+    equivalent valid gaia cookie exist for those accounts.
+  </summary>
+</histogram>
+
 <histogram name="Gaia.AuthFetcher.ListAccounts.NetErrorCodes"
     enum="NetErrorCodes" expires_after="2019-08-30">
   <owner>droger@chromium.org</owner>
@@ -46424,6 +46687,17 @@
   </summary>
 </histogram>
 
+<histogram name="GCM.WebPushReceived.DeviceState" enum="WebPushDeviceState"
+    expires_after="M88">
+  <owner>knollr@chromium.org</owner>
+  <owner>peter@chromium.org</owner>
+  <summary>
+    Device state when receiving a web push message. Indicates if the message was
+    sent with a high priority and if the device was in idle mode. Recorded when
+    a web push message got received.
+  </summary>
+</histogram>
+
 <histogram name="GCMInvalidations.IncomingMessageStatus"
     enum="GCMInvalidationsIncomingMessageStatus" expires_after="M76">
   <owner>pavely@chromium.org</owner>
@@ -47386,7 +47660,7 @@
 </histogram>
 
 <histogram name="GPU.BlacklistFeatureTestResults"
-    enum="GPUBlacklistFeatureTestResults">
+    enum="GPUBlacklistFeatureTestResults" expires_after="2020-01-26">
   <owner>vmiura@chromium.org</owner>
   <summary>
     Counts number of browser invocations for which a GPU feature is
@@ -48273,7 +48547,7 @@
 </histogram>
 
 <histogram name="GPU.OopRaster.GlyphCacheMiss"
-    enum="OopRasterGlyphCacheMissType">
+    enum="OopRasterGlyphCacheMissType" expires_after="2020-01-26">
   <owner>khushalsagar@chromium.org</owner>
   <summary>
     During OutOfProcess(Oop) raster, the renderer generates and sends the
@@ -48858,7 +49132,8 @@
   </summary>
 </histogram>
 
-<histogram name="Graphics.Smoothness.FrameSequenceLength" units="count">
+<histogram name="Graphics.Smoothness.FrameSequenceLength" units="count"
+    expires_after="2020-01-26">
   <owner>sadrul@chromium.org</owner>
   <owner>graphics-dev@chromium.org</owner>
   <summary>
@@ -49134,7 +49409,7 @@
 <histogram name="HIDDetection.OOBEDevicesDetectedOnContinuePressed"
     enum="HIDContinueScenarioType" expires_after="M87">
   <owner>rsorokin@chromium.org</owner>
-  <owner>oac-team@google.com</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Which HID were detected when user pressed Continue on OOBE dialog. This
     metric is specific to Chrome OS.
@@ -49143,7 +49418,7 @@
 
 <histogram name="HIDDetection.OOBEDialogShown" expires_after="M87">
   <owner>rsorokin@chromium.org</owner>
-  <owner>oac-team@google.com</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Whether HID detection dialog was shown on OOBE. Logged on screen show or on
     screen skip respectively. This metric is specific to Chrome OS.
@@ -49154,6 +49429,7 @@
     expires_after="M97">
   <owner>rsorokin@chromium.org</owner>
   <owner>alemate@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Records number of times the dialog was shown by the time OOBE is completed.
     This metric is specific to Chrome OS.
@@ -49373,7 +49649,8 @@
   </summary>
 </histogram>
 
-<histogram name="History.ClearBrowsingData.Duration.FullDeletion" units="ms">
+<histogram name="History.ClearBrowsingData.Duration.FullDeletion" units="ms"
+    expires_after="2020-01-26">
   <owner>dullweber@chromium.org</owner>
   <owner>msramek@chromium.org</owner>
   <summary>
@@ -49381,7 +49658,8 @@
   </summary>
 </histogram>
 
-<histogram name="History.ClearBrowsingData.Duration.PartialDeletion" units="ms">
+<histogram name="History.ClearBrowsingData.Duration.PartialDeletion" units="ms"
+    expires_after="2020-01-26">
   <owner>dullweber@chromium.org</owner>
   <owner>msramek@chromium.org</owner>
   <summary>
@@ -49402,7 +49680,7 @@
 </histogram>
 
 <histogram name="History.ClearBrowsingData.Duration.SlowTasks180sChrome"
-    enum="ChromeBrowsingDataRemoverTasks">
+    enum="ChromeBrowsingDataRemoverTasks" expires_after="2020-01-26">
   <owner>dullweber@chromium.org</owner>
   <owner>msramek@chromium.org</owner>
   <summary>
@@ -49511,7 +49789,7 @@
 </histogram>
 
 <histogram name="History.ClearBrowsingData.UserDeletedCookieOrCache"
-    enum="CookieOrCacheDeletion">
+    enum="CookieOrCacheDeletion" expires_after="2020-02-02">
   <owner>msramek@chromium.org</owner>
   <summary>
     Recorded when the user deletes their browsing data. Shows whether cookies
@@ -49520,7 +49798,7 @@
 </histogram>
 
 <histogram name="History.ClearBrowsingData.UserDeletedCookieOrCacheFromDialog"
-    enum="CookieOrCacheDeletion">
+    enum="CookieOrCacheDeletion" expires_after="2020-02-02">
   <owner>msramek@chromium.org</owner>
   <summary>
     Recorded when the user deletes their browsing data manually from the
@@ -49530,7 +49808,7 @@
 </histogram>
 
 <histogram name="History.ClearBrowsingData.UserDeletedFromTab"
-    enum="ClearBrowsingDataTab">
+    enum="ClearBrowsingDataTab" expires_after="2020-01-26">
   <owner>dullweber@chromium.org</owner>
   <owner>msramek@chromium.org</owner>
   <summary>
@@ -49688,7 +49966,7 @@
   </summary>
 </histogram>
 
-<histogram name="History.FirstUpdateTime" units="ms">
+<histogram name="History.FirstUpdateTime" units="ms" expires_after="2020-02-02">
   <owner>yiyaoliu@chromium.org</owner>
   <summary>
     The amount of time for function
@@ -49727,7 +50005,7 @@
   </summary>
 </histogram>
 
-<histogram name="History.InMemoryDBItemCount" expires_after="M77">
+<histogram name="History.InMemoryDBItemCount" expires_after="2020-02-02">
   <owner>gab@chromium.org</owner>
   <summary>
     The number of typed URLs in the history database that are read into the
@@ -49738,7 +50016,8 @@
   </summary>
 </histogram>
 
-<histogram name="History.InMemoryDBKeywordTermsCount" expires_after="M77">
+<histogram name="History.InMemoryDBKeywordTermsCount"
+    expires_after="2020-02-02">
   <owner>gab@chromium.org</owner>
   <summary>
     Number of items in in-memory keyword_search_terms table. Recorded on profile
@@ -49755,7 +50034,8 @@
   </summary>
 </histogram>
 
-<histogram name="History.InMemoryDBKeywordURLItemCount" expires_after="M77">
+<histogram name="History.InMemoryDBKeywordURLItemCount"
+    expires_after="2020-02-02">
   <owner>gab@chromium.org</owner>
   <summary>
     Number of items in in-memory urls table. Recorded on profile open.
@@ -49782,7 +50062,7 @@
   </summary>
 </histogram>
 
-<histogram name="History.InMemoryTypedUrlVisitCount" expires_after="M77">
+<histogram name="History.InMemoryTypedUrlVisitCount" expires_after="2020-02-02">
   <owner>gab@chromium.org</owner>
   <summary>
     The sum of the visit_count fields for all URLs in the &quot;in memory&quot;
@@ -50433,7 +50713,8 @@
   </summary>
 </histogram>
 
-<histogram name="HttpCache.Pattern" enum="HttpCachePattern">
+<histogram name="HttpCache.Pattern" enum="HttpCachePattern"
+    expires_after="2020-01-26">
   <owner>morlovich@chromium.org</owner>
   <owner>jkarlin@chromium.org</owner>
   <summary>For each http cache transaction, the recorded pattern.</summary>
@@ -53519,7 +53800,7 @@
 </histogram>
 
 <histogram name="IOS.EnterTabSwitcherSnapshotResult"
-    enum="EnterTabSwitcherSnapshotResult" expires_after="2019-08-01">
+    enum="EnterTabSwitcherSnapshotResult" expires_after="2020-08-01">
   <owner>edchin@chromium.org</owner>
   <owner>justincohen@chromium.org</owner>
   <summary>
@@ -53631,12 +53912,12 @@
 </histogram>
 
 <histogram name="IOS.PageLoadCount.Counts"
-    enum="IOSPageLoadCountNavigationType">
+    enum="IOSPageLoadCountNavigationType" expires_after="2020-01-26">
   <owner>danyao@chromium.org</owner>
   <summary>The number of navigation started events by navigation type.</summary>
 </histogram>
 
-<histogram name="IOS.PageLoadCount.LoadingStarted">
+<histogram name="IOS.PageLoadCount.LoadingStarted" expires_after="2020-01-26">
   <owner>danyao@chromium.org</owner>
   <summary>
     The &quot;true&quot; value of this boolean histogram counts the number of
@@ -53657,7 +53938,7 @@
 </histogram>
 
 <histogram name="IOS.PageLoadedSnapshotResult" enum="PageLoadedSnapshotResult"
-    expires_after="2019-08-01">
+    expires_after="2020-08-01">
   <owner>edchin@chromium.org</owner>
   <owner>justincohen@chromium.org</owner>
   <summary>
@@ -54015,7 +54296,7 @@
   <obsolete>
     Removed 2019-07.
   </obsolete>
-  <owner>joenotcharles@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Fine-grained (in msec) time between closing a Javascript dialog and opening
     another, to track very frequent dialogs.
@@ -54028,7 +54309,7 @@
   <obsolete>
     Removed 2019-07.
   </obsolete>
-  <owner>joenotcharles@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Fine-grained (in msec) time between opening a Javascript dialog and opening
     another, to track very frequent dialogs.
@@ -54041,7 +54322,7 @@
   <obsolete>
     Removed 2019-07.
   </obsolete>
-  <owner>joenotcharles@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Fine-grained (in msec) time between opening a Javascript dialog and closing
     it, to track very short-lived dialogs.
@@ -54332,7 +54613,8 @@
   </summary>
 </histogram>
 
-<histogram name="Keyboard.ShortcutViewer.StartupTime" units="ms">
+<histogram name="Keyboard.ShortcutViewer.StartupTime" units="ms"
+    expires_after="2020-01-26">
   <owner>jamescook@chromium.org</owner>
   <owner>msw@chromium.org</owner>
   <owner>wutao@chromium.org</owner>
@@ -54344,7 +54626,7 @@
 </histogram>
 
 <histogram name="KeyboardAccessory.AccessoryActionImpression"
-    enum="AccessoryAction">
+    enum="AccessoryAction" expires_after="2020-01-26">
   <owner>fhorschig@chromium.org</owner>
   <summary>
     Android only. Records whenever users faces an action in the accessory bar or
@@ -54353,7 +54635,7 @@
 </histogram>
 
 <histogram name="KeyboardAccessory.AccessoryActionSelected"
-    enum="AccessoryAction">
+    enum="AccessoryAction" expires_after="2020-01-26">
   <owner>fhorschig@chromium.org</owner>
   <summary>
     Android only. Records whenever users select an action in the accessory bar
@@ -54548,7 +54830,8 @@
   </summary>
 </histogram>
 
-<histogram name="Launch.HomeScreen" enum="LaunchFromHomeScreen">
+<histogram name="Launch.HomeScreen" enum="LaunchFromHomeScreen"
+    expires_after="2020-01-26">
   <owner>dfalcantara@chromium.org</owner>
   <summary>
     Records how Chrome handled a launch from an Android Home screen shortcut.
@@ -55129,7 +55412,8 @@
   </summary>
 </histogram>
 
-<histogram name="LoadingPredictor.PreconnectCount" units="origins">
+<histogram name="LoadingPredictor.PreconnectCount" units="origins"
+    expires_after="2020-01-26">
   <owner>alexilin@chromium.org</owner>
   <summary>
     The number of origins that were preconnected for a page load. It includes
@@ -55138,7 +55422,8 @@
   </summary>
 </histogram>
 
-<histogram name="LoadingPredictor.PreconnectHitsPercentage" units="%">
+<histogram name="LoadingPredictor.PreconnectHitsPercentage" units="%"
+    expires_after="2020-01-26">
   <owner>alexilin@chromium.org</owner>
   <summary>
     The percentage of origins that were preconnected and requested by a page
@@ -55148,7 +55433,8 @@
   </summary>
 </histogram>
 
-<histogram name="LoadingPredictor.PreconnectLearningCount" units="origins">
+<histogram name="LoadingPredictor.PreconnectLearningCount" units="origins"
+    expires_after="2020-01-26">
   <owner>alexilin@chromium.org</owner>
   <summary>
     When the loading predictor has origins in the local database for a given
@@ -55156,7 +55442,8 @@
   </summary>
 </histogram>
 
-<histogram name="LoadingPredictor.PreconnectLearningPrecision" units="%">
+<histogram name="LoadingPredictor.PreconnectLearningPrecision" units="%"
+    expires_after="2020-01-26">
   <owner>alexilin@chromium.org</owner>
   <summary>
     When the loading predictor has origins in the local database for a given
@@ -55166,7 +55453,8 @@
   </summary>
 </histogram>
 
-<histogram name="LoadingPredictor.PreconnectLearningRecall" units="%">
+<histogram name="LoadingPredictor.PreconnectLearningRecall" units="%"
+    expires_after="2020-02-02">
   <owner>alexilin@chromium.org</owner>
   <summary>
     When the loading predictor has origins in the local database for a given
@@ -55186,7 +55474,8 @@
   </summary>
 </histogram>
 
-<histogram name="LoadingPredictor.PreresolveCount" units="hosts">
+<histogram name="LoadingPredictor.PreresolveCount" units="hosts"
+    expires_after="2020-01-26">
   <owner>alexilin@chromium.org</owner>
   <summary>
     The number of hosts that were preresolved for a page load. It includes only
@@ -55553,13 +55842,15 @@
   </summary>
 </histogram>
 
-<histogram name="Login.DefaultPageZoom" units="%" expires_after="M79">
+<histogram name="Login.DefaultPageZoom" units="%" expires_after="2019-12-31">
   <owner>jamescook@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-system-services@google.com</owner>
   <summary>The user's default page zoom setting, recorded on login.</summary>
 </histogram>
 
-<histogram name="Login.FailureReason" enum="LoginFailureReason">
+<histogram name="Login.FailureReason" enum="LoginFailureReason"
+    expires_after="2020-01-26">
   <owner>achuith@chromium.org</owner>
   <summary>Chrome OS login failure reason.</summary>
 </histogram>
@@ -55617,7 +55908,7 @@
 </histogram>
 
 <histogram name="Login.PromptToCompleteLoginTime" units="ms"
-    expires_after="M77">
+    expires_after="2020-02-02">
   <owner>achuith@chromium.org</owner>
   <summary>
     Time from first display of the login prompt until the user completes signing
@@ -55625,7 +55916,7 @@
   </summary>
 </histogram>
 
-<histogram name="Login.PromptToLoginTime" units="ms">
+<histogram name="Login.PromptToLoginTime" units="ms" expires_after="2020-02-02">
   <owner>elijahtaylor@google.com</owner>
   <owner>yusukes@chromium.org</owner>
   <summary>
@@ -55642,7 +55933,8 @@
   </summary>
 </histogram>
 
-<histogram name="Login.SessionExitType" enum="LoginSessionExitType">
+<histogram name="Login.SessionExitType" enum="LoginSessionExitType"
+    expires_after="2020-02-02">
   <owner>iby@chromium.org</owner>
   <summary>
     Tracks whether a ChromeOS user was logged out because Chrome repeatedly
@@ -55656,7 +55948,8 @@
   <summary>Result of a state key generation operation.</summary>
 </histogram>
 
-<histogram name="Login.SuccessReason" enum="LoginSuccessReason">
+<histogram name="Login.SuccessReason" enum="LoginSuccessReason"
+    expires_after="2020-01-26">
   <owner>achuith@chromium.org</owner>
   <summary>Chrome OS login success reason.</summary>
 </histogram>
@@ -55696,7 +55989,8 @@
   </summary>
 </histogram>
 
-<histogram name="Login.UserType" enum="LoginUserType">
+<histogram name="Login.UserType" enum="LoginUserType"
+    expires_after="2020-01-26">
   <owner>cmasone@chromium.org</owner>
   <summary>
     Chrome OS histogram that keeps track of the way a user logs in and whether
@@ -56009,7 +56303,7 @@
 </histogram>
 
 <histogram name="Manifest.FetchResult" enum="ManifestFetchResultType"
-    expires_after="M77">
+    expires_after="M79">
   <owner>mlamouri@chromium.org</owner>
   <summary>
     Tracks whether the Manifest fetch succeed and why it failed if it failed.
@@ -56026,12 +56320,12 @@
   </summary>
 </histogram>
 
-<histogram name="Manifest.IsEmpty" enum="Boolean" expires_after="M77">
+<histogram name="Manifest.IsEmpty" enum="Boolean" expires_after="M79">
   <owner>mlamouri@chromium.org</owner>
   <summary>Tracks whether the parsed Manifest is the empty Manifest.</summary>
 </histogram>
 
-<histogram name="Manifest.ParseSuccess" enum="Boolean" expires_after="M77">
+<histogram name="Manifest.ParseSuccess" enum="Boolean" expires_after="M79">
   <owner>mlamouri@chromium.org</owner>
   <summary>
     Tracks the Manifest parsing result. A failure will be recorded if the
@@ -56156,11 +56450,23 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Android.MediaPlayerSuccess" enum="MediaPlayerExitStatus">
+<histogram name="Media.Android.MediaPlayerSuccess" enum="MediaPlayerExitStatus"
+    expires_after="2020-02-02">
   <owner>tguilbert@chromium.org</owner>
   <summary>Android: Whether MediaPlayer exited without errors.</summary>
 </histogram>
 
+<histogram name="Media.Android.MediaPlayerWatchTime"
+    enum="MediaPlayerWatchTimeType" expires_after="2020-07-31">
+  <owner>sandersd@chromium.org</owner>
+  <owner>media-dev@chromium.org</owner>
+  <summary>
+    Wall time of MediaPlayer playbacks. Each count represents one second of
+    media playback. Multiple MediaPlayer instances can together accumulate watch
+    time faster than real time.
+  </summary>
+</histogram>
+
 <histogram name="Media.Android.NumMediaServerCrashes"
     expires_after="2017-04-12">
   <obsolete>
@@ -56331,7 +56637,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Capture.DetectedMissingCallbacks"
-    enum="BooleanMissingCallbacks">
+    enum="BooleanMissingCallbacks" expires_after="2020-02-02">
   <owner>grunell@chromium.org</owner>
   <summary>
     Whether missing callbacks where detected during audio capture. Logged when
@@ -56353,7 +56659,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Capture.FramesProvided" units="frames">
+<histogram name="Media.Audio.Capture.FramesProvided" units="frames"
+    expires_after="2020-02-02">
   <owner>grunell@chromium.org</owner>
   <summary>
     The number of captured audio frames that is provided by the operating system
@@ -56370,7 +56677,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Capture.Glitches" units="glitches">
+<histogram name="Media.Audio.Capture.Glitches" units="glitches"
+    expires_after="2020-02-02">
   <owner>grunell@chromium.org</owner>
   <summary>
     The number of glitches that were detected at the OS level while an audio
@@ -56380,7 +56688,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Capture.HighLatencyCallbackError"
-    enum="BooleanError">
+    enum="BooleanError" expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     A boolean that reflects whether or not an error was reported during audio
@@ -56397,7 +56705,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Capture.LargestGlitchMs" units="ms">
+<histogram name="Media.Audio.Capture.LargestGlitchMs" units="ms"
+    expires_after="2020-02-02">
   <owner>grunell@chromium.org</owner>
   <summary>
     The length in milliseconds of the largest audio glitch that was detected at
@@ -56406,7 +56715,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Capture.LostFramesInMs" units="ms">
+<histogram name="Media.Audio.Capture.LostFramesInMs" units="ms"
+    expires_after="2020-02-02">
   <owner>grunell@chromium.org</owner>
   <summary>
     The combined length in milliseconds of audio glitches that was detected at
@@ -56417,7 +56727,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Capture.LowLatencyCallbackError"
-    enum="BooleanError">
+    enum="BooleanError" expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     A boolean that reflects whether or not an error was reported during audio
@@ -56678,7 +56988,7 @@
 </histogram>
 
 <histogram name="Media.Audio.InputBufferSizeWasChangedMac"
-    enum="BooleanSuccess">
+    enum="BooleanSuccess" expires_after="2020-02-02">
   <owner>henrika@chromium.org</owner>
   <summary>
     Indicates if the size of the audio unit's IO buffer was changed when
@@ -56821,7 +57131,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.OutputDeviceAuthorizationTime" units="ms">
+<histogram name="Media.Audio.OutputDeviceAuthorizationTime" units="ms"
+    expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <summary>
     Time delta between the moment output device authorization request is
@@ -56830,7 +57141,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.OutputStreamsCanceledByBrowser" units="streams">
+<histogram name="Media.Audio.OutputStreamsCanceledByBrowser" units="streams"
+    expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     When a mojo audio stream factory is destructed, the streams it created are
@@ -56940,7 +57252,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Render.AudioInputsPerMixer.LatencyPlayback"
-    units="inputs">
+    units="inputs" expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <summary>
     Number of simultaneous inputs coming to the AudioRendererMixer which renders
@@ -56963,7 +57275,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.AudioMixing.LatencyMap" units="subsets">
+<histogram name="Media.Audio.Render.AudioMixing.LatencyMap" units="subsets"
+    expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <summary>
     Subset of audio output latencies encountered by the renderer so far. Logged
@@ -56997,7 +57310,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.FramesRequested" units="frames">
+<histogram name="Media.Audio.Render.FramesRequested" units="frames"
+    expires_after="2020-02-02">
   <owner>tommi@chromium.org</owner>
   <summary>
     The number of frames audio is actually rendered at if the number is
@@ -57011,7 +57325,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Render.GetSourceDataTime.WebRTC"
-    units="microseconds">
+    units="microseconds" expires_after="2020-02-02">
   <owner>grunell@chromium.org</owner>
   <summary>
     The time spent to get audio data from the source. For WebRTC, it's the time
@@ -57027,7 +57341,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Render.GetSourceDataTimeMax.WebRTC"
-    units="microseconds">
+    units="microseconds" expires_after="2020-02-02">
   <owner>grunell@chromium.org</owner>
   <summary>
     The maximum time spent to get audio data from the source during a session.
@@ -57042,7 +57356,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.Glitches" units="glitches">
+<histogram name="Media.Audio.Render.Glitches" units="glitches"
+    expires_after="2020-02-02">
   <owner>tommi@chromium.org</owner>
   <summary>
     The number of glitches that were detected at the OS level while an audio
@@ -57051,7 +57366,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.InputDeviceStartTime" units="ms">
+<histogram name="Media.Audio.Render.InputDeviceStartTime" units="ms"
+    expires_after="2020-02-02">
   <owner>jonasolsson@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57061,7 +57377,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.InputDeviceStreamCreationTime" units="ms">
+<histogram name="Media.Audio.Render.InputDeviceStreamCreationTime" units="ms"
+    expires_after="2020-02-02">
   <owner>jonasolsson@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57072,7 +57389,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.LargestGlitchMs" units="ms">
+<histogram name="Media.Audio.Render.LargestGlitchMs" units="ms"
+    expires_after="2020-02-02">
   <owner>tommi@chromium.org</owner>
   <summary>
     The length in milliseconds of the largest glitch that was detected at the OS
@@ -57081,7 +57399,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.LostFramesInMs" units="ms">
+<histogram name="Media.Audio.Render.LostFramesInMs" units="ms"
+    expires_after="2020-02-02">
   <owner>tommi@chromium.org</owner>
   <summary>
     The combined length in milliseconds of audio glitches. This is useful to
@@ -57091,7 +57410,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.OutputDeviceAuthorizationTime" units="ms">
+<histogram name="Media.Audio.Render.OutputDeviceAuthorizationTime" units="ms"
+    expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     Similar to Media.Audio.OutputDeviceAuthorizationTime, this histogram
@@ -57105,7 +57425,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Render.OutputDeviceAuthorizationTimedOut"
-    enum="BooleanTimedOut">
+    enum="BooleanTimedOut" expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <summary>
     Whether audio output device timed out waiting for authorization reply from
@@ -57113,7 +57433,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.OutputDeviceStartTime" units="ms">
+<histogram name="Media.Audio.Render.OutputDeviceStartTime" units="ms"
+    expires_after="2020-02-02">
   <owner>jonasolsson@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57124,7 +57445,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Render.OutputDeviceStatus"
-    enum="OutputDeviceStatus">
+    enum="OutputDeviceStatus" expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <owner>dalecurtis@chromium.org</owner>
   <summary>
@@ -57132,7 +57453,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.OutputDeviceStreamCreationTime" units="ms">
+<histogram name="Media.Audio.Render.OutputDeviceStreamCreationTime" units="ms"
+    expires_after="2020-02-02">
   <owner>jonasolsson@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57143,7 +57465,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Audio.Render.OutputStreamDuration" units="ms">
+<histogram name="Media.Audio.Render.OutputStreamDuration" units="ms"
+    expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     This histogram measures the duration of every output stream, as seen from
@@ -57154,7 +57477,7 @@
 
 <histogram
     name="Media.Audio.Render.SinkCache.GetOutputDeviceInfoCacheUtilization"
-    enum="GetOutputDeviceInfoCacheHit">
+    enum="GetOutputDeviceInfoCacheHit" expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <summary>
     Whether a cached sink was used to get audio output device information, or a
@@ -57174,7 +57497,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Render.SinkCache.UsedForSinkCreation"
-    enum="BooleanUsage">
+    enum="BooleanUsage" expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <summary>
     Whether a sink was created through the sink cache or directly.
@@ -57197,7 +57520,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Render.StreamBrokerDisconnectReason2"
-    enum="AudioOutputStreamDisconnectReason2" expires_after="2019-12-01">
+    enum="AudioOutputStreamDisconnectReason2" expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <summary>
@@ -57207,7 +57530,7 @@
 
 <histogram
     name="Media.Audio.Render.StreamBrokerDocumentDestroyedAwaitingCreatedTime"
-    units="ms" expires_after="2019-12-01">
+    units="ms" expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
@@ -57219,7 +57542,7 @@
 </histogram>
 
 <histogram name="Media.Audio.Render.StreamBrokerStreamCreationTime" units="ms"
-    expires_after="2019-12-01">
+    expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
@@ -57346,7 +57669,8 @@
   <summary>Bits per channel of HTML5 audio sample data.</summary>
 </histogram>
 
-<histogram name="Media.AudioCapturerAudioGlitches" enum="AudioGlitchResult">
+<histogram name="Media.AudioCapturerAudioGlitches" enum="AudioGlitchResult"
+    expires_after="2020-02-02">
   <owner>grunell@chromium.org</owner>
   <summary>
     Whether there is input audio glitches due to dropped input audio data or
@@ -57354,7 +57678,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioCapturerDroppedData" units="%">
+<histogram name="Media.AudioCapturerDroppedData" units="%"
+    expires_after="2020-02-02">
   <owner>grunell@chromium.org</owner>
   <summary>
     The percentage of input audio data that was dropped at the browser/renderer
@@ -57402,14 +57727,16 @@
   <summary>Audio codec used in HTML5 media.</summary>
 </histogram>
 
-<histogram name="Media.AudioInputCbErrorMac" units="OSStatus">
+<histogram name="Media.AudioInputCbErrorMac" units="OSStatus"
+    expires_after="2020-02-02">
   <owner>henrika@chromium.org</owner>
   <summary>
     Error codes that AudioUnitRender() returns in AUAudioInputStream on Mac.
   </summary>
 </histogram>
 
-<histogram name="Media.AudioInputController" units="ms">
+<histogram name="Media.AudioInputController" units="ms"
+    expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <summary>Measures the time taken for AudioInputController::</summary>
 </histogram>
@@ -57453,7 +57780,8 @@
   <summary>Measures the time taken for AudioOutputController::</summary>
 </histogram>
 
-<histogram name="Media.AudioOutputController.CallbackError" enum="BooleanError">
+<histogram name="Media.AudioOutputController.CallbackError" enum="BooleanError"
+    expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     A boolean that reflects whether or not an error was reported during audio
@@ -57473,7 +57801,7 @@
 </histogram>
 
 <histogram name="Media.AudioOutputController.ProxyStreamCreationResult"
-    enum="AudioOutputStreamCreationResult">
+    enum="AudioOutputStreamCreationResult" expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     Whether an AudioOutputController succeeded in creating and opening an output
@@ -57486,7 +57814,7 @@
 
 <histogram
     name="Media.AudioOutputController.ProxyStreamCreationResultForDeviceChange"
-    enum="AudioOutputStreamCreationResult">
+    enum="AudioOutputStreamCreationResult" expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     Whether an AudioOutputController succeeded in creating and opening an output
@@ -57494,7 +57822,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioOutputControllerDataNotReady" units="ms">
+<histogram name="Media.AudioOutputControllerDataNotReady" units="ms"
+    expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <summary>
     Time spent waiting in AudioOutputController::WaitTillDataReady() if the data
@@ -57503,7 +57832,7 @@
 </histogram>
 
 <histogram name="Media.AudioOutputControllerPlaybackStartupSuccess"
-    enum="BooleanSuccess">
+    enum="BooleanSuccess" expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <summary>
     Whether playback started successfully after stream startup was requested.
@@ -57511,7 +57840,8 @@
 </histogram>
 
 <histogram name="Media.AudioOutputResampler.OpenLowLatencyStream"
-    enum="AudioOutputResamplerLowLatencyOpenStreamResult">
+    enum="AudioOutputResamplerLowLatencyOpenStreamResult"
+    expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <summary>
     Whether a low latency stream to be rendered through the resampler was opened
@@ -57601,7 +57931,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioRendererAudioGlitches" enum="AudioGlitchResult">
+<histogram name="Media.AudioRendererAudioGlitches" enum="AudioGlitchResult"
+    expires_after="2020-02-02">
   <owner>henrika@chromium.org</owner>
   <summary>
     Captures if render-side audio glitches are detected or not. Sampled when a
@@ -57618,7 +57949,8 @@
   <summary>Captures statistics for various AudioRendererImpl events.</summary>
 </histogram>
 
-<histogram name="Media.AudioRendererImpl.SinkStatus" enum="OutputDeviceStatus">
+<histogram name="Media.AudioRendererImpl.SinkStatus" enum="OutputDeviceStatus"
+    expires_after="2020-02-02">
   <owner>olka@chromium.org</owner>
   <owner>dalecurtis@chromium.org</owner>
   <summary>
@@ -57691,7 +58023,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioService.AudioManagerStartupTime" units="ms">
+<histogram name="Media.AudioService.AudioManagerStartupTime" units="ms"
+    expires_after="2020-02-02">
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57740,7 +58073,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioService.ObservedDowntime2" units="ms">
+<histogram name="Media.AudioService.ObservedDowntime2" units="ms"
+    expires_after="2020-02-02">
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57750,7 +58084,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioService.ObservedInitialDowntime" units="ms">
+<histogram name="Media.AudioService.ObservedInitialDowntime" units="ms"
+    expires_after="2020-02-02">
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57778,7 +58113,7 @@
 </histogram>
 
 <histogram name="Media.AudioService.ObservedStartStatus"
-    enum="AudioServiceStartStatus">
+    enum="AudioServiceStartStatus" expires_after="2020-02-02">
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57787,7 +58122,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioService.ObservedStartupTime" units="ms">
+<histogram name="Media.AudioService.ObservedStartupTime" units="ms"
+    expires_after="2020-02-02">
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57799,7 +58135,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioService.ObservedUptime" units="ms">
+<histogram name="Media.AudioService.ObservedUptime" units="ms"
+    expires_after="2020-02-02">
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57813,7 +58150,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioService.SystemInfoClient" units="ms">
+<histogram name="Media.AudioService.SystemInfoClient" units="ms"
+    expires_after="2020-02-02">
 <!-- Name completed by histogram_suffixes name="AudioSystemInfoRequest" -->
 
   <owner>marinaciocea@chromium.org</owner>
@@ -57826,7 +58164,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioService.Uptime" units="ms">
+<histogram name="Media.AudioService.Uptime" units="ms"
+    expires_after="2020-02-02">
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -57836,7 +58175,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AudioThreadStatus" enum="AudioThreadStatus">
+<histogram name="Media.AudioThreadStatus" enum="AudioThreadStatus"
+    expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <summary>
     State of the audio thread. A value of &quot;started&quot; is emitted once
@@ -57870,7 +58210,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.AVDA.FrameInformation" enum="AVDAFrameInformation">
+<histogram name="Media.AVDA.FrameInformation" enum="AVDAFrameInformation"
+    expires_after="2020-02-02">
   <owner>liberato@chromium.org</owner>
   <summary>
     Record a count for each frame sent to the client by AVDA, separated by what
@@ -58511,12 +58852,13 @@
   </summary>
 </histogram>
 
-<histogram name="Media.EME.CdmLoadResult" enum="CdmLoadResult">
+<histogram name="Media.EME.CdmLoadResult" enum="CdmLoadResult"
+    expires_after="2020-02-02">
   <owner>media-dev@chromium.org</owner>
   <summary>The result from an attempt to load a library CDM.</summary>
 </histogram>
 
-<histogram name="Media.EME.CdmLoadTime" units="ms">
+<histogram name="Media.EME.CdmLoadTime" units="ms" expires_after="2020-02-02">
   <owner>media-dev@chromium.org</owner>
   <summary>The time spent to load a library CDM.</summary>
 </histogram>
@@ -58720,7 +59062,7 @@
 </histogram>
 
 <histogram name="Media.EME.RequestMediaKeySystemAccess"
-    enum="RequestMediaKeySystemAccessStatus">
+    enum="RequestMediaKeySystemAccessStatus" expires_after="2020-02-02">
   <owner>sandersd@chromium.org</owner>
   <summary>
     Key system support query status and result, as reported by
@@ -58750,7 +59092,7 @@
 </histogram>
 
 <histogram name="Media.EME.Widevine.VideoCapability.HasEmptyRobustness"
-    enum="BooleanEmpty">
+    enum="BooleanEmpty" expires_after="2020-02-02">
   <owner>xhwang@chromium.org</owner>
   <summary>
     Whether the robustness level of any video capability in the supported
@@ -59158,7 +59500,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.HardwareKeyPressed" enum="MediaHardwareKeyAction">
+<histogram name="Media.HardwareKeyPressed" enum="MediaHardwareKeyAction"
+    expires_after="2020-02-02">
   <owner>steimel@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -59176,7 +59519,7 @@
 </histogram>
 
 <histogram name="Media.HighLatencyAudioCaptureStartupSuccess"
-    enum="AudioCaptureStartupResult">
+    enum="AudioCaptureStartupResult" expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     Whether capture started successfully after a high-latency input stream
@@ -59234,7 +59577,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.InputStreamDurationWithoutCallback" units="ms">
+<histogram name="Media.InputStreamDurationWithoutCallback" units="ms"
+    expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     Duration in milliseconds of low-latency audio input streams which never got
@@ -59298,7 +59642,7 @@
 </histogram>
 
 <histogram base="true" name="Media.Learning.BinaryThreshold.ByTrainingWeight"
-    enum="MegaConfusionMatrix" expires_after="2019-10-30">
+    enum="MegaConfusionMatrix" expires_after="2020-02-02">
 <!-- Name completed by histogram_suffixes
      name="Media.Learning.BinaryThreshold" -->
 
@@ -59386,7 +59730,7 @@
 </histogram>
 
 <histogram name="Media.LowLatencyAudioCaptureStartupSuccess"
-    enum="AudioCaptureStartupResult">
+    enum="AudioCaptureStartupResult" expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     Whether capture started successfully after a low-latency input stream
@@ -59394,7 +59738,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.MeanTimeBetweenRebuffers" units="ms">
+<histogram name="Media.MeanTimeBetweenRebuffers" units="ms"
+    expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <summary>
     The total watch time (see Media.WatchTime) of a given playback divided by
@@ -59541,7 +59886,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.MojoVideoDecoder.ActiveInstances">
+<histogram name="Media.MojoVideoDecoder.ActiveInstances"
+    expires_after="2020-02-02">
   <owner>sandersd@chromium.org</owner>
   <summary>
     Records the number of active MojoVideoDecoderService instances that are
@@ -59613,7 +59959,7 @@
 </histogram>
 
 <histogram name="Media.MSE.DetectedShakaPackagerInMp4" enum="BooleanDetected"
-    expires_after="2019-12-01">
+    expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -59623,7 +59969,7 @@
   </summary>
 </histogram>
 
-<histogram name="Media.MSE.DetectedTrackCount.Audio" expires_after="M77">
+<histogram name="Media.MSE.DetectedTrackCount.Audio" expires_after="2020-02-02">
   <obsolete>
     Deprecated 07/2019 in issue 975090.
   </obsolete>
@@ -59635,7 +59981,7 @@
   </summary>
 </histogram>
 
-<histogram name="Media.MSE.DetectedTrackCount.Text" expires_after="M77">
+<histogram name="Media.MSE.DetectedTrackCount.Text" expires_after="2020-02-02">
   <obsolete>
     Deprecated 07/2019 in issue 975090.
   </obsolete>
@@ -59649,7 +59995,7 @@
   </summary>
 </histogram>
 
-<histogram name="Media.MSE.DetectedTrackCount.Video" expires_after="M77">
+<histogram name="Media.MSE.DetectedTrackCount.Video" expires_after="2020-02-02">
   <obsolete>
     Deprecated 07/2019 in issue 975090.
   </obsolete>
@@ -59747,7 +60093,7 @@
   </summary>
 </histogram>
 
-<histogram name="Media.MSE.NumberOfTracks" expires_after="M77">
+<histogram name="Media.MSE.NumberOfTracks" expires_after="2020-02-02">
   <obsolete>
     Deprecated 07/2019 in issue 975898.
   </obsolete>
@@ -59976,7 +60322,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.OutputStreamDuration" units="ms">
+<histogram name="Media.OutputStreamDuration" units="ms"
+    expires_after="2020-02-02">
   <owner>maxmorin@chromium.org</owner>
   <summary>
     Duration of an audio output stream. Measured in AudioOutputController from
@@ -60032,7 +60379,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.PipelineStatus" enum="PipelineStatus">
+<histogram name="Media.PipelineStatus" enum="PipelineStatus"
+    expires_after="2020-02-02">
   <owner>prabhur@chromium.org</owner>
   <owner>dalecurtis@chromium.org</owner>
   <summary>
@@ -60041,7 +60389,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.PipelineStatus.Start" enum="PipelineStatus">
+<histogram name="Media.PipelineStatus.Start" enum="PipelineStatus"
+    expires_after="2020-02-02">
   <owner>xhwang@chromium.org</owner>
   <summary>
     Status of the media pipeline starting process (including demuxer and
@@ -60416,7 +60765,8 @@
   </summary>
 </histogram>
 
-<histogram name="Media.Session.UserAction" enum="MediaSessionUserAction">
+<histogram name="Media.Session.UserAction" enum="MediaSessionUserAction"
+    expires_after="2020-02-02">
   <owner>beccahughes@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -60425,7 +60775,7 @@
 </histogram>
 
 <histogram name="Media.Session.UserAction.Focus" enum="BooleanFocused"
-    expires_after="M77">
+    expires_after="2020-02-02">
   <owner>steimel@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -60436,7 +60786,7 @@
 </histogram>
 
 <histogram name="Media.SRC.PreloadAutoHasPoster" enum="Boolean"
-    expires_after="M77">
+    expires_after="2020-02-02">
   <obsolete>
     Deprecated 07/2019 in issue 975367.
   </obsolete>
@@ -60450,7 +60800,7 @@
 </histogram>
 
 <histogram name="Media.SRC.PreloadMetaDataHasPoster" enum="Boolean"
-    expires_after="M77">
+    expires_after="2020-02-02">
   <obsolete>
     Deprecated 07/2019 in issue 975367.
   </obsolete>
@@ -60573,7 +60923,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="Media.TimeToFirstFrame" units="ms">
+<histogram base="true" name="Media.TimeToFirstFrame" units="ms"
+    expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -60596,7 +60947,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="Media.TimeToMetadata" units="ms">
+<histogram base="true" name="Media.TimeToMetadata" units="ms"
+    expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -60616,7 +60968,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="Media.TimeToPlayReady" units="ms">
+<histogram base="true" name="Media.TimeToPlayReady" units="ms"
+    expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <owner>media-dev@chromium.org</owner>
   <summary>
@@ -61696,7 +62049,7 @@
   </summary>
 </histogram>
 
-<histogram name="Media.WatchTime" units="ms">
+<histogram name="Media.WatchTime" units="ms" expires_after="2020-02-02">
   <owner>dalecurtis@chromium.org</owner>
   <summary>
     Watch time is defined as the amount of elapsed media time for audio+video
@@ -61785,7 +62138,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="Media.WebMediaPlayerImpl.Memory" units="KB">
+<histogram base="true" name="Media.WebMediaPlayerImpl.Memory" units="KB"
+    expires_after="2020-02-02">
   <owner>wolenetz@chromium.org</owner>
   <summary>
     Amount of memory used by the WebMediaPlayerImpl and its components.
@@ -61919,7 +62273,7 @@
 </histogram>
 
 <histogram base="true" name="MediaRouter.Cast.App.Availability" units="ms"
-    expires_after="M85">
+    expires_after="2020-02-02">
 <!-- Name completed by histogram_suffixes name="MediaRouterSuccess" -->
 
   <owner>takumif@chromium.org</owner>
@@ -62080,6 +62434,17 @@
   <summary>Location the user clicked to open the Media Router dialog.</summary>
 </histogram>
 
+<histogram name="MediaRouter.MirroringService.SessionError"
+    enum="MirroringServiceErrorType" expires_after="2020-07-22">
+  <owner>takumif@chromium.org</owner>
+  <owner>openscreen-eng@google.com</owner>
+  <summary>
+    Records errors encountered by the Mirroring Service. If an error occurs
+    while media remoting, the service attempts to revert to mirroring. Otherwise
+    mirroring is terminated.
+  </summary>
+</histogram>
+
 <histogram name="MediaRouter.NetworkMonitor.ConnectionType"
     enum="DiscoveryNetworkMonitorConnectionType" expires_after="M85">
   <owner>btolsch@chromium.org</owner>
@@ -62405,7 +62770,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.AudioService.PrivateSwapFootprint" units="MB">
+<histogram name="Memory.AudioService.PrivateSwapFootprint" units="MB"
+    expires_after="2020-02-02">
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -62429,7 +62795,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.AudioService.SharedMemoryFootprint" units="MB">
+<histogram name="Memory.AudioService.SharedMemoryFootprint" units="MB"
+    expires_after="2020-02-02">
   <owner>marinaciocea@chromium.org</owner>
   <owner>maxmorin@chromium.org</owner>
   <owner>olka@chromium.org</owner>
@@ -62513,7 +62880,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.Browser.PrivateSwapFootprint" units="MB">
+<histogram name="Memory.Browser.PrivateSwapFootprint" units="MB"
+    expires_after="2020-02-02">
   <owner>erikchen@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>
@@ -63319,7 +63687,7 @@
 </histogram>
 
 <histogram name="Memory.Experimental.OomIntervention.V8UsageAfter30secs"
-    units="MB">
+    units="MB" expires_after="2020-02-02">
   <owner>keishi@chromium.org</owner>
   <owner>yuzus@chromium.org</owner>
   <summary>V8 memory usage 30 seconds after intervention.</summary>
@@ -63370,7 +63738,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.Experimental.Renderer.Uptime" units="ms">
+<histogram name="Memory.Experimental.Renderer.Uptime" units="ms"
+    expires_after="2020-02-02">
   <owner>keishi@chromium.org</owner>
   <summary>
     The uptime of a render process in time ticks (excludes extensions). Emitted
@@ -63463,7 +63832,7 @@
 
 <histogram
     name="Memory.Experimental.UserLevelMemoryPressureSignal.RendererPrivateMemoryFootprintBefore"
-    units="MB" expires_after="2019-09-30">
+    units="MB" expires_after="2020-02-02">
   <owner>keishi@chromium.org</owner>
   <owner>tasak@chromium.org</owner>
   <summary>
@@ -63715,7 +64084,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.Gpu.SharedMemoryFootprint" units="MB">
+<histogram name="Memory.Gpu.SharedMemoryFootprint" units="MB"
+    expires_after="2020-02-02">
   <owner>erikchen@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>
@@ -63827,7 +64197,7 @@
 </histogram>
 
 <histogram name="Memory.NativeLibrary.MappedAndResidentMemoryFootprint2"
-    units="KB" expires_after="2019-10-01">
+    units="KB" expires_after="2020-02-02">
   <owner>msalama@google.com</owner>
   <owner>lizeb@chromium.org</owner>
   <summary>
@@ -64253,7 +64623,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.PressureLevel" enum="MemoryPressureLevel">
+<histogram name="Memory.PressureLevel" enum="MemoryPressureLevel"
+    expires_after="2020-02-02">
   <owner>chrisha@chromium.org</owner>
   <summary>
     The memory pressure level, which is recorded periodically. This shows the
@@ -64270,7 +64641,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.ProcessCount" units="processes">
+<histogram name="Memory.ProcessCount" units="processes"
+    expires_after="2020-02-02">
   <owner>creis@chromium.org</owner>
   <owner>nasko@chromium.org</owner>
   <summary>
@@ -64431,7 +64803,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.RendererProcessCount" units="processes">
+<histogram name="Memory.RendererProcessCount" units="processes"
+    expires_after="2020-02-02">
   <owner>creis@chromium.org</owner>
   <owner>nasko@chromium.org</owner>
   <summary>
@@ -64467,7 +64840,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.RenderProcessHost.Count.All" units="processes">
+<histogram name="Memory.RenderProcessHost.Count.All" units="processes"
+    expires_after="2020-02-02">
   <owner>alexmos@chromium.org</owner>
   <owner>creis@chromium.org</owner>
   <owner>lukasza@chromium.org</owner>
@@ -64485,7 +64859,7 @@
 </histogram>
 
 <histogram name="Memory.RenderProcessHost.Count.InitializedAndNotDead"
-    units="processes">
+    units="processes" expires_after="2020-02-02">
   <owner>alexmos@chromium.org</owner>
   <owner>creis@chromium.org</owner>
   <owner>lukasza@chromium.org</owner>
@@ -65032,7 +65406,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.Total.RendererPrivateMemoryFootprint" units="MB">
+<histogram name="Memory.Total.RendererPrivateMemoryFootprint" units="MB"
+    expires_after="2020-02-02">
   <owner>tommckee@chromium.org</owner>
   <summary>
     A rough estimate of the private memory footprint of all renderer processes.
@@ -65053,7 +65428,8 @@
   </summary>
 </histogram>
 
-<histogram name="Memory.Total.SharedMemoryFootprint" units="MB">
+<histogram name="Memory.Total.SharedMemoryFootprint" units="MB"
+    expires_after="2020-02-02">
   <owner>erikchen@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>
@@ -65370,7 +65746,7 @@
 </histogram>
 
 <histogram name="MixedAutoupgrade.ResourceRequest.ErrorOrResponseCode"
-    enum="CombinedHttpResponseAndNetErrorCode">
+    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2020-02-02">
   <owner>carlosil@chromium.org</owner>
   <summary>
     The net error or HTTP response code of a mixed content resource request that
@@ -65378,7 +65754,8 @@
   </summary>
 </histogram>
 
-<histogram name="MixedAutoupgrade.ResourceRequest.Failure.IsAd" enum="Boolean">
+<histogram name="MixedAutoupgrade.ResourceRequest.Failure.IsAd" enum="Boolean"
+    expires_after="2020-02-02">
   <owner>carlosil@chromium.org</owner>
   <summary>
     Whether or not an autoupgrade mixed content request was for a resource we
@@ -65417,7 +65794,7 @@
 </histogram>
 
 <histogram name="MixedAutoupgrade.ResourceRequest.Status"
-    enum="MixedContentAutoupgradeStatus">
+    enum="MixedContentAutoupgradeStatus" expires_after="2020-02-02">
   <owner>carlosil@chromium.org</owner>
   <summary>
     The status of a mixed content resource request that was autoupgraded to
@@ -65587,7 +65964,7 @@
 </histogram>
 
 <histogram name="Mobile.SystemNotification.Blocked"
-    enum="SystemNotificationType">
+    enum="SystemNotificationType" expires_after="2020-02-02">
   <owner>dtrainor@chromium.org</owner>
   <summary>
     Android: Represents the number of system notifications that were blocked and
@@ -65596,7 +65973,7 @@
 </histogram>
 
 <histogram name="Mobile.SystemNotification.BlockedAfterShown"
-    enum="SystemNotificationType">
+    enum="SystemNotificationType" expires_after="2020-02-02">
   <owner>dtrainor@chromium.org</owner>
   <summary>
     Android: Represents the type of notification that was last shown before the
@@ -65606,7 +65983,7 @@
 </histogram>
 
 <histogram name="Mobile.SystemNotification.ChannelBlocked"
-    enum="SystemNotificationType">
+    enum="SystemNotificationType" expires_after="2020-02-02">
   <owner>peter@chromium.org</owner>
   <summary>
     Android: Represents the number of system notifications by type that we
@@ -65653,7 +66030,7 @@
 </histogram>
 
 <histogram name="Mobile.SystemNotification.Dismiss"
-    enum="SystemNotificationType">
+    enum="SystemNotificationType" expires_after="2020-02-02">
   <owner>xingliu@chromium.org</owner>
   <summary>
     Records the type of notification when the user dismisses the Android
@@ -65674,7 +66051,8 @@
   </summary>
 </histogram>
 
-<histogram name="Mobile.SystemNotification.Shown" enum="SystemNotificationType">
+<histogram name="Mobile.SystemNotification.Shown" enum="SystemNotificationType"
+    expires_after="2020-02-02">
   <owner>dtrainor@chromium.org</owner>
   <summary>
     Android: Represents the number of system notifications that will be
@@ -65694,6 +66072,17 @@
   </summary>
 </histogram>
 
+<histogram name="MobileDownload.Background.TargetDeterminationResult"
+    enum="MobileDownloadBackgroundTargetDeterminationResult"
+    expires_after="2020-03-30">
+  <owner>qinmin@chromium.org</owner>
+  <owner>xingliu@chromium.org</owner>
+  <summary>
+    Android: Records the target determination result for downloads started in
+    the background, that is, while the browser process is not running.
+  </summary>
+</histogram>
+
 <histogram name="MobileDownload.BytesDownloaded" units="KB">
   <owner>qinmin@chromium.org</owner>
   <summary>
@@ -65738,7 +66127,7 @@
 </histogram>
 
 <histogram name="MobileDownload.DownloadResumption"
-    enum="MobileDownloadResumption">
+    enum="MobileDownloadResumption" expires_after="2020-02-02">
   <owner>qinmin@chromium.org</owner>
   <summary>
     Android: Records user interaction on the download resumption button.
@@ -65903,7 +66292,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="MobileDownload.ResumptionsCount">
+<histogram base="true" name="MobileDownload.ResumptionsCount"
+    expires_after="2020-02-02">
   <owner>qinmin@chromium.org</owner>
   <summary>
     Android: Records the number of resumptions for a download by resumption
@@ -66021,7 +66411,7 @@
 </histogram>
 
 <histogram name="MobileIntent.PageLoadDueToExternalApp" enum="ClientAppId"
-    expires_after="M77">
+    expires_after="2020-02-02">
   <owner>tedchoc@chromium.org</owner>
   <summary>
     Android: Count of page loads started by intents from external apps.
@@ -66029,7 +66419,7 @@
 </histogram>
 
 <histogram name="MobileOmnibox.PopupOpenDuration" units="ms"
-    expires_after="M77">
+    expires_after="2020-02-02">
   <owner>stkhapugin@chromium.org</owner>
   <owner>mpearson@chromium.org</owner>
   <owner>jdonnelly@chromium.org</owner>
@@ -66039,7 +66429,8 @@
   </summary>
 </histogram>
 
-<histogram name="MobileOmnibox.PressedClipboardSuggestionAge" units="ms">
+<histogram name="MobileOmnibox.PressedClipboardSuggestionAge" units="ms"
+    expires_after="2020-02-02">
   <owner>jdonnelly@chromium.org</owner>
   <owner>mpearson@chromium.org</owner>
   <summary>
@@ -66112,7 +66503,8 @@
   </summary>
 </histogram>
 
-<histogram name="MobileStartup.ColdStartupIntent" enum="MobileStartupIntent">
+<histogram name="MobileStartup.ColdStartupIntent" enum="MobileStartupIntent"
+    expires_after="2020-02-02">
   <owner>tedchoc@chromium.org</owner>
   <summary>
     For cold starts of Chrome (native not initialized at the time of intent),
@@ -66136,7 +66528,8 @@
   </summary>
 </histogram>
 
-<histogram name="MobileStartup.LaunchType" enum="LaunchType">
+<histogram name="MobileStartup.LaunchType" enum="LaunchType"
+    expires_after="2020-02-02">
   <owner>tedchoc@chromium.org</owner>
   <summary>
     The type of launching Chrome mobile app, e.g launch by hitting icon.
@@ -66244,7 +66637,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="MobileStartup.ToolbarFirstDrawTime2" units="ms">
+<histogram base="true" name="MobileStartup.ToolbarFirstDrawTime2" units="ms"
+    expires_after="2020-02-02">
   <owner>yusufo@chromium.org</owner>
   <summary>
     Android: The time it takes from launch to the completion of first draw for
@@ -66681,7 +67075,7 @@
   </summary>
 </histogram>
 
-<histogram name="MPArch.ChildProcessLaunchFirst">
+<histogram name="MPArch.ChildProcessLaunchFirst" expires_after="2020-02-02">
   <owner>ppi@chromium.org</owner>
   <summary>
     The time it takes to spawn the first child subprocess (including sandbox
@@ -66689,7 +67083,8 @@
   </summary>
 </histogram>
 
-<histogram name="MPArch.ChildProcessLaunchSubsequent">
+<histogram name="MPArch.ChildProcessLaunchSubsequent"
+    expires_after="2020-01-26">
   <owner>ppi@chromium.org</owner>
   <summary>
     The time it takes to spawn child sub processes not counting the first one.
@@ -66846,7 +67241,7 @@
 </histogram>
 
 <histogram name="MultiDevice.DeviceSyncService.FindEligibleDevices.Result"
-    enum="BooleanSuccess">
+    enum="BooleanSuccess" expires_after="2020-02-02">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>Result of trying to find eligible devices.</summary>
@@ -66941,7 +67336,7 @@
 
 <histogram
     name="MultiDevice.SecureChannel.BLE.GattConnectionToAuthentication.EffectiveSuccessRateWithRetries"
-    enum="BooleanSuccess">
+    enum="BooleanSuccess" expires_after="2020-02-02">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -66970,7 +67365,7 @@
 
 <histogram
     name="MultiDevice.SecureChannel.BLE.Performance.ReceiveAdvertisementToConnectionDuration.Background"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -66986,7 +67381,7 @@
 
 <histogram
     name="MultiDevice.SecureChannel.BLE.Performance.StartScanToAuthenticationDuration.Background"
-    units="ms">
+    units="ms" expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -67035,7 +67430,7 @@
 
 <histogram
     name="MultiDevice.SecureChannel.BLE.ReceiveAdvertisementToAuthentication.EffectiveSuccessRateWithRetries"
-    enum="BooleanSuccess">
+    enum="BooleanSuccess" expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -67047,7 +67442,7 @@
 
 <histogram
     name="MultiDevice.SecureChannel.BLE.ReceiveAdvertisementToGattConnection.EffectiveSuccessRateWithRetries"
-    enum="BooleanSuccess">
+    enum="BooleanSuccess" expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <summary>
@@ -67078,7 +67473,7 @@
 </histogram>
 
 <histogram name="MultiDeviceSetup.OOBE.UserChoice"
-    enum="MultiDeviceSetupOOBEUserChoice">
+    enum="MultiDeviceSetupOOBEUserChoice" expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <owner>khorimoto@chromium.org</owner>
   <owner>hsuregan@chromium.org</owner>
@@ -67202,7 +67597,8 @@
   </summary>
 </histogram>
 
-<histogram name="MultiProfile.UsersPerSessionIncremental">
+<histogram name="MultiProfile.UsersPerSessionIncremental"
+    expires_after="2020-02-02">
   <owner>skuhne@chromium.org</owner>
   <summary>
     The number of users simultaneously signed into a multiprofile session on
@@ -67931,6 +68327,35 @@
   </summary>
 </histogram>
 
+<histogram name="Navigation.ClientRedirectCycle.RedirectToReferrer"
+    enum="Boolean" expires_after="M82">
+  <owner>dougarnett@chromium.org</owner>
+  <summary>
+    Records when a client redirect cycle that is directly back to the referrer
+    is detected.
+  </summary>
+</histogram>
+
+<histogram name="Navigation.CommitTimeout.ErrorCode" enum="NetErrorCodes"
+    expires_after="M82">
+  <owner>cduvall@chromium.org</owner>
+  <owner>cmumford@chromium.org</owner>
+  <summary>
+    Logs the error code for each navigation commit timeout. This will be used to
+    debug http://crbug.com/934317.
+  </summary>
+</histogram>
+
+<histogram name="Navigation.CommitTimeout.IsMainFrame" enum="BooleanMainFrame"
+    expires_after="M82">
+  <owner>cduvall@chromium.org</owner>
+  <owner>cmumford@chromium.org</owner>
+  <summary>
+    Logs whether this was a main frame navigation for each navigation commit
+    timeout. This will be used to debug http://crbug.com/934317.
+  </summary>
+</histogram>
+
 <histogram name="Navigation.CommitTimeout.IsRendererProcessReady"
     enum="BooleanReady" expires_after="M82">
   <owner>cduvall@chromium.org</owner>
@@ -69486,7 +69911,7 @@
   </summary>
 </histogram>
 
-<histogram name="NCN.NetworkOperatorMCCMNC">
+<histogram name="NCN.NetworkOperatorMCCMNC" expires_after="2020-02-02">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@google.com</owner>
   <summary>
@@ -71207,6 +71632,9 @@
 </histogram>
 
 <histogram name="Net.CountOfSpdyServers" expires_after="M77">
+  <obsolete>
+    Removed on 2016-08.
+  </obsolete>
   <owner>bnc@chromium.org</owner>
   <owner>rch@chromium.org</owner>
   <summary>
@@ -73423,6 +73851,16 @@
   </summary>
 </histogram>
 
+<histogram name="Net.HttpServerProperties.CountOfServers" expires_after="M82">
+  <owner>zhongyi@chromium.org</owner>
+  <owner>mmenke@chromium.org</owner>
+  <summary>
+    The total number of ServerInfo structs written to the network service's
+    prefs file, recorded each time the HttpServerProperties are serialized to
+    update the copy stored on disk.
+  </summary>
+</histogram>
+
 <histogram name="Net.HttpServerProperties.UpdatePrefs"
     enum="HttpServerPropertiesUpdatePrefsLocation" expires_after="2018-08-30">
   <obsolete>
@@ -82410,6 +82848,37 @@
   </summary>
 </histogram>
 
+<histogram name="NetworkService.TimeToFirstResponse" units="ms"
+    expires_after="M82">
+  <owner>cduvall@chromium.org</owner>
+  <owner>cmumford@chromium.org</owner>
+  <summary>
+    How long it takes the network service to respond to the first mojo call.
+    This will be used to debug http://crbug.com/934317.
+  </summary>
+</histogram>
+
+<histogram name="NetworkService.TimeToFirstResponse.AfterCrash" units="ms"
+    expires_after="M82">
+  <owner>cduvall@chromium.org</owner>
+  <owner>cmumford@chromium.org</owner>
+  <summary>
+    How long it takes the network service to respond to the first mojo call
+    after a network service crash. This will be used to debug
+    http://crbug.com/934317.
+  </summary>
+</histogram>
+
+<histogram name="NetworkService.TimeToFirstResponse.OnStartup" units="ms"
+    expires_after="M82">
+  <owner>cduvall@chromium.org</owner>
+  <owner>cmumford@chromium.org</owner>
+  <summary>
+    How long it takes the network service to respond to the first mojo call on
+    startup. This will be used to debug http://crbug.com/934317.
+  </summary>
+</histogram>
+
 <histogram
     name="NetworkService.URLLoader.RequestInitiatorOriginLockCompatibility"
     enum="RequestInitiatorOriginLockCompatibility" expires_after="2020-06-30">
@@ -83372,6 +83841,9 @@
 
 <histogram name="NewTabPage.CustomizationAvailability.Backgrounds"
     enum="NTPBackgroundCustomizationAvailability" expires_after="M90">
+  <obsolete>
+    Deprecated 2019-08.
+  </obsolete>
   <owner>dbeam@chromium.org</owner>
   <owner>yyushkina@chromium.org</owner>
   <summary>
@@ -83383,6 +83855,9 @@
 
 <histogram name="NewTabPage.CustomizationAvailability.Shortcuts"
     enum="NTPShortcutCustomizationAvailability" expires_after="M90">
+  <obsolete>
+    Deprecated 2019-08.
+  </obsolete>
   <owner>dbeam@chromium.org</owner>
   <owner>yyushkina@chromium.org</owner>
   <summary>
@@ -85942,7 +86417,7 @@
 </histogram>
 
 <histogram name="NQE.CellularSignalStrength.AtECTComputation"
-    units="Signal Strength Level" expires_after="2019-12-01">
+    units="Signal Strength Level" expires_after="2020-01-26">
   <owner>tbansal@chromium.org</owner>
   <summary>
     Cellular signal strength level reported by the device at the time of ECT
@@ -85952,7 +86427,7 @@
 </histogram>
 
 <histogram name="NQE.CellularSignalStrength.ECTReduction"
-    units="ECT level reduction" expires_after="2019-12-01">
+    units="ECT level reduction" expires_after="2020-01-26">
   <owner>tbansal@chromium.org</owner>
   <summary>
     Number of buckets by which effective connection type was reduced or capped
@@ -85962,7 +86437,7 @@
 </histogram>
 
 <histogram name="NQE.CellularSignalStrength.LevelAvailable"
-    enum="BooleanAvailable">
+    enum="BooleanAvailable" expires_after="2020-01-26">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -85973,7 +86448,7 @@
 </histogram>
 
 <histogram name="NQE.CellularSignalStrength.LevelDifference"
-    units="Signal Strength Level">
+    units="Signal Strength Level" expires_after="2020-01-26">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -86035,7 +86510,8 @@
     requests to the peak observed queueing delay. The score is the percentage of
     total samples that follow the rule 'the more in-flight requests, the higher
     peak queueing delay' when a new peak queueing delay mapping sample is
-    acquired. This is emitted at the end of the current measurement period.
+    acquired. This is emitted at the end of the current measurement period and
+    only when there are at least 10 cached mapping samples.
   </summary>
 </histogram>
 
@@ -86098,7 +86574,7 @@
 </histogram>
 
 <histogram name="NQE.EffectiveConnectionType.OnECTComputation"
-    enum="NQEEffectiveConnectionType">
+    enum="NQEEffectiveConnectionType" expires_after="2020-01-26">
   <owner>tbansal@chromium.org</owner>
   <owner>bengr@chromium.org</owner>
   <summary>
@@ -86630,7 +87106,7 @@
 </histogram>
 
 <histogram name="NQE.WifiSignalStrength.AtECTComputation"
-    units="Signal Strength Level" expires_after="2019-12-01">
+    units="Signal Strength Level" expires_after="2020-02-02">
   <owner>tbansal@chromium.org</owner>
   <summary>
     Wifi signal strength level reported by the device at the time of ECT
@@ -90349,6 +90825,7 @@
 
   <owner>rsorokin@chromium.org</owner>
   <owner>alemate@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     Time from acceptance of the EULA until the login screen is first displayed.
   </summary>
@@ -90442,6 +90919,7 @@
   <owner>alemate@chromium.org</owner>
   <owner>antrim@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>Time spent on specific OOBE screen.</summary>
 </histogram>
 
@@ -90486,6 +90964,16 @@
   </summary>
 </histogram>
 
+<histogram name="OptimizationGuide.HintsFetcher.GetHintsRequest.HintCount"
+    expires_after="M82">
+  <owner>mcrouse@chromium.org</owner>
+  <owner>sophiechang@chromium.org</owner>
+  <summary>
+    Records the number of hints received from the remote Optimization Guide
+    Service for every successful HintsFetch request.
+  </summary>
+</histogram>
+
 <histogram name="OptimizationGuide.HintsFetcher.GetHintsRequest.HostCount"
     units="total host count" expires_after="M80">
   <owner>mcrouse@chromium.org</owner>
@@ -93678,6 +94166,32 @@
   </summary>
 </histogram>
 
+<histogram base="true" name="PageLoad.HeavyAds.ComputedType"
+    enum="HeavyAdStatus" expires_after="2020-08-05">
+  <owner>johnidel@chromium.org</owner>
+  <owner>jkarlin@chromium.org</owner>
+  <summary>
+    Records heavy ad type for each ad frame, as determine by the ifrst threshold
+    hit (see FrameData::HeavyadStatus). This is recorded regardless of feature
+    flag or other conditions that prevent the heavy ad intervention from
+    occuring. Recored for all ad frames with non-zero bytes. Recorded when the
+    ad frame destroyed or when the page is destroyed.
+  </summary>
+</histogram>
+
+<histogram base="true" name="PageLoad.HeavyAds.InterventionType"
+    enum="HeavyAdStatus" expires_after="2020-08-05">
+  <owner>johnidel@chromium.org</owner>
+  <owner>jkarlin@chromium.org</owner>
+  <summary>
+    Records the type of heavy ad unloaded by the heavy ad intervention. Heavy ad
+    type is determined by the first threshold hit. This is not recorded for ad
+    frames that are considered heavy but did not fufill other criteria for the
+    intervention. This includes the feature being enabled and being below the
+    per-origin intervention cap.
+  </summary>
+</histogram>
+
 <histogram name="PageLoad.InputTiming.NavigationToFirstNonScroll.AfterPaint"
     units="ms" expires_after="M77">
   <owner>tdresser@chromium.org</owner>
@@ -93751,12 +94265,9 @@
 </histogram>
 
 <histogram name="PageLoad.InteractiveTiming.FirstInputDelay3" units="ms"
-    expires_after="never">
-<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
-
+    expires_after="2020-02-23">
   <owner>tdresser@chromium.org</owner>
   <owner>speed-metrics-dev@chromium.org</owner>
-  <owner>chrome-analysis-team@google.com</owner>
   <summary>
     Measures First Input Delay, the duration between the hardware timestamp and
     the start of event processing on the main thread for the first meaningful
@@ -93764,14 +94275,17 @@
     https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls.
 
     Do not modify this metric in any way without contacting
-    speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com.
+    speed-metrics-dev@chromium.org.
   </summary>
 </histogram>
 
 <histogram name="PageLoad.InteractiveTiming.FirstInputDelay4" units="ms"
-    expires_after="2020-02-23">
+    expires_after="never">
+<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
+
   <owner>tdresser@chromium.org</owner>
   <owner>speed-metrics-dev@chromium.org</owner>
+  <owner>chrome-analysis-team@google.com</owner>
   <summary>
     This metric will replace PageLoad.InteractiveTiming.FirstInputDelay3 if the
     SkipTouchEventFilter experiment launches.
@@ -93780,6 +94294,9 @@
     the start of event processing on the main thread for the first meaningful
     input per navigation. Recorded on first page interaction. See
     https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls.
+
+    Do not modify this metric in any way without contacting
+    speed-metrics-dev@chromium.org AND chrome-analysis-team@google.com.
   </summary>
 </histogram>
 
@@ -95170,6 +95687,18 @@
 
 <histogram name="PaintHolding.InputTiming" enum="PaintHoldingInputTiming"
     expires_after="M80">
+  <obsolete>
+    Replaced with PaintHolding.InputTiming2 in M-79.
+  </obsolete>
+  <owner>schenney@chromium.org</owner>
+  <owner>paint-dev@chromium.org</owner>
+  <summary>
+    Records whether or not input arrived before the first commit.
+  </summary>
+</histogram>
+
+<histogram name="PaintHolding.InputTiming2" enum="PaintHoldingInputTiming"
+    expires_after="M80">
   <owner>schenney@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
   <summary>
@@ -96974,7 +97503,7 @@
 </histogram>
 
 <histogram name="PasswordManager.PrefilledUsernameFillOutcome"
-    enum="PrefilledUsernameFillOutcome" expires_after="M78">
+    enum="PrefilledUsernameFillOutcome" expires_after="M82">
   <owner>ioanap@chromium.org</owner>
   <summary>
     Records successful fills of prefilled username values known as placeholders
@@ -98231,6 +98760,52 @@
   <summary>True when a service worker times out 5 mins after request.</summary>
 </histogram>
 
+<histogram name="PaymentRequest.TimeToCheckout.Completed" units="ms">
+  <owner>sahel@chromium.org</owner>
+  <summary>
+    Records the time between a payment request .show() and its completion.
+  </summary>
+</histogram>
+
+<histogram name="PaymentRequest.TimeToCheckout.Completed.Shown" units="ms">
+<!-- Name completed by histogram_suffixes name="PaymentRequestCompletedInstrument" -->
+
+  <owner>sahel@chromium.org</owner>
+  <summary>
+    Records the time between a payment request .show() and its completion when
+    payment sheet is shown.
+  </summary>
+</histogram>
+
+<histogram name="PaymentRequest.TimeToCheckout.Completed.SkippedShow"
+    units="ms">
+<!-- Name completed by histogram_suffixes name="PaymentRequestCompletedInstrument" -->
+
+  <owner>sahel@chromium.org</owner>
+  <summary>
+    Records the time between a payment request .show() and its completion when
+    payment sheet is skipped.
+  </summary>
+</histogram>
+
+<histogram name="PaymentRequest.TimeToCheckout.OtherAborted" units="ms">
+  <owner>sahel@chromium.org</owner>
+  <summary>
+    Records the time between a payment request .show() and its termination by
+    any factors other than the user (e.g. merchant).
+  </summary>
+</histogram>
+
+<histogram name="PaymentRequest.TimeToCheckout.UserAborted" units="ms">
+<!-- Name completed by histogram_suffixes name="PaymentRequestPaymentSheetShowStatus" -->
+
+  <owner>sahel@chromium.org</owner>
+  <summary>
+    Records the time between a payment request .show() and its termination by
+    user.
+  </summary>
+</histogram>
+
 <histogram name="PaymentRequest.TransactionAmount.Completed"
     enum="PaymentRequestTransactionSize">
   <owner>sahel@chromium.org</owner>
@@ -98363,7 +98938,7 @@
   <summary>The size of PDF documents opened in the PDF viewer.</summary>
 </histogram>
 
-<histogram name="PDF.FormType" enum="PDFFormTypes">
+<histogram name="PDF.FormType" enum="PDFFormTypes" expires_after="2020-02-02">
   <owner>rharrison@chromium.org</owner>
   <summary>
     Tracks what types of forms are present in PDF document, logged when the
@@ -98371,7 +98946,7 @@
   </summary>
 </histogram>
 
-<histogram name="PDF.HasAttachment" enum="Boolean">
+<histogram name="PDF.HasAttachment" enum="Boolean" expires_after="2020-01-26">
   <owner>hnakashima@chromium.org</owner>
   <summary>
     Measures if PDFs opened in the PDF viewer have attachments. This is logged
@@ -98390,7 +98965,7 @@
   </summary>
 </histogram>
 
-<histogram name="PDF.IsLinearized" enum="Boolean" expires_after="M77">
+<histogram name="PDF.IsLinearized" enum="Boolean" expires_after="2020-01-26">
   <obsolete>
     Removed in July 2019.
   </obsolete>
@@ -98401,7 +98976,8 @@
   </summary>
 </histogram>
 
-<histogram name="PDF.IsTagged" enum="BooleanIsTagged">
+<histogram name="PDF.IsTagged" enum="BooleanIsTagged"
+    expires_after="2020-01-26">
   <owner>hnakashima@chromium.org</owner>
   <summary>
     Tracks documents opened in the PDF viewer that are Tagged PDFs.
@@ -103090,7 +103666,8 @@
 </histogram>
 
 <histogram name="Plugin.PowerSaver.PeripheralHeuristicInitialDecision"
-    enum="PluginPowerSaverPeripheralHeuristicDecision" expires_after="M77">
+    enum="PluginPowerSaverPeripheralHeuristicDecision"
+    expires_after="2020-01-26">
   <owner>tommycli@chromium.org</owner>
   <summary>
     Records the initial decision of the Plugin Power Saver peripheral content
@@ -103100,7 +103677,7 @@
 </histogram>
 
 <histogram name="Plugin.PowerSaver.PosterParamPresence"
-    enum="PluginPowerSaverPosterParamPresence" expires_after="M77">
+    enum="PluginPowerSaverPosterParamPresence" expires_after="2020-01-26">
   <owner>tommycli@chromium.org</owner>
   <summary>
     Record how many plugin object tags use poster param. This is recorded once
@@ -103109,7 +103686,7 @@
 </histogram>
 
 <histogram name="Plugin.PowerSaver.Unthrottle"
-    enum="PluginPowerSaverUnthrottleMethod">
+    enum="PluginPowerSaverUnthrottleMethod" expires_after="2020-01-26">
   <owner>tommycli@chromium.org</owner>
   <summary>
     Record how many throttled plugins are unthrottled, and by what method.
@@ -103212,7 +103789,7 @@
 </histogram>
 
 <histogram name="PluginVm.SetupResult" enum="PluginVmSetupResult"
-    expires_after="2019-12-01">
+    expires_after="2020-02-02">
   <owner>aoldemeier@chromium.org</owner>
   <owner>okalitova@chromium.org</owner>
   <owner>timloh@chromium.org</owner>
@@ -103359,7 +103936,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.BatteryInfoSample" enum="BatteryInfoSampleResult">
+<histogram name="Power.BatteryInfoSample" enum="BatteryInfoSampleResult"
+    expires_after="2020-01-26">
   <owner>tbroch@chromium.org</owner>
   <summary>
     Counts the number of times we have read the battery status from sysfs and if
@@ -103391,7 +103969,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.BatteryRemainingAtEndOfSessionOnBattery" units="%">
+<histogram name="Power.BatteryRemainingAtEndOfSessionOnBattery" units="%"
+    expires_after="2020-02-02">
   <owner>tbroch@chromium.org</owner>
   <summary>
     Chrome OS remaining battery charge as percent of the maximum battery charge,
@@ -103399,7 +103978,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.BatteryRemainingAtStartOfSessionOnAC" units="%">
+<histogram name="Power.BatteryRemainingAtStartOfSessionOnAC" units="%"
+    expires_after="2020-01-26">
   <owner>tbroch@chromium.org</owner>
   <summary>
     Chrome OS remaining battery charge as percent of the maximum battery charge,
@@ -103407,7 +103987,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.BatteryRemainingAtStartOfSessionOnBattery" units="%">
+<histogram name="Power.BatteryRemainingAtStartOfSessionOnBattery" units="%"
+    expires_after="2020-02-02">
   <owner>tbroch@chromium.org</owner>
   <summary>
     Chrome OS remaining battery charge as percent of the maximum battery charge,
@@ -103533,7 +104114,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.DarkResumeWakeDurationMs.Other" units="ms">
+<histogram name="Power.DarkResumeWakeDurationMs.Other" units="ms"
+    expires_after="2020-01-26">
   <owner>chirantan@chromium.org</owner>
   <owner>abhishekbh@chromium.org</owner>
   <owner>ravisadineni@chromium.org</owner>
@@ -103573,7 +104155,7 @@
   </summary>
 </histogram>
 
-<histogram name="Power.DarkResumeWakeupsPerHour">
+<histogram name="Power.DarkResumeWakeupsPerHour" expires_after="2020-01-26">
   <owner>chirantan@chromium.org</owner>
   <summary>
     The number of times a system woke up in dark resume in an hour. Note that
@@ -103624,7 +104206,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.FirmwareResumeTimeOnAC" units="ms">
+<histogram name="Power.FirmwareResumeTimeOnAC" units="ms"
+    expires_after="2020-01-26">
   <owner>tbroch@chromium.org</owner>
   <summary>
     The time that the firmware took to resume the Chrome OS device from
@@ -103734,7 +104317,7 @@
   </summary>
 </histogram>
 
-<histogram name="Power.IdleTimeOnBattery" units="ms">
+<histogram name="Power.IdleTimeOnBattery" units="ms" expires_after="2020-01-26">
   <owner>tbroch@chromium.org</owner>
   <owner>jiameng@chromium.org</owner>
   <summary>
@@ -103743,7 +104326,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.KernelResumeTimeOnAC" units="ms">
+<histogram name="Power.KernelResumeTimeOnAC" units="ms"
+    expires_after="2020-01-26">
   <owner>tbroch@chromium.org</owner>
   <summary>
     The time that the kernel took to resume the Chrome OS device from
@@ -103759,7 +104343,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.KernelSuspendTimeOnAC" units="ms">
+<histogram name="Power.KernelSuspendTimeOnAC" units="ms"
+    expires_after="2020-01-26">
   <owner>tbroch@chromium.org</owner>
   <summary>
     The time that the kernel took to suspend-to-RAM the Chrome OS device when
@@ -103784,7 +104369,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.LengthOfSession" units="seconds">
+<histogram name="Power.LengthOfSession" units="seconds"
+    expires_after="2020-01-26">
   <owner>tbroch@chromium.org</owner>
   <summary>
     The length of time, in seconds, that a user spent in a single session.
@@ -103816,7 +104402,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.Mac.AppleSMCOpened" enum="BooleanSuccess">
+<histogram name="Power.Mac.AppleSMCOpened" enum="BooleanSuccess"
+    expires_after="2020-01-26">
   <owner>sdy@chromium.org</owner>
   <summary>
     When metrics collection started, records true if a handle to the System
@@ -103929,7 +104516,7 @@
   </summary>
 </histogram>
 
-<histogram name="Power.NumberOfSessionsPerCharge">
+<histogram name="Power.NumberOfSessionsPerCharge" expires_after="2020-01-26">
   <owner>tbroch@chromium.org</owner>
   <summary>
     The number of user sessions that occured since the last time that the device
@@ -103963,7 +104550,7 @@
 </histogram>
 
 <histogram name="Power.PowerButtonPressInLaptopMode"
-    enum="PowerButtonPressType">
+    enum="PowerButtonPressType" expires_after="2020-01-26">
   <owner>minch@chromium.org</owner>
   <summary>
     Press power button in laptop mode will result in different scenarios
@@ -103973,7 +104560,7 @@
 </histogram>
 
 <histogram name="Power.PowerButtonPressInTabletMode"
-    enum="PowerButtonPressType">
+    enum="PowerButtonPressType" expires_after="2020-01-26">
   <owner>minch@chromium.org</owner>
   <summary>
     Press power button in tablet mode will result in different scenarios
@@ -104003,7 +104590,8 @@
   </summary>
 </histogram>
 
-<histogram name="Power.PowerSupplyType" enum="PowerSupplyType">
+<histogram name="Power.PowerSupplyType" enum="PowerSupplyType"
+    expires_after="2020-01-26">
   <owner>bleung@chromium.org</owner>
   <owner>tbroch@chromium.org</owner>
   <summary>
@@ -104151,7 +104739,8 @@
   </summary>
 </histogram>
 
-<histogram name="PowerML.ModelDim.Result" enum="PowerMLFinalResult">
+<histogram name="PowerML.ModelDim.Result" enum="PowerMLFinalResult"
+    expires_after="2020-02-02">
   <owner>jiameng@chromium.org</owner>
   <summary>
     What happens after screen is dimmed following model instruction. Only
@@ -104176,7 +104765,7 @@
 </histogram>
 
 <histogram name="PowerML.PreviousEventLogging.Result"
-    enum="PowerMLPreviousEventLoggingResult">
+    enum="PowerMLPreviousEventLoggingResult" expires_after="2020-02-02">
   <owner>jiameng@chromium.org</owner>
   <summary>
     Status of logging previous idle event after a screen dim imminent signal is
@@ -104184,7 +104773,8 @@
   </summary>
 </histogram>
 
-<histogram name="PowerML.SmartDimModel.RequestCanceledDuration" units="ms">
+<histogram name="PowerML.SmartDimModel.RequestCanceledDuration" units="ms"
+    expires_after="2020-02-02">
   <owner>amoylan@chromium.org</owner>
   <owner>jiameng@chromium.org</owner>
   <owner>napper@chromium.org</owner>
@@ -104195,7 +104785,8 @@
   </summary>
 </histogram>
 
-<histogram name="PowerML.SmartDimModel.RequestCompleteDuration" units="ms">
+<histogram name="PowerML.SmartDimModel.RequestCompleteDuration" units="ms"
+    expires_after="2020-02-02">
   <owner>amoylan@chromium.org</owner>
   <owner>jiameng@chromium.org</owner>
   <owner>napper@chromium.org</owner>
@@ -104207,7 +104798,7 @@
 </histogram>
 
 <histogram name="PowerML.SmartDimModel.Result"
-    enum="PowerMLSmartDimModelResult">
+    enum="PowerMLSmartDimModelResult" expires_after="2020-01-26">
   <owner>jiameng@chromium.org</owner>
   <summary>
     This is the status code returned by the model when calculating a user
@@ -104617,6 +105208,22 @@
   </summary>
 </histogram>
 
+<histogram name="Prefetch.Redirect" enum="PrefetchRedirect" expires_after="M83">
+  <owner>dom@chromium.org</owner>
+  <owner>yhirano@chromium.org</owner>
+  <owner>yoavweiss@chromium.org</owner>
+  <summary>
+    Recorded when a prefetch request is made, and when a prefetch request is
+    redirected. Specifically, PrefetchURLLoader::PrefetchURLLoader records
+    &quot;Prefetch request made&quot;, and PrefetchURLLoader::FollowRedirect
+    records one of the two redirection values. This is to collect data on how
+    often prefetch requests experience redirects. Note that when the
+    PrefetchRedirectError flag is enabled, no events are recorded. We do not
+    want to interact with this histogram when we're experimenting with the
+    redirect mode for prefetch requests.
+  </summary>
+</histogram>
+
 <histogram name="PrefetchedSignedExchangeCache.BodySize" units="bytes"
     expires_after="2019-12-31">
   <owner>horo@chromium.org</owner>
@@ -106441,7 +107048,8 @@
   </summary>
 </histogram>
 
-<histogram base="true" name="Previews.ServerLitePage.Penalty" units="ms">
+<histogram base="true" name="Previews.ServerLitePage.Penalty" units="ms"
+    expires_after="2020-01-26">
   <owner>robertogden@chromium.org</owner>
   <summary>
     The lost time spent attempting a server lite page via canceling and
@@ -106504,7 +107112,8 @@
   </summary>
 </histogram>
 
-<histogram name="Previews.ServerLitePage.Triggered" enum="Boolean">
+<histogram name="Previews.ServerLitePage.Triggered" enum="Boolean"
+    expires_after="2020-01-26">
   <owner>robertogden@chromium.org</owner>
   <summary>
     Whether or not the server lite page preview is triggered. Recorded on every
@@ -106523,7 +107132,7 @@
 </histogram>
 
 <histogram name="Previews.StalePreviewTimestampShown"
-    enum="PreviewsStalePreviewTimestamp" expires_after="M77">
+    enum="PreviewsStalePreviewTimestamp" expires_after="2020-12-31">
   <owner>robertogden@chromium.org</owner>
   <summary>
     Whether the timestamp for a stale preview was shown on the UI. If the
@@ -106645,6 +107254,16 @@
   </summary>
 </histogram>
 
+<histogram name="Printing.CUPS.MigratedMakeAndModel" enum="BooleanMigrated"
+    expires_after="M87">
+  <owner>luum@chromium.org</owner>
+  <owner>cros-printing-dev@chromium.org</owner>
+  <summary>
+    Records when a synced printer's outdated separate make and model strings
+    have been migrated to the new merged form.
+  </summary>
+</histogram>
+
 <histogram name="Printing.CUPS.PpdSource" enum="PpdSource" expires_after="M77">
   <obsolete>
     Most users do not provide their own PPDs.
@@ -106774,7 +107393,8 @@
   </summary>
 </histogram>
 
-<histogram name="PrintPreview.InitialDisplayTime" units="ms">
+<histogram name="PrintPreview.InitialDisplayTime" units="ms"
+    expires_after="2020-02-02">
   <owner>thestig@chromium.org</owner>
   <summary>
     Time from when print preview is intiated until the intial preview is sent to
@@ -106810,7 +107430,7 @@
   </summary>
 </histogram>
 
-<histogram name="PrintPreview.NumberOfPrinters">
+<histogram name="PrintPreview.NumberOfPrinters" expires_after="2020-01-26">
   <owner>thestig@chromium.org</owner>
   <summary>
     Count the total number of printers shown in destination drop down list.
@@ -106959,14 +107579,16 @@
   <summary>Print preview events.</summary>
 </histogram>
 
-<histogram name="PrintPreview.PrintDocumentSize.HTML" units="KB">
+<histogram name="PrintPreview.PrintDocumentSize.HTML" units="KB"
+    expires_after="2020-02-02">
   <owner>thestig@chromium.org</owner>
   <summary>
     The average size of a page in the printed document when the source is HTML.
   </summary>
 </histogram>
 
-<histogram name="PrintPreview.PrintDocumentSize.PDF" units="KB">
+<histogram name="PrintPreview.PrintDocumentSize.PDF" units="KB"
+    expires_after="2020-02-02">
   <owner>thestig@chromium.org</owner>
   <summary>
     The average size of a page in the printed document when the source is PDF.
@@ -106974,7 +107596,7 @@
 </histogram>
 
 <histogram name="PrintPreview.PrintDocumentType"
-    enum="PrintPreviewPrintDocumentTypeBuckets">
+    enum="PrintPreviewPrintDocumentTypeBuckets" expires_after="2020-01-26">
   <owner>rbpotter@chromium.org</owner>
   <summary>
     Track type of documents printed (HTML vs PDF). Recorded immediately after a
@@ -107051,7 +107673,8 @@
   </summary>
 </histogram>
 
-<histogram name="PrintPreview.RenderPDFPageTime" units="ms" expires_after="M77">
+<histogram name="PrintPreview.RenderPDFPageTime" units="ms"
+    expires_after="2020-02-02">
   <owner>thestig@chromium.org</owner>
   <summary>Time taken to render each PDF page for print preview.</summary>
 </histogram>
@@ -107148,7 +107771,8 @@
   </summary>
 </histogram>
 
-<histogram name="Privacy.ThirdPartyCookieBlockingSetting" enum="BooleanEnabled">
+<histogram name="Privacy.ThirdPartyCookieBlockingSetting" enum="BooleanEnabled"
+    expires_after="2020-01-26">
   <owner>mkwst@chromium.org</owner>
   <owner>msramek@chromium.org</owner>
   <summary>
@@ -107550,7 +108174,7 @@
   </summary>
 </histogram>
 
-<histogram name="Profile.NumberOfAccountsPerProfile">
+<histogram name="Profile.NumberOfAccountsPerProfile" expires_after="2020-02-02">
   <owner>msarda@chromium.org</owner>
   <owner>droger@chromium.org</owner>
   <summary>
@@ -107560,7 +108184,7 @@
   </summary>
 </histogram>
 
-<histogram name="Profile.NumberOfActiveProfiles">
+<histogram name="Profile.NumberOfActiveProfiles" expires_after="2020-01-26">
   <owner>feuunk@chromium.org</owner>
   <summary>
     Counts the number of profiles on a user's machine at least every 24 hours
@@ -107642,7 +108266,7 @@
   </summary>
 </histogram>
 
-<histogram name="Profile.NumberOfSignedInProfiles">
+<histogram name="Profile.NumberOfSignedInProfiles" expires_after="2020-02-02">
   <owner>rogerta@chromium.org</owner>
   <summary>
     Counts the number of signed-in profiles on a user's machine at least every
@@ -107965,6 +108589,29 @@
   </summary>
 </histogram>
 
+<histogram name="Profile.UserAction.PerProfile" enum="Profile"
+    expires_after="2020-07-30">
+  <owner>msarda@chromium.org</owner>
+  <owner>tangltom@chromium.org</owner>
+  <summary>
+    Helper histogram to track user actions per profile. Recorded when there is
+    an active profile browser instance and a UMA UserAction is recorded, i.e. if
+    there's an active profile, a recording of a UMA UserAction will result in a
+    recording of a sample in this histogram.
+
+    Each profile on a client is assigned a unique bucket, i.e. whenever a user
+    action happens in a browser of profile x, an entry is recorded in bucket x.
+
+    Example: A user has 2 profiles and opens a browser window for each of them.
+    When the user adds a new tab in each of the browsers, an entry is recorded
+    in bucket 1 and 2, corresponding to the profiles. (Adding a new tab is a
+    recorded user metrics action.)
+
+    Note: The guest profile has bucket 0. Regular profiles start at bucket 1.
+    Incognito profiles count towards the original profile.
+  </summary>
+</histogram>
+
 <histogram name="Profile.ValidateMenuItemInvalidIndex.IsGuest" enum="Boolean">
   <owner>anthonyvd@chromium.org</owner>
   <summary>
@@ -108001,7 +108648,8 @@
   <summary>Size of the web data database.</summary>
 </histogram>
 
-<histogram name="ProfileChooser.HasProfilesShown" enum="BooleanShown">
+<histogram name="ProfileChooser.HasProfilesShown" enum="BooleanShown"
+    expires_after="2020-02-02">
   <owner>vasilii@chromium.org</owner>
   <owner>ewald@chromium.org</owner>
   <summary>
@@ -108128,7 +108776,8 @@
   </summary>
 </histogram>
 
-<histogram name="ProtoDB.LoadKeysSuccess" enum="BooleanSuccess">
+<histogram name="ProtoDB.LoadKeysSuccess" enum="BooleanSuccess"
+    expires_after="2020-02-02">
   <owner>nyquist@chromium.org</owner>
   <owner>ssid@chromium.org</owner>
   <summary>Whether a ProtoDB LoadKeys call was successful or not.</summary>
@@ -108151,7 +108800,7 @@
 </histogram>
 
 <histogram name="ProximityAuth.BleWeaveConnectionResult"
-    enum="ProximityAuth_BleWeaveConnectionResult">
+    enum="ProximityAuth_BleWeaveConnectionResult" expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <summary>
     Provides a breakdown of how often each BLE weave connection result occurs.
@@ -108159,7 +108808,8 @@
 </histogram>
 
 <histogram name="ProximityAuth.BluetoothGattConnectionResult"
-    enum="ProximityAuth_BluetoothGattConnectionResult">
+    enum="ProximityAuth_BluetoothGattConnectionResult"
+    expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <summary>
     Provides a breakdown of how many times each possible Bluetooth GATT
@@ -108172,7 +108822,8 @@
 </histogram>
 
 <histogram name="ProximityAuth.BluetoothGattNotifySessionResult"
-    enum="ProximityAuth_BluetoothGattServiceOperationResult">
+    enum="ProximityAuth_BluetoothGattServiceOperationResult"
+    expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <summary>
     Provides a breakdown of how many times each possible Bluetooth GATT
@@ -108185,7 +108836,8 @@
 </histogram>
 
 <histogram name="ProximityAuth.BluetoothGattWriteCharacteristicResult"
-    enum="ProximityAuth_BluetoothGattServiceOperationResult">
+    enum="ProximityAuth_BluetoothGattServiceOperationResult"
+    expires_after="2020-01-26">
   <owner>hansberry@chromium.org</owner>
   <summary>
     Provides a breakdown of how many times each possible Bluetooth GATT
@@ -108682,7 +109334,7 @@
   </summary>
 </histogram>
 
-<histogram name="Quota.AgeOfDataInDays" units="days">
+<histogram name="Quota.AgeOfDataInDays" units="days" expires_after="2020-01-26">
   <owner>jarrydg@chromium.org</owner>
   <summary>
     How many kilobytes are how old. Similar to |AgeOfOrigin| except a sample is
@@ -108691,7 +109343,8 @@
   </summary>
 </histogram>
 
-<histogram name="Quota.AgeOfOriginInDays" units="days">
+<histogram name="Quota.AgeOfOriginInDays" units="days"
+    expires_after="2020-01-26">
   <owner>jarrydg@chromium.org</owner>
   <summary>
     How many days it's been since an origin's temporary storage has been
@@ -108708,7 +109361,8 @@
   </summary>
 </histogram>
 
-<histogram name="Quota.DaysBetweenRepeatedOriginEvictions">
+<histogram name="Quota.DaysBetweenRepeatedOriginEvictions"
+    expires_after="2020-02-02">
   <owner>jarrydg@chromium.org</owner>
   <summary>
     The number of days since an origin was last chosen to be evicted from the
@@ -108760,7 +109414,8 @@
   </summary>
 </histogram>
 
-<histogram name="Quota.EvictedBytesPerRound" units="MB">
+<histogram name="Quota.EvictedBytesPerRound" units="MB"
+    expires_after="2020-01-26">
   <owner>jarrydg@chromium.org</owner>
   <summary>
     Amount of usage used by evicted origins in an eviction round.
@@ -108847,7 +109502,8 @@
   </summary>
 </histogram>
 
-<histogram name="Quota.NumberOfEvictedOriginsPerRound">
+<histogram name="Quota.NumberOfEvictedOriginsPerRound"
+    expires_after="2020-01-26">
   <owner>jarrydg@chromium.org</owner>
   <summary>Number of evicted origins per round.</summary>
 </histogram>
@@ -109905,6 +110561,17 @@
   </summary>
 </histogram>
 
+<histogram name="Renderer4.GpuImageDecodeState.CachePeakUsagePercent"
+    expires_after="2020-08-01">
+  <owner>sashamcintosh@chromium.org</owner>
+  <owner>ericrk@chromium.org</owner>
+  <summary>
+    The current number of bytes locked by the GpuImageDecodeCache compared to
+    the maximum allowed number of bytes to lock. This value is recorded every
+    time the tile manager assigns GPU memory to tiles.
+  </summary>
+</histogram>
+
 <histogram name="Renderer4.GpuImageDecodeState.FirstLockWasted"
     enum="BooleanWasted">
   <owner>vmpstr@chromium.org</owner>
@@ -114294,6 +114961,9 @@
 
 <histogram name="SafeBrowsing.ThreatReport.DomIsAmbiguous" enum="Boolean"
     expires_after="M77">
+  <obsolete>
+    Removed in M78 due to lack of use and utility. See crbug.com/975258
+  </obsolete>
   <owner>lpz@chromium.org</owner>
   <summary>
     A threat report contains a DOM hierarchy that is ambiguous. This indicates
@@ -114304,6 +114974,9 @@
 
 <histogram name="SafeBrowsing.ThreatReport.MaxNodesExceededInFrame"
     enum="BooleanExceeded" expires_after="M77">
+  <obsolete>
+    Removed in M78 due to lack of use and utility. See crbug.com/975258
+  </obsolete>
   <owner>lpz@chromium.org</owner>
   <summary>
     Whether the threat report generated for a subframe of a page hit the maximum
@@ -116301,7 +116974,7 @@
   </summary>
 </histogram>
 
-<histogram name="SB2.RemoteCall.Elapsed" units="ms">
+<histogram name="SB2.RemoteCall.Elapsed" units="ms" expires_after="2020-02-02">
   <owner>vakh@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <summary>
@@ -116646,7 +117319,7 @@
 </histogram>
 
 <histogram name="SBClientDownload.CheckDownloadStats"
-    enum="SBClientDownloadCheckDownloadStats">
+    enum="SBClientDownloadCheckDownloadStats" expires_after="2020-01-26">
   <owner>vakh@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <owner>mattm@chromium.org</owner>
@@ -116779,7 +117452,7 @@
 </histogram>
 
 <histogram name="SBClientDownload.DownloadExtensions"
-    enum="SBClientDownloadExtensions">
+    enum="SBClientDownloadExtensions" expires_after="2020-01-26">
   <owner>vakh@chromium.org</owner>
   <owner>chrome-safebrowsing-alerts@google.com</owner>
   <owner>mattm@chromium.org</owner>
@@ -123920,6 +124593,35 @@
   </summary>
 </histogram>
 
+<histogram name="ServiceWorkerCache.PeakParallelSharedOps" units="operations"
+    expires_after="M85">
+  <obsolete>
+    Replaced in M78 with ServiceWorkerCache.PeakParallelSharedOps2 that uses a
+    smaller histogram range with the same number of buckets in order to improve
+    bucket granularity.
+  </obsolete>
+  <owner>wanderview@chromium.org</owner>
+  <owner>chrome-owp-storage@google.com</owner>
+  <summary>
+    The peak number of shared operations that ran simultaneously during a single
+    &quot;batch&quot; of operations. A batch is defined as the time from when an
+    idle scheduler begins running a shared operation until the count of running
+    shared operations drops back to zero.
+  </summary>
+</histogram>
+
+<histogram name="ServiceWorkerCache.PeakParallelSharedOps2" units="operations"
+    expires_after="M85">
+  <owner>wanderview@chromium.org</owner>
+  <owner>chrome-owp-storage@google.com</owner>
+  <summary>
+    The peak number of shared operations that ran simultaneously during a single
+    &quot;batch&quot; of operations. A batch is defined as the time from when an
+    idle scheduler begins running a shared operation until the count of running
+    shared operations drops back to zero.
+  </summary>
+</histogram>
+
 <histogram name="ServiceWorkerCache.Response.HasDeprecatedURL" enum="Boolean"
     expires_after="M77">
   <obsolete>
@@ -125088,6 +125790,7 @@
     expires_after="M97">
   <owner>rsorokin@chromium.org</owner>
   <owner>jessejames@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     The users progress through the pin unlock setup wizard. Each type
     corresponds to the user completeing a different stage of the setup wizard.
@@ -126707,7 +127410,7 @@
   <owner>msalama@chromium.org</owner>
   <owner>msarda@chromium.org</owner>
   <summary>
-    Tracks the reason of why DICE migration is not ready. It is computed by dice
+    Tracks the reason of why DICE migration is not ready. It is computed by Dice
     reconcilor delegate on every reconciliation cycle.
   </summary>
 </histogram>
@@ -127336,8 +128039,8 @@
   <owner>msarda@chromium.org</owner>
   <summary>
     Tracks the state of kTokenServiceDiceCompatible preference. This is recorded
-    at every startup, if the account consistency method is in dice migration and
-    is not ready yet to migrate to dice.
+    at every startup, if the account consistency method is in Dice migration and
+    is not ready yet to migrate to Dice.
   </summary>
 </histogram>
 
@@ -129261,7 +129964,7 @@
 </histogram>
 
 <histogram name="SiteIsolation.XSD.Browser.Blocked.CanonicalMimeType"
-    enum="CorbCanonicalMimeType" expires_after="M79">
+    enum="CorbCanonicalMimeType" expires_after="M81">
   <owner>creis@chromium.org</owner>
   <owner>lukasza@chromium.org</owner>
   <summary>
@@ -130140,9 +130843,30 @@
   </summary>
 </histogram>
 
-<histogram name="SmartLock.GetRemoteStatus.SignIn" enum="BooleanSuccess">
+<histogram name="SmartLock.FindAndConnectToHostResult.SignIn"
+    enum="SmartLockFindAndConnectToHostResult" expires_after="2020-08-07">
   <owner>hansberry@chromium.org</owner>
-  <owner>hsuregan@chromium.org</owner>
+  <owner>jhawkins@chromium.org</owner>
+  <summary>
+    The resolution of Smart Lock trying to find the host device during the
+    initial scan window at the signin screen.
+  </summary>
+</histogram>
+
+<histogram name="SmartLock.FindAndConnectToHostResult.Unlock"
+    enum="SmartLockFindAndConnectToHostResult" expires_after="2020-08-07">
+  <owner>hansberry@chromium.org</owner>
+  <owner>jhawkins@chromium.org</owner>
+  <summary>
+    The resolution of Smart Lock trying to find the host device during the
+    initial scan window at the lock screen.
+  </summary>
+</histogram>
+
+<histogram name="SmartLock.GetRemoteStatus.SignIn" enum="BooleanSuccess"
+    expires_after="2020-08-07">
+  <owner>hansberry@chromium.org</owner>
+  <owner>jhawkins@chromium.org</owner>
   <summary>
     Count of successful and failed attempts to get the 'remote status' of the
     host device, i.e., determine if the Chromebook can be signed into.
@@ -130150,16 +130874,20 @@
 </histogram>
 
 <histogram name="SmartLock.GetRemoteStatus.SignIn.Failure"
-    enum="SmartLockGetRemoteStatusResultFailureReason">
+    enum="SmartLockGetRemoteStatusResultFailureReason"
+    expires_after="2020-08-07">
   <owner>hansberry@chromium.org</owner>
+  <owner>jhawkins@chromium.org</owner>
   <summary>
     Shows why a sign in attempt failed during the connection phase. Breaks down
     the failure bucket of SmartLock.ConnectionResult.
   </summary>
 </histogram>
 
-<histogram name="SmartLock.GetRemoteStatus.Unlock" enum="BooleanSuccess">
+<histogram name="SmartLock.GetRemoteStatus.Unlock" enum="BooleanSuccess"
+    expires_after="2020-08-07">
   <owner>hansberry@chromium.org</owner>
+  <owner>jhawkins@chromium.org</owner>
   <summary>
     Count of successful and failed attempts to get the 'remote status' of the
     host device, i.e., determine if the Chromebook can be unlocked.
@@ -130167,8 +130895,10 @@
 </histogram>
 
 <histogram name="SmartLock.GetRemoteStatus.Unlock.Failure"
-    enum="SmartLockGetRemoteStatusResultFailureReason">
+    enum="SmartLockGetRemoteStatusResultFailureReason"
+    expires_after="2020-08-07">
   <owner>hansberry@chromium.org</owner>
+  <owner>jhawkins@chromium.org</owner>
   <summary>
     Shows why an unlock attempt failed during the connection phase. Breaks down
     the failure bucket of SmartLock.ConnectionResult.
@@ -130186,8 +130916,34 @@
 </histogram>
 
 <histogram
+    name="SmartLock.Performance.AuthenticationToReceiveFirstRemoteStatusDuration.Unlock"
+    units="ms" expires_after="2020-07-23">
+<!-- Name completed by histogram_suffixes name="SmartLockStatusTypes" -->
+
+  <owner>hansberry@chromium.org</owner>
+  <owner>jhawkins@chromium.org</owner>
+  <summary>
+    The duration of time between when Smart Lock successfully establishes a
+    secure channel connection to the host device, and receives the initial
+    remote status from it -- this informs if the device can be unlocked on the
+    first remote status (i.e., if the Smart Lock icon is yellow or green).
+
+    Suffixed by the type of remote status which was the first to be received.
+    View the base histogram to see results for all remote status types
+    aggregated together, and suffixed histograms for the results of just that
+    particular remote status type.
+
+    See SmartLock.GetRemoteStatus.Unlock for the success rate of fetching the
+    remote status from the host.
+  </summary>
+</histogram>
+
+<histogram
     name="SmartLock.Performance.AuthenticationToReceiveUnlockableRemoteStatus.Duration.Unlock"
     units="ms" expires_after="2020-02-01">
+  <obsolete>
+    Removed 2019/08.
+  </obsolete>
   <owner>hansberry@chromium.org</owner>
   <summary>
     The duration of time between when Smart Lock successfully establishes a
@@ -130198,8 +130954,64 @@
 </histogram>
 
 <histogram
+    name="SmartLock.Performance.ShowLockScreenToShowFirstStatusToUserDuration.Unlock"
+    units="ms" expires_after="2020-07-23">
+<!-- Name completed by histogram_suffixes name="SmartLockStatusTypes" -->
+
+  <owner>hansberry@chromium.org</owner>
+  <owner>jhawkins@chromium.org</owner>
+  <summary>
+    The duration of time between when the user locks their screen or wakes their
+    device (either opening a clamshell device or waking up a tablet), and when
+    the user is first provided a visible indication of Smart Lock's status (the
+    Smart Lock icon presents as either yellow or green, with a tooltip
+    explaining the status).
+
+    Suffixed by the type of status which the user is first presented with. View
+    the base histogram to see results for all status types aggregated together,
+    and suffixed histograms for the results of just that particular remote
+    status type.
+
+    See SmartLock.GetRemoteStatus.Unlock for the success rate of fetching the
+    remote status from the host.
+  </summary>
+</histogram>
+
+<histogram
+    name="SmartLock.Performance.StartScanToReceiveFirstRemoteStatusDuration.Unlock"
+    units="ms" expires_after="2020-07-23">
+<!-- Name completed by histogram_suffixes name="SmartLockStatusTypes" -->
+
+  <owner>hansberry@chromium.org</owner>
+  <owner>jhawkins@chromium.org</owner>
+  <summary>
+    The duration of time between when Smart Lock begins to try to find the host
+    device, and receives the initial remote status from it -- this informs if
+    the device can be unlocked on the first remote status (i.e., if the Smart
+    Lock icon is yellow or green).
+
+    Suffixed by the type of remote status which was the first to be received.
+    View the base histogram to see results for all remote status types
+    aggregated together, and suffixed histograms for the results of just that
+    particular remote status type.
+
+    See
+    MultiDevice.SecureChannel.BLE.Performance.StartScanToAuthenticationDuration.Background
+    and
+    SmartLock.Performance.AuthenticationToReceiveFirstRemoteStatus.Unlock.Duration
+    for breakdowns of this metric.
+
+    See SmartLock.GetRemoteStatus.Unlock for the success rate of fetching the
+    remote status from the host.
+  </summary>
+</histogram>
+
+<histogram
     name="SmartLock.Performance.StartScanToReceiveUnlockableRemoteStatus.Duration.Unlock"
     units="ms" expires_after="2020-02-01">
+  <obsolete>
+    Removed 2019/08.
+  </obsolete>
   <owner>hansberry@chromium.org</owner>
   <summary>
     The duration of time between when Smart Lock begins to try to find the host
@@ -130238,7 +131050,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.CleaningTime" units="ms">
-  <owner>alito@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The time between sending the user's response to the Chrome Cleaner process
     and the Cleaner process terminating. This histogram is logged only for
@@ -130248,7 +131060,7 @@
 
 <histogram name="SoftwareReporter.Cleaner.CleanupResult"
     enum="SoftwareReporterCleanupResult">
-  <owner>ftirelo@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The final status of the Chrome Cleanup Tool run (e.g. succeeded, failed,
     reboot required).
@@ -130261,15 +131073,15 @@
     Deprecated as of 09/2017. Replaced with
     SoftwareReporter.Cleaner.DownloadStatusErrorCode.
   </obsolete>
-  <owner>ftirelo@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The HTTP response code for the Chrome Cleanup Tool download request.
   </summary>
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.DownloadStatus"
-    enum="SoftwareReporterCleanerDownloadStatus" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="SoftwareReporterCleanerDownloadStatus" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     An indication if an attempt to download the Chrome Cleanup Tool succeeded or
     the reason why it failed.
@@ -130277,8 +131089,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.DownloadStatusErrorCode"
-    enum="CombinedHttpResponseAndNetErrorCode" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="CombinedHttpResponseAndNetErrorCode" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The HTTP response or net error code when trying to download the Chrome
     Cleanup Tool.
@@ -130286,7 +131098,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.HasCompleted" enum="SRTCompleted">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The state of software reporter cleaner tool runs. A value of &quot;Not
     Completed&quot; can mean either the tool crashed, or the tool was still
@@ -130295,7 +131107,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.HasRebooted" enum="BooleanRebooted">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether a reboot happened since the software reporter cleaner tool has
     finished execution with a pre-reboot exit code.
@@ -130307,7 +131119,7 @@
   <obsolete>
     Deprecated on 2018-01-15.
   </obsolete>
-  <owner>ftirelo@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The number of attempts to download the Chrome Cleanup tool until it either
     succeeds or fails.
@@ -130319,7 +131131,7 @@
   <obsolete>
     Deprecated on 2019-05-29.
   </obsolete>
-  <owner>veranika@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Indicates how the user was prompted to reboot the machine to complete a run
     of the Chrome Cleanup Tool.
@@ -130327,7 +131139,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.RebootResponse" enum="Boolean">
-  <owner>ftirelo@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Indicates that the user accepted to initiate a reboot to complete a run of
     the Chrome Cleanup Tool. This is logged the user starts a reboot from the
@@ -130338,12 +131150,12 @@
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.RunningTime" units="ms">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>How long it took to run the software reporter cleaner tool.</summary>
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.ScanningTime" units="ms">
-  <owner>alito@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The time between launching the Chrome Cleaner process and the cleaner having
     scanned the user's machine and Chrome receiving an IPC call with the
@@ -130353,7 +131165,7 @@
 
 <histogram name="SoftwareReporter.Cleaner.SettingsPageActiveOnRebootRequired"
     enum="SoftwareReporterCleanerSettingsPageActiveOnRebootRequired">
-  <owner>ftirelo@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Indicates if the Settings page was the active tab once a cleanup finished
     with reboot required.
@@ -130361,7 +131173,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.TimeToCompleteDownload" units="ms">
-  <owner>ftirelo@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The time between the first attempt to download the Chrome Cleanup tool and a
     successful download or the last unsuccessful attempt to download without
@@ -130370,13 +131182,13 @@
 </histogram>
 
 <histogram name="SoftwareReporter.Cleaner.Version">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>The build version of the software reporter cleaner tool.</summary>
 </histogram>
 
 <histogram name="SoftwareReporter.CleanerLogsAcceptance" enum="BooleanAccepted"
-    expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether the user accepted to upload logs from Chrome Cleanup Tool. This is
     logged when the user accepts the Chrome prompt to start a cleanup either
@@ -130385,8 +131197,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.CleanupCard" enum="Boolean"
-    expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether the Chrome Cleanup Tool card in the Settings page has been shown.
   </summary>
@@ -130394,7 +131206,7 @@
 
 <histogram name="SoftwareReporter.CleanupStarted"
     enum="SoftwareReporterCleanupStarted">
-  <owner>ftirelo@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Indicates where the user started a cleanup from (e.g. from the prompt dialog
     or the settings page).
@@ -130403,7 +131215,7 @@
 
 <histogram name="SoftwareReporter.ExperimentErrors"
     enum="SoftwareReporterExperimentError">
-  <owner>joenotcharles@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether a configuration error prevented the experimental Software Reporter
     from running.
@@ -130411,7 +131223,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.FoundUwSReadError" enum="BooleanError">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether there was an error reading the registry key containing UwS found by
     the Software Removal Tool.
@@ -130419,8 +131231,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.IPCDisconnected"
-    enum="SoftwareReporterIPCDisconnected" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="SoftwareReporterIPCDisconnected" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Indicates when the IPC with the Chrome Cleanup Tool process is disconnected
     from Chrome. Success is logged when it's disconnected and no longer needed
@@ -130433,13 +131245,13 @@
 </histogram>
 
 <histogram name="SoftwareReporter.LastUploadResult" enum="BooleanSuccess">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>The result of the most recent SRT log upload.</summary>
 </histogram>
 
 <histogram name="SoftwareReporter.LogsUploadEnabled"
-    enum="SoftwareReporterLogsUploadEnabled" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="SoftwareReporterLogsUploadEnabled" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     If logs uploads are enabled in the Software Reporter or the reason why it is
     disabled. Recorded before each run of the Software Reporter.
@@ -130447,8 +131259,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.LogsUploadResult"
-    enum="SoftwareReporterLogsUploadResult" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="SoftwareReporterLogsUploadResult" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The result of the most recent Software Reporter logs upload. Written by the
     Software Reporter in the registry and sent by Chrome after the reporter
@@ -130457,8 +131269,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.LogsUploadResultRegistryError"
-    enum="SoftwareReporterLogsUploadResultRegistryError" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="SoftwareReporterLogsUploadResultRegistryError" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Error encountered when reading the software reporter logs upload result from
     the registry.
@@ -130466,7 +131278,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.MajorVersion">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     As SoftwareReporter.MinorVersion, but a double word combination of the other
     components of the version of the software reporter. The high word is the
@@ -130476,7 +131288,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.MemoryUsed" units="KB">
-  <owner>alito@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The memory used by the software reporter tool as reported by the tool itself
     via the registry. Logged just after the software reporter tool has finished.
@@ -130484,7 +131296,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.MinorVersion">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The last component of the version of the software reporter that was executed
     so we can identify when users are not getting their component updated as
@@ -130493,8 +131305,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.NoPromptReason"
-    enum="SoftwareReporterNoPromptReason" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="SoftwareReporterNoPromptReason" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The reason why the user has not been prompted to run the Chrome Cleanup Tool
     (e.g. no unwanted software found, user recently prompted).
@@ -130502,16 +131314,16 @@
 </histogram>
 
 <histogram name="SoftwareReporter.NumberOfFilesToDelete" units="counts"
-    expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The number of files to be deleted by the Chrome Cleanup Tool.
   </summary>
 </histogram>
 
 <histogram name="SoftwareReporter.OnDemandUpdateRequired"
-    enum="BooleanRequired" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="BooleanRequired" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether an on-demand update of the Software Reporter component was needed
     for a user-initiated cleanup.
@@ -130519,8 +131331,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.OnDemandUpdateSucceeded"
-    enum="BooleanSuccess" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="BooleanSuccess" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether an on-demand update of the Software Reporter component succeeded,
     when needed for a user-initiated cleanup.
@@ -130528,8 +131340,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.PostCleanupSettingsReset" units="counts"
-    expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The number of profiles whose settings will be reset once a successful
     cleanup completes.
@@ -130537,7 +131349,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.PromptDialog.TimeUntilDone" units="ms">
-  <owner>alito@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The time between the Chrome Cleaner dialog being shown and the dialog being
     closed.
@@ -130545,8 +131357,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.PromptDialogResponse"
-    enum="SoftwareReporterPromptDialogResponse" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="SoftwareReporterPromptDialogResponse" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The user response on the modal Chrome Cleanup Tool prompt dialog (e.g.
     accepted, cancelled).
@@ -130558,15 +131370,15 @@
   <obsolete>
     Replaced 2017-08-01 with SoftwareReporter.PromptShownWithType.
   </obsolete>
-  <owner>ftirelo@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether the user has been prompted to run the Chrome Cleanup Tool.
   </summary>
 </histogram>
 
 <histogram name="SoftwareReporter.PromptShownWithType"
-    enum="SoftwareReporterPromptShownWithType" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="SoftwareReporterPromptShownWithType" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether the user has been prompted to run the Chrome Cleanup Tool and which
     type of prompt has been shown.
@@ -130581,19 +131393,19 @@
     Deprecated as of 2017-11-01. Replaced with
     SoftwareReporter.PromptDialogResponse.
   </obsolete>
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>Usage of the Software Removal Tool (SRT) Prompt.</summary>
 </histogram>
 
 <histogram name="SoftwareReporter.ReporterSequenceResult"
     enum="SoftwareReporterSequenceResult">
-  <owner>ftirelo@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>Indicates the result of a reporter sequence once it ends.</summary>
 </histogram>
 
 <histogram name="SoftwareReporter.ReporterSequenceType"
-    enum="SoftwareReporterSequenceType" expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    enum="SoftwareReporterSequenceType" expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Indicates the type of a reporter sequence run on the user system. Logged
     when the sequence is scheduled to start.
@@ -130601,7 +131413,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.RunningTime" units="ms">
-  <owner>alito@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The amount of time it took to run the software reporter tool as reported by
     the tool itself via the registry. Logged just after the software reporter
@@ -130610,7 +131422,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.RunningTimeAccordingToChrome" units="ms">
-  <owner>alito@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The amount of time it took for the software reporter to run as measured by
     chrome. Logged just after the software reporter tool has finished.
@@ -130619,7 +131431,7 @@
 
 <histogram name="SoftwareReporter.RunningTimeRegistryError"
     enum="SwReporterRunningTimeRegistryError">
-  <owner>alito@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Error encountered when reading the software reporter tool's start and end
     times from the registry.
@@ -130627,8 +131439,8 @@
 </histogram>
 
 <histogram name="SoftwareReporter.ScannerLogsAcceptance" enum="BooleanAccepted"
-    expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Whether the user accepted to upload scanner logs from Chrome Cleanup Tool.
     This is logged when the user starts a scan for the Settings page and is only
@@ -130637,15 +131449,15 @@
 </histogram>
 
 <histogram name="SoftwareReporter.Step" enum="SwReporterStep">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The registration and execution steps for the software reporter.
   </summary>
 </histogram>
 
 <histogram name="SoftwareReporter.TaggedProfileForResetting" enum="Boolean"
-    expires_after="M77">
-  <owner>ftirelo@chromium.org</owner>
+    expires_after="M90">
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Registers when a profile is tagged for settings reset before a run of the
     Chrome Cleanup Tool.
@@ -130653,7 +131465,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.UploadFailureCount">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The total count of SRT log upload failures experienced by this machine for
     all time. This value is reported at startup by Chrome and is capped at 64.
@@ -130661,7 +131473,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.UploadLongestFailureRun">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The longest run of upload failures logged by SRT runs. This value is
     reported at startup by Chrome and is capped at 64.
@@ -130669,7 +131481,7 @@
 </histogram>
 
 <histogram name="SoftwareReporter.UploadSuccessCount">
-  <owner>mad@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     The total count of successful SRT log uploads experienced by this machine
     for all time. This value is reported at startup by Chrome and is capped at
@@ -131371,7 +132183,7 @@
 </histogram>
 
 <histogram name="Stability.BadMessageTerminated.Chrome"
-    enum="BadMessageReasonChrome">
+    enum="BadMessageReasonChrome" expires_after="2020-01-26">
   <owner>creis@chromium.org</owner>
   <owner>jamescook@chromium.org</owner>
   <summary>
@@ -131494,7 +132306,8 @@
   </summary>
 </histogram>
 
-<histogram name="Stability.CrashedProcessAge.Renderer" units="ms">
+<histogram name="Stability.CrashedProcessAge.Renderer" units="ms"
+    expires_after="2020-02-02">
   <owner>lukasza@chromium.org</owner>
   <summary>
     The age of a crashed extension process. Not logged on iOS. Logged together
@@ -131628,7 +132441,7 @@
 </histogram>
 
 <histogram name="Stability.MobileSessionShutdownType"
-    enum="MobileSessionShutdownType">
+    enum="MobileSessionShutdownType" expires_after="2020-01-26">
   <owner>pkl@chromium.org</owner>
   <owner>olivierrobin@chromium.org</owner>
   <summary>
@@ -132043,7 +132856,8 @@
   </summary>
 </histogram>
 
-<histogram name="Startup.BrowserMainRunnerImplInitializeLongTime" units="ms">
+<histogram name="Startup.BrowserMainRunnerImplInitializeLongTime" units="ms"
+    expires_after="2020-02-02">
   <owner>robliao@chromium.org</owner>
   <summary>
     The amount of time that elapsed during BrowserMainRunnerImpl::Initialize.
@@ -132271,6 +133085,20 @@
   </summary>
 </histogram>
 
+<histogram name="Startup.ColdStartFromProcessCreationTime" units="ms"
+    expires_after="never">
+<!-- expires-never: https://crbug.com/988395 -->
+
+  <owner>djean@chromium.org</owner>
+  <owner>eugenebut@chromium.org</owner>
+  <summary>
+    The duration of all initializations from process creation time to UI ready.
+    This includes code loading, static initializers and the execution time
+    contained in Startup.ColdStartWithExternalURLTime and
+    Startup.ColdStartWithoutExternalURLTime metrics. iOS specific.
+  </summary>
+</histogram>
+
 <histogram name="Startup.ColdStartWithExternalURLTime" units="ms">
   <owner>jif@chromium.org</owner>
   <summary>
@@ -133077,7 +133905,7 @@
 </histogram>
 
 <histogram name="Storage.Blob.CreateDirectoryResult" enum="PlatformFileError"
-    expires_after="M77">
+    expires_after="2020-01-26">
   <owner>dmurph@chromium.org</owner>
   <summary>
     Recorded when we create the blob storage directory for the blob storage
@@ -133870,7 +134698,7 @@
 </histogram>
 
 <histogram name="SubresourceFilter.IndexRuleset.CPUDuration" units="ms"
-    expires_after="M77">
+    expires_after="2020-02-02">
   <owner>pkalinnikov@chromium.org</owner>
   <summary>
     The total CPU time it took to parse and index all rules. Does not include
@@ -134169,7 +134997,7 @@
 
 <histogram
     name="SubresourceFilter.PageLoad.SubresourceEvaluation.TotalCPUDuration"
-    units="microseconds" expires_after="M78">
+    units="microseconds" expires_after="2020-01-26">
   <owner>pkalinnikov@chromium.org</owner>
   <summary>
     Whenever a page load is finished with subresource filtering activated,
@@ -134272,7 +135100,7 @@
 </histogram>
 
 <histogram name="SubresourceFilter.SubresourceLoad.Evaluation.CPUDuration"
-    units="microseconds">
+    units="microseconds" expires_after="2020-01-26">
   <owner>pkalinnikov@chromium.org</owner>
   <summary>
     Whenever a subresource of a document is evaluated against the ruleset,
@@ -134565,7 +135393,8 @@
   <summary>Response or error codes from uploading sync attachments.</summary>
 </histogram>
 
-<histogram name="Sync.AttemptNigoriMigration" enum="SyncNigoriMigrationResult">
+<histogram name="Sync.AttemptNigoriMigration" enum="SyncNigoriMigrationResult"
+    expires_after="2020-01-26">
   <owner>zea@chromium.org</owner>
   <summary>
     Enumeration of results from attempting to migrate Sync's nigori node and its
@@ -134732,7 +135561,8 @@
   </summary>
 </histogram>
 
-<histogram name="Sync.BackendInitializeFirstTime" units="ms">
+<histogram name="Sync.BackendInitializeFirstTime" units="ms"
+    expires_after="2020-02-02">
   <owner>zea@chromium.org</owner>
   <summary>
     Tracks sync backend initialization time during initial sync setup.
@@ -135155,7 +135985,7 @@
 </histogram>
 
 <histogram name="Sync.CryptographerPendingKeys"
-    enum="SyncCryptographerPendingKeysState">
+    enum="SyncCryptographerPendingKeysState" expires_after="2020-02-02">
   <owner>zea@chromium.org</owner>
   <summary>
     Breakdown of sync users whose cryptographer has pending keys.
@@ -135369,7 +136199,7 @@
 </histogram>
 
 <histogram name="Sync.DirectoryVsPrefsConsistency"
-    enum="SyncDirectoryVsPrefsConsistency">
+    enum="SyncDirectoryVsPrefsConsistency" expires_after="2020-01-26">
   <owner>mastiz@chromium.org</owner>
   <owner>treib@chromium.org</owner>
   <summary>
@@ -135908,7 +136738,7 @@
 </histogram>
 
 <histogram name="Sync.KeystoreDecryptionFailed"
-    enum="SyncKeystoreDecryptionFailure" expires_after="M77">
+    enum="SyncKeystoreDecryptionFailure" expires_after="2020-02-02">
   <owner>zea@chromium.org</owner>
   <summary>
     The reason for a failure decrypting the keystore decryptor token.
@@ -136211,7 +137041,8 @@
   </summary>
 </histogram>
 
-<histogram name="Sync.NigoriMigrationState" enum="SyncNigoriMigrationState">
+<histogram name="Sync.NigoriMigrationState" enum="SyncNigoriMigrationState"
+    expires_after="2020-01-26">
   <owner>zea@chromium.org</owner>
   <summary>Breakdown of sync's nigori node keystore migration state.</summary>
 </histogram>
@@ -136472,7 +137303,8 @@
   <summary>Enumeration of how a user dismissed the passphrase dialog.</summary>
 </histogram>
 
-<histogram name="Sync.PassphraseType" enum="SyncPassphraseType">
+<histogram name="Sync.PassphraseType" enum="SyncPassphraseType"
+    expires_after="2020-02-02">
   <owner>treib@chromium.org</owner>
   <owner>mastiz@chromium.org</owner>
   <summary>The active sync passphrase type at sync startup.</summary>
@@ -136552,7 +137384,8 @@
   </summary>
 </histogram>
 
-<histogram name="Sync.PostedClientToServerMessageLatency" units="ms">
+<histogram name="Sync.PostedClientToServerMessageLatency" units="ms"
+    expires_after="2020-02-02">
   <owner>mastiz@chromium.org</owner>
   <summary>
     Time taken for a client-initiated request to be sent over the network and
@@ -136560,7 +137393,8 @@
   </summary>
 </histogram>
 
-<histogram name="Sync.PostedDataTypeGetUpdatesRequest" enum="SyncModelTypes">
+<histogram name="Sync.PostedDataTypeGetUpdatesRequest" enum="SyncModelTypes"
+    expires_after="2020-01-26">
   <owner>mastiz@chromium.org</owner>
   <owner>jkrcal@chromium.org</owner>
   <summary>
@@ -136572,7 +137406,8 @@
   </summary>
 </histogram>
 
-<histogram name="Sync.PostedGetUpdatesOrigin" enum="SyncGetUpdatesOrigin">
+<histogram name="Sync.PostedGetUpdatesOrigin" enum="SyncGetUpdatesOrigin"
+    expires_after="2020-02-02">
   <owner>mastiz@chromium.org</owner>
   <owner>jkrcal@chromium.org</owner>
   <summary>
@@ -137055,7 +137890,8 @@
   <summary>Data type that first requests sync initialization.</summary>
 </histogram>
 
-<histogram name="Sync.StopSource" enum="SyncStopSource">
+<histogram name="Sync.StopSource" enum="SyncStopSource"
+    expires_after="2020-01-26">
   <owner>treib@chromium.org</owner>
   <owner>mastiz@chromium.org</owner>
   <summary>
@@ -137602,7 +138438,12 @@
   <owner>rhalavati@chromium.org</owner>
   <owner>chrome-privacy-core@google.com</owner>
   <summary>
-    Number of open tabs in each guest window. Recorded when a new tab is opened.
+    Number of open tabs in each guest window. Recorded once a new tab in a guest
+    window is opened and adds one to the bucket of number of tabs in that
+    particular window (it does not count the total number of tabs in all open
+    guest windows). Please note that this metric double counts the lower
+    numbers, meaning that if user opens three tabs (without closing any in
+    between), then buckets 1, 2, and 3 will all be incremented in turn.
   </summary>
 </histogram>
 
@@ -137610,8 +138451,12 @@
   <owner>rhalavati@chromium.org</owner>
   <owner>chrome-privacy-core@google.com</owner>
   <summary>
-    Number of open tabs in each incognito window. Recorded when a new tab is
-    opened.
+    Number of open tabs in each incognito window. Recorded once a new tab is
+    opened in an incognito window and adds one to the bucket of number of tabs
+    in that particular window (it does not count the total number of tabs in all
+    open incognito windows). Please note that this metric double counts the
+    lower numbers, meaning that if user opens three tabs (without closing any in
+    between), then buckets 1, 2, and 3 will all be incremented in turn.
   </summary>
 </histogram>
 
@@ -139336,7 +140181,7 @@
   <obsolete>
     Removed 2019-07.
   </obsolete>
-  <owner>joenotcharles@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Fine-grained (in msec) time between closing a tab and opening another, to
     track very frequent tabs.
@@ -139348,7 +140193,7 @@
   <obsolete>
     Removed 2019-07.
   </obsolete>
-  <owner>joenotcharles@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Fine-grained (in msec) time between opening a tab and opening another, to
     track very frequent tabs.
@@ -139360,7 +140205,7 @@
   <obsolete>
     Removed 2019-07.
   </obsolete>
-  <owner>joenotcharles@chromium.org</owner>
+  <owner>joenotcharles@google.com</owner>
   <summary>
     Fine-grained (in msec) time between opening a tab and closing it, to track
     very short-lived tabs.
@@ -141427,7 +142272,8 @@
   </summary>
 </histogram>
 
-<histogram name="Tracing.Background.FinalizingTraceSizeInKB" units="KB">
+<histogram name="Tracing.Background.FinalizingTraceSizeInKB" units="KB"
+    expires_after="2020-01-26">
   <owner>oysteine@chromium.org</owner>
   <summary>
     The size, in kilobytes, of a finalized trace ready to be uploaded.
@@ -141453,7 +142299,7 @@
 </histogram>
 
 <histogram name="Tracing.Background.ScenarioState"
-    enum="BackgroundTracingState">
+    enum="BackgroundTracingState" expires_after="2020-01-26">
   <owner>oysteine@chromium.org</owner>
   <summary>
     Records state of the Background Tracing system, from when scenarios are
@@ -141640,7 +142486,7 @@
 </histogram>
 
 <histogram name="Translate.CompactInfobar.Language.NeverTranslate"
-    enum="CLD3LanguageCode">
+    enum="CLD3LanguageCode" expires_after="2020-01-26">
   <owner>anthonyvd@chromium.org</owner>
   <summary>
     Records the hashcode of the source language when never translate this
@@ -141694,7 +142540,7 @@
   </summary>
 </histogram>
 
-<histogram name="Translate.DeclineTranslate">
+<histogram name="Translate.DeclineTranslate" expires_after="2020-01-26">
   <owner>kenjibaheux@google.com</owner>
   <summary>
     The number of times the &quot;Nope&quot; (don't translate) or the infobar's
@@ -141793,7 +142639,7 @@
 </histogram>
 
 <histogram name="Translate.InitiationStatus.v2"
-    enum="TranslateInitiationStatus">
+    enum="TranslateInitiationStatus" expires_after="2020-02-02">
   <owner>kenjibaheux@google.com</owner>
   <summary>
     The reason why Chrome decided to perform the next action (e.g., to show
@@ -141871,7 +142717,8 @@
   </summary>
 </histogram>
 
-<histogram name="Translate.MobileMenuTranslate.Shown" enum="Boolean">
+<histogram name="Translate.MobileMenuTranslate.Shown" enum="Boolean"
+    expires_after="2020-01-26">
   <owner>yyushkina@google.com</owner>
   <owner>frechette@chromium.org</owner>
   <summary>
@@ -141888,7 +142735,7 @@
   </summary>
 </histogram>
 
-<histogram name="Translate.ModifyTargetLang">
+<histogram name="Translate.ModifyTargetLang" expires_after="2020-01-26">
   <owner>kenjibaheux@google.com</owner>
   <summary>
     The number of times the target language in the translate infobar has been
@@ -142117,7 +142964,8 @@
   <summary>The time from starting translation to the completion.</summary>
 </histogram>
 
-<histogram name="Translate.Translate" enum="BooleanTranslate">
+<histogram name="Translate.Translate" enum="BooleanTranslate"
+    expires_after="2020-01-26">
   <owner>kenjibaheux@google.com</owner>
   <summary>
     The number of times the translate button was clicked in the translate
@@ -142562,7 +143410,8 @@
   </summary>
 </histogram>
 
-<histogram name="UMA.ActualLogUploadInterval" units="minutes">
+<histogram name="UMA.ActualLogUploadInterval" units="minutes"
+    expires_after="2020-02-02">
   <owner>asvitkine@chromium.org</owner>
   <summary>
     The actual interval between log upload start and previous log upload
@@ -142806,7 +143655,29 @@
   </summary>
 </histogram>
 
-<histogram name="UMA.EnrollmentStatus" enum="EnrollmentStatus">
+<histogram name="UMA.Dummy.Histogram.CheckOwnersExpansion.Basic">
+  <owner>caitlinfischer@google.com</owner>
+  <owner>src/base/metrics/OWNERS</owner>
+  <summary>
+    The purpose of this histogram is to verify that email addresses can be
+    extracted from OWNERS files. After verifying, this histogram should be
+    deleted.
+  </summary>
+</histogram>
+
+<histogram name="UMA.Dummy.Histogram.CheckOwnersExpansion.FileDirective">
+  <owner>asvitkine@chromium.org</owner>
+  <owner>src/testing/variations/OWNERS</owner>
+  <owner>rkaplow@chromium.org</owner>
+  <summary>
+    The purpose of this histogram is to verify that email addresses can be
+    extracted from OWNERS files that include a file directive. After verifying,
+    this histogram should be deleted.
+  </summary>
+</histogram>
+
+<histogram name="UMA.EnrollmentStatus" enum="EnrollmentStatus"
+    expires_after="2020-01-26">
   <owner>asvitkine@chromium.org</owner>
   <owner>kaznacheev@chromium.org</owner>
   <summary>
@@ -143184,7 +144055,7 @@
 </histogram>
 
 <histogram name="UMA.LogUpload.ResponseOrErrorCode"
-    enum="CombinedHttpResponseAndNetErrorCode">
+    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2020-01-26">
   <owner>holte@chromium.org</owner>
   <owner>asvitkine@chromium.org</owner>
   <summary>
@@ -143215,7 +144086,7 @@
   </summary>
 </histogram>
 
-<histogram name="UMA.LowEntropySource3Value" expires_after="2019-08-30">
+<histogram name="UMA.LowEntropySource3Value" expires_after="2020-08-30">
   <owner>asvitkine@chromium.org</owner>
   <owner>mpearson@chromium.org</owner>
   <summary>
@@ -143225,7 +144096,7 @@
   </summary>
 </histogram>
 
-<histogram name="UMA.LowEntropySourceValue" expires_after="2019-08-30">
+<histogram name="UMA.LowEntropySourceValue" expires_after="2020-03-01">
   <owner>asvitkine@chromium.org</owner>
   <owner>mpearson@chromium.org</owner>
   <summary>
@@ -143304,7 +144175,8 @@
   </summary>
 </histogram>
 
-<histogram name="UMA.NegativeSamples.Histogram" enum="HistogramNameHash">
+<histogram name="UMA.NegativeSamples.Histogram" enum="HistogramNameHash"
+    expires_after="2020-02-02">
   <owner>asvitkine@chromium.org</owner>
   <owner>bcwhite@chromium.org</owner>
   <summary>
@@ -143375,7 +144247,7 @@
 </histogram>
 
 <histogram name="UMA.PersistentHistograms.InitResult"
-    enum="PersistentHistogramsInitResult">
+    enum="PersistentHistogramsInitResult" expires_after="2020-02-02">
   <owner>bcwhite@chromium.org</owner>
   <summary>
     A count of successes and failures for the creation of various forms of
@@ -143478,7 +144350,7 @@
 </histogram>
 
 <histogram name="UMA.SubprocessMetricsProvider.SubprocessCount"
-    units="subprocesses">
+    units="subprocesses" expires_after="2020-02-02">
   <owner>asvitkine@chromium.org</owner>
   <owner>bcwhite@chromium.org</owner>
   <summary>
@@ -143523,7 +144395,7 @@
 </histogram>
 
 <histogram name="UMA.TruncatedEvents.UserAction" units="events"
-    expires_after="2020-01-20">
+    expires_after="2020-02-02">
   <owner>rkaplow@chromium.org</owner>
   <summary>
     The number of user actions events that existed in the metrics log before we
@@ -144698,6 +145570,7 @@
 
   <owner>alemate@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     The time between one regular user logging out and a different regular user
     logging in (Chrome OS). Delays above thirty minutes or which span system
@@ -144721,6 +145594,7 @@
   <owner>alemate@chromium.org</owner>
   <owner>michaelpg@chromium.org</owner>
   <owner>rsorokin@chromium.org</owner>
+  <owner>cros-oac@google.com</owner>
   <summary>
     This is logged when new user type reported by Gaia is different from the old
     one (for existing user).
@@ -144955,7 +145829,8 @@
   <summary>Time spent compiling functions lazily on first run.</summary>
 </histogram>
 
-<histogram name="V8.CompileLazyMicroSeconds" units="microseconds">
+<histogram name="V8.CompileLazyMicroSeconds" units="microseconds"
+    expires_after="2020-01-26">
   <owner>hablich@chromium.org</owner>
   <summary>
     Aggregated time spent compiling functions lazily during a single script
@@ -145020,7 +145895,8 @@
   </summary>
 </histogram>
 
-<histogram name="V8.CompileScriptMicroSeconds" units="microseconds">
+<histogram name="V8.CompileScriptMicroSeconds" units="microseconds"
+    expires_after="2020-02-02">
   <owner>yangguo@chromium.org</owner>
   <summary>
     Total time spent in compiling a script (incl. parsing/caching).
@@ -145312,7 +146188,7 @@
   <summary>Time spent doing a full GC during an IdleNotification.</summary>
 </histogram>
 
-<histogram name="V8.GCFinalizeMC" units="ms">
+<histogram name="V8.GCFinalizeMC" units="ms" expires_after="2020-01-26">
   <owner>ulan@chromium.org</owner>
   <owner>hpayer@chromium.org</owner>
   <summary>
@@ -145395,7 +146271,8 @@
   </summary>
 </histogram>
 
-<histogram name="V8.GCFinalizeMCForeground" units="ms">
+<histogram name="V8.GCFinalizeMCForeground" units="ms"
+    expires_after="2020-01-26">
   <owner>ulan@chromium.org</owner>
   <owner>hpayer@chromium.org</owner>
   <summary>
@@ -145404,7 +146281,8 @@
   </summary>
 </histogram>
 
-<histogram name="V8.GCFinalizeMCReduceMemory" units="ms">
+<histogram name="V8.GCFinalizeMCReduceMemory" units="ms"
+    expires_after="2020-02-02">
   <owner>ulan@chromium.org</owner>
   <owner>hpayer@chromium.org</owner>
   <summary>
@@ -145517,7 +146395,7 @@
   </summary>
 </histogram>
 
-<histogram name="V8.GCMarkCompactor" units="ms">
+<histogram name="V8.GCMarkCompactor" units="ms" expires_after="2020-01-26">
   <owner>mlippautz@chromium.org</owner>
   <summary>
     Sum of all durations of individual phases within one V8 mark-compact garbage
@@ -145525,7 +146403,8 @@
   </summary>
 </histogram>
 
-<histogram name="V8.GCMarkCompactReason" enum="GarbageCollectionReason">
+<histogram name="V8.GCMarkCompactReason" enum="GarbageCollectionReason"
+    expires_after="2020-01-26">
   <owner>ulan@chromium.org</owner>
   <summary>Reason a mark-compact garbage collection was started in V8.</summary>
 </histogram>
@@ -147988,7 +148867,7 @@
 </histogram>
 
 <histogram name="WebApk.Install.GooglePlayInstallResult"
-    enum="WebApkGooglePlayInstallResult">
+    enum="WebApkGooglePlayInstallResult" expires_after="2020-01-26">
   <owner>hanxi@chromium.org</owner>
   <owner>pkotwicz@chromium.org</owner>
   <owner>yfriedman@chromium.org</owner>
@@ -148042,7 +148921,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebApk.Install.InstallEvent" enum="WebApkInstallEvent">
+<histogram name="WebApk.Install.InstallEvent" enum="WebApkInstallEvent"
+    expires_after="2020-01-26">
   <owner>hanxi@chromium.org</owner>
   <owner>pkotwicz@chromium.org</owner>
   <owner>yfriedman@chromium.org</owner>
@@ -148521,6 +149401,10 @@
 
 <histogram name="Webapp.Splashscreen.BackgroundColor" enum="SplashColorStatus"
     expires_after="M77">
+  <obsolete>
+    Removed 07/2019 in Issue http://crbug.com/1716136. Information no longer
+    needed or recorded.
+  </obsolete>
   <owner>mlamouri@chromium.org</owner>
   <summary>
     Records the status of the splashscreen's background color (default or
@@ -148529,17 +149413,26 @@
 </histogram>
 
 <histogram name="Webapp.Splashscreen.Duration" units="ms" expires_after="M77">
+  <obsolete>
+    Removed 07/2019 in Issue http://crbug.com/1716136. Information no longer
+    needed or recorded.
+  </obsolete>
   <owner>mlamouri@chromium.org</owner>
   <summary>Records the time during which the splashscreen was visible.</summary>
 </histogram>
 
 <histogram name="Webapp.Splashscreen.Hides" enum="SplashHidesReason"
-    expires_after="M77">
-  <owner>mlamouri@chromium.org</owner>
+    expires_after="M80">
+  <owner>pkotwicz@chromium.org</owner>
+  <owner>hartmanng@chromium.org</owner>
   <summary>Records the signal that was used to hide the splashscreen.</summary>
 </histogram>
 
-<histogram name="Webapp.Splashscreen.Icon.Size" units="dp">
+<histogram name="Webapp.Splashscreen.Icon.Size" units="dp" expires_after="M77">
+  <obsolete>
+    Removed 07/2019 in Issue http://crbug.com/1716136. Information no longer
+    needed or recorded.
+  </obsolete>
   <owner>mlamouri@chromium.org</owner>
   <summary>
     Records the size of the icon used to construct the splashscreen in device
@@ -148550,6 +149443,10 @@
 
 <histogram name="Webapp.Splashscreen.Icon.Type" enum="SplashIconType"
     expires_after="M77">
+  <obsolete>
+    Removed 07/2019 in Issue http://crbug.com/1716136. Information no longer
+    needed or recorded.
+  </obsolete>
   <owner>mlamouri@chromium.org</owner>
   <summary>
     Records the origin of the icon used to construct the splashscreen.
@@ -148558,6 +149455,10 @@
 
 <histogram name="Webapp.Splashscreen.ThemeColor" enum="SplashColorStatus"
     expires_after="M77">
+  <obsolete>
+    Removed 07/2019 in Issue http://crbug.com/1716136. Information no longer
+    needed or recorded.
+  </obsolete>
   <owner>mlamouri@chromium.org</owner>
   <summary>
     Records the status of the splashscreen's theme color (default or custom).
@@ -149312,7 +150213,7 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.BackingStore.OpenStatus"
-    enum="IDBLevelDBBackingStoreOpenResult">
+    enum="IDBLevelDBBackingStoreOpenResult" expires_after="2020-02-02">
   <owner>dgrogan@chromium.org</owner>
   <summary>
     Count of the different success and failure modes when opening an IndexedDB
@@ -149374,7 +150275,7 @@
 </histogram>
 
 <histogram name="WebCore.IndexedDB.DestroyCorruptBackingStoreStatus"
-    enum="LevelDBStatus" expires_after="M77">
+    enum="LevelDBStatus" expires_after="2020-02-02">
   <owner>cmumford@chromium.org</owner>
   <summary>
     Count of the results when attempting to destroy a corrupt Indexed DB backing
@@ -149646,6 +150547,10 @@
 
 <histogram name="WebCore.IndexedDB.ObjectStore.IndexEntry.KeyType"
     enum="IDBKeyType" expires_after="M77">
+  <obsolete>
+    Removed August 2019. Was added to measure use of features which not all
+    actively developed browser engines supported. No longer relevant.
+  </obsolete>
   <owner>jsbell@chromium.org</owner>
   <summary>
     The type of key (number, string, etc.) used for an index entry for a record
@@ -149656,6 +150561,10 @@
 
 <histogram name="WebCore.IndexedDB.ObjectStore.Record.KeyType"
     enum="IDBKeyType" expires_after="M87">
+  <obsolete>
+    Removed August 2019. Was added to measure use of features which not all
+    actively developed browser engines supported. No longer relevant.
+  </obsolete>
   <owner>jsbell@chromium.org</owner>
   <summary>
     The type of key (number, string, etc.) used for a record being newly stored
@@ -149790,6 +150699,10 @@
 
 <histogram name="WebCore.IndexedDB.Schema.Index.KeyPathType"
     enum="IDBKeyPathType" expires_after="M77">
+  <obsolete>
+    Removed August 2019. Was added to measure use of features which not all
+    actively developed browser engines supported. No longer relevant.
+  </obsolete>
   <owner>jsbell@chromium.org</owner>
   <summary>
     Records the 'keyPath' type (none, string, or array) during IDBObjectStore's
@@ -149799,6 +150712,10 @@
 
 <histogram name="WebCore.IndexedDB.Schema.Index.MultiEntry" enum="Boolean"
     expires_after="M77">
+  <obsolete>
+    Removed August 2019. Was added to measure use of features which not all
+    actively developed browser engines supported. No longer relevant.
+  </obsolete>
   <owner>jsbell@chromium.org</owner>
   <summary>
     Records the 'multiEntry' flag value during IDBObjectStore's createIndex
@@ -149808,6 +150725,10 @@
 
 <histogram name="WebCore.IndexedDB.Schema.Index.Unique" enum="Boolean"
     expires_after="M77">
+  <obsolete>
+    Removed August 2019. Was added to measure use of features which not all
+    actively developed browser engines supported. No longer relevant.
+  </obsolete>
   <owner>jsbell@chromium.org</owner>
   <summary>
     Records the 'unique' flag value during IDBObjectStore's createIndex
@@ -149817,6 +150738,10 @@
 
 <histogram name="WebCore.IndexedDB.Schema.ObjectStore.AutoIncrement"
     enum="Boolean" expires_after="M77">
+  <obsolete>
+    Removed August 2019. Was added to measure use of features which not all
+    actively developed browser engines supported. No longer relevant.
+  </obsolete>
   <owner>jsbell@chromium.org</owner>
   <summary>
     Records the 'autoIncrement' flag value during IDBDatabase's
@@ -149826,6 +150751,10 @@
 
 <histogram name="WebCore.IndexedDB.Schema.ObjectStore.KeyPathType"
     enum="IDBKeyPathType" expires_after="M77">
+  <obsolete>
+    Removed August 2019. Was added to measure use of features which not all
+    actively developed browser engines supported. No longer relevant.
+  </obsolete>
   <owner>jsbell@chromium.org</owner>
   <summary>
     Records the 'keyPath' type (none, string, or array) during IDBDatabase's
@@ -150496,7 +151425,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebFont.BlankTextShownTime" units="ms">
+<histogram name="WebFont.BlankTextShownTime" units="ms"
+    expires_after="2020-02-02">
   <owner>kenjibaheux@chromium.org</owner>
   <owner>ksakamoto@chromium.org</owner>
   <summary>
@@ -150792,7 +151722,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebFont.LocalFontUsed" enum="BooleanUsage">
+<histogram name="WebFont.LocalFontUsed" enum="BooleanUsage"
+    expires_after="2020-02-02">
   <owner>hajimehoshi@chromium.org</owner>
   <owner>kenjibaheux@chromium.org</owner>
   <owner>kouhei@chromium.org</owner>
@@ -151164,7 +152095,7 @@
 </histogram>
 
 <histogram name="WebRTC.Audio.ApmCaptureInputLevelAverageRms"
-    units="dBFS (negated)">
+    units="dBFS (negated)" expires_after="2020-01-26">
   <owner>hlundin@chromium.org</owner>
   <summary>
     This histogram reports the average RMS of the signal coming in to WebRTC's
@@ -151176,7 +152107,7 @@
 </histogram>
 
 <histogram name="WebRTC.Audio.ApmCaptureInputLevelPeakRms"
-    units="dBFS (negated)">
+    units="dBFS (negated)" expires_after="2020-01-26">
   <owner>hlundin@chromium.org</owner>
   <summary>
     This histogram reports the peak RMS of the signal coming in to WebRTC's
@@ -151188,7 +152119,7 @@
 </histogram>
 
 <histogram name="WebRTC.Audio.ApmCaptureOutputLevelAverageRms"
-    units="dBFS (negated)">
+    units="dBFS (negated)" expires_after="2020-01-26">
   <owner>peah@chromium.org</owner>
   <summary>
     This histogram reports the average RMS of the signal in the output of
@@ -151200,7 +152131,7 @@
 </histogram>
 
 <histogram name="WebRTC.Audio.ApmCaptureOutputLevelPeakRms"
-    units="dBFS (negated)">
+    units="dBFS (negated)" expires_after="2020-02-02">
   <owner>peah@chromium.org</owner>
   <summary>
     This histogram reports the peak RMS of the signal in the output of WebRTC's
@@ -151289,7 +152220,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Audio.AverageExcessBufferDelayMs" units="ms">
+<histogram name="WebRTC.Audio.AverageExcessBufferDelayMs" units="ms"
+    expires_after="2020-01-26">
   <owner>hlundin@chromium.org</owner>
   <summary>
     Measures the average waiting time in the buffer for each packet. The waiting
@@ -151380,7 +152312,7 @@
 </histogram>
 
 <histogram name="WebRTC.Audio.EchoCanceller.DelayChanges"
-    enum="WebRTCEventFrequency">
+    enum="WebRTCEventFrequency" expires_after="2020-01-26">
   <owner>peah@chromium.org</owner>
   <summary>
     This histogram logs the frequency of echo path delay changes that are
@@ -151390,7 +152322,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Audio.EchoCanceller.EchoPathDelay" units="Blocks">
+<histogram name="WebRTC.Audio.EchoCanceller.EchoPathDelay" units="Blocks"
+    expires_after="2020-01-26">
   <owner>peah@chromium.org</owner>
   <summary>
     This histogram logs the estimated echo path delay in 64 sample blocks as
@@ -151548,7 +152481,7 @@
 </histogram>
 
 <histogram name="WebRTC.Audio.EchoCanceller.RenderOverruns"
-    enum="WebRTCEventFrequency">
+    enum="WebRTCEventFrequency" expires_after="2020-01-26">
   <owner>peah@chromium.org</owner>
   <summary>
     This histogram logs the frequency of overruns in the render buffer of the
@@ -151558,7 +152491,7 @@
 </histogram>
 
 <histogram name="WebRTC.Audio.EchoCanceller.RenderUnderruns"
-    enum="WebRTCEventFrequency">
+    enum="WebRTCEventFrequency" expires_after="2020-02-02">
   <owner>peah@chromium.org</owner>
   <summary>
     This histogram logs the frequency of underruns in the render buffer of the
@@ -151675,7 +152608,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Audio.ReceiverDeviceDelayMs" units="ms">
+<histogram name="WebRTC.Audio.ReceiverDeviceDelayMs" units="ms"
+    expires_after="2020-02-02">
   <owner>hlundin@chromium.org</owner>
   <summary>
     The sound card's buffering delay for the receiving side. Sampled once every
@@ -151691,7 +152625,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Audio.ResidualEchoDetector.EchoLikelihood" units="%">
+<histogram name="WebRTC.Audio.ResidualEchoDetector.EchoLikelihood" units="%"
+    expires_after="2020-01-26">
   <owner>hlundin@chromium.org</owner>
   <owner>ivoc@chromium.org</owner>
   <summary>
@@ -151703,7 +152638,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Audio.SpeechExpandRatePercent" units="%">
+<histogram name="WebRTC.Audio.SpeechExpandRatePercent" units="%"
+    expires_after="2020-02-02">
   <owner>hlundin@chromium.org</owner>
   <summary>
     Measures the audible expand rate for an incoming WebRTC audio stream. The
@@ -151854,7 +152790,7 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.BWE.InitialRtt" units="ms">
+<histogram name="WebRTC.BWE.InitialRtt" units="ms" expires_after="2020-01-26">
   <owner>holmer@chromium.org</owner>
   <summary>
     The round-trip time as measured 2 seconds into a WebRTC call.
@@ -151971,7 +152907,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.BWE.Types" enum="WebRtcBweType">
+<histogram name="WebRTC.BWE.Types" enum="WebRtcBweType"
+    expires_after="2020-02-02">
   <owner>holmer@chromium.org</owner>
   <summary>
     The bandwidth estimation used in WebRTC calls. Records whether the BWE is
@@ -151989,7 +152926,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Call.BitrateReceivedInKbps" units="kbps">
+<histogram name="WebRTC.Call.BitrateReceivedInKbps" units="kbps"
+    expires_after="2020-02-02">
   <owner>holmer@chromium.org</owner>
   <summary>
     Average total bitrate received during a call (audio + video + RTCP), counted
@@ -151998,7 +152936,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Call.EstimatedSendBitrateInKbps" units="kbps">
+<histogram name="WebRTC.Call.EstimatedSendBitrateInKbps" units="kbps"
+    expires_after="2020-01-26">
   <owner>holmer@chromium.org</owner>
   <summary>
     Average estimated send bitrate during a call, counted from first packet sent
@@ -152007,7 +152946,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Call.LifetimeInSeconds" units="seconds">
+<histogram name="WebRTC.Call.LifetimeInSeconds" units="seconds"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The lifetime of a call. Recorded when a Call instance is destroyed.
@@ -152069,7 +153009,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Call.VideoBitrateReceivedInKbps" units="kbps">
+<histogram name="WebRTC.Call.VideoBitrateReceivedInKbps" units="kbps"
+    expires_after="2020-02-02">
   <owner>holmer@chromium.org</owner>
   <summary>
     Average video bitrate received during a call, counted from first packet
@@ -152227,7 +153168,7 @@
 </histogram>
 
 <histogram name="WebRTC.PeerConnection.CandidatePairType"
-    enum="IceCandidatePairTypes">
+    enum="IceCandidatePairTypes" expires_after="2020-02-02">
   <owner>qingsi@google.com</owner>
   <owner>jeroendb@google.com</owner>
   <summary>
@@ -152587,7 +153528,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.ReceivedAudioTrackDuration" units="ms">
+<histogram name="WebRTC.ReceivedAudioTrackDuration" units="ms"
+    expires_after="2020-02-02">
   <owner>perkj@chromium.org</owner>
   <summary>
     Durations of audio tracks received over a PeerConnection. The stopwatch
@@ -152605,7 +153547,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.ReliableDataChannelMessageSize" units="bytes">
+<histogram name="WebRTC.ReliableDataChannelMessageSize" units="bytes"
+    expires_after="2020-01-26">
   <owner>perkj@chromium.org</owner>
   <summary>
     Sizes of messages sent over reliable data channels. The size of an
@@ -152705,7 +153648,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.UnreliableDataChannelMessageSize" units="bytes">
+<histogram name="WebRTC.UnreliableDataChannelMessageSize" units="bytes"
+    expires_after="2020-01-26">
   <owner>perkj@chromium.org</owner>
   <summary>
     Sizes of messages sent over unreliable data channels. The size of an
@@ -152748,7 +153692,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.AdaptChangesPerMinute" units="changes/minute">
+<histogram name="WebRTC.Video.AdaptChangesPerMinute" units="changes/minute"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The average number of adaptation changes per minute for a sent video stream.
@@ -152756,7 +153701,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.AverageRoundTripTimeInMilliseconds" units="ms">
+<histogram name="WebRTC.Video.AverageRoundTripTimeInMilliseconds" units="ms"
+    expires_after="2020-02-02">
   <owner>holmer@chromium.org</owner>
   <summary>
     The average round-trip time of a WebRTC call in milliseconds. Recorded when
@@ -152764,7 +153710,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.AVSyncOffsetInMs" units="ms">
+<histogram name="WebRTC.Video.AVSyncOffsetInMs" units="ms"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The absolute value of the sync offset between a rendered video frame and the
@@ -152773,21 +153720,23 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.BadCall.Any" units="%">
+<histogram name="WebRTC.Video.BadCall.Any" units="%" expires_after="2020-01-26">
   <owner>sprang@chromium.org</owner>
   <summary>
     Fraction of time the call was classified as bad because of any reason.
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.BadCall.FrameRate" units="%">
+<histogram name="WebRTC.Video.BadCall.FrameRate" units="%"
+    expires_after="2020-01-26">
   <owner>sprang@chromium.org</owner>
   <summary>
     Fraction of time the call was classified as bad because of low framerate.
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.BadCall.FrameRateVariance" units="%">
+<histogram name="WebRTC.Video.BadCall.FrameRateVariance" units="%"
+    expires_after="2020-01-26">
   <owner>sprang@chromium.org</owner>
   <summary>
     Fraction of time the call was classified as bad because of high framerate
@@ -152795,14 +153744,15 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.BadCall.Qp" units="%">
+<histogram name="WebRTC.Video.BadCall.Qp" units="%" expires_after="2020-02-02">
   <owner>sprang@chromium.org</owner>
   <summary>
     Fraction of time the call was classified as bad because of high qp.
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.BandwidthLimitedResolutionInPercent" units="%">
+<histogram name="WebRTC.Video.BandwidthLimitedResolutionInPercent" units="%"
+    expires_after="2020-01-26">
   <owner>asapersson@chromium.org</owner>
   <summary>
     Percentage of sent frames that are limited in resolution due to bandwidth
@@ -152811,7 +153761,7 @@
 </histogram>
 
 <histogram name="WebRTC.Video.BandwidthLimitedResolutionsDisabled"
-    units="disabled resolutions">
+    units="disabled resolutions" expires_after="2020-01-26">
   <owner>asapersson@chromium.org</owner>
   <summary>
     For frames that are limited in resolution due to bandwidth, the average
@@ -152829,7 +153779,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.BitrateSentInKbps" units="kbps">
+<histogram name="WebRTC.Video.BitrateSentInKbps" units="kbps"
+    expires_after="2020-01-26">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The number of sent bits per second for a sent video stream. Recorded when a
@@ -152847,7 +153798,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.CpuLimitedResolutionInPercent" units="%">
+<histogram name="WebRTC.Video.CpuLimitedResolutionInPercent" units="%"
+    expires_after="2020-01-26">
   <owner>asapersson@chromium.org</owner>
   <summary>
     Percentage of frames that are limited in resolution due to CPU for a sent
@@ -152855,7 +153807,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.CurrentDelayInMs" units="ms">
+<histogram name="WebRTC.Video.CurrentDelayInMs" units="ms"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     Average current delay for a received video stream. This is the actual delay
@@ -152872,7 +153825,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.DecodedFramesPerSecond" units="fps">
+<histogram name="WebRTC.Video.DecodedFramesPerSecond" units="fps"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The number of decoded frames per second for a received video stream.
@@ -152881,7 +153835,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.DecodeTimeInMs" units="ms">
+<histogram name="WebRTC.Video.DecodeTimeInMs" units="ms"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The average decode time per frame for a received video stream. Recorded when
@@ -152961,7 +153916,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Encoded.Qp" units="qp value">
+<histogram name="WebRTC.Video.Encoded.Qp" units="qp value"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The average QP (quantizer value) per frame for a sent video stream. Recorded
@@ -152969,7 +153925,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.Encoder.CodecType" enum="WebRtcVideoCodecs">
+<histogram name="WebRTC.Video.Encoder.CodecType" enum="WebRtcVideoCodecs"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     Configured video codec for a sent video stream. Recorded when a
@@ -152978,7 +153935,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.EncodeTimeInMs" units="ms">
+<histogram name="WebRTC.Video.EncodeTimeInMs" units="ms"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The average encode time per frame for a sent video stream. Recorded when a
@@ -153065,7 +154023,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.InputFramesPerSecond" units="fps">
+<histogram name="WebRTC.Video.InputFramesPerSecond" units="fps"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The number of incoming frames per second for a sent video stream. Recorded
@@ -153191,7 +154150,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.NumberFreezesPerMinute" units="freezes/minute">
+<histogram name="WebRTC.Video.NumberFreezesPerMinute" units="freezes/minute"
+    expires_after="2020-01-26">
   <owner>ssilkin@chromium.org</owner>
   <summary>
     The number of video freezes per minute for a received video stream. Recorded
@@ -153199,7 +154159,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.NumberOfPauseEvents" units="pause events">
+<histogram name="WebRTC.Video.NumberOfPauseEvents" units="pause events"
+    expires_after="2020-01-26">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The number of times a video stream has been paused/resumed during a call.
@@ -153216,7 +154177,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.OnewayDelayInMs" units="ms">
+<histogram name="WebRTC.Video.OnewayDelayInMs" units="ms"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     Average delay (network delay (rtt/2) + jitter delay + decode time + render
@@ -153335,7 +154297,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.RenderFramesPerSecond" units="fps">
+<histogram name="WebRTC.Video.RenderFramesPerSecond" units="fps"
+    expires_after="2020-01-26">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The number of sent frames to the renderer per second for a received video
@@ -153912,7 +154875,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.SentFramesPerSecond" units="fps">
+<histogram name="WebRTC.Video.SentFramesPerSecond" units="fps"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The number of sent frames per second for a sent video stream. Recorded when
@@ -153929,7 +154893,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.SentPacketsLostInPercent" units="%">
+<histogram name="WebRTC.Video.SentPacketsLostInPercent" units="%"
+    expires_after="2020-01-26">
   <owner>asapersson@chromium.org</owner>
   <summary>
     Percentage of sent packets lost for a sent video stream. Recorded when a
@@ -153947,7 +154912,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebRTC.Video.SentWidthInPixels" units="pixels">
+<histogram name="WebRTC.Video.SentWidthInPixels" units="pixels"
+    expires_after="2020-02-02">
   <owner>asapersson@chromium.org</owner>
   <summary>
     The average sent width per frame for a sent video stream. Recorded when a
@@ -154379,7 +155345,8 @@
   </summary>
 </histogram>
 
-<histogram name="WebUI.CreatedForUrl" enum="WebUIUrlHashes">
+<histogram name="WebUI.CreatedForUrl" enum="WebUIUrlHashes"
+    expires_after="2020-02-02">
   <owner>dbeam@chromium.org</owner>
   <summary>URLs for which Chrome creates WebUIControllers.</summary>
 </histogram>
@@ -155195,7 +156162,8 @@
   <summary>The time taken for running a worker task on WorkerThread.</summary>
 </histogram>
 
-<histogram name="WrenchMenu.MenuAction" enum="WrenchMenuAction">
+<histogram name="WrenchMenu.MenuAction" enum="WrenchMenuAction"
+    expires_after="2020-01-26">
   <owner>ainslie@chromium.org</owner>
   <owner>edwardjung@chromium.org</owner>
   <summary>Number of times that each menu item is clicked.</summary>
@@ -155819,6 +156787,8 @@
   <affected-histogram
       name="PageLoad.FrameCounts.AdFrames.PerFrame.UserActivation"/>
   <affected-histogram name="PageLoad.FrameCounts.AnyParentFrame.AdFrames"/>
+  <affected-histogram name="PageLoad.HeavyAds.ComputedType"/>
+  <affected-histogram name="PageLoad.HeavyAds.InterventionType"/>
 </histogram_suffixes>
 
 <histogram_suffixes name="AffiliationDummyData" separator=".">
@@ -155962,6 +156932,7 @@
   <suffix name="autofill_assistant" label="Assistant-in-Chrome Module"/>
   <suffix name="dev_ui" label="Developer UI Module"/>
   <suffix name="tab_ui" label="Tab Management Module"/>
+  <suffix name="test_dummy" label="Test Dummy Module"/>
   <suffix name="vr" label="Virtual Reality Module"/>
   <affected-histogram name="Android.FeatureModules.AvailabilityStatus"/>
   <affected-histogram name="Android.FeatureModules.CachedInstallDuration"/>
@@ -156563,6 +157534,13 @@
   <affected-histogram name="Availability.Prober.TimeUntilSuccess"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="BackgroundDownload" separator=".">
+  <suffix name="BackgroundDownload"
+      label="Download that started in background."/>
+  <affected-histogram name="Download.HttpResponseCode"/>
+  <affected-histogram name="Download.MapErrorNetworkFailed.NetworkService"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="BackgroundFetchDatabaseStorageErrors" separator=".">
   <suffix name="CleanupTask" label="CleanupTask"/>
   <suffix name="CreateMetadataTask" label="CreateMetadata DatabaseTask"/>
@@ -156809,6 +157787,12 @@
   <affected-histogram name="BlinkGC.TimeForTotalCollectGarbage"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="BlinkGCTimingTypes" separator=".">
+  <suffix name="Background" label="Includes only background helpers"/>
+  <suffix name="Foreground" label="Includes only the main thread"/>
+  <affected-histogram name="BlinkGC.TimeForMarking"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="BlinkIncrementalDecodeImageTypes" separator=".">
   <suffix name="Jpeg"
       label="Byte size of JPEG images that fall into this category."/>
@@ -156843,6 +157827,7 @@
   <affected-histogram name="Blink.MainFrame.PaintRatio"/>
   <affected-histogram name="Blink.MainFrame.PrePaintRatio"/>
   <affected-histogram name="Blink.MainFrame.ProxyCommitRatio"/>
+  <affected-histogram name="Blink.MainFrame.ScrollingCoordinatorRatio"/>
   <affected-histogram name="Blink.MainFrame.StyleAndLayoutRatio"/>
   <affected-histogram name="Blink.MainFrame.UpdateLayersRatio"/>
 </histogram_suffixes>
@@ -165999,6 +166984,18 @@
   <affected-histogram name="PasswordManager.FillingAssistance"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="PaymentRequestCompletedInstrument" separator=".">
+  <suffix name="BasicCard"
+      label="Request is completed using basic card method."/>
+  <suffix name="Google"
+      label="Request is completed using Google payment instrument."/>
+  <suffix name="Other"
+      label="Request is completed using other payment instruments."/>
+  <affected-histogram name="PaymentRequest.TimeToCheckout.Completed.Shown"/>
+  <affected-histogram
+      name="PaymentRequest.TimeToCheckout.Completed.SkippedShow"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="PaymentRequestOutcome" separator=".">
   <suffix name="Completed" label="The Payment Request was completed"/>
   <suffix name="OtherAborted"
@@ -166029,6 +167026,14 @@
       name="PaymentRequest.NumberOfSuggestionsShown.ShippingAddress"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="PaymentRequestPaymentSheetShowStatus" separator=".">
+  <suffix name="BeforeShow"
+      label="Request is terminated before request.show()."/>
+  <suffix name="Shown" label="Payment sheet is shown."/>
+  <suffix name="SkippedShow" label="Payment sheet is skipped."/>
+  <affected-histogram name="PaymentRequest.TimeToCheckout.UserAborted"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="PaymentRequestSection" separator=".">
   <suffix name="ContactInfo"
       label="For the contact info section of a Payment Request"/>
@@ -169128,6 +170133,17 @@
   <affected-histogram name="Skia.DrawScaleFactor"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="SmartLockStatusTypes" separator=".">
+  <suffix name="Other"/>
+  <suffix name="Unlockable"/>
+  <affected-histogram
+      name="SmartLock.Performance.AuthenticationToReceiveFirstRemoteStatusDuration.Unlock"/>
+  <affected-histogram
+      name="SmartLock.Performance.ShowLockScreenToShowFirstStatusToUserDuration.Unlock"/>
+  <affected-histogram
+      name="SmartLock.Performance.StartScanToReceiveFirstRemoteStatusDuration.Unlock"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="SmoothnessSequenceTypes" separator=".">
   <suffix name="CompositorAnimation" label="Compositor-driven animation"/>
   <suffix name="MainThreadAnimation" label="Main-thread driven animation"/>
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml
index a089961b..64e1cf0 100644
--- a/tools/metrics/ukm/ukm.xml
+++ b/tools/metrics/ukm/ukm.xml
@@ -2412,6 +2412,44 @@
   </metric>
 </event>
 
+<event name="ContentIndex.Added">
+  <owner>rayankans@chromium.org</owner>
+  <summary>
+    Collected when a new Content Index entry is registered.
+  </summary>
+  <metric name="Category" enum="ContentIndexCategory">
+    <summary>
+      The type of the content registered. Corresponds to
+      blink.mojom.ContentCategory.
+    </summary>
+  </metric>
+</event>
+
+<event name="ContentIndex.DeletedByUser">
+  <owner>rayankans@chromium.org</owner>
+  <summary>
+    Collected when a Content Index entry is deleted by the user from the
+    Downloads page.
+  </summary>
+  <metric name="Deleted" enum="Boolean">
+    <summary>
+      Always true.
+    </summary>
+  </metric>
+</event>
+
+<event name="ContentIndex.Opened">
+  <owner>rayankans@chromium.org</owner>
+  <summary>
+    Collected when a Content Index entry is opened from the Downloads page.
+  </summary>
+  <metric name="IsOffline" enum="Boolean">
+    <summary>
+      Whether the browser was offline when the content was opened.
+    </summary>
+  </metric>
+</event>
+
 <event name="ContextualSearch">
   <owner>donnd@chromium.org</owner>
   <summary>
diff --git a/tools/perf/PRESUBMIT.py b/tools/perf/PRESUBMIT.py
index 26dc65c..4984d27e 100644
--- a/tools/perf/PRESUBMIT.py
+++ b/tools/perf/PRESUBMIT.py
@@ -40,6 +40,8 @@
   chromium_src_dir = input_api.os_path.join(perf_dir, '..', '..')
   telemetry_dir = input_api.os_path.join(
       chromium_src_dir, 'third_party', 'catapult', 'telemetry')
+  typ_dir = input_api.os_path.join(
+       chromium_src_dir, 'third_party', 'catapult', 'third_party', 'typ')
   experimental_dir = input_api.os_path.join(
       chromium_src_dir, 'third_party', 'catapult', 'experimental')
   tracing_dir = input_api.os_path.join(
@@ -50,6 +52,7 @@
       chromium_src_dir, 'build', 'android')
   return [
       telemetry_dir,
+      typ_dir,
       input_api.os_path.join(telemetry_dir, 'third_party', 'mock'),
       experimental_dir,
       tracing_dir,
diff --git a/tools/perf/README.md b/tools/perf/README.md
index 23b219d..6e9d9f5 100644
--- a/tools/perf/README.md
+++ b/tools/perf/README.md
@@ -11,10 +11,10 @@
 
 Note you can also read the higher level [Chrome Speed][speed] documentation to
 learn more about the team organization and, in particular, the top level view
-of [How Chrome Measures Performance][chrome_perf].
+of [How Chrome Measures Performance][chrome_perf_how].
 
 [speed]: /docs/speed/README.md
-[chrome_perf]: /docs/speed/how_does_chrome_measure_performance.md
+[chrome_perf_how]: /docs/speed/how_does_chrome_measure_performance.md
 
 ## run_benchmark
 
@@ -27,7 +27,49 @@
 [run_locally]: https://chromium.googlesource.com/catapult.git/+/HEAD/telemetry/docs/run_benchmarks_locally.md
 [device_setup]: /docs/speed/benchmark/telemetry_device_setup.md
 
+## update_wpr
 
-## TODO
+A helper script to automate various tasks related to the update of
+[Web Page Recordings][wpr] for our benchmarks. In can help creating new
+recordings from live websites, replay those to make sure they
+work, upload them to cloud storage, and finally send a CL to review with the
+new recordings.
 
-Documentation for other commands in this directory is also coming.
+[wpr]: https://github.com/catapult-project/catapult/tree/master/web_page_replay_go
+
+## pinpoint_cli
+
+A command line interface to the [pinpoint][] service. Allows to create new
+jobs, check the status of jobs, and fetch their measurements as csv files.
+
+[pinpoint]: https://pinpoint-dot-chromeperf.appspot.com
+
+## flakiness_cli
+
+A command line interface to the [flakiness dashboard][].
+
+[flakiness dashboard]: https://test-results.appspot.com/dashboards/flakiness_dashboard.html
+
+## soundwave
+
+Allows to fetch data from the [Chrome Performance Dashboard][chromeperf] and
+stores it locally on a SQLite database for further analysis and processing.
+It also allows defining [studies][], pre-sets of measurements a team is
+interested in tracking, and uploads them to cloud storage to visualize with the
+help of [Data Studio][]. This currently backs the [v8][v8_dashboard] and
+[health][health_dashboard] dashboards.
+
+[chromeperf]: https://chromeperf.appspot.com/
+[studies]: https://cs.chromium.org/chromium/src/tools/perf/cli_tools/soundwave/studies/
+[Data Studio]: https://datastudio.google.com/
+[v8_dashboard]: https://datastudio.google.com/s/iNcXppkP3DI
+[health_dashboard]: https://datastudio.google.com/s/jUXfKZXXfT8
+
+## pinboard
+
+Allows scheduling daily [pinpoint][] jobs to compare measurements with/without
+a patch being applied. This is useful for teams developing a new feature behind
+a flag, who wants to track the effects on performance as the development of
+their feature progresses. Processed data for relevant measurements is uploaded
+to cloud storage, where it can be read by [Data Studio][].
+This also backs data displayed on the [v8][v8_dashboard] dashboard.
diff --git a/tools/perf/benchmark.csv b/tools/perf/benchmark.csv
index da452385..dad36437 100644
--- a/tools/perf/benchmark.csv
+++ b/tools/perf/benchmark.csv
@@ -1,6 +1,7 @@
 AUTOGENERATED FILE DO NOT EDIT
 See https://bit.ly/update-benchmarks-info to make changes
 Benchmark name,Individual owners,Component,Documentation,Tags
+UNSCHEDULED_jetstream2,"hablich@chromium.org, tcwang@chromium.org",Blink>JavaScript,https://browserbench.org/JetStream/in-depth.html,
 angle_perftests,"jmadill@chromium.org, chrome-gpu-perf-owners@chromium.org",Internals>GPU>ANGLE,,
 base_perftests,"skyostil@chromium.org, gab@chromium.org",Internals>SequenceManager,https://chromium.googlesource.com/chromium/src/+/HEAD/base/README.md#performance-testing,
 blink_perf.accessibility,dmazzoni@chromium.org,Blink>Accessibility,https://bit.ly/blink-perf-benchmarks,
diff --git a/tools/perf/benchmarks/benchmark_smoke_unittest.py b/tools/perf/benchmarks/benchmark_smoke_unittest.py
index 57880a1..519c165a 100644
--- a/tools/perf/benchmarks/benchmark_smoke_unittest.py
+++ b/tools/perf/benchmarks/benchmark_smoke_unittest.py
@@ -24,7 +24,6 @@
 from py_utils import tempfile_ext
 
 from benchmarks import jetstream
-from benchmarks import kraken
 from benchmarks import octane
 from benchmarks import rasterize_and_record_micro
 from benchmarks import speedometer
@@ -87,7 +86,7 @@
 
       single_page_benchmark = SinglePageBenchmark()
       with open(path_util.GetExpectationsPath()) as fp:
-        single_page_benchmark.AugmentExpectationsWithParser(fp.read())
+        single_page_benchmark.AugmentExpectationsWithFile(fp.read())
 
       return_code = single_page_benchmark.Run(options)
 
@@ -104,7 +103,6 @@
     rasterize_and_record_micro,  # Always fails on cq bot.
     speedometer,  # Takes 101 seconds.
     jetstream,  # Take 206 seconds.
-    kraken,  # Flaky on Android, crbug.com/626174.
     v8_browsing, # Flaky on Android, crbug.com/628368.
 }
 
diff --git a/tools/perf/benchmarks/jetstream2.py b/tools/perf/benchmarks/jetstream2.py
new file mode 100644
index 0000000..19f31f16c
--- /dev/null
+++ b/tools/perf/benchmarks/jetstream2.py
@@ -0,0 +1,44 @@
+# Copyright 2019 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.
+
+"""Runs Apple's JetStream 2 benchmark.
+
+JetStream 2 combines together a variety of JavaScript and Web Assembly
+benchmarks, covering a variety of advanced workloads and programming
+techniques, and reports a single score that balances them using a geometric
+mean.
+
+Each benchmark measures a distinct workload, and no single optimization
+technique is sufficient to speed up all benchmarks. Some benchmarks
+demonstrate tradeoffs, and aggressive or specialized optimizations for one
+benchmark might make another benchmark slower. JetStream 2 rewards browsers
+that start up quickly, execute code quickly, and continue running smoothly.
+
+Each benchmark in JetStream 2 computes its own individual score. JetStream 2
+weighs each benchmark equally, taking the geometric mean over each individual
+benchmark's score to compute the overall JetStream 2 score.
+
+"""
+
+from telemetry import benchmark
+
+import page_sets
+from benchmarks import press
+
+
+@benchmark.Info(emails=['hablich@chromium.org', 'tcwang@chromium.org'],
+                component='Blink>JavaScript',
+                documentation_url='https://browserbench.org/JetStream/in-depth.html')
+
+class Jetstream2(press._PressBenchmark): # pylint: disable=protected-access
+  """JetStream2, a combination of JavaScript and Web Assembly benchmarks.
+
+  Run all the Jetstream 2 benchmarks by default.
+  """
+  @classmethod
+  def Name(cls):
+    return 'UNSCHEDULED_jetstream2'
+
+  def CreateStorySet(self, options):
+    return page_sets.Jetstream2StorySet()
diff --git a/tools/perf/benchmarks/system_health_smoke_test.py b/tools/perf/benchmarks/system_health_smoke_test.py
index 7534d96..d5d320ad 100644
--- a/tools/perf/benchmarks/system_health_smoke_test.py
+++ b/tools/perf/benchmarks/system_health_smoke_test.py
@@ -228,7 +228,7 @@
 
       single_page_benchmark = SinglePageBenchmark()
       with open(path_util.GetExpectationsPath()) as fp:
-        single_page_benchmark.AugmentExpectationsWithParser(fp.read())
+        single_page_benchmark.AugmentExpectationsWithFile(fp.read())
 
       return_code = single_page_benchmark.Run(options)
 
diff --git a/tools/perf/cli_tools/pinboard/job_configs.json b/tools/perf/cli_tools/pinboard/job_configs.json
index a1e66e09..03f3beb 100644
--- a/tools/perf/cli_tools/pinboard/job_configs.json
+++ b/tools/perf/cli_tools/pinboard/job_configs.json
@@ -25,5 +25,14 @@
     "extra_test_args": "--story-tag-filter emerging_market",
     "patch": "https://chromium-review.googlesource.com/c/v8/v8/+/1278496",
     "repository": "chromium"
+  },
+  {
+    "name": "Try job for scheduler: disable bootstrap prioritization",
+    "target": "performance_test_suite",
+    "configuration": "android-go-perf",
+    "benchmark": "startup.mobile",
+    "extra_test_args": "--story-filter=intent:coldish:bbc",
+    "patch": "https://chromium-review.googlesource.com/c/chromium/src/+/1731904",
+    "repository": "chromium"
   }
 ]
diff --git a/tools/perf/cli_tools/soundwave/studies/__init__.py b/tools/perf/cli_tools/soundwave/studies/__init__.py
index 8e18c687..a59cdf0 100644
--- a/tools/perf/cli_tools/soundwave/studies/__init__.py
+++ b/tools/perf/cli_tools/soundwave/studies/__init__.py
@@ -24,13 +24,18 @@
   # We use all runs on the latest day for each quarter as reference.
   df['quarter'] = df['timestamp'].dt.to_period('Q')
   df['reference'] = df['timestamp'].dt.date == df.groupby(
-      'quarter')['timestamp'].transform('max').dt.date
+      ['quarter', 'test_suite', 'bot'])['timestamp'].transform('max').dt.date
 
   # Change units for values in ms to seconds, and percent values.
+  df['units'] = df['units'].fillna('')
   is_ms_unit = df['units'].str.startswith('ms_')
   df.loc[is_ms_unit, 'value'] = df['value'] / 1000
 
   is_percentage = df['units'].str.startswith('n%_')
   df.loc[is_percentage, 'value'] = df['value'] * 100
 
+  # Remove unused columns to save space in the output csv.
+  for col in ('point_id', 'chromium_rev', 'clank_rev', 'trace_url'):
+    del df[col]
+
   return df
diff --git a/tools/perf/cli_tools/soundwave/studies/v8_study.py b/tools/perf/cli_tools/soundwave/studies/v8_study.py
index ea50583..77b003e 100644
--- a/tools/perf/cli_tools/soundwave/studies/v8_study.py
+++ b/tools/perf/cli_tools/soundwave/studies/v8_study.py
@@ -8,41 +8,61 @@
 
 CLOUD_PATH = 'gs://chrome-health-tvdata/datasets/v8_report.csv'
 
-ANDROID_GO = 'ChromiumPerf:android-go-perf'
-V8_EFFECTIVE_SIZE = (
-    'memory:chrome:renderer_processes:reported_by_chrome:v8:effective_size')
+PIXEL_32_BITS = 'ChromiumPerf:android-pixel2-perf'
+PIXEL_64_BITS = 'ChromiumPerfFyi:android-pixel2-perf-fyi'
 
-
-TEST_SUITES = {
-    'system_health.memory_mobile': [
-        V8_EFFECTIVE_SIZE],
-    'system_health.common_mobile': [
-        'timeToFirstContentfulPaint', 'timeToFirstMeaningfulPaint',
-        'timeToInteractive'],
-    'v8.browsing_mobile': [
-        'Total:duration', 'V8-Only:duration', V8_EFFECTIVE_SIZE]
+BROWSING_TEST_SUITES = {
+    'v8.browsing_mobile': ['Total:duration', 'V8-Only:duration']
 }
 
+BENCHMARK_TEST_SUITES = {
+    'speedometer2': ['RunsPerMinute'],
+    'octane': ['Total.Score'],
+    'jetstream' : ['Score']
+}
 
-def GetEmergingMarketStories():
+def GetV8BrowsingMobile():
+  # The describe API doesn't currently work with v8.browsing_mobile, so use
+  # system_health.memory_mobile instead since it has the same test cases.
   description = dashboard_service.Describe('system_health.memory_mobile')
-  return description['caseTags']['emerging_market']
+  return description['cases']
 
 
 def IterTestPaths():
-  # We want to track emerging market stories only.
-  test_cases = GetEmergingMarketStories()
+  v8_browsing_test_cases = GetV8BrowsingMobile()
 
-  for test_suite, measurements in TEST_SUITES.iteritems():
-    # v8.browsing_mobile only runs 'browse:*' stories, while other benchmarks
-    # run all of them.
-    browse_only = 'browsing' in test_suite
-    for test_case in test_cases:
-      if browse_only and not test_case.startswith('browse:'):
-        continue
+  for bot in [PIXEL_32_BITS, PIXEL_64_BITS]:
+    bot_path = bot.replace(':', "/")
+    for test_suite, measurements in BROWSING_TEST_SUITES.iteritems():
+      # v8.browsing_mobile only runs 'browse:*' stories, while other benchmarks
+      # run all of them.
+      browse_only = 'browsing' in test_suite
+      for test_case in v8_browsing_test_cases:
+        if browse_only and not test_case.startswith('browse:'):
+          continue
+
+        # Don't yield the page category entries.
+        test_case_parts = test_case.split(':')
+        if len(test_case_parts) <= 2:
+          continue
+
+        # Remove disabled tests from the list of those to be collected.
+        if test_case_parts[2] in ['toi', 'globo', 'flipkart', 'avito']:
+          continue
+
+        page = '_'.join(test_case_parts)
+        page_category = '_'.join(test_case_parts[0:2])
+
+        for measurement in measurements:
+          # The v2 API doesn't support v8.browsing_mobile, so fall back on the v1
+          # API for now.
+          yield '/'.join(
+              [bot_path, test_suite, measurement, page_category, page])
+
+    for test_suite, measurements in BENCHMARK_TEST_SUITES.iteritems():
       for measurement in measurements:
         yield timeseries.Key(
             test_suite=test_suite,
             measurement=measurement,
-            bot=ANDROID_GO,
-            test_case=test_case)
+            bot=bot,
+            test_case='')
diff --git a/tools/perf/contrib/cros_benchmarks/page_cycler_v2.py b/tools/perf/contrib/cros_benchmarks/page_cycler_v2.py
deleted file mode 100644
index 3df2831..0000000
--- a/tools/perf/contrib/cros_benchmarks/page_cycler_v2.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright 2016 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.
-
-"""The page cycler v2.
-
-For details, see design doc:
-https://docs.google.com/document/d/1EZQX-x3eEphXupiX-Hq7T4Afju5_sIdxPWYetj7ynd0
-"""
-
-from core import perf_benchmark
-import page_sets
-
-from benchmarks import loading_metrics_category
-from telemetry import benchmark
-from telemetry.web_perf import timeline_based_measurement
-
-class _PageCyclerV2(perf_benchmark.PerfBenchmark):
-  options = {'pageset_repeat': 2}
-
-  def CreateCoreTimelineBasedMeasurementOptions(self):
-    tbm_options = timeline_based_measurement.Options()
-    loading_metrics_category.AugmentOptionsForLoadingMetrics(tbm_options)
-    return tbm_options
-
-
-@benchmark.Info(emails=['kouhei@chromium.org', 'ksakamoto@chromium.org'])
-class PageCyclerV2Typical25(_PageCyclerV2):
-  """Page load time benchmark for a 25 typical web pages.
-
-  Designed to represent typical, not highly optimized or highly popular web
-  sites. Runs against pages recorded in June, 2014.
-  """
-
-  @classmethod
-  def Name(cls):
-    return 'page_cycler_v2.typical_25'
-
-  def CreateStorySet(self, options):
-    return page_sets.Typical25PageSet()
-
-
-@benchmark.Info(emails=['kouhei@chromium.org', 'ksakamoto@chromium.org'])
-class PageCyclerV2IntlArFaHe(_PageCyclerV2):
-  """Page load time for a variety of pages in Arabic, Farsi and Hebrew.
-
-  Runs against pages recorded in April, 2013.
-  """
-  page_set = page_sets.IntlArFaHePageSet
-
-  @classmethod
-  def Name(cls):
-    return 'page_cycler_v2.intl_ar_fa_he'
-
-  def CreateStorySet(self, options):
-    return page_sets.IntlArFaHePageSet()
-
-
-@benchmark.Info(emails=['kouhei@chromium.org', 'ksakamoto@chromium.org'])
-class PageCyclerV2IntlEsFrPtBr(_PageCyclerV2):
-  """Page load time for a pages in Spanish, French and Brazilian Portuguese.
-
-  Runs against pages recorded in April, 2013.
-  """
-  page_set = page_sets.IntlEsFrPtBrPageSet
-
-  @classmethod
-  def Name(cls):
-    return 'page_cycler_v2.intl_es_fr_pt-BR'
-
-  def CreateStorySet(self, options):
-    return page_sets.IntlEsFrPtBrPageSet()
-
-
-@benchmark.Info(emails=['kouhei@chromium.org', 'ksakamoto@chromium.org'])
-class PageCyclerV2IntlHiRu(_PageCyclerV2):
-  """Page load time benchmark for a variety of pages in Hindi and Russian.
-
-  Runs against pages recorded in April, 2013.
-  """
-  page_set = page_sets.IntlHiRuPageSet
-
-  @classmethod
-  def Name(cls):
-    return 'page_cycler_v2.intl_hi_ru'
-
-  def CreateStorySet(self, options):
-    return page_sets.IntlHiRuPageSet()
-
-
-@benchmark.Info(emails=['kouhei@chromium.org', 'ksakamoto@chromium.org'])
-class PageCyclerV2IntlJaZh(_PageCyclerV2):
-  """Page load time benchmark for a variety of pages in Japanese and Chinese.
-
-  Runs against pages recorded in April, 2013.
-  """
-
-  @classmethod
-  def Name(cls):
-    return 'page_cycler_v2.intl_ja_zh'
-
-  def CreateStorySet(self, options):
-    return page_sets.IntlJaZhPageSet()
-
-
-@benchmark.Info(emails=['kouhei@chromium.org', 'ksakamoto@chromium.org'])
-class PageCyclerV2IntlKoThVi(_PageCyclerV2):
-  """Page load time for a variety of pages in Korean, Thai and Vietnamese.
-
-  Runs against pages recorded in April, 2013.
-  """
-  page_set = page_sets.IntlKoThViPageSet
-
-  @classmethod
-  def Name(cls):
-    return 'page_cycler_v2.intl_ko_th_vi'
-
-  def CreateStorySet(self, options):
-    return page_sets.IntlKoThViPageSet()
diff --git a/tools/perf/core/benchmark_runner.py b/tools/perf/core/benchmark_runner.py
index ec090b7..654702b9 100644
--- a/tools/perf/core/benchmark_runner.py
+++ b/tools/perf/core/benchmark_runner.py
@@ -14,10 +14,11 @@
 from telemetry import command_line
 
 
-def main(config):
+def main(config, args=None):
   options = command_line.ParseArgs(
-      environment=config,
+      environment=config, args=args,
       results_arg_parser=results_processor.ArgumentParser())
   results_processor.ProcessOptions(options)
-  command_line.RunCommand(options)
-  results_processor.ProcessResults(options)
+  run_return_code = command_line.RunCommand(options)
+  process_return_code = results_processor.ProcessResults(options)
+  return max(run_return_code, process_return_code)
diff --git a/tools/perf/core/benchmark_runner_unittest.py b/tools/perf/core/benchmark_runner_unittest.py
new file mode 100644
index 0000000..fc2b2f33
--- /dev/null
+++ b/tools/perf/core/benchmark_runner_unittest.py
@@ -0,0 +1,38 @@
+# Copyright 2019 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 unittest
+
+import mock
+
+from core import benchmark_runner
+
+
+def _FakeParseArgs(environment, args, results_arg_parser):
+  del environment  # Unused.
+  options, _ = results_arg_parser.parse_known_args(args)
+  return options
+
+
+class BenchmarkRunnerUnittest(unittest.TestCase):
+  def testMain_returnCode(self):
+    """Test that benchmark_runner.main() respects return code from Telemetry."""
+    # TODO(crbug.com/985712): Ideally we should write a more "integration" kind
+    # of test, where we don't mock out the Telemetry command line. This is
+    # hard to do now, however, because we need a way to convert the browser
+    # selection done by the test runner, back to a suitable --browser arg for
+    # the command line below. Namely, we need an equivalent of
+    # options_for_unittests.GetCopy() that returns a list of string args
+    # rather than the parsed options object.
+    config = mock.Mock()
+    with mock.patch('core.benchmark_runner.command_line') as telemetry_cli:
+      telemetry_cli.ParseArgs.side_effect = _FakeParseArgs
+      telemetry_cli.RunCommand.return_value = 42
+
+      # Note: For now we pass `--output-format none` and a non-existent output
+      # dir to prevent the results processor from processing any results.
+      return_code = benchmark_runner.main(config, [
+          'run', 'some.benchmark', '--browser', 'stable',
+          '--output-dir', '/does/not/exist', '--output-format', 'none'])
+      self.assertEqual(return_code, 42)
diff --git a/tools/perf/core/generate_system_health_csv_unittest.py b/tools/perf/core/generate_system_health_csv_unittest.py
deleted file mode 100644
index 5bb63c0..0000000
--- a/tools/perf/core/generate_system_health_csv_unittest.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2017 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 unittest
-import sys
-
-from core import system_health_csv_generator
-from core import path_util
-sys.path.insert(1, path_util.GetTelemetryDir())  # To resolve telemetry imports
-
-
-class GenerateSystemHealthCSVTest(unittest.TestCase):
-  def testPopulateExpectations(self):
-    expected_result = {
-        'browse:media:tumblr': 'Mac 10.11',
-        'browse:news:cnn': 'Mac Platforms',
-        'browse:news:hackernews': 'Win Platforms, Mac Platforms',
-        'browse:search:google': 'Win Platforms',
-        'browse:tools:earth': 'All Platforms',
-        'browse:tools:maps': 'All Platforms',
-        'play:media:google_play_music': 'All Platforms',
-        'play:media:soundcloud': 'Win Platforms'}
-    all_expects = [{
-        'browse:news:cnn': [(
-            ['Mac Platforms'], 'crbug.com/728576')],
-        'browse:tools:earth': [(
-            ['All Platforms'], 'crbug.com/760966')],
-        'browse:news:hackernews': [(
-            ['Win Platforms', 'Mac Platforms'],
-            'crbug.com/712694')],
-        'play:media:soundcloud': [(
-            ['Win Platforms'], 'crbug.com/649392')],
-        'play:media:google_play_music': [(
-            ['All Platforms'], 'crbug.com/649392')],
-        'browse:tools:maps': [(
-            ['All Platforms'], 'crbug.com/712694')],
-        'browse:search:google': [(
-            ['Win Platforms'], 'win:crbug.com/673775, mac:crbug.com/756027')],
-        'browse:media:tumblr': [(
-            ['Mac 10.11'], 'crbug.com/760966')],
-    }]
-    self.assertEquals(
-        expected_result,
-        system_health_csv_generator.PopulateExpectations(all_expects))
diff --git a/tools/perf/core/results_processor/processor.py b/tools/perf/core/results_processor/processor.py
index 3c2fb97..d721cb62 100644
--- a/tools/perf/core/results_processor/processor.py
+++ b/tools/perf/core/results_processor/processor.py
@@ -111,6 +111,6 @@
       after any adjustments from ProcessOptions were applied.
   """
   if not getattr(options, 'output_formats', None):
-    return
+    return 0
 
   raise NotImplementedError(options.output_formats)
diff --git a/tools/perf/core/story_expectation_validator.py b/tools/perf/core/story_expectation_validator.py
index 66013a7..222ea54 100755
--- a/tools/perf/core/story_expectation_validator.py
+++ b/tools/perf/core/story_expectation_validator.py
@@ -4,8 +4,7 @@
 # found in the LICENSE file.
 """Script to check validity of StoryExpectations."""
 
-import argparse
-import json
+import logging
 import os
 
 from core import benchmark_utils
@@ -14,6 +13,8 @@
 path_util.AddTelemetryToPath()
 path_util.AddAndroidPylibToPath()
 
+from typ import expectations_parser as typ_expectations_parser
+
 
 CLUSTER_TELEMETRY_DIR = os.path.join(
     path_util.GetChromiumSrcDir(), 'tools', 'perf', 'contrib',
@@ -23,59 +24,29 @@
     benchmark_finders.GetBenchmarksInSubDirectory(CLUSTER_TELEMETRY_DIR)
 ]
 
-
-def validate_story_names(benchmarks, raw_expectations_data):
+def validate_story_names(benchmarks, test_expectations):
+  stories = []
   for benchmark in benchmarks:
     if benchmark.Name() in CLUSTER_TELEMETRY_BENCHMARKS:
       continue
-    b = benchmark()
-    b.AugmentExpectationsWithParser(raw_expectations_data)
-    story_set = benchmark_utils.GetBenchmarkStorySet(b)
-    failed_stories = b.GetBrokenExpectations(story_set)
-    assert not failed_stories, 'Incorrect story names: %s' % str(failed_stories)
+    story_set = benchmark_utils.GetBenchmarkStorySet(benchmark())
+    stories.extend([benchmark.Name() + '/' + s.name for s in story_set.stories])
+  broken_expectations = test_expectations.check_for_broken_expectations(stories)
+  unused_patterns = ''
+  for pattern in set([e.test for e in broken_expectations]):
+    unused_patterns += ("Expectations with pattern '%s'"
+                        " do not apply to any stories\n" % pattern)
+  assert not unused_patterns, unused_patterns
 
 
-def GetDisabledStories(benchmarks, raw_expectations_data):
-  # Creates a dictionary of the format:
-  # {
-  #   'benchmark_name1' : {
-  #     'story_1': [
-  #       {'conditions': conditions, 'reason': reason},
-  #       ...
-  #     ],
-  #     ...
-  #   },
-  #   ...
-  # }
-  disables = {}
-  for benchmark in benchmarks:
-    name = benchmark.Name()
-    disables[name] = {}
-    b = benchmark()
-    b.AugmentExpectationsWithParser(raw_expectations_data)
-    expectations = b.expectations.AsDict()['stories']
-    for story in expectations:
-      for conditions, reason in  expectations[story]:
-        if not disables[name].get(story):
-          disables[name][story] = []
-          conditions_str = [str(a) for a in conditions]
-        disables[name][story].append((conditions_str, reason))
-  return disables
-
-
-def main(args):
-  parser = argparse.ArgumentParser(
-      description=('Tests if disabled stories exist.'))
-  parser.add_argument(
-      '--list', action='store_true', default=False,
-      help=('Prints list of disabled stories.'))
-  options = parser.parse_args(args)
+def main():
   benchmarks = benchmark_finders.GetAllBenchmarks()
   with open(path_util.GetExpectationsPath()) as fp:
     raw_expectations_data = fp.read()
-  if options.list:
-    stories = GetDisabledStories(benchmarks, raw_expectations_data)
-    print json.dumps(stories, sort_keys=True, indent=4, separators=(',', ': '))
-  else:
-    validate_story_names(benchmarks, raw_expectations_data)
+  test_expectations = typ_expectations_parser.TestExpectations()
+  ret, msg = test_expectations.parse_tagged_list(raw_expectations_data)
+  if ret:
+    logging.error(msg)
+    return ret
+  validate_story_names(benchmarks, test_expectations)
   return 0
diff --git a/tools/perf/core/story_expectation_validator_unittest.py b/tools/perf/core/story_expectation_validator_unittest.py
index 702a3b9..52ece0ea 100644
--- a/tools/perf/core/story_expectation_validator_unittest.py
+++ b/tools/perf/core/story_expectation_validator_unittest.py
@@ -8,6 +8,8 @@
 from telemetry import benchmark
 from telemetry import story
 
+from typ import expectations_parser as typ_expectations_parser
+
 class FakePage(object):
   def __init__(self, name):
     self._name = name
@@ -40,32 +42,26 @@
 
 class StoryExpectationValidatorTest(unittest.TestCase):
   def testValidateStoryInValidName(self):
-    raw_expectations = '# tags: Mac\ncrbug.com/123 [ Mac ] b1/s1 [ Skip ]'
+    raw_expectations = ('# tags: [ Mac ]\n'
+                        '# results: [ Skip ]\n'
+                        'crbug.com/123 [ Mac ] b1/s1 [ Skip ]\n')
+    test_expectations = typ_expectations_parser.TestExpectations()
+    ret, _ = test_expectations.parse_tagged_list(raw_expectations)
+    self.assertFalse(ret)
     benchmarks = [FakeBenchmark]
     with self.assertRaises(AssertionError):
       story_expectation_validator.validate_story_names(
-          benchmarks, raw_expectations)
+          benchmarks, test_expectations)
 
   def testValidateStoryValidName(self):
-    raw_expectations = '# tags: Mac\ncrbug.com/123 [ Mac ] b1/One [ Skip ]'
+    raw_expectations = ('# tags: [ Mac] \n'
+                        '# results: [ Skip ]\n'
+                        'crbug.com/123 [ Mac ] b1/One [ Skip ]\n')
+    test_expectations = typ_expectations_parser.TestExpectations()
+    ret, _ = test_expectations.parse_tagged_list(raw_expectations)
+    self.assertFalse(ret)
     benchmarks = [FakeBenchmark]
     # If a name is invalid, an exception is thrown. If no exception is thrown
     # all story names are valid. That is why there is no assert here.
     story_expectation_validator.validate_story_names(
-        benchmarks, raw_expectations)
-
-  def testGetDisabledStoriesWithExpectationsData(self):
-    raw_expectations = '# tags: Mac\ncrbug.com/123 [ Mac ] b1/One [ Skip ]'
-    benchmarks = [FakeBenchmark]
-    results = story_expectation_validator.GetDisabledStories(
-        benchmarks, raw_expectations)
-    expected = {'b1': {'One': [(['Mac'], 'crbug.com/123')]}}
-    self.assertEqual(expected, results)
-
-  def testGetDisabledStoriesWithoutMatchingExpectationsData(self):
-    raw_expectations = '# tags: Mac\ncrbug.com/123 [ Mac ] b2/One [ Skip ]'
-    benchmarks = [FakeBenchmark]
-    results = story_expectation_validator.GetDisabledStories(
-        benchmarks, raw_expectations)
-    expected = { 'b1': {}}
-    self.assertEqual(expected, results)
+        benchmarks, test_expectations)
diff --git a/tools/perf/core/system_health_csv_generator.py b/tools/perf/core/system_health_csv_generator.py
deleted file mode 100644
index 90aa3f51..0000000
--- a/tools/perf/core/system_health_csv_generator.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright 2016 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 csv
-import sys
-
-from core import path_util
-
-sys.path.insert(1, path_util.GetPerfDir())  # To resolve perf imports
-path_util.AddPyUtilsToPath()
-path_util.AddTelemetryToPath()
-import page_sets
-from py_utils import expectations_parser
-from telemetry.story import expectations as expectations
-
-def IterAllSystemHealthStories():
-  for s in page_sets.SystemHealthStorySet(platform='desktop'):
-    yield s
-  for s in page_sets.SystemHealthStorySet(platform='mobile'):
-    if len(s.SUPPORTED_PLATFORMS) < 2:
-      yield s
-
-
-def PopulateExpectations(all_expectations):
-  """Accepts Expectations and parses out the storyname and disabled platforms.
-
-  Args:
-    all_expectations = {
-        story_name: [[conditions], reason]}
-    conditions: list of disabled platforms for story_name
-    reason: Bug referencing why the test is disabled on the platform
-
-  Returns:
-    A dictionary containing the disabled platforms for each story.
-    disables = {
-        story_name: "Disabled Platforms"}
-  """
-  disables = {}
-  for exp in all_expectations:
-    exp_keys = exp.keys()
-    exp_keys.sort()
-
-    for story in exp_keys:
-      for conditions, _ in exp[story]:
-        conditions_str = ", ".join(map(str, conditions))
-        if story in disables:
-          if conditions_str not in disables[story]:
-            disables[story] += ", " + conditions_str
-        else:
-          disables[story] = conditions_str
-  return disables
-
-def GenerateSystemHealthCSV(file_path):
-  system_health_stories = list(IterAllSystemHealthStories())
-
-  e = expectations.StoryExpectations()
-  with open(path_util.GetExpectationsPath()) as fp:
-    parser = expectations_parser.TestExpectationParser(fp.read())
-
-  benchmarks = ['system_health.common_desktop', 'system_health.common_mobile',
-                'system_health.memory_desktop', 'system_health.memory_mobile']
-  for benchmark in benchmarks:
-    e.GetBenchmarkExpectationsFromParser(parser.expectations, benchmark)
-
-  disabed_platforms = PopulateExpectations([e.AsDict()['stories']])
-
-  system_health_stories.sort(key=lambda s: s.name)
-  with open(file_path, 'w') as f:
-    csv_writer = csv.writer(f)
-    csv_writer.writerow([
-        'Story name', 'Platform', 'Description', 'Disabled Platforms'])
-    for s in system_health_stories:
-      p = s.SUPPORTED_PLATFORMS
-      if len(p) == 2:
-        p = 'all'
-      else:
-        p = list(p)[0]
-      if s.name in disabed_platforms:
-        csv_writer.writerow(
-            [s.name, p, s.GetStoryDescription(), disabed_platforms[s.name]])
-      else:
-        csv_writer.writerow([s.name, p, s.GetStoryDescription(), " "])
-  return 0
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index 9ce31f2..0526c656 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -2,448 +2,436 @@
 # Instructions of how to use this file:
 # https://chromium.googlesource.com/chromium/src/+/master/docs/speed/bot_health_sheriffing/how_to_disable_a_story.md
 
-# tags: All Android_Go Android_One Android_Svelte Android_Low_End
-# tags: Android_Webview Android_but_not_webview Mac Win Linux
-# tags: ChromeOS Android Desktop Nexus_5 Nexus_5X Nexus_6P
-# tags: Nexus_7 Mac_10.11 Mac_10.12 Nexus6_Webview Nexus5X_Webview
-# tags: Pixel_2 Win_7 Win_10 Android_Go_Webview Pixel2_Webview
+# tags: [ android android-go android-low-end android-nexus-5 android-nexus-5x
+#         android-nexus-6 android-pixel-2 chromeos desktop linux mac mac-10.12
+#         win win10 win7 ]
+# tags: [ android-not-webview android-webview ]
+# results: [ Skip ]
+# conflicts_allowed: True
 
 # Benchmark: blink_perf.bindings
-crbug.com/882881 [ Nexus_5 ] blink_perf.bindings/structured-clone-json-deserialize.html [ Skip ]
-crbug.com/910207 [ Nexus_5X ] blink_perf.bindings/structured-clone-json-deserialize.html [ Skip ]
-crbug.com/882881 [ Nexus_5 ] blink_perf.bindings/structured-clone-json-serialize.html [ Skip ]
-crbug.com/910207 [ Nexus_5X ] blink_perf.bindings/structured-clone-json-serialize.html [ Skip ]
-crbug.com/882881 [ Nexus_5 ] blink_perf.bindings/structured-clone-long-string-deserialize.html [ Skip ]
-crbug.com/910207 [ Nexus_5X ] blink_perf.bindings/structured-clone-long-string-deserialize.html [ Skip ]
-crbug.com/931780 [ Android_Webview ] blink_perf.bindings/structured-clone-long-string-serialize.html [ Skip ]
-crbug.com/893209 [ Android_Webview ] blink_perf.bindings/structured-clone-long-string-deserialize.html [ Skip ]
-crbug.com/882881 [ Nexus_5 ] blink_perf.bindings/structured-clone-long-string-serialize.html [ Skip ]
-crbug.com/910207 [ Nexus_5X ] blink_perf.bindings/structured-clone-long-string-serialize.html [ Skip ]
-crbug.com/882881 [ Nexus_5 ] blink_perf.bindings/worker-structured-clone-json-roundtrip.html [ Skip ]
-crbug.com/910207 [ Nexus_5X ] blink_perf.bindings/worker-structured-clone-json-roundtrip.html [ Skip ]
-crbug.com/882881 [ Nexus_5 ] blink_perf.bindings/worker-structured-clone-json-to-worker.html [ Skip ]
-crbug.com/882881 [ Nexus_5X ] blink_perf.bindings/worker-structured-clone-json-to-worker.html [ Skip ]
-crbug.com/882881 [ Nexus_5 ] blink_perf.bindings/worker-structured-clone-json-from-worker.html [ Skip ]
-crbug.com/882881 [ Nexus_5X ] blink_perf.bindings/worker-structured-clone-json-from-worker.html [ Skip ]
-crbug.com/865400 [ Pixel_2 ] blink_perf.bindings/structured-clone-long-string-deserialize.html [ Skip ]
-crbug.com/865400 [ Pixel_2 ] blink_perf.bindings/structured-clone-long-string-serialize.html [ Skip ]
+crbug.com/882881 [ android-nexus-5 ] blink_perf.bindings/structured-clone-json-deserialize.html [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] blink_perf.bindings/structured-clone-json-deserialize.html [ Skip ]
+crbug.com/882881 [ android-nexus-5 ] blink_perf.bindings/structured-clone-json-serialize.html [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] blink_perf.bindings/structured-clone-json-serialize.html [ Skip ]
+crbug.com/882881 [ android-nexus-5 ] blink_perf.bindings/structured-clone-long-string-deserialize.html [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] blink_perf.bindings/structured-clone-long-string-deserialize.html [ Skip ]
+crbug.com/931780 [ android-webview ] blink_perf.bindings/structured-clone-long-string-serialize.html [ Skip ]
+crbug.com/893209 [ android-webview ] blink_perf.bindings/structured-clone-long-string-deserialize.html [ Skip ]
+crbug.com/882881 [ android-nexus-5 ] blink_perf.bindings/structured-clone-long-string-serialize.html [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] blink_perf.bindings/structured-clone-long-string-serialize.html [ Skip ]
+crbug.com/882881 [ android-nexus-5 ] blink_perf.bindings/worker-structured-clone-json-roundtrip.html [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] blink_perf.bindings/worker-structured-clone-json-roundtrip.html [ Skip ]
+crbug.com/882881 [ android-nexus-5 ] blink_perf.bindings/worker-structured-clone-json-to-worker.html [ Skip ]
+crbug.com/882881 [ android-nexus-5x ] blink_perf.bindings/worker-structured-clone-json-to-worker.html [ Skip ]
+crbug.com/882881 [ android-nexus-5 ] blink_perf.bindings/worker-structured-clone-json-from-worker.html [ Skip ]
+crbug.com/882881 [ android-nexus-5x ] blink_perf.bindings/worker-structured-clone-json-from-worker.html [ Skip ]
+crbug.com/865400 [ android-pixel-2 ] blink_perf.bindings/structured-clone-long-string-deserialize.html [ Skip ]
+crbug.com/865400 [ android-pixel-2 ] blink_perf.bindings/structured-clone-long-string-serialize.html [ Skip ]
 
 # Benchmark: blink_perf.canvas
-crbug.com/593973 [ Android_Svelte ] blink_perf.canvas/* [ Skip ]
-crbug.com/784540 [ Nexus_5 ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
-crbug.com/784540 [ Nexus_5X ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
-crbug.com/784540 [ Nexus_5 ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
-crbug.com/784540 [ Nexus_5X ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
-crbug.com/978500 [ Pixel2_Webview ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
-crbug.com/978500 [ Nexus5X_Webview ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/978500 [ Pixel2_Webview ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/978500 [ Android ] blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html [ Skip ]
-crbug.com/978500 [ Android_Webview ] blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html [ Skip ]
-crbug.com/978500 [ Nexus_5 ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/978500 [ Nexus_5 ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/978500 [ Nexus_5 ] blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/978500 [ Nexus5X_Webview ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/978500 [ Pixel2_Webview ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/978500 [ Nexus5X_Webview ] blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/978500 [ Pixel2_Webview ] blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/853738 [ Android_Webview ] blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html [ Skip ]
-crbug.com/979829 [ Android ] blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html [ Skip ]
-crbug.com/853738 [ Android_Webview ] blink_perf.canvas/upload-video-to-sub-texture.html [ Skip ]
-crbug.com/853738 [ Android_Webview ] blink_perf.canvas/upload-video-to-texture.html [ Skip ]
-crbug.com/967809 [ Android_Webview ] blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
-crbug.com/967809 [ Android_Webview ] blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF [ Skip ]
-crbug.com/967809 [ Android_Webview ] blink_perf.canvas/upload-video-to-texture_RAF.html?RAF [ Skip ]
-crbug.com/978159 [ Nexus_5X ] blink_perf.canvas/* [ Skip ]
-crbug.com/978159 [ Nexus5X_Webview ] blink_perf.canvas/* [ Skip ]
+crbug.com/593973 [ android-low-end ] blink_perf.canvas/* [ Skip ]
+crbug.com/784540 [ android-nexus-5 ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
+crbug.com/784540 [ android-nexus-5x ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
+crbug.com/784540 [ android-nexus-5 ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
+crbug.com/784540 [ android-nexus-5x ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
+crbug.com/978500 [ android-pixel-2 android-webview ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html [ Skip ]
+crbug.com/978500 [ android-nexus-5x android-webview ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/978500 [ android-pixel-2 android-webview ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/978500 [ android ] blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html [ Skip ]
+crbug.com/978500 [ android-webview ] blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html [ Skip ]
+crbug.com/978500 [ android-nexus-5 ] blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/978500 [ android-nexus-5 ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/978500 [ android-nexus-5 ] blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/978500 [ android-nexus-5x android-webview ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/978500 [ android-pixel-2 android-webview ] blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/978500 [ android-nexus-5x android-webview ] blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/978500 [ android-pixel-2 android-webview ] blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/853738 [ android-webview ] blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html [ Skip ]
+crbug.com/979829 [ android ] blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html [ Skip ]
+crbug.com/853738 [ android-webview ] blink_perf.canvas/upload-video-to-sub-texture.html [ Skip ]
+crbug.com/853738 [ android-webview ] blink_perf.canvas/upload-video-to-texture.html [ Skip ]
+crbug.com/967809 [ android-webview ] blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d_RAF.html?RAF [ Skip ]
+crbug.com/967809 [ android-webview ] blink_perf.canvas/upload-video-to-sub-texture_RAF.html?RAF [ Skip ]
+crbug.com/967809 [ android-webview ] blink_perf.canvas/upload-video-to-texture_RAF.html?RAF [ Skip ]
+crbug.com/978159 [ android-nexus-5x ] blink_perf.canvas/* [ Skip ]
+crbug.com/978159 [ android-nexus-5x android-webview ] blink_perf.canvas/* [ Skip ]
 
 # Benchmark: blink_perf.css
-crbug.com/891878 [ Nexus5X_Webview ] blink_perf.css/CustomPropertiesVarAlias.html [ Skip ]
-crbug.com/983728 [ All ] blink_perf.css/ClassDescendantSelector.html [ Skip ]
-crbug.com/983728 [ All ] blink_perf.css/ClassInvalidation.html [ Skip ]
-crbug.com/983728 [ All ] blink_perf.css/CustomPropertiesCascade.html [ Skip ]
-crbug.com/983728 [ All ] blink_perf.css/CustomPropertiesNonRootInheritance.html [ Skip ]
-crbug.com/983728 [ All ] blink_perf.css/CustomPropertiesRootInheritance.html [ Skip ]
-crbug.com/983728 [ All ] blink_perf.css/CustomPropertiesVarAlias.html [ Skip ]
-crbug.com/983728 [ All ] blink_perf.css/FocusUpdate.html [ Skip ]
-crbug.com/983728 [ All ] blink_perf.css/PseudoClassSelectors.html [ Skip ]
-crbug.com/983728 [ All ] blink_perf.css/SelectorCountScaling.html [ Skip ]
+crbug.com/891878 [ android-nexus-5x android-webview ] blink_perf.css/CustomPropertiesVarAlias.html [ Skip ]
+crbug.com/983728 blink_perf.css/ClassDescendantSelector.html [ Skip ]
+crbug.com/983728 blink_perf.css/ClassInvalidation.html [ Skip ]
+crbug.com/983728 blink_perf.css/CustomPropertiesCascade.html [ Skip ]
+crbug.com/983728 blink_perf.css/CustomPropertiesNonRootInheritance.html [ Skip ]
+crbug.com/983728 blink_perf.css/CustomPropertiesRootInheritance.html [ Skip ]
+crbug.com/983728 blink_perf.css/CustomPropertiesVarAlias.html [ Skip ]
+crbug.com/983728 blink_perf.css/FocusUpdate.html [ Skip ]
+crbug.com/983728 blink_perf.css/PseudoClassSelectors.html [ Skip ]
+crbug.com/983728 blink_perf.css/SelectorCountScaling.html [ Skip ]
 
 # Benchmark: blink_perf.events
-crbug.com/986423 [ Nexus5X_Webview ] blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html [ Skip ]
-crbug.com/986423 [ Nexus5X_Webview ] blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html [ Skip ]
-crbug.com/986423 [ Nexus5X_Webview ] blink_perf.events/EventsDispatchingInV0ShadowTrees.html [ Skip ]
-crbug.com/986423 [ Nexus5X_Webview ] blink_perf.events/EventsDispatchingInV1ShadowTrees.html [ Skip ]
+crbug.com/986423 [ android-nexus-5x android-webview ] blink_perf.events/EventsDispatchingInDeeplyNestedV0ShadowTrees.html [ Skip ]
+crbug.com/986423 [ android-nexus-5x android-webview ] blink_perf.events/EventsDispatchingInDeeplyNestedV1ShadowTrees.html [ Skip ]
+crbug.com/986423 [ android-nexus-5x android-webview ] blink_perf.events/EventsDispatchingInV0ShadowTrees.html [ Skip ]
+crbug.com/986423 [ android-nexus-5x android-webview ] blink_perf.events/EventsDispatchingInV1ShadowTrees.html [ Skip ]
 
 # Benchmark: blink_perf.layout
-crbug.com/551950 [ Android_Svelte ] blink_perf.layout/* [ Skip ]
-crbug.com/832686 [ Nexus_5 ] blink_perf.layout/subtree-detaching.html [ Skip ]
-crbug.com/910207 [ Nexus_5X ] blink_perf.layout/subtree-detaching.html [ Skip ]
-crbug.com/966921 [ Android ] blink_perf.layout/line-layout-fit-content.html [ Skip ]
-crbug.com/966921 [ Android ] blink_perf.layout/line-layout-fit-content-break-word.html [ Skip ]
+crbug.com/551950 [ android-low-end ] blink_perf.layout/* [ Skip ]
+crbug.com/832686 [ android-nexus-5 ] blink_perf.layout/subtree-detaching.html [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] blink_perf.layout/subtree-detaching.html [ Skip ]
+crbug.com/966921 [ android ] blink_perf.layout/line-layout-fit-content.html [ Skip ]
+crbug.com/966921 [ android ] blink_perf.layout/line-layout-fit-content-break-word.html [ Skip ]
 
 # Benchmark: blink_perf.paint
-crbug.com/574483 [ Android_Svelte ] blink_perf.paint/* [ Skip ]
-crbug.com/799540 [ Nexus_5 ] blink_perf.paint/* [ Skip ]
-crbug.com/910207 [ Nexus_5X ] blink_perf.paint/* [ Skip ]
-crbug.com/859979 [ Android_Webview ] blink_perf.paint/paint-offset-changes.html [ Skip ]
-crbug.com/901493 [ Nexus6_Webview ] blink_perf.paint/* [ Skip ]
-crbug.com/963967 [ Android ] blink_perf.paint/select-all-words.html [ Skip ]
-crbug.com/966636 [ Pixel2_Webview ] blink_perf.paint/select-all-words.html [ Skip ]
+crbug.com/574483 [ android-low-end ] blink_perf.paint/* [ Skip ]
+crbug.com/799540 [ android-nexus-5 ] blink_perf.paint/* [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] blink_perf.paint/* [ Skip ]
+crbug.com/859979 [ android-webview ] blink_perf.paint/paint-offset-changes.html [ Skip ]
+crbug.com/901493 [ android-nexus-6 android-webview ] blink_perf.paint/* [ Skip ]
+crbug.com/963967 [ android ] blink_perf.paint/select-all-words.html [ Skip ]
+crbug.com/966636 [ android-pixel-2 android-webview ] blink_perf.paint/select-all-words.html [ Skip ]
 
 # Benchmark: blink_perf.parser
-crbug.com/966913 [ Nexus5X_Webview ] blink_perf.parser/query-selector-all-class-deep.html [ Skip ]
-crbug.com/966913 [ Nexus5X_Webview ] blink_perf.parser/query-selector-all-deep.html [ Skip ]
-crbug.com/966913 [ Nexus5X_Webview ] blink_perf.parser/query-selector-all-id-deep.html [ Skip ]
-crbug.com/966613 [ Pixel_2 ] blink_perf.parser/query-selector-all-class-deep.html [ Skip ]
-crbug.com/966613 [ Pixel_2 ] blink_perf.parser/query-selector-all-deep.html [ Skip ]
-crbug.com/966613 [ Pixel_2 ] blink_perf.parser/query-selector-all-id-deep.html [ Skip ]
+crbug.com/966913 [ android-nexus-5x android-webview ] blink_perf.parser/query-selector-all-class-deep.html [ Skip ]
+crbug.com/966913 [ android-nexus-5x android-webview ] blink_perf.parser/query-selector-all-deep.html [ Skip ]
+crbug.com/966913 [ android-nexus-5x android-webview ] blink_perf.parser/query-selector-all-id-deep.html [ Skip ]
+crbug.com/966613 [ android-pixel-2 ] blink_perf.parser/query-selector-all-class-deep.html [ Skip ]
+crbug.com/966613 [ android-pixel-2 ] blink_perf.parser/query-selector-all-deep.html [ Skip ]
+crbug.com/966613 [ android-pixel-2 ] blink_perf.parser/query-selector-all-id-deep.html [ Skip ]
 
 # Benchmark: blink_perf.shadow_dom
-crbug.com/702319 [ Nexus_5X ] blink_perf.shadow_dom/* [ Skip ]
+crbug.com/702319 [ android-nexus-5x ] blink_perf.shadow_dom/* [ Skip ]
 
 # Benchmark: dromaeo
-crbug.com/984578 [ Linux ] dromaeo/http://dromaeo.com?dom-modify [ Skip ]
+crbug.com/984578 [ linux ] dromaeo/http://dromaeo.com?dom-modify [ Skip ]
 
 # Benchmark: dummy_benchmark
-crbug.com/848900 [ Win ] dummy_benchmark.histogram_benchmark_1/dummy_page.html [ Skip ]
-crbug.com/848900 [ Win ] dummy_benchmark.stable_benchmark_1/dummy_page.html [ Skip ]
+crbug.com/848900 [ win ] dummy_benchmark.stable_benchmark_1/dummy_page.html [ Skip ]
 
 # Benchmark: blink_perf.svg
-crbug.com/736817 [ Nexus_5X ] blink_perf.svg/SvgCubics.html [ Skip ]
-crbug.com/736817 [ Nexus_5X ] blink_perf.svg/Debian.html [ Skip ]
-crbug.com/736817 [ Nexus_5X ] blink_perf.svg/HarveyRayner.html [ Skip ]
-crbug.com/736817 [ Nexus_5X ] blink_perf.svg/CrawFishGanson.html [ Skip ]
-crbug.com/736817 [ Nexus_5X ] blink_perf.svg/Worldcup.html [ Skip ]
-crbug.com/736817 [ Nexus_5X ] blink_perf.svg/FlowerFromMyGarden.html [ Skip ]
-crbug.com/736817 [ Nexus_5X ] blink_perf.svg/SvgNestedUse.html [ Skip ]
-crbug.com/846061 [ Win Mac ] blink_perf.svg/SierpinskiCarpet.html [ Skip ]
-crbug.com/850293 [ All ] blink_perf.svg/Cowboy_transform.html [ Skip ]
-crbug.com/894147 [ Nexus_5 ] blink_perf.svg/SierpinskiCarpet.html [ Skip ]
-crbug.com/894147 [ Nexus_5X ] blink_perf.svg/SierpinskiCarpet.html [ Skip ]
+crbug.com/736817 [ android-nexus-5x ] blink_perf.svg/SvgCubics.html [ Skip ]
+crbug.com/736817 [ android-nexus-5x ] blink_perf.svg/Debian.html [ Skip ]
+crbug.com/736817 [ android-nexus-5x ] blink_perf.svg/HarveyRayner.html [ Skip ]
+crbug.com/736817 [ android-nexus-5x ] blink_perf.svg/CrawFishGanson.html [ Skip ]
+crbug.com/736817 [ android-nexus-5x ] blink_perf.svg/Worldcup.html [ Skip ]
+crbug.com/736817 [ android-nexus-5x ] blink_perf.svg/FlowerFromMyGarden.html [ Skip ]
+crbug.com/736817 [ android-nexus-5x ] blink_perf.svg/SvgNestedUse.html [ Skip ]
+crbug.com/846061 [ win ] blink_perf.svg/SierpinskiCarpet.html [ Skip ]
+crbug.com/846061 [ mac ] blink_perf.svg/SierpinskiCarpet.html [ Skip ]
+crbug.com/850293 blink_perf.svg/Cowboy_transform.html [ Skip ]
+crbug.com/894147 [ android-nexus-5 ] blink_perf.svg/SierpinskiCarpet.html [ Skip ]
+crbug.com/894147 [ android-nexus-5x ] blink_perf.svg/SierpinskiCarpet.html [ Skip ]
 
 # Benchmark: jetstream
-crbug.com/830600 [ Nexus5X_Webview ] jetstream/http://browserbench.org/JetStream/ [ Skip ]
+crbug.com/830600 [ android-nexus-5x android-webview ] jetstream/http://browserbench.org/JetStream/ [ Skip ]
 
 # Benchmark: loading.desktop
-crbug.com/723783 [ Win ] loading.desktop/Orange_cold [ Skip ]
-crbug.com/723783 [ Win ] loading.desktop/Orange_warm [ Skip ]
-crbug.com/752611 [ Linux ] loading.desktop/uol.com.br_cold [ Skip ]
-crbug.com/752611 [ Linux ] loading.desktop/uol.com.br_warm [ Skip ]
-crbug.com/867836 [ All ] loading.desktop/Elmundo_warm [ Skip ]
-crbug.com/876636 [ ChromeOS ] loading.desktop/TheOnion_cold [ Skip ]
-crbug.com/876636 [ ChromeOS ] loading.desktop/TheOnion_warm [ Skip ]
-crbug.com/876636 [ Win_10 ] loading.desktop/TheOnion_warm [ Skip ]
-crbug.com/876636 [ Win_7 ] loading.desktop/TheOnion_warm [ Skip ]
-crbug.com/876636 [ ChromeOS ] loading.desktop/AllRecipes_cold [ Skip ]
-crbug.com/876636 [ ChromeOS ] loading.desktop/AllRecipes_warm [ Skip ]
-crbug.com/879833 [ Mac_10.12 ] loading.desktop/AllRecipes_cold [ Skip ]
-crbug.com/879833 [ Win ] loading.desktop/AllRecipes_cold [ Skip ]
-crbug.com/879833 [ All ] loading.desktop/Walgreens_cold [ Skip ]
-crbug.com/879833 [ All ] loading.desktop/Walgreens_warm [ Skip ]
-crbug.com/921428 [ ChromeOS ] loading.desktop/TheVerge_cold [ Skip ]
-crbug.com/921428 [ ChromeOS ] loading.desktop/TheVerge_warm [ Skip ]
+crbug.com/723783 [ win ] loading.desktop/Orange_cold [ Skip ]
+crbug.com/723783 [ win ] loading.desktop/Orange_warm [ Skip ]
+crbug.com/752611 [ linux ] loading.desktop/uol.com.br_cold [ Skip ]
+crbug.com/752611 [ linux ] loading.desktop/uol.com.br_warm [ Skip ]
+crbug.com/867836 loading.desktop/Elmundo_warm [ Skip ]
+crbug.com/876636 [ chromeos ] loading.desktop/TheOnion_cold [ Skip ]
+crbug.com/876636 [ chromeos ] loading.desktop/TheOnion_warm [ Skip ]
+crbug.com/876636 [ win10 ] loading.desktop/TheOnion_warm [ Skip ]
+crbug.com/876636 [ win7 ] loading.desktop/TheOnion_warm [ Skip ]
+crbug.com/876636 [ chromeos ] loading.desktop/AllRecipes_cold [ Skip ]
+crbug.com/876636 [ chromeos ] loading.desktop/AllRecipes_warm [ Skip ]
+crbug.com/879833 [ mac-10.12 ] loading.desktop/AllRecipes_cold [ Skip ]
+crbug.com/879833 [ win ] loading.desktop/AllRecipes_cold [ Skip ]
+crbug.com/879833 loading.desktop/Walgreens_cold [ Skip ]
+crbug.com/879833 loading.desktop/Walgreens_warm [ Skip ]
+crbug.com/921428 [ chromeos ] loading.desktop/TheVerge_cold [ Skip ]
+crbug.com/921428 [ chromeos ] loading.desktop/TheVerge_warm [ Skip ]
 
 # Benchmark: loading.mobile
-crbug.com/656861 [ All ] loading.mobile/G1 [ Skip ]
-crbug.com/857108 [ Nexus_5 ] loading.mobile/G1_3g [ Skip ]
-crbug.com/910207 [ Nexus_5X ] loading.mobile/G1_3g [ Skip ]
-[ Nexus_5X ] loading.mobile/Hongkiat [ Skip ]
-[ Nexus_5X ] loading.mobile/Dramaq [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/Bradesco_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/Dailymotion_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/Dawn_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/FlipKart_cold_3g [ Skip ]
-crbug.com/942631 [ All ] loading.mobile/Facebook_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/G1_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/GSShop_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/GoogleIndia_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/KapanLagi_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/Kaskus_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/LocalMoxie_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/Thairath_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/TheStar_3g [ Skip ]
-crbug.com/859597 [ All ] loading.mobile/YahooNews_3g [ Skip ]
-crbug.com/942631 [ All ] loading.mobile/VoiceMemos_hot [ Skip ]
-crbug.com/942631 [ All ] loading.mobile/VoiceMemos_warm [ Skip ]
-crbug.com/942631 [ All ] loading.mobile/VoiceMemos_hot_3g [ Skip ]
-crbug.com/942631 [ All ] loading.mobile/VoiceMemos_warm_3g [ Skip ]
-crbug.com/859597 [ Nexus_5 ] loading.mobile/FlipBoard_cold_3g [ Skip ]
-crbug.com/862663 [ Nexus_5 ] loading.mobile/GoogleBrazil_3g [ Skip ]
-crbug.com/910207 [ Nexus_5X ] loading.mobile/GoogleBrazil_3g [ Skip ]
-crbug.com/862663 [ Nexus_5 ] loading.mobile/GoogleIndonesia_3g [ Skip ]
-crbug.com/862663 [ Nexus_5 ] loading.mobile/GoogleRedirectToGoogleJapan_3g [ Skip ]
-crbug.com/910207 [ Nexus_5X ] loading.mobile/GoogleRedirectToGoogleJapan_3g [ Skip ]
-crbug.com/859597 [ Nexus_5X ] loading.mobile/FlipBoard_cold_3g [ Skip ]
-crbug.com/859597 [ Nexus_5 ] loading.mobile/Hongkiat_3g [ Skip ]
-crbug.com/859597 [ Nexus_5X ] loading.mobile/Hongkiat_3g [ Skip ]
-crbug.com/859597 [ Nexus5X_Webview ] loading.mobile/Hongkiat_3g [ Skip ]
-crbug.com/896088 [ Nexus_5 ] loading.mobile/TribunNews_3g [ Skip ]
-crbug.com/859597 [ Nexus_5X ] loading.mobile/TribunNews_3g [ Skip ]
-crbug.com/859597 [ Nexus5X_Webview ] loading.mobile/TribunNews_3g [ Skip ]
-crbug.com/859597 [ Nexus_5X ] loading.mobile/GoogleIndonesia_3g [ Skip ]
-crbug.com/859597 [ Nexus_5X ] loading.mobile/QQNews_3g [ Skip ]
-crbug.com/859597 [ Nexus_5X ] loading.mobile/Youtube_3g [ Skip ]
-crbug.com/859597 [ Nexus5X_Webview ] loading.mobile/GoogleBrazil_3g [ Skip ]
-crbug.com/867103 [ Nexus5X_Webview ] loading.mobile/FlipBoard_warm_3g [ Skip ]
-crbug.com/873032 [ Android_Webview ] loading.mobile/GoogleRedirectToGoogleJapan_3g [ Skip ]
-crbug.com/873033 [ Android_but_not_webview ] loading.mobile/FlipKart_warm_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/FlipBoard_cold_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/FlipBoard_warm_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/TribunNews_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/FlipKart_warm_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/OLX_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/Youtube_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/Hongkiat_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/BOLNoticias_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/GoogleBrazil_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/GoogleIndonesia_3g [ Skip ]
-crbug.com/676612 [ Nexus6_Webview ] loading.mobile/Kaskus [ Skip ]
-crbug.com/865400 [ Pixel_2 ] loading.mobile/TribunNews_3g [ Skip ]
-crbug.com/865400 [ Pixel_2 ] loading.mobile/Youtube_3g [ Skip ]
-crbug.com/914100 [ Nexus6_Webview ] loading.mobile/Wikipedia_3g [ Skip ]
-crbug.com/865400 [ Pixel2_Webview ] loading.mobile/BOLNoticias_3g [ Skip ]
-crbug.com/865400 [ Pixel2_Webview ] loading.mobile/FlipBoard_cold_3g [ Skip ]
-crbug.com/865400 [ Pixel2_Webview ] loading.mobile/FlipBoard_warm_3g [ Skip ]
-crbug.com/865400 [ Pixel2_Webview ] loading.mobile/FlipKart_warm_3g [ Skip ]
-crbug.com/865400 [ Pixel2_Webview ] loading.mobile/GoogleBrazil_3g [ Skip ]
-crbug.com/865400 [ Pixel2_Webview ] loading.mobile/GoogleIndonesia_3g [ Skip ]
-crbug.com/865400 [ Pixel2_Webview ] loading.mobile/Hongkiat_3g [ Skip ]
-crbug.com/865400 [ Pixel2_Webview ] loading.mobile/OLX_3g [ Skip ]
-crbug.com/865400 [ Pixel2_Webview ] loading.mobile/VoiceMemos_cold_3g [ Skip ]
-crbug.com/919191 [ Nexus5X_Webview ] loading.mobile/OLX_3g [ Skip ]
+crbug.com/656861 loading.mobile/G1 [ Skip ]
+crbug.com/857108 [ android-nexus-5 ] loading.mobile/G1_3g [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] loading.mobile/G1_3g [ Skip ]
+[ android-nexus-5x ] loading.mobile/Hongkiat [ Skip ]
+[ android-nexus-5x ] loading.mobile/Dramaq [ Skip ]
+crbug.com/859597 loading.mobile/Bradesco_3g [ Skip ]
+crbug.com/859597 loading.mobile/Dailymotion_3g [ Skip ]
+crbug.com/859597 loading.mobile/Dawn_3g [ Skip ]
+crbug.com/859597 loading.mobile/FlipKart_cold_3g [ Skip ]
+crbug.com/942631 loading.mobile/Facebook_3g [ Skip ]
+crbug.com/859597 loading.mobile/G1_3g [ Skip ]
+crbug.com/859597 loading.mobile/GSShop_3g [ Skip ]
+crbug.com/859597 loading.mobile/GoogleIndia_3g [ Skip ]
+crbug.com/859597 loading.mobile/KapanLagi_3g [ Skip ]
+crbug.com/859597 loading.mobile/Kaskus_3g [ Skip ]
+crbug.com/859597 loading.mobile/LocalMoxie_3g [ Skip ]
+crbug.com/859597 loading.mobile/Thairath_3g [ Skip ]
+crbug.com/859597 loading.mobile/TheStar_3g [ Skip ]
+crbug.com/859597 loading.mobile/YahooNews_3g [ Skip ]
+crbug.com/942631 loading.mobile/VoiceMemos_hot [ Skip ]
+crbug.com/942631 loading.mobile/VoiceMemos_warm [ Skip ]
+crbug.com/942631 loading.mobile/VoiceMemos_hot_3g [ Skip ]
+crbug.com/942631 loading.mobile/VoiceMemos_warm_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5 ] loading.mobile/FlipBoard_cold_3g [ Skip ]
+crbug.com/862663 [ android-nexus-5 ] loading.mobile/GoogleBrazil_3g [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] loading.mobile/GoogleBrazil_3g [ Skip ]
+crbug.com/862663 [ android-nexus-5 ] loading.mobile/GoogleIndonesia_3g [ Skip ]
+crbug.com/862663 [ android-nexus-5 ] loading.mobile/GoogleRedirectToGoogleJapan_3g [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] loading.mobile/GoogleRedirectToGoogleJapan_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5x ] loading.mobile/FlipBoard_cold_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5 ] loading.mobile/Hongkiat_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5x ] loading.mobile/Hongkiat_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5x android-webview ] loading.mobile/Hongkiat_3g [ Skip ]
+crbug.com/896088 [ android-nexus-5 ] loading.mobile/TribunNews_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5x ] loading.mobile/TribunNews_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5x android-webview ] loading.mobile/TribunNews_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5x ] loading.mobile/GoogleIndonesia_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5x ] loading.mobile/QQNews_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5x ] loading.mobile/Youtube_3g [ Skip ]
+crbug.com/859597 [ android-nexus-5x android-webview ] loading.mobile/GoogleBrazil_3g [ Skip ]
+crbug.com/867103 [ android-nexus-5x android-webview ] loading.mobile/FlipBoard_warm_3g [ Skip ]
+crbug.com/873032 [ android-webview ] loading.mobile/GoogleRedirectToGoogleJapan_3g [ Skip ]
+crbug.com/873033 [ android-not-webview ] loading.mobile/FlipKart_warm_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/FlipBoard_cold_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/FlipBoard_warm_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/TribunNews_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/FlipKart_warm_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/OLX_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/Youtube_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/Hongkiat_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/BOLNoticias_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/GoogleBrazil_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/GoogleIndonesia_3g [ Skip ]
+crbug.com/676612 [ android-nexus-6 android-webview ] loading.mobile/Kaskus [ Skip ]
+crbug.com/865400 [ android-pixel-2 ] loading.mobile/TribunNews_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 ] loading.mobile/Youtube_3g [ Skip ]
+crbug.com/914100 [ android-nexus-6 android-webview ] loading.mobile/Wikipedia_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 android-webview ] loading.mobile/BOLNoticias_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 android-webview ] loading.mobile/FlipBoard_cold_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 android-webview ] loading.mobile/FlipBoard_warm_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 android-webview ] loading.mobile/FlipKart_warm_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 android-webview ] loading.mobile/GoogleBrazil_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 android-webview ] loading.mobile/GoogleIndonesia_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 android-webview ] loading.mobile/Hongkiat_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 android-webview ] loading.mobile/OLX_3g [ Skip ]
+crbug.com/865400 [ android-pixel-2 android-webview ] loading.mobile/VoiceMemos_cold_3g [ Skip ]
+crbug.com/919191 [ android-nexus-5x android-webview ] loading.mobile/OLX_3g [ Skip ]
 
 # Benchmark: oilpan_gc_times.key_silk_cases
-crbug.com/446332 [ All ] oilpan_gc_times.key_silk_cases/slide_drawer [ Skip ]
-crbug.com/507865 [ All ] oilpan_gc_times.key_silk_cases/polymer_topeka [ Skip ]
-crbug.com/338838 [ All ] oilpan_gc_times.key_silk_cases/basic_stream [ Skip ]
+crbug.com/446332 oilpan_gc_times.key_silk_cases/slide_drawer [ Skip ]
+crbug.com/507865 oilpan_gc_times.key_silk_cases/polymer_topeka [ Skip ]
+crbug.com/338838 oilpan_gc_times.key_silk_cases/basic_stream [ Skip ]
 
 # Benchmark: oilpan_gc_times.sync_scroll.key_mobile_sites_smooth
-crbug.com/756119 [ All ] oilpan_gc_times.sync_scroll.key_mobile_sites_smooth/digg [ Skip ]
+crbug.com/756119 oilpan_gc_times.sync_scroll.key_mobile_sites_smooth/digg [ Skip ]
 
 # Benchmark: rendering.desktop
-crbug.com/755556 [ Mac ] rendering.desktop/mix_blend_mode_animation_difference [ Skip ]
-crbug.com/755556 [ Mac ] rendering.desktop/mix_blend_mode_animation_hue [ Skip ]
+crbug.com/755556 [ mac ] rendering.desktop/mix_blend_mode_animation_difference [ Skip ]
+crbug.com/755556 [ mac ] rendering.desktop/mix_blend_mode_animation_hue [ Skip ]
 
 # Benchmark: rendering.mobile
-crbug.com/785485 [ Android_Webview ] rendering.mobile/kevs_3d [ Skip ]
-crbug.com/785286 [ Android_Webview ] rendering.mobile/smash_cat [ Skip ]
-crbug.com/785286 [ Android_Webview ] rendering.mobile/effect_games [ Skip ]
-crbug.com/364248 [ Nexus_5 ] rendering.mobile/geo_apis [ Skip ]
-crbug.com/910207 [ Nexus_5X ] rendering.mobile/geo_apis [ Skip ]
-crbug.com/825234 [ Android_Webview ] rendering.mobile/bouncing_balls_shadow [ Skip ]
-crbug.com/755556 [ Android ] rendering.mobile/balls_css_key_frame_animations_composited_transform [ Skip ]
-crbug.com/840964 [ Nexus_5X ] rendering.mobile/web_animations_many_keyframes [ Skip ]
-crbug.com/653993 [ Android_Webview ] rendering.mobile/maps_perf_test [ Skip ]
-[ All ] rendering.mobile/core_scroll_header_panel [ Skip ] # Polymer test, needs to be modernized.
-[ All ] rendering.mobile/paper_button [ Skip ] # Polymer test, needs to be modernized.
-[ All ] rendering.mobile/paper_calculator [ Skip ] # Polymer test, needs to be modernized.
-[ All ] rendering.mobile/paper_checkbox [ Skip ] # Polymer test, needs to be modernized.
-[ All ] rendering.mobile/paper_fab [ Skip ] # Polymer test, needs to be modernized.
-[ All ] rendering.mobile/paper_icon_button [ Skip ] # Polymer test, needs to be modernized.
-[ All ] rendering.mobile/paper_shadow [ Skip ] # Polymer test, needs to be modernized.
-[ All ] rendering.mobile/paper_tabs [ Skip ] # Polymer test, needs to be modernized.
-[ All ] rendering.mobile/paper_toggle_button [ Skip ] # Polymer test, needs to be modernized.
-crbug.com/785473 [ Android_Webview ] rendering.mobile/canvas_20000_pixels_per_second [ Skip ]
-crbug.com/785473 [ Android_Webview ] rendering.mobile/canvas_40000_pixels_per_second [ Skip ]
-crbug.com/785473 [ Android_Webview ] rendering.mobile/canvas_10000_pixels_per_second [ Skip ]
-crbug.com/785473 [ Android_Webview ] rendering.mobile/canvas_75000_pixels_per_second [ Skip ]
-crbug.com/785473 [ Android_Webview ] rendering.mobile/canvas_60000_pixels_per_second [ Skip ]
-crbug.com/785473 [ Android_Webview ] rendering.mobile/canvas_90000_pixels_per_second [ Skip ]
-crbug.com/850295 [ All ] rendering.mobile/aquarium_20k [ Skip ]
-crbug.com/780525 [ All ] rendering.mobile/polymer_topeka [ Skip ]
-crbug.com/461127 [ All ] rendering.mobile/famo_us_twitter_demo [ Skip ]
-crbug.com/850295 [ All ] rendering.mobile/aquarium_20k [ Skip ]
-crbug.com/750876 [ All ] rendering.mobile/paper_calculator_hit_test [ Skip ]
-crbug.com/873013 [ Android_Webview ] rendering.mobile/yahoo_answers_mobile_2018 [ Skip ]
-crbug.com/893197 [ Nexus_5X ] rendering.mobile/yahoo_answers_mobile_2018 [ Skip ]
-crbug.com/865400 [ Pixel_2 ] rendering.mobile/yahoo_answers_mobile_2018 [ Skip ]
-crbug.com/874935 [ Nexus_5 ] rendering.mobile/yahoo_news_2018 [ Skip ]
-crbug.com/910207 [ Nexus_5X ] rendering.mobile/yahoo_news_2018 [ Skip ]
-crbug.com/901526 [ All ] rendering.mobile/microsoft_fireflies [ Skip ]
-crbug.com/924400 [ Nexus6_Webview ] rendering.mobile/canvas_animation_no_clear [ Skip ]
-crbug.com/949366 [ Nexus5X_Webview ] rendering.mobile/google_news_mobile_2018 [ Skip ]
-crbug.com/954948 [ Android_Webview ] rendering.mobile/cnn_mobile_pinch_2018 [ Skip ]
-crbug.com/966637 [ Pixel2_Webview ] rendering.mobile/google_news_mobile_2018 [ Skip ]
-crbug.com/967809 [ Android_Webview ] rendering.mobile/microsoft_video_city [ Skip ]
+crbug.com/785485 [ android-webview ] rendering.mobile/kevs_3d [ Skip ]
+crbug.com/785286 [ android-webview ] rendering.mobile/smash_cat [ Skip ]
+crbug.com/785286 [ android-webview ] rendering.mobile/effect_games [ Skip ]
+crbug.com/364248 [ android-nexus-5 ] rendering.mobile/geo_apis [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] rendering.mobile/geo_apis [ Skip ]
+crbug.com/825234 [ android-webview ] rendering.mobile/bouncing_balls_shadow [ Skip ]
+crbug.com/755556 [ android ] rendering.mobile/balls_css_key_frame_animations_composited_transform [ Skip ]
+crbug.com/840964 [ android-nexus-5x ] rendering.mobile/web_animations_many_keyframes [ Skip ]
+crbug.com/653993 [ android-webview ] rendering.mobile/maps_perf_test [ Skip ]
+rendering.mobile/core_scroll_header_panel [ Skip ] # Polymer test, needs to be modernized.
+rendering.mobile/paper_button [ Skip ] # Polymer test, needs to be modernized.
+rendering.mobile/paper_calculator [ Skip ] # Polymer test, needs to be modernized.
+rendering.mobile/paper_checkbox [ Skip ] # Polymer test, needs to be modernized.
+rendering.mobile/paper_fab [ Skip ] # Polymer test, needs to be modernized.
+rendering.mobile/paper_icon_button [ Skip ] # Polymer test, needs to be modernized.
+rendering.mobile/paper_shadow [ Skip ] # Polymer test, needs to be modernized.
+rendering.mobile/paper_tabs [ Skip ] # Polymer test, needs to be modernized.
+rendering.mobile/paper_toggle_button [ Skip ] # Polymer test, needs to be modernized.
+crbug.com/785473 [ android-webview ] rendering.mobile/canvas_20000_pixels_per_second [ Skip ]
+crbug.com/785473 [ android-webview ] rendering.mobile/canvas_40000_pixels_per_second [ Skip ]
+crbug.com/785473 [ android-webview ] rendering.mobile/canvas_10000_pixels_per_second [ Skip ]
+crbug.com/785473 [ android-webview ] rendering.mobile/canvas_75000_pixels_per_second [ Skip ]
+crbug.com/785473 [ android-webview ] rendering.mobile/canvas_60000_pixels_per_second [ Skip ]
+crbug.com/785473 [ android-webview ] rendering.mobile/canvas_90000_pixels_per_second [ Skip ]
+crbug.com/850295 rendering.mobile/aquarium_20k [ Skip ]
+crbug.com/780525 rendering.mobile/polymer_topeka [ Skip ]
+crbug.com/461127 rendering.mobile/famo_us_twitter_demo [ Skip ]
+crbug.com/850295 rendering.mobile/aquarium_20k [ Skip ]
+crbug.com/750876 rendering.mobile/paper_calculator_hit_test [ Skip ]
+crbug.com/873013 [ android-webview ] rendering.mobile/yahoo_answers_mobile_2018 [ Skip ]
+crbug.com/893197 [ android-nexus-5x ] rendering.mobile/yahoo_answers_mobile_2018 [ Skip ]
+crbug.com/865400 [ android-pixel-2 ] rendering.mobile/yahoo_answers_mobile_2018 [ Skip ]
+crbug.com/874935 [ android-nexus-5 ] rendering.mobile/yahoo_news_2018 [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] rendering.mobile/yahoo_news_2018 [ Skip ]
+crbug.com/901526 rendering.mobile/microsoft_fireflies [ Skip ]
+crbug.com/924400 [ android-nexus-6 android-webview ] rendering.mobile/canvas_animation_no_clear [ Skip ]
+crbug.com/949366 [ android-nexus-5x android-webview ] rendering.mobile/google_news_mobile_2018 [ Skip ]
+crbug.com/954948 [ android-webview ] rendering.mobile/cnn_mobile_pinch_2018 [ Skip ]
+crbug.com/966637 [ android-pixel-2 android-webview ] rendering.mobile/google_news_mobile_2018 [ Skip ]
+crbug.com/967809 [ android-webview ] rendering.mobile/microsoft_video_city [ Skip ]
 
 # Benchmark: rasterize_and_record_micro.top_25
-crbug.com/764543 [ All ] rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html [ Skip ]
-crbug.com/815193 [ Android ] rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html [ Skip ]
-crbug.com/873011 [ Android_Webview ] rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html [ Skip ]
-crbug.com/865400 [ Pixel_2 ] rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html [ Skip ]
-crbug.com/865400 [ Nexus_5 ] rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html [ Skip ]
-crbug.com/865400 [ Nexus_5X ] rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html [ Skip ]
-crbug.com/892223 [ Nexus_5 ] rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html [ Skip ]
-crbug.com/910207 [ Nexus_5X ] rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html [ Skip ]
-crbug.com/875878 [ Nexus6_Webview ] rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html [ Skip ]
+crbug.com/764543 rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html [ Skip ]
+crbug.com/815193 [ android ] rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html [ Skip ]
+crbug.com/873011 [ android-webview ] rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html [ Skip ]
+crbug.com/865400 [ android-pixel-2 ] rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html [ Skip ]
+crbug.com/865400 [ android-nexus-5 ] rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html [ Skip ]
+crbug.com/865400 [ android-nexus-5x ] rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html [ Skip ]
+crbug.com/892223 [ android-nexus-5 ] rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html [ Skip ]
+crbug.com/875878 [ android-nexus-6 android-webview ] rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html [ Skip ]
 
 # Benchmark: startup.mobile
-crbug.com/948789 [ Nexus_5 ] startup.mobile/maps_pwa:with_http_cache [ Skip ]
-crbug.com/948789 [ Nexus_5X ] startup.mobile/maps_pwa:with_http_cache [ Skip ]
+crbug.com/948789 [ android-nexus-5 ] startup.mobile/maps_pwa:with_http_cache [ Skip ]
+crbug.com/948789 [ android-nexus-5x ] startup.mobile/maps_pwa:with_http_cache [ Skip ]
 
 # Benchmark: system_health.common_desktop
-crbug.com/984599 [ Linux ] system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
-crbug.com/984599 [ Win_10 ] system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
-crbug.com/773084 [ Mac ] system_health.common_desktop/browse:tools:maps [ Skip ]
-crbug.com/903417 [ Mac ] system_health.common_desktop/long_running:tools:gmail-foreground [ Skip ]
-crbug.com/903417 [ Win ] system_health.common_desktop/long_running:tools:gmail-foreground [ Skip ]
-crbug.com/911214 [ Win ] system_health.common_desktop/multitab:misc:typical24 [ Skip ]
-crbug.com/934270 [ Win ] system_health.common_desktop/multitab:misc:typical24:2018 [ Skip ]
-crbug.com/931185 [ Win_7 ] system_health.common_desktop/browse:media:youtubetv:2019 [ Skip ]
-crbug.com/958422 [ Win_7 ] system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
+crbug.com/984599 [ linux ] system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
+crbug.com/984599 [ win10 ] system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
+crbug.com/773084 [ mac ] system_health.common_desktop/browse:tools:maps [ Skip ]
+crbug.com/903417 [ mac ] system_health.common_desktop/long_running:tools:gmail-foreground [ Skip ]
+crbug.com/903417 [ win ] system_health.common_desktop/long_running:tools:gmail-foreground [ Skip ]
+crbug.com/911214 [ win ] system_health.common_desktop/multitab:misc:typical24 [ Skip ]
+crbug.com/934270 [ win ] system_health.common_desktop/multitab:misc:typical24:2018 [ Skip ]
+crbug.com/931185 [ win7 ] system_health.common_desktop/browse:media:youtubetv:2019 [ Skip ]
+crbug.com/958422 [ win7 ] system_health.common_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
 
 # Benchmark: system_health.common_mobile
-crbug.com/914390 [ Nexus_5 ] system_health.common_mobile/browse:chrome:newtab [ Skip ]
-crbug.com/714650 [ Android ] system_health.common_mobile/browse:news:globo [ Skip ]
-crbug.com/708300 [ Android ] system_health.common_mobile/browse:shopping:flipkart [ Skip ]
-crbug.com/865400 [ Pixel_2 ] system_health.common_mobile/background:news:nytimes [ Skip ]
-crbug.com/877648 [ Android_Go ] system_health.common_mobile/browse:news:toi [ Skip ]
-crbug.com/929839 [ Android_Go ] system_health.common_mobile/browse:chrome:newtab [ Skip ]
-crbug.com/877648 [ Android ] system_health.common_mobile/long_running:tools:gmail-background [ Skip ]
-crbug.com/877648 [ Android ] system_health.common_mobile/long_running:tools:gmail-foreground [ Skip ]
-crbug.com/896851 [ Android ] system_health.common_mobile/background:tools:gmail [ Skip ]
-crbug.com/896871 [ Android ] system_health.common_mobile/load:tools:gmail [ Skip ]
-crbug.com/923116 [ Android ] system_health.common_mobile/browse:shopping:avito [ Skip ]
-crbug.com/923527 [ Android_Webview ] system_health.common_mobile/load:media:soundcloud:2018 [ Skip ]
-crbug.com/954949 [ Nexus5X_Webview ] system_health.common_mobile/browse:news:washingtonpost [ Skip ]
-crbug.com/961417 [ Android_Go ] system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
-crbug.com/979786 [ Nexus5X_Webview ] system_health.common_mobile/browse:news:cricbuzz [ Skip ]
+crbug.com/914390 [ android-nexus-5 ] system_health.common_mobile/browse:chrome:newtab [ Skip ]
+crbug.com/714650 [ android ] system_health.common_mobile/browse:news:globo [ Skip ]
+crbug.com/708300 [ android ] system_health.common_mobile/browse:shopping:flipkart [ Skip ]
+crbug.com/865400 [ android-pixel-2 ] system_health.common_mobile/background:news:nytimes [ Skip ]
+crbug.com/877648 [ android-go ] system_health.common_mobile/browse:news:toi [ Skip ]
+crbug.com/929839 [ android-go ] system_health.common_mobile/browse:chrome:newtab [ Skip ]
+crbug.com/877648 [ android ] system_health.common_mobile/long_running:tools:gmail-background [ Skip ]
+crbug.com/877648 [ android ] system_health.common_mobile/long_running:tools:gmail-foreground [ Skip ]
+crbug.com/896851 [ android ] system_health.common_mobile/background:tools:gmail [ Skip ]
+crbug.com/896871 [ android ] system_health.common_mobile/load:tools:gmail [ Skip ]
+crbug.com/923116 [ android ] system_health.common_mobile/browse:shopping:avito [ Skip ]
+crbug.com/923527 [ android-webview ] system_health.common_mobile/load:media:soundcloud:2018 [ Skip ]
+crbug.com/954949 [ android-nexus-5x android-webview ] system_health.common_mobile/browse:news:washingtonpost [ Skip ]
+crbug.com/961417 [ android-go ] system_health.common_mobile/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
+crbug.com/979786 [ android-nexus-5x android-webview ] system_health.common_mobile/browse:news:cricbuzz [ Skip ]
 
 # Benchmark: system_health.memory_desktop
-crbug.com/984599 [ Linux ] system_health.memory_desktop/long_running:tools:gmail-foreground [ Skip ]
-crbug.com/984599 [ Mac ] system_health.memory_desktop/long_running:tools:gmail-background [ Skip ]
-crbug.com/984599 [ Mac ] system_health.memory_desktop/long_running:tools:gmail-foreground [ Skip ]
-crbug.com/649392 [ All ] system_health.memory_desktop/play:media:google_play_music [ Skip ]
-crbug.com/742475 [ Mac ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
-crbug.com/946495 [ Mac ] system_health.memory_desktop/multitab:misc:typical24:2018 [ Skip ]
-crbug.com/838504 [ Linux ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
-crbug.com/773084 [ Mac ] system_health.memory_desktop/browse:tools:maps [ Skip ]
-crbug.com/799106 [ Win ] system_health.memory_desktop/browse:media:flickr_infinite_scroll [ Skip ]
-crbug.com/836407 [ Linux ] system_health.memory_desktop/browse:tools:maps [ Skip ]
-crbug.com/934885 [ Linux ] system_health.memory_desktop/load_accessibility:media:wikipedia:2018 [ Skip ]
-crbug.com/869118 [ Linux ] system_health.memory_desktop/long_running:tools:gmail-background [ Skip ]
-crbug.com/836447 [ ChromeOS ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
-crbug.com/899887 [ Linux ] system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018 [ Skip ]
-crbug.com/924330 [ Linux ] system_health.memory_desktop/browse:media:pinterest:2018 [ Skip ]
-crbug.com/874803 [ Win_10 ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
-crbug.com/944978 [ Win_7 ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
-crbug.com/934270 [ Win ] system_health.memory_desktop/multitab:misc:typical24:2018 [ Skip ]
-crbug.com/942952 [ ChromeOS ] system_health.memory_desktop/browse:news:hackernews:2018 [ Skip ]
-crbug.com/959418 [ ChromeOS ] system_health.memory_desktop/long_running:tools:gmail-background [ Skip ]
-crbug.com/959418 [ ChromeOS ] system_health.memory_desktop/load:games:spychase:2018 [ Skip ]
-crbug.com/959418 [ ChromeOS ] system_health.memory_desktop/long_running:tools:gmail-foreground [ Skip ]
+crbug.com/984599 [ linux ] system_health.memory_desktop/long_running:tools:gmail-foreground [ Skip ]
+crbug.com/984599 [ mac ] system_health.memory_desktop/long_running:tools:gmail-background [ Skip ]
+crbug.com/984599 [ mac ] system_health.memory_desktop/long_running:tools:gmail-foreground [ Skip ]
+crbug.com/649392 system_health.memory_desktop/play:media:google_play_music [ Skip ]
+crbug.com/742475 [ mac ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
+crbug.com/946495 [ mac ] system_health.memory_desktop/multitab:misc:typical24:2018 [ Skip ]
+crbug.com/838504 [ linux ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
+crbug.com/773084 [ mac ] system_health.memory_desktop/browse:tools:maps [ Skip ]
+crbug.com/799106 [ win ] system_health.memory_desktop/browse:media:flickr_infinite_scroll [ Skip ]
+crbug.com/836407 [ linux ] system_health.memory_desktop/browse:tools:maps [ Skip ]
+crbug.com/934885 [ linux ] system_health.memory_desktop/load_accessibility:media:wikipedia:2018 [ Skip ]
+crbug.com/869118 [ linux ] system_health.memory_desktop/long_running:tools:gmail-background [ Skip ]
+crbug.com/836447 [ chromeos ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
+crbug.com/899887 [ linux ] system_health.memory_desktop/browse:social:facebook_infinite_scroll:2018 [ Skip ]
+crbug.com/924330 [ linux ] system_health.memory_desktop/browse:media:pinterest:2018 [ Skip ]
+crbug.com/874803 [ win10 ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
+crbug.com/944978 [ win7 ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ]
+crbug.com/934270 [ win ] system_health.memory_desktop/multitab:misc:typical24:2018 [ Skip ]
+crbug.com/942952 [ chromeos ] system_health.memory_desktop/browse:news:hackernews:2018 [ Skip ]
+crbug.com/959418 [ chromeos ] system_health.memory_desktop/long_running:tools:gmail-background [ Skip ]
+crbug.com/959418 [ chromeos ] system_health.memory_desktop/load:games:spychase:2018 [ Skip ]
+crbug.com/959418 [ chromeos ] system_health.memory_desktop/long_running:tools:gmail-foreground [ Skip ]
 
 # Benchmark: system_health.memory_mobile
-crbug.com/914390 [ Nexus_5 ] system_health.memory_mobile/browse:chrome:newtab [ Skip ]
-crbug.com/714650 [ Android ] system_health.memory_mobile/browse:news:globo [ Skip ]
-crbug.com/819552 [ Nexus_5X ] system_health.memory_mobile/browse:chrome:omnibox [ Skip ]
-crbug.com/867853 [ Nexus_5X ] system_health.memory_mobile/browse:chrome:newtab [ Skip ]
-crbug.com/657433 [ Android ] system_health.memory_mobile/load:tools:gmail [ Skip ]
-crbug.com/708300 [ Android ] system_health.memory_mobile/browse:shopping:flipkart [ Skip ]
-crbug.com/784400 [ Nexus_5 ] system_health.memory_mobile/background:tools:gmail [ Skip ]
-crbug.com/910207 [ Nexus_5X ] system_health.memory_mobile/background:tools:gmail [ Skip ]
-crbug.com/780779 [ Nexus_5 ] system_health.memory_mobile/browse:social:facebook [ Skip ]
-crbug.com/910207 [ Nexus_5X ] system_health.memory_mobile/browse:social:facebook [ Skip ]
-crbug.com/738854 [ Nexus_5X ] system_health.memory_mobile/load:tools:drive [ Skip ]
-crbug.com/738854 [ Android_Webview ] system_health.memory_mobile/load:tools:drive [ Skip ]
-crbug.com/834905 [ Nexus_5 ] system_health.memory_mobile/browse:social:pinterest_infinite_scroll [ Skip ]
-crbug.com/910207 [ Nexus_5X ] system_health.memory_mobile/browse:social:pinterest_infinite_scroll [ Skip ]
-crbug.com/843547 [ Android_Go ] system_health.memory_mobile/background:news:nytimes [ Skip ]
-crbug.com/852888 [ Nexus_5X ] system_health.memory_mobile/background:news:nytimes [ Skip ]
-crbug.com/871708 [ Android_Webview ] system_health.memory_mobile/browse:social:facebook_infinite_scroll [ Skip ]
-crbug.com/865400 [ Pixel_2 ] system_health.memory_mobile/background:news:nytimes [ Skip ]
-crbug.com/877648 [ Android ] system_health.memory_mobile/long_running:tools:gmail-background [ Skip ]
-crbug.com/877648 [ Android ] system_health.memory_mobile/long_running:tools:gmail-foreground [ Skip ]
-crbug.com/883320 [ Android_Go ] system_health.memory_mobile/browse:news:cnn:2018 [ Skip ]
-crbug.com/880652 [ Nexus_5X ] system_health.memory_mobile/browse:shopping:avito [ Skip ]
-crbug.com/883652 [ Nexus_5 ] system_health.memory_mobile/browse:shopping:avito [ Skip ]
-crbug.com/923116 [ Android ] system_health.memory_mobile/browse:shopping:avito [ Skip ]
-crbug.com/893873 [ Nexus_5X ] system_health.memory_mobile/load:news:washingtonpost [ Skip ]
-crbug.com/896851 [ Android ] system_health.memory_mobile/background:tools:gmail [ Skip ]
-crbug.com/892704 [ Android_Webview ] system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018 [ Skip ]
-crbug.com/923527 [ Android_Webview ] system_health.memory_mobile/load:media:soundcloud:2018 [ Skip ]
-crbug.com/947267 [ Nexus_5X ] system_health.memory_mobile/background:media:imgur [ Skip ]
-crbug.com/954949 [ Nexus5X_Webview ] system_health.memory_mobile/browse:news:washingtonpost [ Skip ]
-crbug.com/961417 [ Android_Go ] system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
+crbug.com/914390 [ android-nexus-5 ] system_health.memory_mobile/browse:chrome:newtab [ Skip ]
+crbug.com/714650 [ android ] system_health.memory_mobile/browse:news:globo [ Skip ]
+crbug.com/819552 [ android-nexus-5x ] system_health.memory_mobile/browse:chrome:omnibox [ Skip ]
+crbug.com/867853 [ android-nexus-5x ] system_health.memory_mobile/browse:chrome:newtab [ Skip ]
+crbug.com/657433 [ android ] system_health.memory_mobile/load:tools:gmail [ Skip ]
+crbug.com/708300 [ android ] system_health.memory_mobile/browse:shopping:flipkart [ Skip ]
+crbug.com/784400 [ android-nexus-5 ] system_health.memory_mobile/background:tools:gmail [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] system_health.memory_mobile/background:tools:gmail [ Skip ]
+crbug.com/780779 [ android-nexus-5 ] system_health.memory_mobile/browse:social:facebook [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] system_health.memory_mobile/browse:social:facebook [ Skip ]
+crbug.com/738854 [ android-nexus-5x ] system_health.memory_mobile/load:tools:drive [ Skip ]
+crbug.com/738854 [ android-webview ] system_health.memory_mobile/load:tools:drive [ Skip ]
+crbug.com/834905 [ android-nexus-5 ] system_health.memory_mobile/browse:social:pinterest_infinite_scroll [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] system_health.memory_mobile/browse:social:pinterest_infinite_scroll [ Skip ]
+crbug.com/843547 [ android-go ] system_health.memory_mobile/background:news:nytimes [ Skip ]
+crbug.com/852888 [ android-nexus-5x ] system_health.memory_mobile/background:news:nytimes [ Skip ]
+crbug.com/871708 [ android-webview ] system_health.memory_mobile/browse:social:facebook_infinite_scroll [ Skip ]
+crbug.com/865400 [ android-pixel-2 ] system_health.memory_mobile/background:news:nytimes [ Skip ]
+crbug.com/877648 [ android ] system_health.memory_mobile/long_running:tools:gmail-background [ Skip ]
+crbug.com/877648 [ android ] system_health.memory_mobile/long_running:tools:gmail-foreground [ Skip ]
+crbug.com/883320 [ android-go ] system_health.memory_mobile/browse:news:cnn:2018 [ Skip ]
+crbug.com/880652 [ android-nexus-5x ] system_health.memory_mobile/browse:shopping:avito [ Skip ]
+crbug.com/883652 [ android-nexus-5 ] system_health.memory_mobile/browse:shopping:avito [ Skip ]
+crbug.com/923116 [ android ] system_health.memory_mobile/browse:shopping:avito [ Skip ]
+crbug.com/893873 [ android-nexus-5x ] system_health.memory_mobile/load:news:washingtonpost [ Skip ]
+crbug.com/896851 [ android ] system_health.memory_mobile/background:tools:gmail [ Skip ]
+crbug.com/892704 [ android-webview ] system_health.memory_mobile/browse:tech:discourse_infinite_scroll:2018 [ Skip ]
+crbug.com/923527 [ android-webview ] system_health.memory_mobile/load:media:soundcloud:2018 [ Skip ]
+crbug.com/947267 [ android-nexus-5x ] system_health.memory_mobile/background:media:imgur [ Skip ]
+crbug.com/954949 [ android-nexus-5x android-webview ] system_health.memory_mobile/browse:news:washingtonpost [ Skip ]
+crbug.com/961417 [ android-go ] system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
 
-crbug.com/964960 [ Nexus_5X ] system_health.memory_mobile/* [ Skip ]
+crbug.com/964960 [ android-nexus-5x ] system_health.memory_mobile/* [ Skip ]
 
 # Benchmark: tab_switching.typical_25
-crbug.com/747026 [ Mac ] tab_switching.typical_25/multitab:misc:typical24 [ Skip ]
-crbug.com/883731 [ Win ] tab_switching.typical_25/multitab:misc:typical24 [ Skip ]
+crbug.com/747026 [ mac ] tab_switching.typical_25/multitab:misc:typical24 [ Skip ]
+crbug.com/883731 [ win ] tab_switching.typical_25/multitab:misc:typical24 [ Skip ]
 
 # Benchmark: tracing.tracing_with_background_memory_infra
-crbug.com/914092 [ Win ] tracing.tracing_with_background_memory_infra/http://www.bing.com/ [ Skip ]
-crbug.com/914092 [ Win ] tracing.tracing_with_background_memory_infra/http://www.amazon.com [ Skip ]
+crbug.com/914092 [ win ] tracing.tracing_with_background_memory_infra/http://www.bing.com/ [ Skip ]
+crbug.com/914092 [ win ] tracing.tracing_with_background_memory_infra/http://www.amazon.com [ Skip ]
 
 # Benchmark: v8.browsing_desktop
-crbug.com/773084 [ Mac ] v8.browsing_desktop/browse:tools:maps [ Skip ]
-crbug.com/788796 [ Linux ] v8.browsing_desktop/browse:media:imgur [ Skip ]
-crbug.com/953371 [ Desktop ] v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018 [ Skip ]
-crbug.com/875159 [ Win_10 ] v8.browsing_desktop/browse:media:imgur [ Skip ]
-crbug.com/953371 [ Win ] v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018 [ Skip ]
-crbug.com/954959 [ Linux ] v8.browsing_desktop/browse:media:pinterest:2018 [ Skip ]
-crbug.com/954959 [ Linux ] v8.browsing_desktop/browse:tools:maps [ Skip ]
-crbug.com/958422 [ All ] v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
-crbug.com/958507 [ Desktop ] v8.browsing_desktop/browse:media:imgur [ Skip ]
+crbug.com/773084 [ mac ] v8.browsing_desktop/browse:tools:maps [ Skip ]
+crbug.com/788796 [ linux ] v8.browsing_desktop/browse:media:imgur [ Skip ]
+crbug.com/953371 [ desktop ] v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018 [ Skip ]
+crbug.com/875159 [ win10 ] v8.browsing_desktop/browse:media:imgur [ Skip ]
+crbug.com/953371 [ win ] v8.browsing_desktop/browse:social:twitter_infinite_scroll:2018 [ Skip ]
+crbug.com/954959 [ linux ] v8.browsing_desktop/browse:media:pinterest:2018 [ Skip ]
+crbug.com/954959 [ linux ] v8.browsing_desktop/browse:tools:maps [ Skip ]
+crbug.com/958422 v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
+crbug.com/958507 [ desktop ] v8.browsing_desktop/browse:media:imgur [ Skip ]
 
 # Benchmark v8.browsing_desktop-future
-crbug.com/788796 [ Linux ] v8.browsing_desktop-future/browse:media:imgur [ Skip ]
-crbug.com/953371 [ Desktop ] v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018 [ Skip ]
-crbug.com/773084 [ Mac ] v8.browsing_desktop-future/browse:tools:maps [ Skip ]
-crbug.com/906654 [ All ] v8.browsing_desktop-future/browse:search:google [ Skip ]
-crbug.com/953371 [ Win ] v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018 [ Skip ]
-crbug.com/958422 [ All ] v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
-crbug.com/958507 [ Desktop ] v8.browsing_desktop-future/browse:media:imgur [ Skip ]
+crbug.com/788796 [ linux ] v8.browsing_desktop-future/browse:media:imgur [ Skip ]
+crbug.com/953371 [ desktop ] v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018 [ Skip ]
+crbug.com/773084 [ mac ] v8.browsing_desktop-future/browse:tools:maps [ Skip ]
+crbug.com/906654 v8.browsing_desktop-future/browse:search:google [ Skip ]
+crbug.com/953371 [ win ] v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018 [ Skip ]
+crbug.com/958422 v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
+crbug.com/958507 [ desktop ] v8.browsing_desktop-future/browse:media:imgur [ Skip ]
 
 # Benchmark: v8.browsing_mobile
-crbug.com/958034 [ Android_Go_Webview ] v8.browsing_mobile/* [ Skip ]
-crbug.com/714650 [ Android ] v8.browsing_mobile/browse:news:globo [ Skip ]
-crbug.com/767970 [ Android ] v8.browsing_mobile/browse:shopping:flipkart [ Skip ]
-crbug.com/708300 [ Android ] v8.browsing_mobile/browse:shopping:flipkart [ Skip ]
-crbug.com/815175 [ Nexus_5 ] v8.browsing_mobile/browse:chrome:newtab [ Skip ]
-crbug.com/910207 [ Nexus_5X ] v8.browsing_mobile/browse:chrome:newtab [ Skip ]
-crbug.com/853212 [ Android_Webview ] v8.browsing_mobile/browse:media:youtube [ Skip ]
-crbug.com/877648 [ Android_Go ] v8.browsing_mobile/browse:news:toi [ Skip ]
-crbug.com/954260 [ Android ] v8.browsing_mobile/browse:news:toi [ Skip ]
-crbug.com/950757 [ Android_Go ] v8.browsing_mobile/browse:news:cnn:2018 [ Skip ]
-crbug.com/901967 [ Nexus6_Webview ] v8.browsing_mobile/browse:news:toi [ Skip ]
-crbug.com/923116 [ Android ] v8.browsing_mobile/browse:shopping:avito [ Skip ]
-crbug.com/929839 [ Android_Go ] v8.browsing_mobile/browse:chrome:newtab [ Skip ]
-crbug.com/954949 [ Nexus5X_Webview ] v8.browsing_mobile/browse:news:washingtonpost [ Skip ]
-crbug.com/961417 [ Android_Go ] v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
-crbug.com/979786 [ Nexus5X_Webview ] v8.browsing_mobile/browse:media:flickr_infinite_scroll [ Skip ]
+crbug.com/958034 [ android-go android-webview ] v8.browsing_mobile/* [ Skip ]
+crbug.com/714650 [ android ] v8.browsing_mobile/browse:news:globo [ Skip ]
+crbug.com/767970 [ android ] v8.browsing_mobile/browse:shopping:flipkart [ Skip ]
+crbug.com/708300 [ android ] v8.browsing_mobile/browse:shopping:flipkart [ Skip ]
+crbug.com/815175 [ android-nexus-5 ] v8.browsing_mobile/browse:chrome:newtab [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] v8.browsing_mobile/browse:chrome:newtab [ Skip ]
+crbug.com/853212 [ android-webview ] v8.browsing_mobile/browse:media:youtube [ Skip ]
+crbug.com/877648 [ android-go ] v8.browsing_mobile/browse:news:toi [ Skip ]
+crbug.com/954260 [ android ] v8.browsing_mobile/browse:news:toi [ Skip ]
+crbug.com/950757 [ android-go ] v8.browsing_mobile/browse:news:cnn:2018 [ Skip ]
+crbug.com/901967 [ android-nexus-6 android-webview ] v8.browsing_mobile/browse:news:toi [ Skip ]
+crbug.com/923116 [ android ] v8.browsing_mobile/browse:shopping:avito [ Skip ]
+crbug.com/929839 [ android-go ] v8.browsing_mobile/browse:chrome:newtab [ Skip ]
+crbug.com/954949 [ android-nexus-5x android-webview ] v8.browsing_mobile/browse:news:washingtonpost [ Skip ]
+crbug.com/961417 [ android-go ] v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018 [ Skip ]
+crbug.com/979786 [ android-nexus-5x android-webview ] v8.browsing_mobile/browse:media:flickr_infinite_scroll [ Skip ]
 
 # Benchmark: v8.browsing_mobile-future
-crbug.com/714650 [ Android ] v8.browsing_mobile-future/browse:news:globo [ Skip ]
-crbug.com/803465 [ Nexus_5 ] v8.browsing_mobile-future/browse:chrome:newtab [ Skip ]
-crbug.com/910207 [ Nexus_5X ] v8.browsing_mobile-future/browse:chrome:newtab [ Skip ]
-crbug.com/799080 [ Nexus_5X Android_Webview ] v8.browsing_mobile-future/browse:social:facebook [ Skip ]
-crbug.com/799080 [ Nexus_5X Android_Webview ] v8.browsing_mobile-future/browse:social:facebook [ Skip ]
-crbug.com/901534 [ Nexus6_Webview ] v8.browsing_mobile-future/browse:news:toi [ Skip ]
-crbug.com/954260 [ Android ] v8.browsing_mobile-future/browse:news:toi [ Skip ]
-crbug.com/865400 [ Pixel_2 ] v8.browsing_mobile-future/browse:shopping:avito [ Skip ]
-crbug.com/923116 [ Android ] v8.browsing_mobile-future/browse:shopping:avito [ Skip ]
-crbug.com/954949 [ Nexus5X_Webview ] v8.browsing_mobile-future/browse:news:washingtonpost [ Skip ]
-crbug.com/958336 [ Android ] v8.browsing_mobile-future/browse:shopping:flipkart [ Skip ]
-
-# Benchmark: v8.detached_context_age_in_gc
-crbug.com/770982 [ Win ] v8.detached_context_age_in_gc/Docs_(1_open_document_tab) [ Skip ]
-crbug.com/812618 [ Android_Webview ] v8.detached_context_age_in_gc/Docs_(1_open_document_tab) [ Skip ]
+crbug.com/714650 [ android ] v8.browsing_mobile-future/browse:news:globo [ Skip ]
+crbug.com/803465 [ android-nexus-5 ] v8.browsing_mobile-future/browse:chrome:newtab [ Skip ]
+crbug.com/910207 [ android-nexus-5x ] v8.browsing_mobile-future/browse:chrome:newtab [ Skip ]
+crbug.com/799080 [ android-nexus-5x android-webview ] v8.browsing_mobile-future/browse:social:facebook [ Skip ]
+crbug.com/799080 [ android-nexus-5x android-webview ] v8.browsing_mobile-future/browse:social:facebook [ Skip ]
+crbug.com/901534 [ android-nexus-6 android-webview ] v8.browsing_mobile-future/browse:news:toi [ Skip ]
+crbug.com/954260 [ android ] v8.browsing_mobile-future/browse:news:toi [ Skip ]
+crbug.com/865400 [ android-pixel-2 ] v8.browsing_mobile-future/browse:shopping:avito [ Skip ]
+crbug.com/923116 [ android ] v8.browsing_mobile-future/browse:shopping:avito [ Skip ]
+crbug.com/954949 [ android-nexus-5x android-webview ] v8.browsing_mobile-future/browse:news:washingtonpost [ Skip ]
+crbug.com/958336 [ android ] v8.browsing_mobile-future/browse:shopping:flipkart [ Skip ]
 
 # Benchmark: v8.runtime_stats.top_25
-crbug.com/954229 [ Mac ] v8.runtime_stats.top_25/* [ Skip ]
-
-# Benchmark: wasm
-crbug.com/814012 [ Mac ] wasm/AsmJsZenGarden [ Skip ]
-crbug.com/814012 [ Win ] wasm/AsmJsZenGarden [ Skip ]
-crbug.com/860570 [ Mac ] wasm/WasmStylizedRenderer [ Skip ]
-crbug.com/860570 [ Win ] wasm/WasmStylizedRenderer [ Skip ]
-crbug.com/860570 [ Mac ] wasm/WasmSunTemple [ Skip ]
-crbug.com/860570 [ Win ] wasm/WasmSunTemple [ Skip ]
-
+crbug.com/954229 [ mac ] v8.runtime_stats.top_25/* [ Skip ]
 
 ##### Perf FYI benchmarks go after here #####
 # Benchmark: loading.desktop_layout_ng
-crbug.com/879833 [ Linux ] loading.desktop_layout_ng/Walgreens_cold [ Skip ]
-crbug.com/879833 [ Linux ] loading.desktop_layout_ng/Walgreens_warm [ Skip ]
+crbug.com/879833 [ linux ] loading.desktop_layout_ng/Walgreens_cold [ Skip ]
+crbug.com/879833 [ linux ] loading.desktop_layout_ng/Walgreens_warm [ Skip ]
diff --git a/tools/perf/generate_system_health_csv b/tools/perf/generate_system_health_csv
deleted file mode 100755
index af53b31..0000000
--- a/tools/perf/generate_system_health_csv
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env vpython
-# Copyright 2016 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 sys
-import os
-from core import system_health_csv_generator
-from core import path_util
-
-SYSTEM_HEALTH_CSV = os.path.join(path_util.GetPerfDir(),
-                                 'system_health_stories.csv')
-if __name__ == '__main__':
-  sys.exit(system_health_csv_generator.GenerateSystemHealthCSV(
-           SYSTEM_HEALTH_CSV))
\ No newline at end of file
diff --git a/tools/perf/page_sets/__init__.py b/tools/perf/page_sets/__init__.py
index 14a4e2c..ebbcb6e 100644
--- a/tools/perf/page_sets/__init__.py
+++ b/tools/perf/page_sets/__init__.py
@@ -7,14 +7,13 @@
 import sys
 
 from telemetry import story
-from telemetry.story import expectations
 
 from py_utils import discover
 
 # Import all submodules' PageSet classes.
 start_dir = os.path.dirname(os.path.abspath(__file__))
 top_level_dir = os.path.dirname(start_dir)
-base_classes = [story.StorySet, expectations.StoryExpectations]
+base_classes = [story.StorySet]
 
 for base_class in base_classes:
   for cls in discover.DiscoverClasses(
diff --git a/tools/perf/page_sets/data/jetstream2.json b/tools/perf/page_sets/data/jetstream2.json
new file mode 100644
index 0000000..e9b63f4
--- /dev/null
+++ b/tools/perf/page_sets/data/jetstream2.json
@@ -0,0 +1,9 @@
+{
+    "archives": {
+        "http://browserbench.org/JetStream/": {
+            "DEFAULT": "jetstream2_3c4406a678.wprgo"
+        }
+    },
+    "description": "Describes the Web Page Replay archives for a story set. Don't edit by hand! Use record_wpr for updating.",
+    "platform_specific": true
+}
\ No newline at end of file
diff --git a/tools/perf/page_sets/data/jetstream2_3c4406a678.wprgo.sha1 b/tools/perf/page_sets/data/jetstream2_3c4406a678.wprgo.sha1
new file mode 100644
index 0000000..b6e6392
--- /dev/null
+++ b/tools/perf/page_sets/data/jetstream2_3c4406a678.wprgo.sha1
@@ -0,0 +1 @@
+3c4406a678be8e2a2db04bef7a7d98202461b64d
\ No newline at end of file
diff --git a/tools/perf/page_sets/data/typical_25.json b/tools/perf/page_sets/data/typical_25.json
deleted file mode 100644
index 52e9a08..0000000
--- a/tools/perf/page_sets/data/typical_25.json
+++ /dev/null
@@ -1,150 +0,0 @@
-{
-    "archives": {
-        "http://allrecipes.com/Recipe/Pull-Apart-Hot-Cross-Buns/Detail.aspx_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://allrecipes.com/Recipe/Pull-Apart-Hot-Cross-Buns/Detail.aspx_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://arstechnica.com/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://arstechnica.com/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://colorado.edu_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://colorado.edu_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://gawker.com/5939683/based-on-a-true-story-is-a-rotten-lie-i-hope-you-never-believe_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://gawker.com/5939683/based-on-a-true-story-is-a-rotten-lie-i-hope-you-never-believe_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://money.cnn.com/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://money.cnn.com/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://premierleague.com_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://premierleague.com_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://walgreens.com_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://walgreens.com_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.airbnb.com/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.airbnb.com/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.economist.com/news/science-and-technology/21573529-small-models-cosmic-phenomena-are-shedding-light-real-thing-how-build_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.economist.com/news/science-and-technology/21573529-small-models-cosmic-phenomena-are-shedding-light-real-thing-how-build_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.fda.gov_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.fda.gov_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.fifa.com/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.fifa.com/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.flickr.com/search/?q=monkeys&f=hp_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.flickr.com/search/?q=monkeys&f=hp_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.gamestop.com/ps3_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.gamestop.com/ps3_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.html5rocks.com/en/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.html5rocks.com/en/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.ign.com/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.ign.com/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.imdb.com/title/tt0910970/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.imdb.com/title/tt0910970/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.mlb.com/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.mlb.com/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.nationalgeographic.com/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.nationalgeographic.com/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.nick.com/games_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.nick.com/games_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.osubeavers.com/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.osubeavers.com/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.rei.com/_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.rei.com/_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.theonion.com_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.theonion.com_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.theverge.com/2013/3/5/4061684/inside-ted-the-smartest-bubble-in-the-world_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.theverge.com/2013/3/5/4061684/inside-ted-the-smartest-bubble-in-the-world_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.ticketmaster.com/JAY-Z-and-Justin-Timberlake-tickets/artist/1837448?brand=none&tm_link=tm_homeA_rc_name2_cold": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }, 
-        "http://www.ticketmaster.com/JAY-Z-and-Justin-Timberlake-tickets/artist/1837448?brand=none&tm_link=tm_homeA_rc_name2_warm": {
-            "DEFAULT": "typical_25_002.wprgo"
-        }
-    }, 
-    "description": "Describes the Web Page Replay archives for a story set. Don't edit by hand! Use record_wpr for updating.", 
-    "platform_specific": true
-}
\ No newline at end of file
diff --git a/tools/perf/page_sets/data/typical_25_002.wprgo.sha1 b/tools/perf/page_sets/data/typical_25_002.wprgo.sha1
deleted file mode 100644
index 9176953..0000000
--- a/tools/perf/page_sets/data/typical_25_002.wprgo.sha1
+++ /dev/null
@@ -1 +0,0 @@
-63d6d450e5517411e8fc3d4d095bb5e87e739f37
\ No newline at end of file
diff --git a/tools/perf/page_sets/jetstream2_pages.py b/tools/perf/page_sets/jetstream2_pages.py
new file mode 100644
index 0000000..29f5a87e
--- /dev/null
+++ b/tools/perf/page_sets/jetstream2_pages.py
@@ -0,0 +1,82 @@
+# Copyright 2019 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.
+
+from page_sets import press_story
+from telemetry import story
+from telemetry.value import scalar
+
+class Jetstream2Story(press_story.PressStory):
+  URL='http://browserbench.org/JetStream/'
+
+  def __init__(self, ps):
+    super(Jetstream2Story, self).__init__(ps)
+
+  def ExecuteTest(self, action_runner):
+    action_runner.tab.WaitForDocumentReadyStateToBeComplete()
+    action_runner.EvaluateJavaScript('JetStream.start()')
+
+  def ParseTestResults(self, action_runner):
+    # JetStream2 is using document object to set done of benchmark runs.
+    action_runner.WaitForJavaScriptCondition("""
+        (function() {
+          let summaryElement = document.getElementById("result-summary");
+          return (summaryElement.classList.contains('done'));
+        })();
+        """, timeout=60*20)
+    # JetStream2 calculates scores for each benchmark across iterations
+    # so for each benchmark, return its calculated score and sub-results(
+    # For JavaScript benchmarks, it's scores of "First", "Worst", "Average"
+    # For WSL benchmarks, it's scores of "Stdlib", "MainRun"
+    # For Wasm benchmarks, it's scores of "Startup", "Runtime"
+    # Also use Javascript to calculate the geomean of all scores
+    result, score = action_runner.EvaluateJavaScript("""
+        (function() {
+          let result = {};
+          let allScores = [];
+          for (let benchmark of JetStream.benchmarks) {
+            const subResults = {};
+            const subTimes = benchmark.subTimes();
+            for (const name in subTimes) {
+                subResults[name] = subTimes[name];
+            };
+            result[benchmark.name] = {
+                "Score" : benchmark.score,
+                "Iterations" : benchmark.iterations,
+                "SubResults": subResults,
+            };
+            allScores.push(benchmark.score);
+          };
+          return [result, geomean(allScores)];
+        })();"""
+    )
+
+    self.AddJavascriptMetricSummaryValue(
+      scalar.ScalarValue(
+          None, 'Score', 'score', score))
+
+    for k, v in result.iteritems():
+      # Replace '.' in the benchmark name, because '.' is interpreted
+      # as a sub-category of the metric
+      benchmark = str(k).replace('.', '_')
+      self.AddJavascriptMetricValue(scalar.ScalarValue(
+          self, benchmark, 'score', v['Score'],
+          important=False,
+          description='Geometric mean of the iterations'))
+      self.AddJavascriptMetricValue(scalar.ScalarValue(
+          self, benchmark+'.Iterations', 'number', v['Iterations'],
+          important=False,
+          description='Total number of iterations'))
+      for sub_k, sub_v in v['SubResults'].iteritems():
+        self.AddJavascriptMetricValue(scalar.ScalarValue(
+            self, benchmark+'.'+str(sub_k), 'score', sub_v,
+            important=False))
+
+
+class Jetstream2StorySet(story.StorySet):
+  def __init__(self):
+    super(Jetstream2StorySet, self).__init__(
+        archive_data_file='data/jetstream2.json',
+        cloud_storage_bucket=story.INTERNAL_BUCKET)
+
+    self.AddStory(Jetstream2Story(self))
diff --git a/tools/perf/page_sets/typical_25.py b/tools/perf/page_sets/typical_25.py
deleted file mode 100644
index 5977a41..0000000
--- a/tools/perf/page_sets/typical_25.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# 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.
-
-from telemetry.page import page as page_module
-from telemetry.page import cache_temperature as cache_temperature_module
-from telemetry.page import shared_page_state
-from telemetry import story
-
-
-class Typical25Page(page_module.Page):
-
-  def __init__(self, url, page_set,
-      shared_page_state_class=shared_page_state.SharedDesktopPageState,
-      cache_temperature=None):
-    if cache_temperature == cache_temperature_module.COLD:
-      temp_suffix = '_cold'
-    elif cache_temperature == cache_temperature_module.WARM:
-      temp_suffix = '_warm'
-    else:
-      raise NotImplementedError
-    super(Typical25Page, self).__init__(
-        url=url, page_set=page_set,
-        shared_page_state_class=shared_page_state_class,
-        cache_temperature=cache_temperature, name=url + temp_suffix)
-    if cache_temperature != cache_temperature_module.ANY:
-      self.grouping_keys['cache_temperature'] = cache_temperature
-
-  def RunPageInteractions(self, action_runner):
-    action_runner.WaitForJavaScriptCondition(
-        'performance.timing.loadEventStart > 0')
-    return
-
-
-class Typical25PageSet(story.StorySet):
-
-  """ Pages designed to represent the median, not highly optimized web """
-
-  def __init__(self, cache_temperatures=(cache_temperature_module.COLD,
-                                         cache_temperature_module.WARM)):
-    super(Typical25PageSet, self).__init__(
-      archive_data_file='data/typical_25.json',
-      cloud_storage_bucket=story.PARTNER_BUCKET)
-    if cache_temperatures is None:
-      cache_temperatures = [cache_temperature_module.ANY]
-
-    urls_list = [
-      # Why: Alexa games #48
-      'http://www.nick.com/games',
-      # Why: Alexa sports #45
-      'http://www.rei.com/',
-      # Why: Alexa sports #50
-      'http://www.fifa.com/',
-      # Why: Alexa shopping #41
-      'http://www.gamestop.com/ps3',
-      # Why: Alexa news #55
-      ('http://www.economist.com/news/science-and-technology/21573529-small-'
-       'models-cosmic-phenomena-are-shedding-light-real-thing-how-build'),
-      # Why: Alexa news #67
-      'http://www.theonion.com',
-      'http://arstechnica.com/',
-      # Why: Alexa home #10
-      'http://allrecipes.com/Recipe/Pull-Apart-Hot-Cross-Buns/Detail.aspx',
-      'http://www.html5rocks.com/en/',
-      'http://www.mlb.com/',
-      'http://gawker.com/5939683/based-on-a-true-story-is-a-rotten-lie-i-hope-you-never-believe',
-      'http://www.imdb.com/title/tt0910970/',
-      'http://www.flickr.com/search/?q=monkeys&f=hp',
-      'http://money.cnn.com/',
-      'http://www.nationalgeographic.com/',
-      'http://premierleague.com',
-      'http://www.osubeavers.com/',
-      'http://walgreens.com',
-      'http://colorado.edu',
-      ('http://www.ticketmaster.com/JAY-Z-and-Justin-Timberlake-tickets/artist/'
-       '1837448?brand=none&tm_link=tm_homeA_rc_name2'),
-      # pylint: disable=line-too-long
-      'http://www.theverge.com/2013/3/5/4061684/inside-ted-the-smartest-bubble-in-the-world',
-      'http://www.airbnb.com/',
-      'http://www.ign.com/',
-      # Why: Alexa health #25
-      'http://www.fda.gov',
-    ]
-
-    for url in urls_list:
-      for temp in cache_temperatures:
-        self.AddStory(Typical25Page(url, self, cache_temperature=temp))
diff --git a/tools/perf/system_health_stories.csv b/tools/perf/system_health_stories.csv
deleted file mode 100644
index f52be80..0000000
--- a/tools/perf/system_health_stories.csv
+++ /dev/null
@@ -1,157 +0,0 @@
-Story name,Platform,Description,Disabled Platforms

-background:media:imgur,mobile,"Load http://imgur.com/gallery/hUita, then put the browser into the background.", 

-background:news:nytimes,mobile,"Load http://www.nytimes.com/2016/10/04/us/politics/vice-presidential-debate.html?_r=0, then put the browser into the background.","Android, Android_One, Android_Go, Nexus_5X"

-background:search:google,mobile,"Load https://www.google.co.uk/#q=tom+cruise+movies, then put the browser into the background.", 

-background:social:facebook,mobile,"Load https://www.facebook.com/rihanna, then put the browser into the background.", 

-background:tools:gmail,mobile,Load https://mail.google.com/mail/,Nexus_5

-browse:chrome:newtab,mobile,"Story that loads new tab page and performs searches.
-
-  Given a list of typical search queries, this story does for each of them:
-   - enter the search query on the new tab page search box
-   - read results
-   - navigates back to new tab page
-  ","Android_Webview, Nexus_5, Android_One"

-browse:chrome:omnibox,mobile,"Story that peforms search by using omnibox search provider
-
-  Loads a website and enters a search query on omnibox and navigates to default
-  search provider (google).
-  ","Android_Webview, Nexus_5X"

-browse:media:facebook_photos,mobile,"Load a photo page from Rihanna's facebook page then navigate a few next
-  photos.
-  ", 

-browse:media:flickr_infinite_scroll,desktop,Load https://www.flickr.com/explore then make a very long scroll.,Win

-browse:media:flickr_infinite_scroll,mobile,Load https://www.flickr.com/explore then make a very long scroll.,Win

-browse:media:imgur,desktop,Load http://imgur.com/gallery/5UlBN and navigate to some items/articles., 

-browse:media:imgur,mobile,Load http://imgur.com/gallery/5UlBN and navigate to some items/articles., 

-browse:media:pinterest,desktop,Load https://pinterest.com and navigate to some items/articles., 

-browse:media:tumblr,desktop,Load https://tumblr.com/search/gifs and navigate to some items/articles.,"All, Win, Linux"

-browse:media:youtube,desktop,"Load a typical YouTube video then navigate to a next few videos. Stop and
-  watch each video for a few seconds.
-  ", 

-browse:media:youtube,mobile,"Load a typical YouTube video then navigate to a next few videos. Stop and
-  watch each video for few seconds.
-  ", 

-browse:news:cnn,all,The second top website in http://www.alexa.com/topsites/category/News,"Mac, Win"

-browse:news:cricbuzz,mobile,Load http://m.cricbuzz.com and navigate to some items/articles., 

-browse:news:flipboard,desktop,Load https://flipboard.com/explore and navigate to some items/articles.,Linux

-browse:news:globo,mobile,Load http://www.globo.com and navigate to some items/articles.,Android

-browse:news:hackernews,desktop,Load https://news.ycombinator.com and navigate to some items/articles.,"Win, Mac"

-browse:news:nytimes,desktop,The third top website in http://www.alexa.com/topsites/category/News, 

-browse:news:qq,mobile,Load http://news.qq.com and navigate to some items/articles., 

-browse:news:reddit,desktop,The top website in http://www.alexa.com/topsites/category/News, 

-browse:news:reddit,mobile,The top website in http://www.alexa.com/topsites/category/News, 

-browse:news:toi,mobile,Load http://m.timesofindia.com and navigate to some items/articles.,Android

-browse:news:washingtonpost,mobile,Progressive website, 

-browse:search:google,desktop,"
-  A typical google search story:
-    _ Start at https://www.google.com/search?q=flower
-    _ Click on the wikipedia link & navigate to
-      https://en.wikipedia.org/wiki/Flower
-    _ Scroll down the wikipedia page about flower.
-    _ Back to the search main page.
-    _ Refine the search query to 'flower delivery'.
-    _ Scroll down the page.
-    _ Click the next page result of 'flower delivery'.
-    _ Scroll the search page.
-
-  ",Win

-browse:search:google_india,desktop,"
-  A typical google search story in India:
-    1. Start at https://www.google.co.in/search?q=%E0%A4%AB%E0%A5%82%E0%A4%B2`
-    2. Scroll down the page.
-    3. Refine the query & click search box, which navigates to
-    https://www.google.co.in/search?q=%E0%A4%AB%E0%A5%82%E0%A4%B2&rct=j#q=%E0%A4%AB%E0%A5%82%E0%A4%B2+%E0%A4%B5%E0%A4%BF%E0%A4%A4%E0%A4%B0%E0%A4%A3
-    4. Scroll down the page.
-    5. Click the next page result
-    6. Scroll the search result page.
-
-  ", 

-browse:shopping:amazon,mobile,Load https://www.amazon.co.in/s/?field-keywords=Mobile and navigate to some items/articles., 

-browse:shopping:avito,mobile,Load https://www.avito.ru/rossiya and navigate to some items/articles.,Nexus_6

-browse:shopping:flipkart,mobile,Load https://flipkart.com/search?q=Sunglasses and navigate to some items/articles.,Android

-browse:shopping:lazada,mobile,Load https://www.lazada.co.id/catalog/?q=Wrist+watch and navigate to some items/articles., 

-browse:social:facebook,mobile,Load https://www.facebook.com/rihanna and navigate to some items/articles.,Nexus_5

-browse:social:facebook_infinite_scroll,desktop,Load https://www.facebook.com/shakira then make a very long scroll.,Android_One

-browse:social:facebook_infinite_scroll,mobile,Load https://m.facebook.com/shakira then make a very long scroll.,Android_One

-browse:social:instagram,mobile,Load https://www.instagram.com/badgalriri/ and navigate to some items/articles., 

-browse:social:pinterest_infinite_scroll,mobile,Load https://www.pinterest.com/all then make a very long scroll.,"Android_One, Nexus_5"

-browse:social:tumblr_infinite_scroll,all,Load http://techcrunch.tumblr.com/ then make a very long scroll.,"Android_One, Nexus_5X"

-browse:social:twitter,desktop,Load https://www.twitter.com/nasa and navigate to some items/articles., 

-browse:social:twitter,mobile,Load https://www.twitter.com/nasa and navigate to some items/articles., 

-browse:social:twitter_infinite_scroll,desktop,Load https://twitter.com/taylorswift13 then make a very long scroll.,"Win, Linux, All"

-browse:tech:discourse_infinite_scroll,desktop,Load https://meta.discourse.org/t/the-official-discourse-tags-plugin-discourse-tagging/26482 then make a very long scroll., 

-browse:tech:discourse_infinite_scroll,mobile,Load https://meta.discourse.org/t/the-official-discourse-tags-plugin-discourse-tagging/26482 then make a very long scroll., 

-browse:tools:earth,desktop,"
-  Google Earth story:
-    _ Start at https://www.maps.google.com/maps
-    _ Click on the Earth link
-    _ Click ZoomIn three times, waiting for 3 sec in between.
-
-  ", 

-browse:tools:maps,desktop,"
-  Google maps story:
-    _ Start at https://www.maps.google.com/maps
-    _ Search for ""restaurents near me"" and wait for 4 sec.
-    _ Click ZoomIn two times, waiting for 3 sec in between.
-    _ Scroll the map horizontally and vertically.
-    _ Pick a restaurant and ask for directions.
-  ","Mac, Linux"

-browse:tools:maps,mobile,"Story that browses google maps mobile page
-
-  This story searches for nearby restaurants on google maps website and finds
-  directions to a chosen restaurant from search results.
-  ","Mac, Linux"

-browse_accessibility:tech:codesearch,desktop,Tests scrolling an element within a page., 

-load:chrome:blank,all,Story that loads the about:blank page., 

-load:games:alphabetty,desktop,Load https://king.com/play/alphabetty, 

-load:games:bubbles,all,"Load ""smarty bubbles"" game on famobi.com", 

-load:games:lazors,all,Load http://www8.games.mobi/games/html5/lazors/lazors.html, 

-load:games:miniclip,desktop,Load http://www.miniclip.com/games/en/,Mac

-load:games:spychase,all,Load http://playstar.mobi/games/spychase/index.php,Android_Webview

-load:media:9gag,desktop,Load https://www.9gag.com/, 

-load:media:dailymotion,all,Load https://www.dailymotion.com/video/x489k7d_street-performer-shows-off-slinky-skills_fun?autoplay=false, 

-load:media:facebook_photos,mobile,Load a page of rihanna's facebook with a photo., 

-load:media:google_images,all,Load https://www.google.co.uk/search?tbm=isch&q=love, 

-load:media:imgur,all,Load http://imgur.com/gallery/5UlBN, 

-load:media:soundcloud,all,Load https://soundcloud.com/lifeofdesiigner/desiigner-panda,Android_Webview

-load:media:youtube,all,Load https://www.youtube.com/watch?v=QGfhS1hfTWw&autoplay=false, 

-load:news:bbc,desktop,Load https://www.bbc.co.uk/news/world-asia-china-36189636, 

-load:news:cnn,all,Load http://edition.cnn.com, 

-load:news:flipboard,desktop,Load https://flipboard.com/explore, 

-load:news:hackernews,desktop,Load https://news.ycombinator.com, 

-load:news:irctc,mobile,Load https://www.irctc.co.in, 

-load:news:nytimes,desktop,Load http://www.nytimes.com, 

-load:news:nytimes,mobile,Load http://mobile.nytimes.com, 

-load:news:qq,all,Load http://news.qq.com, 

-load:news:reddit,desktop,Load https://www.reddit.com/r/news/top/?sort=top&t=week, 

-load:news:reddit,mobile,Load https://www.reddit.com/r/news/top/?sort=top&t=week, 

-load:news:washingtonpost,mobile,Load https://www.washingtonpost.com/pwa, 

-load:news:wikipedia,all,Load https://en.wikipedia.org/wiki/Science, 

-load:search:amazon,desktop,Load https://www.amazon.com/s/?field-keywords=nexus, 

-load:search:baidu,all,Load https://www.baidu.com/s?word=google, 

-load:search:ebay,all,Load https://www.ebay.com/sch/i.html?_nkw=headphones, 

-load:search:google,all,Load https://www.google.co.uk/, 

-load:search:taobao,desktop,Load https://world.taobao.com/, 

-load:search:taobao,mobile,Load http://m.intl.taobao.com/?ali_trackid, 

-load:search:yahoo,all,Load https://search.yahoo.com/search;_ylt=?p=google, 

-load:search:yandex,all,Load https://yandex.ru/touchsearch?text=science, 

-load:social:instagram,desktop,Load https://www.instagram.com/selenagomez/, 

-load:social:pinterest,desktop,Load https://uk.pinterest.com/categories/popular/, 

-load:social:twitter,mobile,Load https://www.twitter.com/nasa, 

-load:social:vk,desktop,Load https://vk.com/sbeatles, 

-load:tools:docs,all,Load a typical google doc page., 

-load:tools:drive,all,Load https://drive.google.com/drive/my-drive,"Nexus_5X, Android_Webview"

-load:tools:dropbox,all,Load https://www.dropbox.com, 

-load:tools:gmail,desktop,Load https://mail.google.com/mail/,Android

-load:tools:gmail,mobile,Load https://mail.google.com/mail/,Android

-load:tools:stackoverflow,all,Load a typical question & answer page of stackoverflow.com, 

-load:tools:weather,all,Load https://weather.com/en-GB/weather/today/l/USCA0286:1:US, 

-load_accessibility:media:wikipedia,desktop,"Wikipedia page on Accessibility. Long, but very simple, clean layout.", 

-load_accessibility:shopping:amazon,desktop,Amazon results page. Good example of a site with a data table.,Linux

-long_running:tools:gmail-background,desktop,Load https://mail.google.com/mail/ then open a new blank tab and let the loaded page stay in background for 100 seconds.,"Android_Webview, Android_Low_End"

-long_running:tools:gmail-background,mobile,Load https://mail.google.com/mail/ then open a new blank tab and let the loaded page stay in background for 100 seconds.,"Android_Webview, Android_Low_End"

-long_running:tools:gmail-foreground,desktop,Load https://mail.google.com/mail/ then let it stay in foreground for 100 seconds.,Android_Webview

-long_running:tools:gmail-foreground,mobile,Load https://mail.google.com/mail/ then let it stay in foreground for 100 seconds.,Android_Webview

-multitab:misc:typical24,desktop,"Load 24 different web sites in 24 tabs, then cycle through each tab.","Mac, Linux, ChromeOS"

-play:media:google_play_music,desktop,"Browse the songs list in music.google.com, then play a song.",All

-play:media:soundcloud,desktop,"Load soundcloud.com, search for ""Smooth Jazz"", then play a song.",Win

diff --git a/tools/perf/validate_story_expectation_data b/tools/perf/validate_story_expectation_data
index a39435a..74fb461 100755
--- a/tools/perf/validate_story_expectation_data
+++ b/tools/perf/validate_story_expectation_data
@@ -9,4 +9,4 @@
 
 
 if __name__ == '__main__':
-  sys.exit(story_expectation_validator.main(sys.argv[1:]))
+  sys.exit(story_expectation_validator.main())
diff --git a/tools/roll_webgl_conformance.py b/tools/roll_webgl_conformance.py
index b773ce2..62a4075 100755
--- a/tools/roll_webgl_conformance.py
+++ b/tools/roll_webgl_conformance.py
@@ -37,7 +37,11 @@
   },
   {
     "mastername": "luci.chromium.try",
-    "buildernames": ["win-angle-rel"]
+    "buildernames": ["win-angle-rel-32"]
+  },
+  {
+    "mastername": "luci.chromium.try",
+    "buildernames": ["win-angle-rel-64"]
   },
 ]
 
diff --git a/tools/run-swarmed.py b/tools/run-swarmed.py
index 7015f3aa..a958ec1a2f 100755
--- a/tools/run-swarmed.py
+++ b/tools/run-swarmed.py
@@ -63,7 +63,7 @@
     # The canonical version numbers are stored in the infra repository here:
     # build/scripts/slave/recipe_modules/swarming/api.py
     cpython_version = 'version:2.7.15.chromium14'
-    vpython_version = 'git_revision:96f81e737868d43124b4661cf1c325296ca04944'
+    vpython_version = 'git_revision:98a268c6432f18aedd55d62b9621765316dc2a16'
     cpython_pkg = (
         '.swarming_module:infra/python/cpython/${platform}:' +
         cpython_version)
diff --git a/tools/traffic_annotation/bin/README.md b/tools/traffic_annotation/bin/README.md
index 86b3073..bf22c1a 100644
--- a/tools/traffic_annotation/bin/README.md
+++ b/tools/traffic_annotation/bin/README.md
@@ -74,5 +74,5 @@
 The following two lines will be updated by the above script, and the modified
 README should be committed along with the updated .sha1 checksums.
 
-CLANG_REVISION = '360094'
-LASTCHANGE=ecda211dff8f3722704938f87637e0df657d15f1-refs/heads/master@{#659930}
+CLANG_REVISION = 'f7e52fbdb5a7af8ea0808e98458b497125a5eca1'
+LASTCHANGE=960750f9b8c7d487a37d9b63c4a0a5193cf96a14-refs/heads/master@{#685530}
diff --git a/tools/traffic_annotation/bin/linux64/traffic_annotation_auditor.sha1 b/tools/traffic_annotation/bin/linux64/traffic_annotation_auditor.sha1
index 36278a7b..c5c7d71 100644
--- a/tools/traffic_annotation/bin/linux64/traffic_annotation_auditor.sha1
+++ b/tools/traffic_annotation/bin/linux64/traffic_annotation_auditor.sha1
@@ -1 +1 @@
-73004f4964def13577f9d060d77908d51c30d521
\ No newline at end of file
+1629fd24682e3c8f9d75b39c5f3e8ef94b706d3f
\ No newline at end of file
diff --git a/tools/traffic_annotation/bin/win32/traffic_annotation_auditor.exe.sha1 b/tools/traffic_annotation/bin/win32/traffic_annotation_auditor.exe.sha1
index 8e82538..acc69746 100644
--- a/tools/traffic_annotation/bin/win32/traffic_annotation_auditor.exe.sha1
+++ b/tools/traffic_annotation/bin/win32/traffic_annotation_auditor.exe.sha1
@@ -1 +1 @@
-e3c00e2607fbe0d5758e60bc42c6802feacdea08
\ No newline at end of file
+f39cb780904d05e8ccd443bb2c59efdf030c26b8
\ No newline at end of file
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml
index 03ad481..4554700 100644
--- a/tools/traffic_annotation/summary/annotations.xml
+++ b/tools/traffic_annotation/summary/annotations.xml
@@ -30,6 +30,7 @@
  <item id="bluetooth_socket" hash_code="94099818" type="0" content_hash_code="30932349" os_list="linux,windows" file_path="device/bluetooth/bluetooth_socket_net.cc"/>
  <item id="brandcode_config" hash_code="109679553" type="0" content_hash_code="128843792" os_list="linux,windows" file_path="chrome/browser/profile_resetter/brandcode_config_fetcher.cc"/>
  <item id="browser_switcher_ieem_sitelist" hash_code="97159948" type="0" content_hash_code="40881413" os_list="linux,windows" file_path="chrome/browser/browser_switcher/browser_switcher_service.cc"/>
+ <item id="bundled_exchanges_start_url_loader" hash_code="105810794" type="0" content_hash_code="20630448" os_list="linux,windows" file_path="content/browser/web_package/bundled_exchanges_handle.cc"/>
  <item id="captive_portal_service" hash_code="88754904" type="0" content_hash_code="70737580" os_list="linux,windows" file_path="chrome/browser/captive_portal/captive_portal_service.cc"/>
  <item id="cast_channel_send" hash_code="103172229" type="0" deprecated="2018-08-23" content_hash_code="33946302" file_path=""/>
  <item id="cast_keep_alive_delegate" hash_code="134755844" type="0" deprecated="2018-08-23" content_hash_code="66118796" file_path=""/>
@@ -175,6 +176,7 @@
  <item id="omnibox_zerosuggest" hash_code="7687691" type="0" content_hash_code="119419625" os_list="linux,windows" file_path="components/omnibox/browser/remote_suggestions_service.cc"/>
  <item id="omnibox_zerosuggest_experimental" hash_code="3813491" type="0" content_hash_code="22929259" os_list="linux,windows" file_path="components/omnibox/browser/remote_suggestions_service.cc"/>
  <item id="one_google_bar_service" hash_code="78917933" type="0" content_hash_code="46527252" os_list="linux,windows" file_path="chrome/browser/search/one_google_bar/one_google_bar_loader_impl.cc"/>
+ <item id="open_screen_message" hash_code="95250780" type="0" content_hash_code="39027953" os_list="linux" file_path="chrome/browser/media/router/providers/openscreen/platform/udp_socket.cc"/>
  <item id="open_search" hash_code="107267424" type="0" content_hash_code="83025542" os_list="linux,windows" file_path="components/search_engines/template_url_fetcher.cc"/>
  <item id="origin_policy_loader" hash_code="6483617" type="0" content_hash_code="20680909" os_list="linux,windows" file_path="services/network/origin_policy/origin_policy_fetcher.cc"/>
  <item id="parallel_download_job" hash_code="135118587" type="0" content_hash_code="105330419" os_list="linux,windows" file_path="components/download/internal/common/parallel_download_job.cc"/>
@@ -197,6 +199,7 @@
  <item id="ppapi_download_request" hash_code="135967426" type="0" content_hash_code="110461402" os_list="linux,windows" file_path="chrome/browser/safe_browsing/download_protection/ppapi_download_request.cc"/>
  <item id="prefetch_download" hash_code="44583172" type="0" content_hash_code="21424542" os_list="linux,windows" file_path="components/offline_pages/core/prefetch/prefetch_downloader_impl.cc"/>
  <item id="prefetch_visuals" hash_code="91068704" type="0" content_hash_code="90439946" os_list="linux,windows" file_path="components/offline_pages/core/prefetch/visuals_fetch_by_url.cc"/>
+ <item id="previews_litepage_prober" hash_code="33813109" type="0" content_hash_code="123476142" os_list="linux,windows" file_path="chrome/browser/previews/previews_lite_page_decider.cc"/>
  <item id="previews_prober" hash_code="41010697" type="0" deprecated="2019-07-24" content_hash_code="51581107" file_path=""/>
  <item id="printer_job_handler" hash_code="67638271" type="1" second_id="111712433" content_hash_code="75712693" os_list="linux,windows" semantics_fields="2,3,4" file_path="chrome/service/cloud_print/printer_job_handler.cc"/>
  <item id="privet_http_impl" hash_code="71251498" type="0" content_hash_code="107348604" os_list="linux,windows" file_path="chrome/browser/printing/cloud_print/privet_http_impl.cc"/>