Skip to content

Commit

Permalink
Make content JNI API accept a list of callbacks
Browse files Browse the repository at this point in the history
It turned out we still need a list of callbacks to be passed into content,
downstream Android has its own JNI registration and initialization,
chrome_sync_shell does too, they both need to be passed into content along
with chrome's

BUG=447393

Review URL: https://codereview.chromium.org/956073002

Cr-Commit-Position: refs/heads/master@{#318302}
  • Loading branch information
michaelbai authored and Commit bot committed Feb 26, 2015
1 parent fb62911 commit 79ba8f3
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 31 deletions.
9 changes: 6 additions & 3 deletions android_webview/lib/main/webview_entry_point.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,12 @@ JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
// improve startup peformance.
base::android::DisableManualJniRegistration();

if (!content::android::OnJNIOnLoadRegisterJNI(
vm, base::Bind(&android_webview::RegisterJNI)) ||
!content::android::OnJNIOnLoadInit(base::Bind(&android_webview::Init))) {
std::vector<base::android::RegisterCallback> register_callbacks;
register_callbacks.push_back(base::Bind(&android_webview::RegisterJNI));
std::vector<base::android::InitCallback> init_callbacks;
init_callbacks.push_back(base::Bind(&android_webview::Init));
if (!content::android::OnJNIOnLoadRegisterJNI(vm, register_callbacks) ||
!content::android::OnJNIOnLoadInit(init_callbacks)) {
return -1;
}
return JNI_VERSION_1_4;
Expand Down
11 changes: 7 additions & 4 deletions chrome/app/android/chrome_jni_onload.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,13 @@ bool Init() {

// This is called by the VM when the shared library is first loaded.
JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
if (!content::android::OnJNIOnLoadRegisterJNI(
vm, base::Bind(&RegisterJNI)) ||
!content::android::OnJNIOnLoadInit(base::Bind(&Init)))
std::vector<base::android::RegisterCallback> register_callbacks;
register_callbacks.push_back(base::Bind(&RegisterJNI));
std::vector<base::android::InitCallback> init_callbacks;
init_callbacks.push_back(base::Bind(&Init));
if (!content::android::OnJNIOnLoadRegisterJNI(vm, register_callbacks) ||
!content::android::OnJNIOnLoadInit(init_callbacks)) {
return -1;

}
return JNI_VERSION_1_4;
}
11 changes: 7 additions & 4 deletions chromecast/app/android/cast_jni_loader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,13 @@ bool Init() {

// This is called by the VM when the shared library is first loaded.
JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
if (!content::android::OnJNIOnLoadRegisterJNI(
vm, base::Bind(&RegisterJNI)) ||
!content::android::OnJNIOnLoadInit(base::Bind(&Init)))
std::vector<base::android::RegisterCallback> register_callbacks;
register_callbacks.push_back(base::Bind(&RegisterJNI));
std::vector<base::android::InitCallback> init_callbacks;
init_callbacks.push_back(base::Bind(&Init));
if (!content::android::OnJNIOnLoadRegisterJNI(vm, register_callbacks) ||
!content::android::OnJNIOnLoadInit(init_callbacks)) {
return -1;

}
return JNI_VERSION_1_4;
}
9 changes: 3 additions & 6 deletions content/app/android/content_jni_onload.cc
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,13 @@ bool Init() {

bool OnJNIOnLoadRegisterJNI(
JavaVM* vm,
base::android::RegisterCallback callback) {
std::vector<base::android::RegisterCallback> callbacks;
callbacks.push_back(callback);
std::vector<base::android::RegisterCallback> callbacks) {
callbacks.push_back(base::Bind(&RegisterJNI));
return base::android::OnJNIOnLoadRegisterJNI(vm, callbacks);
}

bool OnJNIOnLoadInit(base::android::InitCallback callback) {
std::vector<base::android::InitCallback> callbacks;
callbacks.push_back(callback);
bool OnJNIOnLoadInit(
std::vector<base::android::InitCallback> callbacks) {
callbacks.push_back(base::Bind(&Init));
return base::android::OnJNIOnLoadInit(callbacks);
}
Expand Down
5 changes: 3 additions & 2 deletions content/public/app/content_jni_onload.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ namespace android {
// Returns true if JNI registration succeeded.
CONTENT_EXPORT bool OnJNIOnLoadRegisterJNI(
JavaVM* vm,
base::android::RegisterCallback callback);
std::vector<base::android::RegisterCallback> callbacks);

// Returns true if initialization succeeded.
CONTENT_EXPORT bool OnJNIOnLoadInit(base::android::InitCallback callback);
CONTENT_EXPORT bool OnJNIOnLoadInit(
std::vector<base::android::InitCallback> callbacks);

} // namespace android
} // namespace content
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,13 @@ bool Init() {

// This is called by the VM when the shared library is first loaded.
JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
if (!content::android::OnJNIOnLoadRegisterJNI(
vm, base::Bind(&RegisterJNI)) ||
!content::android::OnJNIOnLoadInit(base::Bind(&Init)))
std::vector<base::android::RegisterCallback> register_callbacks;
register_callbacks.push_back(base::Bind(&RegisterJNI));
std::vector<base::android::InitCallback> init_callbacks;
init_callbacks.push_back(base::Bind(&Init));
if (!content::android::OnJNIOnLoadRegisterJNI(vm, register_callbacks) ||
!content::android::OnJNIOnLoadInit(init_callbacks)) {
return -1;

}
return JNI_VERSION_1_4;
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,13 @@ bool Init() {

// This is called by the VM when the shared library is first loaded.
JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
if (!content::android::OnJNIOnLoadRegisterJNI(
vm, base::Bind(&RegisterJNI)) ||
!content::android::OnJNIOnLoadInit(base::Bind(&Init)))
std::vector<base::android::RegisterCallback> register_callbacks;
register_callbacks.push_back(base::Bind(&RegisterJNI));
std::vector<base::android::InitCallback> init_callbacks;
init_callbacks.push_back(base::Bind(&Init));
if (!content::android::OnJNIOnLoadRegisterJNI(vm, register_callbacks) ||
!content::android::OnJNIOnLoadInit(init_callbacks)) {
return -1;

}
return JNI_VERSION_1_4;
}
11 changes: 7 additions & 4 deletions content/shell/android/shell_library_loader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,13 @@ bool Init() {

// This is called by the VM when the shared library is first loaded.
JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
if (!content::android::OnJNIOnLoadRegisterJNI(
vm, base::Bind(&RegisterJNI)) ||
!content::android::OnJNIOnLoadInit(base::Bind(&Init)))
std::vector<base::android::RegisterCallback> register_callbacks;
register_callbacks.push_back(base::Bind(&RegisterJNI));
std::vector<base::android::InitCallback> init_callbacks;
init_callbacks.push_back(base::Bind(&Init));
if (!content::android::OnJNIOnLoadRegisterJNI(vm, register_callbacks) ||
!content::android::OnJNIOnLoadInit(init_callbacks)) {
return -1;

}
return JNI_VERSION_1_4;
}

0 comments on commit 79ba8f3

Please sign in to comment.