diff --git a/DEPS b/DEPS
index 18b5bc3..9c797a9 100644
--- a/DEPS
+++ b/DEPS
@@ -109,7 +109,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': 'c55015f75f0ebf8abb40746de70b796f51b5344f',
+  'v8_revision': '4a0d5f351f8419fc0cafe7a6f622978675da7e6c',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -165,7 +165,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '721613b08607357b57c046131eed4441e190eb56',
+  'catapult_revision': '933672b6cfa135d177088629349ab14d2dcc363b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -1073,287 +1073,452 @@
   },
 
   # === ANDROID_DEPS Generated Code Start ===
-  # Generated by //tools/android/roll/android_deps/fetch_all.sh
-  'src/third_party/android_deps/repository/android_arch_core_common': {
+  # Generated by //tools/android/roll/android_deps/fetch_all.py
+  'src/third_party/android_deps/libs/android_arch_core_common': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/android_arch_core_common',
-              'version': 'version:1.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/android_arch_core_common',
+              'version': 'version:1.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/android_arch_lifecycle_common': {
+  'src/third_party/android_deps/libs/android_arch_lifecycle_common': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/android_arch_lifecycle_common',
-              'version': 'version:1.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/android_arch_lifecycle_common',
+              'version': 'version:1.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/android_arch_lifecycle_runtime': {
+  'src/third_party/android_deps/libs/android_arch_lifecycle_runtime': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/android_arch_lifecycle_runtime',
-              'version': 'version:1.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/android_arch_lifecycle_runtime',
+              'version': 'version:1.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_animated_vector_drawable': {
+  'src/third_party/android_deps/libs/com_android_support_animated_vector_drawable': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_animated_vector_drawable',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_animated_vector_drawable',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_appcompat_v7': {
+  'src/third_party/android_deps/libs/com_android_support_appcompat_v7': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_appcompat_v7',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_appcompat_v7',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_cardview_v7': {
+  'src/third_party/android_deps/libs/com_android_support_cardview_v7': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_cardview_v7',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_cardview_v7',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_design': {
+  'src/third_party/android_deps/libs/com_android_support_design': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_design',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_design',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_gridlayout_v7': {
+  'src/third_party/android_deps/libs/com_android_support_gridlayout_v7': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_gridlayout_v7',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_gridlayout_v7',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_leanback_v17': {
+  'src/third_party/android_deps/libs/com_android_support_leanback_v17': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_leanback_v17',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_leanback_v17',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_mediarouter_v7': {
+  'src/third_party/android_deps/libs/com_android_support_mediarouter_v7': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_mediarouter_v7',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_mediarouter_v7',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_multidex': {
+  'src/third_party/android_deps/libs/com_android_support_multidex': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_multidex',
-              'version': 'version:1.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_multidex',
+              'version': 'version:1.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_palette_v7': {
+  'src/third_party/android_deps/libs/com_android_support_palette_v7': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_palette_v7',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_palette_v7',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_preference_leanback_v17': {
+  'src/third_party/android_deps/libs/com_android_support_preference_leanback_v17': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_preference_leanback_v17',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_preference_leanback_v17',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_preference_v14': {
+  'src/third_party/android_deps/libs/com_android_support_preference_v14': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_preference_v14',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_preference_v14',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_preference_v7': {
+  'src/third_party/android_deps/libs/com_android_support_preference_v7': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_preference_v7',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_preference_v7',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_recyclerview_v7': {
+  'src/third_party/android_deps/libs/com_android_support_recyclerview_v7': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_recyclerview_v7',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_recyclerview_v7',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_support_annotations': {
+  'src/third_party/android_deps/libs/com_android_support_support_annotations': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_support_annotations',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_support_annotations',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_support_compat': {
+  'src/third_party/android_deps/libs/com_android_support_support_compat': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_support_compat',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_support_compat',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_support_core_ui': {
+  'src/third_party/android_deps/libs/com_android_support_support_core_ui': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_support_core_ui',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_support_core_ui',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_support_core_utils': {
+  'src/third_party/android_deps/libs/com_android_support_support_core_utils': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_support_core_utils',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_support_core_utils',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_support_fragment': {
+  'src/third_party/android_deps/libs/com_android_support_support_fragment': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_support_fragment',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_support_fragment',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_support_media_compat': {
+  'src/third_party/android_deps/libs/com_android_support_support_media_compat': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_support_media_compat',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_support_media_compat',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_support_v13': {
+  'src/third_party/android_deps/libs/com_android_support_support_v13': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_support_v13',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_support_v13',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_support_v4': {
+  'src/third_party/android_deps/libs/com_android_support_support_v4': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_support_v4',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_support_v4',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_support_vector_drawable': {
+  'src/third_party/android_deps/libs/com_android_support_support_vector_drawable': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_support_vector_drawable',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_support_vector_drawable',
+              'version': 'version:27.0.0-cr0',
           },
       ],
       'condition': 'checkout_android',
       'dep_type': 'cipd',
   },
 
-  'src/third_party/android_deps/repository/com_android_support_transition': {
+  'src/third_party/android_deps/libs/com_android_support_transition': {
       'packages': [
           {
-              'package': 'chromium/third_party/android_deps/repository/com_android_support_transition',
-              'version': 'version:27.0.0-cr1',
+              'package': 'chromium/third_party/android_deps/libs/com_android_support_transition',
+              'version': 'version:27.0.0-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_auth': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_auth',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_base': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_base',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_basement': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_basement',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_cast': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_cast',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_fido': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_fido',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_gcm': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_gcm',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_iid': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_iid',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_location': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_location',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_tasks': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_tasks',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_vision': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_vision',
+              'version': 'version:12.0.1-cr0',
+          },
+      ],
+      'condition': 'checkout_android',
+      'dep_type': 'cipd',
+  },
+
+  'src/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common': {
+      'packages': [
+          {
+              'package': 'chromium/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common',
+              'version': 'version:12.0.1-cr0',
           },
       ],
       'condition': 'checkout_android',
diff --git a/android_webview/browser/aw_browser_context.cc b/android_webview/browser/aw_browser_context.cc
index 2623a194..414afdb 100644
--- a/android_webview/browser/aw_browser_context.cc
+++ b/android_webview/browser/aw_browser_context.cc
@@ -93,7 +93,7 @@
   // Should not be called until the end of PreMainMessageLoopRun,
   scoped_refptr<base::SequencedTaskRunner> background_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   scoped_refptr<base::SingleThreadTaskRunner> io_task_runner =
       BrowserThread::GetTaskRunnerForThread(BrowserThread::IO);
   return std::make_unique<AwSafeBrowsingWhitelistManager>(
@@ -153,7 +153,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> db_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   visitedlink_master_.reset(
       new visitedlink::VisitedLinkMaster(this, this, false));
diff --git a/android_webview/browser/net/aw_url_request_context_getter.cc b/android_webview/browser/net/aw_url_request_context_getter.cc
index cd9d520a..0d6a06ac 100644
--- a/android_webview/browser/net/aw_url_request_context_getter.cc
+++ b/android_webview/browser/net/aw_url_request_context_getter.cc
@@ -125,7 +125,7 @@
       url::kFileScheme,
       std::make_unique<net::FileProtocolHandler>(
           base::CreateTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND,
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})));
   DCHECK(set_protocol);
   set_protocol = aw_job_factory->SetProtocolHandler(
@@ -292,7 +292,7 @@
     channel_id_db = new net::SQLiteChannelIDStore(
         channel_id_path_,
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
 
     channel_id_service.reset(new net::ChannelIDService(
         new net::DefaultChannelIDStore(channel_id_db.get())));
diff --git a/ash/app_list/model/folder_image.cc b/ash/app_list/model/folder_image.cc
index 3936372..f93d596 100644
--- a/ash/app_list/model/folder_image.cc
+++ b/ash/app_list/model/folder_image.cc
@@ -11,6 +11,7 @@
 #include "ash/app_list/model/app_list_item_list.h"
 #include "ash/public/cpp/app_list/app_list_config.h"
 #include "ash/public/cpp/app_list/app_list_constants.h"
+#include "ash/public/cpp/app_list/app_list_features.h"
 #include "base/macros.h"
 #include "base/memory/ptr_util.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -27,13 +28,8 @@
 
 namespace {
 
-constexpr int kItemIconDimension = 16;
-constexpr float kFolderBubbleOffsetY = 1;
-
-// Gets the size of a small app icon inside the folder icon.
-gfx::Size ItemIconSize() {
-  return gfx::Size(kItemIconDimension, kItemIconDimension);
-}
+// The margin of item icon in folder icon.
+constexpr int kItemIconMargin = 2;
 
 // Generates the folder icon with the top 4 child item icons laid in 2x2 tile.
 class FolderImageSource : public gfx::CanvasImageSource {
@@ -81,10 +77,11 @@
 }
 
 void FolderImageSource::Draw(gfx::Canvas* canvas) {
-  cc::PaintFlags flags;
-  // Draw circle for folder bubble.
   gfx::PointF bubble_center(size().width() / 2, size().height() / 2);
-  bubble_center.Offset(0, -kFolderBubbleOffsetY);
+  bubble_center.Offset(0, -AppListConfig::instance().folder_bubble_y_offset());
+
+  // Draw circle for folder bubble.
+  cc::PaintFlags flags;
   flags.setStyle(cc::PaintFlags::kFill_Style);
   flags.setAntiAlias(true);
   flags.setColor(FolderImage::kFolderBubbleColor);
@@ -95,17 +92,55 @@
     return;
 
   // Draw top items' icons.
-  const gfx::Size item_icon_size(ItemIconSize());
+  const size_t num_items =
+      std::min(FolderImage::kNumFolderTopItems, icons_.size());
   std::vector<gfx::Rect> top_icon_bounds =
-      FolderImage::GetTopIconsBounds(gfx::Rect(size()));
+      FolderImage::GetTopIconsBounds(gfx::Rect(size()), num_items);
 
-  for (size_t i = 0; i < FolderImage::kNumFolderTopItems && i < icons_.size();
-       ++i) {
-    DrawIcon(canvas, icons_[i], item_icon_size, top_icon_bounds[i].x(),
-             top_icon_bounds[i].y());
+  for (size_t i = 0; i < num_items; ++i) {
+    DrawIcon(canvas, icons_[i],
+             AppListConfig::instance().item_icon_in_folder_icon_size(),
+             top_icon_bounds[i].x(), top_icon_bounds[i].y());
   }
 }
 
+// Calculates and returns the top item icons' bounds inside |folder_icon_bounds|
+// when new style launcher is not enabled.
+std::vector<gfx::Rect> GetTopIconsBoundsLegacy(
+    const gfx::Rect& folder_icon_bounds,
+    size_t num_items) {
+  DCHECK_LE(num_items, FolderImage::kNumFolderTopItems);
+  const int delta_to_center = 1;
+  const int item_icon_dimension =
+      AppListConfig::instance().item_icon_in_folder_icon_dimension();
+  gfx::Point icon_center = folder_icon_bounds.CenterPoint();
+  std::vector<gfx::Rect> top_icon_bounds;
+
+  // Get the top left icon bounds.
+  int left_x = icon_center.x() - item_icon_dimension - delta_to_center;
+  int top_y = icon_center.y() - item_icon_dimension - delta_to_center;
+  gfx::Rect top_left(left_x, top_y, item_icon_dimension, item_icon_dimension);
+  top_icon_bounds.emplace_back(top_left);
+
+  // Get the top right icon bounds.
+  int right_x = icon_center.x() + delta_to_center;
+  gfx::Rect top_right(right_x, top_y, item_icon_dimension, item_icon_dimension);
+  top_icon_bounds.emplace_back(top_right);
+
+  // Get the bottom left icon bounds.
+  int bottom_y = icon_center.y() + delta_to_center;
+  gfx::Rect bottom_left(left_x, bottom_y, item_icon_dimension,
+                        item_icon_dimension);
+  top_icon_bounds.emplace_back(bottom_left);
+
+  // Get the bottom right icon bounds.
+  gfx::Rect bottom_right(right_x, bottom_y, item_icon_dimension,
+                         item_icon_dimension);
+  top_icon_bounds.emplace_back(bottom_right);
+
+  return top_icon_bounds;
+}
+
 }  // namespace
 
 // static
@@ -128,7 +163,7 @@
     item->RemoveObserver(this);
   top_items_.clear();
 
-  for (size_t i = 0; i < kNumFolderTopItems && i < item_list_->item_count();
+  for (size_t i = 0; i < std::min(kNumFolderTopItems, item_list_->item_count());
        ++i) {
     AppListItem* item = item_list_->item_at(i);
     item->AddObserver(this);
@@ -139,33 +174,70 @@
 
 // static
 std::vector<gfx::Rect> FolderImage::GetTopIconsBounds(
-    const gfx::Rect& folder_icon_bounds) {
-  const int delta_to_center = 1;
+    const gfx::Rect& folder_icon_bounds,
+    size_t num_items) {
+  if (!features::IsNewStyleLauncherEnabled())
+    return GetTopIconsBoundsLegacy(folder_icon_bounds, num_items);
+
+  DCHECK_LE(num_items, kNumFolderTopItems);
+  const int item_icon_dimension =
+      AppListConfig::instance().item_icon_in_folder_icon_dimension();
   gfx::Point icon_center = folder_icon_bounds.CenterPoint();
   std::vector<gfx::Rect> top_icon_bounds;
 
-  // Get the top left icon bounds.
-  int left_x = icon_center.x() - kItemIconDimension - delta_to_center;
-  int top_y = icon_center.y() - kItemIconDimension - delta_to_center;
-  gfx::Rect top_left(left_x, top_y, kItemIconDimension, kItemIconDimension);
-  top_icon_bounds.push_back(top_left);
+  const gfx::Rect center_rect(icon_center.x() - item_icon_dimension / 2,
+                              icon_center.y() - item_icon_dimension / 2,
+                              item_icon_dimension, item_icon_dimension);
+  const int origin_offset = (AppListConfig::instance().folder_icon_dimension() -
+                             item_icon_dimension) /
+                                2 -
+                            kItemIconMargin;
+  if (num_items == 1) {
+    // Center icon bounds.
+    top_icon_bounds.emplace_back(center_rect);
+    return top_icon_bounds;
+  }
 
-  // Get the top right icon bounds.
-  int right_x = icon_center.x() + delta_to_center;
-  gfx::Rect top_right(right_x, top_y, kItemIconDimension, kItemIconDimension);
-  top_icon_bounds.push_back(top_right);
+  if (num_items == 2) {
+    // Left icon bounds.
+    gfx::Rect left_rect = center_rect;
+    left_rect.Offset(-origin_offset, 0);
+    top_icon_bounds.emplace_back(left_rect);
 
-  // Get the bottom left icon bounds.
-  int bottom_y = icon_center.y() + delta_to_center;
-  gfx::Rect bottom_left(left_x, bottom_y, kItemIconDimension,
-                        kItemIconDimension);
-  top_icon_bounds.push_back(bottom_left);
+    // Right icon bounds.
+    gfx::Rect right_rect = center_rect;
+    right_rect.Offset(origin_offset, 0);
+    top_icon_bounds.emplace_back(right_rect);
+    return top_icon_bounds;
+  }
 
-  // Get the bottom right icon bounds.
-  gfx::Rect bottom_right(right_x, bottom_y, kItemIconDimension,
-                         kItemIconDimension);
-  top_icon_bounds.push_back(bottom_right);
+  // Top left icon bounds.
+  gfx::Rect top_left_rect = center_rect;
+  top_left_rect.Offset(-origin_offset, -origin_offset);
+  top_icon_bounds.emplace_back(top_left_rect);
 
+  // Top right icon bounds.
+  gfx::Rect top_right_rect = center_rect;
+  top_right_rect.Offset(origin_offset, -origin_offset);
+  top_icon_bounds.emplace_back(top_right_rect);
+
+  if (num_items == 3) {
+    // Bottom icon bounds.
+    gfx::Rect bottom_rect = center_rect;
+    bottom_rect.Offset(0, origin_offset);
+    top_icon_bounds.emplace_back(bottom_rect);
+    return top_icon_bounds;
+  }
+
+  // Bottom left icon bounds.
+  gfx::Rect bottom_left_rect = center_rect;
+  bottom_left_rect.Offset(-origin_offset, origin_offset);
+  top_icon_bounds.emplace_back(bottom_left_rect);
+
+  // Bottom right icon bounds.
+  gfx::Rect bottom_right_rect = center_rect;
+  bottom_right_rect.Offset(origin_offset, origin_offset);
+  top_icon_bounds.emplace_back(bottom_right_rect);
   return top_icon_bounds;
 }
 
@@ -174,13 +246,15 @@
     const gfx::Rect& folder_icon_bounds) const {
   for (size_t i = 0; i < top_items_.size(); ++i) {
     if (item->id() == top_items_[i]->id()) {
-      std::vector<gfx::Rect> rects = GetTopIconsBounds(folder_icon_bounds);
+      std::vector<gfx::Rect> rects =
+          GetTopIconsBounds(folder_icon_bounds, top_items_.size());
       return rects[i];
     }
   }
 
   gfx::Rect target_rect(folder_icon_bounds);
-  target_rect.ClampToCenteredSize(ItemIconSize());
+  target_rect.ClampToCenteredSize(
+      AppListConfig::instance().item_icon_in_folder_icon_size());
   return target_rect;
 }
 
@@ -221,7 +295,8 @@
   FolderImageSource::Icons top_icons;
   for (const auto* item : top_items_)
     top_icons.push_back(item->icon());
-  const gfx::Size icon_size = AppListConfig::instance().grid_icon_size();
+  const gfx::Size icon_size =
+      AppListConfig::instance().folder_unclipped_icon_size();
   icon_ = gfx::ImageSkia(
       std::make_unique<FolderImageSource>(top_icons, icon_size), icon_size);
 
diff --git a/ash/app_list/model/folder_image.h b/ash/app_list/model/folder_image.h
index 0a6dc170..5ea27d64 100644
--- a/ash/app_list/model/folder_image.h
+++ b/ash/app_list/model/folder_image.h
@@ -55,10 +55,10 @@
   const gfx::ImageSkia& icon() const { return icon_; }
 
   // Calculates the top item icons' bounds inside |folder_icon_bounds|.
-  // Returns the bounds of top item icons in sequence of top left, top right,
-  // bottom left, bottom right.
+  // Returns the bounds of top item icons based on total number of items.
   static std::vector<gfx::Rect> GetTopIconsBounds(
-      const gfx::Rect& folder_icon_bounds);
+      const gfx::Rect& folder_icon_bounds,
+      size_t num_items);
 
   // Returns the target icon bounds for |item| to fly back to its parent folder
   // icon in animation UI. If |item| is one of the top item icon, this will
@@ -89,7 +89,8 @@
   // only be called if the |item_list_| has not been changed (see UpdateIcon).
   void RedrawIconAndNotify();
 
-  // The icon image.
+  // The unclipped icon image. This will be clipped in AppListItemView before
+  // being shown in apps grid.
   gfx::ImageSkia icon_;
 
   // List of top-level app list items (to display small in the icon).
diff --git a/ash/app_list/views/app_list_folder_view.cc b/ash/app_list/views/app_list_folder_view.cc
index e11c20b..a36ec90 100644
--- a/ash/app_list/views/app_list_folder_view.cc
+++ b/ash/app_list/views/app_list_folder_view.cc
@@ -47,10 +47,7 @@
 
 namespace {
 
-constexpr int kFolderBackgroundCornerRadius = 4;
-constexpr int kFolderIconCornerRadius = 24;
 constexpr int kItemGridsBottomPadding = 24;
-constexpr int kFolderPadding = 12;
 constexpr int kOnscreenKeyboardTopPadding = 8;
 
 // Indexes of interesting views in ViewModel of AppListFolderView.
@@ -73,20 +70,26 @@
   BackgroundAnimation(bool show, AppListFolderView* folder_view)
       : gfx::SlideAnimation(this), show_(show), folder_view_(folder_view) {
     // Calculate the source and target states.
-    from_radius_ =
-        show_ ? kFolderIconCornerRadius : kFolderBackgroundCornerRadius;
-    to_radius_ =
-        show_ ? kFolderBackgroundCornerRadius : kFolderIconCornerRadius;
+    const int icon_radius = AppListConfig::instance().folder_icon_radius();
+    const int folder_radius =
+        AppListConfig::instance().folder_background_radius();
+    from_radius_ = show_ ? icon_radius : folder_radius;
+    to_radius_ = show_ ? folder_radius : icon_radius;
     from_rect_ = show ? folder_view_->folder_item_icon_bounds()
                       : folder_view_->background_view()->bounds();
     to_rect_ = show ? folder_view_->background_view()->bounds()
                     : folder_view_->folder_item_icon_bounds();
-    from_color_ =
-        show_ ? FolderImage::kFolderBubbleColor : kCardBackgroundColor;
-    to_color_ = show_ ? kCardBackgroundColor : FolderImage::kFolderBubbleColor;
+    const SkColor background_color =
+        AppListConfig::instance().folder_background_color();
+    from_color_ = show_ ? FolderImage::kFolderBubbleColor : background_color;
+    to_color_ = show_ ? background_color : FolderImage::kFolderBubbleColor;
 
     SetTweenType(gfx::Tween::FAST_OUT_SLOW_IN);
     SetSlideDuration(kFolderTransitionInDurationMs);
+
+    folder_view_->UpdateBackgroundMask(
+        from_radius_,
+        folder_view_->background_view()->bounds().InsetsFrom(from_rect_));
   }
 
   ~BackgroundAnimation() override = default;
@@ -101,11 +104,12 @@
         gfx::Tween::ColorValueBetween(progress, from_color_, to_color_);
     const gfx::Rect current_rect = gfx::Tween::RectValueBetween(
         animation->GetCurrentValue(), from_rect_, to_rect_);
-    folder_view_->background_view()->SetBoundsRect(current_rect);
+
     folder_view_->background_view()->SetBackground(
-        views::CreateBackgroundFromPainter(
-            views::Painter::CreateSolidRoundRectPainter(current_color,
-                                                        current_radius)));
+        views::CreateSolidBackground(current_color));
+    folder_view_->UpdateBackgroundMask(
+        current_radius,
+        folder_view_->background_view()->bounds().InsetsFrom(current_rect));
     folder_view_->background_view()->SchedulePaint();
   }
 
@@ -218,7 +222,7 @@
     // Hide the original items in the folder until the animation ends.
     SetFirstPageItemViewsVisible(false);
     DCHECK(folder_view_->GetActivatedFolderItemView());
-    folder_view_->GetActivatedFolderItemView()->icon()->SetVisible(false);
+    folder_view_->GetActivatedFolderItemView()->SetIconVisible(false);
 
     // Calculate the start and end bounds of the top item icons in the
     // animation.
@@ -253,7 +257,7 @@
 
       // Add the transitional views into child views, and set its bounds to the
       // same location of the item in the folder list view.
-      folder_view_->AddChildView(top_icon_views_.back());
+      folder_view_->background_view()->AddChildView(top_icon_views_.back());
       icon_view->SetBoundsRect(first_page_item_views_bounds[i]);
       icon_view->TransformView();
     }
@@ -283,14 +287,16 @@
     // Show the folder icon when closing the folder.
     if ((!show_ || hide_for_reparent_) &&
         folder_view_->GetActivatedFolderItemView()) {
-      folder_view_->GetActivatedFolderItemView()->icon()->SetVisible(true);
+      folder_view_->GetActivatedFolderItemView()->SetIconVisible(true);
     }
   }
 
  private:
   std::vector<gfx::Rect> GetTopItemViewsBoundsInFolderIcon() {
-    std::vector<gfx::Rect> top_icons_bounds =
-        FolderImage::GetTopIconsBounds(folder_view_->folder_item_icon_bounds());
+    std::vector<gfx::Rect> top_icons_bounds = FolderImage::GetTopIconsBounds(
+        folder_view_->folder_item_icon_bounds(),
+        std::min(folder_view_->folder_item()->ChildItemCount(),
+                 FolderImage::kNumFolderTopItems));
     std::vector<gfx::Rect> top_item_views_bounds;
     const int icon_dimension = AppListConfig::instance().grid_icon_dimension();
     const int tile_width = AppListConfig::instance().grid_tile_width();
@@ -530,7 +536,9 @@
   gfx::Size size = items_grid_view_->GetTileGridSizeWithoutPadding();
   gfx::Size header_size = folder_header_view_->GetPreferredSize();
   size.Enlarge(0, kItemGridsBottomPadding + header_size.height());
-  size.Enlarge(kFolderPadding * 2, kFolderPadding * 2);
+  const int folder_padding =
+      AppListConfig::instance().grid_tile_spacing_in_folder();
+  size.Enlarge(folder_padding * 2, folder_padding * 2);
   return size;
 }
 
@@ -630,6 +638,16 @@
   }
 }
 
+void AppListFolderView::UpdateBackgroundMask(int corner_radius,
+                                             const gfx::Insets& insets) {
+  background_mask_ = views::Painter::CreatePaintedLayer(
+      views::Painter::CreateSolidRoundRectPainter(SK_ColorBLACK, corner_radius,
+                                                  insets));
+  background_mask_->layer()->SetFillsBoundsOpaquely(false);
+  background_mask_->layer()->SetBounds(background_view_->GetContentsBounds());
+  background_view_->layer()->SetMaskLayer(background_mask_->layer());
+}
+
 void AppListFolderView::CalculateIdealBounds() {
   gfx::Rect rect(GetContentsBounds());
   if (rect.IsEmpty())
@@ -638,7 +656,9 @@
   view_model_->set_ideal_bounds(kIndexBackground, GetContentsBounds());
   view_model_->set_ideal_bounds(kIndexContentsContainer, GetContentsBounds());
 
-  rect.Inset(kFolderPadding, kFolderPadding);
+  const int folder_padding =
+      AppListConfig::instance().grid_tile_spacing_in_folder();
+  rect.Inset(folder_padding, folder_padding);
 
   // Calculate bounds for items grid view.
   gfx::Rect grid_frame(rect);
@@ -747,7 +767,7 @@
   background_view_->SchedulePaint();
   AppListItemView* activated_folder_item_view = GetActivatedFolderItemView();
   if (activated_folder_item_view) {
-    activated_folder_item_view->icon()->SetVisible(true);
+    activated_folder_item_view->SetIconVisible(true);
     activated_folder_item_view->title()->SetEnabledColor(
         AppListConfig::instance().grid_title_color());
     activated_folder_item_view->title()->SetVisible(true);
diff --git a/ash/app_list/views/app_list_folder_view.h b/ash/app_list/views/app_list_folder_view.h
index 32f7256..d24eb64 100644
--- a/ash/app_list/views/app_list_folder_view.h
+++ b/ash/app_list/views/app_list_folder_view.h
@@ -102,6 +102,9 @@
   // ContentsContainerAnimation.
   void RecordAnimationSmoothness();
 
+  // Sets the layer mask's corner radius and insets in background.
+  void UpdateBackgroundMask(int corner_radius, const gfx::Insets& insets);
+
  private:
   void CalculateIdealBounds();
 
@@ -173,6 +176,9 @@
   std::unique_ptr<Animation> top_icon_animation_;
   std::unique_ptr<Animation> contents_container_animation_;
 
+  // The layer mask to create rounded corner.
+  std::unique_ptr<ui::LayerOwner> background_mask_ = nullptr;
+
   // The compositor frame number when animation starts.
   int animation_start_frame_number_;
 
diff --git a/ash/app_list/views/app_list_item_view.cc b/ash/app_list/views/app_list_item_view.cc
index cc53c2c51..efd027b1 100644
--- a/ash/app_list/views/app_list_item_view.cc
+++ b/ash/app_list/views/app_list_item_view.cc
@@ -14,6 +14,7 @@
 #include "ash/app_list/views/apps_grid_view.h"
 #include "ash/public/cpp/app_list/app_list_config.h"
 #include "ash/public/cpp/app_list/app_list_constants.h"
+#include "ash/public/cpp/app_list/app_list_features.h"
 #include "ash/public/cpp/app_list/app_list_switches.h"
 #include "base/strings/utf_string_conversions.h"
 #include "build/build_config.h"
@@ -28,6 +29,7 @@
 #include "ui/gfx/font_list.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/vector2d.h"
+#include "ui/gfx/image/canvas_image_source.h"
 #include "ui/gfx/image/image_skia_operations.h"
 #include "ui/gfx/shadow_value.h"
 #include "ui/gfx/transform_util.h"
@@ -43,9 +45,6 @@
 
 namespace {
 
-// Radius of the folder dropping preview circle.
-constexpr int kFolderPreviewRadius = 40;
-
 // Delay in milliseconds of when the dragging UI should be shown for mouse drag.
 constexpr int kMouseDragUIDelayInMs = 200;
 
@@ -67,6 +66,40 @@
 // The color of the selected item view within folder.
 constexpr SkColor kFolderGridSelectedColor = SkColorSetARGB(31, 0, 0, 0);
 
+// The duration in milliseconds of dragged view hover animation.
+constexpr int kDraggedViewHoverAnimationDuration = 250;
+
+// The class clips the provided folder icon image.
+class ClippedFolderIconImageSource : public gfx::CanvasImageSource {
+ public:
+  explicit ClippedFolderIconImageSource(const gfx::ImageSkia& image)
+      : gfx::CanvasImageSource(AppListConfig::instance().folder_icon_size(),
+                               false),
+        image_(image) {}
+  ~ClippedFolderIconImageSource() override = default;
+
+  void Draw(gfx::Canvas* canvas) override {
+    // Draw the unclipped icon on the center of the canvas with a circular mask.
+    const gfx::Size size = AppListConfig::instance().folder_icon_size();
+    gfx::Path circular_mask;
+    circular_mask.addCircle(SkFloatToScalar(size.width() / 2),
+                            SkFloatToScalar(size.height() / 2),
+                            SkIntToScalar(size.width() / 2));
+
+    cc::PaintFlags flags;
+    flags.setStyle(cc::PaintFlags::kFill_Style);
+    flags.setAntiAlias(true);
+    canvas->DrawImageInPath(image_, (size.width() - image_.size().width()) / 2,
+                            (size.height() - image_.size().height()) / 2,
+                            circular_mask, flags);
+  }
+
+ private:
+  const gfx::ImageSkia image_;
+
+  DISALLOW_COPY_AND_ASSIGN(ClippedFolderIconImageSource);
+};
+
 }  // namespace
 
 // static
@@ -84,9 +117,12 @@
       icon_(new views::ImageView),
       title_(new views::Label),
       progress_bar_(new views::ProgressBar),
+      is_new_style_launcher_enabled_(features::IsNewStyleLauncherEnabled()),
       weak_ptr_factory_(this) {
   SetFocusBehavior(FocusBehavior::ALWAYS);
 
+  icon_->SetPaintToLayer();
+  icon_->layer()->SetFillsBoundsOpaquely(false);
   icon_->set_can_process_events_within_subtree(false);
   icon_->SetVerticalAlignment(views::ImageView::LEADING);
 
@@ -117,6 +153,9 @@
   set_context_menu_controller(this);
 
   SetAnimationDuration(0);
+
+  preview_circle_radius_ = 0;
+  folder_icon_insets_ = AppListConfig::instance().folder_icon_insets();
 }
 
 AppListItemView::~AppListItemView() {
@@ -127,13 +166,14 @@
 void AppListItemView::SetIcon(const gfx::ImageSkia& icon) {
   // Clear icon and bail out if item icon is empty.
   if (icon.isNull()) {
-    icon_->SetImage(NULL);
+    icon_->SetImage(nullptr);
     return;
   }
 
   gfx::ImageSkia resized(gfx::ImageSkiaOperations::CreateResizedImage(
       icon, skia::ImageOperations::RESIZE_BEST,
-      AppListConfig::instance().grid_icon_size()));
+      is_folder_ ? AppListConfig::instance().folder_unclipped_icon_size()
+                 : AppListConfig::instance().grid_icon_size()));
   if (shadow_animator_)
     shadow_animator_->SetOriginalImage(resized);
   else
@@ -223,10 +263,6 @@
     context_menu_->Cancel();
 }
 
-gfx::ImageSkia AppListItemView::GetDragImage() {
-  return icon_->GetImage();
-}
-
 void AppListItemView::OnDragEnded() {
   mouse_drag_timer_.Stop();
   touch_drag_timer_.Stop();
@@ -301,7 +337,7 @@
   views::MenuAnchorPosition anchor_position = views::MENU_ANCHOR_TOPLEFT;
   gfx::Rect anchor_rect = gfx::Rect(point, gfx::Size());
 
-  if (features::IsTouchableAppContextMenuEnabled()) {
+  if (::features::IsTouchableAppContextMenuEnabled()) {
     run_types |= views::MenuRunner::USE_TOUCHABLE_LAYOUT |
                  views::MenuRunner::FIXED_ANCHOR |
                  views::MenuRunner::CONTEXT_MENU;
@@ -383,16 +419,18 @@
     canvas->DrawRoundRect(gfx::RectF(rect), grid_focus_corner_radius, flags);
   }
 
-  if (ui_state_ == UI_STATE_DROPPING_IN_FOLDER) {
-    // Draw folder dropping preview circle.
-    gfx::Point center = gfx::Point(icon_->x() + icon_->size().width() / 2,
-                                   icon_->y() + icon_->size().height() / 2);
-    cc::PaintFlags flags;
-    flags.setStyle(cc::PaintFlags::kFill_Style);
-    flags.setAntiAlias(true);
-    flags.setColor(FolderImage::kFolderBubbleColor);
-    canvas->DrawCircle(center, kFolderPreviewRadius, flags);
-  }
+  int preview_circle_radius = GetPreviewCircleRadius();
+  if (!preview_circle_radius)
+    return;
+
+  // Draw folder dropping preview circle.
+  gfx::Point center = gfx::Point(icon_->x() + icon_->size().width() / 2,
+                                 icon_->y() + icon_->size().height() / 2);
+  cc::PaintFlags flags;
+  flags.setStyle(cc::PaintFlags::kFill_Style);
+  flags.setAntiAlias(true);
+  flags.setColor(FolderImage::kFolderBubbleColor);
+  canvas->DrawCircle(center, preview_circle_radius, flags);
 }
 
 bool AppListItemView::OnMousePressed(const ui::MouseEvent& event) {
@@ -421,8 +459,21 @@
   if (rect.IsEmpty())
     return;
 
-  icon_->SetBoundsRect(
-      GetIconBoundsForTargetViewBounds(rect, icon_->GetImage().size()));
+  const gfx::Rect icon_bounds =
+      GetIconBoundsForTargetViewBounds(rect, icon_->GetImage().size());
+  icon_->SetBoundsRect(icon_bounds);
+  if (is_new_style_launcher_enabled_ && is_folder_) {
+    // Add a folder icon mask to clip the folder icon.
+    folder_icon_mask_ = views::Painter::CreatePaintedLayer(
+        views::Painter::CreateSolidRoundRectPainter(
+            SK_ColorBLACK,
+            AppListConfig::instance().folder_unclipped_icon_dimension() / 2 -
+                folder_icon_insets_,
+            gfx::Insets(folder_icon_insets_, folder_icon_insets_)));
+    folder_icon_mask_->layer()->SetFillsBoundsOpaquely(false);
+    folder_icon_mask_->layer()->SetBounds(icon_bounds);
+    icon_->layer()->SetMaskLayer(folder_icon_mask_->layer());
+  }
   title_->SetBoundsRect(
       GetTitleBoundsForTargetViewBounds(rect, title_->GetPreferredSize()));
   SetTitleSubpixelAA();
@@ -567,6 +618,37 @@
   Layout();
 }
 
+void AppListItemView::OnDraggedViewEnter() {
+  if (!is_new_style_launcher_enabled_)
+    return;
+
+  CreateDraggedViewHoverAnimation();
+  dragged_view_hover_animation_->Show();
+}
+
+void AppListItemView::OnDraggedViewExit() {
+  if (!is_new_style_launcher_enabled_)
+    return;
+
+  CreateDraggedViewHoverAnimation();
+  dragged_view_hover_animation_->Hide();
+}
+
+void AppListItemView::AnimationProgressed(const gfx::Animation* animation) {
+  if (is_folder_) {
+    folder_icon_insets_ = gfx::Tween::IntValueBetween(
+        animation->GetCurrentValue(),
+        AppListConfig::instance().folder_icon_insets(), 0);
+    Layout();
+    return;
+  }
+
+  preview_circle_radius_ = gfx::Tween::IntValueBetween(
+      animation->GetCurrentValue(), 0,
+      AppListConfig::instance().folder_dropping_circle_radius());
+  SchedulePaint();
+}
+
 void AppListItemView::OnMenuClosed() {
   OnBlur();
 }
@@ -575,10 +657,35 @@
   SetUIState(UI_STATE_NORMAL);
 }
 
-const gfx::Rect& AppListItemView::GetIconBounds() const {
+gfx::Rect AppListItemView::GetIconBounds() const {
+  if (is_folder_) {
+    // The folder icon is in unclipped size, so clip it before return.
+    gfx::Rect folder_icon_bounds = icon_->bounds();
+    folder_icon_bounds.ClampToCenteredSize(
+        AppListConfig::instance().folder_icon_size());
+    return folder_icon_bounds;
+  }
   return icon_->bounds();
 }
 
+gfx::Rect AppListItemView::GetIconBoundsInScreen() const {
+  gfx::Rect icon_bounds = GetIconBounds();
+  ConvertRectToScreen(this, &icon_bounds);
+  return icon_bounds;
+}
+
+gfx::ImageSkia AppListItemView::GetIconImage() const {
+  if (!is_folder_)
+    return icon_->GetImage();
+
+  return gfx::CanvasImageSource::MakeImageSkia<ClippedFolderIconImageSource>(
+      icon_->GetImage());
+}
+
+void AppListItemView::SetIconVisible(bool visible) {
+  icon_->SetVisible(visible);
+}
+
 void AppListItemView::SetDragUIState() {
   SetUIState(UI_STATE_DRAGGING);
 }
@@ -639,6 +746,7 @@
 }
 
 void AppListItemView::ItemIconChanged() {
+  DCHECK(item_weak_);
   SetIcon(item_weak_->icon());
 }
 
@@ -661,4 +769,29 @@
   item_weak_ = NULL;
 }
 
+int AppListItemView::GetPreviewCircleRadius() const {
+  if (is_new_style_launcher_enabled_ && !is_folder_) {
+    // The preview circle animation is only enabled for new style launcher.
+    return preview_circle_radius_;
+  }
+
+  if (!is_new_style_launcher_enabled_ &&
+      ui_state_ == UI_STATE_DROPPING_IN_FOLDER) {
+    // Show a static preview circle when new style launcher is not enabled.
+    return AppListConfig::instance().folder_dropping_circle_radius();
+  }
+
+  return 0;
+}
+
+void AppListItemView::CreateDraggedViewHoverAnimation() {
+  if (dragged_view_hover_animation_)
+    return;
+
+  dragged_view_hover_animation_ = std::make_unique<gfx::SlideAnimation>(this);
+  dragged_view_hover_animation_->SetTweenType(gfx::Tween::EASE_IN);
+  dragged_view_hover_animation_->SetSlideDuration(
+      kDraggedViewHoverAnimationDuration);
+}
+
 }  // namespace app_list
diff --git a/ash/app_list/views/app_list_item_view.h b/ash/app_list/views/app_list_item_view.h
index 05647a1..f6aadc18c 100644
--- a/ash/app_list/views/app_list_item_view.h
+++ b/ash/app_list/views/app_list_item_view.h
@@ -61,7 +61,6 @@
 
   void CancelContextMenu();
 
-  gfx::ImageSkia GetDragImage();
   void OnDragEnded();
   gfx::Point GetDragImageOffset();
 
@@ -69,8 +68,6 @@
 
   AppListItem* item() const { return item_weak_; }
 
-  views::ImageView* icon() { return icon_; }
-
   views::Label* title() { return title_; }
 
   // In a synchronous drag the item view isn't informed directly of the drag
@@ -78,7 +75,16 @@
   void OnSyncDragEnd();
 
   // Returns the icon bounds relative to AppListItemView.
-  const gfx::Rect& GetIconBounds() const;
+  gfx::Rect GetIconBounds() const;
+
+  // Returns the icon bounds in screen.
+  gfx::Rect GetIconBoundsInScreen() const;
+
+  // Returns the image of icon.
+  gfx::ImageSkia GetIconImage() const;
+
+  // Sets the icon's visibility.
+  void SetIconVisible(bool visible);
 
   // Sets UI state to dragging state.
   void SetDragUIState();
@@ -115,6 +121,12 @@
   // ImageShadowAnimator::Delegate overrides:
   void ImageShadowAnimationProgressed(ImageShadowAnimator* animator) override;
 
+  // When a dragged view enters this view, a preview circle is shown for
+  // non-folder item while the icon is enlarged for folder item. When a
+  // dragged view exits this view, the reverse animation will be performed.
+  void OnDraggedViewEnter();
+  void OnDraggedViewExit();
+
  private:
   enum UIState {
     UI_STATE_NORMAL,              // Normal UI (icon + label)
@@ -122,6 +134,9 @@
     UI_STATE_DROPPING_IN_FOLDER,  // Folder dropping preview UI
   };
 
+  // gfx::AnimationDelegate:
+  void AnimationProgressed(const gfx::Animation* animation) override;
+
   // Callback used when a menu is closed.
   void OnMenuClosed();
 
@@ -187,6 +202,12 @@
   // AppListMenuModelAdapter::Delegate overrides;
   void ExecuteCommand(int command_id, int event_flags) override;
 
+  // Returns the radius of preview circle.
+  int GetPreviewCircleRadius() const;
+
+  // Creates dragged view hover animation if it does not exist.
+  void CreateDraggedViewHoverAnimation();
+
   const bool is_folder_;
   const bool is_in_folder_;
 
@@ -212,6 +233,18 @@
 
   std::unique_ptr<ImageShadowAnimator> shadow_animator_;
 
+  // The animation that runs when dragged view enters or exits this view.
+  std::unique_ptr<gfx::SlideAnimation> dragged_view_hover_animation_;
+
+  // The radius of preview circle for non-folder item.
+  int preview_circle_radius_ = 0;
+
+  // The insets of folder icon mask to the unclipped folder icon.
+  int folder_icon_insets_ = 0;
+
+  // The folder icon mask used to clip the folder icon.
+  std::unique_ptr<ui::LayerOwner> folder_icon_mask_;
+
   bool is_installing_ = false;
   bool is_highlighted_ = false;
 
@@ -222,6 +255,9 @@
   // A timer to defer showing drag UI when the app item is touch pressed.
   base::OneShotTimer touch_drag_timer_;
 
+  // True if new style launcher feature is enabled.
+  const bool is_new_style_launcher_enabled_;
+
   base::WeakPtrFactory<AppListItemView> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(AppListItemView);
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc
index 8992e543..fa2eba2 100644
--- a/ash/app_list/views/apps_grid_view.cc
+++ b/ash/app_list/views/apps_grid_view.cc
@@ -80,31 +80,18 @@
 constexpr int kTileHorizontalPadding = 12;
 constexpr int kTileVerticalPadding = 6;
 
-// Padding of a tile within the folder view.
-constexpr int kFolderTilePadding = 6;
-
-// Width in pixels of the area on the sides that triggers a page flip.
-constexpr int kPageFlipZoneSize = 40;
-
 // Delay in milliseconds to do the page flip in fullscreen app list.
 constexpr int kPageFlipDelayInMsFullscreen = 500;
 
 // The drag and drop proxy should get scaled by this factor.
 constexpr float kDragAndDropProxyScale = 1.2f;
 
-// Delays in milliseconds to show folder dropping preview circle.
-constexpr int kFolderDroppingDelay = 150;
-
 // Delays in milliseconds to show re-order preview.
 constexpr int kReorderDelay = 120;
 
 // Delays in milliseconds to show folder item reparent UI.
 constexpr int kFolderItemReparentDelay = 50;
 
-// Radius of the circle, in which if entered, show folder dropping preview
-// UI.
-constexpr int kFolderDroppingCircleRadius = 39;
-
 // Padding between suggested apps tiles and all apps indicator.
 constexpr int kSuggestionsAllAppsIndicatorPadding = 26;
 
@@ -385,8 +372,11 @@
 }
 
 gfx::Insets AppsGridView::GetTilePadding() const {
-  if (folder_delegate_)
-    return gfx::Insets(-kFolderTilePadding, -kFolderTilePadding);
+  if (folder_delegate_) {
+    const int tile_padding_in_folder =
+        AppListConfig::instance().grid_tile_spacing_in_folder() / 2;
+    return gfx::Insets(-tile_padding_in_folder, -tile_padding_in_folder);
+  }
   if (is_new_style_launcher_enabled_)
     return gfx::Insets(-vertical_tile_padding_, -horizontal_tile_padding_);
   return gfx::Insets(-kTileVerticalPadding, -kTileHorizontalPadding);
@@ -557,7 +547,7 @@
   DispatchDragEventToDragAndDropHost(location_in_screen);
   if (drag_and_drop_host_) {
     drag_and_drop_host_->UpdateDragIconProxyByLocation(
-        drag_view_->icon()->GetBoundsInScreen().origin());
+        drag_view_->GetIconBoundsInScreen().origin());
   }
   return true;
 }
@@ -597,7 +587,9 @@
     } else if (drop_attempt_ == DROP_FOR_FOLDER) {
       reorder_timer_.Stop();
       folder_dropping_timer_.Start(
-          FROM_HERE, base::TimeDelta::FromMilliseconds(kFolderDroppingDelay),
+          FROM_HERE,
+          base::TimeDelta::FromMilliseconds(
+              AppListConfig::instance().folder_dropping_delay()),
           this, &AppsGridView::OnFolderDroppingTimer);
     }
 
@@ -1309,7 +1301,7 @@
 void AppsGridView::CalculateDropTarget() {
   DCHECK(drag_view_);
 
-  gfx::Point point = drag_view_->icon()->bounds().CenterPoint();
+  gfx::Point point = drag_view_->GetIconBounds().CenterPoint();
   views::View::ConvertPointToTarget(drag_view_, this, &point);
   // Ensure that the drop target location is correct if RTL.
   point.set_x(GetMirroredXInView(point.x()));
@@ -1355,8 +1347,10 @@
   int distance_to_tile_center =
       (point - GetExpectedTileBounds(nearest_tile_index).CenterPoint())
           .Length();
-  if (distance_to_tile_center > kFolderDroppingCircleRadius)
+  if (distance_to_tile_center >
+      AppListConfig::instance().folder_dropping_circle_radius()) {
     return false;
+  }
 
   AppListItemView* target_view =
       GetViewDisplayedAtSlotOnCurrentPage(nearest_tile_index.slot);
@@ -1382,6 +1376,7 @@
 bool AppsGridView::CalculateReorderDropTarget(const gfx::Point& point,
                                               GridIndex* drop_target) const {
   gfx::Rect bounds = GetContentsBounds();
+  bounds.Inset(GetTilePadding());
   GridIndex grid_index = GetNearestTileIndexForPoint(point);
   gfx::Point reorder_placeholder_center =
       GetExpectedTileBounds(reorder_placeholder_).CenterPoint();
@@ -1403,7 +1398,8 @@
   // This makes eordering feel like the user is slotting items into the spaces
   // between apps.
   int x_offset = x_offset_direction *
-                 (total_tile_size.width() - kFolderDroppingCircleRadius) / 2;
+                 (total_tile_size.width() / 2 -
+                  AppListConfig::instance().folder_dropping_circle_radius());
   int col = (point.x() - bounds.x() + x_offset) / total_tile_size.width();
   col = base::ClampToRange(col, 0, cols_ - 1);
   *drop_target =
@@ -1496,7 +1492,7 @@
       view_model_.ideal_bounds(view_model_.GetIndexOfView(folder_item_view));
   const gfx::Rect icon_ideal_bounds =
       folder_item_view->GetIconBoundsForTargetViewBounds(
-          view_ideal_bounds, folder_item_view->icon()->GetImage().size());
+          view_ideal_bounds, folder_item_view->GetIconImage().size());
   AppListFolderItem* folder_item =
       static_cast<AppListFolderItem*>(folder_item_view->item());
   return folder_item->GetTargetIconRectInFolderForItem(drag_item_view->item(),
@@ -1867,8 +1863,8 @@
   // the OS dependent code to "lift off the dragged item".
   DCHECK(!IsDraggingForReparentInRootLevelGridView());
   drag_and_drop_host_->CreateDragIconProxyByLocationWithNoAnimation(
-      drag_view_->icon()->GetBoundsInScreen().origin(),
-      drag_view_->item()->icon(), drag_view_, kDragAndDropProxyScale);
+      drag_view_->GetIconBoundsInScreen().origin(), drag_view_->GetIconImage(),
+      drag_view_, kDragAndDropProxyScale);
 
   SetViewHidden(drag_view_, true /* hide */, true /* no animation */);
 }
@@ -1918,7 +1914,7 @@
   // Drag zones are at the edges of the scroll axis.
   if (pagination_controller_->scroll_axis() ==
       PaginationController::SCROLL_AXIS_VERTICAL) {
-    if (drag_point.y() < kPageFlipZoneSize) {
+    if (drag_point.y() < AppListConfig::instance().page_flip_zone_size()) {
       new_page_flip_target = pagination_model_.selected_page() - 1;
     } else if (IsPointWithinBottomDragBuffer(drag_point)) {
       // If the drag point is within the drag buffer, but not over the shelf.
@@ -1926,11 +1922,13 @@
     }
   } else {
     // TODO(xiyuan): Fix this for RTL.
-    if (new_page_flip_target == -1 && drag_point.x() < kPageFlipZoneSize)
+    if (new_page_flip_target == -1 &&
+        drag_point.x() < AppListConfig::instance().page_flip_zone_size())
       new_page_flip_target = pagination_model_.selected_page() - 1;
 
     if (new_page_flip_target == -1 &&
-        drag_point.x() > width() - kPageFlipZoneSize) {
+        drag_point.x() >
+            width() - AppListConfig::instance().page_flip_zone_size()) {
       new_page_flip_target = pagination_model_.selected_page() + 1;
     }
   }
@@ -2308,7 +2306,8 @@
           GetWidget()->GetNativeView());
 
   const int kBottomDragBufferMin =
-      GetBoundsInScreen().bottom() - kPageFlipZoneSize;
+      GetBoundsInScreen().bottom() -
+      (AppListConfig::instance().page_flip_zone_size());
   const int kBottomDragBufferMax =
       display.bounds().bottom() -
       (contents_view_->app_list_view()->is_side_shelf() ? 0 : kShelfSize);
@@ -2492,7 +2491,8 @@
   int col = base::ClampToRange(
       (point.x() - bounds.x()) / total_tile_size.width(), 0, cols_ - 1);
 
-  const bool show_suggested_apps = current_page == 0 && !folder_delegate_;
+  const bool show_suggested_apps =
+      !is_new_style_launcher_enabled_ && current_page == 0 && !folder_delegate_;
   int row =
       base::ClampToRange((point.y() - bounds.y()) / total_tile_size.height(), 0,
                          rows_per_page_ - (show_suggested_apps ? 2 : 1));
@@ -2566,8 +2566,15 @@
                                              bool is_target_folder) {
   AppListItemView* target_view =
       GetViewDisplayedAtSlotOnCurrentPage(target_index.slot);
-  if (target_view)
+  if (target_view) {
     target_view->SetAsAttemptedFolderTarget(is_target_folder);
+    if (is_new_style_launcher_enabled_) {
+      if (is_target_folder)
+        target_view->OnDraggedViewEnter();
+      else
+        target_view->OnDraggedViewExit();
+    }
+  }
 }
 
 bool AppsGridView::IsAppsGridGapEnabled() const {
diff --git a/ash/public/cpp/app_list/app_list_config.cc b/ash/public/cpp/app_list/app_list_config.cc
index c7ffb598..13498da 100644
--- a/ash/public/cpp/app_list/app_list_config.cc
+++ b/ash/public/cpp/app_list/app_list_config.cc
@@ -6,6 +6,7 @@
 
 #include "ash/public/cpp/app_list/app_list_features.h"
 #include "base/macros.h"
+#include "ui/gfx/color_palette.h"
 
 namespace app_list {
 
@@ -35,7 +36,18 @@
       page_spacing_(40),
       expand_arrow_tile_height_(60),
       folder_bubble_radius_(23),
-      arc_icon_dimension_(48) {
+      arc_icon_dimension_(48),
+      folder_bubble_y_offset_(1),
+      folder_icon_dimension_(48),
+      folder_unclipped_icon_dimension_(48),
+      folder_icon_radius_(24),
+      folder_background_radius_(4),
+      item_icon_in_folder_icon_dimension_(16),
+      folder_dropping_circle_radius_(39),
+      folder_dropping_delay_(150),
+      folder_background_color_(SkColorSetRGB(0xFA, 0xFA, 0xFC)),
+      page_flip_zone_size_(40),
+      grid_tile_spacing_in_folder_(12) {
   if (features::IsNewStyleLauncherEnabled()) {
     grid_tile_width_ = 120;
     grid_tile_height_ = 112;
@@ -53,7 +65,18 @@
     preferred_rows_ = 4;
     page_spacing_ = 48;
     expand_arrow_tile_height_ = 72;
-    folder_bubble_radius_ = 31;
+    folder_bubble_radius_ = 44;
+    folder_bubble_y_offset_ = 0;
+    folder_icon_dimension_ = 72;
+    folder_unclipped_icon_dimension_ = 88;
+    folder_icon_radius_ = 36;
+    folder_background_radius_ = 12;
+    item_icon_in_folder_icon_dimension_ = 32;
+    folder_dropping_circle_radius_ = 44;
+    folder_dropping_delay_ = 0;
+    folder_background_color_ = gfx::kGoogleGrey100;
+    page_flip_zone_size_ = 20;
+    grid_tile_spacing_in_folder_ = 8;
   }
 
   // We're getting the largest font that doesn't exceed
diff --git a/ash/public/cpp/app_list/app_list_config.h b/ash/public/cpp/app_list/app_list_config.h
index fe4791ad..a1f2f01 100644
--- a/ash/public/cpp/app_list/app_list_config.h
+++ b/ash/public/cpp/app_list/app_list_config.h
@@ -64,6 +64,25 @@
   int expand_arrow_tile_height() const { return expand_arrow_tile_height_; }
   int folder_bubble_radius() const { return folder_bubble_radius_; }
   int arc_icon_dimension() const { return arc_icon_dimension_; }
+  int folder_bubble_y_offset() const { return folder_bubble_y_offset_; }
+  int folder_icon_dimension() const { return folder_icon_dimension_; }
+  int folder_unclipped_icon_dimension() const {
+    return folder_unclipped_icon_dimension_;
+  }
+  int item_icon_in_folder_icon_dimension() const {
+    return item_icon_in_folder_icon_dimension_;
+  }
+  int folder_icon_radius() const { return folder_icon_radius_; }
+  int folder_background_radius() const { return folder_background_radius_; }
+  int folder_dropping_circle_radius() const {
+    return folder_dropping_circle_radius_;
+  }
+  int folder_dropping_delay() const { return folder_dropping_delay_; }
+  SkColor folder_background_color() const { return folder_background_color_; }
+  int page_flip_zone_size() const { return page_flip_zone_size_; }
+  int grid_tile_spacing_in_folder() const {
+    return grid_tile_spacing_in_folder_;
+  }
 
   gfx::Size grid_icon_size() const {
     return gfx::Size(grid_icon_dimension_, grid_icon_dimension_);
@@ -95,6 +114,24 @@
     return gfx::Size(arc_icon_dimension_, arc_icon_dimension_);
   }
 
+  gfx::Size folder_icon_size() const {
+    return gfx::Size(folder_icon_dimension_, folder_icon_dimension_);
+  }
+
+  gfx::Size folder_unclipped_icon_size() const {
+    return gfx::Size(folder_unclipped_icon_dimension_,
+                     folder_unclipped_icon_dimension_);
+  }
+
+  int folder_icon_insets() const {
+    return (folder_unclipped_icon_dimension_ - folder_icon_dimension_) / 2;
+  }
+
+  gfx::Size item_icon_in_folder_icon_size() const {
+    return gfx::Size(item_icon_in_folder_icon_dimension_,
+                     item_icon_in_folder_icon_dimension_);
+  }
+
   // Returns the dimension at which a result's icon should be displayed.
   int GetPreferredIconDimension(
       ash::SearchResultDisplayType display_type) const;
@@ -176,6 +213,40 @@
   // |grid_icon_dimension_| when being shown in the apps grid. (Original arc
   // icon support 48px instead of 64px.)
   int arc_icon_dimension_;
+
+  // The y offset of folder image bubble center.
+  int folder_bubble_y_offset_;
+
+  // The icon dimension of folder.
+  int folder_icon_dimension_;
+
+  // The unclipped icon dimension of folder.
+  int folder_unclipped_icon_dimension_;
+
+  // The corner radius of folder icon.
+  int folder_icon_radius_;
+
+  // The corner radius of folder background.
+  int folder_background_radius_;
+
+  // The dimension of the item icon in folder icon.
+  int item_icon_in_folder_icon_dimension_;
+
+  // Radius of the circle, in which if entered, show folder dropping preview
+  // UI.
+  int folder_dropping_circle_radius_;
+
+  // Delays in milliseconds to show folder dropping preview circle.
+  int folder_dropping_delay_;
+
+  // The background color of folder.
+  SkColor folder_background_color_;
+
+  // Width in pixels of the area on the sides that triggers a page flip.
+  int page_flip_zone_size_;
+
+  // The spacing between tile views in folder.
+  int grid_tile_spacing_in_folder_;
 };
 
 }  // namespace app_list
diff --git a/ash/wallpaper/wallpaper_controller.cc b/ash/wallpaper/wallpaper_controller.cc
index 7ff295d..59ce997 100644
--- a/ash/wallpaper/wallpaper_controller.cc
+++ b/ash/wallpaper/wallpaper_controller.cc
@@ -1527,7 +1527,7 @@
 
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&DeleteWallpaperInList, std::move(files_to_remove)));
 }
diff --git a/ash/wallpaper/wallpaper_controller_unittest.cc b/ash/wallpaper/wallpaper_controller_unittest.cc
index c5ef361..45cdd5c 100644
--- a/ash/wallpaper/wallpaper_controller_unittest.cc
+++ b/ash/wallpaper/wallpaper_controller_unittest.cc
@@ -298,7 +298,7 @@
 
   void TearDown() override {
     base::PostTaskWithTraits(FROM_HERE,
-                             {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                             {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                               base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
                              base::Bind(&DeleteWallpaperDirectories));
     AshTestBase::TearDown();
diff --git a/base/base_switches.cc b/base/base_switches.cc
index 13c710b..c1650ea 100644
--- a/base/base_switches.cc
+++ b/base/base_switches.cc
@@ -7,7 +7,7 @@
 
 namespace switches {
 
-// Delays execution of base::TaskPriority::BACKGROUND tasks until shutdown.
+// Delays execution of base::TaskPriority::BEST_EFFORT tasks until shutdown.
 const char kDisableBackgroundTasks[] = "disable-background-tasks";
 
 // Disables the crash reporting.
diff --git a/base/process/process_handle_win.cc b/base/process/process_handle_win.cc
index 67986cd2..ccc7590 100644
--- a/base/process/process_handle_win.cc
+++ b/base/process/process_handle_win.cc
@@ -21,8 +21,14 @@
 }
 
 ProcessId GetProcId(ProcessHandle process) {
+  if (process == base::kNullProcessHandle)
+    return 0;
   // This returns 0 if we have insufficient rights to query the process handle.
-  return GetProcessId(process);
+  // Invalid handles or non-process handles will cause a hard failure.
+  ProcessId result = GetProcessId(process);
+  CHECK(result != 0 || GetLastError() != ERROR_INVALID_HANDLE)
+      << "process handle = " << process;
+  return result;
 }
 
 ProcessId GetParentProcessId(ProcessHandle process) {
diff --git a/base/task_scheduler/environment_config.cc b/base/task_scheduler/environment_config.cc
index 3c76f2f..5fe28aa 100644
--- a/base/task_scheduler/environment_config.cc
+++ b/base/task_scheduler/environment_config.cc
@@ -13,7 +13,7 @@
 
 size_t GetEnvironmentIndexForTraits(const TaskTraits& traits) {
   const bool is_background =
-      traits.priority() == base::TaskPriority::BACKGROUND;
+      traits.priority() == base::TaskPriority::BEST_EFFORT;
   if (traits.may_block() || traits.with_base_sync_primitives())
     return is_background ? BACKGROUND_BLOCKING : FOREGROUND_BLOCKING;
   return is_background ? BACKGROUND : FOREGROUND;
diff --git a/base/task_scheduler/service_thread.cc b/base/task_scheduler/service_thread.cc
index 7e7731f..79c3c6c6 100644
--- a/base/task_scheduler/service_thread.cc
+++ b/base/task_scheduler/service_thread.cc
@@ -13,13 +13,19 @@
 #include "base/task_scheduler/task_scheduler.h"
 #include "base/task_scheduler/task_tracker.h"
 #include "base/task_scheduler/task_traits.h"
+#include "build/build_config.h"
 
 namespace base {
 namespace internal {
 
 namespace {
 
-TimeDelta g_heartbeat_for_testing = TimeDelta();
+// TODO(gab): Verify whether this attribute addresses https://crbug.com/848255
+// and consider a way to expose it more widely.
+#if defined(__clang__) && !defined(OS_NACL)
+[[clang::require_constant_initialization]]
+#endif
+    TimeDelta g_heartbeat_for_testing = TimeDelta();
 
 }  // namespace
 
diff --git a/build/config/android/config.gni b/build/config/android/config.gni
index b919f18..a9148c0 100644
--- a/build/config/android/config.gni
+++ b/build/config/android/config.gni
@@ -209,11 +209,6 @@
     # Refer to android_aar_prebuilt() for more details.
     update_android_aar_prebuilts = false
 
-    # When true, uses the third party libraries from //third_party/android_deps
-    # over the ones in other places. (instead of the support library from
-    # android_tools for example)
-    enable_android_deps_repository = true
-
     # Turns off android lint. Useful for prototyping or for faster local builds.
     disable_android_lint = false
   }
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index eb0d633..356544b 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -3870,44 +3870,3 @@
     }
   }
 }
-
-# Compatibility wrapper to toggle android_deps usage for a dependency.
-#
-# This target creates a wrapper for a dependency allowing it to be loaded
-# either from //third_party/android_deps or from an existing //third_party
-# (or other) target.
-#
-# Variables
-#   fallback_target: Target to use when the android_deps repo is not enabled.
-#   android_deps_target_name: Name of the target from the android_deps repo to
-#     use when the repo is enabled. Is not set, the wrapper's target name will
-#     be used instead.
-#
-# Example
-#   prebuilt_wrapper("android_support_multidex_java") {
-#     android_deps_target_name = "com_android_support_multidex_java"
-#     fallback_target = "$android_support_library_package:$target_name"
-#   }
-template("prebuilt_wrapper") {
-  if (defined(invoker.android_deps_target_name)) {
-    _resolved_android_deps_target_name = invoker.android_deps_target_name
-  } else {
-    _resolved_android_deps_target_name = target_name
-  }
-
-  if (enable_android_deps_repository) {
-    _resolved_target =
-        "//third_party/android_deps:${_resolved_android_deps_target_name}"
-    assert(invoker.fallback_target != "")  # Mark as used.
-  } else {
-    _resolved_target = "${invoker.fallback_target}"
-    assert(_resolved_android_deps_target_name != "")  # Mark as used.
-  }
-
-  java_group(target_name) {
-    forward_variables_from(invoker, [ "testonly" ])
-    deps = [
-      _resolved_target,
-    ]
-  }
-}
diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn
index e720d54..9e54b85 100644
--- a/build/secondary/third_party/android_tools/BUILD.gn
+++ b/build/secondary/third_party/android_tools/BUILD.gn
@@ -39,15 +39,12 @@
   # and are linked by default on O and below. Starting in P, they
   # exist in their own libraries that are present on device and are
   # available to be linked against but aren't linked by default.
-
   android_system_java_prebuilt("android_test_base_java") {
     jar_path = "${android_sdk}/optional/android.test.base.jar"
   }
-
   android_system_java_prebuilt("android_test_mock_java") {
     jar_path = "${android_sdk}/optional/android.test.mock.jar"
   }
-
   android_system_java_prebuilt("android_test_runner_java") {
     jar_path = "${android_sdk}/optional/android.test.runner.jar"
   }
@@ -60,7 +57,6 @@
       ]
     }
   }
-
   support_lib_alias("android_support_chromium_java") {
     testonly = true
   }
@@ -68,244 +64,111 @@
   }
   support_lib_alias("emma_device_java") {
   }
-  prebuilt_wrapper("android_arch_lifecycle_common_java") {
-    fallback_target = "$android_support_library_package:$target_name"
+
+  template("android_deps_alias") {
+    java_group(target_name) {
+      deps = [
+        "//third_party/android_deps:${invoker.android_deps_target_name}",
+      ]
+    }
   }
-  prebuilt_wrapper("android_arch_lifecycle_runtime_java") {
-    fallback_target = "$android_support_library_package:$target_name"
+  android_deps_alias("android_arch_lifecycle_common_java") {
+    android_deps_target_name = "android_arch_lifecycle_common_java"
   }
-  prebuilt_wrapper("android_support_multidex_java") {
+  android_deps_alias("android_arch_lifecycle_runtime_java") {
+    android_deps_target_name = "android_arch_lifecycle_runtime_java"
+  }
+  android_deps_alias("android_support_multidex_java") {
     android_deps_target_name = "com_android_support_multidex_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_annotations_java") {
+  android_deps_alias("android_support_annotations_java") {
     android_deps_target_name = "com_android_support_support_annotations_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_cardview_java") {
+  android_deps_alias("android_support_cardview_java") {
     android_deps_target_name = "com_android_support_cardview_v7_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_compat_java") {
+  android_deps_alias("android_support_compat_java") {
     android_deps_target_name = "com_android_support_support_compat_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_core_ui_java") {
+  android_deps_alias("android_support_core_ui_java") {
     android_deps_target_name = "com_android_support_support_core_ui_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_core_utils_java") {
+  android_deps_alias("android_support_core_utils_java") {
     android_deps_target_name = "com_android_support_support_core_utils_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_design_java") {
+  android_deps_alias("android_support_design_java") {
     android_deps_target_name = "com_android_support_design_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_v4_java") {
-    fallback_target = "$android_support_library_package:$target_name"
+  android_deps_alias("android_support_v4_java") {
+    android_deps_target_name = "android_support_v4_java"
   }
-  prebuilt_wrapper("android_support_v7_appcompat_java") {
-    fallback_target = "$android_support_library_package:$target_name"
+  android_deps_alias("android_support_v7_appcompat_java") {
+    android_deps_target_name = "android_support_v7_appcompat_java"
   }
-  prebuilt_wrapper("android_support_v7_gridlayout_java") {
+  android_deps_alias("android_support_v7_gridlayout_java") {
     android_deps_target_name = "com_android_support_gridlayout_v7_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_v7_mediarouter_java") {
+  android_deps_alias("android_support_v7_mediarouter_java") {
     android_deps_target_name = "com_android_support_mediarouter_v7_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_v7_recyclerview_java") {
+  android_deps_alias("android_support_v7_recyclerview_java") {
     android_deps_target_name = "com_android_support_recyclerview_v7_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-  prebuilt_wrapper("android_support_v13_java") {
+  android_deps_alias("android_support_v13_java") {
     android_deps_target_name = "com_android_support_support_v13_java"
-    fallback_target = "$android_support_library_package:$target_name"
   }
-
-  # TODO(dgn): Use the POM files instead of hardcoding the dependencies.
-  gms_path = "$default_extras_android_sdk_root/extras/google/m2repository/com/google/android/gms"
-  gms_version = "12.0.1"
-
-  android_aar_prebuilt("google_play_services_basement_java") {
-    deps = [
-      ":android_support_v4_java",
-    ]
-    _lib_name = "play-services-basement"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
+  android_deps_alias("google_play_services_basement_java") {
+    android_deps_target_name =
+        "com_google_android_gms_play_services_basement_java"
   }
-
-  android_aar_prebuilt("google_play_services_tasks_java") {
-    deps = [
-      ":google_play_services_basement_java",
-    ]
-    _lib_name = "play-services-tasks"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_tasks_java") {
+    android_deps_target_name = "com_google_android_gms_play_services_tasks_java"
   }
-
-  android_aar_prebuilt("google_play_services_base_java") {
-    deps = [
-      ":android_support_v4_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_tasks_java",
-    ]
-    _lib_name = "play-services-base"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_base_java") {
+    android_deps_target_name = "com_google_android_gms_play_services_base_java"
   }
-
-  android_aar_prebuilt("google_play_services_auth_base_java") {
-    deps = [
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_tasks_java",
-    ]
-    _lib_name = "play-services-auth-base"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_auth_base_java") {
+    android_deps_target_name =
+        "com_google_android_gms_play_services_auth_base_java"
   }
-
-  android_aar_prebuilt("google_play_services_auth_api_phone_java") {
-    deps = [
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_tasks_java",
-    ]
-    _lib_name = "play-services-auth-api-phone"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_auth_api_phone_java") {
+    android_deps_target_name =
+        "com_google_android_gms_play_services_auth_api_phone_java"
   }
-
-  android_aar_prebuilt("google_play_services_auth_java") {
-    deps = [
-      ":google_play_services_auth_api_phone_java",
-      ":google_play_services_auth_base_java",
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_tasks_java",
-    ]
-    _lib_name = "play-services-auth"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_auth_java") {
+    android_deps_target_name = "com_google_android_gms_play_services_auth_java"
   }
-
-  android_aar_prebuilt("google_play_services_cast_java") {
-    deps = [
-      ":android_support_v7_mediarouter_java",
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_tasks_java",
-    ]
-    _lib_name = "play-services-cast"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_cast_java") {
+    android_deps_target_name = "com_google_android_gms_play_services_cast_java"
   }
-
-  android_aar_prebuilt("google_play_services_cast_framework_java") {
-    deps = [
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_cast_java",
-    ]
-    _lib_name = "play-services-cast-framework"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_cast_framework_java") {
+    android_deps_target_name =
+        "com_google_android_gms_play_services_cast_framework_java"
   }
-
-  android_aar_prebuilt("google_play_services_iid_java") {
-    deps = [
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_tasks_java",
-    ]
-    _lib_name = "play-services-iid"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_iid_java") {
+    android_deps_target_name = "com_google_android_gms_play_services_iid_java"
   }
-
-  android_aar_prebuilt("google_play_services_gcm_java") {
-    deps = [
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_iid_java",
-    ]
-    _lib_name = "play-services-gcm"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_instantapps_java") {
+    android_deps_target_name =
+        "com_google_android_gms_play_services_instantapps_java"
   }
-
-  android_aar_prebuilt("google_play_services_location_java") {
-    deps = [
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_tasks_java",
-    ]
-    _lib_name = "play-services-location"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_gcm_java") {
+    android_deps_target_name = "com_google_android_gms_play_services_gcm_java"
   }
-
-  android_aar_prebuilt("google_play_services_vision_java") {
-    deps = [
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_vision_common_java",
-    ]
-    _lib_name = "play-services-vision"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_location_java") {
+    android_deps_target_name =
+        "com_google_android_gms_play_services_location_java"
   }
-
-  android_aar_prebuilt("google_play_services_vision_common_java") {
-    deps = [
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-    ]
-    _lib_name = "play-services-vision-common"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_vision_java") {
+    android_deps_target_name =
+        "com_google_android_gms_play_services_vision_java"
   }
-
-  android_aar_prebuilt("google_play_services_fido_java") {
-    deps = [
-      ":google_play_services_base_java",
-      ":google_play_services_basement_java",
-      ":google_play_services_tasks_java",
-    ]
-    _lib_name = "play-services-fido"
-    aar_path = "$gms_path/$_lib_name/$gms_version/$_lib_name-$gms_version.aar"
-    info_path = "//build/secondary/third_party/android_tools/$target_name.info"
-    proguard_configs =
-        [ "${target_gen_dir}/google_play_services_basement_java/proguard.txt" ]
+  android_deps_alias("google_play_services_vision_common_java") {
+    android_deps_target_name =
+        "com_google_android_gms_play_services_vision_common_java"
+  }
+  android_deps_alias("google_play_services_fido_java") {
+    android_deps_target_name = "com_google_android_gms_play_services_fido_java"
   }
 
   # The current version of //third_party/byte_buddy relies on an older
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
index 9200705..1e67f33 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
@@ -17,6 +17,7 @@
 import org.chromium.chrome.browser.preferences.datareduction.DataReductionPromoUtils;
 import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxySavingsClearedReason;
 import org.chromium.chrome.browser.preferences.datareduction.DataReductionStatsPreference;
+import org.chromium.chrome.browser.util.ConversionUtils;
 
 import java.text.NumberFormat;
 import java.util.ArrayList;
@@ -72,6 +73,8 @@
 
     private static final String PARAM_PERSISTENT_MENU_ITEM_ENABLED = "persistent_menu_item_enabled";
 
+    private static final long DATA_REDUCTION_MAIN_MENU_ITEM_SAVED_KB_THRESHOLD = 100;
+
     private Callback<List<DataReductionDataUseItem>> mQueryDataUsageCallback;
 
     /**
@@ -197,6 +200,7 @@
     public boolean shouldUseDataReductionMainMenuItem() {
         if (!ChromeFeatureList.isEnabled(ChromeFeatureList.DATA_REDUCTION_MAIN_MENU)) return false;
 
+        boolean data_reduction_main_menu_item_allowed = false;
         if (ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean(
                     ChromeFeatureList.DATA_REDUCTION_MAIN_MENU, PARAM_PERSISTENT_MENU_ITEM_ENABLED,
                     false)) {
@@ -208,11 +212,18 @@
                         .putBoolean(DATA_REDUCTION_HAS_EVER_BEEN_ENABLED_PREF, true)
                         .apply();
             }
-            return ContextUtils.getAppSharedPreferences().getBoolean(
-                    DATA_REDUCTION_HAS_EVER_BEEN_ENABLED_PREF, false);
+            data_reduction_main_menu_item_allowed =
+                    ContextUtils.getAppSharedPreferences().getBoolean(
+                            DATA_REDUCTION_HAS_EVER_BEEN_ENABLED_PREF, false);
         } else {
-            return isDataReductionProxyEnabled();
+            data_reduction_main_menu_item_allowed = isDataReductionProxyEnabled();
         }
+
+        if (data_reduction_main_menu_item_allowed) {
+            return ConversionUtils.bytesToKilobytes(getContentLengthSavedInHistorySummary())
+                    >= DATA_REDUCTION_MAIN_MENU_ITEM_SAVED_KB_THRESHOLD;
+        }
+        return false;
     }
 
     /** Returns true if the SPDY proxy is managed by an administrator's policy. */
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/appmenu/DataSaverAppMenuTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/appmenu/DataSaverAppMenuTest.java
index fc24be3..83572c8c 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/appmenu/DataSaverAppMenuTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/appmenu/DataSaverAppMenuTest.java
@@ -37,6 +37,7 @@
             new ChromeActivityTestRule<>(ChromeActivity.class);
 
     private AppMenuHandlerForTest mAppMenuHandler;
+    private TestDataReductionProxySettings mSettings;
 
     /**
      * AppMenuHandler that will be used to intercept the delegate for testing.
@@ -58,6 +59,23 @@
         }
     }
 
+    private static class TestDataReductionProxySettings extends DataReductionProxySettings {
+        private long mContentLengthSavedInHistorySummary;
+
+        @Override
+        public long getContentLengthSavedInHistorySummary() {
+            return mContentLengthSavedInHistorySummary;
+        }
+
+        /**
+         * Sets the content length saved for the number of days shown in the history summary. This
+         * is only used for testing.
+         */
+        public void setContentLengthSavedInHistorySummary(long contentLengthSavedInHistorySummary) {
+            mContentLengthSavedInHistorySummary = contentLengthSavedInHistorySummary;
+        }
+    }
+
     @Before
     public void setUp() throws Exception {
         ChromeTabbedActivity.setAppMenuHandlerFactoryForTesting(
@@ -68,6 +86,9 @@
                 });
 
         mActivityTestRule.startMainActivityOnBlankPage();
+
+        mSettings = new TestDataReductionProxySettings();
+        DataReductionProxySettings.setInstanceForTesting(mSettings);
     }
 
     /**
@@ -88,7 +109,8 @@
     }
 
     /**
-     * Verify the Data Saver footer shows with the flag when the proxy is on.
+     * Verify the Data Saver footer shows with the flag when the proxy is on and the user has saved
+     * at least 100KB of data.
      */
     @Test
     @SmallTest
@@ -101,9 +123,19 @@
             // Data Saver hasn't been turned on, the footer shouldn't show.
             Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId());
 
-            // Turn Data Saver on, the footer should show.
+            // Turn Data Saver on, the footer should not show since the user hasn't saved any bytes
+            // yet.
             DataReductionProxySettings.getInstance().setDataReductionProxyEnabled(
                     mActivityTestRule.getActivity().getApplicationContext(), true);
+            Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId());
+
+            // The user has only saved 50KB so far. Ensure footer is not shown since it is not above
+            // the threshold yet.
+            mSettings.setContentLengthSavedInHistorySummary(50 * 1024);
+            Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId());
+
+            // The user has now saved 100KB. Ensure the footer is shown.
+            mSettings.setContentLengthSavedInHistorySummary(100 * 1024);
             Assert.assertEquals(R.layout.data_reduction_main_menu_item,
                     mAppMenuHandler.getDelegate().getFooterResourceId());
 
@@ -132,9 +164,19 @@
             // Data Saver hasn't been turned on, the footer shouldn't show.
             Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId());
 
-            // Turn Data Saver on, the footer should show.
+            // Turn Data Saver on, the footer should not be shown, as the user hasn't saved any
+            // bytes yet.
             DataReductionProxySettings.getInstance().setDataReductionProxyEnabled(
                     mActivityTestRule.getActivity().getApplicationContext(), true);
+            Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId());
+
+            // The user has only saved 50KB so far. Ensure footer is not shown since it is not above
+            // the threshold yet.
+            mSettings.setContentLengthSavedInHistorySummary(50 * 1024);
+            Assert.assertEquals(0, mAppMenuHandler.getDelegate().getFooterResourceId());
+
+            // The user has now saved 100KB. Ensure the footer is shown.
+            mSettings.setContentLengthSavedInHistorySummary(100 * 1024);
             Assert.assertEquals(R.layout.data_reduction_main_menu_item,
                     mAppMenuHandler.getDelegate().getFooterResourceId());
 
diff --git a/chrome/browser/android/compositor/compositor_view.cc b/chrome/browser/android/compositor/compositor_view.cc
index d0c90c9..c1e6d959 100644
--- a/chrome/browser/android/compositor/compositor_view.cc
+++ b/chrome/browser/android/compositor/compositor_view.cc
@@ -255,7 +255,7 @@
     const content::ChildProcessData& data,
     const content::ChildProcessTerminationInfo& info) {
   LOG(WARNING) << "Child process died (type=" << data.process_type
-               << ") pid=" << data.handle << ")";
+               << ") pid=" << data.GetHandle() << ")";
   if (base::android::BuildInfo::GetInstance()->sdk_int() <=
           base::android::SDK_VERSION_JELLY_BEAN_MR2 &&
       data.process_type == content::PROCESS_TYPE_GPU) {
diff --git a/chrome/browser/android/feedback/process_id_feedback_source.cc b/chrome/browser/android/feedback/process_id_feedback_source.cc
index 687f3201..e6e4b5e69 100644
--- a/chrome/browser/android/feedback/process_id_feedback_source.cc
+++ b/chrome/browser/android/feedback/process_id_feedback_source.cc
@@ -65,7 +65,8 @@
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
 
   for (content::BrowserChildProcessHostIterator iter; !iter.Done(); ++iter)
-    process_ids_[iter.GetData().process_type].push_back(iter.GetData().handle);
+    process_ids_[iter.GetData().process_type].push_back(
+        iter.GetData().GetHandle());
 
   BrowserThread::PostTask(
       BrowserThread::UI, FROM_HERE,
diff --git a/chrome/browser/android/thumbnail/thumbnail_cache.cc b/chrome/browser/android/thumbnail/thumbnail_cache.cc
index cb64abd..3d3eccb 100644
--- a/chrome/browser/android/thumbnail/thumbnail_cache.cc
+++ b/chrome/browser/android/thumbnail/thumbnail_cache.cc
@@ -386,7 +386,7 @@
       raw_data_size, ui_resource_provider_->SupportsETC1NonPowerOfTwo());
 
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::TaskPriority::BACKGROUND,
+                           {base::TaskPriority::BEST_EFFORT,
                             base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
                            base::Bind(&ThumbnailCache::CompressionTask, bitmap,
                                       encoded_size, post_compression_task));
@@ -769,7 +769,7 @@
 
   if (decompress) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT},
         base::Bind(post_read_task, std::move(compressed_data), scale,
                    content_size));
   } else {
diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc
index 6839fd3..a384869 100644
--- a/chrome/browser/android/webapk/webapk_installer.cc
+++ b/chrome/browser/android/webapk/webapk_installer.cc
@@ -295,7 +295,7 @@
 // Returns task runner for running background tasks.
 scoped_refptr<base::TaskRunner> GetBackgroundTaskRunner() {
   return base::CreateTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 }
 
diff --git a/chrome/browser/app_controller_mac.mm b/chrome/browser/app_controller_mac.mm
index a40a9f62..42031b0 100644
--- a/chrome/browser/app_controller_mac.mm
+++ b/chrome/browser/app_controller_mac.mm
@@ -774,7 +774,7 @@
   // Record the path to the (browser) app bundle; this is used by the app mode
   // shim.
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                             base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
                            base::Bind(&RecordLastRunAppBundlePath));
 
diff --git a/chrome/browser/apps/app_shim/app_shim_host_manager_mac.mm b/chrome/browser/apps/app_shim/app_shim_host_manager_mac.mm
index 0fd597b..b9dc53f 100644
--- a/chrome/browser/apps/app_shim/app_shim_host_manager_mac.mm
+++ b/chrome/browser/apps/app_shim/app_shim_host_manager_mac.mm
@@ -87,7 +87,7 @@
         user_data_dir.Append(app_mode::kRunningChromeVersionSymlinkName);
   }
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                             base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
                            base::BindOnce(&DeleteSocketFiles, directory_in_tmp_,
                                           symlink_path, version_path));
diff --git a/chrome/browser/background/background_mode_manager_mac.mm b/chrome/browser/background/background_mode_manager_mac.mm
index 04dc0ac..3a1a3ba 100644
--- a/chrome/browser/background/background_mode_manager_mac.mm
+++ b/chrome/browser/background/background_mode_manager_mac.mm
@@ -157,6 +157,6 @@
 scoped_refptr<base::SequencedTaskRunner>
 BackgroundModeManager::CreateTaskRunner() {
   return base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 }
diff --git a/chrome/browser/background/background_mode_manager_win.cc b/chrome/browser/background/background_mode_manager_win.cc
index 1789409..b67d9e7a 100644
--- a/chrome/browser/background/background_mode_manager_win.cc
+++ b/chrome/browser/background/background_mode_manager_win.cc
@@ -54,6 +54,6 @@
 scoped_refptr<base::SequencedTaskRunner>
 BackgroundModeManager::CreateTaskRunner() {
   return base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 }
diff --git a/chrome/browser/bookmarks/bookmark_html_writer.h b/chrome/browser/bookmarks/bookmark_html_writer.h
index bb0c87f3..d7ce633 100644
--- a/chrome/browser/bookmarks/bookmark_html_writer.h
+++ b/chrome/browser/bookmarks/bookmark_html_writer.h
@@ -100,7 +100,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> background_io_task_runner_ =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
   DISALLOW_COPY_AND_ASSIGN(BookmarkFaviconFetcher);
 };
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index bf7f459..45c6a23c 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -1328,7 +1328,7 @@
   // Runner for tasks that do not influence user experience.
   scoped_refptr<base::SequencedTaskRunner> background_task_runner(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 
   base::FilePath user_data_dir;
@@ -1373,7 +1373,7 @@
   CHECK(base::PathService::Get(chrome::DIR_GLOBAL_GCM_STORE, &store_path));
   scoped_refptr<base::SequencedTaskRunner> blocking_task_runner(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 
   gcm_driver_ = gcm::CreateGCMDriverDesktop(
@@ -1532,7 +1532,7 @@
     // suitable thread.
     base::PostTaskWithTraitsAndReplyWithResult(
         FROM_HERE,
-        {base::TaskPriority::BACKGROUND,
+        {base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN, base::MayBlock()},
         base::BindOnce(&upgrade_util::IsUpdatePendingRestart),
         base::BindOnce(&BrowserProcessImpl::OnPendingRestartResult,
diff --git a/chrome/browser/browsing_data/site_data_size_collector.cc b/chrome/browser/browsing_data/site_data_size_collector.cc
index fd424e74..05f9608 100644
--- a/chrome/browser/browsing_data/site_data_size_collector.cc
+++ b/chrome/browser/browsing_data/site_data_size_collector.cc
@@ -147,7 +147,7 @@
   base::FilePath cookie_file_path = default_storage_partition_path_
       .Append(chrome::kCookieFilename);
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&GetFileSizeBlocking, cookie_file_path),
       base::Bind(&SiteDataSizeCollector::OnStorageSizeFetched,
                  weak_ptr_factory_.GetWeakPtr()));
@@ -202,7 +202,7 @@
   base::FilePath channel_id_file_path = default_storage_partition_path_
       .Append(chrome::kChannelIDFilename);
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&GetFileSizeBlocking, channel_id_file_path),
       base::Bind(&SiteDataSizeCollector::OnStorageSizeFetched,
                  weak_ptr_factory_.GetWeakPtr()));
@@ -239,7 +239,7 @@
   base::FilePath pepper_data_dir_path = default_storage_partition_path_
       .Append(content::kPepperDataDirname);
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&base::ComputeDirectorySize, pepper_data_dir_path),
       base::Bind(&SiteDataSizeCollector::OnStorageSizeFetched,
                  weak_ptr_factory_.GetWeakPtr()));
diff --git a/chrome/browser/budget_service/budget_database.cc b/chrome/browser/budget_service/budget_database.cc
index 34365a36b..2495b0fc 100644
--- a/chrome/browser/budget_service/budget_database.cc
+++ b/chrome/browser/budget_service/budget_database.cc
@@ -52,7 +52,7 @@
     : profile_(profile),
       db_(new leveldb_proto::ProtoDatabaseImpl<budget_service::Budget>(
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND,
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}))),
       clock_(base::WrapUnique(new base::DefaultClock)),
       weak_ptr_factory_(this) {
diff --git a/chrome/browser/chrome_browser_field_trials.cc b/chrome/browser/chrome_browser_field_trials.cc
index ee0af484..23fe49a 100644
--- a/chrome/browser/chrome_browser_field_trials.cc
+++ b/chrome/browser/chrome_browser_field_trials.cc
@@ -89,7 +89,7 @@
   // TODO(bcwhite): Remove this in M65 or later.
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
       base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                      std::move(active_file), /*recursive=*/false));
diff --git a/chrome/browser/chrome_browser_main_android.cc b/chrome/browser/chrome_browser_main_android.cc
index b3fae36..a275e11 100644
--- a/chrome/browser/chrome_browser_main_android.cc
+++ b/chrome/browser/chrome_browser_main_android.cc
@@ -127,7 +127,7 @@
   ChromeBrowserMainParts::PostBrowserStart();
 
   base::PostDelayedTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&ReportSeccompSupport), base::TimeDelta::FromMinutes(1));
 
   RegisterChromeJavaMojoInterfaces();
diff --git a/chrome/browser/chrome_browser_main_linux.cc b/chrome/browser/chrome_browser_main_linux.cc
index 3a26947e..8b5b238 100644
--- a/chrome/browser/chrome_browser_main_linux.cc
+++ b/chrome/browser/chrome_browser_main_linux.cc
@@ -56,7 +56,7 @@
   // g_browser_process.  This happens in PreCreateThreads.
   // base::GetLinuxDistro() will initialize its value if needed.
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(base::IgnoreResult(&base::GetLinuxDistro)));
 #endif
 
diff --git a/chrome/browser/chrome_browser_main_mac.mm b/chrome/browser/chrome_browser_main_mac.mm
index acfbc8d..30f4909 100644
--- a/chrome/browser/chrome_browser_main_mac.mm
+++ b/chrome/browser/chrome_browser_main_mac.mm
@@ -57,7 +57,7 @@
 void EnsureMetadataNeverIndexFile(const base::FilePath& user_data_dir) {
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
       base::Bind(&EnsureMetadataNeverIndexFileOnFileThread, user_data_dir));
 }
diff --git a/chrome/browser/chrome_browser_main_win.cc b/chrome/browser/chrome_browser_main_win.cc
index d94dfb0d..578c038 100644
--- a/chrome/browser/chrome_browser_main_win.cc
+++ b/chrome/browser/chrome_browser_main_win.cc
@@ -349,7 +349,7 @@
         // task.
         base::PostTaskWithTraits(
             FROM_HERE,
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
             base::Bind(&HandleModuleLoadEventWithoutTimeDateStamp,
                        event.module_path, event.module_size, load_address));
@@ -531,7 +531,7 @@
       !base::FeatureList::IsEnabled(features::kThirdPartyModulesBlocking))
     ThirdPartyConflictsManager::DisableThirdPartyModuleBlocking(
         base::CreateTaskRunnerWithTraits(
-            {base::TaskPriority::BACKGROUND,
+            {base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
              base::MayBlock()})
             .get());
@@ -557,7 +557,7 @@
   content::BrowserThread::PostAfterStartupTask(
       FROM_HERE,
       base::CreateTaskRunnerWithTraits(
-          {base::TaskPriority::BACKGROUND,
+          {base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}),
       base::Bind(&VerifyInstallation));
 
diff --git a/chrome/browser/chrome_content_browser_client_browsertest_chromeos.cc b/chrome/browser/chrome_content_browser_client_browsertest_chromeos.cc
index 919e9b8..4ff2f2d 100644
--- a/chrome/browser/chrome_content_browser_client_browsertest_chromeos.cc
+++ b/chrome/browser/chrome_content_browser_client_browsertest_chromeos.cc
@@ -26,7 +26,7 @@
 void GetUtilityProcessPidsOnIOThread(std::vector<pid_t>* pids) {
   for (BrowserChildProcessHostIterator it(content::PROCESS_TYPE_UTILITY);
        !it.Done(); ++it) {
-    pid_t pid = it.GetData().handle;
+    pid_t pid = it.GetData().GetHandle();
     pids->push_back(pid);
   }
 }
diff --git a/chrome/browser/chrome_plugin_browsertest.cc b/chrome/browser/chrome_plugin_browsertest.cc
index fab61fa4..9f9e031b 100644
--- a/chrome/browser/chrome_plugin_browsertest.cc
+++ b/chrome/browser/chrome_plugin_browsertest.cc
@@ -154,7 +154,7 @@
       if (iter.GetData().process_type != content::PROCESS_TYPE_PPAPI_PLUGIN)
         continue;
       base::Process process = base::Process::DeprecatedGetProcessFromHandle(
-          iter.GetData().handle);
+          iter.GetData().GetHandle());
       process.Terminate(0, true);
       found = true;
     }
diff --git a/chrome/browser/chromeos/app_mode/app_session.cc b/chrome/browser/chromeos/app_mode/app_session.cc
index 43a6be5..56c5e2e2 100644
--- a/chrome/browser/chromeos/app_mode/app_session.cc
+++ b/chrome/browser/chromeos/app_mode/app_session.cc
@@ -78,12 +78,12 @@
     const content::ChildProcessData& data = iter.GetData();
     if (child_ids.count(data.id) == 1) {
       // Send a signal to dump the plugin process.
-      if (kill(data.handle, SIGFPE) == 0) {
+      if (kill(data.GetHandle(), SIGFPE) == 0) {
         dump_requested = true;
       } else {
         LOG(WARNING) << "Failed to send SIGFPE to plugin process"
                      << ", errno=" << errno
-                     << ", pid=" << data.handle
+                     << ", pid=" << data.GetHandle()
                      << ", type=" << data.process_type
                      << ", name=" << data.name;
       }
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc
index 9147912..09c1f14 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc
@@ -83,7 +83,7 @@
         crx_file_(crx_file),
         success_(false),
         task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})) {}
 
   void Start() {
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_data_base.cc b/chrome/browser/chromeos/app_mode/kiosk_app_data_base.cc
index 98c122c..7f21afe 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_app_data_base.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_data_base.cc
@@ -120,7 +120,7 @@
 
   if (!icon_path_.empty()) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(base::IgnoreResult(&base::DeleteFile), icon_path_,
                        false));
   }
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc b/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc
index b96102e..b4060774 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_manager.cc
@@ -156,7 +156,7 @@
 
 scoped_refptr<base::SequencedTaskRunner> GetBackgroundTaskRunner() {
   return base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 }
 
@@ -468,7 +468,7 @@
       } else if (!ownership_established_) {
         bool* owner_present = new bool(false);
         base::PostTaskWithTraitsAndReply(
-            FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+            FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
             base::BindOnce(&CheckOwnerFilePresence, owner_present),
             base::BindOnce(&KioskAppManager::OnOwnerFileChecked,
                            base::Unretained(this), callback,
diff --git a/chrome/browser/chromeos/arc/wallpaper/arc_wallpaper_service.cc b/chrome/browser/chromeos/arc/wallpaper/arc_wallpaper_service.cc
index 9d9d37f6f..f459a8c3 100644
--- a/chrome/browser/chromeos/arc/wallpaper/arc_wallpaper_service.cc
+++ b/chrome/browser/chromeos/arc/wallpaper/arc_wallpaper_service.cc
@@ -252,7 +252,7 @@
     GetWallpaperCallback callback,
     const gfx::ImageSkia& image) {
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&EncodeImagePng, image), std::move(callback));
 }
 
diff --git a/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc b/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc
index 45c69566..1c87271 100644
--- a/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc
+++ b/chrome/browser/chromeos/authpolicy/auth_policy_credentials_manager.cc
@@ -233,14 +233,14 @@
   if (kerberos_files.has_krb5cc()) {
     base::PostTaskWithTraits(
         FROM_HERE,
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
         base::BindOnce(&WriteFile, kKrb5CCFile, kerberos_files.krb5cc()));
   }
   if (kerberos_files.has_krb5conf()) {
     base::PostTaskWithTraits(
         FROM_HERE,
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
         base::BindOnce(
             &WriteFile, kKrb5ConfFile,
diff --git a/chrome/browser/chromeos/base/file_flusher.cc b/chrome/browser/chromeos/base/file_flusher.cc
index 9bf803c..1d913c0 100644
--- a/chrome/browser/chromeos/base/file_flusher.cc
+++ b/chrome/browser/chromeos/base/file_flusher.cc
@@ -98,7 +98,7 @@
   }
 
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&FileFlusher::Job::FlushAsync, base::Unretained(this)),
       base::Bind(&FileFlusher::Job::FinishOnUIThread, base::Unretained(this)));
 }
diff --git a/chrome/browser/chromeos/base/locale_util.cc b/chrome/browser/chromeos/base/locale_util.cc
index de8e911b..3b33d616 100644
--- a/chrome/browser/chromeos/base/locale_util.cc
+++ b/chrome/browser/chromeos/base/locale_util.cc
@@ -136,7 +136,7 @@
   base::Closure reloader(
       base::Bind(&SwitchLanguageDoReloadLocale, base::Unretained(data.get())));
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND}, reloader,
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT}, reloader,
       base::Bind(&FinishSwitchLanguage, base::Passed(std::move(data))));
 }
 
diff --git a/chrome/browser/chromeos/boot_times_recorder.cc b/chrome/browser/chromeos/boot_times_recorder.cc
index 2b95dbf..5f4e94c 100644
--- a/chrome/browser/chromeos/boot_times_recorder.cc
+++ b/chrome/browser/chromeos/boot_times_recorder.cc
@@ -218,7 +218,7 @@
 
 void BootTimesRecorder::Stats::RecordStats(const std::string& name) const {
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&BootTimesRecorder::Stats::RecordStatsAsync,
                  base::Owned(new Stats(*this)), name));
 }
@@ -227,7 +227,7 @@
     const std::string& name,
     const base::Closure& callback) const {
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&BootTimesRecorder::Stats::RecordStatsAsync,
                  base::Owned(new Stats(*this)), name),
       callback);
@@ -346,7 +346,7 @@
   }
   // Don't swamp the background thread right away.
   base::PostDelayedTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&WriteTimes, kLoginTimes,
                      (is_user_new ? kUmaLoginNewUser : kUmaLogin),
                      kUmaLoginPrefix, login_time_markers_),
diff --git a/chrome/browser/chromeos/camera_detector.cc b/chrome/browser/chromeos/camera_detector.cc
index 2dfd457..98847fef 100644
--- a/chrome/browser/chromeos/camera_detector.cc
+++ b/chrome/browser/chromeos/camera_detector.cc
@@ -48,7 +48,7 @@
   presence_check_in_progress_ = true;
   base::PostTaskAndReplyWithResult(
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})
           .get(),
       FROM_HERE, base::Bind(&CameraDetector::CheckPresence),
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index dcacdb56..e66c1526 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -753,7 +753,7 @@
   }
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&version_loader::GetVersion, version_loader::VERSION_FULL),
       base::Bind(&ChromeOSVersionCallback));
 
@@ -779,7 +779,7 @@
   // src/device. http://crbug.com/525658.
   chromeos::AccelerometerReader::GetInstance()->Initialize(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 
   // NOTE: Calls ChromeBrowserMainParts::PreProfileInit() which calls
diff --git a/chrome/browser/chromeos/crostini/crostini_registry_service.cc b/chrome/browser/chromeos/crostini/crostini_registry_service.cc
index 776abb4..4d55c88 100644
--- a/chrome/browser/chromeos/crostini/crostini_registry_service.cc
+++ b/chrome/browser/chromeos/crostini/crostini_registry_service.cc
@@ -712,7 +712,7 @@
 
   // Remove local data on filesystem for the icons.
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&DeleteIconFolderFromFileThread, GetAppPath(app_id)));
 }
 
@@ -811,7 +811,7 @@
   // Now install the icon that we received.
   const base::FilePath icon_path = GetIconPath(app_id, scale_factor);
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&InstallIconFromFileThread, icon_path, icons[0].content),
       base::BindOnce(&CrostiniRegistryService::OnIconInstalled,
                      weak_ptr_factory_.GetWeakPtr(), app_id, scale_factor));
diff --git a/chrome/browser/chromeos/customization/customization_document.cc b/chrome/browser/chromeos/customization/customization_document.cc
index f8fd293..70ff433d 100644
--- a/chrome/browser/chromeos/customization/customization_document.cc
+++ b/chrome/browser/chromeos/customization/customization_document.cc
@@ -545,7 +545,7 @@
     fetch_started_ = true;
     if (url_.SchemeIsFile()) {
       base::PostTaskWithTraitsAndReplyWithResult(
-          FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+          FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
           base::BindOnce(&ReadFileInBackground, base::FilePath(url_.path())),
           base::BindOnce(&ServicesCustomizationDocument::OnManifestRead,
                          weak_ptr_factory_.GetWeakPtr()));
@@ -860,7 +860,7 @@
       weak_ptr_factory_.GetWeakPtr(), base::Passed(std::move(exists)),
       base::Passed(std::move(applying)));
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       check_file_exists, on_checked_closure);
 }
 
diff --git a/chrome/browser/chromeos/customization/customization_wallpaper_downloader.cc b/chrome/browser/chromeos/customization/customization_wallpaper_downloader.cc
index b847560..c014b7e 100644
--- a/chrome/browser/chromeos/customization/customization_wallpaper_downloader.cc
+++ b/chrome/browser/chromeos/customization/customization_wallpaper_downloader.cc
@@ -138,7 +138,7 @@
       &CustomizationWallpaperDownloader::OnWallpaperDirectoryCreated,
       weak_factory_.GetWeakPtr(), base::Passed(std::move(success)));
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       std::move(mkdir_closure), std::move(on_created_closure));
 }
 
@@ -174,7 +174,7 @@
       &CustomizationWallpaperDownloader::OnTemporaryFileRenamed,
       weak_factory_.GetWeakPtr(), base::Passed(std::move(success)));
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       std::move(rename_closure), std::move(on_rename_closure));
 }
 
diff --git a/chrome/browser/chromeos/external_metrics.cc b/chrome/browser/chromeos/external_metrics.cc
index d055cb71..3c5387d 100644
--- a/chrome/browser/chromeos/external_metrics.cc
+++ b/chrome/browser/chromeos/external_metrics.cc
@@ -158,7 +158,7 @@
 
 void ExternalMetrics::ScheduleCollector() {
   base::PostDelayedTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&chromeos::ExternalMetrics::CollectEventsAndReschedule,
                      this),
       kExternalMetricsCollectionInterval);
diff --git a/chrome/browser/chromeos/first_run/goodies_displayer.cc b/chrome/browser/chromeos/first_run/goodies_displayer.cc
index de474ea..4d1c0b36 100644
--- a/chrome/browser/chromeos/first_run/goodies_displayer.cc
+++ b/chrome/browser/chromeos/first_run/goodies_displayer.cc
@@ -84,7 +84,7 @@
       prefs::kCanShowOobeGoodiesPage);
   if (can_show) {
     base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(&CheckGoodiesPrefAgainstOobeTimestamp),
         base::Bind(&UpdateGoodiesPrefCantShow));
   }
diff --git a/chrome/browser/chromeos/hats/hats_dialog.cc b/chrome/browser/chromeos/hats/hats_dialog.cc
index 42127d1..d820d46 100644
--- a/chrome/browser/chromeos/hats/hats_dialog.cc
+++ b/chrome/browser/chromeos/hats/hats_dialog.cc
@@ -128,7 +128,7 @@
   std::unique_ptr<HatsDialog> hats_dialog(new HatsDialog);
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&GetFormattedSiteContext, user_locale, kDeviceInfoStopKeyword),
       base::Bind(&HatsDialog::Show, base::Passed(&hats_dialog),
                  is_google_account ? kGooglerSiteID : kSiteID));
diff --git a/chrome/browser/chromeos/hats/hats_notification_controller.cc b/chrome/browser/chromeos/hats/hats_notification_controller.cc
index a06cb0e..99c7e99 100644
--- a/chrome/browser/chromeos/hats/hats_notification_controller.cc
+++ b/chrome/browser/chromeos/hats/hats_notification_controller.cc
@@ -87,7 +87,7 @@
 HatsNotificationController::HatsNotificationController(Profile* profile)
     : profile_(profile), weak_pointer_factory_(this) {
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&IsNewDevice, kHatsNewDeviceThresholdDays),
       base::Bind(&HatsNotificationController::Initialize,
                  weak_pointer_factory_.GetWeakPtr()));
diff --git a/chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.cc b/chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.cc
index 7a18f7d..9d63203 100644
--- a/chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.cc
+++ b/chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.cc
@@ -164,7 +164,7 @@
   // url won't be override by IME component extensions.
   base::FilePath* copied_file_path = new base::FilePath(file_path);
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&CheckFilePath, base::Unretained(copied_file_path)),
       base::Bind(&OnFilePathChecked, base::Unretained(profile),
                  base::Owned(new std::string(extension_id)),
diff --git a/chrome/browser/chromeos/input_method/input_method_syncer.cc b/chrome/browser/chromeos/input_method/input_method_syncer.cc
index 987fd20..ff66a218 100644
--- a/chrome/browser/chromeos/input_method/input_method_syncer.cc
+++ b/chrome/browser/chromeos/input_method/input_method_syncer.cc
@@ -235,7 +235,7 @@
                                     preferred_languages_syncable,
                                     prefs::kLanguagePreferredLanguages));
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&CheckAndResolveLocales, languages),
       base::Bind(&InputMethodSyncer::FinishMerge, weak_factory_.GetWeakPtr()));
 }
diff --git a/chrome/browser/chromeos/login/login_utils_browsertest.cc b/chrome/browser/chromeos/login/login_utils_browsertest.cc
index d3272ccf..eedfebae 100644
--- a/chrome/browser/chromeos/login/login_utils_browsertest.cc
+++ b/chrome/browser/chromeos/login/login_utils_browsertest.cc
@@ -114,7 +114,7 @@
     base::RunLoop loop;
     base::string16 rlz_string;
     base::PostTaskWithTraitsAndReply(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(&GetAccessPointRlzInBackgroundThread,
                    rlz::RLZTracker::ChromeHomePage(), &rlz_string),
         loop.QuitClosure());
diff --git a/chrome/browser/chromeos/login/oobe_configuration.cc b/chrome/browser/chromeos/login/oobe_configuration.cc
index 16c3a54..077f7641 100644
--- a/chrome/browser/chromeos/login/oobe_configuration.cc
+++ b/chrome/browser/chromeos/login/oobe_configuration.cc
@@ -87,7 +87,7 @@
 
 void OobeConfiguration::LoadConfiguration(const base::FilePath& path) {
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&LoadOOBEConfigurationFile, path),
       base::BindOnce(&OobeConfiguration::OnConfigurationLoaded,
                      weak_factory_.GetWeakPtr()));
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc
index 4673f83..5fbc88ae 100644
--- a/chrome/browser/chromeos/login/session/user_session_manager.cc
+++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -676,7 +676,7 @@
   }
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&CollectRlzParams),
       base::Bind(&UserSessionManager::InitRlzImpl, AsWeakPtr(), profile));
diff --git a/chrome/browser/chromeos/login/startup_utils.cc b/chrome/browser/chromeos/login/startup_utils.cc
index 90035ca3..94fef36 100644
--- a/chrome/browser/chromeos/login/startup_utils.cc
+++ b/chrome/browser/chromeos/login/startup_utils.cc
@@ -141,9 +141,9 @@
       g_browser_process->local_state()->GetInteger(prefs::kDeviceRegistered);
   if (value > 0) {
     // Recreate flag file in case it was lost.
-    base::PostTaskWithTraits(FROM_HERE,
-                             {base::TaskPriority::BACKGROUND, base::MayBlock()},
-                             base::BindOnce(&CreateOobeCompleteFlagFile));
+    base::PostTaskWithTraits(
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
+        base::BindOnce(&CreateOobeCompleteFlagFile));
     return true;
   } else if (value == 0) {
     return false;
@@ -162,12 +162,12 @@
 void StartupUtils::MarkDeviceRegistered(base::OnceClosure done_callback) {
   SaveIntegerPreferenceForced(prefs::kDeviceRegistered, 1);
   if (done_callback.is_null()) {
-    base::PostTaskWithTraits(FROM_HERE,
-                             {base::TaskPriority::BACKGROUND, base::MayBlock()},
-                             base::BindOnce(&CreateOobeCompleteFlagFile));
+    base::PostTaskWithTraits(
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
+        base::BindOnce(&CreateOobeCompleteFlagFile));
   } else {
     base::PostTaskWithTraitsAndReply(
-        FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
         base::BindOnce(&CreateOobeCompleteFlagFile), std::move(done_callback));
   }
 }
diff --git a/chrome/browser/chromeos/login/supervised/supervised_user_authentication.cc b/chrome/browser/chromeos/login/supervised/supervised_user_authentication.cc
index 0952fe6..602ca5eec 100644
--- a/chrome/browser/chromeos/login/supervised/supervised_user_authentication.cc
+++ b/chrome/browser/chromeos/login/supervised/supervised_user_authentication.cc
@@ -282,7 +282,7 @@
       ProfileHelper::GetProfilePathByUserIdHash(user->username_hash());
   PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&LoadPasswordData, profile_path),
       base::BindOnce(&OnPasswordDataLoaded, success_callback,
diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc b/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc
index c8470cf..75f9caf 100644
--- a/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc
+++ b/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc
@@ -563,7 +563,7 @@
       has_managed_image_(false),
       weak_factory_(this) {
   background_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN});
 }
 
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
index 49a9a4a..20101c7 100644
--- a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
@@ -1447,7 +1447,7 @@
     base::OnceClosure on_resolved_callback,
     std::string* out_resolved_locale) const {
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(ResolveLocale, locale,
                      base::Unretained(out_resolved_locale)),
       std::move(on_resolved_callback));
diff --git a/chrome/browser/chromeos/login/users/supervised_user_manager_impl.cc b/chrome/browser/chromeos/login/users/supervised_user_manager_impl.cc
index f8e018d..0faf6110 100644
--- a/chrome/browser/chromeos/login/users/supervised_user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/users/supervised_user_manager_impl.cc
@@ -505,7 +505,7 @@
       ProfileHelper::Get()->GetUserByProfile(profile)->username_hash());
   PostTaskAndReplyWithResult(
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})
           .get(),
       FROM_HERE, base::Bind(&LoadSyncToken, profile_dir), callback);
diff --git a/chrome/browser/chromeos/login/version_info_updater.cc b/chrome/browser/chromeos/login/version_info_updater.cc
index 4900cb4..cf0d260 100644
--- a/chrome/browser/chromeos/login/version_info_updater.cc
+++ b/chrome/browser/chromeos/login/version_info_updater.cc
@@ -66,7 +66,7 @@
 void VersionInfoUpdater::StartUpdate(bool is_official_build) {
   if (base::SysInfo::IsRunningOnChromeOS()) {
     base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(&version_loader::GetVersion,
                    is_official_build ? version_loader::VERSION_SHORT_WITH_DATE
                                      : version_loader::VERSION_FULL),
diff --git a/chrome/browser/chromeos/mobile/mobile_activator.cc b/chrome/browser/chromeos/mobile/mobile_activator.cc
index 8debe3201..1ab0b996 100644
--- a/chrome/browser/chromeos/mobile/mobile_activator.cc
+++ b/chrome/browser/chromeos/mobile/mobile_activator.cc
@@ -273,7 +273,7 @@
   ChangeState(network, PLAN_ACTIVATION_PAGE_LOADING, "");
 
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&CellularConfigDocument::LoadCellularConfigFile,
                      cellular_config_.get()),
       base::BindOnce(&MobileActivator::ContinueActivation, AsWeakPtr()));
diff --git a/chrome/browser/chromeos/mobile_config.cc b/chrome/browser/chromeos/mobile_config.cc
index f69870e7..16f22d97 100644
--- a/chrome/browser/chromeos/mobile_config.cc
+++ b/chrome/browser/chromeos/mobile_config.cc
@@ -333,7 +333,7 @@
 
 void MobileConfig::LoadConfig() {
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&ReadConfigInBackground,
                      base::FilePath(kGlobalCarrierConfigPath),
                      base::FilePath(kLocalCarrierConfigPath)),
diff --git a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc
index 8cab697..1cee28e 100644
--- a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc
+++ b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc
@@ -119,7 +119,7 @@
 
   scoped_refptr<base::TaskRunner> task_runner =
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   task_runner->PostTask(
       FROM_HERE,
@@ -167,7 +167,7 @@
   }
   scoped_refptr<base::TaskRunner> task_runner =
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   base::PostTaskAndReplyWithResult(
       task_runner.get(),
diff --git a/chrome/browser/chromeos/platform_keys/platform_keys.cc b/chrome/browser/chromeos/platform_keys/platform_keys.cc
index 8910307d..cf6c75aa 100644
--- a/chrome/browser/chromeos/platform_keys/platform_keys.cc
+++ b/chrome/browser/chromeos/platform_keys/platform_keys.cc
@@ -71,7 +71,7 @@
   // does not affect browser responsiveness, hence the BACKGROUND priority.
   base::PostTaskWithTraitsAndReply(
       FROM_HERE,
-      {base::TaskPriority::BACKGROUND,
+      {base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&IntersectOnWorkerThread, certs1, certs2, intersection_ptr),
       base::Bind(callback, base::Passed(&intersection)));
diff --git a/chrome/browser/chromeos/platform_keys/platform_keys_nss.cc b/chrome/browser/chromeos/platform_keys/platform_keys_nss.cc
index fd151f5..7d99b8b 100644
--- a/chrome/browser/chromeos/platform_keys/platform_keys_nss.cc
+++ b/chrome/browser/chromeos/platform_keys/platform_keys_nss.cc
@@ -476,7 +476,7 @@
   // This task interacts with the TPM, hence MayBlock().
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&GenerateRSAKeyOnWorkerThread, base::Passed(&state)));
 }
@@ -570,7 +570,7 @@
   // This task interacts with the TPM, hence MayBlock().
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&SignRSAOnWorkerThread, base::Passed(&state)));
 }
@@ -654,7 +654,7 @@
   // This task interacts with the TPM, hence MayBlock().
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&FilterCertificatesOnWorkerThread, base::Passed(&state)));
 }
diff --git a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc
index c41c301..9c61334 100644
--- a/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc
+++ b/chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc
@@ -78,7 +78,7 @@
 // SequencedTaskRunner returned is independent from the others.
 scoped_refptr<base::SequencedTaskRunner> GetBackgroundTaskRunner() {
   return base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 }
 
diff --git a/chrome/browser/chromeos/policy/device_local_account_policy_service.cc b/chrome/browser/chromeos/policy/device_local_account_policy_service.cc
index 0091e48f..3ea18d0 100644
--- a/chrome/browser/chromeos/policy/device_local_account_policy_service.cc
+++ b/chrome/browser/chromeos/policy/device_local_account_policy_service.cc
@@ -286,7 +286,7 @@
       store_background_task_runner_(store_background_task_runner),
       extension_cache_task_runner_(extension_cache_task_runner),
       resource_cache_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       request_context_(request_context),
       url_loader_factory_(url_loader_factory),
       local_accounts_subscription_(cros_settings_->AddSettingsObserver(
diff --git a/chrome/browser/chromeos/policy/device_status_collector.cc b/chrome/browser/chromeos/policy/device_status_collector.cc
index f5161b4..4313fb10 100644
--- a/chrome/browser/chromeos/policy/device_status_collector.cc
+++ b/chrome/browser/chromeos/policy/device_status_collector.cc
@@ -362,7 +362,7 @@
 
     // Call out to the blocking pool to sample disk volume info.
     base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(volume_info_fetcher, mount_points),
         base::Bind(&GetStatusState::OnVolumeInfoReceived, this));
   }
@@ -372,7 +372,7 @@
       const policy::DeviceStatusCollector::CPUTempFetcher& cpu_temp_fetcher) {
     // Call out to the blocking pool to sample CPU temp.
     base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         cpu_temp_fetcher,
         base::Bind(&GetStatusState::OnCPUTempInfoReceived, this));
   }
@@ -754,13 +754,13 @@
 
   // Get the OS, firmware, and TPM version info.
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&chromeos::version_loader::GetVersion,
                  chromeos::version_loader::VERSION_FULL),
       base::Bind(&DeviceStatusCollector::OnOSVersion,
                  weak_factory_.GetWeakPtr()));
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&chromeos::version_loader::GetFirmware),
       base::Bind(&DeviceStatusCollector::OnOSFirmware,
                  weak_factory_.GetWeakPtr()));
@@ -953,7 +953,7 @@
 
   // Call out to the blocking pool to sample CPU stats.
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       cpu_statistics_fetcher_,
       base::Bind(&DeviceStatusCollector::ReceiveCPUStatistics,
                  weak_factory_.GetWeakPtr()));
diff --git a/chrome/browser/chromeos/policy/dm_token_storage.cc b/chrome/browser/chromeos/policy/dm_token_storage.cc
index 419d3b4..b9e0573 100644
--- a/chrome/browser/chromeos/policy/dm_token_storage.cc
+++ b/chrome/browser/chromeos/policy/dm_token_storage.cc
@@ -128,7 +128,7 @@
   DCHECK(!system_salt_.empty());
   DCHECK(!dm_token_.empty());
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&EncryptToken, system_salt_, dm_token_),
       base::Bind(&DMTokenStorage::OnTokenEncrypted,
                  weak_ptr_factory_.GetWeakPtr()));
@@ -151,7 +151,7 @@
       local_state_->GetString(prefs::kDeviceDMToken);
   if (!encrypted_dm_token.empty()) {
     base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(&DecryptToken, system_salt_, encrypted_dm_token),
         base::Bind(&DMTokenStorage::FlushRetrieveTokenCallback,
                    weak_ptr_factory_.GetWeakPtr()));
diff --git a/chrome/browser/chromeos/policy/system_log_uploader.cc b/chrome/browser/chromeos/policy/system_log_uploader.cc
index 81921a8..841722f6 100644
--- a/chrome/browser/chromeos/policy/system_log_uploader.cc
+++ b/chrome/browser/chromeos/policy/system_log_uploader.cc
@@ -134,7 +134,7 @@
   // Run ReadFiles() in the thread that interacts with the file system and
   // return system logs to |upload_callback| on the current thread.
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&ReadFiles), std::move(upload_callback));
 }
 
diff --git a/chrome/browser/chromeos/policy/user_policy_manager_factory_chromeos.cc b/chrome/browser/chromeos/policy/user_policy_manager_factory_chromeos.cc
index 5a376bef..88102b7 100644
--- a/chrome/browser/chromeos/policy/user_policy_manager_factory_chromeos.cc
+++ b/chrome/browser/chromeos/policy/user_policy_manager_factory_chromeos.cc
@@ -373,7 +373,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> backend_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   scoped_refptr<base::SequencedTaskRunner> io_task_runner =
       content::BrowserThread::GetTaskRunnerForThread(
diff --git a/chrome/browser/chromeos/power/cpu_data_collector.cc b/chrome/browser/chromeos/power/cpu_data_collector.cc
index e9e21e1..6d81156 100644
--- a/chrome/browser/chromeos/power/cpu_data_collector.cc
+++ b/chrome/browser/chromeos/power/cpu_data_collector.cc
@@ -458,7 +458,7 @@
       new std::vector<StateOccupancySample>;
 
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&SampleCpuStateAsync, base::Unretained(cpu_count),
                  base::Unretained(cpu_idle_state_names),
                  base::Unretained(idle_samples),
diff --git a/chrome/browser/chromeos/power/freezer_cgroup_process_manager.cc b/chrome/browser/chromeos/power/freezer_cgroup_process_manager.cc
index 8db6576..2082ef08 100644
--- a/chrome/browser/chromeos/power/freezer_cgroup_process_manager.cc
+++ b/chrome/browser/chromeos/power/freezer_cgroup_process_manager.cc
@@ -157,7 +157,7 @@
 
 FreezerCgroupProcessManager::FreezerCgroupProcessManager()
     : file_thread_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::TaskPriority::BACKGROUND, base::MayBlock()})),
+          {base::TaskPriority::BEST_EFFORT, base::MayBlock()})),
       file_worker_(new FileWorker(file_thread_)) {
   file_thread_->PostTask(FROM_HERE,
                          base::Bind(&FileWorker::Start,
diff --git a/chrome/browser/chromeos/printing/cups_print_job_manager_impl.cc b/chrome/browser/chromeos/printing/cups_print_job_manager_impl.cc
index 2a8863c..dc894dc 100644
--- a/chrome/browser/chromeos/printing/cups_print_job_manager_impl.cc
+++ b/chrome/browser/chromeos/printing/cups_print_job_manager_impl.cc
@@ -254,7 +254,7 @@
   explicit CupsPrintJobManagerImpl(Profile* profile)
       : CupsPrintJobManager(profile),
         query_runner_(base::CreateSequencedTaskRunnerWithTraits(
-            base::TaskTraits(base::TaskPriority::BACKGROUND,
+            base::TaskTraits(base::TaskPriority::BEST_EFFORT,
                              base::MayBlock(),
                              base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN))),
         cups_wrapper_(new CupsWrapper(),
diff --git a/chrome/browser/chromeos/printing/external_printers.cc b/chrome/browser/chromeos/printing/external_printers.cc
index 76e7a72..c49ab0e 100644
--- a/chrome/browser/chromeos/printing/external_printers.cc
+++ b/chrome/browser/chromeos/printing/external_printers.cc
@@ -212,7 +212,7 @@
   ExternalPrintersImpl()
       : restrictions_(std::make_unique<Restrictions>()),
         restrictions_runner_(base::CreateSequencedTaskRunnerWithTraits(
-            {base::TaskPriority::BACKGROUND, base::MayBlock(),
+            {base::TaskPriority::BEST_EFFORT, base::MayBlock(),
              base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
         weak_ptr_factory_(this) {}
   ~ExternalPrintersImpl() override {
diff --git a/chrome/browser/chromeos/settings/session_manager_operation.cc b/chrome/browser/chromeos/settings/session_manager_operation.cc
index a7ca535..2d9f0a5 100644
--- a/chrome/browser/chromeos/settings/session_manager_operation.cc
+++ b/chrome/browser/chromeos/settings/session_manager_operation.cc
@@ -92,7 +92,7 @@
   if (force_key_load_ || !public_key_ || !public_key_->is_loaded()) {
     scoped_refptr<base::TaskRunner> task_runner =
         base::CreateTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
     base::PostTaskAndReplyWithResult(
         task_runner.get(), FROM_HERE,
diff --git a/chrome/browser/chromeos/system/automatic_reboot_manager.cc b/chrome/browser/chromeos/system/automatic_reboot_manager.cc
index fb4786d..cd459a81 100644
--- a/chrome/browser/chromeos/system/automatic_reboot_manager.cc
+++ b/chrome/browser/chromeos/system/automatic_reboot_manager.cc
@@ -225,7 +225,7 @@
   }
 
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                             base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
                            base::Bind(&SaveUpdateRebootNeededUptime));
 
diff --git a/chrome/browser/chromeos/system_logs/command_line_log_source.cc b/chrome/browser/chromeos/system_logs/command_line_log_source.cc
index d4434e7..1697e8a 100644
--- a/chrome/browser/chromeos/system_logs/command_line_log_source.cc
+++ b/chrome/browser/chromeos/system_logs/command_line_log_source.cc
@@ -105,7 +105,7 @@
   auto response = std::make_unique<SystemLogsResponse>();
   SystemLogsResponse* response_ptr = response.get();
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&ExecuteCommandLines, response_ptr),
       base::BindOnce(std::move(callback), std::move(response)));
 }
diff --git a/chrome/browser/chromeos/system_logs/debug_daemon_log_source.cc b/chrome/browser/chromeos/system_logs/debug_daemon_log_source.cc
index 6b272e4..0a28ec47 100644
--- a/chrome/browser/chromeos/system_logs/debug_daemon_log_source.cc
+++ b/chrome/browser/chromeos/system_logs/debug_daemon_log_source.cc
@@ -144,7 +144,7 @@
     }
 
     base::PostTaskWithTraitsAndReply(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(&DebugDaemonLogSource::ReadUserLogFiles, user_log_files,
                        profile_dirs, response_ptr),
         base::BindOnce(&DebugDaemonLogSource::MergeUserLogFilesResponse,
diff --git a/chrome/browser/chromeos/system_logs/debug_log_writer.cc b/chrome/browser/chromeos/system_logs/debug_log_writer.cc
index 4829dfd..1827f80 100644
--- a/chrome/browser/chromeos/system_logs/debug_log_writer.cc
+++ b/chrome/browser/chromeos/system_logs/debug_log_writer.cc
@@ -36,7 +36,7 @@
 base::LazySequencedTaskRunner g_sequenced_task_runner =
     LAZY_SEQUENCED_TASK_RUNNER_INITIALIZER(
         base::TaskTraits(base::MayBlock(),
-                         base::TaskPriority::BACKGROUND,
+                         base::TaskPriority::BEST_EFFORT,
                          base::TaskShutdownBehavior::BLOCK_SHUTDOWN));
 
 // Called upon completion of |WriteDebugLogToFile|. Closes file
@@ -193,7 +193,7 @@
       logging::GetSessionLogDir(*base::CommandLine::ForCurrentProcess());
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&AddUserLogsToArchive, user_log_dir, tar_file_path,
                  compressed_output_path, callback));
 }
diff --git a/chrome/browser/chromeos/system_logs/iwlwifi_dump_log_source.cc b/chrome/browser/chromeos/system_logs/iwlwifi_dump_log_source.cc
index 36a45a9..acef3eb7 100644
--- a/chrome/browser/chromeos/system_logs/iwlwifi_dump_log_source.cc
+++ b/chrome/browser/chromeos/system_logs/iwlwifi_dump_log_source.cc
@@ -48,7 +48,7 @@
 
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      base::TaskTraits(base::MayBlock(), base::TaskPriority::BACKGROUND),
+      base::TaskTraits(base::MayBlock(), base::TaskPriority::BEST_EFFORT),
       base::BindOnce(&CheckExistenceOnBlockingTaskRunner),
       base::BindOnce(std::move(callback)));
 }
@@ -64,7 +64,7 @@
 
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      base::TaskTraits(base::MayBlock(), base::TaskPriority::BACKGROUND),
+      base::TaskTraits(base::MayBlock(), base::TaskPriority::BEST_EFFORT),
       base::BindOnce(&ReadDumpOnBlockingTaskRunner),
       base::BindOnce(std::move(callback)));
 }
diff --git a/chrome/browser/chromeos/system_logs/single_log_file_log_source.cc b/chrome/browser/chromeos/system_logs/single_log_file_log_source.cc
index 1f5186c..4f5901c 100644
--- a/chrome/browser/chromeos/system_logs/single_log_file_log_source.cc
+++ b/chrome/browser/chromeos/system_logs/single_log_file_log_source.cc
@@ -101,7 +101,7 @@
   auto* response_ptr = response.get();
   base::PostTaskWithTraitsAndReply(
       FROM_HERE,
-      base::TaskTraits(base::MayBlock(), base::TaskPriority::BACKGROUND),
+      base::TaskTraits(base::MayBlock(), base::TaskPriority::BEST_EFFORT),
       base::BindOnce(&SingleLogFileLogSource::ReadFile,
                      weak_ptr_factory_.GetWeakPtr(),
                      kMaxNumAllowedLogRotationsDuringFileRead, response_ptr),
diff --git a/chrome/browser/chromeos/system_logs/touch_log_source.cc b/chrome/browser/chromeos/system_logs/touch_log_source.cc
index e47ed38..8fcddb4 100644
--- a/chrome/browser/chromeos/system_logs/touch_log_source.cc
+++ b/chrome/browser/chromeos/system_logs/touch_log_source.cc
@@ -127,7 +127,7 @@
 
   // Cleanup these temporary log files.
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                            base::Bind(CleanupEventLog, log_paths));
 }
 
@@ -142,7 +142,7 @@
 
   system_logs::SystemLogsResponse* response_ptr = response.get();
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&PackEventLog, response_ptr, log_paths),
       base::BindOnce(std::move(callback), std::move(response)));
 }
diff --git a/chrome/browser/component_updater/component_patcher_operation_browsertest.cc b/chrome/browser/component_updater/component_patcher_operation_browsertest.cc
index 38bf0ad..766be64 100644
--- a/chrome/browser/component_updater/component_patcher_operation_browsertest.cc
+++ b/chrome/browser/component_updater/component_patcher_operation_browsertest.cc
@@ -28,7 +28,7 @@
 namespace {
 
 constexpr base::TaskTraits kTaskTraits = {
-    base::MayBlock(), base::TaskPriority::BACKGROUND,
+    base::MayBlock(), base::TaskPriority::BEST_EFFORT,
     base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN};
 
 }  // namespace
diff --git a/chrome/browser/component_updater/crl_set_component_installer.cc b/chrome/browser/component_updater/crl_set_component_installer.cc
index 9a03c68..ce3618c 100644
--- a/chrome/browser/component_updater/crl_set_component_installer.cc
+++ b/chrome/browser/component_updater/crl_set_component_installer.cc
@@ -98,7 +98,7 @@
     const base::FilePath& install_dir,
     std::unique_ptr<base::DictionaryValue> manifest) {
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&LoadCRLSet,
                      install_dir.Append(FILE_PATH_LITERAL("crl-set"))));
 }
diff --git a/chrome/browser/component_updater/file_type_policies_component_installer.cc b/chrome/browser/component_updater/file_type_policies_component_installer.cc
index fa86348..43c6d21 100644
--- a/chrome/browser/component_updater/file_type_policies_component_installer.cc
+++ b/chrome/browser/component_updater/file_type_policies_component_installer.cc
@@ -90,7 +90,7 @@
           << install_dir.value();
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&LoadFileTypesFromDisk, GetInstalledPath(install_dir)));
 }
 
diff --git a/chrome/browser/component_updater/mei_preload_component_installer.cc b/chrome/browser/component_updater/mei_preload_component_installer.cc
index dca505f..2d36593 100644
--- a/chrome/browser/component_updater/mei_preload_component_installer.cc
+++ b/chrome/browser/component_updater/mei_preload_component_installer.cc
@@ -83,7 +83,7 @@
     const base::FilePath& install_dir,
     std::unique_ptr<base::DictionaryValue> manifest) {
   base::TaskTraits task_traits = {
-      base::MayBlock(), base::TaskPriority::BACKGROUND,
+      base::MayBlock(), base::TaskPriority::BEST_EFFORT,
       base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN};
   base::OnceClosure task =
       base::BindOnce(&LoadPreloadedDataFromDisk, GetInstalledPath(install_dir));
diff --git a/chrome/browser/component_updater/pepper_flash_component_installer.cc b/chrome/browser/component_updater/pepper_flash_component_installer.cc
index 2a5b333..5d3d4675 100644
--- a/chrome/browser/component_updater/pepper_flash_component_installer.cc
+++ b/chrome/browser/component_updater/pepper_flash_component_installer.cc
@@ -322,7 +322,7 @@
   RegisterPepperFlashWithChrome(path.Append(chrome::kPepperFlashPluginFilename),
                                 version);
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::TaskPriority::BACKGROUND, base::MayBlock()},
+                           {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
                            base::BindOnce(&UpdatePathService, path));
 #endif  // !defined(OS_LINUX)
 }
diff --git a/chrome/browser/component_updater/pnacl_component_installer.cc b/chrome/browser/component_updater/pnacl_component_installer.cc
index b1a1774..4b5c682 100644
--- a/chrome/browser/component_updater/pnacl_component_installer.cc
+++ b/chrome/browser/component_updater/pnacl_component_installer.cc
@@ -228,7 +228,7 @@
     std::unique_ptr<base::DictionaryValue> manifest) {
   CheckVersionCompatiblity(version);
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&OverrideDirPnaclComponent, install_dir));
 }
 
diff --git a/chrome/browser/component_updater/recovery_component_installer.cc b/chrome/browser/component_updater/recovery_component_installer.cc
index 61b0023..3a0e55ef 100644
--- a/chrome/browser/component_updater/recovery_component_installer.cc
+++ b/chrome/browser/component_updater/recovery_component_installer.cc
@@ -230,7 +230,7 @@
   // This task joins a process, hence .WithBaseSyncPrimitives().
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::WithBaseSyncPrimitives(), base::TaskPriority::BACKGROUND,
+      {base::WithBaseSyncPrimitives(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&WaitForElevatedInstallToComplete,
                      base::Passed(&process)));
@@ -239,7 +239,7 @@
 void ElevatedInstallRecoveryComponent(const base::FilePath& installer_path) {
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&DoElevatedInstallRecoveryComponent, installer_path));
 }
@@ -371,7 +371,7 @@
   // This task joins a process, hence .WithBaseSyncPrimitives().
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::WithBaseSyncPrimitives(), base::TaskPriority::BACKGROUND,
+      {base::WithBaseSyncPrimitives(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&WaitForInstallToComplete, base::Passed(&process),
                      installer_folder, prefs_));
diff --git a/chrome/browser/component_updater/ssl_error_assistant_component_installer.cc b/chrome/browser/component_updater/ssl_error_assistant_component_installer.cc
index 4fb404f..44a594c 100644
--- a/chrome/browser/component_updater/ssl_error_assistant_component_installer.cc
+++ b/chrome/browser/component_updater/ssl_error_assistant_component_installer.cc
@@ -87,7 +87,7 @@
            << install_dir.value();
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&LoadProtoFromDisk, GetInstalledPath(install_dir)));
 }
 
diff --git a/chrome/browser/component_updater/sth_set_component_installer.cc b/chrome/browser/component_updater/sth_set_component_installer.cc
index 962ae51..3a5bdb3 100644
--- a/chrome/browser/component_updater/sth_set_component_installer.cc
+++ b/chrome/browser/component_updater/sth_set_component_installer.cc
@@ -179,7 +179,7 @@
   // parsed results.
   auto background_runner = base::MakeRefCounted<AfterStartupTaskUtils::Runner>(
       base::CreateTaskRunnerWithTraits(
-          {base::TaskPriority::BACKGROUND, base::MayBlock()}));
+          {base::TaskPriority::BEST_EFFORT, base::MayBlock()}));
   background_runner->PostTask(
       FROM_HERE,
       base::BindOnce(
diff --git a/chrome/browser/component_updater/supervised_user_whitelist_installer.cc b/chrome/browser/component_updater/supervised_user_whitelist_installer.cc
index 88877b2..8953cd7 100644
--- a/chrome/browser/component_updater/supervised_user_whitelist_installer.cc
+++ b/chrome/browser/component_updater/supervised_user_whitelist_installer.cc
@@ -67,7 +67,7 @@
 const char kExtensionLargeIcon[] = "128";
 
 constexpr base::TaskTraits kTaskTraits = {
-    base::MayBlock(), base::TaskPriority::BACKGROUND,
+    base::MayBlock(), base::TaskPriority::BEST_EFFORT,
     base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN};
 
 base::string16 GetWhitelistTitle(const base::DictionaryValue& manifest) {
diff --git a/chrome/browser/component_updater/widevine_cdm_component_installer.cc b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
index 3d9aa405..bf5336f 100644
--- a/chrome/browser/component_updater/widevine_cdm_component_installer.cc
+++ b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
@@ -445,7 +445,7 @@
   }
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&WidevineCdmComponentInstallerPolicy::UpdateCdmPath,
                      base::Unretained(this), version, path,
                      base::Passed(&manifest)));
diff --git a/chrome/browser/conflicts/enumerate_input_method_editors_win.cc b/chrome/browser/conflicts/enumerate_input_method_editors_win.cc
index c441c8a5..2901803 100644
--- a/chrome/browser/conflicts/enumerate_input_method_editors_win.cc
+++ b/chrome/browser/conflicts/enumerate_input_method_editors_win.cc
@@ -118,7 +118,7 @@
                                  base::OnceClosure on_enumeration_finished) {
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&EnumerateImesOnBlockingSequence,
                      base::SequencedTaskRunnerHandle::Get(),
diff --git a/chrome/browser/conflicts/enumerate_shell_extensions_win.cc b/chrome/browser/conflicts/enumerate_shell_extensions_win.cc
index 7ab0e7e..bbbd705 100644
--- a/chrome/browser/conflicts/enumerate_shell_extensions_win.cc
+++ b/chrome/browser/conflicts/enumerate_shell_extensions_win.cc
@@ -81,7 +81,7 @@
     base::OnceClosure on_enumeration_finished) {
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&EnumerateShellExtensionsOnBlockingSequence,
                      base::SequencedTaskRunnerHandle::Get(),
diff --git a/chrome/browser/conflicts/module_blacklist_cache_updater_win.cc b/chrome/browser/conflicts/module_blacklist_cache_updater_win.cc
index 28fdfc3..8fbd61a 100644
--- a/chrome/browser/conflicts/module_blacklist_cache_updater_win.cc
+++ b/chrome/browser/conflicts/module_blacklist_cache_updater_win.cc
@@ -162,7 +162,7 @@
       module_list_filter_(std::move(module_list_filter)),
       on_cache_updated_callback_(std::move(on_cache_updated_callback)),
       background_sequence_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})),
       weak_ptr_factory_(this) {
   DCHECK(module_list_filter_);
diff --git a/chrome/browser/conflicts/module_event_sink_impl_win.cc b/chrome/browser/conflicts/module_event_sink_impl_win.cc
index ea0d883..f71da9a 100644
--- a/chrome/browser/conflicts/module_event_sink_impl_win.cc
+++ b/chrome/browser/conflicts/module_event_sink_impl_win.cc
@@ -166,7 +166,7 @@
   // Handle the event on a background sequence.
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::TaskPriority::BACKGROUND,
+      {base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN, base::MayBlock()},
       base::BindOnce(&HandleModuleEvent, module_database_, process_.Duplicate(),
                      process_type_, event_type, load_address));
diff --git a/chrome/browser/conflicts/module_inspector_win.cc b/chrome/browser/conflicts/module_inspector_win.cc
index ff026e4..c4acb61a 100644
--- a/chrome/browser/conflicts/module_inspector_win.cc
+++ b/chrome/browser/conflicts/module_inspector_win.cc
@@ -46,7 +46,7 @@
     const OnModuleInspectedCallback& on_module_inspected_callback)
     : on_module_inspected_callback_(on_module_inspected_callback),
       task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})),
       path_mapping_(base::MakeRefCounted<base::RefCountedData<StringMapping>>(
           GetPathMapping())),
diff --git a/chrome/browser/conflicts/module_load_attempt_log_listener_win.cc b/chrome/browser/conflicts/module_load_attempt_log_listener_win.cc
index 9d26544..e0e2230f 100644
--- a/chrome/browser/conflicts/module_load_attempt_log_listener_win.cc
+++ b/chrome/browser/conflicts/module_load_attempt_log_listener_win.cc
@@ -72,7 +72,7 @@
     OnModuleBlockedCallback on_module_blocked_callback)
     : on_module_blocked_callback_(std::move(on_module_blocked_callback)),
       background_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::TaskPriority::BACKGROUND,
+          {base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
            base::MayBlock()})),
       // The event starts signaled so that the logs are drained once when the
diff --git a/chrome/browser/conflicts/third_party_conflicts_manager_win.cc b/chrome/browser/conflicts/third_party_conflicts_manager_win.cc
index 0672df8..8e2537f7 100644
--- a/chrome/browser/conflicts/third_party_conflicts_manager_win.cc
+++ b/chrome/browser/conflicts/third_party_conflicts_manager_win.cc
@@ -60,7 +60,7 @@
     ModuleDatabaseEventSource* module_database_event_source)
     : module_database_event_source_(module_database_event_source),
       background_sequence_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::TaskPriority::BACKGROUND,
+          {base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
            base::MayBlock()})),
       module_list_received_(false),
diff --git a/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc b/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc
index 854b728..a15c8cd 100644
--- a/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc
+++ b/chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc
@@ -42,7 +42,7 @@
 CrashUploadListCrashpad::~CrashUploadListCrashpad() = default;
 
 base::TaskTraits CrashUploadListCrashpad::LoadingTaskTraits() {
-  return {base::MayBlock(), base::TaskPriority::BACKGROUND,
+  return {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
           base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN};
 }
 
diff --git a/chrome/browser/data_use_measurement/page_load_capping/page_load_capping_service.cc b/chrome/browser/data_use_measurement/page_load_capping/page_load_capping_service.cc
index 5035aa72..1752889e 100644
--- a/chrome/browser/data_use_measurement/page_load_capping/page_load_capping_service.cc
+++ b/chrome/browser/data_use_measurement/page_load_capping/page_load_capping_service.cc
@@ -40,7 +40,7 @@
     // Get the background thread to run SQLite on.
     scoped_refptr<base::SequencedTaskRunner> background_task_runner =
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND});
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
     opt_out_store = std::make_unique<blacklist::OptOutStoreSQL>(
         content::BrowserThread::GetTaskRunnerForThread(
diff --git a/chrome/browser/devtools/device/android_device_manager.cc b/chrome/browser/devtools/device/android_device_manager.cc
index 6f1d605..230d7c1 100644
--- a/chrome/browser/devtools/device/android_device_manager.cc
+++ b/chrome/browser/devtools/device/android_device_manager.cc
@@ -534,7 +534,7 @@
     return;
   // Shut down thread on a thread other than UI so it can join a thread.
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                            base::BindOnce(&HandlerThread::StopThread, thread_));
 }
 
diff --git a/chrome/browser/devtools/devtools_file_system_indexer.cc b/chrome/browser/devtools/devtools_file_system_indexer.cc
index 24e0ba7..80dd111 100644
--- a/chrome/browser/devtools/devtools_file_system_indexer.cc
+++ b/chrome/browser/devtools/devtools_file_system_indexer.cc
@@ -41,8 +41,8 @@
 using std::set;
 
 base::SequencedTaskRunner* impl_task_runner() {
-  constexpr base::TaskTraits kBlockingTraits = {base::MayBlock(),
-                                                base::TaskPriority::BACKGROUND};
+  constexpr base::TaskTraits kBlockingTraits = {
+      base::MayBlock(), base::TaskPriority::BEST_EFFORT};
   static base::LazySequencedTaskRunner s_sequenced_task_task_runner =
       LAZY_SEQUENCED_TASK_RUNNER_INITIALIZER(kBlockingTraits);
   return s_sequenced_task_task_runner.Get().get();
diff --git a/chrome/browser/devtools/devtools_file_watcher.cc b/chrome/browser/devtools/devtools_file_watcher.cc
index beb0c8f..82504e2 100644
--- a/chrome/browser/devtools/devtools_file_watcher.cc
+++ b/chrome/browser/devtools/devtools_file_watcher.cc
@@ -185,8 +185,8 @@
 
 namespace {
 base::SequencedTaskRunner* impl_task_runner() {
-  constexpr base::TaskTraits kImplTaskTraits = {base::MayBlock(),
-                                                base::TaskPriority::BACKGROUND};
+  constexpr base::TaskTraits kImplTaskTraits = {
+      base::MayBlock(), base::TaskPriority::BEST_EFFORT};
   static base::LazySequencedTaskRunner s_file_task_runner =
       LAZY_SEQUENCED_TASK_RUNNER_INITIALIZER(kImplTaskTraits);
 
diff --git a/chrome/browser/dom_distiller/dom_distiller_service_factory.cc b/chrome/browser/dom_distiller/dom_distiller_service_factory.cc
index 7c13015..d5c12a36 100644
--- a/chrome/browser/dom_distiller/dom_distiller_service_factory.cc
+++ b/chrome/browser/dom_distiller/dom_distiller_service_factory.cc
@@ -57,7 +57,7 @@
     content::BrowserContext* profile) const {
   scoped_refptr<base::SequencedTaskRunner> background_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
   std::unique_ptr<leveldb_proto::ProtoDatabaseImpl<ArticleEntry>> db(
       new leveldb_proto::ProtoDatabaseImpl<ArticleEntry>(
diff --git a/chrome/browser/downgrade/user_data_downgrade.cc b/chrome/browser/downgrade/user_data_downgrade.cc
index 9643ecb..a3bd4e5 100644
--- a/chrome/browser/downgrade/user_data_downgrade.cc
+++ b/chrome/browser/downgrade/user_data_downgrade.cc
@@ -166,7 +166,7 @@
   content::BrowserThread::PostAfterStartupTask(
       FROM_HERE,
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}),
       base::Bind(&DeleteMovedUserData, user_data_dir, GetDiskCacheDir()));
 }
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
index 307ee73..a91f001 100644
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
@@ -298,7 +298,7 @@
       next_download_id_(download::DownloadItem::kInvalidId),
       download_prefs_(new DownloadPrefs(profile)),
       disk_access_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})),
       weak_ptr_factory_(this) {
 #if defined(OS_ANDROID)
diff --git a/chrome/browser/download/download_commands.cc b/chrome/browser/download/download_commands.cc
index 3a64f792..3287104 100644
--- a/chrome/browser/download/download_commands.cc
+++ b/chrome/browser/download/download_commands.cc
@@ -443,7 +443,7 @@
 
   if (!task_runner_) {
     task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   }
   ImageClipboardCopyManager::Start(file_path, task_runner_.get());
diff --git a/chrome/browser/download/download_service_factory.cc b/chrome/browser/download/download_service_factory.cc
index 536d9790..23075528 100644
--- a/chrome/browser/download/download_service_factory.cc
+++ b/chrome/browser/download/download_service_factory.cc
@@ -96,7 +96,7 @@
     }
     scoped_refptr<base::SequencedTaskRunner> background_task_runner =
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND});
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
     std::unique_ptr<download::TaskScheduler> task_scheduler;
 #if defined(OS_ANDROID)
diff --git a/chrome/browser/download/notification/download_item_notification.cc b/chrome/browser/download/notification/download_item_notification.cc
index ae605440..ab57e58 100644
--- a/chrome/browser/download/notification/download_item_notification.cc
+++ b/chrome/browser/download/notification/download_item_notification.cc
@@ -447,7 +447,7 @@
     if (model.HasSupportedImageMimeType()) {
       base::FilePath file_path = item_->GetFullPath();
       base::PostTaskWithTraitsAndReplyWithResult(
-          FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+          FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
           base::Bind(&ReadNotificationImage, file_path),
           base::Bind(&DownloadItemNotification::OnImageLoaded,
                      weak_factory_.GetWeakPtr()));
@@ -499,7 +499,7 @@
   }
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&CropImage, decoded_bitmap),
       base::Bind(&DownloadItemNotification::OnImageCropped,
                  weak_factory_.GetWeakPtr()));
diff --git a/chrome/browser/extensions/activity_log/activity_log_task_runner.cc b/chrome/browser/extensions/activity_log/activity_log_task_runner.cc
index cd5d6e5..761589d 100644
--- a/chrome/browser/extensions/activity_log/activity_log_task_runner.cc
+++ b/chrome/browser/extensions/activity_log/activity_log_task_runner.cc
@@ -16,7 +16,7 @@
 
 base::LazySingleThreadTaskRunner g_task_runner =
     LAZY_SINGLE_THREAD_TASK_RUNNER_INITIALIZER(
-        base::TaskTraits({base::MayBlock(), base::TaskPriority::BACKGROUND}),
+        base::TaskTraits({base::MayBlock(), base::TaskPriority::BEST_EFFORT}),
         base::SingleThreadTaskRunnerThreadMode::SHARED);
 
 }  // namespace
diff --git a/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc b/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc
index c79d699..8d4a5f6f 100644
--- a/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc
+++ b/chrome/browser/extensions/api/image_writer_private/write_from_url_operation_unittest.cc
@@ -99,7 +99,7 @@
     get_interceptor_.reset(new GetInterceptor(
         BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
         base::CreateTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})));
     get_interceptor_->SetResponse(GURL(kTestImageUrl),
                                   test_utils_.GetImagePath());
diff --git a/chrome/browser/extensions/api/management/management_browsertest.cc b/chrome/browser/extensions/api/management/management_browsertest.cc
index 870c2eb7..b5500c5 100644
--- a/chrome/browser/extensions/api/management/management_browsertest.cc
+++ b/chrome/browser/extensions/api/management/management_browsertest.cc
@@ -347,7 +347,7 @@
   net::LocalHostTestURLRequestInterceptor interceptor(
       BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 
   interceptor.SetResponseIgnoreQuery(
@@ -451,7 +451,7 @@
   net::LocalHostTestURLRequestInterceptor interceptor(
       BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 
   interceptor.SetResponseIgnoreQuery(
@@ -527,7 +527,7 @@
   net::LocalHostTestURLRequestInterceptor interceptor(
       BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 
   interceptor.SetResponseIgnoreQuery(
@@ -634,7 +634,7 @@
   net::LocalHostTestURLRequestInterceptor interceptor(
       BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 
   interceptor.SetResponseIgnoreQuery(
@@ -726,7 +726,7 @@
   net::LocalHostTestURLRequestInterceptor interceptor(
       BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 
   interceptor.SetResponseIgnoreQuery(
diff --git a/chrome/browser/extensions/api/messaging/native_message_host_chromeos.cc b/chrome/browser/extensions/api/messaging/native_message_host_chromeos.cc
index 3c993270..3b24798 100644
--- a/chrome/browser/extensions/api/messaging/native_message_host_chromeos.cc
+++ b/chrome/browser/extensions/api/messaging/native_message_host_chromeos.cc
@@ -138,7 +138,7 @@
           content::BrowserThread::GetTaskRunnerForThread(
               content::BrowserThread::UI),
           base::CreateSingleThreadTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND}),
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT}),
           GetInputInjector());
   std::unique_ptr<remoting::PolicyWatcher> policy_watcher =
       remoting::PolicyWatcher::CreateWithPolicyService(
diff --git a/chrome/browser/extensions/api/messaging/native_message_process_host.cc b/chrome/browser/extensions/api/messaging/native_message_process_host.cc
index 9b8591d..8f3a56c 100644
--- a/chrome/browser/extensions/api/messaging/native_message_process_host.cc
+++ b/chrome/browser/extensions/api/messaging/native_message_process_host.cc
@@ -71,7 +71,7 @@
 // block, so we have to post a task on the blocking pool.
 #if defined(OS_MACOSX)
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(&base::EnsureProcessTerminated, Passed(&process_)));
 #else
     base::EnsureProcessTerminated(std::move(process_));
diff --git a/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc b/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc
index 9ab7402..31e12454 100644
--- a/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc
+++ b/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc
@@ -29,7 +29,7 @@
 
     done_called_ = false;
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(&NetworkingPrivateCredentialsGetterTest::GetCredentials,
                    base::Unretained(this)));
     run_loop.Run();
diff --git a/chrome/browser/extensions/api/processes/processes_api.cc b/chrome/browser/extensions/api/processes/processes_api.cc
index 1de2474..517c2595 100644
--- a/chrome/browser/extensions/api/processes/processes_api.cc
+++ b/chrome/browser/extensions/api/processes/processes_api.cc
@@ -520,7 +520,7 @@
 
   auto* host = content::BrowserChildProcessHost::FromID(child_process_host_id);
   if (host)
-    return host->GetData().handle;
+    return host->GetData().GetHandle();
 
   return base::kNullProcessHandle;
 }
diff --git a/chrome/browser/extensions/extension_disabled_ui_browsertest.cc b/chrome/browser/extensions/extension_disabled_ui_browsertest.cc
index e8350b4..f1443e9 100644
--- a/chrome/browser/extensions/extension_disabled_ui_browsertest.cc
+++ b/chrome/browser/extensions/extension_disabled_ui_browsertest.cc
@@ -233,7 +233,7 @@
   net::LocalHostTestURLRequestInterceptor interceptor(
       BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
   interceptor.SetResponseIgnoreQuery(
       GURL("http://localhost/autoupdate/updates.xml"),
@@ -274,7 +274,7 @@
   net::LocalHostTestURLRequestInterceptor interceptor(
       BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
   interceptor.SetResponseIgnoreQuery(
       GURL("http://localhost/autoupdate/updates.xml"),
diff --git a/chrome/browser/extensions/updater/extension_cache_impl.cc b/chrome/browser/extensions/updater/extension_cache_impl.cc
index bb13c514a..c1ccb95d 100644
--- a/chrome/browser/extensions/updater/extension_cache_impl.cc
+++ b/chrome/browser/extensions/updater/extension_cache_impl.cc
@@ -33,7 +33,7 @@
           delegate->GetMaximumCacheSize(),
           delegate->GetMaximumCacheAge(),
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND,
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}))),
       weak_ptr_factory_(this) {
   notification_registrar_.Add(
diff --git a/chrome/browser/extensions/updater/extension_update_client_base_browsertest.cc b/chrome/browser/extensions/updater/extension_update_client_base_browsertest.cc
index d55c0e9..8c75659 100644
--- a/chrome/browser/extensions/updater/extension_update_client_base_browsertest.cc
+++ b/chrome/browser/extensions/updater/extension_update_client_base_browsertest.cc
@@ -182,7 +182,7 @@
 
   get_interceptor_ = std::make_unique<net::LocalHostTestURLRequestInterceptor>(
       io_thread, base::CreateTaskRunnerWithTraits(
-                     {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                     {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                       base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 }
 
diff --git a/chrome/browser/feature_engagement/tracker_factory.cc b/chrome/browser/feature_engagement/tracker_factory.cc
index 7f7b9ec9..f7008b5 100644
--- a/chrome/browser/feature_engagement/tracker_factory.cc
+++ b/chrome/browser/feature_engagement/tracker_factory.cc
@@ -43,7 +43,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> background_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
   base::FilePath storage_dir = profile->GetPath().Append(
       chrome::kFeatureEngagementTrackerStorageDirname);
diff --git a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc
index 25f26dd..327117d 100644
--- a/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc
+++ b/chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc
@@ -212,7 +212,7 @@
              SysLogsSourceCallback callback) {
             SystemLogsResponse* response_ptr = response.get();
             base::PostTaskWithTraitsAndReply(
-                FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                 base::BindOnce(&PopulateEntriesAsync, response_ptr),
                 base::BindOnce(std::move(callback), std::move(response)));
           },
diff --git a/chrome/browser/file_select_helper.cc b/chrome/browser/file_select_helper.cc
index 91dc891a..995aa2e 100644
--- a/chrome/browser/file_select_helper.cc
+++ b/chrome/browser/file_select_helper.cc
@@ -350,7 +350,7 @@
 void FileSelectHelper::DeleteTemporaryFiles() {
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
       base::BindOnce(&DeleteFiles, std::move(temporary_files_)));
 }
diff --git a/chrome/browser/first_run/first_run_internal_win.cc b/chrome/browser/first_run/first_run_internal_win.cc
index ef08159e..4f3721a 100644
--- a/chrome/browser/first_run/first_run_internal_win.cc
+++ b/chrome/browser/first_run/first_run_internal_win.cc
@@ -112,7 +112,7 @@
     content::BrowserThread::PostAfterStartupTask(
         FROM_HERE,
         base::CreateTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}),
         base::BindOnce(&InstallUtil::TriggerActiveSetupCommand));
   }
diff --git a/chrome/browser/gcm/gcm_profile_service_factory.cc b/chrome/browser/gcm/gcm_profile_service_factory.cc
index e798b799f..4cc90a04 100644
--- a/chrome/browser/gcm/gcm_profile_service_factory.cc
+++ b/chrome/browser/gcm/gcm_profile_service_factory.cc
@@ -108,7 +108,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> blocking_task_runner(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
   std::unique_ptr<GCMProfileService> service = nullptr;
 #if defined(OS_ANDROID)
diff --git a/chrome/browser/google/google_brand_chromeos.cc b/chrome/browser/google/google_brand_chromeos.cc
index bbe53db2..09aa89e4 100644
--- a/chrome/browser/google/google_brand_chromeos.cc
+++ b/chrome/browser/google/google_brand_chromeos.cc
@@ -76,7 +76,7 @@
 
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&ReadBrandFromFile), base::Bind(&SetBrand, callback));
 }
diff --git a/chrome/browser/image_decoder_browsertest.cc b/chrome/browser/image_decoder_browsertest.cc
index a66d5bde..cdc3a41 100644
--- a/chrome/browser/image_decoder_browsertest.cc
+++ b/chrome/browser/image_decoder_browsertest.cc
@@ -118,13 +118,12 @@
   void BrowserChildProcessHostConnected(
       const content::ChildProcessData& data) override {
     DCHECK_CURRENTLY_ON(BrowserThread::UI);
-    if (data.handle == base::kNullProcessHandle ||
-        data.name != utility_process_name_) {
+    if (!data.IsHandleValid() || data.name != utility_process_name_) {
       return;
     }
 
     ASSERT_FALSE(did_kill_);
-    base::ProcessHandle handle = data.handle;
+    base::ProcessHandle handle = data.GetHandle();
 
 #if defined(OS_WIN)
     // On windows, duplicate the process handle since base::Process closes it on
diff --git a/chrome/browser/lifetime/browser_shutdown.cc b/chrome/browser/lifetime/browser_shutdown.cc
index 17d4ad0..5ddcac2 100644
--- a/chrome/browser/lifetime/browser_shutdown.cc
+++ b/chrome/browser/lifetime/browser_shutdown.cc
@@ -335,7 +335,7 @@
 
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
       base::BindOnce(&ReadLastShutdownFile, type, num_procs, num_procs_slow));
 }
diff --git a/chrome/browser/local_discovery/service_discovery_client_mdns.cc b/chrome/browser/local_discovery/service_discovery_client_mdns.cc
index adc597e..d75ecd42 100644
--- a/chrome/browser/local_discovery/service_discovery_client_mdns.cc
+++ b/chrome/browser/local_discovery/service_discovery_client_mdns.cc
@@ -408,7 +408,7 @@
   mdns_ = net::MDnsClient::CreateDefault();
   client_ = std::make_unique<ServiceDiscoveryClientImpl>(mdns_.get());
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&net::GetMDnsInterfacesToBind),
       base::BindOnce(&ServiceDiscoveryClientMdns::OnInterfaceListReady,
                      weak_ptr_factory_.GetWeakPtr()));
diff --git a/chrome/browser/local_discovery/service_discovery_shared_client.cc b/chrome/browser/local_discovery/service_discovery_shared_client.cc
index 88561686..0b8f986e 100644
--- a/chrome/browser/local_discovery/service_discovery_shared_client.cc
+++ b/chrome/browser/local_discovery/service_discovery_shared_client.cc
@@ -81,7 +81,7 @@
   if (!is_firewall_state_reported) {
     is_firewall_state_reported = true;
     auto task_runner = base::CreateCOMSTATaskRunnerWithTraits(
-        {base::TaskPriority::BACKGROUND, base::MayBlock()});
+        {base::TaskPriority::BEST_EFFORT, base::MayBlock()});
     task_runner->PostTask(FROM_HERE, base::BindOnce(&ReportFirewallStats));
   }
 #endif  // defined(OS_WIN)
diff --git a/chrome/browser/mac/keystone_glue.mm b/chrome/browser/mac/keystone_glue.mm
index b55319fb..2fab488 100644
--- a/chrome/browser/mac/keystone_glue.mm
+++ b/chrome/browser/mac/keystone_glue.mm
@@ -85,7 +85,7 @@
 
     scoped_refptr<PerformBridge> op = new PerformBridge(target, sel, arg);
     base::PostTaskWithTraits(FROM_HERE,
-                             {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                             {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                               base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
                              base::Bind(&PerformBridge::Run, op.get()));
   }
diff --git a/chrome/browser/media/webrtc/audio_debug_recordings_handler.cc b/chrome/browser/media/webrtc/audio_debug_recordings_handler.cc
index bc9da52..4bb5a45 100644
--- a/chrome/browser/media/webrtc/audio_debug_recordings_handler.cc
+++ b/chrome/browser/media/webrtc/audio_debug_recordings_handler.cc
@@ -71,7 +71,7 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&GetLogDirectoryAndEnsureExists, browser_context_),
       base::BindOnce(&AudioDebugRecordingsHandler::DoStartAudioDebugRecordings,
                      this, host, delay, callback, error_callback));
@@ -84,7 +84,7 @@
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   const bool is_manual_stop = true;
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&GetLogDirectoryAndEnsureExists, browser_context_),
       base::BindOnce(&AudioDebugRecordingsHandler::DoStopAudioDebugRecordings,
                      this, host, is_manual_stop,
diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc b/chrome/browser/media/webrtc/webrtc_event_log_manager.cc
index 288f148..db43624 100644
--- a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc
+++ b/chrome/browser/media/webrtc/webrtc_event_log_manager.cc
@@ -91,7 +91,7 @@
       pc_tracker_proxy_(new PeerConnectionTrackerProxyImpl),
       first_browser_context_initializations_done_(false),
       task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
 
diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
index b647e53..2c6e375 100644
--- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc
+++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
@@ -84,7 +84,7 @@
 
 WebRtcLogUploader::WebRtcLogUploader()
     : background_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       log_count_(0),
       post_data_(NULL),
       shutting_down_(false) {}
diff --git a/chrome/browser/media/webrtc/webrtc_log_util.cc b/chrome/browser/media/webrtc/webrtc_log_util.cc
index 850474fb..e42aa15a 100644
--- a/chrome/browser/media/webrtc/webrtc_log_util.cc
+++ b/chrome/browser/media/webrtc/webrtc_log_util.cc
@@ -25,7 +25,7 @@
           GetAllProfilesAttributes();
   for (ProfileAttributesEntry* entry : entries) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(
             &webrtc_logging::DeleteOldWebRtcLogFiles,
             webrtc_logging::LogList::GetWebRtcLogDirectoryForBrowserContextPath(
diff --git a/chrome/browser/media/webrtc/webrtc_rtp_dump_handler.cc b/chrome/browser/media/webrtc/webrtc_rtp_dump_handler.cc
index a01cbdd4..bfdb4720 100644
--- a/chrome/browser/media/webrtc/webrtc_rtp_dump_handler.cc
+++ b/chrome/browser/media/webrtc/webrtc_rtp_dump_handler.cc
@@ -66,14 +66,14 @@
 
   if (incoming_state_ != STATE_NONE && !incoming_dump_path_.empty()) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                        incoming_dump_path_, false));
   }
 
   if (outgoing_state_ != STATE_NONE && !outgoing_dump_path_.empty()) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                        outgoing_dump_path_, false));
   }
@@ -298,7 +298,7 @@
 
     if (!incoming_success) {
       base::PostTaskWithTraits(
-          FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+          FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
           base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                          incoming_dump_path_, false));
 
@@ -314,7 +314,7 @@
 
     if (!outgoing_success) {
       base::PostTaskWithTraits(
-          FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+          FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
           base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                          outgoing_dump_path_, false));
 
diff --git a/chrome/browser/media/webrtc/webrtc_rtp_dump_writer.cc b/chrome/browser/media/webrtc/webrtc_rtp_dump_writer.cc
index 61b7b971..7eb9195 100644
--- a/chrome/browser/media/webrtc/webrtc_rtp_dump_writer.cc
+++ b/chrome/browser/media/webrtc/webrtc_rtp_dump_writer.cc
@@ -261,7 +261,7 @@
       max_dump_size_reached_callback_(max_dump_size_reached_callback),
       total_dump_size_on_disk_(0),
       background_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       incoming_file_thread_worker_(new FileWorker(incoming_dump_path)),
       outgoing_file_thread_worker_(new FileWorker(outgoing_dump_path)),
       weak_ptr_factory_(this) {}
diff --git a/chrome/browser/media/webrtc/webrtc_text_log_handler.cc b/chrome/browser/media/webrtc/webrtc_text_log_handler.cc
index 1b523f4..89aaf282 100644
--- a/chrome/browser/media/webrtc/webrtc_text_log_handler.cc
+++ b/chrome/browser/media/webrtc/webrtc_text_log_handler.cc
@@ -203,7 +203,7 @@
     meta_data_.reset(new MetaDataMap());
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&GetNetworkInterfaceList),
       base::BindOnce(&WebRtcTextLogHandler::LogInitialInfoOnIOThread, this,
                      callback));
diff --git a/chrome/browser/media_galleries/chromeos/mtp_device_delegate_impl_chromeos.cc b/chrome/browser/media_galleries/chromeos/mtp_device_delegate_impl_chromeos.cc
index 40cebf04..b70c17c 100644
--- a/chrome/browser/media_galleries/chromeos/mtp_device_delegate_impl_chromeos.cc
+++ b/chrome/browser/media_galleries/chromeos/mtp_device_delegate_impl_chromeos.cc
@@ -370,7 +370,7 @@
 // Deletes a temporary file |file_path|.
 void DeleteTemporaryFile(const base::FilePath& file_path) {
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                            base::Bind(base::IgnoreResult(base::DeleteFile),
                                       file_path, false /* not recursive*/));
 }
@@ -673,7 +673,7 @@
   // Create a temporary file for creating a copy of source file on local.
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       create_temporary_file_callback,
       base::Bind(
@@ -1529,7 +1529,7 @@
   }
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&OpenFileDescriptor, source_file_path, O_RDONLY),
       base::Bind(&MTPDeviceDelegateImplLinux::OnDidOpenFDToCopyFileFromLocal,
                  weak_ptr_factory_.GetWeakPtr(), device_file_path,
@@ -1760,7 +1760,7 @@
                                            source_file_descriptor);
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND}, closure);
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT}, closure);
 
   success_callback.Run();
   NotifyFileChange(file_path.DirName(),
@@ -1788,7 +1788,7 @@
                                            source_file_descriptor);
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND}, closure);
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT}, closure);
 
   error_callback.Run(error);
   PendingRequestDone();
diff --git a/chrome/browser/media_galleries/chromeos/mtp_read_file_worker.cc b/chrome/browser/media_galleries/chromeos/mtp_read_file_worker.cc
index 39755665e..33dc05c 100644
--- a/chrome/browser/media_galleries/chromeos/mtp_read_file_worker.cc
+++ b/chrome/browser/media_galleries/chromeos/mtp_read_file_worker.cc
@@ -93,7 +93,7 @@
   // |snapshot_file_details| in the same_line.
   SnapshotFileDetails* snapshot_file_details_ptr = snapshot_file_details.get();
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&WriteDataChunkIntoSnapshotFileOnFileThread,
                  snapshot_file_details_ptr->snapshot_file_path(), data),
       base::Bind(&MTPReadFileWorker::OnDidWriteDataChunkIntoSnapshotFile,
diff --git a/chrome/browser/media_galleries/gallery_watch_manager.cc b/chrome/browser/media_galleries/gallery_watch_manager.cc
index ecae7a1a..d8243c59 100644
--- a/chrome/browser/media_galleries/gallery_watch_manager.cc
+++ b/chrome/browser/media_galleries/gallery_watch_manager.cc
@@ -192,7 +192,7 @@
 GalleryWatchManager::GalleryWatchManager()
     : storage_monitor_observed_(false),
       watch_manager_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       weak_factory_(this) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   watch_manager_.reset(new FileWatchManager(base::Bind(
diff --git a/chrome/browser/memory_details.cc b/chrome/browser/memory_details.cc
index 6dd7385..4fd1022 100644
--- a/chrome/browser/memory_details.cc
+++ b/chrome/browser/memory_details.cc
@@ -197,9 +197,9 @@
   // the process is being launched, so we skip it.
   for (BrowserChildProcessHostIterator iter; !iter.Done(); ++iter) {
     ProcessMemoryInformation info;
-    if (!iter.GetData().handle)
+    if (!iter.GetData().GetHandle())
       continue;
-    info.pid = base::GetProcId(iter.GetData().handle);
+    info.pid = base::GetProcId(iter.GetData().GetHandle());
     if (!info.pid)
       continue;
 
@@ -212,7 +212,7 @@
   // Now go do expensive memory lookups in a thread pool.
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&MemoryDetails::CollectProcessData, this, child_info));
 }
diff --git a/chrome/browser/metrics/antivirus_metrics_provider_win.cc b/chrome/browser/metrics/antivirus_metrics_provider_win.cc
index 7f164fb..081004b 100644
--- a/chrome/browser/metrics/antivirus_metrics_provider_win.cc
+++ b/chrome/browser/metrics/antivirus_metrics_provider_win.cc
@@ -168,7 +168,7 @@
   // these requirements.
   base::PostTaskAndReplyWithResult(
       base::CreateCOMSTATaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})
           .get(),
       FROM_HERE,
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
index eb7f41d3..e455107 100644
--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
@@ -568,7 +568,7 @@
 #endif
 
   constexpr base::TaskTraits background_task_traits = {
-      base::MayBlock(), base::TaskPriority::BACKGROUND,
+      base::MayBlock(), base::TaskPriority::BEST_EFFORT,
       base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN};
 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
   base::PostTaskWithTraits(FROM_HERE, background_task_traits,
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index bbf327fafc..4a05da8 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -219,7 +219,7 @@
     // deleted in order to preserve user privacy.
     base::PostTaskWithTraits(
         FROM_HERE,
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
         base::BindOnce(base::IgnoreResult(&base::DeleteFile), metrics_file,
                        /*recursive=*/false));
@@ -273,7 +273,7 @@
       // deleted in order to preserve user privacy.
       base::PostTaskWithTraits(
           FROM_HERE,
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
           base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                          std::move(browser_metrics_upload_dir),
@@ -312,7 +312,7 @@
     } else {
       base::PostTaskWithTraits(
           FROM_HERE,
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
           base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                          std::move(notification_helper_metrics_upload_dir),
diff --git a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
index b525117..07d42787 100644
--- a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc
@@ -68,7 +68,7 @@
 // because it needs access to IO and cannot work from UI thread.
 void PostStoreMetricsClientInfo(const metrics::ClientInfo& client_info) {
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&GoogleUpdateSettings::StoreMetricsClientInfo,
                      client_info));
 }
diff --git a/chrome/browser/metrics/chromeos_metrics_provider.cc b/chrome/browser/metrics/chromeos_metrics_provider.cc
index b0746fb..3747814 100644
--- a/chrome/browser/metrics/chromeos_metrics_provider.cc
+++ b/chrome/browser/metrics/chromeos_metrics_provider.cc
@@ -176,7 +176,7 @@
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
       {base::MayBlock(), base::WithBaseSyncPrimitives(),
-       base::TaskPriority::BACKGROUND,
+       base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
       base::BindOnce(&GetFullHardwareClassOnBackgroundThread),
       base::BindOnce(&ChromeOSMetricsProvider::SetFullHardwareClass,
diff --git a/chrome/browser/metrics/google_update_metrics_provider_win.cc b/chrome/browser/metrics/google_update_metrics_provider_win.cc
index 9323561..5b37bd9 100644
--- a/chrome/browser/metrics/google_update_metrics_provider_win.cc
+++ b/chrome/browser/metrics/google_update_metrics_provider_win.cc
@@ -57,7 +57,7 @@
   // Schedules a task on a blocking pool thread to gather Google Update
   // statistics (requires Registry reads).
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&GoogleUpdateMetricsProviderWin::GetGoogleUpdateDataBlocking),
       base::Bind(&GoogleUpdateMetricsProviderWin::ReceiveGoogleUpdateData,
                  weak_ptr_factory_.GetWeakPtr(), done_callback));
diff --git a/chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc b/chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc
index a32d43e..d1ef76e 100644
--- a/chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc
+++ b/chrome/browser/metrics/oom/out_of_memory_reporter_unittest.cc
@@ -118,7 +118,7 @@
 
     base::RunLoop run_loop;
     base::PostTaskWithTraitsAndReply(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(write_task, render_process_id, contents,
                        &rph_id_to_minidump_file_),
         run_loop.QuitClosure());
diff --git a/chrome/browser/net/file_downloader.cc b/chrome/browser/net/file_downloader.cc
index 7ac9cc9..9783ea5 100644
--- a/chrome/browser/net/file_downloader.cc
+++ b/chrome/browser/net/file_downloader.cc
@@ -54,7 +54,7 @@
   } else {
     base::PostTaskAndReplyWithResult(
         base::CreateTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})
             .get(),
         FROM_HERE, base::Bind(&base::PathExists, local_path_),
@@ -81,7 +81,7 @@
 
   base::PostTaskAndReplyWithResult(
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})
           .get(),
       FROM_HERE, base::Bind(&base::Move, response_path, local_path_),
diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrome/browser/offline_pages/android/offline_page_bridge.cc
index 0c50e97..6eb227eef 100644
--- a/chrome/browser/offline_pages/android/offline_page_bridge.cc
+++ b/chrome/browser/offline_pages/android/offline_page_bridge.cc
@@ -927,7 +927,7 @@
 
   ScopedJavaGlobalRef<jobject> j_callback_ref(j_callback_obj);
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&ArchiveValidator::GetSizeAndComputeDigest, file_path),
       base::Bind(&OfflinePageBridge::GetSizeAndComputeDigestDone,
                  weak_ptr_factory_.GetWeakPtr(), j_callback_ref, url));
@@ -960,7 +960,7 @@
   }
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&ArchiveValidator::ValidateFile, offline_page->file_path,
                  offline_page->file_size, offline_page->digest),
       base::Bind(&ValidateFileCallback, j_callback_obj, offline_page->url,
diff --git a/chrome/browser/offline_pages/android/request_coordinator_factory.cc b/chrome/browser/offline_pages/android/request_coordinator_factory.cc
index a5f49cd..801d641 100644
--- a/chrome/browser/offline_pages/android/request_coordinator_factory.cc
+++ b/chrome/browser/offline_pages/android/request_coordinator_factory.cc
@@ -65,7 +65,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> background_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   Profile* profile = Profile::FromBrowserContext(context);
   base::FilePath queue_store_path =
       profile->GetPath().Append(chrome::kOfflinePageRequestQueueDirname);
diff --git a/chrome/browser/offline_pages/offline_page_mhtml_archiver.cc b/chrome/browser/offline_pages/offline_page_mhtml_archiver.cc
index 0040399..dec261e 100644
--- a/chrome/browser/offline_pages/offline_page_mhtml_archiver.cc
+++ b/chrome/browser/offline_pages/offline_page_mhtml_archiver.cc
@@ -29,7 +29,7 @@
 void DeleteFileOnFileThread(const base::FilePath& file_path,
                             const base::Closure& callback) {
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(base::IgnoreResult(&base::DeleteFile), file_path,
                      false /* recursive */),
       callback);
@@ -42,7 +42,7 @@
     const base::FilePath& file_path,
     const base::Callback<void(const std::string&)>& callback) {
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&ArchiveValidator::ComputeDigest, file_path), callback);
 }
 }  // namespace
diff --git a/chrome/browser/password_manager/password_manager_util_win.cc b/chrome/browser/password_manager/password_manager_util_win.cc
index 8685b97ab..6a724b10 100644
--- a/chrome/browser/password_manager/password_manager_util_win.cc
+++ b/chrome/browser/password_manager/password_manager_util_win.cc
@@ -333,7 +333,7 @@
   OsPasswordStatus* status_weak = status.get();
   // This task calls ::LogonUser(), hence MayBlock().
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&GetOsPasswordStatusInternal, prefs_weak, status_weak),
       base::Bind(&ReplyOsPasswordStatus, base::Passed(&prefs),
                  base::Passed(&status)));
diff --git a/chrome/browser/pepper_flash_settings_manager.cc b/chrome/browser/pepper_flash_settings_manager.cc
index e1d943bf..4b7bbad 100644
--- a/chrome/browser/pepper_flash_settings_manager.cc
+++ b/chrome/browser/pepper_flash_settings_manager.cc
@@ -442,7 +442,7 @@
 
 #if defined(OS_CHROMEOS)
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                            base::Bind(&Core::DeauthorizeContentLicensesAsync,
                                       this, request_id, browser_context_path_));
 #else
diff --git a/chrome/browser/performance_monitor/performance_monitor.cc b/chrome/browser/performance_monitor/performance_monitor.cc
index 50c3af6..b0e9936 100644
--- a/chrome/browser/performance_monitor/performance_monitor.cc
+++ b/chrome/browser/performance_monitor/performance_monitor.cc
@@ -150,7 +150,7 @@
   // See https://crbug.com/821453.
   for (content::BrowserChildProcessHostIterator iter; !iter.Done(); ++iter) {
     ProcessMetricsMetadata child_process_data;
-    child_process_data.handle = iter.GetData().handle;
+    child_process_data.handle = iter.GetData().GetHandle();
     child_process_data.process_type = iter.GetData().process_type;
 
     if (iter.GetData().name == base::ASCIIToUTF16(content::kFlashPluginName)) {
diff --git a/chrome/browser/platform_util.cc b/chrome/browser/platform_util.cc
index a251aa0..7bbb139 100644
--- a/chrome/browser/platform_util.cc
+++ b/chrome/browser/platform_util.cc
@@ -61,7 +61,7 @@
               const OpenOperationCallback& callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                            base::BindOnce(&VerifyAndOpenItemOnBlockingThread,
                                           full_path, item_type, callback));
 }
diff --git a/chrome/browser/policy/chrome_browser_policy_connector.cc b/chrome/browser/policy/chrome_browser_policy_connector.cc
index fd4d95a..fafd74aa 100644
--- a/chrome/browser/policy/chrome_browser_policy_connector.cc
+++ b/chrome/browser/policy/chrome_browser_policy_connector.cc
@@ -138,7 +138,7 @@
 #if defined(OS_WIN)
   std::unique_ptr<AsyncPolicyLoader> loader(PolicyLoaderWin::Create(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND}),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT}),
       kRegistryChromePolicyKey));
   return std::make_unique<AsyncPolicyProvider>(GetSchemaRegistry(),
                                                std::move(loader));
@@ -154,7 +154,7 @@
 #endif
   auto loader = std::make_unique<PolicyLoaderMac>(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND}),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT}),
       policy::PolicyLoaderMac::GetManagedPolicyPath(bundle_id),
       new MacPreferences(), bundle_id);
   return std::make_unique<AsyncPolicyProvider>(GetSchemaRegistry(),
@@ -164,7 +164,7 @@
   if (base::PathService::Get(chrome::DIR_POLICY_FILES, &config_dir_path)) {
     std::unique_ptr<AsyncPolicyLoader> loader(new ConfigDirPolicyLoader(
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND}),
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT}),
         config_dir_path, POLICY_SCOPE_MACHINE));
     return std::make_unique<AsyncPolicyProvider>(GetSchemaRegistry(),
                                                  std::move(loader));
diff --git a/chrome/browser/policy/cloud/machine_level_user_cloud_policy_browsertest.cc b/chrome/browser/policy/cloud/machine_level_user_cloud_policy_browsertest.cc
index 1e450cf..1574f63b 100644
--- a/chrome/browser/policy/cloud/machine_level_user_cloud_policy_browsertest.cc
+++ b/chrome/browser/policy/cloud/machine_level_user_cloud_policy_browsertest.cc
@@ -338,7 +338,7 @@
         MachineLevelUserCloudPolicyStore::Create(
             dm_token, client_id, user_data_dir,
             base::CreateSequencedTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
     policy_store->AddObserver(&observer);
 
     base::FilePath policy_dir =
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index 2d0e643..fc6c22f 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -30,9 +30,9 @@
 #include "chrome/common/buildflags.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
+#include "components/autofill/core/browser/autofill_address_policy_handler.h"
 #include "components/autofill/core/browser/autofill_credit_card_policy_handler.h"
 #include "components/autofill/core/browser/autofill_policy_handler.h"
-#include "components/autofill/core/browser/autofill_profile_policy_handler.h"
 #include "components/bookmarks/common/bookmark_pref_names.h"
 #include "components/browsing_data/core/pref_names.h"
 #include "components/certificate_transparency/pref_names.h"
@@ -998,7 +998,7 @@
   }
 
   handlers->AddHandler(
-      std::make_unique<autofill::AutofillProfilePolicyHandler>());
+      std::make_unique<autofill::AutofillAddressPolicyHandler>());
   handlers->AddHandler(
       std::make_unique<autofill::AutofillCreditCardPolicyHandler>());
   handlers->AddHandler(std::make_unique<autofill::AutofillPolicyHandler>());
diff --git a/chrome/browser/policy/machine_level_user_cloud_policy_controller.cc b/chrome/browser/policy/machine_level_user_cloud_policy_controller.cc
index 30036dc4..80462ae 100644
--- a/chrome/browser/policy/machine_level_user_cloud_policy_controller.cc
+++ b/chrome/browser/policy/machine_level_user_cloud_policy_controller.cc
@@ -81,7 +81,7 @@
       MachineLevelUserCloudPolicyStore::Create(
           dm_token, client_id, policy_dir,
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
   return std::make_unique<MachineLevelUserCloudPolicyManager>(
       std::move(policy_store), nullptr, policy_dir,
       base::ThreadTaskRunnerHandle::Get(),
diff --git a/chrome/browser/policy/policy_browsertest.cc b/chrome/browser/policy/policy_browsertest.cc
index 842daa0..02d6b8b 100644
--- a/chrome/browser/policy/policy_browsertest.cc
+++ b/chrome/browser/policy/policy_browsertest.cc
@@ -2313,7 +2313,7 @@
       "https", "clients2.google.com",
       BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
       base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
   interceptor.SetResponseIgnoreQuery(
       GURL("https://clients2.google.com/service/update2/crx"),
diff --git a/chrome/browser/predictors/predictor_database_factory.cc b/chrome/browser/predictors/predictor_database_factory.cc
index 7850e779..0bc628b 100644
--- a/chrome/browser/predictors/predictor_database_factory.cc
+++ b/chrome/browser/predictors/predictor_database_factory.cc
@@ -38,7 +38,7 @@
     content::BrowserContext* profile) const {
   scoped_refptr<base::SequencedTaskRunner> db_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   return new PredictorDatabase(static_cast<Profile*>(profile),
                                std::move(db_task_runner));
diff --git a/chrome/browser/previews/previews_service.cc b/chrome/browser/previews/previews_service.cc
index 6876b12..7a8cf3e 100644
--- a/chrome/browser/previews/previews_service.cc
+++ b/chrome/browser/previews/previews_service.cc
@@ -114,7 +114,7 @@
   // Get the background thread to run SQLite on.
   scoped_refptr<base::SequencedTaskRunner> background_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
   previews_ui_service_ = std::make_unique<previews::PreviewsUIService>(
       previews_decider_impl, io_task_runner,
diff --git a/chrome/browser/printing/cloud_print/privet_traffic_detector.cc b/chrome/browser/printing/cloud_print/privet_traffic_detector.cc
index 18b6994..612712f 100644
--- a/chrome/browser/printing/cloud_print/privet_traffic_detector.cc
+++ b/chrome/browser/printing/cloud_print/privet_traffic_detector.cc
@@ -108,7 +108,7 @@
   ResetConnection();
   weak_ptr_factory_.InvalidateWeakPtrs();
   base::PostDelayedTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&GetNetworkListInBackground,
                      base::Bind(&PrivetTrafficDetector::Restart,
                                 weak_ptr_factory_.GetWeakPtr())),
diff --git a/chrome/browser/printing/cloud_print/privet_url_fetcher.cc b/chrome/browser/printing/cloud_print/privet_url_fetcher.cc
index 9692bfb1..c6efaa9 100644
--- a/chrome/browser/printing/cloud_print/privet_url_fetcher.cc
+++ b/chrome/browser/printing/cloud_print/privet_url_fetcher.cc
@@ -360,7 +360,7 @@
 scoped_refptr<base::SequencedTaskRunner> PrivetURLFetcher::GetFileTaskRunner() {
   if (!file_task_runner_) {
     file_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-        {base::TaskPriority::BACKGROUND, base::MayBlock()});
+        {base::TaskPriority::BEST_EFFORT, base::MayBlock()});
   }
 
   return file_task_runner_;
diff --git a/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc b/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
index 1a4574f6..96237d1 100644
--- a/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
+++ b/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
@@ -435,7 +435,7 @@
 
   mojo::MessagePipe pipe;
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&ConnectAsync, std::move(pipe.handle1),
                      GetServiceProcessServerName(), mojo_connection));
   ServiceProcessControl::GetInstance()->SetMojoHandle(
diff --git a/chrome/browser/printing/print_job.cc b/chrome/browser/printing/print_job.cc
index e76a3f1..98e872c 100644
--- a/chrome/browser/printing/print_job.cc
+++ b/chrome/browser/printing/print_job.cc
@@ -494,7 +494,7 @@
   base::PostTaskWithTraitsAndReply(
       FROM_HERE,
       {base::MayBlock(), base::WithBaseSyncPrimitives(),
-       base::TaskPriority::BACKGROUND,
+       base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&PrintJobWorker::Stop, base::Unretained(worker_.get())),
       base::BindOnce(&PrintJob::HoldUntilStopIsCalled, this));
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
index 2a5c9c1..7bc1cfa 100644
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -267,7 +267,7 @@
   DVLOG(1) << "Creating directory " << path.value();
   if (base::CreateDirectory(path) && create_readme) {
     base::PostTaskWithTraits(FROM_HERE,
-                             {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                             {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                               base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
                              base::Bind(&CreateProfileReadme, path));
   }
diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc
index b8c9017..04283f7 100644
--- a/chrome/browser/profiles/profile_impl_io_data.cc
+++ b/chrome/browser/profiles/profile_impl_io_data.cc
@@ -254,7 +254,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> db_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   std::unique_ptr<data_reduction_proxy::DataStore> store(
       new data_reduction_proxy::DataStoreImpl(io_data_->profile_path_));
@@ -474,7 +474,7 @@
     // ChannelIDStore.
     scoped_refptr<base::SequencedTaskRunner> cookie_background_task_runner =
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 
     // Set up server bound cert service.
@@ -605,7 +605,7 @@
   // Create a single task runner to use with the CookieStore and ChannelIDStore.
   scoped_refptr<base::SequencedTaskRunner> cookie_background_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
   if (partition_descriptor.in_memory) {
     cookie_path = base::FilePath();
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index 3d4ae65..5d780144 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -932,7 +932,7 @@
   for (const base::FilePath& profile_path : profiles_to_delete) {
     base::PostTaskWithTraits(
         FROM_HERE,
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
         base::BindOnce(&NukeProfileFromDisk, profile_path));
 
@@ -960,7 +960,7 @@
                         "Cleaning up now.";
         base::PostTaskWithTraitsAndReply(
             FROM_HERE,
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
             base::BindOnce(&NukeProfileFromDisk, profile_path),
             base::BindOnce(&ProfileCleanedUp, &value));
@@ -1372,7 +1372,7 @@
   // Log the profile size after a reasonable startup delay.
   base::PostDelayedTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&ProfileSizeTask, profile->GetPath(), enabled_app_count),
       base::TimeDelta::FromSeconds(112));
@@ -1590,7 +1590,7 @@
     // We failed to load the profile, but it's safe to delete a not yet loaded
     // Profile from disk.
     base::PostTaskWithTraits(FROM_HERE,
-                             {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                             {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                               base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
                              base::BindOnce(&NukeProfileFromDisk, profile_dir));
   }
diff --git a/chrome/browser/renderer_host/pepper/device_id_fetcher.cc b/chrome/browser/renderer_host/pepper/device_id_fetcher.cc
index b00a8b9..6f4c21d 100644
--- a/chrome/browser/renderer_host/pepper/device_id_fetcher.cc
+++ b/chrome/browser/renderer_host/pepper/device_id_fetcher.cc
@@ -125,7 +125,7 @@
   // Try the legacy path first for ChromeOS. We pass the new salt in as well
   // in case the legacy id doesn't exist.
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                            base::Bind(&DeviceIDFetcher::LegacyComputeAsync,
                                       this, profile->GetPath(), salt));
 #else
diff --git a/chrome/browser/resource_coordinator/browser_child_process_watcher.cc b/chrome/browser/resource_coordinator/browser_child_process_watcher.cc
index 627a607a..7e66238 100644
--- a/chrome/browser/resource_coordinator/browser_child_process_watcher.cc
+++ b/chrome/browser/resource_coordinator/browser_child_process_watcher.cc
@@ -32,7 +32,8 @@
             content::ServiceManagerConnection::GetForProcess()->GetConnector());
 
     gpu_process_resource_coordinator_->SetLaunchTime(base::Time::Now());
-    gpu_process_resource_coordinator_->SetPID(base::GetProcId(data.handle));
+    gpu_process_resource_coordinator_->SetPID(
+        base::GetProcId(data.GetHandle()));
   }
 }
 
diff --git a/chrome/browser/resource_coordinator/intervention_policy_database.cc b/chrome/browser/resource_coordinator/intervention_policy_database.cc
index 6210a00..46eec0e 100644
--- a/chrome/browser/resource_coordinator/intervention_policy_database.cc
+++ b/chrome/browser/resource_coordinator/intervention_policy_database.cc
@@ -45,7 +45,7 @@
   // TODO(sebmarchand): Validate the version and the manifest?
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::TaskPriority::BACKGROUND,
+      {base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN, base::MayBlock()},
       base::BindOnce(
           &InterventionPolicyDatabase::ReadDatabaseFromProtoFileOnSequence,
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_impl_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_impl_win.cc
index 0b90a90..89383ae 100644
--- a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_impl_win.cc
+++ b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_controller_impl_win.cc
@@ -115,7 +115,7 @@
     ChromeCleanerFetchStatus fetch_status) {
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(VerifyAndRenameDownloadedCleaner, downloaded_path,
                      fetch_status),
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_fetcher_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_fetcher_win.cc
index 01e2e9f..57bbf23 100644
--- a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_fetcher_win.cc
+++ b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_fetcher_win.cc
@@ -166,7 +166,7 @@
                                            this,
                                            kChromeCleanerTrafficAnnotation)),
       blocking_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})),
       scoped_temp_dir_(new base::ScopedTempDir(),
                        base::OnTaskRunnerDeleter(blocking_task_runner_)) {
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_runner_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_runner_win.cc
index 7dfe3a0..1c123ac 100644
--- a/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_runner_win.cc
+++ b/chrome/browser/safe_browsing/chrome_cleaner/chrome_cleaner_runner_win.cc
@@ -67,7 +67,7 @@
       // LaunchAndWaitForExitOnBackgroundThread creates (MayBlock()) and joins
       // (WithBaseSyncPrimitives()) a process.
       {base::MayBlock(), base::WithBaseSyncPrimitives(),
-       base::TaskPriority::BACKGROUND,
+       base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       std::move(launch_and_wait), std::move(process_done));
 }
diff --git a/chrome/browser/safe_browsing/chrome_cleaner/reporter_runner_win.cc b/chrome/browser/safe_browsing/chrome_cleaner/reporter_runner_win.cc
index 5f3e493b..36ef992 100644
--- a/chrome/browser/safe_browsing/chrome_cleaner/reporter_runner_win.cc
+++ b/chrome/browser/safe_browsing/chrome_cleaner/reporter_runner_win.cc
@@ -968,7 +968,7 @@
           // LaunchAndWaitForExitOnBackgroundThread() creates (MayBlock()) and
           // joins (WithBaseSyncPrimitives()) a process.
           {base::MayBlock(), base::WithBaseSyncPrimitives(),
-           base::TaskPriority::BACKGROUND,
+           base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN});
 
   SwReporterInvocationType invocation_type_;
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
index fdd76c46..6d34ea0 100644
--- a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
+++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
@@ -419,7 +419,7 @@
     // archive-type extension, then calls ExtractFileOrDmgFeatures() with
     // result.
     base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(DiskImageTypeSnifferMac::IsAppleDiskImage,
                    item_->GetTargetFilePath()),
         base::Bind(&CheckClientDownloadRequest::ExtractFileOrDmgFeatures,
@@ -461,7 +461,7 @@
   // The task does not need to block shutdown.
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&CheckClientDownloadRequest::ExtractFileFeatures, this,
                      item_->GetFullPath()));
diff --git a/chrome/browser/safe_browsing/download_protection/download_feedback_service_unittest.cc b/chrome/browser/safe_browsing/download_protection/download_feedback_service_unittest.cc
index 990dd7b5..c1f65d7 100644
--- a/chrome/browser/safe_browsing/download_protection/download_feedback_service_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/download_feedback_service_unittest.cc
@@ -122,7 +122,7 @@
  public:
   DownloadFeedbackServiceTest()
       : file_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND})) {}
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT})) {}
 
   void SetUp() override {
     ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
diff --git a/chrome/browser/safe_browsing/download_protection/download_feedback_unittest.cc b/chrome/browser/safe_browsing/download_protection/download_feedback_unittest.cc
index ac56ab9..62e1cc6 100644
--- a/chrome/browser/safe_browsing/download_protection/download_feedback_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/download_feedback_unittest.cc
@@ -96,7 +96,7 @@
  public:
   DownloadFeedbackTest()
       : file_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
         io_task_runner_(content::BrowserThread::GetTaskRunnerForThread(
             content::BrowserThread::IO)),
         feedback_finish_called_(false) {
diff --git a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
index a2945a6..aba4d424 100644
--- a/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
+++ b/chrome/browser/safe_browsing/download_protection/download_protection_service.cc
@@ -90,7 +90,7 @@
       feedback_service_(new DownloadFeedbackService(
           url_loader_factory_,
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND})
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT})
               .get())),
       whitelist_sample_rate_(kWhitelistDownloadSampleRate) {
   if (sb_service) {
diff --git a/chrome/browser/safe_browsing/download_protection/two_phase_uploader_unittest.cc b/chrome/browser/safe_browsing/download_protection/two_phase_uploader_unittest.cc
index 1dfc7e3..eb72ff6 100644
--- a/chrome/browser/safe_browsing/download_protection/two_phase_uploader_unittest.cc
+++ b/chrome/browser/safe_browsing/download_protection/two_phase_uploader_unittest.cc
@@ -85,7 +85,7 @@
   content::TestBrowserThreadBundle thread_bundle_;
   const scoped_refptr<base::SequencedTaskRunner> task_runner_ =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   std::unique_ptr<network::TestNetworkServiceClient> network_service_client_;
   std::unique_ptr<network::NetworkService> network_service_;
   scoped_refptr<network::TestSharedURLLoaderFactory> shared_url_loader_factory_;
diff --git a/chrome/browser/safe_browsing/incident_reporting/download_metadata_manager.cc b/chrome/browser/safe_browsing/incident_reporting/download_metadata_manager.cc
index 6bdca1f..b9b2720 100644
--- a/chrome/browser/safe_browsing/incident_reporting/download_metadata_manager.cc
+++ b/chrome/browser/safe_browsing/incident_reporting/download_metadata_manager.cc
@@ -340,7 +340,7 @@
 
 DownloadMetadataManager::DownloadMetadataManager()
     : task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::TaskPriority::BACKGROUND,
+          {base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
            base::MayBlock()})) {}
 
diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
index 57e1df9..617efac5 100644
--- a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
+++ b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
@@ -133,7 +133,7 @@
 
 // Returns a task runner for blocking tasks in the background.
 scoped_refptr<base::TaskRunner> GetBackgroundTaskRunner() {
-  return base::CreateTaskRunnerWithTraits({base::TaskPriority::BACKGROUND,
+  return base::CreateTaskRunnerWithTraits({base::TaskPriority::BEST_EFFORT,
                                            GetShutdownBehavior(),
                                            base::MayBlock()});
 }
diff --git a/chrome/browser/safe_browsing/local_database_manager.cc b/chrome/browser/safe_browsing/local_database_manager.cc
index 64d2d10..ebf6fd6 100644
--- a/chrome/browser/safe_browsing/local_database_manager.cc
+++ b/chrome/browser/safe_browsing/local_database_manager.cc
@@ -663,7 +663,7 @@
   // previously been started and stopped, a task runner could already exist.
   if (!safe_browsing_task_runner_) {
     safe_browsing_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   }
 
diff --git a/chrome/browser/search/local_files_ntp_source.cc b/chrome/browser/search/local_files_ntp_source.cc
index d3d66ee..5c44d42 100644
--- a/chrome/browser/search/local_files_ntp_source.cc
+++ b/chrome/browser/search/local_files_ntp_source.cc
@@ -128,7 +128,7 @@
   content::URLDataSource::GotDataCallback wrapper =
       base::Bind(&CheckLocalIncludes, callback);
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&ReadFileAndReturn, fullpath),
       base::Bind(&CallbackWithLoadedResource, origin, wrapper));
 }
diff --git a/chrome/browser/service_process/service_process_control.cc b/chrome/browser/service_process/service_process_control.cc
index 4748ce5..516a87cf4 100644
--- a/chrome/browser/service_process/service_process_control.cc
+++ b/chrome/browser/service_process/service_process_control.cc
@@ -60,7 +60,7 @@
           FROM_HERE, base::BindOnce(std::move(response_callback), nullptr));
     } else {
       base::PostDelayedTaskWithTraits(
-          FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+          FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
           base::BindOnce(
               &ConnectAsyncWithBackoff, std::move(interface_provider_request),
               server_name, num_retries_left - 1, retry_delay * 2,
@@ -104,7 +104,7 @@
   auto interface_provider_request = mojo::MakeRequest(&remote_interfaces);
   SetMojoHandle(std::move(remote_interfaces));
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(
           &ConnectAsyncWithBackoff, std::move(interface_provider_request),
           GetServiceProcessServerName(), kMaxConnectionAttempts,
diff --git a/chrome/browser/shell_integration_win.cc b/chrome/browser/shell_integration_win.cc
index 1f68085..e7f5e8e 100644
--- a/chrome/browser/shell_integration_win.cc
+++ b/chrome/browser/shell_integration_win.cc
@@ -746,7 +746,7 @@
   // run-time Chrome icon is merged with the taskbar shortcut), but it is not an
   // urgent task.
   base::CreateCOMSTATaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND})
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT})
       ->PostTask(FROM_HERE, base::Bind(&MigrateTaskbarPinsCallback));
 }
 
diff --git a/chrome/browser/speech/tts_linux.cc b/chrome/browser/speech/tts_linux.cc
index e7a0547..6ad6abc 100644
--- a/chrome/browser/speech/tts_linux.cc
+++ b/chrome/browser/speech/tts_linux.cc
@@ -102,7 +102,7 @@
     return;
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&TtsPlatformImplLinux::Initialize, base::Unretained(this)));
 }
 
diff --git a/chrome/browser/supervised_user/experimental/supervised_user_blacklist.cc b/chrome/browser/supervised_user/experimental/supervised_user_blacklist.cc
index 382ee04..d43666ac 100644
--- a/chrome/browser/supervised_user/experimental/supervised_user_blacklist.cc
+++ b/chrome/browser/supervised_user/experimental/supervised_user_blacklist.cc
@@ -72,7 +72,7 @@
                                            const base::Closure& done_callback) {
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&ReadFromBinaryFileOnFileThread, path),
       base::BindOnce(&SupervisedUserBlacklist::OnReadFromFileCompleted,
diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc
index 6f7791f3..ebe3a7b2 100644
--- a/chrome/browser/supervised_user/supervised_user_service.cc
+++ b/chrome/browser/supervised_user/supervised_user_service.cc
@@ -38,6 +38,7 @@
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
 #include "components/browser_sync/profile_sync_service.h"
+#include "components/policy/core/browser/url_util.h"
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "components/prefs/pref_service.h"
 #include "components/signin/core/browser/profile_oauth2_token_service.h"
@@ -216,12 +217,12 @@
 
 void SupervisedUserService::AddURLAccessRequest(const GURL& url,
                                                 SuccessCallback callback) {
-  GURL effective_url = url_filter_.GetEmbeddedURL(url);
+  GURL effective_url = policy::url_util::GetEmbeddedURL(url);
   if (!effective_url.is_valid())
     effective_url = url;
   AddPermissionRequestInternal(
       base::BindRepeating(CreateURLAccessRequest,
-                          SupervisedUserURLFilter::Normalize(effective_url)),
+                          policy::url_util::Normalize(effective_url)),
       std::move(callback), 0);
 }
 
@@ -609,7 +610,7 @@
   blacklist_state_ = BlacklistLoadState::LOAD_STARTED;
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&base::PathExists, path),
       base::BindOnce(&SupervisedUserService::OnBlacklistFileChecked,
diff --git a/chrome/browser/supervised_user/supervised_user_site_list.cc b/chrome/browser/supervised_user/supervised_user_site_list.cc
index ba606c1..5d73d88 100644
--- a/chrome/browser/supervised_user/supervised_user_site_list.cc
+++ b/chrome/browser/supervised_user/supervised_user_site_list.cc
@@ -91,7 +91,7 @@
                                   const LoadedCallback& callback) {
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&ReadFileOnBlockingThread, path),
       base::BindOnce(&SupervisedUserSiteList::OnJsonLoaded, id, title,
diff --git a/chrome/browser/supervised_user/supervised_user_url_filter.cc b/chrome/browser/supervised_user/supervised_user_url_filter.cc
index 7ef7a87..82b997c 100644
--- a/chrome/browser/supervised_user/supervised_user_url_filter.cc
+++ b/chrome/browser/supervised_user/supervised_user_url_filter.cc
@@ -24,16 +24,13 @@
 #include "base/task_scheduler/post_task.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/supervised_user/experimental/supervised_user_blacklist.h"
-#include "components/google/core/browser/google_util.h"
 #include "components/policy/core/browser/url_blacklist_manager.h"
-#include "components/url_formatter/url_fixer.h"
+#include "components/policy/core/browser/url_util.h"
 #include "components/url_matcher/url_matcher.h"
 #include "components/variations/service/variations_service.h"
 #include "content/public/browser/browser_thread.h"
 #include "extensions/buildflags/buildflags.h"
-#include "net/base/escape.h"
 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
-#include "net/base/url_util.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 #include "url/gurl.h"
 #include "url/url_constants.h"
@@ -206,46 +203,16 @@
   return builder.Build();
 }
 
-// Host/regex pattern for AMP Cache URLs.
-// See https://developers.google.com/amp/cache/overview#amp-cache-url-format
-// for a definition of the format of AMP Cache URLs.
-const char kAmpCacheHost[] = "cdn.ampproject.org";
-const char kAmpCachePathPattern[] = "/[a-z]/(s/)?(.*)";
-
-// Regex pattern for the path of Google AMP Viewer URLs.
-const char kGoogleAmpViewerPathPattern[] = "/amp/(s/)?(.*)";
-
-// Host, path prefix, and query regex pattern for Google web cache URLs
-const char kGoogleWebCacheHost[] = "webcache.googleusercontent.com";
-const char kGoogleWebCachePathPrefix[] = "/search";
-const char kGoogleWebCacheQueryPattern[] =
-    "cache:(.{12}:)?(https?://)?([^ :]*)( [^:]*)?";
-
-const char kGoogleTranslateSubdomain[] = "translate.";
-const char kAlternateGoogleTranslateHost[] = "translate.googleusercontent.com";
-
-GURL BuildURL(bool is_https, const std::string& host_and_path) {
-  std::string scheme = is_https ? url::kHttpsScheme : url::kHttpScheme;
-  return GURL(scheme + "://" + host_and_path);
-}
-
 }  // namespace
 
 SupervisedUserURLFilter::SupervisedUserURLFilter()
     : default_behavior_(ALLOW),
       contents_(new Contents()),
       blacklist_(nullptr),
-      amp_cache_path_regex_(kAmpCachePathPattern),
-      google_amp_viewer_path_regex_(kGoogleAmpViewerPathPattern),
-      google_web_cache_query_regex_(kGoogleWebCacheQueryPattern),
       blocking_task_runner_(base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})),
-      weak_ptr_factory_(this) {
-  DCHECK(amp_cache_path_regex_.ok());
-  DCHECK(google_amp_viewer_path_regex_.ok());
-  DCHECK(google_web_cache_query_regex_.ok());
-}
+      weak_ptr_factory_(this) {}
 
 SupervisedUserURLFilter::~SupervisedUserURLFilter() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -260,18 +227,6 @@
 }
 
 // static
-GURL SupervisedUserURLFilter::Normalize(const GURL& url) {
-  GURL normalized_url = url;
-  GURL::Replacements replacements;
-  // Strip username, password, query, and ref.
-  replacements.ClearUsername();
-  replacements.ClearPassword();
-  replacements.ClearQuery();
-  replacements.ClearRef();
-  return url.ReplaceComponents(replacements);
-}
-
-// static
 bool SupervisedUserURLFilter::HasFilteredScheme(const GURL& url) {
   for (const char* scheme : kFilteredSchemes) {
     if (url.scheme() == scheme)
@@ -340,7 +295,7 @@
     supervised_user_error_page::FilteringBehaviorReason* reason) const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
-  GURL effective_url = GetEmbeddedURL(url);
+  GURL effective_url = policy::url_util::GetEmbeddedURL(url);
   if (!effective_url.is_valid())
     effective_url = url;
 
@@ -353,8 +308,10 @@
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   // Allow webstore crx downloads. This applies to both extension installation
   // and updates.
-  if (extension_urls::GetWebstoreUpdateUrl() == Normalize(effective_url))
+  if (extension_urls::GetWebstoreUpdateUrl() ==
+      policy::url_util::Normalize(effective_url)) {
     return ALLOW;
+  }
 
   // The actual CRX files are downloaded from other URLs. Allow them too.
   for (const char* crx_download_url_str : kCrxDownloadUrls) {
@@ -377,7 +334,7 @@
     return ALLOW;
 
   // Check manual overrides for the exact URL.
-  auto url_it = url_map_.find(Normalize(effective_url));
+  auto url_it = url_map_.find(policy::url_util::Normalize(effective_url));
   if (url_it != url_map_.end())
     return url_it->second ? ALLOW : BLOCK;
 
@@ -440,7 +397,7 @@
   }
 
   return async_url_checker_->CheckURL(
-      Normalize(url),
+      policy::url_util::Normalize(url),
       base::BindOnce(&SupervisedUserURLFilter::CheckCallback,
                      base::Unretained(this), std::move(callback)));
 }
@@ -600,84 +557,6 @@
   blocking_task_runner_ = task_runner;
 }
 
-GURL SupervisedUserURLFilter::GetEmbeddedURL(const GURL& url) const {
-  // Check for "*.cdn.ampproject.org" URLs.
-  if (url.DomainIs(kAmpCacheHost)) {
-    std::string s;
-    std::string embedded;
-    if (re2::RE2::FullMatch(url.path(), amp_cache_path_regex_, &s, &embedded)) {
-      if (url.has_query())
-        embedded += "?" + url.query();
-      return BuildURL(!s.empty(), embedded);
-    }
-  }
-
-  // Check for "www.google.TLD/amp/" URLs.
-  if (google_util::IsGoogleDomainUrl(
-          url, google_util::DISALLOW_SUBDOMAIN,
-          google_util::DISALLOW_NON_STANDARD_PORTS)) {
-    std::string s;
-    std::string embedded;
-    if (re2::RE2::FullMatch(url.path(), google_amp_viewer_path_regex_, &s,
-                            &embedded)) {
-      // The embedded URL may be percent-encoded. Undo that.
-      embedded = net::UnescapeURLComponent(
-          embedded,
-          net::UnescapeRule::SPACES | net::UnescapeRule::PATH_SEPARATORS |
-              net::UnescapeRule::URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS);
-      return BuildURL(!s.empty(), embedded);
-    }
-  }
-
-  // Check for Google web cache URLs
-  // ("webcache.googleusercontent.com/search?q=cache:...").
-  std::string query;
-  if (url.host_piece() == kGoogleWebCacheHost &&
-      url.path_piece().starts_with(kGoogleWebCachePathPrefix) &&
-      net::GetValueForKeyInQuery(url, "q", &query)) {
-    std::string fingerprint;
-    std::string scheme;
-    std::string embedded;
-    if (re2::RE2::FullMatch(query, google_web_cache_query_regex_, &fingerprint,
-                            &scheme, &embedded)) {
-      return BuildURL(scheme == "https://", embedded);
-    }
-  }
-
-  // Check for Google translate URLs ("translate.google.TLD/...?...&u=URL" or
-  // "translate.googleusercontent.com/...?...&u=URL").
-  bool is_translate = false;
-  if (base::StartsWith(url.host_piece(), kGoogleTranslateSubdomain,
-                       base::CompareCase::SENSITIVE)) {
-    // Remove the "translate." prefix.
-    GURL::Replacements replace;
-    replace.SetHostStr(
-        url.host_piece().substr(strlen(kGoogleTranslateSubdomain)));
-    GURL trimmed = url.ReplaceComponents(replace);
-    // Check that the remainder is a Google URL. Note: IsGoogleDomainUrl checks
-    // for [www.]google.TLD, but we don't want the "www.", so explicitly exclude
-    // that.
-    // TODO(treib,pam): Instead of excluding "www." manually, teach
-    // IsGoogleDomainUrl a mode that doesn't allow it.
-    is_translate = google_util::IsGoogleDomainUrl(
-                       trimmed, google_util::DISALLOW_SUBDOMAIN,
-                       google_util::DISALLOW_NON_STANDARD_PORTS) &&
-                   !base::StartsWith(trimmed.host_piece(), "www.",
-                                     base::CompareCase::SENSITIVE);
-  }
-  bool is_alternate_translate =
-      url.host_piece() == kAlternateGoogleTranslateHost;
-  if (is_translate || is_alternate_translate) {
-    std::string embedded;
-    if (net::GetValueForKeyInQuery(url, "u", &embedded)) {
-      // The embedded URL may or may not include a scheme. Fix it if necessary.
-      return url_formatter::FixupURL(embedded, /*desired_tld=*/std::string());
-    }
-  }
-
-  return GURL();
-}
-
 void SupervisedUserURLFilter::SetContents(std::unique_ptr<Contents> contents) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   contents_ = std::move(contents);
diff --git a/chrome/browser/supervised_user/supervised_user_url_filter.h b/chrome/browser/supervised_user/supervised_user_url_filter.h
index 91a5e43..7d3458d8 100644
--- a/chrome/browser/supervised_user/supervised_user_url_filter.h
+++ b/chrome/browser/supervised_user/supervised_user_url_filter.h
@@ -19,7 +19,6 @@
 #include "chrome/browser/supervised_user/supervised_users.h"
 #include "components/safe_search_api/url_checker.h"
 #include "components/supervised_user_error_page/supervised_user_error_page.h"
-#include "third_party/re2/src/re2/re2.h"
 
 class GURL;
 class SupervisedUserBlacklist;
@@ -79,14 +78,6 @@
   static bool ReasonIsAutomatic(
       supervised_user_error_page::FilteringBehaviorReason reason);
 
-  // Normalizes a URL for matching purposes.
-  static GURL Normalize(const GURL& url);
-
-  // For known "cache" URLs (e.g. from the AMP project CDN), this returns the
-  // embedded URL. For all other URLs, returns an empty GURL.
-  // TODO(treib): Merge this with Normalize()? See also crbug.com/663678.
-  GURL GetEmbeddedURL(const GURL& url) const;
-
   // Returns true if the URL has a standard scheme. Only URLs with standard
   // schemes are filtered.
   // This method is public for testing.
@@ -214,10 +205,6 @@
 
   std::unique_ptr<safe_search_api::URLChecker> async_url_checker_;
 
-  re2::RE2 amp_cache_path_regex_;
-  re2::RE2 google_amp_viewer_path_regex_;
-  re2::RE2 google_web_cache_query_regex_;
-
   scoped_refptr<base::TaskRunner> blocking_task_runner_;
 
   SEQUENCE_CHECKER(sequence_checker_);
diff --git a/chrome/browser/supervised_user/supervised_user_url_filter_unittest.cc b/chrome/browser/supervised_user/supervised_user_url_filter_unittest.cc
index 1865690..ed170aa 100644
--- a/chrome/browser/supervised_user/supervised_user_url_filter_unittest.cc
+++ b/chrome/browser/supervised_user/supervised_user_url_filter_unittest.cc
@@ -36,10 +36,6 @@
            SupervisedUserURLFilter::ALLOW;
   }
 
-  GURL GetEmbeddedURL(const std::string& url) {
-    return filter_.GetEmbeddedURL(GURL(url));
-  }
-
   base::test::ScopedTaskEnvironment scoped_task_environment_;
   base::RunLoop run_loop_;
   SupervisedUserURLFilter filter_;
@@ -594,170 +590,3 @@
   EXPECT_FALSE(IsURLWhitelisted("https://families.google.com:8080/"));
   EXPECT_FALSE(IsURLWhitelisted("https://subdomain.families.google.com/"));
 }
-
-TEST_F(SupervisedUserURLFilterTest, GetEmbeddedURLAmpCache) {
-  // Base case.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://cdn.ampproject.org/c/example.com"));
-  // "s/" means "use https".
-  EXPECT_EQ(GURL("https://example.com"),
-            GetEmbeddedURL("https://cdn.ampproject.org/c/s/example.com"));
-  // With path and query. Fragment is not extracted.
-  EXPECT_EQ(GURL("https://example.com/path/to/file.html?q=asdf"),
-            GetEmbeddedURL("https://cdn.ampproject.org/c/s/example.com/path/to/"
-                           "file.html?q=asdf#baz"));
-
-  // Different host is not supported.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.ampproject.org/c/example.com"));
-  // Different TLD is not supported.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://cdn.ampproject.com/c/example.com"));
-  // Content type ("c/") is missing.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://cdn.ampproject.org/example.com"));
-  // Content type is mis-formatted, must be a single character.
-  EXPECT_EQ(GURL(),
-            GetEmbeddedURL("https://cdn.ampproject.org/cd/example.com"));
-}
-
-TEST_F(SupervisedUserURLFilterTest, GetEmbeddedURLGoogleAmpViewer) {
-  // Base case.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://www.google.com/amp/example.com"));
-  // "s/" means "use https".
-  EXPECT_EQ(GURL("https://example.com"),
-            GetEmbeddedURL("https://www.google.com/amp/s/example.com"));
-  // Different Google TLDs are supported.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://www.google.de/amp/example.com"));
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://www.google.co.uk/amp/example.com"));
-  // With path.
-  EXPECT_EQ(GURL("http://example.com/path"),
-            GetEmbeddedURL("https://www.google.com/amp/example.com/path"));
-  // Query is *not* part of the embedded URL.
-  EXPECT_EQ(
-      GURL("http://example.com/path"),
-      GetEmbeddedURL("https://www.google.com/amp/example.com/path?q=baz"));
-  // Query and fragment in percent-encoded form *are* part of the embedded URL.
-  EXPECT_EQ(
-      GURL("http://example.com/path?q=foo#bar"),
-      GetEmbeddedURL(
-          "https://www.google.com/amp/example.com/path%3fq=foo%23bar?q=baz"));
-  // "/" may also be percent-encoded.
-  EXPECT_EQ(GURL("http://example.com/path?q=foo#bar"),
-            GetEmbeddedURL("https://www.google.com/amp/"
-                           "example.com%2fpath%3fq=foo%23bar?q=baz"));
-
-  // Missing "amp/".
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.google.com/example.com"));
-  // Path component before the "amp/".
-  EXPECT_EQ(GURL(),
-            GetEmbeddedURL("https://www.google.com/foo/amp/example.com"));
-  // Different host.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.other.com/amp/example.com"));
-  // Different subdomain.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://mail.google.com/amp/example.com"));
-  // Invalid TLD.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.google.nope/amp/example.com"));
-}
-
-TEST_F(SupervisedUserURLFilterTest, GetEmbeddedURLGoogleWebCache) {
-  // Base case.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                           "search?q=cache:ABCDEFGHI-JK:example.com/"));
-  // With search query.
-  EXPECT_EQ(
-      GURL("http://example.com"),
-      GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                     "search?q=cache:ABCDEFGHI-JK:example.com/+search_query"));
-  // Without fingerprint.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                           "search?q=cache:example.com/"));
-  // With search query, without fingerprint.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                           "search?q=cache:example.com/+search_query"));
-  // Query params other than "q=" don't matter.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                           "search?a=b&q=cache:example.com/&c=d"));
-  // With scheme.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                           "search?q=cache:http://example.com/"));
-  // Preserve https.
-  EXPECT_EQ(GURL("https://example.com"),
-            GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                           "search?q=cache:https://example.com/"));
-
-  // Wrong host.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.googleusercontent.com/"
-                                   "search?q=cache:example.com/"));
-  // Wrong path.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                                   "path?q=cache:example.com/"));
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                                   "path/search?q=cache:example.com/"));
-  // Missing "cache:".
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                                   "search?q=example.com"));
-  // Wrong fingerprint.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                                   "search?q=cache:123:example.com/"));
-  // Wrong query param.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                                   "search?a=cache:example.com/"));
-  // Invalid scheme.
-  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
-                                   "search?q=cache:abc://example.com/"));
-}
-
-TEST_F(SupervisedUserURLFilterTest, GetEmbeddedURLTranslate) {
-  // Base case.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://translate.google.com/path?u=example.com"));
-  // Different TLD.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL("https://translate.google.de/path?u=example.com"));
-  // Alternate base URL.
-  EXPECT_EQ(GURL("http://example.com"),
-            GetEmbeddedURL(
-                "https://translate.googleusercontent.com/path?u=example.com"));
-  // With scheme.
-  EXPECT_EQ(
-      GURL("http://example.com"),
-      GetEmbeddedURL("https://translate.google.com/path?u=http://example.com"));
-  // With https scheme.
-  EXPECT_EQ(GURL("https://example.com"),
-            GetEmbeddedURL(
-                "https://translate.google.com/path?u=https://example.com"));
-  // With other parameters.
-  EXPECT_EQ(
-      GURL("http://example.com"),
-      GetEmbeddedURL(
-          "https://translate.google.com/path?a=asdf&u=example.com&b=fdsa"));
-
-  // Different subdomain is not supported.
-  EXPECT_EQ(GURL(), GetEmbeddedURL(
-                        "https://translate.foo.google.com/path?u=example.com"));
-  EXPECT_EQ(GURL(), GetEmbeddedURL(
-                        "https://translate.www.google.com/path?u=example.com"));
-  EXPECT_EQ(
-      GURL(),
-      GetEmbeddedURL("https://translate.google.google.com/path?u=example.com"));
-  EXPECT_EQ(GURL(), GetEmbeddedURL(
-                        "https://foo.translate.google.com/path?u=example.com"));
-  EXPECT_EQ(GURL(),
-            GetEmbeddedURL("https://translate2.google.com/path?u=example.com"));
-  EXPECT_EQ(GURL(),
-            GetEmbeddedURL(
-                "https://translate2.googleusercontent.com/path?u=example.com"));
-  // Different TLD is not supported for googleusercontent.
-  EXPECT_EQ(GURL(),
-            GetEmbeddedURL(
-                "https://translate.googleusercontent.de/path?u=example.com"));
-  // Query parameter ("u=...") is missing.
-  EXPECT_EQ(GURL(),
-            GetEmbeddedURL("https://translate.google.com/path?t=example.com"));
-}
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
index be661ef..8b8121d 100644
--- a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
+++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
@@ -202,11 +202,11 @@
       base::ThreadTaskRunnerHandle::Get();
   scoped_refptr<base::SequencedTaskRunner> worker_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   scoped_refptr<base::SequencedTaskRunner> drive_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 
   Profile* profile = Profile::FromBrowserContext(context);
diff --git a/chrome/browser/task_manager/providers/child_process_task.cc b/chrome/browser/task_manager/providers/child_process_task.cc
index a9f8013..938ebcb 100644
--- a/chrome/browser/task_manager/providers/child_process_task.cc
+++ b/chrome/browser/task_manager/providers/child_process_task.cc
@@ -158,7 +158,7 @@
     : Task(GetLocalizedTitle(data.name, data.process_type),
            base::UTF16ToUTF8(data.name),
            FetchIcon(IDR_PLUGINS_FAVICON, &s_icon_),
-           data.handle),
+           data.GetHandle()),
       process_resources_sampler_(CreateProcessResourcesSampler(data.id)),
       v8_memory_allocated_(-1),
       v8_memory_used_(-1),
diff --git a/chrome/browser/task_manager/providers/child_process_task_provider.cc b/chrome/browser/task_manager/providers/child_process_task_provider.cc
index 920b7c4..44b759f 100644
--- a/chrome/browser/task_manager/providers/child_process_task_provider.cc
+++ b/chrome/browser/task_manager/providers/child_process_task_provider.cc
@@ -31,10 +31,10 @@
     const ChildProcessData& process_data = itr.GetData();
 
     // Only add processes that have already started, i.e. with valid handles.
-    if (process_data.handle == base::kNullProcessHandle)
+    if (!process_data.IsHandleValid())
       continue;
 
-    child_processes->push_back(process_data);
+    child_processes->push_back(process_data.Duplicate());
   }
 
   return child_processes;
@@ -62,7 +62,7 @@
 void ChildProcessTaskProvider::BrowserChildProcessLaunchedAndConnected(
     const content::ChildProcessData& data) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  if (data.handle == base::kNullProcessHandle)
+  if (!data.IsHandleValid())
     return;
 
   CreateTask(data);
@@ -71,12 +71,12 @@
 void ChildProcessTaskProvider::BrowserChildProcessHostDisconnected(
     const content::ChildProcessData& data) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  DeleteTask(data.handle);
+  DeleteTask(data.GetHandle());
 }
 
 void ChildProcessTaskProvider::StartUpdating() {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  DCHECK(tasks_by_handle_.empty());
+  DCHECK(tasks_by_processid_.empty());
   DCHECK(tasks_by_child_id_.empty());
 
   // First, get the pre-existing child processes data.
@@ -102,7 +102,7 @@
   // StopUpdating() is called after the observer has been cleared.
 
   // Then delete all tasks (if any).
-  tasks_by_handle_.clear();
+  tasks_by_processid_.clear();
   tasks_by_child_id_.clear();
 }
 
@@ -120,7 +120,8 @@
 
 void ChildProcessTaskProvider::CreateTask(
     const content::ChildProcessData& data) {
-  std::unique_ptr<ChildProcessTask>& task = tasks_by_handle_[data.handle];
+  std::unique_ptr<ChildProcessTask>& task =
+      tasks_by_processid_[base::GetProcId(data.GetHandle())];
   if (task) {
     // This task is already known to us. This case can happen when some of the
     // child process data we collect upon StartUpdating() might be of
@@ -136,13 +137,13 @@
 }
 
 void ChildProcessTaskProvider::DeleteTask(base::ProcessHandle handle) {
-  auto itr = tasks_by_handle_.find(handle);
+  auto itr = tasks_by_processid_.find(base::GetProcId(handle));
 
   // The following case should never happen since we start observing
   // |BrowserChildProcessObserver| only after we collect all pre-existing child
   // processes and are notified (on the UI thread) that the collection is
   // completed at |ChildProcessDataCollected()|.
-  if (itr == tasks_by_handle_.end()) {
+  if (itr == tasks_by_processid_.end()) {
     // BUG(crbug.com/611067): Temporarily removing due to test flakes. The
     // reason why this happens is well understood (see bug), but there's no
     // quick and easy fix.
@@ -156,7 +157,7 @@
   tasks_by_child_id_.erase(itr->second->GetChildProcessUniqueID());
 
   // Finally delete the task.
-  tasks_by_handle_.erase(itr);
+  tasks_by_processid_.erase(itr);
 }
 
 }  // namespace task_manager
diff --git a/chrome/browser/task_manager/providers/child_process_task_provider.h b/chrome/browser/task_manager/providers/child_process_task_provider.h
index 97e3f49..f45955f 100644
--- a/chrome/browser/task_manager/providers/child_process_task_provider.h
+++ b/chrome/browser/task_manager/providers/child_process_task_provider.h
@@ -65,11 +65,11 @@
 
   // A map to track ChildProcessTasks by their handles.
   //
-  // This uses handles instead of pids because on windows (where pids and
-  // handles differ), BrowserChildProcessObserver gives us a handle instead of a
-  // pid.
-  std::map<base::ProcessHandle, std::unique_ptr<ChildProcessTask>>
-      tasks_by_handle_;
+  // This uses pids instead of handles because on windows (where pids and
+  // handles differ), there may be multiple different handles to the same
+  // process.
+  std::map<base::ProcessId, std::unique_ptr<ChildProcessTask>>
+      tasks_by_processid_;
 
   // A map to track ChildProcessTask's by their child process unique ids.
   base::flat_map<int, ChildProcessTask*> tasks_by_child_id_;
diff --git a/chrome/browser/task_manager/providers/child_process_task_unittest.cc b/chrome/browser/task_manager/providers/child_process_task_unittest.cc
index 60306cb..70d839c9 100644
--- a/chrome/browser/task_manager/providers/child_process_task_unittest.cc
+++ b/chrome/browser/task_manager/providers/child_process_task_unittest.cc
@@ -69,7 +69,7 @@
 
   bool AreProviderContainersEmpty(
       const ChildProcessTaskProvider& provider) const {
-    return provider.tasks_by_handle_.empty() &&
+    return provider.tasks_by_processid_.empty() &&
            provider.tasks_by_child_id_.empty();
   }
 
@@ -106,7 +106,7 @@
   // The following process which has handle = base::kNullProcessHandle, won't be
   // added.
   ChildProcessData data1(0);
-  ASSERT_EQ(base::kNullProcessHandle, data1.handle);
+  ASSERT_EQ(base::kNullProcessHandle, data1.GetHandle());
   provider.BrowserChildProcessLaunchedAndConnected(data1);
   EXPECT_TRUE(provided_tasks_.empty());
 
@@ -116,14 +116,15 @@
       IDS_TASK_MANAGER_PLUGIN_PREFIX, name));
 
   ChildProcessData data2(content::PROCESS_TYPE_PPAPI_PLUGIN);
-  data2.handle = base::GetCurrentProcessHandle();
+  data2.SetHandle(base::GetCurrentProcessHandle());
   data2.name = name;
   data2.id = unique_id;
   provider.BrowserChildProcessLaunchedAndConnected(data2);
   ASSERT_EQ(1U, provided_tasks_.size());
 
   Task* task = provided_tasks_.begin()->second;
-  EXPECT_EQ(base::GetCurrentProcessHandle(), task->process_handle());
+  // Process handles may not match, but process IDs must:
+  EXPECT_EQ(base::GetCurrentProcId(), base::GetProcId(task->process_handle()));
   EXPECT_EQ(base::GetCurrentProcId(), task->process_id());
   EXPECT_EQ(expected_name, task->title());
   EXPECT_EQ(Task::PLUGIN, task->GetType());
@@ -162,11 +163,12 @@
   for (const auto& types_pair : process_task_types_pairs) {
     // Add the task.
     ChildProcessData data(types_pair.process_type_);
-    data.handle = base::GetCurrentProcessHandle();
+    data.SetHandle(base::GetCurrentProcessHandle());
     provider.BrowserChildProcessLaunchedAndConnected(data);
     ASSERT_EQ(1U, provided_tasks_.size());
     Task* task = provided_tasks_.begin()->second;
-    EXPECT_EQ(base::GetCurrentProcessHandle(), task->process_handle());
+    EXPECT_EQ(base::GetCurrentProcId(),
+              base::GetProcId(task->process_handle()));
     EXPECT_EQ(types_pair.expected_task_type_, task->GetType());
 
     // Remove the task.
diff --git a/chrome/browser/task_manager/providers/render_process_host_task_provider.cc b/chrome/browser/task_manager/providers/render_process_host_task_provider.cc
index 255b7645..031611d9 100644
--- a/chrome/browser/task_manager/providers/render_process_host_task_provider.cc
+++ b/chrome/browser/task_manager/providers/render_process_host_task_provider.cc
@@ -82,9 +82,7 @@
   // TODO(cburn): plumb out something from RPH so the title can be set here.
   // Create the task and notify the observer.
   ChildProcessData data(content::PROCESS_TYPE_RENDERER);
-  // TODO(siggi): Investigate whether this is also a handle race, per
-  //     https://crbug.com/821453.
-  data.handle = host->GetProcess().Handle();
+  data.SetHandle(host->GetProcess().Handle());
   data.id = host->GetID();
   task.reset(new ChildProcessTask(data));
   NotifyObserverTaskAdded(task.get());
diff --git a/chrome/browser/task_manager/sampling/task_manager_impl.cc b/chrome/browser/task_manager/sampling/task_manager_impl.cc
index 9aa8854..12530d7 100644
--- a/chrome/browser/task_manager/sampling/task_manager_impl.cc
+++ b/chrome/browser/task_manager/sampling/task_manager_impl.cc
@@ -62,7 +62,7 @@
           base::Bind(&TaskManagerImpl::OnTaskGroupBackgroundCalculationsDone,
                      base::Unretained(this))),
       blocking_pool_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
       shared_sampler_(new SharedSampler(blocking_pool_runner_)),
       is_running_(false),
diff --git a/chrome/browser/themes/custom_theme_supplier.cc b/chrome/browser/themes/custom_theme_supplier.cc
index 34cf0b3..a6633d1b 100644
--- a/chrome/browser/themes/custom_theme_supplier.cc
+++ b/chrome/browser/themes/custom_theme_supplier.cc
@@ -16,7 +16,7 @@
 // on.
 scoped_refptr<base::SequencedTaskRunner> CreateTaskRunnerForDeletion() {
   return base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND});
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 }
 
 }  // namespace
diff --git a/chrome/browser/thumbnails/thumbnail_tab_helper.cc b/chrome/browser/thumbnails/thumbnail_tab_helper.cc
index 6910db15..cf59ebb 100644
--- a/chrome/browser/thumbnails/thumbnail_tab_helper.cc
+++ b/chrome/browser/thumbnails/thumbnail_tab_helper.cc
@@ -301,7 +301,7 @@
     LogThumbnailingOutcome(trigger, Outcome::SUCCESS);
     base::PostTaskWithTraitsAndReply(
         FROM_HERE,
-        {base::TaskPriority::BACKGROUND,
+        {base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
         base::Bind(&ComputeThumbnailScore, bitmap, thumbnailing_context_),
         base::Bind(&ThumbnailTabHelper::StoreThumbnail,
diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/tracing/crash_service_uploader.cc
index 6a93657..b7dff32 100644
--- a/chrome/browser/tracing/crash_service_uploader.cc
+++ b/chrome/browser/tracing/crash_service_uploader.cc
@@ -128,7 +128,7 @@
   done_callback_ = std::move(done_callback);
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT},
       base::Bind(&TraceCrashServiceUploader::DoCompressOnBackgroundThread,
                  base::Unretained(this), file_contents, upload_mode,
                  upload_url_, base::Passed(std::move(metadata))));
diff --git a/chrome/browser/ui/app_list/arc/arc_app_icon.cc b/chrome/browser/ui/app_list/arc/arc_app_icon.cc
index 2c8f778..6955f5287 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_icon.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_icon.cc
@@ -272,7 +272,7 @@
     return;
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(
           &ArcAppIcon::ReadOnFileThread, scale_factor, path,
           prefs->MaybeGetIconPathForDefaultApp(mapped_app_id_, scale_factor)),
diff --git a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
index f7e59b9..915c8ae 100644
--- a/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
+++ b/chrome/browser/ui/app_list/arc/arc_app_list_prefs.cc
@@ -1049,7 +1049,7 @@
 
   // Remove local data on file system.
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&DeleteAppFolderFromFileThread, app_path));
 }
 
@@ -1559,7 +1559,7 @@
                                   const std::vector<uint8_t>& content_png) {
   const base::FilePath icon_path = GetIconPath(app_id, scale_factor);
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&InstallIconFromFileThread, icon_path, content_png),
       base::Bind(&ArcAppListPrefs::OnIconInstalled,
                  weak_ptr_factory_.GetWeakPtr(), app_id, scale_factor));
diff --git a/chrome/browser/ui/app_list/arc/arc_default_app_list.cc b/chrome/browser/ui/app_list/arc/arc_default_app_list.cc
index 30bfa70..a887ede 100644
--- a/chrome/browser/ui/app_list/arc/arc_default_app_list.cc
+++ b/chrome/browser/ui/app_list/arc/arc_default_app_list.cc
@@ -129,7 +129,7 @@
 
   // Once ready OnAppsReady is called.
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&ReadAppsFromFileThread),
       base::Bind(&ArcDefaultAppList::OnAppsReady,
                  weak_ptr_factory_.GetWeakPtr()));
diff --git a/chrome/browser/ui/app_list/crostini/crostini_app_icon.cc b/chrome/browser/ui/app_list/crostini/crostini_app_icon.cc
index 1afb160..f3b1dc5b 100644
--- a/chrome/browser/ui/app_list/crostini/crostini_app_icon.cc
+++ b/chrome/browser/ui/app_list/crostini/crostini_app_icon.cc
@@ -202,7 +202,7 @@
         host_->registry_service_->GetIconPath(host_->app_id(), scale_factor_);
     DCHECK(!path.empty());
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(&InstallIconFromFileThread, path, std::move(png_data)));
   } else {
     LOG(ERROR) << "Failed encoding resized SkBitmap as PNG for Crostini icon";
@@ -253,7 +253,7 @@
   DCHECK(!path.empty());
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&CrostiniAppIcon::ReadOnFileThread, scale_factor, path),
       base::BindOnce(&CrostiniAppIcon::OnIconRead,
                      weak_ptr_factory_.GetWeakPtr()));
diff --git a/chrome/browser/ui/ash/wallpaper_policy_handler.cc b/chrome/browser/ui/ash/wallpaper_policy_handler.cc
index f61c4d3..c1416c6 100644
--- a/chrome/browser/ui/ash/wallpaper_policy_handler.cc
+++ b/chrome/browser/ui/ash/wallpaper_policy_handler.cc
@@ -115,7 +115,7 @@
     // inform its delegate.
     base::PostTaskWithTraits(
         FROM_HERE,
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
         base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                        device_wallpaper_file_path_, false /*=recursive*/));
diff --git a/chrome/browser/ui/hung_plugin_tab_helper.cc b/chrome/browser/ui/hung_plugin_tab_helper.cc
index 0d791e2..8a1579a21 100644
--- a/chrome/browser/ui/hung_plugin_tab_helper.cc
+++ b/chrome/browser/ui/hung_plugin_tab_helper.cc
@@ -38,9 +38,9 @@
   while (!iter.Done()) {
     const content::ChildProcessData& data = iter.GetData();
     if (data.id == child_id) {
-      CrashDumpHungChildProcess(data.handle);
+      CrashDumpHungChildProcess(data.GetHandle());
       base::Process process =
-          base::Process::DeprecatedGetProcessFromHandle(data.handle);
+          base::Process::DeprecatedGetProcessFromHandle(data.GetHandle());
       process.Terminate(content::RESULT_CODE_HUNG, false);
       break;
     }
diff --git a/chrome/browser/ui/libgtkui/app_indicator_icon.cc b/chrome/browser/ui/libgtkui/app_indicator_icon.cc
index 5aeb9d4..c449dd9 100644
--- a/chrome/browser/ui/libgtkui/app_indicator_icon.cc
+++ b/chrome/browser/ui/libgtkui/app_indicator_icon.cc
@@ -182,9 +182,9 @@
   if (icon_) {
     app_indicator_set_status(icon_, APP_INDICATOR_STATUS_PASSIVE);
     g_object_unref(icon_);
-    base::PostTaskWithTraits(FROM_HERE,
-                             {base::MayBlock(), base::TaskPriority::BACKGROUND},
-                             base::BindOnce(&DeleteTempDirectory, temp_dir_));
+    base::PostTaskWithTraits(
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
+        base::BindOnce(&DeleteTempDirectory, temp_dir_));
   }
 }
 
@@ -351,9 +351,9 @@
   }
 
   if (temp_dir_ != params.parent_temp_dir) {
-    base::PostTaskWithTraits(FROM_HERE,
-                             {base::MayBlock(), base::TaskPriority::BACKGROUND},
-                             base::BindOnce(&DeleteTempDirectory, temp_dir_));
+    base::PostTaskWithTraits(
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
+        base::BindOnce(&DeleteTempDirectory, temp_dir_));
     temp_dir_ = params.parent_temp_dir;
   }
 }
diff --git a/chrome/browser/ui/libgtkui/print_dialog_gtk.cc b/chrome/browser/ui/libgtkui/print_dialog_gtk.cc
index 520b586f..bf5026e2 100644
--- a/chrome/browser/ui/libgtkui/print_dialog_gtk.cc
+++ b/chrome/browser/ui/libgtkui/print_dialog_gtk.cc
@@ -534,7 +534,7 @@
     g_object_unref(print_job);
 
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                             base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
                            base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                                           path_to_pdf_, false));
diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc
index 51d651b0..405490680 100644
--- a/chrome/browser/ui/startup/bad_flags_prompt.cc
+++ b/chrome/browser/ui/startup/bad_flags_prompt.cc
@@ -104,8 +104,8 @@
     // getting the user's permission.
     switches::kUnsafelyAllowProtectedMediaIdentifierForDomain,
 
-    // This flag delays execution of base::TaskPriority::BACKGROUND tasks until
-    // shutdown. The queue of base::TaskPriority::BACKGROUND tasks can increase
+    // This flag delays execution of base::TaskPriority::BEST_EFFORT tasks until
+    // shutdown. The queue of base::TaskPriority::BEST_EFFORT tasks can increase
     // memory usage. Also, while it should be possible to use Chrome almost
     // normally with this flag, it is expected that some non-visible operations
     // such as writing user data to disk, cleaning caches, reporting metrics or
diff --git a/chrome/browser/ui/startup/startup_browser_creator.cc b/chrome/browser/ui/startup/startup_browser_creator.cc
index e2afc34b..2ab6559 100644
--- a/chrome/browser/ui/startup/startup_browser_creator.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator.cc
@@ -655,7 +655,7 @@
     if (!output_file.empty()) {
       base::PostTaskWithTraits(
           FROM_HERE,
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
           base::BindOnce(&DumpBrowserHistograms, output_file));
     }
diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
index c2868b5..66a387a 100644
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
@@ -258,7 +258,7 @@
     // The mode couldn't be determined with a fast path. Perform a more
     // expensive evaluation out of the critical startup path.
     base::PostTaskWithTraits(FROM_HERE,
-                             {base::TaskPriority::BACKGROUND,
+                             {base::TaskPriority::BEST_EFFORT,
                               base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
                              base::BindOnce([]() {
                                base::UmaHistogramSparse(kHistogramName,
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
index 8ab8fec..1f15f10 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
@@ -132,9 +132,6 @@
 static const int kBookmarkBarBottomMargin = 4;
 static const int kBookmarkBarHorizontalMargin = 8;
 
-// Padding between buttons.
-static const int kBookmarkBarButtonPadding = 8;
-
 // Width of the drop indicator.
 static const int kBookmarkBarDropIndicatorWidth = 2;
 
@@ -916,17 +913,20 @@
         (GetLayoutConstant(BOOKMARK_BAR_NTP_HEIGHT) - height) * current_state);
   }
 
+  const int bookmark_bar_button_padding =
+      GetLayoutConstant(TOOLBAR_ELEMENT_PADDING);
+
   if (managed_bookmarks_button_->visible()) {
     gfx::Size size = managed_bookmarks_button_->GetPreferredSize();
-    width += size.width() + kBookmarkBarButtonPadding;
+    width += size.width() + bookmark_bar_button_padding;
   }
   if (other_bookmarks_button_->visible()) {
     gfx::Size size = other_bookmarks_button_->GetPreferredSize();
-    width += size.width() + kBookmarkBarButtonPadding;
+    width += size.width() + bookmark_bar_button_padding;
   }
   if (overflow_button_->visible()) {
     gfx::Size size = overflow_button_->GetPreferredSize();
-    width += size.width() + kBookmarkBarButtonPadding;
+    width += size.width() + bookmark_bar_button_padding;
   }
   if (bookmarks_separator_view_->visible()) {
     gfx::Size size = bookmarks_separator_view_->GetPreferredSize();
@@ -934,7 +934,7 @@
   }
   if (apps_page_shortcut_->visible()) {
     gfx::Size size = apps_page_shortcut_->GetPreferredSize();
-    width += size.width() + kBookmarkBarButtonPadding;
+    width += size.width() + bookmark_bar_button_padding;
   }
 
   return gfx::Size(width, height);
@@ -973,16 +973,19 @@
   gfx::Size apps_page_shortcut_pref = apps_page_shortcut_->visible() ?
       apps_page_shortcut_->GetPreferredSize() : gfx::Size();
 
+  const int bookmark_bar_button_padding =
+      GetLayoutConstant(TOOLBAR_ELEMENT_PADDING);
+
   int max_x = kBookmarkBarHorizontalMargin + width - overflow_pref.width() -
               bookmarks_separator_pref.width();
   if (other_bookmarks_button_->visible())
-    max_x -= other_bookmarks_pref.width() + kBookmarkBarButtonPadding;
+    max_x -= other_bookmarks_pref.width() + bookmark_bar_button_padding;
 
   // Start with the apps page shortcut button.
   if (apps_page_shortcut_->visible()) {
     apps_page_shortcut_->SetBounds(x, y, apps_page_shortcut_pref.width(),
                                    height);
-    x += apps_page_shortcut_pref.width() + kBookmarkBarButtonPadding;
+    x += apps_page_shortcut_pref.width() + bookmark_bar_button_padding;
   }
 
   // Then comes the managed bookmarks folder, if visible.
@@ -991,7 +994,7 @@
         managed_bookmarks_button_->GetPreferredSize();
     managed_bookmarks_button_->SetBounds(x, y, managed_bookmarks_pref.width(),
                                          height);
-    x += managed_bookmarks_pref.width() + kBookmarkBarButtonPadding;
+    x += managed_bookmarks_pref.width() + bookmark_bar_button_padding;
   }
 
   const bool show_instructions =
@@ -1019,7 +1022,7 @@
       }
       views::View* child = child_at(i);
       gfx::Size pref = child->GetPreferredSize();
-      int next_x = x + pref.width() + kBookmarkBarButtonPadding;
+      int next_x = x + pref.width() + bookmark_bar_button_padding;
       last_visible = next_x < max_x;
       child->SetVisible(last_visible);
       // Only need to set bounds if the view is actually visible.
@@ -1030,7 +1033,7 @@
   }
 
   // Layout the right side buttons.
-  x = max_x + kBookmarkBarButtonPadding;
+  x = max_x + bookmark_bar_button_padding;
 
   // The overflow button.
   overflow_button_->SetBounds(x, y, overflow_pref.width(), height);
@@ -1055,7 +1058,7 @@
   if (other_bookmarks_button_->visible()) {
     other_bookmarks_button_->SetBounds(x, y, other_bookmarks_pref.width(),
                                        height);
-    x += other_bookmarks_pref.width() + kBookmarkBarButtonPadding;
+    x += other_bookmarks_pref.width() + bookmark_bar_button_padding;
   }
 }
 
diff --git a/chrome/browser/ui/views/ime_driver/OWNERS b/chrome/browser/ui/views/ime_driver/OWNERS
new file mode 100644
index 0000000..1d9f31f
--- /dev/null
+++ b/chrome/browser/ui/views/ime_driver/OWNERS
@@ -0,0 +1,5 @@
+# For mash / mustash.
+xiyuan@chromium.org
+
+# For general IME.
+file://ui/base/ime/OWNERS
diff --git a/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc b/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
index bf3a8b0a..0088d78 100644
--- a/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
+++ b/chrome/browser/ui/views/outdated_upgrade_bubble_view.cc
@@ -122,7 +122,7 @@
     // Re-enable updates by shelling out to setup.exe asynchronously.
     base::PostTaskWithTraits(
         FROM_HERE,
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
         base::Bind(&google_update::ElevateIfNeededToReenableUpdates));
 #endif  // defined(OS_WIN)
diff --git a/chrome/browser/ui/webui/about_ui.cc b/chrome/browser/ui/webui/about_ui.cc
index 9ca0978f..a00b7d9f 100644
--- a/chrome/browser/ui/webui/about_ui.cc
+++ b/chrome/browser/ui/webui/about_ui.cc
@@ -223,7 +223,7 @@
     }
     // Load local Chrome OS credits from the disk.
     base::PostTaskWithTraitsAndReply(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(&ChromeOSCreditsHandler::LoadCreditsFileAsync, this),
         base::Bind(&ChromeOSCreditsHandler::ResponseOnUIThread, this));
   }
diff --git a/chrome/browser/ui/webui/certificates_handler.cc b/chrome/browser/ui/webui/certificates_handler.cc
index 71beb63..7d5ef482 100644
--- a/chrome/browser/ui/webui/certificates_handler.cc
+++ b/chrome/browser/ui/webui/certificates_handler.cc
@@ -287,7 +287,7 @@
 
   // Post task to a background sequence to read file.
   auto task_runner = base::CreateTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND});
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   return tracker->PostTaskAndReply(
       task_runner.get(), FROM_HERE,
       base::BindOnce(&FileAccessProvider::DoRead, this, path, saved_errno,
@@ -306,7 +306,7 @@
 
   // This task blocks shutdown because it saves critical user data.
   auto task_runner = base::CreateTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
   return tracker->PostTaskAndReply(
       task_runner.get(), FROM_HERE,
diff --git a/chrome/browser/ui/webui/memory_internals_ui.cc b/chrome/browser/ui/webui/memory_internals_ui.cc
index 2ab3d76..7a2ee16 100644
--- a/chrome/browser/ui/webui/memory_internals_ui.cc
+++ b/chrome/browser/ui/webui/memory_internals_ui.cc
@@ -279,7 +279,7 @@
     const content::ChildProcessData& data = iter.GetData();
 
     if (data.process_type == content::PROCESS_TYPE_GPU) {
-      result.push_back(MakeProcessInfo(base::GetProcId(data.handle),
+      result.push_back(MakeProcessInfo(base::GetProcId(data.GetHandle()),
                                        GetChildDescription(data)));
     }
   }
diff --git a/chrome/browser/ui/webui/nacl_ui.cc b/chrome/browser/ui/webui/nacl_ui.cc
index 49b29dfe..f879885 100644
--- a/chrome/browser/ui/webui/nacl_ui.cc
+++ b/chrome/browser/ui/webui/nacl_ui.cc
@@ -355,7 +355,7 @@
   if (!pnacl_path_validated_) {
     std::string* version_string = new std::string;
     base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(&CheckPathAndVersion, version_string),
         base::Bind(&NaClDomHandler::DidCheckPathAndVersion,
                    weak_ptr_factory_.GetWeakPtr(),
diff --git a/chrome/browser/ui/webui/policy_tool_ui_handler.cc b/chrome/browser/ui/webui/policy_tool_ui_handler.cc
index b7ee3b35..d8d006e 100644
--- a/chrome/browser/ui/webui/policy_tool_ui_handler.cc
+++ b/chrome/browser/ui/webui/policy_tool_ui_handler.cc
@@ -404,7 +404,7 @@
   std::string converted_values;
   base::JSONWriter::Write(*policy_values, &converted_values);
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&PolicyToolUIHandler::DoUpdateSession,
                      base::Unretained(this), converted_values),
       base::BindOnce(&PolicyToolUIHandler::OnSessionUpdated,
@@ -415,7 +415,7 @@
 void PolicyToolUIHandler::HandleResetSession(const base::ListValue* args) {
   DCHECK_EQ(0U, args->GetSize());
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&PolicyToolUIHandler::DoUpdateSession,
                      base::Unretained(this), "{}"),
       base::BindOnce(&PolicyToolUIHandler::OnSessionUpdated,
@@ -472,7 +472,7 @@
   const std::string data = session_dict_for_exporting_;
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
       base::BindOnce(&DoWriteSessionPolicyToFile, path, data));
 }
diff --git a/chrome/browser/ui/webui/policy_ui_handler.cc b/chrome/browser/ui/webui/policy_ui_handler.cc
index cd3a8df..99f0f0f 100644
--- a/chrome/browser/ui/webui/policy_ui_handler.cc
+++ b/chrome/browser/ui/webui/policy_ui_handler.cc
@@ -811,7 +811,7 @@
 
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
       base::BindOnce(&DoWritePoliciesToJSONFile, path, json_policies));
 }
diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc
index b753712..50ef125 100644
--- a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc
+++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc
@@ -66,7 +66,7 @@
   printing::PrinterBasicInfo basic_info = ToBasicInfo(*printer);
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&printing::GetSettingsOnBlockingPool, printer->id(),
                      basic_info, nullptr),
       std::move(cb));
diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_default.cc b/chrome/browser/ui/webui/print_preview/local_printer_handler_default.cc
index 794a8d5..8c271fe4 100644
--- a/chrome/browser/ui/webui/print_preview/local_printer_handler_default.cc
+++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_default.cc
@@ -74,7 +74,7 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&GetDefaultPrinterAsync), std::move(cb));
 }
 
@@ -85,7 +85,7 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&EnumeratePrintersAsync),
       base::BindOnce(&printing::ConvertPrinterListForCallback, callback,
                      std::move(done_callback)));
@@ -97,7 +97,7 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&FetchCapabilitiesAsync, device_name), std::move(cb));
 }
 
diff --git a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
index 97f9d54..6ce6625f 100644
--- a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
@@ -325,7 +325,7 @@
   // returns and eventually FileSelected() gets called.
   if (!prompt_user) {
     base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(&GetUniquePath, path.Append(default_filename)),
         base::Bind(&PdfPrinterHandler::OnGotUniqueFileName,
                    weak_ptr_factory_.GetWeakPtr()));
@@ -343,7 +343,7 @@
   // save directory does not exist.
   base::FilePath default_path = download_prefs->DownloadPath();
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&SelectSaveDirectory, path, default_path),
       base::BindOnce(&PdfPrinterHandler::OnDirectorySelected,
                      weak_ptr_factory_.GetWeakPtr(), default_filename));
@@ -351,7 +351,7 @@
 
 void PdfPrinterHandler::PostPrintToPdfTask() {
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&PrintToPdfCallback, print_data_, print_to_pdf_path_,
                      pdf_file_saved_closure_));
   print_to_pdf_path_.clear();
diff --git a/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.cc b/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.cc
index 9b221939c..daa0759 100644
--- a/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.cc
+++ b/chrome/browser/ui/webui/settings/chromeos/device_storage_handler.cc
@@ -187,7 +187,7 @@
       file_manager::util::GetDownloadsFolderForProfile(profile_);
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&base::ComputeDirectorySize, downloads_path),
       base::Bind(&StorageHandler::OnGetDownloadsSize,
                  weak_ptr_factory_.GetWeakPtr()));
diff --git a/chrome/browser/ui/webui/version_handler_chromeos.cc b/chrome/browser/ui/webui/version_handler_chromeos.cc
index 95bdee7..b59ffa4 100644
--- a/chrome/browser/ui/webui/version_handler_chromeos.cc
+++ b/chrome/browser/ui/webui/version_handler_chromeos.cc
@@ -16,18 +16,18 @@
     const base::ListValue* args) {
   // Start the asynchronous load of the versions.
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&chromeos::version_loader::GetVersion,
                  chromeos::version_loader::VERSION_FULL),
       base::Bind(&VersionHandlerChromeOS::OnVersion,
                  weak_factory_.GetWeakPtr()));
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&chromeos::version_loader::GetFirmware),
       base::Bind(&VersionHandlerChromeOS::OnOSFirmware,
                  weak_factory_.GetWeakPtr()));
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&chromeos::version_loader::GetARCVersion),
       base::Bind(&VersionHandlerChromeOS::OnARCVersion,
                  weak_factory_.GetWeakPtr()));
diff --git a/chrome/browser/upgrade_detector_impl.cc b/chrome/browser/upgrade_detector_impl.cc
index b077698..5334ee4a 100644
--- a/chrome/browser/upgrade_detector_impl.cc
+++ b/chrome/browser/upgrade_detector_impl.cc
@@ -154,7 +154,7 @@
 UpgradeDetectorImpl::UpgradeDetectorImpl(const base::TickClock* tick_clock)
     : UpgradeDetector(tick_clock),
       blocking_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::TaskPriority::BACKGROUND,
+          {base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN,
            base::MayBlock()})),
       detect_upgrade_timer_(this->tick_clock()),
diff --git a/chrome/browser/vr/assets_loader.cc b/chrome/browser/vr/assets_loader.cc
index 970cda36..62e17fd 100644
--- a/chrome/browser/vr/assets_loader.cc
+++ b/chrome/browser/vr/assets_loader.cc
@@ -268,7 +268,7 @@
   DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
   DCHECK(component_ready_);
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&AssetsLoader::LoadAssetsTask, task_runner,
                      component_version_, component_install_dir_,
                      std::move(on_loaded)));
diff --git a/chrome/browser/web_applications/web_app.cc b/chrome/browser/web_applications/web_app.cc
index 911cec9..88f27a9 100644
--- a/chrome/browser/web_applications/web_app.cc
+++ b/chrome/browser/web_applications/web_app.cc
@@ -177,7 +177,7 @@
 
 scoped_refptr<base::TaskRunner> GetShortcutIOTaskRunner() {
   constexpr base::TaskTraits traits = {
-      base::MayBlock(), base::TaskPriority::BACKGROUND,
+      base::MayBlock(), base::TaskPriority::BEST_EFFORT,
       base::TaskShutdownBehavior::BLOCK_SHUTDOWN};
 
 #if defined(OS_WIN)
diff --git a/chrome/browser/web_applications/web_app_mac.mm b/chrome/browser/web_applications/web_app_mac.mm
index d95d609..c4409b4 100644
--- a/chrome/browser/web_applications/web_app_mac.mm
+++ b/chrome/browser/web_applications/web_app_mac.mm
@@ -1029,7 +1029,7 @@
     return false;
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&RecordAppShimErrorAndBuildShortcutInfo,
                      command_line.GetSwitchValuePath(app_mode::kAppShimError)),
       base::BindOnce(&RebuildAppAndLaunch));
diff --git a/chrome/browser/win/jumplist.cc b/chrome/browser/win/jumplist.cc
index 1a1d4d0..e604fb1 100644
--- a/chrome/browser/win/jumplist.cc
+++ b/chrome/browser/win/jumplist.cc
@@ -225,7 +225,7 @@
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})),
       delete_jumplisticons_task_runner_(
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND,
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})),
       weak_ptr_factory_(this) {
   DCHECK(Enabled());
diff --git a/chrome/common/conflicts/module_watcher_win.cc b/chrome/common/conflicts/module_watcher_win.cc
index bbb0ffdd..9a33505 100644
--- a/chrome/common/conflicts/module_watcher_win.cc
+++ b/chrome/common/conflicts/module_watcher_win.cc
@@ -167,7 +167,7 @@
   // doesn't slow down startup.
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::TaskPriority::BACKGROUND,
+      {base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&ModuleWatcher::EnumerateAlreadyLoadedModules,
                      base::SequencedTaskRunnerHandle::Get(),
diff --git a/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.cc b/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.cc
index 0b2f6a3..63dc560 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.cc
+++ b/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.cc
@@ -26,7 +26,7 @@
 
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&SandboxedDMGAnalyzer::PrepareFileToAnalyze, this));
 }
diff --git a/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.cc b/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.cc
index f9531cd..45f18b0 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.cc
+++ b/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.cc
@@ -31,7 +31,7 @@
 
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&SandboxedRarAnalyzer::PrepareFileToAnalyze, this));
 }
diff --git a/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.cc b/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.cc
index 7e1c2ec2..1526c77 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.cc
+++ b/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.cc
@@ -28,7 +28,7 @@
 
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&SandboxedZipAnalyzer::PrepareFileToAnalyze, this));
 }
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index 9dbacec..3654fb3 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -468,14 +468,14 @@
     ]
   },
 
-  "AutofillProfileEnabled": {
+  "AutofillAddressEnabled": {
     "os": ["win", "linux", "mac", "chromeos"],
     "can_be_recommended": true,
-    "test_policy": { "AutofillProfileEnabled": false },
+    "test_policy": { "AutofillAddressEnabled": false },
     "pref_mappings": [
       { "pref": "autofill.profile_enabled",
         "indicator_tests": [
-          { "policy": { "AutofillProfileEnabled": false } }
+          { "policy": { "AutofillAddressEnabled": false } }
         ]
       }
     ]
diff --git a/chromecast/browser/metrics/external_metrics.cc b/chromecast/browser/metrics/external_metrics.cc
index 7c39d07..7b2bf03 100644
--- a/chromecast/browser/metrics/external_metrics.cc
+++ b/chromecast/browser/metrics/external_metrics.cc
@@ -57,7 +57,7 @@
   // Note that CollectEvents accesses a global singleton, and thus
   // scheduling with CONTINUE_ON_SHUTDOWN might not be safe.
   return base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 }
 
diff --git a/chromecast/browser/url_request_context_factory.cc b/chromecast/browser/url_request_context_factory.cc
index 11cd84f..b1cd0a8 100644
--- a/chromecast/browser/url_request_context_factory.cc
+++ b/chromecast/browser/url_request_context_factory.cc
@@ -276,7 +276,7 @@
         url::kFileScheme,
         std::make_unique<net::FileProtocolHandler>(
             base::CreateTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                  base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})));
     DCHECK(set_protocol);
   }
diff --git a/chromecast/device/bluetooth/le/le_scan_manager_impl_test.cc b/chromecast/device/bluetooth/le/le_scan_manager_impl_test.cc
index 419867f..55f3b70 100644
--- a/chromecast/device/bluetooth/le/le_scan_manager_impl_test.cc
+++ b/chromecast/device/bluetooth/le/le_scan_manager_impl_test.cc
@@ -50,7 +50,7 @@
  protected:
   LeScanManagerTest()
       : io_task_runner_(base::CreateSingleThreadTaskRunnerWithTraits(
-            {base::TaskPriority::BACKGROUND, base::MayBlock()})),
+            {base::TaskPriority::BEST_EFFORT, base::MayBlock()})),
         le_scan_manager_(&le_scanner_) {
     le_scan_manager_.Initialize(io_task_runner_);
     le_scan_manager_.AddObserver(&mock_observer_);
diff --git a/chromeos/components/drivefs/fake_drivefs_launcher_client.cc b/chromeos/components/drivefs/fake_drivefs_launcher_client.cc
index 338c139..80f2e4d 100644
--- a/chromeos/components/drivefs/fake_drivefs_launcher_client.cc
+++ b/chromeos/components/drivefs/fake_drivefs_launcher_client.cc
@@ -56,7 +56,7 @@
     : chroot_path_(chroot_path),
       socket_path_(chroot_path_.Append(socket_path)) {
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&ConnectAsync, mojo::MakeRequest(&launcher_),
                      socket_path_.value()));
 
diff --git a/chromeos/dbus/fake_cros_disks_client.cc b/chromeos/dbus/fake_cros_disks_client.cc
index 9a8c381..88a239e 100644
--- a/chromeos/dbus/fake_cros_disks_client.cc
+++ b/chromeos/dbus/fake_cros_disks_client.cc
@@ -155,7 +155,7 @@
   if (mounted_paths_.erase(base::FilePath::FromUTF8Unsafe(device_path))) {
     base::PostTaskWithTraitsAndReply(
         FROM_HERE,
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
         base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                        base::FilePath::FromUTF8Unsafe(device_path),
diff --git a/chromeos/printing/ppd_cache.cc b/chromeos/printing/ppd_cache.cc
index 324679b..c3ee143 100644
--- a/chromeos/printing/ppd_cache.cc
+++ b/chromeos/printing/ppd_cache.cc
@@ -180,7 +180,7 @@
                            {base::TaskPriority::USER_VISIBLE, base::MayBlock(),
                             base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}),
                        base::CreateSequencedTaskRunnerWithTraits(
-                           {base::TaskPriority::BACKGROUND, base::MayBlock(),
+                           {base::TaskPriority::BEST_EFFORT, base::MayBlock(),
                             base::TaskShutdownBehavior::BLOCK_SHUTDOWN})));
 }
 
diff --git a/chromeos/process_proxy/process_proxy_registry.cc b/chromeos/process_proxy/process_proxy_registry.cc
index 97065d0..8fc11dc 100644
--- a/chromeos/process_proxy/process_proxy_registry.cc
+++ b/chromeos/process_proxy/process_proxy_registry.cc
@@ -75,8 +75,8 @@
 // static
 scoped_refptr<base::SequencedTaskRunner> ProcessProxyRegistry::GetTaskRunner() {
   static base::LazySequencedTaskRunner task_runner =
-      LAZY_SEQUENCED_TASK_RUNNER_INITIALIZER(
-          base::TaskTraits({base::MayBlock(), base::TaskPriority::BACKGROUND}));
+      LAZY_SEQUENCED_TASK_RUNNER_INITIALIZER(base::TaskTraits(
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
   return task_runner.Get();
 }
 
diff --git a/chromeos/settings/timezone_settings.cc b/chromeos/settings/timezone_settings.cc
index b483f980..0c99e0f6 100644
--- a/chromeos/settings/timezone_settings.cc
+++ b/chromeos/settings/timezone_settings.cc
@@ -394,7 +394,7 @@
   // It's safe to change the timezone config files in the background as the
   // following operations don't depend on the completion of the config change.
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                             base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
                            base::BindOnce(&SetTimezoneIDFromString, id));
   icu::TimeZone::setDefault(*known_timezone);
diff --git a/components/arc/arc_features_parser.cc b/components/arc/arc_features_parser.cc
index beea0d9..38dbb25 100644
--- a/components/arc/arc_features_parser.cc
+++ b/components/arc/arc_features_parser.cc
@@ -126,7 +126,7 @@
 void ArcFeaturesParser::GetArcFeatures(
     base::OnceCallback<void(base::Optional<ArcFeatures>)> callback) {
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&ReadOnFileThread, base::FilePath(kArcFeaturesJsonFile)),
       std::move(callback));
 }
diff --git a/components/assist_ranker/ranker_model_loader_impl.cc b/components/assist_ranker/ranker_model_loader_impl.cc
index 4159f7fd..f467f56 100644
--- a/components/assist_ranker/ranker_model_loader_impl.cc
+++ b/components/assist_ranker/ranker_model_loader_impl.cc
@@ -96,7 +96,7 @@
     GURL model_url,
     std::string uma_prefix)
     : background_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
       validate_model_cb_(std::move(validate_model_cb)),
       on_model_available_cb_(std::move(on_model_available_cb)),
diff --git a/components/autofill/content/common/autofill_types.mojom b/components/autofill/content/common/autofill_types.mojom
index c9ecc57..a45988d 100644
--- a/components/autofill/content/common/autofill_types.mojom
+++ b/components/autofill/content/common/autofill_types.mojom
@@ -130,7 +130,6 @@
   mojo_base.mojom.TextDirection text_direction;
   bool is_enabled;
   bool is_readonly;
-  bool is_default;
   mojo_base.mojom.String16 typed_value;
 
   array<mojo_base.mojom.String16> option_values;
@@ -232,10 +231,8 @@
   bool form_has_autofilled_value;
   mojo_base.mojom.String16 password_element;
   mojo_base.mojom.String16 password_value;
-  bool password_value_is_default;
   mojo_base.mojom.String16 new_password_element;
   mojo_base.mojom.String16 new_password_value;
-  bool new_password_value_is_default;
   bool new_password_marked_by_site;
   mojo_base.mojom.String16 confirmation_password_element;
   bool preferred;
diff --git a/components/autofill/content/common/autofill_types_struct_traits.cc b/components/autofill/content/common/autofill_types_struct_traits.cc
index fad95ddd..ffed78e 100644
--- a/components/autofill/content/common/autofill_types_struct_traits.cc
+++ b/components/autofill/content/common/autofill_types_struct_traits.cc
@@ -614,7 +614,6 @@
 
   out->is_enabled = data.is_enabled();
   out->is_readonly = data.is_readonly();
-  out->is_default = data.is_default();
   if (!data.ReadValue(&out->typed_value))
     return false;
 
@@ -789,13 +788,11 @@
     return false;
 
   out->form_has_autofilled_value = data.form_has_autofilled_value();
-  out->password_value_is_default = data.password_value_is_default();
 
   if (!data.ReadNewPasswordElement(&out->new_password_element) ||
       !data.ReadNewPasswordValue(&out->new_password_value))
     return false;
 
-  out->new_password_value_is_default = data.new_password_value_is_default();
   out->new_password_marked_by_site = data.new_password_marked_by_site();
 
   if (!data.ReadConfirmationPasswordElement(
diff --git a/components/autofill/content/common/autofill_types_struct_traits.h b/components/autofill/content/common/autofill_types_struct_traits.h
index 68d03e0..ccf7e56 100644
--- a/components/autofill/content/common/autofill_types_struct_traits.h
+++ b/components/autofill/content/common/autofill_types_struct_traits.h
@@ -216,10 +216,6 @@
     return r.is_readonly;
   }
 
-  static bool is_default(const autofill::FormFieldData& r) {
-    return r.is_default;
-  }
-
   static const base::string16& typed_value(const autofill::FormFieldData& r) {
     return r.typed_value;
   }
@@ -545,10 +541,6 @@
     return r.password_value;
   }
 
-  static bool password_value_is_default(const autofill::PasswordForm& r) {
-    return r.password_value_is_default;
-  }
-
   static const base::string16& new_password_element(
       const autofill::PasswordForm& r) {
     return r.new_password_element;
@@ -559,10 +551,6 @@
     return r.new_password_value;
   }
 
-  static bool new_password_value_is_default(const autofill::PasswordForm& r) {
-    return r.new_password_value_is_default;
-  }
-
   static bool new_password_marked_by_site(const autofill::PasswordForm& r) {
     return r.new_password_marked_by_site;
   }
diff --git a/components/autofill/content/common/autofill_types_struct_traits_unittest.cc b/components/autofill/content/common/autofill_types_struct_traits_unittest.cc
index f0f8abf..2efc2973 100644
--- a/components/autofill/content/common/autofill_types_struct_traits_unittest.cc
+++ b/components/autofill/content/common/autofill_types_struct_traits_unittest.cc
@@ -84,10 +84,8 @@
   form->form_has_autofilled_value = true;
   form->password_element = base::ASCIIToUTF16("password");
   form->password_value = base::ASCIIToUTF16("test");
-  form->password_value_is_default = true;
   form->new_password_element = base::ASCIIToUTF16("new_password");
   form->new_password_value = base::ASCIIToUTF16("new_password_value");
-  form->new_password_value_is_default = false;
   form->new_password_marked_by_site = false;
   form->new_password_element = base::ASCIIToUTF16("confirmation_password");
   form->preferred = false;
diff --git a/components/autofill/content/renderer/form_autofill_util.cc b/components/autofill/content/renderer/form_autofill_util.cc
index 5981dc4..e480385 100644
--- a/components/autofill/content/renderer/form_autofill_util.cc
+++ b/components/autofill/content/renderer/form_autofill_util.cc
@@ -1528,7 +1528,6 @@
     field->text_direction = GetTextDirectionForElement(element);
     field->is_enabled = element.IsEnabled();
     field->is_readonly = element.IsReadOnly();
-    field->is_default = element.GetAttribute("value") == element.Value();
   }
 
   if (IsAutofillableInputElement(input_element)) {
diff --git a/components/autofill/content/renderer/form_autofill_util_browsertest.cc b/components/autofill/content/renderer/form_autofill_util_browsertest.cc
index ac1f408..29879265 100644
--- a/components/autofill/content/renderer/form_autofill_util_browsertest.cc
+++ b/components/autofill/content/renderer/form_autofill_util_browsertest.cc
@@ -344,55 +344,6 @@
   }
 }
 
-TEST_F(FormAutofillUtilsTest, IsDefault) {
-  LoadHTML(
-      "<input type='text' id='name1' value='123'>"
-      "<input type='password' id='name2'>"
-      "<input type='password' id='name3'>"
-      "<input type='text' id='name4' value='321'>");
-
-  const std::vector<blink::WebElement> dummy_fieldsets;
-
-  WebLocalFrame* web_frame = GetMainFrame();
-  ASSERT_TRUE(web_frame);
-
-  web_frame->GetDocument()
-      .GetElementById("name1")
-      .To<blink::WebInputElement>()
-      .SetAutofillValue("abc");
-  web_frame->GetDocument()
-      .GetElementById("name3")
-      .To<blink::WebInputElement>()
-      .SetAutofillValue("abc");
-
-  std::vector<blink::WebFormControlElement> control_elements;
-  blink::WebElementCollection inputs =
-      web_frame->GetDocument().GetElementsByHTMLTagName("input");
-  for (blink::WebElement element = inputs.FirstItem(); !element.IsNull();
-       element = inputs.NextItem()) {
-    control_elements.push_back(element.To<blink::WebFormControlElement>());
-  }
-
-  autofill::FormData target;
-  EXPECT_TRUE(
-      autofill::form_util::UnownedPasswordFormElementsAndFieldSetsToFormData(
-          dummy_fieldsets, control_elements, nullptr, web_frame->GetDocument(),
-          nullptr, autofill::form_util::EXTRACT_NONE, &target, nullptr));
-  const struct {
-    const char* const name;
-    bool is_default;
-  } kExpectedFields[] = {
-      {"name1", false}, {"name2", true}, {"name3", false}, {"name4", true},
-  };
-  const size_t number_of_cases = arraysize(kExpectedFields);
-  ASSERT_EQ(number_of_cases, target.fields.size());
-  for (size_t i = 0; i < number_of_cases; ++i) {
-    EXPECT_EQ(base::UTF8ToUTF16(kExpectedFields[i].name),
-              target.fields[i].name);
-    EXPECT_EQ(kExpectedFields[i].is_default, target.fields[i].is_default);
-  }
-}
-
 TEST_F(FormAutofillUtilsTest, IsFocusable) {
   LoadHTML(
       "<input type='text' id='name1' value='123'>"
diff --git a/components/autofill/content/renderer/password_form_conversion_utils.cc b/components/autofill/content/renderer/password_form_conversion_utils.cc
index 0c8edea3..7a80e06 100644
--- a/components/autofill/content/renderer/password_form_conversion_utils.cc
+++ b/components/autofill/content/renderer/password_form_conversion_utils.cc
@@ -799,7 +799,6 @@
     password_form->new_password_element =
         FieldName(new_password, "anonymous_new_password");
     password_form->new_password_value = new_password->value;
-    password_form->new_password_value_is_default = new_password->is_default;
     if (autocomplete_cache.RetrieveFor(new_password) ==
         AutocompleteFlag::NEW_PASSWORD) {
       password_form->new_password_marked_by_site = true;
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn
index d4e1cde..81657711 100644
--- a/components/autofill/core/browser/BUILD.gn
+++ b/components/autofill/core/browser/BUILD.gn
@@ -228,12 +228,12 @@
 
   if (!is_ios) {
     sources += [
+      "autofill_address_policy_handler.cc",
+      "autofill_address_policy_handler.h",
       "autofill_credit_card_policy_handler.cc",
       "autofill_credit_card_policy_handler.h",
       "autofill_policy_handler.cc",
       "autofill_policy_handler.h",
-      "autofill_profile_policy_handler.cc",
-      "autofill_profile_policy_handler.h",
     ]
   }
 
@@ -475,9 +475,9 @@
 
   if (!is_ios) {
     sources += [
+      "autofill_address_policy_handler_unittest.cc",
       "autofill_credit_card_policy_handler_unittest.cc",
       "autofill_policy_handler_unittest.cc",
-      "autofill_profile_policy_handler_unittest.cc",
     ]
   }
 
@@ -547,3 +547,18 @@
     ":password_generator_fips181",
   ]
 }
+
+if (use_libfuzzer) {
+  fuzzer_test("form_structure_process_query_response_fuzzer") {
+    sources = [
+      "form_structure_process_query_response_fuzzer.cc",
+    ]
+    deps = [
+      ":browser",
+      "//base:base",
+      "//components/autofill/core/browser/proto",
+      "//components/autofill/core/common",
+      "//third_party/libprotobuf-mutator",
+    ]
+  }
+}
diff --git a/components/autofill/core/browser/address_normalizer_impl.cc b/components/autofill/core/browser/address_normalizer_impl.cc
index e423905..4eac6d9d 100644
--- a/components/autofill/core/browser/address_normalizer_impl.cc
+++ b/components/autofill/core/browser/address_normalizer_impl.cc
@@ -158,7 +158,7 @@
   // of |storage| accesses an ObserverList that lives on the current sequence.
   // https://crbug.com/829122
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(
           &CreateAddressValidator, std::move(source),
           DeleteOnTaskRunnerStorageUniquePtr(
diff --git a/components/autofill/core/browser/autofill_profile_policy_handler.cc b/components/autofill/core/browser/autofill_address_policy_handler.cc
similarity index 74%
rename from components/autofill/core/browser/autofill_profile_policy_handler.cc
rename to components/autofill/core/browser/autofill_address_policy_handler.cc
index 295bfcb..90e134c 100644
--- a/components/autofill/core/browser/autofill_profile_policy_handler.cc
+++ b/components/autofill/core/browser/autofill_address_policy_handler.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/autofill/core/browser/autofill_profile_policy_handler.h"
+#include "components/autofill/core/browser/autofill_address_policy_handler.h"
 
 #include "base/values.h"
 #include "components/autofill/core/common/autofill_pref_names.h"
@@ -12,13 +12,13 @@
 
 namespace autofill {
 
-AutofillProfilePolicyHandler::AutofillProfilePolicyHandler()
-    : TypeCheckingPolicyHandler(policy::key::kAutofillProfileEnabled,
+AutofillAddressPolicyHandler::AutofillAddressPolicyHandler()
+    : TypeCheckingPolicyHandler(policy::key::kAutofillAddressEnabled,
                                 base::Value::Type::BOOLEAN) {}
 
-AutofillProfilePolicyHandler::~AutofillProfilePolicyHandler() {}
+AutofillAddressPolicyHandler::~AutofillAddressPolicyHandler() {}
 
-void AutofillProfilePolicyHandler::ApplyPolicySettings(
+void AutofillAddressPolicyHandler::ApplyPolicySettings(
     const policy::PolicyMap& policies,
     PrefValueMap* prefs) {
   const base::Value* value = policies.GetValue(policy_name());
diff --git a/components/autofill/core/browser/autofill_address_policy_handler.h b/components/autofill/core/browser/autofill_address_policy_handler.h
new file mode 100644
index 0000000..20bb8847
--- /dev/null
+++ b/components/autofill/core/browser/autofill_address_policy_handler.h
@@ -0,0 +1,30 @@
+// Copyright 2018 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.
+
+#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ADDRESS_POLICY_HANDLER_H_
+#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ADDRESS_POLICY_HANDLER_H_
+
+#include "base/macros.h"
+#include "components/policy/core/browser/configuration_policy_handler.h"
+#include "components/policy/policy_export.h"
+
+namespace autofill {
+
+// ConfigurationPolicyHandler for the AutofillAddressEnabled policy.
+class AutofillAddressPolicyHandler : public policy::TypeCheckingPolicyHandler {
+ public:
+  AutofillAddressPolicyHandler();
+  ~AutofillAddressPolicyHandler() override;
+
+  // ConfigurationPolicyHandler methods:
+  void ApplyPolicySettings(const policy::PolicyMap& policies,
+                           PrefValueMap* prefs) override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(AutofillAddressPolicyHandler);
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ADDRESS_POLICY_HANDLER_H_
diff --git a/components/autofill/core/browser/autofill_profile_policy_handler_unittest.cc b/components/autofill/core/browser/autofill_address_policy_handler_unittest.cc
similarity index 76%
rename from components/autofill/core/browser/autofill_profile_policy_handler_unittest.cc
rename to components/autofill/core/browser/autofill_address_policy_handler_unittest.cc
index b6d14fa1..4ded6a0 100644
--- a/components/autofill/core/browser/autofill_profile_policy_handler_unittest.cc
+++ b/components/autofill/core/browser/autofill_address_policy_handler_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/autofill/core/browser/autofill_profile_policy_handler.h"
+#include "components/autofill/core/browser/autofill_address_policy_handler.h"
 
 #include <memory>
 
@@ -16,26 +16,26 @@
 
 namespace autofill {
 
-// Test cases for the Autofill profiles policy setting.
-class AutofillProfilePolicyHandlerTest : public testing::Test {};
+// Test cases for the Autofill address policy setting.
+class AutofillAddressPolicyHandlerTest : public testing::Test {};
 
-TEST_F(AutofillProfilePolicyHandlerTest, Default) {
+TEST_F(AutofillAddressPolicyHandlerTest, Default) {
   policy::PolicyMap policy;
   PrefValueMap prefs;
-  AutofillProfilePolicyHandler handler;
+  AutofillAddressPolicyHandler handler;
   handler.ApplyPolicySettings(policy, &prefs);
   EXPECT_FALSE(
       prefs.GetValue(autofill::prefs::kAutofillProfileEnabled, nullptr));
 }
 
-TEST_F(AutofillProfilePolicyHandlerTest, Enabled) {
+TEST_F(AutofillAddressPolicyHandlerTest, Enabled) {
   policy::PolicyMap policy;
-  policy.Set(policy::key::kAutofillProfileEnabled,
+  policy.Set(policy::key::kAutofillAddressEnabled,
              policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
              policy::POLICY_SOURCE_CLOUD, std::make_unique<base::Value>(true),
              nullptr);
   PrefValueMap prefs;
-  AutofillProfilePolicyHandler handler;
+  AutofillAddressPolicyHandler handler;
   handler.ApplyPolicySettings(policy, &prefs);
 
   // Enabling Autofill for profiles should not set the prefs.
@@ -43,14 +43,14 @@
       prefs.GetValue(autofill::prefs::kAutofillProfileEnabled, nullptr));
 }
 
-TEST_F(AutofillProfilePolicyHandlerTest, Disabled) {
+TEST_F(AutofillAddressPolicyHandlerTest, Disabled) {
   policy::PolicyMap policy;
-  policy.Set(policy::key::kAutofillProfileEnabled,
+  policy.Set(policy::key::kAutofillAddressEnabled,
              policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
              policy::POLICY_SOURCE_CLOUD, std::make_unique<base::Value>(false),
              nullptr);
   PrefValueMap prefs;
-  AutofillProfilePolicyHandler handler;
+  AutofillAddressPolicyHandler handler;
   handler.ApplyPolicySettings(policy, &prefs);
 
   // Disabling Autofill for profiles should switch the prefs to managed.
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
index 906ef7e..3d80a38 100644
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -426,7 +426,7 @@
   FormStructure* raw_form = form_structure.get();
   TimeTicks loaded_timestamp = forms_loaded_timestamps_[raw_form->ToFormData()];
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&AutofillManager::DeterminePossibleFieldTypesForUpload,
                      copied_profiles, copied_credit_cards, app_locale_,
                      raw_form),
diff --git a/components/autofill/core/browser/autofill_profile_policy_handler.h b/components/autofill/core/browser/autofill_profile_policy_handler.h
deleted file mode 100644
index 7784b92..0000000
--- a/components/autofill/core/browser/autofill_profile_policy_handler.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2018 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.
-
-#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_POLICY_HANDLER_H_
-#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_POLICY_HANDLER_H_
-
-#include "base/macros.h"
-#include "components/policy/core/browser/configuration_policy_handler.h"
-#include "components/policy/policy_export.h"
-
-namespace autofill {
-
-// ConfigurationPolicyHandler for the AutofillPolicyEnabled policy.
-class AutofillProfilePolicyHandler : public policy::TypeCheckingPolicyHandler {
- public:
-  AutofillProfilePolicyHandler();
-  ~AutofillProfilePolicyHandler() override;
-
-  // ConfigurationPolicyHandler methods:
-  void ApplyPolicySettings(const policy::PolicyMap& policies,
-                           PrefValueMap* prefs) override;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(AutofillProfilePolicyHandler);
-};
-
-}  // namespace autofill
-
-#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_POLICY_HANDLER_H_
diff --git a/components/autofill/core/browser/form_structure.cc b/components/autofill/core/browser/form_structure.cc
index 0a5d3d2..85747f24 100644
--- a/components/autofill/core/browser/form_structure.cc
+++ b/components/autofill/core/browser/form_structure.cc
@@ -523,6 +523,14 @@
 
   VLOG(1) << "Autofill query response was successfully parsed:\n" << response;
 
+  ProcessQueryResponse(response, forms, form_interactions_ukm_logger);
+}
+
+// static
+void FormStructure::ProcessQueryResponse(
+    const AutofillQueryResponseContents& response,
+    const std::vector<FormStructure*>& forms,
+    AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger) {
   AutofillMetrics::LogServerQueryMetric(AutofillMetrics::QUERY_RESPONSE_PARSED);
 
   bool heuristics_detected_fillable_field = false;
diff --git a/components/autofill/core/browser/form_structure.h b/components/autofill/core/browser/form_structure.h
index 7f3e97c..3635b15 100644
--- a/components/autofill/core/browser/form_structure.h
+++ b/components/autofill/core/browser/form_structure.h
@@ -80,12 +80,21 @@
                                  std::vector<std::string>* encoded_signatures,
                                  autofill::AutofillQueryContents* query);
 
-  // Parses the field types from the server query response. |forms| must be the
-  // same as the one passed to EncodeQueryRequest when constructing the query.
+  // Parses response as AutofillQueryResponseContents proto and calls
+  // ProcessQueryResponse.
   static void ParseQueryResponse(std::string response,
                                  const std::vector<FormStructure*>& forms,
                                  AutofillMetrics::FormInteractionsUkmLogger*);
 
+  // Parses the field types from the server query response. |forms| must be the
+  // same as the one passed to EncodeQueryRequest when constructing the query.
+  // |form_interactions_ukm_logger| is used to provide logs to UKM and can be
+  // null in tests.
+  static void ProcessQueryResponse(
+      const AutofillQueryResponseContents& response,
+      const std::vector<FormStructure*>& forms,
+      AutofillMetrics::FormInteractionsUkmLogger* form_interactions_ukm_logger);
+
   // Returns predictions using the details from the given |form_structures| and
   // their fields' predicted types.
   static std::vector<FormDataPredictions> GetFieldTypePredictions(
diff --git a/components/autofill/core/browser/form_structure_process_query_response_fuzzer.cc b/components/autofill/core/browser/form_structure_process_query_response_fuzzer.cc
new file mode 100644
index 0000000..b684f2f6
--- /dev/null
+++ b/components/autofill/core/browser/form_structure_process_query_response_fuzzer.cc
@@ -0,0 +1,50 @@
+// Copyright 2018 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.
+
+#include <stdlib.h>
+
+#include <iostream>
+
+#include "base/strings/utf_string_conversions.h"
+#include "components/autofill/core/browser/form_structure.h"
+#include "components/autofill/core/common/form_data.h"
+#include "components/autofill/core/common/form_field_data.h"
+#include "testing/libfuzzer/proto/lpm_interface.h"
+
+namespace autofill {
+namespace {
+
+using ::base::ASCIIToUTF16;
+
+void AddField(const std::string& label,
+              const std::string& name,
+              const std::string& control_type,
+              FormData* form_data) {
+  FormFieldData field;
+  field.label = ASCIIToUTF16(label);
+  field.name = ASCIIToUTF16(name);
+  field.form_control_type = control_type;
+
+  form_data->fields.push_back(field);
+}
+
+// We run ProcessQueryResponse twice with hardcoded forms vectors. Ideally we
+// should also generate forms vectors by using fuzzing, but at the moment we use
+// simplified approach. There is no specific reason to use those two hardcoded
+// forms vectors, so it can be changed if needed.
+DEFINE_BINARY_PROTO_FUZZER(const AutofillQueryResponseContents& response) {
+  std::vector<FormStructure*> forms;
+  FormStructure::ProcessQueryResponse(response, forms, nullptr);
+
+  FormData form_data;
+  AddField("username", "username", "text", &form_data);
+  AddField("password", "password", "password", &form_data);
+
+  FormStructure form(form_data);
+  forms.push_back(&form);
+  FormStructure::ProcessQueryResponse(response, forms, nullptr);
+}
+
+}  // namespace
+}  // namespace autofill
diff --git a/components/autofill/core/browser/proto/BUILD.gn b/components/autofill/core/browser/proto/BUILD.gn
index c6cb42e..04f9f54 100644
--- a/components/autofill/core/browser/proto/BUILD.gn
+++ b/components/autofill/core/browser/proto/BUILD.gn
@@ -2,9 +2,9 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//third_party/protobuf/proto_library.gni")
+import("//third_party/libprotobuf-mutator/fuzzable_proto_library.gni")
 
-proto_library("proto") {
+fuzzable_proto_library("proto") {
   sources = [
     "autofill_sync.proto",
     "password_requirements.proto",
diff --git a/components/autofill/core/common/form_field_data.cc b/components/autofill/core/common/form_field_data.cc
index 69f2f3e4..afc7ae8 100644
--- a/components/autofill/core/common/form_field_data.cc
+++ b/components/autofill/core/common/form_field_data.cc
@@ -147,7 +147,6 @@
       properties_mask(0),
       is_enabled(false),
       is_readonly(false),
-      is_default(false),
       label_source(LabelSource::UNKNOWN) {}
 
 FormFieldData::FormFieldData(const FormFieldData& other) = default;
@@ -455,7 +454,6 @@
             << "text_direction=" << field.text_direction << " "
             << "is_enabled=" << field.is_enabled << " "
             << "is_readonly=" << field.is_readonly << " "
-            << "is_default=" << field.is_default << " "
             << "typed_value=" << field.typed_value << " "
             << "properties_mask=" << field.properties_mask << " "
             << "label_source=" << field.label_source;
diff --git a/components/autofill/core/common/form_field_data.h b/components/autofill/core/common/form_field_data.h
index 4897b6b7..4e54cf3 100644
--- a/components/autofill/core/common/form_field_data.h
+++ b/components/autofill/core/common/form_field_data.h
@@ -149,7 +149,6 @@
   // serialised for storage.
   bool is_enabled;
   bool is_readonly;
-  bool is_default;
   base::string16 typed_value;
 
   // For the HTML snippet |<option value="US">United States</option>|, the
diff --git a/components/autofill/core/common/password_form.cc b/components/autofill/core/common/password_form.cc
index 9fc16b1..6e6a16a 100644
--- a/components/autofill/core/common/password_form.cc
+++ b/components/autofill/core/common/password_form.cc
@@ -36,14 +36,10 @@
   target->SetString("username_value", form.username_value);
   target->SetString("password_elem", form.password_element);
   target->SetString("password_value", form.password_value);
-  target->SetBoolean("password_value_is_default",
-                     form.password_value_is_default);
   target->SetString("new_password_element", form.new_password_element);
   target->SetInteger("password_element_renderer_id",
                      form.password_element_renderer_id);
   target->SetString("new_password_value", form.new_password_value);
-  target->SetBoolean("new_password_value_is_default",
-                     form.new_password_value_is_default);
   target->SetBoolean("new_password_marked_by_site",
                      form.new_password_marked_by_site);
   target->SetString("other_possible_usernames",
@@ -86,8 +82,6 @@
     : scheme(SCHEME_HTML),
       username_marked_by_site(false),
       form_has_autofilled_value(false),
-      password_value_is_default(false),
-      new_password_value_is_default(false),
       new_password_marked_by_site(false),
       preferred(false),
       blacklisted_by_user(false),
diff --git a/components/autofill/core/common/password_form.h b/components/autofill/core/common/password_form.h
index cc168863..06c316d 100644
--- a/components/autofill/core/common/password_form.h
+++ b/components/autofill/core/common/password_form.h
@@ -226,10 +226,6 @@
   // When parsing an HTML form, this is typically empty.
   base::string16 password_value;
 
-  // Whether the password value is the same as specified in the "value"
-  // attribute of the input element. Only used in the renderer.
-  bool password_value_is_default;
-
   // If the form was a sign-up or a change password form, the name of the input
   // element corresponding to the new password. Optional, and not persisted.
   base::string16 new_password_element;
@@ -241,10 +237,6 @@
   // The new password. Optional, and not persisted.
   base::string16 new_password_value;
 
-  // Whether the password value is the same as specified in the "value"
-  // attribute of the input element. Only used in the renderer.
-  bool new_password_value_is_default;
-
   // Whether the |new_password_element| has an autocomplete=new-password
   // attribute. This is only used in parsed HTML forms.
   bool new_password_marked_by_site;
diff --git a/components/browser_watcher/exit_code_watcher_win_unittest.cc b/components/browser_watcher/exit_code_watcher_win_unittest.cc
index e5edaa28..2b8845b 100644
--- a/components/browser_watcher/exit_code_watcher_win_unittest.cc
+++ b/components/browser_watcher/exit_code_watcher_win_unittest.cc
@@ -119,16 +119,6 @@
 
 }  // namespace
 
-TEST_F(ExitCodeWatcherTest, ExitCodeWatcherInvalidHandleFailsInit) {
-  ExitCodeWatcher watcher(kRegistryPath);
-
-  // A waitable event has a non process-handle.
-  base::Process event(::CreateEvent(nullptr, false, false, nullptr));
-
-  // A non-process handle should fail.
-  EXPECT_FALSE(watcher.Initialize(std::move(event)));
-}
-
 TEST_F(ExitCodeWatcherTest, ExitCodeWatcherNoAccessHandleFailsInit) {
   ExitCodeWatcher watcher(kRegistryPath);
 
diff --git a/components/browser_watcher/watcher_metrics_provider_win.cc b/components/browser_watcher/watcher_metrics_provider_win.cc
index 3850f07f..0f633a6 100644
--- a/components/browser_watcher/watcher_metrics_provider_win.cc
+++ b/components/browser_watcher/watcher_metrics_provider_win.cc
@@ -168,7 +168,7 @@
 // file I/O.
 scoped_refptr<base::TaskRunner> CreateBackgroundTaskRunner() {
   return base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 }
 
diff --git a/components/cdm/browser/cdm_message_filter_android.cc b/components/cdm/browser/cdm_message_filter_android.cc
index fc66fab20..26470f8 100644
--- a/components/cdm/browser/cdm_message_filter_android.cc
+++ b/components/cdm/browser/cdm_message_filter_android.cc
@@ -100,7 +100,7 @@
     bool force_to_support_secure_codecs)
     : BrowserMessageFilter(EncryptedMediaMsgStart),
       task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       can_persist_data_(can_persist_data),
       force_to_support_secure_codecs_(force_to_support_secure_codecs) {}
 
diff --git a/components/component_updater/component_installer.cc b/components/component_updater/component_installer.cc
index 285f2739..39830a5 100644
--- a/components/component_updater/component_installer.cc
+++ b/components/component_updater/component_installer.cc
@@ -62,7 +62,7 @@
                                   base::OnceClosure callback) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 
   if (!installer_policy_) {
diff --git a/components/component_updater/crl_set_remover.cc b/components/component_updater/crl_set_remover.cc
index 6326033..c56b6c82 100644
--- a/components/component_updater/crl_set_remover.cc
+++ b/components/component_updater/crl_set_remover.cc
@@ -12,7 +12,7 @@
 
 void DeleteLegacyCRLSet(const base::FilePath& user_data_dir) {
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                      user_data_dir.Append(
                          FILE_PATH_LITERAL("Certificate Revocation Lists")),
diff --git a/components/crash/content/browser/child_exit_observer_android.cc b/components/crash/content/browser/child_exit_observer_android.cc
index c3f2ff9..ebd387de 100644
--- a/components/crash/content/browser/child_exit_observer_android.cc
+++ b/components/crash/content/browser/child_exit_observer_android.cc
@@ -152,7 +152,7 @@
     browser_child_process_info_.erase(it);
   } else {
     info.process_host_id = data.id;
-    info.pid = data.handle;
+    info.pid = data.GetHandle();
     info.process_type = static_cast<content::ProcessType>(data.process_type);
     info.app_state = base::android::ApplicationStatusListener::GetState();
     info.normal_termination = true;
@@ -167,7 +167,7 @@
   DCHECK(!base::ContainsKey(browser_child_process_info_, data.id));
   TerminationInfo info;
   info.process_host_id = data.id;
-  info.pid = data.handle;
+  info.pid = data.GetHandle();
   info.process_type = static_cast<content::ProcessType>(data.process_type);
   info.app_state = base::android::ApplicationStatusListener::GetState();
   PopulateTerminationInfo(content_info, &info);
diff --git a/components/crash/content/browser/child_process_crash_observer_android.cc b/components/crash/content/browser/child_process_crash_observer_android.cc
index 28aada7..d886694 100644
--- a/components/crash/content/browser/child_process_crash_observer_android.cc
+++ b/components/crash/content/browser/child_process_crash_observer_android.cc
@@ -41,7 +41,7 @@
   // NOTIFICATION_RENDERER_PROCESS_CLOSED.
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&breakpad::CrashDumpManager::ProcessMinidumpFileFromChild,
                  base::Unretained(breakpad::CrashDumpManager::GetInstance()),
                  crash_dump_dir_, info));
diff --git a/components/crash/content/browser/crash_dump_manager_android_unittest.cc b/components/crash/content/browser/crash_dump_manager_android_unittest.cc
index d378372..6597adfd 100644
--- a/components/crash/content/browser/crash_dump_manager_android_unittest.cc
+++ b/components/crash/content/browser/crash_dump_manager_android_unittest.cc
@@ -146,7 +146,7 @@
   termination_info.was_killed_intentionally_by_browser = false;
   termination_info.was_oom_protected_status = true;
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&CrashDumpManagerTest::CreateAndProcessCrashDump,
                      termination_info, "Some non-empty crash data"));
   observer.WaitForProcessed();
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
index 420249d..b31d72a 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
@@ -67,7 +67,7 @@
 base::LazySequencedTaskRunner g_get_network_id_task_runner =
     LAZY_SEQUENCED_TASK_RUNNER_INITIALIZER(
         base::TaskTraits(base::MayBlock(),
-                         base::TaskPriority::BACKGROUND,
+                         base::TaskPriority::BEST_EFFORT,
                          base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN));
 #endif
 
diff --git a/components/download/database/download_db_impl.cc b/components/download/database/download_db_impl.cc
index 6a03442..da53918 100644
--- a/components/download/database/download_db_impl.cc
+++ b/components/download/database/download_db_impl.cc
@@ -48,7 +48,7 @@
           std::make_unique<
               leveldb_proto::ProtoDatabaseImpl<download_pb::DownloadDBEntry>>(
               base::CreateSequencedTaskRunnerWithTraits(
-                  {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                  {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                    base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}))) {}
 
 DownloadDBImpl::DownloadDBImpl(
diff --git a/components/download/database/in_progress/in_progress_cache_impl_unittest.cc b/components/download/database/in_progress/in_progress_cache_impl_unittest.cc
index 9bad197..087b2c7 100644
--- a/components/download/database/in_progress/in_progress_cache_impl_unittest.cc
+++ b/components/download/database/in_progress/in_progress_cache_impl_unittest.cc
@@ -43,7 +43,7 @@
     base::FilePath file_path(kInProgressCachePath);
     scoped_refptr<base::SequencedTaskRunner> task_runner =
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN});
     cache_ = std::make_unique<InProgressCacheImpl>(file_path, task_runner);
   }
diff --git a/components/download/internal/common/in_progress_download_manager.cc b/components/download/internal/common/in_progress_download_manager.cc
index f8d8ba4..a0aec5f 100644
--- a/components/download/internal/common/in_progress_download_manager.cc
+++ b/components/download/internal/common/in_progress_download_manager.cc
@@ -293,7 +293,7 @@
             ? base::FilePath()
             : metadata_cache_dir.Append(kDownloadMetadataStoreFilename),
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}));
     download_metadata_cache_->Initialize(base::BindOnce(
         &InProgressDownloadManager::OnInitialized, weak_factory_.GetWeakPtr(),
diff --git a/components/favicon/core/large_icon_service.cc b/components/favicon/core/large_icon_service.cc
index 4edb822b..7990fdba 100644
--- a/components/favicon/core/large_icon_service.cc
+++ b/components/favicon/core/large_icon_service.cc
@@ -336,7 +336,7 @@
       raw_bitmap_callback_(raw_bitmap_callback),
       image_callback_(image_callback),
       background_task_runner_(base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
       tracker_(tracker),
       fallback_icon_style_(
diff --git a/components/feed/core/feed_image_database.cc b/components/feed/core/feed_image_database.cc
index d0ec8ac..e6a180e 100644
--- a/components/feed/core/feed_image_database.cc
+++ b/components/feed/core/feed_image_database.cc
@@ -36,7 +36,7 @@
           database_dir,
           std::make_unique<leveldb_proto::ProtoDatabaseImpl<CachedImageProto>>(
               base::CreateSequencedTaskRunnerWithTraits(
-                  {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                  {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                    base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}))) {}
 
 FeedImageDatabase::FeedImageDatabase(
diff --git a/components/feed/core/feed_storage_database.cc b/components/feed/core/feed_storage_database.cc
index 5a55ea9..105defb 100644
--- a/components/feed/core/feed_storage_database.cc
+++ b/components/feed/core/feed_storage_database.cc
@@ -102,7 +102,7 @@
           database_folder,
           std::make_unique<leveldb_proto::ProtoDatabaseImpl<FeedStorageProto>>(
               base::CreateSequencedTaskRunnerWithTraits(
-                  {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                  {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                    base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}))) {}
 
 FeedStorageDatabase::FeedStorageDatabase(
diff --git a/components/feedback/feedback_data.cc b/components/feedback/feedback_data.cc
index 54b8c8a..6d2cd94 100644
--- a/components/feedback/feedback_data.cc
+++ b/components/feedback/feedback_data.cc
@@ -71,7 +71,7 @@
     ++pending_op_count_;
     AddLogs(std::move(sys_info));
     base::PostTaskWithTraitsAndReply(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(&FeedbackData::CompressLogs, this),
         base::BindOnce(&FeedbackData::OnCompressComplete, this));
   }
@@ -85,7 +85,7 @@
     return;
   ++pending_op_count_;
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&FeedbackData::CompressFile, this,
                      base::FilePath(kHistogramsFilename),
                      kHistogramsAttachmentName, std::move(histograms)),
@@ -102,7 +102,7 @@
   base::FilePath attached_file =
                   base::FilePath::FromUTF8Unsafe(attached_filename_);
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&FeedbackData::CompressFile, this, attached_file,
                      std::string(), std::move(attached_filedata)),
       base::BindOnce(&FeedbackData::OnCompressComplete, this));
diff --git a/components/feedback/feedback_uploader_factory.cc b/components/feedback/feedback_uploader_factory.cc
index f446d03..ce79604 100644
--- a/components/feedback/feedback_uploader_factory.cc
+++ b/components/feedback/feedback_uploader_factory.cc
@@ -33,7 +33,7 @@
   // Uses a BLOCK_SHUTDOWN file task runner because we really don't want to
   // lose reports or corrupt their files.
   return base::CreateSingleThreadTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 }
 
diff --git a/components/heap_profiling/client_connection_manager.cc b/components/heap_profiling/client_connection_manager.cc
index cecb5c27..4d998d3d 100644
--- a/components/heap_profiling/client_connection_manager.cc
+++ b/components/heap_profiling/client_connection_manager.cc
@@ -165,7 +165,7 @@
   for (content::BrowserChildProcessHostIterator browser_child_iter;
        !browser_child_iter.Done(); ++browser_child_iter) {
     const content::ChildProcessData& data = browser_child_iter.GetData();
-    if (base::GetProcId(data.handle) == pid) {
+    if (base::GetProcId(data.GetHandle()) == pid) {
       StartProfilingNonRendererChildOnIOThread(controller, data, pid);
       return;
     }
@@ -188,9 +188,9 @@
        !browser_child_iter.Done(); ++browser_child_iter) {
     const content::ChildProcessData& data = browser_child_iter.GetData();
     if (ShouldProfileNonRendererProcessType(mode, data.process_type) &&
-        data.handle != base::kNullProcessHandle) {
-      StartProfilingNonRendererChildOnIOThread(controller, data,
-                                               base::GetProcId(data.handle));
+        data.IsHandleValid()) {
+      StartProfilingNonRendererChildOnIOThread(
+          controller, data, base::GetProcId(data.GetHandle()));
     }
   }
 }
@@ -303,7 +303,7 @@
       ->PostTask(
           FROM_HERE,
           base::BindOnce(&StartProfilingNonRendererChildOnIOThread, controller_,
-                         data, base::GetProcId(data.handle)));
+                         data.Duplicate(), base::GetProcId(data.GetHandle())));
 }
 
 void ClientConnectionManager::Observe(
diff --git a/components/image_fetcher/ios/ios_image_data_fetcher_wrapper.mm b/components/image_fetcher/ios/ios_image_data_fetcher_wrapper.mm
index aaf955d..2cd5519 100644
--- a/components/image_fetcher/ios/ios_image_data_fetcher_wrapper.mm
+++ b/components/image_fetcher/ios/ios_image_data_fetcher_wrapper.mm
@@ -72,7 +72,7 @@
     base::PostTaskWithTraitsAndReplyWithResult(
         FROM_HERE,
         {
-            base::TaskPriority::BACKGROUND,
+            base::TaskPriority::BEST_EFFORT,
             base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
         },
         base::BindOnce(^NSData*() {
diff --git a/components/image_fetcher/ios/ios_image_decoder_impl.mm b/components/image_fetcher/ios/ios_image_decoder_impl.mm
index ff5ab2f..040d2d2 100644
--- a/components/image_fetcher/ios/ios_image_decoder_impl.mm
+++ b/components/image_fetcher/ios/ios_image_decoder_impl.mm
@@ -42,7 +42,7 @@
   // The task runner used to decode images if necessary.
   const scoped_refptr<base::TaskRunner> task_runner_ =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN});
   ;
 
diff --git a/components/language/content/browser/geo_language_provider.cc b/components/language/content/browser/geo_language_provider.cc
index c9cf368..f22c173 100644
--- a/components/language/content/browser/geo_language_provider.cc
+++ b/components/language/content/browser/geo_language_provider.cc
@@ -24,7 +24,7 @@
 GeoLanguageProvider::GeoLanguageProvider()
     : creation_task_runner_(base::SequencedTaskRunnerHandle::Get()),
       background_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})) {
   // Constructor is not required to run on |background_task_runner_|:
   DETACH_FROM_SEQUENCE(background_sequence_checker_);
diff --git a/components/login/secure_module_util_chromeos.cc b/components/login/secure_module_util_chromeos.cc
index b33ef16..88619c1 100644
--- a/components/login/secure_module_util_chromeos.cc
+++ b/components/login/secure_module_util_chromeos.cc
@@ -40,7 +40,7 @@
   }
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&GetSecureModuleInfoFromFilesAndCacheIt),
       std::move(callback));
 }
diff --git a/components/metrics/cloned_install_detector.cc b/components/metrics/cloned_install_detector.cc
index d9e752d..4693621 100644
--- a/components/metrics/cloned_install_detector.cc
+++ b/components/metrics/cloned_install_detector.cc
@@ -56,7 +56,7 @@
 void ClonedInstallDetector::CheckForClonedInstall(PrefService* local_state) {
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&MachineIdProvider::GetMachineId),
       base::Bind(&ClonedInstallDetector::SaveMachineId,
diff --git a/components/metrics/drive_metrics_provider.cc b/components/metrics/drive_metrics_provider.cc
index 7f50c2b..d033648 100644
--- a/components/metrics/drive_metrics_provider.cc
+++ b/components/metrics/drive_metrics_provider.cc
@@ -35,7 +35,7 @@
 void DriveMetricsProvider::AsyncInit(const base::Closure& done_callback) {
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
       base::Bind(&DriveMetricsProvider::GetDriveMetricsOnBackgroundThread,
                  local_state_path_key_),
diff --git a/components/metrics/file_metrics_provider.cc b/components/metrics/file_metrics_provider.cc
index 015912a..189d673 100644
--- a/components/metrics/file_metrics_provider.cc
+++ b/components/metrics/file_metrics_provider.cc
@@ -107,7 +107,7 @@
     return scoped_refptr<base::TaskRunner>(g_task_runner_for_testing);
 
   return base::CreateTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 }
 
diff --git a/components/metrics/net/network_metrics_provider.cc b/components/metrics/net/network_metrics_provider.cc
index a0cdd391..0e345db9 100644
--- a/components/metrics/net/network_metrics_provider.cc
+++ b/components/metrics/net/network_metrics_provider.cc
@@ -318,7 +318,7 @@
   DCHECK(thread_checker_.CalledOnValidThread());
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&net::GetWifiPHYLayerProtocol),
       base::BindOnce(&NetworkMetricsProvider::OnWifiPHYLayerProtocolResult,
diff --git a/components/nacl/browser/nacl_broker_host_win.cc b/components/nacl/browser/nacl_broker_host_win.cc
index fd6e1d1e..3f36568 100644
--- a/components/nacl/browser/nacl_broker_host_win.cc
+++ b/components/nacl/browser/nacl_broker_host_win.cc
@@ -103,7 +103,7 @@
     int32_t pid,
     base::ProcessHandle process_handle,
     const std::string& startup_info) {
-  base::ProcessHandle broker_process = process_->GetData().handle;
+  base::ProcessHandle broker_process = process_->GetData().GetHandle();
   base::ProcessHandle handle_in_broker_process;
   if (!DuplicateHandle(::GetCurrentProcess(), process_handle,
                        broker_process, &handle_in_broker_process,
diff --git a/components/nacl/browser/nacl_browser.cc b/components/nacl/browser/nacl_browser.cc
index f55e1150..cad5b43 100644
--- a/components/nacl/browser/nacl_browser.cc
+++ b/components/nacl/browser/nacl_browser.cc
@@ -280,7 +280,7 @@
   if (IsOk() && irt_state_ == NaClResourceUninitialized) {
     irt_state_ = NaClResourceRequested;
     auto task_runner = base::CreateTaskRunnerWithTraits(
-        {base::MayBlock(), base::TaskPriority::BACKGROUND,
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
          base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN});
     std::unique_ptr<base::FileProxy> file_proxy(
         new base::FileProxy(task_runner.get()));
@@ -376,7 +376,7 @@
       // task and further file access will not occur until after we get a
       // response.
       base::PostTaskWithTraitsAndReply(
-          FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+          FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
           base::Bind(ReadCache, validation_cache_file_path_, data),
           base::Bind(&NaClBrowser::OnValidationCacheLoaded,
                      base::Unretained(this), base::Owned(data)));
diff --git a/components/nacl/browser/nacl_process_host.cc b/components/nacl/browser/nacl_process_host.cc
index 9613821..844bf5a1 100644
--- a/components/nacl/browser/nacl_process_host.cc
+++ b/components/nacl/browser/nacl_process_host.cc
@@ -250,7 +250,7 @@
 
 NaClProcessHost::~NaClProcessHost() {
   // Report exit status only if the process was successfully started.
-  if (process_->GetData().handle != base::kNullProcessHandle) {
+  if (!process_->GetData().IsHandleValid()) {
     content::ChildProcessTerminationInfo info =
         process_->GetTerminationInfo(false /* known_dead */);
     std::string message =
@@ -274,16 +274,16 @@
     // handles.
     base::File file(IPC::PlatformFileForTransitToFile(
         prefetched_resource_files_[i].file));
-    base::PostTaskWithTraits(FROM_HERE,
-                             {base::TaskPriority::BACKGROUND, base::MayBlock()},
-                             base::BindOnce(&CloseFile, std::move(file)));
+    base::PostTaskWithTraits(
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
+        base::BindOnce(&CloseFile, std::move(file)));
   }
 #endif
   // Open files need to be closed on the blocking pool.
   if (nexe_file_.IsValid()) {
-    base::PostTaskWithTraits(FROM_HERE,
-                             {base::TaskPriority::BACKGROUND, base::MayBlock()},
-                             base::BindOnce(&CloseFile, std::move(nexe_file_)));
+    base::PostTaskWithTraits(
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
+        base::BindOnce(&CloseFile, std::move(nexe_file_)));
   }
 
   if (reply_msg_) {
@@ -644,8 +644,7 @@
       NaClLaunchResult(ppapi_channel_handle.release(),
                        trusted_channel_handle.release(),
                        manifest_service_channel_handle.release(),
-                       base::GetProcId(data.handle),
-                       data.id,
+                       base::GetProcId(data.GetHandle()), data.id,
                        crash_info_shmem_renderer_handle),
       error_message);
 
@@ -764,7 +763,7 @@
   if (uses_nonsfi_mode_) {
     // Currently, non-SFI mode is supported only on Linux.
     if (enable_nacl_debug) {
-      base::ProcessId pid = base::GetProcId(process_->GetData().handle);
+      base::ProcessId pid = base::GetProcId(process_->GetData().GetHandle());
       LOG(WARNING) << "nonsfi nacl plugin running in " << pid;
     }
   } else {
@@ -827,7 +826,7 @@
       // compromised renderer to pass an arbitrary fd that could get loaded
       // into the plugin process.
       base::PostTaskWithTraitsAndReplyWithResult(
-          FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+          FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
           base::Bind(OpenNaClReadExecImpl, file_path, true /* is_executable */),
           base::Bind(&NaClProcessHost::StartNaClFileResolved,
                      weak_factory_.GetWeakPtr(), params, file_path));
@@ -846,9 +845,9 @@
   if (checked_nexe_file.IsValid()) {
     // Release the file received from the renderer. This has to be done on a
     // thread where IO is permitted, though.
-    base::PostTaskWithTraits(FROM_HERE,
-                             {base::TaskPriority::BACKGROUND, base::MayBlock()},
-                             base::BindOnce(&CloseFile, std::move(nexe_file_)));
+    base::PostTaskWithTraits(
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
+        base::BindOnce(&CloseFile, std::move(nexe_file_)));
     params.nexe_file_path_metadata = file_path;
     params.nexe_file =
         IPC::TakePlatformFileForTransit(std::move(checked_nexe_file));
@@ -911,11 +910,8 @@
   // browser process.
   ppapi_host_.reset(content::BrowserPpapiHost::CreateExternalPluginProcess(
       ipc_proxy_channel_.get(),  // sender
-      permissions_,
-      process_->GetData().handle,
-      ipc_proxy_channel_.get(),
-      nacl_host_message_filter_->render_process_id(),
-      render_view_id_,
+      permissions_, process_->GetData().GetHandle(), ipc_proxy_channel_.get(),
+      nacl_host_message_filter_->render_process_id(), render_view_id_,
       profile_directory_));
 
   ppapi::PpapiNaClPluginArgs args;
@@ -1057,7 +1053,7 @@
 
   // Open the file.
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(OpenNaClReadExecImpl, file_path, true /* is_executable */),
       base::Bind(&NaClProcessHost::FileResolved, weak_factory_.GetWeakPtr(),
                  file_token_lo, file_token_hi, file_path));
@@ -1110,7 +1106,7 @@
   }
   debug_exception_handler_requested_ = true;
 
-  base::ProcessId nacl_pid = base::GetProcId(process_->GetData().handle);
+  base::ProcessId nacl_pid = base::GetProcId(process_->GetData().GetHandle());
   // We cannot use process_->GetData().handle because it does not have
   // the necessary access rights.  We open the new handle here rather
   // than in the NaCl broker process in case the NaCl loader process
diff --git a/components/nacl/browser/pnacl_host.cc b/components/nacl/browser/pnacl_host.cc
index 687ef23..9e7e155 100644
--- a/components/nacl/browser/pnacl_host.cc
+++ b/components/nacl/browser/pnacl_host.cc
@@ -32,7 +32,7 @@
 void CloseBaseFile(base::File file) {
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(base::DoNothing::Once<base::File>(), std::move(file)));
 }
@@ -377,7 +377,7 @@
   FileProxy* proxy(new FileProxy(std::move(file), this));
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&FileProxy::Write, base::Unretained(proxy),
                  pt->nexe_read_buffer),
       base::Bind(&FileProxy::WriteDone, base::Owned(proxy), entry->first));
@@ -450,7 +450,7 @@
     entry->second.got_nexe_fd = false;
 
     base::PostTaskWithTraitsAndReplyWithResult(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::Bind(&PnaclHost::CopyFileToBuffer, Passed(&file)),
         base::Bind(&PnaclHost::StoreTranslatedNexe, base::Unretained(this),
                    id));
diff --git a/components/ntp_snippets/remote/remote_suggestions_database.cc b/components/ntp_snippets/remote/remote_suggestions_database.cc
index c8fb409..f856d04a 100644
--- a/components/ntp_snippets/remote/remote_suggestions_database.cc
+++ b/components/ntp_snippets/remote/remote_suggestions_database.cc
@@ -35,7 +35,7 @@
     const base::FilePath& database_dir)
     : RemoteSuggestionsDatabase(
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND,
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}),
           database_dir) {}
 
diff --git a/components/omnibox/browser/in_memory_url_index.cc b/components/omnibox/browser/in_memory_url_index.cc
index f2439e7..bfdb8f8 100644
--- a/components/omnibox/browser/in_memory_url_index.cc
+++ b/components/omnibox/browser/in_memory_url_index.cc
@@ -94,7 +94,7 @@
       restore_cache_observer_(nullptr),
       save_cache_observer_(nullptr),
       task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       shutdown_(false),
       restored_(false),
       needs_to_be_cached_(false),
diff --git a/components/omnibox/browser/shortcuts_backend.cc b/components/omnibox/browser/shortcuts_backend.cc
index 49fb469..cb36287 100644
--- a/components/omnibox/browser/shortcuts_backend.cc
+++ b/components/omnibox/browser/shortcuts_backend.cc
@@ -79,7 +79,7 @@
       history_service_observer_(this),
       main_runner_(base::ThreadTaskRunnerHandle::Get()),
       db_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
       no_db_access_(suppress_db) {
   if (!suppress_db)
diff --git a/components/optimization_guide/optimization_guide_service.cc b/components/optimization_guide/optimization_guide_service.cc
index 68897f8..b922fa7 100644
--- a/components/optimization_guide/optimization_guide_service.cc
+++ b/components/optimization_guide/optimization_guide_service.cc
@@ -38,7 +38,7 @@
 OptimizationGuideService::OptimizationGuideService(
     const scoped_refptr<base::SingleThreadTaskRunner>& io_thread_task_runner)
     : background_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       io_thread_task_runner_(io_thread_task_runner),
       latest_processed_version_(kNullVersion) {
   DETACH_FROM_SEQUENCE(sequence_checker_);
diff --git a/components/password_manager/core/common/passwords_directory_util_ios.cc b/components/password_manager/core/common/passwords_directory_util_ios.cc
index 830796f..7184488 100644
--- a/components/password_manager/core/common/passwords_directory_util_ios.cc
+++ b/components/password_manager/core/common/passwords_directory_util_ios.cc
@@ -35,7 +35,7 @@
 
 void DeletePasswordsDirectory() {
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                             base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
                            base::BindOnce(&DeletePasswordsDirectorySync));
 }
diff --git a/components/policy/core/browser/BUILD.gn b/components/policy/core/browser/BUILD.gn
index 40be709..a2702cc 100644
--- a/components/policy/core/browser/BUILD.gn
+++ b/components/policy/core/browser/BUILD.gn
@@ -43,6 +43,8 @@
     "url_blacklist_manager.h",
     "url_blacklist_policy_handler.cc",
     "url_blacklist_policy_handler.h",
+    "url_util.cc",
+    "url_util.h",
   ]
 
   configs += [ "//components/policy:component_implementation" ]
@@ -53,6 +55,7 @@
   deps = [
     "//base/third_party/dynamic_annotations",
     "//components/bookmarks/managed",
+    "//components/google/core/browser",
     "//components/keyed_service/core",
     "//components/pref_registry",
     "//components/prefs",
@@ -60,7 +63,9 @@
     "//components/url_formatter",
     "//components/url_matcher",
     "//net",
+    "//third_party/re2",
     "//ui/base",
+    "//url",
   ]
 
   if (is_android) {
@@ -115,8 +120,10 @@
     "proxy_policy_handler_unittest.cc",
     "url_blacklist_manager_unittest.cc",
     "url_blacklist_policy_handler_unittest.cc",
+    "url_util_unittest.cc",
   ]
   deps = [
+    ":browser",
     ":test_support",
     "//base",
     "//components/policy:generated",
@@ -127,5 +134,6 @@
     "//net",
     "//testing/gmock",
     "//testing/gtest",
+    "//url",
   ]
 }
diff --git a/components/policy/core/browser/DEPS b/components/policy/core/browser/DEPS
index 8bf0036f..9f5ba78b 100644
--- a/components/policy/core/browser/DEPS
+++ b/components/policy/core/browser/DEPS
@@ -1,5 +1,6 @@
 include_rules = [
   "+components/bookmarks",
+  "+components/google/core/browser",
   "+components/pref_registry",
   "+components/proxy_config",
   "+components/strings/grit/components_strings.h",
diff --git a/components/policy/core/browser/url_blacklist_manager.cc b/components/policy/core/browser/url_blacklist_manager.cc
index cfcd9a98..aa3cb90 100644
--- a/components/policy/core/browser/url_blacklist_manager.cc
+++ b/components/policy/core/browser/url_blacklist_manager.cc
@@ -436,7 +436,7 @@
   // |pref_service_| lives on.
   ui_task_runner_ = base::SequencedTaskRunnerHandle::Get();
   background_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-      {base::TaskPriority::BACKGROUND});
+      {base::TaskPriority::BEST_EFFORT});
 
   pref_change_registrar_.Init(pref_service_);
   base::Closure callback = base::Bind(&URLBlacklistManager::ScheduleUpdate,
diff --git a/components/policy/core/browser/url_util.cc b/components/policy/core/browser/url_util.cc
new file mode 100644
index 0000000..ddc4d92
--- /dev/null
+++ b/components/policy/core/browser/url_util.cc
@@ -0,0 +1,177 @@
+// Copyright 2018 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.
+
+#include "components/policy/core/browser/url_util.h"
+
+#include <string>
+
+#include "base/logging.h"
+#include "base/macros.h"
+#include "base/no_destructor.h"
+#include "components/google/core/browser/google_util.h"
+#include "components/url_formatter/url_fixer.h"
+#include "net/base/escape.h"
+#include "net/base/url_util.h"
+#include "third_party/re2/src/re2/re2.h"
+#include "url/gurl.h"
+
+namespace policy {
+namespace url_util {
+
+namespace {
+
+// Host/regex pattern for Google AMP Cache URLs.
+// See https://developers.google.com/amp/cache/overview#amp-cache-url-format
+// for a definition of the format of AMP Cache URLs.
+const char kGoogleAmpCacheHost[] = "cdn.ampproject.org";
+const char kGoogleAmpCachePathPattern[] = "/[a-z]/(s/)?(.*)";
+
+// Regex pattern for the path of Google AMP Viewer URLs.
+const char kGoogleAmpViewerPathPattern[] = "/amp/(s/)?(.*)";
+
+// Host, path prefix, and query regex pattern for Google web cache URLs.
+const char kGoogleWebCacheHost[] = "webcache.googleusercontent.com";
+const char kGoogleWebCachePathPrefix[] = "/search";
+const char kGoogleWebCacheQueryPattern[] =
+    "cache:(.{12}:)?(https?://)?([^ :]*)( [^:]*)?";
+
+const char kGoogleTranslateSubdomain[] = "translate.";
+const char kAlternateGoogleTranslateHost[] = "translate.googleusercontent.com";
+
+// Returns a full URL using either "http" or "https" as the scheme.
+GURL BuildURL(bool is_https, const std::string& host_and_path) {
+  std::string scheme = is_https ? url::kHttpsScheme : url::kHttpScheme;
+  return GURL(scheme + "://" + host_and_path);
+}
+
+// Helper class for testing the URL against precompiled regexes. This is a
+// singleton so the cached regexes are only created once.
+class EmbeddedURLExtractor {
+ public:
+  static EmbeddedURLExtractor* GetInstance() {
+    static base::NoDestructor<EmbeddedURLExtractor> instance;
+    return instance.get();
+  }
+
+  // Implements url_filter::GetEmbeddedURL().
+  GURL GetEmbeddedURL(const GURL& url) {
+    // Check for "*.cdn.ampproject.org" URLs.
+    if (url.DomainIs(kGoogleAmpCacheHost)) {
+      std::string s;
+      std::string embedded;
+      if (re2::RE2::FullMatch(url.path(), google_amp_cache_path_regex_, &s,
+                              &embedded)) {
+        if (url.has_query())
+          embedded += "?" + url.query();
+        return BuildURL(!s.empty(), embedded);
+      }
+    }
+
+    // Check for "www.google.TLD/amp/" URLs.
+    if (google_util::IsGoogleDomainUrl(
+            url, google_util::DISALLOW_SUBDOMAIN,
+            google_util::DISALLOW_NON_STANDARD_PORTS)) {
+      std::string s;
+      std::string embedded;
+      if (re2::RE2::FullMatch(url.path(), google_amp_viewer_path_regex_, &s,
+                              &embedded)) {
+        // The embedded URL may be percent-encoded. Undo that.
+        embedded = net::UnescapeURLComponent(
+            embedded,
+            net::UnescapeRule::SPACES | net::UnescapeRule::PATH_SEPARATORS |
+                net::UnescapeRule::URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS);
+        return BuildURL(!s.empty(), embedded);
+      }
+    }
+
+    // Check for Google web cache URLs
+    // ("webcache.googleusercontent.com/search?q=cache:...").
+    std::string query;
+    if (url.host_piece() == kGoogleWebCacheHost &&
+        url.path_piece().starts_with(kGoogleWebCachePathPrefix) &&
+        net::GetValueForKeyInQuery(url, "q", &query)) {
+      std::string fingerprint;
+      std::string scheme;
+      std::string embedded;
+      if (re2::RE2::FullMatch(query, google_web_cache_query_regex_,
+                              &fingerprint, &scheme, &embedded)) {
+        return BuildURL(scheme == "https://", embedded);
+      }
+    }
+
+    // Check for Google translate URLs ("translate.google.TLD/...?...&u=URL" or
+    // "translate.googleusercontent.com/...?...&u=URL").
+    bool is_translate = false;
+    if (base::StartsWith(url.host_piece(), kGoogleTranslateSubdomain,
+                         base::CompareCase::SENSITIVE)) {
+      // Remove the "translate." prefix.
+      GURL::Replacements replace;
+      replace.SetHostStr(
+          url.host_piece().substr(strlen(kGoogleTranslateSubdomain)));
+      GURL trimmed = url.ReplaceComponents(replace);
+      // Check that the remainder is a Google URL. Note: IsGoogleDomainUrl
+      // checks for [www.]google.TLD, but we don't want the "www.", so
+      // explicitly exclude that.
+      // TODO(treib,pam): Instead of excluding "www." manually, teach
+      // IsGoogleDomainUrl a mode that doesn't allow it.
+      is_translate = google_util::IsGoogleDomainUrl(
+                         trimmed, google_util::DISALLOW_SUBDOMAIN,
+                         google_util::DISALLOW_NON_STANDARD_PORTS) &&
+                     !base::StartsWith(trimmed.host_piece(), "www.",
+                                       base::CompareCase::SENSITIVE);
+    }
+    bool is_alternate_translate =
+        url.host_piece() == kAlternateGoogleTranslateHost;
+    if (is_translate || is_alternate_translate) {
+      std::string embedded;
+      if (net::GetValueForKeyInQuery(url, "u", &embedded)) {
+        // The embedded URL may or may not include a scheme. Fix it if
+        // necessary.
+        return url_formatter::FixupURL(embedded, /*desired_tld=*/std::string());
+      }
+    }
+
+    return GURL();
+  }
+
+ private:
+  friend class base::NoDestructor<EmbeddedURLExtractor>;
+
+  EmbeddedURLExtractor()
+      : google_amp_cache_path_regex_(kGoogleAmpCachePathPattern),
+        google_amp_viewer_path_regex_(kGoogleAmpViewerPathPattern),
+        google_web_cache_query_regex_(kGoogleWebCacheQueryPattern) {
+    DCHECK(google_amp_cache_path_regex_.ok());
+    DCHECK(google_amp_viewer_path_regex_.ok());
+    DCHECK(google_web_cache_query_regex_.ok());
+  }
+
+  ~EmbeddedURLExtractor() = default;
+
+  const re2::RE2 google_amp_cache_path_regex_;
+  const re2::RE2 google_amp_viewer_path_regex_;
+  const re2::RE2 google_web_cache_query_regex_;
+
+  DISALLOW_COPY_AND_ASSIGN(EmbeddedURLExtractor);
+};
+
+}  // namespace
+
+GURL Normalize(const GURL& url) {
+  GURL normalized_url = url;
+  GURL::Replacements replacements;
+  // Strip username, password, query, and ref.
+  replacements.ClearUsername();
+  replacements.ClearPassword();
+  replacements.ClearQuery();
+  replacements.ClearRef();
+  return url.ReplaceComponents(replacements);
+}
+
+GURL GetEmbeddedURL(const GURL& url) {
+  return EmbeddedURLExtractor::GetInstance()->GetEmbeddedURL(url);
+}
+
+}  // namespace url_util
+}  // namespace policy
diff --git a/components/policy/core/browser/url_util.h b/components/policy/core/browser/url_util.h
new file mode 100644
index 0000000..d1f7131
--- /dev/null
+++ b/components/policy/core/browser/url_util.h
@@ -0,0 +1,27 @@
+// Copyright 2018 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.
+
+#ifndef COMPONENTS_POLICY_CORE_BROWSER_URL_UTIL_H_
+#define COMPONENTS_POLICY_CORE_BROWSER_URL_UTIL_H_
+
+#include "components/policy/policy_export.h"
+
+class GURL;
+
+namespace policy {
+namespace url_util {
+
+// Normalizes a URL for matching purposes.
+POLICY_EXPORT GURL Normalize(const GURL& url);
+
+// Helper function to extract the underlying URL wrapped by services such as
+// Google AMP or Google Translate. Returns an empty GURL if |url| doesn't match
+// a known format.
+// TODO(treib): Merge this with Normalize()? See also https://crbug.com/663678.
+POLICY_EXPORT GURL GetEmbeddedURL(const GURL& url);
+
+}  // namespace url_util
+}  // namespace policy
+
+#endif  // COMPONENTS_POLICY_CORE_BROWSER_URL_UTIL_H_
diff --git a/components/policy/core/browser/url_util_unittest.cc b/components/policy/core/browser/url_util_unittest.cc
new file mode 100644
index 0000000..39359b87
--- /dev/null
+++ b/components/policy/core/browser/url_util_unittest.cc
@@ -0,0 +1,225 @@
+// Copyright 2018 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.
+
+#include "components/policy/core/browser/url_util.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+namespace policy {
+namespace url_util {
+
+namespace {
+
+GURL GetEmbeddedURL(const std::string& url) {
+  return policy::url_util::GetEmbeddedURL(GURL(url));
+}
+
+}  // namespace
+
+TEST(URLUtilTest, Normalize) {
+  // Username is cleared.
+  EXPECT_EQ(Normalize(GURL("http://dino@example/foo")),
+            GURL("http://example/foo"));
+
+  // Username and password are cleared.
+  EXPECT_EQ(Normalize(GURL("http://dino:hunter2@example/")),
+            GURL("http://example/"));
+
+  // Query string is cleared.
+  EXPECT_EQ(Normalize(GURL("http://example.com/foo?widgetId=42")),
+            GURL("http://example.com/foo"));
+  EXPECT_EQ(Normalize(GURL("https://example.com/?widgetId=42&frobinate=true")),
+            GURL("https://example.com/"));
+
+  // Ref is cleared.
+  EXPECT_EQ(Normalize(GURL("http://example.com/foo#widgetSection")),
+            GURL("http://example.com/foo"));
+
+  // Port is NOT cleared.
+  EXPECT_EQ(Normalize(GURL("http://example.com:443/")),
+            GURL("http://example.com:443/"));
+
+  // All together now.
+  EXPECT_EQ(
+      Normalize(GURL("https://dino:hunter2@example.com:443/foo?widgetId=42")),
+      GURL("https://example.com:443/foo"));
+}
+
+TEST(URLUtilTest, GetEmbeddedURLAmpCache) {
+  // Base case.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://cdn.ampproject.org/c/example.com"));
+  // "s/" means "use https".
+  EXPECT_EQ(GURL("https://example.com"),
+            GetEmbeddedURL("https://cdn.ampproject.org/c/s/example.com"));
+  // With path and query. Fragment is not extracted.
+  EXPECT_EQ(GURL("https://example.com/path/to/file.html?q=asdf"),
+            GetEmbeddedURL("https://cdn.ampproject.org/c/s/example.com/path/to/"
+                           "file.html?q=asdf#baz"));
+  // Publish subdomain can be included but doesn't affect embedded URL.
+  EXPECT_EQ(
+      GURL("http://example.com"),
+      GetEmbeddedURL("https://example-com.cdn.ampproject.org/c/example.com"));
+  EXPECT_EQ(
+      GURL("http://example.com"),
+      GetEmbeddedURL("https://example-org.cdn.ampproject.org/c/example.com"));
+
+  // Different host is not supported.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.ampproject.org/c/example.com"));
+  // Different TLD is not supported.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://cdn.ampproject.com/c/example.com"));
+  // Content type ("c/") is missing.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://cdn.ampproject.org/example.com"));
+  // Content type is mis-formatted, must be a single character.
+  EXPECT_EQ(GURL(),
+            GetEmbeddedURL("https://cdn.ampproject.org/cd/example.com"));
+}
+
+TEST(URLUtilTest, GetEmbeddedURLGoogleAmpViewer) {
+  // Base case.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://www.google.com/amp/example.com"));
+  // "s/" means "use https".
+  EXPECT_EQ(GURL("https://example.com"),
+            GetEmbeddedURL("https://www.google.com/amp/s/example.com"));
+  // Different Google TLDs are supported.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://www.google.de/amp/example.com"));
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://www.google.co.uk/amp/example.com"));
+  // With path.
+  EXPECT_EQ(GURL("http://example.com/path"),
+            GetEmbeddedURL("https://www.google.com/amp/example.com/path"));
+  // Query is *not* part of the embedded URL.
+  EXPECT_EQ(
+      GURL("http://example.com/path"),
+      GetEmbeddedURL("https://www.google.com/amp/example.com/path?q=baz"));
+  // Query and fragment in percent-encoded form *are* part of the embedded URL.
+  EXPECT_EQ(
+      GURL("http://example.com/path?q=foo#bar"),
+      GetEmbeddedURL(
+          "https://www.google.com/amp/example.com/path%3fq=foo%23bar?q=baz"));
+  // "/" may also be percent-encoded.
+  EXPECT_EQ(GURL("http://example.com/path?q=foo#bar"),
+            GetEmbeddedURL("https://www.google.com/amp/"
+                           "example.com%2fpath%3fq=foo%23bar?q=baz"));
+
+  // Missing "amp/".
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.google.com/example.com"));
+  // Path component before the "amp/".
+  EXPECT_EQ(GURL(),
+            GetEmbeddedURL("https://www.google.com/foo/amp/example.com"));
+  // Different host.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.other.com/amp/example.com"));
+  // Different subdomain.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://mail.google.com/amp/example.com"));
+  // Invalid TLD.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.google.nope/amp/example.com"));
+}
+
+TEST(URLUtilTest, GetEmbeddedURLGoogleWebCache) {
+  // Base case.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                           "search?q=cache:ABCDEFGHI-JK:example.com/"));
+  // With search query.
+  EXPECT_EQ(
+      GURL("http://example.com"),
+      GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                     "search?q=cache:ABCDEFGHI-JK:example.com/+search_query"));
+  // Without fingerprint.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                           "search?q=cache:example.com/"));
+  // With search query, without fingerprint.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                           "search?q=cache:example.com/+search_query"));
+  // Query params other than "q=" don't matter.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                           "search?a=b&q=cache:example.com/&c=d"));
+  // With scheme.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                           "search?q=cache:http://example.com/"));
+  // Preserve https.
+  EXPECT_EQ(GURL("https://example.com"),
+            GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                           "search?q=cache:https://example.com/"));
+
+  // Wrong host.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://www.googleusercontent.com/"
+                                   "search?q=cache:example.com/"));
+  // Wrong path.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                                   "path?q=cache:example.com/"));
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                                   "path/search?q=cache:example.com/"));
+  // Missing "cache:".
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                                   "search?q=example.com"));
+  // Wrong fingerprint.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                                   "search?q=cache:123:example.com/"));
+  // Wrong query param.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                                   "search?a=cache:example.com/"));
+  // Invalid scheme.
+  EXPECT_EQ(GURL(), GetEmbeddedURL("https://webcache.googleusercontent.com/"
+                                   "search?q=cache:abc://example.com/"));
+}
+
+TEST(URLUtilTest, GetEmbeddedURLTranslate) {
+  // Base case.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://translate.google.com/path?u=example.com"));
+  // Different TLD.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL("https://translate.google.de/path?u=example.com"));
+  // Alternate base URL.
+  EXPECT_EQ(GURL("http://example.com"),
+            GetEmbeddedURL(
+                "https://translate.googleusercontent.com/path?u=example.com"));
+  // With scheme.
+  EXPECT_EQ(
+      GURL("http://example.com"),
+      GetEmbeddedURL("https://translate.google.com/path?u=http://example.com"));
+  // With https scheme.
+  EXPECT_EQ(GURL("https://example.com"),
+            GetEmbeddedURL(
+                "https://translate.google.com/path?u=https://example.com"));
+  // With other parameters.
+  EXPECT_EQ(
+      GURL("http://example.com"),
+      GetEmbeddedURL(
+          "https://translate.google.com/path?a=asdf&u=example.com&b=fdsa"));
+
+  // Different subdomain is not supported.
+  EXPECT_EQ(GURL(), GetEmbeddedURL(
+                        "https://translate.foo.google.com/path?u=example.com"));
+  EXPECT_EQ(GURL(), GetEmbeddedURL(
+                        "https://translate.www.google.com/path?u=example.com"));
+  EXPECT_EQ(
+      GURL(),
+      GetEmbeddedURL("https://translate.google.google.com/path?u=example.com"));
+  EXPECT_EQ(GURL(), GetEmbeddedURL(
+                        "https://foo.translate.google.com/path?u=example.com"));
+  EXPECT_EQ(GURL(),
+            GetEmbeddedURL("https://translate2.google.com/path?u=example.com"));
+  EXPECT_EQ(GURL(),
+            GetEmbeddedURL(
+                "https://translate2.googleusercontent.com/path?u=example.com"));
+  // Different TLD is not supported for googleusercontent.
+  EXPECT_EQ(GURL(),
+            GetEmbeddedURL(
+                "https://translate.googleusercontent.de/path?u=example.com"));
+  // Query parameter ("u=...") is missing.
+  EXPECT_EQ(GURL(),
+            GetEmbeddedURL("https://translate.google.com/path?t=example.com"));
+}
+
+}  // namespace url_util
+}  // namespace policy
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index b31014e6..b815e4b7 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -1768,7 +1768,7 @@
       If you enable this setting or do not set a value, AutoFill will remain under the control of the user. This will allow them to configure AutoFill profiles and to switch AutoFill on or off at their own discretion.''',
     },
     {
-      'name': 'AutofillProfileEnabled',
+      'name': 'AutofillAddressEnabled',
       'type': 'main',
       'schema': { 'type': 'boolean' },
       'supported_on': [
@@ -1783,9 +1783,9 @@
       },
       'example_value': False,
       'id': 459,
-      'caption': '''Enable AutoFill for profiles''',
+      'caption': '''Enable AutoFill for addresses''',
       'tags': [],
-      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s AutoFill feature and allows users to auto complete profile and address information in web forms using previously stored information.
+      'desc': '''Enables <ph name="PRODUCT_NAME">$1<ex>Google Chrome</ex></ph>'s AutoFill feature and allows users to auto complete address information in web forms using previously stored information.
 
       If this setting is disabled, Autofill will never suggest, or fill address information, nor will it save additional address information that the user might submit while browsing the web.
 
diff --git a/components/previews/content/previews_optimization_guide.cc b/components/previews/content/previews_optimization_guide.cc
index 30fef53b..6118c0c 100644
--- a/components/previews/content/previews_optimization_guide.cc
+++ b/components/previews/content/previews_optimization_guide.cc
@@ -22,7 +22,7 @@
     : optimization_guide_service_(optimization_guide_service),
       io_task_runner_(io_task_runner),
       background_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       io_weak_ptr_factory_(this) {
   DCHECK(optimization_guide_service_);
   optimization_guide_service_->AddObserver(this);
diff --git a/components/rlz/rlz_tracker.cc b/components/rlz/rlz_tracker.cc
index a8ddf4b1..1f59d585 100644
--- a/components/rlz/rlz_tracker.cc
+++ b/components/rlz/rlz_tracker.cc
@@ -179,7 +179,7 @@
       min_init_delay_(kMinInitDelay),
       background_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
           {base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN, base::MayBlock(),
-           base::TaskPriority::BACKGROUND})) {
+           base::TaskPriority::BEST_EFFORT})) {
   DETACH_FROM_SEQUENCE(sequence_checker_);
 }
 
diff --git a/components/safe_browsing/browser/safe_browsing_url_request_context_getter.cc b/components/safe_browsing/browser/safe_browsing_url_request_context_getter.cc
index a1bcbb3..56e87042 100644
--- a/components/safe_browsing/browser/safe_browsing_url_request_context_getter.cc
+++ b/components/safe_browsing/browser/safe_browsing_url_request_context_getter.cc
@@ -47,7 +47,7 @@
         system_context_getter_->GetURLRequestContext());
     scoped_refptr<base::SequencedTaskRunner> background_task_runner =
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
     // Set up the ChannelIDService
     scoped_refptr<net::SQLiteChannelIDStore> channel_id_db =
diff --git a/components/services/heap_profiling/public/cpp/client.cc b/components/services/heap_profiling/public/cpp/client.cc
index 9f56981..c0b37f5 100644
--- a/components/services/heap_profiling/public/cpp/client.cc
+++ b/components/services/heap_profiling/public/cpp/client.cc
@@ -99,7 +99,7 @@
                                         base::ThreadTaskRunnerHandle::Get(),
                                         std::move(init_callback));
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::TaskPriority::BACKGROUND, base::MayBlock(),
+                           {base::TaskPriority::BEST_EFFORT, base::MayBlock(),
                             base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
                            std::move(background_task));
 #else
diff --git a/components/storage_monitor/image_capture_device.mm b/components/storage_monitor/image_capture_device.mm
index 831cb65a..0789653 100644
--- a/components/storage_monitor/image_capture_device.mm
+++ b/components/storage_monitor/image_capture_device.mm
@@ -224,7 +224,7 @@
   // downloaded will be incorrectly named.
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
       base::Bind(&storage_monitor::RenameFile, savedPath, saveAsPath),
       base::Bind(&storage_monitor::ReturnRenameResultToListener, listener_,
diff --git a/components/storage_monitor/media_storage_util.cc b/components/storage_monitor/media_storage_util.cc
index 22b08473..db447e6 100644
--- a/components/storage_monitor/media_storage_util.cc
+++ b/components/storage_monitor/media_storage_util.cc
@@ -110,7 +110,7 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   base::PostTaskWithTraitsAndReply(
       FROM_HERE,
-      {base::TaskPriority::BACKGROUND, base::MayBlock(),
+      {base::TaskPriority::BEST_EFFORT, base::MayBlock(),
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&FilterAttachedDevicesOnBackgroundSequence, devices), done);
 }
diff --git a/components/storage_monitor/media_storage_util_unittest.cc b/components/storage_monitor/media_storage_util_unittest.cc
index 2c5f7de2..de532a6 100644
--- a/components/storage_monitor/media_storage_util_unittest.cc
+++ b/components/storage_monitor/media_storage_util_unittest.cc
@@ -85,7 +85,7 @@
   base::FilePath mount_point(CreateMountPoint(true));
   ASSERT_FALSE(mount_point.empty());
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&MediaStorageUtilTest::CheckDCIMDeviceType,
                      base::Unretained(this), mount_point));
   RunUntilIdle();
@@ -98,7 +98,7 @@
   base::FilePath mount_point(CreateMountPoint(false));
   ASSERT_FALSE(mount_point.empty());
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&MediaStorageUtilTest::CheckNonDCIMDeviceType,
                      base::Unretained(this), mount_point));
   RunUntilIdle();
diff --git a/components/storage_monitor/portable_device_watcher_win.cc b/components/storage_monitor/portable_device_watcher_win.cc
index 6fea011..43766d5 100644
--- a/components/storage_monitor/portable_device_watcher_win.cc
+++ b/components/storage_monitor/portable_device_watcher_win.cc
@@ -501,7 +501,7 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   notifications_ = RegisterPortableDeviceNotification(hwnd);
   media_task_runner_ = base::CreateCOMSTATaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN});
   EnumerateAttachedDevices();
 }
diff --git a/components/storage_monitor/storage_monitor_chromeos.cc b/components/storage_monitor/storage_monitor_chromeos.cc
index 6e1b98ee..0954f2c 100644
--- a/components/storage_monitor/storage_monitor_chromeos.cc
+++ b/components/storage_monitor/storage_monitor_chromeos.cc
@@ -139,7 +139,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
   for (const auto& it : DiskMountManager::GetInstance()->mount_points()) {
     base::PostTaskAndReplyWithResult(
@@ -217,7 +217,7 @@
       }
 
       base::PostTaskWithTraitsAndReplyWithResult(
-          FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+          FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
           base::Bind(&MediaStorageUtil::HasDcim,
                      base::FilePath(mount_info.mount_path)),
           base::Bind(&StorageMonitorCros::AddMountedPath,
diff --git a/components/storage_monitor/storage_monitor_linux.cc b/components/storage_monitor/storage_monitor_linux.cc
index 81f60e3..d08aa6f 100644
--- a/components/storage_monitor/storage_monitor_linux.cc
+++ b/components/storage_monitor/storage_monitor_linux.cc
@@ -244,7 +244,7 @@
     : mtab_path_(path),
       get_device_info_callback_(base::Bind(&GetDeviceInfo)),
       mtab_watcher_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       weak_ptr_factory_(this) {}
 
 StorageMonitorLinux::~StorageMonitorLinux() {
@@ -326,7 +326,7 @@
   receiver()->ProcessDetach(device_id);
 
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&EjectPathOnBlockingTaskRunner, path, device), callback);
 }
 
@@ -401,7 +401,7 @@
   // Check new mtab entries against existing ones.
   scoped_refptr<base::SequencedTaskRunner> mounting_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   for (MountPointDeviceMap::const_iterator new_iter = new_mtab.begin();
        new_iter != new_mtab.end(); ++new_iter) {
     const base::FilePath& mount_point = new_iter->first;
diff --git a/components/storage_monitor/storage_monitor_mac.mm b/components/storage_monitor/storage_monitor_mac.mm
index 123a318..fbef719b 100644
--- a/components/storage_monitor/storage_monitor_mac.mm
+++ b/components/storage_monitor/storage_monitor_mac.mm
@@ -337,7 +337,7 @@
   base::ScopedCFTypeRef<CFDictionaryRef> dict(DADiskCopyDescription(disk));
   std::string* bsd_name = new std::string;
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&BuildStorageInfo, dict, bsd_name),
       base::BindOnce(&StorageMonitorMac::UpdateDisk, AsWeakPtr(), update_type,
                      base::Owned(bsd_name)));
diff --git a/components/storage_monitor/volume_mount_watcher_win.cc b/components/storage_monitor/volume_mount_watcher_win.cc
index 1be2c3be6..fc5ae014 100644
--- a/components/storage_monitor/volume_mount_watcher_win.cc
+++ b/components/storage_monitor/volume_mount_watcher_win.cc
@@ -316,7 +316,7 @@
 
 VolumeMountWatcherWin::VolumeMountWatcherWin()
     : device_info_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN})),
       notifications_(nullptr),
       weak_factory_(this) {}
diff --git a/components/subresource_filter/content/browser/content_ruleset_service.cc b/components/subresource_filter/content/browser/content_ruleset_service.cc
index 8d26ac0..1a5f5427 100644
--- a/components/subresource_filter/content/browser/content_ruleset_service.cc
+++ b/components/subresource_filter/content/browser/content_ruleset_service.cc
@@ -42,7 +42,7 @@
   if (!file->IsValid())
     return;
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::TaskPriority::BACKGROUND, base::MayBlock()},
+                           {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
                            base::BindOnce(&CloseFile, std::move(*file)));
 }
 
diff --git a/components/sync/device_info/local_device_info_provider_impl.cc b/components/sync/device_info/local_device_info_provider_impl.cc
index 42bf78c7..cd8d8b34 100644
--- a/components/sync/device_info/local_device_info_provider_impl.cc
+++ b/components/sync/device_info/local_device_info_provider_impl.cc
@@ -80,7 +80,7 @@
 
   GetSessionName(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}),
       base::Bind(&LocalDeviceInfoProviderImpl::InitializeContinuation,
                  weak_factory_.GetWeakPtr(), cache_guid,
diff --git a/components/sync/engine/sequenced_model_worker_unittest.cc b/components/sync/engine/sequenced_model_worker_unittest.cc
index 3c8bc05..593ad745 100644
--- a/components/sync/engine/sequenced_model_worker_unittest.cc
+++ b/components/sync/engine/sequenced_model_worker_unittest.cc
@@ -62,7 +62,7 @@
  protected:
   void SetUp() override {
     task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-        {base::MayBlock(), base::TaskPriority::BACKGROUND});
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
     worker_ = new SequencedModelWorker(task_runner_, GROUP_DB);
   }
 
diff --git a/components/translate/core/browser/translate_infobar_delegate.cc b/components/translate/core/browser/translate_infobar_delegate.cc
index 28ffe33..9b3d4c9 100644
--- a/components/translate/core/browser/translate_infobar_delegate.cc
+++ b/components/translate/core/browser/translate_infobar_delegate.cc
@@ -275,6 +275,10 @@
 
 #if defined(OS_IOS)
 void TranslateInfoBarDelegate::ShowNeverTranslateInfobar() {
+  // Return if the infobar is not owned.
+  if (!infobar()->owner())
+    return;
+
   Create(true, translate_manager_, infobar()->owner(), is_off_the_record_,
          translate::TRANSLATE_STEP_NEVER_TRANSLATE, original_language_code(),
          target_language_code(), TranslateErrors::NONE, false);
diff --git a/components/update_client/component.cc b/components/update_client/component.cc
index 4cdaaf7..63d87420 100644
--- a/components/update_client/component.cc
+++ b/components/update_client/component.cc
@@ -70,7 +70,7 @@
     const base::FilePath& unpack_path,
     const CrxInstaller::Result& result) {
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(
           [](scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
              InstallOnBlockingTaskRunnerCompleteCallback callback,
diff --git a/components/update_client/task_traits.h b/components/update_client/task_traits.h
index 1a3d393b..9b622cf 100644
--- a/components/update_client/task_traits.h
+++ b/components/update_client/task_traits.h
@@ -10,17 +10,17 @@
 namespace update_client {
 
 constexpr base::TaskTraits kTaskTraits = {
-    base::MayBlock(), base::TaskPriority::BACKGROUND,
+    base::MayBlock(), base::TaskPriority::BEST_EFFORT,
     base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN};
 
 constexpr base::TaskTraits kTaskTraitsBackgroundDownloader = {
-    base::MayBlock(), base::TaskPriority::BACKGROUND,
+    base::MayBlock(), base::TaskPriority::BEST_EFFORT,
     base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN};
 
 // This task joins a process, hence .WithBaseSyncPrimitives().
 constexpr base::TaskTraits kTaskTraitsRunCommand = {
     base::MayBlock(), base::WithBaseSyncPrimitives(),
-    base::TaskPriority::BACKGROUND,
+    base::TaskPriority::BEST_EFFORT,
     base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN};
 
 }  // namespace update_client
diff --git a/components/update_client/url_fetcher_downloader.cc b/components/update_client/url_fetcher_downloader.cc
index d181daa..266b3d7 100644
--- a/components/update_client/url_fetcher_downloader.cc
+++ b/components/update_client/url_fetcher_downloader.cc
@@ -25,7 +25,7 @@
 namespace {
 
 constexpr base::TaskTraits kTaskTraits = {
-    base::MayBlock(), base::TaskPriority::BACKGROUND,
+    base::MayBlock(), base::TaskPriority::BEST_EFFORT,
     base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN};
 
 }  // namespace
diff --git a/components/upload_list/text_log_upload_list.cc b/components/upload_list/text_log_upload_list.cc
index 9344ee4..f72c460 100644
--- a/components/upload_list/text_log_upload_list.cc
+++ b/components/upload_list/text_log_upload_list.cc
@@ -17,7 +17,7 @@
 TextLogUploadList::~TextLogUploadList() = default;
 
 base::TaskTraits TextLogUploadList::LoadingTaskTraits() {
-  return {base::MayBlock(), base::TaskPriority::BACKGROUND,
+  return {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
           base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN};
 }
 
diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
index 7bfce36..082009f3 100644
--- a/components/variations/service/variations_service.cc
+++ b/components/variations/service/variations_service.cc
@@ -462,7 +462,7 @@
   // simulation with, which must be done on a background thread, and then do the
   // actual simulation on the UI thread.
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       client_->GetVersionForSimulationCallback(),
       base::Bind(&VariationsService::PerformSimulationWithVersion,
                  weak_ptr_factory_.GetWeakPtr(), base::Passed(&seed)));
diff --git a/components/viz/service/frame_sinks/compositor_frame_sink_support.cc b/components/viz/service/frame_sinks/compositor_frame_sink_support.cc
index bbdf378b..d216f4b 100644
--- a/components/viz/service/frame_sinks/compositor_frame_sink_support.cc
+++ b/components/viz/service/frame_sinks/compositor_frame_sink_support.cc
@@ -121,7 +121,6 @@
   }
 
   DCHECK(surface->HasActiveFrame());
-  surface->UpdateSurfaceReferences();
 
   // Check if this is a display root surface and the SurfaceId is changing.
   if (is_root_ && (!referenced_local_surface_id_ ||
diff --git a/components/viz/service/frame_sinks/surface_synchronization_unittest.cc b/components/viz/service/frame_sinks/surface_synchronization_unittest.cc
index 81218655..c8acf3c 100644
--- a/components/viz/service/frame_sinks/surface_synchronization_unittest.cc
+++ b/components/viz/service/frame_sinks/surface_synchronization_unittest.cc
@@ -2525,5 +2525,79 @@
   EXPECT_EQ(parent_id, parent_support().last_activated_surface_id());
 }
 
+// This test verifies that once a Surface is activated, the latest in flight
+// surface for each SurfaceRange in the submitted CompositorFrame will be added
+// to the referenced surfaces.
+TEST_F(SurfaceSynchronizationTest, ReferencesAfterActivationSameFrameSink) {
+  SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
+
+  SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
+  SurfaceId child_id2 = MakeSurfaceId(kChildFrameSink1, 2);
+  SurfaceId child_id3 = MakeSurfaceId(kChildFrameSink1, 3);
+
+  DisableAssignTemporaryReferences();
+
+  child_support1().SubmitCompositorFrame(child_id1.local_surface_id(),
+                                         MakeDefaultCompositorFrame());
+
+  child_support1().SubmitCompositorFrame(child_id2.local_surface_id(),
+                                         MakeDefaultCompositorFrame());
+
+  parent_support().SubmitCompositorFrame(
+      parent_id.local_surface_id(),
+      MakeCompositorFrame(empty_surface_ids(),
+                          {SurfaceRange(child_id1, child_id3)},
+                          std::vector<TransferableResource>()));
+
+  const base::flat_set<SurfaceId>& child_references =
+      GetChildReferences(parent_id);
+
+  // |child_id2| is the latest active surface so we return it.
+  EXPECT_EQ(child_references.size(), 1u);
+  EXPECT_THAT(child_references, UnorderedElementsAre(child_id2));
+}
+
+// This test verifies that once a Surface is activated by a CompositorFrame
+// referencing a SurfaceRange with differing frame sinks, fallback surface will
+// be returned by GetLatestInFlightSurface.
+TEST_F(SurfaceSynchronizationTest,
+       ReferencesAfterActivationDifferentFrameSink) {
+  SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
+
+  SurfaceId child_id1 = MakeSurfaceId(kChildFrameSink1, 1);
+  SurfaceId child_id2 = MakeSurfaceId(kChildFrameSink1, 2);
+  SurfaceId child_id3 = MakeSurfaceId(kChildFrameSink2, 3);
+
+  DisableAssignTemporaryReferences();
+
+  child_support1().SubmitCompositorFrame(child_id1.local_surface_id(),
+                                         MakeDefaultCompositorFrame());
+
+  child_support1().SubmitCompositorFrame(child_id2.local_surface_id(),
+                                         MakeDefaultCompositorFrame());
+
+  parent_support().SubmitCompositorFrame(
+      parent_id.local_surface_id(),
+      MakeCompositorFrame(empty_surface_ids(),
+                          {SurfaceRange(child_id1, child_id3)},
+                          std::vector<TransferableResource>()));
+
+  const base::flat_set<SurfaceId>& child_references =
+      GetChildReferences(parent_id);
+
+  // Since frame sink ids are different parent will reference fallback surface.
+  // However, after (crbug.com/857575) parent should reference |child_id2|
+  // instead.
+  EXPECT_THAT(child_references, UnorderedElementsAre(child_id1));
+
+  parent_support().SubmitCompositorFrame(
+      parent_id.local_surface_id(),
+      MakeCompositorFrame(empty_surface_ids(),
+                          {SurfaceRange(child_id2, child_id3)},
+                          std::vector<TransferableResource>()));
+
+  EXPECT_THAT(child_references, UnorderedElementsAre(child_id2));
+}
+
 }  // namespace test
 }  // namespace viz
diff --git a/components/viz/service/surfaces/surface.cc b/components/viz/service/surfaces/surface.cc
index 813bd4a8..b995b0c4f 100644
--- a/components/viz/service/surfaces/surface.cc
+++ b/components/viz/service/surfaces/surface.cc
@@ -329,12 +329,28 @@
 
   active_frame_data_ = std::move(frame_data);
 
+  // Extract the latest in flight surface from the ranges in the frame then
+  // notify SurfaceManager of the new references.
   active_referenced_surfaces_.clear();
-  for (SurfaceRange surface_range :
+  for (const SurfaceRange& surface_range :
        active_frame_data_->frame.metadata.referenced_surfaces) {
-    if (surface_range.start())
-      active_referenced_surfaces_.emplace_back(*surface_range.start());
+    // TODO(akaba): remove this case when GetLatestInFlightSurface is able to
+    // return primary.
+    Surface* primary_surface =
+        surface_manager_->GetSurfaceForId(surface_range.end());
+    if (primary_surface && primary_surface->HasActiveFrame()) {
+      active_referenced_surfaces_.emplace_back(surface_range.end());
+      continue;
+    }
+
+    if (surface_range.start()) {
+      Surface* surface = surface_manager_->GetLatestInFlightSurface(
+          surface_range.end(), *surface_range.start());
+      if (surface)
+        active_referenced_surfaces_.emplace_back(surface->surface_id());
+    }
   }
+  UpdateSurfaceReferences();
 
   for (auto& copy_request : old_copy_requests)
     RequestCopyOfOutput(std::move(copy_request));
diff --git a/components/web_restrictions/browser/web_restrictions_client.cc b/components/web_restrictions/browser/web_restrictions_client.cc
index 050ac94..ae05b112 100644
--- a/components/web_restrictions/browser/web_restrictions_client.cc
+++ b/components/web_restrictions/browser/web_restrictions_client.cc
@@ -42,7 +42,7 @@
 WebRestrictionsClient::WebRestrictionsClient()
     : initialized_(false), supports_request_(false) {
   background_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 }
 
@@ -86,7 +86,7 @@
       reinterpret_cast<jlong>(this)));
   supports_request_ = false;
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&CheckSupportsRequestTask, java_provider_),
       base::Bind(&WebRestrictionsClient::RequestSupportKnown,
                  base::Unretained(this), provider_authority_));
diff --git a/content/browser/accessibility/browser_accessibility_state_impl.cc b/content/browser/accessibility/browser_accessibility_state_impl.cc
index a496fc4..5a3ddd8 100644
--- a/content/browser/accessibility/browser_accessibility_state_impl.cc
+++ b/content/browser/accessibility/browser_accessibility_state_impl.cc
@@ -72,7 +72,7 @@
   // detected until after the user interacts in some way, so a reasonable delay
   // gives us better numbers.
   base::PostDelayedTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&BrowserAccessibilityStateImpl::UpdateHistograms, this),
       base::TimeDelta::FromSeconds(ACCESSIBILITY_HISTOGRAM_DELAY_SECS));
 #else
diff --git a/content/browser/background_fetch/storage/image_helpers.cc b/content/browser/background_fetch/storage/image_helpers.cc
index ac9501c0..1cbcadf 100644
--- a/content/browser/background_fetch/storage/image_helpers.cc
+++ b/content/browser/background_fetch/storage/image_helpers.cc
@@ -49,7 +49,7 @@
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
       {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
-       base::TaskPriority::BACKGROUND},
+       base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&ConvertAndSerializeIcon, icon), std::move(callback));
 }
 
@@ -62,7 +62,7 @@
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
       {base::MayBlock(), base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
-       base::TaskPriority::BACKGROUND},
+       base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&DeserializeAndConvertIcon, std::move(serialized_icon)),
       base::BindOnce(std::move(callback)));
 }
diff --git a/content/browser/blob_storage/chrome_blob_storage_context.cc b/content/browser/blob_storage/chrome_blob_storage_context.cc
index 0900dbb..842cb76 100644
--- a/content/browser/blob_storage/chrome_blob_storage_context.cc
+++ b/content/browser/blob_storage/chrome_blob_storage_context.cc
@@ -117,7 +117,7 @@
     // disk on the storage context.
     if (!context->IsOffTheRecord() && io_thread_valid) {
       file_task_runner = base::CreateTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
       // Removes our old blob directories if they exist.
       BrowserThread::PostAfterStartupTask(
diff --git a/content/browser/browser_child_process_host_impl.cc b/content/browser/browser_child_process_host_impl.cc
index 3fc3aa2..b41adf0b 100644
--- a/content/browser/browser_child_process_host_impl.cc
+++ b/content/browser/browser_child_process_host_impl.cc
@@ -186,7 +186,7 @@
   if (notify_child_disconnected_) {
     BrowserThread::PostTask(
         BrowserThread::UI, FROM_HERE,
-        base::BindOnce(&NotifyProcessHostDisconnected, data_));
+        base::BindOnce(&NotifyProcessHostDisconnected, data_.Duplicate()));
   }
 }
 
@@ -316,7 +316,7 @@
 
 void BrowserChildProcessHostImpl::SetHandle(base::ProcessHandle handle) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  data_.handle = handle;
+  data_.SetHandle(handle);
 }
 
 service_manager::mojom::ServiceRequest
@@ -358,7 +358,8 @@
   if (!child_process_) {
     // If the delegate doesn't use Launch() helper.
     ChildProcessTerminationInfo info;
-    info.status = base::GetTerminationStatus(data_.handle, &info.exit_code);
+    info.status =
+        base::GetTerminationStatus(data_.GetHandle(), &info.exit_code);
     return info;
   }
   return child_process_->GetChildTerminationInfo(known_dead);
@@ -381,8 +382,9 @@
   early_exit_watcher_.StopWatching();
 #endif
 
-  BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
-                          base::BindOnce(&NotifyProcessHostConnected, data_));
+  BrowserThread::PostTask(
+      BrowserThread::UI, FROM_HERE,
+      base::BindOnce(&NotifyProcessHostConnected, data_.Duplicate()));
 
   delegate_->OnChannelConnected(peer_pid);
 
@@ -390,7 +392,7 @@
     ShareMetricsAllocatorToProcess();
     BrowserThread::PostTask(
         BrowserThread::UI, FROM_HERE,
-        base::BindOnce(&NotifyProcessLaunchedAndConnected, data_));
+        base::BindOnce(&NotifyProcessLaunchedAndConnected, data_.Duplicate()));
   }
 }
 
@@ -435,13 +437,14 @@
   // early exit watcher so GetTerminationStatus can close the process handle.
   early_exit_watcher_.StopWatching();
 #endif
-  if (child_process_.get() || data_.handle) {
+  if (child_process_.get() || data_.GetHandle()) {
     ChildProcessTerminationInfo info =
         GetTerminationInfo(true /* known_dead */);
 #if defined(OS_ANDROID)
     delegate_->OnProcessCrashed(info.exit_code);
-    BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
-                            base::BindOnce(&NotifyProcessKilled, data_, info));
+    BrowserThread::PostTask(
+        BrowserThread::UI, FROM_HERE,
+        base::BindOnce(&NotifyProcessKilled, data_.Duplicate(), info));
 #else  // OS_ANDROID
     switch (info.status) {
       case base::TERMINATION_STATUS_PROCESS_CRASHED:
@@ -449,7 +452,7 @@
         delegate_->OnProcessCrashed(info.exit_code);
         BrowserThread::PostTask(
             BrowserThread::UI, FROM_HERE,
-            base::BindOnce(&NotifyProcessCrashed, data_, info));
+            base::BindOnce(&NotifyProcessCrashed, data_.Duplicate(), info));
         UMA_HISTOGRAM_ENUMERATION("ChildProcess.Crashed2",
                                   static_cast<ProcessType>(data_.process_type),
                                   PROCESS_TYPE_MAX);
@@ -462,7 +465,7 @@
         delegate_->OnProcessCrashed(info.exit_code);
         BrowserThread::PostTask(
             BrowserThread::UI, FROM_HERE,
-            base::BindOnce(&NotifyProcessKilled, data_, info));
+            base::BindOnce(&NotifyProcessKilled, data_.Duplicate(), info));
         // Report that this child process was killed.
         UMA_HISTOGRAM_ENUMERATION("ChildProcess.Killed2",
                                   static_cast<ProcessType>(data_.process_type),
@@ -600,15 +603,14 @@
   early_exit_watcher_.StartWatchingOnce(process.Handle(), this);
 #endif
 
-  // TODO(rvargas) crbug.com/417532: Don't store a handle.
-  data_.handle = process.Handle();
+  data_.SetHandle(process.Handle());
   delegate_->OnProcessLaunched();
 
   if (is_channel_connected_) {
     ShareMetricsAllocatorToProcess();
     BrowserThread::PostTask(
         BrowserThread::UI, FROM_HERE,
-        base::BindOnce(&NotifyProcessLaunchedAndConnected, data_));
+        base::BindOnce(&NotifyProcessLaunchedAndConnected, data_.Duplicate()));
   }
 }
 
diff --git a/content/browser/cache_storage/cache_storage_context_impl.cc b/content/browser/cache_storage/cache_storage_context_impl.cc
index 87c836e..70f4f3c 100644
--- a/content/browser/cache_storage/cache_storage_context_impl.cc
+++ b/content/browser/cache_storage/cache_storage_context_impl.cc
@@ -36,7 +36,7 @@
   is_incognito_ = user_data_directory.empty();
   scoped_refptr<base::SequencedTaskRunner> cache_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 
   // This thread-hopping antipattern is needed here for some unit tests, where
diff --git a/content/browser/devtools/devtools_http_handler.cc b/content/browser/devtools/devtools_http_handler.cc
index eaf44246..3ed1929 100644
--- a/content/browser/devtools/devtools_http_handler.cc
+++ b/content/browser/devtools/devtools_http_handler.cc
@@ -222,7 +222,7 @@
     thread->task_runner()->DeleteSoon(FROM_HERE, std::move(socket_factory));
   if (thread) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         BindOnce([](std::unique_ptr<base::Thread>) {}, std::move(thread)));
   }
 }
diff --git a/content/browser/devtools/devtools_pipe_handler.cc b/content/browser/devtools/devtools_pipe_handler.cc
index dcdce1fe..82b3e68 100644
--- a/content/browser/devtools/devtools_pipe_handler.cc
+++ b/content/browser/devtools/devtools_pipe_handler.cc
@@ -209,7 +209,7 @@
   // If there is no write thread, only take care of the read thread.
   if (!write_thread_) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce([](base::Thread* rthread) { delete rthread; },
                        read_thread_.release()));
     return;
@@ -236,7 +236,7 @@
 
   // Post background task that would join and destroy the threads.
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(
           [](base::Thread* rthread, base::Thread* wthread) {
             delete rthread;
diff --git a/content/browser/devtools/devtools_stream_file.cc b/content/browser/devtools/devtools_stream_file.cc
index c32261e0..8f688822 100644
--- a/content/browser/devtools/devtools_stream_file.cc
+++ b/content/browser/devtools/devtools_stream_file.cc
@@ -19,8 +19,8 @@
 namespace content {
 
 scoped_refptr<base::SequencedTaskRunner> impl_task_runner() {
-  constexpr base::TaskTraits kBlockingTraits = {base::MayBlock(),
-                                                base::TaskPriority::BACKGROUND};
+  constexpr base::TaskTraits kBlockingTraits = {
+      base::MayBlock(), base::TaskPriority::BEST_EFFORT};
   static base::LazySequencedTaskRunner s_sequenced_task_unner =
       LAZY_SEQUENCED_TASK_RUNNER_INITIALIZER(kBlockingTraits);
   return s_sequenced_task_unner.Get();
diff --git a/content/browser/dom_storage/dom_storage_context_wrapper.cc b/content/browser/dom_storage/dom_storage_context_wrapper.cc
index 3d71c01..4fa743a 100644
--- a/content/browser/dom_storage/dom_storage_context_wrapper.cc
+++ b/content/browser/dom_storage/dom_storage_context_wrapper.cc
@@ -128,7 +128,7 @@
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
   scoped_refptr<base::SequencedTaskRunner> commit_sequence =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 
   legacy_localstorage_path_ =
diff --git a/content/browser/dom_storage/session_storage_database.cc b/content/browser/dom_storage/session_storage_database.cc
index cc9e8394..2a8d889 100644
--- a/content/browser/dom_storage/session_storage_database.cc
+++ b/content/browser/dom_storage/session_storage_database.cc
@@ -7,6 +7,7 @@
 #include <inttypes.h>
 #include <stddef.h>
 
+#include <utility>
 #include <vector>
 
 #include "base/files/file_util.h"
@@ -430,7 +431,11 @@
                  << ", error: " << s.ToString();
 
     // Clear the directory and try again.
-    base::DeleteFile(file_path_, true);
+    s = leveldb_chrome::DeleteDB(file_path_, leveldb_env::Options());
+    if (!s.ok()) {
+      LOG(WARNING) << "Failed to delete leveldb in " << file_path_.value()
+                   << ", error: " << s.ToString();
+    }
     s = TryToOpen(&db_);
     if (!s.ok()) {
       LOG(WARNING) << "Failed to open leveldb in " << file_path_.value()
diff --git a/content/browser/download/file_download_url_loader_factory_getter.cc b/content/browser/download/file_download_url_loader_factory_getter.cc
index 973baed..d001c23 100644
--- a/content/browser/download/file_download_url_loader_factory_getter.cc
+++ b/content/browser/download/file_download_url_loader_factory_getter.cc
@@ -33,7 +33,7 @@
   mojo::MakeStrongBinding(
       std::make_unique<FileURLLoaderFactory>(
           profile_path_, base::CreateSequencedTaskRunnerWithTraits(
-                             {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                             {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                               base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
       MakeRequest(&url_loader_factory_ptr_info));
 
diff --git a/content/browser/file_url_loader_factory.cc b/content/browser/file_url_loader_factory.cc
index 44eb5224..822e0a0 100644
--- a/content/browser/file_url_loader_factory.cc
+++ b/content/browser/file_url_loader_factory.cc
@@ -672,7 +672,7 @@
     std::unique_ptr<FileURLLoaderObserver> observer,
     scoped_refptr<net::HttpResponseHeaders> extra_response_headers) {
   auto task_runner = base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
   task_runner->PostTask(
       FROM_HERE,
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index 57c9276..a15c21a 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -3991,7 +3991,7 @@
       auto file_factory = std::make_unique<FileURLLoaderFactory>(
           browser_context->GetPath(),
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND,
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
       non_network_url_loader_factories_.emplace(url::kFileScheme,
                                                 std::move(file_factory));
diff --git a/content/browser/histogram_controller.cc b/content/browser/histogram_controller.cc
index 100d8863..7d1c110 100644
--- a/content/browser/histogram_controller.cc
+++ b/content/browser/histogram_controller.cc
@@ -153,7 +153,7 @@
     // example, the GPU process may not exist and there may instead just be a
     // GPU thread in the browser process). If that's the case, then the process
     // handle will be base::kNullProcessHandle and we shouldn't ask it for data.
-    if (data.handle == base::kNullProcessHandle)
+    if (!data.IsHandleValid())
       continue;
 
     if (auto* child_histogram_fetcher =
diff --git a/content/browser/indexed_db/indexed_db_internals_ui.cc b/content/browser/indexed_db/indexed_db_internals_ui.cc
index b548e89..1874f42 100644
--- a/content/browser/indexed_db/indexed_db_internals_ui.cc
+++ b/content/browser/indexed_db/indexed_db_internals_ui.cc
@@ -362,7 +362,7 @@
 
 FileDeleter::~FileDeleter() {
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                             base::TaskShutdownBehavior::BLOCK_SHUTDOWN},
                            base::BindOnce(base::IgnoreResult(&base::DeleteFile),
                                           std::move(temp_dir_), true));
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
index 6c5184fb..4676ec4 100644
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -1387,7 +1387,7 @@
       std::make_unique<FileURLLoaderFactory>(
           partition->browser_context()->GetPath(),
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND,
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
   std::set<std::string> known_schemes;
   for (auto& iter : non_network_url_loader_factories_)
diff --git a/content/browser/net/quota_policy_cookie_store.cc b/content/browser/net/quota_policy_cookie_store.cc
index 116ce02..9d929d43b 100644
--- a/content/browser/net/quota_policy_cookie_store.cc
+++ b/content/browser/net/quota_policy_cookie_store.cc
@@ -86,7 +86,7 @@
 
     if (!background_task_runner.get()) {
       background_task_runner = base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
     }
 
diff --git a/content/browser/notifications/platform_notification_context_impl.cc b/content/browser/notifications/platform_notification_context_impl.cc
index a5c56da..81d405a 100644
--- a/content/browser/notifications/platform_notification_context_impl.cc
+++ b/content/browser/notifications/platform_notification_context_impl.cc
@@ -476,7 +476,7 @@
 
   if (!task_runner_) {
     task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-        {base::MayBlock(), base::TaskPriority::BACKGROUND});
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   }
 
   task_runner_->PostTask(
diff --git a/content/browser/ppapi_plugin_process_host.cc b/content/browser/ppapi_plugin_process_host.cc
index 3cf4e5d1..1df1149 100644
--- a/content/browser/ppapi_plugin_process_host.cc
+++ b/content/browser/ppapi_plugin_process_host.cc
@@ -509,8 +509,8 @@
   sent_requests_.pop();
 
   const ChildProcessData& data = process_->GetData();
-  client->OnPpapiChannelOpened(channel_handle, base::GetProcId(data.handle),
-                               data.id);
+  client->OnPpapiChannelOpened(channel_handle,
+                               base::GetProcId(data.GetHandle()), data.id);
 }
 
 }  // namespace content
diff --git a/content/browser/renderer_host/input/fling_controller.cc b/content/browser/renderer_host/input/fling_controller.cc
index 2729115..ba00279 100644
--- a/content/browser/renderer_host/input/fling_controller.cc
+++ b/content/browser/renderer_host/input/fling_controller.cc
@@ -449,11 +449,6 @@
   return fling_booster_ && fling_booster_->fling_cancellation_is_deferred();
 }
 
-bool FlingController::TouchscreenFlingInProgress() const {
-  return fling_in_progress_ && current_fling_parameters_.source_device ==
-                                   blink::kWebGestureDeviceTouchscreen;
-}
-
 gfx::Vector2dF FlingController::CurrentFlingVelocity() const {
   return current_fling_parameters_.velocity;
 }
diff --git a/content/browser/renderer_host/input/fling_controller.h b/content/browser/renderer_host/input/fling_controller.h
index 869e17b..03288332 100644
--- a/content/browser/renderer_host/input/fling_controller.h
+++ b/content/browser/renderer_host/input/fling_controller.h
@@ -99,8 +99,6 @@
 
   bool FlingCancellationIsDeferred() const;
 
-  bool TouchscreenFlingInProgress() const;
-
   gfx::Vector2dF CurrentFlingVelocity() const;
 
   // Returns the |TouchpadTapSuppressionController| instance.
diff --git a/content/browser/renderer_host/input/gesture_event_queue.cc b/content/browser/renderer_host/input/gesture_event_queue.cc
index a9ff466e..93347d9 100644
--- a/content/browser/renderer_host/input/gesture_event_queue.cc
+++ b/content/browser/renderer_host/input/gesture_event_queue.cc
@@ -94,9 +94,6 @@
   return fling_controller_.FlingCancellationIsDeferred();
 }
 
-bool GestureEventQueue::TouchscreenFlingInProgress() const {
-  return fling_controller_.TouchscreenFlingInProgress();
-}
 gfx::Vector2dF GestureEventQueue::CurrentFlingVelocity() const {
   return fling_controller_.CurrentFlingVelocity();
 }
diff --git a/content/browser/renderer_host/input/gesture_event_queue.h b/content/browser/renderer_host/input/gesture_event_queue.h
index f07f3cd..3dec354 100644
--- a/content/browser/renderer_host/input/gesture_event_queue.h
+++ b/content/browser/renderer_host/input/gesture_event_queue.h
@@ -117,8 +117,6 @@
 
   bool FlingCancellationIsDeferred() const;
 
-  bool TouchscreenFlingInProgress() const;
-
   gfx::Vector2dF CurrentFlingVelocity() const;
 
   void set_debounce_interval_time_ms_for_testing(int interval_ms) {
diff --git a/content/browser/renderer_host/input/input_router_client.h b/content/browser/renderer_host/input/input_router_client.h
index e714ee3..01c2c1f 100644
--- a/content/browser/renderer_host/input/input_router_client.h
+++ b/content/browser/renderer_host/input/input_router_client.h
@@ -51,9 +51,6 @@
   // from the renderer.
   virtual void OnSetWhiteListedTouchAction(cc::TouchAction touch_action) = 0;
 
-  // Called when a renderer fling has terminated.
-  virtual void DidStopFlinging() = 0;
-
   // Called when a GSB has started scrolling a viewport.
   virtual void DidStartScrollingViewport() = 0;
 
diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc
index 788b74b..2028e30 100644
--- a/content/browser/renderer_host/input/input_router_impl.cc
+++ b/content/browser/renderer_host/input/input_router_impl.cc
@@ -257,15 +257,6 @@
   client_->DidOverscroll(fling_updated_params);
 }
 
-void InputRouterImpl::DidStopFlinging() {
-  DCHECK_GT(active_renderer_fling_count_, 0);
-  // Note that we're only guaranteed to get a fling end notification from the
-  // renderer, not from any other consumers. Consequently, the GestureEventQueue
-  // cannot use this bookkeeping for logic like tap suppression.
-  --active_renderer_fling_count_;
-  client_->DidStopFlinging();
-}
-
 void InputRouterImpl::DidStartScrollingViewport() {
   client_->DidStartScrollingViewport();
 }
@@ -372,10 +363,6 @@
   output_stream_validator_.Validate(touch_event);
 }
 
-bool InputRouterImpl::TouchscreenFlingInProgress() {
-  return gesture_event_queue_.TouchscreenFlingInProgress();
-}
-
 void InputRouterImpl::SendGestureEventImmediately(
     const GestureEventWithLatencyInfo& gesture_event) {
   mojom::WidgetInputHandler::DispatchEventCallback callback = base::BindOnce(
@@ -561,11 +548,6 @@
                InputEventAckStateToString(state));
   if (source != InputEventAckSource::BROWSER)
     client_->DecrementInFlightEventCount(source);
-  if (gesture_event.event.GetType() ==
-          blink::WebInputEvent::kGestureFlingStart &&
-      state == INPUT_EVENT_ACK_STATE_CONSUMED) {
-    ++active_renderer_fling_count_;
-  }
 
   if (overscroll) {
     DCHECK_EQ(WebInputEvent::kGestureScrollUpdate,
diff --git a/content/browser/renderer_host/input/input_router_impl.h b/content/browser/renderer_host/input/input_router_impl.h
index 53605ce..b954551 100644
--- a/content/browser/renderer_host/input/input_router_impl.h
+++ b/content/browser/renderer_host/input/input_router_impl.h
@@ -93,7 +93,6 @@
                                  uint32_t unique_touch_event_id,
                                  InputEventAckState state) override;
   void DidOverscroll(const ui::DidOverscrollParams& params) override;
-  void DidStopFlinging() override;
   void ImeCancelComposition() override;
   void DidStartScrollingViewport() override;
   void ImeCompositionRangeChanged(
@@ -127,7 +126,6 @@
                        InputEventAckSource ack_source,
                        InputEventAckState ack_result) override;
   void OnFilteringTouchEvent(const blink::WebTouchEvent& touch_event) override;
-  bool TouchscreenFlingInProgress() override;
 
   // GestureEventFilterClient
   void SendGestureEventImmediately(
diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc
index a4d9ed9..3c449bd 100644
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -134,8 +134,6 @@
     input_router_client_.DidOverscroll(params);
   }
 
-  void DidStopFlinging() override { input_router_client_.DidStopFlinging(); }
-
   void DidStartScrollingViewport() override {
     input_router_client_.DidStartScrollingViewport();
   }
diff --git a/content/browser/renderer_host/input/mock_input_router_client.cc b/content/browser/renderer_host/input/mock_input_router_client.cc
index 33168e9..3d93e01 100644
--- a/content/browser/renderer_host/input/mock_input_router_client.cc
+++ b/content/browser/renderer_host/input/mock_input_router_client.cc
@@ -60,9 +60,6 @@
   white_listed_touch_action_ = white_listed_touch_action;
 }
 
-void MockInputRouterClient::DidStopFlinging() {
-}
-
 void MockInputRouterClient::DidStartScrollingViewport() {}
 
 void MockInputRouterClient::ForwardGestureEventWithLatencyInfo(
diff --git a/content/browser/renderer_host/input/mock_input_router_client.h b/content/browser/renderer_host/input/mock_input_router_client.h
index 8e161f5..1ddce1a 100644
--- a/content/browser/renderer_host/input/mock_input_router_client.h
+++ b/content/browser/renderer_host/input/mock_input_router_client.h
@@ -33,7 +33,6 @@
   void OnHasTouchEventHandlers(bool has_handlers) override;
   void DidOverscroll(const ui::DidOverscrollParams& params) override;
   void OnSetWhiteListedTouchAction(cc::TouchAction touch_action) override;
-  void DidStopFlinging() override;
   void DidStartScrollingViewport() override;
   void ForwardWheelEventWithLatencyInfo(
       const blink::WebMouseWheelEvent& wheel_event,
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue.h b/content/browser/renderer_host/input/passthrough_touch_event_queue.h
index bc5f793..65d881e 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue.h
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue.h
@@ -33,8 +33,6 @@
 
   virtual void OnFilteringTouchEvent(
       const blink::WebTouchEvent& touch_event) = 0;
-
-  virtual bool TouchscreenFlingInProgress() = 0;
 };
 
 // A queue that processes a touch-event and forwards it on to the
diff --git a/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc b/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
index 3f23c3a3..718e02b 100644
--- a/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
+++ b/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc
@@ -94,8 +94,6 @@
   void OnFilteringTouchEvent(const blink::WebTouchEvent& touch_event) override {
   }
 
-  bool TouchscreenFlingInProgress() override { return false; }
-
  protected:
   void SetUpForTouchMoveSlopTesting(double slop_length_dips) {
     slop_length_dips_ = slop_length_dips;
diff --git a/content/browser/renderer_host/media/audio_service_listener.cc b/content/browser/renderer_host/media/audio_service_listener.cc
index a9737789..2a7a25a 100644
--- a/content/browser/renderer_host/media/audio_service_listener.cc
+++ b/content/browser/renderer_host/media/audio_service_listener.cc
@@ -182,7 +182,7 @@
 void AudioServiceListener::BrowserChildProcessHostDisconnected(
     const ChildProcessData& data) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_);
-  if (base::GetProcId(data.handle) != process_id_)
+  if (base::GetProcId(data.GetHandle()) != process_id_)
     return;
   process_id_ = base::kNullProcessId;
   metrics_.ServiceProcessTerminated(
@@ -193,7 +193,7 @@
     const ChildProcessData& data,
     const ChildProcessTerminationInfo& info) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_);
-  if (base::GetProcId(data.handle) != process_id_)
+  if (base::GetProcId(data.GetHandle()) != process_id_)
     return;
   process_id_ = base::kNullProcessId;
   metrics_.ServiceProcessTerminated(
@@ -204,7 +204,7 @@
     const ChildProcessData& data,
     const ChildProcessTerminationInfo& info) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(owning_sequence_);
-  if (base::GetProcId(data.handle) != process_id_)
+  if (base::GetProcId(data.GetHandle()) != process_id_)
     return;
   process_id_ = base::kNullProcessId;
   metrics_.ServiceProcessTerminated(
diff --git a/content/browser/renderer_host/media/audio_service_listener_unittest.cc b/content/browser/renderer_host/media/audio_service_listener_unittest.cc
index d6a66a9d..d43d254 100644
--- a/content/browser/renderer_host/media/audio_service_listener_unittest.cc
+++ b/content/browser/renderer_host/media/audio_service_listener_unittest.cc
@@ -194,7 +194,7 @@
       MakeTestServiceInfo(audio_service_identity, pid));
   audio_service_listener.OnServiceStarted(audio_service_identity, pid);
   ChildProcessData data(content::ProcessType::PROCESS_TYPE_UTILITY);
-  data.handle = handle;
+  data.SetHandle(handle);
   audio_service_listener.BrowserChildProcessHostDisconnected(data);
   histogram_tester.ExpectUniqueSample(
       "Media.AudioService.ObservedProcessTerminationStatus",
@@ -215,7 +215,7 @@
       MakeTestServiceInfo(audio_service_identity, pid));
   audio_service_listener.OnServiceStarted(audio_service_identity, pid);
   ChildProcessData data(content::ProcessType::PROCESS_TYPE_UTILITY);
-  data.handle = handle;
+  data.SetHandle(handle);
   audio_service_listener.BrowserChildProcessCrashed(
       data, content::ChildProcessTerminationInfo());
   histogram_tester.ExpectUniqueSample(
@@ -236,7 +236,7 @@
       MakeTestServiceInfo(audio_service_identity, pid));
   audio_service_listener.OnServiceStarted(audio_service_identity, pid);
   ChildProcessData data(content::ProcessType::PROCESS_TYPE_UTILITY);
-  data.handle = handle;
+  data.SetHandle(handle);
   audio_service_listener.BrowserChildProcessKilled(
       data, content::ChildProcessTerminationInfo());
   histogram_tester.ExpectUniqueSample(
diff --git a/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc b/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc
index ed62e219f..42746c7 100644
--- a/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc
@@ -90,7 +90,7 @@
 
   // Call GetNetworkList() on a thread that allows blocking IO.
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&GetNetworkList),
       base::Bind(&PepperNetworkMonitorHost::SendNetworkList,
                  weak_factory_.GetWeakPtr()));
diff --git a/content/browser/renderer_host/pepper/pepper_truetype_font_host.cc b/content/browser/renderer_host/pepper/pepper_truetype_font_host.cc
index 036149f4..f5bba9d 100644
--- a/content/browser/renderer_host/pepper/pepper_truetype_font_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_truetype_font_host.cc
@@ -32,7 +32,7 @@
   // Initialize the font on a TaskScheduler thread. This must complete before
   // using |font_|.
   task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND});
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   SerializedTrueTypeFontDesc* actual_desc =
       new SerializedTrueTypeFontDesc(desc);
   base::PostTaskAndReplyWithResult(
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
index 4af5870e..6bd43df2 100644
--- a/content/browser/renderer_host/render_widget_host_impl.h
+++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -712,7 +712,7 @@
   // Returns the keyboard layout mapping.
   base::flat_map<std::string, std::string> GetKeyboardLayoutMap();
 
-  void DidStopFlinging() override;
+  void DidStopFlinging();
 
   void GetContentRenderingTimeoutFrom(RenderWidgetHostImpl* other);
 
diff --git a/content/browser/service_manager/service_manager_context.cc b/content/browser/service_manager/service_manager_context.cc
index 2daaf72..8db80531 100644
--- a/content/browser/service_manager/service_manager_context.cc
+++ b/content/browser/service_manager/service_manager_context.cc
@@ -508,7 +508,7 @@
   // affinity on the clients. We therefore require a single-thread runner.
   scoped_refptr<base::SingleThreadTaskRunner> device_blocking_task_runner =
       base::CreateSingleThreadTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
 #if defined(OS_ANDROID)
   JNIEnv* env = base::android::AttachCurrentThread();
@@ -567,7 +567,7 @@
         base::CreateSingleThreadTaskRunnerWithTraits(
 #endif
             base::TaskTraits({base::MayBlock(), base::WithBaseSyncPrimitives(),
-                              base::TaskPriority::BACKGROUND}),
+                              base::TaskPriority::BEST_EFFORT}),
             base::SingleThreadTaskRunnerThreadMode::DEDICATED);
     packaged_services_connection_->AddEmbeddedService(
         video_capture::mojom::kServiceName, video_capture_info);
@@ -721,7 +721,7 @@
   auto iter = g_active_process_groups.Get().find(process_group_name);
   if (iter == g_active_process_groups.Get().end() || !iter->second)
     return false;
-  return iter->second->GetData().handle != base::kNullProcessHandle;
+  return iter->second->GetData().IsHandleValid();
 }
 
 // static
diff --git a/content/browser/shared_worker/shared_worker_service_impl.cc b/content/browser/shared_worker/shared_worker_service_impl.cc
index 165dca9..a1f30bf 100644
--- a/content/browser/shared_worker/shared_worker_service_impl.cc
+++ b/content/browser/shared_worker/shared_worker_service_impl.cc
@@ -75,7 +75,7 @@
     auto file_factory = std::make_unique<FileURLLoaderFactory>(
         storage_partition->browser_context()->GetPath(),
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
     network::mojom::URLLoaderFactoryPtr file_factory_ptr;
     mojo::MakeStrongBinding(std::move(file_factory),
diff --git a/content/browser/storage_partition_impl_map.cc b/content/browser/storage_partition_impl_map.cc
index 3a478286c..4de748a 100644
--- a/content/browser/storage_partition_impl_map.cc
+++ b/content/browser/storage_partition_impl_map.cc
@@ -371,7 +371,7 @@
     BrowserContext* browser_context)
     : browser_context_(browser_context),
       file_access_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND})),
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT})),
       resource_context_initialized_(false) {}
 
 StoragePartitionImplMap::~StoragePartitionImplMap() {
@@ -502,7 +502,7 @@
       GetStoragePartitionDomainPath(partition_domain));
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&BlockingObliteratePath, browser_context_->GetPath(),
                      domain_root, paths_to_keep,
                      base::ThreadTaskRunnerHandle::Get(), on_gc_required));
diff --git a/content/browser/tracing/cast_tracing_agent.cc b/content/browser/tracing/cast_tracing_agent.cc
index 29e0162..3200ee7 100644
--- a/content/browser/tracing/cast_tracing_agent.cc
+++ b/content/browser/tracing/cast_tracing_agent.cc
@@ -49,7 +49,7 @@
                 base::kNullProcessId) {
   task_runner_ =
       base::TaskScheduler::GetInstance()->CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN});
 }
 
diff --git a/content/browser/tracing/power_tracing_agent.cc b/content/browser/tracing/power_tracing_agent.cc
index c1b6bb2..4c6e4fd5 100644
--- a/content/browser/tracing/power_tracing_agent.cc
+++ b/content/browser/tracing/power_tracing_agent.cc
@@ -61,7 +61,7 @@
   }
 
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&PowerTracingAgent::FindBattOrOnBackgroundThread,
                      base::Unretained(this), std::move(callback)));
 }
diff --git a/content/browser/tracing/tracing_controller_impl_data_endpoint.cc b/content/browser/tracing/tracing_controller_impl_data_endpoint.cc
index 4fcd0264..1ead180e 100644
--- a/content/browser/tracing/tracing_controller_impl_data_endpoint.cc
+++ b/content/browser/tracing/tracing_controller_impl_data_endpoint.cc
@@ -118,7 +118,7 @@
   FILE* file_;
   const scoped_refptr<base::SequencedTaskRunner> background_task_runner_ =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
   DISALLOW_COPY_AND_ASSIGN(FileTraceDataEndpoint);
 };
@@ -132,7 +132,7 @@
         already_tried_open_(false),
         background_task_runner_(base::CreateSequencedTaskRunnerWithTraits(
             {compress_with_background_priority
-                 ? base::TaskPriority::BACKGROUND
+                 ? base::TaskPriority::BEST_EFFORT
                  : base::TaskPriority::USER_VISIBLE})) {}
 
   void ReceiveTraceChunk(std::unique_ptr<std::string> chunk) override {
diff --git a/content/common/input/input_handler.mojom b/content/common/input/input_handler.mojom
index 3f33f6c..17d5ee40 100644
--- a/content/common/input/input_handler.mojom
+++ b/content/common/input/input_handler.mojom
@@ -174,9 +174,6 @@
   // restrictions on the root scroll offset.
   DidOverscroll(DidOverscrollParams params);
 
-  // Sent by the compositor when a fling animation is stopped.
-  DidStopFlinging();
-
   // Sent by the compositor when a GSB has started scrolling the viewport.
   DidStartScrollingViewport();
 
diff --git a/content/public/browser/BUILD.gn b/content/public/browser/BUILD.gn
index 13483e65..cde2603 100644
--- a/content/public/browser/BUILD.gn
+++ b/content/public/browser/BUILD.gn
@@ -87,6 +87,7 @@
     "cache_storage_usage_info.h",
     "cdm_registry.h",
     "certificate_request_result_type.h",
+    "child_process_data.cc",
     "child_process_data.h",
     "child_process_launcher_utils.h",
     "child_process_security_policy.h",
diff --git a/content/public/browser/background_tracing_manager.h b/content/public/browser/background_tracing_manager.h
index b4cd53f..edfb80c0 100644
--- a/content/public/browser/background_tracing_manager.h
+++ b/content/public/browser/background_tracing_manager.h
@@ -34,7 +34,7 @@
   // void Upload(const scoped_refptr<base::RefCountedString>& data,
   //             FinishedProcessingCallback done_callback) {
   //   base::PostTaskWithTraitsAndReply(
-  //       FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+  //       FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
   //       base::BindOnce(&DoUploadInBackground, data),
   //       std::move(done_callback));
   // }
diff --git a/content/public/browser/child_process_data.cc b/content/public/browser/child_process_data.cc
new file mode 100644
index 0000000..f536482
--- /dev/null
+++ b/content/public/browser/child_process_data.cc
@@ -0,0 +1,60 @@
+// Copyright 2018 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.
+
+#include "content/public/browser/child_process_data.h"
+
+#if defined(OS_WIN)
+#include <Windows.h>
+#endif
+
+namespace content {
+
+#if defined(OS_WIN)
+void ChildProcessData::SetHandle(base::ProcessHandle process) {
+  HANDLE handle_to_set;
+  if (process == base::kNullProcessHandle) {
+    handle_to_set = base::kNullProcessHandle;
+  } else {
+    BOOL result =
+        ::DuplicateHandle(::GetCurrentProcess(), process, ::GetCurrentProcess(),
+                          &handle_to_set, PROCESS_QUERY_INFORMATION, FALSE, 0);
+    auto err = GetLastError();
+    CHECK(result) << process << " " << err;
+  }
+  handle_ = base::win::ScopedHandle(handle_to_set);
+}
+#endif
+
+ChildProcessData::ChildProcessData(int process_type)
+    : process_type(process_type), id(0), handle_(base::kNullProcessHandle) {}
+
+ChildProcessData::ChildProcessData(ChildProcessData&& rhs)
+    : process_type(rhs.process_type),
+      name(rhs.name),
+      metrics_name(rhs.metrics_name),
+      id(rhs.id) {
+#if defined(OS_WIN)
+  handle_.Set(rhs.handle_.Take());
+#else
+  handle_ = rhs.handle_;
+  rhs.handle_ = base::kNullProcessHandle;
+#endif
+}
+
+ChildProcessData::~ChildProcessData() {}
+
+ChildProcessData ChildProcessData::Duplicate() const {
+  ChildProcessData result(process_type);
+  result.name = name;
+  result.metrics_name = metrics_name;
+  result.id = id;
+#if defined(OS_WIN)
+  result.SetHandle(handle_.Get());
+#else
+  result.SetHandle(handle_);
+#endif
+  return result;
+}
+
+}  // namespace content
diff --git a/content/public/browser/child_process_data.h b/content/public/browser/child_process_data.h
index 887d06dd..3e8d6760 100644
--- a/content/public/browser/child_process_data.h
+++ b/content/public/browser/child_process_data.h
@@ -7,12 +7,17 @@
 
 #include "base/process/process.h"
 #include "base/strings/string16.h"
+#include "build/build_config.h"
 #include "content/common/content_export.h"
 
+#if defined(OS_WIN)
+#include "base/win/scoped_handle.h"
+#endif
+
 namespace content {
 
 // Holds information about a child process.
-struct ChildProcessData {
+struct CONTENT_EXPORT ChildProcessData {
   // The type of the process. See the content::ProcessType enum for the
   // well-known process types.
   int process_type;
@@ -29,15 +34,37 @@
   // one run of the browser.
   int id;
 
-  // The handle to the process. May have value kNullProcessHandle if no process
-  // exists - either because it hasn't been started yet or it's running in the
-  // current process.
-  base::ProcessHandle handle;
+#if defined(OS_WIN)
+  base::ProcessHandle GetHandle() const { return handle_.Get(); }
+  // Will duplicate the handle and assume ownership of the duplicate.
+  void SetHandle(base::ProcessHandle process);
+#else
+  base::ProcessHandle GetHandle() const { return handle_; }
+  void SetHandle(base::ProcessHandle process) { handle_ = process; }
+#endif
 
-  explicit ChildProcessData(int process_type)
-      : process_type(process_type),
-        id(0),
-        handle(base::kNullProcessHandle) {}
+  bool IsHandleValid() const { return GetHandle() != base::kNullProcessHandle; }
+
+  explicit ChildProcessData(int process_type);
+  ~ChildProcessData();
+
+  ChildProcessData(ChildProcessData&& rhs);
+
+  // Copying these objects requires duplicating the handle which is moderately
+  // expensive, so make it an explicit action.
+  ChildProcessData Duplicate() const;
+
+ private:
+// The handle to the process. May have value kNullProcessHandle if no process
+// exists - either because it hasn't been started yet or it's running in the
+// current process.
+#if defined(OS_WIN)
+  // Must be a scoped handle on Windows holding a duplicated handle or else
+  // there are no guarantees the handle will still be valid when used.
+  base::win::ScopedHandle handle_;
+#else
+  base::ProcessHandle handle_;
+#endif
 };
 
 }  // namespace content
diff --git a/content/renderer/input/input_handler_manager_client.h b/content/renderer/input/input_handler_manager_client.h
index 7793a65..6f91e63a3 100644
--- a/content/renderer/input/input_handler_manager_client.h
+++ b/content/renderer/input/input_handler_manager_client.h
@@ -49,7 +49,6 @@
   // Otherwise |DidOverscroll| will be fired.
   virtual void DidOverscroll(int routing_id,
                              const ui::DidOverscrollParams& params) = 0;
-  virtual void DidStopFlinging(int routing_id) = 0;
   virtual void DidStartScrollingViewport(int routing_id) = 0;
   virtual void DispatchNonBlockingEventToMainThread(
       int routing_id,
diff --git a/content/test/data/gpu/pixel_canvas_low_latency_webgl.html b/content/test/data/gpu/pixel_canvas_low_latency_webgl.html
new file mode 100644
index 0000000..09ff968
--- /dev/null
+++ b/content/test/data/gpu/pixel_canvas_low_latency_webgl.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML>
+
+<!-- READ BEFORE UPDATING:
+If this test is updated make sure to increment the "revision" value of the
+associated test in content/test/gpu/page_sets/pixel_tests.py. This will ensure
+that the baseline images are regenerated on the next run.
+-->
+
+<html>
+<head>
+<title>Low Latency WebGL Canvas Test: Should render a green box with an upward pointing white arrow</title>
+<style type="text/css">
+.nomargin {
+  margin: 0px auto;
+}
+</style>
+<script>
+let g_swapsBeforeAck = 15;
+let g_canvas;
+let g_gl;
+
+function main()
+{
+  g_canvas = document.getElementById("c");
+  g_gl = g_canvas.getContext("webgl", {lowLatency: true, preserveDrawingBuffer: true});
+  requestAnimationFrame(draw);
+}
+
+function draw()
+{
+  g_gl.clearColor(1, 0, 0, 1);
+  g_gl.clear(g_gl.COLOR_BUFFER_BIT);
+  requestAnimationFrame(draw2);
+}
+
+function draw2()
+{
+  // the last frame is what should be visible when test ends
+  g_gl.clearColor(0, 1, 0, 1);
+  g_gl.clear(g_gl.COLOR_BUFFER_BIT);
+
+  waitForFinish();
+}
+
+function waitForFinish()
+{
+  if (g_swapsBeforeAck == 0) {
+    domAutomationController.send("SUCCESS");
+  } else {
+    g_swapsBeforeAck--;
+    window.requestAnimationFrame(waitForFinish);
+  }
+}
+</script>
+</head>
+<body onload="main()">
+<div id="container" style="position:absolute; top:0px; left:0px">
+<canvas id="c" width="100" height="100" class="nomargin" style="background-color:black"></canvas>
+</div>
+</body>
+</html>
diff --git a/content/test/data/gpu/webgl_extension_test.html b/content/test/data/gpu/webgl_extension_test.html
index d444c3b..e2a062a1 100644
--- a/content/test/data/gpu/webgl_extension_test.html
+++ b/content/test/data/gpu/webgl_extension_test.html
@@ -47,7 +47,7 @@
         if (missing_list.length == 0) {
           webglTestHarness.reportResults(name, true, "All " + context_type + " extensions are being tested.");
         } else {
-          var error_string = "The following " + context_type + " extensions are not being tested and should be added to GetExtensionList() in content/test/gpu/gpu_tests/webgl_conformance.py:";
+          var error_string = "The following " + context_type + " extensions are not being tested and should be added to GetExtensionList() in content/test/gpu/gpu_tests/webgl_conformance_integration_test.py:";
           for (var i in missing_list) {
             error_string += "\n\t" + missing_list[i];
           }
diff --git a/content/test/gpu/gpu_tests/pixel_test_pages.py b/content/test/gpu/gpu_tests/pixel_test_pages.py
index 70163dc6..4a30ed0 100644
--- a/content/test/gpu/gpu_tests/pixel_test_pages.py
+++ b/content/test/gpu/gpu_tests/pixel_test_pages.py
@@ -578,6 +578,23 @@
       test_rect=[0, 0, 100, 100],
       revision=2,
       browser_args=browser_args + unaccelerated_args),
+
+    PixelTestPage(
+      'pixel_canvas_low_latency_webgl.html',
+      base_name + '_CanvasLowLatencyWebGL',
+      test_rect=[0, 0, 200, 200],
+      revision=0, # not used
+      browser_args=browser_args,
+      expected_colors=[
+        SCALE_FACTOR_OVERRIDES,
+        {
+          'comment': 'green',
+          'location': [1, 1],
+          'size': [98, 98],
+          'color': [0, 255, 0],
+          'tolerance': 0
+        },
+      ]),
   ]
 
 # Only add these tests on platforms where SwiftShader is enabled.
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
index 6845e70..e1853f95 100644
--- a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
+++ b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
@@ -30,6 +30,12 @@
     self.Skip('WebglExtension_WEBGL_compressed_texture_s3tc_srgb',
         ['win', 'mac', 'linux'])
     self.Skip('WebglExtension_EXT_disjoint_timer_query_webgl2', bug=808744)
+    self.Skip('WebglExtension_WEBGL_multiview',
+        ['mac', 'linux', 'android'], bug=864524)
+
+    # The multiview extension is only expected to be supported through ANGLE.
+    self.Skip('WebglExtension_WEBGL_multiview',
+        ['win', 'no_passthrough'], bug=864524)
 
     # ========================
     # Conformance expectations
diff --git a/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py b/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
index be44fca7..216520a 100644
--- a/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
+++ b/content/test/gpu/gpu_tests/webgl_conformance_integration_test.py
@@ -176,6 +176,7 @@
         'WEBGL_debug_renderer_info',
         'WEBGL_debug_shaders',
         'WEBGL_lose_context',
+        'WEBGL_multiview',
       ]
 
   def RunActualGpuTest(self, test_path, *args):
diff --git a/device/bluetooth/bluetooth_task_manager_win.cc b/device/bluetooth/bluetooth_task_manager_win.cc
index 2f9f7aeb..7abd219 100644
--- a/device/bluetooth/bluetooth_task_manager_win.cc
+++ b/device/bluetooth/bluetooth_task_manager_win.cc
@@ -269,7 +269,7 @@
 void BluetoothTaskManagerWin::Initialize() {
   DCHECK(ui_task_runner_->RunsTasksInCurrentSequence());
   InitializeWithBluetoothTaskRunner(base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}));
 }
 
diff --git a/docs/threading_and_tasks.md b/docs/threading_and_tasks.md
index e47be02..223e398 100644
--- a/docs/threading_and_tasks.md
+++ b/docs/threading_and_tasks.md
@@ -102,7 +102,7 @@
 
 ```cpp
 base::PostTaskWithTraits(
-    FROM_HERE, {base::TaskPriority::BACKGROUND, MayBlock()},
+    FROM_HERE, {base::TaskPriority::BEST_EFFORT, MayBlock()},
     base::BindOnce(&Task));
 ```
 
@@ -393,7 +393,7 @@
 // This task has the lowest priority and is allowed to block (e.g. it
 // can read a file from disk).
 base::PostTaskWithTraits(
-    FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+    FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
     base::BindOnce(...));
 
 // This task blocks shutdown. The process won't exit before its
@@ -443,18 +443,18 @@
 
 ```cpp
 base::PostDelayedTaskWithTraits(
-  FROM_HERE, {base::TaskPriority::BACKGROUND}, base::BindOnce(&Task),
+  FROM_HERE, {base::TaskPriority::BEST_EFFORT}, base::BindOnce(&Task),
   base::TimeDelta::FromHours(1));
 
 scoped_refptr<base::SequencedTaskRunner> task_runner =
-    base::CreateSequencedTaskRunnerWithTraits({base::TaskPriority::BACKGROUND});
+    base::CreateSequencedTaskRunnerWithTraits({base::TaskPriority::BEST_EFFORT});
 task_runner->PostDelayedTask(
     FROM_HERE, base::BindOnce(&Task), base::TimeDelta::FromHours(1));
 ```
 
 *** note
 **NOTE:** A task that has a 1-hour delay probably doesn’t have to run right away
-when its delay expires. Specify `base::TaskPriority::BACKGROUND` to prevent it
+when its delay expires. Specify `base::TaskPriority::BEST_EFFORT` to prevent it
 from slowing down the browser when its delay expires.
 ***
 
@@ -655,7 +655,7 @@
  private:
   scoped_refptr<base::SequencedTaskRunner> background_task_runner_ =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 }
 ```
 
diff --git a/extensions/browser/api/document_scan/document_scan_api.cc b/extensions/browser/api/document_scan/document_scan_api.cc
index 54e9b95f..236a746 100644
--- a/extensions/browser/api/document_scan/document_scan_api.cc
+++ b/extensions/browser/api/document_scan/document_scan_api.cc
@@ -30,7 +30,7 @@
 
 bool DocumentScanScanFunction::Prepare() {
   set_work_task_runner(base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
   params_ = document_scan::Scan::Params::Create(*args_);
   EXTENSION_FUNCTION_VALIDATE(params_.get());
   return true;
diff --git a/extensions/browser/api/file_system/file_system_api.cc b/extensions/browser/api/file_system/file_system_api.cc
index 3bff4b1..03adafaf 100644
--- a/extensions/browser/api/file_system/file_system_api.cc
+++ b/extensions/browser/api/file_system/file_system_api.cc
@@ -337,7 +337,7 @@
   }
 
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&FileSystemGetWritableEntryFunction::SetIsDirectoryAsync,
                      this),
       base::BindOnce(
@@ -522,7 +522,7 @@
 #endif
 
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(
             &FileSystemChooseEntryFunction::ConfirmDirectoryAccessAsync, this,
             non_native_path, paths, web_contents));
@@ -771,7 +771,7 @@
   }
 #endif
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&base::DirectoryExists, previous_path),
       set_initial_path_callback);
 
diff --git a/extensions/browser/api/system_storage/system_storage_api.cc b/extensions/browser/api/system_storage/system_storage_api.cc
index 8ee37aa..6ad3845 100644
--- a/extensions/browser/api/system_storage/system_storage_api.cc
+++ b/extensions/browser/api/system_storage/system_storage_api.cc
@@ -98,7 +98,7 @@
 SystemStorageGetAvailableCapacityFunction::
     SystemStorageGetAvailableCapacityFunction()
     : query_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          base::TaskTraits(base::TaskPriority::BACKGROUND,
+          base::TaskTraits(base::TaskPriority::BEST_EFFORT,
                            base::MayBlock(),
                            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN))) {}
 
diff --git a/extensions/browser/extension_protocols.cc b/extensions/browser/extension_protocols.cc
index dc0b2b6..81819a7 100644
--- a/extensions/browser/extension_protocols.cc
+++ b/extensions/browser/extension_protocols.cc
@@ -202,7 +202,7 @@
             network_delegate,
             base::FilePath(),
             base::CreateTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                  base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
         verify_job_(verify_job),
         seek_position_(0),
diff --git a/extensions/browser/updater/update_data_provider.cc b/extensions/browser/updater/update_data_provider.cc
index c492f58..b3bcddf 100644
--- a/extensions/browser/updater/update_data_provider.cc
+++ b/extensions/browser/updater/update_data_provider.cc
@@ -135,7 +135,7 @@
 
   if (!browser_context_) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
         base::BindOnce(base::IgnoreResult(&base::DeleteFile), unpacked_dir,
                        true));
     return;
diff --git a/gpu/GLES2/gl2chromium_autogen.h b/gpu/GLES2/gl2chromium_autogen.h
index 0c8590b..e08f169 100644
--- a/gpu/GLES2/gl2chromium_autogen.h
+++ b/gpu/GLES2/gl2chromium_autogen.h
@@ -405,5 +405,7 @@
 #define glDestroyGpuFenceCHROMIUM GLES2_GET_FUN(DestroyGpuFenceCHROMIUM)
 #define glInvalidateReadbackBufferShadowDataCHROMIUM \
   GLES2_GET_FUN(InvalidateReadbackBufferShadowDataCHROMIUM)
+#define glFramebufferTextureMultiviewLayeredANGLE \
+  GLES2_GET_FUN(FramebufferTextureMultiviewLayeredANGLE)
 
 #endif  // GPU_GLES2_GL2CHROMIUM_AUTOGEN_H_
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 63e56109..c3335a3e 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -4077,6 +4077,13 @@
     'extension': 'MESA_framebuffer_flip_y',
     'extension_flag': 'mesa_framebuffer_flip_y',
   },
+  'FramebufferTextureMultiviewLayeredANGLE': {
+    'decoder_func': 'DoFramebufferTextureMultiviewLayeredANGLE',
+    'unit_test': False,
+    'extension': 'ANGLE_multiview',
+    'trace_level': 1,
+    'es3': True
+  },
 }
 
 
diff --git a/gpu/command_buffer/client/gles2_c_lib_autogen.h b/gpu/command_buffer/client/gles2_c_lib_autogen.h
index 8bf28c9..ad2a5fcc 100644
--- a/gpu/command_buffer/client/gles2_c_lib_autogen.h
+++ b/gpu/command_buffer/client/gles2_c_lib_autogen.h
@@ -1807,6 +1807,16 @@
 GLES2InvalidateReadbackBufferShadowDataCHROMIUM(GLuint buffer_id) {
   gles2::GetGLContext()->InvalidateReadbackBufferShadowDataCHROMIUM(buffer_id);
 }
+void GL_APIENTRY
+GLES2FramebufferTextureMultiviewLayeredANGLE(GLenum target,
+                                             GLenum attachment,
+                                             GLuint texture,
+                                             GLint level,
+                                             GLint baseViewIndex,
+                                             GLsizei numViews) {
+  gles2::GetGLContext()->FramebufferTextureMultiviewLayeredANGLE(
+      target, attachment, texture, level, baseViewIndex, numViews);
+}
 
 namespace gles2 {
 
@@ -3169,6 +3179,11 @@
             glInvalidateReadbackBufferShadowDataCHROMIUM),
     },
     {
+        "glFramebufferTextureMultiviewLayeredANGLE",
+        reinterpret_cast<GLES2FunctionPointer>(
+            glFramebufferTextureMultiviewLayeredANGLE),
+    },
+    {
         NULL, NULL,
     },
 };
diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
index fbb6f06..ec080df 100644
--- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
+++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
@@ -3345,4 +3345,17 @@
   }
 }
 
+void FramebufferTextureMultiviewLayeredANGLE(GLenum target,
+                                             GLenum attachment,
+                                             GLuint texture,
+                                             GLint level,
+                                             GLint baseViewIndex,
+                                             GLsizei numViews) {
+  gles2::cmds::FramebufferTextureMultiviewLayeredANGLE* c =
+      GetCmdSpace<gles2::cmds::FramebufferTextureMultiviewLayeredANGLE>();
+  if (c) {
+    c->Init(target, attachment, texture, level, baseViewIndex, numViews);
+  }
+}
+
 #endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_CMD_HELPER_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_implementation_autogen.h b/gpu/command_buffer/client/gles2_implementation_autogen.h
index 10306ea..74f3f996 100644
--- a/gpu/command_buffer/client/gles2_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_autogen.h
@@ -1266,4 +1266,11 @@
 
 void InvalidateReadbackBufferShadowDataCHROMIUM(GLuint buffer_id) override;
 
+void FramebufferTextureMultiviewLayeredANGLE(GLenum target,
+                                             GLenum attachment,
+                                             GLuint texture,
+                                             GLint level,
+                                             GLint baseViewIndex,
+                                             GLsizei numViews) override;
+
 #endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
index d0b484d..284e0b2 100644
--- a/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_impl_autogen.h
@@ -3639,4 +3639,27 @@
   CheckGLError();
 }
 
+void GLES2Implementation::FramebufferTextureMultiviewLayeredANGLE(
+    GLenum target,
+    GLenum attachment,
+    GLuint texture,
+    GLint level,
+    GLint baseViewIndex,
+    GLsizei numViews) {
+  GPU_CLIENT_SINGLE_THREAD_CHECK();
+  GPU_CLIENT_LOG(
+      "[" << GetLogPrefix() << "] glFramebufferTextureMultiviewLayeredANGLE("
+          << GLES2Util::GetStringEnum(target) << ", "
+          << GLES2Util::GetStringEnum(attachment) << ", " << texture << ", "
+          << level << ", " << baseViewIndex << ", " << numViews << ")");
+  if (numViews < 0) {
+    SetGLError(GL_INVALID_VALUE, "glFramebufferTextureMultiviewLayeredANGLE",
+               "numViews < 0");
+    return;
+  }
+  helper_->FramebufferTextureMultiviewLayeredANGLE(
+      target, attachment, texture, level, baseViewIndex, numViews);
+  CheckGLError();
+}
+
 #endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_IMPL_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
index 552eb438..99a7913 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
@@ -3161,4 +3161,15 @@
   gl_->DestroyGpuFenceCHROMIUM(1);
   EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
 }
+
+TEST_F(GLES2ImplementationTest, FramebufferTextureMultiviewLayeredANGLE) {
+  struct Cmds {
+    cmds::FramebufferTextureMultiviewLayeredANGLE cmd;
+  };
+  Cmds expected;
+  expected.cmd.Init(1, 2, 3, 4, 5, 6);
+
+  gl_->FramebufferTextureMultiviewLayeredANGLE(1, 2, 3, 4, 5, 6);
+  EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
 #endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_IMPLEMENTATION_UNITTEST_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_interface_autogen.h b/gpu/command_buffer/client/gles2_interface_autogen.h
index fbee76a3..ddae5af 100644
--- a/gpu/command_buffer/client/gles2_interface_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_autogen.h
@@ -943,4 +943,10 @@
 virtual void WaitGpuFenceCHROMIUM(GLuint gpu_fence_id) = 0;
 virtual void DestroyGpuFenceCHROMIUM(GLuint gpu_fence_id) = 0;
 virtual void InvalidateReadbackBufferShadowDataCHROMIUM(GLuint buffer_id) = 0;
+virtual void FramebufferTextureMultiviewLayeredANGLE(GLenum target,
+                                                     GLenum attachment,
+                                                     GLuint texture,
+                                                     GLint level,
+                                                     GLint baseViewIndex,
+                                                     GLsizei numViews) = 0;
 #endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_INTERFACE_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_interface_stub_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
index 56c4d1d..857859f 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_autogen.h
@@ -912,4 +912,10 @@
 void WaitGpuFenceCHROMIUM(GLuint gpu_fence_id) override;
 void DestroyGpuFenceCHROMIUM(GLuint gpu_fence_id) override;
 void InvalidateReadbackBufferShadowDataCHROMIUM(GLuint buffer_id) override;
+void FramebufferTextureMultiviewLayeredANGLE(GLenum target,
+                                             GLenum attachment,
+                                             GLuint texture,
+                                             GLint level,
+                                             GLint baseViewIndex,
+                                             GLsizei numViews) override;
 #endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_INTERFACE_STUB_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
index 7125bec1..1795549 100644
--- a/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
@@ -1229,4 +1229,11 @@
 void GLES2InterfaceStub::DestroyGpuFenceCHROMIUM(GLuint /* gpu_fence_id */) {}
 void GLES2InterfaceStub::InvalidateReadbackBufferShadowDataCHROMIUM(
     GLuint /* buffer_id */) {}
+void GLES2InterfaceStub::FramebufferTextureMultiviewLayeredANGLE(
+    GLenum /* target */,
+    GLenum /* attachment */,
+    GLuint /* texture */,
+    GLint /* level */,
+    GLint /* baseViewIndex */,
+    GLsizei /* numViews */) {}
 #endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_INTERFACE_STUB_IMPL_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
index 07a6f309..506b208 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
@@ -912,4 +912,10 @@
 void WaitGpuFenceCHROMIUM(GLuint gpu_fence_id) override;
 void DestroyGpuFenceCHROMIUM(GLuint gpu_fence_id) override;
 void InvalidateReadbackBufferShadowDataCHROMIUM(GLuint buffer_id) override;
+void FramebufferTextureMultiviewLayeredANGLE(GLenum target,
+                                             GLenum attachment,
+                                             GLuint texture,
+                                             GLint level,
+                                             GLint baseViewIndex,
+                                             GLsizei numViews) override;
 #endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_TRACE_IMPLEMENTATION_AUTOGEN_H_
diff --git a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
index 67a3c5d..d87e56e 100644
--- a/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
+++ b/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
@@ -2625,4 +2625,17 @@
   gl_->InvalidateReadbackBufferShadowDataCHROMIUM(buffer_id);
 }
 
+void GLES2TraceImplementation::FramebufferTextureMultiviewLayeredANGLE(
+    GLenum target,
+    GLenum attachment,
+    GLuint texture,
+    GLint level,
+    GLint baseViewIndex,
+    GLsizei numViews) {
+  TRACE_EVENT_BINARY_EFFICIENT0(
+      "gpu", "GLES2Trace::FramebufferTextureMultiviewLayeredANGLE");
+  gl_->FramebufferTextureMultiviewLayeredANGLE(target, attachment, texture,
+                                               level, baseViewIndex, numViews);
+}
+
 #endif  // GPU_COMMAND_BUFFER_CLIENT_GLES2_TRACE_IMPLEMENTATION_IMPL_AUTOGEN_H_
diff --git a/gpu/command_buffer/common/gles2_cmd_format_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
index af427efd..cc2f79d 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
@@ -16492,4 +16492,77 @@
     offsetof(SetReadbackBufferShadowAllocationINTERNAL, size) == 16,
     "offset of SetReadbackBufferShadowAllocationINTERNAL size should be 16");
 
+struct FramebufferTextureMultiviewLayeredANGLE {
+  typedef FramebufferTextureMultiviewLayeredANGLE ValueType;
+  static const CommandId kCmdId = kFramebufferTextureMultiviewLayeredANGLE;
+  static const cmd::ArgFlags kArgFlags = cmd::kFixed;
+  static const uint8_t cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(1);
+
+  static uint32_t ComputeSize() {
+    return static_cast<uint32_t>(sizeof(ValueType));  // NOLINT
+  }
+
+  void SetHeader() { header.SetCmd<ValueType>(); }
+
+  void Init(GLenum _target,
+            GLenum _attachment,
+            GLuint _texture,
+            GLint _level,
+            GLint _baseViewIndex,
+            GLsizei _numViews) {
+    SetHeader();
+    target = _target;
+    attachment = _attachment;
+    texture = _texture;
+    level = _level;
+    baseViewIndex = _baseViewIndex;
+    numViews = _numViews;
+  }
+
+  void* Set(void* cmd,
+            GLenum _target,
+            GLenum _attachment,
+            GLuint _texture,
+            GLint _level,
+            GLint _baseViewIndex,
+            GLsizei _numViews) {
+    static_cast<ValueType*>(cmd)->Init(_target, _attachment, _texture, _level,
+                                       _baseViewIndex, _numViews);
+    return NextCmdAddress<ValueType>(cmd);
+  }
+
+  gpu::CommandHeader header;
+  uint32_t target;
+  uint32_t attachment;
+  uint32_t texture;
+  int32_t level;
+  int32_t baseViewIndex;
+  int32_t numViews;
+};
+
+static_assert(sizeof(FramebufferTextureMultiviewLayeredANGLE) == 28,
+              "size of FramebufferTextureMultiviewLayeredANGLE should be 28");
+static_assert(
+    offsetof(FramebufferTextureMultiviewLayeredANGLE, header) == 0,
+    "offset of FramebufferTextureMultiviewLayeredANGLE header should be 0");
+static_assert(
+    offsetof(FramebufferTextureMultiviewLayeredANGLE, target) == 4,
+    "offset of FramebufferTextureMultiviewLayeredANGLE target should be 4");
+static_assert(
+    offsetof(FramebufferTextureMultiviewLayeredANGLE, attachment) == 8,
+    "offset of FramebufferTextureMultiviewLayeredANGLE attachment should be 8");
+static_assert(
+    offsetof(FramebufferTextureMultiviewLayeredANGLE, texture) == 12,
+    "offset of FramebufferTextureMultiviewLayeredANGLE texture should be 12");
+static_assert(
+    offsetof(FramebufferTextureMultiviewLayeredANGLE, level) == 16,
+    "offset of FramebufferTextureMultiviewLayeredANGLE level should be 16");
+static_assert(offsetof(FramebufferTextureMultiviewLayeredANGLE,
+                       baseViewIndex) == 20,
+              "offset of FramebufferTextureMultiviewLayeredANGLE baseViewIndex "
+              "should be 20");
+static_assert(
+    offsetof(FramebufferTextureMultiviewLayeredANGLE, numViews) == 24,
+    "offset of FramebufferTextureMultiviewLayeredANGLE numViews should be 24");
+
 #endif  // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_AUTOGEN_H_
diff --git a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
index 37deaf0..0b85079 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
@@ -5462,4 +5462,24 @@
   CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
 }
 
+TEST_F(GLES2FormatTest, FramebufferTextureMultiviewLayeredANGLE) {
+  cmds::FramebufferTextureMultiviewLayeredANGLE& cmd =
+      *GetBufferAs<cmds::FramebufferTextureMultiviewLayeredANGLE>();
+  void* next_cmd =
+      cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
+              static_cast<GLuint>(13), static_cast<GLint>(14),
+              static_cast<GLint>(15), static_cast<GLsizei>(16));
+  EXPECT_EQ(static_cast<uint32_t>(
+                cmds::FramebufferTextureMultiviewLayeredANGLE::kCmdId),
+            cmd.header.command);
+  EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
+  EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
+  EXPECT_EQ(static_cast<GLenum>(12), cmd.attachment);
+  EXPECT_EQ(static_cast<GLuint>(13), cmd.texture);
+  EXPECT_EQ(static_cast<GLint>(14), cmd.level);
+  EXPECT_EQ(static_cast<GLint>(15), cmd.baseViewIndex);
+  EXPECT_EQ(static_cast<GLsizei>(16), cmd.numViews);
+  CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
+}
+
 #endif  // GPU_COMMAND_BUFFER_COMMON_GLES2_CMD_FORMAT_TEST_AUTOGEN_H_
diff --git a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
index 59d10791..0a719dae 100644
--- a/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_ids_autogen.h
@@ -343,7 +343,8 @@
   OP(CreateGpuFenceINTERNAL)                               /* 584 */ \
   OP(WaitGpuFenceCHROMIUM)                                 /* 585 */ \
   OP(DestroyGpuFenceCHROMIUM)                              /* 586 */ \
-  OP(SetReadbackBufferShadowAllocationINTERNAL)            /* 587 */
+  OP(SetReadbackBufferShadowAllocationINTERNAL)            /* 587 */ \
+  OP(FramebufferTextureMultiviewLayeredANGLE)              /* 588 */
 
 enum CommandId {
   kOneBeforeStartPoint =
diff --git a/gpu/command_buffer/gles2_cmd_buffer_functions.txt b/gpu/command_buffer/gles2_cmd_buffer_functions.txt
index c2d9431..cadd57a 100644
--- a/gpu/command_buffer/gles2_cmd_buffer_functions.txt
+++ b/gpu/command_buffer/gles2_cmd_buffer_functions.txt
@@ -397,3 +397,6 @@
 GL_APICALL void         GL_APIENTRY glInvalidateReadbackBufferShadowDataCHROMIUM (GLidBuffer buffer_id);
 // (used for CHROMIUM_nonblocking_readback implementation)
 GL_APICALL void         GL_APIENTRY glSetReadbackBufferShadowAllocationINTERNAL (GLidBuffer buffer_id, GLint shm_id, GLuint shm_offset, GLuint size);
+
+// Extension ANGLE_multiview
+GL_APICALL void         GL_APIENTRY glFramebufferTextureMultiviewLayeredANGLE (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc
index 5da83e0c..d8c940d 100644
--- a/gpu/command_buffer/service/feature_info.cc
+++ b/gpu/command_buffer/service/feature_info.cc
@@ -1497,6 +1497,15 @@
     validators_.framebuffer_parameter.AddValue(GL_FRAMEBUFFER_FLIP_Y_MESA);
     AddExtensionString("GL_MESA_framebuffer_flip_y");
   }
+
+  // Only supporting ANGLE_multiview in passthrough mode - not implemented in
+  // validating command decoder. The extension is only available in ANGLE and in
+  // that case Chromium should be using passthrough by default.
+  if (is_passthrough_cmd_decoder_ &&
+      gfx::HasExtension(extensions, "GL_ANGLE_multiview")) {
+    AddExtensionString("GL_ANGLE_multiview");
+    feature_flags_.angle_multiview = true;
+  }
 }
 
 void FeatureInfo::InitializeFloatAndHalfFloatFeatures(
diff --git a/gpu/command_buffer/service/feature_info.h b/gpu/command_buffer/service/feature_info.h
index 11f4b95e..d983db4b 100644
--- a/gpu/command_buffer/service/feature_info.h
+++ b/gpu/command_buffer/service/feature_info.h
@@ -130,6 +130,7 @@
     bool unpremultiply_and_dither_copy = false;
     bool separate_stencil_ref_mask_writemask = false;
     bool mesa_framebuffer_flip_y = false;
+    bool angle_multiview = false;
   };
 
   FeatureInfo();
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 43d0798..0a1e7c9 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -1665,6 +1665,14 @@
       GLenum target, GLenum attachment, GLuint texture, GLint level,
       GLint layer);
 
+  // Wrapper for glFramebufferTextureLayer.
+  void DoFramebufferTextureMultiviewLayeredANGLE(GLenum target,
+                                                 GLenum attachment,
+                                                 GLuint texture,
+                                                 GLint level,
+                                                 GLint base_view_index,
+                                                 GLsizei num_views);
+
   // Wrapper for glGenerateMipmap
   void DoGenerateMipmap(GLenum target);
 
@@ -7267,7 +7275,6 @@
     case GL_PROGRAM_BINARY_FORMATS:
       *num_written = 0;
       return true;
-
     default:
       if (pname >= GL_DRAW_BUFFER0_ARB && pname <= GL_DRAW_BUFFER15_ARB) {
         *num_written = 1;
@@ -8300,6 +8307,17 @@
   }
 }
 
+void GLES2DecoderImpl::DoFramebufferTextureMultiviewLayeredANGLE(
+    GLenum target,
+    GLenum attachment,
+    GLuint client_texture_id,
+    GLint level,
+    GLint base_view_index,
+    GLsizei num_views) {
+  // This is only supported in passthrough command buffer.
+  NOTREACHED();
+}
+
 void GLES2DecoderImpl::DoGetFramebufferAttachmentParameteriv(
     GLenum target,
     GLenum attachment,
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
index 70ac070..4c60d17 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
@@ -5322,6 +5322,32 @@
   return error::kNoError;
 }
 
+error::Error GLES2DecoderImpl::HandleFramebufferTextureMultiviewLayeredANGLE(
+    uint32_t immediate_data_size,
+    const volatile void* cmd_data) {
+  if (!feature_info_->IsWebGL2OrES3OrHigherContext())
+    return error::kUnknownCommand;
+  const volatile gles2::cmds::FramebufferTextureMultiviewLayeredANGLE& c =
+      *static_cast<
+          const volatile gles2::cmds::FramebufferTextureMultiviewLayeredANGLE*>(
+          cmd_data);
+  GLenum target = static_cast<GLenum>(c.target);
+  GLenum attachment = static_cast<GLenum>(c.attachment);
+  GLuint texture = static_cast<GLuint>(c.texture);
+  GLint level = static_cast<GLint>(c.level);
+  GLint baseViewIndex = static_cast<GLint>(c.baseViewIndex);
+  GLsizei numViews = static_cast<GLsizei>(c.numViews);
+  if (numViews < 0) {
+    LOCAL_SET_GL_ERROR(GL_INVALID_VALUE,
+                       "glFramebufferTextureMultiviewLayeredANGLE",
+                       "numViews < 0");
+    return error::kNoError;
+  }
+  DoFramebufferTextureMultiviewLayeredANGLE(target, attachment, texture, level,
+                                            baseViewIndex, numViews);
+  return error::kNoError;
+}
+
 bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) {
   switch (cap) {
     case GL_BLEND:
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
index 1a9f266..0ad13a9 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
@@ -661,6 +661,7 @@
           "GL_ANGLE_framebuffer_blit",
           "GL_ANGLE_framebuffer_multisample",
           "GL_ANGLE_instanced_arrays",
+          "GL_ANGLE_multiview",
           "GL_ANGLE_pack_reverse_row_order",
           "GL_ANGLE_texture_compression_dxt3",
           "GL_ANGLE_texture_compression_dxt5",
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
index 4b1cebe..5148d3b 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
@@ -193,6 +193,12 @@
                                        GLuint texture,
                                        GLint level,
                                        GLint layer);
+error::Error DoFramebufferTextureMultiviewLayeredANGLE(GLenum target,
+                                                       GLenum attachment,
+                                                       GLuint texture,
+                                                       GLint level,
+                                                       GLint base_view_index,
+                                                       GLsizei num_views);
 error::Error DoFrontFace(GLenum mode);
 error::Error DoGenBuffers(GLsizei n, volatile GLuint* buffers);
 error::Error DoGenerateMipmap(GLenum target);
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
index 1a1778e..ae2fcec 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
@@ -1224,6 +1224,26 @@
   return error::kNoError;
 }
 
+error::Error
+GLES2DecoderPassthroughImpl::DoFramebufferTextureMultiviewLayeredANGLE(
+    GLenum target,
+    GLenum attachment,
+    GLuint texture,
+    GLint level,
+    GLint base_view_index,
+    GLsizei num_views) {
+  if (IsEmulatedFramebufferBound(target)) {
+    InsertError(GL_INVALID_OPERATION,
+                "Cannot change the attachments of the default framebuffer.");
+    return error::kNoError;
+  }
+  api()->glFramebufferTextureMultiviewLayeredANGLEFn(
+      target, attachment,
+      GetTextureServiceID(api(), texture, resources_, false), level,
+      base_view_index, num_views);
+  return error::kNoError;
+}
+
 error::Error GLES2DecoderPassthroughImpl::DoFrontFace(GLenum mode) {
   api()->glFrontFaceFn(mode);
   return error::kNoError;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
index 5aad66f7..e91d86d8 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
@@ -4665,5 +4665,29 @@
   return error::kNoError;
 }
 
+error::Error
+GLES2DecoderPassthroughImpl::HandleFramebufferTextureMultiviewLayeredANGLE(
+    uint32_t immediate_data_size,
+    const volatile void* cmd_data) {
+  if (!feature_info_->IsWebGL2OrES3OrHigherContext())
+    return error::kUnknownCommand;
+  const volatile gles2::cmds::FramebufferTextureMultiviewLayeredANGLE& c =
+      *static_cast<
+          const volatile gles2::cmds::FramebufferTextureMultiviewLayeredANGLE*>(
+          cmd_data);
+  GLenum target = static_cast<GLenum>(c.target);
+  GLenum attachment = static_cast<GLenum>(c.attachment);
+  GLuint texture = static_cast<GLuint>(c.texture);
+  GLint level = static_cast<GLint>(c.level);
+  GLint baseViewIndex = static_cast<GLint>(c.baseViewIndex);
+  GLsizei numViews = static_cast<GLsizei>(c.numViews);
+  error::Error error = DoFramebufferTextureMultiviewLayeredANGLE(
+      target, attachment, texture, level, baseViewIndex, numViews);
+  if (error != error::kNoError) {
+    return error;
+  }
+  return error::kNoError;
+}
+
 }  // namespace gles2
 }  // namespace gpu
diff --git a/headless/app/headless_shell.cc b/headless/app/headless_shell.cc
index a3f0749f..ef62e17 100644
--- a/headless/app/headless_shell.cc
+++ b/headless/app/headless_shell.cc
@@ -156,7 +156,7 @@
 void HeadlessShell::OnStart(HeadlessBrowser* browser) {
   browser_ = browser;
   file_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND});
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
   HeadlessBrowserContext::Builder context_builder =
       browser_->CreateBrowserContextBuilder();
diff --git a/ios/chrome/app/application_delegate/metrics_mediator.mm b/ios/chrome/app/application_delegate/metrics_mediator.mm
index df33cb6..bfa321d 100644
--- a/ios/chrome/app/application_delegate/metrics_mediator.mm
+++ b/ios/chrome/app/application_delegate/metrics_mediator.mm
@@ -247,7 +247,7 @@
 
   app_group::main_app::RecordWidgetUsage();
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&app_group::main_app::ProcessPendingLogs, callback));
 }
 
diff --git a/ios/chrome/app/memory_monitor.mm b/ios/chrome/app/memory_monitor.mm
index 76a8544..33f323b 100644
--- a/ios/chrome/app/memory_monitor.mm
+++ b/ios/chrome/app/memory_monitor.mm
@@ -47,7 +47,7 @@
 void AsynchronousFreeMemoryMonitor() {
   UpdateBreakpadMemoryValues();
   base::PostDelayedTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&AsynchronousFreeMemoryMonitor),
       base::TimeDelta::FromSeconds(kMemoryMonitorDelayInSeconds));
 }
@@ -55,6 +55,6 @@
 
 void StartFreeMemoryMonitor() {
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                            base::BindOnce(&AsynchronousFreeMemoryMonitor));
 }
diff --git a/ios/chrome/browser/application_context_impl.cc b/ios/chrome/browser/application_context_impl.cc
index 6195319e..6ba494d65 100644
--- a/ios/chrome/browser/application_context_impl.cc
+++ b/ios/chrome/browser/application_context_impl.cc
@@ -391,7 +391,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> blocking_task_runner(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
 
   gcm_driver_ = gcm::CreateGCMDriverDesktop(
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_impl_io_data.mm b/ios/chrome/browser/browser_state/chrome_browser_state_impl_io_data.mm
index df209c1f..1bb7ff8 100644
--- a/ios/chrome/browser/browser_state/chrome_browser_state_impl_io_data.mm
+++ b/ios/chrome/browser/browser_state/chrome_browser_state_impl_io_data.mm
@@ -190,7 +190,7 @@
   network_json_store_ =
       new JsonPrefStore(network_json_store_filepath,
                         base::CreateSequencedTaskRunnerWithTraits(
-                            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                              base::TaskShutdownBehavior::BLOCK_SHUTDOWN}),
                         std::unique_ptr<PrefFilter>());
   network_json_store_->ReadPrefsAsync(nullptr);
@@ -250,7 +250,7 @@
         new net::SQLiteChannelIDStore(
             lazy_params_->channel_id_path,
             base::CreateSequencedTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
     channel_id_service = new net::ChannelIDService(
         new net::DefaultChannelIDStore(channel_id_db.get()));
   }
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm b/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm
index f87488b..e2de109 100644
--- a/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm
+++ b/ios/chrome/browser/browser_state/chrome_browser_state_io_data.mm
@@ -357,7 +357,7 @@
         std::make_unique<net::TransportSecurityPersister>(
             transport_security_state_.get(), profile_params_->path,
             base::CreateSequencedTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                  base::TaskShutdownBehavior::BLOCK_SHUTDOWN}));
   }
 
@@ -428,7 +428,7 @@
       url::kFileScheme,
       std::make_unique<net::FileProtocolHandler>(
           base::CreateTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND,
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})));
   DCHECK(set_protocol);
 
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc
index 71636d6..5b94d1d 100644
--- a/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc
+++ b/ios/chrome/browser/browser_state/chrome_browser_state_manager_impl.cc
@@ -200,7 +200,7 @@
       browser_state->GetOriginalChromeBrowserState()->GetStatePath();
   base::PostDelayedTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::Bind(&BrowserStateSizeTask, path),
       base::TimeDelta::FromSeconds(112));
diff --git a/ios/chrome/browser/browser_state/chrome_browser_state_removal_controller.mm b/ios/chrome/browser/browser_state/chrome_browser_state_removal_controller.mm
index 294b87dc..9aff870 100644
--- a/ios/chrome/browser/browser_state/chrome_browser_state_removal_controller.mm
+++ b/ios/chrome/browser/browser_state/chrome_browser_state_removal_controller.mm
@@ -144,7 +144,7 @@
   if (is_removing_browser_states) {
     SetHasBrowserStateBeenRemoved(true);
     base::PostTaskWithTraits(
-        FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
         base::BindOnce(&NukeBrowserStates, browser_states_to_nuke));
   }
 }
diff --git a/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_io_data.mm b/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_io_data.mm
index c1081ac..0e2f906 100644
--- a/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_io_data.mm
+++ b/ios/chrome/browser/browser_state/off_the_record_chrome_browser_state_io_data.mm
@@ -184,7 +184,7 @@
   channel_id_store = new net::SQLiteChannelIDStore(
       channel_id_path_,
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
 
   net::ChannelIDService* channel_id_service = new net::ChannelIDService(
       new net::DefaultChannelIDStore(channel_id_store.get()));
diff --git a/ios/chrome/browser/crash_report/breakpad_helper.mm b/ios/chrome/browser/crash_report/breakpad_helper.mm
index 61124b9b..926b556 100644
--- a/ios/chrome/browser/crash_report/breakpad_helper.mm
+++ b/ios/chrome/browser/crash_report/breakpad_helper.mm
@@ -167,7 +167,7 @@
   base::FilePath crash_directory;
   base::PathService::Get(ios::DIR_CRASH_DUMPS, &crash_directory);
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&DeleteAllReportsInDirectory, crash_directory));
 }
 
diff --git a/ios/chrome/browser/download/download_directory_util.cc b/ios/chrome/browser/download/download_directory_util.cc
index 9b9a853..117f0a58 100644
--- a/ios/chrome/browser/download/download_directory_util.cc
+++ b/ios/chrome/browser/download/download_directory_util.cc
@@ -30,6 +30,6 @@
 
 void DeleteDownloadsDirectory() {
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                            base::BindOnce(&DeleteDownloadsDirectorySync));
 }
diff --git a/ios/chrome/browser/feature_engagement/tracker_factory_util.mm b/ios/chrome/browser/feature_engagement/tracker_factory_util.mm
index a1424780..33251fa3 100644
--- a/ios/chrome/browser/feature_engagement/tracker_factory_util.mm
+++ b/ios/chrome/browser/feature_engagement/tracker_factory_util.mm
@@ -33,7 +33,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> background_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
   base::FilePath storage_dir = browser_state->GetStatePath().Append(
       kIOSFeatureEngagementTrackerStorageDirname);
diff --git a/ios/chrome/browser/gcm/ios_chrome_gcm_profile_service_factory.cc b/ios/chrome/browser/gcm/ios_chrome_gcm_profile_service_factory.cc
index 9aeed3c..3717c26 100644
--- a/ios/chrome/browser/gcm/ios_chrome_gcm_profile_service_factory.cc
+++ b/ios/chrome/browser/gcm/ios_chrome_gcm_profile_service_factory.cc
@@ -90,7 +90,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> blocking_task_runner(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
   ios::ChromeBrowserState* browser_state =
       ios::ChromeBrowserState::FromBrowserState(context);
diff --git a/ios/chrome/browser/ios_chrome_main_parts.mm b/ios/chrome/browser/ios_chrome_main_parts.mm
index 8062997..0e2545a 100644
--- a/ios/chrome/browser/ios_chrome_main_parts.mm
+++ b/ios/chrome/browser/ios_chrome_main_parts.mm
@@ -98,7 +98,7 @@
   // shutdown.
   scoped_refptr<base::SequencedTaskRunner> local_state_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 
   base::FilePath local_state_path;
diff --git a/ios/chrome/browser/net/cookie_util.mm b/ios/chrome/browser/net/cookie_util.mm
index f3e4571..5c08670 100644
--- a/ios/chrome/browser/net/cookie_util.mm
+++ b/ios/chrome/browser/net/cookie_util.mm
@@ -44,7 +44,7 @@
       new net::SQLitePersistentCookieStore(
           path, web::WebThread::GetTaskRunnerForThread(web::WebThread::IO),
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND}),
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT}),
           restore_old_session_cookies, crypto_delegate));
 }
 
diff --git a/ios/chrome/browser/reading_list/url_downloader.cc b/ios/chrome/browser/reading_list/url_downloader.cc
index 0fec280..1f72ff0 100644
--- a/ios/chrome/browser/reading_list/url_downloader.cc
+++ b/ios/chrome/browser/reading_list/url_downloader.cc
@@ -61,7 +61,7 @@
       mime_type_(),
       url_request_context_getter_(url_request_context_getter),
       task_runner_(base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})),
       task_tracker_() {}
 
diff --git a/ios/chrome/browser/sessions/session_service_ios.mm b/ios/chrome/browser/sessions/session_service_ios.mm
index eb0d9eff..679b91f 100644
--- a/ios/chrome/browser/sessions/session_service_ios.mm
+++ b/ios/chrome/browser/sessions/session_service_ios.mm
@@ -82,7 +82,7 @@
 - (instancetype)init {
   scoped_refptr<base::SequencedTaskRunner> taskRunner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
   return [self initWithTaskRunner:taskRunner];
 }
diff --git a/ios/chrome/browser/share_extension/share_extension_item_receiver.mm b/ios/chrome/browser/share_extension/share_extension_item_receiver.mm
index a1aa171..1866b85 100644
--- a/ios/chrome/browser/share_extension/share_extension_item_receiver.mm
+++ b/ios/chrome/browser/share_extension/share_extension_item_receiver.mm
@@ -131,7 +131,7 @@
     _readingListModel = readingListModel;
     _bookmarkModel = bookmarkModel;
     _taskRunner = base::CreateSequencedTaskRunnerWithTraits(
-        {base::MayBlock(), base::TaskPriority::BACKGROUND});
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 
     [[NSNotificationCenter defaultCenter]
         addObserver:self
diff --git a/ios/chrome/browser/snapshots/snapshots_util.mm b/ios/chrome/browser/snapshots/snapshots_util.mm
index deb0df9..800e7ea 100644
--- a/ios/chrome/browser/snapshots/snapshots_util.mm
+++ b/ios/chrome/browser/snapshots/snapshots_util.mm
@@ -42,7 +42,7 @@
   std::vector<base::FilePath> snapshots_paths;
   GetSnapshotsPaths(&snapshots_paths);
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&DeleteAllFiles, std::move(snapshots_paths)),
       std::move(callback));
 }
diff --git a/ios/chrome/browser/suggestions/suggestions_service_factory.mm b/ios/chrome/browser/suggestions/suggestions_service_factory.mm
index a8835b3e..7cbd4ad 100644
--- a/ios/chrome/browser/suggestions/suggestions_service_factory.mm
+++ b/ios/chrome/browser/suggestions/suggestions_service_factory.mm
@@ -82,7 +82,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> db_task_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   std::unique_ptr<leveldb_proto::ProtoDatabaseImpl<ImageData>> db(
       new leveldb_proto::ProtoDatabaseImpl<ImageData>(db_task_runner));
 
diff --git a/ios/chrome/browser/ui/download/download_manager_mediator.mm b/ios/chrome/browser/ui/download/download_manager_mediator.mm
index 78b7622..ecfb0c1 100644
--- a/ios/chrome/browser/ui/download/download_manager_mediator.mm
+++ b/ios/chrome/browser/ui/download/download_manager_mediator.mm
@@ -79,7 +79,7 @@
   }
 
   auto task_runner = base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND});
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   base::string16 file_name = task_->GetSuggestedFilename();
   base::FilePath path = destination_dir.Append(base::UTF16ToUTF8(file_name));
   auto writer = std::make_unique<net::URLFetcherFileWriter>(task_runner, path);
diff --git a/ios/chrome/browser/ui/download/legacy_download_manager_controller.mm b/ios/chrome/browser/ui/download/legacy_download_manager_controller.mm
index 8e951e41..b3a4d525 100644
--- a/ios/chrome/browser/ui/download/legacy_download_manager_controller.mm
+++ b/ios/chrome/browser/ui/download/legacy_download_manager_controller.mm
@@ -601,11 +601,11 @@
     // will be cleaned up during dealloc, but a local copy will be retained by
     // the block and won't be deleted until the block completes.
     base::FilePath downloadPathCopy = _downloadFilePath;
-    base::PostTaskWithTraits(FROM_HERE,
-                             {base::MayBlock(), base::TaskPriority::BACKGROUND},
-                             base::BindOnce(^{
-                               DeleteFile(downloadPathCopy, false);
-                             }));
+    base::PostTaskWithTraits(
+        FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
+        base::BindOnce(^{
+          DeleteFile(downloadPathCopy, false);
+        }));
   }
   if (_recordDownloadResultHistogram) {
     UMA_HISTOGRAM_ENUMERATION(kUMADownloadFileResult, DOWNLOAD_OTHER,
@@ -1237,7 +1237,7 @@
   _fetcher->SaveResponseToFileAtPath(
       _downloadFilePath,
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
   [[NetworkActivityIndicatorManager sharedInstance]
       startNetworkTaskForGroup:[self getNetworkActivityKey]];
   _fetcher->Start();
diff --git a/ios/chrome/browser/ui/external_file_remover_impl.mm b/ios/chrome/browser/ui/external_file_remover_impl.mm
index de66957..159e9a79 100644
--- a/ios/chrome/browser/ui/external_file_remover_impl.mm
+++ b/ios/chrome/browser/ui/external_file_remover_impl.mm
@@ -116,7 +116,7 @@
   NSInteger age_in_days = all_files ? 0 : kMinimumAgeInDays;
 
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(^{
         [ExternalFileController removeFilesExcluding:referenced_files
                                            olderThan:age_in_days];
diff --git a/ios/chrome/browser/ui/first_run/first_run_util.mm b/ios/chrome/browser/ui/first_run/first_run_util.mm
index e2ef733..ef3671a 100644
--- a/ios/chrome/browser/ui/first_run/first_run_util.mm
+++ b/ios/chrome/browser/ui/first_run/first_run_util.mm
@@ -147,7 +147,7 @@
     BOOL sign_in_attempted,
     BOOL has_sso_account) {
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND},
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
                            base::BindOnce(&CreateSentinel));
   RecordFirstRunMetricsInternal(browserState, sign_in_attempted,
                                 has_sso_account);
diff --git a/ios/chrome/browser/ui/image_util/image_saver.mm b/ios/chrome/browser/ui/image_util/image_saver.mm
index 4f90c23..6cf9cce 100644
--- a/ios/chrome/browser/ui/image_util/image_saver.mm
+++ b/ios/chrome/browser/ui/image_util/image_saver.mm
@@ -120,7 +120,7 @@
            completion:(void (^)(BOOL, NSError*))completion {
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
       base::BindOnce(^{
         base::AssertBlockingAllowed();
@@ -145,7 +145,7 @@
             completionHandler:^(BOOL success, NSError* error) {
               base::PostTaskWithTraits(
                   FROM_HERE,
-                  {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                  {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                    base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
                   base::BindOnce(^{
                     base::AssertBlockingAllowed();
diff --git a/ios/chrome/browser/ui/ntp/ntp_tile_saver.mm b/ios/chrome/browser/ui/ntp/ntp_tile_saver.mm
index 02901c0..5c4263c 100644
--- a/ios/chrome/browser/ui/ntp/ntp_tile_saver.mm
+++ b/ios/chrome/browser/ui/ntp/ntp_tile_saver.mm
@@ -128,7 +128,7 @@
   UpdateTileList(most_visited_data);
 
   base::PostTaskWithTraitsAndReply(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&ClearOutdatedIcons, most_visited_data,
                      favicons_directory),
       base::BindOnce(
@@ -189,7 +189,7 @@
           });
 
           base::PostTaskWithTraits(
-              FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+              FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
               std::move(writeImage));
         } else {
           NSDictionary* tiles = ReadSavedMostVisited();
@@ -213,7 +213,7 @@
           });
 
           base::PostTaskWithTraits(
-              FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+              FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
               std::move(removeImage));
         }
       };
diff --git a/ios/chrome/browser/ui/open_in_controller.mm b/ios/chrome/browser/ui/open_in_controller.mm
index ce7f2fd..917b31eb 100644
--- a/ios/chrome/browser/ui/open_in_controller.mm
+++ b/ios/chrome/browser/ui/open_in_controller.mm
@@ -220,7 +220,7 @@
                 action:@selector(handleTapFrom:)];
     [tapRecognizer_ setDelegate:self];
     sequencedTaskRunner_ = base::CreateSequencedTaskRunnerWithTraits(
-        {base::MayBlock(), base::TaskPriority::BACKGROUND});
+        {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
     isOpenInMenuDisplayed_ = NO;
   }
   return self;
diff --git a/ios/chrome/browser/ui/settings/password_exporter.mm b/ios/chrome/browser/ui/settings/password_exporter.mm
index c60b609..6cfec21 100644
--- a/ios/chrome/browser/ui/settings/password_exporter.mm
+++ b/ios/chrome/browser/ui/settings/password_exporter.mm
@@ -348,7 +348,7 @@
   NSURL* uniqueDirectoryURL =
       [passwordsTempFileURL URLByDeletingLastPathComponent];
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(^{
         base::AssertBlockingAllowed();
         NSFileManager* fileManager = [NSFileManager defaultManager];
diff --git a/ios/chrome/browser/web_resource/web_resource_util.cc b/ios/chrome/browser/web_resource/web_resource_util.cc
index 41c7f53..42a42ab 100644
--- a/ios/chrome/browser/web_resource/web_resource_util.cc
+++ b/ios/chrome/browser/web_resource/web_resource_util.cc
@@ -66,7 +66,7 @@
     const WebResourceService::SuccessCallback& success_callback,
     const WebResourceService::ErrorCallback& error_callback) {
   base::PostTaskWithTraits(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::BindOnce(&ParseJSONOnBackgroundThread,
                      base::RetainedRef(base::ThreadTaskRunnerHandle::Get()),
                      data, success_callback, error_callback));
diff --git a/ios/web/shell/shell_url_request_context_getter.mm b/ios/web/shell/shell_url_request_context_getter.mm
index ce5ee154..bceaa0ff 100644
--- a/ios/web/shell/shell_url_request_context_getter.mm
+++ b/ios/web/shell/shell_url_request_context_getter.mm
@@ -81,7 +81,7 @@
         new net::SQLitePersistentCookieStore(
             cookie_path, network_task_runner_,
             base::CreateSequencedTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND}),
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT}),
             true, nullptr);
     std::unique_ptr<net::CookieStoreIOS> cookie_store(
         new net::CookieStoreIOSPersistent(persistent_store.get()));
@@ -109,7 +109,7 @@
         std::make_unique<net::TransportSecurityPersister>(
             url_request_context_->transport_security_state(), base_path_,
             base::CreateSequencedTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
     storage_->set_channel_id_service(std::make_unique<net::ChannelIDService>(
         new net::DefaultChannelIDStore(nullptr)));
     storage_->set_http_server_properties(
diff --git a/ios/web_view/internal/sync/web_view_gcm_profile_service_factory.mm b/ios/web_view/internal/sync/web_view_gcm_profile_service_factory.mm
index 297946d..86d0aa3 100644
--- a/ios/web_view/internal/sync/web_view_gcm_profile_service_factory.mm
+++ b/ios/web_view/internal/sync/web_view_gcm_profile_service_factory.mm
@@ -91,7 +91,7 @@
 
   scoped_refptr<base::SequencedTaskRunner> blocking_task_runner(
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}));
   WebViewBrowserState* browser_state =
       WebViewBrowserState::FromBrowserState(context);
diff --git a/ios/web_view/internal/web_view_url_request_context_getter.mm b/ios/web_view/internal/web_view_url_request_context_getter.mm
index bc417e0a..f7faedb 100644
--- a/ios/web_view/internal/web_view_url_request_context_getter.mm
+++ b/ios/web_view/internal/web_view_url_request_context_getter.mm
@@ -81,7 +81,7 @@
         new net::SQLitePersistentCookieStore(
             cookie_path, network_task_runner_,
             base::CreateSequencedTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND}),
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT}),
             true, nullptr);
     std::unique_ptr<net::CookieStoreIOS> cookie_store(
         new net::CookieStoreIOSPersistent(persistent_store.get()));
@@ -112,7 +112,7 @@
         std::make_unique<net::TransportSecurityPersister>(
             url_request_context_->transport_security_state(), base_path_,
             base::CreateSequencedTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
 
     // Setup channel id store.
     base::FilePath channel_id_path;
@@ -123,7 +123,7 @@
         new net::SQLiteChannelIDStore(
             channel_id_path,
             base::CreateSequencedTaskRunnerWithTraits(
-                {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+                {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
     storage_->set_channel_id_service(std::make_unique<net::ChannelIDService>(
         new net::DefaultChannelIDStore(channel_id_db.get())));
     storage_->set_http_server_properties(
diff --git a/media/audio/audio_debug_file_writer.h b/media/audio/audio_debug_file_writer.h
index 18bc9f2..b03b1ae 100644
--- a/media/audio/audio_debug_file_writer.h
+++ b/media/audio/audio_debug_file_writer.h
@@ -64,7 +64,7 @@
   // The task runner to do file output operations on.
   const scoped_refptr<base::SequencedTaskRunner> file_task_runner_ =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND,
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
            base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 
   AudioFileWriterUniquePtr file_writer_;
diff --git a/media/audio/audio_debug_recording_session_impl.cc b/media/audio/audio_debug_recording_session_impl.cc
index 1718174..abada54 100644
--- a/media/audio/audio_debug_recording_session_impl.cc
+++ b/media/audio/audio_debug_recording_session_impl.cc
@@ -60,7 +60,7 @@
 
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
       base::BindOnce(
           [](const base::FilePath& file_name) {
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index f33608b..36cbbc3e 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -362,7 +362,7 @@
   // used to allow process termination to not block on completing the task.
   base::PostTaskWithTraits(
       FROM_HERE,
-      {base::TaskPriority::BACKGROUND,
+      {base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(
           [](std::unique_ptr<Demuxer> demuxer_to_destroy) {
diff --git a/media/capabilities/video_decode_stats_db_impl.cc b/media/capabilities/video_decode_stats_db_impl.cc
index b184ebc..a18e1fb 100644
--- a/media/capabilities/video_decode_stats_db_impl.cc
+++ b/media/capabilities/video_decode_stats_db_impl.cc
@@ -39,7 +39,7 @@
   auto proto_db =
       std::make_unique<leveldb_proto::ProtoDatabaseImpl<DecodeStatsProto>>(
           base::CreateSequencedTaskRunnerWithTraits(
-              {base::MayBlock(), base::TaskPriority::BACKGROUND,
+              {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN}));
 
   return std::make_unique<VideoDecodeStatsDBImpl>(std::move(proto_db), db_dir_);
diff --git a/mojo/public/cpp/system/file_data_pipe_producer.cc b/mojo/public/cpp/system/file_data_pipe_producer.cc
index 842fe8f2..9d49162 100644
--- a/mojo/public/cpp/system/file_data_pipe_producer.cc
+++ b/mojo/public/cpp/system/file_data_pipe_producer.cc
@@ -267,7 +267,7 @@
 void FileDataPipeProducer::InitializeNewRequest(CompletionCallback callback) {
   DCHECK(!file_sequence_state_);
   auto file_task_runner = base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND});
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   file_sequence_state_ = new FileSequenceState(
       std::move(producer_), file_task_runner,
       base::BindOnce(&FileDataPipeProducer::OnWriteComplete,
diff --git a/net/disk_cache/cache_util.cc b/net/disk_cache/cache_util.cc
index fc6a56b..c8c005ce 100644
--- a/net/disk_cache/cache_util.cc
+++ b/net/disk_cache/cache_util.cc
@@ -143,7 +143,7 @@
   }
 
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::MayBlock(), base::TaskPriority::BACKGROUND,
+                           {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
                             base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
                            base::Bind(&CleanupCallback, path, name_str));
   return true;
diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc
index fd2ffe2..618d1749 100644
--- a/net/nqe/network_quality_estimator.cc
+++ b/net/nqe/network_quality_estimator.cc
@@ -59,7 +59,7 @@
 base::LazySequencedTaskRunner g_get_network_id_task_runner =
     LAZY_SEQUENCED_TASK_RUNNER_INITIALIZER(
         base::TaskTraits(base::MayBlock(),
-                         base::TaskPriority::BACKGROUND,
+                         base::TaskPriority::BEST_EFFORT,
                          base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN));
 #endif
 
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
index 800515a..73192a1 100644
--- a/net/url_request/url_request_context_builder.cc
+++ b/net/url_request/url_request_context_builder.cc
@@ -473,7 +473,7 @@
     // since it contains security-relevant information.
     scoped_refptr<base::SequencedTaskRunner> task_runner(
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::BLOCK_SHUTDOWN}));
 
     context->set_transport_security_persister(
diff --git a/printing/printed_document.cc b/printing/printed_document.cc
index 61716a8..7f6f718 100644
--- a/printing/printed_document.cc
+++ b/printing/printed_document.cc
@@ -103,7 +103,7 @@
   scoped_refptr<base::RefCountedMemory> data =
       base::RefCountedString::TakeString(&settings_str);
   base::PostTaskWithTraits(
-      FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+      FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
       base::BindOnce(&DebugDumpDataTask, doc_name, FILE_PATH_LITERAL(".json"),
                      base::RetainedRef(data)));
 }
@@ -147,7 +147,7 @@
 
   if (HasDebugDumpPath()) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
         base::BindOnce(&DebugDumpPageTask, name(), base::RetainedRef(page)));
   }
 }
@@ -178,7 +178,7 @@
 
   if (HasDebugDumpPath()) {
     base::PostTaskWithTraits(
-        FROM_HERE, {base::TaskPriority::BACKGROUND, base::MayBlock()},
+        FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
         base::BindOnce(&DebugDumpTask, name(), mutable_.metafile_.get()));
   }
 }
@@ -277,7 +277,7 @@
     const base::FilePath::StringType& extension) {
   DCHECK(HasDebugDumpPath());
   base::PostTaskWithTraits(FROM_HERE,
-                           {base::TaskPriority::BACKGROUND, base::MayBlock()},
+                           {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
                            base::BindOnce(&DebugDumpDataTask, name(), extension,
                                           base::RetainedRef(data)));
 }
diff --git a/remoting/host/file_proxy_wrapper_linux.cc b/remoting/host/file_proxy_wrapper_linux.cc
index b1a27b6..c7d1b95 100644
--- a/remoting/host/file_proxy_wrapper_linux.cc
+++ b/remoting/host/file_proxy_wrapper_linux.cc
@@ -148,7 +148,7 @@
   status_callback_ = std::move(status_callback);
 
   file_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND});
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   DCHECK(file_task_runner_);
 
   file_proxy_.reset(new base::FileProxy(file_task_runner_.get()));
diff --git a/rlz/lib/financial_ping.cc b/rlz/lib/financial_ping.cc
index 546d53bc..9abffc5 100644
--- a/rlz/lib/financial_ping.cc
+++ b/rlz/lib/financial_ping.cc
@@ -268,7 +268,7 @@
   // How frequently the financial ping thread should check
   // the shutdown condition?
   const base::TimeDelta kInterval = base::TimeDelta::FromMilliseconds(500);
-  base::PostDelayedTaskWithTraits(FROM_HERE, {base::TaskPriority::BACKGROUND},
+  base::PostDelayedTaskWithTraits(FROM_HERE, {base::TaskPriority::BEST_EFFORT},
                                   base::BindOnce(&ShutdownCheck, event),
                                   kInterval);
 }
@@ -402,7 +402,7 @@
 
   base::subtle::Release_Store(&g_cancelShutdownCheck, 0);
 
-  base::PostTaskWithTraits(FROM_HERE, {base::TaskPriority::BACKGROUND},
+  base::PostTaskWithTraits(FROM_HERE, {base::TaskPriority::BEST_EFFORT},
                            base::BindOnce(&ShutdownCheck, event));
 
   // PingRlzServer must be run in a separate sequence so that the TimedWait()
@@ -411,7 +411,7 @@
   scoped_refptr<base::SequencedTaskRunner> background_runner(
       base::CreateSequencedTaskRunnerWithTraits(
           {base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN,
-           base::TaskPriority::BACKGROUND}));
+           base::TaskPriority::BEST_EFFORT}));
   background_runner->PostTask(FROM_HERE,
                               base::BindOnce(&PingRlzServer, url, event));
 
diff --git a/services/audio/public/cpp/debug_recording_session.cc b/services/audio/public/cpp/debug_recording_session.cc
index 5fd4b84..61e19c9 100644
--- a/services/audio/public/cpp/debug_recording_session.cc
+++ b/services/audio/public/cpp/debug_recording_session.cc
@@ -52,7 +52,7 @@
     CreateWavFileCallback reply_callback) {
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
       base::BindOnce(
           [](const base::FilePath& file_name) {
diff --git a/services/device/serial/serial_device_enumerator_impl.cc b/services/device/serial/serial_device_enumerator_impl.cc
index 29cc704d..1f70c4f 100644
--- a/services/device/serial/serial_device_enumerator_impl.cc
+++ b/services/device/serial/serial_device_enumerator_impl.cc
@@ -27,7 +27,7 @@
   // blocking IO.
   scoped_refptr<base::SequencedTaskRunner> blockable_sequence_runner =
       base::CreateSequencedTaskRunnerWithTraits(
-          {base::MayBlock(), base::TaskPriority::BACKGROUND});
+          {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
   blockable_sequence_runner->PostTask(
       FROM_HERE,
       base::BindOnce(&CreateAndBindOnBlockableRunner, std::move(request)));
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
index 7943316e..ca4635b 100644
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -925,7 +925,7 @@
         *params_->http_server_properties_path,
         base::CreateSequencedTaskRunnerWithTraits(
             {base::MayBlock(), base::TaskShutdownBehavior::BLOCK_SHUTDOWN,
-             base::TaskPriority::BACKGROUND})));
+             base::TaskPriority::BEST_EFFORT})));
     PrefServiceFactory pref_service_factory;
     pref_service_factory.set_user_prefs(json_pref_store);
     pref_service_factory.set_async(true);
@@ -1165,7 +1165,7 @@
         base::MessageLoopCurrent::Get()->task_runner();
     scoped_refptr<base::SequencedTaskRunner> background_task_runner =
         base::CreateSequencedTaskRunnerWithTraits(
-            {base::MayBlock(), base::TaskPriority::BACKGROUND,
+            {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 
     std::unique_ptr<net::ChannelIDService> channel_id_service;
diff --git a/services/network/public/cpp/simple_url_loader.cc b/services/network/public/cpp/simple_url_loader.cc
index 92045169..9b7c9a8 100644
--- a/services/network/public/cpp/simple_url_loader.cc
+++ b/services/network/public/cpp/simple_url_loader.cc
@@ -292,7 +292,7 @@
     } else if (resource_request_->priority >= net::LOW) {
       task_priority = base::TaskPriority::USER_VISIBLE;
     } else {
-      task_priority = base::TaskPriority::BACKGROUND;
+      task_priority = base::TaskPriority::BEST_EFFORT;
     }
     return task_priority;
   }
diff --git a/services/tracing/coordinator.cc b/services/tracing/coordinator.cc
index 08355fd..6780177 100644
--- a/services/tracing/coordinator.cc
+++ b/services/tracing/coordinator.cc
@@ -275,7 +275,7 @@
   DCHECK(agent_registry_);
   constexpr base::TaskTraits traits = {base::MayBlock(),
                                        base::WithBaseSyncPrimitives(),
-                                       base::TaskPriority::BACKGROUND};
+                                       base::TaskPriority::BEST_EFFORT};
   background_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(traits);
 }
 
diff --git a/services/tracing/perfetto/perfetto_service.cc b/services/tracing/perfetto/perfetto_service.cc
index 08a0528..02e2445 100644
--- a/services/tracing/perfetto/perfetto_service.cc
+++ b/services/tracing/perfetto/perfetto_service.cc
@@ -53,7 +53,7 @@
               ? task_runner_for_testing
               : base::CreateSingleThreadTaskRunnerWithTraits(
                     {base::MayBlock(), base::WithBaseSyncPrimitives(),
-                     base::TaskPriority::BACKGROUND},
+                     base::TaskPriority::BEST_EFFORT},
                     base::SingleThreadTaskRunnerThreadMode::DEDICATED)) {
   DCHECK(!g_perfetto_service);
   g_perfetto_service = this;
diff --git a/services/tracing/public/cpp/perfetto/producer_client.cc b/services/tracing/public/cpp/perfetto/producer_client.cc
index cb3fe2b..cd67ef57 100644
--- a/services/tracing/public/cpp/perfetto/producer_client.cc
+++ b/services/tracing/public/cpp/perfetto/producer_client.cc
@@ -20,7 +20,7 @@
 
 scoped_refptr<base::SequencedTaskRunner> CreateTaskRunner() {
   return base::CreateSequencedTaskRunnerWithTraits(
-      {base::MayBlock(), base::TaskPriority::BACKGROUND});
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT});
 }
 
 // We never destroy the taskrunner as we may need it for cleanup
diff --git a/services/video_capture/device_factory_provider_impl.cc b/services/video_capture/device_factory_provider_impl.cc
index a23ce63..25b94fb 100644
--- a/services/video_capture/device_factory_provider_impl.cc
+++ b/services/video_capture/device_factory_provider_impl.cc
@@ -26,7 +26,7 @@
  public:
   GpuDependenciesContext() : weak_factory_for_gpu_io_thread_(this) {
     gpu_io_task_runner_ = base::CreateSequencedTaskRunnerWithTraits(
-        {base::TaskPriority::BACKGROUND, base::MayBlock()});
+        {base::TaskPriority::BEST_EFFORT, base::MayBlock()});
   }
 
   ~GpuDependenciesContext() {
diff --git a/storage/browser/quota/quota_settings.cc b/storage/browser/quota/quota_settings.cc
index 393dcd5b..90cad0c 100644
--- a/storage/browser/quota/quota_settings.cc
+++ b/storage/browser/quota/quota_settings.cc
@@ -137,7 +137,7 @@
                                OptionalQuotaSettingsCallback callback) {
   base::PostTaskWithTraitsAndReplyWithResult(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&CalculateNominalDynamicSettings, partition_path,
                      is_incognito),
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index f847cac..7c35060 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -1065,10 +1065,7 @@
       {
         "args": [
           "--xvfb",
-          "--extra-browser-args=--enable-features=VizDisplayCompositor",
-          "--skip=contrib.cluster_telemetry.screenshot_unittest.ScreenshotUnitTest.testScreenshot",
-          "--skip=core.perf_benchmark_unittest.PerfBenchmarkTest.testVariationArgs",
-          "--skip=core.perf_benchmark_unittest.PerfBenchmarkTest.testVariationArgsReference"
+          "--extra-browser-args=--enable-features=VizDisplayCompositor"
         ],
         "isolate_name": "telemetry_perf_unittests",
         "name": "telemetry_perf_unittests_viz",
@@ -1090,9 +1087,7 @@
       },
       {
         "args": [
-          "--extra-browser-args=--enable-features=VizDisplayCompositor",
-          "--skip=telemetry.internal.backends.chrome_inspector.inspector_page_unittest.InspectorPageTest.testCaptureScreenshot",
-          "--skip=telemetry.internal.browser.tab_unittest.GpuTabTest.testScreenshot"
+          "--extra-browser-args=--enable-features=VizDisplayCompositor"
         ],
         "isolate_name": "telemetry_unittests",
         "name": "telemetry_unittests_viz",
diff --git a/testing/buildbot/filters/mash.browser_tests.filter b/testing/buildbot/filters/mash.browser_tests.filter
index b322cb8c..b54b6ed9 100644
--- a/testing/buildbot/filters/mash.browser_tests.filter
+++ b/testing/buildbot/filters/mash.browser_tests.filter
@@ -3,6 +3,9 @@
 # with mash, see //ash/README.md. If you need to disable more than
 # ~10 tests, please contact someone on mustash-team@google.com to discuss.
 # Meta-bug: http://crbug.com/678687
+#
+# This is a blacklist. Don't add positive filters. Mixing filter types can
+# result in no tests running. See README.md.
 
 # Unknown failure.
 -BrowserTabRestoreTest.*
@@ -33,17 +36,20 @@
 
 # The browser frame is a work in progress.
 -BrowserNonClientFrameViewAshBackButtonTest.*
--BrowserNonClientFrameViewAshTest.*
-# Individual tests that work.
-BrowserNonClientFrameViewAshTest.NonImmersiveFullscreen*
-BrowserNonClientFrameViewAshTest.ImmersiveFullscreen*
-BrowserNonClientFrameViewAshTest.FrameMinSizeIsUpdated*
+-BrowserNonClientFrameViewAshTest.ActiveStateOfButtonMatchesWidget/*
+-BrowserNonClientFrameViewAshTest.AvatarDisplayOnTeleportedWindow/*
+-BrowserNonClientFrameViewAshTest.HeaderHeightForSnappedBrowserInSplitView/*
+-BrowserNonClientFrameViewAshTest.ImmersiveModeTopViewInset/*
+-BrowserNonClientFrameViewAshTest.IncognitoAvatar/*
+-BrowserNonClientFrameViewAshTest.IncognitoMarkedAsAssistantBlocked/*
+-BrowserNonClientFrameViewAshTest.RestoreMinimizedBrowserUpdatesCaption/*
+-BrowserNonClientFrameViewAshTest.ToggleTabletModeOnMinimizedWindow/*
+-BrowserNonClientFrameViewAshTest.ToggleTabletModeRelayout/*
+-BrowserNonClientFrameViewAshTest.TopViewInset/*
 
 # Direct access to ash window frames, tablet mode, overview mode, etc.
 -HomeLauncherBrowserNonClientFrameViewAshTest.*
-
-BrowserNonClientFrameViewAshTest.NonClientHitTest*
-BrowserNonClientFrameViewAshTest.AvatarMenuButtonHitTest*
+-HostedAppNonClientFrameViewAshTest.*
 
 # Fix immersive fullscreen mode in mash. https://crbug.com/844748.
 -ImmersiveModeBrowserViewTest.TestCaptionButtonsReceiveEventsInAppImmersiveMode*
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index f9316cc..7dfd8a37 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -1602,9 +1602,6 @@
       'args': [
         '--xvfb',
         '--extra-browser-args=--enable-features=VizDisplayCompositor',
-	'--skip=contrib.cluster_telemetry.screenshot_unittest.ScreenshotUnitTest.testScreenshot',
-	'--skip=core.perf_benchmark_unittest.PerfBenchmarkTest.testVariationArgs',
-	'--skip=core.perf_benchmark_unittest.PerfBenchmarkTest.testVariationArgsReference',
       ],
       'swarming': {
         'hard_timeout': 960,
@@ -1615,8 +1612,6 @@
       'isolate_name': 'telemetry_unittests',
       'args': [
         '--extra-browser-args=--enable-features=VizDisplayCompositor',
-	'--skip=telemetry.internal.backends.chrome_inspector.inspector_page_unittest.InspectorPageTest.testCaptureScreenshot',
-	'--skip=telemetry.internal.browser.tab_unittest.GpuTabTest.testScreenshot',
       ],
       'swarming': {
         'shards': 4,
diff --git a/third_party/PRESUBMIT.py b/third_party/PRESUBMIT.py
index 4dd1262..c5773b3 100644
--- a/third_party/PRESUBMIT.py
+++ b/third_party/PRESUBMIT.py
@@ -4,6 +4,7 @@
 
 ANDROID_WHITELISTED_LICENSES = [
   'A(pple )?PSL 2(\.0)?',
+  'Android Software Development Kit License',
   'Apache( Version)? 2(\.0)?',
   '(New )?([23]-Clause )?BSD( [23]-Clause)?( with advertising clause)?',
   'L?GPL ?v?2(\.[01])?( or later)?',
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index b5ff275..44bd3a1 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -164,7 +164,8 @@
 crbug.com/857490 virtual/paint-touchaction-rects/fast/events/touch/gesture/touch-gesture-fling-with-page-scale.html [ Skip ]
 
 # Sheriff 2018/05/25
-crbug.com/846749 [ Mac ] virtual/stable/http/tests/navigation/navigation-interrupted-by-fragment.html  [ Pass Failure ]
+crbug.com/846749 [ Linux Mac Debug ] http/tests/navigation/navigation-interrupted-by-fragment.html  [ Pass Timeout ]
+crbug.com/846749 [ Linux Mac Debug ] virtual/stable/http/tests/navigation/navigation-interrupted-by-fragment.html  [ Pass Timeout ]
 
 crbug.com/849459 fragmentation/repeating-thead-under-repeating-thead.html [ Failure ]
 
@@ -4796,4 +4797,4 @@
 crbug.com/867376 [ Mac ] http/tests/devtools/elements/css-variables/resolve-inherited-css-variables.js [ Timeout Pass ]
 crbug.com/867376 [ Linux ] virtual/gpu/fast/canvas/canvas-blending-image-over-color.html [ Timeout Pass ]
 crbug.com/867376 [ Linux ] virtual/gpu/fast/canvas/canvas-blending-image-over-image.html [ Timeout Pass ]
-crbug.com/867376 [ Linux ] virtual/gpu-rasterization/images/color-profile-mask-image-svg.html [ Timeout Pass ]
\ No newline at end of file
+crbug.com/867376 [ Linux ] virtual/gpu-rasterization/images/color-profile-mask-image-svg.html [ Timeout Pass ]
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 6d2ae3a..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.no-redirect.http-expected.txt
deleted file mode 100644
index b21f967..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index db917a20..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 84aad5f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.no-redirect.http-expected.txt
deleted file mode 100644
index 49b4a8f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index fcac34d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 6893d4df..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.no-redirect.http-expected.txt
deleted file mode 100644
index d463ea3d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 337d425..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index a906802..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.no-redirect.http-expected.txt
deleted file mode 100644
index 54161f26..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index de33c59..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 6548b6f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.no-redirect.http-expected.txt
deleted file mode 100644
index fc4a9d21..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index ff5403dde..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 208b09f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.no-redirect.http-expected.txt
deleted file mode 100644
index c2ee78c..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 41a6894..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 6cabd4d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 8f558715..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http-expected.txt
deleted file mode 100644
index fd338aed..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index d22062cb..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 9d2e167..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 5e93061..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http-expected.txt
deleted file mode 100644
index 4626379..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 7b15351..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 99abe104..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.no-redirect.http-expected.txt
deleted file mode 100644
index 01703fc..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index b99f3219..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index fdd1a5fb..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.no-redirect.http-expected.txt
deleted file mode 100644
index 40d99cb..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 2a81f91..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 08a8411..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.no-redirect.http-expected.txt
deleted file mode 100644
index 75e14cc..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index f6c7ce1a..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 655e6fa..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.no-redirect.http-expected.txt
deleted file mode 100644
index 4fa9ee5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 7e95f7f..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/origin/attr-referrer/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 0ea08f95..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.no-redirect.http-expected.txt
deleted file mode 100644
index 5841e601..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 2d911d5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/same-origin/attr-referrer/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index f4914e9..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.no-redirect.http-expected.txt
deleted file mode 100644
index 96114a3..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index fb18adb5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/same-origin/attr-referrer/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 4eebbb9..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/same-origin/attr-referrer/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index fc22172..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/same-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is omitted when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'omitted'. expected (undefined) undefined but got (string) "http://web-platform.test:8001/referrer-policy/same-origin/attr-referrer/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 3c633cd0..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http-expected.txt
deleted file mode 100644
index 629c43e..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index f3cdf97..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 494d1bc..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt
deleted file mode 100644
index af8d093..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 7ccbeeb..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index b15e222..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 9f8b8d86..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt
deleted file mode 100644
index 41a0d84..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 6909850..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 2abfa4d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http-expected.txt
deleted file mode 100644
index b7b2f196..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 094a0a4..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index e14f15bd..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt
deleted file mode 100644
index 892955d5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 1c5e03d..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is cross-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index 99f9b0b..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http-expected.txt
deleted file mode 100644
index 4389228..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 38fcdc5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an http
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt
deleted file mode 100644
index caa57a5..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with keep-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt
deleted file mode 100644
index 32ba9aa..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with no-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt
deleted file mode 100644
index 65a3298..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL The referrer URL is origin when a
-                                 document served over http requires an https
-                                 sub-resource via script-tag using the attr-referrer
-                                 delivery method with swap-origin-redirect and when
-                                 the target request is same-origin. assert_equals: Reported Referrer URL is 'origin'. expected "http://web-platform.test:8001/" but got "http://web-platform.test:8001/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html"
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/element-instance-property-listing-expected.txt b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/element-instance-property-listing-expected.txt
index 6c0430a..42ac415 100644
--- a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/element-instance-property-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/element-instance-property-listing-expected.txt
@@ -834,6 +834,7 @@
     property htmlFor
     property integrity
     property noModule
+    property referrerPolicy
     property src
     property text
     property type
diff --git a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt
index 17bad86e..503ee35 100644
--- a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -2973,6 +2973,7 @@
     getter htmlFor
     getter integrity
     getter noModule
+    getter referrerPolicy
     getter src
     getter text
     getter type
@@ -2985,6 +2986,7 @@
     setter htmlFor
     setter integrity
     setter noModule
+    setter referrerPolicy
     setter src
     setter text
     setter type
diff --git a/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt
index a1920b59..63d2b0a2 100644
--- a/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt
@@ -891,6 +891,7 @@
     property htmlFor
     property integrity
     property noModule
+    property referrerPolicy
     property src
     property text
     property type
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
index 0c26b9f..db71ce3 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
@@ -3433,6 +3433,7 @@
     getter htmlFor
     getter integrity
     getter noModule
+    getter referrerPolicy
     getter src
     getter text
     getter type
@@ -3445,6 +3446,7 @@
     setter htmlFor
     setter integrity
     setter noModule
+    setter referrerPolicy
     setter src
     setter text
     setter type
diff --git a/third_party/android_deps/.gitignore b/third_party/android_deps/.gitignore
index bff68cc..73fc9f1 100644
--- a/third_party/android_deps/.gitignore
+++ b/third_party/android_deps/.gitignore
@@ -1,4 +1,3 @@
-# JAR, AAR and info files will be fetched via CIPD.
-repository/*/*.jar
-repository/*/*.aar
-repository/*/*.info
+# JAR and AAR files will be fetched via CIPD.
+libs/*/*.jar
+libs/*/*.aar
diff --git a/third_party/android_deps/Android_SDK_License-December_9_2016.txt b/third_party/android_deps/Android_SDK_License-December_9_2016.txt
new file mode 100644
index 0000000..04fe972
--- /dev/null
+++ b/third_party/android_deps/Android_SDK_License-December_9_2016.txt
@@ -0,0 +1,145 @@
+This is the Android Software Development Kit License Agreement
+
+1. Introduction
+
+1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK" and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is licensed to you subject to the terms of the License Agreement. The License Agreement forms a legally binding contract between you and Google in relation to your use of the SDK.
+
+1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
+
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google LLC, a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+
+
+2. Accepting this License Agreement
+
+2.1 In order to use the SDK, you must first agree to the License Agreement. You may not use the SDK if you do not accept the License Agreement.
+
+2.2 By clicking to accept, you hereby agree to the terms of the License Agreement.
+
+2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred from receiving the SDK under the laws of the United States or other countries, including the country in which you are resident or from which you use the SDK.
+
+2.4 If you are agreeing to be bound by the License Agreement on behalf of your employer or other entity, you represent and warrant that you have full legal authority to bind your employer or such entity to the License Agreement. If you do not have the requisite authority, you may not accept the License Agreement or use the SDK on behalf of your employer or other entity.
+
+
+3. SDK License from Google
+
+3.1 Subject to the terms of the License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
+
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.  Except to the extent required by applicable third party licenses, you may not copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK.
+
+3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not the License Agreement.
+
+3.6 You agree that the form and nature of the SDK that Google provides may change without prior notice to you and that future versions of the SDK may be incompatible with applications developed on previous versions of the SDK. You agree that Google may stop (permanently or temporarily) providing the SDK (or any features within the SDK) to you or to users generally at Google's sole discretion, without prior notice to you.
+
+3.7 Nothing in the License Agreement gives you a right to use any of Google's trade names, trademarks, service marks, logos, domain names, or other distinctive brand features.
+
+3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices) that may be affixed to or contained within the SDK.
+
+
+4. Use of the SDK by You
+
+4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under the License Agreement in or to any software applications that you develop using the SDK, including any intellectual property rights that subsist in those applications.
+
+4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a) the License Agreement and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions (including any laws regarding the export of data or software to and from the United States or other relevant countries).
+
+4.3 You agree that if you use the SDK to develop applications for general public users, you will protect the privacy and legal rights of those users. If the users provide you with user names, passwords, or other login information or personal information, you must make the users aware that the information will be available to your application, and you must provide legally adequate privacy notice and protection for those users. If your application stores personal or sensitive information provided by users, it must do so securely. If the user provides your application with Google Account information, your application may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
+
+4.4 You agree that you will not engage in any activity with the SDK, including the development or distribution of an application, that interferes with, disrupts, damages, or accesses in an unauthorized manner the servers, networks, or other properties or services of any third party including, but not limited to, Google or any mobile communications carrier.
+
+4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any data, content, or resources that you create, transmit or display through Android and/or applications for Android, and for the consequences of your actions (including any loss or damage which Google may suffer) by doing so.
+
+4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the License Agreement, any applicable third party contract or Terms of Service, or any applicable law or regulation, and for the consequences (including any loss or damage which Google or any third party may suffer) of any such breach.
+
+
+5. Your Developer Credentials
+
+5.1 You agree that you are responsible for maintaining the confidentiality of any developer credentials that may be issued to you by Google or which you may choose yourself and that you will be solely responsible for all applications that are developed under your developer credentials.
+
+
+6. Privacy and Information
+
+6.1 In order to continually innovate and improve the SDK, Google may collect certain usage statistics from the software including but not limited to a unique identifier, associated IP address, version number of the software, and information on which tools and/or services in the SDK are being used and how they are being used. Before any of this information is collected, the SDK will notify you and seek your consent. If you withhold consent, the information will not be collected.
+
+6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in accordance with Google's Privacy Policy.
+
+
+7. Third Party Applications
+
+7.1 If you use the SDK to run applications developed by a third party or that access data, content or resources provided by a third party, you agree that Google is not responsible for those applications, data, content, or resources. You understand that all data, content or resources which you may access through such third party applications are the sole responsibility of the person from which they originated and that Google is not liable for any loss or damage that you may experience as a result of the use or access of any of those third party applications, data, content, or resources.
+
+7.2 You should be aware the data, content, and resources presented to you through such a third party application may be protected by intellectual property rights which are owned by the providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell, distribute or create derivative works based on these data, content, or resources (either in whole or in part) unless you have been specifically given permission to do so by the relevant owners.
+
+7.3 You acknowledge that your use of such third party applications, data, content, or resources may be subject to separate terms between you and the relevant third party. In that case, the License Agreement does not affect your legal relationship with these third parties.
+
+
+8. Using Android APIs
+
+8.1 Google Data APIs
+
+8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be protected by intellectual property rights which are owned by Google or those parties that provide the data (or by other persons or companies on their behalf). Your use of any such API may be subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create derivative works based on this data (either in whole or in part) unless allowed by the relevant Terms of Service.
+
+8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you shall retrieve data only with the user's explicit consent and only when, and for the limited purposes for which, the user has given you permission to do so.
+
+
+9. Terminating this License Agreement
+
+9.1 The License Agreement will continue to apply until terminated by either you or Google as set out below.
+
+9.2 If you want to terminate the License Agreement, you may do so by ceasing your use of the SDK and any relevant developer credentials.
+
+9.3 Google may at any time, terminate the License Agreement with you if:
+(A) you have breached any provision of the License Agreement; or
+(B) Google is required to do so by law; or
+(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
+(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country in which you are resident or from which you use the service, or the provision of the SDK or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
+
+9.4 When the License Agreement comes to an end, all of the legal rights, obligations and liabilities that you and Google have benefited from, been subject to (or which have accrued over time whilst the License Agreement has been in force) or which are expressed to continue indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall continue to apply to such rights, obligations and liabilities indefinitely.
+
+
+10. DISCLAIMER OF WARRANTIES
+
+10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
+
+10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
+
+10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+
+
+11. LIMITATION OF LIABILITY
+
+11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
+
+
+12. Indemnification
+
+12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless Google, its affiliates and their respective directors, officers, employees and agents from and against any and all claims, actions, suits or proceedings, as well as any and all losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any person or defames any person or violates their rights of publicity or privacy, and (c) any non-compliance by you with the License Agreement.
+
+
+13. Changes to the License Agreement
+
+13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK. When these changes are made, Google will make a new version of the License Agreement available on the website where the SDK is made available.
+
+
+14. General Legal Terms
+
+14.1 The License Agreement constitutes the whole legal agreement between you and Google and governs your use of the SDK (excluding any services which Google may provide to you under a separate written agreement), and completely replaces any prior agreements between you and Google in relation to the SDK.
+
+14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is contained in the License Agreement (or which Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.
+
+14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any provision of the License Agreement is invalid, then that provision will be removed from the License Agreement without affecting the rest of the License Agreement. The remaining provisions of the License Agreement will continue to be valid and enforceable.
+
+14.4 You acknowledge and agree that each member of the group of companies of which Google is the parent shall be third party beneficiaries to the License Agreement and that such other companies shall be entitled to directly enforce, and rely upon, any provision of the License Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person or company shall be third party beneficiaries to the License Agreement.
+
+14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
+
+14.6 The rights granted in the License Agreement may not be assigned or transferred by either you or Google without the prior written approval of the other party. Neither you nor Google shall be permitted to delegate their responsibilities or obligations under the License Agreement without the prior written approval of the other party.
+
+14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
+
+
+December 9, 2016
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
index 5021ce8d..196f5bed 100644
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -138,7 +138,7 @@
 
 # === Generated Code Start ===
 java_prebuilt("android_arch_lifecycle_common_java") {
-  jar_path = "repository/android_arch_lifecycle_common/common-1.0.0.jar"
+  jar_path = "libs/android_arch_lifecycle_common/common-1.0.0.jar"
   output_name = "android_arch_lifecycle_common"
   supports_android = true
   deps = [
@@ -147,8 +147,9 @@
 }
 
 android_aar_prebuilt("android_arch_lifecycle_runtime_java") {
-  aar_path = "repository/android_arch_lifecycle_runtime/runtime-1.0.0.aar"
-  info_path = "repository/android_arch_lifecycle_runtime/android_arch_lifecycle_runtime.info"
+  aar_path = "libs/android_arch_lifecycle_runtime/runtime-1.0.0.aar"
+  info_path =
+      "libs/android_arch_lifecycle_runtime/android_arch_lifecycle_runtime.info"
   deps = [
     ":android_arch_core_common_java",
     ":android_arch_lifecycle_common_java",
@@ -156,9 +157,8 @@
 }
 
 android_aar_prebuilt("com_android_support_appcompat_v7_java") {
-  aar_path =
-      "repository/com_android_support_appcompat_v7/appcompat-v7-27.0.0.aar"
-  info_path = "repository/com_android_support_appcompat_v7/com_android_support_appcompat_v7.info"
+  aar_path = "libs/com_android_support_appcompat_v7/appcompat-v7-27.0.0.aar"
+  info_path = "libs/com_android_support_appcompat_v7/com_android_support_appcompat_v7.info"
   deps = [
     ":com_android_support_animated_vector_drawable_java",
     ":com_android_support_support_annotations_java",
@@ -169,17 +169,16 @@
 }
 
 android_aar_prebuilt("com_android_support_cardview_v7_java") {
-  aar_path = "repository/com_android_support_cardview_v7/cardview-v7-27.0.0.aar"
-  info_path = "repository/com_android_support_cardview_v7/com_android_support_cardview_v7.info"
+  aar_path = "libs/com_android_support_cardview_v7/cardview-v7-27.0.0.aar"
+  info_path = "libs/com_android_support_cardview_v7/com_android_support_cardview_v7.info"
   deps = [
     ":com_android_support_support_annotations_java",
   ]
 }
 
 android_aar_prebuilt("com_android_support_design_java") {
-  aar_path = "repository/com_android_support_design/design-27.0.0.aar"
-  info_path =
-      "repository/com_android_support_design/com_android_support_design.info"
+  aar_path = "libs/com_android_support_design/design-27.0.0.aar"
+  info_path = "libs/com_android_support_design/com_android_support_design.info"
   deps = [
     ":com_android_support_appcompat_v7_java",
     ":com_android_support_recyclerview_v7_java",
@@ -189,9 +188,8 @@
 }
 
 android_aar_prebuilt("com_android_support_gridlayout_v7_java") {
-  aar_path =
-      "repository/com_android_support_gridlayout_v7/gridlayout-v7-27.0.0.aar"
-  info_path = "repository/com_android_support_gridlayout_v7/com_android_support_gridlayout_v7.info"
+  aar_path = "libs/com_android_support_gridlayout_v7/gridlayout-v7-27.0.0.aar"
+  info_path = "libs/com_android_support_gridlayout_v7/com_android_support_gridlayout_v7.info"
   deps = [
     ":com_android_support_support_compat_java",
     ":com_android_support_support_core_ui_java",
@@ -199,9 +197,8 @@
 }
 
 android_aar_prebuilt("com_android_support_mediarouter_v7_java") {
-  aar_path =
-      "repository/com_android_support_mediarouter_v7/mediarouter-v7-27.0.0.aar"
-  info_path = "repository/com_android_support_mediarouter_v7/com_android_support_mediarouter_v7.info"
+  aar_path = "libs/com_android_support_mediarouter_v7/mediarouter-v7-27.0.0.aar"
+  info_path = "libs/com_android_support_mediarouter_v7/com_android_support_mediarouter_v7.info"
   deps = [
     ":com_android_support_appcompat_v7_java",
     ":com_android_support_palette_v7_java",
@@ -210,13 +207,14 @@
 }
 
 android_aar_prebuilt("com_android_support_multidex_java") {
-  aar_path = "repository/com_android_support_multidex/multidex-1.0.0.aar"
-  info_path = "repository/com_android_support_multidex/com_android_support_multidex.info"
+  aar_path = "libs/com_android_support_multidex/multidex-1.0.0.aar"
+  info_path =
+      "libs/com_android_support_multidex/com_android_support_multidex.info"
 }
 
 android_aar_prebuilt("com_android_support_preference_leanback_v17_java") {
-  aar_path = "repository/com_android_support_preference_leanback_v17/preference-leanback-v17-27.0.0.aar"
-  info_path = "repository/com_android_support_preference_leanback_v17/com_android_support_preference_leanback_v17.info"
+  aar_path = "libs/com_android_support_preference_leanback_v17/preference-leanback-v17-27.0.0.aar"
+  info_path = "libs/com_android_support_preference_leanback_v17/com_android_support_preference_leanback_v17.info"
   deps = [
     ":com_android_support_appcompat_v7_java",
     ":com_android_support_leanback_v17_java",
@@ -228,8 +226,9 @@
 }
 
 android_aar_prebuilt("com_android_support_recyclerview_v7_java") {
-  aar_path = "repository/com_android_support_recyclerview_v7/recyclerview-v7-27.0.0.aar"
-  info_path = "repository/com_android_support_recyclerview_v7/com_android_support_recyclerview_v7.info"
+  aar_path =
+      "libs/com_android_support_recyclerview_v7/recyclerview-v7-27.0.0.aar"
+  info_path = "libs/com_android_support_recyclerview_v7/com_android_support_recyclerview_v7.info"
   deps = [
     ":com_android_support_support_annotations_java",
     ":com_android_support_support_compat_java",
@@ -238,15 +237,14 @@
 }
 
 java_prebuilt("com_android_support_support_annotations_java") {
-  jar_path = "repository/com_android_support_support_annotations/support-annotations-27.0.0.jar"
+  jar_path = "libs/com_android_support_support_annotations/support-annotations-27.0.0.jar"
   output_name = "com_android_support_support_annotations"
   supports_android = true
 }
 
 android_aar_prebuilt("com_android_support_support_compat_java") {
-  aar_path =
-      "repository/com_android_support_support_compat/support-compat-27.0.0.aar"
-  info_path = "repository/com_android_support_support_compat/com_android_support_support_compat.info"
+  aar_path = "libs/com_android_support_support_compat/support-compat-27.0.0.aar"
+  info_path = "libs/com_android_support_support_compat/com_android_support_support_compat.info"
   deps = [
     ":android_arch_lifecycle_runtime_java",
     ":com_android_support_support_annotations_java",
@@ -255,8 +253,9 @@
 }
 
 android_aar_prebuilt("com_android_support_support_core_ui_java") {
-  aar_path = "repository/com_android_support_support_core_ui/support-core-ui-27.0.0.aar"
-  info_path = "repository/com_android_support_support_core_ui/com_android_support_support_core_ui.info"
+  aar_path =
+      "libs/com_android_support_support_core_ui/support-core-ui-27.0.0.aar"
+  info_path = "libs/com_android_support_support_core_ui/com_android_support_support_core_ui.info"
   deps = [
     ":com_android_support_support_annotations_java",
     ":com_android_support_support_compat_java",
@@ -264,8 +263,8 @@
 }
 
 android_aar_prebuilt("com_android_support_support_core_utils_java") {
-  aar_path = "repository/com_android_support_support_core_utils/support-core-utils-27.0.0.aar"
-  info_path = "repository/com_android_support_support_core_utils/com_android_support_support_core_utils.info"
+  aar_path = "libs/com_android_support_support_core_utils/support-core-utils-27.0.0.aar"
+  info_path = "libs/com_android_support_support_core_utils/com_android_support_support_core_utils.info"
   deps = [
     ":com_android_support_support_annotations_java",
     ":com_android_support_support_compat_java",
@@ -273,8 +272,8 @@
 }
 
 android_aar_prebuilt("com_android_support_support_v13_java") {
-  aar_path = "repository/com_android_support_support_v13/support-v13-27.0.0.aar"
-  info_path = "repository/com_android_support_support_v13/com_android_support_support_v13.info"
+  aar_path = "libs/com_android_support_support_v13/support-v13-27.0.0.aar"
+  info_path = "libs/com_android_support_support_v13/com_android_support_support_v13.info"
   deps = [
     ":com_android_support_support_annotations_java",
     ":com_android_support_support_v4_java",
@@ -282,8 +281,9 @@
 }
 
 android_aar_prebuilt("com_android_support_support_v4_java") {
-  aar_path = "repository/com_android_support_support_v4/support-v4-27.0.0.aar"
-  info_path = "repository/com_android_support_support_v4/com_android_support_support_v4.info"
+  aar_path = "libs/com_android_support_support_v4/support-v4-27.0.0.aar"
+  info_path =
+      "libs/com_android_support_support_v4/com_android_support_support_v4.info"
   deps = [
     ":com_android_support_support_compat_java",
     ":com_android_support_support_core_ui_java",
@@ -293,8 +293,159 @@
   ]
 }
 
+android_aar_prebuilt("com_google_android_gms_play_services_auth_java") {
+  aar_path = "libs/com_google_android_gms_play_services_auth/play-services-auth-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info"
+  deps = [
+    ":com_google_android_gms_play_services_auth_api_phone_java",
+    ":com_google_android_gms_play_services_auth_base_java",
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_tasks_java",
+  ]
+}
+
+android_aar_prebuilt(
+    "com_google_android_gms_play_services_auth_api_phone_java") {
+  aar_path = "libs/com_google_android_gms_play_services_auth_api_phone/play-services-auth-api-phone-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_tasks_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_auth_base_java") {
+  aar_path = "libs/com_google_android_gms_play_services_auth_base/play-services-auth-base-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_auth_base/com_google_android_gms_play_services_auth_base.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_tasks_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_base_java") {
+  aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info"
+  deps = [
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_tasks_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_basement_java") {
+  aar_path = "libs/com_google_android_gms_play_services_basement/play-services-basement-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info"
+  deps = [
+    ":com_android_support_support_v4_java",
+  ]
+  input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_cast_java") {
+  aar_path = "libs/com_google_android_gms_play_services_cast/play-services-cast-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_cast/com_google_android_gms_play_services_cast.info"
+  deps = [
+    ":com_android_support_mediarouter_v7_java",
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_tasks_java",
+  ]
+}
+
+android_aar_prebuilt(
+    "com_google_android_gms_play_services_cast_framework_java") {
+  aar_path = "libs/com_google_android_gms_play_services_cast_framework/play-services-cast-framework-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_cast_framework/com_google_android_gms_play_services_cast_framework.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_cast_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_fido_java") {
+  aar_path = "libs/com_google_android_gms_play_services_fido/play-services-fido-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_fido/com_google_android_gms_play_services_fido.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_tasks_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_gcm_java") {
+  aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_gcm/com_google_android_gms_play_services_gcm.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_iid_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_iid_java") {
+  aar_path = "libs/com_google_android_gms_play_services_iid/play-services-iid-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_iid/com_google_android_gms_play_services_iid.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_tasks_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_instantapps_java") {
+  aar_path = "libs/com_google_android_gms_play_services_instantapps/play-services-instantapps-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_instantapps/com_google_android_gms_play_services_instantapps.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_tasks_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_location_java") {
+  aar_path = "libs/com_google_android_gms_play_services_location/play-services-location-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_location/com_google_android_gms_play_services_location.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_tasks_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_tasks_java") {
+  aar_path = "libs/com_google_android_gms_play_services_tasks/play-services-tasks-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_tasks/com_google_android_gms_play_services_tasks.info"
+  deps = [
+    ":com_google_android_gms_play_services_basement_java",
+  ]
+}
+
+android_aar_prebuilt("com_google_android_gms_play_services_vision_java") {
+  aar_path = "libs/com_google_android_gms_play_services_vision/play-services-vision-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+    ":com_google_android_gms_play_services_vision_common_java",
+  ]
+}
+
+android_aar_prebuilt(
+    "com_google_android_gms_play_services_vision_common_java") {
+  aar_path = "libs/com_google_android_gms_play_services_vision_common/play-services-vision-common-12.0.1.aar"
+  info_path = "libs/com_google_android_gms_play_services_vision_common/com_google_android_gms_play_services_vision_common.info"
+  deps = [
+    ":com_google_android_gms_play_services_base_java",
+    ":com_google_android_gms_play_services_basement_java",
+  ]
+}
+
 java_prebuilt("android_arch_core_common_java") {
-  jar_path = "repository/android_arch_core_common/common-1.0.0.jar"
+  jar_path = "libs/android_arch_core_common/common-1.0.0.jar"
   output_name = "android_arch_core_common"
   supports_android = true
   visibility = [ ":*" ]
@@ -304,8 +455,8 @@
 }
 
 android_aar_prebuilt("com_android_support_animated_vector_drawable_java") {
-  aar_path = "repository/com_android_support_animated_vector_drawable/animated-vector-drawable-27.0.0.aar"
-  info_path = "repository/com_android_support_animated_vector_drawable/com_android_support_animated_vector_drawable.info"
+  aar_path = "libs/com_android_support_animated_vector_drawable/animated-vector-drawable-27.0.0.aar"
+  info_path = "libs/com_android_support_animated_vector_drawable/com_android_support_animated_vector_drawable.info"
   visibility = [ ":*" ]
   deps = [
     ":com_android_support_support_core_ui_java",
@@ -314,9 +465,8 @@
 }
 
 android_aar_prebuilt("com_android_support_leanback_v17_java") {
-  aar_path =
-      "repository/com_android_support_leanback_v17/leanback-v17-27.0.0.aar"
-  info_path = "repository/com_android_support_leanback_v17/com_android_support_leanback_v17.info"
+  aar_path = "libs/com_android_support_leanback_v17/leanback-v17-27.0.0.aar"
+  info_path = "libs/com_android_support_leanback_v17/com_android_support_leanback_v17.info"
   visibility = [ ":*" ]
   deps = [
     ":com_android_support_recyclerview_v7_java",
@@ -328,8 +478,9 @@
 }
 
 android_aar_prebuilt("com_android_support_palette_v7_java") {
-  aar_path = "repository/com_android_support_palette_v7/palette-v7-27.0.0.aar"
-  info_path = "repository/com_android_support_palette_v7/com_android_support_palette_v7.info"
+  aar_path = "libs/com_android_support_palette_v7/palette-v7-27.0.0.aar"
+  info_path =
+      "libs/com_android_support_palette_v7/com_android_support_palette_v7.info"
   visibility = [ ":*" ]
   deps = [
     ":com_android_support_support_compat_java",
@@ -338,9 +489,8 @@
 }
 
 android_aar_prebuilt("com_android_support_preference_v14_java") {
-  aar_path =
-      "repository/com_android_support_preference_v14/preference-v14-27.0.0.aar"
-  info_path = "repository/com_android_support_preference_v14/com_android_support_preference_v14.info"
+  aar_path = "libs/com_android_support_preference_v14/preference-v14-27.0.0.aar"
+  info_path = "libs/com_android_support_preference_v14/com_android_support_preference_v14.info"
   visibility = [ ":*" ]
   deps = [
     ":com_android_support_appcompat_v7_java",
@@ -351,9 +501,8 @@
 }
 
 android_aar_prebuilt("com_android_support_preference_v7_java") {
-  aar_path =
-      "repository/com_android_support_preference_v7/preference-v7-27.0.0.aar"
-  info_path = "repository/com_android_support_preference_v7/com_android_support_preference_v7.info"
+  aar_path = "libs/com_android_support_preference_v7/preference-v7-27.0.0.aar"
+  info_path = "libs/com_android_support_preference_v7/com_android_support_preference_v7.info"
   visibility = [ ":*" ]
   deps = [
     ":com_android_support_appcompat_v7_java",
@@ -363,8 +512,9 @@
 }
 
 android_aar_prebuilt("com_android_support_support_fragment_java") {
-  aar_path = "repository/com_android_support_support_fragment/support-fragment-27.0.0.aar"
-  info_path = "repository/com_android_support_support_fragment/com_android_support_support_fragment.info"
+  aar_path =
+      "libs/com_android_support_support_fragment/support-fragment-27.0.0.aar"
+  info_path = "libs/com_android_support_support_fragment/com_android_support_support_fragment.info"
   visibility = [ ":*" ]
   deps = [
     ":com_android_support_support_annotations_java",
@@ -375,8 +525,8 @@
 }
 
 android_aar_prebuilt("com_android_support_support_media_compat_java") {
-  aar_path = "repository/com_android_support_support_media_compat/support-media-compat-27.0.0.aar"
-  info_path = "repository/com_android_support_support_media_compat/com_android_support_support_media_compat.info"
+  aar_path = "libs/com_android_support_support_media_compat/support-media-compat-27.0.0.aar"
+  info_path = "libs/com_android_support_support_media_compat/com_android_support_support_media_compat.info"
   visibility = [ ":*" ]
   deps = [
     ":com_android_support_support_annotations_java",
@@ -386,8 +536,8 @@
 }
 
 android_aar_prebuilt("com_android_support_support_vector_drawable_java") {
-  aar_path = "repository/com_android_support_support_vector_drawable/support-vector-drawable-27.0.0.aar"
-  info_path = "repository/com_android_support_support_vector_drawable/com_android_support_support_vector_drawable.info"
+  aar_path = "libs/com_android_support_support_vector_drawable/support-vector-drawable-27.0.0.aar"
+  info_path = "libs/com_android_support_support_vector_drawable/com_android_support_support_vector_drawable.info"
   visibility = [ ":*" ]
   deps = [
     ":com_android_support_support_annotations_java",
@@ -396,8 +546,9 @@
 }
 
 android_aar_prebuilt("com_android_support_transition_java") {
-  aar_path = "repository/com_android_support_transition/transition-27.0.0.aar"
-  info_path = "repository/com_android_support_transition/com_android_support_transition.info"
+  aar_path = "libs/com_android_support_transition/transition-27.0.0.aar"
+  info_path =
+      "libs/com_android_support_transition/com_android_support_transition.info"
   visibility = [ ":*" ]
   deps = [
     ":com_android_support_support_annotations_java",
diff --git a/third_party/android_deps/OWNERS b/third_party/android_deps/OWNERS
index 0472368..f3795e6 100644
--- a/third_party/android_deps/OWNERS
+++ b/third_party/android_deps/OWNERS
@@ -1,4 +1,4 @@
 agrieve@chromium.org
 bauerb@chromium.org
-dgn@chromium.org
 jbudorick@chromium.org
+wnwen@chromium.org
diff --git a/third_party/android_deps/additional_readme_paths.json b/third_party/android_deps/additional_readme_paths.json
index 120233f..464be0d 100644
--- a/third_party/android_deps/additional_readme_paths.json
+++ b/third_party/android_deps/additional_readme_paths.json
@@ -1,28 +1,43 @@
 [
-    "repository/android_arch_core_common",
-    "repository/android_arch_lifecycle_common",
-    "repository/android_arch_lifecycle_runtime",
-    "repository/com_android_support_animated_vector_drawable",
-    "repository/com_android_support_appcompat_v7",
-    "repository/com_android_support_cardview_v7",
-    "repository/com_android_support_design",
-    "repository/com_android_support_gridlayout_v7",
-    "repository/com_android_support_leanback_v17",
-    "repository/com_android_support_mediarouter_v7",
-    "repository/com_android_support_multidex",
-    "repository/com_android_support_palette_v7",
-    "repository/com_android_support_preference_leanback_v17",
-    "repository/com_android_support_preference_v14",
-    "repository/com_android_support_preference_v7",
-    "repository/com_android_support_recyclerview_v7",
-    "repository/com_android_support_support_annotations",
-    "repository/com_android_support_support_compat",
-    "repository/com_android_support_support_core_ui",
-    "repository/com_android_support_support_core_utils",
-    "repository/com_android_support_support_fragment",
-    "repository/com_android_support_support_media_compat",
-    "repository/com_android_support_support_v13",
-    "repository/com_android_support_support_v4",
-    "repository/com_android_support_support_vector_drawable",
-    "repository/com_android_support_transition"
+    "libs/android_arch_core_common",
+    "libs/android_arch_lifecycle_common",
+    "libs/android_arch_lifecycle_runtime",
+    "libs/com_android_support_animated_vector_drawable",
+    "libs/com_android_support_appcompat_v7",
+    "libs/com_android_support_cardview_v7",
+    "libs/com_android_support_design",
+    "libs/com_android_support_gridlayout_v7",
+    "libs/com_android_support_leanback_v17",
+    "libs/com_android_support_mediarouter_v7",
+    "libs/com_android_support_multidex",
+    "libs/com_android_support_palette_v7",
+    "libs/com_android_support_preference_leanback_v17",
+    "libs/com_android_support_preference_v14",
+    "libs/com_android_support_preference_v7",
+    "libs/com_android_support_recyclerview_v7",
+    "libs/com_android_support_support_annotations",
+    "libs/com_android_support_support_compat",
+    "libs/com_android_support_support_core_ui",
+    "libs/com_android_support_support_core_utils",
+    "libs/com_android_support_support_fragment",
+    "libs/com_android_support_support_media_compat",
+    "libs/com_android_support_support_v13",
+    "libs/com_android_support_support_v4",
+    "libs/com_android_support_support_vector_drawable",
+    "libs/com_android_support_transition",
+    "libs/com_google_android_gms_play_services_auth",
+    "libs/com_google_android_gms_play_services_auth_api_phone",
+    "libs/com_google_android_gms_play_services_auth_base",
+    "libs/com_google_android_gms_play_services_base",
+    "libs/com_google_android_gms_play_services_basement",
+    "libs/com_google_android_gms_play_services_cast",
+    "libs/com_google_android_gms_play_services_cast_framework",
+    "libs/com_google_android_gms_play_services_fido",
+    "libs/com_google_android_gms_play_services_gcm",
+    "libs/com_google_android_gms_play_services_iid",
+    "libs/com_google_android_gms_play_services_instantapps",
+    "libs/com_google_android_gms_play_services_location",
+    "libs/com_google_android_gms_play_services_tasks",
+    "libs/com_google_android_gms_play_services_vision",
+    "libs/com_google_android_gms_play_services_vision_common"
 ]
diff --git a/third_party/android_deps/repository/OWNERS b/third_party/android_deps/libs/OWNERS
similarity index 100%
rename from third_party/android_deps/repository/OWNERS
rename to third_party/android_deps/libs/OWNERS
diff --git a/third_party/android_deps/repository/android_arch_core_common/LICENSE b/third_party/android_deps/libs/android_arch_core_common/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/android_arch_core_common/LICENSE
rename to third_party/android_deps/libs/android_arch_core_common/LICENSE
diff --git a/third_party/android_deps/libs/android_arch_core_common/OWNERS b/third_party/android_deps/libs/android_arch_core_common/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/android_arch_core_common/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/android_arch_core_common/README.chromium b/third_party/android_deps/libs/android_arch_core_common/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/android_arch_core_common/README.chromium
rename to third_party/android_deps/libs/android_arch_core_common/README.chromium
diff --git a/third_party/android_deps/repository/android_arch_core_common/cipd.yaml b/third_party/android_deps/libs/android_arch_core_common/cipd.yaml
similarity index 80%
rename from third_party/android_deps/repository/android_arch_core_common/cipd.yaml
rename to third_party/android_deps/libs/android_arch_core_common/cipd.yaml
index 6ec5bde..ac5c8bb8 100644
--- a/third_party/android_deps/repository/android_arch_core_common/cipd.yaml
+++ b/third_party/android_deps/libs/android_arch_core_common/cipd.yaml
@@ -4,7 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:1.0.0-cr0
-package: chromium/third_party/android_deps/repository/android_arch_core_common
+package: chromium/third_party/android_deps/libs/android_arch_core_common
 description: Android Arch-Common
 data:
 - file: common-1.0.0.jar
diff --git a/third_party/android_deps/repository/android_arch_lifecycle_common/LICENSE b/third_party/android_deps/libs/android_arch_lifecycle_common/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/android_arch_lifecycle_common/LICENSE
rename to third_party/android_deps/libs/android_arch_lifecycle_common/LICENSE
diff --git a/third_party/android_deps/libs/android_arch_lifecycle_common/OWNERS b/third_party/android_deps/libs/android_arch_lifecycle_common/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/android_arch_lifecycle_common/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/android_arch_lifecycle_common/README.chromium b/third_party/android_deps/libs/android_arch_lifecycle_common/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/android_arch_lifecycle_common/README.chromium
rename to third_party/android_deps/libs/android_arch_lifecycle_common/README.chromium
diff --git a/third_party/android_deps/repository/android_arch_lifecycle_common/cipd.yaml b/third_party/android_deps/libs/android_arch_lifecycle_common/cipd.yaml
similarity index 80%
rename from third_party/android_deps/repository/android_arch_lifecycle_common/cipd.yaml
rename to third_party/android_deps/libs/android_arch_lifecycle_common/cipd.yaml
index 7467145..0a25b201 100644
--- a/third_party/android_deps/repository/android_arch_lifecycle_common/cipd.yaml
+++ b/third_party/android_deps/libs/android_arch_lifecycle_common/cipd.yaml
@@ -4,7 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:1.0.0-cr0
-package: chromium/third_party/android_deps/repository/android_arch_lifecycle_common
+package: chromium/third_party/android_deps/libs/android_arch_lifecycle_common
 description: Android Lifecycle-Common
 data:
 - file: common-1.0.0.jar
diff --git a/third_party/android_deps/repository/android_arch_lifecycle_runtime/LICENSE b/third_party/android_deps/libs/android_arch_lifecycle_runtime/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/android_arch_lifecycle_runtime/LICENSE
rename to third_party/android_deps/libs/android_arch_lifecycle_runtime/LICENSE
diff --git a/third_party/android_deps/libs/android_arch_lifecycle_runtime/OWNERS b/third_party/android_deps/libs/android_arch_lifecycle_runtime/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/android_arch_lifecycle_runtime/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/android_arch_lifecycle_runtime/README.chromium b/third_party/android_deps/libs/android_arch_lifecycle_runtime/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/android_arch_lifecycle_runtime/README.chromium
rename to third_party/android_deps/libs/android_arch_lifecycle_runtime/README.chromium
diff --git a/third_party/android_deps/libs/android_arch_lifecycle_runtime/android_arch_lifecycle_runtime.info b/third_party/android_deps/libs/android_arch_lifecycle_runtime/android_arch_lifecycle_runtime.info
new file mode 100644
index 0000000..acf40e8
--- /dev/null
+++ b/third_party/android_deps/libs/android_arch_lifecycle_runtime/android_arch_lifecycle_runtime.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = false
+is_manifest_empty = false
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/android_arch_lifecycle_runtime/cipd.yaml b/third_party/android_deps/libs/android_arch_lifecycle_runtime/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/android_arch_lifecycle_runtime/cipd.yaml
rename to third_party/android_deps/libs/android_arch_lifecycle_runtime/cipd.yaml
index 1721aae..ecd9a6a5 100644
--- a/third_party/android_deps/repository/android_arch_lifecycle_runtime/cipd.yaml
+++ b/third_party/android_deps/libs/android_arch_lifecycle_runtime/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:1.0.0-cr0
-package: chromium/third_party/android_deps/repository/android_arch_lifecycle_runtime
+package: chromium/third_party/android_deps/libs/android_arch_lifecycle_runtime
 description: Android Lifecycle Runtime
 data:
 - file: runtime-1.0.0.aar
-- file: android_arch_lifecycle_runtime.info
diff --git a/third_party/android_deps/repository/com_android_support_animated_vector_drawable/LICENSE b/third_party/android_deps/libs/com_android_support_animated_vector_drawable/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_animated_vector_drawable/LICENSE
rename to third_party/android_deps/libs/com_android_support_animated_vector_drawable/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_animated_vector_drawable/OWNERS b/third_party/android_deps/libs/com_android_support_animated_vector_drawable/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_animated_vector_drawable/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_animated_vector_drawable/README.chromium b/third_party/android_deps/libs/com_android_support_animated_vector_drawable/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_animated_vector_drawable/README.chromium
rename to third_party/android_deps/libs/com_android_support_animated_vector_drawable/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_animated_vector_drawable/cipd.yaml b/third_party/android_deps/libs/com_android_support_animated_vector_drawable/cipd.yaml
similarity index 70%
rename from third_party/android_deps/repository/com_android_support_animated_vector_drawable/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_animated_vector_drawable/cipd.yaml
index 762df48..4e9678d 100644
--- a/third_party/android_deps/repository/com_android_support_animated_vector_drawable/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_animated_vector_drawable/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_animated_vector_drawable
+package: chromium/third_party/android_deps/libs/com_android_support_animated_vector_drawable
 description: Android Support AnimatedVectorDrawable
 data:
 - file: animated-vector-drawable-27.0.0.aar
-- file: com_android_support_animated_vector_drawable.info
diff --git a/third_party/android_deps/libs/com_android_support_animated_vector_drawable/com_android_support_animated_vector_drawable.info b/third_party/android_deps/libs/com_android_support_animated_vector_drawable/com_android_support_animated_vector_drawable.info
new file mode 100644
index 0000000..7103bc0
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_animated_vector_drawable/com_android_support_animated_vector_drawable.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = true
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_appcompat_v7/LICENSE b/third_party/android_deps/libs/com_android_support_appcompat_v7/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_appcompat_v7/LICENSE
rename to third_party/android_deps/libs/com_android_support_appcompat_v7/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_appcompat_v7/OWNERS b/third_party/android_deps/libs/com_android_support_appcompat_v7/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_appcompat_v7/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_appcompat_v7/README.chromium b/third_party/android_deps/libs/com_android_support_appcompat_v7/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_appcompat_v7/README.chromium
rename to third_party/android_deps/libs/com_android_support_appcompat_v7/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_appcompat_v7/cipd.yaml b/third_party/android_deps/libs/com_android_support_appcompat_v7/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_appcompat_v7/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_appcompat_v7/cipd.yaml
index 0f95c8d2..46f75c4 100644
--- a/third_party/android_deps/repository/com_android_support_appcompat_v7/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_appcompat_v7/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_appcompat_v7
+package: chromium/third_party/android_deps/libs/com_android_support_appcompat_v7
 description: Android AppCompat Library v7
 data:
 - file: appcompat-v7-27.0.0.aar
-- file: com_android_support_appcompat_v7.info
diff --git a/third_party/android_deps/libs/com_android_support_appcompat_v7/com_android_support_appcompat_v7.info b/third_party/android_deps/libs/com_android_support_appcompat_v7/com_android_support_appcompat_v7.info
new file mode 100644
index 0000000..e99e4de
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_appcompat_v7/com_android_support_appcompat_v7.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-hdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-hdpi-v4/abc_list_focused_holo.9.png", "res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-hdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-v18/values-v18.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/layout/abc_list_menu_item_layout.xml", "res/layout/abc_action_menu_layout.xml", "res/layout/abc_search_dropdown_item_icons_2line.xml", "res/layout/support_simple_spinner_dropdown_item.xml", "res/layout/abc_screen_simple.xml", "res/layout/abc_action_menu_item_layout.xml", "res/layout/abc_list_menu_item_radio.xml", "res/layout/abc_alert_dialog_title_material.xml", "res/layout/abc_alert_dialog_material.xml", "res/layout/abc_screen_toolbar.xml", "res/layout/abc_screen_simple_overlay_action_mode.xml", "res/layout/abc_select_dialog_material.xml", "res/layout/abc_action_mode_bar.xml", "res/layout/abc_dialog_title_material.xml", "res/layout/abc_list_menu_item_checkbox.xml", "res/layout/abc_popup_menu_header_item_layout.xml", "res/layout/abc_action_bar_up_container.xml", "res/layout/select_dialog_singlechoice_material.xml", "res/layout/abc_action_mode_close_item_material.xml", "res/layout/tooltip.xml", "res/layout/select_dialog_multichoice_material.xml", "res/layout/abc_action_bar_title_item.xml", "res/layout/abc_activity_chooser_view_list_item.xml", "res/layout/abc_popup_menu_item_layout.xml", "res/layout/abc_alert_dialog_button_bar_material.xml", "res/layout/abc_list_menu_item_icon.xml", "res/layout/abc_expanded_menu_layout.xml", "res/layout/select_dialog_item_material.xml", "res/layout/abc_activity_chooser_view.xml", "res/layout/abc_search_view.xml", "res/layout/abc_screen_content_include.xml", "res/values-ms/values-ms.xml", "res/values-v21/values-v21.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-hdpi-v4/values-hdpi-v4.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/values-v14/values-v14.xml", "res/values-ta/values-ta.xml", "res/values-v23/values-v23.xml", "res/values-pl/values-pl.xml", "res/drawable-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-xxhdpi-v4/abc_list_focused_holo.9.png", "res/drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-xxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-xxhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-xxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-xxhdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-xxhdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-xxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-xxhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/color/abc_search_url_text.xml", "res/color/abc_btn_colored_borderless_text_material.xml", "res/color/abc_primary_text_material_light.xml", "res/color/abc_tint_seek_thumb.xml", "res/color/abc_tint_btn_checkable.xml", "res/color/abc_secondary_text_material_dark.xml", "res/color/abc_tint_edittext.xml", "res/color/abc_tint_spinner.xml", "res/color/abc_primary_text_material_dark.xml", "res/color/abc_secondary_text_material_light.xml", "res/color/switch_thumb_material_dark.xml", "res/color/abc_hint_foreground_material_dark.xml", "res/color/abc_tint_switch_track.xml", "res/color/abc_primary_text_disable_only_material_dark.xml", "res/color/abc_btn_colored_text_material.xml", "res/color/abc_hint_foreground_material_light.xml", "res/color/switch_thumb_material_light.xml", "res/color/abc_tint_default.xml", "res/color/abc_primary_text_disable_only_material_light.xml", "res/values-ldltr-v21/values-ldltr-v21.xml", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-en-rXC/values-en-rXC.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-large-v4/values-large-v4.xml", "res/values-v11/values-v11.xml", "res/color-v11/abc_background_cache_hint_selector_material_light.xml", "res/color-v11/abc_background_cache_hint_selector_material_dark.xml", "res/values-pa/values-pa.xml", "res/values-v22/values-v22.xml", "res/values-v25/values-v25.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/values-v12/values-v12.xml", "res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-mdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-mdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-mdpi-v4/abc_list_focused_holo.9.png", "res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-mdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-mdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-mdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-mdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-mdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-mdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-mdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-v24/values-v24.xml", "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-xhdpi-v4/abc_list_longpressed_holo.9.png", "res/drawable-xhdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_light.png", "res/drawable-xhdpi-v4/abc_list_focused_holo.9.png", "res/drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png", "res/drawable-xhdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-xhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.png", "res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-xhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png", "res/drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png", "res/drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png", "res/drawable-xhdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-xhdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-xhdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-xhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_dark.png", "res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png", "res/drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-land/values-land.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-xlarge-v4/values-xlarge-v4.xml", "res/values-sw600dp-v13/values-sw600dp-v13.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/anim/abc_shrink_fade_out_from_bottom.xml", "res/anim/abc_slide_in_bottom.xml", "res/anim/abc_fade_out.xml", "res/anim/abc_slide_in_top.xml", "res/anim/abc_slide_out_top.xml", "res/anim/tooltip_exit.xml", "res/anim/abc_popup_exit.xml", "res/anim/abc_grow_fade_in_from_bottom.xml", "res/anim/tooltip_enter.xml", "res/anim/abc_fade_in.xml", "res/anim/abc_slide_out_bottom.xml", "res/anim/abc_popup_enter.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-en-rCA/values-en-rCA.xml", "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/values-night-v8/values-night-v8.xml", "res/drawable-v23/abc_control_background_material.xml", "res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png", "res/drawable-xxxhdpi-v4/abc_ic_star_black_48dp.png", "res/drawable-xxxhdpi-v4/abc_ic_star_black_36dp.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_dark.png", "res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png", "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_light.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png", "res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png", "res/drawable-xxxhdpi-v4/abc_ic_star_black_16dp.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-xxxhdpi-v4/abc_ic_star_half_black_36dp.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png", "res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png", "res/drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png", "res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light.png", "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png", "res/drawable-xxxhdpi-v4/abc_ic_star_half_black_16dp.png", "res/drawable-xxxhdpi-v4/abc_ic_star_half_black_48dp.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png", "res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png", "res/drawable-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png", "res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.png", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-v16/values-v16.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png", "res/drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png", "res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png", "res/layout-v26/abc_screen_toolbar.xml", "res/values-v26/values-v26.xml", "res/values-port/values-port.xml", "res/color-v23/abc_btn_colored_borderless_text_material.xml", "res/color-v23/abc_color_highlight_material.xml", "res/color-v23/abc_tint_seek_thumb.xml", "res/color-v23/abc_tint_btn_checkable.xml", "res/color-v23/abc_tint_edittext.xml", "res/color-v23/abc_tint_spinner.xml", "res/color-v23/abc_tint_switch_track.xml", "res/color-v23/abc_btn_colored_text_material.xml", "res/color-v23/abc_tint_default.xml", "res/values-v17/values-v17.xml", "res/values-ne/values-ne.xml", "res/values-v13/values-v13.xml", "res/drawable/abc_tab_indicator_material.xml", "res/drawable/abc_item_background_holo_dark.xml", "res/drawable/abc_edit_text_material.xml", "res/drawable/abc_ic_voice_search_api_material.xml", "res/drawable/abc_ic_menu_overflow_material.xml", "res/drawable/abc_ic_search_api_material.xml", "res/drawable/abc_cab_background_top_material.xml", "res/drawable/abc_list_selector_holo_light.xml", "res/drawable/abc_ic_arrow_drop_right_black_24dp.xml", "res/drawable/abc_spinner_textfield_background_material.xml", "res/drawable/abc_ratingbar_small_material.xml", "res/drawable/tooltip_frame_dark.xml", "res/drawable/abc_item_background_holo_light.xml", "res/drawable/abc_btn_colored_material.xml", "res/drawable/abc_ratingbar_material.xml", "res/drawable/abc_cab_background_internal_bg.xml", "res/drawable/abc_btn_radio_material.xml", "res/drawable/tooltip_frame_light.xml", "res/drawable/abc_ic_clear_material.xml", "res/drawable/abc_ic_ab_back_material.xml", "res/drawable/abc_textfield_search_material.xml", "res/drawable/abc_ic_go_search_api_material.xml", "res/drawable/abc_seekbar_track_material.xml", "res/drawable/abc_dialog_material_background.xml", "res/drawable/abc_seekbar_tick_mark_material.xml", "res/drawable/abc_list_selector_background_transition_holo_light.xml", "res/drawable/abc_text_cursor_material.xml", "res/drawable/abc_btn_default_mtrl_shape.xml", "res/drawable/abc_ratingbar_indicator_material.xml", "res/drawable/abc_switch_thumb_material.xml", "res/drawable/abc_seekbar_thumb_material.xml", "res/drawable/abc_list_selector_background_transition_holo_dark.xml", "res/drawable/abc_btn_check_material.xml", "res/drawable/abc_list_selector_holo_dark.xml", "res/drawable/abc_btn_borderless_material.xml", "res/drawable/abc_vector_test.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-h720dp-v13/values-h720dp-v13.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml", "res/drawable-v21/abc_edit_text_material.xml", "res/drawable-v21/abc_btn_colored_material.xml", "res/drawable-v21/abc_action_bar_item_background_material.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_cardview_v7/LICENSE b/third_party/android_deps/libs/com_android_support_cardview_v7/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_cardview_v7/LICENSE
rename to third_party/android_deps/libs/com_android_support_cardview_v7/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_cardview_v7/OWNERS b/third_party/android_deps/libs/com_android_support_cardview_v7/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_cardview_v7/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_cardview_v7/README.chromium b/third_party/android_deps/libs/com_android_support_cardview_v7/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_cardview_v7/README.chromium
rename to third_party/android_deps/libs/com_android_support_cardview_v7/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_cardview_v7/cipd.yaml b/third_party/android_deps/libs/com_android_support_cardview_v7/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_cardview_v7/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_cardview_v7/cipd.yaml
index 220d1826..98c9bdb 100644
--- a/third_party/android_deps/repository/com_android_support_cardview_v7/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_cardview_v7/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_cardview_v7
+package: chromium/third_party/android_deps/libs/com_android_support_cardview_v7
 description: Android Support CardView v7
 data:
 - file: cardview-v7-27.0.0.aar
-- file: com_android_support_cardview_v7.info
diff --git a/third_party/android_deps/libs/com_android_support_cardview_v7/com_android_support_cardview_v7.info b/third_party/android_deps/libs/com_android_support_cardview_v7/com_android_support_cardview_v7.info
new file mode 100644
index 0000000..e458725
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_cardview_v7/com_android_support_cardview_v7.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/values-v23/values-v23.xml", "res/values/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_design/LICENSE b/third_party/android_deps/libs/com_android_support_design/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_design/LICENSE
rename to third_party/android_deps/libs/com_android_support_design/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_design/OWNERS b/third_party/android_deps/libs/com_android_support_design/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_design/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_design/README.chromium b/third_party/android_deps/libs/com_android_support_design/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_design/README.chromium
rename to third_party/android_deps/libs/com_android_support_design/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_design/cipd.yaml b/third_party/android_deps/libs/com_android_support_design/cipd.yaml
similarity index 74%
rename from third_party/android_deps/repository/com_android_support_design/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_design/cipd.yaml
index cc39055..255e245d 100644
--- a/third_party/android_deps/repository/com_android_support_design/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_design/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_design
+package: chromium/third_party/android_deps/libs/com_android_support_design
 description: Android Design Support Library
 data:
 - file: design-27.0.0.aar
-- file: com_android_support_design.info
diff --git a/third_party/android_deps/libs/com_android_support_design/com_android_support_design.info b/third_party/android_deps/libs/com_android_support_design/com_android_support_design.info
new file mode 100644
index 0000000..ec2b700
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_design/com_android_support_design.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/drawable-hdpi-v4/design_ic_visibility.png", "res/drawable-hdpi-v4/design_ic_visibility_off.png", "res/layout/design_bottom_sheet_dialog.xml", "res/layout/design_layout_tab_text.xml", "res/layout/design_bottom_navigation_item.xml", "res/layout/design_navigation_item.xml", "res/layout/design_layout_snackbar_include.xml", "res/layout/design_navigation_menu.xml", "res/layout/design_navigation_item_header.xml", "res/layout/design_navigation_item_separator.xml", "res/layout/design_layout_snackbar.xml", "res/layout/design_text_input_password_icon.xml", "res/layout/design_layout_tab_icon.xml", "res/layout/design_navigation_item_subheader.xml", "res/layout/design_menu_item_action_area.xml", "res/layout/design_navigation_menu_item.xml", "res/values-v21/values-v21.xml", "res/drawable-anydpi-v21/design_ic_visibility.xml", "res/drawable-anydpi-v21/design_ic_visibility_off.xml", "res/layout-sw600dp-v13/design_layout_snackbar.xml", "res/drawable-xxhdpi-v4/design_ic_visibility.png", "res/drawable-xxhdpi-v4/design_ic_visibility_off.png", "res/color/design_error.xml", "res/color/design_tint_password_toggle.xml", "res/animator-v21/design_appbar_state_list_animator.xml", "res/drawable-mdpi-v4/design_ic_visibility.png", "res/drawable-mdpi-v4/design_ic_visibility_off.png", "res/values/values.xml", "res/drawable-xhdpi-v4/design_ic_visibility.png", "res/drawable-xhdpi-v4/design_ic_visibility_off.png", "res/values-land/values-land.xml", "res/values-sw600dp-v13/values-sw600dp-v13.xml", "res/anim/design_snackbar_out.xml", "res/anim/design_snackbar_in.xml", "res/anim/design_bottom_sheet_slide_out.xml", "res/anim/design_bottom_sheet_slide_in.xml", "res/drawable-xxxhdpi-v4/design_ic_visibility.png", "res/drawable-xxxhdpi-v4/design_ic_visibility_off.png", "res/anim-v21/design_bottom_sheet_slide_out.xml", "res/anim-v21/design_bottom_sheet_slide_in.xml", "res/values-v26/values-v26.xml", "res/color-v23/design_tint_password_toggle.xml", "res/drawable/design_snackbar_background.xml", "res/drawable/design_fab_background.xml", "res/drawable/design_password_eye.xml", "res/drawable/navigation_empty_icon.xml", "res/drawable/design_bottom_navigation_item_background.xml", "res/drawable-v21/avd_hide_password.xml", "res/drawable-v21/avd_show_password.xml", "res/drawable-v21/design_password_eye.xml", "res/drawable-v21/design_bottom_navigation_item_background.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_gridlayout_v7/LICENSE b/third_party/android_deps/libs/com_android_support_gridlayout_v7/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_gridlayout_v7/LICENSE
rename to third_party/android_deps/libs/com_android_support_gridlayout_v7/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_gridlayout_v7/OWNERS b/third_party/android_deps/libs/com_android_support_gridlayout_v7/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_gridlayout_v7/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_gridlayout_v7/README.chromium b/third_party/android_deps/libs/com_android_support_gridlayout_v7/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_gridlayout_v7/README.chromium
rename to third_party/android_deps/libs/com_android_support_gridlayout_v7/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_gridlayout_v7/cipd.yaml b/third_party/android_deps/libs/com_android_support_gridlayout_v7/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_gridlayout_v7/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_gridlayout_v7/cipd.yaml
index f7964863..9da5681d 100644
--- a/third_party/android_deps/repository/com_android_support_gridlayout_v7/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_gridlayout_v7/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_gridlayout_v7
+package: chromium/third_party/android_deps/libs/com_android_support_gridlayout_v7
 description: Android Support Grid Layout
 data:
 - file: gridlayout-v7-27.0.0.aar
-- file: com_android_support_gridlayout_v7.info
diff --git a/third_party/android_deps/libs/com_android_support_gridlayout_v7/com_android_support_gridlayout_v7.info b/third_party/android_deps/libs/com_android_support_gridlayout_v7/com_android_support_gridlayout_v7.info
new file mode 100644
index 0000000..28c8330
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_gridlayout_v7/com_android_support_gridlayout_v7.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/values/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_leanback_v17/LICENSE b/third_party/android_deps/libs/com_android_support_leanback_v17/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_leanback_v17/LICENSE
rename to third_party/android_deps/libs/com_android_support_leanback_v17/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_leanback_v17/OWNERS b/third_party/android_deps/libs/com_android_support_leanback_v17/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_leanback_v17/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_leanback_v17/README.chromium b/third_party/android_deps/libs/com_android_support_leanback_v17/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_leanback_v17/README.chromium
rename to third_party/android_deps/libs/com_android_support_leanback_v17/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_leanback_v17/cipd.yaml b/third_party/android_deps/libs/com_android_support_leanback_v17/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_leanback_v17/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_leanback_v17/cipd.yaml
index e41f16f..1b5fe75 100644
--- a/third_party/android_deps/repository/com_android_support_leanback_v17/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_leanback_v17/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_leanback_v17
+package: chromium/third_party/android_deps/libs/com_android_support_leanback_v17
 description: Android Support Leanback v17
 data:
 - file: leanback-v17-27.0.0.aar
-- file: com_android_support_leanback_v17.info
diff --git a/third_party/android_deps/libs/com_android_support_leanback_v17/com_android_support_leanback_v17.info b/third_party/android_deps/libs/com_android_support_leanback_v17/com_android_support_leanback_v17.info
new file mode 100644
index 0000000..34d36936
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_leanback_v17/com_android_support_leanback_v17.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/lb_action_bg_focused.9.png", "res/drawable-hdpi-v4/lb_ic_search_mic.png", "res/drawable-hdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-hdpi-v4/lb_ic_search_mic_out.png", "res/drawable-hdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-hdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-hdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-hdpi-v4/lb_ic_sad_cloud.png", "res/drawable-hdpi-v4/lb_ic_in_app_search.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-v18/values-v18.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/layout/lb_browse_fragment.xml", "res/layout/lb_image_card_view_themed_title.xml", "res/layout/lb_list_row_hovercard.xml", "res/layout/lb_guidedactions.xml", "res/layout/lb_guidedactions_item.xml", "res/layout/lb_playback_transport_controls.xml", "res/layout/lb_image_card_view_themed_content.xml", "res/layout/lb_image_card_view_themed_badge_right.xml", "res/layout/lb_image_card_view.xml", "res/layout/lb_media_item_number_view_flipper.xml", "res/layout/lb_title_view.xml", "res/layout/lb_browse_title.xml", "res/layout/lb_control_bar.xml", "res/layout/lb_divider.xml", "res/layout/lb_background_window.xml", "res/layout/lb_guidance.xml", "res/layout/lb_shadow.xml", "res/layout/lb_video_surface.xml", "res/layout/lb_control_button_primary.xml", "res/layout/lb_fullwidth_details_overview_logo.xml", "res/layout/lb_onboarding_fragment.xml", "res/layout/lb_error_fragment.xml", "res/layout/lb_vertical_grid_fragment.xml", "res/layout/lb_action_1_line.xml", "res/layout/video_surface_fragment.xml", "res/layout/lb_guidedbuttonactions.xml", "res/layout/lb_picker_item.xml", "res/layout/lb_guidedstep_background.xml", "res/layout/lb_details_fragment.xml", "res/layout/lb_playback_controls_row.xml", "res/layout/lb_row_header.xml", "res/layout/lb_playback_transport_controls_row.xml", "res/layout/lb_search_orb.xml", "res/layout/lb_guidedstep_fragment.xml", "res/layout/lb_picker.xml", "res/layout/lb_speech_orb.xml", "res/layout/lb_playback_now_playing_bars.xml", "res/layout/lb_list_row.xml", "res/layout/lb_row_media_item_action.xml", "res/layout/lb_vertical_grid.xml", "res/layout/lb_header.xml", "res/layout/lb_row_media_item.xml", "res/layout/lb_playback_fragment.xml", "res/layout/lb_search_fragment.xml", "res/layout/lb_playback_controls.xml", "res/layout/lb_section_header.xml", "res/layout/lb_guidedactions_datepicker_item.xml", "res/layout/lb_details_description.xml", "res/layout/lb_details_overview.xml", "res/layout/lb_picker_column.xml", "res/layout/lb_media_list_header.xml", "res/layout/lb_image_card_view_themed_badge_left.xml", "res/layout/lb_rows_fragment.xml", "res/layout/lb_headers_fragment.xml", "res/layout/lb_action_2_lines.xml", "res/layout/lb_control_button_secondary.xml", "res/layout/lb_search_bar.xml", "res/layout/lb_row_container.xml", "res/layout/lb_fullwidth_details_overview.xml", "res/layout/lb_picker_separator.xml", "res/values-ms/values-ms.xml", "res/values-v21/values-v21.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/values-ta/values-ta.xml", "res/values-pl/values-pl.xml", "res/drawable-xxhdpi-v4/lb_action_bg_focused.9.png", "res/drawable-xxhdpi-v4/lb_ic_search_mic.png", "res/drawable-xxhdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-xxhdpi-v4/lb_ic_search_mic_out.png", "res/drawable-xxhdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-xxhdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-xxhdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-xxhdpi-v4/lb_ic_sad_cloud.png", "res/drawable-xxhdpi-v4/lb_ic_in_app_search.png", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-en-rXC/values-en-rXC.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-pa/values-pa.xml", "res/values-v22/values-v22.xml", "res/animator-v21/lb_onboarding_logo_exit.xml", "res/animator-v21/lb_onboarding_title_enter.xml", "res/animator-v21/lb_playback_bg_fade_out.xml", "res/animator-v21/lb_playback_bg_fade_in.xml", "res/animator-v21/lb_playback_description_fade_out.xml", "res/animator-v21/lb_onboarding_description_enter.xml", "res/animator-v21/lb_onboarding_logo_enter.xml", "res/animator-v21/lb_onboarding_page_indicator_enter.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/drawable-mdpi-v4/lb_action_bg_focused.9.png", "res/drawable-mdpi-v4/lb_ic_search_mic.png", "res/drawable-mdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-mdpi-v4/lb_ic_search_mic_out.png", "res/drawable-mdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-mdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-mdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-mdpi-v4/lb_ic_sad_cloud.png", "res/drawable-mdpi-v4/lb_ic_in_app_search.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/lb_ic_pause.png", "res/drawable-xhdpi-v4/lb_ic_more.png", "res/drawable-xhdpi-v4/lb_action_bg_focused.9.png", "res/drawable-xhdpi-v4/lb_ic_skip_next.png", "res/drawable-xhdpi-v4/lb_ic_search_mic.png", "res/drawable-xhdpi-v4/lb_ic_fast_forward.png", "res/drawable-xhdpi-v4/lb_ic_shuffle.png", "res/drawable-xhdpi-v4/lb_ic_hq.png", "res/drawable-xhdpi-v4/lb_ic_skip_previous.png", "res/drawable-xhdpi-v4/lb_ic_replay.png", "res/drawable-xhdpi-v4/lb_text_dot_two.png", "res/drawable-xhdpi-v4/lb_ic_cc.png", "res/drawable-xhdpi-v4/lb_ic_thumb_up_outline.png", "res/drawable-xhdpi-v4/lb_ic_thumb_up.png", "res/drawable-xhdpi-v4/lb_in_app_search_shadow_focused.9.png", "res/drawable-xhdpi-v4/lb_ic_playback_loop.png", "res/drawable-xhdpi-v4/lb_text_dot_one.png", "res/drawable-xhdpi-v4/lb_ic_search_mic_out.png", "res/drawable-xhdpi-v4/lb_ic_loop_one.png", "res/drawable-xhdpi-v4/lb_text_dot_one_small.png", "res/drawable-xhdpi-v4/lb_ic_stop.png", "res/drawable-xhdpi-v4/lb_ic_pip.png", "res/drawable-xhdpi-v4/lb_card_shadow_normal.9.png", "res/drawable-xhdpi-v4/lb_ic_nav_arrow.png", "res/drawable-xhdpi-v4/lb_text_dot_two_small.png", "res/drawable-xhdpi-v4/lb_ic_loop.png", "res/drawable-xhdpi-v4/lb_ic_play.png", "res/drawable-xhdpi-v4/lb_ic_play_fit.png", "res/drawable-xhdpi-v4/lb_ic_fast_rewind.png", "res/drawable-xhdpi-v4/lb_in_app_search_bg.9.png", "res/drawable-xhdpi-v4/lb_ic_thumb_down_outline.png", "res/drawable-xhdpi-v4/lb_in_app_search_shadow_normal.9.png", "res/drawable-xhdpi-v4/lb_card_shadow_focused.9.png", "res/drawable-xhdpi-v4/lb_ic_actions_right_arrow.png", "res/drawable-xhdpi-v4/lb_ic_sad_cloud.png", "res/drawable-xhdpi-v4/lb_ic_thumb_down.png", "res/drawable-xhdpi-v4/lb_ic_guidedactions_item_chevron.png", "res/drawable-xhdpi-v4/lb_ic_in_app_search.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-ldrtl-v17/values-ldrtl-v17.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-v19/values-v19.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/raw/lb_voice_open.ogg", "res/raw/lb_voice_success.ogg", "res/raw/lb_voice_failure.ogg", "res/raw/lb_voice_no_input.ogg", "res/transition-v21/lb_browse_headers_out.xml", "res/transition-v21/lb_browse_enter_transition.xml", "res/transition-v21/lb_return_transition.xml", "res/transition-v21/lb_details_return_transition.xml", "res/transition-v21/lb_browse_entrance_transition.xml", "res/transition-v21/lb_details_enter_transition.xml", "res/transition-v21/lb_enter_transition.xml", "res/transition-v21/lb_vertical_grid_entrance_transition.xml", "res/transition-v21/lb_shared_element_enter_transition.xml", "res/transition-v21/lb_guidedstep_activity_enter.xml", "res/transition-v21/lb_shared_element_return_transition.xml", "res/transition-v21/lb_title_in.xml", "res/transition-v21/lb_guidedstep_activity_enter_bottom.xml", "res/transition-v21/lb_title_out.xml", "res/transition-v21/lb_browse_return_transition.xml", "res/transition-v21/lb_vertical_grid_enter_transition.xml", "res/transition-v21/lb_vertical_grid_return_transition.xml", "res/transition-v21/lb_browse_headers_in.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/anim/lb_decelerator_4.xml", "res/anim/lb_decelerator_2.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-en-rCA/values-en-rCA.xml", "res/animator/lb_onboarding_page_indicator_fade_in.xml", "res/animator/lb_guidedstep_slide_down.xml", "res/animator/lb_onboarding_logo_exit.xml", "res/animator/lb_onboarding_title_enter.xml", "res/animator/lb_onboarding_start_button_fade_out.xml", "res/animator/lb_playback_rows_fade_out.xml", "res/animator/lb_playback_controls_fade_in.xml", "res/animator/lb_playback_description_fade_in.xml", "res/animator/lb_playback_bg_fade_out.xml", "res/animator/lb_playback_bg_fade_in.xml", "res/animator/lb_guidedactions_item_unpressed.xml", "res/animator/lb_playback_description_fade_out.xml", "res/animator/lb_onboarding_start_button_fade_in.xml", "res/animator/lb_playback_rows_fade_in.xml", "res/animator/lb_guidedactions_item_pressed.xml", "res/animator/lb_onboarding_description_enter.xml", "res/animator/lb_guidedstep_slide_up.xml", "res/animator/lb_onboarding_logo_enter.xml", "res/animator/lb_onboarding_page_indicator_enter.xml", "res/animator/lb_playback_controls_fade_out.xml", "res/animator/lb_onboarding_page_indicator_fade_out.xml", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/values-ne/values-ne.xml", "res/transition-v19/lb_browse_headers_out.xml", "res/transition-v19/lb_browse_headers_in.xml", "res/drawable/lb_card_foreground.xml", "res/drawable/lb_control_button_primary.xml", "res/drawable/lb_playback_progress_bar.xml", "res/drawable/lb_onboarding_start_button_background.xml", "res/drawable/lb_search_orb.xml", "res/drawable/lb_speech_orb.xml", "res/drawable/lb_headers_right_fading.xml", "res/drawable/lb_background.xml", "res/drawable/lb_playback_now_playing_bar.xml", "res/drawable/lb_control_button_secondary.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml", "res/drawable-v21/lb_card_foreground.xml", "res/drawable-v21/lb_selectable_item_rounded_rect.xml", "res/drawable-v21/lb_control_button_primary.xml", "res/drawable-v21/lb_action_bg.xml", "res/drawable-v21/lb_control_button_secondary.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_mediarouter_v7/LICENSE b/third_party/android_deps/libs/com_android_support_mediarouter_v7/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_mediarouter_v7/LICENSE
rename to third_party/android_deps/libs/com_android_support_mediarouter_v7/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_mediarouter_v7/OWNERS b/third_party/android_deps/libs/com_android_support_mediarouter_v7/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_mediarouter_v7/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_mediarouter_v7/README.chromium b/third_party/android_deps/libs/com_android_support_mediarouter_v7/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_mediarouter_v7/README.chromium
rename to third_party/android_deps/libs/com_android_support_mediarouter_v7/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_mediarouter_v7/cipd.yaml b/third_party/android_deps/libs/com_android_support_mediarouter_v7/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_mediarouter_v7/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_mediarouter_v7/cipd.yaml
index 6e7eb6e..676e1c3 100644
--- a/third_party/android_deps/repository/com_android_support_mediarouter_v7/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_mediarouter_v7/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_mediarouter_v7
+package: chromium/third_party/android_deps/libs/com_android_support_mediarouter_v7
 description: Android MediaRouter Support Library
 data:
 - file: mediarouter-v7-27.0.0.aar
-- file: com_android_support_mediarouter_v7.info
diff --git a/third_party/android_deps/libs/com_android_support_mediarouter_v7/com_android_support_mediarouter_v7.info b/third_party/android_deps/libs/com_android_support_mediarouter_v7/com_android_support_mediarouter_v7.info
new file mode 100644
index 0000000..6fc7871
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_mediarouter_v7/com_android_support_mediarouter_v7.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/ic_dialog_close_light.png", "res/drawable-hdpi-v4/ic_media_pause_light.png", "res/drawable-hdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-hdpi-v4/ic_mr_button_grey.png", "res/drawable-hdpi-v4/ic_media_play_light.png", "res/drawable-hdpi-v4/ic_dialog_close_dark.png", "res/drawable-hdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-hdpi-v4/ic_media_pause_dark.png", "res/drawable-hdpi-v4/ic_vol_type_tv_light.png", "res/drawable-hdpi-v4/ic_media_stop_dark.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-hdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-hdpi-v4/ic_audiotrack_light.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-hdpi-v4/ic_media_stop_light.png", "res/drawable-hdpi-v4/ic_media_play_dark.png", "res/drawable-hdpi-v4/ic_audiotrack_dark.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-hdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-hdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-hdpi-v4/ic_vol_type_speaker_group_light.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/interpolator/mr_fast_out_slow_in.xml", "res/interpolator/mr_linear_out_slow_in.xml", "res/layout/mr_controller_material_dialog_b.xml", "res/layout/mr_volume_control.xml", "res/layout/mr_controller_volume_item.xml", "res/layout/mr_chooser_list_item.xml", "res/layout/mr_chooser_dialog.xml", "res/layout/mr_playback_control.xml", "res/values-ms/values-ms.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/values-ta/values-ta.xml", "res/values-pl/values-pl.xml", "res/drawable-xxhdpi-v4/ic_mr_button_connected_28_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_00_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_28_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_04_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_28_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_06_light.png", "res/drawable-xxhdpi-v4/ic_dialog_close_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_29_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_01_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_23_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_18_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_04_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_12_light.png", "res/drawable-xxhdpi-v4/ic_media_pause_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_grey.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_14_dark.png", "res/drawable-xxhdpi-v4/ic_media_play_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_12_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_14_light.png", "res/drawable-xxhdpi-v4/ic_dialog_close_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_30_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_27_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_07_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_25_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_18_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_23_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_11_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_08_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_02_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_22_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_08_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_20_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_18_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_19_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_05_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_10_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_02_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_25_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_18_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_22_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_22_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_24_dark.png", "res/drawable-xxhdpi-v4/ic_media_pause_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_29_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_03_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_tv_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_11_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_30_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_23_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_29_dark.png", "res/drawable-xxhdpi-v4/ic_media_stop_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_27_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_25_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_06_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_00_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_02_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_17_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_03_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_09_dark.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_00_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_24_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_26_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_29_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_30_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_05_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_08_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_15_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_17_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_26_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_24_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_16_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_27_dark.png", "res/drawable-xxhdpi-v4/ic_audiotrack_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_13_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_16_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_04_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_13_light.png", "res/drawable-xxhdpi-v4/ic_media_stop_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_17_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_16_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_16_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_01_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_07_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_13_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_19_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_00_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_14_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_03_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_15_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_20_light.png", "res/drawable-xxhdpi-v4/ic_media_play_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_03_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_27_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_21_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_28_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_02_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_10_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_23_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_15_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_21_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_05_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_19_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_20_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_06_dark.png", "res/drawable-xxhdpi-v4/ic_audiotrack_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_21_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_09_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_20_dark.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_19_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_22_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_25_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_09_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_11_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_12_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_10_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_13_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_24_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_01_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_26_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_26_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_07_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_04_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_10_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_17_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_05_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_07_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_15_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_08_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_11_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_09_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_12_light.png", "res/drawable-xxhdpi-v4/ic_vol_type_speaker_group_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_14_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connecting_21_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_30_dark.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_06_light.png", "res/drawable-xxhdpi-v4/ic_mr_button_connected_01_dark.png", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-en-rXC/values-en-rXC.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-pa/values-pa.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/drawable-mdpi-v4/ic_dialog_close_light.png", "res/drawable-mdpi-v4/ic_media_pause_light.png", "res/drawable-mdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-mdpi-v4/ic_mr_button_grey.png", "res/drawable-mdpi-v4/ic_media_play_light.png", "res/drawable-mdpi-v4/ic_dialog_close_dark.png", "res/drawable-mdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-mdpi-v4/ic_media_pause_dark.png", "res/drawable-mdpi-v4/ic_vol_type_tv_light.png", "res/drawable-mdpi-v4/ic_media_stop_dark.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-mdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-mdpi-v4/ic_audiotrack_light.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-mdpi-v4/ic_media_stop_light.png", "res/drawable-mdpi-v4/ic_media_play_dark.png", "res/drawable-mdpi-v4/ic_audiotrack_dark.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-mdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-mdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-mdpi-v4/ic_vol_type_speaker_group_light.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/ic_mr_button_connected_28_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_00_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_28_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_04_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_28_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_06_light.png", "res/drawable-xhdpi-v4/ic_dialog_close_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_29_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_01_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_23_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_18_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_04_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_12_light.png", "res/drawable-xhdpi-v4/ic_media_pause_light.png", "res/drawable-xhdpi-v4/ic_mr_button_disabled_light.png", "res/drawable-xhdpi-v4/ic_mr_button_grey.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_14_dark.png", "res/drawable-xhdpi-v4/ic_media_play_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_12_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_14_light.png", "res/drawable-xhdpi-v4/ic_dialog_close_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_30_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_27_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_07_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_25_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_18_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_23_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_11_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_08_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_02_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_22_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_08_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_20_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_18_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_19_light.png", "res/drawable-xhdpi-v4/ic_vol_type_tv_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_05_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_10_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_02_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_25_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_18_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_22_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_22_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_24_dark.png", "res/drawable-xhdpi-v4/ic_media_pause_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_29_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_03_light.png", "res/drawable-xhdpi-v4/ic_vol_type_tv_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_11_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_30_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_23_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_29_dark.png", "res/drawable-xhdpi-v4/ic_media_stop_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_27_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_25_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_06_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_00_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_02_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_17_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_03_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_09_dark.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_00_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_24_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_26_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_29_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_30_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_05_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_08_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_15_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_17_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_disabled_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_26_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_24_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_16_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_27_dark.png", "res/drawable-xhdpi-v4/ic_audiotrack_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_13_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_16_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_04_light.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_group_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_13_light.png", "res/drawable-xhdpi-v4/ic_media_stop_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_17_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_16_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_16_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_01_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_07_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_13_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_19_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_00_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_14_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_03_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_15_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_20_light.png", "res/drawable-xhdpi-v4/ic_media_play_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_03_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_27_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_21_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_28_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_02_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_10_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_23_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_15_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_21_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_05_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_19_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_20_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_06_dark.png", "res/drawable-xhdpi-v4/ic_audiotrack_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_21_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_09_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_20_dark.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_light.png", "res/drawable-xhdpi-v4/ic_mr_button_disconnected_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_19_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_22_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_25_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_09_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_11_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_12_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_10_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_13_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_24_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_01_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_26_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_26_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_07_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_04_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_10_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_17_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_05_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_07_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_15_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_08_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_11_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_09_light.png", "res/drawable-xhdpi-v4/ic_mr_button_disconnected_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_12_light.png", "res/drawable-xhdpi-v4/ic_vol_type_speaker_group_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_14_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connecting_21_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_30_dark.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_06_light.png", "res/drawable-xhdpi-v4/ic_mr_button_connected_01_dark.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-land/values-land.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-sw600dp-v13/values-sw600dp-v13.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-en-rCA/values-en-rCA.xml", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/drawable-xxxhdpi-v4/ic_group_collapse_13.png", "res/drawable-xxxhdpi-v4/ic_mr_button_grey.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_09.png", "res/drawable-xxxhdpi-v4/ic_group_expand_06.png", "res/drawable-xxxhdpi-v4/ic_group_expand_03.png", "res/drawable-xxxhdpi-v4/ic_group_expand_09.png", "res/drawable-xxxhdpi-v4/ic_group_expand_07.png", "res/drawable-xxxhdpi-v4/ic_group_expand_08.png", "res/drawable-xxxhdpi-v4/ic_group_expand_14.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_04.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_14.png", "res/drawable-xxxhdpi-v4/ic_group_expand_04.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_05.png", "res/drawable-xxxhdpi-v4/ic_group_expand_11.png", "res/drawable-xxxhdpi-v4/ic_group_expand_10.png", "res/drawable-xxxhdpi-v4/ic_group_expand_05.png", "res/drawable-xxxhdpi-v4/ic_group_expand_13.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_06.png", "res/drawable-xxxhdpi-v4/ic_group_expand_15.png", "res/drawable-xxxhdpi-v4/ic_group_expand_02.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_10.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_15.png", "res/drawable-xxxhdpi-v4/ic_group_expand_00.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_02.png", "res/drawable-xxxhdpi-v4/ic_group_expand_12.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_03.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_08.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_01.png", "res/drawable-xxxhdpi-v4/ic_group_expand_01.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_00.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_12.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_07.png", "res/drawable-xxxhdpi-v4/ic_group_collapse_11.png", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/values-sw720dp-v13/values-sw720dp-v13.xml", "res/values-ne/values-ne.xml", "res/drawable/mr_media_pause_dark.xml", "res/drawable/mr_dialog_close_dark.xml", "res/drawable/mr_media_stop_light.xml", "res/drawable/mr_button_dark.xml", "res/drawable/mr_button_connected_dark.xml", "res/drawable/mr_dialog_material_background_dark.xml", "res/drawable/mr_button_connecting_light.xml", "res/drawable/mr_media_play_light.xml", "res/drawable/mr_media_pause_light.xml", "res/drawable/mr_dialog_material_background_light.xml", "res/drawable/mr_button_connecting_dark.xml", "res/drawable/mr_media_stop_dark.xml", "res/drawable/mr_dialog_close_light.xml", "res/drawable/mr_group_expand.xml", "res/drawable/mr_vol_type_audiotrack_dark.xml", "res/drawable/mr_vol_type_audiotrack_light.xml", "res/drawable/mr_media_play_dark.xml", "res/drawable/mr_group_collapse.xml", "res/drawable/mr_button_light.xml", "res/drawable/mr_button_connected_light.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_multidex/LICENSE b/third_party/android_deps/libs/com_android_support_multidex/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_multidex/LICENSE
rename to third_party/android_deps/libs/com_android_support_multidex/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_multidex/OWNERS b/third_party/android_deps/libs/com_android_support_multidex/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_multidex/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_multidex/README.chromium b/third_party/android_deps/libs/com_android_support_multidex/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_multidex/README.chromium
rename to third_party/android_deps/libs/com_android_support_multidex/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_multidex/cipd.yaml b/third_party/android_deps/libs/com_android_support_multidex/cipd.yaml
similarity index 73%
rename from third_party/android_deps/repository/com_android_support_multidex/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_multidex/cipd.yaml
index 3760a7d..fbcde3fab 100644
--- a/third_party/android_deps/repository/com_android_support_multidex/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_multidex/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:1.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_multidex
+package: chromium/third_party/android_deps/libs/com_android_support_multidex
 description: Android Multi-Dex Library
 data:
 - file: multidex-1.0.0.aar
-- file: com_android_support_multidex.info
diff --git a/third_party/android_deps/libs/com_android_support_multidex/com_android_support_multidex.info b/third_party/android_deps/libs/com_android_support_multidex/com_android_support_multidex.info
new file mode 100644
index 0000000..a2ebd4a
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_multidex/com_android_support_multidex.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_palette_v7/LICENSE b/third_party/android_deps/libs/com_android_support_palette_v7/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_palette_v7/LICENSE
rename to third_party/android_deps/libs/com_android_support_palette_v7/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_palette_v7/OWNERS b/third_party/android_deps/libs/com_android_support_palette_v7/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_palette_v7/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_palette_v7/README.chromium b/third_party/android_deps/libs/com_android_support_palette_v7/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_palette_v7/README.chromium
rename to third_party/android_deps/libs/com_android_support_palette_v7/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_palette_v7/cipd.yaml b/third_party/android_deps/libs/com_android_support_palette_v7/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_palette_v7/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_palette_v7/cipd.yaml
index 3176a30..4ea30594 100644
--- a/third_party/android_deps/repository/com_android_support_palette_v7/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_palette_v7/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_palette_v7
+package: chromium/third_party/android_deps/libs/com_android_support_palette_v7
 description: Android Support Palette v7
 data:
 - file: palette-v7-27.0.0.aar
-- file: com_android_support_palette_v7.info
diff --git a/third_party/android_deps/libs/com_android_support_palette_v7/com_android_support_palette_v7.info b/third_party/android_deps/libs/com_android_support_palette_v7/com_android_support_palette_v7.info
new file mode 100644
index 0000000..cd54060
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_palette_v7/com_android_support_palette_v7.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_preference_leanback_v17/LICENSE b/third_party/android_deps/libs/com_android_support_preference_leanback_v17/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_preference_leanback_v17/LICENSE
rename to third_party/android_deps/libs/com_android_support_preference_leanback_v17/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_preference_leanback_v17/OWNERS b/third_party/android_deps/libs/com_android_support_preference_leanback_v17/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_preference_leanback_v17/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_preference_leanback_v17/README.chromium b/third_party/android_deps/libs/com_android_support_preference_leanback_v17/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_preference_leanback_v17/README.chromium
rename to third_party/android_deps/libs/com_android_support_preference_leanback_v17/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_preference_leanback_v17/cipd.yaml b/third_party/android_deps/libs/com_android_support_preference_leanback_v17/cipd.yaml
similarity index 70%
rename from third_party/android_deps/repository/com_android_support_preference_leanback_v17/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_preference_leanback_v17/cipd.yaml
index bca07cb..745c284a 100644
--- a/third_party/android_deps/repository/com_android_support_preference_leanback_v17/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_preference_leanback_v17/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_preference_leanback_v17
+package: chromium/third_party/android_deps/libs/com_android_support_preference_leanback_v17
 description: Android Support Leanback Preference v17
 data:
 - file: preference-leanback-v17-27.0.0.aar
-- file: com_android_support_preference_leanback_v17.info
diff --git a/third_party/android_deps/libs/com_android_support_preference_leanback_v17/com_android_support_preference_leanback_v17.info b/third_party/android_deps/libs/com_android_support_preference_leanback_v17/com_android_support_preference_leanback_v17.info
new file mode 100644
index 0000000..87ea13e
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_preference_leanback_v17/com_android_support_preference_leanback_v17.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/layout/leanback_preference_widget_seekbar.xml", "res/layout/leanback_preference_information.xml", "res/layout/leanback_preference.xml", "res/layout/leanback_preferences_list.xml", "res/layout/leanback_settings_fragment.xml", "res/layout/leanback_list_preference_item_single.xml", "res/layout/leanback_preference_category.xml", "res/layout/leanback_list_preference_fragment.xml", "res/layout/leanback_list_preference_item_multi.xml", "res/layout/leanback_preference_fragment.xml", "res/color/lb_preference_item_primary_text_color.xml", "res/color/lb_preference_item_secondary_text_color.xml", "res/values/values.xml", "res/layout-v21/leanback_settings_fragment.xml", "res/layout-v21/leanback_preference_category.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_preference_v14/LICENSE b/third_party/android_deps/libs/com_android_support_preference_v14/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_preference_v14/LICENSE
rename to third_party/android_deps/libs/com_android_support_preference_v14/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_preference_v14/OWNERS b/third_party/android_deps/libs/com_android_support_preference_v14/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_preference_v14/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_preference_v14/README.chromium b/third_party/android_deps/libs/com_android_support_preference_v14/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_preference_v14/README.chromium
rename to third_party/android_deps/libs/com_android_support_preference_v14/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_preference_v14/cipd.yaml b/third_party/android_deps/libs/com_android_support_preference_v14/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_preference_v14/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_preference_v14/cipd.yaml
index c2525e7..a58e678 100644
--- a/third_party/android_deps/repository/com_android_support_preference_v14/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_preference_v14/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_preference_v14
+package: chromium/third_party/android_deps/libs/com_android_support_preference_v14
 description: Android Support Preference v14
 data:
 - file: preference-v14-27.0.0.aar
-- file: com_android_support_preference_v14.info
diff --git a/third_party/android_deps/libs/com_android_support_preference_v14/com_android_support_preference_v14.info b/third_party/android_deps/libs/com_android_support_preference_v14/com_android_support_preference_v14.info
new file mode 100644
index 0000000..74388f4
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_preference_v14/com_android_support_preference_v14.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/layout/preference_information_material.xml", "res/layout/preference_widget_seekbar_material.xml", "res/layout/preference_category_material.xml", "res/layout/preference_dropdown_material.xml", "res/layout/preference_widget_switch.xml", "res/layout/preference_material.xml", "res/values/values.xml", "res/values-v17/values-v17.xml", "res/drawable/preference_list_divider_material.xml", "res/layout-v21/preference_information_material.xml", "res/layout-v21/preference_category_material.xml", "res/layout-v21/preference_dropdown_material.xml", "res/layout-v21/preference_material.xml", "res/drawable-v21/preference_list_divider_material.xml", "res/layout-v17/preference_information_material.xml", "res/layout-v17/preference_category_material.xml", "res/layout-v17/preference_dropdown_material.xml", "res/layout-v17/preference_material.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_preference_v7/LICENSE b/third_party/android_deps/libs/com_android_support_preference_v7/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_preference_v7/LICENSE
rename to third_party/android_deps/libs/com_android_support_preference_v7/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_preference_v7/OWNERS b/third_party/android_deps/libs/com_android_support_preference_v7/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_preference_v7/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_preference_v7/README.chromium b/third_party/android_deps/libs/com_android_support_preference_v7/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_preference_v7/README.chromium
rename to third_party/android_deps/libs/com_android_support_preference_v7/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_preference_v7/cipd.yaml b/third_party/android_deps/libs/com_android_support_preference_v7/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_preference_v7/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_preference_v7/cipd.yaml
index a2539e0b..263ae7f6 100644
--- a/third_party/android_deps/repository/com_android_support_preference_v7/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_preference_v7/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_preference_v7
+package: chromium/third_party/android_deps/libs/com_android_support_preference_v7
 description: Android Support Preference v7
 data:
 - file: preference-v7-27.0.0.aar
-- file: com_android_support_preference_v7.info
diff --git a/third_party/android_deps/libs/com_android_support_preference_v7/com_android_support_preference_v7.info b/third_party/android_deps/libs/com_android_support_preference_v7/com_android_support_preference_v7.info
new file mode 100644
index 0000000..25a4927
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_preference_v7/com_android_support_preference_v7.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/layout-v11/preference.xml", "res/layout-v11/preference_dropdown.xml", "res/layout/preference_recyclerview.xml", "res/layout/preference_widget_checkbox.xml", "res/layout/preference_widget_seekbar.xml", "res/layout/preference_widget_switch_compat.xml", "res/layout/preference_list_fragment.xml", "res/layout/preference_dialog_edittext.xml", "res/layout/preference_information.xml", "res/layout/preference_category.xml", "res/values/values.xml", "res/values-v17/values-v17.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_recyclerview_v7/LICENSE b/third_party/android_deps/libs/com_android_support_recyclerview_v7/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_recyclerview_v7/LICENSE
rename to third_party/android_deps/libs/com_android_support_recyclerview_v7/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_recyclerview_v7/OWNERS b/third_party/android_deps/libs/com_android_support_recyclerview_v7/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_recyclerview_v7/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_recyclerview_v7/README.chromium b/third_party/android_deps/libs/com_android_support_recyclerview_v7/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_recyclerview_v7/README.chromium
rename to third_party/android_deps/libs/com_android_support_recyclerview_v7/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_recyclerview_v7/cipd.yaml b/third_party/android_deps/libs/com_android_support_recyclerview_v7/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_recyclerview_v7/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_recyclerview_v7/cipd.yaml
index 8a41262..d56caee 100644
--- a/third_party/android_deps/repository/com_android_support_recyclerview_v7/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_recyclerview_v7/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_recyclerview_v7
+package: chromium/third_party/android_deps/libs/com_android_support_recyclerview_v7
 description: Android Support RecyclerView v7
 data:
 - file: recyclerview-v7-27.0.0.aar
-- file: com_android_support_recyclerview_v7.info
diff --git a/third_party/android_deps/libs/com_android_support_recyclerview_v7/com_android_support_recyclerview_v7.info b/third_party/android_deps/libs/com_android_support_recyclerview_v7/com_android_support_recyclerview_v7.info
new file mode 100644
index 0000000..a25d255
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_recyclerview_v7/com_android_support_recyclerview_v7.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/values/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_support_annotations/LICENSE b/third_party/android_deps/libs/com_android_support_support_annotations/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_annotations/LICENSE
rename to third_party/android_deps/libs/com_android_support_support_annotations/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_support_annotations/OWNERS b/third_party/android_deps/libs/com_android_support_support_annotations/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_annotations/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_support_annotations/README.chromium b/third_party/android_deps/libs/com_android_support_support_annotations/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_annotations/README.chromium
rename to third_party/android_deps/libs/com_android_support_support_annotations/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_support_annotations/cipd.yaml b/third_party/android_deps/libs/com_android_support_support_annotations/cipd.yaml
similarity index 79%
rename from third_party/android_deps/repository/com_android_support_support_annotations/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_support_annotations/cipd.yaml
index d42ced0..ccf0bf4d 100644
--- a/third_party/android_deps/repository/com_android_support_support_annotations/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_support_annotations/cipd.yaml
@@ -4,7 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_support_annotations
+package: chromium/third_party/android_deps/libs/com_android_support_support_annotations
 description: Android Support Library Annotations
 data:
 - file: support-annotations-27.0.0.jar
diff --git a/third_party/android_deps/repository/com_android_support_support_compat/LICENSE b/third_party/android_deps/libs/com_android_support_support_compat/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_compat/LICENSE
rename to third_party/android_deps/libs/com_android_support_support_compat/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_support_compat/OWNERS b/third_party/android_deps/libs/com_android_support_support_compat/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_compat/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_support_compat/README.chromium b/third_party/android_deps/libs/com_android_support_support_compat/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_compat/README.chromium
rename to third_party/android_deps/libs/com_android_support_support_compat/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_support_compat/cipd.yaml b/third_party/android_deps/libs/com_android_support_support_compat/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_support_compat/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_support_compat/cipd.yaml
index 9efcf4a1..59f6160 100644
--- a/third_party/android_deps/repository/com_android_support_support_compat/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_support_compat/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_support_compat
+package: chromium/third_party/android_deps/libs/com_android_support_support_compat
 description: Android Support Library compat
 data:
 - file: support-compat-27.0.0.aar
-- file: com_android_support_support_compat.info
diff --git a/third_party/android_deps/libs/com_android_support_support_compat/com_android_support_support_compat.info b/third_party/android_deps/libs/com_android_support_support_compat/com_android_support_support_compat.info
new file mode 100644
index 0000000..fc66ea71
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_compat/com_android_support_support_compat.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [ "aidl/android/support/v4/os/ResultReceiver.aidl" ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/values-ur/values-ur.xml", "res/values-ru/values-ru.xml", "res/values-en-rGB/values-en-rGB.xml", "res/values-pt-rBR/values-pt-rBR.xml", "res/values-el/values-el.xml", "res/drawable-hdpi-v4/notification_bg_low_normal.9.png", "res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png", "res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png", "res/drawable-hdpi-v4/notification_bg_normal.9.png", "res/drawable-hdpi-v4/notification_bg_low_pressed.9.png", "res/values-tr/values-tr.xml", "res/values-hu/values-hu.xml", "res/values-km/values-km.xml", "res/values-fr-rCA/values-fr-rCA.xml", "res/values-gu/values-gu.xml", "res/layout/notification_template_icon_group.xml", "res/layout/notification_template_custom_big.xml", "res/layout/notification_template_part_time.xml", "res/layout/notification_template_part_chronometer.xml", "res/layout/notification_action_tombstone.xml", "res/layout/notification_action.xml", "res/values-ms/values-ms.xml", "res/values-v21/values-v21.xml", "res/values-ja/values-ja.xml", "res/values-eu/values-eu.xml", "res/values-sv/values-sv.xml", "res/values-mn/values-mn.xml", "res/layout-v16/notification_template_custom_big.xml", "res/values-ta/values-ta.xml", "res/values-pl/values-pl.xml", "res/values-lt/values-lt.xml", "res/values-bg/values-bg.xml", "res/values-es-rUS/values-es-rUS.xml", "res/values-iw/values-iw.xml", "res/values-mr/values-mr.xml", "res/values-uz/values-uz.xml", "res/values-pa/values-pa.xml", "res/values-fi/values-fi.xml", "res/values-am/values-am.xml", "res/values-pt-rPT/values-pt-rPT.xml", "res/values-ar/values-ar.xml", "res/values-ky/values-ky.xml", "res/drawable-mdpi-v4/notification_bg_low_normal.9.png", "res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png", "res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png", "res/drawable-mdpi-v4/notification_bg_normal.9.png", "res/drawable-mdpi-v4/notification_bg_low_pressed.9.png", "res/values-bs/values-bs.xml", "res/values/values.xml", "res/values-hr/values-hr.xml", "res/values-en-rAU/values-en-rAU.xml", "res/values-ro/values-ro.xml", "res/drawable-xhdpi-v4/notification_bg_low_normal.9.png", "res/drawable-xhdpi-v4/notify_panel_notification_icon_bg.png", "res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png", "res/drawable-xhdpi-v4/notification_bg_normal.9.png", "res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png", "res/values-vi/values-vi.xml", "res/values-ko/values-ko.xml", "res/values-zh-rTW/values-zh-rTW.xml", "res/values-cs/values-cs.xml", "res/values-ml/values-ml.xml", "res/values-te/values-te.xml", "res/values-si/values-si.xml", "res/values-es/values-es.xml", "res/values-af/values-af.xml", "res/values-zu/values-zu.xml", "res/values-lo/values-lo.xml", "res/values-mk/values-mk.xml", "res/values-sl/values-sl.xml", "res/values-sw/values-sw.xml", "res/values-bn/values-bn.xml", "res/values-sk/values-sk.xml", "res/values-lv/values-lv.xml", "res/values-is/values-is.xml", "res/values-da/values-da.xml", "res/values-it/values-it.xml", "res/values-gl/values-gl.xml", "res/values-de/values-de.xml", "res/values-be/values-be.xml", "res/values-fa/values-fa.xml", "res/values-ca/values-ca.xml", "res/values-th/values-th.xml", "res/values-nl/values-nl.xml", "res/values-hy/values-hy.xml", "res/values-zh-rHK/values-zh-rHK.xml", "res/values-tl/values-tl.xml", "res/values-kk/values-kk.xml", "res/values-pt/values-pt.xml", "res/values-my/values-my.xml", "res/values-et/values-et.xml", "res/values-en-rIN/values-en-rIN.xml", "res/values-sr/values-sr.xml", "res/values-v16/values-v16.xml", "res/values-fr/values-fr.xml", "res/values-kn/values-kn.xml", "res/values-nb/values-nb.xml", "res/values-port/values-port.xml", "res/values-ne/values-ne.xml", "res/drawable/notification_bg_low.xml", "res/drawable/notification_bg.xml", "res/drawable/notification_icon_background.xml", "res/drawable/notification_tile_bg.xml", "res/values-b+sr+Latn/values-b+sr+Latn.xml", "res/values-ka/values-ka.xml", "res/values-zh-rCN/values-zh-rCN.xml", "res/values-az/values-az.xml", "res/values-sq/values-sq.xml", "res/values-hi/values-hi.xml", "res/layout-v21/notification_template_icon_group.xml", "res/layout-v21/notification_template_custom_big.xml", "res/layout-v21/notification_action_tombstone.xml", "res/layout-v21/notification_action.xml", "res/values-in/values-in.xml", "res/values-uk/values-uk.xml", "res/drawable-v21/notification_action_background.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_support_core_ui/LICENSE b/third_party/android_deps/libs/com_android_support_support_core_ui/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_core_ui/LICENSE
rename to third_party/android_deps/libs/com_android_support_support_core_ui/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_support_core_ui/OWNERS b/third_party/android_deps/libs/com_android_support_support_core_ui/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_core_ui/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_support_core_ui/README.chromium b/third_party/android_deps/libs/com_android_support_support_core_ui/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_core_ui/README.chromium
rename to third_party/android_deps/libs/com_android_support_support_core_ui/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_support_core_ui/cipd.yaml b/third_party/android_deps/libs/com_android_support_support_core_ui/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_support_core_ui/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_support_core_ui/cipd.yaml
index f7c10d5..f536650 100644
--- a/third_party/android_deps/repository/com_android_support_support_core_ui/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_support_core_ui/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_support_core_ui
+package: chromium/third_party/android_deps/libs/com_android_support_support_core_ui
 description: Android Support Library core UI
 data:
 - file: support-core-ui-27.0.0.aar
-- file: com_android_support_support_core_ui.info
diff --git a/third_party/android_deps/libs/com_android_support_support_core_ui/com_android_support_support_core_ui.info b/third_party/android_deps/libs/com_android_support_support_core_ui/com_android_support_support_core_ui.info
new file mode 100644
index 0000000..7103bc0
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_core_ui/com_android_support_support_core_ui.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = true
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_support_core_utils/LICENSE b/third_party/android_deps/libs/com_android_support_support_core_utils/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_core_utils/LICENSE
rename to third_party/android_deps/libs/com_android_support_support_core_utils/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_support_core_utils/OWNERS b/third_party/android_deps/libs/com_android_support_support_core_utils/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_core_utils/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_support_core_utils/README.chromium b/third_party/android_deps/libs/com_android_support_support_core_utils/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_core_utils/README.chromium
rename to third_party/android_deps/libs/com_android_support_support_core_utils/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_support_core_utils/cipd.yaml b/third_party/android_deps/libs/com_android_support_support_core_utils/cipd.yaml
similarity index 71%
rename from third_party/android_deps/repository/com_android_support_support_core_utils/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_support_core_utils/cipd.yaml
index ce7d9bc..70f0f1cd 100644
--- a/third_party/android_deps/repository/com_android_support_support_core_utils/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_support_core_utils/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_support_core_utils
+package: chromium/third_party/android_deps/libs/com_android_support_support_core_utils
 description: Android Support Library core utils
 data:
 - file: support-core-utils-27.0.0.aar
-- file: com_android_support_support_core_utils.info
diff --git a/third_party/android_deps/libs/com_android_support_support_core_utils/com_android_support_support_core_utils.info b/third_party/android_deps/libs/com_android_support_support_core_utils/com_android_support_support_core_utils.info
new file mode 100644
index 0000000..cd54060
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_core_utils/com_android_support_support_core_utils.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_support_fragment/LICENSE b/third_party/android_deps/libs/com_android_support_support_fragment/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_fragment/LICENSE
rename to third_party/android_deps/libs/com_android_support_support_fragment/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_support_fragment/OWNERS b/third_party/android_deps/libs/com_android_support_support_fragment/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_fragment/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_support_fragment/README.chromium b/third_party/android_deps/libs/com_android_support_support_fragment/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_fragment/README.chromium
rename to third_party/android_deps/libs/com_android_support_support_fragment/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_support_fragment/cipd.yaml b/third_party/android_deps/libs/com_android_support_support_fragment/cipd.yaml
similarity index 71%
rename from third_party/android_deps/repository/com_android_support_support_fragment/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_support_fragment/cipd.yaml
index d8d9997..1b682ea9 100644
--- a/third_party/android_deps/repository/com_android_support_support_fragment/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_support_fragment/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_support_fragment
+package: chromium/third_party/android_deps/libs/com_android_support_support_fragment
 description: Android Support Library fragment
 data:
 - file: support-fragment-27.0.0.aar
-- file: com_android_support_support_fragment.info
diff --git a/third_party/android_deps/libs/com_android_support_support_fragment/com_android_support_support_fragment.info b/third_party/android_deps/libs/com_android_support_support_fragment/com_android_support_support_fragment.info
new file mode 100644
index 0000000..cd54060
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_fragment/com_android_support_support_fragment.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_support_media_compat/LICENSE b/third_party/android_deps/libs/com_android_support_support_media_compat/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_media_compat/LICENSE
rename to third_party/android_deps/libs/com_android_support_support_media_compat/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_support_media_compat/OWNERS b/third_party/android_deps/libs/com_android_support_support_media_compat/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_media_compat/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_support_media_compat/README.chromium b/third_party/android_deps/libs/com_android_support_support_media_compat/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_media_compat/README.chromium
rename to third_party/android_deps/libs/com_android_support_support_media_compat/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_support_media_compat/cipd.yaml b/third_party/android_deps/libs/com_android_support_support_media_compat/cipd.yaml
similarity index 71%
rename from third_party/android_deps/repository/com_android_support_support_media_compat/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_support_media_compat/cipd.yaml
index a3dbd9b..30f4e342 100644
--- a/third_party/android_deps/repository/com_android_support_support_media_compat/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_support_media_compat/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_support_media_compat
+package: chromium/third_party/android_deps/libs/com_android_support_support_media_compat
 description: Android Support Library media compat
 data:
 - file: support-media-compat-27.0.0.aar
-- file: com_android_support_support_media_compat.info
diff --git a/third_party/android_deps/libs/com_android_support_support_media_compat/com_android_support_support_media_compat.info b/third_party/android_deps/libs/com_android_support_support_media_compat/com_android_support_support_media_compat.info
new file mode 100644
index 0000000..6140dd1
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_media_compat/com_android_support_support_media_compat.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [ "aidl/android/support/v4/media/session/PlaybackStateCompat.aidl", "aidl/android/support/v4/media/session/MediaSessionCompat.aidl", "aidl/android/support/v4/media/session/ParcelableVolumeInfo.aidl", "aidl/android/support/v4/media/RatingCompat.aidl", "aidl/android/support/v4/media/MediaMetadataCompat.aidl", "aidl/android/support/v4/media/MediaDescriptionCompat.aidl" ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/layout/notification_template_media_custom.xml", "res/layout/notification_template_big_media_narrow_custom.xml", "res/layout/notification_template_media.xml", "res/layout/notification_template_big_media.xml", "res/layout/notification_media_action.xml", "res/layout/notification_template_lines_media.xml", "res/layout/notification_media_cancel_action.xml", "res/layout/notification_template_big_media_custom.xml", "res/layout/notification_template_big_media_narrow.xml", "res/values-v21/values-v21.xml", "res/values/values.xml", "res/values-v24/values-v24.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_support_v13/LICENSE b/third_party/android_deps/libs/com_android_support_support_v13/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_v13/LICENSE
rename to third_party/android_deps/libs/com_android_support_support_v13/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_support_v13/OWNERS b/third_party/android_deps/libs/com_android_support_support_v13/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_v13/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_support_v13/README.chromium b/third_party/android_deps/libs/com_android_support_support_v13/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_v13/README.chromium
rename to third_party/android_deps/libs/com_android_support_support_v13/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_support_v13/cipd.yaml b/third_party/android_deps/libs/com_android_support_support_v13/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_support_v13/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_support_v13/cipd.yaml
index 3e34161a..18ab29f 100644
--- a/third_party/android_deps/repository/com_android_support_support_v13/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_support_v13/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_support_v13
+package: chromium/third_party/android_deps/libs/com_android_support_support_v13
 description: Android Support Library v13
 data:
 - file: support-v13-27.0.0.aar
-- file: com_android_support_support_v13.info
diff --git a/third_party/android_deps/libs/com_android_support_support_v13/com_android_support_support_v13.info b/third_party/android_deps/libs/com_android_support_support_v13/com_android_support_support_v13.info
new file mode 100644
index 0000000..cd54060
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_v13/com_android_support_support_v13.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_support_v4/LICENSE b/third_party/android_deps/libs/com_android_support_support_v4/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_v4/LICENSE
rename to third_party/android_deps/libs/com_android_support_support_v4/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_support_v4/OWNERS b/third_party/android_deps/libs/com_android_support_support_v4/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_v4/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_support_v4/README.chromium b/third_party/android_deps/libs/com_android_support_support_v4/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_v4/README.chromium
rename to third_party/android_deps/libs/com_android_support_support_v4/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_support_v4/cipd.yaml b/third_party/android_deps/libs/com_android_support_support_v4/cipd.yaml
similarity index 72%
rename from third_party/android_deps/repository/com_android_support_support_v4/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_support_v4/cipd.yaml
index 59e50ed..e856a58ff 100644
--- a/third_party/android_deps/repository/com_android_support_support_v4/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_support_v4/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_support_v4
+package: chromium/third_party/android_deps/libs/com_android_support_support_v4
 description: Android Support Library v4
 data:
 - file: support-v4-27.0.0.aar
-- file: com_android_support_support_v4.info
diff --git a/third_party/android_deps/libs/com_android_support_support_v4/com_android_support_support_v4.info b/third_party/android_deps/libs/com_android_support_support_v4/com_android_support_support_v4.info
new file mode 100644
index 0000000..cd54060
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_v4/com_android_support_support_v4.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_support_vector_drawable/LICENSE b/third_party/android_deps/libs/com_android_support_support_vector_drawable/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_vector_drawable/LICENSE
rename to third_party/android_deps/libs/com_android_support_support_vector_drawable/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_support_vector_drawable/OWNERS b/third_party/android_deps/libs/com_android_support_support_vector_drawable/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_vector_drawable/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_support_vector_drawable/README.chromium b/third_party/android_deps/libs/com_android_support_support_vector_drawable/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_support_vector_drawable/README.chromium
rename to third_party/android_deps/libs/com_android_support_support_vector_drawable/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_support_vector_drawable/cipd.yaml b/third_party/android_deps/libs/com_android_support_support_vector_drawable/cipd.yaml
similarity index 70%
rename from third_party/android_deps/repository/com_android_support_support_vector_drawable/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_support_vector_drawable/cipd.yaml
index 9ae44e7..3a568ee 100644
--- a/third_party/android_deps/repository/com_android_support_support_vector_drawable/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_support_vector_drawable/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_support_vector_drawable
+package: chromium/third_party/android_deps/libs/com_android_support_support_vector_drawable
 description: Android Support VectorDrawable
 data:
 - file: support-vector-drawable-27.0.0.aar
-- file: com_android_support_support_vector_drawable.info
diff --git a/third_party/android_deps/libs/com_android_support_support_vector_drawable/com_android_support_support_vector_drawable.info b/third_party/android_deps/libs/com_android_support_support_vector_drawable/com_android_support_support_vector_drawable.info
new file mode 100644
index 0000000..cd54060
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_support_vector_drawable/com_android_support_support_vector_drawable.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = true
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/repository/com_android_support_transition/LICENSE b/third_party/android_deps/libs/com_android_support_transition/LICENSE
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_transition/LICENSE
rename to third_party/android_deps/libs/com_android_support_transition/LICENSE
diff --git a/third_party/android_deps/libs/com_android_support_transition/OWNERS b/third_party/android_deps/libs/com_android_support_transition/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_transition/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/repository/com_android_support_transition/README.chromium b/third_party/android_deps/libs/com_android_support_transition/README.chromium
similarity index 100%
rename from third_party/android_deps/repository/com_android_support_transition/README.chromium
rename to third_party/android_deps/libs/com_android_support_transition/README.chromium
diff --git a/third_party/android_deps/repository/com_android_support_transition/cipd.yaml b/third_party/android_deps/libs/com_android_support_transition/cipd.yaml
similarity index 73%
rename from third_party/android_deps/repository/com_android_support_transition/cipd.yaml
rename to third_party/android_deps/libs/com_android_support_transition/cipd.yaml
index 4781146..09fd0e8a 100644
--- a/third_party/android_deps/repository/com_android_support_transition/cipd.yaml
+++ b/third_party/android_deps/libs/com_android_support_transition/cipd.yaml
@@ -4,8 +4,7 @@
 
 # To create CIPD package run the following command.
 # cipd create --pkg-def cipd.yaml -tag version:27.0.0-cr0
-package: chromium/third_party/android_deps/repository/com_android_support_transition
+package: chromium/third_party/android_deps/libs/com_android_support_transition
 description: Android Transition Support Library
 data:
 - file: transition-27.0.0.aar
-- file: com_android_support_transition.info
diff --git a/third_party/android_deps/libs/com_android_support_transition/com_android_support_transition.info b/third_party/android_deps/libs/com_android_support_transition/com_android_support_transition.info
new file mode 100644
index 0000000..a25d255
--- /dev/null
+++ b/third_party/android_deps/libs/com_android_support_transition/com_android_support_transition.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = true
+is_manifest_empty = true
+resources = [ "res/values/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_auth/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_auth/README.chromium
new file mode 100644
index 0000000..ffb3a3e
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-auth
+Short Name: play-services-auth
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_auth/cipd.yaml
new file mode 100644
index 0000000..b22e482
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_auth
+description: play-services-auth
+data:
+- file: play-services-auth-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info b/third_party/android_deps/libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info
new file mode 100644
index 0000000..5c44fcb
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = false
+resources = [ "res/drawable-watch-v20/common_google_signin_btn_text_dark_normal.xml", "res/drawable-watch-v20/common_google_signin_btn_text_disabled.xml", "res/drawable-watch-v20/common_google_signin_btn_text_light_normal.xml", "res/values-watch-v20/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/README.chromium
new file mode 100644
index 0000000..53abcd59
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-auth-api-phone
+Short Name: play-services-auth-api-phone
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/cipd.yaml
new file mode 100644
index 0000000..11cbfbc
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone
+description: play-services-auth-api-phone
+data:
+- file: play-services-auth-api-phone-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info
new file mode 100644
index 0000000..a2ebd4a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/README.chromium
new file mode 100644
index 0000000..d0959a3
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-auth-base
+Short Name: play-services-auth-base
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/cipd.yaml
new file mode 100644
index 0000000..ed6954a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base
+description: play-services-auth-base
+data:
+- file: play-services-auth-base-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/com_google_android_gms_play_services_auth_base.info b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/com_google_android_gms_play_services_auth_base.info
new file mode 100644
index 0000000..a2ebd4a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_auth_base/com_google_android_gms_play_services_auth_base.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_base/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_base/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_base/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_base/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_base/README.chromium
new file mode 100644
index 0000000..a69024c
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_base/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-base
+Short Name: play-services-base
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_base/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_base/cipd.yaml
new file mode 100644
index 0000000..cede9211
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_base/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_base
+description: play-services-base
+data:
+- file: play-services-base-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info b/third_party/android_deps/libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info
new file mode 100644
index 0000000..b85a72d
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = false
+is_manifest_empty = false
+resources = [ "res/color/common_google_signin_btn_text_dark.xml", "res/color/common_google_signin_btn_text_light.xml", "res/color/common_google_signin_btn_tint.xml", "res/drawable-hdpi-v4/common_full_open_on_phone.png", "res/drawable-hdpi-v4/common_google_signin_btn_icon_dark_normal_background.9.png", "res/drawable-hdpi-v4/common_google_signin_btn_icon_light_normal_background.9.png", "res/drawable-hdpi-v4/common_google_signin_btn_text_dark_normal_background.9.png", "res/drawable-hdpi-v4/common_google_signin_btn_text_light_normal_background.9.png", "res/drawable-hdpi-v4/googleg_disabled_color_18.png", "res/drawable-hdpi-v4/googleg_standard_color_18.png", "res/drawable-mdpi-v4/common_google_signin_btn_icon_dark_normal_background.9.png", "res/drawable-mdpi-v4/common_google_signin_btn_icon_light_normal_background.9.png", "res/drawable-mdpi-v4/common_google_signin_btn_text_dark_normal_background.9.png", "res/drawable-mdpi-v4/common_google_signin_btn_text_light_normal_background.9.png", "res/drawable-mdpi-v4/googleg_disabled_color_18.png", "res/drawable-mdpi-v4/googleg_standard_color_18.png", "res/drawable-xhdpi-v4/common_full_open_on_phone.png", "res/drawable-xhdpi-v4/common_google_signin_btn_icon_dark_normal_background.9.png", "res/drawable-xhdpi-v4/common_google_signin_btn_icon_light_normal_background.9.png", "res/drawable-xhdpi-v4/common_google_signin_btn_text_dark_normal_background.9.png", "res/drawable-xhdpi-v4/common_google_signin_btn_text_light_normal_background.9.png", "res/drawable-xhdpi-v4/googleg_disabled_color_18.png", "res/drawable-xhdpi-v4/googleg_standard_color_18.png", "res/drawable-xxhdpi-v4/common_google_signin_btn_icon_dark_normal_background.9.png", "res/drawable-xxhdpi-v4/common_google_signin_btn_icon_light_normal_background.9.png", "res/drawable-xxhdpi-v4/common_google_signin_btn_text_dark_normal_background.9.png", "res/drawable-xxhdpi-v4/common_google_signin_btn_text_light_normal_background.9.png", "res/drawable-xxhdpi-v4/googleg_disabled_color_18.png", "res/drawable-xxhdpi-v4/googleg_standard_color_18.png", "res/drawable/common_google_signin_btn_icon_dark.xml", "res/drawable/common_google_signin_btn_icon_dark_focused.xml", "res/drawable/common_google_signin_btn_icon_dark_normal.xml", "res/drawable/common_google_signin_btn_icon_disabled.xml", "res/drawable/common_google_signin_btn_icon_light.xml", "res/drawable/common_google_signin_btn_icon_light_focused.xml", "res/drawable/common_google_signin_btn_icon_light_normal.xml", "res/drawable/common_google_signin_btn_text_dark.xml", "res/drawable/common_google_signin_btn_text_dark_focused.xml", "res/drawable/common_google_signin_btn_text_dark_normal.xml", "res/drawable/common_google_signin_btn_text_disabled.xml", "res/drawable/common_google_signin_btn_text_light.xml", "res/drawable/common_google_signin_btn_text_light_focused.xml", "res/drawable/common_google_signin_btn_text_light_normal.xml", "res/values-af/values.xml", "res/values-am/values.xml", "res/values-ar/values.xml", "res/values-az/values.xml", "res/values-b+sr+Latn/values.xml", "res/values-be/values.xml", "res/values-bg/values.xml", "res/values-bn/values.xml", "res/values-bs/values.xml", "res/values-ca/values.xml", "res/values-cs/values.xml", "res/values-da/values.xml", "res/values-de/values.xml", "res/values-el/values.xml", "res/values-en-rGB/values.xml", "res/values-es-rUS/values.xml", "res/values-es/values.xml", "res/values-et/values.xml", "res/values-eu/values.xml", "res/values-fa/values.xml", "res/values-fi/values.xml", "res/values-fr-rCA/values.xml", "res/values-fr/values.xml", "res/values-gl/values.xml", "res/values-gu/values.xml", "res/values-hi/values.xml", "res/values-hr/values.xml", "res/values-hu/values.xml", "res/values-hy/values.xml", "res/values-in/values.xml", "res/values-is/values.xml", "res/values-it/values.xml", "res/values-iw/values.xml", "res/values-ja/values.xml", "res/values-ka/values.xml", "res/values-kk/values.xml", "res/values-km/values.xml", "res/values-kn/values.xml", "res/values-ko/values.xml", "res/values-ky/values.xml", "res/values-lo/values.xml", "res/values-lt/values.xml", "res/values-lv/values.xml", "res/values-mk/values.xml", "res/values-ml/values.xml", "res/values-mn/values.xml", "res/values-mr/values.xml", "res/values-ms/values.xml", "res/values-my/values.xml", "res/values-nb/values.xml", "res/values-ne/values.xml", "res/values-nl/values.xml", "res/values-pa/values.xml", "res/values-pl/values.xml", "res/values-pt-rBR/values.xml", "res/values-pt-rPT/values.xml", "res/values-ro/values.xml", "res/values-ru/values.xml", "res/values-si/values.xml", "res/values-sk/values.xml", "res/values-sl/values.xml", "res/values-sq/values.xml", "res/values-sr/values.xml", "res/values-sv/values.xml", "res/values-sw/values.xml", "res/values-ta/values.xml", "res/values-te/values.xml", "res/values-th/values.xml", "res/values-tl/values.xml", "res/values-tr/values.xml", "res/values-uk/values.xml", "res/values-ur/values.xml", "res/values-uz/values.xml", "res/values-vi/values.xml", "res/values-zh-rCN/values.xml", "res/values-zh-rHK/values.xml", "res/values-zh-rTW/values.xml", "res/values-zu/values.xml", "res/values/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_basement/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_basement/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_basement/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_basement/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_basement/README.chromium
new file mode 100644
index 0000000..0091b1b
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_basement/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-basement
+Short Name: play-services-basement
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_basement/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_basement/cipd.yaml
new file mode 100644
index 0000000..7262b0e
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_basement/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_basement
+description: play-services-basement
+data:
+- file: play-services-basement-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info b/third_party/android_deps/libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info
new file mode 100644
index 0000000..ac3ce23
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = true
+is_manifest_empty = false
+resources = [ "res/values-af/values.xml", "res/values-am/values.xml", "res/values-ar/values.xml", "res/values-az/values.xml", "res/values-b+sr+Latn/values.xml", "res/values-be/values.xml", "res/values-bg/values.xml", "res/values-bn/values.xml", "res/values-bs/values.xml", "res/values-ca/values.xml", "res/values-cs/values.xml", "res/values-da/values.xml", "res/values-de/values.xml", "res/values-el/values.xml", "res/values-en-rGB/values.xml", "res/values-es-rUS/values.xml", "res/values-es/values.xml", "res/values-et/values.xml", "res/values-eu/values.xml", "res/values-fa/values.xml", "res/values-fi/values.xml", "res/values-fr-rCA/values.xml", "res/values-fr/values.xml", "res/values-gl/values.xml", "res/values-gu/values.xml", "res/values-hi/values.xml", "res/values-hr/values.xml", "res/values-hu/values.xml", "res/values-hy/values.xml", "res/values-in/values.xml", "res/values-is/values.xml", "res/values-it/values.xml", "res/values-iw/values.xml", "res/values-ja/values.xml", "res/values-ka/values.xml", "res/values-kk/values.xml", "res/values-km/values.xml", "res/values-kn/values.xml", "res/values-ko/values.xml", "res/values-ky/values.xml", "res/values-lo/values.xml", "res/values-lt/values.xml", "res/values-lv/values.xml", "res/values-mk/values.xml", "res/values-ml/values.xml", "res/values-mn/values.xml", "res/values-mr/values.xml", "res/values-ms/values.xml", "res/values-my/values.xml", "res/values-nb/values.xml", "res/values-ne/values.xml", "res/values-nl/values.xml", "res/values-pa/values.xml", "res/values-pl/values.xml", "res/values-pt-rBR/values.xml", "res/values-pt-rPT/values.xml", "res/values-ro/values.xml", "res/values-ru/values.xml", "res/values-si/values.xml", "res/values-sk/values.xml", "res/values-sl/values.xml", "res/values-sq/values.xml", "res/values-sr/values.xml", "res/values-sv/values.xml", "res/values-sw/values.xml", "res/values-ta/values.xml", "res/values-te/values.xml", "res/values-th/values.xml", "res/values-tl/values.xml", "res/values-tr/values.xml", "res/values-uk/values.xml", "res/values-ur/values.xml", "res/values-uz/values.xml", "res/values-vi/values.xml", "res/values-zh-rCN/values.xml", "res/values-zh-rHK/values.xml", "res/values-zh-rTW/values.xml", "res/values-zu/values.xml", "res/values/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_cast/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_cast/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_cast/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_cast/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_cast/README.chromium
new file mode 100644
index 0000000..f296e89
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_cast/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-cast
+Short Name: play-services-cast
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_cast/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_cast/cipd.yaml
new file mode 100644
index 0000000..b1e45dd
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_cast/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_cast
+description: play-services-cast
+data:
+- file: play-services-cast-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_cast/com_google_android_gms_play_services_cast.info b/third_party/android_deps/libs/com_google_android_gms_play_services_cast/com_google_android_gms_play_services_cast.info
new file mode 100644
index 0000000..492ffdcf
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_cast/com_google_android_gms_play_services_cast.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = true
+resources = [ "res/drawable-hdpi-v4/cast_ic_notification_0.png", "res/drawable-hdpi-v4/cast_ic_notification_1.png", "res/drawable-hdpi-v4/cast_ic_notification_2.png", "res/drawable-hdpi-v4/cast_ic_notification_on.png", "res/drawable-mdpi-v4/cast_ic_notification_0.png", "res/drawable-mdpi-v4/cast_ic_notification_1.png", "res/drawable-mdpi-v4/cast_ic_notification_2.png", "res/drawable-mdpi-v4/cast_ic_notification_on.png", "res/drawable-xhdpi-v4/cast_ic_notification_0.png", "res/drawable-xhdpi-v4/cast_ic_notification_1.png", "res/drawable-xhdpi-v4/cast_ic_notification_2.png", "res/drawable-xhdpi-v4/cast_ic_notification_on.png", "res/drawable-xxhdpi-v4/cast_ic_notification_0.png", "res/drawable-xxhdpi-v4/cast_ic_notification_1.png", "res/drawable-xxhdpi-v4/cast_ic_notification_2.png", "res/drawable-xxhdpi-v4/cast_ic_notification_on.png", "res/drawable/cast_ic_notification_connecting.xml", "res/values-af/values.xml", "res/values-am/values.xml", "res/values-ar/values.xml", "res/values-az/values.xml", "res/values-b+sr+Latn/values.xml", "res/values-be/values.xml", "res/values-bg/values.xml", "res/values-bn/values.xml", "res/values-bs/values.xml", "res/values-ca/values.xml", "res/values-cs/values.xml", "res/values-da/values.xml", "res/values-de/values.xml", "res/values-el/values.xml", "res/values-en-rGB/values.xml", "res/values-es-rUS/values.xml", "res/values-es/values.xml", "res/values-et/values.xml", "res/values-eu/values.xml", "res/values-fa/values.xml", "res/values-fi/values.xml", "res/values-fr-rCA/values.xml", "res/values-fr/values.xml", "res/values-gl/values.xml", "res/values-gu/values.xml", "res/values-hi/values.xml", "res/values-hr/values.xml", "res/values-hu/values.xml", "res/values-hy/values.xml", "res/values-in/values.xml", "res/values-is/values.xml", "res/values-it/values.xml", "res/values-iw/values.xml", "res/values-ja/values.xml", "res/values-ka/values.xml", "res/values-kk/values.xml", "res/values-km/values.xml", "res/values-kn/values.xml", "res/values-ko/values.xml", "res/values-ky/values.xml", "res/values-lo/values.xml", "res/values-lt/values.xml", "res/values-lv/values.xml", "res/values-mk/values.xml", "res/values-ml/values.xml", "res/values-mn/values.xml", "res/values-mr/values.xml", "res/values-ms/values.xml", "res/values-my/values.xml", "res/values-nb/values.xml", "res/values-ne/values.xml", "res/values-nl/values.xml", "res/values-pa/values.xml", "res/values-pl/values.xml", "res/values-pt-rBR/values.xml", "res/values-pt-rPT/values.xml", "res/values-ro/values.xml", "res/values-ru/values.xml", "res/values-si/values.xml", "res/values-sk/values.xml", "res/values-sl/values.xml", "res/values-sq/values.xml", "res/values-sr/values.xml", "res/values-sv/values.xml", "res/values-sw/values.xml", "res/values-ta/values.xml", "res/values-te/values.xml", "res/values-th/values.xml", "res/values-tl/values.xml", "res/values-tr/values.xml", "res/values-uk/values.xml", "res/values-ur/values.xml", "res/values-uz/values.xml", "res/values-vi/values.xml", "res/values-zh-rCN/values.xml", "res/values-zh-rHK/values.xml", "res/values-zh-rTW/values.xml", "res/values-zu/values.xml", "res/values/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/README.chromium
new file mode 100644
index 0000000..27c17f0d
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-cast-framework
+Short Name: play-services-cast-framework
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/cipd.yaml
new file mode 100644
index 0000000..01a3693
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework
+description: play-services-cast-framework
+data:
+- file: play-services-cast-framework-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/com_google_android_gms_play_services_cast_framework.info b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/com_google_android_gms_play_services_cast_framework.info
new file mode 100644
index 0000000..285379a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_cast_framework/com_google_android_gms_play_services_cast_framework.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = false
+resources = [ "res/drawable-hdpi-v4/cast_abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-hdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-hdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-hdpi-v4/cast_abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-hdpi-v4/cast_ic_stop_circle_filled_grey600.png", "res/drawable-hdpi-v4/cast_ic_stop_circle_filled_white.png", "res/drawable-hdpi-v4/quantum_ic_art_track_grey600_48.png", "res/drawable-hdpi-v4/quantum_ic_bigtop_updates_white_24.png", "res/drawable-hdpi-v4/quantum_ic_cast_connected_white_24.png", "res/drawable-hdpi-v4/quantum_ic_cast_white_36.png", "res/drawable-hdpi-v4/quantum_ic_clear_white_24.png", "res/drawable-hdpi-v4/quantum_ic_closed_caption_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_closed_caption_white_36.png", "res/drawable-hdpi-v4/quantum_ic_forward_10_white_24.png", "res/drawable-hdpi-v4/quantum_ic_forward_30_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_forward_30_white_24.png", "res/drawable-hdpi-v4/quantum_ic_forward_30_white_36.png", "res/drawable-hdpi-v4/quantum_ic_keyboard_arrow_down_white_36.png", "res/drawable-hdpi-v4/quantum_ic_pause_circle_filled_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_pause_circle_filled_white_36.png", "res/drawable-hdpi-v4/quantum_ic_pause_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_pause_grey600_48.png", "res/drawable-hdpi-v4/quantum_ic_pause_white_24.png", "res/drawable-hdpi-v4/quantum_ic_play_arrow_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_play_arrow_grey600_48.png", "res/drawable-hdpi-v4/quantum_ic_play_arrow_white_24.png", "res/drawable-hdpi-v4/quantum_ic_play_circle_filled_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_play_circle_filled_white_36.png", "res/drawable-hdpi-v4/quantum_ic_refresh_white_24.png", "res/drawable-hdpi-v4/quantum_ic_replay_10_white_24.png", "res/drawable-hdpi-v4/quantum_ic_replay_30_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_replay_30_white_24.png", "res/drawable-hdpi-v4/quantum_ic_replay_30_white_36.png", "res/drawable-hdpi-v4/quantum_ic_replay_white_24.png", "res/drawable-hdpi-v4/quantum_ic_skip_next_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_skip_next_white_24.png", "res/drawable-hdpi-v4/quantum_ic_skip_next_white_36.png", "res/drawable-hdpi-v4/quantum_ic_skip_previous_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_skip_previous_white_24.png", "res/drawable-hdpi-v4/quantum_ic_skip_previous_white_36.png", "res/drawable-hdpi-v4/quantum_ic_stop_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_stop_grey600_48.png", "res/drawable-hdpi-v4/quantum_ic_stop_white_24.png", "res/drawable-hdpi-v4/quantum_ic_volume_off_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_volume_off_white_36.png", "res/drawable-hdpi-v4/quantum_ic_volume_up_grey600_36.png", "res/drawable-hdpi-v4/quantum_ic_volume_up_white_36.png", "res/drawable-mdpi-v4/cast_abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-mdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-mdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-mdpi-v4/cast_abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-mdpi-v4/cast_ic_stop_circle_filled_grey600.png", "res/drawable-mdpi-v4/cast_ic_stop_circle_filled_white.png", "res/drawable-mdpi-v4/quantum_ic_art_track_grey600_48.png", "res/drawable-mdpi-v4/quantum_ic_bigtop_updates_white_24.png", "res/drawable-mdpi-v4/quantum_ic_cast_connected_white_24.png", "res/drawable-mdpi-v4/quantum_ic_cast_white_36.png", "res/drawable-mdpi-v4/quantum_ic_clear_white_24.png", "res/drawable-mdpi-v4/quantum_ic_closed_caption_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_closed_caption_white_36.png", "res/drawable-mdpi-v4/quantum_ic_forward_10_white_24.png", "res/drawable-mdpi-v4/quantum_ic_forward_30_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_forward_30_white_24.png", "res/drawable-mdpi-v4/quantum_ic_forward_30_white_36.png", "res/drawable-mdpi-v4/quantum_ic_keyboard_arrow_down_white_36.png", "res/drawable-mdpi-v4/quantum_ic_pause_circle_filled_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_pause_circle_filled_white_36.png", "res/drawable-mdpi-v4/quantum_ic_pause_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_pause_grey600_48.png", "res/drawable-mdpi-v4/quantum_ic_pause_white_24.png", "res/drawable-mdpi-v4/quantum_ic_play_arrow_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_play_arrow_grey600_48.png", "res/drawable-mdpi-v4/quantum_ic_play_arrow_white_24.png", "res/drawable-mdpi-v4/quantum_ic_play_circle_filled_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_play_circle_filled_white_36.png", "res/drawable-mdpi-v4/quantum_ic_refresh_white_24.png", "res/drawable-mdpi-v4/quantum_ic_replay_10_white_24.png", "res/drawable-mdpi-v4/quantum_ic_replay_30_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_replay_30_white_24.png", "res/drawable-mdpi-v4/quantum_ic_replay_30_white_36.png", "res/drawable-mdpi-v4/quantum_ic_replay_white_24.png", "res/drawable-mdpi-v4/quantum_ic_skip_next_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_skip_next_white_24.png", "res/drawable-mdpi-v4/quantum_ic_skip_next_white_36.png", "res/drawable-mdpi-v4/quantum_ic_skip_previous_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_skip_previous_white_24.png", "res/drawable-mdpi-v4/quantum_ic_skip_previous_white_36.png", "res/drawable-mdpi-v4/quantum_ic_stop_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_stop_grey600_48.png", "res/drawable-mdpi-v4/quantum_ic_stop_white_24.png", "res/drawable-mdpi-v4/quantum_ic_volume_off_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_volume_off_white_36.png", "res/drawable-mdpi-v4/quantum_ic_volume_up_grey600_36.png", "res/drawable-mdpi-v4/quantum_ic_volume_up_white_36.png", "res/drawable-nodpi-v4/cast_album_art_placeholder.png", "res/drawable-nodpi-v4/cast_album_art_placeholder_large.png", "res/drawable-xhdpi-v4/cast_abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-xhdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xhdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-xhdpi-v4/cast_abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-xhdpi-v4/cast_ic_stop_circle_filled_grey600.png", "res/drawable-xhdpi-v4/cast_ic_stop_circle_filled_white.png", "res/drawable-xhdpi-v4/quantum_ic_art_track_grey600_48.png", "res/drawable-xhdpi-v4/quantum_ic_bigtop_updates_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_cast_connected_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_cast_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_clear_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_closed_caption_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_closed_caption_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_forward_10_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_forward_30_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_forward_30_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_forward_30_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_keyboard_arrow_down_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_pause_circle_filled_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_pause_circle_filled_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_pause_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_pause_grey600_48.png", "res/drawable-xhdpi-v4/quantum_ic_pause_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_play_arrow_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_play_arrow_grey600_48.png", "res/drawable-xhdpi-v4/quantum_ic_play_arrow_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_play_circle_filled_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_play_circle_filled_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_refresh_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_replay_10_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_replay_30_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_replay_30_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_replay_30_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_replay_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_skip_next_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_skip_next_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_skip_next_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_skip_previous_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_skip_previous_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_skip_previous_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_stop_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_stop_grey600_48.png", "res/drawable-xhdpi-v4/quantum_ic_stop_white_24.png", "res/drawable-xhdpi-v4/quantum_ic_volume_off_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_volume_off_white_36.png", "res/drawable-xhdpi-v4/quantum_ic_volume_up_grey600_36.png", "res/drawable-xhdpi-v4/quantum_ic_volume_up_white_36.png", "res/drawable-xxhdpi-v4/cast_abc_scrubber_control_off_mtrl_alpha.png", "res/drawable-xxhdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xxhdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-xxhdpi-v4/cast_abc_scrubber_primary_mtrl_alpha.9.png", "res/drawable-xxhdpi-v4/cast_ic_stop_circle_filled_grey600.png", "res/drawable-xxhdpi-v4/cast_ic_stop_circle_filled_white.png", "res/drawable-xxhdpi-v4/quantum_ic_art_track_grey600_48.png", "res/drawable-xxhdpi-v4/quantum_ic_bigtop_updates_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_cast_connected_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_cast_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_clear_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_closed_caption_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_closed_caption_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_forward_10_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_forward_30_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_forward_30_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_forward_30_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_keyboard_arrow_down_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_pause_circle_filled_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_pause_circle_filled_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_pause_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_pause_grey600_48.png", "res/drawable-xxhdpi-v4/quantum_ic_pause_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_play_arrow_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_play_arrow_grey600_48.png", "res/drawable-xxhdpi-v4/quantum_ic_play_arrow_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_play_circle_filled_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_play_circle_filled_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_refresh_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_replay_10_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_replay_30_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_replay_30_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_replay_30_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_replay_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_skip_next_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_skip_next_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_skip_next_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_skip_previous_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_skip_previous_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_skip_previous_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_stop_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_stop_grey600_48.png", "res/drawable-xxhdpi-v4/quantum_ic_stop_white_24.png", "res/drawable-xxhdpi-v4/quantum_ic_volume_off_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_volume_off_white_36.png", "res/drawable-xxhdpi-v4/quantum_ic_volume_up_grey600_36.png", "res/drawable-xxhdpi-v4/quantum_ic_volume_up_white_36.png", "res/drawable-xxxhdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_000.png", "res/drawable-xxxhdpi-v4/cast_abc_scrubber_control_to_pressed_mtrl_005.png", "res/drawable-xxxhdpi-v4/cast_ic_stop_circle_filled_grey600.png", "res/drawable-xxxhdpi-v4/cast_ic_stop_circle_filled_white.png", "res/drawable-xxxhdpi-v4/quantum_ic_art_track_grey600_48.png", "res/drawable-xxxhdpi-v4/quantum_ic_bigtop_updates_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_cast_connected_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_cast_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_clear_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_closed_caption_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_closed_caption_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_forward_10_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_forward_30_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_forward_30_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_forward_30_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_keyboard_arrow_down_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_pause_circle_filled_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_pause_circle_filled_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_pause_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_pause_grey600_48.png", "res/drawable-xxxhdpi-v4/quantum_ic_pause_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_play_arrow_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_play_arrow_grey600_48.png", "res/drawable-xxxhdpi-v4/quantum_ic_play_arrow_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_play_circle_filled_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_play_circle_filled_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_refresh_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_replay_10_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_replay_30_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_replay_30_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_replay_30_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_replay_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_skip_next_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_skip_next_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_skip_next_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_skip_previous_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_skip_previous_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_skip_previous_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_stop_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_stop_grey600_48.png", "res/drawable-xxxhdpi-v4/quantum_ic_stop_white_24.png", "res/drawable-xxxhdpi-v4/quantum_ic_volume_off_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_volume_off_white_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_volume_up_grey600_36.png", "res/drawable-xxxhdpi-v4/quantum_ic_volume_up_white_36.png", "res/drawable/cast_expanded_controller_actionbar_bg_gradient_light.xml", "res/drawable/cast_expanded_controller_bg_gradient_light.xml", "res/drawable/cast_expanded_controller_seekbar_thumb.xml", "res/drawable/cast_expanded_controller_seekbar_track.xml", "res/drawable/cast_ic_expanded_controller_closed_caption.xml", "res/drawable/cast_ic_expanded_controller_forward30.xml", "res/drawable/cast_ic_expanded_controller_mute.xml", "res/drawable/cast_ic_expanded_controller_pause.xml", "res/drawable/cast_ic_expanded_controller_play.xml", "res/drawable/cast_ic_expanded_controller_rewind30.xml", "res/drawable/cast_ic_expanded_controller_skip_next.xml", "res/drawable/cast_ic_expanded_controller_skip_previous.xml", "res/drawable/cast_ic_expanded_controller_stop.xml", "res/drawable/cast_ic_mini_controller_closed_caption.xml", "res/drawable/cast_ic_mini_controller_forward30.xml", "res/drawable/cast_ic_mini_controller_mute.xml", "res/drawable/cast_ic_mini_controller_pause.xml", "res/drawable/cast_ic_mini_controller_pause_large.xml", "res/drawable/cast_ic_mini_controller_play.xml", "res/drawable/cast_ic_mini_controller_play_large.xml", "res/drawable/cast_ic_mini_controller_rewind30.xml", "res/drawable/cast_ic_mini_controller_skip_next.xml", "res/drawable/cast_ic_mini_controller_skip_prev.xml", "res/drawable/cast_ic_mini_controller_stop.xml", "res/drawable/cast_ic_mini_controller_stop_large.xml", "res/drawable/cast_ic_notification_disconnect.xml", "res/drawable/cast_ic_notification_forward.xml", "res/drawable/cast_ic_notification_forward10.xml", "res/drawable/cast_ic_notification_forward30.xml", "res/drawable/cast_ic_notification_pause.xml", "res/drawable/cast_ic_notification_play.xml", "res/drawable/cast_ic_notification_rewind.xml", "res/drawable/cast_ic_notification_rewind10.xml", "res/drawable/cast_ic_notification_rewind30.xml", "res/drawable/cast_ic_notification_skip_next.xml", "res/drawable/cast_ic_notification_skip_prev.xml", "res/drawable/cast_ic_notification_small_icon.xml", "res/drawable/cast_ic_notification_stop_live_stream.xml", "res/drawable/cast_mini_controller_gradient_light.xml", "res/drawable/cast_mini_controller_progress_drawable.xml", "res/drawable/cast_skip_ad_label_border.xml", "res/layout/cast_expanded_controller_activity.xml", "res/layout/cast_help_text.xml", "res/layout/cast_intro_overlay.xml", "res/layout/cast_mini_controller.xml", "res/layout/cast_tracks_chooser_dialog_layout.xml", "res/layout/cast_tracks_chooser_dialog_row_layout.xml", "res/values-af/values.xml", "res/values-am/values.xml", "res/values-ar/values.xml", "res/values-az/values.xml", "res/values-b+sr+Latn/values.xml", "res/values-be/values.xml", "res/values-bg/values.xml", "res/values-bn/values.xml", "res/values-bs/values.xml", "res/values-ca/values.xml", "res/values-cs/values.xml", "res/values-da/values.xml", "res/values-de/values.xml", "res/values-el/values.xml", "res/values-en-rGB/values.xml", "res/values-es-rUS/values.xml", "res/values-es/values.xml", "res/values-et/values.xml", "res/values-eu/values.xml", "res/values-fa/values.xml", "res/values-fi/values.xml", "res/values-fr-rCA/values.xml", "res/values-fr/values.xml", "res/values-gl/values.xml", "res/values-gu/values.xml", "res/values-hi/values.xml", "res/values-hr/values.xml", "res/values-hu/values.xml", "res/values-hy/values.xml", "res/values-in/values.xml", "res/values-is/values.xml", "res/values-it/values.xml", "res/values-iw/values.xml", "res/values-ja/values.xml", "res/values-ka/values.xml", "res/values-kk/values.xml", "res/values-km/values.xml", "res/values-kn/values.xml", "res/values-ko/values.xml", "res/values-ky/values.xml", "res/values-land/values.xml", "res/values-lo/values.xml", "res/values-lt/values.xml", "res/values-lv/values.xml", "res/values-mk/values.xml", "res/values-ml/values.xml", "res/values-mn/values.xml", "res/values-mr/values.xml", "res/values-ms/values.xml", "res/values-my/values.xml", "res/values-nb/values.xml", "res/values-ne/values.xml", "res/values-nl/values.xml", "res/values-pa/values.xml", "res/values-pl/values.xml", "res/values-pt-rBR/values.xml", "res/values-pt-rPT/values.xml", "res/values-ro/values.xml", "res/values-ru/values.xml", "res/values-si/values.xml", "res/values-sk/values.xml", "res/values-sl/values.xml", "res/values-sq/values.xml", "res/values-sr/values.xml", "res/values-sv/values.xml", "res/values-sw/values.xml", "res/values-ta/values.xml", "res/values-te/values.xml", "res/values-th/values.xml", "res/values-tl/values.xml", "res/values-tr/values.xml", "res/values-uk/values.xml", "res/values-ur/values.xml", "res/values-uz/values.xml", "res/values-vi/values.xml", "res/values-zh-rCN/values.xml", "res/values-zh-rHK/values.xml", "res/values-zh-rTW/values.xml", "res/values-zu/values.xml", "res/values/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_fido/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_fido/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_fido/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_fido/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_fido/README.chromium
new file mode 100644
index 0000000..427b71c
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_fido/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-fido
+Short Name: play-services-fido
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_fido/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_fido/cipd.yaml
new file mode 100644
index 0000000..2d69c7e
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_fido/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_fido
+description: play-services-fido
+data:
+- file: play-services-fido-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_fido/com_google_android_gms_play_services_fido.info b/third_party/android_deps/libs/com_google_android_gms_play_services_fido/com_google_android_gms_play_services_fido.info
new file mode 100644
index 0000000..0dfcb237
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_fido/com_google_android_gms_play_services_fido.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = false
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/README.chromium
new file mode 100644
index 0000000..89dd9f5b
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-gcm
+Short Name: play-services-gcm
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/cipd.yaml
new file mode 100644
index 0000000..f67e936
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_gcm
+description: play-services-gcm
+data:
+- file: play-services-gcm-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/com_google_android_gms_play_services_gcm.info b/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/com_google_android_gms_play_services_gcm.info
new file mode 100644
index 0000000..020cd82
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_gcm/com_google_android_gms_play_services_gcm.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = true
+has_r_text_file = false
+is_manifest_empty = false
+resources = [ "res/values-af/values.xml", "res/values-am/values.xml", "res/values-ar/values.xml", "res/values-az/values.xml", "res/values-b+sr+Latn/values.xml", "res/values-be/values.xml", "res/values-bg/values.xml", "res/values-bn/values.xml", "res/values-bs/values.xml", "res/values-ca/values.xml", "res/values-cs/values.xml", "res/values-da/values.xml", "res/values-de/values.xml", "res/values-el/values.xml", "res/values-en-rGB/values.xml", "res/values-es-rUS/values.xml", "res/values-es/values.xml", "res/values-et/values.xml", "res/values-eu/values.xml", "res/values-fa/values.xml", "res/values-fi/values.xml", "res/values-fr-rCA/values.xml", "res/values-fr/values.xml", "res/values-gl/values.xml", "res/values-gu/values.xml", "res/values-hi/values.xml", "res/values-hr/values.xml", "res/values-hu/values.xml", "res/values-hy/values.xml", "res/values-in/values.xml", "res/values-is/values.xml", "res/values-it/values.xml", "res/values-iw/values.xml", "res/values-ja/values.xml", "res/values-ka/values.xml", "res/values-kk/values.xml", "res/values-km/values.xml", "res/values-kn/values.xml", "res/values-ko/values.xml", "res/values-ky/values.xml", "res/values-lo/values.xml", "res/values-lt/values.xml", "res/values-lv/values.xml", "res/values-mk/values.xml", "res/values-ml/values.xml", "res/values-mn/values.xml", "res/values-mr/values.xml", "res/values-ms/values.xml", "res/values-my/values.xml", "res/values-nb/values.xml", "res/values-ne/values.xml", "res/values-nl/values.xml", "res/values-pa/values.xml", "res/values-pl/values.xml", "res/values-pt-rBR/values.xml", "res/values-pt-rPT/values.xml", "res/values-ro/values.xml", "res/values-ru/values.xml", "res/values-si/values.xml", "res/values-sk/values.xml", "res/values-sl/values.xml", "res/values-sq/values.xml", "res/values-sr/values.xml", "res/values-sv/values.xml", "res/values-sw/values.xml", "res/values-ta/values.xml", "res/values-te/values.xml", "res/values-th/values.xml", "res/values-tl/values.xml", "res/values-tr/values.xml", "res/values-uk/values.xml", "res/values-ur/values.xml", "res/values-uz/values.xml", "res/values-vi/values.xml", "res/values-zh-rCN/values.xml", "res/values-zh-rHK/values.xml", "res/values-zh-rTW/values.xml", "res/values-zu/values.xml", "res/values/values.xml" ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_iid/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_iid/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_iid/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_iid/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_iid/README.chromium
new file mode 100644
index 0000000..a89c9a90
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_iid/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-iid
+Short Name: play-services-iid
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_iid/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_iid/cipd.yaml
new file mode 100644
index 0000000..569a76d
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_iid/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_iid
+description: play-services-iid
+data:
+- file: play-services-iid-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_iid/com_google_android_gms_play_services_iid.info b/third_party/android_deps/libs/com_google_android_gms_play_services_iid/com_google_android_gms_play_services_iid.info
new file mode 100644
index 0000000..2307336
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_iid/com_google_android_gms_play_services_iid.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = false
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/README.chromium
new file mode 100644
index 0000000..d416187
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-instantapps
+Short Name: play-services-instantapps
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/cipd.yaml
new file mode 100644
index 0000000..acc8621
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps
+description: play-services-instantapps
+data:
+- file: play-services-instantapps-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/com_google_android_gms_play_services_instantapps.info b/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/com_google_android_gms_play_services_instantapps.info
new file mode 100644
index 0000000..a2ebd4a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_instantapps/com_google_android_gms_play_services_instantapps.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_location/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_location/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_location/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_location/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_location/README.chromium
new file mode 100644
index 0000000..ec6410a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_location/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-location
+Short Name: play-services-location
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_location/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_location/cipd.yaml
new file mode 100644
index 0000000..520947c0
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_location/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_location
+description: play-services-location
+data:
+- file: play-services-location-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_location/com_google_android_gms_play_services_location.info b/third_party/android_deps/libs/com_google_android_gms_play_services_location/com_google_android_gms_play_services_location.info
new file mode 100644
index 0000000..a2ebd4a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_location/com_google_android_gms_play_services_location.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/README.chromium
new file mode 100644
index 0000000..4d0fdc51
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-tasks
+Short Name: play-services-tasks
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/cipd.yaml
new file mode 100644
index 0000000..760593d
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_tasks
+description: play-services-tasks
+data:
+- file: play-services-tasks-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/com_google_android_gms_play_services_tasks.info b/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/com_google_android_gms_play_services_tasks.info
new file mode 100644
index 0000000..a2ebd4a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_tasks/com_google_android_gms_play_services_tasks.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_vision/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_vision/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_vision/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_vision/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_vision/README.chromium
new file mode 100644
index 0000000..3394cc5
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_vision/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-vision
+Short Name: play-services-vision
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_vision/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_vision/cipd.yaml
new file mode 100644
index 0000000..b6b1d18
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_vision/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_vision
+description: play-services-vision
+data:
+- file: play-services-vision-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info b/third_party/android_deps/libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info
new file mode 100644
index 0000000..a2ebd4a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/OWNERS b/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/OWNERS
new file mode 100644
index 0000000..7b571d97
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/OWNERS
@@ -0,0 +1 @@
+file://third_party/android_deps/OWNERS
\ No newline at end of file
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/README.chromium b/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/README.chromium
new file mode 100644
index 0000000..ba47b5b
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/README.chromium
@@ -0,0 +1,13 @@
+Name: play-services-vision-common
+Short Name: play-services-vision-common
+URL: https://developers.google.com/android/guides/setup
+Version: 12.0.1
+License: Android Software Development Kit License
+License File: /third_party/android_deps/Android_SDK_License-December_9_2016.txt
+Security Critical: yes
+
+Description:
+
+
+Local Modifications:
+No modifications.
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/cipd.yaml b/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/cipd.yaml
new file mode 100644
index 0000000..e4db337
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/cipd.yaml
@@ -0,0 +1,10 @@
+# Copyright 2018 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.
+
+# To create CIPD package run the following command.
+# cipd create --pkg-def cipd.yaml -tag version:12.0.1-cr0
+package: chromium/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common
+description: play-services-vision-common
+data:
+- file: play-services-vision-common-12.0.1.aar
diff --git a/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/com_google_android_gms_play_services_vision_common.info b/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/com_google_android_gms_play_services_vision_common.info
new file mode 100644
index 0000000..a2ebd4a
--- /dev/null
+++ b/third_party/android_deps/libs/com_google_android_gms_play_services_vision_common/com_google_android_gms_play_services_vision_common.info
@@ -0,0 +1,13 @@
+# Generated by //build/android/gyp/aar.py
+# To regenerate, use "update_android_aar_prebuilts = true" and run "gn gen".
+
+aidl = [  ]
+assets = [  ]
+has_classes_jar = true
+has_native_libraries = false
+has_proguard_flags = false
+has_r_text_file = false
+is_manifest_empty = true
+resources = [  ]
+subjar_tuples = [  ]
+subjars = [  ]
diff --git a/third_party/blink/public/platform/web_layer_tree_view.h b/third_party/blink/public/platform/web_layer_tree_view.h
index a4ed392a..46838bbf2 100644
--- a/third_party/blink/public/platform/web_layer_tree_view.h
+++ b/third_party/blink/public/platform/web_layer_tree_view.h
@@ -145,9 +145,6 @@
   // dirty.
   virtual void SetNeedsBeginFrame() {}
 
-  // Relays the end of a fling animation.
-  virtual void DidStopFlinging() {}
-
   // Run layout and paint of all pending document changes asynchronously.
   virtual void LayoutAndPaintAsync(base::OnceClosure callback) {}
 
diff --git a/third_party/blink/public/web/web_remote_frame_client.h b/third_party/blink/public/web/web_remote_frame_client.h
index afefb61..cd2314c 100644
--- a/third_party/blink/public/web/web_remote_frame_client.h
+++ b/third_party/blink/public/web/web_remote_frame_client.h
@@ -42,7 +42,6 @@
   virtual void Navigate(const WebURLRequest& request,
                         bool should_replace_current_entry,
                         mojo::ScopedMessagePipeHandle blob_url_token) {}
-  virtual void Reload(WebFrameLoadType, ClientRedirectPolicy) {}
 
   virtual void FrameRectsChanged(const WebRect& local_frame_rect,
                                  const WebRect& screen_space_rect) {}
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index f324dab..63a5bdc8 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -4155,7 +4155,7 @@
   // For srcdoc documents without their own policy, walk up the frame
   // tree to find the document that is either not a srcdoc or doesn't
   // have its own policy. This algorithm is defined in
-  // https://html.spec.whatwg.org/multipage/browsers.html#set-up-a-browsing-context-environment-settings-object.
+  // https://html.spec.whatwg.org/multipage/window-object.html#set-up-a-window-environment-settings-object.
   if (!frame_ || policy != kReferrerPolicyDefault || !IsSrcdocDocument()) {
     return policy;
   }
diff --git a/third_party/blink/renderer/core/frame/frame.h b/third_party/blink/renderer/core/frame/frame.h
index 9dd4cf194..566e985 100644
--- a/third_party/blink/renderer/core/frame/frame.h
+++ b/third_party/blink/renderer/core/frame/frame.h
@@ -39,7 +39,6 @@
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/dom/user_gesture_indicator.h"
 #include "third_party/blink/renderer/core/frame/frame_lifecycle.h"
-#include "third_party/blink/renderer/core/frame/frame_types.h"
 #include "third_party/blink/renderer/core/frame/frame_view.h"
 #include "third_party/blink/renderer/core/loader/frame_loader_types.h"
 #include "third_party/blink/renderer/core/page/frame_tree.h"
@@ -102,7 +101,6 @@
                                   UserGestureStatus) = 0;
   // Synchronously begins a navigation.
   virtual void Navigate(const FrameLoadRequest&) = 0;
-  virtual void Reload(WebFrameLoadType, ClientRedirectPolicy) = 0;
 
   // The base Detach() method must be the last line of overrides of Detach().
   virtual void Detach(FrameDetachType);
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index 0321eaf0..651aef7 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -323,23 +323,6 @@
   loader_.StartNavigation(request);
 }
 
-void LocalFrame::Reload(WebFrameLoadType load_type,
-                        ClientRedirectPolicy client_redirect_policy) {
-  DCHECK(IsReloadLoadType(load_type));
-  if (client_redirect_policy == ClientRedirectPolicy::kNotClientRedirect) {
-    if (!loader_.GetDocumentLoader()->GetHistoryItem())
-      return;
-    FrameLoadRequest request = FrameLoadRequest(
-        nullptr,
-        loader_.ResourceRequestForReload(load_type, client_redirect_policy));
-    request.SetClientRedirect(client_redirect_policy);
-    loader_.StartNavigation(request, load_type);
-  } else {
-    DCHECK_EQ(WebFrameLoadType::kReload, load_type);
-    navigation_scheduler_->ScheduleReload();
-  }
-}
-
 void LocalFrame::Detach(FrameDetachType type) {
   // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   // BEGIN RE-ENTRANCY SAFE BLOCK
@@ -506,6 +489,23 @@
   return frame;
 }
 
+void LocalFrame::Reload(WebFrameLoadType load_type,
+                        ClientRedirectPolicy client_redirect_policy) {
+  DCHECK(IsReloadLoadType(load_type));
+  if (client_redirect_policy == ClientRedirectPolicy::kNotClientRedirect) {
+    if (!loader_.GetDocumentLoader()->GetHistoryItem())
+      return;
+    FrameLoadRequest request = FrameLoadRequest(
+        nullptr,
+        loader_.ResourceRequestForReload(load_type, client_redirect_policy));
+    request.SetClientRedirect(client_redirect_policy);
+    loader_.StartNavigation(request, load_type);
+  } else {
+    DCHECK_EQ(WebFrameLoadType::kReload, load_type);
+    navigation_scheduler_->ScheduleReload();
+  }
+}
+
 LocalWindowProxy* LocalFrame::WindowProxy(DOMWrapperWorld& world) {
   return ToLocalWindowProxy(Frame::GetWindowProxy(world));
 }
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
index 0e2bb30..45a580b 100644
--- a/third_party/blink/renderer/core/frame/local_frame.h
+++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -42,6 +42,7 @@
 #include "third_party/blink/renderer/core/dom/weak_identifier_map.h"
 #include "third_party/blink/renderer/core/editing/forward.h"
 #include "third_party/blink/renderer/core/frame/frame.h"
+#include "third_party/blink/renderer/core/frame/frame_types.h"
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
 #include "third_party/blink/renderer/core/loader/frame_loader.h"
 #include "third_party/blink/renderer/platform/graphics/touch_action.h"
@@ -126,7 +127,6 @@
                           bool replace_current_item,
                           UserGestureStatus) override;
   void Navigate(const FrameLoadRequest&) override;
-  void Reload(WebFrameLoadType, ClientRedirectPolicy) override;
   void Detach(FrameDetachType) override;
   bool ShouldClose() override;
   SecurityContext* GetSecurityContext() const override;
@@ -151,6 +151,7 @@
   Frame* FindFrameForNavigation(const AtomicString& name,
                                 LocalFrame& active_frame,
                                 const KURL& destination_url);
+  void Reload(WebFrameLoadType, ClientRedirectPolicy);
 
   // Note: these two functions are not virtual but intentionally shadow the
   // corresponding method in the Frame base class to return the
diff --git a/third_party/blink/renderer/core/frame/location.cc b/third_party/blink/renderer/core/frame/location.cc
index 3e6d778..08b34cd 100644
--- a/third_party/blink/renderer/core/frame/location.cc
+++ b/third_party/blink/renderer/core/frame/location.cc
@@ -248,8 +248,12 @@
     return;
   if (GetDocument()->Url().ProtocolIsJavaScript())
     return;
-  dom_window_->GetFrame()->Reload(WebFrameLoadType::kReload,
-                                  ClientRedirectPolicy::kClientRedirect);
+  // reload() is not cross-origin accessible, so |dom_window_| will always be
+  // local.
+  ToLocalDOMWindow(dom_window_)
+      ->GetFrame()
+      ->Reload(WebFrameLoadType::kReload,
+               ClientRedirectPolicy::kClientRedirect);
 }
 
 void Location::SetLocation(const String& url,
diff --git a/third_party/blink/renderer/core/frame/remote_frame.cc b/third_party/blink/renderer/core/frame/remote_frame.cc
index 2e002174..81daa62 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.cc
+++ b/third_party/blink/renderer/core/frame/remote_frame.cc
@@ -84,11 +84,6 @@
                      frame_request.GetBlobURLToken());
 }
 
-void RemoteFrame::Reload(WebFrameLoadType frame_load_type,
-                         ClientRedirectPolicy client_redirect_policy) {
-  Client()->Reload(frame_load_type, client_redirect_policy);
-}
-
 void RemoteFrame::Detach(FrameDetachType type) {
   lifecycle_.AdvanceTo(FrameLifecycle::kDetaching);
 
diff --git a/third_party/blink/renderer/core/frame/remote_frame.h b/third_party/blink/renderer/core/frame/remote_frame.h
index 76238a41..b6160560 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.h
+++ b/third_party/blink/renderer/core/frame/remote_frame.h
@@ -34,7 +34,6 @@
                           bool replace_current_item,
                           UserGestureStatus) override;
   void Navigate(const FrameLoadRequest& passed_request) override;
-  void Reload(WebFrameLoadType, ClientRedirectPolicy) override;
   void Detach(FrameDetachType) override;
   RemoteSecurityContext* GetSecurityContext() const override;
   bool PrepareForCommit() override;
diff --git a/third_party/blink/renderer/core/frame/remote_frame_client.h b/third_party/blink/renderer/core/frame/remote_frame_client.h
index f578bbf..f926b04a 100644
--- a/third_party/blink/renderer/core/frame/remote_frame_client.h
+++ b/third_party/blink/renderer/core/frame/remote_frame_client.h
@@ -31,7 +31,6 @@
   virtual void Navigate(const ResourceRequest&,
                         bool should_replace_current_entry,
                         mojom::blink::BlobURLTokenPtr) = 0;
-  virtual void Reload(WebFrameLoadType, ClientRedirectPolicy) = 0;
   unsigned BackForwardLength() override = 0;
 
   // Notifies the remote frame to check whether it is done loading, after one
diff --git a/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc b/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc
index 25d988f..8150f14 100644
--- a/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc
@@ -119,15 +119,6 @@
   }
 }
 
-void RemoteFrameClientImpl::Reload(
-    WebFrameLoadType load_type,
-    ClientRedirectPolicy client_redirect_policy) {
-  DCHECK(IsReloadLoadType(load_type));
-  if (web_frame_->Client()) {
-    web_frame_->Client()->Reload(load_type, client_redirect_policy);
-  }
-}
-
 unsigned RemoteFrameClientImpl::BackForwardLength() {
   // TODO(creis,japhet): This method should return the real value for the
   // session history length. For now, return static value for the initial
diff --git a/third_party/blink/renderer/core/frame/remote_frame_client_impl.h b/third_party/blink/renderer/core/frame/remote_frame_client_impl.h
index 0e987170..bea0761 100644
--- a/third_party/blink/renderer/core/frame/remote_frame_client_impl.h
+++ b/third_party/blink/renderer/core/frame/remote_frame_client_impl.h
@@ -36,7 +36,6 @@
   void Navigate(const ResourceRequest&,
                 bool should_replace_current_entry,
                 mojom::blink::BlobURLTokenPtr) override;
-  void Reload(WebFrameLoadType, ClientRedirectPolicy) override;
   unsigned BackForwardLength() override;
   void CheckCompleted() override;
   void ForwardPostMessage(MessageEvent*,
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
index 53890db..9c3c1abc 100644
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
@@ -414,6 +414,8 @@
       ResourceProvider()->TryEnableSingleBuffering();
       // Push a frame
       base::TimeTicks start_time = WTF::CurrentTimeTicks();
+      if (Is3d())
+        context_->PaintRenderingResultsToCanvas(kBackBuffer);
       scoped_refptr<CanvasResource> canvas_resource =
           ResourceProvider()->ProduceFrame();
       FloatRect src_rect(0, 0, Size().Width(), Size().Height());
diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third_party/blink/renderer/core/html/html_script_element.cc
index 339453b..d469962 100644
--- a/third_party/blink/renderer/core/html/html_script_element.cc
+++ b/third_party/blink/renderer/core/html/html_script_element.cc
@@ -160,6 +160,10 @@
   return getAttribute(integrityAttr);
 }
 
+String HTMLScriptElement::ReferrerPolicyAttributeValue() const {
+  return getAttribute(referrerpolicyAttr);
+}
+
 String HTMLScriptElement::TextFromChildren() {
   return Element::TextFromChildren();
 }
diff --git a/third_party/blink/renderer/core/html/html_script_element.h b/third_party/blink/renderer/core/html/html_script_element.h
index b30157a..2350ed92 100644
--- a/third_party/blink/renderer/core/html/html_script_element.h
+++ b/third_party/blink/renderer/core/html/html_script_element.h
@@ -79,6 +79,7 @@
   String EventAttributeValue() const override;
   String CrossOriginAttributeValue() const override;
   String IntegrityAttributeValue() const override;
+  String ReferrerPolicyAttributeValue() const override;
   String TextFromChildren() override;
   bool AsyncAttributeValue() const override;
   bool DeferAttributeValue() const override;
diff --git a/third_party/blink/renderer/core/html/html_script_element.idl b/third_party/blink/renderer/core/html/html_script_element.idl
index 36c8def..7c0464c3 100644
--- a/third_party/blink/renderer/core/html/html_script_element.idl
+++ b/third_party/blink/renderer/core/html/html_script_element.idl
@@ -28,6 +28,7 @@
     [CEReactions, Reflect] attribute boolean defer;
     [CEReactions, Reflect, ReflectOnly=("anonymous","use-credentials"), ReflectEmpty="anonymous", ReflectInvalid="anonymous"] attribute DOMString? crossOrigin;
     [CEReactions] attribute DOMString text;
+    [CEReactions, Reflect, ReflectOnly=("", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url"), ReflectEmpty="", ReflectInvalid=""] attribute DOMString? referrerPolicy;
 
     // obsolete members
     // https://html.spec.whatwg.org/#HTMLScriptElement-partial
diff --git a/third_party/blink/renderer/core/html/parser/html_preload_scanner.cc b/third_party/blink/renderer/core/html/parser/html_preload_scanner.cc
index 3feabddb..3bc30470 100644
--- a/third_party/blink/renderer/core/html/parser/html_preload_scanner.cc
+++ b/third_party/blink/renderer/core/html/parser/html_preload_scanner.cc
@@ -308,6 +308,11 @@
       language_attribute_value_ = attribute_value;
     } else if (Match(attribute_name, nomoduleAttr)) {
       nomodule_attribute_value_ = true;
+    } else if (!referrer_policy_set_ &&
+               Match(attribute_name, referrerpolicyAttr) &&
+               !attribute_value.IsNull()) {
+      SetReferrerPolicy(attribute_value,
+                        kDoNotSupportReferrerPolicyLegacyKeywords);
     }
   }
 
diff --git a/third_party/blink/renderer/core/loader/empty_clients.h b/third_party/blink/renderer/core/loader/empty_clients.h
index dbb68e5..f638882 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -414,7 +414,6 @@
   void Navigate(const ResourceRequest&,
                 bool should_replace_current_entry,
                 mojom::blink::BlobURLTokenPtr) override {}
-  void Reload(WebFrameLoadType, ClientRedirectPolicy) override {}
   unsigned BackForwardLength() override { return 0; }
   void CheckCompleted() override {}
   void ForwardPostMessage(MessageEvent*,
diff --git a/third_party/blink/renderer/core/loader/link_loader.cc b/third_party/blink/renderer/core/loader/link_loader.cc
index 4537886..395b5439 100644
--- a/third_party/blink/renderer/core/loader/link_loader.cc
+++ b/third_party/blink/renderer/core/loader/link_loader.cc
@@ -438,7 +438,7 @@
                                          link_fetch_params, nullptr);
 }
 
-// https://html.spec.whatwg.org/#link-type-modulepreload
+// https://html.spec.whatwg.org/multipage/links.html#link-type-modulepreload
 static void ModulePreloadIfNeeded(const LinkLoadParameters& params,
                                   Document& document,
                                   ViewportDescription* viewport_description,
diff --git a/third_party/blink/renderer/core/loader/link_loader_test.cc b/third_party/blink/renderer/core/loader/link_loader_test.cc
index a0d6e29..9d6369e4 100644
--- a/third_party/blink/renderer/core/loader/link_loader_test.cc
+++ b/third_party/blink/renderer/core/loader/link_loader_test.cc
@@ -481,6 +481,7 @@
     EXPECT_EQ(params_->expected_credentials_mode,
               request.Options().CredentialsMode());
     EXPECT_EQ(Referrer::NoReferrer(), request.GetReferrer().referrer);
+    EXPECT_EQ(params_->referrer_policy, request.GetReferrer().referrer_policy);
     EXPECT_EQ(params_->integrity,
               request.Options().GetIntegrityAttributeValue());
     EXPECT_EQ(ModuleScriptCustomFetchType::kNone, custom_fetch_type);
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc b/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc
index 5b65489..b12dd2a 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/module_script_loader.cc
@@ -92,7 +92,7 @@
                         custom_fetch_type);
 }
 
-// https://html.spec.whatwg.org/#fetch-a-single-module-script
+// https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-single-module-script
 void ModuleScriptLoader::FetchInternal(
     const ModuleScriptFetchRequest& module_request,
     FetchClientSettingsObjectSnapshot* fetch_client_settings_object,
@@ -122,7 +122,7 @@
   options.parser_disposition = options_.ParserState();
 
   // As initiator for module script fetch is not specified in HTML spec,
-  // we specity "" as initiator per:
+  // we specify "" as initiator per:
   // https://fetch.spec.whatwg.org/#concept-request-initiator
   options.initiator_info.name = g_empty_atom;
 
@@ -145,6 +145,11 @@
   // cryptographic nonce, ..." [spec text]
   fetch_params.SetContentSecurityPolicyNonce(options_.Nonce());
 
+  // [SMSR] "... its referrer policy to options's referrer policy.
+  // TODO(domfarolino): Implement this so we can set ResourceRequest's referrer
+  // string and referrer policy separately, and have the final referrer string
+  // generated in BaseFetchContext. See https://crbug.com/863769.
+
   // Step 5. "... mode is "cors", ..."
   // [SMSR] "... and its credentials mode to options's credentials mode."
   // [spec text]
@@ -153,6 +158,8 @@
       options_.CredentialsMode());
 
   // Step 5. "... referrer is referrer, ..." [spec text]
+  // TODO(domfarolino): Use ResourceRequest::SetReferrerString here instead
+  // of SetHTTPReferrer. See https://crbug.com/863769.
   fetch_params.MutableResourceRequest().SetHTTPReferrer(
       module_request.GetReferrer());
 
@@ -160,7 +167,7 @@
   // -> set by ResourceFetcher
 
   // Note: The fetch request's "origin" isn't specified in
-  // https://html.spec.whatwg.org/#fetch-a-single-module-script
+  // https://html.spec.whatwg.org/multipage/webappapis.html#fetch-a-single-module-script
   // Thus, the "origin" is "client" per
   // https://fetch.spec.whatwg.org/#concept-request-origin
 
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc
index 67a0ecf..0579ebc 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/module_tree_linker.cc
@@ -189,6 +189,14 @@
 
   // Step 2. Perform the internal module script graph fetching procedure given
   // ... with the top-level module fetch flag set. ...
+  // TODO(domfarolino): We should refrain from storing referrer as a generated
+  // blink::Referrer for a couple reasons (https://crbug.com/863769):
+  // 1.) It is awkward that now both ModuleScriptFetchRequest::Referrer and
+  // ScriptFetchOptions have a referrer_policy member from this point forward.
+  // 2.) We can instead just set the referrer string here to
+  // Referrer::ClientReferrerString, communicate this to the ResourceRequest in
+  // ModuleScriptLoader::FetchInternal, and generate the final referrer in
+  // BaseFetchContext::AddAdditionalRequestHeaders.
   ModuleScriptFetchRequest request(
       url, destination_, options,
       SecurityPolicy::GenerateReferrer(
@@ -386,6 +394,10 @@
     // procedure given url, fetch client settings object, destination, options,
     // module script's settings object, visited set, module script's base URL,
     // and with the top-level module fetch flag unset. ...
+    // TODO(domfarolino): We should set ModuleScriptFetchRequest's referrer
+    // string without generating a full blink::Referrer. The final generated
+    // referrer string should be generated down in BaseFetchContext.
+    // See https://crbug.com/863769.
     ModuleScriptFetchRequest request(
         urls[i], destination_, options,
         SecurityPolicy::GenerateReferrer(options.GetReferrerPolicy(), urls[i],
diff --git a/third_party/blink/renderer/core/script/mock_script_element_base.h b/third_party/blink/renderer/core/script/mock_script_element_base.h
index 77ccd8d..27a94b14 100644
--- a/third_party/blink/renderer/core/script/mock_script_element_base.h
+++ b/third_party/blink/renderer/core/script/mock_script_element_base.h
@@ -32,6 +32,7 @@
   MOCK_CONST_METHOD0(EventAttributeValue, String());
   MOCK_CONST_METHOD0(ForAttributeValue, String());
   MOCK_CONST_METHOD0(IntegrityAttributeValue, String());
+  MOCK_CONST_METHOD0(ReferrerPolicyAttributeValue, String());
   MOCK_CONST_METHOD0(LanguageAttributeValue, String());
   MOCK_CONST_METHOD0(NomoduleAttributeValue, bool());
   MOCK_CONST_METHOD0(SourceAttributeValue, String());
diff --git a/third_party/blink/renderer/core/script/script_element_base.h b/third_party/blink/renderer/core/script/script_element_base.h
index 076c45a..7f6e6fa2 100644
--- a/third_party/blink/renderer/core/script/script_element_base.h
+++ b/third_party/blink/renderer/core/script/script_element_base.h
@@ -50,6 +50,7 @@
   virtual bool NomoduleAttributeValue() const = 0;
   virtual String SourceAttributeValue() const = 0;
   virtual String TypeAttributeValue() const = 0;
+  virtual String ReferrerPolicyAttributeValue() const = 0;
 
   virtual String TextFromChildren() = 0;
   virtual bool HasSourceAttribute() const = 0;
diff --git a/third_party/blink/renderer/core/script/script_loader.cc b/third_party/blink/renderer/core/script/script_loader.cc
index a413f0f..90b13713 100644
--- a/third_party/blink/renderer/core/script/script_loader.cc
+++ b/third_party/blink/renderer/core/script/script_loader.cc
@@ -55,6 +55,7 @@
 #include "third_party/blink/renderer/platform/loader/subresource_integrity.h"
 #include "third_party/blink/renderer/platform/network/mime/mime_type_registry.h"
 #include "third_party/blink/renderer/platform/weborigin/security_origin.h"
+#include "third_party/blink/renderer/platform/weborigin/security_policy.h"
 #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
 #include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
@@ -363,10 +364,15 @@
 
   // <spec step="20">Let referrer policy be the current state of the element's
   // referrerpolicy content attribute.</spec>
-  // TODO(domfarolino): Implement referrerpolicy attribute on script elements.
-  // As a stopgap, we set |referrer_policy| to document's referrer policy to
-  // keep the backward compatibility (https://crbug.com/841673).
+  // TODO(domfarolino): We should be able to set this to kReferrerPolicyDefault
+  // and have later logic use the right referrer policy.
+  String referrerpolicy_attr = element_->ReferrerPolicyAttributeValue();
   ReferrerPolicy referrer_policy = element_document.GetReferrerPolicy();
+  if (!referrerpolicy_attr.IsEmpty()) {
+    SecurityPolicy::ReferrerPolicyFromString(
+        referrerpolicy_attr, kDoNotSupportReferrerPolicyLegacyKeywords,
+        &referrer_policy);
+  }
 
   // <spec step="21">Let parser metadata be "parser-inserted" if the script
   // element has been flagged as "parser-inserted", and "not-parser-inserted"
@@ -395,7 +401,7 @@
   // <spec step="22">Let options be a script fetch options whose cryptographic
   // nonce is cryptographic nonce, integrity metadata is integrity metadata,
   // parser metadata is parser metadata, credentials mode is module script
-  // credentials mode, and referrer policy is referrer_policy.</spec>
+  // credentials mode, and referrer policy is referrer policy.</spec>
   ScriptFetchOptions options(nonce, integrity_metadata, integrity_attr,
                              parser_state, credentials_mode, referrer_policy);
 
diff --git a/third_party/blink/renderer/core/svg/svg_script_element.h b/third_party/blink/renderer/core/svg/svg_script_element.h
index 350c085..c6dae0e 100644
--- a/third_party/blink/renderer/core/svg/svg_script_element.h
+++ b/third_party/blink/renderer/core/svg/svg_script_element.h
@@ -75,6 +75,7 @@
   String EventAttributeValue() const override { return String(); }
   String ForAttributeValue() const override { return String(); }
   String IntegrityAttributeValue() const override { return String(); }
+  String ReferrerPolicyAttributeValue() const override { return String(); }
   String LanguageAttributeValue() const override { return String(); }
   bool NomoduleAttributeValue() const override { return false; }
   String SourceAttributeValue() const override;
diff --git a/third_party/blink/renderer/modules/modules_idl_files.gni b/third_party/blink/renderer/modules/modules_idl_files.gni
index 6ff80c5..b4ad9a0 100644
--- a/third_party/blink/renderer/modules/modules_idl_files.gni
+++ b/third_party/blink/renderer/modules/modules_idl_files.gni
@@ -384,6 +384,7 @@
           "webgl/webgl_draw_buffers.idl",
           "webgl/webgl_framebuffer.idl",
           "webgl/webgl_lose_context.idl",
+          "webgl/webgl_multiview.idl",
           "webgl/webgl_program.idl",
           "webgl/webgl_query.idl",
           "webgl/webgl_renderbuffer.idl",
diff --git a/third_party/blink/renderer/modules/webgl/BUILD.gn b/third_party/blink/renderer/modules/webgl/BUILD.gn
index b4fa673..b8b35ff 100644
--- a/third_party/blink/renderer/modules/webgl/BUILD.gn
+++ b/third_party/blink/renderer/modules/webgl/BUILD.gn
@@ -87,6 +87,8 @@
     "webgl_framebuffer.h",
     "webgl_lose_context.cc",
     "webgl_lose_context.h",
+    "webgl_multiview.cc",
+    "webgl_multiview.h",
     "webgl_object.cc",
     "webgl_object.h",
     "webgl_program.cc",
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
index 274e3c8..acb7f46 100644
--- a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.cc
@@ -29,6 +29,7 @@
 #include "third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_debug_shaders.h"
 #include "third_party/blink/renderer/modules/webgl/webgl_lose_context.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_multiview.h"
 #include "third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h"
 
 namespace blink {
@@ -133,6 +134,7 @@
   RegisterExtension<WebGLDebugRendererInfo>(webgl_debug_renderer_info_);
   RegisterExtension<WebGLDebugShaders>(webgl_debug_shaders_);
   RegisterExtension<WebGLLoseContext>(webgl_lose_context_);
+  RegisterExtension<WebGLMultiview>(webgl_multiview_, kDraftExtension);
 }
 
 void WebGL2RenderingContext::Trace(blink::Visitor* visitor) {
@@ -149,6 +151,7 @@
   visitor->Trace(webgl_debug_renderer_info_);
   visitor->Trace(webgl_debug_shaders_);
   visitor->Trace(webgl_lose_context_);
+  visitor->Trace(webgl_multiview_);
   WebGL2RenderingContextBase::Trace(visitor);
 }
 
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
index db77f15..1db2ace 100644
--- a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
+++ b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context.h
@@ -17,6 +17,7 @@
 class OESTextureFloatLinear;
 class WebGLDebugRendererInfo;
 class WebGLLoseContext;
+class WebGLMultiview;
 
 class WebGL2RenderingContext : public WebGL2RenderingContextBase {
   DEFINE_WRAPPERTYPEINFO();
@@ -69,6 +70,7 @@
   Member<WebGLDebugRendererInfo> webgl_debug_renderer_info_;
   Member<WebGLDebugShaders> webgl_debug_shaders_;
   Member<WebGLLoseContext> webgl_lose_context_;
+  Member<WebGLMultiview> webgl_multiview_;
 };
 
 DEFINE_TYPE_CASTS(WebGL2RenderingContext,
diff --git a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.cc
index 2f4376a..4bddb688 100644
--- a/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.cc
@@ -453,7 +453,7 @@
     return;
   }
   framebuffer_binding->SetAttachmentForBoundFramebuffer(
-      target, attachment, textarget, texture, level, layer);
+      target, attachment, textarget, texture, level, layer, 0);
   ApplyStencilTest();
 }
 
@@ -5609,6 +5609,20 @@
         return WebGLAny(script_state, GL_UNSIGNED_NORMALIZED);
       case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:
         return WebGLAny(script_state, GL_LINEAR);
+      case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR:
+        if (ExtensionEnabled(kWebGLMultiviewName))
+          return WebGLAny(script_state, 0);
+        SynthesizeGLError(
+            GL_INVALID_ENUM, kFunctionName,
+            "invalid parameter name, WEBGL_multiview not enabled");
+        return ScriptValue::CreateNull(script_state);
+      case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR:
+        if (ExtensionEnabled(kWebGLMultiviewName))
+          return WebGLAny(script_state, 0);
+        SynthesizeGLError(
+            GL_INVALID_ENUM, kFunctionName,
+            "invalid parameter name, WEBGL_multiview not enabled");
+        return ScriptValue::CreateNull(script_state);
       default:
         SynthesizeGLError(GL_INVALID_ENUM, kFunctionName,
                           "invalid parameter name");
@@ -5685,6 +5699,19 @@
                                                        pname, &value);
       return WebGLAny(script_state, static_cast<unsigned>(value));
     }
+    case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR:
+    case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR: {
+      if (!ExtensionEnabled(kWebGLMultiviewName)) {
+        SynthesizeGLError(
+            GL_INVALID_ENUM, kFunctionName,
+            "invalid parameter name, WEBGL_multiview not enabled");
+        return ScriptValue::CreateNull(script_state);
+      }
+      GLint value = 0;
+      ContextGL()->GetFramebufferAttachmentParameteriv(target, attachment,
+                                                       pname, &value);
+      return WebGLAny(script_state, static_cast<unsigned>(value));
+    }
     default:
       break;
   }
diff --git a/third_party/blink/renderer/modules/webgl/webgl_extension_name.h b/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
index 9e2181da..f3e54403 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
+++ b/third_party/blink/renderer/modules/webgl/webgl_extension_name.h
@@ -39,6 +39,7 @@
   kWebGLDrawBuffersName,
   kWebGLGetBufferSubDataAsyncName,
   kWebGLLoseContextName,
+  kWebGLMultiviewName,
   kWebGLExtensionNameCount,  // Must be the last entry
 };
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/webgl/webgl_framebuffer.cc b/third_party/blink/renderer/modules/webgl/webgl_framebuffer.cc
index 1d9b966e..7d03d403 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_framebuffer.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_framebuffer.cc
@@ -227,7 +227,8 @@
                                                         GLenum tex_target,
                                                         WebGLTexture* texture,
                                                         GLint level,
-                                                        GLint layer) {
+                                                        GLint layer,
+                                                        GLsizei num_views) {
   DCHECK(object_);
   DCHECK(IsBound(target));
   if (Context()->IsWebGL2OrHigher()) {
@@ -247,17 +248,25 @@
       case 0:
       case GL_TEXTURE_3D:
       case GL_TEXTURE_2D_ARRAY:
-        Context()->ContextGL()->FramebufferTextureLayer(
-            target, attachment, texture_id, level, layer);
+        if (num_views > 0) {
+          DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D_ARRAY), tex_target);
+          Context()->ContextGL()->FramebufferTextureMultiviewLayeredANGLE(
+              target, attachment, texture_id, level, layer, num_views);
+        } else {
+          Context()->ContextGL()->FramebufferTextureLayer(
+              target, attachment, texture_id, level, layer);
+        }
         break;
       default:
         DCHECK_EQ(layer, 0);
+        DCHECK_EQ(num_views, 0);
         Context()->ContextGL()->FramebufferTexture2D(
             target, attachment, tex_target, texture_id, level);
         break;
     }
   } else {
     DCHECK_EQ(layer, 0);
+    DCHECK_EQ(num_views, 0);
     SetAttachmentInternal(target, attachment, tex_target, texture, level,
                           layer);
     switch (attachment) {
diff --git a/third_party/blink/renderer/modules/webgl/webgl_framebuffer.h b/third_party/blink/renderer/modules/webgl/webgl_framebuffer.h
index ee755029..e1b58213 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_framebuffer.h
+++ b/third_party/blink/renderer/modules/webgl/webgl_framebuffer.h
@@ -76,12 +76,15 @@
 
   GLuint Object() const { return object_; }
 
+  // For a non-multiview attachment, set the num_views parameter to 0. For a
+  // multiview attachment, set the layer to the base view index.
   void SetAttachmentForBoundFramebuffer(GLenum target,
                                         GLenum attachment,
                                         GLenum tex_target,
                                         WebGLTexture*,
                                         GLint level,
-                                        GLint layer);
+                                        GLint layer,
+                                        GLsizei num_views);
   void SetAttachmentForBoundFramebuffer(GLenum target,
                                         GLenum attachment,
                                         WebGLRenderbuffer*);
diff --git a/third_party/blink/renderer/modules/webgl/webgl_multiview.cc b/third_party/blink/renderer/modules/webgl/webgl_multiview.cc
new file mode 100644
index 0000000..06fe14a
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_multiview.cc
@@ -0,0 +1,106 @@
+// Copyright 2018 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.
+
+#include "third_party/blink/renderer/modules/webgl/webgl_multiview.h"
+
+#include "third_party/blink/renderer/modules/webgl/webgl2_rendering_context_base.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_framebuffer.h"
+#include "third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h"
+
+namespace blink {
+
+WebGLMultiview::WebGLMultiview(WebGLRenderingContextBase* context)
+    : WebGLExtension(context) {
+  context->ExtensionsUtil()->EnsureExtensionEnabled("GL_ANGLE_multiview");
+  context->ContextGL()->GetIntegerv(GL_MAX_VIEWS_OVR, &max_views_ovr_);
+}
+
+WebGLExtensionName WebGLMultiview::GetName() const {
+  return kWebGLMultiviewName;
+}
+
+WebGLMultiview* WebGLMultiview::Create(WebGLRenderingContextBase* context) {
+  return new WebGLMultiview(context);
+}
+
+void WebGLMultiview::framebufferTextureMultiviewWEBGL(GLenum target,
+                                                      GLenum attachment,
+                                                      WebGLTexture* texture,
+                                                      GLint level,
+                                                      GLint base_view_index,
+                                                      GLsizei num_views) {
+  WebGLExtensionScopedContext scoped(this);
+  if (scoped.IsLost())
+    return;
+  if (texture &&
+      !texture->Validate(scoped.Context()->ContextGroup(), scoped.Context())) {
+    scoped.Context()->SynthesizeGLError(
+        GL_INVALID_OPERATION, "framebufferTextureMultiviewWEBGL",
+        "texture does not belong to this context");
+    return;
+  }
+  GLenum textarget = texture ? texture->GetTarget() : 0;
+  if (texture) {
+    if (textarget != GL_TEXTURE_2D_ARRAY) {
+      scoped.Context()->SynthesizeGLError(GL_INVALID_OPERATION,
+                                          "framebufferTextureMultiviewWEBGL",
+                                          "invalid texture type");
+      return;
+    }
+    if (num_views < 1) {
+      scoped.Context()->SynthesizeGLError(GL_INVALID_VALUE,
+                                          "framebufferTextureMultiviewWEBGL",
+                                          "numViews is less than one");
+      return;
+    }
+    if (num_views > max_views_ovr_) {
+      scoped.Context()->SynthesizeGLError(
+          GL_INVALID_VALUE, "framebufferTextureMultiviewWEBGL",
+          "numViews is more than the value of MAX_VIEWS_OVR");
+      return;
+    }
+    if (!static_cast<WebGL2RenderingContextBase*>(scoped.Context())
+             ->ValidateTexFuncLayer("framebufferTextureMultiviewWEBGL",
+                                    textarget, base_view_index))
+      return;
+    if (!static_cast<WebGL2RenderingContextBase*>(scoped.Context())
+             ->ValidateTexFuncLayer("framebufferTextureMultiviewWEBGL",
+                                    textarget, base_view_index + num_views - 1))
+      return;
+    if (!scoped.Context()->ValidateTexFuncLevel(
+            "framebufferTextureMultiviewWEBGL", textarget, level))
+      return;
+  }
+
+  WebGLFramebuffer* framebuffer_binding =
+      scoped.Context()->GetFramebufferBinding(target);
+  if (!framebuffer_binding || !framebuffer_binding->Object()) {
+    scoped.Context()->SynthesizeGLError(GL_INVALID_OPERATION,
+                                        "framebufferTextureMultiviewWEBGL",
+                                        "no framebuffer bound");
+    return;
+  }
+  // Don't allow modifications to opaque framebuffer attachements.
+  if (framebuffer_binding->Opaque()) {
+    scoped.Context()->SynthesizeGLError(GL_INVALID_OPERATION,
+                                        "framebufferTextureMultiviewWEBGL",
+                                        "opaque framebuffer bound");
+    return;
+  }
+
+  framebuffer_binding->SetAttachmentForBoundFramebuffer(
+      target, attachment, textarget, texture, level, base_view_index,
+      num_views);
+  scoped.Context()->ApplyStencilTest();
+}
+
+bool WebGLMultiview::Supported(WebGLRenderingContextBase* context) {
+  return context->ExtensionsUtil()->SupportsExtension("GL_ANGLE_multiview");
+}
+
+const char* WebGLMultiview::ExtensionName() {
+  return "WEBGL_multiview";
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/modules/webgl/webgl_multiview.h b/third_party/blink/renderer/modules/webgl/webgl_multiview.h
new file mode 100644
index 0000000..d59c124
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_multiview.h
@@ -0,0 +1,37 @@
+// Copyright 2018 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.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_MULTIVIEW_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_MULTIVIEW_H_
+
+#include "third_party/blink/renderer/modules/webgl/webgl_extension.h"
+
+namespace blink {
+
+class WebGLMultiview final : public WebGLExtension {
+  DEFINE_WRAPPERTYPEINFO();
+
+ public:
+  static WebGLMultiview* Create(WebGLRenderingContextBase*);
+  static bool Supported(WebGLRenderingContextBase*);
+  static const char* ExtensionName();
+
+  WebGLExtensionName GetName() const override;
+
+  void framebufferTextureMultiviewWEBGL(GLenum target,
+                                        GLenum attachment,
+                                        WebGLTexture* texture,
+                                        GLint level,
+                                        GLint baseViewIndex,
+                                        GLsizei numViews);
+
+ private:
+  explicit WebGLMultiview(WebGLRenderingContextBase*);
+
+  GLsizei max_views_ovr_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBGL_WEBGL_MULTIVIEW_H_
diff --git a/third_party/blink/renderer/modules/webgl/webgl_multiview.idl b/third_party/blink/renderer/modules/webgl/webgl_multiview.idl
new file mode 100644
index 0000000..2ca349f
--- /dev/null
+++ b/third_party/blink/renderer/modules/webgl/webgl_multiview.idl
@@ -0,0 +1,21 @@
+// Copyright 2018 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.
+
+// https://www.khronos.org/registry/webgl/extensions/WEBGL_multiview/
+
+[
+    NoInterfaceObject,
+    DoNotCheckConstants
+]
+interface WebGLMultiview {
+    const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = 0x9630;
+    const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = 0x9632;
+    const GLenum MAX_VIEWS_OVR = 0x9631;
+    const GLenum FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 0x9633;
+
+    void framebufferTextureMultiviewWEBGL(GLenum target, GLenum attachment,
+                                          WebGLTexture? texture, GLint level,
+                                          GLint baseViewIndex,
+                                          GLsizei numViews);
+};
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
index df51dfe..af5b92b 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
@@ -2700,7 +2700,7 @@
     return;
   }
   framebuffer_binding->SetAttachmentForBoundFramebuffer(
-      target, attachment, textarget, texture, level, 0);
+      target, attachment, textarget, texture, level, 0, 0);
   ApplyStencilTest();
 }
 
@@ -3310,7 +3310,12 @@
           GL_INVALID_ENUM, "getParameter",
           "invalid parameter name, EXT_disjoint_timer_query not enabled");
       return ScriptValue::CreateNull(script_state);
-
+    case GL_MAX_VIEWS_OVR:
+      if (ExtensionEnabled(kWebGLMultiviewName))
+        return GetIntParameter(script_state, pname);
+      SynthesizeGLError(GL_INVALID_ENUM, "getParameter",
+                        "invalid parameter name, WEBGL_multiview not enabled");
+      return ScriptValue::CreateNull(script_state);
     default:
       if ((ExtensionEnabled(kWebGLDrawBuffersName) || IsWebGL2OrHigher()) &&
           pname >= GL_DRAW_BUFFER0_EXT &&
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
index bed21bd..084b4bd 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
@@ -630,6 +630,7 @@
   friend class WebGLCompressedTexturePVRTC;
   friend class WebGLCompressedTextureS3TC;
   friend class WebGLCompressedTextureS3TCsRGB;
+  friend class WebGLMultiview;
   friend class WebGLRenderingContextErrorMessageCallback;
   friend class WebGLVertexArrayObjectBase;
   friend class ScopedDrawingBufferBinder;
diff --git a/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.cc b/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.cc
index ed49f45..f553884 100644
--- a/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/script_fetch_options.cc
@@ -53,9 +53,12 @@
   params.MutableResourceRequest().SetFetchIntegrity(
       GetIntegrityAttributeValue());
 
-  // and its parser metadata to options's parser metadata. [spec text]
+  // its parser metadata to options's parser metadata, [spec text]
   params.SetParserDisposition(ParserState());
 
+  // its referrer policy to options's referrer policy. [spec text]
+  params.MutableResourceRequest().SetReferrerPolicy(referrer_policy_);
+
   params.SetCharset(encoding);
 
   // This DeferOption logic is only for classic scripts, as we always set
diff --git a/third_party/tcmalloc/chromium/src/base/abort.cc b/third_party/tcmalloc/chromium/src/base/abort.cc
new file mode 100755
index 0000000..05d4dd74
--- /dev/null
+++ b/third_party/tcmalloc/chromium/src/base/abort.cc
@@ -0,0 +1,18 @@
+// Copyright (c) 2012 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.
+
+#include "base/abort.h"
+
+#include "base/basictypes.h"
+
+namespace tcmalloc {
+
+// Try not to inline so we can find Abort() call from stack trace.
+ATTRIBUTE_NOINLINE void Abort() {
+  // Make a segmentation fault to force abort. Writing to a specific address
+  // so it's easier to find on crash stacks.
+  *(reinterpret_cast<volatile char*>(NULL) + 57) = 0x2001;
+}
+
+} // namespace tcmalloc
diff --git a/third_party/tcmalloc/chromium/src/base/abort.h b/third_party/tcmalloc/chromium/src/base/abort.h
new file mode 100644
index 0000000..18ec319
--- /dev/null
+++ b/third_party/tcmalloc/chromium/src/base/abort.h
@@ -0,0 +1,19 @@
+// Copyright (c) 2012 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.
+//
+// ---
+// On some platforms abort() is implemented in a way that Chrome's crash
+// reporter treats it as a normal exit. See issue:
+// http://code.google.com/p/chromium/issues/detail?id=118665
+// So we replace abort with a segmentation fault, then crash reporter can
+// always detect.
+
+#ifndef BASE_ABORT_H_
+#define BASE_ABORT_H_
+
+namespace tcmalloc {
+void Abort();
+} // namespace tcmalloc
+
+#endif  // BASE_ABORT_H_
diff --git a/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-generic.h b/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-generic.h
index d0f9413..2256bbc 100644
--- a/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-generic.h
+++ b/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-generic.h
@@ -39,7 +39,7 @@
 #define BASE_ATOMICOPS_INTERNALS_ARM_GENERIC_H_
 
 #include <stdio.h>
-#include <stdlib.h>
+#include "base/abort.h"
 #include "base/basictypes.h"
 
 typedef int32_t Atomic32;
@@ -153,7 +153,7 @@
 inline void NotImplementedFatalError(const char *function_name) {
   fprintf(stderr, "64-bit %s() not implemented on this platform\n",
           function_name);
-  abort();
+  tcmalloc::Abort();
 }
 
 inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
diff --git a/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h b/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h
index 35f1048..a7df765 100644
--- a/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h
+++ b/third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h
@@ -41,6 +41,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include "base/abort.h"
 #include "base/basictypes.h"  // For COMPILE_ASSERT
 
 // The LDREXD and STREXD instructions in ARM all v7 variants or above.  In v6,
@@ -249,7 +250,7 @@
 inline void NotImplementedFatalError(const char *function_name) {
   fprintf(stderr, "64-bit %s() not implemented on this platform\n",
           function_name);
-  abort();
+  tcmalloc::Abort();
 }
 
 inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
diff --git a/third_party/tcmalloc/chromium/src/base/atomicops-internals-windows.h b/third_party/tcmalloc/chromium/src/base/atomicops-internals-windows.h
index 93ced87..9d0d806 100644
--- a/third_party/tcmalloc/chromium/src/base/atomicops-internals-windows.h
+++ b/third_party/tcmalloc/chromium/src/base/atomicops-internals-windows.h
@@ -41,6 +41,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include "base/abort.h"
 #include "base/basictypes.h"  // For COMPILE_ASSERT
 
 typedef int32 Atomic32;
@@ -338,7 +339,7 @@
 inline void NotImplementedFatalError(const char *function_name) {
   fprintf(stderr, "64-bit %s() not implemented on this platform\n",
           function_name);
-  abort();
+  tcmalloc::Abort();
 }
 
 inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
diff --git a/third_party/tcmalloc/chromium/src/base/logging.h b/third_party/tcmalloc/chromium/src/base/logging.h
index a1afe4d..659605ace 100644
--- a/third_party/tcmalloc/chromium/src/base/logging.h
+++ b/third_party/tcmalloc/chromium/src/base/logging.h
@@ -46,6 +46,7 @@
 #include <string.h>    // for strlen(), strcmp()
 #include <assert.h>
 #include <errno.h>     // for errno
+#include "base/abort.h"
 #include "base/commandlineflags.h"
 
 // On some systems (like freebsd), we can't call write() at all in a
@@ -86,7 +87,7 @@
     if (!(condition)) {                                                 \
       WRITE_TO_STDERR("Check failed: " #condition "\n",                 \
                       sizeof("Check failed: " #condition "\n")-1);      \
-      abort();                                                          \
+      tcmalloc::Abort();                                                \
     }                                                                   \
   } while (0)
 
@@ -96,7 +97,7 @@
     if (!(condition)) {                                                        \
       WRITE_TO_STDERR("Check failed: " #condition ": " message "\n",           \
                       sizeof("Check failed: " #condition ": " message "\n")-1);\
-      abort();                                                                 \
+      tcmalloc::Abort();                                                       \
     }                                                                          \
   } while (0)
 
@@ -119,7 +120,7 @@
                       sizeof("Check failed: " #condition ": ")-1);      \
       WRITE_TO_STDERR(strerror(err_no), strlen(strerror(err_no)));      \
       WRITE_TO_STDERR("\n", sizeof("\n")-1);                            \
-      abort();                                                          \
+      tcmalloc::Abort();                                                \
     }                                                                   \
   } while (0)
 
@@ -136,7 +137,7 @@
   do {                                                                  \
     if (!((val1) op (val2))) {                                          \
       fprintf(stderr, "Check failed: %s %s %s\n", #val1, #op, #val2);   \
-      abort();                                                          \
+      tcmalloc::Abort();                                                \
     }                                                                   \
   } while (0)
 
@@ -205,8 +206,10 @@
     strcat(buf, "\n");
   }
   WRITE_TO_STDERR(buf, strlen(buf));
-  if ((severity) == FATAL)
-    abort(); // LOG(FATAL) indicates a big problem, so don't run atexit() calls
+  if ((severity) == FATAL) {
+    // LOG(FATAL) indicates a big problem, so don't run atexit() calls
+    tcmalloc::Abort();
+  }
 }
 
 // Note that since the order of global constructors is unspecified,
diff --git a/third_party/tcmalloc/chromium/src/base/simple_mutex.h b/third_party/tcmalloc/chromium/src/base/simple_mutex.h
index a1886e4..fe06f7e1 100644
--- a/third_party/tcmalloc/chromium/src/base/simple_mutex.h
+++ b/third_party/tcmalloc/chromium/src/base/simple_mutex.h
@@ -139,7 +139,7 @@
 #endif
 
 #include <assert.h>
-#include <stdlib.h>      // for abort()
+#include "base/abort.h"
 
 #define MUTEX_NAMESPACE perftools_mutex_namespace
 
@@ -235,16 +235,16 @@
 #elif defined(HAVE_PTHREAD) && defined(HAVE_RWLOCK)
 
 #define SAFE_PTHREAD(fncall)  do {   /* run fncall if is_safe_ is true */  \
-  if (is_safe_ && fncall(&mutex_) != 0) abort();                           \
+  if (is_safe_ && fncall(&mutex_) != 0) tcmalloc::Abort();                 \
 } while (0)
 
 Mutex::Mutex() : destroy_(true) {
   SetIsSafe();
-  if (is_safe_ && pthread_rwlock_init(&mutex_, NULL) != 0) abort();
+  if (is_safe_ && pthread_rwlock_init(&mutex_, NULL) != 0) tcmalloc::Abort();
 }
 Mutex::Mutex(Mutex::LinkerInitialized) : destroy_(false) {
   SetIsSafe();
-  if (is_safe_ && pthread_rwlock_init(&mutex_, NULL) != 0) abort();
+  if (is_safe_ && pthread_rwlock_init(&mutex_, NULL) != 0) tcmalloc::Abort();
 }
 Mutex::~Mutex()       { if (destroy_) SAFE_PTHREAD(pthread_rwlock_destroy); }
 void Mutex::Lock()         { SAFE_PTHREAD(pthread_rwlock_wrlock); }
@@ -258,16 +258,16 @@
 #elif defined(HAVE_PTHREAD)
 
 #define SAFE_PTHREAD(fncall)  do {   /* run fncall if is_safe_ is true */  \
-  if (is_safe_ && fncall(&mutex_) != 0) abort();                           \
+  if (is_safe_ && fncall(&mutex_) != 0) tcmalloc::Abort();                 \
 } while (0)
 
 Mutex::Mutex() : destroy_(true) {
   SetIsSafe();
-  if (is_safe_ && pthread_mutex_init(&mutex_, NULL) != 0) abort();
+  if (is_safe_ && pthread_mutex_init(&mutex_, NULL) != 0) tcmalloc::Abort();
 }
 Mutex::Mutex(Mutex::LinkerInitialized) : destroy_(false) {
   SetIsSafe();
-  if (is_safe_ && pthread_mutex_init(&mutex_, NULL) != 0) abort();
+  if (is_safe_ && pthread_mutex_init(&mutex_, NULL) != 0) tcmalloc::Abort();
 }
 Mutex::~Mutex()       { if (destroy_) SAFE_PTHREAD(pthread_mutex_destroy); }
 void Mutex::Lock()         { SAFE_PTHREAD(pthread_mutex_lock); }
diff --git a/third_party/tcmalloc/chromium/src/debugallocation.cc b/third_party/tcmalloc/chromium/src/debugallocation.cc
index 7c438f2..73b5e79 100644
--- a/third_party/tcmalloc/chromium/src/debugallocation.cc
+++ b/third_party/tcmalloc/chromium/src/debugallocation.cc
@@ -69,6 +69,7 @@
 #include <gperftools/malloc_hook.h>
 #include <gperftools/stacktrace.h>
 #include "addressmap-inl.h"
+#include "base/abort.h"
 #include "base/commandlineflags.h"
 #include "base/googleinit.h"
 #include "base/logging.h"
@@ -925,7 +926,7 @@
         write(STDERR_FILENO, "Unimplemented TracePrintf format\n", 33);
         write(STDERR_FILENO, p, 2);
         write(STDERR_FILENO, "\n", 1);
-        abort();
+        tcmalloc::Abort();
       }
       p++;
       if (base != 0) {
diff --git a/third_party/tcmalloc/chromium/src/heap-checker-bcad.cc b/third_party/tcmalloc/chromium/src/heap-checker-bcad.cc
index 00efdb7..e32bd818 100644
--- a/third_party/tcmalloc/chromium/src/heap-checker-bcad.cc
+++ b/third_party/tcmalloc/chromium/src/heap-checker-bcad.cc
@@ -45,8 +45,8 @@
 // consider that allocation to be a leak, even though it's not (since
 // the allocated object is reachable from global data and hence "live").
 
-#include <stdlib.h>      // for abort()
 #include <gperftools/malloc_extension.h>
+#include "base/abort.h"
 
 // A dummy variable to refer from heap-checker.cc.  This is to make
 // sure this file is not optimized out by the linker.
@@ -77,7 +77,7 @@
     ++count_;
   }
   ~HeapLeakCheckerGlobalPrePost() {
-    if (count_ <= 0)  abort();
+    if (count_ <= 0)  tcmalloc::Abort();
     --count_;
     if (count_ == 0)  HeapLeakChecker_AfterDestructors();
   }
diff --git a/third_party/tcmalloc/chromium/src/internal_logging.cc b/third_party/tcmalloc/chromium/src/internal_logging.cc
index 708fa650..2b462de8 100644
--- a/third_party/tcmalloc/chromium/src/internal_logging.cc
+++ b/third_party/tcmalloc/chromium/src/internal_logging.cc
@@ -42,6 +42,7 @@
 #endif
 
 #include <gperftools/malloc_extension.h>
+#include "base/abort.h"
 #include "base/logging.h"   // for perftools_vsnprintf
 #include "base/spinlock.h"              // for SpinLockHolder, SpinLock
 
@@ -115,7 +116,7 @@
     (*log_message_writer)(stats_buffer, strlen(stats_buffer));
   }
 
-  abort();
+  Abort();
 }
 
 bool Logger::Add(const LogItem& item) {
diff --git a/third_party/tcmalloc/chromium/src/memfs_malloc.cc b/third_party/tcmalloc/chromium/src/memfs_malloc.cc
index fd26daff..b01aa5ee 100644
--- a/third_party/tcmalloc/chromium/src/memfs_malloc.cc
+++ b/third_party/tcmalloc/chromium/src/memfs_malloc.cc
@@ -77,7 +77,7 @@
              "specified number of MiB.  0 == no limit.");
 DEFINE_bool(memfs_malloc_abort_on_fail,
             EnvToBool("TCMALLOC_MEMFS_ABORT_ON_FAIL", false),
-            "abort() whenever memfs_malloc fails to satisfy an allocation "
+            "abort whenever memfs_malloc fails to satisfy an allocation "
             "for any reason.");
 DEFINE_bool(memfs_malloc_ignore_mmap_fail,
             EnvToBool("TCMALLOC_MEMFS_IGNORE_MMAP_FAIL", false),
diff --git a/tools/android/roll/android_deps/OWNERS b/tools/android/roll/android_deps/OWNERS
index 0472368..f3795e6 100644
--- a/tools/android/roll/android_deps/OWNERS
+++ b/tools/android/roll/android_deps/OWNERS
@@ -1,4 +1,4 @@
 agrieve@chromium.org
 bauerb@chromium.org
-dgn@chromium.org
 jbudorick@chromium.org
+wnwen@chromium.org
diff --git a/tools/android/roll/android_deps/README.md b/tools/android/roll/android_deps/README.md
index 9f38d5e..ea3a98f 100644
--- a/tools/android/roll/android_deps/README.md
+++ b/tools/android/roll/android_deps/README.md
@@ -34,12 +34,17 @@
 3. Run `fetch_all.py --update-all` to update your current workspace with the
    changes. This will update, among other things, your top-level DEPS file,
    and print a series of commands to create new CIPD packages.
+    - Before running this command, make sure to increment the `CIPD_SUFFIX`
+      variable in `BuildConfigGenerator.groovy` in order to ensure that each
+      tag in CIPD is unique.
 
 4. Run the commands printed at step 3 to create new and updated packages
    via cipd.
 
 5. Create a commit & follow [`//docs/adding_to_third_party.md`][docs_link] for
    the review.
+    - This is not necessary if you are only upgrading existing packages or
+      adding packages from the same source and license (e.g. gms)
 
 Note that if you're not satisfied with the results, you can use
 `fetch_all.py --reset-workspace` to reset your workspace to its HEAD state,
@@ -47,7 +52,12 @@
 `third_party/android_deps/repository/`. This commands preserves local
 `build.gradle` modifications.
 
+If you are updating any of the gms dependencies, please ensure that the license
+file that they reference is up-to-date with the one on android's
+[website][android_sdk_link].
+
 [docs_link]: ../../../../docs/adding_to_third_party.md
+[android_sdk_link]: https://developer.android.com/studio/terms
 
 ### Implementation notes:
 The script invokes a Gradle plugin to leverage its dependency resolution
diff --git a/tools/android/roll/android_deps/build.gradle b/tools/android/roll/android_deps/build.gradle
index 70d6988..05c5629 100644
--- a/tools/android/roll/android_deps/build.gradle
+++ b/tools/android/roll/android_deps/build.gradle
@@ -19,6 +19,24 @@
     compile "android.arch.lifecycle:runtime:${archComponentsVersion}"
     compile "android.arch.lifecycle:common:${archComponentsVersion}"
 
+    // Play services libraries
+    def gmsVersion = '12.0.1'
+    compile "com.google.android.gms:play-services-basement:${gmsVersion}"
+    compile "com.google.android.gms:play-services-tasks:${gmsVersion}"
+    compile "com.google.android.gms:play-services-base:${gmsVersion}"
+    compile "com.google.android.gms:play-services-auth-base:${gmsVersion}"
+    compile "com.google.android.gms:play-services-auth-api-phone:${gmsVersion}"
+    compile "com.google.android.gms:play-services-auth:${gmsVersion}"
+    compile "com.google.android.gms:play-services-cast:${gmsVersion}"
+    compile "com.google.android.gms:play-services-cast-framework:${gmsVersion}"
+    compile "com.google.android.gms:play-services-iid:${gmsVersion}"
+    compile "com.google.android.gms:play-services-instantapps:${gmsVersion}"
+    compile "com.google.android.gms:play-services-gcm:${gmsVersion}"
+    compile "com.google.android.gms:play-services-location:${gmsVersion}"
+    compile "com.google.android.gms:play-services-vision-common:${gmsVersion}"
+    compile "com.google.android.gms:play-services-vision:${gmsVersion}"
+    compile "com.google.android.gms:play-services-fido:${gmsVersion}"
+
     // Support v4 libraries
     def supportLibVersion = '27.0.0'
     compile "com.android.support:support-v4:${supportLibVersion}"
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 b81de41..cd9d8d4 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
@@ -29,7 +29,10 @@
     private static final DEPS_GEN_PATTERN = Pattern.compile(
             "${DEPS_TOKEN_START}(.*)${DEPS_TOKEN_END}",
             Pattern.DOTALL)
-    private static final DOWNLOAD_DIRECTORY_NAME = "repository"
+    private static final DOWNLOAD_DIRECTORY_NAME = "libs"
+    // This must be unique, so better be safe and increment the suffix rather than resetting
+    // to cr0.
+    private static final CIPD_SUFFIX = "cr0"
 
     /**
      * Directory where the artifacts will be downloaded and where files will be generated.
@@ -51,6 +54,9 @@
         // 2. Import artifacts into the local repository
         def dependencyDirectories = []
         graph.dependencies.values().each { dependency ->
+            if (dependency.exclude) {
+                return
+            }
             logger.debug "Processing ${dependency.name}: \n${jsonDump(dependency)}"
             def depDir = "${DOWNLOAD_DIRECTORY_NAME}/${dependency.id}"
             def absoluteDepDir = "${normalisedRepoPath}/${depDir}"
@@ -69,6 +75,7 @@
 
             new File("${absoluteDepDir}/README.chromium").write(makeReadme(dependency))
             new File("${absoluteDepDir}/cipd.yaml").write(makeCipdYaml(dependency, repositoryPath))
+            new File("${absoluteDepDir}/OWNERS").write(makeOwners())
             if (!dependency.licenseUrl?.trim()?.isEmpty()) {
                 downloadFile(dependency.licenseUrl, new File("${absoluteDepDir}/LICENSE"))
             }
@@ -96,9 +103,15 @@
         }
 
         depGraph.dependencies.values().sort(dependencyComparator).each { dependency ->
+            if (dependency.exclude) {
+                return
+            }
             def depsStr = ""
             if (!dependency.children.isEmpty()) {
                 dependency.children.each { childDep ->
+                    if (depGraph.dependencies[childDep].exclude) {
+                        return
+                    }
                     depsStr += "\":${depGraph.dependencies[childDep].id}_java\","
                 }
             }
@@ -110,7 +123,7 @@
                   jar_path = "${libPath}/${dependency.fileName}"
                   output_name = "${dependency.id}"
                 """.stripIndent())
-                if (dependency.supportsAndroid) sb.append("  supports_android = true")
+                if (dependency.supportsAndroid) sb.append("  supports_android = true\n")
             } else if (dependency.extension == 'aar') {
                 sb.append("""\
                 android_aar_prebuilt("${dependency.id}_java") {
@@ -140,12 +153,16 @@
             case 'com_android_support_support_media_compat':
                 // Target has AIDL, but we don't support it yet: http://crbug.com/644439
                 sb.append('  ignore_aidl = true\n')
-                break;
+                break
             case 'com_android_support_transition':
                 // Not specified in the POM, compileOnly dependency not supposed to be used unless
                 // the library is present: b/70887421
-                sb.append('  deps += [":com_android_support_support_fragment_java"]')
-                break;
+                sb.append('  deps += [":com_android_support_support_fragment_java"]\n')
+                break
+            case 'com_google_android_gms_play_services_basement':
+                // Deprecated deps jar but still needed by play services basement.
+                sb.append('  input_jars_paths=["\\$android_sdk/optional/org.apache.http.legacy.jar"]\n')
+                break
         }
     }
 
@@ -163,6 +180,9 @@
         }
 
         depGraph.dependencies.values().sort(dependencyComparator).each { dependency ->
+            if (dependency.exclude) {
+                return
+            }
             def depPath = "${DOWNLOAD_DIRECTORY_NAME}/${dependency.id}"
             sb.append("""\
             |
@@ -170,7 +190,7 @@
             |      'packages': [
             |          {
             |              'package': 'chromium/${repoPath}/${depPath}',
-            |              'version': 'version:${dependency.version}-cr0',
+            |              'version': 'version:${dependency.version}-${CIPD_SUFFIX}',
             |          },
             |      ],
             |      'condition': 'checkout_android',
@@ -194,6 +214,11 @@
         return project.file("${pathToChromiumRoot}/${pathRelativeToChromiumRoot}").absolutePath
     }
 
+    static String makeOwners() {
+        // Make it easier to upgrade existing dependencies without full third_party review.
+        return "file://third_party/android_deps/OWNERS"
+    }
+
     static String makeReadme(ChromiumDepGraph.DependencyDescription dependency) {
         def licenseString
         // Replace license names with ones that are whitelisted, see third_party/PRESUBMIT.py
@@ -205,13 +230,18 @@
                 licenseString = dependency.licenseName
         }
 
+        def licenseFile = dependency.supportsAndroid ? "LICENSE" : "NOT_SHIPPED"
+        if (!dependency.licensePath?.isEmpty()) {
+            licenseFile = dependency.licensePath
+        }
+
         return """\
         Name: ${dependency.displayName}
         Short Name: ${dependency.name}
         URL: ${dependency.url}
         Version: ${dependency.version}
         License: ${licenseString}
-        License File: ${dependency.supportsAndroid ? "LICENSE" : "NOT_SHIPPED"}
+        License File: ${licenseFile}
         Security Critical: ${dependency.supportsAndroid ? "yes" : "no"}
 
         Description:
@@ -223,9 +253,7 @@
     }
 
     static String makeCipdYaml(ChromiumDepGraph.DependencyDescription dependency, String repoPath) {
-        // TODO(dgn): Avoid resetting the cipd version to cr0, for example by reading the
-        // existing DEPS file.
-        def cipdVersion = "${dependency.version}-cr0"
+        def cipdVersion = "${dependency.version}-${CIPD_SUFFIX}"
 
         // NOTE: the fetch_all.py script relies on the format of this file!
         // See fetch_all.py:GetCipdPackageInfo().
@@ -242,10 +270,6 @@
         - file: ${dependency.fileName}
         """.stripIndent()
 
-        if (dependency.extension == 'aar') {
-            str += "- file: ${dependency.id}.info\n"
-        }
-
         return str
     }
 
diff --git a/tools/android/roll/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy b/tools/android/roll/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
index e7af4f9..cff3433e 100644
--- a/tools/android/roll/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
+++ b/tools/android/roll/android_deps/buildSrc/src/main/groovy/ChromiumDepGraph.groovy
@@ -105,12 +105,12 @@
         def pomContent = new XmlSlurper(false, false).parse(pom)
         String licenseName
         String licenseUrl
-        (licenseName, licenseUrl) = resolveLicenseInfomation(id, pomContent)
+        (licenseName, licenseUrl) = resolveLicenseInformation(id, pomContent)
 
         // Get rid of irrelevant indent that might be present in the XML file.
         def description = pomContent.description?.text()?.trim()?.replaceAll(/\s+/, " ")
 
-        return new DependencyDescription(
+        return customizeDep(new DependencyDescription(
                 id: id,
                 artifact: artifact,
                 group: dependency.module.id.group,
@@ -121,14 +121,33 @@
                 children: Collections.unmodifiableList(new ArrayList<>(childModules)),
                 licenseName: licenseName,
                 licenseUrl: licenseUrl,
+                licensePath: "",
                 fileName: artifact.file.name,
                 description: description,
                 url: pomContent.url?.text(),
-                displayName: pomContent.name?.text()
-        )
+                displayName: pomContent.name?.text(),
+                exclude: false,
+        ))
     }
 
-    private resolveLicenseInfomation(String id, GPathResult pomContent) {
+    private customizeDep(DependencyDescription dep) {
+        if (dep.id?.startsWith("com_google_android_gms_play_services_")) {
+            dep.licenseUrl = ""
+            dep.licensePath = "/third_party/android_deps/Android_SDK_License-December_9_2016.txt"
+            if (dep.url?.isEmpty()) {
+                dep.url = "https://developers.google.com/android/guides/setup"
+            }
+            // Filter out targets like:
+            //     com_google_android_gms_play_services_auth_api_phone_license
+            if (dep.id?.endsWith("_license")) {
+                dep.exclude = true
+            }
+        }
+
+        return dep
+    }
+
+    private resolveLicenseInformation(String id, GPathResult pomContent) {
       def licenseName = ''
       def licenseUrl = ''
 
@@ -150,9 +169,9 @@
         String id
         ResolvedArtifact artifact
         String group, name, version, extension, displayName, description, url
-        String licenseName, licenseUrl
+        String licenseName, licenseUrl, licensePath
         String fileName
-        boolean supportsAndroid, visible
+        boolean supportsAndroid, visible, exclude
         ComponentIdentifier componentId
         List<String> children
     }
diff --git a/tools/android/roll/android_deps/fetch_all.py b/tools/android/roll/android_deps/fetch_all.py
index dbe2fcd..59b7c61 100755
--- a/tools/android/roll/android_deps/fetch_all.py
+++ b/tools/android/roll/android_deps/fetch_all.py
@@ -50,8 +50,12 @@
 # Path to BUILD.gn file under android_deps/
 _ANDROID_DEPS_BUILD_GN = _ANDROID_DEPS_SUBDIR + '/BUILD.gn'
 
-# Location of the android_deps repository directory from a root checkout.
-_ANDROID_DEPS_REPOSITORY_SUBDIR = _ANDROID_DEPS_SUBDIR + '/repository'
+# Path to additional_readme_paths.json
+_ANDROID_DEPS_ADDITIONAL_README_PATHS = (
+    _ANDROID_DEPS_SUBDIR + '/additional_readme_paths.json')
+
+# Location of the android_deps libs directory from a root checkout.
+_ANDROID_DEPS_LIBS_SUBDIR = _ANDROID_DEPS_SUBDIR + '/libs'
 
 # Location of the build.gradle file used to configure our dependencies.
 _BUILD_GRADLE_PATH = 'tools/android/roll/android_deps/build.gradle'
@@ -60,7 +64,11 @@
 _GRADLE_BUILDSRC_PATH = 'tools/android/roll/android_deps/buildSrc'
 
 # The list of git-controlled files that are checked or updated by this tool.
-_UPDATED_GIT_FILES = [ 'DEPS', _ANDROID_DEPS_BUILD_GN ]
+_UPDATED_GIT_FILES = [
+  'DEPS',
+  _ANDROID_DEPS_BUILD_GN,
+  _ANDROID_DEPS_ADDITIONAL_README_PATHS,
+]
 
 # The list of files that are copied to the build directory by this script.
 # Should not include _UPDATED_GIT_FILES.
@@ -69,6 +77,9 @@
   _GRADLE_BUILDSRC_PATH,
 ]
 
+# Matches any string contained within angle brackets (1 deep).
+_RE_LICENSE_FILTER = re.compile('<[^><]*>')
+
 @contextlib.contextmanager
 def BuildDir(dirname=None):
   """Helper function used to manage a build directory.
@@ -258,21 +269,21 @@
   return (package_name, package_tag)
 
 
-def ParseDepsRepository(root_dir):
-  """Parse an android_deps/repository and retrieve package information.
+def ParseDeps(root_dir):
+  """Parse an android_deps/libs and retrieve package information.
 
   Args:
     root_dir: Path to a root Chromium or build directory.
   Returns:
     A directory mapping package names to tuples of
     (cipd_yaml_file, package_name, package_tag), where |cipd_yaml_file|
-    is the path to the cipd.yaml file, related to |repository_dir|,
+    is the path to the cipd.yaml file, related to |libs_dir|,
     and |package_name| and |package_tag| are the extracted from it.
   """
   result = {}
-  repository_dir = os.path.abspath(os.path.join(
-      root_dir, _ANDROID_DEPS_REPOSITORY_SUBDIR))
-  for cipd_file in FindInDirectory(repository_dir, 'cipd.yaml'):
+  libs_dir = os.path.abspath(os.path.join(
+      root_dir, _ANDROID_DEPS_LIBS_SUBDIR))
+  for cipd_file in FindInDirectory(libs_dir, 'cipd.yaml'):
     pkg_name, pkg_tag = GetCipdPackageInfo(cipd_file)
     cipd_path = os.path.dirname(cipd_file)
     cipd_path = cipd_path[len(root_dir) + 1:]
@@ -389,34 +400,36 @@
                           os.path.join(build_dir, path))
 
     print '# Use Gradle to download packages and edit/create relevant files.'
+    # This gradle command generates the new DEPS and BUILD.gn files, it can also
+    # handle special cases. Edit BuildConfigGenerator.groovy#addSpecialTreatment
+    # for such cases.
     gradle_cmd = [
         gradle_wrapper_path,
         '-b', os.path.join(build_dir, _BUILD_GRADLE_PATH),
         'setupRepository',
+        '--stacktrace',
     ]
     RunCommand(gradle_cmd)
 
-    repository_dir = os.path.join(build_dir, _ANDROID_DEPS_REPOSITORY_SUBDIR)
+    libs_dir = os.path.join(build_dir, _ANDROID_DEPS_LIBS_SUBDIR)
 
     print '# Reformat %s.' % _ANDROID_DEPS_BUILD_GN
     gn_args = ['gn', 'format', os.path.join(build_dir, _ANDROID_DEPS_BUILD_GN)]
     RunCommand(gn_args)
 
     print '# Generate Android .aar info files.'
-    aar_files = FindInDirectory(repository_dir, '*.aar')
+    aar_files = FindInDirectory(libs_dir, '*.aar')
     for aar_file in aar_files:
       aar_dirname = os.path.dirname(aar_file)
       aar_info_name = os.path.basename(aar_dirname) + '.info'
       aar_info_path = os.path.join(aar_dirname, aar_info_name)
       if not os.path.exists(aar_info_path):
         logging.info('- %s' % aar_info_name)
-        info = RunCommandAndGetOutput([aar_py, 'list', aar_file])
-        with open(aar_info_path, 'w') as f:
-          f.write(info)
+        RunCommand([aar_py, 'list', aar_file, '--output', aar_info_path])
 
     print '# Compare CIPD packages.'
-    existing_packages = ParseDepsRepository(chromium_src)
-    build_packages = ParseDepsRepository(build_dir)
+    existing_packages = ParseDeps(chromium_src)
+    build_packages = ParseDeps(build_dir)
 
     deleted_packages = []
     updated_packages = []
@@ -438,13 +451,11 @@
     for pkg in new_packages:
       logging.info('+ %s', pkg)
 
-    if not (deleted_packages or new_packages or updated_packages):
-      print 'No changes detected. All good.'
-      return
-
     # Generate CIPD package upload commands.
     cipd_packages_to_upload = sorted(updated_packages + new_packages)
     if cipd_packages_to_upload:
+      # TODO(wnwen): Check CIPD to make sure that no other package with the
+      #              same tag exists, print error otherwise.
       cipd_commands = [GenerateCipdUploadCommand(build_packages[pkg])
         for pkg in cipd_packages_to_upload]
       # Print them to the log for debugging.
@@ -452,15 +463,18 @@
                    '\n'.join(cipd_commands))
 
     if not args.update_all:
-      print 'Changes detected:'
-      if new_packages:
-        PrintPackageList(new_packages, 'new')
-      if updated_packages:
-        PrintPackageList(updated_packages, 'updated')
-      if deleted_packages:
-        PrintPackageList(deleted_packages, 'deleted')
-      print ''
-      print 'Run with --update-all to update your checkout!'
+      if not (deleted_packages or new_packages or updated_packages):
+        print 'No changes detected. All good.'
+      else:
+        print 'Changes detected:'
+        if new_packages:
+          PrintPackageList(new_packages, 'new')
+        if updated_packages:
+          PrintPackageList(updated_packages, 'updated')
+        if deleted_packages:
+          PrintPackageList(deleted_packages, 'deleted')
+        print ''
+        print 'Run with --update-all to update your checkout!'
       return
 
     # Copy updated DEPS and BUILD.gn to build directory.
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index edf68ef..a140c9f 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -13899,7 +13899,7 @@
   <int value="456" label="AllowedInputMethods"/>
   <int value="457" label="OverrideSecurityRestrictionsOnInsecureOrigin"/>
   <int value="458" label="DeviceUpdateStagingPercentOfFleetPerWeek"/>
-  <int value="459" label="AutofillProfileEnabled"/>
+  <int value="459" label="AutofillAddressEnabled"/>
   <int value="460" label="TabLifecyclesEnabled"/>
   <int value="461" label="UrlKeyedAnonymizedDataCollectionEnabled"/>
 </enum>
diff --git a/ui/base/accelerators/accelerator.cc b/ui/base/accelerators/accelerator.cc
index 7e55ef36..00970429 100644
--- a/ui/base/accelerators/accelerator.cc
+++ b/ui/base/accelerators/accelerator.cc
@@ -348,12 +348,15 @@
     case VKEY_F11:
       string_id = IDS_APP_F11_KEY;
       break;
+#if !defined(OS_MACOSX)
+    // On Mac, commas and periods are used literally in accelerator text.
     case VKEY_OEM_COMMA:
       string_id = IDS_APP_COMMA_KEY;
       break;
     case VKEY_OEM_PERIOD:
       string_id = IDS_APP_PERIOD_KEY;
       break;
+#endif
     case VKEY_MEDIA_NEXT_TRACK:
       string_id = IDS_APP_MEDIA_NEXT_TRACK_KEY;
       break;
diff --git a/ui/base/accelerators/accelerator_unittest.cc b/ui/base/accelerators/accelerator_unittest.cc
index ad7134c..c286581 100644
--- a/ui/base/accelerators/accelerator_unittest.cc
+++ b/ui/base/accelerators/accelerator_unittest.cc
@@ -50,6 +50,8 @@
   } keys[] = {
     {VKEY_Q, EF_CONTROL_DOWN | EF_SHIFT_DOWN, "Ctrl+Shift+Q", "\u2303\u21e7Q"},
     {VKEY_A, EF_ALT_DOWN | EF_SHIFT_DOWN, "Alt+Shift+A", "\u2325\u21e7A"},
+    // Regression test for https://crbug.com/867732:
+    {VKEY_OEM_COMMA, EF_CONTROL_DOWN, "Ctrl+Comma", "\u2303,"},
 #if defined(OS_MACOSX)
     {VKEY_T, EF_COMMAND_DOWN | EF_CONTROL_DOWN, nullptr, "\u2303\u2318T"},
 #endif
diff --git a/ui/display/win/color_profile_reader.cc b/ui/display/win/color_profile_reader.cc
index 7c8d48a..9796fc2 100644
--- a/ui/display/win/color_profile_reader.cc
+++ b/ui/display/win/color_profile_reader.cc
@@ -61,7 +61,7 @@
 
   update_in_flight_ = true;
   base::PostTaskWithTraitsAndReplyWithResult(
-      FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND},
+      FROM_HERE, {base::MayBlock(), base::TaskPriority::BEST_EFFORT},
       base::Bind(&ColorProfileReader::ReadProfilesOnBackgroundThread,
                  new_device_to_path_map),
       base::Bind(&ColorProfileReader::ReadProfilesCompleted,
diff --git a/ui/events/ozone/evdev/libgestures_glue/gesture_feedback.cc b/ui/events/ozone/evdev/libgestures_glue/gesture_feedback.cc
index 7c4215b..da326d4 100644
--- a/ui/events/ozone/evdev/libgestures_glue/gesture_feedback.cc
+++ b/ui/events/ozone/evdev/libgestures_glue/gesture_feedback.cc
@@ -235,7 +235,7 @@
   // Compress touchpad/mouse logs asynchronously
   base::PostTaskWithTraitsAndReply(
       FROM_HERE,
-      {base::MayBlock(), base::TaskPriority::BACKGROUND,
+      {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
        base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN},
       base::BindOnce(&CompressDumpedLog,
                      base::Passed(&log_paths_to_be_compressed)),
diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py
index bdb7581a..a2cebf1a 100755
--- a/ui/gl/generate_bindings.py
+++ b/ui/gl/generate_bindings.py
@@ -600,6 +600,11 @@
   'arguments': 'GLenum target, GLenum attachment, GLuint texture, GLint level, '
                'GLint layer', },
 { 'return_type': 'void',
+  'versions': [{'name': 'glFramebufferTextureMultiviewLayeredANGLE',
+                'extensions': ['GL_ANGLE_multiview']}],
+  'arguments': 'GLenum target, GLenum attachment, GLuint texture, GLint level, '
+               'GLint baseViewIndex, GLsizei numViews', },
+{ 'return_type': 'void',
   'names': ['glFrontFace'],
   'arguments': 'GLenum mode', },
 { 'return_type': 'void',
diff --git a/ui/gl/gl_bindings.h b/ui/gl/gl_bindings.h
index cc428685..01e1b16 100644
--- a/ui/gl/gl_bindings.h
+++ b/ui/gl/gl_bindings.h
@@ -430,6 +430,12 @@
   #define GL_SERVICE_LOG_CODE_BLOCK(code) code
 #endif
 
+// ANGLE_multiview constants.
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
+#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
+#define GL_MAX_VIEWS_OVR 0x9631
+#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
+
 // Forward declare OSMesa types.
 typedef struct osmesa_context *OSMesaContext;
 typedef void (*OSMESAproc)();
diff --git a/ui/gl/gl_bindings_api_autogen_gl.h b/ui/gl/gl_bindings_api_autogen_gl.h
index f99f68c..1c1d2ce0 100644
--- a/ui/gl/gl_bindings_api_autogen_gl.h
+++ b/ui/gl/gl_bindings_api_autogen_gl.h
@@ -384,6 +384,12 @@
                                  GLuint texture,
                                  GLint level,
                                  GLint layer) override;
+void glFramebufferTextureMultiviewLayeredANGLEFn(GLenum target,
+                                                 GLenum attachment,
+                                                 GLuint texture,
+                                                 GLint level,
+                                                 GLint baseViewIndex,
+                                                 GLsizei numViews) override;
 void glFrontFaceFn(GLenum mode) override;
 void glGenBuffersARBFn(GLsizei n, GLuint* buffers) override;
 void glGenerateMipmapEXTFn(GLenum target) override;
diff --git a/ui/gl/gl_bindings_autogen_gl.cc b/ui/gl/gl_bindings_autogen_gl.cc
index dac774b..0157c7cc 100644
--- a/ui/gl/gl_bindings_autogen_gl.cc
+++ b/ui/gl/gl_bindings_autogen_gl.cc
@@ -285,6 +285,8 @@
       gfx::HasExtension(extensions, "GL_ANGLE_framebuffer_multisample");
   ext.b_GL_ANGLE_instanced_arrays =
       gfx::HasExtension(extensions, "GL_ANGLE_instanced_arrays");
+  ext.b_GL_ANGLE_multiview =
+      gfx::HasExtension(extensions, "GL_ANGLE_multiview");
   ext.b_GL_ANGLE_request_extension =
       gfx::HasExtension(extensions, "GL_ANGLE_request_extension");
   ext.b_GL_ANGLE_robust_client_memory =
@@ -1023,6 +1025,12 @@
             GetGLProcAddress("glFramebufferTextureLayer"));
   }
 
+  if (ext.b_GL_ANGLE_multiview) {
+    fn.glFramebufferTextureMultiviewLayeredANGLEFn =
+        reinterpret_cast<glFramebufferTextureMultiviewLayeredANGLEProc>(
+            GetGLProcAddress("glFramebufferTextureMultiviewLayeredANGLE"));
+  }
+
   if (ver->IsAtLeastGL(3u, 0u) || ver->is_es) {
     fn.glGenerateMipmapEXTFn = reinterpret_cast<glGenerateMipmapEXTProc>(
         GetGLProcAddress("glGenerateMipmap"));
@@ -3438,6 +3446,16 @@
                                           layer);
 }
 
+void GLApiBase::glFramebufferTextureMultiviewLayeredANGLEFn(GLenum target,
+                                                            GLenum attachment,
+                                                            GLuint texture,
+                                                            GLint level,
+                                                            GLint baseViewIndex,
+                                                            GLsizei numViews) {
+  driver_->fn.glFramebufferTextureMultiviewLayeredANGLEFn(
+      target, attachment, texture, level, baseViewIndex, numViews);
+}
+
 void GLApiBase::glFrontFaceFn(GLenum mode) {
   driver_->fn.glFrontFaceFn(mode);
 }
@@ -6591,6 +6609,19 @@
                                        layer);
 }
 
+void TraceGLApi::glFramebufferTextureMultiviewLayeredANGLEFn(
+    GLenum target,
+    GLenum attachment,
+    GLuint texture,
+    GLint level,
+    GLint baseViewIndex,
+    GLsizei numViews) {
+  TRACE_EVENT_BINARY_EFFICIENT0(
+      "gpu", "TraceGLAPI::glFramebufferTextureMultiviewLayeredANGLE")
+  gl_api_->glFramebufferTextureMultiviewLayeredANGLEFn(
+      target, attachment, texture, level, baseViewIndex, numViews);
+}
+
 void TraceGLApi::glFrontFaceFn(GLenum mode) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glFrontFace")
   gl_api_->glFrontFaceFn(mode);
@@ -10408,6 +10439,22 @@
                                        layer);
 }
 
+void DebugGLApi::glFramebufferTextureMultiviewLayeredANGLEFn(
+    GLenum target,
+    GLenum attachment,
+    GLuint texture,
+    GLint level,
+    GLint baseViewIndex,
+    GLsizei numViews) {
+  GL_SERVICE_LOG("glFramebufferTextureMultiviewLayeredANGLE"
+                 << "(" << GLEnums::GetStringEnum(target) << ", "
+                 << GLEnums::GetStringEnum(attachment) << ", " << texture
+                 << ", " << level << ", " << baseViewIndex << ", " << numViews
+                 << ")");
+  gl_api_->glFramebufferTextureMultiviewLayeredANGLEFn(
+      target, attachment, texture, level, baseViewIndex, numViews);
+}
+
 void DebugGLApi::glFrontFaceFn(GLenum mode) {
   GL_SERVICE_LOG("glFrontFace"
                  << "(" << GLEnums::GetStringEnum(mode) << ")");
@@ -14654,6 +14701,16 @@
   NoContextHelper("glFramebufferTextureLayer");
 }
 
+void NoContextGLApi::glFramebufferTextureMultiviewLayeredANGLEFn(
+    GLenum target,
+    GLenum attachment,
+    GLuint texture,
+    GLint level,
+    GLint baseViewIndex,
+    GLsizei numViews) {
+  NoContextHelper("glFramebufferTextureMultiviewLayeredANGLE");
+}
+
 void NoContextGLApi::glFrontFaceFn(GLenum mode) {
   NoContextHelper("glFrontFace");
 }
diff --git a/ui/gl/gl_bindings_autogen_gl.h b/ui/gl/gl_bindings_autogen_gl.h
index 4a253f7..4958597 100644
--- a/ui/gl/gl_bindings_autogen_gl.h
+++ b/ui/gl/gl_bindings_autogen_gl.h
@@ -443,6 +443,13 @@
                                                              GLuint texture,
                                                              GLint level,
                                                              GLint layer);
+typedef void(GL_BINDING_CALL* glFramebufferTextureMultiviewLayeredANGLEProc)(
+    GLenum target,
+    GLenum attachment,
+    GLuint texture,
+    GLint level,
+    GLint baseViewIndex,
+    GLsizei numViews);
 typedef void(GL_BINDING_CALL* glFrontFaceProc)(GLenum mode);
 typedef void(GL_BINDING_CALL* glGenBuffersARBProc)(GLsizei n, GLuint* buffers);
 typedef void(GL_BINDING_CALL* glGenerateMipmapEXTProc)(GLenum target);
@@ -1744,6 +1751,7 @@
   bool b_GL_ANGLE_framebuffer_blit;
   bool b_GL_ANGLE_framebuffer_multisample;
   bool b_GL_ANGLE_instanced_arrays;
+  bool b_GL_ANGLE_multiview;
   bool b_GL_ANGLE_request_extension;
   bool b_GL_ANGLE_robust_client_memory;
   bool b_GL_ANGLE_translated_shader_source;
@@ -1944,6 +1952,8 @@
   glFramebufferTexture2DMultisampleEXTProc
       glFramebufferTexture2DMultisampleEXTFn;
   glFramebufferTextureLayerProc glFramebufferTextureLayerFn;
+  glFramebufferTextureMultiviewLayeredANGLEProc
+      glFramebufferTextureMultiviewLayeredANGLEFn;
   glFrontFaceProc glFrontFaceFn;
   glGenBuffersARBProc glGenBuffersARBFn;
   glGenerateMipmapEXTProc glGenerateMipmapEXTFn;
@@ -2674,6 +2684,13 @@
                                            GLuint texture,
                                            GLint level,
                                            GLint layer) = 0;
+  virtual void glFramebufferTextureMultiviewLayeredANGLEFn(
+      GLenum target,
+      GLenum attachment,
+      GLuint texture,
+      GLint level,
+      GLint baseViewIndex,
+      GLsizei numViews) = 0;
   virtual void glFrontFaceFn(GLenum mode) = 0;
   virtual void glGenBuffersARBFn(GLsizei n, GLuint* buffers) = 0;
   virtual void glGenerateMipmapEXTFn(GLenum target) = 0;
@@ -4012,6 +4029,8 @@
   ::gl::g_current_gl_context->glFramebufferTexture2DMultisampleEXTFn
 #define glFramebufferTextureLayer \
   ::gl::g_current_gl_context->glFramebufferTextureLayerFn
+#define glFramebufferTextureMultiviewLayeredANGLE \
+  ::gl::g_current_gl_context->glFramebufferTextureMultiviewLayeredANGLEFn
 #define glFrontFace ::gl::g_current_gl_context->glFrontFaceFn
 #define glGenBuffersARB ::gl::g_current_gl_context->glGenBuffersARBFn
 #define glGenerateMipmapEXT ::gl::g_current_gl_context->glGenerateMipmapEXTFn
diff --git a/ui/gl/gl_bindings_autogen_mock.cc b/ui/gl/gl_bindings_autogen_mock.cc
index 12a80b1..669d77e 100644
--- a/ui/gl/gl_bindings_autogen_mock.cc
+++ b/ui/gl/gl_bindings_autogen_mock.cc
@@ -1367,6 +1367,19 @@
                                       layer);
 }
 
+void GL_BINDING_CALL
+MockGLInterface::Mock_glFramebufferTextureMultiviewLayeredANGLE(
+    GLenum target,
+    GLenum attachment,
+    GLuint texture,
+    GLint level,
+    GLint baseViewIndex,
+    GLsizei numViews) {
+  MakeGlMockFunctionUnique("glFramebufferTextureMultiviewLayeredANGLE");
+  interface_->FramebufferTextureMultiviewLayeredANGLE(
+      target, attachment, texture, level, baseViewIndex, numViews);
+}
+
 void GL_BINDING_CALL MockGLInterface::Mock_glFrontFace(GLenum mode) {
   MakeGlMockFunctionUnique("glFrontFace");
   interface_->FrontFace(mode);
@@ -5165,6 +5178,9 @@
   if (strcmp(name, "glFramebufferTextureLayer") == 0)
     return reinterpret_cast<GLFunctionPointerType>(
         Mock_glFramebufferTextureLayer);
+  if (strcmp(name, "glFramebufferTextureMultiviewLayeredANGLE") == 0)
+    return reinterpret_cast<GLFunctionPointerType>(
+        Mock_glFramebufferTextureMultiviewLayeredANGLE);
   if (strcmp(name, "glFrontFace") == 0)
     return reinterpret_cast<GLFunctionPointerType>(Mock_glFrontFace);
   if (strcmp(name, "glGenBuffers") == 0)
diff --git a/ui/gl/gl_bindings_autogen_mock.h b/ui/gl/gl_bindings_autogen_mock.h
index 52c7be6..b80c9d7 100644
--- a/ui/gl/gl_bindings_autogen_mock.h
+++ b/ui/gl/gl_bindings_autogen_mock.h
@@ -573,6 +573,13 @@
                                                            GLuint texture,
                                                            GLint level,
                                                            GLint layer);
+static void GL_BINDING_CALL
+Mock_glFramebufferTextureMultiviewLayeredANGLE(GLenum target,
+                                               GLenum attachment,
+                                               GLuint texture,
+                                               GLint level,
+                                               GLint baseViewIndex,
+                                               GLsizei numViews);
 static void GL_BINDING_CALL Mock_glFrontFace(GLenum mode);
 static void GL_BINDING_CALL Mock_glGenBuffers(GLsizei n, GLuint* buffers);
 static void GL_BINDING_CALL Mock_glGenFencesAPPLE(GLsizei n, GLuint* fences);
diff --git a/ui/gl/gl_mock_autogen_gl.h b/ui/gl/gl_mock_autogen_gl.h
index 76b6025..cdfe7a30 100644
--- a/ui/gl/gl_mock_autogen_gl.h
+++ b/ui/gl/gl_mock_autogen_gl.h
@@ -353,6 +353,13 @@
                   GLuint texture,
                   GLint level,
                   GLint layer));
+MOCK_METHOD6(FramebufferTextureMultiviewLayeredANGLE,
+             void(GLenum target,
+                  GLenum attachment,
+                  GLuint texture,
+                  GLint level,
+                  GLint baseViewIndex,
+                  GLsizei numViews));
 MOCK_METHOD1(FrontFace, void(GLenum mode));
 MOCK_METHOD2(GenBuffersARB, void(GLsizei n, GLuint* buffers));
 MOCK_METHOD1(GenerateMipmapEXT, void(GLenum target));
diff --git a/ui/gl/gl_stub_autogen_gl.h b/ui/gl/gl_stub_autogen_gl.h
index c0589a5..bdbe9ae8 100644
--- a/ui/gl/gl_stub_autogen_gl.h
+++ b/ui/gl/gl_stub_autogen_gl.h
@@ -385,6 +385,12 @@
                                  GLuint texture,
                                  GLint level,
                                  GLint layer) override {}
+void glFramebufferTextureMultiviewLayeredANGLEFn(GLenum target,
+                                                 GLenum attachment,
+                                                 GLuint texture,
+                                                 GLint level,
+                                                 GLint baseViewIndex,
+                                                 GLsizei numViews) override {}
 void glFrontFaceFn(GLenum mode) override {}
 void glGenBuffersARBFn(GLsizei n, GLuint* buffers) override {}
 void glGenerateMipmapEXTFn(GLenum target) override {}