Merge "Don't cache results of permission check" into mnc-dev
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index d4b0396..def93a9 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -89,10 +89,10 @@
     <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"വിളിച്ചുകൊണ്ടിരിക്കുന്ന കോളിലേക്ക് മടങ്ങുക"</string>
     <string name="dialer_addAnotherCall" msgid="4205688819890074468">"കോൾ ചേർക്കുക"</string>
     <string name="type_incoming" msgid="6502076603836088532">"ഇന്‍കമിംഗ് കോള്‍"</string>
-    <string name="type_outgoing" msgid="343108709599392641">"ഔട്ട്‌ഗോയിംഗ് കോൾ"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"വിളിച്ച കോൾ"</string>
     <string name="type_missed" msgid="2720502601640509542">"മിസ്‌ഡ് കോൾ"</string>
     <string name="type_incoming_video" msgid="82323391702796181">"ഇൻകമിംഗ് വീഡിയോ കോൾ"</string>
-    <string name="type_outgoing_video" msgid="2858140021680755266">"ഔട്ട്ഗോയിംഗ് വീഡിയോ കോൾ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"വിളിച്ച വീഡിയോ കോൾ"</string>
     <string name="type_missed_video" msgid="954396897034220545">"വീഡിയോ കോൾ നഷ്‌ടമായി"</string>
     <string name="type_voicemail" msgid="5153139450668549908">"വോയ്‌സ്‌മെയിൽ"</string>
     <string name="actionIncomingCall" msgid="6028930669817038600">"ഇൻകമിംഗ് കോളുകൾ"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index e80174f..90cf08b 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -62,7 +62,7 @@
     <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
     <string name="sms_disambig_title" msgid="5846266399240630846">"Выбор номера"</string>
     <string name="call_disambig_title" msgid="4392886850104795739">"Выбор номера"</string>
-    <string name="make_primary" msgid="5829291915305113983">"Запомнить выбранное"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Запомнить выбор"</string>
     <string name="description_search_button" msgid="3660807558587384889">"поиск"</string>
     <string name="description_dial_button" msgid="1274091017188142646">"набор номера"</string>
     <string name="description_digits_edittext" msgid="8760207516497016437">"набираемый номер"</string>
diff --git a/src/com/android/dialer/calllog/CallLogNotificationsService.java b/src/com/android/dialer/calllog/CallLogNotificationsService.java
index 9f48b09..9a67b61 100644
--- a/src/com/android/dialer/calllog/CallLogNotificationsService.java
+++ b/src/com/android/dialer/calllog/CallLogNotificationsService.java
@@ -79,7 +79,7 @@
             return;
         }
 
-        if (!PermissionsUtil.hasPhonePermissions(this)) {
+        if (!PermissionsUtil.hasPermission(this, android.Manifest.permission.READ_CALL_LOG)) {
             return;
         }
 
diff --git a/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
index 3d6eb0b..d0553b4 100644
--- a/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
+++ b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
@@ -16,6 +16,9 @@
 
 package com.android.dialer.calllog;
 
+import static android.Manifest.permission.READ_CALL_LOG;
+import static android.Manifest.permission.READ_CONTACTS;
+
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -32,6 +35,7 @@
 import android.util.Log;
 
 import com.android.common.io.MoreCloseables;
+import com.android.contacts.common.util.PermissionsUtil;
 import com.android.dialer.DialtactsActivity;
 import com.android.dialer.R;
 import com.android.dialer.calllog.PhoneAccountUtils;
@@ -66,8 +70,8 @@
                     (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
             ContentResolver contentResolver = context.getContentResolver();
             sInstance = new DefaultVoicemailNotifier(context, notificationManager,
-                    createNewCallsQuery(contentResolver),
-                    createNameLookupQuery(contentResolver));
+                    createNewCallsQuery(context, contentResolver),
+                    createNameLookupQuery(context, contentResolver));
         }
         return sInstance;
     }
@@ -243,8 +247,9 @@
     }
 
     /** Create a new instance of {@link NewCallsQuery}. */
-    public static NewCallsQuery createNewCallsQuery(ContentResolver contentResolver) {
-        return new DefaultNewCallsQuery(contentResolver);
+    public static NewCallsQuery createNewCallsQuery(Context context,
+            ContentResolver contentResolver) {
+        return new DefaultNewCallsQuery(context.getApplicationContext(), contentResolver);
     }
 
     /**
@@ -270,13 +275,19 @@
         private static final int TRANSCRIPTION_COLUMN_INDEX = 6;
 
         private final ContentResolver mContentResolver;
+        private final Context mContext;
 
-        private DefaultNewCallsQuery(ContentResolver contentResolver) {
+        private DefaultNewCallsQuery(Context context, ContentResolver contentResolver) {
+            mContext = context;
             mContentResolver = contentResolver;
         }
 
         @Override
         public NewCall[] query() {
+            if (!PermissionsUtil.hasPermission(mContext, READ_CALL_LOG)) {
+                Log.w(TAG, "No READ_CALL_LOG permission, returning null for calls lookup.");
+                return null;
+            }
             final String selection = String.format("%s = 1 AND %s = ?", Calls.NEW, Calls.TYPE);
             final String[] selectionArgs = new String[]{ Integer.toString(Calls.VOICEMAIL_TYPE) };
             Cursor cursor = null;
@@ -326,8 +337,9 @@
     }
 
     /** Create a new instance of {@link NameLookupQuery}. */
-    public static NameLookupQuery createNameLookupQuery(ContentResolver contentResolver) {
-        return new DefaultNameLookupQuery(contentResolver);
+    public static NameLookupQuery createNameLookupQuery(Context context,
+            ContentResolver contentResolver) {
+        return new DefaultNameLookupQuery(context.getApplicationContext(), contentResolver);
     }
 
     /**
@@ -339,13 +351,19 @@
         private static final int DISPLAY_NAME_COLUMN_INDEX = 0;
 
         private final ContentResolver mContentResolver;
+        private final Context mContext;
 
-        private DefaultNameLookupQuery(ContentResolver contentResolver) {
+        private DefaultNameLookupQuery(Context context, ContentResolver contentResolver) {
+            mContext = context;
             mContentResolver = contentResolver;
         }
 
         @Override
         public String query(String number) {
+            if (!PermissionsUtil.hasPermission(mContext, READ_CONTACTS)) {
+                Log.w(TAG, "No READ_CONTACTS permission, returning null for name lookup.");
+                return null;
+            }
             Cursor cursor = null;
             try {
                 cursor = mContentResolver.query(
diff --git a/src/com/android/dialer/settings/SoundSettingsFragment.java b/src/com/android/dialer/settings/SoundSettingsFragment.java
index c7bb2d3..7fc9394 100644
--- a/src/com/android/dialer/settings/SoundSettingsFragment.java
+++ b/src/com/android/dialer/settings/SoundSettingsFragment.java
@@ -51,6 +51,9 @@
     private static final int NO_VIBRATION_FOR_CALLS = 0;
     private static final int DO_VIBRATION_FOR_CALLS = 1;
 
+
+    private static final int DTMF_TONE_TYPE_NORMAL = 0;
+
     private static final int SHOW_CARRIER_SETTINGS = 0;
     private static final int HIDE_CARRIER_SETTINGS = 1;
 
@@ -112,7 +115,8 @@
             mDtmfToneLength.setOnPreferenceChangeListener(this);
             mDtmfToneLength.setValueIndex(
                     Settings.System.getInt(context.getContentResolver(),
-                        Settings.System.DTMF_TONE_WHEN_DIALING, PLAY_DTMF_TONE));
+                        Settings.System.DTMF_TONE_TYPE_WHEN_DIALING,
+                        DTMF_TONE_TYPE_NORMAL));
         } else {
             getPreferenceScreen().removePreference(mDtmfToneLength);
             mDtmfToneLength = null;