Left: | ||
Right: |
OLD | NEW |
---|---|
(Empty) | |
1 /* | |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | |
3 * Copyright (C) 2006-present eyeo GmbH | |
4 * | |
5 * Adblock Plus is free software: you can redistribute it and/or modify | |
6 * it under the terms of the GNU General Public License version 3 as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * Adblock Plus is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License | |
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | |
16 */ | |
17 | |
18 package org.adblockplus.libadblockplus; | |
19 | |
20 import android.content.Context; | |
21 import android.os.SystemClock; | |
22 import android.test.InstrumentationTestCase; | |
23 | |
24 import org.adblockplus.libadblockplus.AppInfo; | |
25 import org.adblockplus.libadblockplus.FilterEngine; | |
26 import org.adblockplus.libadblockplus.IsAllowedConnectionCallback; | |
27 import org.adblockplus.libadblockplus.JsEngine; | |
28 import org.adblockplus.libadblockplus.LazyLogSystem; | |
29 import org.adblockplus.libadblockplus.LogSystem; | |
30 import org.adblockplus.libadblockplus.Platform; | |
31 import org.adblockplus.libadblockplus.ThrowingWebRequest; | |
32 import org.adblockplus.libadblockplus.WebRequest; | |
33 | |
34 import java.io.File; | |
35 | |
36 public class BaseTest extends InstrumentationTestCase | |
37 { | |
38 protected Platform platform; | |
39 protected JsEngine jsEngine; | |
40 protected FilterEngine filterEngine; | |
41 private final SetupInfo setupInfo; | |
42 | |
43 public BaseTest() | |
44 { | |
45 super(); | |
46 setupInfo = new SetupInfo(); | |
47 } | |
48 | |
49 @Override | |
50 protected void setUp() throws Exception | |
51 { | |
52 deleteFiles(); | |
53 super.setUp(); | |
54 } | |
55 | |
56 private static class SetupInfo | |
57 { | |
58 public AppInfo appInfo; | |
59 public LogSystem logSystem; | |
60 public WebRequest webRequest; | |
61 public String basePath; | |
62 public IsAllowedConnectionCallback isAllowedConnectionCallback; | |
63 | |
64 public SetupInfo() | |
65 { | |
66 appInfo = AppInfo.builder().build(); | |
67 logSystem = new LazyLogSystem(); | |
68 webRequest = new ThrowingWebRequest(); | |
69 } | |
70 | |
71 public void updateBasePath(Context context) | |
72 { | |
73 if (basePath == null) | |
74 { | |
75 basePath = context.getFilesDir().getAbsolutePath(); | |
76 } | |
77 } | |
78 } | |
79 | |
80 protected void setAppInfo(AppInfo appInfo) | |
81 { | |
anton
2018/08/24 12:25:03
wrong indentation
René Jeschke
2018/08/27 20:02:15
Done.
| |
82 setupInfo.appInfo = appInfo; | |
83 } | |
84 | |
85 protected void setLogSystem(LogSystem logSystem) | |
86 { | |
anton
2018/08/24 12:25:03
wrong indentation
René Jeschke
2018/08/27 20:02:15
Done.
| |
87 setupInfo.logSystem = logSystem; | |
88 } | |
89 | |
90 protected void setWebRequest(WebRequest webRequest) | |
91 { | |
anton
2018/08/24 12:25:04
wrong indentation
René Jeschke
2018/08/27 20:02:15
Done.
| |
92 setupInfo.webRequest = webRequest; | |
93 } | |
94 | |
95 protected void setBasePath(String basePath) | |
96 { | |
anton
2018/08/24 12:25:03
wrong indentation
René Jeschke
2018/08/27 20:02:15
Done.
| |
97 setupInfo.basePath = basePath; | |
98 } | |
99 | |
100 protected void setIsAllowedConnectionCallback(IsAllowedConnectionCallback call back) | |
101 { | |
102 setupInfo.isAllowedConnectionCallback = callback; | |
103 } | |
104 | |
105 protected void deleteFiles() | |
anton
2018/08/24 12:25:03
let's move it to `Util` or `Helper` class
René Jeschke
2018/08/27 20:02:15
It is only used here and in the context of tests.
| |
106 { | |
107 for (File f : getContext().getFilesDir().listFiles()) | |
108 { | |
109 f.delete(); | |
110 } | |
111 } | |
112 | |
113 protected void setupPlatform() | |
114 { | |
115 if (platform == null) | |
116 { | |
117 setupInfo.updateBasePath(getContext()); | |
118 platform = new Platform(setupInfo.logSystem, setupInfo.webRequest, setupIn fo.basePath); | |
119 } | |
120 } | |
121 | |
122 protected void setupJsEngine() | |
123 { | |
124 setupPlatform(); | |
125 if (jsEngine == null) | |
126 { | |
127 platform.setUpJsEngine(setupInfo.appInfo); | |
128 jsEngine = platform.getJsEngine(); | |
129 } | |
130 } | |
131 | |
132 protected void setupFilterEngine() | |
133 { | |
134 setupJsEngine(); | |
135 if (filterEngine == null) | |
136 { | |
137 if (setupInfo.isAllowedConnectionCallback != null) | |
138 { | |
139 platform.setUpFilterEngine(setupInfo.isAllowedConnectionCallback); | |
140 } | |
141 | |
142 filterEngine = platform.getFilterEngine(); | |
143 | |
144 if (filterEngine.isFirstRun()) | |
145 { | |
146 // Wait until stuff got persisted ... | |
147 File patterns = new File(getContext().getFilesDir(), "patterns.ini"); | |
anton
2018/08/24 12:25:04
It sounds like we know too much of `libadblockplus
René Jeschke
2018/08/27 20:02:15
You got a point, but libadblockplus does not imple
René Jeschke
2018/08/27 20:16:36
As you said that everything 'still works', did you
| |
148 while (!patterns.exists()) | |
149 { | |
150 SystemClock.sleep(50); | |
151 } | |
152 } | |
153 } | |
154 } | |
155 | |
156 protected void disposeEngines() | |
157 { | |
158 filterEngine = null; | |
159 jsEngine = null; | |
160 if (platform != null) | |
161 { | |
162 platform.dispose(); | |
163 platform = null; | |
164 } | |
165 } | |
166 | |
167 protected Context getContext() | |
168 { | |
169 return getInstrumentation().getTargetContext(); | |
170 } | |
171 | |
172 @Override | |
173 protected void tearDown() throws Exception | |
174 { | |
175 super.tearDown(); | |
176 disposeEngines(); | |
177 } | |
178 } | |
OLD | NEW |