Changes for API of Bluetooth Discoverability. DO NOT MERGE

1. Apps can ask for any time between 0 and 3600 secs
2. O implies always discoverable
3. Any invalid values will default to the default - 120 secs.
A dialog is shown by the system to the users to accept the change
in discoverability values.

Change-Id: I34ebd907656a87508b0f0b1a4bce78134edcaebf
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4c2ae0f..348e55e 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -249,7 +249,7 @@
     <string name="bluetooth_ask_discovery">"An application on your phone is requesting permission to make your phone discoverable by other Bluetooth devices for <xliff:g id="timeout">%1$d</xliff:g> seconds. Do you want to do this?"</string>
 
     <!-- Strings for asking to the user whether to allow an app to enable lasting discovery mode  -->
-    <string name="bluetooth_ask_lasting_discovery">"An application on your phone is requesting permission to make your phone always discoverable by other Bluetooth devices. Do you want to do this?"</string>
+    <string name="bluetooth_ask_lasting_discovery">"An application on your phone is requesting permission to make your phone \u201calways discoverable\u201d by other Bluetooth devices. Do you want to do this?"</string>
 
     <!-- Strings for asking to the user whether to allow an app to enable bluetooth and discovery mode -->
     <string name="bluetooth_ask_enablement_and_discovery">"An application on your phone is requesting permission to turn on Bluetooth and to make your phone discoverable by other devices for <xliff:g id="timeout">%1$d</xliff:g> seconds. Do you want to do this?"</string>
diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
index 7a4a1ff..166e4ae 100644
--- a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
@@ -56,8 +56,6 @@
     private static final String VALUE_DISCOVERABLE_TIMEOUT_ONE_HOUR = "onehour";
     private static final String VALUE_DISCOVERABLE_TIMEOUT_NEVER = "never";
 
-    // no need for this timeout anymore since we have the listPreference default value
-    // leaving now temporary until requestpermissionactivity is modified..
     static final int DEFAULT_DISCOVERABLE_TIMEOUT = DISCOVERABLE_TIMEOUT_TWO_MINUTES;
 
     private final Context mContext;
diff --git a/src/com/android/settings/bluetooth/RequestPermissionActivity.java b/src/com/android/settings/bluetooth/RequestPermissionActivity.java
index 52cd439..34ecca0 100644
--- a/src/com/android/settings/bluetooth/RequestPermissionActivity.java
+++ b/src/com/android/settings/bluetooth/RequestPermissionActivity.java
@@ -43,7 +43,7 @@
 
     private static final String TAG = "RequestPermissionActivity";
 
-    private static final int MAX_DISCOVERABLE_TIMEOUT = 300;
+    private static final int MAX_DISCOVERABLE_TIMEOUT = 3600; // 1 hr
 
     // Non-error return code: BT is starting or has started successfully. Used
     // by this Activity and RequestPermissionHelperActivity
@@ -158,13 +158,12 @@
         } else {
             // Ask the user whether to turn on discovery mode or not
             // For lasting discoverable mode there is a different message
-            // TODO(): Revisit this when public APIs for discoverable timeout are introduced.
             if (mTimeout == BluetoothDiscoverableEnabler.DISCOVERABLE_TIMEOUT_NEVER) {
                 builder.setMessage(
-                        getString(R.string.bluetooth_ask_enablement_and_lasting_discovery));
+                        getString(R.string.bluetooth_ask_lasting_discovery));
             } else {
                 builder.setMessage(
-                        getString(R.string.bluetooth_ask_enablement_and_discovery, mTimeout));
+                        getString(R.string.bluetooth_ask_discovery, mTimeout));
             }
             builder.setPositiveButton(getString(R.string.yes), this);
             builder.setNegativeButton(getString(R.string.no), this);
@@ -249,16 +248,9 @@
             mTimeout = intent.getIntExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
                     BluetoothDiscoverableEnabler.DEFAULT_DISCOVERABLE_TIMEOUT);
 
-            Log.e(TAG, "Timeout = " + mTimeout);
+            Log.d(TAG, "Setting Bluetooth Discoverable Timeout = " + mTimeout);
 
-            // Right now assuming for simplicity that an app can pick any int value,
-            // and if equal to BluetoothDiscoverableEnabler.DISCOVERABLE_TIMEOUT_NEVER
-            // it will be treated as a request for lasting discoverability.
-            // Alternatively, a check can be added here for enforcing the specific allowed values
-            // as listed in BluetoothDiscoverableEnabler.
-            // We need to make all these value public.
-
-            if (mTimeout <= 0) {
+            if (mTimeout < 0 || mTimeout > MAX_DISCOVERABLE_TIMEOUT) {
                 mTimeout = BluetoothDiscoverableEnabler.DEFAULT_DISCOVERABLE_TIMEOUT;
             }
         } else {