Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca839f94 authored by Carmelo Messina's avatar Carmelo Messina
Browse files

fix wrong last datetime update when opening settings + better check for first install

parent d70bd102
Loading
Loading
Loading
Loading
+77 −61
Original line number Diff line number Diff line
@@ -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,15 +1406,38 @@ 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 {
+  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);
+
+  std::string filters_url_ = pref_service_->GetString(kAdBlockFiltersURL);
+  auto task = base::MakeRefCounted<DownloadFiltersTask>(
+      shared_url_network_factory_,
+      is_foreground, filters_url_,
+      t,
+      base::BindOnce(&AdBlockUpdaterService::OnUpdateComplete, base::Unretained(this),
+                     std::move(on_finished)));
+
+  // run task now; task is responsible for clearing the is_updating status
+  base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
+      base::BindOnce(&DownloadFiltersTask::Run, base::Unretained(task.get())));
+  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<std::string> tokens =
+        base::SplitString(version.content_version, ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
+      base::SplitString(version, ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL);
+  int i = 0;
+  bool failed = false;
+  for (const std::string& token : tokens) {
@@ -1450,25 +1474,13 @@ new file mode 100644
+  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))
+    if (!base::Time::FromUTCExploded(e, t)) {
+      failed = true;
+      LOG(WARNING) << "AdBlockUpdaterService: failed to convert version to time.";
+    }
+  }
+
+  NotifyObservers(AdblockEvent::ADBLOCK_CHECKING_FOR_UPDATES, AdblockError::NONE);
+
+  std::string filters_url_ = pref_service_->GetString(kAdBlockFiltersURL);
+  auto task = base::MakeRefCounted<DownloadFiltersTask>(
+      shared_url_network_factory_,
+      is_foreground, filters_url_,
+      t,
+      base::BindOnce(&AdBlockUpdaterService::OnUpdateComplete, base::Unretained(this),
+                     std::move(on_finished)));
+
+  // run task now; task is responsible for clearing the is_updating status
+  base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
+      base::BindOnce(&DownloadFiltersTask::Run, base::Unretained(task.get())));
+  tasks_.insert(task);
+  return failed;
+}
+
+void AdBlockUpdaterService::OnUpdateComplete(Callback on_finished,
@@ -1559,10 +1571,12 @@ new file mode 100644
+}
+
+void AdBlockUpdaterService::SetAdBlockUpdateTimeFrequency(int days) {
+  if (pref_service_->GetInteger(kAdBlockFiltersCheckFrequency) != days) {
+    pref_service_->SetInteger(kAdBlockFiltersCheckFrequency, days);
+    pref_service_->SetTime(kAdBlockLastCheckTime, base::Time());
+    StartWithDelay(0);
+  }
+}
+
+// static
+void AdBlockUpdaterService::RegisterPrefs(PrefRegistrySimple* registry) {
@@ -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<DownloadFiltersTask> task, AdblockError error);
+  void RulesetPublishedCallback();
+
+  bool ConvertVersionToTime(const std::string& version, base::Time* t);
+
+  base::ObserverList<Observer>::Unchecked observer_list_;
+  base::ThreadChecker thread_checker_;
+  base::Time last_update_;