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

Unified Diff: remoting/android/java/src/org/chromium/chromoting/help/FeedbackSender.java

Issue 2381543003: [Remoting Android] Separate help and feedback in navigation drawer (Closed)
Patch Set: Reviewer's Feedback Created 4 years, 3 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: remoting/android/java/src/org/chromium/chromoting/help/FeedbackSender.java
diff --git a/remoting/android/java/src/org/chromium/chromoting/help/FeedbackSender.java b/remoting/android/java/src/org/chromium/chromoting/help/FeedbackSender.java
new file mode 100644
index 0000000000000000000000000000000000000000..90316a18aa322d5705b53a562d5168b1917cbd2d
--- /dev/null
+++ b/remoting/android/java/src/org/chromium/chromoting/help/FeedbackSender.java
@@ -0,0 +1,87 @@
+// Copyright 2016 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.chromoting.help;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.graphics.Bitmap;
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.RemoteException;
+import android.view.View;
+
+import org.chromium.base.Log;
+import org.chromium.ui.UiUtils;
+
+/**
+ * This is a helper class for sending feedback.
+ */
+public class FeedbackSender {
+ private static final String TAG = "Chromoting";
+
+ /**
+ * Maximum dimension for the screenshot to be sent to the Send Feedback handler. This size
+ * ensures the size of bitmap < 1MB, which is a requirement of the handler.
+ */
+ private static final int MAX_FEEDBACK_SCREENSHOT_DIMENSION = 600;
+
+ private static final String FEEDBACK_PACKAGE = "com.google.android.gms";
+
+ private static final String FEEDBACK_CLASS =
+ "com.google.android.gms.feedback.LegacyBugReportService";
+
+ private static final int SEND_FEEDBACK_INFO = Binder.FIRST_CALL_TRANSACTION;
+
+ /**
+ * Opens the feedback activity with a generated screenshot.
+ * @param activity The activity for grabbing the screenshot and acting as the context.
+ */
+ public static void sendFeedback(Activity activity) {
+ View rootView = activity.getWindow().getDecorView().getRootView();
+ Bitmap screenshot = UiUtils.generateScaledScreenshot(rootView,
+ MAX_FEEDBACK_SCREENSHOT_DIMENSION,
+ Bitmap.Config.ARGB_8888);
+ sendFeedback(activity, screenshot);
+ }
+
+ /**
+ * Opens the feedback activity with the given screenshot image.
+ * @param context The context for resource.
+ * @param screenshot The screenshot image.
+ */
+ public static void sendFeedback(Context context, final Bitmap screenshot) {
+ Intent intent = new Intent(Intent.ACTION_BUG_REPORT);
+ intent.setComponent(new ComponentName(FEEDBACK_PACKAGE, FEEDBACK_CLASS));
+ if (context.getPackageManager().resolveService(intent, 0) == null) {
+ Log.e(TAG, "Unable to resolve Feedback service.");
+ return;
+ }
+
+ ServiceConnection conn = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ try {
+ Parcel parcel = Parcel.obtain();
+ if (screenshot != null) {
+ screenshot.writeToParcel(parcel, 0);
+ }
+ service.transact(SEND_FEEDBACK_INFO, parcel, null, 0);
+ parcel.recycle();
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Unexpected error sending feedback: ", ex);
+ }
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName name) {}
+ };
+
+ context.bindService(intent, conn, Context.BIND_AUTO_CREATE);
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698