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

Commit 49805052 authored by Ashutosh Joshi's avatar Ashutosh Joshi Committed by android-build-merger
Browse files

Merge \\"Add state for loading/unloading apps\\" into nyc-mr1-dev am: a980cba4

am: f4ba21c4

Change-Id: I51c696280b4fd322cde7f4701bbf6b0042a7ab3e
parents 6e4d0a23 f4ba21c4
Loading
Loading
Loading
Loading
+53 −27
Original line number Diff line number Diff line
@@ -16,6 +16,11 @@

package android.hardware.location;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -53,10 +58,14 @@ public class ContextHubService extends IContextHubService.Stub {
    private static final int PRE_LOADED_APP_MEM_REQ = 0;

    private static final int MSG_HEADER_SIZE = 4;
    private static final int MSG_FIELD_TYPE = 0;
    private static final int MSG_FIELD_VERSION = 1;
    private static final int MSG_FIELD_HUB_HANDLE = 2;
    private static final int MSG_FIELD_APP_INSTANCE = 3;
    private static final int HEADER_FIELD_MSG_TYPE = 0;
    private static final int HEADER_FIELD_MSG_VERSION = 1;
    private static final int HEADER_FIELD_HUB_HANDLE = 2;
    private static final int HEADER_FIELD_APP_INSTANCE = 3;

    private static final int HEADER_FIELD_LOAD_APP_ID_LO = MSG_HEADER_SIZE;
    private static final int HEADER_FIELD_LOAD_APP_ID_HI = MSG_HEADER_SIZE + 1;
    private static final int MSG_LOAD_APP_HEADER_SIZE = MSG_HEADER_SIZE + 2;

    private static final int OS_APP_INSTANCE = -1;

@@ -146,11 +155,16 @@ public class ContextHubService extends IContextHubService.Stub {
            return -1;
        }

        int[] msgHeader = new int[MSG_HEADER_SIZE];
        msgHeader[MSG_FIELD_HUB_HANDLE] = contextHubHandle;
        msgHeader[MSG_FIELD_APP_INSTANCE] = OS_APP_INSTANCE;
        msgHeader[MSG_FIELD_VERSION] = 0;
        msgHeader[MSG_FIELD_TYPE] = MSG_LOAD_NANO_APP;
        int[] msgHeader = new int[MSG_LOAD_APP_HEADER_SIZE];
        msgHeader[HEADER_FIELD_HUB_HANDLE] = contextHubHandle;
        msgHeader[HEADER_FIELD_APP_INSTANCE] = OS_APP_INSTANCE;
        msgHeader[HEADER_FIELD_MSG_VERSION] = 0;
        msgHeader[HEADER_FIELD_MSG_TYPE] = MSG_LOAD_NANO_APP;

        long appId = app.getAppId();

        msgHeader[HEADER_FIELD_LOAD_APP_ID_LO] = (int)(appId & 0xFFFFFFFF);
        msgHeader[HEADER_FIELD_LOAD_APP_ID_HI] = (int)((appId >> 32) & 0xFFFFFFFF);

        if (nativeSendMessage(msgHeader, app.getAppBinary()) != 0) {
            return -1;
@@ -169,12 +183,14 @@ public class ContextHubService extends IContextHubService.Stub {

        // Call Native interface here
        int[] msgHeader = new int[MSG_HEADER_SIZE];
        msgHeader[MSG_FIELD_HUB_HANDLE] = ANY_HUB;
        msgHeader[MSG_FIELD_APP_INSTANCE] = OS_APP_INSTANCE;
        msgHeader[MSG_FIELD_VERSION] = 0;
        msgHeader[MSG_FIELD_TYPE] = MSG_UNLOAD_NANO_APP;
        msgHeader[HEADER_FIELD_HUB_HANDLE] = ANY_HUB;
        msgHeader[HEADER_FIELD_APP_INSTANCE] = nanoAppInstanceHandle;
        msgHeader[HEADER_FIELD_MSG_VERSION] = 0;
        msgHeader[HEADER_FIELD_MSG_TYPE] = MSG_UNLOAD_NANO_APP;

        if (nativeSendMessage(msgHeader, null) != 0) {
        byte msg[] = new byte[0];

        if (nativeSendMessage(msgHeader, msg) != 0) {
            return -1;
        }

@@ -222,10 +238,10 @@ public class ContextHubService extends IContextHubService.Stub {
        checkPermissions();

        int[] msgHeader = new int[MSG_HEADER_SIZE];
        msgHeader[MSG_FIELD_HUB_HANDLE] = hubHandle;
        msgHeader[MSG_FIELD_APP_INSTANCE] = nanoAppHandle;
        msgHeader[MSG_FIELD_VERSION] = msg.getVersion();
        msgHeader[MSG_FIELD_TYPE] = msg.getMsgType();
        msgHeader[HEADER_FIELD_HUB_HANDLE] = hubHandle;
        msgHeader[HEADER_FIELD_APP_INSTANCE] = nanoAppHandle;
        msgHeader[HEADER_FIELD_MSG_VERSION] = msg.getVersion();
        msgHeader[HEADER_FIELD_MSG_TYPE] = msg.getMsgType();

        return nativeSendMessage(msgHeader, msg.getData());
    }
@@ -269,15 +285,17 @@ public class ContextHubService extends IContextHubService.Stub {
            Log.v(TAG, "No message callbacks registered.");
            return 0;
        }
        ContextHubMessage message =
                new ContextHubMessage(header[MSG_FIELD_TYPE], header[MSG_FIELD_VERSION], data);

        ContextHubMessage msg = new ContextHubMessage(header[HEADER_FIELD_MSG_TYPE],
                                                      header[HEADER_FIELD_MSG_VERSION],
                                                      data);
        for (int i = 0; i < callbacksCount; ++i) {
            IContextHubCallback callback = mCallbacksList.getBroadcastItem(i);
            try {
                callback.onMessageReceipt(
                        header[MSG_FIELD_HUB_HANDLE],
                        header[MSG_FIELD_APP_INSTANCE],
                        message);
                        header[HEADER_FIELD_HUB_HANDLE],
                        header[HEADER_FIELD_APP_INSTANCE],
                        msg);
            } catch (RemoteException e) {
                Log.i(TAG, "Exception (" + e + ") calling remote callback (" + callback + ").");
                continue;
@@ -308,12 +326,20 @@ public class ContextHubService extends IContextHubService.Stub {
        return 0;
    }

    private int deleteAppInstance(int appInstanceHandle) {
        if (mNanoAppHash.remove(appInstanceHandle) == null) {
            return -1;
        }

        return 0;
    }

    private void sendVrStateChangeMessageToApp(NanoAppInstanceInfo app, boolean vrModeEnabled) {
        int[] msgHeader = new int[MSG_HEADER_SIZE];
        msgHeader[MSG_FIELD_TYPE] = 0;
        msgHeader[MSG_FIELD_VERSION] = 0;
        msgHeader[MSG_FIELD_HUB_HANDLE] = ANY_HUB;
        msgHeader[MSG_FIELD_APP_INSTANCE] = app.getHandle();
        msgHeader[HEADER_FIELD_MSG_TYPE] = 0;
        msgHeader[HEADER_FIELD_MSG_VERSION] = 0;
        msgHeader[HEADER_FIELD_HUB_HANDLE] = ANY_HUB;
        msgHeader[HEADER_FIELD_APP_INSTANCE] = app.getHandle();

        byte[] data = new byte[1];
        data[0] = (byte) ((vrModeEnabled) ? 1 : 0);
+502 −91

File changed.

Preview size limit exceeded, changes collapsed.