diff options
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_ |