summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/browser/AutoFillProfileDatabase.java5
-rw-r--r--src/com/android/browser/AutoFillSettingsFragment.java86
-rw-r--r--src/com/android/browser/BrowserSettings.java67
3 files changed, 81 insertions, 77 deletions
diff --git a/src/com/android/browser/AutoFillProfileDatabase.java b/src/com/android/browser/AutoFillProfileDatabase.java
index e3d6ea2..5557aaf 100644
--- a/src/com/android/browser/AutoFillProfileDatabase.java
+++ b/src/com/android/browser/AutoFillProfileDatabase.java
@@ -22,6 +22,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;
+import android.webkit.WebSettings.AutoFillProfile;
public class AutoFillProfileDatabase {
@@ -78,13 +79,13 @@ public class AutoFillProfileDatabase {
return writable ? mOpenHelper.getWritableDatabase() : mOpenHelper.getReadableDatabase();
}
- public void addOrUpdateProfile(final int id, final String fullName, final String email) {
+ public void addOrUpdateProfile(final int id, AutoFillProfile profile) {
final String SQL = "INSERT OR REPLACE INTO " + PROFILES_TABLE_NAME + " ("
+ Profiles._ID + ","
+ Profiles.FULL_NAME + ","
+ Profiles.EMAIL_ADDRESS
+ ") VALUES (?,?,?);";
- final Object[] PARAMS = {id, fullName, email};
+ final Object[] PARAMS = { id, profile.getFullName(), profile.getEmailAddress() };
getDatabase(true).execSQL(SQL, PARAMS);
}
diff --git a/src/com/android/browser/AutoFillSettingsFragment.java b/src/com/android/browser/AutoFillSettingsFragment.java
index b650ede..e41ca56 100644
--- a/src/com/android/browser/AutoFillSettingsFragment.java
+++ b/src/com/android/browser/AutoFillSettingsFragment.java
@@ -17,26 +17,20 @@
package com.android.browser;
import android.app.Fragment;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.LayoutInflater;
+import android.webkit.WebSettings.AutoFillProfile;
import android.widget.Button;
import android.widget.EditText;
-import android.widget.Toast;
public class AutoFillSettingsFragment extends Fragment {
private static final String LOGTAG = "AutoFillSettingsFragment";
- // TODO: This will become dynamic once we support more than one profile.
- private int mProfileId = 1;
-
public AutoFillSettingsFragment() {
}
@@ -59,13 +53,21 @@ public class AutoFillSettingsFragment extends Fragment {
R.id.autofill_profile_editor_name_edit);
EditText email = (EditText)v.findViewById(
R.id.autofill_profile_editor_email_address_edit);
- new SaveProfileToDbTask().execute(fullName.getText().toString(),
- email.getText().toString());
+ BrowserSettings.getInstance().setAutoFillProfile(getActivity(),
+ new AutoFillProfile(
+ fullName.getText().toString(),
+ email.getText().toString()));
}
});
- // Load the profile and populate the text views in the background
- new LoadProfileFromDbTask().execute(mProfileId);
+ // Populate the text boxes with any pre existing AutoFill data.
+ EditText fullName = (EditText)v.findViewById(
+ R.id.autofill_profile_editor_name_edit);
+ EditText email = (EditText)v.findViewById(
+ R.id.autofill_profile_editor_email_address_edit);
+ AutoFillProfile activeProfile = BrowserSettings.getInstance().getAutoFillProfile();
+ fullName.setText(activeProfile.getFullName());
+ email.setText(activeProfile.getEmailAddress());
return v;
}
@@ -77,66 +79,4 @@ public class AutoFillSettingsFragment extends Fragment {
db.close();
super.onPause();
}
-
- private class SaveProfileToDbTask extends AsyncTask<String, Void, Void> {
- protected Void doInBackground(String... values) {
- AutoFillProfileDatabase db =
- AutoFillProfileDatabase.getInstance(getActivity());
- db.addOrUpdateProfile(mProfileId, values[0], values[1]);
- return null;
- }
-
- protected void onPostExecute(Void result) {
- Toast.makeText(getActivity(), "Saved profile", Toast.LENGTH_SHORT).show();
- }
- }
-
- private static class LoadedProfileData {
- private String mFullName;
- private String mEmailAddress;
-
- public LoadedProfileData(String fullName, String emailAddress) {
- mFullName = fullName;
- mEmailAddress = emailAddress;
- }
-
- public String getFullName() { return mFullName; }
- public String getEmailAddress() { return mEmailAddress; }
- }
-
- private class LoadProfileFromDbTask extends AsyncTask<Integer, Void, LoadedProfileData> {
- protected LoadedProfileData doInBackground(Integer... id) {
- AutoFillProfileDatabase db = AutoFillProfileDatabase.getInstance(getActivity());
- Cursor c = db.getProfile(id[0]);
- c.moveToFirst();
-
- LoadedProfileData profileData = null;
-
- if (c.getCount() > 0) {
- String fullName = c.getString(c.getColumnIndex(
- AutoFillProfileDatabase.Profiles.FULL_NAME));
- String email = c.getString(c.getColumnIndex(
- AutoFillProfileDatabase.Profiles.EMAIL_ADDRESS));
- profileData = new LoadedProfileData(fullName, email);
- }
- c.close();
- return profileData;
- }
-
- protected void onPostExecute(LoadedProfileData data) {
- if (data == null) {
- return;
- }
-
- View v = getView();
- if (v != null) {
- EditText fullName = (EditText)v.findViewById(
- R.id.autofill_profile_editor_name_edit);
- EditText email = (EditText)v.findViewById(
- R.id.autofill_profile_editor_email_address_edit);
- fullName.setText(data.getFullName());
- email.setText(data.getEmailAddress());
- }
- }
- }
}
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 4c798a0..d3c1c00 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -28,10 +28,14 @@ import android.content.pm.ActivityInfo;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.ContentObserver;
+import android.database.Cursor;
import android.net.Uri;
+import android.os.AsyncTask;
import android.os.Handler;
import android.preference.PreferenceActivity;
+import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
+import android.provider.Browser;
import android.provider.Settings;
import android.util.Log;
import android.webkit.CookieManager;
@@ -41,9 +45,9 @@ import android.webkit.WebView;
import android.webkit.WebViewDatabase;
import android.webkit.WebIconDatabase;
import android.webkit.WebSettings;
+import android.webkit.WebSettings.AutoFillProfile;
import android.webkit.WebStorage;
-import android.preference.PreferenceManager;
-import android.provider.Browser;
+import android.widget.Toast;
import java.util.HashMap;
import java.util.Map;
@@ -127,6 +131,12 @@ public class BrowserSettings extends Observable {
WebSettings.ZoomDensity.MEDIUM;
private static int pageCacheCapacity;
+
+ private AutoFillProfile mAutoFillProfile;
+ // TODO: For now we only support one autofill profile. Add support for
+ // multiple profiles later.
+ private int mActiveAutoFillProfileId = 1;
+
// Preference keys that are used outside this class
public final static String PREF_CLEAR_CACHE = "privacy_clear_cache";
public final static String PREF_CLEAR_COOKIES = "privacy_clear_cookies";
@@ -255,6 +265,9 @@ public class BrowserSettings extends Observable {
s.setDatabasePath(b.databasePath);
s.setGeolocationDatabasePath(b.geolocationDatabasePath);
+ // Active AutoFill profile data.
+ s.setAutoFillProfile(b.mAutoFillProfile);
+
b.updateTabControlSettings();
}
}
@@ -300,6 +313,23 @@ public class BrowserSettings extends Observable {
pageCacheCapacity = 1;
}
+ // Load the autofill profile data from the database. We use a database separate
+ // to the browser preference DB to make it easier to support multiple profiles
+ // and switching between them.
+ mAutoFillProfile = new AutoFillProfile();
+ AutoFillProfileDatabase autoFillDb = AutoFillProfileDatabase.getInstance(ctx);
+ Cursor c = autoFillDb.getProfile(mActiveAutoFillProfileId);
+
+ if (c.getCount() > 0) {
+ c.moveToFirst();
+ mAutoFillProfile.setFullName(c.getString(c.getColumnIndex(
+ AutoFillProfileDatabase.Profiles.FULL_NAME)));
+ mAutoFillProfile.setEmailAddress(c.getString(c.getColumnIndex(
+ AutoFillProfileDatabase.Profiles.EMAIL_ADDRESS)));
+ }
+ c.close();
+ autoFillDb.close();
+
// PreferenceManager.setDefaultValues is TOO SLOW, need to manually keep
// the defaults in sync
syncSharedPreferences(ctx, p);
@@ -477,6 +507,17 @@ public class BrowserSettings extends Observable {
update();
}
+ public void setAutoFillProfile(Context ctx, AutoFillProfile profile) {
+ mAutoFillProfile = profile;
+ // Update the AutoFill DB
+ new SaveProfileToDbTask(ctx).execute(mAutoFillProfile);
+
+ }
+
+ public AutoFillProfile getAutoFillProfile() {
+ return mAutoFillProfile;
+ }
+
/**
* Add a WebSettings object to the list of observers that will be updated
* when update() is called.
@@ -641,4 +682,26 @@ public class BrowserSettings extends Observable {
geolocationEnabled = true;
workersEnabled = true; // only affects V8. JSC does not have a similar setting
}
+
+ private class SaveProfileToDbTask extends AsyncTask<AutoFillProfile, Void, Void> {
+
+ Context mContext;
+
+ public SaveProfileToDbTask(Context ctx) {
+ mContext = ctx;
+ }
+
+ protected Void doInBackground(AutoFillProfile... values) {
+ AutoFillProfileDatabase db =
+ AutoFillProfileDatabase.getInstance(mContext);
+ db.addOrUpdateProfile(mActiveAutoFillProfileId, values[0]);
+ return null;
+ }
+
+ protected void onPostExecute(Void result) {
+ String message = mContext.getString(R.string.autofill_profile_successful_save);
+ Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
+ }
+ }
+
}