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

Unified Diff: src/org/adblockplus/brazil/RequestHandler.java

Issue 11172036: ABP/Android libadblockplus integration (Closed)
Patch Set: Created July 22, 2013, 8:52 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/org/adblockplus/brazil/RequestHandler.java
===================================================================
--- a/src/org/adblockplus/brazil/RequestHandler.java
+++ b/src/org/adblockplus/brazil/RequestHandler.java
@@ -34,6 +34,7 @@
import org.adblockplus.ChunkedOutputStream;
import org.adblockplus.android.AdblockPlus;
+import org.apache.commons.lang.StringUtils;
import org.literateprograms.BoyerMoore;
import sunlabs.brazil.server.Request;
@@ -98,32 +99,17 @@
public boolean respond(Request request) throws IOException
{
boolean block = false;
- String reqHost = null;
- String refHost = null;
-
- String referrer = request.getRequestHeader("referer");
try
{
- reqHost = (new URL(request.url)).getHost();
- if (referrer != null)
- refHost = (new URL(referrer)).getHost();
- }
- catch (MalformedURLException e)
- {
- // We are transparent, it's not our deal if it's malformed.
- }
-
- try
- {
- block = application.matches(request.url, request.query, reqHost, refHost, request.getRequestHeader("accept"));
+ block = application.matches(request.url, request.query, request.getRequestHeader("referer"), request.getRequestHeader("accept"));
}
catch (Exception e)
{
Log.e(prefix, "Filter error", e);
}
- request.log(Server.LOG_LOG, prefix, block + ": " + request.url + " ("+ refHost +")");
+ request.log(Server.LOG_LOG, prefix, block + ": " + request.url);
int count = request.server.requestCount;
if (shouldLogHeaders)
@@ -210,9 +196,20 @@
// Detect if we need to add ElemHide filters
String type = request.responseHeaders.get("Content-Type");
- String selectors = null;
+ String[] selectors = null;
if (type != null && type.toLowerCase().startsWith("text/html"))
{
+ String reqHost = "";
+
+ try
+ {
+ reqHost = (new URL(request.url)).getHost();
+ }
+ catch (MalformedURLException e)
+ {
+ // We are transparent, it's not our deal if it's malformed.
+ }
+
selectors = application.getSelectorsForDomain(reqHost);
}
// If no filters are applicable just pass through the response
@@ -304,12 +301,13 @@
List<Integer> matches = matcher.match(buf, 0, count);
if (!matches.isEmpty())
{
- // TODO Do we need to set encoding here?
- byte[] addon = selectors.getBytes();
// Add filters right before match
int m = matches.get(0);
out.write(buf, 0, m);
- out.write(addon);
+ out.write("<style type=\"text/css\">\n".getBytes());
+ // TODO Do we need to set encoding here?
Wladimir Palant 2013/09/12 11:31:14 Yes, pretty certainly. We need to get the encoding
+ out.write(StringUtils.join(selectors, ",\r\n").getBytes());
+ out.write("{ display: none !important }</style>\n".getBytes());
out.write(buf, m, count - m);
sent = true;
continue;
« src/org/adblockplus/android/Preferences.java ('K') | « src/org/adblockplus/android/ProxyService.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld