diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-01-08 13:11:51 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-01-12 14:24:45 +0000 |
commit | fa98118a45f7e169f8846086dc2c22c49a8ba310 (patch) | |
tree | 3d21874df649136e2df0d6fc16da117d1484d93f /chromium/components/autofill | |
parent | 42165222878a38f10aaedf3a123ae7200a85a091 (diff) | |
download | qtwebengine-chromium-fa98118a45f7e169f8846086dc2c22c49a8ba310.tar.gz |
BASELINE: Update Chromium to 87.0.4280.144
Change-Id: I9c1b2ad99474c7252ee250024961d8ed86464e32
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/components/autofill')
8 files changed, 28 insertions, 33 deletions
diff --git a/chromium/components/autofill/core/browser/geo/region_data_loader.h b/chromium/components/autofill/core/browser/geo/region_data_loader.h index 4e2ea672c21..6fd738b6234 100644 --- a/chromium/components/autofill/core/browser/geo/region_data_loader.h +++ b/chromium/components/autofill/core/browser/geo/region_data_loader.h @@ -28,12 +28,11 @@ class RegionDataLoader { const std::vector<const ::i18n::addressinput::RegionData*>& regions)> RegionDataLoaded; - virtual ~RegionDataLoader() {} - // Calls |loaded_callback| when the region data for |country_code| is ready or - // when |timeout_ms| miliseconds have passed. This may happen synchronously. + virtual ~RegionDataLoader() = default; + // Calls |loaded_callback| when the region data for |country_code| is ready. + // This may happen synchronously. virtual void LoadRegionData(const std::string& country_code, - RegionDataLoaded callback, - int64_t timeout_ms) = 0; + RegionDataLoaded callback) = 0; // To forget about the |callback| givent to LoadRegionData, in cases where // callback owner is destroyed before loader. virtual void ClearCallback() = 0; diff --git a/chromium/components/autofill/core/browser/geo/region_data_loader_impl.cc b/chromium/components/autofill/core/browser/geo/region_data_loader_impl.cc index 8bbfe0693d7..2932d90eec4 100644 --- a/chromium/components/autofill/core/browser/geo/region_data_loader_impl.cc +++ b/chromium/components/autofill/core/browser/geo/region_data_loader_impl.cc @@ -24,19 +24,20 @@ RegionDataLoaderImpl::RegionDataLoaderImpl( this, &RegionDataLoaderImpl::OnRegionDataLoaded)); } -RegionDataLoaderImpl::~RegionDataLoaderImpl() {} +RegionDataLoaderImpl::~RegionDataLoaderImpl() = default; void RegionDataLoaderImpl::LoadRegionData( const std::string& country_code, - RegionDataLoaderImpl::RegionDataLoaded callback, - int64_t timeout_ms) { + RegionDataLoaderImpl::RegionDataLoaded callback) { callback_ = callback; + // This is the first and only time |LoadRules()| is called on the + // |region_data_supplier_|. This guarantees that the supplied callback + // |region_data_supplier_callback_| will be invoked resulting in the + // destruction of this instance. + // |LoadRules()| may use a network request that has an internal timeout of + // 5 seconds. region_data_supplier_.LoadRules(country_code, *region_data_supplier_callback_); - - timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(timeout_ms), - base::BindOnce(&RegionDataLoaderImpl::OnRegionDataLoaded, - base::Unretained(this), false, country_code, 0)); } void RegionDataLoaderImpl::ClearCallback() { @@ -46,7 +47,6 @@ void RegionDataLoaderImpl::ClearCallback() { void RegionDataLoaderImpl::OnRegionDataLoaded(bool success, const std::string& country_code, int unused_rule_count) { - timer_.Stop(); if (!callback_.is_null()) { if (success) { std::string best_region_tree_language_tag; diff --git a/chromium/components/autofill/core/browser/geo/region_data_loader_impl.h b/chromium/components/autofill/core/browser/geo/region_data_loader_impl.h index c6eb275b610..5f04985c0d8 100644 --- a/chromium/components/autofill/core/browser/geo/region_data_loader_impl.h +++ b/chromium/components/autofill/core/browser/geo/region_data_loader_impl.h @@ -39,8 +39,7 @@ class RegionDataLoaderImpl : public RegionDataLoader { // autofill::RegionDataLoader. void LoadRegionData(const std::string& country_code, - RegionDataLoader::RegionDataLoaded callback, - int64_t timeout_ms) override; + RegionDataLoader::RegionDataLoaded callback) override; void ClearCallback() override; private: @@ -58,7 +57,6 @@ class RegionDataLoaderImpl : public RegionDataLoader { std::string app_locale_; RegionDataLoader::RegionDataLoaded callback_; - base::OneShotTimer timer_; }; } // namespace autofill diff --git a/chromium/components/autofill/core/browser/geo/test_region_data_loader.cc b/chromium/components/autofill/core/browser/geo/test_region_data_loader.cc index af263f735b4..e7a1e287227 100644 --- a/chromium/components/autofill/core/browser/geo/test_region_data_loader.cc +++ b/chromium/components/autofill/core/browser/geo/test_region_data_loader.cc @@ -8,14 +8,13 @@ namespace autofill { -TestRegionDataLoader::TestRegionDataLoader() {} +TestRegionDataLoader::TestRegionDataLoader() = default; -TestRegionDataLoader::~TestRegionDataLoader() {} +TestRegionDataLoader::~TestRegionDataLoader() = default; void TestRegionDataLoader::LoadRegionData( const std::string& country_code, - autofill::RegionDataLoader::RegionDataLoaded callback, - int64_t unused_timeout_ms) { + autofill::RegionDataLoader::RegionDataLoaded callback) { if (synchronous_callback_) { SendRegionData(regions_, callback); } else { @@ -45,9 +44,8 @@ void TestRegionDataLoader::SendRegionData( const std::vector<std::pair<std::string, std::string>>& regions, autofill::RegionDataLoader::RegionDataLoaded callback) { ::i18n::addressinput::RegionData root_region(""); - for (const auto& region : regions) { + for (const auto& region : regions) root_region.AddSubRegion(region.first, region.second); - } callback.Run(root_region.sub_regions()); } diff --git a/chromium/components/autofill/core/browser/geo/test_region_data_loader.h b/chromium/components/autofill/core/browser/geo/test_region_data_loader.h index 0a5f6b813e0..52edd93167c 100644 --- a/chromium/components/autofill/core/browser/geo/test_region_data_loader.h +++ b/chromium/components/autofill/core/browser/geo/test_region_data_loader.h @@ -20,9 +20,9 @@ class TestRegionDataLoader : public RegionDataLoader { ~TestRegionDataLoader() override; // RegionDataLoader. - void LoadRegionData(const std::string& country_code, - autofill::RegionDataLoader::RegionDataLoaded callback, - int64_t timeout_ms) override; + void LoadRegionData( + const std::string& country_code, + autofill::RegionDataLoader::RegionDataLoaded callback) override; void ClearCallback() override; std::string country_code() { return country_code_; } diff --git a/chromium/components/autofill/core/browser/ui/region_combobox_model.cc b/chromium/components/autofill/core/browser/ui/region_combobox_model.cc index 0b5f7978e40..4779ab5f6c5 100644 --- a/chromium/components/autofill/core/browser/ui/region_combobox_model.cc +++ b/chromium/components/autofill/core/browser/ui/region_combobox_model.cc @@ -26,16 +26,14 @@ RegionComboboxModel::~RegionComboboxModel() { } void RegionComboboxModel::LoadRegionData(const std::string& country_code, - RegionDataLoader* region_data_loader, - int64_t timeout_ms) { + RegionDataLoader* region_data_loader) { DCHECK(region_data_loader); DCHECK(!region_data_loader_); region_data_loader_ = region_data_loader; region_data_loader_->LoadRegionData( country_code, base::BindRepeating(&RegionComboboxModel::OnRegionDataLoaded, - base::Unretained(this)), - timeout_ms); + weak_factory_.GetWeakPtr())); } int RegionComboboxModel::GetItemCount() const { diff --git a/chromium/components/autofill/core/browser/ui/region_combobox_model.h b/chromium/components/autofill/core/browser/ui/region_combobox_model.h index 52d6a50df82..b6dda3b33c6 100644 --- a/chromium/components/autofill/core/browser/ui/region_combobox_model.h +++ b/chromium/components/autofill/core/browser/ui/region_combobox_model.h @@ -34,8 +34,7 @@ class RegionComboboxModel : public ui::ComboboxModel { ~RegionComboboxModel() override; void LoadRegionData(const std::string& country_code, - RegionDataLoader* region_data_loader, - int64_t timeout_ms); + RegionDataLoader* region_data_loader); bool IsPendingRegionDataLoad() const { return region_data_loader_ != nullptr; @@ -72,6 +71,9 @@ class RegionComboboxModel : public ui::ComboboxModel { // To be called when the data for the given country code was loaded. base::ObserverList<ui::ComboboxModelObserver> observers_; + // Weak pointer factory. + base::WeakPtrFactory<RegionComboboxModel> weak_factory_{this}; + DISALLOW_COPY_AND_ASSIGN(RegionComboboxModel); }; diff --git a/chromium/components/autofill/core/browser/ui/region_combobox_model_unittest.cc b/chromium/components/autofill/core/browser/ui/region_combobox_model_unittest.cc index aa5e3c73068..5eaf997793c 100644 --- a/chromium/components/autofill/core/browser/ui/region_combobox_model_unittest.cc +++ b/chromium/components/autofill/core/browser/ui/region_combobox_model_unittest.cc @@ -28,7 +28,7 @@ const char kOntarioName[] = "Ontario"; TEST(RegionComboboxModelTest, QuebecOntarioRegions) { TestRegionDataLoader test_region_data_loader; RegionComboboxModel model; - model.LoadRegionData("", &test_region_data_loader, 0); + model.LoadRegionData("", &test_region_data_loader); std::vector<std::pair<std::string, std::string>> regions; regions.emplace_back(kQuebecCode, kQuebecName); @@ -47,7 +47,7 @@ TEST(RegionComboboxModelTest, QuebecOntarioRegions) { TEST(RegionComboboxModelTest, FailingSource) { TestRegionDataLoader test_region_data_loader; RegionComboboxModel model; - model.LoadRegionData("", &test_region_data_loader, 0); + model.LoadRegionData("", &test_region_data_loader); test_region_data_loader.SendAsynchronousData( std::vector<std::pair<std::string, std::string>>()); |