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

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

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 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
Index: chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeServiceTabLauncher.java
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeServiceTabLauncher.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeServiceTabLauncher.java
new file mode 100644
index 0000000000000000000000000000000000000000..ef7b6d79becd616c8a1f80d65cdbf01f509ce3d8
--- /dev/null
+++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/ChromeServiceTabLauncher.java
@@ -0,0 +1,73 @@
+// 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.Intent;
+import android.net.Uri;
+
+import org.chromium.chrome.browser.document.ChromeLauncherActivity;
+import org.chromium.chrome.browser.document.DocumentMetricIds;
+import org.chromium.chrome.browser.document.PendingDocumentData;
+import org.chromium.chrome.browser.util.FeatureUtilities;
+import org.chromium.components.service_tab_launcher.ServiceTabLauncher;
+import org.chromium.content_public.common.Referrer;
+import org.chromium.ui.base.PageTransition;
+
+/**
+ * Service Tab Launcher implementation for Chrome. Provides the ability for Android Services
+ * running in Chrome to launch tabs, without having access to an activity.
+ *
+ * This class is referred to from the ServiceTabLauncher implementation in Chromium using a
+ * meta-data value in the Android manifest file. The ServiceTabLauncher class has more
+ * documentation about why this is necessary.
+ *
+ * TODO(peter): after upstreaming, merge this with ServiceTabLauncher and remove reflection calls
+ * in ServiceTabLauncher.
+ */
+public class ChromeServiceTabLauncher extends ServiceTabLauncher {
+ @Override
+ public void launchTab(Context context, int requestId, boolean incognito, String url,
+ int disposition, String referrerUrl, int referrerPolicy,
+ String extraHeaders, byte[] postData) {
+ // TODO(peter): Determine the intent source based on the |disposition| with which the
+ // tab is being launched. Right now this is gated by a check in the native implementation.
+ int intentSource = DocumentMetricIds.STARTED_BY_WINDOW_OPEN;
+
+ if (FeatureUtilities.isDocumentMode(context)) {
+ PendingDocumentData data = new PendingDocumentData();
+ data.url = url;
+ data.postData = postData;
+ data.extraHeaders = extraHeaders;
+ data.referrer = new Referrer(referrerUrl, referrerPolicy);
+ data.requestId = requestId;
+
+ ChromeLauncherActivity.launchDocumentInstance(null /* activity */, incognito,
+ ChromeLauncherActivity.LAUNCH_MODE_FOREGROUND, url, intentSource,
+ PageTransition.LINK, false /* useDesktopUserAgent */, data);
+ return;
+ }
+
+ Intent intent = new Intent(context, ChromeLauncherActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setAction(Intent.ACTION_VIEW);
+
+ intent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, incognito);
+ intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, PageTransition.LINK);
+ intent.putExtra(IntentHandler.EXTRA_STARTED_BY, intentSource);
+ intent.putExtra(IntentHandler.EXTRA_USE_DESKTOP_USER_AGENT, false);
+
+ intent.putExtra(ServiceTabLauncher.LAUNCH_REQUEST_ID_EXTRA, requestId);
+
+ // TODO(peter): We should include the referrer, extra headers and the post data in the
+ // new tab request where supported by the tabbed activity.
+
+ intent.setData(Uri.parse(url));
+
+ IntentHandler.addTrustedIntentExtras(intent, context);
+
+ context.startActivity(intent);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698