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);
+        }
+    }
 }