Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: mobile/android/thirdparty/org/adblockplus/browser/AddOnBridge.java

Issue 5365916275572736: Issue 2351 - Add a custom menu item for whitelisting the current site (Closed)
Patch Set: Minimally invasive approach Created May 6, 2015, 12:12 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2015 Eyeo GmbH 3 * Copyright (C) 2006-2015 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 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 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 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/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 package org.adblockplus.browser; 18 package org.adblockplus.browser;
19 19
20 import java.util.HashMap;
21 import java.util.Map;
22
20 import android.annotation.SuppressLint; 23 import android.annotation.SuppressLint;
21 import android.os.Handler; 24 import android.os.Handler;
22 import android.os.HandlerThread; 25 import android.os.HandlerThread;
23 import android.util.Log; 26 import android.util.Log;
24 27
25 import org.json.JSONException; 28 import org.json.JSONException;
26 import org.json.JSONObject; 29 import org.json.JSONObject;
27 import org.mozilla.gecko.GeckoAppShell; 30 import org.mozilla.gecko.GeckoAppShell;
28 import org.mozilla.gecko.util.GeckoRequest; 31 import org.mozilla.gecko.util.GeckoRequest;
29 import org.mozilla.gecko.util.NativeJSObject; 32 import org.mozilla.gecko.util.NativeJSObject;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 public static void setBoolean(final AdblockPlusApiCallback callback, final Str ing name, 130 public static void setBoolean(final AdblockPlusApiCallback callback, final Str ing name,
128 final boolean enable) 131 final boolean enable)
129 { 132 {
130 Log.d(TAG, "setBoolean " + enable + " for " + name); 133 Log.d(TAG, "setBoolean " + enable + " for " + name);
131 GeckoAppShell.sendRequestToGecko( 134 GeckoAppShell.sendRequestToGecko(
132 new ChainedRequest( 135 new ChainedRequest(
133 createRequestData("set" + makeFirstCharacterUppercase(name), enable) , 136 createRequestData("set" + makeFirstCharacterUppercase(name), enable) ,
134 callback)); 137 callback));
135 } 138 }
136 139
137 private static void sendSubscriptionRequest(final AdblockPlusApiCallback callb ack, 140 private static void callFunction(final AdblockPlusApiCallback callback, final String name,
René Jeschke 2015/05/06 10:56:33 I must admit, that I would prefer 'final JSONObje
Felix Dahlke 2015/05/06 16:42:50 As discussed on IRC: A Map is not great, but we'd
138 final String action, final String url, final String title) 141 final Map<String, String> parameters)
139 { 142 {
140 final JSONObject obj = createRequestData(action); 143 final JSONObject requestData = createRequestData(name);
141 try 144 try
142 { 145 {
143 obj.put("url", url); 146 for (Map.Entry<String, String> entry : parameters.entrySet())
144 if (title != null) 147 requestData.put(entry.getKey(), entry.getValue());
145 {
146 obj.put("title", title);
147 }
148 } 148 }
149 catch (JSONException e) 149 catch (JSONException e)
150 { 150 {
151 // we're only adding sane objects 151 // we're only adding sane objects
152 Log.e(TAG, "Creating request data failed with: " + e.getMessage(), e); 152 Log.e(TAG, "Creating request data failed with: " + e.getMessage(), e);
153 } 153 }
154 GeckoAppShell.sendRequestToGecko(new ChainedRequest(obj, callback)); 154 GeckoAppShell.sendRequestToGecko(new ChainedRequest(requestData, callback));
155 } 155 }
156 156
157 public static void querySubscriptionListStatus(final AdblockPlusApiCallback ca llback, 157 public static void querySubscriptionListStatus(final AdblockPlusApiCallback ca llback,
158 final String url) 158 final String url)
159 { 159 {
160 Log.d(TAG, "querySubscriptionListStatus for " + url); 160 Log.d(TAG, "querySubscriptionListStatus for " + url);
161 sendSubscriptionRequest(callback, "isSubscriptionListed", url, null); 161 final Map<String, String> parameters = new HashMap<String, String>();
162 parameters.put("url", url);
163 callFunction(callback, "isSubscriptionListed", parameters);
162 } 164 }
163 165
164 public static void addSubscription(final AdblockPlusApiCallback callback, 166 public static void addSubscription(final AdblockPlusApiCallback callback,
165 final String url, final String title) 167 final String url, final String title)
166 { 168 {
167 Log.d(TAG, "addSubscription for " + url + " (" + title + ")"); 169 Log.d(TAG, "addSubscription for " + url + " (" + title + ")");
168 sendSubscriptionRequest(callback, "addSubscription", url, title); 170 final Map<String, String> parameters = new HashMap<String, String>();
171 parameters.put("url", url);
172 parameters.put("title", title);
173 callFunction(callback, "addSubscription", parameters);
169 } 174 }
170 175
171 public static void removeSubscription(final AdblockPlusApiCallback callback, 176 public static void removeSubscription(final AdblockPlusApiCallback callback,
172 final String url) 177 final String url)
173 { 178 {
174 Log.d(TAG, "removeSubscription for " + url); 179 Log.d(TAG, "removeSubscription for " + url);
175 sendSubscriptionRequest(callback, "removeSubscription", url, null); 180 final Map<String, String> parameters = new HashMap<String, String>();
181 parameters.put("url", url);
182 callFunction(callback, "removeSubscription", parameters);
183 }
184
185 public static void queryIsLocal(final AdblockPlusApiCallback callback,
186 final String url)
187 {
188 Log.d(TAG, "queryIsLocal for " + url);
189 final Map<String, String> parameters = new HashMap<String, String>();
190 parameters.put("url", url);
191 callFunction(callback, "isLocal", parameters);
192 }
193
194 public static void queryIsPageWhitelisted(final AdblockPlusApiCallback callbac k,
195 final String url)
196 {
197 Log.d(TAG, "queryIsPageWhitelisted for " + url);
198 final Map<String, String> parameters = new HashMap<String, String>();
199 parameters.put("url", url);
200 callFunction(callback, "isPageWhitelisted", parameters);
201 }
202
203 public static void whitelistSite(final AdblockPlusApiCallback callback, final String url,
204 final boolean whitelisted)
205 {
206 Log.d(TAG, "whitelistSite for " + url);
207 final Map<String, String> parameters = new HashMap<String, String>();
208 parameters.put("url", url);
209 parameters.put("whitelisted", String.valueOf(whitelisted));
René Jeschke 2015/05/06 10:56:33 See comment in Api.jsm and above ... having a JSON
210 callFunction(callback, "whitelistSite", parameters);
176 } 211 }
177 212
178 private static class ChainedRequest extends GeckoRequest 213 private static class ChainedRequest extends GeckoRequest
179 { 214 {
180 private final JSONObject value; 215 private final JSONObject value;
181 private final AdblockPlusApiCallback apiCallback; 216 private final AdblockPlusApiCallback apiCallback;
182 private final boolean checkForFiltersLoaded; 217 private final boolean checkForFiltersLoaded;
183 private final long creationTime; 218 private final long creationTime;
184 219
185 public ChainedRequest(final JSONObject value, final AdblockPlusApiCallback c allback, 220 public ChainedRequest(final JSONObject value, final AdblockPlusApiCallback c allback,
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 this.invokeSuccessCallback(jsObject); 327 this.invokeSuccessCallback(jsObject);
293 } 328 }
294 else 329 else
295 { 330 {
296 this.invokeFailureCallback(jsObject); 331 this.invokeFailureCallback(jsObject);
297 } 332 }
298 } 333 }
299 } 334 }
300 } 335 }
301 } 336 }
OLDNEW

Powered by Google App Engine
This is Rietveld