Add-option-to-configure-the-ad-blocker-filters-URL.patch 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. From: csagan5 <32685696+csagan5@users.noreply.github.com>
  2. Date: Thu, 5 Dec 2019 22:41:25 +0100
  3. Subject: Add option to configure the ad blocker filters URL
  4. ---
  5. chrome/android/chrome_java_resources.gni | 2 +
  6. chrome/android/chrome_java_sources.gni | 2 +
  7. .../java/res/layout/adblock_editor.xml | 67 ++++++++++++++
  8. chrome/android/java/res/values/values.xml | 2 +
  9. .../java/res/xml/adblock_preferences.xml | 25 +++++
  10. .../android/java/res/xml/main_preferences.xml | 5 +
  11. .../browser/settings/AdBlockEditor.java | 92 +++++++++++++++++++
  12. .../browser/settings/AdBlockPreferences.java | 61 ++++++++++++
  13. chrome/app/generated_resources.grd | 10 ++
  14. chrome/browser/browser_process_impl.cc | 3 +-
  15. .../flags/android/cached_feature_flags.cc | 11 +++
  16. .../browser/flags/CachedFeatureFlags.java | 10 ++
  17. .../net/system_network_context_manager.cc | 4 +
  18. .../strings/android_chrome_strings.grd | 14 +++
  19. chrome/common/pref_names.cc | 3 +
  20. chrome/common/pref_names.h | 1 +
  21. .../adblock_updater_service.cc | 6 +-
  22. .../adblock_updater_service.h | 3 +-
  23. 18 files changed, 316 insertions(+), 5 deletions(-)
  24. create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
  25. create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml
  26. create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
  27. create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
  28. diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
  29. --- a/chrome/android/chrome_java_resources.gni
  30. +++ b/chrome/android/chrome_java_resources.gni
  31. @@ -826,6 +826,7 @@ chrome_java_resources = [
  32. "java/res/layout/account_picker_new_account_row_legacy.xml",
  33. "java/res/layout/account_picker_row.xml",
  34. "java/res/layout/account_picker_row_legacy.xml",
  35. + "java/res/layout/adblock_editor.xml",
  36. "java/res/layout/add_languages_main.xml",
  37. "java/res/layout/add_to_homescreen_dialog.xml",
  38. "java/res/layout/auto_sign_in_first_run_dialog.xml",
  39. @@ -1106,6 +1107,7 @@ chrome_java_resources = [
  40. "java/res/xml/about_chrome_preferences.xml",
  41. "java/res/xml/accessibility_preferences.xml",
  42. "java/res/xml/account_management_preferences.xml",
  43. + "java/res/xml/adblock_preferences.xml",
  44. "java/res/xml/autofill_server_profile_preferences.xml",
  45. "java/res/xml/bookmark_widget_info.xml",
  46. "java/res/xml/clear_browsing_data_preferences_tab.xml",
  47. diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
  48. --- a/chrome/android/chrome_java_sources.gni
  49. +++ b/chrome/android/chrome_java_sources.gni
  50. @@ -1307,6 +1307,8 @@ chrome_java_sources = [
  51. "java/src/org/chromium/chrome/browser/photo_picker/DecodeVideoTask.java",
  52. "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
  53. "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceHost.java",
  54. + "java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java",
  55. + "java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java",
  56. "java/src/org/chromium/chrome/browser/photo_picker/FileEnumWorkerTask.java",
  57. "java/src/org/chromium/chrome/browser/photo_picker/PhotoPickerDialog.java",
  58. "java/src/org/chromium/chrome/browser/photo_picker/PhotoPickerToolbar.java",
  59. diff --git a/chrome/android/java/res/layout/adblock_editor.xml b/chrome/android/java/res/layout/adblock_editor.xml
  60. new file mode 100644
  61. --- /dev/null
  62. +++ b/chrome/android/java/res/layout/adblock_editor.xml
  63. @@ -0,0 +1,67 @@
  64. +<?xml version="1.0" encoding="utf-8"?>
  65. +<!-- Copyright 2015 The Chromium Authors. All rights reserved.
  66. + Use of this source code is governed by a BSD-style license that can be
  67. + found in the LICENSE file. -->
  68. +
  69. +<FrameLayout
  70. + xmlns:android="http://schemas.android.com/apk/res/android"
  71. + xmlns:app="http://schemas.android.com/apk/res-auto"
  72. + xmlns:tools="http://schemas.android.com/tools"
  73. + android:layout_width="match_parent"
  74. + android:layout_height="match_parent" >
  75. +
  76. + <ScrollView
  77. + android:layout_width="match_parent"
  78. + android:layout_height="match_parent"
  79. + android:id="@+id/scroll_view"
  80. + android:fillViewport="true" >
  81. +
  82. + <LinearLayout
  83. + android:layout_width="match_parent"
  84. + android:layout_height="wrap_content"
  85. + android:orientation="vertical"
  86. + android:focusableInTouchMode="true" >
  87. +
  88. + <com.google.android.material.textfield.TextInputLayout
  89. + android:id="@+id/adblock_url"
  90. + android:paddingTop="16dp"
  91. + android:paddingStart="@dimen/pref_autofill_content_spacing"
  92. + android:paddingEnd="@dimen/pref_autofill_content_spacing"
  93. + android:layout_width="match_parent"
  94. + android:layout_height="wrap_content" >
  95. + <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
  96. + <EditText
  97. + tools:ignore="Autofill"
  98. + android:id="@+id/adblock_url_edit"
  99. + android:layout_width="match_parent"
  100. + android:layout_height="wrap_content"
  101. + android:inputType="textUri"
  102. + android:singleLine="true"
  103. + android:hint="@string/options_adblock_edit_label" />
  104. + </com.google.android.material.textfield.TextInputLayout>
  105. +
  106. + <Space style="@style/ButtonBarTopSpacer" />
  107. + <View style="@style/ButtonBarTopDivider" />
  108. +
  109. + <LinearLayout style="@style/ButtonBar" >
  110. + <org.chromium.ui.widget.ButtonCompat
  111. + android:id="@+id/adblock_reset"
  112. + style="@style/ButtonBarButton"
  113. + android:text="@string/reset" />
  114. +
  115. + <org.chromium.ui.widget.ButtonCompat
  116. + android:id="@+id/adblock_cancel"
  117. + style="@style/ButtonBarButton"
  118. + android:text="@string/cancel" />
  119. +
  120. + <org.chromium.ui.widget.ButtonCompat
  121. + android:id="@+id/adblock_save"
  122. + style="@style/ButtonBarButton"
  123. + android:text="@string/save" />
  124. + </LinearLayout>
  125. + </LinearLayout>
  126. + </ScrollView>
  127. +
  128. + <include layout="@layout/settings_action_bar_shadow"/>
  129. +
  130. +</FrameLayout>
  131. diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
  132. --- a/chrome/android/java/res/values/values.xml
  133. +++ b/chrome/android/java/res/values/values.xml
  134. @@ -41,6 +41,8 @@
  135. <!-- Our manage space activity. Default pre-KitKat to be nothing. -->
  136. <string name="manage_space_activity"></string>
  137. + <string name="adblock_help_url">https://www.bromite.org/custom-filters</string>
  138. +
  139. <string name="proxy_title">Proxy configuration</string>
  140. <string name="proxy_url">chrome://proxy</string>
  141. diff --git a/chrome/android/java/res/xml/adblock_preferences.xml b/chrome/android/java/res/xml/adblock_preferences.xml
  142. new file mode 100644
  143. --- /dev/null
  144. +++ b/chrome/android/java/res/xml/adblock_preferences.xml
  145. @@ -0,0 +1,25 @@
  146. +<?xml version="1.0" encoding="utf-8"?>
  147. +<!-- Copyright 2015 The Chromium Authors. All rights reserved.
  148. + Use of this source code is governed by a BSD-style license that can be
  149. + found in the LICENSE file. -->
  150. +
  151. +<PreferenceScreen
  152. + xmlns:android="http://schemas.android.com/apk/res/android"
  153. + xmlns:app="http://schemas.android.com/apk/res-auto">
  154. +
  155. + <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
  156. + android:key="adblock_switch"
  157. + android:summaryOn="@string/text_on"
  158. + android:summaryOff="@string/text_off" />
  159. +
  160. + <org.chromium.chrome.browser.about_settings.HyperlinkPreference
  161. + android:key="adblock_help"
  162. + android:title="@string/adblock_help"
  163. + app:url="@string/adblock_help_url" />
  164. +
  165. + <Preference
  166. + android:key="adblock_edit"
  167. + android:title="@string/options_adblock_edit_label"
  168. + android:fragment="org.chromium.chrome.browser.settings.AdBlockEditor" />
  169. +
  170. +</PreferenceScreen>
  171. diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
  172. --- a/chrome/android/java/res/xml/main_preferences.xml
  173. +++ b/chrome/android/java/res/xml/main_preferences.xml
  174. @@ -89,6 +89,11 @@
  175. android:key="privacy"
  176. android:order="18"
  177. android:title="@string/prefs_privacy"/>
  178. + <Preference
  179. + android:fragment="org.chromium.chrome.browser.settings.AdBlockPreferences"
  180. + android:key="adblock"
  181. + android:order="13"
  182. + android:title="@string/prefs_adblock"/>
  183. <Preference
  184. android:fragment="org.chromium.chrome.browser.accessibility.settings.AccessibilitySettings"
  185. android:key="accessibility"
  186. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
  187. new file mode 100644
  188. --- /dev/null
  189. +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
  190. @@ -0,0 +1,92 @@
  191. +// Copyright 2015 The Chromium Authors. All rights reserved.
  192. +// Use of this source code is governed by a BSD-style license that can be
  193. +// found in the LICENSE file.
  194. +
  195. +package org.chromium.chrome.browser.settings;
  196. +
  197. +import android.os.Bundle;
  198. +import androidx.fragment.app.Fragment;
  199. +import android.text.Editable;
  200. +import android.text.TextWatcher;
  201. +import android.view.LayoutInflater;
  202. +import android.view.View;
  203. +import android.view.ViewGroup;
  204. +import android.widget.Button;
  205. +import android.widget.EditText;
  206. +
  207. +import org.chromium.components.browser_ui.settings.SettingsUtils;
  208. +import org.chromium.chrome.browser.flags.CachedFeatureFlags;
  209. +import org.chromium.chrome.R;
  210. +import org.chromium.components.url_formatter.UrlFormatter;
  211. +
  212. +/**
  213. + * Provides the Java-UI for editing AdBlock preferences.
  214. + */
  215. +public class AdBlockEditor extends Fragment implements TextWatcher {
  216. + private EditText mAdBlockFiltersUrlEdit;
  217. + private Button mSaveButton;
  218. + private Button mResetButton;
  219. +
  220. + @Override
  221. + public View onCreateView(LayoutInflater inflater, ViewGroup container,
  222. + Bundle savedInstanceState) {
  223. + super.onCreate(savedInstanceState);
  224. + getActivity().setTitle(R.string.options_adblock_edit_title);
  225. +
  226. + View v = inflater.inflate(R.layout.adblock_editor, container, false);
  227. + View scrollView = v.findViewById(R.id.scroll_view);
  228. + scrollView.getViewTreeObserver().addOnScrollChangedListener(
  229. + SettingsUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
  230. + mAdBlockFiltersUrlEdit = (EditText) v.findViewById(R.id.adblock_url_edit);
  231. + mAdBlockFiltersUrlEdit.setText(CachedFeatureFlags.getAdBlockFiltersURL());
  232. + mAdBlockFiltersUrlEdit.addTextChangedListener(this);
  233. + mAdBlockFiltersUrlEdit.requestFocus();
  234. +
  235. + initializeSaveCancelResetButtons(v);
  236. + return v;
  237. + }
  238. +
  239. + @Override
  240. + public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  241. + }
  242. +
  243. + @Override
  244. + public void onTextChanged(CharSequence s, int start, int before, int count) {
  245. + mSaveButton.setEnabled(s.length() != 0);
  246. + mResetButton.setEnabled(true);
  247. + }
  248. +
  249. + @Override
  250. + public void afterTextChanged(Editable s) {
  251. + }
  252. +
  253. + private void initializeSaveCancelResetButtons(View v) {
  254. + mResetButton = (Button) v.findViewById(R.id.adblock_reset);
  255. + mResetButton.setOnClickListener(new View.OnClickListener() {
  256. + @Override
  257. + public void onClick(View v) {
  258. + mAdBlockFiltersUrlEdit.setText(CachedFeatureFlags.getAdBlockFiltersURL());
  259. + getActivity().finish();
  260. + }
  261. + });
  262. +
  263. + mSaveButton = (Button) v.findViewById(R.id.adblock_save);
  264. + mSaveButton.setEnabled(false);
  265. + mSaveButton.setOnClickListener(new View.OnClickListener() {
  266. + @Override
  267. + public void onClick(View v) {
  268. + CachedFeatureFlags.setAdBlockFiltersURL(
  269. + UrlFormatter.fixupUrl(mAdBlockFiltersUrlEdit.getText().toString()).getSpec());
  270. + getActivity().finish();
  271. + }
  272. + });
  273. +
  274. + Button button = (Button) v.findViewById(R.id.adblock_cancel);
  275. + button.setOnClickListener(new View.OnClickListener() {
  276. + @Override
  277. + public void onClick(View v) {
  278. + getActivity().finish();
  279. + }
  280. + });
  281. + }
  282. +}
  283. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
  284. new file mode 100644
  285. --- /dev/null
  286. +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
  287. @@ -0,0 +1,61 @@
  288. +// Copyright 2015 The Chromium Authors. All rights reserved.
  289. +// Use of this source code is governed by a BSD-style license that can be
  290. +// found in the LICENSE file.
  291. +
  292. +package org.chromium.chrome.browser.settings;
  293. +
  294. +import android.os.Bundle;
  295. +import androidx.preference.Preference;
  296. +import androidx.preference.PreferenceFragmentCompat;
  297. +import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
  298. +
  299. +import org.chromium.components.embedder_support.browser_context.BrowserContextHandle;
  300. +import org.chromium.components.browser_ui.site_settings.SiteSettingsPreferenceFragment;
  301. +import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
  302. +import org.chromium.components.content_settings.ContentSettingsType;
  303. +import org.chromium.components.browser_ui.settings.SettingsUtils;
  304. +import org.chromium.chrome.browser.flags.CachedFeatureFlags;
  305. +import androidx.annotation.VisibleForTesting;
  306. +import org.chromium.chrome.R;
  307. +
  308. +/**
  309. + * Fragment that allows the user to configure AdBlock related preferences.
  310. + */
  311. +public class AdBlockPreferences extends SiteSettingsPreferenceFragment {
  312. + @VisibleForTesting
  313. + public static final String PREF_ADBLOCK_SWITCH = "adblock_switch";
  314. + private static final String PREF_ADBLOCK_EDIT = "adblock_edit";
  315. +
  316. + private Preference mAdBlockEdit;
  317. +
  318. + @Override
  319. + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
  320. + getActivity().setTitle(R.string.options_adblock_title);
  321. + SettingsUtils.addPreferencesFromResource(this, R.xml.adblock_preferences);
  322. +
  323. + BrowserContextHandle browserContextHandle =
  324. + getSiteSettingsClient().getBrowserContextHandle();
  325. +
  326. + ChromeSwitchPreference mAdBlockSwitch =
  327. + (ChromeSwitchPreference) findPreference(PREF_ADBLOCK_SWITCH);
  328. + boolean isAdBlockEnabled = !WebsitePreferenceBridge.isCategoryEnabled(browserContextHandle, ContentSettingsType.ADS);
  329. + mAdBlockSwitch.setChecked(isAdBlockEnabled);
  330. + mAdBlockSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
  331. + WebsitePreferenceBridge.setCategoryEnabled(browserContextHandle, ContentSettingsType.ADS, !(boolean) newValue);
  332. + return true;
  333. + });
  334. +
  335. + mAdBlockEdit = findPreference(PREF_ADBLOCK_EDIT);
  336. + updateCurrentAdBlockUrl();
  337. + }
  338. +
  339. + private void updateCurrentAdBlockUrl() {
  340. + mAdBlockEdit.setSummary(CachedFeatureFlags.getAdBlockFiltersURL());
  341. + }
  342. +
  343. + @Override
  344. + public void onResume() {
  345. + super.onResume();
  346. + updateCurrentAdBlockUrl();
  347. + }
  348. +}
  349. diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
  350. --- a/chrome/app/generated_resources.grd
  351. +++ b/chrome/app/generated_resources.grd
  352. @@ -10047,6 +10047,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
  353. Never show this again.
  354. </message>
  355. + <!-- Ad Blocking preferences -->
  356. + <if expr="is_android">
  357. + <message name="IDS_OPTIONS_ADBLOCK_TITLE" desc="The title of the Ad Blocking option on Android" formatter_data="android_java">
  358. + Ad Blocking
  359. + </message>
  360. + <message name="IDS_OPTIONS_ADBLOCK_SUMMARY" desc="The title of the Ad Blocking summary on Android" formatter_data="android_java">
  361. + Configure Ad Blocking and filters URL
  362. + </message>
  363. + </if>
  364. +
  365. <!-- Ad Blocking UI strings. -->
  366. <message name="IDS_ALWAYS_ALLOW_ADS" desc="Explanation associated with a toggle to allow ads after ads have been blocked on the page. To be used on pages where the ad blocking UI is governed by a persistent permissions-based whitelist.">
  367. Always allow ads on this site
  368. diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
  369. --- a/chrome/browser/browser_process_impl.cc
  370. +++ b/chrome/browser/browser_process_impl.cc
  371. @@ -1066,7 +1066,8 @@ BrowserProcessImpl::adblock_updater() {
  372. adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
  373. g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
  374. std::move(scheduler),
  375. - g_browser_process->subresource_filter_ruleset_service());
  376. + g_browser_process->subresource_filter_ruleset_service(),
  377. + local_state()->GetString(prefs::kAdBlockFiltersURL));
  378. return adblock_updater_.get();
  379. }
  380. diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/browser/flags/android/cached_feature_flags.cc
  381. --- a/chrome/browser/flags/android/cached_feature_flags.cc
  382. +++ b/chrome/browser/flags/android/cached_feature_flags.cc
  383. @@ -8,6 +8,9 @@
  384. #include "base/android/jni_string.h"
  385. #include "base/feature_list.h"
  386. +#include "chrome/browser/browser_process.h"
  387. +#include "chrome/common/pref_names.h"
  388. +#include "components/prefs/pref_service.h"
  389. #include "content/public/common/content_features.h"
  390. #include "content/public/common/network_service_util.h"
  391. @@ -41,3 +44,11 @@ static jboolean JNI_CachedFeatureFlags_IsNetworkServiceWarmUpEnabled(
  392. return content::IsOutOfProcessNetworkService() &&
  393. base::FeatureList::IsEnabled(features::kWarmUpNetworkProcess);
  394. }
  395. +
  396. +static ScopedJavaLocalRef<jstring> JNI_CachedFeatureFlags_GetAdBlockFiltersURL(JNIEnv* env) {
  397. + return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kAdBlockFiltersURL));
  398. +}
  399. +
  400. +static void JNI_CachedFeatureFlags_SetAdBlockFiltersURL(JNIEnv* env, const JavaParamRef<jstring>& url) {
  401. + g_browser_process->local_state()->SetString(prefs::kAdBlockFiltersURL, base::android::ConvertJavaStringToUTF8(env, url));
  402. +}
  403. diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
  404. --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
  405. +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
  406. @@ -260,6 +260,14 @@ public class CachedFeatureFlags {
  407. ChromeFeatureList.REACHED_CODE_PROFILER, "sampling_interval_us", 0));
  408. }
  409. + public static void setAdBlockFiltersURL(String url) {
  410. + CachedFeatureFlagsJni.get().setAdBlockFiltersURL(url);
  411. + }
  412. +
  413. + public static String getAdBlockFiltersURL() {
  414. + return CachedFeatureFlagsJni.get().getAdBlockFiltersURL();
  415. + }
  416. +
  417. /**
  418. * Caches flags that must take effect on startup but are set via native code.
  419. */
  420. @@ -412,5 +420,7 @@ public class CachedFeatureFlags {
  421. @NativeMethods
  422. interface Natives {
  423. boolean isNetworkServiceWarmUpEnabled();
  424. + void setAdBlockFiltersURL(String url);
  425. + String getAdBlockFiltersURL();
  426. }
  427. }
  428. diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
  429. --- a/chrome/browser/net/system_network_context_manager.cc
  430. +++ b/chrome/browser/net/system_network_context_manager.cc
  431. @@ -331,6 +331,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
  432. SSLConfigServiceManager::CreateDefaultManager(local_state_)),
  433. proxy_config_monitor_(local_state_),
  434. stub_resolver_config_reader_(local_state_) {
  435. + local_state_->SetDefaultPrefValue(prefs::kAdBlockFiltersURL,
  436. + base::Value("https://www.bromite.org/filters/filters.dat"));
  437. #if !defined(OS_ANDROID)
  438. // QuicAllowed was not part of Android policy.
  439. const base::Value* value =
  440. @@ -393,6 +395,8 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  441. void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
  442. StubResolverConfigReader::RegisterPrefs(registry);
  443. + registry->RegisterStringPref(prefs::kAdBlockFiltersURL, std::string());
  444. +
  445. // Static auth params
  446. registry->RegisterStringPref(prefs::kAuthSchemes,
  447. "basic,digest,ntlm,negotiate");
  448. diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  449. --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
  450. +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
  451. @@ -214,6 +214,20 @@ CHAR-LIMIT guidelines:
  452. Enter VR
  453. </message>
  454. + <!-- AdBlock settings -->
  455. + <message name="IDS_PREFS_ADBLOCK" desc="Title of the AdBlock Settings screen. [CHAR-LIMIT=32]">
  456. + AdBlock settings
  457. + </message>
  458. + <message name="IDS_OPTIONS_ADBLOCK_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that is used to fetch the ad blocker filters.">
  459. + Edit filters URL
  460. + </message>
  461. + <message name="IDS_OPTIONS_ADBLOCK_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is used to fetch the ad blocker filters.">
  462. + Filters URL
  463. + </message>
  464. + <message name="IDS_ADBLOCK_HELP" desc="The title of the hyperlink that allows users to visit the web page with instructions for custom ad blocker filters.">
  465. + Visit help page
  466. + </message>
  467. +
  468. <!-- Notification channels -->
  469. <message name="IDS_NOTIFICATION_CATEGORY_GROUP_GENERAL" desc='Subheading for "General" section of a list of notification categories. [CHAR-LIMIT=32]'>
  470. General
  471. diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
  472. --- a/chrome/common/pref_names.cc
  473. +++ b/chrome/common/pref_names.cc
  474. @@ -2103,6 +2103,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  475. // capture devices without prompt.
  476. const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  477. +// Holds the URL to an indexed subresource filters file.
  478. +const char kAdBlockFiltersURL[] = "adblock.filters_url";
  479. +
  480. // A pref holding the value of the policy used to explicitly allow or deny
  481. // access to video capture devices. When enabled or not set, the user is
  482. // prompted for device access. When disabled, access to video capture devices
  483. diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
  484. --- a/chrome/common/pref_names.h
  485. +++ b/chrome/common/pref_names.h
  486. @@ -30,6 +30,7 @@ extern const char kDownloadRestrictions[];
  487. extern const char kForceEphemeralProfiles[];
  488. extern const char kHomePageIsNewTabPage[];
  489. extern const char kHomePage[];
  490. +extern const char kAdBlockFiltersURL[];
  491. extern const char kImportantSitesDialogHistory[];
  492. extern const char kProfileCreationTime[];
  493. #if defined(OS_WIN)
  494. diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc
  495. --- a/components/component_updater/adblock_updater_service.cc
  496. +++ b/components/component_updater/adblock_updater_service.cc
  497. @@ -46,12 +46,12 @@ const int initial_check_delay = 5,
  498. next_check_delay = 60*60*24*7, // 1 week
  499. on_demand_check_delay = 60; // minimum 1 minute between each on-demand check
  500. -AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler, subresource_filter::RulesetService* ruleset_service)
  501. +AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler,
  502. + subresource_filter::RulesetService* ruleset_service, std::string filters_url)
  503. : ruleset_service_(ruleset_service), shared_url_network_factory_(shared_url_network_factory), scheduler_(std::move(scheduler)) {
  504. DCHECK(ruleset_service);
  505. - //TODO: retrieve filters URL from config/prefs
  506. - filters_url_ = "https://www.bromite.org/filters/filters.dat";
  507. + filters_url_ = filters_url;
  508. }
  509. AdBlockUpdaterService::~AdBlockUpdaterService() {
  510. diff --git a/components/component_updater/adblock_updater_service.h b/components/component_updater/adblock_updater_service.h
  511. --- a/components/component_updater/adblock_updater_service.h
  512. +++ b/components/component_updater/adblock_updater_service.h
  513. @@ -54,7 +54,8 @@ class Observer {
  514. // All methods are safe to call ONLY from the browser's main thread.
  515. class AdBlockUpdaterService {
  516. public:
  517. - AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler, subresource_filter::RulesetService* ruleset_service);
  518. + AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler,
  519. + subresource_filter::RulesetService* ruleset_service, std::string filters_url);
  520. ~AdBlockUpdaterService();
  521. // Adds an observer for this class. An observer should not be added more
  522. --
  523. 2.17.1