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

Commit f23e4f40 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 7257099 from 11da40be to sc-release

Change-Id: I54f06b701e032e282094453c5988c77ef3cb76d6
parents 73edfb27 11da40be
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -66,11 +66,9 @@ libbinder_device_interface_sources = [
    "IAppOpsCallback.cpp",
    "IAppOpsService.cpp",
    "IPermissionController.cpp",
    "IProcessInfoService.cpp",
    "IUidObserver.cpp",
    "PermissionCache.cpp",
    "PermissionController.cpp",
    "ProcessInfoService.cpp",
    "IpPrefix.cpp",
    ":activity_manager_procstate_aidl",
]
@@ -282,3 +280,17 @@ cc_library {
        "libutils",
    ],
}

cc_library {
    name: "libprocessinfoservice_aidl",
    srcs: [
        "IProcessInfoService.cpp",
        "ProcessInfoService.cpp",
    ],
    export_include_dirs: ["include_processinfo"],
    shared_libs: [
        "libbinder",
        "libutils",
        "liblog",
    ],
}
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
 * limitations under the License.
 */

#include <binder/IProcessInfoService.h>
#include <processinfo/IProcessInfoService.h>
#include <binder/Parcel.h>
#include <utils/Errors.h>
#include <sys/types.h>
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
 * limitations under the License.
 */

#include <binder/ProcessInfoService.h>
#include <processinfo/ProcessInfoService.h>
#include <binder/IServiceManager.h>

#include <utils/Log.h>
+14 −2
Original line number Diff line number Diff line
@@ -38,18 +38,30 @@ Stability::Category Stability::Category::currentFromLevel(Level level) {
    };
}

void Stability::forceDowngradeCompilationUnit(const sp<IBinder>& binder) {
void Stability::forceDowngradeToStability(const sp<IBinder>& binder, Level level) {
    // Downgrading a remote binder would require also copying the version from
    // the binder sent here. In practice though, we don't need to downgrade the
    // stability of a remote binder, since this would as an effect only restrict
    // what we can do to it.
    LOG_ALWAYS_FATAL_IF(!binder || !binder->localBinder(), "Can only downgrade local binder");

    auto stability = Category::currentFromLevel(getLocalLevel());
    auto stability = Category::currentFromLevel(level);
    status_t result = setRepr(binder.get(), stability.repr(), REPR_LOG | REPR_ALLOW_DOWNGRADE);
    LOG_ALWAYS_FATAL_IF(result != OK, "Should only mark known object.");
}

void Stability::forceDowngradeToLocalStability(const sp<IBinder>& binder) {
    forceDowngradeToStability(binder, getLocalLevel());
}

void Stability::forceDowngradeToSystemStability(const sp<IBinder>& binder) {
    forceDowngradeToStability(binder, Level::SYSTEM);
}

void Stability::forceDowngradeToVendorStability(const sp<IBinder>& binder) {
    forceDowngradeToStability(binder, Level::VENDOR);
}

std::string Stability::Category::debugString() {
    return levelString(level) + " wire protocol version "
        + std::to_string(version);
+30 −2
Original line number Diff line number Diff line
@@ -54,8 +54,33 @@ public:
    // Given a binder interface at a certain stability, there may be some
    // requirements associated with that higher stability level. For instance, a
    // VINTF stability binder is required to be in the VINTF manifest. This API
    // can be called to use that same interface within a partition.
    static void forceDowngradeCompilationUnit(const sp<IBinder>& binder);
    // can be called to use that same interface within the local partition.
    static void forceDowngradeToLocalStability(const sp<IBinder>& binder);

    // WARNING: The only client of
    //      - forceDowngradeToSystemStability() and;
    //      - korceDowngradeToVendorStability()
    //  should be AIBinder_forceDowngradeToLocalStability().
    //
    // getLocalLevel() in libbinder returns Level::SYSTEM when called
    // from libbinder_ndk (even on vendor partition). So we explicitly provide
    // these methods for use by the NDK API:
    //      AIBinder_forceDowngradeToLocalStability().
    //
    // This allows correctly downgrading the binder's stability to either system/vendor,
    // depending on the partition.

    // Given a binder interface at a certain stability, there may be some
    // requirements associated with that higher stability level. For instance, a
    // VINTF stability binder is required to be in the VINTF manifest. This API
    // can be called to use that same interface within the vendor partition.
    static void forceDowngradeToVendorStability(const sp<IBinder>& binder);

    // Given a binder interface at a certain stability, there may be some
    // requirements associated with that higher stability level. For instance, a
    // VINTF stability binder is required to be in the VINTF manifest. This API
    // can be called to use that same interface within the system partition.
    static void forceDowngradeToSystemStability(const sp<IBinder>& binder);

    // WARNING: Below APIs are only ever expected to be called by auto-generated code.
    //     Instead of calling them, you should set the stability of a .aidl interface
@@ -146,6 +171,9 @@ private:
    // returns the stability according to how this was built
    static Level getLocalLevel();

    // Downgrades binder stability to the specified level.
    static void forceDowngradeToStability(const sp<IBinder>& binder, Level level);

    enum {
      REPR_NONE = 0,
      REPR_LOG = 1,
Loading