blob: 981650dcb6b6873eb98e093d47f8194bff8e3cf9 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.base.library_loader;
import androidx.annotation.NonNull;
/**
* Mockable stub for all native methods in Linker.
*
* This functionality is usually generated from @NativeMethods, which cannot be used for the
* auxiliary native library used by classes in Linker and other classes in this package.
*/
class LinkerJni implements Linker.Natives {
@Override
public void findMemoryRegionAtRandomAddress(@NonNull Linker.LibInfo libInfo) {
nativeFindMemoryRegionAtRandomAddress(libInfo);
}
@Override
public void reserveMemoryForLibrary(@NonNull Linker.LibInfo libInfo) {
nativeReserveMemoryForLibrary(libInfo);
}
@Override
public boolean findRegionReservedByWebViewZygote(@NonNull Linker.LibInfo libInfo) {
return nativeFindRegionReservedByWebViewZygote(libInfo);
}
@Override
public boolean loadLibrary(
String libFilePath, Linker.LibInfo libInfo, boolean spawnRelroRegion) {
return nativeLoadLibrary(libFilePath, libInfo, spawnRelroRegion);
}
@Override
public boolean useRelros(long localLoadAddress, Linker.LibInfo remoteLibInfo) {
return nativeUseRelros(localLoadAddress, remoteLibInfo);
}
@Override
public int getRelroSharingResult() {
return nativeGetRelroSharingResult();
}
// Does not use JNI Generator because the native side is in libchromium_linker.so rather
// libmonochrome.so
private static native void nativeFindMemoryRegionAtRandomAddress(
@NonNull Linker.LibInfo libInfo);
private static native void nativeReserveMemoryForLibrary(@NonNull Linker.LibInfo libInfo);
private static native boolean nativeFindRegionReservedByWebViewZygote(
@NonNull Linker.LibInfo libInfo);
private static native boolean nativeLoadLibrary(
String libFilePath, Linker.LibInfo libInfo, boolean spawnRelroRegion);
private static native boolean nativeUseRelros(
long localLoadAddress, Linker.LibInfo remoteLibInfo);
private static native int nativeGetRelroSharingResult();
}