summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--assets/web_refiner/web_refiner.conf18
-rw-r--r--res/drawable/rounded_rectangle_background.xml38
-rw-r--r--res/layout/page_info.xml38
-rw-r--r--res/layout/title_bar_nav.xml15
-rw-r--r--res/values/strings.xml4
-rw-r--r--res/xml/general_preferences.xml6
-rw-r--r--src/com/android/browser/BrowserSettings.java12
-rw-r--r--src/com/android/browser/NavigationBarPhone.java39
-rw-r--r--src/com/android/browser/PageDialogsHandler.java10
-rw-r--r--src/com/android/browser/PreferenceKeys.java1
-rw-r--r--swe_android_browser.gypi8
-rw-r--r--swe_res.gypi6
12 files changed, 187 insertions, 8 deletions
diff --git a/assets/web_refiner/web_refiner.conf b/assets/web_refiner/web_refiner.conf
new file mode 100644
index 00000000..45005930
--- /dev/null
+++ b/assets/web_refiner/web_refiner.conf
@@ -0,0 +1,18 @@
+{
+ "version": "1.0",
+ "update": {},
+ "subscriptions": [
+ {
+ "name" : "AdFilter",
+ "format" : "WebRefiner 1.0",
+ "url" : "None",
+ "expiration" : "5 days"
+ },
+ {
+ "name" : "PrivacyFilter",
+ "format" : "WebRefiner 1.0",
+ "url" : "None",
+ "expiration" : "5 days"
+ }
+ ]
+}
diff --git a/res/drawable/rounded_rectangle_background.xml b/res/drawable/rounded_rectangle_background.xml
new file mode 100644
index 00000000..b5211438
--- /dev/null
+++ b/res/drawable/rounded_rectangle_background.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ -->
+
+<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
+
+ <solid android:color="#ffa10404"></solid>
+ <corners android:radius="2dp"></corners>
+ <stroke android:width="1dp" android:color="@color/black"></stroke>
+
+</shape>
diff --git a/res/layout/page_info.xml b/res/layout/page_info.xml
index e3b117c1..3d4bf99c 100644
--- a/res/layout/page_info.xml
+++ b/res/layout/page_info.xml
@@ -43,26 +43,56 @@
android:orientation="vertical">
<TextView
- android:id="@+id/address_header"
+ android:id="@+id/address"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:gravity="start"
+ android:layout_marginStart="20dip"
+ android:layout_marginEnd="20dip"
+ android:layout_marginBottom="12dip" />
+
+ </TableLayout>
+
+ <TableLayout
+ android:id="@+id/web_refiner_info"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@+id/web_refiner_title"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:textStyle="bold"
+ android:layout_marginStart="20dip"
+ android:layout_marginEnd="20dip"
+ android:layout_marginTop="12dip"
+ android:text="WebRefiner"
+ android:layout_marginBottom="12dip" />
+
+ <TextView
+ android:id="@+id/web_refiner_status"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:text="@string/page_info_address"
android:gravity="start"
+ android:text="Enabled on this site"
android:layout_marginStart="20dip"
android:layout_marginEnd="20dip"
- android:layout_marginBottom="10dip" />
+ android:layout_marginBottom="12dip" />
<TextView
- android:id="@+id/address"
+ android:id="@+id/web_refiner_blocked_status"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="start"
+ android:text="99 URLs blocked on this page"
android:layout_marginStart="20dip"
android:layout_marginEnd="20dip"
android:layout_marginBottom="12dip" />
</TableLayout>
+
</LinearLayout>
</ScrollView>
diff --git a/res/layout/title_bar_nav.xml b/res/layout/title_bar_nav.xml
index 142b73b5..83ef6bd1 100644
--- a/res/layout/title_bar_nav.xml
+++ b/res/layout/title_bar_nav.xml
@@ -73,6 +73,21 @@
android:layout_height="32dip"
android:layout_gravity="center"
android:visibility="gone" />
+
+ <TextView
+ android:id="@+id/notification_counter"
+ android:layout_marginTop="6dip"
+ android:layout_width="15dp"
+ android:layout_height="15dp"
+ android:layout_gravity="top|end"
+ android:background="@drawable/rounded_rectangle_background"
+ android:textColor="#FFFFFF"
+ android:textSize="10sp"
+ android:gravity="center"
+ android:text="99"
+ android:textStyle="bold"
+ android:visibility="gone" />
+
</FrameLayout>
<ImageView
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 17a061e3..fdfcc9d1 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -389,6 +389,10 @@
<string name="pref_autofill_enabled">Form auto-fill</string>
<!-- Settings summary for the form AutoFill feature. [CHAR-LIMIT=none] -->
<string name="pref_autofill_enabled_summary">Fill out web forms with a single touch</string>
+ <!-- Checkbox setting for enabling/disabling WebRefiner feature -->
+ <string name="pref_web_refiner_enabled">Web Refiner</string>
+ <!-- Settings summary for the WebRefiner -->
+ <string name="pref_web_refiner_enabled_summary">Block advertisements and tracking</string>
<!-- Label for option that when clicked opens the AutoFill settings screen. Also used as the title of that AutoFill Settings screen. [CHAR-LIMIT=32] -->
<string name="pref_autofill_profile_editor">Auto-fill text</string>
<!-- Summary for the AutoFill Settings preference [CHAR-LIMIT=none] -->
diff --git a/res/xml/general_preferences.xml b/res/xml/general_preferences.xml
index 8f5817f1..662ef308 100644
--- a/res/xml/general_preferences.xml
+++ b/res/xml/general_preferences.xml
@@ -48,6 +48,12 @@
android:summary="@string/pref_autofill_enabled_summary"
android:defaultValue="true" />
+ <CheckBoxPreference
+ android:key="web_refiner_enabled"
+ android:title="@string/pref_web_refiner_enabled"
+ android:summary="@string/pref_web_refiner_enabled_summary"
+ android:defaultValue="true" />
+
<PreferenceScreen
android:key="autofill_profile"
android:title="@string/pref_autofill_profile_editor"
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 8cd2a088..36f28b1b 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -48,6 +48,7 @@ import java.util.WeakHashMap;
import org.codeaurora.swe.AutoFillProfile;
import org.codeaurora.swe.CookieManager;
import org.codeaurora.swe.GeolocationPermissions;
+import org.codeaurora.swe.WebRefiner;
import org.codeaurora.swe.WebSettings.LayoutAlgorithm;
import org.codeaurora.swe.WebSettings.PluginState;
import org.codeaurora.swe.WebSettings.TextSize;
@@ -377,6 +378,9 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
}
} else if (PREF_LINK_PREFETCH.equals(key)) {
updateConnectionType();
+ } else if (PREF_WEB_REFINER_ENABLED.equals(key)) {
+ if (WebRefiner.isInitialized())
+ WebRefiner.getInstance().setRulesEnabled(WebRefiner.CATEGORY_ALL, isWebRefinerEnabled());
}
}
@@ -783,6 +787,14 @@ public class BrowserSettings implements OnSharedPreferenceChangeListener,
mPrefs.edit().putBoolean(PREF_POWERSAVE_ENABLED, value).apply();
}
+ public boolean isWebRefinerEnabled() {
+ return mPrefs.getBoolean(PREF_WEB_REFINER_ENABLED, true);
+ }
+
+ public void setWebRefinerEnabled(boolean value) {
+ mPrefs.edit().putBoolean(PREF_WEB_REFINER_ENABLED, value).apply();
+ }
+
// -----------------------------
// getter/setters for debug_preferences.xml
// -----------------------------
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index 32268002..cb6f7fc6 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -18,9 +18,13 @@ package com.android.browser;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Message;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;
+
+import org.codeaurora.swe.WebRefiner;
import org.codeaurora.swe.WebView;
import org.codeaurora.swe.util.Activator;
import org.codeaurora.swe.util.Observable;
@@ -47,6 +51,10 @@ public class NavigationBarPhone extends NavigationBarBase implements
private float mTabSwitcherInitialTextSize = 0;
private float mTabSwitcherCompressedTextSize = 0;
+ private static final int MSG_UPDATE_NOTIFICATION_COUNTER = 4242;
+ private static final int NOTIFICATION_COUNTER_UPDATE_DELAY = 3000;
+ private TextView mNotificationCounter;
+ private Handler mHandler;
public NavigationBarPhone(Context context) {
super(context);
@@ -89,6 +97,26 @@ public class NavigationBarPhone extends NavigationBarBase implements
mTabSwitcherInitialTextSize = mTabText.getTextSize();
mTabSwitcherCompressedTextSize = (float) (mTabSwitcherInitialTextSize / 1.2);
}
+
+ mNotificationCounter = (TextView) findViewById(R.id.notification_counter);
+ mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message m) {
+ switch (m.what) {
+ case MSG_UPDATE_NOTIFICATION_COUNTER:
+ WebView wv = mUiController.getCurrentTopWebView();
+ if (wv != null && WebRefiner.isInitialized()) {
+ int count = WebRefiner.getInstance().getBlockedURLCount(wv);
+ if (count > 0) {
+ mNotificationCounter.setText(String.valueOf(count));
+ mNotificationCounter.setVisibility(View.VISIBLE);
+ }
+ }
+ mHandler.sendEmptyMessageDelayed(MSG_UPDATE_NOTIFICATION_COUNTER, NOTIFICATION_COUNTER_UPDATE_DELAY);
+ break;
+ }
+ }
+ };
}
@Override
@@ -113,21 +141,24 @@ public class NavigationBarPhone extends NavigationBarBase implements
@Override
public void onProgressStarted() {
super.onProgressStarted();
- if (mStopButton.getDrawable() != mStopDrawable) {
+ /*if (mStopButton.getDrawable() != mStopDrawable) {
mStopButton.setImageDrawable(mStopDrawable);
mStopButton.setContentDescription(mStopDescription);
if (mStopButton.getVisibility() != View.VISIBLE) {
mComboIcon.setVisibility(View.GONE);
mStopButton.setVisibility(View.VISIBLE);
}
- }
+ }*/
+ mNotificationCounter.setVisibility(View.INVISIBLE);
+ mHandler.removeMessages(MSG_UPDATE_NOTIFICATION_COUNTER);
+ mHandler.sendEmptyMessageDelayed(MSG_UPDATE_NOTIFICATION_COUNTER, NOTIFICATION_COUNTER_UPDATE_DELAY);
}
@Override
public void onProgressStopped() {
super.onProgressStopped();
- mStopButton.setImageDrawable(mRefreshDrawable);
- mStopButton.setContentDescription(mRefreshDescription);
+ //mStopButton.setImageDrawable(mRefreshDrawable);
+ //mStopButton.setContentDescription(mRefreshDescription);
if (!isEditingUrl()) {
mComboIcon.setVisibility(View.VISIBLE);
}
diff --git a/src/com/android/browser/PageDialogsHandler.java b/src/com/android/browser/PageDialogsHandler.java
index e027e80a..b92add9c 100644
--- a/src/com/android/browser/PageDialogsHandler.java
+++ b/src/com/android/browser/PageDialogsHandler.java
@@ -27,6 +27,7 @@ import android.view.LayoutInflater;
import android.view.View;
import org.codeaurora.swe.HttpAuthHandler;
import org.codeaurora.swe.SslErrorHandler;
+import org.codeaurora.swe.WebRefiner;
import org.codeaurora.swe.WebView;
import com.android.browser.reflect.ReflectHelper;
@@ -161,6 +162,15 @@ public class PageDialogsHandler {
((TextView) pageInfoView.findViewById(R.id.address)).setText(url);
((TextView) pageInfoView.findViewById(R.id.title)).setText(title);
+ if (WebRefiner.isInitialized() && view != null) {
+ (pageInfoView.findViewById(R.id.web_refiner_info)).setVisibility(View.VISIBLE);
+ int count = WebRefiner.getInstance().getBlockedURLCount(view);
+ String msg = String.valueOf(count) + " requests blocked on this page";
+ ((TextView) pageInfoView.findViewById(R.id.web_refiner_blocked_status)).setText(msg);
+ } else {
+ (pageInfoView.findViewById(R.id.web_refiner_info)).setVisibility(View.INVISIBLE);
+ }
+
mPageInfoView = tab;
mPageInfoFromShowSSLCertificateOnError = fromShowSSLCertificateOnError;
mUrlCertificateOnError = urlCertificateOnError;
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index b0c384a7..2df0cebc 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -59,6 +59,7 @@ public interface PreferenceKeys {
// ----------------------
static final String PREF_AUTOFILL_ENABLED = "autofill_enabled";
static final String PREF_AUTOFILL_PROFILE = "autofill_profile";
+ static final String PREF_WEB_REFINER_ENABLED = "web_refiner_enabled";
static final String PREF_HOMEPAGE = "homepage";
static final String PREF_POWERSAVE_ENABLED = "powersave_enabled";
static final String PREF_SYNC_WITH_CHROME = "sync_with_chrome";
diff --git a/swe_android_browser.gypi b/swe_android_browser.gypi
index 0a6dca5a..d056eb83 100644
--- a/swe_android_browser.gypi
+++ b/swe_android_browser.gypi
@@ -12,6 +12,7 @@
'<@(libnetxt_dependencies)',
'<@(libsta_dependencies)',
'<@(libsweadrenoext_dependencies)',
+ '<@(web_refiner_dependencies)',
#'android-support-v13',
],
'variables': {
@@ -42,6 +43,7 @@
'<@(libnetxt_native_libs)',
'<@(libsta_native_libs)',
'<@(libsweadrenoext_native_libs)',
+ '<@(web_refiner_native_libs)',
],
'additional_input_paths': [
'<@(chrome_android_pak_output_resources)',
@@ -66,6 +68,12 @@
'<(assets_dir)/wml/swe_wml.css',
],
},
+ {
+ 'destination': '<(PRODUCT_DIR)/swe_android_browser_apk/assets/web_refiner',
+ 'files': [
+ '<(assets_dir)/web_refiner/web_refiner.conf',
+ ],
+ },
],
'includes': [ '../../build/java_apk.gypi' ],
},
diff --git a/swe_res.gypi b/swe_res.gypi
index 271400b6..dd1ae7e9 100644
--- a/swe_res.gypi
+++ b/swe_res.gypi
@@ -43,6 +43,12 @@
'<(PRODUCT_DIR)/swe_android_browser_apk/assets/wml/swe_wml.css',
],
},
+ {
+ 'destination': '<(PRODUCT_DIR)/swe_android_browser_apk/swe_res/assets/web_refiner',
+ 'files': [
+ '<(PRODUCT_DIR)/swe_android_browser_apk/assets/web_refiner/web_refiner.conf',
+ ],
+ },
#ui res
{