summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPankaj Garg <pgarg@codeaurora.org>2015-08-20 11:43:49 -0700
committerjrizzoli <joey@cyanogenmoditalia.it>2015-08-28 13:15:48 +0200
commit75273bb96ba54edea17d07f34c6110afac363edb (patch)
treef104249bcda7a54c790aa07ef328e38ac41e474c
parent77a78c22293756de59d6073cef245124a0f717e6 (diff)
downloadandroid_packages_apps_Gello-75273bb96ba54edea17d07f34c6110afac363edb.tar.gz
android_packages_apps_Gello-75273bb96ba54edea17d07f34c6110afac363edb.tar.bz2
android_packages_apps_Gello-75273bb96ba54edea17d07f34c6110afac363edb.zip
Reload page on settings change
- Reload current webpage when user tweaks browser settings CR-Fixed: 5570 Change-Id: I643b857b23e2f39e6f54c3d38eb83622e0794d96
-rw-r--r--src/com/android/browser/BrowserPreferencesPage.java26
-rw-r--r--src/com/android/browser/Controller.java12
-rw-r--r--src/com/android/browser/NavigationBarBase.java4
-rw-r--r--src/com/android/browser/PreferenceKeys.java2
-rw-r--r--src/com/android/browser/TabControl.java26
-rw-r--r--src/com/android/browser/preferences/GeneralPreferencesFragment.java9
-rw-r--r--src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java8
-rw-r--r--src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java69
8 files changed, 143 insertions, 13 deletions
diff --git a/src/com/android/browser/BrowserPreferencesPage.java b/src/com/android/browser/BrowserPreferencesPage.java
index 21414907..46fde6a0 100644
--- a/src/com/android/browser/BrowserPreferencesPage.java
+++ b/src/com/android/browser/BrowserPreferencesPage.java
@@ -19,8 +19,10 @@ package com.android.browser;
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceActivity;
+import android.text.TextUtils;
import android.view.MenuItem;
import com.android.browser.preferences.AboutPreferencesFragment;
@@ -28,8 +30,12 @@ import com.android.browser.preferences.GeneralPreferencesFragment;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
public class BrowserPreferencesPage extends Activity {
+ public static String sResultExtra;
+ private static ArrayList<String> sUpdatedUrls =
+ new ArrayList<String>(); //List of URLS for whom settings were updated
public static void startPreferencesForResult(Activity callerActivity, String url, int requestCode) {
final Intent intent = new Intent(callerActivity, BrowserPreferencesPage.class);
@@ -62,6 +68,8 @@ public class BrowserPreferencesPage extends Activity {
return;
}
+ sResultExtra = "";
+ sUpdatedUrls.clear();
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
@@ -120,4 +128,22 @@ public class BrowserPreferencesPage extends Activity {
}
return super.onOptionsItemSelected(item);
}
+
+ @Override
+ public void finish() {
+ if (!TextUtils.isEmpty(sResultExtra)) {
+ Intent intent = this.getIntent();
+ intent.putExtra(Intent.EXTRA_TEXT, sResultExtra);
+ intent.putStringArrayListExtra(Controller.EXTRA_UPDATED_URLS, sUpdatedUrls);
+ this.setResult(RESULT_OK, intent);
+ }
+ super.finish();
+ }
+
+ public static void onUrlNeedsReload(String url) {
+ String host = (Uri.parse(url)).getHost();
+ if (!sUpdatedUrls.contains(host)) {
+ sUpdatedUrls.add(host);
+ }
+ }
}
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 2b66988c..4a83f8a7 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -134,6 +134,7 @@ public class Controller
public static final String INCOGNITO_URI = "chrome://incognito";
public static final String EXTRA_REQUEST_CODE = "_fake_request_code_";
public static final String EXTRA_RESULT_CODE = "_fake_result_code_";
+ public static final String EXTRA_UPDATED_URLS = "updated_urls";
// Remind switch to data connection if wifi is unavailable
private static final int NETWORK_SWITCH_TYPE_OK = 1;
@@ -1334,6 +1335,17 @@ public class Controller
String action = intent.getStringExtra(Intent.EXTRA_TEXT);
if (PreferenceKeys.PREF_PRIVACY_CLEAR_HISTORY.equals(action)) {
mTabControl.removeParentChildRelationShips();
+ } else if (action.equals(PreferenceKeys.ACTION_RELOAD_PAGE)) {
+ ArrayList<String> origins =
+ intent.getStringArrayListExtra(EXTRA_UPDATED_URLS);
+ if (origins.isEmpty()) {
+ mTabControl.reloadLiveTabs();
+ }
+ else{
+ for (String origin : origins){
+ mTabControl.findAndReload(origin);
+ }
+ }
}
}
break;
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index 77050db8..799891c5 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -341,8 +341,8 @@ public class NavigationBarBase extends LinearLayout implements
baos.toByteArray());
}
BrowserPreferencesPage.startPreferenceFragmentExtraForResult(
- mUiController.getActivity(),
- SiteSpecificPreferencesFragment.class.getName(), bundle, 0);
+ mUiController.getActivity(), SiteSpecificPreferencesFragment.class.getName(),
+ bundle, Controller.PREFERENCES_PAGE);
}
@Override
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index 2f144c51..15ec6a07 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -143,4 +143,6 @@ public interface PreferenceKeys {
static final String PREF_LEGAL_CREDITS = "legal_credits";
static final String PREF_LEGAL_EULA = "legal_eula";
static final String PREF_LEGAL_PRIVACY_POLICY = "legal_privacy_policy";
+
+ static final String ACTION_RELOAD_PAGE = "reload";
}
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index a30cdca6..81da6966 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -16,6 +16,7 @@
package com.android.browser;
+import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
@@ -38,6 +39,31 @@ class TabControl {
private static final String POSITIONS = "positions";
private static final String CURRENT = "current";
+
+ /*
+ Find and reload any live tabs that have loaded the given URL.
+ Note - Upto 2 tabs are live at any given moment.
+ */
+ public void findAndReload(String origin) {
+ for (Tab tab : mTabs){
+ if (tab.getWebView() != null) {
+ Uri url = Uri.parse(tab.getWebView().getUrl());
+ if (url.getHost().equals(origin)){
+ tab.getWebView().reload();
+ }
+ }
+ }
+ }
+
+ // Reload the all the live tabs
+ public void reloadLiveTabs() {
+ for (Tab tab : mTabs) {
+ if (tab.getWebView() != null) {
+ tab.getWebView().reload();
+ }
+ }
+ }
+
public static interface OnThumbnailUpdatedListener {
void onThumbnailUpdated(Tab t);
}
diff --git a/src/com/android/browser/preferences/GeneralPreferencesFragment.java b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
index 09355a5c..9f610617 100644
--- a/src/com/android/browser/preferences/GeneralPreferencesFragment.java
+++ b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
@@ -45,6 +45,7 @@ import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
import com.android.browser.AutoFillSettingsFragment;
+import com.android.browser.BrowserPreferencesPage;
import com.android.browser.BrowserSettings;
import com.android.browser.PreferenceKeys;
import com.android.browser.R;
@@ -102,6 +103,10 @@ public class GeneralPreferencesFragment extends SWEPreferenceFragment
SwitchPreference powersave = (SwitchPreference) findPreference(PREF_POWERSAVE);
powersave.setOnPreferenceChangeListener(this);
+ SwitchPreference nightmode = (SwitchPreference) findPreference(
+ PreferenceKeys.PREF_NIGHTMODE_ENABLED);
+ nightmode.setOnPreferenceChangeListener(this);
+
final Bundle arguments = getArguments();
if (arguments != null && arguments.getBoolean("LowPower")) {
LowPowerDialogFragment fragment = LowPowerDialogFragment.newInstance();
@@ -168,8 +173,12 @@ public class GeneralPreferencesFragment extends SWEPreferenceFragment
PermissionsServiceFactory.setDefaultPermissions(
PermissionsServiceFactory.PermissionType.WEBREFINER, !(Boolean)objValue);
showPowerSaveInfo((Boolean) objValue);
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
}
+ if (pref.getKey().equals(PreferenceKeys.PREF_NIGHTMODE_ENABLED)) {
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
+ }
return true;
}
diff --git a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
index 1bcf0a34..d038163f 100644
--- a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
@@ -17,6 +17,7 @@
package com.android.browser.preferences;
import com.android.browser.BrowserLocationSwitchPreference;
+import com.android.browser.BrowserPreferencesPage;
import com.android.browser.BrowserSettings;
import com.android.browser.PreferenceKeys;
import com.android.browser.R;
@@ -155,30 +156,35 @@ public class PrivacySecurityPreferencesFragment extends SWEPreferenceFragment
if (pref.getKey().toString().equalsIgnoreCase("enable_geolocation")) {
PermissionsServiceFactory.setDefaultPermissions(
PermissionsServiceFactory.PermissionType.GEOLOCATION, flag);
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
return true;
}
if (pref.getKey().toString().equalsIgnoreCase("microphone")) {
PermissionsServiceFactory.setDefaultPermissions(
PermissionsServiceFactory.PermissionType.VOICE, flag);
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
return true;
}
if (pref.getKey().toString().equalsIgnoreCase("camera")) {
PermissionsServiceFactory.setDefaultPermissions(
PermissionsServiceFactory.PermissionType.VIDEO, flag);
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
return true;
}
if (pref.getKey().toString().equalsIgnoreCase("distracting_contents")) {
PermissionsServiceFactory.setDefaultPermissions(
PermissionsServiceFactory.PermissionType.WEBREFINER, !flag);
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
return true;
}
if (pref.getKey().toString().equalsIgnoreCase("popup_windows")) {
PermissionsServiceFactory.setDefaultPermissions(
PermissionsServiceFactory.PermissionType.POPUP, flag);
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
return true;
}
@@ -192,12 +198,14 @@ public class PrivacySecurityPreferencesFragment extends SWEPreferenceFragment
PermissionsServiceFactory.PermissionType.THIRDPARTYCOOKIES, flag);
showPermission(findPreference("accept_third_cookies"), flag);
}
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
return true;
}
if (pref.getKey().toString().equalsIgnoreCase("accept_third_cookies")) {
PermissionsServiceFactory.setDefaultPermissions(
PermissionsServiceFactory.PermissionType.THIRDPARTYCOOKIES, flag);
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
return true;
}
diff --git a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
index 0b3ec8aa..23311b4d 100644
--- a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
+++ b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
@@ -57,6 +57,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.browser.BrowserLocationListPreference;
+import com.android.browser.BrowserPreferencesPage;
import com.android.browser.BrowserSettings;
import com.android.browser.NavigationBarBase;
import com.android.browser.PreferenceKeys;
@@ -94,6 +95,8 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
private ActionBar mBar;
private List<String> mLocationValues;
+ private Preference mSecurityInfoPrefs;
+
private boolean mUsingDefaultSettings = true;
private int mOriginalActionBarOptions;
private int mIconColor = 0;
@@ -182,6 +185,14 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
if (view != null) {
view.clearText();
}
+
+ boolean empty = true;
+ for (Map.Entry<ViewType, String> entry: mTexts.entrySet()) {
+ if (!entry.getValue().isEmpty()) {
+ empty = false;
+ }
+ }
+ mbEmpty = empty;
}
public void setResource(ViewType type, View parent, int resId) {
@@ -309,6 +320,8 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
mSslState = 2;
}
}
+
+ updateSecurityViewVisibility();
}
private AlertDialog.Builder createSslCertificateDialog(Context ctx,
@@ -452,14 +465,17 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
Preference pref = findPreference("clear_data");
updateStorageInfo(pref);
pref.setOnPreferenceClickListener(this);
- String warningText = new String("");
+ String warningText = (mSslState == 1) ? getString(R.string.pref_warning_cert) + " " :
+ new String("");
+ boolean setting_warnings = false;
long permission = showPermission("select_geolocation",
PermissionsServiceFactory.PermissionType.GEOLOCATION,
R.string.pref_security_ask_before_using, R.string.pref_security_not_allowed);
if (PermissionsServiceFactory.Permission.ALLOW == permission) {
- warningText = getString(R.string.pref_privacy_enable_geolocation);
+ warningText += getString(R.string.pref_privacy_enable_geolocation);
+ setting_warnings = true;
}
ListPreference geolocation_pref = (ListPreference) findPreference("select_geolocation");
@@ -477,7 +493,8 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
pref.setSummary(customSummary);
}
mUsingDefaultSettings = false;
- warningText = getString(R.string.pref_privacy_enable_geolocation);
+ warningText += getString(R.string.pref_privacy_enable_geolocation);
+ setting_warnings = true;
geolocation_pref.setValueIndex(1);
} else if (permission == PermissionsServiceFactory.Permission.ALLOW) {
geolocation_pref.setValueIndex(2);
@@ -487,25 +504,31 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
R.string.pref_security_ask_before_using, R.string.pref_security_not_allowed);
if (PermissionsServiceFactory.Permission.ALLOW == permission) {
- if (!warningText.isEmpty()) {
+ if (!warningText.isEmpty() && setting_warnings) {
warningText += ", ";
}
warningText += getString(R.string.pref_security_allow_mic);
+ setting_warnings = true;
}
permission = showPermission("camera", PermissionsServiceFactory.PermissionType.VIDEO,
R.string.pref_security_ask_before_using, R.string.pref_security_not_allowed);
if (PermissionsServiceFactory.Permission.ALLOW == permission) {
- if (!warningText.isEmpty()) {
+ if (!warningText.isEmpty() && setting_warnings) {
warningText += ", ";
}
warningText += getString(R.string.pref_security_allow_camera);
+ setting_warnings = true;
}
if (!warningText.isEmpty()) {
- warningText += " ";
- warningText += getResources().getString(R.string.pref_security_access_is_allowed);
- mSecurityViews.appendText(SiteSecurityViewFactory.ViewType.WARNING, warningText);
+ if (setting_warnings) {
+ warningText += " ";
+ warningText += getResources().getString(R.string.pref_security_access_is_allowed);
+ }
+ mSecurityViews.setText(SiteSecurityViewFactory.ViewType.WARNING, warningText);
+ } else {
+ mSecurityViews.clearText(SiteSecurityViewFactory.ViewType.WARNING);
}
pref = findPreference("distracting_contents");
@@ -530,13 +553,28 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
mBar.getCustomView().setVisibility(View.VISIBLE);
}
+ updateSecurityViewVisibility();
+ }
+
+ private void updateSecurityViewVisibility() {
if (mSecurityViews.mbEmpty) {
PreferenceScreen screen = (PreferenceScreen)
findPreference("site_specific_prefs");
- pref = findPreference("site_security_info_title");
- if (pref != null && screen != null) {
- screen.removePreference(pref);
+ if (mSecurityInfoPrefs == null) {
+ mSecurityInfoPrefs = findPreference("site_security_info_title");
+ }
+
+ if (mSecurityInfoPrefs != null && screen != null) {
+ screen.removePreference(mSecurityInfoPrefs);
+ }
+ } else {
+ PreferenceScreen screen = (PreferenceScreen)
+ findPreference("site_specific_prefs");
+
+ Preference pref = findPreference("site_security_info_title");
+ if (pref == null && mSecurityInfoPrefs != null) {
+ screen.addPreference(mSecurityInfoPrefs);
}
}
@@ -636,6 +674,9 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
refiner.useDefaultPermissionForOrigins(origins);
}
+ BrowserPreferencesPage.sResultExtra =
+ PreferenceKeys.ACTION_RELOAD_PAGE;
+ BrowserPreferencesPage.onUrlNeedsReload(mOriginText);
finish();
}
}
@@ -752,6 +793,9 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
updateTwoStatePreference(pref,
PermissionsServiceFactory.PermissionType.COOKIE, (boolean)objValue);
}
+ BrowserPreferencesPage.sResultExtra = PreferenceKeys.ACTION_RELOAD_PAGE;
+ BrowserPreferencesPage.onUrlNeedsReload(mOriginText);
+ updatePreferenceInfo();
return true;
}
@@ -767,6 +811,9 @@ public class SiteSpecificPreferencesFragment extends SWEPreferenceFragment
mOriginInfo.clearAllStoredData();
Preference e = findPreference("clear_data");
e.setSummary("(Empty)");
+ BrowserPreferencesPage.sResultExtra =
+ PreferenceKeys.ACTION_RELOAD_PAGE;
+ BrowserPreferencesPage.onUrlNeedsReload(mOriginText);
}
}
})