diff options
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() } } |