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; }