chrome_jni_registrar.cc revision ca12bfac764ba476d6cd062bf1dde12cc64c3f40
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/android/chrome_jni_registrar.h"
6
7#include "base/android/jni_android.h"
8#include "base/android/jni_registrar.h"
9#include "base/debug/trace_event.h"
10#include "chrome/browser/android/chrome_web_contents_delegate_android.h"
11#include "chrome/browser/android/content_view_util.h"
12#include "chrome/browser/android/dev_tools_server.h"
13#include "chrome/browser/android/favicon_helper.h"
14#include "chrome/browser/android/field_trial_helper.h"
15#include "chrome/browser/android/intent_helper.h"
16#include "chrome/browser/android/most_visited_sites.h"
17#include "chrome/browser/android/provider/chrome_browser_provider.h"
18#include "chrome/browser/android/signin/signin_manager_android.h"
19#include "chrome/browser/android/tab_android.h"
20#include "chrome/browser/autofill/android/personal_data_manager_android.h"
21#include "chrome/browser/history/android/sqlite_cursor.h"
22#include "chrome/browser/lifetime/application_lifetime_android.h"
23#include "chrome/browser/profiles/profile_android.h"
24#include "chrome/browser/search_engines/template_url_service_android.h"
25#include "chrome/browser/signin/android_profile_oauth2_token_service.h"
26#include "chrome/browser/speech/tts_android.h"
27#include "chrome/browser/sync/profile_sync_service_android.h"
28#include "chrome/browser/ui/android/autofill/autofill_dialog_view_android.h"
29#include "chrome/browser/ui/android/autofill/autofill_popup_view_android.h"
30#include "chrome/browser/ui/android/chrome_http_auth_handler.h"
31#include "chrome/browser/ui/android/javascript_app_modal_dialog_android.h"
32#include "chrome/browser/ui/android/navigation_popup.h"
33#include "chrome/browser/ui/android/ssl_client_certificate_request.h"
34#include "chrome/browser/ui/android/validation_message_bubble_android.h"
35#include "chrome/browser/ui/android/website_settings_popup_android.h"
36#include "components/autofill/core/browser/android/component_jni_registrar.h"
37#include "components/navigation_interception/component_jni_registrar.h"
38#include "components/web_contents_delegate_android/component_jni_registrar.h"
39
40bool RegisterCertificateViewer(JNIEnv* env);
41
42namespace chrome {
43namespace android {
44
45static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
46  // Register JNI for components we depend on.
47  { "NavigationInterception",
48    navigation_interception::RegisterNavigationInterceptionJni },
49  { "WebContentsDelegateAndroid",
50    web_contents_delegate_android::RegisterWebContentsDelegateAndroidJni },
51  { "RegisterAuxiliaryProfileLoader", autofill::RegisterAutofillAndroidJni },
52  // Register JNI for chrome classes.
53  { "AndroidProfileOAuth2TokenService",
54    AndroidProfileOAuth2TokenService::Register },
55  { "ApplicationLifetime", RegisterApplicationLifetimeAndroid },
56  { "AutofillDialog",
57    autofill::AutofillDialogViewAndroid::RegisterAutofillDialogViewAndroid },
58  { "AutofillPopup",
59    autofill::AutofillPopupViewAndroid::RegisterAutofillPopupViewAndroid },
60  { "CertificateViewer", RegisterCertificateViewer },
61  { "ChromeBrowserProvider",
62    ChromeBrowserProvider::RegisterChromeBrowserProvider },
63  { "ChromeHttpAuthHandler",
64    ChromeHttpAuthHandler::RegisterChromeHttpAuthHandler },
65  { "ChromeWebContentsDelegateAndroid",
66    RegisterChromeWebContentsDelegateAndroid },
67  { "ContentViewUtil", RegisterContentViewUtil },
68  { "DevToolsServer", RegisterDevToolsServer },
69  { "FaviconHelper", FaviconHelper::RegisterFaviconHelper },
70  { "FieldTrialHelper", RegisterFieldTrialHelper },
71  { "IntentHelper", RegisterIntentHelper },
72  { "JavascriptAppModalDialog",
73    JavascriptAppModalDialogAndroid::RegisterJavascriptAppModalDialog },
74  { "MostVisitedSites", RegisterMostVisitedSites },
75  { "NavigationPopup", NavigationPopup::RegisterNavigationPopup },
76  { "PersonalDataManagerAndroid",
77    autofill::PersonalDataManagerAndroid::Register },
78  { "ProfileAndroid", ProfileAndroid::RegisterProfileAndroid },
79  { "ProfileSyncService", ProfileSyncServiceAndroid::Register },
80  { "SigninManager", SigninManagerAndroid::Register },
81  { "SqliteCursor", SQLiteCursor::RegisterSqliteCursor },
82  { "SSLClientCertificateRequest", RegisterSSLClientCertificateRequestAndroid },
83  { "TabAndroid", TabAndroid::RegisterTabAndroid },
84  { "TemplateUrlServiceAndroid", TemplateUrlServiceAndroid::Register },
85  { "TtsPlatformImpl", TtsPlatformImplAndroid::Register },
86  { "ValidationMessageBubbleAndroid",
87      ValidationMessageBubbleAndroid::Register },
88  { "WebsiteSettingsPopupAndroid",
89    WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid },
90};
91
92bool RegisterJni(JNIEnv* env) {
93  TRACE_EVENT0("startup", "chrome_android::RegisterJni");
94  return RegisterNativeMethods(env, kChromeRegisteredMethods,
95                               arraysize(kChromeRegisteredMethods));
96}
97
98}  // namespace android
99}  // namespace chrome
100