Snap for 7316203 from 2f8abe30e39f8efd0c4ac7f58c2aff76422e553c to rvc-platform-release

Change-Id: I400581f40610426d6a6025ce276311d754b99904
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index c9a7604..9f7927f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -17,30 +17,30 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="9095072584761066851">"מתקין אישורים"</string>
-    <string name="pick_file_title" msgid="4481949485108233297">"בחר אישור"</string>
+    <string name="pick_file_title" msgid="4481949485108233297">"בחירת אישור"</string>
     <string name="pkcs12_password_dialog_title" msgid="5997624645207427161">"חילוץ אישור"</string>
-    <string name="extracting_pkcs12" msgid="1881267738821799771">"מחלץ..."</string>
-    <string name="pkcs12_file_password_dialog_title" msgid="8102721384767269510">"‏חלץ מתוך %s"</string>
+    <string name="extracting_pkcs12" msgid="1881267738821799771">"מתבצע חילוץ..."</string>
+    <string name="pkcs12_file_password_dialog_title" msgid="8102721384767269510">"‏חילוץ מתוך %s"</string>
     <string name="name_credential_dialog_title" msgid="1481964824549786927">"מה שם האישור הזה?"</string>
     <string name="certificate_name" msgid="8415893401368824792">"שם אישור"</string>
-    <string name="credential_password" msgid="3520176519550993326">"הזן את הסיסמה כדי לחלץ את האישורים."</string>
+    <string name="credential_password" msgid="3520176519550993326">"יש להזין את הסיסמה כדי לחלץ את האישורים."</string>
     <string name="credential_info" msgid="2436768402308470397">"החבילה מכילה:"</string>
     <string name="p12_description" msgid="4128352087331630024">"‏אישורים במאגר המפתחות PKCS12."</string>
     <string name="one_userkey" msgid="3500697912370644881">"מקש משתמש אחד"</string>
     <string name="userkey_type" msgid="6214833257030657106">"אלגוריתם:"</string>
     <string name="one_usercrt" msgid="7690798336332403106">"אישור למשתמש אחד"</string>
-    <string name="one_cacrt" msgid="2667950425420663146">"אישור אחד מרשות אישורים"</string>
-    <string name="n_cacrts" msgid="2141498640685639208">"‏אישורים של רשות האישורים %d"</string>
-    <string name="password_error" msgid="2042471639556516356">"הקלד את הסיסמה הנכונה."</string>
+    <string name="one_cacrt" msgid="2667950425420663146">"‏אישור CA אחד"</string>
+    <string name="n_cacrts" msgid="2141498640685639208">"‏אישורי CA‏ %d"</string>
+    <string name="password_error" msgid="2042471639556516356">"יש להקליד את הסיסמה הנכונה."</string>
     <string name="password_empty_error" msgid="591713406761723025">"הקלד את הסיסמה."</string>
     <string name="name_empty_error" msgid="3808800768660110354">"הקלד שם."</string>
     <string name="name_char_error" msgid="3176618568784938968">"הקלד שם שמכיל רק אותיות ומספרים."</string>
-    <string name="unable_to_save_cert" msgid="9178604087335389686">"לא ניתן לשמור את האישור. אחסון האישורים לא מאופשר או שלא אותחל כראוי."</string>
+    <string name="unable_to_save_cert" msgid="9178604087335389686">"לא ניתן לשמור את האישור. אחסון האישורים לא הופעל או שלא אותחל כראוי."</string>
     <string name="cert_not_saved" msgid="4037698479662830270">"האישור לא מותקן."</string>
     <string name="no_cert_to_saved" msgid="5708884372817309068">"אין אישור להתקנה."</string>
     <string name="invalid_cert" msgid="7704228670980743590">"האישור אינו חוקי."</string>
-    <string name="action_missing_private_key" msgid="7543470057312920042">"מפתח פרטי נדרש כדי להתקין אישור"</string>
-    <string name="action_missing_user_cert" msgid="3727411730202316771">"אישור נדרש כדי להתקין מפתח פרטי"</string>
+    <string name="action_missing_private_key" msgid="7543470057312920042">"נדרש מפתח פרטי כדי להתקין אישור"</string>
+    <string name="action_missing_user_cert" msgid="3727411730202316771">"נדרש אישור כדי להתקין מפתח פרטי"</string>
     <string name="select_certificate_usage_title" msgid="8853023485944920851">"יש לבחור את סוג האישור"</string>
     <string name="redirect_ca_certificate_title" msgid="3457516863949244510">"‏התקנת אישורי CA ב\'הגדרות\'"</string>
     <string name="redirect_ca_certificate_with_app_info_message" msgid="934477720755323579">"‏את האישור הזה מהאפליקציה <xliff:g id="REQUESTING_APP">%1$s</xliff:g> חובה להתקין בהגדרות. יש להתקין אישורי CA רק מארגונים מהימנים."</string>
@@ -65,7 +65,7 @@
     <item msgid="375085478373011304">"‏VPN ואפליקציות"</item>
     <item msgid="692322974985472861">"Wi-Fi"</item>
   </string-array>
-    <string name="certificate_capabilities_warning" msgid="4158609401937799110">"הערה: המנפיק של אישור זה עשוי לבדוק את כל התנועה אל המכשיר וממנו."</string>
+    <string name="certificate_capabilities_warning" msgid="4158609401937799110">"הערה: המנפיק של האישור הזה עשוי לבדוק את כל התנועה אל המכשיר וממנו."</string>
     <string name="wifi_title" msgid="8475811746333426489">"‏פרופיל Wi-Fi"</string>
     <string name="wifi_detail_title" msgid="3627332137252994395">"‏פרטים עבור %s"</string>
     <string name="wifi_detail_label" msgid="3032151019356747583">"פרטים"</string>
@@ -81,10 +81,10 @@
     <string name="wifi_trust_config_text" msgid="5916047381475747783">"‏תעודת אמון:\n%s\n"</string>
     <string name="install_done_title" msgid="4822989918460334497">"פרטי כניסה הותקנו"</string>
     <string name="install_done" msgid="1522718684172097080">"‏פרטי כניסה של <xliff:g id="NAME">%1$s</xliff:g> נוספו אל רשתות Wi-Fi שנשמרו."</string>
-    <string name="done_label" msgid="5597425930652904250">"בוצע"</string>
-    <string name="wifi_installer_detail" msgid="63879632832701669">"‏התקן פרטי כניסה של Wi-Fi כדי להתחבר לרשתות שזמינות באמצעות <xliff:g id="NAME">%1$s</xliff:g>."</string>
+    <string name="done_label" msgid="5597425930652904250">"סיום"</string>
+    <string name="wifi_installer_detail" msgid="63879632832701669">"‏יש להתקין פרטי כניסה של Wi-Fi כדי להתחבר לרשתות שזמינות דרך <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="wifi_installer_download_error" msgid="5429453090956277692">"יש בעיות בקובץ שהורדת ולא ניתן להתקינו. ודא שהורדת את הקובץ מהמקור המתאים."</string>
-    <string name="wifi_installer_fail" msgid="894483173306576331">"‏לא ניתן להתקין פרטי כניסה של Wi-Fi. נסה להוריד שוב את הקובץ."</string>
+    <string name="wifi_installer_fail" msgid="894483173306576331">"‏לא ניתן להתקין פרטי כניסה של Wi-Fi. יש לנסות שוב להוריד את הקובץ."</string>
     <string name="wifi_installer_fail_no_wifi_title" msgid="8358191074828840533">"ההתקנה בוטלה"</string>
     <string name="wifi_installer_fail_title" msgid="5547079779067835479">"לא ניתן להתקין"</string>
     <string name="wifi_installer_fail_no_wifi" msgid="2044576439984209921">"‏הפעל את ה-Wi-Fi ונסה שוב."</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index b15985e..03dd4c7 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -77,7 +77,7 @@
     <string name="wifi_config_text" msgid="8259587306773310314">"Нэр: %1$s\nFQDN: %2$s\nRoaming Consortiums: %3$s\nRealm: %4$s\nAuth method: EAP-%5$s\n"</string>
     <string name="wifi_ttls_config_text" msgid="2002413183253872168">"Хэрэглэгчийн нэр: %s\n"</string>
     <string name="wifi_tls_config_text" msgid="9062328536640168510">"Клинетийн сертификат:\n%1$s\nТүлхүүр: %2$s\n"</string>
-    <string name="wifi_sim_config_text" msgid="1666019954520831840">"СИМ: %s\n"</string>
+    <string name="wifi_sim_config_text" msgid="1666019954520831840">"SIM: %s\n"</string>
     <string name="wifi_trust_config_text" msgid="5916047381475747783">"Итгэлцлийн сертификат:\n%s\n"</string>
     <string name="install_done_title" msgid="4822989918460334497">"Итгэмжлэлийг суулгасан"</string>
     <string name="install_done" msgid="1522718684172097080">"<xliff:g id="NAME">%1$s</xliff:g> итгэмжлэлийг Wi-Fi-ийн хадгалсан сүлжээнд нэмлээ."</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 21298a2..9d1d6bd 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -35,7 +35,7 @@
     <string name="password_empty_error" msgid="591713406761723025">"Typ het wachtwoord."</string>
     <string name="name_empty_error" msgid="3808800768660110354">"Typ een naam."</string>
     <string name="name_char_error" msgid="3176618568784938968">"Typ een naam die alleen letters en cijfers bevat."</string>
-    <string name="unable_to_save_cert" msgid="9178604087335389686">"Kan het certificaat niet opslaan. Opslag van certificaatgegevens is niet ingeschakeld of niet correct geïnitialiseerd."</string>
+    <string name="unable_to_save_cert" msgid="9178604087335389686">"Kan het certificaat niet opslaan. Opslag van certificaatgegevens staat niet aan of is niet correct geïnitialiseerd."</string>
     <string name="cert_not_saved" msgid="4037698479662830270">"Het certificaat is niet geïnstalleerd."</string>
     <string name="no_cert_to_saved" msgid="5708884372817309068">"Er is geen certificaat dat kan worden geïnstalleerd."</string>
     <string name="invalid_cert" msgid="7704228670980743590">"Het certificaat is ongeldig."</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 8599747..238623c 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -71,7 +71,7 @@
     <string name="wifi_detail_label" msgid="3032151019356747583">"ବିବରଣୀ"</string>
     <string name="wifi_install_label" msgid="1449629407724323233">"ଇନଷ୍ଟଲ୍‍"</string>
     <string name="wifi_installing_label" msgid="8387393993627129025">"ଇନଷ୍ଟଲ୍ କରାଯାଉଛି"</string>
-    <string name="wifi_cancel_label" msgid="1328748037608392134">"କ୍ୟାନ୍ସଲ୍‍ କରନ୍ତୁ"</string>
+    <string name="wifi_cancel_label" msgid="1328748037608392134">"ବାତିଲ୍‍ କରନ୍ତୁ"</string>
     <string name="wifi_dismiss_label" msgid="1916684434873972698">"ଖାରଜ"</string>
     <string name="wifi_no_config" msgid="1835743123288916755">"କିଛି ନାହିଁ"</string>
     <string name="wifi_config_text" msgid="8259587306773310314">"ନାମ: %1$s\nFQDN: %2$s\nରୋମିଙ୍ଗ କନ୍ସୋଟିୟମ୍ସ: %3$s\nରେଲାମ୍‍: %4$s\nସ୍ୱୀକୃତି ପଦ୍ଧତି: EAP-%5$s\n"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 49ff4be..0a48003 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -62,7 +62,7 @@
     <string name="only_primary_user_allowed" msgid="4005084935023047716">"ఈ పరికర యజమాని మాత్రమే ప్రమాణపత్రాలను ఇన్‌స్టాల్ చేయవచ్చు."</string>
     <string name="credential_usage_label" msgid="1513892208033156805">"ఆధారాల వినియోగం:"</string>
   <string-array name="credential_usage">
-    <item msgid="375085478373011304">"VPN మరియు అనువర్తనాలు"</item>
+    <item msgid="375085478373011304">"VPN మరియు యాప్‌లు"</item>
     <item msgid="692322974985472861">"Wi-Fi"</item>
   </string-array>
     <string name="certificate_capabilities_warning" msgid="4158609401937799110">"గమనిక: ఈ ప్రమాణపత్రాన్ని జారీ చేసిన వారు పరికరానికి సంబంధించిన మొత్తం రాకపోకల ట్రాఫిక్‌ని పరిశీలించవచ్చు."</string>
diff --git a/src/com/android/certinstaller/WiFiInstaller.java b/src/com/android/certinstaller/WiFiInstaller.java
index 41827f6..ad03eca 100644
--- a/src/com/android/certinstaller/WiFiInstaller.java
+++ b/src/com/android/certinstaller/WiFiInstaller.java
@@ -1,5 +1,7 @@
 package com.android.certinstaller;
 
+import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.content.Context;
@@ -13,6 +15,8 @@
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.provider.DocumentsContract;
+import android.text.TextUtils;
+import android.util.EventLog;
 import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
@@ -26,18 +30,24 @@
     private static final String TAG = "WifiInstaller";
     private static final String NETWORK_NAME = "network_name";
     private static final String INSTALL_STATE = "install_state";
+    private static final String TYPE_WIFI_CONFIG = "application/x-wifi-config";
     public static final int INSTALL_SUCCESS = 2;
     public static final int INSTALL_FAIL = 1;
     public static final int INSTALL_FAIL_NO_WIFI = 0;
-    PasspointConfiguration mPasspointConfig;
-    WifiManager mWifiManager;
-    boolean doNotInstall;
+    private PasspointConfiguration mPasspointConfig;
+    private boolean mIsPasspointConfigurationValid;
 
     @Override
     protected void onCreate(Bundle savedStates) {
         super.onCreate(savedStates);
+        getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
 
+        mIsPasspointConfigurationValid = false;
         Bundle bundle = getIntent().getExtras();
+        if (bundle == null) {
+            Log.e(TAG, "Invalid inputs");
+            return;
+        }
         String uriString = bundle.getString(CertInstallerMain.WIFI_CONFIG_FILE);
         String mimeType = bundle.getString(CertInstallerMain.WIFI_CONFIG);
         byte[] data = bundle.getByteArray(CertInstallerMain.WIFI_CONFIG_DATA);
@@ -45,17 +55,34 @@
         Log.d(TAG, "WiFi data for " + CertInstallerMain.WIFI_CONFIG + ": " +
                 mimeType + " is " + (data != null ? data.length : "-"));
 
-        mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
-        mPasspointConfig = ConfigParser.parsePasspointConfig(mimeType, data);
-        dropFile(Uri.parse(uriString), getApplicationContext());
-
-        if (mPasspointConfig == null) {
-            Log.w(TAG, "failed to build passpoint configuration");
-            doNotInstall = true;
-        } else if (mPasspointConfig.getHomeSp() == null) {
-            Log.w(TAG, "Passpoint profile missing HomeSP information");
-            doNotInstall = true;
+        // Make sure that the input is valid
+        if (data == null || data.length == 0 || TextUtils.isEmpty(uriString)) {
+            Log.e(TAG, "Invalid inputs");
+            return;
         }
+
+        // Verify MIME type before parsing
+        if (!TextUtils.equals(mimeType, TYPE_WIFI_CONFIG)) {
+            Log.e(TAG, "Unexpected MIME type: " + mimeType);
+            EventLog.writeEvent(0x534e4554, "176756691", -1, "Invalid mime-type");
+            return;
+        }
+
+        mPasspointConfig = ConfigParser.parsePasspointConfig(mimeType, data);
+        if (mPasspointConfig == null) {
+            Log.e(TAG, "Failed to build Passpoint configuration");
+            EventLog.writeEvent(0x534e4554, "176756691", -1, "Invalid data in file "
+                    + uriString);
+            return;
+        }
+        if (mPasspointConfig.getHomeSp() == null) {
+            Log.e(TAG, "Passpoint profile missing HomeSP information");
+        } else {
+            // Passpoint configuration parsed successfully and valid. Mark to be installed.
+            mIsPasspointConfigurationValid = true;
+        }
+        // Delete the file only if the Passpoint configuration was parsed successfully
+        dropFile(Uri.parse(uriString), getApplicationContext());
     }
 
     @Override
@@ -75,7 +102,8 @@
         builder.setView(layout);
 
         TextView text = (TextView) layout.findViewById(R.id.wifi_info);
-        if (!doNotInstall) {
+        if (mIsPasspointConfigurationValid) {
+            WifiManager wifiManager = getSystemService(WifiManager.class);
             text.setText(String.format(getResources().getString(R.string.wifi_installer_detail),
                     mPasspointConfig.getHomeSp().getFriendlyName()));
 
@@ -93,14 +121,14 @@
                         public void run() {
                             boolean success = true;
                             try {
-                                mWifiManager.removePasspointConfiguration(
+                                wifiManager.removePasspointConfiguration(
                                         mPasspointConfig.getHomeSp().getFqdn());
                             } catch (IllegalArgumentException e) {
                                 // Do nothing. This is expected if a profile with this FQDN does not
                                 // exist.
                             }
                             try {
-                                mWifiManager.addOrUpdatePasspointConfiguration(mPasspointConfig);
+                                wifiManager.addOrUpdatePasspointConfiguration(mPasspointConfig);
                             } catch (RuntimeException rte) {
                                 Log.w(TAG, "Caught exception while installing wifi config: " +
                                            rte, rte);
@@ -144,7 +172,9 @@
                 }
             });
         }
-        builder.create().show();
+        final AlertDialog alertDialog = builder.create();
+        alertDialog.show();
+        alertDialog.getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
     }
 
     /**
@@ -154,14 +184,14 @@
      * @param context The context of the current application
      */
     private static void dropFile(Uri uri, Context context) {
-      try {
-        if (DocumentsContract.isDocumentUri(context, uri)) {
-          DocumentsContract.deleteDocument(context.getContentResolver(), uri);
-        } else {
-          context.getContentResolver().delete(uri, null, null);
+        try {
+            if (DocumentsContract.isDocumentUri(context, uri)) {
+                DocumentsContract.deleteDocument(context.getContentResolver(), uri);
+            } else {
+                context.getContentResolver().delete(uri, null, null);
+            }
+        } catch (Exception e) {
+            Log.e(TAG, "could not delete document " + uri);
         }
-      } catch (Exception e) {
-        Log.e(TAG, "could not delete document " + uri);
-      }
     }
 }