Home | History | Annotate | Download | only in android
      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/accessibility/font_size_prefs_android.h"
     11 #include "chrome/browser/android/accessibility_util.h"
     12 #include "chrome/browser/android/banners/app_banner_manager.h"
     13 #include "chrome/browser/android/bookmarks/bookmarks_bridge.h"
     14 #include "chrome/browser/android/browser_version.h"
     15 #include "chrome/browser/android/chrome_web_contents_delegate_android.h"
     16 #include "chrome/browser/android/chromium_application.h"
     17 #include "chrome/browser/android/content_view_util.h"
     18 #include "chrome/browser/android/dev_tools_server.h"
     19 #include "chrome/browser/android/dom_distiller/feedback_reporter_android.h"
     20 #include "chrome/browser/android/enhanced_bookmarks/enhanced_bookmarks_bridge.h"
     21 #include "chrome/browser/android/favicon_helper.h"
     22 #include "chrome/browser/android/feature_utilities.h"
     23 #include "chrome/browser/android/foreign_session_helper.h"
     24 #include "chrome/browser/android/intent_helper.h"
     25 #include "chrome/browser/android/logo_bridge.h"
     26 #include "chrome/browser/android/most_visited_sites.h"
     27 #include "chrome/browser/android/new_tab_page_prefs.h"
     28 #include "chrome/browser/android/omnibox/answers_image_bridge.h"
     29 #include "chrome/browser/android/omnibox/autocomplete_controller_android.h"
     30 #include "chrome/browser/android/omnibox/omnibox_prerender.h"
     31 #include "chrome/browser/android/password_authentication_manager.h"
     32 #include "chrome/browser/android/password_ui_view_android.h"
     33 #include "chrome/browser/android/profiles/profile_downloader_android.h"
     34 #include "chrome/browser/android/provider/chrome_browser_provider.h"
     35 #include "chrome/browser/android/recently_closed_tabs_bridge.h"
     36 #include "chrome/browser/android/shortcut_helper.h"
     37 #include "chrome/browser/android/signin/account_management_screen_helper.h"
     38 #include "chrome/browser/android/signin/signin_manager_android.h"
     39 #include "chrome/browser/android/tab_android.h"
     40 #include "chrome/browser/android/uma_bridge.h"
     41 #include "chrome/browser/android/uma_utils.h"
     42 #include "chrome/browser/android/url_utilities.h"
     43 #include "chrome/browser/android/voice_search_tab_helper.h"
     44 #include "chrome/browser/autofill/android/personal_data_manager_android.h"
     45 #include "chrome/browser/dom_distiller/dom_distiller_service_factory_android.h"
     46 #include "chrome/browser/dom_distiller/tab_utils_android.h"
     47 #include "chrome/browser/history/android/sqlite_cursor.h"
     48 #include "chrome/browser/invalidation/invalidation_controller_android.h"
     49 #include "chrome/browser/lifetime/application_lifetime_android.h"
     50 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h"
     51 #include "chrome/browser/prerender/external_prerender_handler_android.h"
     52 #include "chrome/browser/profiles/profile_android.h"
     53 #include "chrome/browser/search_engines/template_url_service_android.h"
     54 #include "chrome/browser/signin/android_profile_oauth2_token_service.h"
     55 #include "chrome/browser/speech/tts_android.h"
     56 #include "chrome/browser/sync/profile_sync_service_android.h"
     57 #include "chrome/browser/ui/android/autofill/autofill_dialog_controller_android.h"
     58 #include "chrome/browser/ui/android/autofill/autofill_dialog_result.h"
     59 #include "chrome/browser/ui/android/autofill/autofill_logger_android.h"
     60 #include "chrome/browser/ui/android/autofill/autofill_popup_view_android.h"
     61 #include "chrome/browser/ui/android/chrome_http_auth_handler.h"
     62 #include "chrome/browser/ui/android/context_menu_helper.h"
     63 #include "chrome/browser/ui/android/infobars/auto_login_infobar_delegate_android.h"
     64 #include "chrome/browser/ui/android/infobars/confirm_infobar.h"
     65 #include "chrome/browser/ui/android/infobars/data_reduction_proxy_infobar.h"
     66 #include "chrome/browser/ui/android/infobars/infobar_android.h"
     67 #include "chrome/browser/ui/android/infobars/infobar_container_android.h"
     68 #include "chrome/browser/ui/android/infobars/save_password_infobar.h"
     69 #include "chrome/browser/ui/android/infobars/translate_infobar.h"
     70 #include "chrome/browser/ui/android/javascript_app_modal_dialog_android.h"
     71 #include "chrome/browser/ui/android/navigation_popup.h"
     72 #include "chrome/browser/ui/android/omnibox/omnibox_view_util.h"
     73 #include "chrome/browser/ui/android/ssl_client_certificate_request.h"
     74 #include "chrome/browser/ui/android/tab_model/tab_model_base.h"
     75 #include "chrome/browser/ui/android/toolbar/toolbar_model_android.h"
     76 #include "chrome/browser/ui/android/website_settings_popup_android.h"
     77 #include "components/bookmarks/common/android/component_jni_registrar.h"
     78 #include "components/dom_distiller/android/component_jni_registrar.h"
     79 #include "components/gcm_driver/android/component_jni_registrar.h"
     80 #include "components/navigation_interception/component_jni_registrar.h"
     81 #include "components/variations/android/component_jni_registrar.h"
     82 #include "components/web_contents_delegate_android/component_jni_registrar.h"
     83 
     84 #if defined(ENABLE_PRINTING) && !defined(ENABLE_FULL_PRINTING)
     85 #include "printing/printing_context_android.h"
     86 #endif
     87 
     88 bool RegisterCertificateViewer(JNIEnv* env);
     89 
     90 namespace chrome {
     91 namespace android {
     92 
     93 static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
     94   // Register JNI for components we depend on.
     95   { "Bookmarks", bookmarks::android::RegisterBookmarks },
     96   { "DomDistiller", dom_distiller::android::RegisterDomDistiller },
     97   { "GCMDriver", gcm::android::RegisterGCMDriverJni },
     98   { "NavigationInterception",
     99     navigation_interception::RegisterNavigationInterceptionJni },
    100   { "WebContentsDelegateAndroid",
    101     web_contents_delegate_android::RegisterWebContentsDelegateAndroidJni },
    102   // Register JNI for chrome classes.
    103   { "AccessibilityUtils", AccessibilityUtil::Register },
    104   { "AccountManagementScreenHelper", AccountManagementScreenHelper::Register },
    105   { "AndroidProfileOAuth2TokenService",
    106     AndroidProfileOAuth2TokenService::Register },
    107   { "AnswersImageBridge", RegisterAnswersImageBridge },
    108   { "AppBannerManager", banners::RegisterAppBannerManager },
    109   { "ApplicationLifetime", RegisterApplicationLifetimeAndroid },
    110   { "AutocompleteControllerAndroid", RegisterAutocompleteControllerAndroid },
    111   { "AutofillDialogControllerAndroid",
    112     autofill::AutofillDialogControllerAndroid::
    113         RegisterAutofillDialogControllerAndroid },
    114   { "AutofillDialogResult",
    115     autofill::AutofillDialogResult::RegisterAutofillDialogResult },
    116   { "AutofillLoggerAndroid",
    117     autofill::AutofillLoggerAndroid::Register },
    118   { "AutofillPopup",
    119     autofill::AutofillPopupViewAndroid::RegisterAutofillPopupViewAndroid },
    120   { "AutoLoginDelegate", AutoLoginInfoBarDelegateAndroid::Register },
    121   { "BookmarksBridge", BookmarksBridge::RegisterBookmarksBridge },
    122   { "BrowserVersion", RegisterBrowserVersion },
    123   { "CertificateViewer", RegisterCertificateViewer },
    124   { "ChromeBrowserProvider",
    125     ChromeBrowserProvider::RegisterChromeBrowserProvider },
    126   { "ChromeHttpAuthHandler",
    127     ChromeHttpAuthHandler::RegisterChromeHttpAuthHandler },
    128   { "ChromeWebContentsDelegateAndroid",
    129     RegisterChromeWebContentsDelegateAndroid },
    130   { "ChromiumApplication",
    131     ChromiumApplication::RegisterBindings },
    132   { "ConfirmInfoBarDelegate", RegisterConfirmInfoBarDelegate },
    133   { "ContentViewUtil", RegisterContentViewUtil },
    134   { "ContextMenuHelper", RegisterContextMenuHelper },
    135   { "DataReductionProxyInfoBarDelegate", DataReductionProxyInfoBar::Register },
    136   { "DataReductionProxySettings", DataReductionProxySettingsAndroid::Register },
    137   { "DevToolsServer", RegisterDevToolsServer },
    138   { "DomDistillerServiceFactory",
    139     dom_distiller::android::DomDistillerServiceFactoryAndroid::Register },
    140   { "DomDistillerTabUtils", RegisterDomDistillerTabUtils },
    141   { "EnhancedBookmarksBridge",
    142     enhanced_bookmarks::android::RegisterEnhancedBookmarksBridge},
    143   { "ExternalPrerenderRequestHandler",
    144       prerender::ExternalPrerenderHandlerAndroid::
    145       RegisterExternalPrerenderHandlerAndroid },
    146   { "FaviconHelper", FaviconHelper::RegisterFaviconHelper },
    147   { "FeatureUtilities", RegisterFeatureUtilities },
    148   { "FeedbackReporter", dom_distiller::android::RegisterFeedbackReporter },
    149   { "FontSizePrefsAndroid", FontSizePrefsAndroid::Register },
    150   { "ForeignSessionHelper",
    151     ForeignSessionHelper::RegisterForeignSessionHelper },
    152   { "InfoBarContainer", RegisterInfoBarContainer },
    153   { "ShortcutHelper", ShortcutHelper::RegisterShortcutHelper },
    154   { "IntentHelper", RegisterIntentHelper },
    155   { "InvalidationController", invalidation::RegisterInvalidationController },
    156   { "JavascriptAppModalDialog",
    157     JavascriptAppModalDialogAndroid::RegisterJavascriptAppModalDialog },
    158   { "LogoBridge", RegisterLogoBridge },
    159   { "MostVisitedSites", MostVisitedSites::Register },
    160   { "NativeInfoBar", RegisterNativeInfoBar },
    161   { "NavigationPopup", NavigationPopup::RegisterNavigationPopup },
    162   { "NewTabPagePrefs",
    163     NewTabPagePrefs::RegisterNewTabPagePrefs },
    164   { "OmniboxPrerender", RegisterOmniboxPrerender },
    165   { "OmniboxViewUtil", OmniboxViewUtil::RegisterOmniboxViewUtil },
    166   { "PasswordAuthenticationManager",
    167     PasswordAuthenticationManager::RegisterPasswordAuthenticationManager },
    168   { "PasswordUIViewAndroid",
    169     PasswordUIViewAndroid::RegisterPasswordUIViewAndroid },
    170   { "PersonalDataManagerAndroid",
    171     autofill::PersonalDataManagerAndroid::Register },
    172   { "ProfileAndroid", ProfileAndroid::RegisterProfileAndroid },
    173   { "ProfileDownloaderAndroid", ProfileDownloaderAndroid::Register },
    174   { "ProfileSyncService", ProfileSyncServiceAndroid::Register },
    175   { "RecentlyClosedBridge", RecentlyClosedTabsBridge::Register },
    176   { "SavePasswordInfoBar", RegisterSavePasswordInfoBar },
    177   { "SigninManager", SigninManagerAndroid::Register },
    178   { "SqliteCursor", SQLiteCursor::RegisterSqliteCursor },
    179   { "SSLClientCertificateRequest", RegisterSSLClientCertificateRequestAndroid },
    180   { "StartupMetricUtils", RegisterStartupMetricUtils },
    181   { "TabAndroid", TabAndroid::RegisterTabAndroid },
    182   { "TabModelBase", RegisterTabModelBase},
    183   { "TemplateUrlServiceAndroid", TemplateUrlServiceAndroid::Register },
    184   { "ToolbarModelAndroid", ToolbarModelAndroid::RegisterToolbarModelAndroid },
    185   { "TranslateInfoBarDelegate", RegisterTranslateInfoBarDelegate },
    186   { "TtsPlatformImpl", TtsPlatformImplAndroid::Register },
    187   { "UmaBridge", RegisterUmaBridge },
    188   { "UrlUtilities", RegisterUrlUtilities },
    189   { "Variations", variations::android::RegisterVariations },
    190   { "VoiceSearchTabHelper", RegisterVoiceSearchTabHelper },
    191   { "WebsiteSettingsPopupAndroid",
    192     WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid },
    193 #if defined(ENABLE_PRINTING) && !defined(ENABLE_FULL_PRINTING)
    194   { "PrintingContext",
    195     printing::PrintingContextAndroid::RegisterPrintingContext},
    196 #endif
    197 };
    198 
    199 bool RegisterJni(JNIEnv* env) {
    200   TRACE_EVENT0("startup", "chrome_android::RegisterJni");
    201   return RegisterNativeMethods(env, kChromeRegisteredMethods,
    202                                arraysize(kChromeRegisteredMethods));
    203 }
    204 
    205 }  // namespace android
    206 }  // namespace chrome
    207