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

[Modularization] Remove Tab reference from SimpleConfirmInfoBarBuilder

This CL enables moving SimpleConfirmInfoBarBuilder to
chrome/browser/ui/messages/android/

BUG=1056346
R=mdjones@chromium.org

Change-Id: I8b37f019d5e0bdeb6fb33614e76e263e4bad8808
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2113439
Commit-Queue: Pavel Yatsuk <pavely@chromium.org>
Reviewed-by: default avatarJoshua Pawlicki <waffles@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#761183}
parent 37080222
...@@ -327,7 +327,8 @@ public class ManualFillingIntegrationTest { ...@@ -327,7 +327,8 @@ public class ManualFillingIntegrationTest {
mActivityTestRule.getInfoBarContainer().addAnimationListener(listener); mActivityTestRule.getInfoBarContainer().addAnimationListener(listener);
final String kInfoBarText = "SomeInfoBar"; final String kInfoBarText = "SomeInfoBar";
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
SimpleConfirmInfoBarBuilder.create(mActivityTestRule.getActivity().getActivityTab(), SimpleConfirmInfoBarBuilder.create(
mActivityTestRule.getActivity().getActivityTab().getWebContents(),
InfoBarIdentifier.DUPLICATE_DOWNLOAD_INFOBAR_DELEGATE_ANDROID, kInfoBarText, InfoBarIdentifier.DUPLICATE_DOWNLOAD_INFOBAR_DELEGATE_ANDROID, kInfoBarText,
false); false);
}); });
...@@ -366,7 +367,8 @@ public class ManualFillingIntegrationTest { ...@@ -366,7 +367,8 @@ public class ManualFillingIntegrationTest {
mActivityTestRule.getInfoBarContainer().addAnimationListener(listener); mActivityTestRule.getInfoBarContainer().addAnimationListener(listener);
final String kInfoBarText = "SomeInfoBar"; final String kInfoBarText = "SomeInfoBar";
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
SimpleConfirmInfoBarBuilder.create(mActivityTestRule.getActivity().getActivityTab(), SimpleConfirmInfoBarBuilder.create(
mActivityTestRule.getActivity().getActivityTab().getWebContents(),
InfoBarIdentifier.DUPLICATE_DOWNLOAD_INFOBAR_DELEGATE_ANDROID, kInfoBarText, InfoBarIdentifier.DUPLICATE_DOWNLOAD_INFOBAR_DELEGATE_ANDROID, kInfoBarText,
false); false);
}); });
...@@ -446,7 +448,8 @@ public class ManualFillingIntegrationTest { ...@@ -446,7 +448,8 @@ public class ManualFillingIntegrationTest {
mActivityTestRule.getInfoBarContainer().addAnimationListener(listener); mActivityTestRule.getInfoBarContainer().addAnimationListener(listener);
final String kInfoBarText = "SomeInfoBar"; final String kInfoBarText = "SomeInfoBar";
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
SimpleConfirmInfoBarBuilder.create(mActivityTestRule.getActivity().getActivityTab(), SimpleConfirmInfoBarBuilder.create(
mActivityTestRule.getActivity().getActivityTab().getWebContents(),
InfoBarIdentifier.DUPLICATE_DOWNLOAD_INFOBAR_DELEGATE_ANDROID, kInfoBarText, InfoBarIdentifier.DUPLICATE_DOWNLOAD_INFOBAR_DELEGATE_ANDROID, kInfoBarText,
false); false);
}); });
......
...@@ -815,8 +815,8 @@ public class VrShellDelegate ...@@ -815,8 +815,8 @@ public class VrShellDelegate
} }
}; };
SimpleConfirmInfoBarBuilder.create(tab, listener, SimpleConfirmInfoBarBuilder.create(tab.getWebContents(), listener,
InfoBarIdentifier.VR_FEEDBACK_INFOBAR_ANDROID, InfoBarIdentifier.VR_FEEDBACK_INFOBAR_ANDROID, tab.getContext(),
org.chromium.chrome.vr.R.drawable.vr_services, org.chromium.chrome.vr.R.drawable.vr_services,
ContextUtils.getApplicationContext().getString( ContextUtils.getApplicationContext().getString(
org.chromium.chrome.vr.R.string.vr_shell_feedback_infobar_description), org.chromium.chrome.vr.R.string.vr_shell_feedback_infobar_description),
...@@ -1009,8 +1009,8 @@ public class VrShellDelegate ...@@ -1009,8 +1009,8 @@ public class VrShellDelegate
return false; return false;
} }
}; };
SimpleConfirmInfoBarBuilder.create(tab, listener, SimpleConfirmInfoBarBuilder.create(tab.getWebContents(), listener,
InfoBarIdentifier.VR_SERVICES_UPGRADE_ANDROID, InfoBarIdentifier.VR_SERVICES_UPGRADE_ANDROID, mActivity,
org.chromium.chrome.vr.R.drawable.vr_services, infobarText, buttonText, null, null, org.chromium.chrome.vr.R.drawable.vr_services, infobarText, buttonText, null, null,
true); true);
} }
......
...@@ -74,8 +74,8 @@ public class ChromeWindow extends ActivityWindowAndroid { ...@@ -74,8 +74,8 @@ public class ChromeWindow extends ActivityWindowAndroid {
Tab tab = activity != null ? ((ChromeActivity) activity).getActivityTab() : null; Tab tab = activity != null ? ((ChromeActivity) activity).getActivityTab() : null;
if (tab != null) { if (tab != null) {
SimpleConfirmInfoBarBuilder.create( SimpleConfirmInfoBarBuilder.create(tab.getWebContents(),
tab, InfoBarIdentifier.WINDOW_ERROR_INFOBAR_DELEGATE_ANDROID, error, false); InfoBarIdentifier.WINDOW_ERROR_INFOBAR_DELEGATE_ANDROID, error, false);
} else { } else {
super.showCallbackNonExistentError(error); super.showCallbackNonExistentError(error);
} }
......
...@@ -4,13 +4,13 @@ ...@@ -4,13 +4,13 @@
package org.chromium.chrome.browser.infobar; package org.chromium.chrome.browser.infobar;
import android.app.Activity; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.content_public.browser.WebContents;
/** /**
* Builds and shows a basic ConfirmInfoBar for code that works almost entirely in Java. * Builds and shows a basic ConfirmInfoBar for code that works almost entirely in Java.
...@@ -53,22 +53,24 @@ public class SimpleConfirmInfoBarBuilder { ...@@ -53,22 +53,24 @@ public class SimpleConfirmInfoBarBuilder {
* *
* Consider using snackbars instead of this function for ephemeral messages. * Consider using snackbars instead of this function for ephemeral messages.
* *
* @param tab Tab to attach the infobar to. * @param webContents WebContents for a Tab to attach the infobar to.
* @param infobarTypeIdentifier Unique ID defined in the C++ InfoBarDelegate::InfoBarIdentifier. * @param infobarTypeIdentifier Unique ID defined in the C++ InfoBarDelegate::InfoBarIdentifier.
* @param message Message displayed to the user. * @param message Message displayed to the user.
* @param autoExpire Whether the infobar disappears on navigation. * @param autoExpire Whether the infobar disappears on navigation.
*/ */
public static void create( public static void create(WebContents webContents, int infobarTypeIdentifier, String message,
Tab tab, int infobarTypeIdentifier, String message, boolean autoExpire) { boolean autoExpire) {
create(tab, null, infobarTypeIdentifier, 0, message, null, null, null, autoExpire); create(webContents, null, infobarTypeIdentifier, null, 0, message, null, null, null,
autoExpire);
} }
/** /**
* Creates a simple infobar to prompt the user. * Creates a simple infobar to prompt the user.
* *
* @param tab Tab to attach the infobar to. * @param webContents WebContents for a Tab to attach the infobar to.
* @param listener Alerted when the user interacts with the infobar. * @param listener Alerted when the user interacts with the infobar.
* @param infobarTypeIdentifier Unique ID defined in the C++ InfoBarDelegate::InfoBarIdentifier. * @param infobarTypeIdentifier Unique ID defined in the C++ InfoBarDelegate::InfoBarIdentifier.
* @param context Context for loading bitmap referred by drawableId.
* @param drawableId Resource ID of the icon representing the infobar. * @param drawableId Resource ID of the icon representing the infobar.
* @param message Message displayed to the user. * @param message Message displayed to the user.
* @param primaryText String shown on the primary ConfirmInfoBar button. * @param primaryText String shown on the primary ConfirmInfoBar button.
...@@ -76,14 +78,14 @@ public class SimpleConfirmInfoBarBuilder { ...@@ -76,14 +78,14 @@ public class SimpleConfirmInfoBarBuilder {
* @param linkText String shown as the link text on the ConfirmInfoBar. * @param linkText String shown as the link text on the ConfirmInfoBar.
* @param autoExpire Whether the infobar disappears on navigation. * @param autoExpire Whether the infobar disappears on navigation.
*/ */
public static void create(Tab tab, Listener listener, int infobarTypeIdentifier, int drawableId, public static void create(WebContents webContents, Listener listener, int infobarTypeIdentifier,
String message, String primaryText, String secondaryText, String linkText, Context context, int drawableId, String message, String primaryText,
boolean autoExpire) { String secondaryText, String linkText, boolean autoExpire) {
Activity activity = tab.getWindowAndroid().getActivity().get(); Bitmap drawable = context == null || drawableId == 0
Bitmap drawable = activity == null || drawableId == 0 ? null ? null
: BitmapFactory.decodeResource(activity.getResources(), drawableId); : BitmapFactory.decodeResource(context.getResources(), drawableId);
SimpleConfirmInfoBarBuilderJni.get().create(tab, infobarTypeIdentifier, drawable, message, SimpleConfirmInfoBarBuilderJni.get().create(webContents, infobarTypeIdentifier, drawable,
primaryText, secondaryText, linkText, autoExpire, listener); message, primaryText, secondaryText, linkText, autoExpire, listener);
} }
@CalledByNative @CalledByNative
...@@ -103,9 +105,9 @@ public class SimpleConfirmInfoBarBuilder { ...@@ -103,9 +105,9 @@ public class SimpleConfirmInfoBarBuilder {
@NativeMethods @NativeMethods
interface Natives { interface Natives {
void create(Tab tab, int infobarTypeIdentifier, Bitmap drawable, String message, void create(WebContents webContents, int infobarTypeIdentifier, Bitmap drawable,
String primaryText, String secondaryText, String linkText, boolean autoExpire, String message, String primaryText, String secondaryText, String linkText,
Object listener); boolean autoExpire, Object listener);
} }
} }
...@@ -114,8 +114,8 @@ public class ModuleInstallUi { ...@@ -114,8 +114,8 @@ public class ModuleInstallUi {
String text = String.format(context.getString(R.string.module_install_failure_text), String text = String.format(context.getString(R.string.module_install_failure_text),
context.getResources().getString(mModuleTitleStringId)); context.getResources().getString(mModuleTitleStringId));
SimpleConfirmInfoBarBuilder.create(mTab, listener, SimpleConfirmInfoBarBuilder.create(mTab.getWebContents(), listener,
InfoBarIdentifier.MODULE_INSTALL_FAILURE_INFOBAR_ANDROID, InfoBarIdentifier.MODULE_INSTALL_FAILURE_INFOBAR_ANDROID, context,
R.drawable.ic_error_outline_googblue_24dp, text, R.drawable.ic_error_outline_googblue_24dp, text,
context.getString(R.string.try_again), context.getString(R.string.cancel), context.getString(R.string.try_again), context.getString(R.string.cancel),
/* linkText = */ null, /* autoExpire = */ true); /* linkText = */ null, /* autoExpire = */ true);
......
...@@ -76,7 +76,7 @@ public class UpdateInfoBarController implements Destroyable { ...@@ -76,7 +76,7 @@ public class UpdateInfoBarController implements Destroyable {
Tab tab = mActivity.getActivityTabProvider().get(); Tab tab = mActivity.getActivityTabProvider().get();
if (tab == null) return; if (tab == null) return;
SimpleConfirmInfoBarBuilder.create(tab, SimpleConfirmInfoBarBuilder.create(tab.getWebContents(),
new SimpleConfirmInfoBarBuilder.Listener() { new SimpleConfirmInfoBarBuilder.Listener() {
@Override @Override
public void onInfoBarDismissed() {} public void onInfoBarDismissed() {}
...@@ -92,7 +92,7 @@ public class UpdateInfoBarController implements Destroyable { ...@@ -92,7 +92,7 @@ public class UpdateInfoBarController implements Destroyable {
return false; return false;
} }
}, },
InfoBarIdentifier.INLINE_UPDATE_READY_INFOBAR_ANDROID, InfoBarIdentifier.INLINE_UPDATE_READY_INFOBAR_ANDROID, mActivity,
R.drawable.infobar_chrome /* drawableId */, R.drawable.infobar_chrome /* drawableId */,
mActivity.getString(R.string.inline_update_infobar_ready_message) /* message */, mActivity.getString(R.string.inline_update_infobar_ready_message) /* message */,
null /* primaryText */, null /* secondaryText */, null /* primaryText */, null /* secondaryText */,
...@@ -106,7 +106,7 @@ public class UpdateInfoBarController implements Destroyable { ...@@ -106,7 +106,7 @@ public class UpdateInfoBarController implements Destroyable {
Tab tab = mActivity.getActivityTabProvider().get(); Tab tab = mActivity.getActivityTabProvider().get();
if (tab == null) return; if (tab == null) return;
SimpleConfirmInfoBarBuilder.create(tab, SimpleConfirmInfoBarBuilder.create(tab.getWebContents(),
new SimpleConfirmInfoBarBuilder.Listener() { new SimpleConfirmInfoBarBuilder.Listener() {
@Override @Override
public void onInfoBarDismissed() {} public void onInfoBarDismissed() {}
...@@ -122,7 +122,7 @@ public class UpdateInfoBarController implements Destroyable { ...@@ -122,7 +122,7 @@ public class UpdateInfoBarController implements Destroyable {
return false; return false;
} }
}, },
InfoBarIdentifier.INLINE_UPDATE_FAILED_INFOBAR_ANDROID, InfoBarIdentifier.INLINE_UPDATE_FAILED_INFOBAR_ANDROID, mActivity,
R.drawable.infobar_chrome /* drawableId */, R.drawable.infobar_chrome /* drawableId */,
mActivity.getString(R.string.inline_update_infobar_failed_message) /* message */, mActivity.getString(R.string.inline_update_infobar_failed_message) /* message */,
mActivity.getString(R.string.try_again) /* primaryText */, mActivity.getString(R.string.try_again) /* primaryText */,
......
...@@ -155,7 +155,8 @@ public class ArCoreInstallUtils { ...@@ -155,7 +155,8 @@ public class ArCoreInstallUtils {
} }
}; };
// TODO(ijamardo, https://crbug.com/838833): Add icon for AR info bar. // TODO(ijamardo, https://crbug.com/838833): Add icon for AR info bar.
SimpleConfirmInfoBarBuilder.create(tab, listener, InfoBarIdentifier.AR_CORE_UPGRADE_ANDROID, SimpleConfirmInfoBarBuilder.create(tab.getWebContents(), listener,
InfoBarIdentifier.AR_CORE_UPGRADE_ANDROID, tab.getContext(),
R.drawable.ic_error_outline_googblue_24dp, infobarText, buttonText, null, null, R.drawable.ic_error_outline_googblue_24dp, infobarText, buttonText, null, null,
true); true);
} }
......
...@@ -109,8 +109,9 @@ public class InfoBarContainerTest { ...@@ -109,8 +109,9 @@ public class InfoBarContainerTest {
final TestListener testListener = new TestListener(); final TestListener testListener = new TestListener();
PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
SimpleConfirmInfoBarBuilder.create(mActivityTestRule.getActivity().getActivityTab(), SimpleConfirmInfoBarBuilder.create(
testListener, InfoBarIdentifier.TEST_INFOBAR, 0, MESSAGE_TEXT, null, null, null, mActivityTestRule.getActivity().getActivityTab().getWebContents(), testListener,
InfoBarIdentifier.TEST_INFOBAR, null, 0, MESSAGE_TEXT, null, null, null,
expires); expires);
}); });
mListener.addInfoBarAnimationFinished("InfoBar not added."); mListener.addInfoBarAnimationFinished("InfoBar not added.");
......
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
#include "base/android/scoped_java_ref.h" #include "base/android/scoped_java_ref.h"
#include "base/macros.h" #include "base/macros.h"
#include "chrome/android/chrome_jni_headers/SimpleConfirmInfoBarBuilder_jni.h" #include "chrome/android/chrome_jni_headers/SimpleConfirmInfoBarBuilder_jni.h"
#include "chrome/browser/android/tab_android.h"
#include "chrome/browser/infobars/infobar_service.h" #include "chrome/browser/infobars/infobar_service.h"
#include "components/infobars/core/confirm_infobar_delegate.h" #include "components/infobars/core/confirm_infobar_delegate.h"
#include "components/infobars/core/infobar.h" #include "components/infobars/core/infobar.h"
#include "content/public/browser/web_contents.h"
#include "ui/gfx/android/java_bitmap.h" #include "ui/gfx/android/java_bitmap.h"
#include "ui/gfx/image/image.h" #include "ui/gfx/image/image.h"
...@@ -143,7 +143,7 @@ bool SimpleConfirmInfoBarDelegate::Cancel() { ...@@ -143,7 +143,7 @@ bool SimpleConfirmInfoBarDelegate::Cancel() {
void JNI_SimpleConfirmInfoBarBuilder_Create( void JNI_SimpleConfirmInfoBarBuilder_Create(
JNIEnv* env, JNIEnv* env,
const JavaParamRef<jobject>& j_tab, const JavaParamRef<jobject>& j_web_contents,
jint j_identifier, jint j_identifier,
const JavaParamRef<jobject>& j_icon, const JavaParamRef<jobject>& j_icon,
const JavaParamRef<jstring>& j_message, const JavaParamRef<jstring>& j_message,
...@@ -176,7 +176,7 @@ void JNI_SimpleConfirmInfoBarBuilder_Create( ...@@ -176,7 +176,7 @@ void JNI_SimpleConfirmInfoBarBuilder_Create(
: base::android::ConvertJavaStringToUTF16(env, j_link_text); : base::android::ConvertJavaStringToUTF16(env, j_link_text);
InfoBarService* service = InfoBarService::FromWebContents( InfoBarService* service = InfoBarService::FromWebContents(
TabAndroid::GetNativeTab(env, j_tab)->web_contents()); content::WebContents::FromJavaWebContents(j_web_contents));
service->AddInfoBar(service->CreateConfirmInfoBar( service->AddInfoBar(service->CreateConfirmInfoBar(
std::make_unique<SimpleConfirmInfoBarDelegate>( std::make_unique<SimpleConfirmInfoBarDelegate>(
j_listener, infobar_identifier, icon_bitmap, message_str, primary_str, j_listener, infobar_identifier, icon_bitmap, message_str, primary_str,
......
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