summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallRepository.kt57
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/model/PackageUtil.kt11
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/model/UninstallRepository.kt11
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/InstallLaunch.kt24
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/UninstallLaunch.kt9
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java8
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java4
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java5
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallFailedFragment.java5
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallInstallingFragment.java3
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallStagingFragment.java4
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallSuccessFragment.java1
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ParseErrorFragment.java6
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/SimpleErrorFragment.java7
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallConfirmationFragment.java4
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallErrorFragment.java3
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallUninstallingFragment.java3
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/viewmodel/UninstallViewModel.kt4
18 files changed, 124 insertions, 45 deletions
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallRepository.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallRepository.kt
index e48c0f42e62e..0c533b3af90f 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallRepository.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallRepository.kt
@@ -60,6 +60,7 @@ import com.android.packageinstaller.v2.model.PackageUtil.getPackageNameForUid
import com.android.packageinstaller.v2.model.PackageUtil.isCallerSessionOwner
import com.android.packageinstaller.v2.model.PackageUtil.isInstallPermissionGrantedOrRequested
import com.android.packageinstaller.v2.model.PackageUtil.isPermissionGranted
+import com.android.packageinstaller.v2.model.PackageUtil.localLogv
import java.io.File
import java.io.IOException
import kotlinx.coroutines.DelicateCoroutinesApi
@@ -75,7 +76,6 @@ class InstallRepository(private val context: Context) {
private val devicePolicyManager: DevicePolicyManager? =
context.getSystemService(DevicePolicyManager::class.java)
private val appOpsManager: AppOpsManager? = context.getSystemService(AppOpsManager::class.java)
- private val localLOGV = false
private var isSessionInstall = false
private var isTrustedSource = false
private val _stagingResult = MutableLiveData<InstallStage>()
@@ -155,8 +155,18 @@ class InstallRepository(private val context: Context) {
originatingUid, callingAttributionTag
)
+ if(localLogv) {
+ Log.i(LOG_TAG, "Intent: $intent\n" +
+ "sessionId: $sessionId\n" +
+ "staged sessionId: $stagedSessionId\n" +
+ "calling package: $callingPackage\n" +
+ "callingUid: $callingUid\n" +
+ "originatingUid: $originatingUid")
+ }
+
if (callingUid == Process.INVALID_UID && sourceInfo == null) {
// Caller's identity could not be determined. Abort the install
+ Log.e(LOG_TAG, "Cannot determine caller since UID is invalid and sourceInfo is null")
return InstallAborted(ABORT_REASON_INTERNAL_ERROR)
}
@@ -165,6 +175,9 @@ class InstallRepository(private val context: Context) {
|| (stagedSessionId != SessionInfo.INVALID_ID
&& !isCallerSessionOwner(packageInstaller, Process.myUid(), stagedSessionId))
) {
+ Log.e(LOG_TAG, "UID is not the owner of the session:\n" +
+ "CallingUid: $originatingUid | SessionId: $sessionId\n" +
+ "My UID: ${Process.myUid()} | StagedSessionId: $stagedSessionId")
return InstallAborted(ABORT_REASON_INTERNAL_ERROR)
}
@@ -173,6 +186,9 @@ class InstallRepository(private val context: Context) {
context, callingUid, originatingUid, isTrustedSource
)
) {
+ Log.e(LOG_TAG, "UID $originatingUid needs to declare " +
+ Manifest.permission.REQUEST_INSTALL_PACKAGES
+ )
return InstallAborted(ABORT_REASON_INTERNAL_ERROR)
}
@@ -180,6 +196,7 @@ class InstallRepository(private val context: Context) {
if (restriction != null) {
val adminSupportDetailsIntent =
devicePolicyManager!!.createAdminSupportIntent(restriction)
+ Log.e(LOG_TAG, "$restriction set in place. Cannot install." )
return InstallAborted(
ABORT_REASON_POLICY, message = restriction, resultIntent = adminSupportDetailsIntent
)
@@ -287,7 +304,7 @@ class InstallRepository(private val context: Context) {
stagedSessionId = packageInstaller.createSession(params)
}
} catch (e: Exception) {
- Log.w(LOG_TAG, "Failed to create a staging session", e)
+ Log.e(LOG_TAG, "Failed to create a staging session", e)
_stagingResult.value = InstallAborted(
ABORT_REASON_INTERNAL_ERROR,
resultIntent = Intent().putExtra(
@@ -308,6 +325,7 @@ class InstallRepository(private val context: Context) {
_stagingResult.value = InstallReady()
} else {
cleanupStagingSession()
+ Log.e(LOG_TAG, "Could not stage APK.")
_stagingResult.value = InstallAborted(
ABORT_REASON_INTERNAL_ERROR,
resultIntent = Intent().putExtra(
@@ -318,6 +336,7 @@ class InstallRepository(private val context: Context) {
}
}
} else {
+ Log.e(LOG_TAG, "Invalid URI: ${if (uri == null) "null" else uri.scheme}")
_stagingResult.value = InstallAborted(
ABORT_REASON_INTERNAL_ERROR,
resultIntent = Intent().putExtra(
@@ -403,8 +422,8 @@ class InstallRepository(private val context: Context) {
*/
fun requestUserConfirmation(): InstallStage {
return if (isTrustedSource) {
- if (localLOGV) {
- Log.i(LOG_TAG, "install allowed")
+ if (localLogv) {
+ Log.i(LOG_TAG, "Install allowed")
}
// Returns InstallUserActionRequired stage if install details could be successfully
// computed, else it returns InstallAborted.
@@ -428,7 +447,7 @@ class InstallRepository(private val context: Context) {
val info = packageInstaller.getSessionInfo(sessionId)
val resolvedPath = info?.resolvedBaseApkPath
if (info == null || !info.isSealed || resolvedPath == null) {
- Log.w(LOG_TAG, "Session $sessionId in funky state; ignoring")
+ Log.e(LOG_TAG, "Session $sessionId in funky state; ignoring")
return InstallAborted(ABORT_REASON_INTERNAL_ERROR)
}
packageSource = Uri.fromFile(File(resolvedPath))
@@ -440,7 +459,7 @@ class InstallRepository(private val context: Context) {
} else if (PackageInstaller.ACTION_CONFIRM_PRE_APPROVAL == intent.action) {
val info = packageInstaller.getSessionInfo(sessionId)
if (info == null || !info.isPreApprovalRequested) {
- Log.w(LOG_TAG, "Session $sessionId in funky state; ignoring")
+ Log.e(LOG_TAG, "Session $sessionId in funky state; ignoring")
return InstallAborted(ABORT_REASON_INTERNAL_ERROR)
}
packageSource = info
@@ -465,7 +484,7 @@ class InstallRepository(private val context: Context) {
// if there's nothing to do, quietly slip into the ether
if (packageSource == null) {
- Log.w(LOG_TAG, "Unspecified source")
+ Log.e(LOG_TAG, "Unspecified source")
return InstallAborted(
ABORT_REASON_INTERNAL_ERROR,
resultIntent = Intent().putExtra(
@@ -509,7 +528,7 @@ class InstallRepository(private val context: Context) {
if (scheme == null) {
return InstallAborted(ABORT_REASON_INTERNAL_ERROR)
}
- if (localLOGV) {
+ if (localLogv) {
Log.i(LOG_TAG, "processPackageUri(): uri = $packageUri, scheme = $scheme")
}
when (scheme) {
@@ -528,7 +547,7 @@ class InstallRepository(private val context: Context) {
}
}
if (newPackageInfo == null) {
- Log.w(
+ Log.e(
LOG_TAG, "Requested package " + packageUri.schemeSpecificPart
+ " not available. Discontinuing installation"
)
@@ -542,7 +561,7 @@ class InstallRepository(private val context: Context) {
)
}
appSnippet = getAppSnippet(context, newPackageInfo!!)
- if (localLOGV) {
+ if (localLogv) {
Log.i(LOG_TAG, "Created snippet for " + appSnippet.label)
}
}
@@ -569,7 +588,7 @@ class InstallRepository(private val context: Context) {
activityResultCode = Activity.RESULT_FIRST_USER
)
}
- if (localLOGV) {
+ if (localLogv) {
Log.i(LOG_TAG, "Creating snippet for local file $sourceFile")
}
appSnippet = getAppSnippet(context, newPackageInfo!!, sourceFile!!)
@@ -590,9 +609,7 @@ class InstallRepository(private val context: Context) {
* Use the SessionInfo and set up the installer for pre-commit install session.
*
* @param sessionInfo The SessionInfo to compose
- * @return
- * * [InstallUserActionRequired] if source could be processed
- * * [InstallAborted] if source is invalid or there was an error is processing a source
+ * @return [InstallUserActionRequired]
*/
private fun processSessionInfo(sessionInfo: SessionInfo, userActionReason: Int): InstallStage {
newPackageInfo = generateStubPackageInfo(sessionInfo.getAppPackageName())
@@ -718,7 +735,7 @@ class InstallRepository(private val context: Context) {
appOpStr!!, requestInfo.originatingUid, requestInfo.callingPackage,
requestInfo.attributionTag, "Started package installation activity"
)
- if (localLOGV) {
+ if (localLogv) {
Log.i(LOG_TAG, "handleUnknownSources(): appMode=$appOpMode")
}
@@ -764,6 +781,9 @@ class InstallRepository(private val context: Context) {
fun initiateInstall() {
if (sessionId > 0) {
packageInstaller.setPermissionsResult(sessionId, true)
+ if (localLogv) {
+ Log.i(LOG_TAG, "Install permission granted for session $sessionId")
+ }
_installResult.value = InstallAborted(
ABORT_REASON_DONE, activityResultCode = Activity.RESULT_OK
)
@@ -824,8 +844,13 @@ class InstallRepository(private val context: Context) {
private fun setStageBasedOnResult(
statusCode: Int,
legacyStatus: Int,
- message: String?
+ message: String?,
) {
+ if (localLogv) {
+ Log.i(LOG_TAG, "Status code: $statusCode\n" +
+ "legacy status: $legacyStatus\n" +
+ "message: $message")
+ }
if (statusCode == PackageInstaller.STATUS_SUCCESS) {
val shouldReturnResult = intent.getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)
val resultIntent = if (shouldReturnResult) {
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/PackageUtil.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/PackageUtil.kt
index 8d8c2f1d8171..bae6f6876580 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/PackageUtil.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/PackageUtil.kt
@@ -36,7 +36,8 @@ import java.io.File
object PackageUtil {
private val LOG_TAG = InstallRepository::class.java.simpleName
private const val DOWNLOADS_AUTHORITY = "downloads"
- private const val SPLIT_BASE_APK_END_WITH = "base.apk"
+ private const val SPLIT_BASE_APK_SUFFIX = "base.apk"
+ const val localLogv = false
/**
* Determines if the UID belongs to the system downloads provider and returns the
@@ -394,7 +395,7 @@ object PackageUtil {
@JvmStatic
fun getPackageInfo(context: Context, sourceFile: File, flags: Int): PackageInfo? {
var filePath = sourceFile.absolutePath
- if (filePath.endsWith(SPLIT_BASE_APK_END_WITH)) {
+ if (filePath.endsWith(SPLIT_BASE_APK_SUFFIX)) {
val dir = sourceFile.parentFile
if ((dir?.listFiles()?.size ?: 0) > 1) {
// split apks, use file directory to get archive info
@@ -436,5 +437,9 @@ object PackageUtil {
* The class to hold an incoming package's icon and label.
* See [getAppSnippet]
*/
- data class AppSnippet(var label: CharSequence?, var icon: Drawable?)
+ data class AppSnippet(var label: CharSequence?, var icon: Drawable?) {
+ override fun toString(): String {
+ return "AppSnippet[label = ${label}, hasIcon = ${icon != null}]"
+ }
+ }
}
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/UninstallRepository.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/UninstallRepository.kt
index c6b6d36180f3..0091a3e8b2cf 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/UninstallRepository.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/UninstallRepository.kt
@@ -226,18 +226,19 @@ class UninstallRepository(private val context: Context) {
userName
)
if (userManager!!.isSameProfileGroup(myUserHandle, uninstalledUser!!)) {
- if (customUserManager!!.isManagedProfile()) {
+ if (customUserManager.isManagedProfile) {
messageString = context.getString(
R.string.uninstall_application_text_current_user_work_profile, userName
)
- } else if (customUserManager!!.isCloneProfile()){
+ } else if (customUserManager.isCloneProfile){
isClonedApp = true
messageString = context.getString(
R.string.uninstall_application_text_current_user_clone_profile
)
} else if (Flags.allowPrivateProfile()
&& android.multiuser.Flags.enablePrivateSpaceFeatures()
- && customUserManager!!.isPrivateProfile()) {
+ && customUserManager.isPrivateProfile
+ ) {
// TODO(b/324244123): Get these Strings from a User Property API.
messageString = context.getString(
R.string.uninstall_application_text_current_user_private_profile
@@ -401,6 +402,7 @@ class UninstallRepository(private val context: Context) {
uninstallData.putBoolean(Intent.EXTRA_UNINSTALL_ALL_USERS, uninstallFromAllUsers)
uninstallData.putCharSequence(EXTRA_APP_LABEL, targetAppLabel)
uninstallData.putBoolean(EXTRA_IS_CLONE_APP, isClonedApp)
+ uninstallData.putInt(EXTRA_TARGET_USER_ID, uninstalledUser!!.identifier)
Log.i(LOG_TAG, "Uninstalling extras = $uninstallData")
// Get a PendingIntent for result broadcast and issue an uninstall request
@@ -730,7 +732,7 @@ class UninstallRepository(private val context: Context) {
}
}
- fun cancelInstall() {
+ fun cancelUninstall() {
if (callback != null) {
callback!!.onUninstallComplete(
targetPackageName!!,
@@ -749,6 +751,7 @@ class UninstallRepository(private val context: Context) {
private const val EXTRA_IS_CLONE_APP = "com.android.packageinstaller.extra.IS_CLONE_APP"
private const val EXTRA_PACKAGE_NAME =
"com.android.packageinstaller.extra.EXTRA_PACKAGE_NAME"
+ private const val EXTRA_TARGET_USER_ID = "EXTRA_TARGET_USER_ID"
}
class CallerInfo(val activityName: String?, val uid: Int)
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/InstallLaunch.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/InstallLaunch.kt
index 6f8eca3655b5..31b9ccbdb838 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/InstallLaunch.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/InstallLaunch.kt
@@ -43,6 +43,7 @@ import com.android.packageinstaller.v2.model.InstallRepository
import com.android.packageinstaller.v2.model.InstallStage
import com.android.packageinstaller.v2.model.InstallSuccess
import com.android.packageinstaller.v2.model.InstallUserActionRequired
+import com.android.packageinstaller.v2.model.PackageUtil.localLogv
import com.android.packageinstaller.v2.ui.fragments.AnonymousSourceFragment
import com.android.packageinstaller.v2.ui.fragments.ExternalSourcesBlockedFragment
import com.android.packageinstaller.v2.ui.fragments.InstallConfirmationFragment
@@ -66,8 +67,6 @@ class InstallLaunch : FragmentActivity(), InstallActionListener {
private const val TAG_DIALOG = "dialog"
}
- private val localLOGV = false
-
/**
* A collection of unknown sources listeners that are actively listening for app ops mode
* changes
@@ -199,14 +198,14 @@ class InstallLaunch : FragmentActivity(), InstallActionListener {
// admin enforcing the restriction for the affected user. If not enforced by the admin,
// show the system dialog.
if (adminSupportIntent != null) {
- if (localLOGV) {
+ if (localLogv) {
Log.i(LOG_TAG, "Restriction set by admin, starting $adminSupportIntent")
}
startActivity(adminSupportIntent)
// Finish the package installer app since the next dialog will not be shown by this app
shouldFinish = true
} else {
- if (localLOGV) {
+ if (localLogv) {
Log.i(LOG_TAG, "Restriction set by system: $restriction")
}
val blockedByPolicyDialog = createDevicePolicyRestrictionDialog(restriction)
@@ -225,7 +224,7 @@ class InstallLaunch : FragmentActivity(), InstallActionListener {
* @return The dialog
*/
private fun createDevicePolicyRestrictionDialog(restriction: String?): DialogFragment? {
- if (localLOGV) {
+ if (localLogv) {
Log.i(LOG_TAG, "createDialog($restriction)")
}
return when (restriction) {
@@ -259,6 +258,9 @@ class InstallLaunch : FragmentActivity(), InstallActionListener {
}
override fun onPositiveResponse(reasonCode: Int) {
+ if (localLogv) {
+ Log.d(LOG_TAG, "Positive button clicked. ReasonCode: $reasonCode")
+ }
when (reasonCode) {
InstallUserActionRequired.USER_ACTION_REASON_ANONYMOUS_SOURCE ->
installViewModel!!.forcedSkipSourceCheck()
@@ -269,6 +271,9 @@ class InstallLaunch : FragmentActivity(), InstallActionListener {
}
override fun onNegativeResponse(stageCode: Int) {
+ if (localLogv) {
+ Log.d(LOG_TAG, "Negative button clicked. StageCode: $stageCode")
+ }
if (stageCode == InstallStage.STAGE_USER_ACTION_REQUIRED) {
installViewModel!!.cleanupInstall()
}
@@ -276,10 +281,16 @@ class InstallLaunch : FragmentActivity(), InstallActionListener {
}
override fun onNegativeResponse(resultCode: Int, data: Intent?) {
+ if (localLogv) {
+ Log.d(LOG_TAG, "Negative button clicked. resultCode: $resultCode; Intent: $data")
+ }
setResult(resultCode, data, true)
}
override fun sendUnknownAppsIntent(sourcePackageName: String) {
+ if (localLogv) {
+ Log.d(LOG_TAG, "Launching unknown-apps settings intent for $sourcePackageName")
+ }
val settingsIntent = Intent()
settingsIntent.setAction(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES)
val packageUri = Uri.parse("package:$sourcePackageName")
@@ -299,6 +310,9 @@ class InstallLaunch : FragmentActivity(), InstallActionListener {
}
override fun openInstalledApp(intent: Intent?) {
+ if (localLogv) {
+ Log.d(LOG_TAG, "Opening $intent")
+ }
setResult(Activity.RESULT_OK, intent, true)
if (intent != null && intent.hasCategory(Intent.CATEGORY_LAUNCHER)) {
startActivity(intent)
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/UninstallLaunch.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/UninstallLaunch.kt
index 0050c7ebe93a..c4ca27247575 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/UninstallLaunch.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/UninstallLaunch.kt
@@ -28,6 +28,7 @@ import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.ViewModelProvider
+import com.android.packageinstaller.v2.model.PackageUtil.localLogv
import com.android.packageinstaller.v2.model.UninstallAborted
import com.android.packageinstaller.v2.model.UninstallFailed
import com.android.packageinstaller.v2.model.UninstallRepository
@@ -159,11 +160,17 @@ class UninstallLaunch : FragmentActivity(), UninstallActionListener {
}
override fun onPositiveResponse(keepData: Boolean) {
+ if (localLogv) {
+ Log.d(LOG_TAG, "Staring uninstall")
+ }
uninstallViewModel!!.initiateUninstall(keepData)
}
override fun onNegativeResponse() {
- uninstallViewModel!!.cancelInstall()
+ if (localLogv) {
+ Log.d(LOG_TAG, "Cancelling uninstall")
+ }
+ uninstallViewModel!!.cancelUninstall()
setResult(Activity.RESULT_FIRST_USER, null, true)
}
}
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java
index b29cb2ab308c..cc40b0cd5b29 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java
@@ -21,6 +21,7 @@ import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import com.android.packageinstaller.R;
@@ -33,7 +34,7 @@ import com.android.packageinstaller.v2.ui.InstallActionListener;
*/
public class AnonymousSourceFragment extends DialogFragment {
- public static String TAG = AnonymousSourceFragment.class.getSimpleName();
+ public static final String LOG_TAG = AnonymousSourceFragment.class.getSimpleName();
@NonNull
private InstallActionListener mInstallActionListener;
@NonNull
@@ -48,7 +49,8 @@ public class AnonymousSourceFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- mDialog = new AlertDialog.Builder(requireContext())
+ Log.i(LOG_TAG, "Creating " + LOG_TAG);
+ mDialog = new AlertDialog.Builder(requireContext())
.setMessage(R.string.anonymous_source_warning)
.setPositiveButton(R.string.anonymous_source_continue,
((dialog, which) -> mInstallActionListener.onPositiveResponse(
@@ -56,7 +58,7 @@ public class AnonymousSourceFragment extends DialogFragment {
.setNegativeButton(R.string.cancel,
((dialog, which) -> mInstallActionListener.onNegativeResponse(
InstallStage.STAGE_USER_ACTION_REQUIRED))).create();
- return mDialog;
+ return mDialog;
}
@Override
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java
index 2314d6b3b47e..a95137d57a32 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java
@@ -21,6 +21,7 @@ import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
@@ -34,7 +35,7 @@ import com.android.packageinstaller.v2.ui.InstallActionListener;
*/
public class ExternalSourcesBlockedFragment extends DialogFragment {
- private final String TAG = ExternalSourcesBlockedFragment.class.getSimpleName();
+ private static final String LOG_TAG = ExternalSourcesBlockedFragment.class.getSimpleName();
@NonNull
private final InstallUserActionRequired mDialogData;
@NonNull
@@ -55,6 +56,7 @@ public class ExternalSourcesBlockedFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
mDialog = new AlertDialog.Builder(requireContext())
.setTitle(mDialogData.getAppLabel())
.setIcon(mDialogData.getAppIcon())
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java
index 0a4aa48fc126..99b1eec9cd9e 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java
@@ -23,6 +23,7 @@ import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Html;
import android.text.method.ScrollingMovementMethod;
+import android.util.Log;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -37,8 +38,7 @@ import com.android.packageinstaller.v2.ui.InstallActionListener;
*/
public class InstallConfirmationFragment extends DialogFragment {
- public static String TAG = InstallConfirmationFragment.class.getSimpleName();
-
+ public static final String LOG_TAG = InstallConfirmationFragment.class.getSimpleName();
@NonNull
private final InstallUserActionRequired mDialogData;
@NonNull
@@ -59,6 +59,7 @@ public class InstallConfirmationFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
int positiveBtnTextRes;
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallFailedFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallFailedFragment.java
index 4667a7a4e48a..7c9d98dd4823 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallFailedFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallFailedFragment.java
@@ -38,7 +38,7 @@ import com.android.packageinstaller.v2.ui.InstallActionListener;
*/
public class InstallFailedFragment extends DialogFragment {
- private static final String TAG = InstallFailedFragment.class.getSimpleName();
+ private static final String LOG_TAG = InstallFailedFragment.class.getSimpleName();
private final InstallFailed mDialogData;
private InstallActionListener mInstallActionListener;
@@ -55,6 +55,7 @@ public class InstallFailedFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
AlertDialog dialog = new AlertDialog.Builder(requireContext())
.setTitle(mDialogData.getAppLabel())
@@ -75,7 +76,7 @@ public class InstallFailedFragment extends DialogFragment {
* @param statusCode The status code from the package installer.
*/
private void setExplanationFromErrorCode(int statusCode, View dialogView) {
- Log.d(TAG, "Installation status code: " + statusCode);
+ Log.i(LOG_TAG, "Installation status code: " + statusCode);
View viewToEnable;
switch (statusCode) {
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallInstallingFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallInstallingFragment.java
index 7327b5d5b9c2..27210b757181 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallInstallingFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallInstallingFragment.java
@@ -20,6 +20,7 @@ import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -32,6 +33,7 @@ import com.android.packageinstaller.v2.model.InstallInstalling;
*/
public class InstallInstallingFragment extends DialogFragment {
+ private static final String LOG_TAG = InstallInstallingFragment.class.getSimpleName();
private final InstallInstalling mDialogData;
private AlertDialog mDialog;
@@ -42,6 +44,7 @@ public class InstallInstallingFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
mDialog = new AlertDialog.Builder(requireContext())
.setTitle(mDialogData.getAppLabel())
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallStagingFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallStagingFragment.java
index feb24282e0a5..3cab96b92631 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallStagingFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallStagingFragment.java
@@ -20,6 +20,7 @@ import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import androidx.annotation.NonNull;
@@ -29,13 +30,14 @@ import com.android.packageinstaller.R;
public class InstallStagingFragment extends DialogFragment {
- private static final String TAG = InstallStagingFragment.class.getSimpleName();
+ private static final String LOG_TAG = InstallStagingFragment.class.getSimpleName();
private ProgressBar mProgressBar;
private AlertDialog mDialog;
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ Log.i(LOG_TAG, "Creating " + LOG_TAG);
View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
dialogView.requireViewById(R.id.staging).setVisibility(View.VISIBLE);
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallSuccessFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallSuccessFragment.java
index e491f9c87313..28b5423b2d83 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallSuccessFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallSuccessFragment.java
@@ -60,6 +60,7 @@ public class InstallSuccessFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
mDialog = new AlertDialog.Builder(requireContext())
.setTitle(mDialogData.getAppLabel())
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ParseErrorFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ParseErrorFragment.java
index 68d48d62a0b6..cde3d8d9dd2d 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ParseErrorFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ParseErrorFragment.java
@@ -21,6 +21,7 @@ import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import com.android.packageinstaller.R;
@@ -29,7 +30,7 @@ import com.android.packageinstaller.v2.ui.InstallActionListener;
public class ParseErrorFragment extends DialogFragment {
- private static final String TAG = ParseErrorFragment.class.getSimpleName();
+ private static final String LOG_TAG = ParseErrorFragment.class.getSimpleName();
private final InstallAborted mDialogData;
private InstallActionListener mInstallActionListener;
@@ -46,7 +47,8 @@ public class ParseErrorFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- return new AlertDialog.Builder(getActivity())
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
+ return new AlertDialog.Builder(requireContext())
.setMessage(R.string.Parse_error_dlg_text)
.setPositiveButton(R.string.ok,
(dialog, which) ->
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/SimpleErrorFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/SimpleErrorFragment.java
index 58b8b2def6d0..66a353a3519e 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/SimpleErrorFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/SimpleErrorFragment.java
@@ -21,6 +21,7 @@ import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import com.android.packageinstaller.R;
@@ -29,7 +30,7 @@ import com.android.packageinstaller.v2.ui.InstallActionListener;
public class SimpleErrorFragment extends DialogFragment {
- private static final String TAG = SimpleErrorFragment.class.getSimpleName();
+ private static final String LOG_TAG = SimpleErrorFragment.class.getSimpleName();
private final int mMessageResId;
private InstallActionListener mInstallActionListener;
@@ -46,7 +47,9 @@ public class SimpleErrorFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- return new AlertDialog.Builder(getActivity())
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" +
+ "Dialog message: " + requireContext().getString(mMessageResId));
+ return new AlertDialog.Builder(requireContext())
.setMessage(mMessageResId)
.setPositiveButton(R.string.ok,
(dialog, which) ->
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallConfirmationFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallConfirmationFragment.java
index 32ac4a61b73e..87af1ae200ca 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallConfirmationFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallConfirmationFragment.java
@@ -23,6 +23,7 @@ import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
@@ -37,7 +38,7 @@ import com.android.packageinstaller.v2.ui.UninstallActionListener;
* Dialog to show while requesting user confirmation for uninstalling an app.
*/
public class UninstallConfirmationFragment extends DialogFragment {
-
+ private static final String LOG_TAG = UninstallConfirmationFragment.class.getSimpleName();
private final UninstallUserActionRequired mDialogData;
private UninstallActionListener mUninstallActionListener;
@@ -56,6 +57,7 @@ public class UninstallConfirmationFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext())
.setTitle(mDialogData.getTitle())
.setPositiveButton(R.string.ok,
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallErrorFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallErrorFragment.java
index eb7183df07b9..51e16cbff55d 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallErrorFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallErrorFragment.java
@@ -21,6 +21,7 @@ import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
@@ -33,6 +34,7 @@ import com.android.packageinstaller.v2.ui.UninstallActionListener;
*/
public class UninstallErrorFragment extends DialogFragment {
+ private static final String LOG_TAG = UninstallErrorFragment.class.getSimpleName();
private final UninstallAborted mDialogData;
private UninstallActionListener mUninstallActionListener;
@@ -49,6 +51,7 @@ public class UninstallErrorFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext())
.setMessage(mDialogData.getDialogTextResource())
.setNegativeButton(R.string.ok,
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallUninstallingFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallUninstallingFragment.java
index 835efc607fcb..626ff6b92f13 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallUninstallingFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/UninstallUninstallingFragment.java
@@ -19,6 +19,7 @@ package com.android.packageinstaller.v2.ui.fragments;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import com.android.packageinstaller.R;
@@ -29,6 +30,7 @@ import com.android.packageinstaller.v2.model.UninstallUninstalling;
*/
public class UninstallUninstallingFragment extends DialogFragment {
+ private static final String LOG_TAG = UninstallUninstallingFragment.class.getSimpleName();
UninstallUninstalling mDialogData;
public UninstallUninstallingFragment(UninstallUninstalling dialogData) {
@@ -38,6 +40,7 @@ public class UninstallUninstallingFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
+ Log.i(LOG_TAG, "Creating " + LOG_TAG + "\n" + mDialogData);
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext())
.setCancelable(false);
if (mDialogData.isCloneUser()) {
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/viewmodel/UninstallViewModel.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/viewmodel/UninstallViewModel.kt
index 80886e92e33e..3081d7d434bb 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/viewmodel/UninstallViewModel.kt
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/viewmodel/UninstallViewModel.kt
@@ -56,7 +56,7 @@ class UninstallViewModel(application: Application, val repository: UninstallRepo
}
}
- fun cancelInstall() {
- repository.cancelInstall()
+ fun cancelUninstall() {
+ repository.cancelUninstall()
}
}