| Index: libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/AdblockHelper.java | 
| diff --git a/libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/AdblockHelper.java b/libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/AdblockHelper.java | 
| index bd2a25719538651340710c400e0180401770b476..11d8d929241c4d389049e72fc04504559b5c509a 100644 | 
| --- a/libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/AdblockHelper.java | 
| +++ b/libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/AdblockHelper.java | 
| @@ -22,8 +22,11 @@ import android.content.SharedPreferences; | 
| import android.util.Log; | 
| import org.adblockplus.libadblockplus.android.AdblockEngine; | 
| +import org.adblockplus.libadblockplus.android.AndroidWebRequestResourceWrapper; | 
| import org.adblockplus.libadblockplus.android.Utils; | 
| +import java.io.File; | 
| +import java.util.Map; | 
| import java.util.concurrent.CountDownLatch; | 
| import java.util.concurrent.atomic.AtomicInteger; | 
| @@ -36,14 +39,21 @@ public class AdblockHelper | 
| private static final String TAG = Utils.getTag(AdblockHelper.class); | 
| /** | 
| - * Suggested preference name | 
| + * Suggested preference name to store settings | 
| */ | 
| public static final String PREFERENCE_NAME = "ADBLOCK"; | 
| + | 
| + /** | 
| + * Suggested preference name to store intercepted subscription requests | 
| + */ | 
| + public static final String PRELOAD_PREFERENCE_NAME = "ADBLOCK_PRELOAD"; | 
| private static AdblockHelper _instance; | 
| private Context context; | 
| private boolean developmentBuild; | 
| - private String preferenceName; | 
| + private String settingsPreferenceName; | 
| + private String preloadedPreferenceName; | 
| + private Map<String, Integer> urlToResourceIdMap; | 
| private AdblockEngine engine; | 
| private AdblockSettingsStorage storage; | 
| private CountDownLatch engineCreated; | 
| @@ -89,13 +99,25 @@ public class AdblockHelper | 
| * Init with context | 
| * @param context application context | 
| * @param developmentBuild debug or release? | 
| - * @param preferenceName Shared Preferences name | 
| + * @param preferenceName Shared Preferences name to store adblock settings | 
| */ | 
| - public void init(Context context, boolean developmentBuild, String preferenceName) | 
| + public AdblockHelper init(Context context, boolean developmentBuild, String preferenceName) | 
| { | 
| this.context = context.getApplicationContext(); | 
| this.developmentBuild = developmentBuild; | 
| - this.preferenceName = preferenceName; | 
| + this.settingsPreferenceName = preferenceName; | 
| + return this; | 
| + } | 
| + | 
| + /** | 
| + * Use preloaded subscriptions | 
| + * @param preferenceName Shared Preferences name to store intercepted requests stats | 
| + * @param urlToResourceIdMap | 
| + */ | 
| + public void preloadSubscriptions(String preferenceName, Map<String, Integer> urlToResourceIdMap) | 
| + { | 
| + this.preloadedPreferenceName = preferenceName; | 
| + this.urlToResourceIdMap = urlToResourceIdMap; | 
| } | 
| private void createAdblock() | 
| @@ -103,13 +125,32 @@ public class AdblockHelper | 
| Log.d(TAG, "Creating adblock engine ..."); | 
| // read and apply current settings | 
| - SharedPreferences prefs = context.getSharedPreferences(preferenceName, Context.MODE_PRIVATE); | 
| - storage = new SharedPrefsStorage(prefs); | 
| + SharedPreferences settingsPrefs = context.getSharedPreferences( | 
| + settingsPreferenceName, | 
| + Context.MODE_PRIVATE); | 
| + storage = new SharedPrefsStorage(settingsPrefs); | 
| + | 
| + File basePath = context.getDir(AdblockEngine.BASE_PATH_DIRECTORY, Context.MODE_PRIVATE); | 
| + AdblockEngine.Builder builder = AdblockEngine | 
| + .builder( | 
| + AdblockEngine.generateAppInfo(context, developmentBuild), | 
| + basePath.getAbsolutePath()) | 
| + .enableElementHiding(true); | 
| + | 
| + // if preloaded subscriptions provided | 
| + if (preloadedPreferenceName != null) | 
| + { | 
| + SharedPreferences preloadedSubscriptionsPrefs = context.getSharedPreferences( | 
| + preloadedPreferenceName, | 
| + Context.MODE_PRIVATE); | 
| + builder.preloadSubscriptions( | 
| + context, | 
| + urlToResourceIdMap, | 
| + new AndroidWebRequestResourceWrapper.SharedPrefsStorage(preloadedSubscriptionsPrefs)); | 
| + } | 
| + | 
| + engine = builder.build(); | 
| - engine = AdblockEngine.create( | 
| - AdblockEngine.generateAppInfo(context, developmentBuild), | 
| - context.getCacheDir().getAbsolutePath(), | 
| - true); // `true` as we need element hiding | 
| Log.d(TAG, "AdblockHelper engine created"); | 
| AdblockSettings settings = storage.load(); |