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

Commit 4e975bb4 authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Multi-user - 1st major checkin

Switching activity stacks
Cache ContentProvider per user
Long-press power to switch users (on phone)

Added ServiceMap for separating services by user
Launch PendingIntents on the correct user's uid
Fix task switching from Recents list
AppWidgetService is mostly working.

Commands added to pm and am to allow creating and switching profiles.

Change-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed
parent e08b4863
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ public:

            int                 getCallingPid();
            int                 getCallingUid();
            int                 getOrigCallingUid();

            void                setStrictModePolicy(int32_t policy);
            int32_t             getStrictModePolicy() const;
@@ -116,6 +117,7 @@ private:
            status_t            mLastError;
            pid_t               mCallingPid;
            uid_t               mCallingUid;
            uid_t               mOrigCallingUid;
            int32_t             mStrictModePolicy;
            int32_t             mLastTransactionBinderFlags;
};
+8 −0
Original line number Diff line number Diff line
@@ -371,6 +371,11 @@ int IPCThreadState::getCallingUid()
    return mCallingUid;
}

int IPCThreadState::getOrigCallingUid()
{
    return mOrigCallingUid;
}

int64_t IPCThreadState::clearCallingIdentity()
{
    int64_t token = ((int64_t)mCallingUid<<32) | mCallingPid;
@@ -641,6 +646,7 @@ IPCThreadState::IPCThreadState()
{
    pthread_setspecific(gTLS, this);
    clearCaller();
    mOrigCallingUid = mCallingUid;
    mIn.setDataCapacity(256);
    mOut.setDataCapacity(256);
}
@@ -987,6 +993,7 @@ status_t IPCThreadState::executeCommand(int32_t cmd)
            
            mCallingPid = tr.sender_pid;
            mCallingUid = tr.sender_euid;
            mOrigCallingUid = tr.sender_euid;
            
            int curPrio = getpriority(PRIO_PROCESS, mMyThreadId);
            if (gDisableBackgroundScheduling) {
@@ -1045,6 +1052,7 @@ status_t IPCThreadState::executeCommand(int32_t cmd)
            
            mCallingPid = origPid;
            mCallingUid = origUid;
            mOrigCallingUid = origUid;

            IF_LOG_TRANSACTIONS() {
                TextOutput::Bundle _b(alog);