15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/android/chrome_jni_registrar.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/android/jni_android.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/android/jni_registrar.h"
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/debug/trace_event.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/android/chrome_web_contents_delegate_android.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/android/content_view_util.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/android/dev_tools_server.h"
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/android/favicon_helper.h"
14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/android/field_trial_helper.h"
15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/android/foreign_session_helper.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/android/intent_helper.h"
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/android/most_visited_sites.h"
18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/android/omnibox/omnibox_prerender.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/android/provider/chrome_browser_provider.h"
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/android/signin/signin_manager_android.h"
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/android/tab_android.h"
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/autofill/android/personal_data_manager_android.h"
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/history/android/sqlite_cursor.h"
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/lifetime/application_lifetime_android.h"
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile_android.h"
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_android.h"
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/signin/android_profile_oauth2_token_service.h"
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/speech/tts_android.h"
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/sync/profile_sync_service_android.h"
304311e82a78ceafbe0585f51d4c8a86df9f21aa0dBen Murdoch#include "chrome/browser/ui/android/autofill/autofill_dialog_controller_android.h"
314311e82a78ceafbe0585f51d4c8a86df9f21aa0dBen Murdoch#include "chrome/browser/ui/android/autofill/autofill_dialog_result.h"
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/android/autofill/autofill_popup_view_android.h"
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/android/chrome_http_auth_handler.h"
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/android/javascript_app_modal_dialog_android.h"
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/android/navigation_popup.h"
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/android/ssl_client_certificate_request.h"
37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/ui/android/validation_message_bubble_android.h"
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/android/website_settings_popup_android.h"
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/autofill/core/browser/android/component_jni_registrar.h"
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/navigation_interception/component_jni_registrar.h"
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/web_contents_delegate_android/component_jni_registrar.h"
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool RegisterCertificateViewer(JNIEnv* env);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome {
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Register JNI for components we depend on.
5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  { "NavigationInterception",
5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    navigation_interception::RegisterNavigationInterceptionJni },
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "WebContentsDelegateAndroid",
53868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    web_contents_delegate_android::RegisterWebContentsDelegateAndroidJni },
5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  { "RegisterAuxiliaryProfileLoader", autofill::RegisterAutofillAndroidJni },
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Register JNI for chrome classes.
567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  { "AndroidProfileOAuth2TokenService",
577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    AndroidProfileOAuth2TokenService::Register },
5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  { "ApplicationLifetime", RegisterApplicationLifetimeAndroid },
594311e82a78ceafbe0585f51d4c8a86df9f21aa0dBen Murdoch  { "AutofillDialogControllerAndroid",
604311e82a78ceafbe0585f51d4c8a86df9f21aa0dBen Murdoch    autofill::AutofillDialogControllerAndroid::
614311e82a78ceafbe0585f51d4c8a86df9f21aa0dBen Murdoch        RegisterAutofillDialogControllerAndroid },
624311e82a78ceafbe0585f51d4c8a86df9f21aa0dBen Murdoch  { "AutofillDialogResult",
634311e82a78ceafbe0585f51d4c8a86df9f21aa0dBen Murdoch    autofill::AutofillDialogResult::RegisterAutofillDialogResult },
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "AutofillPopup",
6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    autofill::AutofillPopupViewAndroid::RegisterAutofillPopupViewAndroid },
6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  { "CertificateViewer", RegisterCertificateViewer },
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { "ChromeBrowserProvider",
6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    ChromeBrowserProvider::RegisterChromeBrowserProvider },
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { "ChromeHttpAuthHandler",
7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    ChromeHttpAuthHandler::RegisterChromeHttpAuthHandler },
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { "ChromeWebContentsDelegateAndroid",
7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    RegisterChromeWebContentsDelegateAndroid },
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { "ContentViewUtil", RegisterContentViewUtil },
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { "DevToolsServer", RegisterDevToolsServer },
75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  { "FaviconHelper", FaviconHelper::RegisterFaviconHelper },
76ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  { "FieldTrialHelper", RegisterFieldTrialHelper },
77a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  { "ForeignSessionHelper",
78a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    ForeignSessionHelper::RegisterForeignSessionHelper },
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { "IntentHelper", RegisterIntentHelper },
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { "JavascriptAppModalDialog",
8190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    JavascriptAppModalDialogAndroid::RegisterJavascriptAppModalDialog },
82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  { "MostVisitedSites", RegisterMostVisitedSites },
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "NavigationPopup", NavigationPopup::RegisterNavigationPopup },
84a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  { "OmniboxPrerender", RegisterOmniboxPrerender },
852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "PersonalDataManagerAndroid",
8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    autofill::PersonalDataManagerAndroid::Register },
872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ProfileAndroid", ProfileAndroid::RegisterProfileAndroid },
882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "ProfileSyncService", ProfileSyncServiceAndroid::Register },
897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  { "SigninManager", SigninManagerAndroid::Register },
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { "SqliteCursor", SQLiteCursor::RegisterSqliteCursor },
9190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  { "SSLClientCertificateRequest", RegisterSSLClientCertificateRequestAndroid },
92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  { "TabAndroid", TabAndroid::RegisterTabAndroid },
932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "TemplateUrlServiceAndroid", TemplateUrlServiceAndroid::Register },
9490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  { "TtsPlatformImpl", TtsPlatformImplAndroid::Register },
95868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  { "ValidationMessageBubbleAndroid",
96868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      ValidationMessageBubbleAndroid::Register },
972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  { "WebsiteSettingsPopupAndroid",
9890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid },
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool RegisterJni(JNIEnv* env) {
102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  TRACE_EVENT0("startup", "chrome_android::RegisterJni");
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return RegisterNativeMethods(env, kChromeRegisteredMethods,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               arraysize(kChromeRegisteredMethods));
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace android
108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace chrome
109