Commit b6ac86d5 authored by Colin Blundell's avatar Colin Blundell Committed by Commit Bot

[InfoBars] Componentize Chrome for Android's ConfirmInfoBar (Java/C++)

This class will be reused by Weblayer. //chrome deps have been cleaned
in a preceding CL, so the componentization is straightforward.

We will put the ConfirmInfoBar C++ object in the infobars namespace in
a followup.

Bug: 1099169
Change-Id: I38de225f93bfc5545febc9ce9061259cf1b9f8d4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2270566
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#783886}
parent a78c6631
......@@ -15,7 +15,7 @@ import androidx.appcompat.widget.SwitchCompat;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout;
......
......@@ -8,7 +8,7 @@ import android.graphics.Bitmap;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout;
......
......@@ -14,7 +14,7 @@ import android.view.View;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout;
import org.chromium.ui.UiUtils;
......
......@@ -17,8 +17,8 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.about_settings.AboutSettingsBridge;
import org.chromium.chrome.browser.datareduction.DataReductionPromoUtils;
import org.chromium.chrome.browser.omaha.VersionNumberGetter;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout;
import org.chromium.content_public.browser.WebContents;
......
......@@ -23,8 +23,8 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.download.DownloadManagerService;
import org.chromium.chrome.browser.download.DownloadOpenSource;
import org.chromium.chrome.browser.download.DownloadUtils;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.download.DownloadCollectionBridge;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBar;
import org.chromium.components.infobars.InfoBarLayout;
......
......@@ -8,7 +8,7 @@ import android.text.SpannableString;
import android.text.Spanned;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout;
import org.chromium.ui.text.NoUnderlineClickableSpan;
......
......@@ -11,8 +11,8 @@ import androidx.appcompat.content.res.AppCompatResources;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.instantapps.InstantAppsBannerData;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.browser_ui.widget.DualControlLayout;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBar;
import org.chromium.components.infobars.InfoBarLayout;
import org.chromium.components.url_formatter.SchemeDisplay;
......
......@@ -9,7 +9,7 @@ import android.graphics.Bitmap;
import androidx.annotation.ColorRes;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarLayout;
/**
......
......@@ -13,9 +13,9 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.settings.SettingsLauncher;
import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.browser_ui.site_settings.SingleCategorySettings;
import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarCompactLayout;
import org.chromium.components.infobars.InfoBarLayout;
import org.chromium.components.permissions.AndroidPermissionRequester;
......
......@@ -6,7 +6,7 @@ package org.chromium.chrome.browser.infobar;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBar;
import org.chromium.components.infobars.InfoBarLayout;
......
......@@ -11,7 +11,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.datareduction.settings.DataReductionPreferenceFragment;
import org.chromium.chrome.browser.settings.SettingsLauncher;
import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBar;
/**
......
......@@ -9,7 +9,7 @@ import android.graphics.Bitmap;
import androidx.annotation.ColorRes;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarLayout;
/**
......
......@@ -8,7 +8,7 @@ import android.text.TextUtils;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout;
......
......@@ -24,7 +24,7 @@ import org.chromium.chrome.browser.sync.ProfileSyncService;
import org.chromium.chrome.browser.sync.settings.SyncAndServicesSettings;
import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils;
import org.chromium.chrome.browser.sync.settings.SyncSettingsUtils.SyncError;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBar;
import org.chromium.components.infobars.InfoBarLayout;
import org.chromium.content_public.browser.WebContents;
......
......@@ -9,7 +9,7 @@ import android.widget.Spinner;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarControlLayout.InfoBarArrayAdapter;
......
......@@ -14,7 +14,7 @@ import androidx.annotation.VisibleForTesting;
import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ui.messages.infobar.ConfirmInfoBar;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout;
import org.chromium.ui.KeyboardVisibilityDelegate;
......
......@@ -683,8 +683,6 @@ static_library("ui") {
"android/infobars/autofill_save_card_infobar.h",
"android/infobars/chrome_confirm_infobar.cc",
"android/infobars/chrome_confirm_infobar.h",
"android/infobars/confirm_infobar.cc",
"android/infobars/confirm_infobar.h",
"android/infobars/data_reduction_promo_infobar.cc",
"android/infobars/data_reduction_promo_infobar.h",
"android/infobars/download_progress_infobar.cc",
......
......@@ -5,7 +5,7 @@
#ifndef CHROME_BROWSER_UI_ANDROID_INFOBARS_CHROME_CONFIRM_INFOBAR_H_
#define CHROME_BROWSER_UI_ANDROID_INFOBARS_CHROME_CONFIRM_INFOBAR_H_
#include "chrome/browser/ui/android/infobars/confirm_infobar.h"
#include "components/infobars/android/confirm_infobar.h"
class TabAndroid;
......
......@@ -23,7 +23,6 @@ android_resources("java_resources") {
android_library("java") {
sources = [
"java/src/org/chromium/chrome/browser/ui/messages/infobar/ConfirmInfoBar.java",
"java/src/org/chromium/chrome/browser/ui/messages/infobar/SimpleConfirmInfoBarBuilder.java",
"java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java",
"java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarCollection.java",
......@@ -52,10 +51,7 @@ android_library("java") {
}
generate_jni("jni_headers") {
sources = [
"java/src/org/chromium/chrome/browser/ui/messages/infobar/ConfirmInfoBar.java",
"java/src/org/chromium/chrome/browser/ui/messages/infobar/SimpleConfirmInfoBarBuilder.java",
]
sources = [ "java/src/org/chromium/chrome/browser/ui/messages/infobar/SimpleConfirmInfoBarBuilder.java" ]
}
java_library("junit") {
......
......@@ -37,6 +37,8 @@ android_resources("java_resources") {
static_library("android") {
sources = [
"confirm_infobar.cc",
"confirm_infobar.h",
"infobar_android.cc",
"infobar_android.h",
]
......@@ -45,11 +47,13 @@ static_library("android") {
":jni_headers",
"//base",
"//components/infobars/core",
"//ui/gfx",
]
}
android_library("java") {
sources = [
"java/src/org/chromium/components/infobars/ConfirmInfoBar.java",
"java/src/org/chromium/components/infobars/InfoBar.java",
"java/src/org/chromium/components/infobars/InfoBarCompactLayout.java",
"java/src/org/chromium/components/infobars/InfoBarControlLayout.java",
......@@ -84,7 +88,10 @@ android_library("infobar_android_enums_java") {
}
generate_jni("jni_headers") {
sources = [ "java/src/org/chromium/components/infobars/InfoBar.java" ]
sources = [
"java/src/org/chromium/components/infobars/ConfirmInfoBar.java",
"java/src/org/chromium/components/infobars/InfoBar.java",
]
}
android_library("javatests") {
......
......@@ -2,13 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/android/infobars/confirm_infobar.h"
#include "components/infobars/android/confirm_infobar.h"
#include <memory>
#include <utility>
#include "base/android/jni_string.h"
#include "chrome/browser/ui/messages/android/jni_headers/ConfirmInfoBar_jni.h"
#include "components/infobars/android/jni_headers/ConfirmInfoBar_jni.h"
#include "components/infobars/core/confirm_infobar_delegate.h"
#include "ui/gfx/android/java_bitmap.h"
#include "ui/gfx/image/image.h"
......@@ -20,14 +20,13 @@ ConfirmInfoBar::ConfirmInfoBar(std::unique_ptr<ConfirmInfoBarDelegate> delegate,
const ResourceIdMapper& resource_id_mapper)
: InfoBarAndroid(std::move(delegate), resource_id_mapper) {}
ConfirmInfoBar::~ConfirmInfoBar() {
}
ConfirmInfoBar::~ConfirmInfoBar() {}
base::string16 ConfirmInfoBar::GetTextFor(
ConfirmInfoBarDelegate::InfoBarButton button) {
ConfirmInfoBarDelegate* delegate = GetDelegate();
return (delegate->GetButtons() & button) ?
delegate->GetButtonLabel(button) : base::string16();
return (delegate->GetButtons() & button) ? delegate->GetButtonLabel(button)
: base::string16();
}
ConfirmInfoBarDelegate* ConfirmInfoBar::GetDelegate() {
......@@ -61,7 +60,7 @@ ScopedJavaLocalRef<jobject> ConfirmInfoBar::CreateRenderInfoBar(JNIEnv* env) {
void ConfirmInfoBar::OnLinkClicked(JNIEnv* env,
const JavaParamRef<jobject>& obj) {
if (!owner())
return; // We're closing; don't call anything, it might access the owner.
return; // We're closing; don't call anything, it might access the owner.
if (GetDelegate()->LinkClicked(WindowOpenDisposition::NEW_FOREGROUND_TAB))
RemoveSelf();
......@@ -69,12 +68,12 @@ void ConfirmInfoBar::OnLinkClicked(JNIEnv* env,
void ConfirmInfoBar::ProcessButton(int action) {
if (!owner())
return; // We're closing; don't call anything, it might access the owner.
return; // We're closing; don't call anything, it might access the owner.
DCHECK((action == InfoBarAndroid::ACTION_OK) ||
(action == InfoBarAndroid::ACTION_CANCEL));
(action == InfoBarAndroid::ACTION_CANCEL));
ConfirmInfoBarDelegate* delegate = GetDelegate();
if ((action == InfoBarAndroid::ACTION_OK) ?
delegate->Accept() : delegate->Cancel())
if ((action == InfoBarAndroid::ACTION_OK) ? delegate->Accept()
: delegate->Cancel())
RemoveSelf();
}
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_ANDROID_INFOBARS_CONFIRM_INFOBAR_H_
#define CHROME_BROWSER_UI_ANDROID_INFOBARS_CONFIRM_INFOBAR_H_
#ifndef COMPONENTS_INFOBARS_ANDROID_CONFIRM_INFOBAR_H_
#define COMPONENTS_INFOBARS_ANDROID_CONFIRM_INFOBAR_H_
#include "base/android/scoped_java_ref.h"
#include "base/macros.h"
......@@ -34,4 +34,4 @@ class ConfirmInfoBar : public InfoBarAndroid {
DISALLOW_COPY_AND_ASSIGN(ConfirmInfoBar);
};
#endif // CHROME_BROWSER_UI_ANDROID_INFOBARS_CONFIRM_INFOBAR_H_
#endif // COMPONENTS_INFOBARS_ANDROID_CONFIRM_INFOBAR_H_
......@@ -2,7 +2,7 @@
// 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.ui.messages.infobar;
package org.chromium.components.infobars;
import android.graphics.Bitmap;
......@@ -10,8 +10,6 @@ import androidx.annotation.ColorRes;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.browser.infobar.ActionType;
import org.chromium.components.infobars.InfoBar;
import org.chromium.components.infobars.InfoBarLayout;
/**
* An infobar that presents the user with several buttons.
......
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