Support VisualVoicemailSmsFilter

+ Implemented storage for related values in framework APIs.
  The storage is in device protected storage and can be read when the
  phone is locked.
+ OmtpMessageReceiver changed from using data sms to
  VOICEMAIL_SMS_RECEIVED sent by the filter.
+ Set filter values on activation and disable filter on deactivation.

Bug:27816386
Bug:27817303
Change-Id: I7542e6af54629b47fc321d96ea30c7f39b277e3f
(cherry picked from commit 7dfe5db8a43ddcccf1c386438d33903a7658a651)
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 0b3a80b..acffb79 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -16,6 +16,8 @@
 
 package com.android.phone;
 
+import static com.android.internal.telephony.PhoneConstants.SUBSCRIPTION_KEY;
+
 import android.app.ActivityManager;
 import android.app.AppOpsManager;
 import android.content.ComponentName;
@@ -44,13 +46,13 @@
 import android.telephony.CarrierConfigManager;
 import android.telephony.CellInfo;
 import android.telephony.IccOpenLogicalChannelResponse;
+import android.telephony.ModemActivityInfo;
 import android.telephony.NeighboringCellInfo;
 import android.telephony.RadioAccessFamily;
 import android.telephony.ServiceState;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
-import android.telephony.ModemActivityInfo;
 import android.text.TextUtils;
 import android.util.ArraySet;
 import android.util.Log;
@@ -67,9 +69,9 @@
 import com.android.internal.telephony.MccTable;
 import com.android.internal.telephony.OperatorInfo;
 import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.PhoneFactory;
 import com.android.internal.telephony.ProxyController;
-import com.android.internal.telephony.PhoneConstants;
 import com.android.internal.telephony.RILConstants;
 import com.android.internal.telephony.SubscriptionController;
 import com.android.internal.telephony.uicc.IccIoResult;
@@ -79,8 +81,6 @@
 import com.android.internal.util.HexDump;
 import com.android.phone.settings.VoicemailNotificationSettingsUtil;
 
-import static com.android.internal.telephony.PhoneConstants.SUBSCRIPTION_KEY;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -1827,6 +1827,56 @@
         return success;
     }
 
+    @Override
+    public void setVisualVoicemailSmsFilterEnabled(int subId, boolean value) {
+        VisualVoicemailSmsFilterConfig
+                .setVisualVoicemailSmsFilterEnabled(mPhone.getContext(), subId, value);
+    }
+
+    @Override
+    public boolean isVisualVoicemailSmsFilterEnabled(String packageName, int subId) {
+        return VisualVoicemailSmsFilterConfig
+                .isVisualVoicemailSmsFilterEnabled(mPhone.getContext(), packageName, subId);
+    }
+
+    @Override
+    public void setVisualVoicemailSmsFilterClientPrefix(int subId, String prefix) {
+        VisualVoicemailSmsFilterConfig
+                .setVisualVoicemailSmsFilterClientPrefix(mPhone.getContext(), subId, prefix);
+    }
+
+    @Override
+    public String getVisualVoicemailSmsFilterClientPrefix(String packageName, int subId) {
+        return VisualVoicemailSmsFilterConfig
+                .getVisualVoicemailSmsFilterClientPrefix(mPhone.getContext(), packageName, subId);
+    }
+
+    @Override
+    public void setVisualVoicemailSmsFilterOriginatingNumbers(int subId, String[] numbers) {
+        VisualVoicemailSmsFilterConfig
+                .setVisualVoicemailSmsFilterOriginatingNumbers(mPhone.getContext(), subId, numbers);
+    }
+
+    @Override
+    public String[] getVisualVoicemailSmsFilterOriginatingNumbers(String packageName, int subId) {
+        return VisualVoicemailSmsFilterConfig
+                .getVisualVoicemailSmsFilterOriginatingNumbers(mPhone.getContext(), packageName,
+                        subId);
+    }
+
+    @Override
+    public void setVisualVoicemailSmsFilterDestinationPort(int subId, int port) {
+        VisualVoicemailSmsFilterConfig
+                .setVisualVoicemailSmsFilterDestinationPort(mPhone.getContext(), subId, port);
+    }
+
+    @Override
+    public int getVisualVoicemailSmsFilterDestinationPort(String packageName, int subId) {
+        return VisualVoicemailSmsFilterConfig
+                .getVisualVoicemailSmsFilterDestinationPort(mPhone.getContext(), packageName,
+                        subId);
+    }
+
     /**
      * Returns the unread count of voicemails
      */