summaryrefslogtreecommitdiff
path: root/chromium/components/autofill
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2021-01-08 13:11:51 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2021-01-12 14:24:45 +0000
commitfa98118a45f7e169f8846086dc2c22c49a8ba310 (patch)
tree3d21874df649136e2df0d6fc16da117d1484d93f /chromium/components/autofill
parent42165222878a38f10aaedf3a123ae7200a85a091 (diff)
downloadqtwebengine-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')
-rw-r--r--chromium/components/autofill/core/browser/geo/region_data_loader.h9
-rw-r--r--chromium/components/autofill/core/browser/geo/region_data_loader_impl.cc16
-rw-r--r--chromium/components/autofill/core/browser/geo/region_data_loader_impl.h4
-rw-r--r--chromium/components/autofill/core/browser/geo/test_region_data_loader.cc10
-rw-r--r--chromium/components/autofill/core/browser/geo/test_region_data_loader.h6
-rw-r--r--chromium/components/autofill/core/browser/ui/region_combobox_model.cc6
-rw-r--r--chromium/components/autofill/core/browser/ui/region_combobox_model.h6
-rw-r--r--chromium/components/autofill/core/browser/ui/region_combobox_model_unittest.cc4
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>>());