blob: f2a33e0f11f32f57faaad90acc5d1b8299aa201d [file]
// Copyright (C) 2019 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <jni.h>
#include <string>
#include <utility>
#include "icing/icing-search-engine.h"
#include "icing/jni/jni-cache.h"
#include "icing/jni/scoped-primitive-array-critical.h"
#include "icing/jni/scoped-utf-chars.h"
#include "icing/proto/document.pb.h"
#include "icing/proto/initialize.pb.h"
#include "icing/proto/optimize.pb.h"
#include "icing/proto/persist.pb.h"
#include "icing/proto/schema.pb.h"
#include "icing/proto/scoring.pb.h"
#include "icing/proto/search.pb.h"
#include "icing/proto/storage.pb.h"
#include "icing/proto/usage.pb.h"
#include "icing/util/logging.h"
#include "icing/util/status-macros.h"
#include <google/protobuf/message_lite.h>
namespace {
// JNI string constants
// Matches field name of IcingSearchEngine#nativePointer.
const char kNativePointerField[] = "nativePointer";
bool ParseProtoFromJniByteArray(JNIEnv* env, jbyteArray bytes,
google::protobuf::MessageLite* protobuf) {
icing::lib::ScopedPrimitiveArrayCritical<uint8_t> scoped_array(env, bytes);
return protobuf->ParseFromArray(scoped_array.data(), scoped_array.size());
}
jbyteArray SerializeProtoToJniByteArray(JNIEnv* env,
const google::protobuf::MessageLite& protobuf) {
int size = protobuf.ByteSizeLong();
jbyteArray ret = env->NewByteArray(size);
if (ret == nullptr) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to allocated bytes for jni protobuf";
return nullptr;
}
icing::lib::ScopedPrimitiveArrayCritical<uint8_t> scoped_array(env, ret);
protobuf.SerializeWithCachedSizesToArray(scoped_array.data());
return ret;
}
icing::lib::IcingSearchEngine* GetIcingSearchEnginePointer(JNIEnv* env,
jobject object) {
jclass cls = env->GetObjectClass(object);
jfieldID field_id = env->GetFieldID(cls, kNativePointerField, "J");
jlong native_pointer = env->GetLongField(object, field_id);
return reinterpret_cast<icing::lib::IcingSearchEngine*>(native_pointer);
}
} // namespace
extern "C" {
jint JNI_OnLoad(JavaVM* vm, void* reserved) {
JNIEnv* env;
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
ICING_LOG(icing::lib::ERROR) << "ERROR: GetEnv failed";
return JNI_ERR;
}
return JNI_VERSION_1_6;
}
JNIEXPORT jlong JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeCreate(
JNIEnv* env, jclass clazz, jbyteArray icing_search_engine_options_bytes) {
icing::lib::IcingSearchEngineOptions options;
if (!ParseProtoFromJniByteArray(env, icing_search_engine_options_bytes,
&options)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse IcingSearchEngineOptions in nativeCreate";
return 0;
}
std::unique_ptr<const icing::lib::JniCache> jni_cache;
#ifdef ICING_REVERSE_JNI_SEGMENTATION
ICING_ASSIGN_OR_RETURN(jni_cache, icing::lib::JniCache::Create(env), 0);
#endif // ICING_REVERSE_JNI_SEGMENTATION
icing::lib::IcingSearchEngine* icing =
new icing::lib::IcingSearchEngine(options, std::move(jni_cache));
return reinterpret_cast<jlong>(icing);
}
JNIEXPORT void JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeDestroy(
JNIEnv* env, jclass clazz, jobject object) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
delete icing;
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeInitialize(
JNIEnv* env, jclass clazz, jobject object) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::InitializeResultProto initialize_result_proto =
icing->Initialize();
return SerializeProtoToJniByteArray(env, initialize_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeSetSchema(
JNIEnv* env, jclass clazz, jobject object, jbyteArray schema_bytes,
jboolean ignore_errors_and_delete_documents) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::SchemaProto schema_proto;
if (!ParseProtoFromJniByteArray(env, schema_bytes, &schema_proto)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse SchemaProto in nativeSetSchema";
return nullptr;
}
icing::lib::SetSchemaResultProto set_schema_result_proto = icing->SetSchema(
std::move(schema_proto), ignore_errors_and_delete_documents);
return SerializeProtoToJniByteArray(env, set_schema_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetSchema(
JNIEnv* env, jclass clazz, jobject object) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::GetSchemaResultProto get_schema_result_proto = icing->GetSchema();
return SerializeProtoToJniByteArray(env, get_schema_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetSchemaType(
JNIEnv* env, jclass clazz, jobject object, jstring schema_type) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::ScopedUtfChars scoped_schema_type_chars(env, schema_type);
icing::lib::GetSchemaTypeResultProto get_schema_type_result_proto =
icing->GetSchemaType(scoped_schema_type_chars.c_str());
return SerializeProtoToJniByteArray(env, get_schema_type_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativePut(
JNIEnv* env, jclass clazz, jobject object, jbyteArray document_bytes) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::DocumentProto document_proto;
if (!ParseProtoFromJniByteArray(env, document_bytes, &document_proto)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse DocumentProto in nativePut";
return nullptr;
}
icing::lib::PutResultProto put_result_proto =
icing->Put(std::move(document_proto));
return SerializeProtoToJniByteArray(env, put_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeGet(
JNIEnv* env, jclass clazz, jobject object, jstring name_space, jstring uri,
jbyteArray result_spec_bytes) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::GetResultSpecProto get_result_spec;
if (!ParseProtoFromJniByteArray(env, result_spec_bytes, &get_result_spec)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse GetResultSpecProto in nativeGet";
return nullptr;
}
icing::lib::ScopedUtfChars scoped_name_space_chars(env, name_space);
icing::lib::ScopedUtfChars scoped_uri_chars(env, uri);
icing::lib::GetResultProto get_result_proto =
icing->Get(scoped_name_space_chars.c_str(), scoped_uri_chars.c_str(),
get_result_spec);
return SerializeProtoToJniByteArray(env, get_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeReportUsage(
JNIEnv* env, jclass clazz, jobject object, jbyteArray usage_report_bytes) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::UsageReport usage_report;
if (!ParseProtoFromJniByteArray(env, usage_report_bytes, &usage_report)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse UsageReport in nativeReportUsage";
return nullptr;
}
icing::lib::ReportUsageResultProto report_usage_result_proto =
icing->ReportUsage(usage_report);
return SerializeProtoToJniByteArray(env, report_usage_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetAllNamespaces(
JNIEnv* env, jclass clazz, jobject object) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::GetAllNamespacesResultProto get_all_namespaces_result_proto =
icing->GetAllNamespaces();
return SerializeProtoToJniByteArray(env, get_all_namespaces_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetNextPage(
JNIEnv* env, jclass clazz, jobject object, jlong next_page_token,
jlong java_to_native_start_timestamp_ms) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
const std::unique_ptr<const icing::lib::Clock> clock =
std::make_unique<icing::lib::Clock>();
int32_t java_to_native_jni_latency_ms =
clock->GetSystemTimeMilliseconds() - java_to_native_start_timestamp_ms;
icing::lib::SearchResultProto next_page_result_proto =
icing->GetNextPage(next_page_token);
icing::lib::QueryStatsProto* query_stats =
next_page_result_proto.mutable_query_stats();
query_stats->set_java_to_native_jni_latency_ms(java_to_native_jni_latency_ms);
query_stats->set_native_to_java_start_timestamp_ms(
clock->GetSystemTimeMilliseconds());
return SerializeProtoToJniByteArray(env, next_page_result_proto);
}
JNIEXPORT void JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeInvalidateNextPageToken(
JNIEnv* env, jclass clazz, jobject object, jlong next_page_token) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing->InvalidateNextPageToken(next_page_token);
return;
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeSearch(
JNIEnv* env, jclass clazz, jobject object, jbyteArray search_spec_bytes,
jbyteArray scoring_spec_bytes, jbyteArray result_spec_bytes,
jlong java_to_native_start_timestamp_ms) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::SearchSpecProto search_spec_proto;
if (!ParseProtoFromJniByteArray(env, search_spec_bytes, &search_spec_proto)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse SearchSpecProto in nativeSearch";
return nullptr;
}
icing::lib::ScoringSpecProto scoring_spec_proto;
if (!ParseProtoFromJniByteArray(env, scoring_spec_bytes,
&scoring_spec_proto)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse ScoringSpecProto in nativeSearch";
return nullptr;
}
icing::lib::ResultSpecProto result_spec_proto;
if (!ParseProtoFromJniByteArray(env, result_spec_bytes, &result_spec_proto)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse ResultSpecProto in nativeSearch";
return nullptr;
}
const std::unique_ptr<const icing::lib::Clock> clock =
std::make_unique<icing::lib::Clock>();
int32_t java_to_native_jni_latency_ms =
clock->GetSystemTimeMilliseconds() - java_to_native_start_timestamp_ms;
icing::lib::SearchResultProto search_result_proto =
icing->Search(search_spec_proto, scoring_spec_proto, result_spec_proto);
icing::lib::QueryStatsProto* query_stats =
search_result_proto.mutable_query_stats();
query_stats->set_java_to_native_jni_latency_ms(java_to_native_jni_latency_ms);
query_stats->set_native_to_java_start_timestamp_ms(
clock->GetSystemTimeMilliseconds());
return SerializeProtoToJniByteArray(env, search_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeDelete(
JNIEnv* env, jclass clazz, jobject object, jstring name_space,
jstring uri) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::ScopedUtfChars scoped_name_space_chars(env, name_space);
icing::lib::ScopedUtfChars scoped_uri_chars(env, uri);
icing::lib::DeleteResultProto delete_result_proto =
icing->Delete(scoped_name_space_chars.c_str(), scoped_uri_chars.c_str());
return SerializeProtoToJniByteArray(env, delete_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeDeleteByNamespace(
JNIEnv* env, jclass clazz, jobject object, jstring name_space) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::ScopedUtfChars scoped_name_space_chars(env, name_space);
icing::lib::DeleteByNamespaceResultProto delete_by_namespace_result_proto =
icing->DeleteByNamespace(scoped_name_space_chars.c_str());
return SerializeProtoToJniByteArray(env, delete_by_namespace_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeDeleteBySchemaType(
JNIEnv* env, jclass clazz, jobject object, jstring schema_type) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::ScopedUtfChars scoped_schema_type_chars(env, schema_type);
icing::lib::DeleteBySchemaTypeResultProto delete_by_schema_type_result_proto =
icing->DeleteBySchemaType(scoped_schema_type_chars.c_str());
return SerializeProtoToJniByteArray(env, delete_by_schema_type_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeDeleteByQuery(
JNIEnv* env, jclass clazz, jobject object, jbyteArray search_spec_bytes,
jboolean return_deleted_document_info) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::SearchSpecProto search_spec_proto;
if (!ParseProtoFromJniByteArray(env, search_spec_bytes, &search_spec_proto)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse SearchSpecProto in nativeSearch";
return nullptr;
}
icing::lib::DeleteByQueryResultProto delete_result_proto =
icing->DeleteByQuery(search_spec_proto, return_deleted_document_info);
return SerializeProtoToJniByteArray(env, delete_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativePersistToDisk(
JNIEnv* env, jclass clazz, jobject object, jint persist_type_code) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
if (!icing::lib::PersistType::Code_IsValid(persist_type_code)) {
ICING_LOG(icing::lib::ERROR)
<< persist_type_code << " is an invalid value for PersistType::Code";
return nullptr;
}
icing::lib::PersistType::Code persist_type_code_enum =
static_cast<icing::lib::PersistType::Code>(persist_type_code);
icing::lib::PersistToDiskResultProto persist_to_disk_result_proto =
icing->PersistToDisk(persist_type_code_enum);
return SerializeProtoToJniByteArray(env, persist_to_disk_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeOptimize(
JNIEnv* env, jclass clazz, jobject object) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::OptimizeResultProto optimize_result_proto = icing->Optimize();
return SerializeProtoToJniByteArray(env, optimize_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetOptimizeInfo(
JNIEnv* env, jclass clazz, jobject object) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::GetOptimizeInfoResultProto get_optimize_info_result_proto =
icing->GetOptimizeInfo();
return SerializeProtoToJniByteArray(env, get_optimize_info_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetStorageInfo(
JNIEnv* env, jclass clazz, jobject object) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::StorageInfoResultProto storage_info_result_proto =
icing->GetStorageInfo();
return SerializeProtoToJniByteArray(env, storage_info_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeReset(
JNIEnv* env, jclass clazz, jobject object) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::ResetResultProto reset_result_proto = icing->Reset();
return SerializeProtoToJniByteArray(env, reset_result_proto);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeSearchSuggestions(
JNIEnv* env, jclass clazz, jobject object,
jbyteArray suggestion_spec_bytes) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
icing::lib::SuggestionSpecProto suggestion_spec_proto;
if (!ParseProtoFromJniByteArray(env, suggestion_spec_bytes,
&suggestion_spec_proto)) {
ICING_LOG(icing::lib::ERROR)
<< "Failed to parse SuggestionSpecProto in nativeSearch";
return nullptr;
}
icing::lib::SuggestionResponse suggestionResponse =
icing->SearchSuggestions(suggestion_spec_proto);
return SerializeProtoToJniByteArray(env, suggestionResponse);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetDebugInfo(
JNIEnv* env, jclass clazz, jobject object, jint verbosity) {
icing::lib::IcingSearchEngine* icing =
GetIcingSearchEnginePointer(env, object);
if (!icing::lib::DebugInfoVerbosity::Code_IsValid(verbosity)) {
ICING_LOG(icing::lib::ERROR)
<< "Invalid value for Debug Info verbosity: " << verbosity;
return nullptr;
}
icing::lib::DebugInfoResultProto debug_info_result_proto =
icing->GetDebugInfo(
static_cast<icing::lib::DebugInfoVerbosity::Code>(verbosity));
return SerializeProtoToJniByteArray(env, debug_info_result_proto);
}
JNIEXPORT jboolean JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeShouldLog(
JNIEnv* env, jclass clazz, jshort severity, jshort verbosity) {
if (!icing::lib::LogSeverity::Code_IsValid(severity)) {
ICING_LOG(icing::lib::ERROR)
<< "Invalid value for logging severity: " << severity;
return false;
}
return icing::lib::ShouldLog(
static_cast<icing::lib::LogSeverity::Code>(severity), verbosity);
}
JNIEXPORT jboolean JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeSetLoggingLevel(
JNIEnv* env, jclass clazz, jshort severity, jshort verbosity) {
if (!icing::lib::LogSeverity::Code_IsValid(severity)) {
ICING_LOG(icing::lib::ERROR)
<< "Invalid value for logging severity: " << severity;
return false;
}
return icing::lib::SetLoggingLevel(
static_cast<icing::lib::LogSeverity::Code>(severity), verbosity);
}
JNIEXPORT jstring JNICALL
Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetLoggingTag(
JNIEnv* env, jclass clazz) {
return env->NewStringUTF(icing::lib::kIcingLoggingTag);
}
// TODO(b/240333360) Remove the methods below for IcingSearchEngine once we have
// a sync from Jetpack to g3 to contain the refactored IcingSearchEngine(with
// IcingSearchEngineImpl).
JNIEXPORT jlong JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeCreate(
JNIEnv* env, jclass clazz, jbyteArray icing_search_engine_options_bytes) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeCreate(
env, clazz, icing_search_engine_options_bytes);
}
JNIEXPORT void JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeDestroy(JNIEnv* env,
jclass clazz,
jobject object) {
Java_com_google_android_icing_IcingSearchEngineImpl_nativeDestroy(env, clazz,
object);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeInitialize(
JNIEnv* env, jclass clazz, jobject object) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeInitialize(
env, clazz, object);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeSetSchema(
JNIEnv* env, jclass clazz, jobject object, jbyteArray schema_bytes,
jboolean ignore_errors_and_delete_documents) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeSetSchema(
env, clazz, object, schema_bytes, ignore_errors_and_delete_documents);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeGetSchema(
JNIEnv* env, jclass clazz, jobject object) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetSchema(
env, clazz, object);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeGetSchemaType(
JNIEnv* env, jclass clazz, jobject object, jstring schema_type) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetSchemaType(
env, clazz, object, schema_type);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativePut(
JNIEnv* env, jclass clazz, jobject object, jbyteArray document_bytes) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativePut(
env, clazz, object, document_bytes);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeGet(
JNIEnv* env, jclass clazz, jobject object, jstring name_space, jstring uri,
jbyteArray result_spec_bytes) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeGet(
env, clazz, object, name_space, uri, result_spec_bytes);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeReportUsage(
JNIEnv* env, jclass clazz, jobject object, jbyteArray usage_report_bytes) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeReportUsage(
env, clazz, object, usage_report_bytes);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeGetAllNamespaces(
JNIEnv* env, jclass clazz, jobject object) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetAllNamespaces(
env, clazz, object);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeGetNextPage(
JNIEnv* env, jclass clazz, jobject object, jlong next_page_token,
jlong java_to_native_start_timestamp_ms) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetNextPage(
env, clazz, object, next_page_token, java_to_native_start_timestamp_ms);
}
JNIEXPORT void JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeInvalidateNextPageToken(
JNIEnv* env, jclass clazz, jobject object, jlong next_page_token) {
Java_com_google_android_icing_IcingSearchEngineImpl_nativeInvalidateNextPageToken(
env, clazz, object, next_page_token);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeSearch(
JNIEnv* env, jclass clazz, jobject object, jbyteArray search_spec_bytes,
jbyteArray scoring_spec_bytes, jbyteArray result_spec_bytes,
jlong java_to_native_start_timestamp_ms) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeSearch(
env, clazz, object, search_spec_bytes, scoring_spec_bytes,
result_spec_bytes, java_to_native_start_timestamp_ms);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeDelete(JNIEnv* env,
jclass clazz,
jobject object,
jstring name_space,
jstring uri) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeDelete(
env, clazz, object, name_space, uri);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeDeleteByNamespace(
JNIEnv* env, jclass clazz, jobject object, jstring name_space) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeDeleteByNamespace(
env, clazz, object, name_space);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeDeleteBySchemaType(
JNIEnv* env, jclass clazz, jobject object, jstring schema_type) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeDeleteBySchemaType(
env, clazz, object, schema_type);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeDeleteByQuery(
JNIEnv* env, jclass clazz, jobject object, jbyteArray search_spec_bytes,
jboolean return_deleted_document_info) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeDeleteByQuery(
env, clazz, object, search_spec_bytes, return_deleted_document_info);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativePersistToDisk(
JNIEnv* env, jclass clazz, jobject object, jint persist_type_code) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativePersistToDisk(
env, clazz, object, persist_type_code);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeOptimize(JNIEnv* env,
jclass clazz,
jobject object) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeOptimize(
env, clazz, object);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeGetOptimizeInfo(
JNIEnv* env, jclass clazz, jobject object) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetOptimizeInfo(
env, clazz, object);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeGetStorageInfo(
JNIEnv* env, jclass clazz, jobject object) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetStorageInfo(
env, clazz, object);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeReset(JNIEnv* env,
jclass clazz,
jobject object) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeReset(
env, clazz, object);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeSearchSuggestions(
JNIEnv* env, jclass clazz, jobject object,
jbyteArray suggestion_spec_bytes) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeSearchSuggestions(
env, clazz, object, suggestion_spec_bytes);
}
JNIEXPORT jbyteArray JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeGetDebugInfo(
JNIEnv* env, jclass clazz, jobject object, jint verbosity) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetDebugInfo(
env, clazz, object, verbosity);
}
JNIEXPORT jboolean JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeShouldLog(
JNIEnv* env, jclass clazz, jshort severity, jshort verbosity) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeShouldLog(
env, clazz, severity, verbosity);
}
JNIEXPORT jboolean JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeSetLoggingLevel(
JNIEnv* env, jclass clazz, jshort severity, jshort verbosity) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeSetLoggingLevel(
env, clazz, severity, verbosity);
}
JNIEXPORT jstring JNICALL
Java_com_google_android_icing_IcingSearchEngine_nativeGetLoggingTag(
JNIEnv* env, jclass clazz) {
return Java_com_google_android_icing_IcingSearchEngineImpl_nativeGetLoggingTag(
env, clazz);
}
} // extern "C"