Reload page on settings change
- Reload current webpage when user tweaks browser settings
CR-Fixed: 5570
Change-Id: I643b857b23e2f39e6f54c3d38eb83622e0794d96
diff --git a/src/com/android/browser/BrowserPreferencesPage.java b/src/com/android/browser/BrowserPreferencesPage.java
index 2141490..46fde6a 100644
--- a/src/com/android/browser/BrowserPreferencesPage.java
+++ b/src/com/android/browser/BrowserPreferencesPage.java
@@ -19,8 +19,10 @@
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 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 @@
return;
}
+ sResultExtra = "";
+ sUpdatedUrls.clear();
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
@@ -120,4 +128,22 @@
}
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);
+ }
+ }
}