Merge "AArch64: Use long for pointers in App/Backup"

This commit is contained in:
Narayan Kamath
2014-01-08 11:54:29 +00:00
committed by Gerrit Code Review
10 changed files with 138 additions and 140 deletions

View File

@@ -76,7 +76,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
private NativeContentView mNativeContentView; private NativeContentView mNativeContentView;
private InputMethodManager mIMM; private InputMethodManager mIMM;
private int mNativeHandle; private long mNativeHandle;
private InputQueue mCurInputQueue; private InputQueue mCurInputQueue;
private SurfaceHolder mCurSurfaceHolder; private SurfaceHolder mCurSurfaceHolder;
@@ -91,27 +91,26 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
private boolean mDestroyed; private boolean mDestroyed;
private native int loadNativeCode(String path, String funcname, MessageQueue queue, private native long loadNativeCode(String path, String funcname, MessageQueue queue,
String internalDataPath, String obbPath, String externalDataPath, int sdkVersion, String internalDataPath, String obbPath, String externalDataPath, int sdkVersion,
AssetManager assetMgr, byte[] savedState); AssetManager assetMgr, byte[] savedState);
private native void unloadNativeCode(int handle); private native void unloadNativeCode(long handle);
private native void onStartNative(long handle);
private native void onStartNative(int handle); private native void onResumeNative(long handle);
private native void onResumeNative(int handle); private native byte[] onSaveInstanceStateNative(long handle);
private native byte[] onSaveInstanceStateNative(int handle); private native void onPauseNative(long handle);
private native void onPauseNative(int handle); private native void onStopNative(long handle);
private native void onStopNative(int handle); private native void onConfigurationChangedNative(long handle);
private native void onConfigurationChangedNative(int handle); private native void onLowMemoryNative(long handle);
private native void onLowMemoryNative(int handle); private native void onWindowFocusChangedNative(long handle, boolean focused);
private native void onWindowFocusChangedNative(int handle, boolean focused); private native void onSurfaceCreatedNative(long handle, Surface surface);
private native void onSurfaceCreatedNative(int handle, Surface surface); private native void onSurfaceChangedNative(long handle, Surface surface,
private native void onSurfaceChangedNative(int handle, Surface surface,
int format, int width, int height); int format, int width, int height);
private native void onSurfaceRedrawNeededNative(int handle, Surface surface); private native void onSurfaceRedrawNeededNative(long handle, Surface surface);
private native void onSurfaceDestroyedNative(int handle); private native void onSurfaceDestroyedNative(long handle);
private native void onInputQueueCreatedNative(int handle, int queuePtr); private native void onInputQueueCreatedNative(long handle, long queuePtr);
private native void onInputQueueDestroyedNative(int handle, int queuePtr); private native void onInputQueueDestroyedNative(long handle, long queuePtr);
private native void onContentRectChangedNative(int handle, int x, int y, int w, int h); private native void onContentRectChangedNative(long handle, int x, int y, int w, int h);
static class NativeContentView extends View { static class NativeContentView extends View {
NativeActivity mActivity; NativeActivity mActivity;

View File

@@ -59,7 +59,7 @@ import java.io.IOException;
* }</pre> * }</pre>
*/ */
public class BackupDataInput { public class BackupDataInput {
int mBackupReader; long mBackupReader;
private EntityHeader mHeader = new EntityHeader(); private EntityHeader mHeader = new EntityHeader();
private boolean mHeaderReady; private boolean mHeaderReady;
@@ -185,10 +185,10 @@ public class BackupDataInput {
} }
} }
private native static int ctor(FileDescriptor fd); private native static long ctor(FileDescriptor fd);
private native static void dtor(int mBackupReader); private native static void dtor(long mBackupReader);
private native int readNextHeader_native(int mBackupReader, EntityHeader entity); private native int readNextHeader_native(long mBackupReader, EntityHeader entity);
private native int readEntityData_native(int mBackupReader, byte[] data, int offset, int size); private native int readEntityData_native(long mBackupReader, byte[] data, int offset, int size);
private native int skipEntityData_native(int mBackupReader); private native int skipEntityData_native(long mBackupReader);
} }

View File

@@ -62,7 +62,7 @@ import java.io.IOException;
* @see BackupAgent * @see BackupAgent
*/ */
public class BackupDataOutput { public class BackupDataOutput {
int mBackupWriter; long mBackupWriter;
/** @hide */ /** @hide */
public BackupDataOutput(FileDescriptor fd) { public BackupDataOutput(FileDescriptor fd) {
@@ -121,11 +121,11 @@ public class BackupDataOutput {
} }
} }
private native static int ctor(FileDescriptor fd); private native static long ctor(FileDescriptor fd);
private native static void dtor(int mBackupWriter); private native static void dtor(long mBackupWriter);
private native static int writeEntityHeader_native(int mBackupWriter, String key, int dataSize); private native static int writeEntityHeader_native(long mBackupWriter, String key, int dataSize);
private native static int writeEntityData_native(int mBackupWriter, byte[] data, int size); private native static int writeEntityData_native(long mBackupWriter, byte[] data, int size);
private native static void setKeyPrefix_native(int mBackupWriter, String keyPrefix); private native static void setKeyPrefix_native(long mBackupWriter, String keyPrefix);
} }

View File

@@ -29,7 +29,7 @@ import java.io.FileDescriptor;
class FileBackupHelperBase { class FileBackupHelperBase {
private static final String TAG = "FileBackupHelperBase"; private static final String TAG = "FileBackupHelperBase";
int mPtr; long mPtr;
Context mContext; Context mContext;
boolean mExceptionLogged; boolean mExceptionLogged;
@@ -115,14 +115,13 @@ class FileBackupHelperBase {
return false; return false;
} }
private static native int ctor(); private static native long ctor();
private static native void dtor(int ptr); private static native void dtor(long ptr);
native private static int performBackup_native(FileDescriptor oldState, native private static int performBackup_native(FileDescriptor oldState,
int data, FileDescriptor newState, String[] files, String[] keys); long data, FileDescriptor newState, String[] files, String[] keys);
private static native int writeFile_native(long ptr, String filename, long backupReader);
private static native int writeFile_native(int ptr, String filename, int backupReader); private static native int writeSnapshot_native(long ptr, FileDescriptor fd);
private static native int writeSnapshot_native(int ptr, FileDescriptor fd);
} }

View File

@@ -241,10 +241,10 @@ static int mainWorkCallback(int fd, int events, void* data) {
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
static jint static jlong
loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName, loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName,
jobject messageQueue, jstring internalDataDir, jstring obbDir, jobject messageQueue, jstring internalDataDir, jstring obbDir,
jstring externalDataDir, int sdkVersion, jstring externalDataDir, jint sdkVersion,
jobject jAssetMgr, jbyteArray savedState) jobject jAssetMgr, jbyteArray savedState)
{ {
LOG_TRACE("loadNativeCode_native"); LOG_TRACE("loadNativeCode_native");
@@ -338,11 +338,11 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName
} }
} }
return (jint)code; return (jlong)code;
} }
static void static void
unloadNativeCode_native(JNIEnv* env, jobject clazz, jint handle) unloadNativeCode_native(JNIEnv* env, jobject clazz, jlong handle)
{ {
LOG_TRACE("unloadNativeCode_native"); LOG_TRACE("unloadNativeCode_native");
if (handle != 0) { if (handle != 0) {
@@ -352,7 +352,7 @@ unloadNativeCode_native(JNIEnv* env, jobject clazz, jint handle)
} }
static void static void
onStart_native(JNIEnv* env, jobject clazz, jint handle) onStart_native(JNIEnv* env, jobject clazz, jlong handle)
{ {
LOG_TRACE("onStart_native"); LOG_TRACE("onStart_native");
if (handle != 0) { if (handle != 0) {
@@ -364,7 +364,7 @@ onStart_native(JNIEnv* env, jobject clazz, jint handle)
} }
static void static void
onResume_native(JNIEnv* env, jobject clazz, jint handle) onResume_native(JNIEnv* env, jobject clazz, jlong handle)
{ {
LOG_TRACE("onResume_native"); LOG_TRACE("onResume_native");
if (handle != 0) { if (handle != 0) {
@@ -376,7 +376,7 @@ onResume_native(JNIEnv* env, jobject clazz, jint handle)
} }
static jbyteArray static jbyteArray
onSaveInstanceState_native(JNIEnv* env, jobject clazz, jint handle) onSaveInstanceState_native(JNIEnv* env, jobject clazz, jlong handle)
{ {
LOG_TRACE("onSaveInstanceState_native"); LOG_TRACE("onSaveInstanceState_native");
@@ -403,7 +403,7 @@ onSaveInstanceState_native(JNIEnv* env, jobject clazz, jint handle)
} }
static void static void
onPause_native(JNIEnv* env, jobject clazz, jint handle) onPause_native(JNIEnv* env, jobject clazz, jlong handle)
{ {
LOG_TRACE("onPause_native"); LOG_TRACE("onPause_native");
if (handle != 0) { if (handle != 0) {
@@ -415,7 +415,7 @@ onPause_native(JNIEnv* env, jobject clazz, jint handle)
} }
static void static void
onStop_native(JNIEnv* env, jobject clazz, jint handle) onStop_native(JNIEnv* env, jobject clazz, jlong handle)
{ {
LOG_TRACE("onStop_native"); LOG_TRACE("onStop_native");
if (handle != 0) { if (handle != 0) {
@@ -427,7 +427,7 @@ onStop_native(JNIEnv* env, jobject clazz, jint handle)
} }
static void static void
onConfigurationChanged_native(JNIEnv* env, jobject clazz, jint handle) onConfigurationChanged_native(JNIEnv* env, jobject clazz, jlong handle)
{ {
LOG_TRACE("onConfigurationChanged_native"); LOG_TRACE("onConfigurationChanged_native");
if (handle != 0) { if (handle != 0) {
@@ -439,7 +439,7 @@ onConfigurationChanged_native(JNIEnv* env, jobject clazz, jint handle)
} }
static void static void
onLowMemory_native(JNIEnv* env, jobject clazz, jint handle) onLowMemory_native(JNIEnv* env, jobject clazz, jlong handle)
{ {
LOG_TRACE("onLowMemory_native"); LOG_TRACE("onLowMemory_native");
if (handle != 0) { if (handle != 0) {
@@ -451,7 +451,7 @@ onLowMemory_native(JNIEnv* env, jobject clazz, jint handle)
} }
static void static void
onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jint handle, jboolean focused) onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jlong handle, jboolean focused)
{ {
LOG_TRACE("onWindowFocusChanged_native"); LOG_TRACE("onWindowFocusChanged_native");
if (handle != 0) { if (handle != 0) {
@@ -463,7 +463,7 @@ onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jint handle, jboolean fo
} }
static void static void
onSurfaceCreated_native(JNIEnv* env, jobject clazz, jint handle, jobject surface) onSurfaceCreated_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface)
{ {
LOG_TRACE("onSurfaceCreated_native"); LOG_TRACE("onSurfaceCreated_native");
if (handle != 0) { if (handle != 0) {
@@ -483,7 +483,7 @@ static int32_t getWindowProp(ANativeWindow* window, int what) {
} }
static void static void
onSurfaceChanged_native(JNIEnv* env, jobject clazz, jint handle, jobject surface, onSurfaceChanged_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface,
jint format, jint width, jint height) jint format, jint width, jint height)
{ {
LOG_TRACE("onSurfaceChanged_native"); LOG_TRACE("onSurfaceChanged_native");
@@ -524,7 +524,7 @@ onSurfaceChanged_native(JNIEnv* env, jobject clazz, jint handle, jobject surface
} }
static void static void
onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jint handle) onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jlong handle)
{ {
LOG_TRACE("onSurfaceRedrawNeeded_native"); LOG_TRACE("onSurfaceRedrawNeeded_native");
if (handle != 0) { if (handle != 0) {
@@ -536,7 +536,7 @@ onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jint handle)
} }
static void static void
onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jobject surface) onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface)
{ {
LOG_TRACE("onSurfaceDestroyed_native"); LOG_TRACE("onSurfaceDestroyed_native");
if (handle != 0) { if (handle != 0) {
@@ -550,7 +550,7 @@ onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jobject surfa
} }
static void static void
onInputQueueCreated_native(JNIEnv* env, jobject clazz, jint handle, jint queuePtr) onInputQueueCreated_native(JNIEnv* env, jobject clazz, jlong handle, jlong queuePtr)
{ {
LOG_TRACE("onInputChannelCreated_native"); LOG_TRACE("onInputChannelCreated_native");
if (handle != 0) { if (handle != 0) {
@@ -563,7 +563,7 @@ onInputQueueCreated_native(JNIEnv* env, jobject clazz, jint handle, jint queuePt
} }
static void static void
onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jint queuePtr) onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jlong handle, jlong queuePtr)
{ {
LOG_TRACE("onInputChannelDestroyed_native"); LOG_TRACE("onInputChannelDestroyed_native");
if (handle != 0) { if (handle != 0) {
@@ -576,7 +576,7 @@ onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jint queue
} }
static void static void
onContentRectChanged_native(JNIEnv* env, jobject clazz, jint handle, onContentRectChanged_native(JNIEnv* env, jobject clazz, jlong handle,
jint x, jint y, jint w, jint h) jint x, jint y, jint w, jint h)
{ {
LOG_TRACE("onContentRectChanged_native"); LOG_TRACE("onContentRectChanged_native");
@@ -594,26 +594,26 @@ onContentRectChanged_native(JNIEnv* env, jobject clazz, jint handle,
} }
static const JNINativeMethod g_methods[] = { static const JNINativeMethod g_methods[] = {
{ "loadNativeCode", "(Ljava/lang/String;Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)I", { "loadNativeCode", "(Ljava/lang/String;Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)J",
(void*)loadNativeCode_native }, (void*)loadNativeCode_native },
{ "unloadNativeCode", "(I)V", (void*)unloadNativeCode_native }, { "unloadNativeCode", "(J)V", (void*)unloadNativeCode_native },
{ "onStartNative", "(I)V", (void*)onStart_native }, { "onStartNative", "(J)V", (void*)onStart_native },
{ "onResumeNative", "(I)V", (void*)onResume_native }, { "onResumeNative", "(J)V", (void*)onResume_native },
{ "onSaveInstanceStateNative", "(I)[B", (void*)onSaveInstanceState_native }, { "onSaveInstanceStateNative", "(J)[B", (void*)onSaveInstanceState_native },
{ "onPauseNative", "(I)V", (void*)onPause_native }, { "onPauseNative", "(J)V", (void*)onPause_native },
{ "onStopNative", "(I)V", (void*)onStop_native }, { "onStopNative", "(J)V", (void*)onStop_native },
{ "onConfigurationChangedNative", "(I)V", (void*)onConfigurationChanged_native }, { "onConfigurationChangedNative", "(J)V", (void*)onConfigurationChanged_native },
{ "onLowMemoryNative", "(I)V", (void*)onLowMemory_native }, { "onLowMemoryNative", "(J)V", (void*)onLowMemory_native },
{ "onWindowFocusChangedNative", "(IZ)V", (void*)onWindowFocusChanged_native }, { "onWindowFocusChangedNative", "(JZ)V", (void*)onWindowFocusChanged_native },
{ "onSurfaceCreatedNative", "(ILandroid/view/Surface;)V", (void*)onSurfaceCreated_native }, { "onSurfaceCreatedNative", "(JLandroid/view/Surface;)V", (void*)onSurfaceCreated_native },
{ "onSurfaceChangedNative", "(ILandroid/view/Surface;III)V", (void*)onSurfaceChanged_native }, { "onSurfaceChangedNative", "(JLandroid/view/Surface;III)V", (void*)onSurfaceChanged_native },
{ "onSurfaceRedrawNeededNative", "(ILandroid/view/Surface;)V", (void*)onSurfaceRedrawNeeded_native }, { "onSurfaceRedrawNeededNative", "(JLandroid/view/Surface;)V", (void*)onSurfaceRedrawNeeded_native },
{ "onSurfaceDestroyedNative", "(I)V", (void*)onSurfaceDestroyed_native }, { "onSurfaceDestroyedNative", "(J)V", (void*)onSurfaceDestroyed_native },
{ "onInputQueueCreatedNative", "(II)V", { "onInputQueueCreatedNative", "(JJ)V",
(void*)onInputQueueCreated_native }, (void*)onInputQueueCreated_native },
{ "onInputQueueDestroyedNative", "(II)V", { "onInputQueueDestroyedNative", "(JJ)V",
(void*)onInputQueueDestroyed_native }, (void*)onInputQueueDestroyed_native },
{ "onContentRectChangedNative", "(IIIII)V", (void*)onContentRectChanged_native }, { "onContentRectChangedNative", "(JIIII)V", (void*)onContentRectChanged_native },
}; };
static const char* const kNativeActivityPathName = "android/app/NativeActivity"; static const char* const kNativeActivityPathName = "android/app/NativeActivity";

View File

@@ -70,7 +70,7 @@ static struct {
* path: absolute path to the file to be saved * path: absolute path to the file to be saved
* dataOutput: the BackupDataOutput object that we're saving into * dataOutput: the BackupDataOutput object that we're saving into
*/ */
static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj, static jint backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
jstring domainObj, jstring linkdomain, jstring domainObj, jstring linkdomain,
jstring rootpathObj, jstring pathObj, jobject dataOutputObj) { jstring rootpathObj, jstring pathObj, jobject dataOutputObj) {
int ret; int ret;
@@ -92,22 +92,22 @@ static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
if (packagenamechars) env->ReleaseStringUTFChars(packageNameObj, packagenamechars); if (packagenamechars) env->ReleaseStringUTFChars(packageNameObj, packagenamechars);
// Extract the data output fd // Extract the data output fd
BackupDataWriter* writer = (BackupDataWriter*) env->GetIntField(dataOutputObj, BackupDataWriter* writer = (BackupDataWriter*) env->GetLongField(dataOutputObj,
sBackupDataOutput.mBackupWriter); sBackupDataOutput.mBackupWriter);
// Validate // Validate
if (!writer) { if (!writer) {
ALOGE("No output stream provided [%s]", path.string()); ALOGE("No output stream provided [%s]", path.string());
return -1; return (jint) -1;
} }
if (path.length() < rootpath.length()) { if (path.length() < rootpath.length()) {
ALOGE("file path [%s] shorter than root path [%s]", ALOGE("file path [%s] shorter than root path [%s]",
path.string(), rootpath.string()); path.string(), rootpath.string());
return -1; return (jint) -1;
} }
return write_tarfile(packageName, domain, rootpath, path, writer); return (jint) write_tarfile(packageName, domain, rootpath, path, writer);
} }
static const JNINativeMethod g_methods[] = { static const JNINativeMethod g_methods[] = {
@@ -121,7 +121,7 @@ int register_android_app_backup_FullBackup(JNIEnv* env)
jclass clazz = env->FindClass("android/app/backup/BackupDataOutput"); jclass clazz = env->FindClass("android/app/backup/BackupDataOutput");
LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupDataOutput"); LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupDataOutput");
sBackupDataOutput.mBackupWriter = env->GetFieldID(clazz, "mBackupWriter", "I"); sBackupDataOutput.mBackupWriter = env->GetFieldID(clazz, "mBackupWriter", "J");
LOG_FATAL_IF(sBackupDataOutput.mBackupwriter == NULL, LOG_FATAL_IF(sBackupDataOutput.mBackupwriter == NULL,
"Unable to find mBackupWriter field in android.app.backup.BackupDataOutput"); "Unable to find mBackupWriter field in android.app.backup.BackupDataOutput");

View File

@@ -29,25 +29,25 @@ namespace android
static jfieldID s_keyField = 0; static jfieldID s_keyField = 0;
static jfieldID s_dataSizeField = 0; static jfieldID s_dataSizeField = 0;
static int static jlong
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor) ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
{ {
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (fd == -1) { if (fd == -1) {
return NULL; return (jlong)NULL;
} }
return (int)new BackupDataReader(fd); return (jlong)new BackupDataReader(fd);
} }
static void static void
dtor_native(JNIEnv* env, jobject clazz, int r) dtor_native(JNIEnv* env, jobject clazz, jlong r)
{ {
delete (BackupDataReader*)r; delete (BackupDataReader*)r;
} }
static jint static jint
readNextHeader_native(JNIEnv* env, jobject clazz, int r, jobject entity) readNextHeader_native(JNIEnv* env, jobject clazz, jlong r, jobject entity)
{ {
int err; int err;
bool done; bool done;
@@ -89,7 +89,7 @@ readNextHeader_native(JNIEnv* env, jobject clazz, int r, jobject entity)
} }
static jint static jint
readEntityData_native(JNIEnv* env, jobject clazz, int r, jbyteArray data, int offset, int size) readEntityData_native(JNIEnv* env, jobject clazz, jlong r, jbyteArray data, jint offset, jint size)
{ {
int err; int err;
BackupDataReader* reader = (BackupDataReader*)r; BackupDataReader* reader = (BackupDataReader*)r;
@@ -112,7 +112,7 @@ readEntityData_native(JNIEnv* env, jobject clazz, int r, jbyteArray data, int of
} }
static jint static jint
skipEntityData_native(JNIEnv* env, jobject clazz, int r) skipEntityData_native(JNIEnv* env, jobject clazz, jlong r)
{ {
int err; int err;
BackupDataReader* reader = (BackupDataReader*)r; BackupDataReader* reader = (BackupDataReader*)r;
@@ -123,12 +123,12 @@ skipEntityData_native(JNIEnv* env, jobject clazz, int r)
} }
static const JNINativeMethod g_methods[] = { static const JNINativeMethod g_methods[] = {
{ "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native }, { "ctor", "(Ljava/io/FileDescriptor;)J", (void*)ctor_native },
{ "dtor", "(I)V", (void*)dtor_native }, { "dtor", "(J)V", (void*)dtor_native },
{ "readNextHeader_native", "(ILandroid/app/backup/BackupDataInput$EntityHeader;)I", { "readNextHeader_native", "(JLandroid/app/backup/BackupDataInput$EntityHeader;)I",
(void*)readNextHeader_native }, (void*)readNextHeader_native },
{ "readEntityData_native", "(I[BII)I", (void*)readEntityData_native }, { "readEntityData_native", "(J[BII)I", (void*)readEntityData_native },
{ "skipEntityData_native", "(I)I", (void*)skipEntityData_native }, { "skipEntityData_native", "(J)I", (void*)skipEntityData_native },
}; };
int register_android_backup_BackupDataInput(JNIEnv* env) int register_android_backup_BackupDataInput(JNIEnv* env)

View File

@@ -25,25 +25,25 @@
namespace android namespace android
{ {
static int static jlong
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor) ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
{ {
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (fd == -1) { if (fd == -1) {
return NULL; return (jlong)NULL;
} }
return (int)new BackupDataWriter(fd); return (jlong)new BackupDataWriter(fd);
} }
static void static void
dtor_native(JNIEnv* env, jobject clazz, int w) dtor_native(JNIEnv* env, jobject clazz, jlong w)
{ {
delete (BackupDataWriter*)w; delete (BackupDataWriter*)w;
} }
static jint static jint
writeEntityHeader_native(JNIEnv* env, jobject clazz, int w, jstring key, int dataSize) writeEntityHeader_native(JNIEnv* env, jobject clazz, jlong w, jstring key, jint dataSize)
{ {
int err; int err;
BackupDataWriter* writer = (BackupDataWriter*)w; BackupDataWriter* writer = (BackupDataWriter*)w;
@@ -56,11 +56,11 @@ writeEntityHeader_native(JNIEnv* env, jobject clazz, int w, jstring key, int dat
env->ReleaseStringUTFChars(key, keyUTF); env->ReleaseStringUTFChars(key, keyUTF);
return err; return (jint)err;
} }
static jint static jint
writeEntityData_native(JNIEnv* env, jobject clazz, int w, jbyteArray data, int size) writeEntityData_native(JNIEnv* env, jobject clazz, jlong w, jbyteArray data, jint size)
{ {
int err; int err;
BackupDataWriter* writer = (BackupDataWriter*)w; BackupDataWriter* writer = (BackupDataWriter*)w;
@@ -79,11 +79,11 @@ writeEntityData_native(JNIEnv* env, jobject clazz, int w, jbyteArray data, int s
env->ReleaseByteArrayElements(data, dataBytes, JNI_ABORT); env->ReleaseByteArrayElements(data, dataBytes, JNI_ABORT);
return err; return (jint)err;
} }
static void static void
setKeyPrefix_native(JNIEnv* env, jobject clazz, int w, jstring keyPrefixObj) setKeyPrefix_native(JNIEnv* env, jobject clazz, jlong w, jstring keyPrefixObj)
{ {
int err; int err;
BackupDataWriter* writer = (BackupDataWriter*)w; BackupDataWriter* writer = (BackupDataWriter*)w;
@@ -97,11 +97,11 @@ setKeyPrefix_native(JNIEnv* env, jobject clazz, int w, jstring keyPrefixObj)
} }
static const JNINativeMethod g_methods[] = { static const JNINativeMethod g_methods[] = {
{ "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native }, { "ctor", "(Ljava/io/FileDescriptor;)J", (void*)ctor_native },
{ "dtor", "(I)V", (void*)dtor_native }, { "dtor", "(J)V", (void*)dtor_native },
{ "writeEntityHeader_native", "(ILjava/lang/String;I)I", (void*)writeEntityHeader_native }, { "writeEntityHeader_native", "(JLjava/lang/String;I)I", (void*)writeEntityHeader_native },
{ "writeEntityData_native", "(I[BI)I", (void*)writeEntityData_native }, { "writeEntityData_native", "(J[BI)I", (void*)writeEntityData_native },
{ "setKeyPrefix_native", "(ILjava/lang/String;)V", (void*)setKeyPrefix_native }, { "setKeyPrefix_native", "(JLjava/lang/String;)V", (void*)setKeyPrefix_native },
}; };
int register_android_backup_BackupDataOutput(JNIEnv* env) int register_android_backup_BackupDataOutput(JNIEnv* env)

View File

@@ -40,7 +40,7 @@ struct chunk_header_v1 {
static jfieldID s_chunkSizeField = 0; static jfieldID s_chunkSizeField = 0;
static jfieldID s_keyPrefixField = 0; static jfieldID s_keyPrefixField = 0;
static int static jint
readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj) readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
{ {
chunk_header_v1 flattenedHeader; chunk_header_v1 flattenedHeader;
@@ -52,7 +52,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
amt = read(fd, &flattenedHeader.headerSize, sizeof(flattenedHeader.headerSize)); amt = read(fd, &flattenedHeader.headerSize, sizeof(flattenedHeader.headerSize));
if (amt != sizeof(flattenedHeader.headerSize)) { if (amt != sizeof(flattenedHeader.headerSize)) {
return -1; return (jint) -1;
} }
int remainingHeader = flattenedHeader.headerSize - sizeof(flattenedHeader.headerSize); int remainingHeader = flattenedHeader.headerSize - sizeof(flattenedHeader.headerSize);
@@ -62,7 +62,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
if (remainingHeader > 0) { if (remainingHeader > 0) {
lseek(fd, remainingHeader, SEEK_CUR); lseek(fd, remainingHeader, SEEK_CUR);
// >0 means skip this chunk // >0 means skip this chunk
return 1; return (jint) 1;
} }
} }
@@ -70,7 +70,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize)); sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize));
if (amt <= 0) { if (amt <= 0) {
ALOGW("Failed reading chunk header"); ALOGW("Failed reading chunk header");
return -1; return (jint) -1;
} }
remainingHeader -= sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize); remainingHeader -= sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize);
@@ -80,7 +80,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
if (remainingHeader > 0) { if (remainingHeader > 0) {
lseek(fd, remainingHeader, SEEK_CUR); lseek(fd, remainingHeader, SEEK_CUR);
// >0 means skip this chunk // >0 means skip this chunk
return 1; return (jint) 1;
} }
} }
@@ -96,13 +96,13 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
remainingHeader < flattenedHeader.nameLength) { remainingHeader < flattenedHeader.nameLength) {
ALOGW("Malformed V1 header remainingHeader=%d dataSize=%d nameLength=%d", remainingHeader, ALOGW("Malformed V1 header remainingHeader=%d dataSize=%d nameLength=%d", remainingHeader,
flattenedHeader.dataSize, flattenedHeader.nameLength); flattenedHeader.dataSize, flattenedHeader.nameLength);
return -1; return (jint) -1;
} }
buf = keyPrefix.lockBuffer(flattenedHeader.nameLength); buf = keyPrefix.lockBuffer(flattenedHeader.nameLength);
if (buf == NULL) { if (buf == NULL) {
ALOGW("unable to allocate %d bytes", flattenedHeader.nameLength); ALOGW("unable to allocate %d bytes", flattenedHeader.nameLength);
return -1; return (jint) -1;
} }
amt = read(fd, buf, flattenedHeader.nameLength); amt = read(fd, buf, flattenedHeader.nameLength);
@@ -119,17 +119,17 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
env->SetIntField(headerObj, s_chunkSizeField, flattenedHeader.dataSize); env->SetIntField(headerObj, s_chunkSizeField, flattenedHeader.dataSize);
env->SetObjectField(headerObj, s_keyPrefixField, env->NewStringUTF(keyPrefix.string())); env->SetObjectField(headerObj, s_keyPrefixField, env->NewStringUTF(keyPrefix.string()));
return 0; return (jint) 0;
} }
static int static jint
skipChunk_native(JNIEnv* env, jobject clazz, jobject fdObj, jint bytesToSkip) skipChunk_native(JNIEnv* env, jobject clazz, jobject fdObj, jint bytesToSkip)
{ {
int fd = jniGetFDFromFileDescriptor(env, fdObj); int fd = jniGetFDFromFileDescriptor(env, fdObj);
lseek(fd, bytesToSkip, SEEK_CUR); lseek(fd, bytesToSkip, SEEK_CUR);
return 0; return (jint) 0;
} }
static int static int
@@ -139,7 +139,7 @@ padding_len(int len)
return len == 0 ? len : 4 - len; return len == 0 ? len : 4 - len;
} }
static int static jint
allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj) allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
{ {
int pos; int pos;
@@ -161,10 +161,10 @@ allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdO
lseek(fd, headerSize, SEEK_CUR); lseek(fd, headerSize, SEEK_CUR);
return pos; return (jint) pos;
} }
static int static jint
writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj, jint pos) writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj, jint pos)
{ {
int err; int err;
@@ -188,26 +188,26 @@ writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj,
lseek(fd, pos, SEEK_SET); lseek(fd, pos, SEEK_SET);
err = write(fd, &header, sizeof(chunk_header_v1)); err = write(fd, &header, sizeof(chunk_header_v1));
if (err != sizeof(chunk_header_v1)) { if (err != sizeof(chunk_header_v1)) {
return errno; return (jint) errno;
} }
buf = env->GetStringUTFChars(nameObj, NULL); buf = env->GetStringUTFChars(nameObj, NULL);
err = write(fd, buf, header.nameLength); err = write(fd, buf, header.nameLength);
env->ReleaseStringUTFChars(nameObj, buf); env->ReleaseStringUTFChars(nameObj, buf);
if (err != header.nameLength) { if (err != header.nameLength) {
return errno; return (jint) errno;
} }
if (namePadding != 0) { if (namePadding != 0) {
int zero = 0; int zero = 0;
err = write(fd, &zero, namePadding); err = write(fd, &zero, namePadding);
if (err != namePadding) { if (err != namePadding) {
return errno; return (jint) errno;
} }
} }
lseek(fd, prevPos, SEEK_SET); lseek(fd, prevPos, SEEK_SET);
return 0; return (jint) 0;
} }
static const JNINativeMethod g_methods[] = { static const JNINativeMethod g_methods[] = {

View File

@@ -25,20 +25,20 @@
namespace android namespace android
{ {
static int static jlong
ctor(JNIEnv* env, jobject clazz) ctor(JNIEnv* env, jobject clazz)
{ {
return (int)new RestoreHelperBase(); return (jlong)new RestoreHelperBase();
} }
static void static void
dtor(JNIEnv* env, jobject clazz, jint ptr) dtor(JNIEnv* env, jobject clazz, jlong ptr)
{ {
delete (RestoreHelperBase*)ptr; delete (RestoreHelperBase*)ptr;
} }
static int static jint
performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, int data, performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, jlong data,
jobject newState, jobjectArray files, jobjectArray keys) jobject newState, jobjectArray files, jobjectArray keys)
{ {
int err; int err;
@@ -72,12 +72,12 @@ performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, int data,
} }
free(keysUTF); free(keysUTF);
return err; return (jint) err;
} }
static int static jint
writeFile_native(JNIEnv* env, jobject clazz, jint ptr, jstring filenameObj, int backupReaderPtr) writeFile_native(JNIEnv* env, jobject clazz, jlong ptr, jstring filenameObj, jlong backupReaderPtr)
{ {
int err; int err;
RestoreHelperBase* restore = (RestoreHelperBase*)ptr; RestoreHelperBase* restore = (RestoreHelperBase*)ptr;
@@ -90,11 +90,11 @@ writeFile_native(JNIEnv* env, jobject clazz, jint ptr, jstring filenameObj, int
env->ReleaseStringUTFChars(filenameObj, filename); env->ReleaseStringUTFChars(filenameObj, filename);
return err; return (jint) err;
} }
static int static jint
writeSnapshot_native(JNIEnv* env, jobject clazz, jint ptr, jobject fileDescriptor) writeSnapshot_native(JNIEnv* env, jobject clazz, jlong ptr, jobject fileDescriptor)
{ {
int err; int err;
@@ -103,17 +103,17 @@ writeSnapshot_native(JNIEnv* env, jobject clazz, jint ptr, jobject fileDescripto
err = restore->WriteSnapshot(fd); err = restore->WriteSnapshot(fd);
return err; return (jint) err;
} }
static const JNINativeMethod g_methods[] = { static const JNINativeMethod g_methods[] = {
{ "ctor", "()I", (void*)ctor }, { "ctor", "()J", (void*)ctor },
{ "dtor", "(I)V", (void*)dtor }, { "dtor", "(J)V", (void*)dtor },
{ "performBackup_native", { "performBackup_native",
"(Ljava/io/FileDescriptor;ILjava/io/FileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)I", "(Ljava/io/FileDescriptor;JLjava/io/FileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)I",
(void*)performBackup_native }, (void*)performBackup_native },
{ "writeFile_native", "(ILjava/lang/String;I)I", (void*)writeFile_native }, { "writeFile_native", "(JLjava/lang/String;J)I", (void*)writeFile_native },
{ "writeSnapshot_native", "(ILjava/io/FileDescriptor;)I", (void*)writeSnapshot_native }, { "writeSnapshot_native", "(JLjava/io/FileDescriptor;)I", (void*)writeSnapshot_native },
}; };
int register_android_backup_FileBackupHelperBase(JNIEnv* env) int register_android_backup_FileBackupHelperBase(JNIEnv* env)