Commit f2fe86ed authored by Pavel Yatsuk's avatar Pavel Yatsuk Committed by Commit Bot

Move Snackbar implementation to chrome/browser

This CL moves SnackbarView.java, Snackbar.java, SnackbarCollection.java,
SnackbarManager.java. Tests will be moved in a separate CL.

BUG=1028382
R=mdjones@chromium.org

Change-Id: I847ce100b03fb3b4596ed02c2c32d2f8505ba4c5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1974902
Commit-Queue: Pavel Yatsuk <pavely@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#727637}
parent 5c64ad91
...@@ -267,6 +267,7 @@ android_library("chrome_java") { ...@@ -267,6 +267,7 @@ android_library("chrome_java") {
"//chrome/browser/ui/android/appmenu:factory_java", "//chrome/browser/ui/android/appmenu:factory_java",
"//chrome/browser/ui/android/appmenu:java", "//chrome/browser/ui/android/appmenu:java",
"//chrome/browser/ui/android/widget:java", "//chrome/browser/ui/android/widget:java",
"//chrome/browser/ui/messages/android:java",
"//chrome/browser/util:java", "//chrome/browser/util:java",
"//chrome/lib/lifecycle/public/android:java", "//chrome/lib/lifecycle/public/android:java",
"//components/app_modal/android:java", "//components/app_modal/android:java",
...@@ -788,6 +789,7 @@ android_library("chrome_test_java") { ...@@ -788,6 +789,7 @@ android_library("chrome_test_java") {
"//chrome/browser/ui/android/appmenu:test_support_java", "//chrome/browser/ui/android/appmenu:test_support_java",
"//chrome/browser/ui/android/widget:java", "//chrome/browser/ui/android/widget:java",
"//chrome/browser/ui/android/widget:test_support_java", "//chrome/browser/ui/android/widget:test_support_java",
"//chrome/browser/ui/messages/android:java",
"//chrome/browser/util:java", "//chrome/browser/util:java",
"//chrome/lib/lifecycle/public/android:java", "//chrome/lib/lifecycle/public/android:java",
"//chrome/test/android:chrome_java_test_support", "//chrome/test/android:chrome_java_test_support",
......
...@@ -1528,10 +1528,6 @@ chrome_java_sources = [ ...@@ -1528,10 +1528,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java", "java/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBar.java",
"java/src/org/chromium/chrome/browser/sms/SmsReceiverUma.java", "java/src/org/chromium/chrome/browser/sms/SmsReceiverUma.java",
"java/src/org/chromium/chrome/browser/snackbar/BottomContainer.java", "java/src/org/chromium/chrome/browser/snackbar/BottomContainer.java",
"java/src/org/chromium/chrome/browser/snackbar/Snackbar.java",
"java/src/org/chromium/chrome/browser/snackbar/SnackbarCollection.java",
"java/src/org/chromium/chrome/browser/snackbar/SnackbarManager.java",
"java/src/org/chromium/chrome/browser/snackbar/SnackbarView.java",
"java/src/org/chromium/chrome/browser/snackbar/smartlockautosignin/AutoSigninSnackbarController.java", "java/src/org/chromium/chrome/browser/snackbar/smartlockautosignin/AutoSigninSnackbarController.java",
"java/src/org/chromium/chrome/browser/snackbar/undo/UndoBarController.java", "java/src/org/chromium/chrome/browser/snackbar/undo/UndoBarController.java",
"java/src/org/chromium/chrome/browser/ssl/CaptivePortalHelper.java", "java/src/org/chromium/chrome/browser/ssl/CaptivePortalHelper.java",
......
...@@ -39,6 +39,7 @@ android_library("java") { ...@@ -39,6 +39,7 @@ android_library("java") {
"//chrome/android/public/profiles:java", "//chrome/android/public/profiles:java",
"//chrome/browser/image_fetcher:java", "//chrome/browser/image_fetcher:java",
"//chrome/browser/ui/android/widget:java", "//chrome/browser/ui/android/widget:java",
"//chrome/browser/ui/messages/android:java",
"//chrome/browser/util:java", "//chrome/browser/util:java",
"//components/browser_ui/modaldialog/android:java", "//components/browser_ui/modaldialog/android:java",
"//components/policy/android:policy_java", "//components/policy/android:policy_java",
......
...@@ -61,6 +61,7 @@ android_library("test_java") { ...@@ -61,6 +61,7 @@ android_library("test_java") {
"//chrome/android:chrome_test_java", "//chrome/android:chrome_test_java",
"//chrome/android:chrome_test_util_java", "//chrome/android:chrome_test_util_java",
"//chrome/android/public/profiles:java", "//chrome/android/public/profiles:java",
"//chrome/browser/ui/messages/android:java",
"//chrome/test/android:chrome_java_test_support", "//chrome/test/android:chrome_java_test_support",
"//components/autofill/android:autofill_java", "//components/autofill/android:autofill_java",
"//components/autofill/core/common/mojom:mojo_types_java", "//components/autofill/core/common/mojom:mojo_types_java",
......
...@@ -120,6 +120,7 @@ android_library("java") { ...@@ -120,6 +120,7 @@ android_library("java") {
"//chrome/app:java_strings_grd", "//chrome/app:java_strings_grd",
"//chrome/browser/ui/android/strings:ui_strings_grd", "//chrome/browser/ui/android/strings:ui_strings_grd",
"//chrome/browser/ui/android/widget:java", "//chrome/browser/ui/android/widget:java",
"//chrome/browser/ui/messages/android:java",
"//chrome/browser/util:java", "//chrome/browser/util:java",
"//chrome/lib/lifecycle/public/android:java", "//chrome/lib/lifecycle/public/android:java",
"//components/browser_ui/styles/android:java", "//components/browser_ui/styles/android:java",
......
dtrainor@chromium.org dtrainor@chromium.org
mdjones@chromium.org mdjones@chromium.org
pavely@chromium.org pavely@chromium.org
twellington@chromium.org
# COMPONENT: UI>Browser>Mobile>Messages # COMPONENT: UI>Browser>Mobile>Messages
# OS: Android # OS: Android
...@@ -7,6 +7,27 @@ android_resources("java_resources") { ...@@ -7,6 +7,27 @@ android_resources("java_resources") {
custom_package = "org.chromium.chrome.ui.messages" custom_package = "org.chromium.chrome.ui.messages"
resource_dirs = [ "java/res" ] resource_dirs = [ "java/res" ]
deps = [ deps = [
"//chrome/browser/ui/android/strings:ui_strings_grd",
"//components/browser_ui/strings/android:browser_ui_strings_grd",
"//ui/android:ui_java_resources", "//ui/android:ui_java_resources",
] ]
} }
android_library("java") {
java_files = [
"java/src/org/chromium/chrome/browser/snackbar/SnackbarView.java",
"java/src/org/chromium/chrome/browser/snackbar/Snackbar.java",
"java/src/org/chromium/chrome/browser/snackbar/SnackbarCollection.java",
"java/src/org/chromium/chrome/browser/snackbar/SnackbarManager.java",
]
deps = [
":java_resources",
"//base:base_java",
"//chrome/browser/ui/android/widget:java",
"//chrome/browser/util:java",
"//components/browser_ui/styles/android:java_resources",
"//components/browser_ui/widget/android:java",
"//third_party/android_deps:com_android_support_support_compat_java",
"//ui/android:ui_full_java",
]
}
include_rules = [
"+components/browser_ui/widget/android/java",
]
...@@ -10,8 +10,8 @@ import androidx.annotation.IntDef; ...@@ -10,8 +10,8 @@ import androidx.annotation.IntDef;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController; import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarController;
import org.chromium.chrome.ui.messages.R;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
...@@ -120,8 +120,8 @@ public class Snackbar { ...@@ -120,8 +120,8 @@ public class Snackbar {
* @param type Type of the snackbar. Either {@link #TYPE_ACTION} or {@link #TYPE_NOTIFICATION}. * @param type Type of the snackbar. Either {@link #TYPE_ACTION} or {@link #TYPE_NOTIFICATION}.
* @param identifier The feature code of the snackbar. Should be one of the UMA* constants above * @param identifier The feature code of the snackbar. Should be one of the UMA* constants above
*/ */
public static Snackbar make(CharSequence text, SnackbarController controller, int type, public static Snackbar make(
int identifier) { CharSequence text, SnackbarController controller, int type, int identifier) {
Snackbar s = new Snackbar(); Snackbar s = new Snackbar();
s.mText = text; s.mText = text;
s.mController = controller; s.mController = controller;
...@@ -296,5 +296,7 @@ public class Snackbar { ...@@ -296,5 +296,7 @@ public class Snackbar {
/** So tests can trigger a press on a Snackbar. */ /** So tests can trigger a press on a Snackbar. */
@VisibleForTesting @VisibleForTesting
public Object getActionDataForTesting() { return mActionData; } public Object getActionDataForTesting() {
return mActionData;
}
} }
...@@ -60,8 +60,11 @@ class SnackbarCollection { ...@@ -60,8 +60,11 @@ class SnackbarCollection {
} }
if (current != null) { if (current != null) {
SnackbarController controller = current.getController(); SnackbarController controller = current.getController();
if (isAction) controller.onAction(current.getActionData()); if (isAction) {
else controller.onDismissNoAction(current.getActionData()); controller.onAction(current.getActionData());
} else {
controller.onDismissNoAction(current.getActionData());
}
} }
return current; return current;
} }
...@@ -106,8 +109,8 @@ class SnackbarCollection { ...@@ -106,8 +109,8 @@ class SnackbarCollection {
|| removeSnackbarFromList(mPersistentSnackbars, controller); || removeSnackbarFromList(mPersistentSnackbars, controller);
} }
private static boolean removeSnackbarFromList(Deque<Snackbar> list, private static boolean removeSnackbarFromList(
SnackbarController controller) { Deque<Snackbar> list, SnackbarController controller) {
boolean snackbarRemoved = false; boolean snackbarRemoved = false;
Iterator<Snackbar> iter = list.iterator(); Iterator<Snackbar> iter = list.iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
...@@ -127,8 +130,8 @@ class SnackbarCollection { ...@@ -127,8 +130,8 @@ class SnackbarCollection {
|| removeSnackbarFromList(mPersistentSnackbars, controller, data); || removeSnackbarFromList(mPersistentSnackbars, controller, data);
} }
private static boolean removeSnackbarFromList(Deque<Snackbar> list, private static boolean removeSnackbarFromList(
SnackbarController controller, Object data) { Deque<Snackbar> list, SnackbarController controller, Object data) {
boolean snackbarRemoved = false; boolean snackbarRemoved = false;
Iterator<Snackbar> iter = list.iterator(); Iterator<Snackbar> iter = list.iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
...@@ -149,4 +152,4 @@ class SnackbarCollection { ...@@ -149,4 +152,4 @@ class SnackbarCollection {
if (a == null || b == null) return false; if (a == null || b == null) return false;
return a.equals(b); return a.equals(b);
} }
} }
\ No newline at end of file
...@@ -50,13 +50,13 @@ public class SnackbarManager implements OnClickListener, ActivityStateListener { ...@@ -50,13 +50,13 @@ public class SnackbarManager implements OnClickListener, ActivityStateListener {
* Called when the user clicks the action button on the snackbar. * Called when the user clicks the action button on the snackbar.
* @param actionData Data object passed when showing this specific snackbar. * @param actionData Data object passed when showing this specific snackbar.
*/ */
default void onAction(Object actionData) { } default void onAction(Object actionData) {}
/** /**
* Called when the snackbar is dismissed by timeout or UI environment change. * Called when the snackbar is dismissed by timeout or UI environment change.
* @param actionData Data object associated with the dismissed snackbar entry. * @param actionData Data object associated with the dismissed snackbar entry.
*/ */
default void onDismissNoAction(Object actionData) { } default void onDismissNoAction(Object actionData) {}
} }
public static final int DEFAULT_SNACKBAR_DURATION_MS = 3000; public static final int DEFAULT_SNACKBAR_DURATION_MS = 3000;
...@@ -246,7 +246,6 @@ public class SnackbarManager implements OnClickListener, ActivityStateListener { ...@@ -246,7 +246,6 @@ public class SnackbarManager implements OnClickListener, ActivityStateListener {
mView.announceforAccessibility(); mView.announceforAccessibility();
} }
} }
} }
private int getDuration(Snackbar snackbar) { private int getDuration(Snackbar snackbar) {
......
...@@ -155,10 +155,10 @@ public class SnackbarView { ...@@ -155,10 +155,10 @@ public class SnackbarView {
lp.bottomMargin = getBottomMarginForLayout(); lp.bottomMargin = getBottomMarginForLayout();
if (mIsTablet) { if (mIsTablet) {
int margin = mParent.getResources() int margin = mParent.getResources().getDimensionPixelSize(
.getDimensionPixelSize(R.dimen.snackbar_margin_tablet); R.dimen.snackbar_margin_tablet);
int width = mParent.getResources() int width =
.getDimensionPixelSize(R.dimen.snackbar_width_tablet); mParent.getResources().getDimensionPixelSize(R.dimen.snackbar_width_tablet);
lp.width = Math.min(width, mParent.getWidth() - 2 * margin); lp.width = Math.min(width, mParent.getWidth() - 2 * margin);
lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
} }
...@@ -206,8 +206,7 @@ public class SnackbarView { ...@@ -206,8 +206,7 @@ public class SnackbarView {
*/ */
public void announceforAccessibility() { public void announceforAccessibility() {
mMessageView.announceForAccessibility(mMessageView.getContentDescription() + " " mMessageView.announceForAccessibility(mMessageView.getContentDescription() + " "
+ mContainerView.getResources().getString( + mContainerView.getResources().getString(R.string.bottom_bar_screen_position));
org.chromium.chrome.R.string.bottom_bar_screen_position));
} }
/** /**
...@@ -234,8 +233,8 @@ public class SnackbarView { ...@@ -234,8 +233,8 @@ public class SnackbarView {
private static int getBackgroundColor(View view, Snackbar snackbar) { private static int getBackgroundColor(View view, Snackbar snackbar) {
// Themes are used first. // Themes are used first.
if (snackbar.getTheme() == Snackbar.Theme.GOOGLE) { if (snackbar.getTheme() == Snackbar.Theme.GOOGLE) {
return ApiCompatibilityUtils.getColor( return ApiCompatibilityUtils.getColor(view.getResources(),
view.getResources(), org.chromium.chrome.R.color.light_active_color); org.chromium.components.browser_ui.styles.R.color.light_active_color);
} }
assert snackbar.getTheme() == Snackbar.Theme.BASIC; assert snackbar.getTheme() == Snackbar.Theme.BASIC;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment