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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/blimp/ui/BlimpMessageBuilder.java

Issue 2391263005: Propagate error messages to UI for blimp. (Closed)
Patch Set: Minor fixes. Created 4 years, 2 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/src/org/chromium/chrome/browser/blimp/ui/BlimpMessageBuilder.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/blimp/ui/BlimpMessageBuilder.java b/chrome/android/java/src/org/chromium/chrome/browser/blimp/ui/BlimpMessageBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..0b78033d3eed578ceb55e3013eb49c1774c65b98
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/blimp/ui/BlimpMessageBuilder.java
@@ -0,0 +1,90 @@
+// 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.chrome.browser.blimp.ui;
+
+import android.app.Activity;
+
+import org.chromium.base.ApplicationStatus;
+import org.chromium.base.VisibleForTesting;
+import org.chromium.chrome.browser.snackbar.Snackbar;
+import org.chromium.chrome.browser.snackbar.SnackbarManager;
+import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
+import org.chromium.ui.widget.Toast;
+
+/**
+ * BlimpMessageBuilder is a helper class to show message in a {@link Snackbar} or Toast.
+ */
+public class BlimpMessageBuilder implements SnackbarController {
+ public enum MessageLength {
+ SHORT,
+ LONG,
+ }
+
+ private static final int BLIMP_SNACKBAR_DURATION_LONG_MS = 6000;
+ private static final int BLIMP_SNACKBAR_DURATION_SHORT_MS = 3000;
+
+ private Snackbar mSnackbar;
+ private MessageLength mLength = MessageLength.LONG;
+
+ /**
+ * Show a message in a {@link Snackbar} or {@link Toast}.
+ * If the current foreground activity doesn't have a {@link SnackbarManager}, fall back to
+ * show a Toast.
+ * @param message Message to show.
+ */
+ public void showMessage(String message) {
+ mSnackbar = null;
+ Activity activity = ApplicationStatus.getLastTrackedFocusedActivity();
+ SnackbarManager manager = getSnackbarManager(activity);
+
+ // Fall back to show Toast if no SnackbarManager is found in the foreground activity.
+ if (manager == null) {
+ int length = (mLength == MessageLength.SHORT ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG);
+ Toast.makeText(activity, message, length).show();
+ return;
+ }
+
+ // Show a Snackbar message.
+ int length = (mLength == MessageLength.SHORT ? BLIMP_SNACKBAR_DURATION_SHORT_MS
+ : BLIMP_SNACKBAR_DURATION_LONG_MS);
+ mSnackbar = Snackbar.make(message, this, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_BLIMP)
+ .setSingleLine(false)
+ .setDuration(length);
+ manager.showSnackbar(mSnackbar);
+ }
+
+ /**
+ * Set the message duration.
+ * @param length Message length defined in {@link MessageLength}.
+ * @return The message builder.
+ */
+ public BlimpMessageBuilder setDuration(MessageLength length) {
+ mLength = length;
+ return this;
+ }
+
+ @Override
+ public void onAction(Object actionData) {}
+
+ @Override
+ public void onDismissNoAction(Object actionData) {}
+
+ /**
+ * Get {@link SnackbarManager} of current focused activity.
+ * @return The SnackbarManager or null if the activity doesn't hold a SnackbarManager.
+ */
+ @VisibleForTesting
+ protected SnackbarManager getSnackbarManager(Activity activity) {
+ if (activity != null && activity instanceof SnackbarManager.SnackbarManageable) {
+ return ((SnackbarManager.SnackbarManageable) activity).getSnackbarManager();
+ }
+ return null;
+ }
+
+ @VisibleForTesting
+ protected Snackbar getSnackbarForTest() {
+ return mSnackbar;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698