Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2ebf333e authored by Stanislav Zholnin's avatar Stanislav Zholnin
Browse files

Creation of sessionId and passing it between PermissionController fragments.

SessionId will be used in logging of user interactions with PermissionController

Test:  Tested locally with log statements added to each activity.
Bug: 133401502
Change-Id: I04dd387421017b1e663d5933ad37ef24e21ec38a
Merged-In: I04dd387421017b1e663d5933ad37ef24e21ec38a
parent acce1d78
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -136,4 +136,15 @@ public class Constants {
     * set for the names of the roles that an application is always denied for.
     */
    public static final String REQUEST_ROLE_USER_DENIED_ALWAYS_KEY_PREFIX = "denied_always:";

    /**
     * Intent extra used to pass current sessionId between Permission Controller fragments.
     */
    public static final String EXTRA_SESSION_ID =
            "com.android.packageinstaller.extra.SESSION_ID";

    /**
     * Invalid session id.
     */
    public static final long INVALID_SESSION_ID = 0;
}
+12 −0
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ import static android.os.UserHandle.myUserId;
import static android.provider.Settings.Secure.LOCATION_ACCESS_CHECK_DELAY_MILLIS;
import static android.provider.Settings.Secure.LOCATION_ACCESS_CHECK_INTERVAL_MILLIS;

import static com.android.packageinstaller.Constants.EXTRA_SESSION_ID;
import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;
import static com.android.packageinstaller.Constants.KEY_LAST_LOCATION_ACCESS_NOTIFICATION_SHOWN;
import static com.android.packageinstaller.Constants.LOCATION_ACCESS_CHECK_ALREADY_NOTIFIED_FILE;
import static com.android.packageinstaller.Constants.LOCATION_ACCESS_CHECK_JOB_ID;
@@ -516,9 +518,16 @@ public class LocationAccessCheck {
        deleteIntent.putExtra(EXTRA_USER, user);
        deleteIntent.setFlags(FLAG_RECEIVER_FOREGROUND);

        long sessionId = INVALID_SESSION_ID;

        while (sessionId == INVALID_SESSION_ID) {
            sessionId = new Random().nextLong();
        }

        Intent clickIntent = new Intent(mContext, NotificationClickHandler.class);
        clickIntent.putExtra(EXTRA_PACKAGE_NAME, pkgName);
        clickIntent.putExtra(EXTRA_USER, user);
        clickIntent.putExtra(EXTRA_SESSION_ID, sessionId);
        clickIntent.setFlags(FLAG_RECEIVER_FOREGROUND);

        CharSequence appName = getNotificationAppName();
@@ -813,6 +822,7 @@ public class LocationAccessCheck {
        public void onReceive(Context context, Intent intent) {
            String pkg = getStringExtraSafe(intent, EXTRA_PACKAGE_NAME);
            UserHandle user = getParcelableExtraSafe(intent, EXTRA_USER);
            long sessionId = intent.getLongExtra(EXTRA_SESSION_ID, INVALID_SESSION_ID);

            new LocationAccessCheck(context, null).markAsNotified(pkg, user);

@@ -821,6 +831,8 @@ public class LocationAccessCheck {
            manageAppPermission.putExtra(EXTRA_PERMISSION_NAME, ACCESS_FINE_LOCATION);
            manageAppPermission.putExtra(EXTRA_PACKAGE_NAME, pkg);
            manageAppPermission.putExtra(EXTRA_USER, user);
            manageAppPermission.putExtra(EXTRA_SESSION_ID, sessionId);


            context.startActivity(manageAppPermission);
        }
+6 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.packageinstaller.permission.ui;

import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;

import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;

import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
@@ -27,6 +29,7 @@ import android.view.MenuItem;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;

import com.android.packageinstaller.Constants;
import com.android.packageinstaller.DeviceUtils;
import com.android.packageinstaller.permission.ui.auto.AutoAppPermissionFragment;
import com.android.packageinstaller.permission.ui.handheld.AppPermissionFragment;
@@ -100,8 +103,10 @@ public final class AppPermissionActivity extends FragmentActivity {
            androidXFragment = AutoAppPermissionFragment.newInstance(packageName, permissionName,
                    groupName, userHandle);
        } else {
            long sessionId = getIntent().getLongExtra(Constants.EXTRA_SESSION_ID,
                    INVALID_SESSION_ID);
            androidXFragment = AppPermissionFragment.newInstance(packageName, permissionName,
                    groupName, userHandle, caller);
                    groupName, userHandle, caller, sessionId);
        }

        getSupportFragmentManager().beginTransaction().replace(android.R.id.content,
+14 −3
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.packageinstaller.permission.ui;

import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;

import static com.android.packageinstaller.Constants.INVALID_SESSION_ID;

import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
@@ -27,6 +29,7 @@ import android.view.MenuItem;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;

import com.android.packageinstaller.Constants;
import com.android.packageinstaller.DeviceUtils;
import com.android.packageinstaller.permission.ui.auto.AutoAllAppPermissionsFragment;
import com.android.packageinstaller.permission.ui.auto.AutoAppPermissionsFragment;
@@ -36,6 +39,8 @@ import com.android.packageinstaller.permission.ui.handheld.ManageStandardPermiss
import com.android.packageinstaller.permission.ui.wear.AppPermissionsFragmentWear;
import com.android.permissioncontroller.R;

import java.util.Random;

public final class ManagePermissionsActivity extends FragmentActivity {
    private static final String LOG_TAG = ManagePermissionsActivity.class.getSimpleName();

@@ -62,6 +67,11 @@ public final class ManagePermissionsActivity extends FragmentActivity {

        getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);

        long sessionId = getIntent().getLongExtra(Constants.EXTRA_SESSION_ID, INVALID_SESSION_ID);
        while (sessionId == INVALID_SESSION_ID) {
            sessionId = new Random().nextLong();
        }

        String permissionName;
        switch (action) {
            case Intent.ACTION_MANAGE_PERMISSIONS:
@@ -72,7 +82,7 @@ public final class ManagePermissionsActivity extends FragmentActivity {
                            com.android.packageinstaller.permission.ui.television
                                    .ManagePermissionsFragment.newInstance();
                } else {
                    androidXFragment = ManageStandardPermissionsFragment.newInstance();
                    androidXFragment = ManageStandardPermissionsFragment.newInstance(sessionId);
                }
                break;

@@ -115,7 +125,8 @@ public final class ManagePermissionsActivity extends FragmentActivity {
                                .AllAppPermissionsFragment.newInstance(packageName, userHandle);
                    } else {
                        androidXFragment = com.android.packageinstaller.permission.ui.handheld
                                .AppPermissionsFragment.newInstance(packageName, userHandle);
                                .AppPermissionsFragment.newInstance(
                                        packageName, userHandle, sessionId);
                    }
                }
            } break;
@@ -135,7 +146,7 @@ public final class ManagePermissionsActivity extends FragmentActivity {
                            .PermissionAppsFragment.newInstance(permissionName);
                } else {
                    androidXFragment = com.android.packageinstaller.permission.ui.handheld
                            .PermissionAppsFragment.newInstance(permissionName);
                            .PermissionAppsFragment.newInstance(permissionName, sessionId);
                }
            } break;

+7 −2
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import androidx.core.widget.NestedScrollView;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;

import com.android.packageinstaller.Constants;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.Permission;
import com.android.packageinstaller.permission.ui.AppPermissionActivity;
@@ -110,8 +111,8 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
     * @return A new fragment
     */
    public static @NonNull AppPermissionFragment newInstance(@NonNull String packageName,
            @NonNull String permName, @Nullable String groupName, @NonNull UserHandle userHandle,
            @Nullable String caller) {
            @NonNull String permName, @Nullable String groupName,
            @NonNull UserHandle userHandle, @Nullable String caller, long sessionId) {
        AppPermissionFragment fragment = new AppPermissionFragment();
        Bundle arguments = new Bundle();
        arguments.putString(Intent.EXTRA_PACKAGE_NAME, packageName);
@@ -122,6 +123,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
        }
        arguments.putParcelable(Intent.EXTRA_USER, userHandle);
        arguments.putString(AppPermissionActivity.EXTRA_CALLER_NAME, caller);
        arguments.putLong(Constants.EXTRA_SESSION_ID, sessionId);
        fragment.setArguments(arguments);
        return fragment;
    }
@@ -194,6 +196,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
                context.getString(R.string.app_permission_header, mGroup.getFullLabel()));

        root.requireViewById(R.id.usage_summary).setVisibility(View.GONE);
        long sessionId = getArguments().getLong(Constants.EXTRA_SESSION_ID);

        TextView footer1Link = root.requireViewById(R.id.footer_link_1);
        footer1Link.setText(context.getString(R.string.app_permission_footer_app_permissions_link,
@@ -202,6 +205,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
            UserHandle user = UserHandle.getUserHandleForUid(mGroup.getApp().applicationInfo.uid);
            Intent intent = new Intent(Intent.ACTION_MANAGE_APP_PERMISSIONS);
            intent.putExtra(Intent.EXTRA_PACKAGE_NAME, mGroup.getApp().packageName);
            intent.putExtra(Constants.EXTRA_SESSION_ID, sessionId);
            intent.putExtra(Intent.EXTRA_USER, user);
            context.startActivity(intent);
        });
@@ -211,6 +215,7 @@ public class AppPermissionFragment extends SettingsWithLargeHeader {
        footer2Link.setOnClickListener((v) -> {
            Intent intent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS);
            intent.putExtra(Intent.EXTRA_PERMISSION_NAME, mGroup.getName());
            intent.putExtra(Constants.EXTRA_SESSION_ID, sessionId);
            context.startActivity(intent);
        });

Loading