Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(824)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java

Issue 1057533005: Make service tab launcher a component (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/BUILD.gn ('k') | chrome/android/shell/java/AndroidManifest.xml.jinja2 » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java
deleted file mode 100644
index 4eaf752fa0ca136f0ea6b771eaf9bf4a3949cd0c..0000000000000000000000000000000000000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/ServiceTabLauncher.java
+++ /dev/null
@@ -1,111 +0,0 @@
-// 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.
-
-package org.chromium.chrome.browser;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.util.Log;
-
-import org.chromium.base.CalledByNative;
-import org.chromium.content_public.browser.WebContents;
-
-/**
- * Tab Launcher to be used to launch new tabs from background Android Services, when it is not
- * known whether an activity is available. It will send an intent to launch the activity.
- *
- * TODO(peter): Have the activity confirm that the tab has been launched.
- */
-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";
-
- // 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";
-
- private static ServiceTabLauncher sInstance;
-
- /**
- * Launches the browser activity and launches a tab for |url|.
- *
- * @param context The context using which the URL is being loaded.
- * @param requestId Id of the request for launching this tab.
- * @param incognito Whether the tab should be launched in incognito mode.
- * @param url The URL which should be launched in a tab.
- * @param disposition The disposition requested by the navigation source.
- * @param referrerUrl URL of the referrer which is opening the page.
- * @param referrerPolicy The referrer policy to consider when applying the referrer.
- * @param extraHeaders Extra headers to apply when requesting the tab's URL.
- * @param postData Post-data to include in the tab URL's request body.
- */
- @CalledByNative
- public abstract void launchTab(Context context, int requestId, boolean incognito, String url,
- int disposition, String referrerUrl, int referrerPolicy,
- String extraHeaders, byte[] postData);
-
- /**
- * Returns the active instance of the ServiceTabLauncher. If none exists, a meta-data key will
- * be read from the AndroidManifest.xml file to determine the class which implements the
- * service tab launcher activity. If that fails, NULL will be returned instead.
- *
- * We need to do this run-around because the ServiceTabLauncher must be available from
- * background services, where no activity may be alive. Furthermore, no browser shell code has
- * to be involved in the process at all, which means that there's no common location where we
- * can inject a delegate in the start-up paths.
- *
- * @param Context The application context for the running service.
- */
- @CalledByNative
- private static ServiceTabLauncher getInstance(Context context) throws Exception {
- if (sInstance == null) {
- Class<?> implementation = getServiceTabLauncherClassFromManifest(context);
- if (implementation != null) {
- sInstance = (ServiceTabLauncher) implementation.newInstance();
- }
- }
-
- return sInstance;
- }
-
- /**
- * Reads the SERVICE_TAB_LAUNCHER_KEY from the manifest and returns the Class it
- * refers to. If the class cannot be found, NULL will be returned instead.
- *
- * @param context The application context used to get the package name and manager.
- */
- private static Class<?> getServiceTabLauncherClassFromManifest(Context context) {
- try {
- ApplicationInfo info = context.getPackageManager().getApplicationInfo(
- context.getPackageName(), PackageManager.GET_META_DATA);
- String className = info.metaData.getString(SERVICE_TAB_LAUNCHER_KEY);
-
- return Class.forName(className);
- } catch (NameNotFoundException e) {
- Log.e(TAG, "Context.getPackage() refers to an invalid package name.");
- } catch (ClassNotFoundException e) {
- Log.e(TAG, "Invalid value for SERVICE_TAB_LAUNCHER in the Android manifest file.");
- }
-
- return null;
- }
-
- /**
- * To be called by the activity when the WebContents for |requestId| has been created, or has
- * been recycled from previous use. The |webContents| must not yet have started provisional
- * load for the main frame.
- *
- * @param requestId Id of the tab launching request which has been fulfilled.
- * @param webContents The WebContents instance associated with this request.
- */
- public static void onWebContentsForRequestAvailable(int requestId, WebContents webContents) {
- nativeOnWebContentsForRequestAvailable(requestId, webContents);
- }
-
- private static native void nativeOnWebContentsForRequestAvailable(
- int requestId, WebContents webContents);
-}
« no previous file with comments | « chrome/android/BUILD.gn ('k') | chrome/android/shell/java/AndroidManifest.xml.jinja2 » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698