diff --git a/DEPS b/DEPS
index a2452f51..38dab94 100644
--- a/DEPS
+++ b/DEPS
@@ -1454,7 +1454,7 @@
     Var('chromium_git') + '/webm/libwebm.git' + '@' + 'e4fbea0c9751ae8aa86629b197a28d8276a2b0da',
 
   'src/third_party/libyuv':
-    Var('chromium_git') + '/libyuv/libyuv.git' + '@' + '6900494d90ae095d44405cd4cc3f346971fa69c9',
+    Var('chromium_git') + '/libyuv/libyuv.git' + '@' + 'd248929c059ff7629a85333699717d7a677d8d96',
 
   'src/third_party/lighttpd': {
       'url': Var('chromium_git') + '/chromium/deps/lighttpd.git' + '@' + Var('lighttpd_revision'),
diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/browser/updater/extension_downloader.cc
index ad5be6d..eea03f9 100644
--- a/extensions/browser/updater/extension_downloader.cc
+++ b/extensions/browser/updater/extension_downloader.cc
@@ -768,9 +768,10 @@
     NotifyExtensionsDownloadStageChanged(
         manifests_queue_.active_request()->GetExtensionIds(),
         ExtensionDownloaderDelegate::Stage::PARSING_MANIFEST);
-    auto callback = base::BindOnce(&ExtensionDownloader::HandleManifestResults,
-                                   weak_ptr_factory_.GetWeakPtr(),
-                                   manifests_queue_.reset_active_request());
+    auto callback = base::BindOnce(
+        &ExtensionDownloader::HandleManifestResults,
+        weak_ptr_factory_.GetWeakPtr(),
+        std::move(manifests_queue_.reset_active_request().fetch));
     ParseUpdateManifest(*response_body, std::move(callback));
   } else {
     VLOG(1) << "Failed to fetch manifest '" << url.possibly_invalid_spec()
@@ -778,7 +779,8 @@
     RetryRequestOrHandleFailureOnManifestFetchFailure(*loader, response_code);
   }
   file_url_loader_factory_.reset();
-  manifests_queue_.reset_active_request();
+  if (manifests_queue_.active_request())
+    manifests_queue_.reset_active_request();
 
   // If we have any pending manifest requests, fire off the next one.
   manifests_queue_.StartNextRequest();
@@ -1310,7 +1312,7 @@
                     extensions_queue_.active_request_failure_count(),
                     url);
     std::unique_ptr<ExtensionFetch> fetch_data =
-        extensions_queue_.reset_active_request();
+        std::move(extensions_queue_.reset_active_request().fetch);
     delegate_->OnExtensionDownloadStageChanged(
         id, ExtensionDownloaderDelegate::Stage::FINISHED);
     NotifyDelegateDownloadFinished(std::move(fetch_data), false, crx_path,
@@ -1357,7 +1359,8 @@
           request_ids, failure_data);
     }
     ping_results_.erase(id);
-    extensions_queue_.reset_active_request();
+    if (extensions_queue_.active_request())
+      extensions_queue_.reset_active_request();
   }
 
   extension_loader_.reset();
diff --git a/extensions/browser/updater/request_queue.h b/extensions/browser/updater/request_queue.h
index 2c05bd4..787b7de 100644
--- a/extensions/browser/updater/request_queue.h
+++ b/extensions/browser/updater/request_queue.h
@@ -39,6 +39,14 @@
 template <typename T>
 class RequestQueue {
  public:
+  struct Request {
+    Request(std::unique_ptr<net::BackoffEntry> backoff_entry,
+            std::unique_ptr<T> fetch)
+        : backoff_entry(std::move(backoff_entry)), fetch(std::move(fetch)) {}
+    std::unique_ptr<net::BackoffEntry> backoff_entry;
+    std::unique_ptr<T> fetch;
+  };
+
   class iterator;
 
   RequestQueue(const net::BackoffEntry::Policy* backoff_policy,
@@ -52,7 +60,7 @@
   int active_request_failure_count();
 
   // Signals RequestQueue that processing of the current request has completed.
-  std::unique_ptr<T> reset_active_request();
+  Request reset_active_request();
 
   // Add the given request to the queue, and starts the next request if no
   // request is currently being processed.
@@ -88,14 +96,6 @@
   void set_backoff_policy(const net::BackoffEntry::Policy* backoff_policy);
 
  private:
-  struct Request {
-    Request(std::unique_ptr<net::BackoffEntry> backoff_entry,
-            std::unique_ptr<T> fetch)
-        : backoff_entry(std::move(backoff_entry)), fetch(std::move(fetch)) {}
-    std::unique_ptr<net::BackoffEntry> backoff_entry;
-    std::unique_ptr<T> fetch;
-  };
-
   // Compares the release time of two pending requests.
   static bool CompareRequests(const Request& a, const Request& b);
 
diff --git a/extensions/browser/updater/request_queue_impl.h b/extensions/browser/updater/request_queue_impl.h
index 31866ac..cdf16a0e 100644
--- a/extensions/browser/updater/request_queue_impl.h
+++ b/extensions/browser/updater/request_queue_impl.h
@@ -40,12 +40,11 @@
 }
 
 template <typename T>
-std::unique_ptr<T> RequestQueue<T>::reset_active_request() {
-  if (!active_request_)
-    return nullptr;
-  std::unique_ptr<T> fetch = std::move(active_request_->fetch);
+typename RequestQueue<T>::Request RequestQueue<T>::reset_active_request() {
+  DCHECK(active_request_);
+  Request request = std::move(*active_request_);
   active_request_.reset();
-  return fetch;
+  return request;
 }
 
 template <typename T>
diff --git a/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm b/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm
index 56d4e414..5647a7cd 100644
--- a/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm
+++ b/ios/chrome/browser/ui/authentication/signin/signin_coordinator_egtest.mm
@@ -183,12 +183,14 @@
 
 // Tests signing in with one account, switching sync account to a second and
 // choosing to keep the browsing data separate during the switch.
+// Flaky, crbug.com/1279995.
 - (void)DISABLED_testSignInSwitchAccountsAndKeepDataSeparate {
   ChooseImportOrKeepDataSepareteDialog(SettingsImportDataKeepSeparateButton());
 }
 
 // Tests signing in with one account, switching sync account to a second and
 // choosing to import the browsing data during the switch.
+// Flaky, crbug.com/1279995.
 - (void)DISABLED_testSignInSwitchAccountsAndImportData {
   ChooseImportOrKeepDataSepareteDialog(SettingsImportDataImportButton());
 }
@@ -984,6 +986,7 @@
 }
 
 // Tests to sign-in with one user, and then turn on syncn with a second account.
+// Flaky, crbug.com/1279995.
 - (void)DISABLED_testSignInWithOneAccountStartSyncWithAnotherAccount {
   FakeChromeIdentity* fakeIdentity1 = [FakeChromeIdentity fakeIdentity1];
   [SigninEarlGrey addFakeIdentity:fakeIdentity1];
@@ -1012,7 +1015,8 @@
 // Tests that when the syncTypesListDisabled policy is enabled, the signin promo
 // description is updated and when opening the sign-in screen a policy warning
 // is displayed with a link that opens the policy management page.
-- (void)DISABLED_testSynTypesDisabledPolicy {
+// Flaky, crbug.com/1279995.
+- (void)DISABLED_testSyncTypesDisabledPolicy {
   // Set policy.
   std::vector<base::Value> values;
   values.push_back(base::Value("tabs"));
diff --git a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
index 7d12fbf..2a503c8d 100644
--- a/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_coordinator.mm
@@ -379,6 +379,7 @@
   DCHECK(!self.viewController);
 
   [self addWebStateObserver];
+  [self addWebStateListObserver];
   [self createViewControllerDependencies];
   [self createViewController];
   [self updateViewControllerDependencies];
@@ -390,7 +391,6 @@
   // Browser delegates can have dependencies on coordinators.
   [self installDelegatesForBrowser];
   [self installDelegatesForBrowserState];
-  [self addWebStateListObserver];
   [super start];
   self.started = YES;
 }
@@ -401,7 +401,6 @@
   [super stop];
 
   self.active = NO;
-  [self removeWebStateListObserver];
   [self uninstallDelegatesForBrowserState];
   [self uninstallDelegatesForBrowser];
   [self uninstallDelegatesForAllWebStates];
@@ -411,6 +410,7 @@
   [self stopChildCoordinators];
   [self destroyViewController];
   [self destroyViewControllerDependencies];
+  [self removeWebStateListObserver];
   [self removeWebStateObserver];
   self.started = NO;
 }