summaryrefslogtreecommitdiff
path: root/libs/permission/include/android/permission/PermissionChecker.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/permission/include/android/permission/PermissionChecker.h')
-rw-r--r--libs/permission/include/android/permission/PermissionChecker.h206
1 files changed, 0 insertions, 206 deletions
diff --git a/libs/permission/include/android/permission/PermissionChecker.h b/libs/permission/include/android/permission/PermissionChecker.h
deleted file mode 100644
index 21515e3bbd..0000000000
--- a/libs/permission/include/android/permission/PermissionChecker.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <android/content/AttributionSourceState.h>
-#include <android/permission/IPermissionChecker.h>
-
-#include <utils/threads.h>
-
-#include <optional>
-
-#ifdef __ANDROID_VNDK__
-#error "This header is not visible to vendors"
-#endif
-
-// ---------------------------------------------------------------------------
-namespace android {
-
-namespace permission {
-
-using android::content::AttributionSourceState;
-using android::permission::IPermissionChecker;
-
-class PermissionChecker
-{
-public:
-
- enum PermissionResult {
-
- /**
- * The permission is granted.
- */
- PERMISSION_GRANTED = IPermissionChecker::PERMISSION_GRANTED,
-
- /**
- * The permission is denied. Applicable only to runtime and app op permissions.
- *
- * Returned when:
- * - the runtime permission is granted, but the corresponding app op is denied
- * for runtime permissions.
- * - the app ops is ignored for app op permissions.
- *
- */
- PERMISSION_SOFT_DENIED = IPermissionChecker::PERMISSION_SOFT_DENIED,
-
- /**
- * The permission is denied.
- *
- * Returned when:
- * - the permission is denied for non app op permissions.
- * - the app op is denied or app op is AppOpsManager#MODE_DEFAULT and permission is denied.
- */
- PERMISSION_HARD_DENIED = IPermissionChecker::PERMISSION_HARD_DENIED
- };
-
- PermissionChecker();
-
- /**
- * Checks whether a given data access chain described by the given attribution source
- * has a given permission and whether the app op that corresponds to this permission
- * is allowed. Call this method if you are the datasource which would not blame you for
- * access to the data since you are the data. Use this API if you are the datasource of
- * the protected state.
- *
- * NOTE: The attribution source should be for yourself with its next attribution
- * source being the app that would receive the data from you.
- *
- * NOTE: Use this method only for permission checks at the point where you will deliver
- * the permission protected data to clients.
- *
- * @param permission The permission to check.
- * @param attributionSource The attribution chain to check.
- * @param message A message describing the reason the permission was checked.
- * @param attributedOpCode The op code towards which to blame the access. If this
- * is a valid app op the op corresponding to the checked permission (if such)
- * would only be checked to ensure it is allowed and if that succeeds the
- * noting would be against the attributed op.
- * @return The permission check result which is either PERMISSION_GRANTED,
- * or PERMISSION_SOFT_DENIED or PERMISSION_HARD_DENIED.
- */
- PermissionChecker::PermissionResult checkPermissionForDataDeliveryFromDatasource(
- const String16& permission, const AttributionSourceState& attributionSource,
- const String16& message, int32_t attributedOpCode);
-
- /**
- * Checks whether a given data access chain described by the given attribution source
- * has a given permission and whether the app op that corresponds to this permission
- * is allowed. The app ops are not noted/started.
- *
- * NOTE: Use this method only for permission checks at the preflight point where you
- * will not deliver the permission protected data to clients but schedule permission
- * data delivery, apps register listeners, etc.
- *
- * @param permission The permission to check.
- * @param attributionSource The attribution chain to check.
- * @param message A message describing the reason the permission was checked.
- * @param attributedOpCode The op code towards which to blame the access. If this
- * is a valid app op the op corresponding to the checked permission (if such)
- * would only be checked to ensure it is allowed and if that succeeds the
- * starting would be against the attributed op.
- * @return The permission check result which is either PERMISSION_GRANTED,
- * or PERMISSION_SOFT_DENIED or PERMISSION_HARD_DENIED.
- */
- PermissionResult checkPermissionForPreflight(
- const String16& permission, const AttributionSourceState& attributionSource,
- const String16& message, int32_t attributedOpCode);
-
- /**
- * Checks whether a given data access chain described by the given attribution source
- * has a given permission and whether the app op that corresponds to this permission
- * is allowed. The app ops are not noted/started.
- *
- * NOTE: The attribution source should be for yourself with its next attribution
- * source being the app that would receive the data from you.
- *
- * NOTE: Use this method only for permission checks at the preflight point where you
- * will not deliver the permission protected data to clients but schedule permission
- * data delivery, apps register listeners, etc.
- *
- * @param permission The permission to check.
- * @param attributionSource The attribution chain to check.
- * @param message A message describing the reason the permission was checked.
- * @param attributedOpCode The op code towards which to blame the access. If this
- * is a valid app op the op corresponding to the checked permission (if such)
- * would only be checked to ensure it is allowed and if that succeeds the
- * starting would be against the attributed op.
- * @return The permission check result which is either PERMISSION_GRANTED,
- * or PERMISSION_SOFT_DENIED or PERMISSION_HARD_DENIED.
- */
- PermissionResult checkPermissionForPreflightFromDatasource(
- const String16& permission, const AttributionSourceState& attributionSource,
- const String16& message, int32_t attributedOpCode);
-
- /**
- * Checks whether a given data access chain described by the given attribution source
- * has a given permission and whether the app op that corresponds to this permission
- * is allowed. The app ops are also marked as started. This is useful for long running
- * permissions like camera and microphone. Use this API if you are the datasource of
- * the protected state.
- *
- * NOTE: The attribution source should be for yourself with its next attribution
- * source being the app that would receive the data from you.
- *
- * NOTE: Use this method only for permission checks at the point where you will deliver
- * the permission protected data to clients.
- *
- * @param permission The permission to check.
- * @param attributionSource The attribution chain to check.
- * @param message A message describing the reason the permission was checked.
- * @param attributedOpCode The op code towards which to blame the access. If this
- * is a valid app op the op corresponding to the checked permission (if such)
- * would only be checked to ensure it is allowed and if that succeeds the
- * starting would be against the attributed op.
- * @return The permission check result which is either PERMISSION_GRANTED,
- * or PERMISSION_SOFT_DENIED or PERMISSION_HARD_DENIED.
- */
- PermissionResult checkPermissionForStartDataDeliveryFromDatasource(
- const String16& permission, const AttributionSourceState& attributionSource,
- const String16& message, int32_t attributedOpCode);
-
- /**
- * Finishes an ongoing op for data access chain described by the given
- * attribution source. Use this API if you are the datasource of the protected
- * state. Use this API if you are the datasource of the protected state.
- *
- * NOTE: The attribution source should be for yourself with its next attribution
- * source being the app that would receive the data from you.
- *
- * @param op The op to finish.
- * @param attributionSource The attribution chain for which to finish data delivery.
- * @param attributedOpCode The op code towards which to blame the access. If this
- * is a valid app op it is the op that would be finished.
- */
- void finishDataDeliveryFromDatasource(int32_t op,
- const AttributionSourceState& attributionSource);
-
-private:
- Mutex mLock;
- sp<IPermissionChecker> mService;
- sp<IPermissionChecker> getService();
-
- PermissionResult checkPermission(const String16& permission,
- const AttributionSourceState& attributionSource,
- const String16& message, bool forDataDelivery, bool startDataDelivery,
- bool fromDatasource, int32_t attributedOpCode);
-};
-
-} // namespace permission
-
-} // namespace android
-
-// ---------------------------------------------------------------------------