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

Commit 0f6bfd95 authored by Stanislav Zholnin's avatar Stanislav Zholnin Committed by Android (Google) Code Review
Browse files

Merge "Creation of sessionId and passing it between PermissionController...

Merge "Creation of sessionId and passing it between PermissionController fragments. SessionId will be used in logging of user interactions with PermissionController" into qt-dev
parents 0db45166 2ebf333e
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