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

Unified Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/help/HelpAndFeedback.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/help/HelpAndFeedback.java
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/help/HelpAndFeedback.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/help/HelpAndFeedback.java
new file mode 100644
index 0000000000000000000000000000000000000000..474af23a4505a310c81486b93cc37bd55d3906cf
--- /dev/null
+++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/help/HelpAndFeedback.java
@@ -0,0 +1,110 @@
+// 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.help;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.provider.Browser;
+import android.text.TextUtils;
+
+import org.chromium.base.ThreadUtils;
+import org.chromium.base.annotations.SuppressFBWarnings;
+import org.chromium.chrome.browser.ChromeMobileApplication;
+import org.chromium.chrome.browser.UrlConstants;
+import org.chromium.chrome.browser.UrlUtilities;
+
+/**
+ * Launches an activity that displays a relevant support page and has an option to provide feedback.
+ */
+public class HelpAndFeedback {
+
+ // These constants should be in sync with the context names on go/mobilehelprecs.
+ // If the context ID cannot be found, the default help page will be shown to the user.
+ public static final String CONTEXT_NEW_TAB = "mobile_new_tab";
+ public static final String CONTEXT_SEARCH_RESULTS = "mobile_search_results";
+ public static final String CONTEXT_WEBPAGE = "mobile_webpage";
+ public static final String CONTEXT_SETTINGS = "mobile_settings";
+ public static final String CONTEXT_INCOGNITO = "mobile_incognito";
+ public static final String CONTEXT_BOOKMARKS = "mobile_bookmarks";
+ public static final String CONTEXT_HISTORY = "mobile_history";
+ public static final String CONTEXT_ERROR = "mobile_error"; // not used for now
+ public static final String CONTEXT_PRIVACY = "mobile_privacy"; // not added for now
+ public static final String CONTEXT_TRANSLATE = "mobile_translate"; // not added for now
+ public static final String CONTEXT_GENERAL = "mobile_general";
+
+ protected static final String FALLBACK_SUPPORT_URL =
+ "https://support.google.com/chrome/topic/6069782";
+
+ private static HelpAndFeedback sInstance;
+
+ /**
+ * Returns the singleton instance of HelpAndFeedback, creating it if needed.
+ */
+ @SuppressFBWarnings("LI_LAZY_INIT_STATIC")
+ public static HelpAndFeedback getInstance(Context context) {
+ ThreadUtils.assertOnUiThread();
+ if (sInstance == null) {
+ sInstance = ((ChromeMobileApplication) context.getApplicationContext())
+ .createHelpAndFeedback();
+ }
+ return sInstance;
+ }
+
+ /**
+ * Starts an activity showing a help page for the specified context ID.
+ *
+ * @param activity The activity to use for starting the help activity and to take a
+ * screenshot of.
+ * @param helpContext One of the CONTEXT_* constants. This should describe the user's current
+ * context and will be used to show a more relevant help page.
+ * @param screenshot A screenshot of the current activity to include in the feedback the
+ * user sends, if any. If null, this method will take a screenshot of the
+ * activity (which will show a rendered page as black).
+ * @param url The URL of the current tab to include in the feedback the user sends, if any.
+ * This parameter can be null.
+ */
+ public void show(Activity activity, String helpContext, Bitmap screenshot, String url) {
+ launchFallbackSupportUri(activity);
+ }
+
+ /**
+ * Get help context ID from URL.
+ *
+ * @param url The URL to be checked.
+ * @param isIncognito Whether we are in incognito mode or not.
+ * @return Help context ID that matches the URL and incognito mode.
+ */
+ public static String getHelpContextIdFromUrl(String url, boolean isIncognito) {
+ if (TextUtils.isEmpty(url)) {
+ return CONTEXT_GENERAL;
+ } else if (url.startsWith(UrlConstants.BOOKMARKS_URL)) {
+ return CONTEXT_BOOKMARKS;
+ } else if (url.equals(UrlConstants.HISTORY_URL)) {
+ return CONTEXT_HISTORY;
+ // Note: For www.google.com the following function returns false.
+ } else if (UrlUtilities.nativeIsGoogleSearchUrl(url)) {
+ return CONTEXT_SEARCH_RESULTS;
+ // For incognito NTP, we want to show incognito help.
+ } else if (isIncognito) {
+ return CONTEXT_INCOGNITO;
+ } else if (url.equals(UrlConstants.NTP_URL)) {
+ return CONTEXT_NEW_TAB;
+ }
+ return CONTEXT_WEBPAGE;
+ }
+
+ protected static void launchFallbackSupportUri(Context context) {
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(FALLBACK_SUPPORT_URL));
+ // Let Chrome know that this intent is from Chrome, so that it does not close the app when
+ // the user presses 'back' button.
+ intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
+ intent.putExtra(Browser.EXTRA_CREATE_NEW_TAB, true);
+ intent.setPackage(context.getPackageName());
+ context.startActivity(intent);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698