diff options
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/browser/AutoFillProfileDatabase.java | 5 | ||||
-rw-r--r-- | src/com/android/browser/AutoFillSettingsFragment.java | 86 | ||||
-rw-r--r-- | src/com/android/browser/BrowserSettings.java | 67 |
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(); + } + } + } |