summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/android/BUILD.gn2
-rw-r--r--chrome/android/shell/java/AndroidManifest.xml.jinja22
-rw-r--r--chrome/android/shell/java/DEPS1
-rw-r--r--chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellActivity.java2
-rw-r--r--chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellServiceTabLauncher.java2
-rw-r--r--chrome/browser/BUILD.gn1
-rw-r--r--chrome/browser/DEPS1
-rw-r--r--chrome/browser/android/DEPS1
-rw-r--r--chrome/browser/android/chrome_jni_registrar.cc4
-rw-r--r--chrome/browser/chrome_content_browser_client.cc4
-rw-r--r--chrome/chrome.gyp1
-rw-r--r--chrome/chrome_browser.gypi4
-rw-r--r--components/components.gyp5
-rw-r--r--components/service_tab_launcher.gypi52
-rw-r--r--components/service_tab_launcher/BUILD.gn38
-rw-r--r--components/service_tab_launcher/DEPS4
-rw-r--r--components/service_tab_launcher/OWNERS3
-rw-r--r--components/service_tab_launcher/android/DEPS3
-rw-r--r--components/service_tab_launcher/android/java/src/org/chromium/components/service_tab_launcher/ServiceTabLauncher.java (renamed from chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java)6
-rw-r--r--components/service_tab_launcher/browser/android/service_tab_launcher.cc (renamed from chrome/browser/android/service_tab_launcher.cc)10
-rw-r--r--components/service_tab_launcher/browser/android/service_tab_launcher.h (renamed from chrome/browser/android/service_tab_launcher.h)12
-rw-r--r--components/service_tab_launcher/component_jni_registrar.cc23
-rw-r--r--components/service_tab_launcher/component_jni_registrar.h17
23 files changed, 172 insertions, 26 deletions
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
index fbbf31d..936557e 100644
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -87,6 +87,7 @@ android_library("chrome_java") {
"//components/gcm_driver/android:gcm_driver_java",
"//components/invalidation:java",
"//components/navigation_interception/android:navigation_interception_java",
+ "//components/service_tab_launcher:service_tab_launcher_java",
"//components/precache/android:precache_java",
"//components/variations/android:variations_java",
"//components/web_contents_delegate_android:web_contents_delegate_android_java",
@@ -235,6 +236,7 @@ android_library("chrome_shell_java") {
"//base:base_java",
"//content/public/android:content_java",
"//components/dom_distiller/android:dom_distiller_core_java",
+ "//components/service_tab_launcher:service_tab_launcher_java",
"//components/web_contents_delegate_android:web_contents_delegate_android_java",
"//printing:printing_java",
"//net/android:net_java",
diff --git a/chrome/android/shell/java/AndroidManifest.xml.jinja2 b/chrome/android/shell/java/AndroidManifest.xml.jinja2
index 9033166..fb1c02e 100644
--- a/chrome/android/shell/java/AndroidManifest.xml.jinja2
+++ b/chrome/android/shell/java/AndroidManifest.xml.jinja2
@@ -192,7 +192,7 @@
<meta-data android:name="org.chromium.content.browser.SMART_CLIP_PROVIDER"
android:value="org.chromium.content.browser.SmartClipProvider" />
- <meta-data android:name="org.chromium.chrome.browser.SERVICE_TAB_LAUNCHER"
+ <meta-data android:name="org.chromium.components.service_tab_launcher.SERVICE_TAB_LAUNCHER"
android:value="org.chromium.chrome.shell.ChromeShellServiceTabLauncher" />
<!-- Precache service. -->
diff --git a/chrome/android/shell/java/DEPS b/chrome/android/shell/java/DEPS
index 0d019e1..224b2de5 100644
--- a/chrome/android/shell/java/DEPS
+++ b/chrome/android/shell/java/DEPS
@@ -1,3 +1,4 @@
include_rules = [
+ "+components/service_tab_launcher",
"+content/public/android/java",
]
diff --git a/chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellActivity.java b/chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellActivity.java
index c9cd2d4..d167e5d 100644
--- a/chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellActivity.java
+++ b/chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellActivity.java
@@ -31,7 +31,6 @@ import org.chromium.base.library_loader.LibraryProcessType;
import org.chromium.base.library_loader.ProcessInitException;
import org.chromium.chrome.browser.DevToolsServer;
import org.chromium.chrome.browser.FileProviderHelper;
-import org.chromium.chrome.browser.ServiceTabLauncher;
import org.chromium.chrome.browser.Tab;
import org.chromium.chrome.browser.WebsiteSettingsPopup;
import org.chromium.chrome.browser.appmenu.AppMenuHandler;
@@ -50,6 +49,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.shell.sync.AccountChooserFragment;
import org.chromium.chrome.shell.sync.SignoutFragment;
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
+import org.chromium.components.service_tab_launcher.ServiceTabLauncher;
import org.chromium.content.app.ContentApplication;
import org.chromium.content.browser.ActivityContentVideoViewClient;
import org.chromium.content.browser.BrowserStartupController;
diff --git a/chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellServiceTabLauncher.java b/chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellServiceTabLauncher.java
index cb622f8..4780a14 100644
--- a/chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellServiceTabLauncher.java
+++ b/chrome/android/shell/java/src/org/chromium/chrome/shell/ChromeShellServiceTabLauncher.java
@@ -9,7 +9,7 @@ import android.content.Intent;
import android.net.Uri;
import android.provider.Browser;
-import org.chromium.chrome.browser.ServiceTabLauncher;
+import org.chromium.components.service_tab_launcher.ServiceTabLauncher;
import org.chromium.ui.WindowOpenDisposition;
/**
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 4fbc826..f401772 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -612,6 +612,7 @@ source_set("browser") {
"//components/cdm/browser",
"//components/enhanced_bookmarks",
"//components/resources:components_resources",
+ "//components/service_tab_launcher",
"//components/web_contents_delegate_android",
"//third_party/android_opengl/etc1",
"//third_party/libaddressinput:util",
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 0368828..b92eb55 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -72,6 +72,7 @@ include_rules = [
"+components/search",
"+components/search_engines",
"+components/search_provider_logos",
+ "+components/service_tab_launcher",
"+components/session_manager",
"+components/sessions",
"+components/signin",
diff --git a/chrome/browser/android/DEPS b/chrome/browser/android/DEPS
index 594fc70..a78dfeb 100644
--- a/chrome/browser/android/DEPS
+++ b/chrome/browser/android/DEPS
@@ -1,5 +1,6 @@
include_rules = [
"-components/devtools_bridge",
+ "+components/service_tab_launcher",
"+components/web_contents_delegate_android",
"+cc/layers/layer.h"
]
diff --git a/chrome/browser/android/chrome_jni_registrar.cc b/chrome/browser/android/chrome_jni_registrar.cc
index 6a695ba..eecce76 100644
--- a/chrome/browser/android/chrome_jni_registrar.cc
+++ b/chrome/browser/android/chrome_jni_registrar.cc
@@ -50,7 +50,6 @@
#include "chrome/browser/android/profiles/profile_downloader_android.h"
#include "chrome/browser/android/provider/chrome_browser_provider.h"
#include "chrome/browser/android/recently_closed_tabs_bridge.h"
-#include "chrome/browser/android/service_tab_launcher.h"
#include "chrome/browser/android/shortcut_helper.h"
#include "chrome/browser/android/signin/account_management_screen_helper.h"
#include "chrome/browser/android/signin/signin_manager_android.h"
@@ -113,6 +112,7 @@
#include "components/gcm_driver/android/component_jni_registrar.h"
#include "components/invalidation/android/component_jni_registrar.h"
#include "components/navigation_interception/component_jni_registrar.h"
+#include "components/service_tab_launcher/component_jni_registrar.h"
#include "components/variations/android/component_jni_registrar.h"
#include "components/web_contents_delegate_android/component_jni_registrar.h"
@@ -237,7 +237,7 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
remote_media::RemoteMediaPlayerBridge::RegisterRemoteMediaPlayerBridge},
{"SavePasswordInfoBar", SavePasswordInfoBar::Register},
{"SceneLayer", chrome::android::RegisterSceneLayer},
- {"ServiceTabLauncher", ServiceTabLauncher::RegisterServiceTabLauncher},
+ {"ServiceTabLauncher", service_tab_launcher::RegisterServiceTabLauncherJni},
{"SigninManager", SigninManagerAndroid::Register},
{"SingleTabModel", RegisterSingleTabModel},
{"SqliteCursor", SQLiteCursor::RegisterSqliteCursor},
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 6af246f..1c16189 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -154,11 +154,11 @@
#include "chrome/browser/chrome_browser_main_linux.h"
#elif defined(OS_ANDROID)
#include "chrome/browser/android/new_tab_page_url_handler.h"
-#include "chrome/browser/android/service_tab_launcher.h"
#include "chrome/browser/android/webapps/single_tab_mode_tab_helper.h"
#include "chrome/browser/chrome_browser_main_android.h"
#include "chrome/common/descriptors_android.h"
#include "components/crash/browser/crash_dump_manager_android.h"
+#include "components/service_tab_launcher/browser/android/service_tab_launcher.h"
#elif defined(OS_POSIX)
#include "chrome/browser/chrome_browser_main_posix.h"
#endif
@@ -2350,7 +2350,7 @@ void ChromeContentBrowserClient::OpenURL(
Navigate(&nav_params);
callback.Run(nav_params.target_contents);
#elif defined(OS_ANDROID)
- chrome::android::ServiceTabLauncher::GetInstance()->LaunchTab(
+ service_tab_launcher::ServiceTabLauncher::GetInstance()->LaunchTab(
browser_context, params, callback);
#else
NOTIMPLEMENTED();
diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp
index e7e7afe..690be04 100644
--- a/chrome/chrome.gyp
+++ b/chrome/chrome.gyp
@@ -619,6 +619,7 @@
'../components/components.gyp:gcm_driver_java',
'../components/components.gyp:invalidation_java',
'../components/components.gyp:navigation_interception_java',
+ '../components/components.gyp:service_tab_launcher_java',
'../components/components.gyp:precache_java',
'../components/components.gyp:variations_java',
'../components/components.gyp:web_contents_delegate_android_java',
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 2d6a49b..c5eff40 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -155,8 +155,6 @@
'browser/android/resource_mapper.h',
'browser/android/seccomp_support_detector.cc',
'browser/android/seccomp_support_detector.h',
- 'browser/android/service_tab_launcher.cc',
- 'browser/android/service_tab_launcher.h',
'browser/android/shortcut_helper.cc',
'browser/android/shortcut_helper.h',
'browser/android/shortcut_info.cc',
@@ -1679,7 +1677,6 @@
'android/java/src/org/chromium/chrome/browser/profiles/ProfileDownloader.java',
'android/java/src/org/chromium/chrome/browser/prerender/ExternalPrerenderHandler.java',
'android/java/src/org/chromium/chrome/browser/RecentlyClosedBridge.java',
- 'android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java',
'android/java/src/org/chromium/chrome/browser/ShortcutHelper.java',
'android/java/src/org/chromium/chrome/browser/SSLClientCertificateRequest.java',
'android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java',
@@ -3488,6 +3485,7 @@
'../components/components.gyp:cdm_browser',
'../components/components.gyp:data_reduction_proxy_content',
'../components/components.gyp:enhanced_bookmarks',
+ '../components/components.gyp:service_tab_launcher',
'../components/components.gyp:web_contents_delegate_android',
'../components/components_resources.gyp:components_resources',
'../third_party/android_opengl/etc1/etc1.gyp:etc1',
diff --git a/components/components.gyp b/components/components.gyp
index 7f69f1c..67988d1 100644
--- a/components/components.gyp
+++ b/components/components.gyp
@@ -76,6 +76,11 @@
'webdata_services.gypi',
],
'conditions': [
+ ['OS == "android"', {
+ 'includes': [
+ 'service_tab_launcher.gypi',
+ ],
+ }],
['OS != "ios"', {
'includes': [
'app_modal.gypi',
diff --git a/components/service_tab_launcher.gypi b/components/service_tab_launcher.gypi
new file mode 100644
index 0000000..a6abf8a
--- /dev/null
+++ b/components/service_tab_launcher.gypi
@@ -0,0 +1,52 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+ 'targets': [
+ {
+ # GN: //components/serivce_tab_launcher:service_tab_launcher
+ 'target_name': 'service_tab_launcher',
+ 'type': 'static_library',
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../content/content.gyp:content_browser',
+ 'service_tab_launcher_jni_headers',
+ ],
+ 'include_dirs': [
+ '..',
+ ],
+ 'sources': [
+ 'service_tab_launcher/browser/android/service_tab_launcher.cc',
+ 'service_tab_launcher/browser/android/service_tab_launcher.h',
+ 'service_tab_launcher/component_jni_registrar.cc',
+ 'service_tab_launcher/component_jni_registrar.h',
+ ],
+ },
+ {
+ # GN: //components/serivce_tab_launcher:service_tab_launcher_java
+ 'target_name': 'service_tab_launcher_java',
+ 'type': 'none',
+ 'dependencies': [
+ '../base/base.gyp:base',
+ '../content/content.gyp:content_java',
+ ],
+ 'variables': {
+ 'java_in_dir': 'service_tab_launcher/android/java',
+ },
+ 'includes': [ '../build/java.gypi' ],
+ },
+ {
+ # GN: //components/serivce_tab_launcher:service_tab_launcher_jni_headers
+ 'target_name': 'service_tab_launcher_jni_headers',
+ 'type': 'none',
+ 'sources': [
+ 'service_tab_launcher/android/java/src/org/chromium/components/service_tab_launcher/ServiceTabLauncher.java',
+ ],
+ 'variables': {
+ 'jni_gen_package': 'service_tab_launcher',
+ },
+ 'includes': [ '../build/jni_generator.gypi' ],
+ },
+ ],
+}
diff --git a/components/service_tab_launcher/BUILD.gn b/components/service_tab_launcher/BUILD.gn
new file mode 100644
index 0000000..aeaea39
--- /dev/null
+++ b/components/service_tab_launcher/BUILD.gn
@@ -0,0 +1,38 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/android/rules.gni")
+
+# GYP: //components/service_tab_launcher:service_tab_launcher
+static_library("service_tab_launcher") {
+ sources = [
+ "browser/android/service_tab_launcher.cc",
+ "browser/android/service_tab_launcher.h",
+ "component_jni_registrar.cc",
+ "component_jni_registrar.h",
+ ]
+
+ deps = [
+ ":service_tab_launcher_jni_headers",
+ "//base",
+ "//content/public/browser",
+ ]
+}
+
+# GYP: //components/service_tab_launcher:service_tab_launcher_java
+android_library("service_tab_launcher_java") {
+ deps = [
+ "//base:base_java",
+ "//content/public/android:content_java",
+ ]
+ DEPRECATED_java_in_dir = "android/java/src"
+}
+
+# GYP: //components/service_tab_launcher:service_tab_launcher_jni_headers
+generate_jni("service_tab_launcher_jni_headers") {
+ sources = [
+ "android/java/src/org/chromium/components/service_tab_launcher/ServiceTabLauncher.java",
+ ]
+ jni_package = "service_tab_launcher"
+}
diff --git a/components/service_tab_launcher/DEPS b/components/service_tab_launcher/DEPS
new file mode 100644
index 0000000..49a3645
--- /dev/null
+++ b/components/service_tab_launcher/DEPS
@@ -0,0 +1,4 @@
+include_rules = [
+ "+content/public/browser",
+ "+jni",
+]
diff --git a/components/service_tab_launcher/OWNERS b/components/service_tab_launcher/OWNERS
new file mode 100644
index 0000000..dca8ea9
--- /dev/null
+++ b/components/service_tab_launcher/OWNERS
@@ -0,0 +1,3 @@
+tedchoc@chromium.org
+miguelg@chromium.org
+peter@chromium.org
diff --git a/components/service_tab_launcher/android/DEPS b/components/service_tab_launcher/android/DEPS
new file mode 100644
index 0000000..0d019e1
--- /dev/null
+++ b/components/service_tab_launcher/android/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+ "+content/public/android/java",
+]
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java b/components/service_tab_launcher/android/java/src/org/chromium/components/service_tab_launcher/ServiceTabLauncher.java
index 4eaf752..f782044 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java
+++ b/components/service_tab_launcher/android/java/src/org/chromium/components/service_tab_launcher/ServiceTabLauncher.java
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-package org.chromium.chrome.browser;
+package org.chromium.components.service_tab_launcher;
import android.content.Context;
import android.content.pm.ApplicationInfo;
@@ -22,11 +22,11 @@ import org.chromium.content_public.browser.WebContents;
public abstract class ServiceTabLauncher {
private static final String TAG = ServiceTabLauncher.class.getSimpleName();
private static final String SERVICE_TAB_LAUNCHER_KEY =
- "org.chromium.chrome.browser.SERVICE_TAB_LAUNCHER";
+ "org.chromium.components.service_tab_launcher.SERVICE_TAB_LAUNCHER";
// Name of the extra containing the Id of a tab launch request id.
public static final String LAUNCH_REQUEST_ID_EXTRA =
- "org.chromium.chrome.browser.ServiceTabLauncher.LAUNCH_REQUEST_ID";
+ "org.chromium.components.service_tab_launcher.ServiceTabLauncher.LAUNCH_REQUEST_ID";
private static ServiceTabLauncher sInstance;
diff --git a/chrome/browser/android/service_tab_launcher.cc b/components/service_tab_launcher/browser/android/service_tab_launcher.cc
index da4db67..7a1bc0f 100644
--- a/chrome/browser/android/service_tab_launcher.cc
+++ b/components/service_tab_launcher/browser/android/service_tab_launcher.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/android/service_tab_launcher.h"
+#include "components/service_tab_launcher/browser/android/service_tab_launcher.h"
#include "base/android/jni_string.h"
#include "base/callback.h"
@@ -18,13 +18,12 @@ using base::android::GetApplicationContext;
// Called by Java when the WebContents instance for a request Id is available.
void OnWebContentsForRequestAvailable(
JNIEnv* env, jclass clazz, jint request_id, jobject android_web_contents) {
- chrome::android::ServiceTabLauncher::GetInstance()->OnTabLaunched(
+ service_tab_launcher::ServiceTabLauncher::GetInstance()->OnTabLaunched(
request_id,
content::WebContents::FromJavaWebContents(android_web_contents));
}
-namespace chrome {
-namespace android {
+namespace service_tab_launcher {
// static
ServiceTabLauncher* ServiceTabLauncher::GetInstance() {
@@ -99,5 +98,4 @@ bool ServiceTabLauncher::RegisterServiceTabLauncher(JNIEnv* env) {
return RegisterNativesImpl(env);
}
-} // namespace android
-} // namespace chrome
+} // namespace service_tab_launcher
diff --git a/chrome/browser/android/service_tab_launcher.h b/components/service_tab_launcher/browser/android/service_tab_launcher.h
index 2906ceb..87beb75 100644
--- a/chrome/browser/android/service_tab_launcher.h
+++ b/components/service_tab_launcher/browser/android/service_tab_launcher.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_ANDROID_SERVICE_TAB_LAUNCHER_H_
-#define CHROME_BROWSER_ANDROID_SERVICE_TAB_LAUNCHER_H_
+#ifndef COMPONENTS_SERVICE_TAB_LAUNCHER_BROWSER_ANDROID_SERVICE_TAB_LAUNCHER_H_
+#define COMPONENTS_SERVICE_TAB_LAUNCHER_BROWSER_ANDROID_SERVICE_TAB_LAUNCHER_H_
#include "base/android/jni_android.h"
#include "base/callback_forward.h"
@@ -16,8 +16,7 @@ struct OpenURLParams;
class WebContents;
}
-namespace chrome {
-namespace android {
+namespace service_tab_launcher {
// Launcher for creating new tabs on Android from a background service, where
// there may not necessarily be an Activity or a tab model at all. When the
@@ -57,7 +56,6 @@ class ServiceTabLauncher {
DISALLOW_COPY_AND_ASSIGN(ServiceTabLauncher);
};
-} // namespace android
-} // namespace chrome
+} // namespace service_tab_launcher
-#endif // CHROME_BROWSER_ANDROID_SERVICE_TAB_LAUNCHER_H_
+#endif // COMPONENTS_SERVICE_TAB_LAUNCHER_BROWSER_ANDROID_SERVICE_TAB_LAUNCHER_H_
diff --git a/components/service_tab_launcher/component_jni_registrar.cc b/components/service_tab_launcher/component_jni_registrar.cc
new file mode 100644
index 0000000..69298f5
--- /dev/null
+++ b/components/service_tab_launcher/component_jni_registrar.cc
@@ -0,0 +1,23 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/service_tab_launcher/component_jni_registrar.h"
+
+#include "base/android/jni_android.h"
+#include "base/android/jni_registrar.h"
+#include "components/service_tab_launcher/browser/android/service_tab_launcher.h"
+
+namespace service_tab_launcher {
+
+static base::android::RegistrationMethod kComponentRegisteredMethods[] = {
+ { "ServiceTabLauncher", ServiceTabLauncher::RegisterServiceTabLauncher },
+};
+
+bool RegisterServiceTabLauncherJni(JNIEnv* env) {
+ return RegisterNativeMethods(env,
+ kComponentRegisteredMethods, arraysize(kComponentRegisteredMethods));
+}
+
+} // namespace service_tab_launcher
+
diff --git a/components/service_tab_launcher/component_jni_registrar.h b/components/service_tab_launcher/component_jni_registrar.h
new file mode 100644
index 0000000..19bef44
--- /dev/null
+++ b/components/service_tab_launcher/component_jni_registrar.h
@@ -0,0 +1,17 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_SERVICE_TAB_LAUNCHER_COMPONENT_JNI_REGISTRAR_H_
+#define COMPONENTS_SERVICE_TAB_LAUNCHER_COMPONENT_JNI_REGISTRAR_H_
+
+#include <jni.h>
+
+namespace service_tab_launcher {
+
+// Register all JNI bindings necessary for the service_tab_launcher component.
+bool RegisterServiceTabLauncherJni(JNIEnv* env);
+
+} // namespace service_tab_launcher
+
+#endif // COMPONENTS_SERVICE_TAB_LAUNCHER_COMPONENT_JNI_REGISTRAR_H_