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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491
  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_sources.gni | 2 +
  6. .../java/res/layout/adblock_editor.xml | 65 +++++++++++++
  7. chrome/android/java/res/values/values.xml | 2 +
  8. .../java/res/xml/adblock_preferences.xml | 25 +++++
  9. .../android/java/res/xml/main_preferences.xml | 11 ++-
  10. .../browser/preferences/AdBlockEditor.java | 91 +++++++++++++++++++
  11. .../preferences/AdBlockPreferences.java | 53 +++++++++++
  12. .../java/strings/android_chrome_strings.grd | 14 +++
  13. chrome/app/generated_resources.grd | 10 ++
  14. chrome/browser/android/feature_utilities.cc | 8 ++
  15. chrome/browser/browser_process_impl.cc | 3 +-
  16. .../net/system_network_context_manager.cc | 3 +
  17. chrome/common/pref_names.cc | 3 +
  18. chrome/common/pref_names.h | 1 +
  19. .../adblock_updater_service.cc | 6 +-
  20. .../adblock_updater_service.h | 3 +-
  21. 16 files changed, 292 insertions(+), 8 deletions(-)
  22. create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
  23. create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml
  24. create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java
  25. create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java
  26. diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
  27. --- a/chrome/android/chrome_java_sources.gni
  28. +++ b/chrome/android/chrome_java_sources.gni
  29. @@ -1277,6 +1277,8 @@ chrome_java_sources = [
  30. "java/src/org/chromium/chrome/browser/preferences/PreferenceUtils.java",
  31. "java/src/org/chromium/chrome/browser/preferences/Preferences.java",
  32. "java/src/org/chromium/chrome/browser/preferences/PreferencesLauncher.java",
  33. + "java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java",
  34. + "java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java",
  35. "java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java",
  36. "java/src/org/chromium/chrome/browser/preferences/SearchEnginePreference.java",
  37. "java/src/org/chromium/chrome/browser/preferences/SearchUtils.java",
  38. diff --git a/chrome/android/java/res/layout/adblock_editor.xml b/chrome/android/java/res/layout/adblock_editor.xml
  39. new file mode 100644
  40. --- /dev/null
  41. +++ b/chrome/android/java/res/layout/adblock_editor.xml
  42. @@ -0,0 +1,65 @@
  43. +<?xml version="1.0" encoding="utf-8"?>
  44. +<!-- Copyright 2015 The Chromium Authors. All rights reserved.
  45. + Use of this source code is governed by a BSD-style license that can be
  46. + found in the LICENSE file. -->
  47. +
  48. +<FrameLayout
  49. + xmlns:android="http://schemas.android.com/apk/res/android"
  50. + xmlns:app="http://schemas.android.com/apk/res-auto"
  51. + xmlns:tools="http://schemas.android.com/tools"
  52. + android:layout_width="match_parent"
  53. + android:layout_height="match_parent" >
  54. +
  55. + <ScrollView
  56. + android:layout_width="match_parent"
  57. + android:layout_height="match_parent"
  58. + android:id="@+id/scroll_view"
  59. + android:fillViewport="true" >
  60. +
  61. + <LinearLayout
  62. + android:layout_width="match_parent"
  63. + android:layout_height="wrap_content"
  64. + android:orientation="vertical"
  65. + android:focusableInTouchMode="true" >
  66. +
  67. + <org.chromium.chrome.browser.widget.ChromeTextInputLayout
  68. + android:id="@+id/adblock_url"
  69. + style="@style/PreferenceScreenLayout"
  70. + android:layout_width="match_parent"
  71. + android:layout_height="wrap_content" >
  72. + <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
  73. + <EditText
  74. + tools:ignore="Autofill"
  75. + android:id="@+id/adblock_url_edit"
  76. + android:layout_width="match_parent"
  77. + android:layout_height="wrap_content"
  78. + android:inputType="textUri"
  79. + android:singleLine="true"
  80. + android:hint="@string/options_adblock_edit_label" />
  81. + </org.chromium.chrome.browser.widget.ChromeTextInputLayout>
  82. +
  83. + <Space style="@style/ButtonBarTopSpacer" />
  84. + <View style="@style/ButtonBarTopDivider" />
  85. +
  86. + <LinearLayout style="@style/ButtonBar" >
  87. + <org.chromium.ui.widget.ButtonCompat
  88. + android:id="@+id/adblock_reset"
  89. + style="@style/ButtonBarButton"
  90. + android:text="@string/reset" />
  91. +
  92. + <org.chromium.ui.widget.ButtonCompat
  93. + android:id="@+id/adblock_cancel"
  94. + style="@style/ButtonBarButton"
  95. + android:text="@string/cancel" />
  96. +
  97. + <org.chromium.ui.widget.ButtonCompat
  98. + android:id="@+id/adblock_save"
  99. + style="@style/ButtonBarButton"
  100. + android:text="@string/save" />
  101. + </LinearLayout>
  102. + </LinearLayout>
  103. + </ScrollView>
  104. +
  105. + <include layout="@layout/preferences_action_bar_shadow"/>
  106. +
  107. +</FrameLayout>
  108. diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
  109. --- a/chrome/android/java/res/values/values.xml
  110. +++ b/chrome/android/java/res/values/values.xml
  111. @@ -70,6 +70,8 @@
  112. <!-- Our manage space activity. Default pre-KitKat to be nothing. -->
  113. <string name="manage_space_activity"></string>
  114. + <string name="adblock_help_url">https://www.bromite.org/custom-filters</string>
  115. +
  116. <!-- Value for scaleX to mirror drawables correctly for LTR / RTL layouts. -->
  117. <integer name="automirror_scale_x_reverse">-1</integer>
  118. diff --git a/chrome/android/java/res/xml/adblock_preferences.xml b/chrome/android/java/res/xml/adblock_preferences.xml
  119. new file mode 100644
  120. --- /dev/null
  121. +++ b/chrome/android/java/res/xml/adblock_preferences.xml
  122. @@ -0,0 +1,25 @@
  123. +<?xml version="1.0" encoding="utf-8"?>
  124. +<!-- Copyright 2015 The Chromium Authors. All rights reserved.
  125. + Use of this source code is governed by a BSD-style license that can be
  126. + found in the LICENSE file. -->
  127. +
  128. +<PreferenceScreen
  129. + xmlns:android="http://schemas.android.com/apk/res/android"
  130. + xmlns:app="http://schemas.android.com/apk/res-auto">
  131. +
  132. + <org.chromium.chrome.browser.preferences.ChromeSwitchPreference
  133. + android:key="adblock_switch"
  134. + android:summaryOn="@string/text_on"
  135. + android:summaryOff="@string/text_off" />
  136. +
  137. + <org.chromium.chrome.browser.preferences.HyperlinkPreference
  138. + android:key="adblock_help"
  139. + android:title="@string/adblock_help"
  140. + app:url="@string/adblock_help_url" />
  141. +
  142. + <Preference
  143. + android:key="adblock_edit"
  144. + android:title="@string/options_adblock_edit_label"
  145. + android:fragment="org.chromium.chrome.browser.preferences.AdBlockEditor" />
  146. +
  147. +</PreferenceScreen>
  148. diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
  149. --- a/chrome/android/java/res/xml/main_preferences.xml
  150. +++ b/chrome/android/java/res/xml/main_preferences.xml
  151. @@ -60,20 +60,25 @@
  152. android:key="privacy"
  153. android:order="13"
  154. android:title="@string/prefs_privacy"/>
  155. + <Preference
  156. + android:fragment="org.chromium.chrome.browser.preferences.AdBlockPreferences"
  157. + android:key="adblock"
  158. + android:order="14"
  159. + android:title="@string/prefs_adblock"/>
  160. <Preference
  161. android:fragment="org.chromium.chrome.browser.preferences.AccessibilityPreferences"
  162. android:key="accessibility"
  163. - android:order="14"
  164. + android:order="15"
  165. android:title="@string/prefs_accessibility"/>
  166. <Preference
  167. android:fragment="org.chromium.chrome.browser.preferences.website.SiteSettingsPreferences"
  168. android:key="content_settings"
  169. - android:order="15"
  170. + android:order="16"
  171. android:title="@string/prefs_site_settings"/>
  172. <Preference
  173. android:fragment="org.chromium.chrome.browser.preferences.languages.LanguagesPreferences"
  174. android:key="languages"
  175. - android:order="16"
  176. + android:order="17"
  177. android:title="@string/prefs_languages"/>
  178. <org.chromium.chrome.browser.preferences.ChromeBasePreference
  179. android:fragment="org.chromium.chrome.browser.preferences.download.DownloadPreferences"
  180. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java
  181. new file mode 100644
  182. --- /dev/null
  183. +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java
  184. @@ -0,0 +1,91 @@
  185. +// Copyright 2015 The Chromium Authors. All rights reserved.
  186. +// Use of this source code is governed by a BSD-style license that can be
  187. +// found in the LICENSE file.
  188. +
  189. +package org.chromium.chrome.browser.preferences;
  190. +
  191. +import android.os.Bundle;
  192. +import android.support.v4.app.Fragment;
  193. +import android.text.Editable;
  194. +import android.text.TextWatcher;
  195. +import android.view.LayoutInflater;
  196. +import android.view.View;
  197. +import android.view.ViewGroup;
  198. +import android.widget.Button;
  199. +import android.widget.EditText;
  200. +
  201. +import org.chromium.chrome.browser.util.FeatureUtilities;
  202. +import org.chromium.chrome.R;
  203. +import org.chromium.components.url_formatter.UrlFormatter;
  204. +
  205. +/**
  206. + * Provides the Java-UI for editing the DNS-over-HTTPS (AdBlock) preference.
  207. + */
  208. +public class AdBlockEditor extends Fragment implements TextWatcher {
  209. + private EditText mAdBlockFiltersUrlEdit;
  210. + private Button mSaveButton;
  211. + private Button mResetButton;
  212. +
  213. + @Override
  214. + public View onCreateView(LayoutInflater inflater, ViewGroup container,
  215. + Bundle savedInstanceState) {
  216. + super.onCreate(savedInstanceState);
  217. + getActivity().setTitle(R.string.options_adblock_edit_title);
  218. +
  219. + View v = inflater.inflate(R.layout.adblock_editor, container, false);
  220. + View scrollView = v.findViewById(R.id.scroll_view);
  221. + scrollView.getViewTreeObserver().addOnScrollChangedListener(
  222. + PreferenceUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
  223. + mAdBlockFiltersUrlEdit = (EditText) v.findViewById(R.id.adblock_url_edit);
  224. + mAdBlockFiltersUrlEdit.setText(FeatureUtilities.getAdBlockFiltersURL());
  225. + mAdBlockFiltersUrlEdit.addTextChangedListener(this);
  226. + mAdBlockFiltersUrlEdit.requestFocus();
  227. +
  228. + initializeSaveCancelResetButtons(v);
  229. + return v;
  230. + }
  231. +
  232. + @Override
  233. + public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  234. + }
  235. +
  236. + @Override
  237. + public void onTextChanged(CharSequence s, int start, int before, int count) {
  238. + mSaveButton.setEnabled(s.length() != 0);
  239. + mResetButton.setEnabled(true);
  240. + }
  241. +
  242. + @Override
  243. + public void afterTextChanged(Editable s) {
  244. + }
  245. +
  246. + private void initializeSaveCancelResetButtons(View v) {
  247. + mResetButton = (Button) v.findViewById(R.id.adblock_reset);
  248. + mResetButton.setOnClickListener(new View.OnClickListener() {
  249. + @Override
  250. + public void onClick(View v) {
  251. + mAdBlockFiltersUrlEdit.setText(FeatureUtilities.getAdBlockFiltersURL());
  252. + getActivity().finish();
  253. + }
  254. + });
  255. +
  256. + mSaveButton = (Button) v.findViewById(R.id.adblock_save);
  257. + mSaveButton.setEnabled(false);
  258. + mSaveButton.setOnClickListener(new View.OnClickListener() {
  259. + @Override
  260. + public void onClick(View v) {
  261. + FeatureUtilities.setAdBlockFiltersURL(
  262. + UrlFormatter.fixupUrl(mAdBlockFiltersUrlEdit.getText().toString()));
  263. + getActivity().finish();
  264. + }
  265. + });
  266. +
  267. + Button button = (Button) v.findViewById(R.id.adblock_cancel);
  268. + button.setOnClickListener(new View.OnClickListener() {
  269. + @Override
  270. + public void onClick(View v) {
  271. + getActivity().finish();
  272. + }
  273. + });
  274. + }
  275. +}
  276. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java
  277. new file mode 100644
  278. --- /dev/null
  279. +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java
  280. @@ -0,0 +1,53 @@
  281. +// Copyright 2015 The Chromium Authors. All rights reserved.
  282. +// Use of this source code is governed by a BSD-style license that can be
  283. +// found in the LICENSE file.
  284. +
  285. +package org.chromium.chrome.browser.preferences;
  286. +
  287. +import android.os.Bundle;
  288. +import android.support.v7.preference.Preference;
  289. +import android.support.v7.preference.PreferenceFragmentCompat;
  290. +
  291. +import org.chromium.chrome.browser.ContentSettingsType;
  292. +import org.chromium.chrome.browser.util.FeatureUtilities;
  293. +import org.chromium.base.VisibleForTesting;
  294. +import org.chromium.chrome.R;
  295. +
  296. +/**
  297. + * Fragment that allows the user to configure AdBlock related preferences.
  298. + */
  299. +public class AdBlockPreferences extends PreferenceFragmentCompat {
  300. + @VisibleForTesting
  301. + public static final String PREF_ADBLOCK_SWITCH = "adblock_switch";
  302. + private static final String PREF_ADBLOCK_EDIT = "adblock_edit";
  303. +
  304. + private Preference mAdBlockEdit;
  305. +
  306. + @Override
  307. + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
  308. + getActivity().setTitle(R.string.options_adblock_title);
  309. + PreferenceUtils.addPreferencesFromResource(this, R.xml.adblock_preferences);
  310. +
  311. + ChromeSwitchPreference mAdBlockSwitch =
  312. + (ChromeSwitchPreference) findPreference(PREF_ADBLOCK_SWITCH);
  313. + boolean isAdBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
  314. + mAdBlockSwitch.setChecked(isAdBlockEnabled);
  315. + mAdBlockSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
  316. + PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, !(boolean) newValue);
  317. + return true;
  318. + });
  319. +
  320. + mAdBlockEdit = findPreference(PREF_ADBLOCK_EDIT);
  321. + updateCurrentAdBlockUrl();
  322. + }
  323. +
  324. + private void updateCurrentAdBlockUrl() {
  325. + mAdBlockEdit.setSummary(FeatureUtilities.getAdBlockFiltersURL());
  326. + }
  327. +
  328. + @Override
  329. + public void onResume() {
  330. + super.onResume();
  331. + updateCurrentAdBlockUrl();
  332. + }
  333. +}
  334. diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
  335. --- a/chrome/android/java/strings/android_chrome_strings.grd
  336. +++ b/chrome/android/java/strings/android_chrome_strings.grd
  337. @@ -870,6 +870,20 @@ Your Google account may have other forms of browsing history like searches and a
  338. Captions
  339. </message>
  340. + <!-- AdBlock settings -->
  341. + <message name="IDS_PREFS_ADBLOCK" desc="Title of the AdBlock Settings screen. [CHAR-LIMIT=32]">
  342. + AdBlock settings
  343. + </message>
  344. + <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.">
  345. + Edit filters URL
  346. + </message>
  347. + <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.">
  348. + Filters URL
  349. + </message>
  350. + <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.">
  351. + Visit help page
  352. + </message>
  353. +
  354. <!-- Site settings -->
  355. <message name="IDS_PREFS_SITE_SETTINGS" desc="Title of the Website Settings screen. [CHAR-LIMIT=32]">
  356. Site settings
  357. diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
  358. --- a/chrome/app/generated_resources.grd
  359. +++ b/chrome/app/generated_resources.grd
  360. @@ -9603,6 +9603,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
  361. Never show this again.
  362. </message>
  363. + <!-- Ad Blocking preferences -->
  364. + <if expr="is_android">
  365. + <message name="IDS_OPTIONS_ADBLOCK_TITLE" desc="The title of the Ad Blocking option on Android" formatter_data="android_java">
  366. + Ad Blocking
  367. + </message>
  368. + <message name="IDS_OPTIONS_ADBLOCK_SUMMARY" desc="The title of the Ad Blocking summary on Android" formatter_data="android_java">
  369. + Configure Ad Blocking and filters URL
  370. + </message>
  371. + </if>
  372. +
  373. <!-- Ad Blocking UI strings. -->
  374. <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.">
  375. Always allow ads on this site
  376. diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/android/feature_utilities.cc
  377. --- a/chrome/browser/android/feature_utilities.cc
  378. +++ b/chrome/browser/android/feature_utilities.cc
  379. @@ -50,6 +50,14 @@ std::string GetReachedCodeProfilerTrialGroup() {
  380. } // namespace android
  381. } // namespace chrome
  382. +static ScopedJavaLocalRef<jstring> JNI_FeatureUtilities_GetAdBlockFiltersURL(JNIEnv* env) {
  383. + return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kAdBlockFiltersURL));
  384. +}
  385. +
  386. +static void JNI_FeatureUtilities_SetAdBlockFiltersURL(JNIEnv* env, const JavaParamRef<jstring>& url) {
  387. + g_browser_process->local_state()->SetString(prefs::kAdBlockFiltersURL, base::android::ConvertJavaStringToUTF8(env, url));
  388. +}
  389. +
  390. static void JNI_FeatureUtilities_SetCustomTabVisible(
  391. JNIEnv* env,
  392. jboolean visible) {
  393. diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
  394. --- a/chrome/browser/browser_process_impl.cc
  395. +++ b/chrome/browser/browser_process_impl.cc
  396. @@ -1028,7 +1028,8 @@ BrowserProcessImpl::adblock_updater() {
  397. adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
  398. g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
  399. std::move(scheduler),
  400. - g_browser_process->subresource_filter_ruleset_service());
  401. + g_browser_process->subresource_filter_ruleset_service(),
  402. + local_state()->GetString(prefs::kAdBlockFiltersURL));
  403. return adblock_updater_.get();
  404. }
  405. diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
  406. --- a/chrome/browser/net/system_network_context_manager.cc
  407. +++ b/chrome/browser/net/system_network_context_manager.cc
  408. @@ -405,6 +405,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
  409. ssl_config_service_manager_(
  410. SSLConfigServiceManager::CreateDefaultManager(local_state_)),
  411. proxy_config_monitor_(local_state_) {
  412. + local_state_->SetDefaultPrefValue(prefs::kAdBlockFiltersURL,
  413. + base::Value("https://www.bromite.org/filters/filters.dat"));
  414. #if !defined(OS_ANDROID)
  415. // QuicAllowed was not part of Android policy.
  416. const base::Value* value =
  417. @@ -508,6 +510,7 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
  418. }
  419. void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
  420. + registry->RegisterStringPref(prefs::kAdBlockFiltersURL, std::string());
  421. // Register the DnsClient and DoH preferences. The feature list has not been
  422. // initialized yet, so setting the preference defaults here to reflect the
  423. // corresponding features will only cause the preference defaults to reflect
  424. diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
  425. --- a/chrome/common/pref_names.cc
  426. +++ b/chrome/common/pref_names.cc
  427. @@ -1925,6 +1925,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
  428. // capture devices without prompt.
  429. const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
  430. +// Holds the URL to an indexed subresource filters file.
  431. +const char kAdBlockFiltersURL[] = "adblock.filters_url";
  432. +
  433. // A pref holding the value of the policy used to explicitly allow or deny
  434. // access to video capture devices. When enabled or not set, the user is
  435. // prompted for device access. When disabled, access to video capture devices
  436. diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
  437. --- a/chrome/common/pref_names.h
  438. +++ b/chrome/common/pref_names.h
  439. @@ -30,6 +30,7 @@ extern const char kDownloadRestrictions[];
  440. extern const char kForceEphemeralProfiles[];
  441. extern const char kHomePageIsNewTabPage[];
  442. extern const char kHomePage[];
  443. +extern const char kAdBlockFiltersURL[];
  444. extern const char kImportantSitesDialogHistory[];
  445. #if defined(OS_WIN)
  446. extern const char kLastProfileResetTimestamp[];
  447. diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc
  448. --- a/components/component_updater/adblock_updater_service.cc
  449. +++ b/components/component_updater/adblock_updater_service.cc
  450. @@ -46,12 +46,12 @@ const int initial_check_delay = 5,
  451. next_check_delay = 60*60*24*7, // 1 week
  452. on_demand_check_delay = 60; // minimum 1 minute between each on-demand check
  453. -AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler, subresource_filter::RulesetService* ruleset_service)
  454. +AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler,
  455. + subresource_filter::RulesetService* ruleset_service, std::string filters_url)
  456. : ruleset_service_(ruleset_service), shared_url_network_factory_(shared_url_network_factory), scheduler_(std::move(scheduler)) {
  457. DCHECK(ruleset_service);
  458. - //TODO: retrieve filters URL from config/prefs
  459. - filters_url_ = "https://www.bromite.org/filters/filters.dat";
  460. + filters_url_ = filters_url;
  461. }
  462. AdBlockUpdaterService::~AdBlockUpdaterService() {
  463. diff --git a/components/component_updater/adblock_updater_service.h b/components/component_updater/adblock_updater_service.h
  464. --- a/components/component_updater/adblock_updater_service.h
  465. +++ b/components/component_updater/adblock_updater_service.h
  466. @@ -54,7 +54,8 @@ class Observer {
  467. // All methods are safe to call ONLY from the browser's main thread.
  468. class AdBlockUpdaterService {
  469. public:
  470. - AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler, subresource_filter::RulesetService* ruleset_service);
  471. + AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler,
  472. + subresource_filter::RulesetService* ruleset_service, std::string filters_url);
  473. ~AdBlockUpdaterService();
  474. // Adds an observer for this class. An observer should not be added more
  475. --
  476. 2.17.1