From ca839f94809001ab19fa0aa0c801f28312c89084 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Mon, 22 Feb 2021 15:09:41 +0100 Subject: [PATCH] fix wrong last datetime update when opening settings + better check for first install --- .../Bromite-AdBlockUpdaterService.patch | 138 ++++++++++-------- 1 file changed, 77 insertions(+), 61 deletions(-) diff --git a/build/patches/Bromite-AdBlockUpdaterService.patch b/build/patches/Bromite-AdBlockUpdaterService.patch index 1ac24676..23e83966 100644 --- a/build/patches/Bromite-AdBlockUpdaterService.patch +++ b/build/patches/Bromite-AdBlockUpdaterService.patch @@ -13,11 +13,11 @@ Fix RestoreForeignSessionTab by recreating the tab (issue #681) chrome/android/chrome_java_sources.gni | 2 + .../java/res/layout/adblock_editor.xml | 67 ++++ chrome/android/java/res/values/values.xml | 2 + - .../java/res/xml/adblock_preferences.xml | 43 +++ + .../java/res/xml/adblock_preferences.xml | 43 ++ .../android/java/res/xml/main_preferences.xml | 5 + .../chrome/browser/app/ChromeActivity.java | 21 + .../browser/settings/AdBlockEditor.java | 93 +++++ - .../browser/settings/AdBlockPreferences.java | 173 +++++++++ + .../browser/settings/AdBlockPreferences.java | 173 ++++++++ .../chrome/browser/tabmodel/TabModelImpl.java | 2 +- chrome/app/generated_resources.grd | 46 +++ chrome/browser/after_startup_task_utils.cc | 5 + @@ -36,10 +36,10 @@ Fix RestoreForeignSessionTab by recreating the tab (issue #681) .../sessions/session_restore_android.cc | 4 +- .../strings/android_chrome_strings.grd | 14 + components/component_updater/BUILD.gn | 6 + - .../adblock_updater_service.cc | 364 ++++++++++++++++++ - .../adblock_updater_service.h | 125 ++++++ - .../download_filters_task.cc | 237 ++++++++++++ - .../component_updater/download_filters_task.h | 131 +++++++ + .../adblock_updater_service.cc | 378 ++++++++++++++++++ + .../adblock_updater_service.h | 127 ++++++ + .../download_filters_task.cc | 237 +++++++++++ + .../component_updater/download_filters_task.h | 131 ++++++ ...ent_subresource_filter_throttle_manager.cc | 11 + .../content/browser/ruleset_publisher.h | 2 + .../content/browser/ruleset_publisher_impl.cc | 5 + @@ -51,7 +51,7 @@ Fix RestoreForeignSessionTab by recreating the tab (issue #681) .../browser/subresource_filter_features.cc | 113 +----- .../core/common/common_features.cc | 2 +- .../navigation_throttle_runner.cc | 5 - - 42 files changed, 1706 insertions(+), 141 deletions(-) + 42 files changed, 1722 insertions(+), 141 deletions(-) create mode 100644 chrome/android/java/res/layout/adblock_editor.xml create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java @@ -1211,7 +1211,7 @@ diff --git a/components/component_updater/adblock_updater_service.cc b/component new file mode 100644 --- /dev/null +++ b/components/component_updater/adblock_updater_service.cc -@@ -0,0 +1,364 @@ +@@ -0,0 +1,378 @@ +/* + This file is part of Bromite. + @@ -1375,7 +1375,8 @@ new file mode 100644 + last_update_ = pref_service_->GetTime(kAdBlockLastCheckTime); + + auto version = ruleset_service_->GetMostRecentlyIndexedVersion(); -+ if (!version.content_version.empty()) { ++ base::Time t = base::Time(); ++ if (ConvertVersionToTime(version.content_version, &t)==true) { + // Check if the request is too soon. + if (!last_update_.is_null()) { + int deltaCheck = is_foreground == false ? next_check_delay_ : on_demand_check_delay; @@ -1405,55 +1406,10 @@ new file mode 100644 + last_update_ = base::Time::Now(); + pref_service_->SetTime(kAdBlockLastCheckTime, last_update_); + -+ base::Time::Exploded e = {0}; -+ base::Time t = base::Time(); + auto version = ruleset_service_->GetMostRecentlyIndexedVersion(); -+ if (version.content_version.empty()) { -+ LOG(INFO) << "AdBlockUpdaterService: MostRecentIndexedVersion is empty"; -+ } else { -+ LOG(INFO) << "AdBlockUpdaterService: MostRecentIndexedVersion = " << version.content_version; -+ std::vector tokens = -+ base::SplitString(version.content_version, ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); -+ int i = 0; -+ bool failed = false; -+ for (const std::string& token : tokens) { -+ // parse as number -+ int n = 0; -+ if (!base::StringToInt(token, &n)) { -+ failed = true; -+ break; -+ } -+ -+ switch (i++) { -+ case 0: -+ e.year = 2019 + n; -+ break; -+ case 1: -+ e.month = n + 1; -+ break; -+ case 2: -+ e.day_of_month = n + 1; -+ break; -+ case 3: -+ e.second = n % 60; -+ n -= e.second; -+ n /= 60; -+ e.minute = n % 60; -+ e.hour = n / 60; -+ break; -+ default: -+ failed = true; -+ break; -+ } -+ } -+ -+ if (failed) { -+ LOG(WARNING) << "AdBlockUpdaterService: failed to parse most recent version as x.y.z.w dot-separated integers"; -+ } else { -+ if (!base::Time::FromUTCExploded(e, &t)) -+ LOG(WARNING) << "AdBlockUpdaterService: failed to convert version to time."; -+ } -+ } ++ base::Time t = base::Time(); ++ LOG(INFO) << "AdBlockUpdaterService: MostRecentIndexedVersion = " << version.content_version; ++ ConvertVersionToTime(version.content_version, &t); + + NotifyObservers(AdblockEvent::ADBLOCK_CHECKING_FOR_UPDATES, AdblockError::NONE); + @@ -1471,6 +1427,62 @@ new file mode 100644 + tasks_.insert(task); +} + ++bool AdBlockUpdaterService::ConvertVersionToTime(const std::string& version, base::Time* t) ++{ ++ *t = base::Time(); ++ if (version.empty()) { ++ LOG(INFO) << "AdBlockUpdaterService: version is empty"; ++ return false; ++ } ++ ++ base::Time::Exploded e = {0}; ++ std::vector tokens = ++ base::SplitString(version, ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); ++ int i = 0; ++ bool failed = false; ++ for (const std::string& token : tokens) { ++ // parse as number ++ int n = 0; ++ if (!base::StringToInt(token, &n)) { ++ failed = true; ++ break; ++ } ++ ++ switch (i++) { ++ case 0: ++ e.year = 2019 + n; ++ break; ++ case 1: ++ e.month = n + 1; ++ break; ++ case 2: ++ e.day_of_month = n + 1; ++ break; ++ case 3: ++ e.second = n % 60; ++ n -= e.second; ++ n /= 60; ++ e.minute = n % 60; ++ e.hour = n / 60; ++ break; ++ default: ++ failed = true; ++ break; ++ } ++ } ++ ++ if (failed) { ++ LOG(WARNING) << "AdBlockUpdaterService: failed to parse most recent version as x.y.z.w dot-separated integers"; ++ } else { ++ if (!base::Time::FromUTCExploded(e, t)) { ++ failed = true; ++ LOG(WARNING) << "AdBlockUpdaterService: failed to convert version to time."; ++ } ++ } ++ ++ return failed; ++} ++ +void AdBlockUpdaterService::OnUpdateComplete(Callback on_finished, + scoped_refptr task, + AdblockError error) { @@ -1559,9 +1571,11 @@ new file mode 100644 +} + +void AdBlockUpdaterService::SetAdBlockUpdateTimeFrequency(int days) { -+ pref_service_->SetInteger(kAdBlockFiltersCheckFrequency, days); -+ pref_service_->SetTime(kAdBlockLastCheckTime, base::Time()); -+ StartWithDelay(0); ++ if (pref_service_->GetInteger(kAdBlockFiltersCheckFrequency) != days) { ++ pref_service_->SetInteger(kAdBlockFiltersCheckFrequency, days); ++ pref_service_->SetTime(kAdBlockLastCheckTime, base::Time()); ++ StartWithDelay(0); ++ } +} + +// static @@ -1580,7 +1594,7 @@ diff --git a/components/component_updater/adblock_updater_service.h b/components new file mode 100644 --- /dev/null +++ b/components/component_updater/adblock_updater_service.h -@@ -0,0 +1,125 @@ +@@ -0,0 +1,127 @@ +/* + This file is part of Bromite. + @@ -1686,6 +1700,8 @@ new file mode 100644 + void OnUpdateComplete(Callback callback, scoped_refptr task, AdblockError error); + void RulesetPublishedCallback(); + ++ bool ConvertVersionToTime(const std::string& version, base::Time* t); ++ + base::ObserverList::Unchecked observer_list_; + base::ThreadChecker thread_checker_; + base::Time last_update_;