Add a "disable autofill" checkbox to the setup prompt
Make the intent of the buttons in the setup autofill dialog
clearer by adding an option to disable the feature. The cancel
button now simply dismisses the dialog and we only disable the
feature if the user checks the new box and clicks OK. Clicking OK
without checking the box takes the user to the prdoile editor as
before.
Bug:3348828
Change-Id: Ib54b879b6953d0c8865d50374188059a43a8e6ba
diff --git a/res/layout/setup_autofill_dialog.xml b/res/layout/setup_autofill_dialog.xml
new file mode 100644
index 0000000..084ae7a
--- /dev/null
+++ b/res/layout/setup_autofill_dialog.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingTop="20dip" >
+
+ <TextView
+ android:text="@string/autofill_setup_dialog_message"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingBottom="5dip" />
+
+ <CheckBox android:id="@+id/setup_autofill_dialog_disable_autofill"
+ android:text="@string/disable_autofill"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:layout_gravity="left"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+</LinearLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5452b63..9771e18 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -425,6 +425,9 @@
<!-- Toast message displayed when the user decides to not set up autofill at this time. We want to remind them that they can configure
it through the Browser Settings menu. [CHAR-LIMIT=NONE] -->
<string name="autofill_setup_dialog_negative_toast">AutoFill can always be configured through Browser Settings.</string>
+ <!-- Text on a checkbox in the "setup autofill" dialog which is shown to the user when they are prompted to set up the autofill feature.
+ The checkbox allows them to specify they would like to disable the feature altogether [CHAR-LIMIT=NONE] -->
+ <string name="disable_autofill">Disable AutoFill</string>
<!-- Settings screen, section title [CHAR-LIMIT=50] -->
<string name="pref_privacy_security_title">Privacy & Security</string>
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index d70b0ef..0347ef5 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -53,6 +53,7 @@
import android.webkit.WebStorage;
import android.webkit.WebView;
import android.webkit.WebViewClient;
+import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
@@ -1124,28 +1125,36 @@
// Prompt the user to set up their profile.
final Message msg = message;
AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
- builder.setMessage(R.string.autofill_setup_dialog_message)
- .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- // Take user to the AutoFill profile editor. When they return,
- // we will send the message that we pass here which will trigger
- // the form to get filled out with their new profile.
- mWebViewController.setupAutoFill(msg);
- }
- })
- .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- // Disable autofill and show a toast with how to turn it on again.
- BrowserSettings s = BrowserSettings.getInstance();
- s.addObserver(mMainView.getSettings());
- s.disableAutoFill(mActivity);
- s.update();
- Toast.makeText(mActivity, R.string.autofill_setup_dialog_negative_toast,
- Toast.LENGTH_LONG).show();
- }
- }).show();
+ LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(
+ Context.LAYOUT_INFLATER_SERVICE);
+ final View layout = inflater.inflate(R.layout.setup_autofill_dialog, null);
+
+ builder.setView(layout)
+ .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ CheckBox disableAutoFill = (CheckBox) layout.findViewById(
+ R.id.setup_autofill_dialog_disable_autofill);
+
+ if (disableAutoFill.isChecked()) {
+ // Disable autofill and show a toast with how to turn it on again.
+ BrowserSettings s = BrowserSettings.getInstance();
+ s.addObserver(mMainView.getSettings());
+ s.disableAutoFill(mActivity);
+ s.update();
+ Toast.makeText(mActivity,
+ R.string.autofill_setup_dialog_negative_toast,
+ Toast.LENGTH_LONG).show();
+ } else {
+ // Take user to the AutoFill profile editor. When they return,
+ // we will send the message that we pass here which will trigger
+ // the form to get filled out with their new profile.
+ mWebViewController.setupAutoFill(msg);
+ }
+ }
+ })
+ .setNegativeButton(R.string.cancel, null)
+ .show();
}
};