diff --git a/DEPS b/DEPS
index b23b0ad5..608fc20 100644
--- a/DEPS
+++ b/DEPS
@@ -199,11 +199,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '8f282f5d9f30aeb5e3122735723b403203511370',
+  'skia_revision': '2199cde1f52b39182a21f5ff41ab8aafde1f3731',
   # 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': '6bb19707a491fda7a4dc04dbbeb188d48f6d641d',
+  'v8_revision': '5d60a181de0863d8d00ae42ec0ee3521f51b501a',
   # 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.
@@ -211,11 +211,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '6e909d9407534e3b7e4eb42e49941256a14066b5',
+  'angle_revision': '0b90eef09f607336330f318bc8e65fa981634160',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
-  'swiftshader_revision': '588d32cb3f172d1a6092c2b3c7e5a5c5d8b3b06e',
+  'swiftshader_revision': '348ba200aa29d5b3a36d696d48d8f619e055219f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -274,7 +274,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': 'ba12c16f393a978fe8d3f7ad9d9db4d3ad1125b0',
+  'devtools_frontend_revision': '56e9ceb621af13f4d35ff0a65e1206f7b50772a1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -314,7 +314,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': 'c9a22bcb93db27e200a184c1f7b9bf0f288815c7',
+  'dawn_revision': '3a0405597374c9ae12fb93e33aac35826455a958',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -1344,7 +1344,7 @@
       'packages': [
           {
               'package': 'fuchsia/third_party/aemu/linux-amd64',
-              'version': 'luM2HIHgfBKxr1C7UPo8RdQPAvyLNd74T9rYfhWFOC8C'
+              'version': 'xAHa1IXmKteChkPvba9ezjSnKL7IyDePQRzWVUEAx9UC'
           },
       ],
       'condition': 'host_os == "linux" and checkout_fuchsia',
@@ -1485,7 +1485,7 @@
   'src/third_party/usrsctp/usrsctplib':
     Var('chromium_git') + '/external/github.com/sctplab/usrsctp' + '@' + 'a3c3ef666b7a5e4c93ebae5a7462add6f86f5cf2',
 
-  'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@b229877c6d2dd194a61794fa12e69405b09d8677',
+  'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@e59ae1af7571c2994183768c2a36fff8b1854437',
 
   'src/third_party/vulkan_memory_allocator':
     Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + '6c656df63da5995a932aafd45b32af1974e497d9',
@@ -1518,7 +1518,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '3c2fe3888658d82b47ca831d59a2e07579619c2d',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '783278a3109df8d2e362861e52fd0deea851633c',
+    Var('webrtc_git') + '/src.git' + '@' + '42082f9045e74e65b9e3a66b51093e0dc2f9375a',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1590,7 +1590,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@a51f14911dda538375d1f4da1925ce667ac3ca6f',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@ae141f7298b13c959b64a3cff9ffcc191c8f5f2c',
     'condition': 'checkout_src_internal',
   },
 
@@ -1598,7 +1598,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/help_app/app',
-        'version': 'iymm0X4k86dP1qOJ7zLR6r45tSnluDcJ8ticed31c9wC',
+        'version': 'XqRO5qpWAA_j5rN924obLa6cvXOAk7XsrvyzobooTOoC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
@@ -1609,7 +1609,7 @@
     'packages': [
       {
         'package': 'chromeos_internal/apps/media_app/app',
-        'version': 'G2hKrv9siNlrFfUOPnGITX-1vPXVfef552IDKjdJcgoC',
+        'version': 'R77YnQ53JE-EhrDRTHfTXpK36kcw2lVngfX8hLaV5OQC',
       },
     ],
     'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/base/allocator/partition_allocator/page_allocator_internals_posix.h b/base/allocator/partition_allocator/page_allocator_internals_posix.h
index f3c1c53..078e33a 100644
--- a/base/allocator/partition_allocator/page_allocator_internals_posix.h
+++ b/base/allocator/partition_allocator/page_allocator_internals_posix.h
@@ -8,6 +8,7 @@
 #include <errno.h>
 #include <sys/mman.h>
 
+#include "base/allocator/partition_allocator/oom.h"
 #include "base/allocator/partition_allocator/partition_alloc_check.h"
 #include "base/check_op.h"
 #include "base/notreached.h"
@@ -216,8 +217,11 @@
     void* address,
     size_t length,
     PageAccessibilityConfiguration accessibility) {
-  PA_PCHECK(0 == HANDLE_EINTR(
-                     mprotect(address, length, GetAccessFlags(accessibility))));
+  const int ret =
+      HANDLE_EINTR(mprotect(address, length, GetAccessFlags(accessibility)));
+  if (ret == -1 && errno == ENOMEM)
+    OOM_CRASH(length);
+  PA_PCHECK(0 == ret);
 }
 
 void FreePagesInternal(void* address, size_t length) {
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index e163596..ae34d0f 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-0.20210108.2.1
+0.20210110.2.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1
index e163596..ae34d0f 100644
--- a/build/fuchsia/mac.sdk.sha1
+++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@
-0.20210108.2.1
+0.20210110.2.1
diff --git a/chrome/VERSION b/chrome/VERSION
index 976092f..391f4ad 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=89
 MINOR=0
-BUILD=4384
+BUILD=4385
 PATCH=0
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt
index e0d2f42..da0660e 100644
--- a/chrome/android/profiles/newest.txt
+++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-89.0.4381.0_rc-r1-merged.afdo.bz2
+chromeos-chrome-amd64-89.0.4383.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc
index 354f4a3..944e278 100644
--- a/chrome/app/chrome_main_delegate.cc
+++ b/chrome/app/chrome_main_delegate.cc
@@ -578,6 +578,10 @@
 #if defined(OS_ANDROID)
   UmaSessionStats::OnStartup();
 #endif
+
+#if defined(OS_MAC)
+  chrome::CacheChannelInfo();
+#endif
 }
 
 bool ChromeMainDelegate::ShouldCreateFeatureList() {
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index f0d4bf1..3523ee4 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -1460,6 +1460,8 @@
     "first_run/first_run.h",
     "full_restore/app_launch_handler.cc",
     "full_restore/app_launch_handler.h",
+    "full_restore/full_restore_data_handler.cc",
+    "full_restore/full_restore_data_handler.h",
     "full_restore/full_restore_prefs.cc",
     "full_restore/full_restore_prefs.h",
     "full_restore/full_restore_service.cc",
diff --git a/chrome/browser/chromeos/full_restore/full_restore_data_handler.cc b/chrome/browser/chromeos/full_restore/full_restore_data_handler.cc
new file mode 100644
index 0000000..946b2a29
--- /dev/null
+++ b/chrome/browser/chromeos/full_restore/full_restore_data_handler.cc
@@ -0,0 +1,49 @@
+// Copyright 2021 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 "chrome/browser/chromeos/full_restore/full_restore_data_handler.h"
+
+#include "chrome/browser/apps/app_service/app_service_proxy.h"
+#include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
+#include "chrome/browser/profiles/profile.h"
+#include "components/full_restore/full_restore_read_handler.h"
+#include "components/full_restore/full_restore_save_handler.h"
+#include "components/services/app_service/public/cpp/app_update.h"
+
+namespace chromeos {
+namespace full_restore {
+
+FullRestoreDataHandler::FullRestoreDataHandler(Profile* profile)
+    : profile_(profile) {
+  DCHECK(
+      apps::AppServiceProxyFactory::IsAppServiceAvailableForProfile(profile_));
+  Observe(&apps::AppServiceProxyFactory::GetForProfile(profile_)
+               ->AppRegistryCache());
+}
+
+FullRestoreDataHandler::~FullRestoreDataHandler() = default;
+
+void FullRestoreDataHandler::OnAppUpdate(const apps::AppUpdate& update) {
+  if (!update.ReadinessChanged() ||
+      update.Readiness() != apps::mojom::Readiness::kUninstalledByUser) {
+    return;
+  }
+
+  // If the user uninstalls an app, then installs it again at the system
+  // startup phase, its restore data will be removed if the app isn't reopened.
+  ::full_restore::FullRestoreReadHandler* read_handler =
+      ::full_restore::FullRestoreReadHandler::GetInstance();
+  read_handler->RemoveApp(profile_->GetPath(), update.AppId());
+
+  ::full_restore::FullRestoreSaveHandler::GetInstance()->RemoveApp(
+      profile_->GetPath(), update.AppId());
+}
+
+void FullRestoreDataHandler::OnAppRegistryCacheWillBeDestroyed(
+    apps::AppRegistryCache* cache) {
+  apps::AppRegistryCache::Observer::Observe(nullptr);
+}
+
+}  // namespace full_restore
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/full_restore/full_restore_data_handler.h b/chrome/browser/chromeos/full_restore/full_restore_data_handler.h
new file mode 100644
index 0000000..29267d6
--- /dev/null
+++ b/chrome/browser/chromeos/full_restore/full_restore_data_handler.h
@@ -0,0 +1,39 @@
+// Copyright 2021 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 CHROME_BROWSER_CHROMEOS_FULL_RESTORE_FULL_RESTORE_DATA_HANDLER_H_
+#define CHROME_BROWSER_CHROMEOS_FULL_RESTORE_FULL_RESTORE_DATA_HANDLER_H_
+
+#include "components/services/app_service/public/cpp/app_registry_cache.h"
+
+class Profile;
+
+namespace chromeos {
+namespace full_restore {
+
+// The FullRestoreDataHandler class observes AppRegistryCache to remove the app
+// launching and app windows when the app is removed.
+class FullRestoreDataHandler : public apps::AppRegistryCache::Observer {
+ public:
+  explicit FullRestoreDataHandler(Profile* profile);
+  ~FullRestoreDataHandler() override;
+
+  FullRestoreDataHandler(const FullRestoreDataHandler&) = delete;
+  FullRestoreDataHandler& operator=(const FullRestoreDataHandler&) = delete;
+
+  // apps::AppRegistryCache::Observer:
+  void OnAppUpdate(const apps::AppUpdate& update) override;
+  void OnAppRegistryCacheWillBeDestroyed(
+      apps::AppRegistryCache* cache) override;
+
+ private:
+  Profile* profile_ = nullptr;
+
+  base::WeakPtrFactory<FullRestoreDataHandler> weak_ptr_factory_{this};
+};
+
+}  // namespace full_restore
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_FULL_RESTORE_FULL_RESTORE_DATA_HANDLER_H_
diff --git a/chrome/browser/chromeos/full_restore/full_restore_service.cc b/chrome/browser/chromeos/full_restore/full_restore_service.cc
index 385a71d..04c01e38 100644
--- a/chrome/browser/chromeos/full_restore/full_restore_service.cc
+++ b/chrome/browser/chromeos/full_restore/full_restore_service.cc
@@ -8,6 +8,7 @@
 #include "base/strings/string_util.h"
 #include "chrome/app/vector_icons/vector_icons.h"
 #include "chrome/browser/chromeos/full_restore/app_launch_handler.h"
+#include "chrome/browser/chromeos/full_restore/full_restore_data_handler.h"
 #include "chrome/browser/chromeos/full_restore/full_restore_prefs.h"
 #include "chrome/browser/chromeos/full_restore/full_restore_service_factory.h"
 #include "chrome/browser/chromeos/full_restore/new_user_restore_pref_handler.h"
@@ -40,7 +41,9 @@
 
 FullRestoreService::FullRestoreService(Profile* profile)
     : profile_(profile),
-      app_launch_handler_(std::make_unique<AppLaunchHandler>(profile_)) {
+      app_launch_handler_(std::make_unique<AppLaunchHandler>(profile_)),
+      restore_data_handler_(
+          std::make_unique<FullRestoreDataHandler>(profile_)) {
   // If the system crashed before reboot, show the restore notification.
   if (profile->GetLastSessionExitType() == Profile::EXIT_CRASHED) {
     ShowRestoreNotification(kRestoreForCrashNotificationId);
diff --git a/chrome/browser/chromeos/full_restore/full_restore_service.h b/chrome/browser/chromeos/full_restore/full_restore_service.h
index cdf64fe7..eed24e4 100644
--- a/chrome/browser/chromeos/full_restore/full_restore_service.h
+++ b/chrome/browser/chromeos/full_restore/full_restore_service.h
@@ -18,6 +18,7 @@
 namespace full_restore {
 
 class AppLaunchHandler;
+class FullRestoreDataHandler;
 class NewUserRestorePrefHandler;
 
 extern const char kRestoreForCrashNotificationId[];
@@ -71,6 +72,8 @@
   // restore data.
   std::unique_ptr<AppLaunchHandler> app_launch_handler_;
 
+  std::unique_ptr<FullRestoreDataHandler> restore_data_handler_;
+
   base::WeakPtrFactory<FullRestoreService> weak_ptr_factory_{this};
 };
 
diff --git a/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc b/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc
index e155a43..bcac9e9 100644
--- a/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc
+++ b/chrome/browser/chromeos/full_restore/full_restore_service_unittest.cc
@@ -189,7 +189,8 @@
 
 // If the system is crash, show the crash notification, and verify the restore
 // flag when click the restore button.
-TEST_F(FullRestoreServiceTest, CrashAndRestore) {
+// TODO(crbug.com/1046900): Fix this unit test.
+TEST_F(FullRestoreServiceTest, DISABLED_CrashAndRestore) {
   profile()->set_last_session_exited_cleanly(false);
   CreateFullRestoreServiceForTesting();
 
@@ -398,8 +399,9 @@
 }
 
 // If the OS restore setting is 'Ask every time', after reboot, show the restore
-// notfication, and verify the restore flag when click the restore button.
-TEST_F(FullRestoreServiceTest, AskEveryTimeAndRestore) {
+// notification, and verify the restore flag when click the restore button.
+// TODO(crbug.com/1046900): Fix this unit test.
+TEST_F(FullRestoreServiceTest, DISABLED_AskEveryTimeAndRestore) {
   profile()->GetPrefs()->SetInteger(
       kRestoreAppsAndPagesPrefName,
       static_cast<int>(RestoreOption::kAskEveryTime));
@@ -474,7 +476,8 @@
 
 // If the restore option has been selected 3 times, show the set restore
 // notification.
-TEST_F(FullRestoreServiceTest, SetRestorePrefNotification) {
+// TODO(crbug.com/1046900): Fix this unit test.
+TEST_F(FullRestoreServiceTest, DISABLED_SetRestorePrefNotification) {
   profile()->GetPrefs()->SetInteger(
       kRestoreAppsAndPagesPrefName,
       static_cast<int>(RestoreOption::kAskEveryTime));
@@ -508,7 +511,8 @@
 
 // When |kRestoreSelectedCountPrefName| = 3, if the restore option is selected
 // again, |kRestoreSelectedCountPrefName| should not change.
-TEST_F(FullRestoreServiceTest, RestoreSelectedCount) {
+// TODO(crbug.com/1046900): Fix this unit test.
+TEST_F(FullRestoreServiceTest, DISABLED_RestoreSelectedCount) {
   profile()->GetPrefs()->SetInteger(
       kRestoreAppsAndPagesPrefName,
       static_cast<int>(RestoreOption::kAskEveryTime));
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index 381c6b3..0c11f4e0 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -283,10 +283,10 @@
 }
 
 // Called after a deleted profile was checked and cleaned up.
-void ProfileCleanedUp(const base::Value* profile_path_value) {
+void ProfileCleanedUp(base::Value profile_path_value) {
   ListPrefUpdate deleted_profiles(g_browser_process->local_state(),
                                   prefs::kProfilesDeleted);
-  deleted_profiles->Remove(*profile_path_value, nullptr);
+  deleted_profiles->Remove(profile_path_value, nullptr);
 }
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
@@ -1040,11 +1040,11 @@
             {base::MayBlock(), base::TaskPriority::BEST_EFFORT,
              base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
             base::BindOnce(&NukeProfileFromDisk, *profile_path),
-            base::BindOnce(&ProfileCleanedUp, &value));
+            base::BindOnce(&ProfileCleanedUp, value.Clone()));
       } else {
         // Everything is fine, the profile was removed on shutdown.
         content::GetUIThreadTaskRunner({})->PostTask(
-            FROM_HERE, base::BindOnce(&ProfileCleanedUp, &value));
+            FROM_HERE, base::BindOnce(&ProfileCleanedUp, value.Clone()));
       }
     } else {
       LOG(ERROR) << "Found invalid profile path in deleted_profiles: "
diff --git a/chrome/browser/resources/chromeos/add_supervision/post_message_api.js b/chrome/browser/resources/chromeos/add_supervision/post_message_api.js
index 438e9ccd..c3dbbdc 100644
--- a/chrome/browser/resources/chromeos/add_supervision/post_message_api.js
+++ b/chrome/browser/resources/chromeos/add_supervision/post_message_api.js
@@ -172,19 +172,24 @@
       return;
     }
 
-    if (this.initialization_timeout_id_) {
-      // Cancel the current init timeout, and signal to the initialization
-      // polling process that we have received an init message from the guest
-      // content, so it doesn't reschedule the timer.
-      clearTimeout(this.initialization_timeout_id_);
-      this.initialization_timeout_id_ = 0;
-    }
-
     if (event.data === 'init') {
+      if (this.initialization_timeout_id_) {
+        // Cancel the current init timeout, and signal to the initialization
+        // polling process that we have received an init message from the guest
+        // content, so it doesn't reschedule the timer.
+        clearTimeout(this.initialization_timeout_id_);
+        this.initialization_timeout_id_ = 0;
+      }
+
       this.isInitialized_ = true;
       return;
     }
-
+    // If we have gotten this far, we have received a message from a trusted
+    // origin, and we should try to process it.  We can't gate this on whether
+    // the channel is initialized, because we can receive events out of order,
+    // and method calls can be received before the init event. Essentially, we
+    // should treat the channel as being potentially as soon as we send 'init'
+    // to the guest content.
     const methodId = event.data.methodId;
     const fn = event.data.fn;
     const args = event.data.args || [];
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.cc b/chrome/browser/ui/views/profiles/profile_picker_view.cc
index db21b6f..5922e02 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view.cc
+++ b/chrome/browser/ui/views/profiles/profile_picker_view.cc
@@ -11,6 +11,7 @@
 #include "base/metrics/histogram_functions.h"
 #include "build/build_config.h"
 #include "chrome/app/chrome_command_ids.h"
+#include "chrome/app/vector_icons/vector_icons.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
 #include "chrome/browser/lifetime/application_lifetime.h"
@@ -22,11 +23,13 @@
 #include "chrome/browser/profiles/profiles_state.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/browser/signin/signin_util.h"
+#include "chrome/browser/themes/theme_properties.h"
 #include "chrome/browser/themes/theme_service.h"
 #include "chrome/browser/themes/theme_service_factory.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/browser_navigator.h"
 #include "chrome/browser/ui/browser_navigator_params.h"
+#include "chrome/browser/ui/layout_constants.h"
 #include "chrome/browser/ui/user_manager.h"
 #include "chrome/browser/ui/views/accelerator_table.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
@@ -35,6 +38,7 @@
 #include "chrome/browser/ui/views/profiles/profile_customization_bubble_sync_controller.h"
 #include "chrome/browser/ui/views/profiles/profile_customization_bubble_view.h"
 #include "chrome/browser/ui/views/profiles/profile_picker_view_sync_delegate.h"
+#include "chrome/browser/ui/views/toolbar/toolbar_button.h"
 #include "chrome/browser/ui/webui/signin/dice_turn_sync_on_helper.h"
 #include "chrome/browser/ui/webui/signin/profile_picker_ui.h"
 #include "chrome/browser/ui/webui/signin/signin_web_dialog_ui.h"
@@ -42,11 +46,13 @@
 #include "chrome/common/pref_names.h"
 #include "chrome/common/webui_url_constants.h"
 #include "chrome/grit/chromium_strings.h"
+#include "chrome/grit/generated_resources.h"
 #include "chrome/grit/google_chrome_strings.h"
 #include "components/keep_alive_registry/keep_alive_types.h"
 #include "components/prefs/pref_service.h"
 #include "components/signin/public/identity_manager/account_info.h"
 #include "components/startup_metric_utils/browser/startup_metric_utils.h"
+#include "components/vector_icons/vector_icons.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/context_menu_params.h"
 #include "content/public/browser/render_frame_host.h"
@@ -54,6 +60,10 @@
 #include "content/public/browser/web_contents.h"
 #include "google_apis/gaia/gaia_urls.h"
 #include "net/base/url_util.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/views/accessibility/view_accessibility.h"
+#include "ui/views/background.h"
+#include "ui/views/controls/webview/web_contents_set_background_color.h"
 #include "ui/views/controls/webview/webview.h"
 #include "ui/views/layout/fill_layout.h"
 #include "ui/views/layout/flex_layout.h"
@@ -80,6 +90,9 @@
 constexpr int kWindowHeight = 758;
 constexpr float kMaxRatioOfWorkArea = 0.9;
 
+// Padding of elements in the simple toolbar.
+constexpr gfx::Insets kToolbarPadding = gfx::Insets(8);
+
 constexpr base::TimeDelta kExtendedAccountInfoTimeout =
     base::TimeDelta::FromSeconds(10);
 
@@ -153,6 +166,28 @@
   ProfilePickerView* const profile_picker_view_;
 };
 
+class SimpleBackButton : public ToolbarButton {
+ public:
+  explicit SimpleBackButton(PressedCallback callback)
+      : ToolbarButton(std::move(callback)) {
+    SetTriggerableEventFlags(ui::EF_LEFT_MOUSE_BUTTON |
+                             ui::EF_MIDDLE_MOUSE_BUTTON);
+    SetTooltipText(
+        l10n_util::GetStringUTF16(IDS_PROFILE_PICKER_BACK_BUTTON_LABEL));
+  }
+  SimpleBackButton(const SimpleBackButton&) = delete;
+  SimpleBackButton& operator=(const SimpleBackButton&) = delete;
+  ~SimpleBackButton() override = default;
+
+  // ToolbarButton:
+  void UpdateIcon() override {
+    const bool touch_ui = ui::TouchUiController::Get()->touch_ui();
+    const gfx::VectorIcon* image =
+        touch_ui ? &kBackArrowTouchIcon : &vector_icons::kBackArrowIcon;
+    UpdateIconsWithStandardColors(*image);
+  }
+};
+
 }  // namespace
 
 // static
@@ -367,6 +402,16 @@
     base::OnceCallback<void(bool)> switch_finished_callback) {
   profile_color_ = profile_color;
 
+  if (signed_in_profile_being_created_) {
+    // The profile is already created (the user went back and forth again). No
+    // need to create it again.
+    std::move(switch_finished_callback).Run(true);
+    // Do not load any url because the desired sign-in screen is still loaded in
+    // `new_profile_contents_`.
+    ShowScreen(new_profile_contents_.get(), GURL(), /*show_toolbar=*/true);
+    return;
+  }
+
   DCHECK(!switch_finished_callback_);
   switch_finished_callback_ = std::move(switch_finished_callback);
 
@@ -404,6 +449,10 @@
     return;
   }
 
+  // Apply the default theme to get consistent colors for toolbars (this matters
+  // for linux where the 'system' theme is used for new profiles).
+  auto* theme_service = ThemeServiceFactory::GetForProfile(profile);
+  theme_service->UseDefaultTheme();
   if (signin_util::IsForceSigninEnabled()) {
     // Show the embedded sign-in flow if the force signin is enabled.
     UserManagerProfileDialog::ShowForceSigninDialog(
@@ -436,12 +485,28 @@
   // make sure the flow does not create multiple profiles simultaneously.
   signed_in_profile_being_created_ = profile;
 
-  // TODO(crbug.com/1126913): Build the simple toolbar with the back button.
+  // Build the toolbar. Do it as late as here because the elements depend on the
+  // ThemeProvider which is available only by signed_in_profile_being_created_.
+  const ui::ThemeProvider* tp = GetThemeProviderForProfileBeingCreated();
+  toolbar_->SetBackground(views::CreateSolidBackground(
+      tp->GetColor(ThemeProperties::COLOR_TOOLBAR)));
+
+  auto back_button = std::make_unique<SimpleBackButton>(base::BindRepeating(
+      &ProfilePickerView::BackButtonPressed, base::Unretained(this)));
+  toolbar_->AddChildView(std::move(back_button));
+
+  // TODO(crbug.com/1126913): Build the read-only omnibox.
 
   new_profile_contents_ = content::WebContents::Create(
       content::WebContents::CreateParams(signed_in_profile_being_created_));
   new_profile_contents_->SetDelegate(this);
 
+  // Make sure the web contents used for sign-in has proper background (for dark
+  // mode).
+  views::WebContentsSetBackgroundColor::CreateForWebContentsWithColor(
+      new_profile_contents_.get(),
+      tp->GetColor(ThemeProperties::COLOR_NTP_BACKGROUND));
+
   ShowScreen(new_profile_contents_.get(), GetSigninURL(),
              /*show_toolbar=*/true);
 }
@@ -578,6 +643,11 @@
                                    views::MaximumFlexSizeRule::kUnbounded));
 
   auto toolbar = std::make_unique<views::View>();
+  toolbar->SetLayoutManager(std::make_unique<views::FlexLayout>())
+      ->SetOrientation(views::LayoutOrientation::kHorizontal)
+      .SetCrossAxisAlignment(views::LayoutAlignment::kCenter)
+      .SetCollapseMargins(true)
+      .SetInteriorMargin(kToolbarPadding);
   toolbar->SetProperty(
       views::kFlexBehaviorKey,
       views::FlexSpecification(views::MinimumFlexSizeRule::kPreferred,
@@ -592,9 +662,11 @@
 void ProfilePickerView::ShowScreen(content::WebContents* contents,
                                    const GURL& url,
                                    bool show_toolbar) {
-  contents->GetController().LoadURL(url, content::Referrer(),
-                                    ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
-                                    std::string());
+  if (!url.is_empty()) {
+    contents->GetController().LoadURL(url, content::Referrer(),
+                                      ui::PAGE_TRANSITION_AUTO_TOPLEVEL,
+                                      std::string());
+  }
   web_view_->SetWebContents(contents);
   web_view_->RequestFocus();
 
@@ -603,6 +675,22 @@
   toolbar_->SetVisible(show_toolbar);
 }
 
+void ProfilePickerView::BackButtonPressed(const ui::Event& event) {
+  if (web_view_->GetWebContents() != new_profile_contents_.get()) {
+    return;
+  }
+
+  if (new_profile_contents_->GetController().CanGoBack()) {
+    new_profile_contents_->GetController().GoBack();
+    return;
+  }
+
+  // Move from sign-in back to the previous screen of profile creation.
+  // Do not load any url because the desired screen is still loaded in
+  // `system_profile_contents_`.
+  ShowScreen(system_profile_contents_.get(), GURL(), /*show_toolbar=*/false);
+}
+
 void ProfilePickerView::OnRefreshTokenUpdatedForAccount(
     const CoreAccountInfo& account_info) {
   DCHECK(!account_info.IsEmpty());
diff --git a/chrome/browser/ui/views/profiles/profile_picker_view.h b/chrome/browser/ui/views/profiles/profile_picker_view.h
index 91bb348..a48ce29 100644
--- a/chrome/browser/ui/views/profiles/profile_picker_view.h
+++ b/chrome/browser/ui/views/profiles/profile_picker_view.h
@@ -108,11 +108,14 @@
   // Builds the views hieararchy.
   void BuildLayout();
 
-  // Shows a screen with `url` in `contents` and potentially `show_toolbar`.
+  // Shows a screen with `url` in `contents` and potentially `show_toolbar`. If
+  // `url` is empty, it only shows `contents` with its currently loaded url.
   void ShowScreen(content::WebContents* contents,
                   const GURL& url,
                   bool show_toolbar);
 
+  void BackButtonPressed(const ui::Event& event);
+
   // Helper functions to deal with the lack of extended account info.
   void SetExtendedAccountInfoTimeoutForTesting(base::TimeDelta timeout);
   void OnExtendedAccountInfoTimeout(const CoreAccountInfo& account);
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt
index be83b691..d9693c2 100644
--- a/chrome/build/linux.pgo.txt
+++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@
-chrome-linux-master-1610150355-4a8e87c65afe038c52dde92bd9ad8141fba84ab9.profdata
+chrome-linux-master-1610294646-d9496012030808fbbd5c6d71395353a15075c9f2.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt
index 936d42db..3384c90 100644
--- a/chrome/build/win32.pgo.txt
+++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@
-chrome-win32-master-1610107094-5d3c24229731decbd402a4499ebb6cac6decdedb.profdata
+chrome-win32-master-1610294646-5cd814ecb87ad7a408cdeda7da36a6886e7402c5.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt
index c151657..089ab8f 100644
--- a/chrome/build/win64.pgo.txt
+++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@
-chrome-win64-master-1610161046-8bb47bdff715346cff6fa6c623eb76f6c2e1f1b6.profdata
+chrome-win64-master-1610294646-193d19344cbd53e124bebc9434b6d5bafe44fd51.profdata
diff --git a/chrome/common/channel_info.h b/chrome/common/channel_info.h
index 5958587..b9e0d89 100644
--- a/chrome/common/channel_info.h
+++ b/chrome/common/channel_info.h
@@ -42,6 +42,12 @@
 version_info::Channel GetChannel();
 
 #if defined(OS_MAC)
+// Because the channel information on the Mac is baked into the Info.plist file,
+// and that file may change during an update, this function must be called
+// early in startup to cache the channel info so that the correct channel info
+// can be returned later.
+void CacheChannelInfo();
+
 // Maps the name of the channel to version_info::Channel, always returning
 // Channel::UNKNOWN for unbranded builds. For branded builds defaults to
 // Channel::STABLE, if channel is empty, else matches the name and returns
diff --git a/chrome/common/channel_info_mac.mm b/chrome/common/channel_info_mac.mm
index 848ef7e..e9e7931 100644
--- a/chrome/common/channel_info_mac.mm
+++ b/chrome/common/channel_info_mac.mm
@@ -7,53 +7,101 @@
 #import <Foundation/Foundation.h>
 
 #include "base/mac/bundle_locations.h"
+#include "base/macros.h"
+#include "base/no_destructor.h"
 #include "base/strings/sys_string_conversions.h"
 #include "build/branding_buildflags.h"
 #include "components/version_info/version_info.h"
 
 namespace chrome {
 
-std::string GetChannelName() {
+namespace {
+
+std::string ChannelName() {
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-  // Use the main Chrome application bundle and not the framework bundle.
-  // Keystone keys don't live in the framework.
-  NSBundle* bundle = base::mac::OuterBundle();
-  NSString* channel = [bundle objectForInfoDictionaryKey:@"KSChannelID"];
+  static const base::NoDestructor<std::string> channel([] {
+    // Use the main Chrome application bundle and not the framework bundle.
+    // Keystone keys don't live in the framework.
+    NSBundle* bundle = base::mac::OuterBundle();
+    NSString* channel = [bundle objectForInfoDictionaryKey:@"KSChannelID"];
 
-  // Only ever return "", "unknown", "beta", "dev", or "canary" in a branded
-  // build.
-  // KSProductID is not set (for stable) or "beta", "dev" or "canary" for
-  // the intel-only build.
-  // KSProductID is "arm64" (for stable) or "arm64-beta", "arm64-dev" or
-  // "arm64-canary" for the arm-only build.
-  // KSProductID is "universal" (for stable) or "universal-beta",
-  // "universal-dev" or "universal-canary" for the arm+intel universal binary.
-  if (![bundle objectForInfoDictionaryKey:@"KSProductID"]) {
-    // This build is not Keystone-enabled, it can't have a channel.
-    channel = @"unknown";
-  } else if (!channel || [channel isEqual:@"arm64"] ||
-             [channel isEqual:@"universal"]) {
-    // For the intel stable channel, KSChannelID is not set.
-    channel = @"";
-  } else {
-    if ([channel hasPrefix:@"arm64-"])
-      channel = [channel substringFromIndex:[@"arm64-" length]];
-    else if ([channel hasPrefix:@"universal-"])
-      channel = [channel substringFromIndex:[@"universal-" length]];
-    if ([channel isEqual:@"beta"] || [channel isEqual:@"dev"] ||
-        [channel isEqual:@"canary"]) {
-      // do nothing.
-    } else {
+    // Only ever return "", "unknown", "beta", "dev", or "canary" in a branded
+    // build.
+    // KSProductID is not set (for stable) or "beta", "dev" or "canary" for
+    // the intel-only build.
+    // KSProductID is "arm64" (for stable) or "arm64-beta", "arm64-dev" or
+    // "arm64-canary" for the arm-only build.
+    // KSProductID is "universal" (for stable) or "universal-beta",
+    // "universal-dev" or "universal-canary" for the arm+intel universal binary.
+    if (![bundle objectForInfoDictionaryKey:@"KSProductID"]) {
+      // This build is not Keystone-enabled, it can't have a channel.
       channel = @"unknown";
+    } else if (!channel || [channel isEqual:@"arm64"] ||
+               [channel isEqual:@"universal"]) {
+      // For the intel stable channel, KSChannelID is not set.
+      channel = @"";
+    } else {
+      if ([channel hasPrefix:@"arm64-"])
+        channel = [channel substringFromIndex:[@"arm64-" length]];
+      else if ([channel hasPrefix:@"universal-"])
+        channel = [channel substringFromIndex:[@"universal-" length]];
+      if ([channel isEqual:@"beta"] || [channel isEqual:@"dev"] ||
+          [channel isEqual:@"canary"]) {
+        // Do nothing.
+      } else {
+        channel = @"unknown";
+      }
     }
-  }
 
-  return base::SysNSStringToUTF8(channel);
+    return base::SysNSStringToUTF8(channel);
+  }());
+  return *channel;
 #else
   return std::string();
 #endif
 }
 
+bool SideBySideCapable() {
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+  static const base::NoDestructor<bool> capable([] {
+    // Use the main Chrome application bundle and not the framework bundle.
+    // Keystone keys don't live in the framework.
+    NSBundle* bundle = base::mac::OuterBundle();
+    if (![bundle objectForInfoDictionaryKey:@"KSProductID"]) {
+      // This build is not Keystone-enabled, and without a channel assume it is
+      // side-by-side capable.
+      return true;
+    }
+
+    if (GetChannelName().empty()) {
+      // For the stable channel, GetChannelName() returns the empty string.
+      // Stable Chromes are what side-by-side capable Chromes are running
+      // side-by-side *to* and by definition are side-by-side capable.
+      return true;
+    }
+
+    // If there is a CrProductDirName key, then the user data dir of this
+    // beta/dev/canary Chrome is separate, and it can run side-by-side to the
+    // stable Chrome.
+    return [bundle objectForInfoDictionaryKey:@"CrProductDirName"];
+  }());
+  return *capable;
+#else
+  return true;
+#endif
+}
+
+}  // namespace
+
+void CacheChannelInfo() {
+  ignore_result(ChannelName());
+  ignore_result(SideBySideCapable());
+}
+
+std::string GetChannelName() {
+  return ChannelName();
+}
+
 version_info::Channel GetChannelByName(const std::string& channel) {
 #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
   if (channel.empty())
@@ -69,34 +117,11 @@
 }
 
 bool IsSideBySideCapable() {
-#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
-  // Use the main Chrome application bundle and not the framework bundle.
-  // Keystone keys don't live in the framework.
-  NSBundle* bundle = base::mac::OuterBundle();
-  if (![bundle objectForInfoDictionaryKey:@"KSProductID"]) {
-    // This build is not Keystone-enabled, and without a channel assume it is
-    // side-by-side capable.
-    return true;
-  }
-
-  if (GetChannelName().empty()) {
-    // For the stable channel, GetChannelName() returns the empty string.
-    // Stable Chromes are what side-by-side capable Chromes are running
-    // side-by-side *to* and by definition are side-by-side capable.
-    return true;
-  }
-
-  // If there is a CrProductDirName key, then the user data dir of this
-  // beta/dev/canary Chrome is separate, and it can run side-by-side to the
-  // stable Chrome.
-  return [bundle objectForInfoDictionaryKey:@"CrProductDirName"];
-#else
-  return true;
-#endif
+  return SideBySideCapable();
 }
 
 version_info::Channel GetChannel() {
-  return GetChannelByName(GetChannelName());
+  return GetChannelByName(ChannelName());
 }
 
 }  // namespace chrome
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index 396258fb..f696aa7 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-13708.0.0
\ No newline at end of file
+13716.0.0
\ No newline at end of file
diff --git a/chromeos/components/scanning/resources/scan_preview.html b/chromeos/components/scanning/resources/scan_preview.html
index dbad0f5..23ccf2f 100644
--- a/chromeos/components/scanning/resources/scan_preview.html
+++ b/chromeos/components/scanning/resources/scan_preview.html
@@ -58,6 +58,10 @@
     width: calc(100% - 2px);
   }
 
+  .scanned-image {
+    display: block;
+  }
+
   /* Add top margin to all but the first scanned image. */
   .scanned-image:nth-of-type(n+2) {
     margin-top: 8px;
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt
index a07ada52..ccd2093 100644
--- a/chromeos/profiles/atom.afdo.newest.txt
+++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-atom-89-4367.0-1609757097-benchmark-89.0.4381.0-r1-redacted.afdo.xz
+chromeos-chrome-amd64-atom-89-4367.0-1609757097-benchmark-89.0.4383.0-r1-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt
index 122eb2b..62663a2 100644
--- a/chromeos/profiles/bigcore.afdo.newest.txt
+++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-bigcore-89-4367.0-1609764762-benchmark-89.0.4381.0-r1-redacted.afdo.xz
+chromeos-chrome-amd64-bigcore-89-4367.0-1609764762-benchmark-89.0.4383.0-r1-redacted.afdo.xz
diff --git a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom
index 0f87f37a..bc7eaed 100644
--- a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom
+++ b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom
@@ -116,6 +116,25 @@
   // Unused memory available to the process, in KiB. This will always be
   // |total_memory_kib| - |resident_memory_kib|.
   uint32 free_memory_kib;
+  // The sum of bytes passed to system read calls. This includes terminal
+  // I/O and is independent of whether the physical disk is accessed.
+  uint64 bytes_read;
+  // The sum of bytes passed to system write calls. This includes terminal
+  // I/O and is independent of whether the physical disk is accessed.
+  uint64 bytes_written;
+  // Attempted count of read syscalls.
+  uint64 read_system_calls;
+  // Attempted count of write syscalls.
+  uint64 write_system_calls;
+  // Attempt to count the number of bytes which this process really did cause
+  // to be fetched from the storage layer.
+  uint64 physical_bytes_read;
+  // Attempt to count the number of bytes which this process caused to be sent
+  // to the storage layer.
+  uint64 physical_bytes_written;
+  // Number of bytes which this process caused to not happen, by truncating
+  // pagecache.
+  uint64 cancelled_bytes_written;
 };
 
 // Battery probe result. Can either be populated with the BatteryInfo or an
diff --git a/components/browser_ui/styles/android/java/res/values/styles.xml b/components/browser_ui/styles/android/java/res/values/styles.xml
index b73e81a..92dd5f1 100644
--- a/components/browser_ui/styles/android/java/res/values/styles.xml
+++ b/components/browser_ui/styles/android/java/res/values/styles.xml
@@ -9,7 +9,7 @@
         <!-- Text colors -->
         <item name="android:textColorLink">@color/default_text_color_link</item>
         <item name="android:textColorHighlight">@color/text_highlight_color</item>
-        <item name="android:textColorHint">@color/default_text_color_secondary</item>
+        <item name="android:textColorHint">@color/default_text_color_hint_list</item>
 
         <!-- Color of checkboxes, switches, buttons, etc. -->
         <item name="colorAccent">@color/default_control_color_active</item>
diff --git a/components/full_restore/full_restore_read_handler.cc b/components/full_restore/full_restore_read_handler.cc
index 07b49fd70..267b3b7 100644
--- a/components/full_restore/full_restore_read_handler.cc
+++ b/components/full_restore/full_restore_read_handler.cc
@@ -37,6 +37,15 @@
                      std::move(callback)));
 }
 
+void FullRestoreReadHandler::RemoveApp(const base::FilePath& profile_path,
+                                       const std::string& app_id) {
+  auto it = profile_path_to_restore_data_.find(profile_path);
+  if (it == profile_path_to_restore_data_.end())
+    return;
+
+  it->second->RemoveApp(app_id);
+}
+
 void FullRestoreReadHandler::OnGetRestoreData(
     const base::FilePath& profile_path,
     Callback callback,
diff --git a/components/full_restore/full_restore_read_handler.h b/components/full_restore/full_restore_read_handler.h
index 6104189b..f531d39 100644
--- a/components/full_restore/full_restore_read_handler.h
+++ b/components/full_restore/full_restore_read_handler.h
@@ -43,6 +43,10 @@
   // calls |callback| when the reading operation is done.
   void ReadFromFile(const base::FilePath& profile_path, Callback callback);
 
+  // Removes app launching and app windows for an app with the given |app_id|
+  // from |profile_path_to_restore_data_| for |profile_path| .
+  void RemoveApp(const base::FilePath& profile_path, const std::string& app_id);
+
  private:
   // Invoked when reading the restore data from |profile_path| is finished, and
   // calls |callback| to notify that the reading operation is done.
diff --git a/components/full_restore/full_restore_save_handler.cc b/components/full_restore/full_restore_save_handler.cc
index f6b2ebcc..0c45667 100644
--- a/components/full_restore/full_restore_save_handler.cc
+++ b/components/full_restore/full_restore_save_handler.cc
@@ -142,6 +142,19 @@
                          weak_factory_.GetWeakPtr(), profile_path));
 }
 
+void FullRestoreSaveHandler::RemoveApp(const base::FilePath& profile_path,
+                                       const std::string& app_id) {
+  auto it = profile_path_to_restore_data_.find(profile_path);
+  if (it == profile_path_to_restore_data_.end())
+    return;
+
+  it->second.RemoveApp(app_id);
+
+  pending_save_profile_paths_.insert(profile_path);
+
+  MaybeStartSaveTimer();
+}
+
 void FullRestoreSaveHandler::MaybeStartSaveTimer() {
   if (!save_timer_.IsRunning() && save_running_.empty()) {
     save_timer_.Start(FROM_HERE, kSaveDelay,
diff --git a/components/full_restore/full_restore_save_handler.h b/components/full_restore/full_restore_save_handler.h
index 4e6cc9ff..d1a81bd 100644
--- a/components/full_restore/full_restore_save_handler.h
+++ b/components/full_restore/full_restore_save_handler.h
@@ -65,6 +65,10 @@
   // data.
   void Flush(const base::FilePath& profile_path);
 
+  // Removes app launching and app windows for an app with the given |app_id|
+  // from |file_path_to_restore_data_| for |profile_path| .
+  void RemoveApp(const base::FilePath& profile_path, const std::string& app_id);
+
   base::OneShotTimer* GetTimerForTesting() { return &save_timer_; }
 
  private:
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
index f9455f4..018bb9c 100644
--- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
+++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_coordinator.mm
@@ -298,7 +298,7 @@
       changeDiscoverFeedHeaderVisibility:[self.contentSuggestionsVisible
                                                  value]];
   self.suggestionsViewController.contentSuggestionsEnabled =
-      prefs->FindPreference(prefs::kArticlesForYouEnabled);
+      contentSuggestionsEnabled;
   self.suggestionsViewController.handler = self;
   self.contentSuggestionsMediator.consumer = self.suggestionsViewController;
 
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
index 603fb7b..fd5e604 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-96000536c395a463386e923a7515471c664a5394
\ No newline at end of file
+19980861b244b1c9f0c3f389bb8d8a1ef5272dca
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
index fb3c96e..936790f 100644
--- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-27cc14be2139609c7c7da56c525c3bae5cf50d17
\ No newline at end of file
+a9906b12ff830faee298d693baea0493d2d8f8c8
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
index 51f978a..4954a6e 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-8aa76742ce99c2f6bf9abdf6fd8e1ae5d7c8b833
\ No newline at end of file
+01a08f8e8f7482c18d3f9b00a3a5ecdc34d03fd0
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
index cb695ab..fec5239 100644
--- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-0d6c6bcfbf96031da1e97b6ca45ec1b950c947d8
\ No newline at end of file
+01820e63c75a24d32ad4e0f415d3c2ab8e097fb6
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
index 427084cc..ff692916 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-ada10ff16fa2b99659bc9a41f13f8dfe50cc6770
\ No newline at end of file
+63b933988525e9ed3d348e1a947681aa491b3820
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
index 56d73bd4..51ca470 100644
--- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-c5e26248c1626432705c1dacf39c8ac405462c16
\ No newline at end of file
+911143fdb76c9713567da7140dd9a34572052047
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
index 61c4b9d8..d67b437 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-721a9c861f3bd1764e506cadc00abad6c6afbbe3
\ No newline at end of file
+8e900c2655f9577fdc8a03d798dac807166d789a
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
index fed1a58..d19efd0 100644
--- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-d56e002052ef6e2460cecd84270eee100de66c32
\ No newline at end of file
+c4623b87c0e7c17033cfacfb53fd9cf20436d43e
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
index 290ed473..ccf9941 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@
-1d2d8d8eb2500924ef44d5567e62b8e999650149
\ No newline at end of file
+d124cc513ed5a625cd8f77851e0f8623831cbe21
\ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
index 6a907b2..eb1c154 100644
--- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
+++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@
-28a50656e0a255bd518dda7ae93dfc68fcac3054
\ No newline at end of file
+9f56cf69aaecaac6af268031fdf1909bd79fa6df
\ No newline at end of file
diff --git a/media/audio/audio_manager_base.cc b/media/audio/audio_manager_base.cc
index 5e1d35d..2f97c51cb 100644
--- a/media/audio/audio_manager_base.cc
+++ b/media/audio/audio_manager_base.cc
@@ -343,7 +343,7 @@
   std::string output_device_id =
       AudioDeviceDescription::IsDefaultDevice(device_id)
           ?
-#if BUILDFLAG(IS_CHROMEOS_ASH)
+#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS)
           // On ChromeOS, it is expected that, if the default device is given,
           // no specific device ID should be used since the actual output device
           // should change dynamically if the system default device changes.
diff --git a/services/network/trust_tokens/operation_timing_request_helper_wrapper.cc b/services/network/trust_tokens/operation_timing_request_helper_wrapper.cc
index 8037935..28f3ce2 100644
--- a/services/network/trust_tokens/operation_timing_request_helper_wrapper.cc
+++ b/services/network/trust_tokens/operation_timing_request_helper_wrapper.cc
@@ -7,9 +7,9 @@
 namespace network {
 
 OperationTimingRequestHelperWrapper::OperationTimingRequestHelperWrapper(
-    mojom::TrustTokenOperationType type,
+    std::unique_ptr<TrustTokenOperationMetricsRecorder> metrics_recorder,
     std::unique_ptr<TrustTokenRequestHelper> helper)
-    : type_(type), helper_(std::move(helper)) {}
+    : recorder_(std::move(metrics_recorder)), helper_(std::move(helper)) {}
 
 OperationTimingRequestHelperWrapper::~OperationTimingRequestHelperWrapper() =
     default;
@@ -17,7 +17,7 @@
 void OperationTimingRequestHelperWrapper::Begin(
     net::URLRequest* request,
     base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done) {
-  recorder_.BeginBegin(type_);
+  recorder_->BeginBegin();
   helper_->Begin(
       request, base::BindOnce(&OperationTimingRequestHelperWrapper::FinishBegin,
                               weak_factory_.GetWeakPtr(), std::move(done)));
@@ -26,7 +26,7 @@
 void OperationTimingRequestHelperWrapper::Finalize(
     mojom::URLResponseHead* response,
     base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done) {
-  recorder_.BeginFinalize();
+  recorder_->BeginFinalize();
   helper_->Finalize(
       response,
       base::BindOnce(&OperationTimingRequestHelperWrapper::FinishFinalize,
@@ -36,14 +36,14 @@
 void OperationTimingRequestHelperWrapper::FinishBegin(
     base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done,
     mojom::TrustTokenOperationStatus status) {
-  recorder_.FinishBegin(status);
+  recorder_->FinishBegin(status);
   std::move(done).Run(status);
 }
 
 void OperationTimingRequestHelperWrapper::FinishFinalize(
     base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done,
     mojom::TrustTokenOperationStatus status) {
-  recorder_.FinishFinalize(status);
+  recorder_->FinishFinalize(status);
   std::move(done).Run(status);
 }
 
diff --git a/services/network/trust_tokens/operation_timing_request_helper_wrapper.h b/services/network/trust_tokens/operation_timing_request_helper_wrapper.h
index bb8e846..b9804f7 100644
--- a/services/network/trust_tokens/operation_timing_request_helper_wrapper.h
+++ b/services/network/trust_tokens/operation_timing_request_helper_wrapper.h
@@ -10,6 +10,7 @@
 #include "base/memory/weak_ptr.h"
 #include "services/network/trust_tokens/trust_token_operation_metrics_recorder.h"
 #include "services/network/trust_tokens/trust_token_request_helper.h"
+#include "services/network/trust_tokens/trust_token_request_issuance_helper.h"
 
 namespace network {
 
@@ -19,7 +20,7 @@
 class OperationTimingRequestHelperWrapper : public TrustTokenRequestHelper {
  public:
   explicit OperationTimingRequestHelperWrapper(
-      mojom::TrustTokenOperationType type,
+      std::unique_ptr<TrustTokenOperationMetricsRecorder> metrics_recorder,
       std::unique_ptr<TrustTokenRequestHelper> helper);
   ~OperationTimingRequestHelperWrapper() override;
 
@@ -46,8 +47,7 @@
       base::OnceCallback<void(mojom::TrustTokenOperationStatus)> done,
       mojom::TrustTokenOperationStatus status);
 
-  mojom::TrustTokenOperationType type_;
-  TrustTokenOperationMetricsRecorder recorder_;
+  std::unique_ptr<TrustTokenOperationMetricsRecorder> recorder_;
   std::unique_ptr<TrustTokenRequestHelper> helper_;
 
   base::WeakPtrFactory<OperationTimingRequestHelperWrapper> weak_factory_{this};
diff --git a/services/network/trust_tokens/trust_token_operation_metrics_recorder.cc b/services/network/trust_tokens/trust_token_operation_metrics_recorder.cc
index 23659efcd..3ec3a9ea 100644
--- a/services/network/trust_tokens/trust_token_operation_metrics_recorder.cc
+++ b/services/network/trust_tokens/trust_token_operation_metrics_recorder.cc
@@ -31,6 +31,8 @@
   switch (status) {
     case mojom::TrustTokenOperationStatus::kOk:
     case mojom::TrustTokenOperationStatus::kAlreadyExists:
+    case mojom::TrustTokenOperationStatus::
+        kOperationSuccessfullyFulfilledLocally:
       return "Success";
     default:
       return "Failure";
@@ -54,9 +56,13 @@
 
 }  // namespace
 
-void TrustTokenOperationMetricsRecorder::BeginBegin(
-    mojom::TrustTokenOperationType type) {
-  type_ = type;
+TrustTokenOperationMetricsRecorder::TrustTokenOperationMetricsRecorder(
+    mojom::TrustTokenOperationType type)
+    : type_(type) {}
+TrustTokenOperationMetricsRecorder::~TrustTokenOperationMetricsRecorder() =
+    default;
+
+void TrustTokenOperationMetricsRecorder::BeginBegin() {
   begin_start_ = base::TimeTicks::Now();
 }
 
diff --git a/services/network/trust_tokens/trust_token_operation_metrics_recorder.h b/services/network/trust_tokens/trust_token_operation_metrics_recorder.h
index 20ab192..ec1b2ce 100644
--- a/services/network/trust_tokens/trust_token_operation_metrics_recorder.h
+++ b/services/network/trust_tokens/trust_token_operation_metrics_recorder.h
@@ -7,6 +7,7 @@
 
 #include "base/time/time.h"
 #include "services/network/public/mojom/trust_tokens.mojom.h"
+#include "services/network/trust_tokens/trust_token_request_issuance_helper.h"
 
 namespace network {
 
@@ -29,15 +30,16 @@
 // operation.
 class TrustTokenOperationMetricsRecorder final {
  public:
-  TrustTokenOperationMetricsRecorder() = default;
-  ~TrustTokenOperationMetricsRecorder() = default;
+  explicit TrustTokenOperationMetricsRecorder(
+      mojom::TrustTokenOperationType type);
+  ~TrustTokenOperationMetricsRecorder();
 
   TrustTokenOperationMetricsRecorder(
       const TrustTokenOperationMetricsRecorder&) = delete;
   TrustTokenOperationMetricsRecorder& operator=(
       const TrustTokenOperationMetricsRecorder&) = delete;
 
-  void BeginBegin(mojom::TrustTokenOperationType type);
+  void BeginBegin();
   void FinishBegin(mojom::TrustTokenOperationStatus status);
 
   void BeginFinalize();
diff --git a/services/network/trust_tokens/trust_token_operation_metrics_recorder_unittest.cc b/services/network/trust_tokens/trust_token_operation_metrics_recorder_unittest.cc
index 3316660..adbdd1e 100644
--- a/services/network/trust_tokens/trust_token_operation_metrics_recorder_unittest.cc
+++ b/services/network/trust_tokens/trust_token_operation_metrics_recorder_unittest.cc
@@ -15,10 +15,11 @@
 TEST(TrustTokenOperationMetricsRecorder, Success) {
   base::test::TaskEnvironment env(
       base::test::TaskEnvironment::TimeSource::MOCK_TIME);
-  TrustTokenOperationMetricsRecorder recorder;
+  TrustTokenOperationMetricsRecorder recorder(
+      mojom::TrustTokenOperationType::kIssuance);
   base::HistogramTester histograms;
 
-  recorder.BeginBegin(mojom::TrustTokenOperationType::kIssuance);
+  recorder.BeginBegin();
   env.FastForwardBy(base::TimeDelta::FromSeconds(1));
   recorder.FinishBegin(mojom::TrustTokenOperationStatus::kOk);
 
@@ -59,10 +60,11 @@
 TEST(TrustTokenOperationMetricsRecorder, BeginFailure) {
   base::test::TaskEnvironment env(
       base::test::TaskEnvironment::TimeSource::MOCK_TIME);
-  TrustTokenOperationMetricsRecorder recorder;
+  TrustTokenOperationMetricsRecorder recorder(
+      mojom::TrustTokenOperationType::kRedemption);
   base::HistogramTester histograms;
 
-  recorder.BeginBegin(mojom::TrustTokenOperationType::kRedemption);
+  recorder.BeginBegin();
   env.FastForwardBy(base::TimeDelta::FromSeconds(1));
   recorder.FinishBegin(mojom::TrustTokenOperationStatus::kUnknownError);
 
@@ -77,10 +79,11 @@
 TEST(TrustTokenOperationMetricsRecorder, FinalizeFailure) {
   base::test::TaskEnvironment env(
       base::test::TaskEnvironment::TimeSource::MOCK_TIME);
-  TrustTokenOperationMetricsRecorder recorder;
+  TrustTokenOperationMetricsRecorder recorder(
+      mojom::TrustTokenOperationType::kSigning);
   base::HistogramTester histograms;
 
-  recorder.BeginBegin(mojom::TrustTokenOperationType::kSigning);
+  recorder.BeginBegin();
   env.FastForwardBy(base::TimeDelta::FromSeconds(1));
   recorder.FinishBegin(mojom::TrustTokenOperationStatus::kOk);
 
diff --git a/services/network/trust_tokens/trust_token_request_helper_factory.cc b/services/network/trust_tokens/trust_token_request_helper_factory.cc
index c5b9d70..8c76ded 100644
--- a/services/network/trust_tokens/trust_token_request_helper_factory.cc
+++ b/services/network/trust_tokens/trust_token_request_helper_factory.cc
@@ -25,8 +25,10 @@
 #include "services/network/trust_tokens/local_trust_token_operation_delegate.h"
 #include "services/network/trust_tokens/local_trust_token_operation_delegate_impl.h"
 #include "services/network/trust_tokens/operating_system_matching.h"
+#include "services/network/trust_tokens/operation_timing_request_helper_wrapper.h"
 #include "services/network/trust_tokens/suitable_trust_token_origin.h"
 #include "services/network/trust_tokens/trust_token_key_commitment_controller.h"
+#include "services/network/trust_tokens/trust_token_operation_metrics_recorder.h"
 #include "services/network/trust_tokens/trust_token_parameterization.h"
 #include "services/network/trust_tokens/trust_token_request_canonicalizer.h"
 #include "services/network/trust_tokens/trust_token_request_redemption_helper.h"
@@ -140,31 +142,36 @@
     TrustTokenStore* store) {
   DCHECK(params);
 
+  auto metrics_recorder =
+      std::make_unique<TrustTokenOperationMetricsRecorder>(params->type);
+
   switch (params->type) {
     case mojom::TrustTokenOperationType::kIssuance: {
       LogOutcome(net_log, params->type,
                  Outcome::kSuccessfullyCreatedAnIssuanceHelper);
-      std::move(done).Run(std::unique_ptr<TrustTokenRequestHelper>(
-          new TrustTokenRequestIssuanceHelper(
-              std::move(top_frame_origin), store, key_commitment_getter_,
-              std::make_unique<BoringsslTrustTokenIssuanceCryptographer>(),
-              std::make_unique<LocalTrustTokenOperationDelegateImpl>(
-                  context_client_provider_),
-              base::BindRepeating(&IsCurrentOperatingSystem),
-              std::move(net_log))));
+      auto helper = std::make_unique<TrustTokenRequestIssuanceHelper>(
+          std::move(top_frame_origin), store, key_commitment_getter_,
+          std::make_unique<BoringsslTrustTokenIssuanceCryptographer>(),
+          std::make_unique<LocalTrustTokenOperationDelegateImpl>(
+              context_client_provider_),
+          base::BindRepeating(&IsCurrentOperatingSystem), std::move(net_log));
+      std::move(done).Run(TrustTokenStatusOrRequestHelper(
+          std::make_unique<OperationTimingRequestHelperWrapper>(
+              std::move(metrics_recorder), std::move(helper))));
       return;
     }
 
     case mojom::TrustTokenOperationType::kRedemption: {
       LogOutcome(net_log, params->type,
                  Outcome::kSuccessfullyCreatedARedemptionHelper);
-      std::move(done).Run(std::unique_ptr<TrustTokenRequestHelper>(
-          new TrustTokenRequestRedemptionHelper(
-              std::move(top_frame_origin), params->refresh_policy, store,
-              key_commitment_getter_,
-              std::make_unique<Ed25519KeyPairGenerator>(),
-              std::make_unique<BoringsslTrustTokenRedemptionCryptographer>(),
-              std::move(net_log))));
+      auto helper = std::make_unique<TrustTokenRequestRedemptionHelper>(
+          std::move(top_frame_origin), params->refresh_policy, store,
+          key_commitment_getter_, std::make_unique<Ed25519KeyPairGenerator>(),
+          std::make_unique<BoringsslTrustTokenRedemptionCryptographer>(),
+          std::move(net_log));
+      std::move(done).Run(TrustTokenStatusOrRequestHelper(
+          std::make_unique<OperationTimingRequestHelperWrapper>(
+              std::move(metrics_recorder), std::move(helper))));
       return;
     }
 
@@ -199,12 +206,14 @@
 
       LogOutcome(net_log, params->type,
                  Outcome::kSuccessfullyCreatedASigningHelper);
-      std::move(done).Run(std::unique_ptr<TrustTokenRequestHelper>(
-          new TrustTokenRequestSigningHelper(
-              store, std::move(signing_params),
-              std::make_unique<Ed25519TrustTokenRequestSigner>(),
-              std::make_unique<TrustTokenRequestCanonicalizer>(),
-              std::move(net_log))));
+      auto helper = std::make_unique<TrustTokenRequestSigningHelper>(
+          store, std::move(signing_params),
+          std::make_unique<Ed25519TrustTokenRequestSigner>(),
+          std::make_unique<TrustTokenRequestCanonicalizer>(),
+          std::move(net_log));
+      std::move(done).Run(TrustTokenStatusOrRequestHelper(
+          std::make_unique<OperationTimingRequestHelperWrapper>(
+              std::move(metrics_recorder), std::move(helper))));
       return;
     }
   }
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
index 2a7e0e1..f33e95c 100644
--- a/services/network/url_loader.cc
+++ b/services/network/url_loader.cc
@@ -70,7 +70,6 @@
 #include "services/network/resource_scheduler/resource_scheduler_client.h"
 #include "services/network/sec_header_helpers.h"
 #include "services/network/throttling/scoped_throttling_token.h"
-#include "services/network/trust_tokens/operation_timing_request_helper_wrapper.h"
 #include "services/network/trust_tokens/trust_token_request_helper.h"
 #include "url/origin.h"
 
@@ -879,8 +878,7 @@
     return;
   }
 
-  trust_token_helper_ = std::make_unique<OperationTimingRequestHelperWrapper>(
-      type, status_or_helper.TakeOrCrash());
+  trust_token_helper_ = status_or_helper.TakeOrCrash();
   trust_token_helper_->Begin(
       url_request_.get(),
       base::BindOnce(&URLLoader::OnDoneBeginningTrustTokenOperation,
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json
index 18b0327..f98cac5 100644
--- a/testing/buildbot/chromium.android.fyi.json
+++ b/testing/buildbot/chromium.android.fyi.json
@@ -240,11 +240,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146",
         "resultdb": {
           "enable": true
         },
@@ -254,7 +254,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.145"
+              "revision": "version:87.0.4280.146"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -317,11 +317,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83",
         "resultdb": {
           "enable": true
         },
@@ -331,7 +331,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.82"
+              "revision": "version:88.0.4324.83"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -394,11 +394,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146",
         "resultdb": {
           "enable": true
         },
@@ -408,7 +408,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.145"
+              "revision": "version:87.0.4280.146"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -471,11 +471,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83",
         "resultdb": {
           "enable": true
         },
@@ -485,7 +485,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.82"
+              "revision": "version:88.0.4324.83"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -769,11 +769,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146",
         "resultdb": {
           "enable": true
         },
@@ -783,7 +783,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.145"
+              "revision": "version:87.0.4280.146"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -846,11 +846,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83",
         "resultdb": {
           "enable": true
         },
@@ -860,7 +860,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.82"
+              "revision": "version:88.0.4324.83"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -923,11 +923,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146",
         "resultdb": {
           "enable": true
         },
@@ -937,7 +937,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.145"
+              "revision": "version:87.0.4280.146"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1000,11 +1000,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83",
         "resultdb": {
           "enable": true
         },
@@ -1014,7 +1014,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.82"
+              "revision": "version:88.0.4324.83"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1298,11 +1298,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146",
         "resultdb": {
           "enable": true
         },
@@ -1312,7 +1312,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.145"
+              "revision": "version:87.0.4280.146"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1375,11 +1375,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83",
         "resultdb": {
           "enable": true
         },
@@ -1389,7 +1389,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.82"
+              "revision": "version:88.0.4324.83"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1452,11 +1452,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146",
         "resultdb": {
           "enable": true
         },
@@ -1466,7 +1466,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.145"
+              "revision": "version:87.0.4280.146"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1529,11 +1529,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83",
         "resultdb": {
           "enable": true
         },
@@ -1543,7 +1543,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.82"
+              "revision": "version:88.0.4324.83"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1827,11 +1827,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.145",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 87.0.4280.146",
         "resultdb": {
           "enable": true
         },
@@ -1841,7 +1841,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.145"
+              "revision": "version:87.0.4280.146"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1904,11 +1904,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82"
+            "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.82",
+        "name": "weblayer_instrumentation_test_versions_apk_Client Tests For 88.0.4324.83",
         "resultdb": {
           "enable": true
         },
@@ -1918,7 +1918,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.82"
+              "revision": "version:88.0.4324.83"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -1981,11 +1981,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.145",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 87.0.4280.146",
         "resultdb": {
           "enable": true
         },
@@ -1995,7 +1995,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M87",
-              "revision": "version:87.0.4280.145"
+              "revision": "version:87.0.4280.146"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
@@ -2058,11 +2058,11 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
-            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82"
+            "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
         },
-        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.82",
+        "name": "weblayer_instrumentation_test_versions_apk_Implementation Tests For 88.0.4324.83",
         "resultdb": {
           "enable": true
         },
@@ -2072,7 +2072,7 @@
             {
               "cipd_package": "chromium/testing/weblayer-x86",
               "location": "weblayer_instrumentation_test_M88",
-              "revision": "version:88.0.4324.82"
+              "revision": "version:88.0.4324.83"
             },
             {
               "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl
index f782eb49..ba85f789 100644
--- a/testing/buildbot/variants.pyl
+++ b/testing/buildbot/variants.pyl
@@ -319,13 +319,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--impl-version=88',
     ],
-    'identifier': 'Implementation Tests For 88.0.4324.82',
+    'identifier': 'Implementation Tests For 88.0.4324.83',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M88',
-          'revision': 'version:88.0.4324.82',
+          'revision': 'version:88.0.4324.83',
         }
       ],
     },
@@ -342,13 +342,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--impl-version=87',
     ],
-    'identifier': 'Implementation Tests For 87.0.4280.145',
+    'identifier': 'Implementation Tests For 87.0.4280.146',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M87',
-          'revision': 'version:87.0.4280.145',
+          'revision': 'version:87.0.4280.146',
         }
       ],
     },
@@ -388,13 +388,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--client-version=88',
     ],
-    'identifier': 'Client Tests For 88.0.4324.82',
+    'identifier': 'Client Tests For 88.0.4324.83',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M88',
-          'revision': 'version:88.0.4324.82',
+          'revision': 'version:88.0.4324.83',
         }
       ],
     },
@@ -411,13 +411,13 @@
       '../../weblayer/browser/android/javatests/skew/expectations.txt',
       '--client-version=87',
     ],
-    'identifier': 'Client Tests For 87.0.4280.145',
+    'identifier': 'Client Tests For 87.0.4280.146',
     'swarming': {
       'cipd_packages': [
         {
           'cipd_package': 'chromium/testing/weblayer-x86',
           'location': 'weblayer_instrumentation_test_M87',
-          'revision': 'version:87.0.4280.145',
+          'revision': 'version:87.0.4280.146',
         }
       ],
     },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 40cb89ea1..deda8d35 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -7950,7 +7950,8 @@
                 "chromeos",
                 "linux",
                 "ios",
-                "android"
+                "android",
+                "android_webview"
             ],
             "experiments": [
                 {
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
index fb0c736f..fc1dcaa2 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -10254,6 +10254,13 @@
       null,
       {}
      ]
+    ],
+    "usbDevice_transferIn-manual.https.html": [
+     "bd3df7d54ea63b45920d31d5719782ca1f066911",
+     [
+      null,
+      {}
+     ]
     ]
    },
    "xhr": {
@@ -52904,6 +52911,19 @@
        {}
       ]
      ],
+     "out-of-flow-in-multicolumn-014.html": [
+      "b6cede0400fc8c9fdc4ef136a7d3326056bda482",
+      [
+       null,
+       [
+        [
+         "/css/css-break/out-of-flow-in-multicolumn-014-ref.html",
+         "=="
+        ]
+       ],
+       {}
+      ]
+     ],
      "overflowed-block-with-no-room-after-000.html": [
       "084e16fb38de072fb83f92ba01302a2e404cdd97",
       [
@@ -184067,6 +184087,10 @@
       "bc6669e466ba0e4e29bf56b889f59e513f9270c4",
       []
      ],
+     "out-of-flow-in-multicolumn-014-ref.html": [
+      "6388a1864443571ea24e6174459c5205440ab030",
+      []
+     ],
      "parsing": {
       "box-decoration-break-computed-expected.txt": [
        "2bf7d5cfd390f7f989cffa3197643b87699fdefe",
@@ -236239,7 +236263,7 @@
      []
     ],
     "html.idl": [
-     "dfe4e1e586b5a2b5c5ba070f3c73bc55061e999d",
+     "5b30344ab7db4d3374c07a02a7b9453d18cccdf9",
      []
     ],
     "idle-detection.tentative.idl": [
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/html.idl b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
index dfe4e1e..5b30344a 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/html.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/html.idl
@@ -1397,11 +1397,11 @@
 
 interface mixin CanvasImageData {
   // pixel manipulation
-  ImageData createImageData(long sw, long sh);
+  ImageData createImageData([EnforceRange] long sw, [EnforceRange] long sh);
   ImageData createImageData(ImageData imagedata);
-  ImageData getImageData(long sx, long sy, long sw, long sh);
-  undefined putImageData(ImageData imagedata, long dx, long dy);
-  undefined putImageData(ImageData imagedata, long dx, long dy, long dirtyX, long dirtyY, long dirtyWidth, long dirtyHeight);
+  ImageData getImageData([EnforceRange] long sx, [EnforceRange] long sy, [EnforceRange] long sw, [EnforceRange] long sh);
+  undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy);
+  undefined putImageData(ImageData imagedata, [EnforceRange] long dx, [EnforceRange] long dy, [EnforceRange] long dirtyX, [EnforceRange] long dirtyY, [EnforceRange] long dirtyWidth, [EnforceRange] long dirtyHeight);
 };
 
 enum CanvasLineCap { "butt", "round", "square" };
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json
index ec0cd5f..3e9044e3 100644
--- a/tools/perf/core/perfetto_binary_roller/binary_deps.json
+++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -1,8 +1,8 @@
 {
     "trace_processor_shell": {
         "win": {
-            "hash": "0104dfe57b4d98879c4238741f712a983facfbd5",
-            "remote_path": "perfetto_binaries/trace_processor_shell/win/affdce7627b1030441a19608a1bcb321190786da/trace_processor_shell.exe"
+            "hash": "1b175a93430138b7855ceeb6eb8516c7e66c3684",
+            "remote_path": "perfetto_binaries/trace_processor_shell/win/35f78f4a4562f61cde3b096492628e1d47acb04e/trace_processor_shell.exe"
         },
         "mac": {
             "hash": "ad7587bcfdd72883c1e1b1596ddec4f81bbf7736",
diff --git a/ui/android/BUILD.gn b/ui/android/BUILD.gn
index fa6f3c8..65c930f4 100644
--- a/ui/android/BUILD.gn
+++ b/ui/android/BUILD.gn
@@ -147,6 +147,7 @@
     "java/res/color/chip_stroke_color.xml",
     "java/res/color/chip_text_color.xml",
     "java/res/color/chip_text_color_secondary.xml",
+    "java/res/color/default_text_color_hint_list.xml",
     "java/res/color/default_text_color_inverse_list.xml",
     "java/res/color/default_text_color_light_list.xml",
     "java/res/color/default_text_color_list.xml",
diff --git a/ui/android/java/res/color/default_text_color_hint_list.xml b/ui/android/java/res/color/default_text_color_hint_list.xml
new file mode 100644
index 0000000..d38c58d
--- /dev/null
+++ b/ui/android/java/res/color/default_text_color_hint_list.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2021 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.
+-->
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:color="@color/default_text_color_disabled" android:state_enabled="false"/>
+    <item android:color="@color/default_text_color_secondary" />
+</selector>
\ No newline at end of file
diff --git a/ui/base/ime/win/tsf_text_store.cc b/ui/base/ime/win/tsf_text_store.cc
index 31309dd2..1f810083 100644
--- a/ui/base/ime/win/tsf_text_store.cc
+++ b/ui/base/ime/win/tsf_text_store.cc
@@ -972,8 +972,15 @@
   }
 
   composition_start_ = selection_.start();
-  if (has_composition_range_)
-    ResetCompositionState();
+  if (has_composition_range_) {
+    has_composition_range_ = false;
+    composition_range_.set_start(0);
+    composition_range_.set_end(0);
+    previous_composition_string_.clear();
+    previous_composition_start_ = 0;
+    previous_composition_selection_range_ = gfx::Range::InvalidRange();
+    previous_text_spans_.clear();
+  }
 
   return S_OK;
 }
