Index: libadblockplus-android/src/org/adblockplus/libadblockplus/android/AndroidWebRequestResourceWrapper.java |
diff --git a/libadblockplus-android/src/org/adblockplus/libadblockplus/android/AndroidWebRequestResourceWrapper.java b/libadblockplus-android/src/org/adblockplus/libadblockplus/android/AndroidWebRequestResourceWrapper.java |
deleted file mode 100644 |
index 9bd0cafcd63b9d614976f52f87c31a6635a84e47..0000000000000000000000000000000000000000 |
--- a/libadblockplus-android/src/org/adblockplus/libadblockplus/android/AndroidWebRequestResourceWrapper.java |
+++ /dev/null |
@@ -1,249 +0,0 @@ |
-/* |
- * This file is part of Adblock Plus <https://adblockplus.org/>, |
- * Copyright (C) 2006-present eyeo GmbH |
- * |
- * Adblock Plus is free software: you can redistribute it and/or modify |
- * it under the terms of the GNU General Public License version 3 as |
- * published by the Free Software Foundation. |
- * |
- * Adblock Plus is distributed in the hope that it will be useful, |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
- * GNU General Public License for more details. |
- * |
- * You should have received a copy of the GNU General Public License |
- * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
- */ |
-package org.adblockplus.libadblockplus.android; |
- |
-import android.content.Context; |
-import android.content.SharedPreferences; |
-import android.util.Log; |
- |
-import org.adblockplus.libadblockplus.HeaderEntry; |
-import org.adblockplus.libadblockplus.ServerResponse; |
-import org.adblockplus.libadblockplus.WebRequest; |
- |
-import java.io.BufferedReader; |
-import java.io.IOException; |
-import java.io.InputStream; |
-import java.io.InputStreamReader; |
-import java.util.Collections; |
-import java.util.HashSet; |
-import java.util.List; |
-import java.util.Map; |
-import java.util.Set; |
- |
-/** |
- * WebRequest wrapper to return request response from android resources for selected URLs |
- */ |
-public class AndroidWebRequestResourceWrapper implements WebRequest |
-{ |
- private static final String TAG = Utils.getTag(AndroidWebRequestResourceWrapper.class); |
- |
- public static final String EASYLIST = |
- "https://easylist-downloads.adblockplus.org/easylist.txt"; |
- public static final String EASYLIST_INDONESIAN = |
- "https://easylist-downloads.adblockplus.org/abpindo+easylist.txt"; |
- public static final String EASYLIST_BULGARIAN = |
- "https://easylist-downloads.adblockplus.org/bulgarian_list+easylist.txt"; |
- public static final String EASYLIST_CHINESE = |
- "https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt"; |
- public static final String EASYLIST_CZECH_SLOVAK = |
- "https://easylist-downloads.adblockplus.org/easylistczechslovak+easylist.txt"; |
- public static final String EASYLIST_DUTCH = |
- "https://easylist-downloads.adblockplus.org/easylistdutch+easylist.txt"; |
- public static final String EASYLIST_GERMAN = |
- "https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt"; |
- public static final String EASYLIST_ISRAELI = |
- "https://easylist-downloads.adblockplus.org/israellist+easylist.txt"; |
- public static final String EASYLIST_ITALIAN = |
- "https://easylist-downloads.adblockplus.org/easylistitaly+easylist.txt"; |
- public static final String EASYLIST_LITHUANIAN = |
- "https://easylist-downloads.adblockplus.org/easylistlithuania+easylist.txt"; |
- public static final String EASYLIST_LATVIAN = |
- "https://easylist-downloads.adblockplus.org/latvianlist+easylist.txt"; |
- public static final String EASYLIST_ARABIAN_FRENCH = |
- "https://easylist-downloads.adblockplus.org/liste_ar+liste_fr+easylist.txt"; |
- public static final String EASYLIST_FRENCH = |
- "https://easylist-downloads.adblockplus.org/liste_fr+easylist.txt"; |
- public static final String EASYLIST_ROMANIAN = |
- "https://easylist-downloads.adblockplus.org/rolist+easylist.txt"; |
- public static final String EASYLIST_RUSSIAN = |
- "https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt"; |
- public static final String ACCEPTABLE_ADS = |
- "https://easylist-downloads.adblockplus.org/exceptionrules.txt"; |
- |
- private Context context; |
- private WebRequest request; |
- private Map<String, Integer> urlToResourceIdMap; |
- private Storage storage; |
- private Listener listener; |
- |
- /** |
- * Constructor |
- * @param context android context |
- * @param request wrapped request to perform the request if it's not preloaded subscription requested |
- * @param urlToResourceIdMap map URL -> android resource id for preloaded subscriptions |
- * See AndroidWebRequestResourceWrapper.EASYLIST_... constants |
- * @param storage Storage impl to remember served interceptions |
- */ |
- public AndroidWebRequestResourceWrapper(Context context, WebRequest request, |
- Map<String, Integer> urlToResourceIdMap, |
- Storage storage) |
- { |
- this.context = context; |
- this.request = request; |
- this.urlToResourceIdMap = Collections.synchronizedMap(urlToResourceIdMap); |
- this.storage = storage; |
- } |
- |
- public Listener getListener() |
- { |
- return listener; |
- } |
- |
- public void setListener(Listener listener) |
- { |
- this.listener = listener; |
- } |
- |
- @Override |
- public ServerResponse httpGET(String url, List<HeaderEntry> headers) |
- { |
- // since parameters may vary we need to ignore them |
- String urlWithoutParams = Utils.getUrlWithoutParams(url); |
- Integer resourceId = urlToResourceIdMap.get(urlWithoutParams); |
- |
- if (resourceId != null) |
- { |
- if (!storage.contains(urlWithoutParams)) |
- { |
- Log.w(TAG, "Intercepting request for " + url + " with resource #" + resourceId.intValue()); |
- ServerResponse response = buildResourceContentResponse(resourceId); |
- storage.put(urlWithoutParams); |
- |
- if (listener != null) |
- { |
- listener.onIntercepted(url, resourceId); |
- } |
- |
- return response; |
- } |
- else |
- { |
- Log.d(TAG, "Skip intercepting"); |
- } |
- } |
- |
- // delegate to wrapper request |
- return request.httpGET(url, headers); |
- } |
- |
- protected String readResourceContent(int resourceId) throws IOException |
- { |
- Log.d(TAG, "Reading from resource ..."); |
- |
- InputStream is = null; |
- |
- try |
- { |
- is = context.getResources().openRawResource(resourceId); |
- BufferedReader br = new BufferedReader(new InputStreamReader(is)); |
- StringBuilder sb = new StringBuilder(); |
- String line; |
- boolean firstLine = true; |
- while ((line = br.readLine()) != null) |
- { |
- if (firstLine) |
- { |
- firstLine = false; |
- } |
- else |
- { |
- sb.append("\r\n"); |
- } |
- sb.append(line); |
- } |
- |
- Log.d(TAG, "Resource read (" + sb.length() + " bytes)"); |
- return sb.toString(); |
- } |
- finally |
- { |
- if (is != null) |
- { |
- is.close(); |
- } |
- } |
- } |
- |
- protected ServerResponse buildResourceContentResponse(int resourceId) |
- { |
- ServerResponse response = new ServerResponse(); |
- try |
- { |
- response.setResponse(readResourceContent(resourceId)); |
- response.setResponseStatus(200); |
- response.setStatus(ServerResponse.NsStatus.OK); |
- } |
- catch (IOException e) |
- { |
- Log.e(TAG, "Error injecting response", e); |
- response.setStatus(ServerResponse.NsStatus.ERROR_FAILURE); |
- } |
- |
- return response; |
- } |
- |
- /** |
- * Listener for events |
- */ |
- public interface Listener |
- { |
- void onIntercepted(String url, int resourceId); |
- } |
- |
- /** |
- * Interface to remember intercepted subscription requests |
- */ |
- public interface Storage |
- { |
- void put(String url); |
- boolean contains(String url); |
- } |
- |
- /** |
- * Storage impl in Shared Preferences |
- */ |
- public static class SharedPrefsStorage implements Storage |
- { |
- private static final String URLS = "urls"; |
- |
- private SharedPreferences prefs; |
- private Set<String> urls; |
- |
- public SharedPrefsStorage(SharedPreferences prefs) |
- { |
- this.prefs = prefs; |
- this.urls = prefs.getStringSet(URLS, new HashSet<String>()); |
- } |
- |
- @Override |
- public synchronized void put(String url) |
- { |
- urls.add(url); |
- |
- prefs |
- .edit() |
- .putStringSet(URLS, urls) |
- .commit(); |
- } |
- |
- @Override |
- public synchronized boolean contains(String url) |
- { |
- return urls.contains(url); |
- } |
- } |
-} |