Commit 0c68e670 authored by siashah's avatar siashah Committed by Chromium LUCI CQ

Add support for the Offer infobar

The change does not do anything, once crrev.com/c/2528698 is merged, a
follow-up change will add code to trigger the infobar and the
instrumentation tests along with it.

UX mock: https://screenshot.googleplex.com/5eMqi7HmpZj7NoB
Implementation: https://screenshot.googleplex.com/8QVPnCpZQYSGih4

The bottom confetti in the UX mock will be implemented as a follow-up.

Bug: 1093057
Change-Id: I8f7326cac3c9830080408ab789a47b3b3e4e34e7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2612398Reviewed-by: default avatarSiddharth Shah <siashah@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarEvan Stade <estade@chromium.org>
Reviewed-by: default avatarJared Saul <jsaul@google.com>
Reviewed-by: default avatarSiyu An <siyua@chromium.org>
Commit-Queue: Siddharth Shah <siashah@chromium.org>
Cr-Commit-Position: refs/heads/master@{#843818}
parent f9dff698
...@@ -3323,6 +3323,7 @@ generate_jni("chrome_jni_headers") { ...@@ -3323,6 +3323,7 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/historyreport/HistoryReportJniBridge.java", "java/src/org/chromium/chrome/browser/historyreport/HistoryReportJniBridge.java",
"java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java", "java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillCreditCardFillingInfoBar.java", "java/src/org/chromium/chrome/browser/infobar/AutofillCreditCardFillingInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillOfferNotificationInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java", "java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBarDelegate.java", "java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBarDelegate.java",
"java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java", "java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java",
......
...@@ -688,6 +688,7 @@ chrome_java_sources = [ ...@@ -688,6 +688,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/incognito/IncognitoTabSnapshotController.java", "java/src/org/chromium/chrome/browser/incognito/IncognitoTabSnapshotController.java",
"java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java", "java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillCreditCardFillingInfoBar.java", "java/src/org/chromium/chrome/browser/infobar/AutofillCreditCardFillingInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillOfferNotificationInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java", "java/src/org/chromium/chrome/browser/infobar/AutofillSaveCardInfoBar.java",
"java/src/org/chromium/chrome/browser/infobar/CardDetail.java", "java/src/org/chromium/chrome/browser/infobar/CardDetail.java",
"java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBar.java", "java/src/org/chromium/chrome/browser/infobar/DataReductionPromoInfoBar.java",
......
// Copyright 2021 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.infobar;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.ImageSpan;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.R;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout;
import org.chromium.ui.UiUtils;
import org.chromium.ui.text.NoUnderlineClickableSpan;
/**
* Infobar to be displayed when an offer is available for the current merchant website.
*/
public class AutofillOfferNotificationInfoBar extends ConfirmInfoBar {
private final long mNativeAutofillOfferNotificationInfoBar;
private String mCreditCardIdentifierString;
private String mOfferDeepLinkUrl;
private String mTitleText;
private int mHeaderIconDrawableId;
private int mNetworkIconDrawableId = -1;
private AutofillOfferNotificationInfoBar(long nativeAutofillOfferNotificationInfoBar,
int headerIconDrawableId, String title, String positiveButtonLabel,
String offerDeepLinkUrl) {
// No icon is specified here; it is rather added in |createContent|. This hides the
// ImageView that normally shows the icon and gets rid of the left padding of the infobar
// content.
super(/*iconId= */ 0, /* iconTintId= */ 0, /* iconBitmap= */ null, title,
/*linkText= */ null, positiveButtonLabel, /*secondaryButtonText= */ null);
this.mNativeAutofillOfferNotificationInfoBar = nativeAutofillOfferNotificationInfoBar;
this.mOfferDeepLinkUrl = offerDeepLinkUrl;
this.mTitleText = title;
this.mHeaderIconDrawableId = headerIconDrawableId;
}
@CalledByNative
private static AutofillOfferNotificationInfoBar create(
long nativeAutofillOfferNotificationInfoBar, int headerIconDrawableId, String title,
String positiveButtonLabel, String offerDeepLinkUrl) {
return new AutofillOfferNotificationInfoBar(nativeAutofillOfferNotificationInfoBar,
headerIconDrawableId, title, positiveButtonLabel, offerDeepLinkUrl);
}
@CalledByNative
private void setCreditCardDetails(
String creditCardIdentifierString, int networkIconDrawableId) {
mCreditCardIdentifierString = creditCardIdentifierString;
this.mNetworkIconDrawableId = networkIconDrawableId;
}
@Override
public void createContent(InfoBarLayout layout) {
super.createContent(layout);
if (TextUtils.isEmpty(mCreditCardIdentifierString) || mHeaderIconDrawableId == 0
|| mNetworkIconDrawableId == 0) {
return;
}
UiUtils.removeViewFromParent(layout.getMessageTextView());
layout.getMessageLayout().addIconTitle(mHeaderIconDrawableId, mTitleText);
InfoBarControlLayout control = layout.addControlLayout();
String prefix = getContext().getString(R.string.autofill_offers_reminder_description_text);
SpannableStringBuilder text =
new SpannableStringBuilder(prefix + " " + mCreditCardIdentifierString);
// Set the network icon.
ImageSpan span =
new ImageSpan(getContext(), mNetworkIconDrawableId, ImageSpan.ALIGN_CENTER);
text.setSpan(span, prefix.length(), prefix.length() + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
// Set the offer deep link.
if (!TextUtils.isEmpty(mOfferDeepLinkUrl)) {
String linkText =
getContext().getString(R.string.autofill_offers_reminder_deep_link_text);
NoUnderlineClickableSpan noUnderlineClickableSpan = new NoUnderlineClickableSpan(
getContext().getResources(),
(view)
-> AutofillOfferNotificationInfoBarJni.get().onOfferDeepLinkClicked(
mNativeAutofillOfferNotificationInfoBar,
AutofillOfferNotificationInfoBar.this, mOfferDeepLinkUrl));
SpannableString linkSpan = new SpannableString(" " + linkText);
linkSpan.setSpan(noUnderlineClickableSpan, 2, linkText.length() + 2,
Spanned.SPAN_INCLUSIVE_INCLUSIVE);
text.append(linkSpan);
}
control.addDescription(text);
}
@NativeMethods
interface Natives {
void onOfferDeepLinkClicked(long nativeAutofillOfferNotificationInfoBar,
AutofillOfferNotificationInfoBar caller, String url);
}
}
// Copyright 2021 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.
#include "components/autofill/core/browser/payments/autofill_offer_notification_infobar_delegate_mobile.h"
#include <memory>
#include "components/autofill/core/browser/autofill_test_utils.h"
#include "components/infobars/core/infobar_delegate.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace autofill {
TEST(AutofillOfferNotificationInfoBarDelegateMobileTest,
CreditCardIdentifierString) {
CreditCard card = test::GetCreditCard();
std::unique_ptr<AutofillOfferNotificationInfoBarDelegateMobile> delegate =
std::make_unique<AutofillOfferNotificationInfoBarDelegateMobile>(card);
EXPECT_EQ(delegate->credit_card_identifier_string(),
card.CardIdentifierStringForAutofillDisplay());
}
} // namespace autofill
...@@ -675,6 +675,8 @@ static_library("ui") { ...@@ -675,6 +675,8 @@ static_library("ui") {
"android/external_protocol_dialog_android.cc", "android/external_protocol_dialog_android.cc",
"android/infobars/autofill_credit_card_filling_infobar.cc", "android/infobars/autofill_credit_card_filling_infobar.cc",
"android/infobars/autofill_credit_card_filling_infobar.h", "android/infobars/autofill_credit_card_filling_infobar.h",
"android/infobars/autofill_offer_notification_infobar.cc",
"android/infobars/autofill_offer_notification_infobar.h",
"android/infobars/autofill_save_card_infobar.cc", "android/infobars/autofill_save_card_infobar.cc",
"android/infobars/autofill_save_card_infobar.h", "android/infobars/autofill_save_card_infobar.h",
"android/infobars/chrome_confirm_infobar.cc", "android/infobars/chrome_confirm_infobar.cc",
......
// Copyright 2021 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.
#include "chrome/browser/ui/android/infobars/autofill_offer_notification_infobar.h"
#include <utility>
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "chrome/android/chrome_jni_headers/AutofillOfferNotificationInfoBar_jni.h"
#include "chrome/browser/android/android_theme_resources.h"
#include "chrome/browser/android/resource_mapper.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "components/autofill/core/browser/payments/autofill_offer_notification_infobar_delegate_mobile.h"
#include "components/autofill/core/browser/payments/autofill_save_card_infobar_mobile.h"
#include "components/autofill/core/browser/payments/legal_message_line.h"
#include "ui/gfx/android/java_bitmap.h"
#include "ui/gfx/image/image.h"
#include "url/gurl.h"
using base::android::ScopedJavaLocalRef;
AutofillOfferNotificationInfoBar::AutofillOfferNotificationInfoBar(
std::unique_ptr<autofill::AutofillOfferNotificationInfoBarDelegateMobile>
delegate)
: ChromeConfirmInfoBar(std::move(delegate)) {}
AutofillOfferNotificationInfoBar::~AutofillOfferNotificationInfoBar() {}
void AutofillOfferNotificationInfoBar::OnOfferDeepLinkClicked(JNIEnv* env,
jobject obj,
jstring url) {
GetOfferNotificationDelegate()->OnOfferDeepLinkClicked(
GURL(base::android::ConvertJavaStringToUTF16(env, url)));
}
base::android::ScopedJavaLocalRef<jobject>
AutofillOfferNotificationInfoBar::CreateRenderInfoBar(
JNIEnv* env,
const ResourceIdMapper& resource_id_mapper) {
autofill::AutofillOfferNotificationInfoBarDelegateMobile* delegate =
GetOfferNotificationDelegate();
base::android::ScopedJavaLocalRef<jobject> java_delegate =
Java_AutofillOfferNotificationInfoBar_create(
env, reinterpret_cast<intptr_t>(this),
resource_id_mapper.Run(delegate->GetIconId()),
base::android::ConvertUTF16ToJavaString(env,
delegate->GetMessageText()),
base::android::ConvertUTF16ToJavaString(
env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK)),
base::android::ConvertUTF16ToJavaString(env,
delegate->deep_link_url()));
Java_AutofillOfferNotificationInfoBar_setCreditCardDetails(
env, java_delegate,
base::android::ConvertUTF16ToJavaString(
env, delegate->credit_card_identifier_string()),
resource_id_mapper.Run(delegate->network_icon_id()));
return java_delegate;
}
autofill::AutofillOfferNotificationInfoBarDelegateMobile*
AutofillOfferNotificationInfoBar::GetOfferNotificationDelegate() {
return static_cast<autofill::AutofillOfferNotificationInfoBarDelegateMobile*>(
GetDelegate());
}
// Copyright 2021 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.
#ifndef CHROME_BROWSER_UI_ANDROID_INFOBARS_AUTOFILL_OFFER_NOTIFICATION_INFOBAR_H_
#define CHROME_BROWSER_UI_ANDROID_INFOBARS_AUTOFILL_OFFER_NOTIFICATION_INFOBAR_H_
#include <jni.h>
#include <memory>
#include "base/macros.h"
#include "chrome/browser/ui/android/infobars/chrome_confirm_infobar.h"
namespace autofill {
class AutofillOfferNotificationInfoBarDelegateMobile;
}
// Android implementation of the infobar for showing offer notifications on a
// web page when an offer exists for that merchant.
class AutofillOfferNotificationInfoBar : public ChromeConfirmInfoBar {
public:
explicit AutofillOfferNotificationInfoBar(
std::unique_ptr<autofill::AutofillOfferNotificationInfoBarDelegateMobile>
delegate);
~AutofillOfferNotificationInfoBar() override;
AutofillOfferNotificationInfoBar(const AutofillOfferNotificationInfoBar&) =
delete;
AutofillOfferNotificationInfoBar& operator=(
const AutofillOfferNotificationInfoBar&) = delete;
// Called when a link in the legal message text was clicked.
void OnOfferDeepLinkClicked(JNIEnv* env, jobject obj, jstring url);
private:
// ChromeConfirmInfoBar:
base::android::ScopedJavaLocalRef<jobject> CreateRenderInfoBar(
JNIEnv* env,
const ResourceIdMapper& resource_id_mapper) override;
// Returns the infobar delegate.
autofill::AutofillOfferNotificationInfoBarDelegateMobile*
GetOfferNotificationDelegate();
};
#endif // CHROME_BROWSER_UI_ANDROID_INFOBARS_AUTOFILL_OFFER_NOTIFICATION_INFOBAR_H_
...@@ -4368,6 +4368,7 @@ test("unit_tests") { ...@@ -4368,6 +4368,7 @@ test("unit_tests") {
"../browser/autofill/address_accessory_controller_impl_unittest.cc", "../browser/autofill/address_accessory_controller_impl_unittest.cc",
"../browser/autofill/autofill_credit_card_filling_infobar_delegate_mobile_unittest.cc", "../browser/autofill/autofill_credit_card_filling_infobar_delegate_mobile_unittest.cc",
"../browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc", "../browser/autofill/autofill_keyboard_accessory_adapter_unittest.cc",
"../browser/autofill/autofill_offer_notification_infobar_delegate_mobile_unittest.cc",
"../browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc", "../browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc",
"../browser/autofill/credit_card_accessory_controller_impl_unittest.cc", "../browser/autofill/credit_card_accessory_controller_impl_unittest.cc",
"../browser/autofill/manual_filling_controller_impl_unittest.cc", "../browser/autofill/manual_filling_controller_impl_unittest.cc",
......
...@@ -348,6 +348,8 @@ static_library("browser") { ...@@ -348,6 +348,8 @@ static_library("browser") {
sources += [ sources += [
"payments/autofill_credit_card_filling_infobar_delegate_mobile.cc", "payments/autofill_credit_card_filling_infobar_delegate_mobile.cc",
"payments/autofill_credit_card_filling_infobar_delegate_mobile.h", "payments/autofill_credit_card_filling_infobar_delegate_mobile.h",
"payments/autofill_offer_notification_infobar_delegate_mobile.cc",
"payments/autofill_offer_notification_infobar_delegate_mobile.h",
"payments/autofill_save_card_infobar_delegate_mobile.cc", "payments/autofill_save_card_infobar_delegate_mobile.cc",
"payments/autofill_save_card_infobar_delegate_mobile.h", "payments/autofill_save_card_infobar_delegate_mobile.h",
"payments/autofill_save_card_infobar_mobile.h", "payments/autofill_save_card_infobar_mobile.h",
......
// Copyright 2021 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.
#include "components/autofill/core/browser/payments/autofill_offer_notification_infobar_delegate_mobile.h"
#include <utility>
#include "base/check_op.h"
#include "base/notreached.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "build/branding_buildflags.h"
#include "components/autofill/core/browser/autofill_experiments.h"
#include "components/autofill/core/browser/data_model/credit_card.h"
#include "components/autofill/core/common/autofill_constants.h"
#include "components/autofill/core/common/autofill_features.h"
#include "components/autofill/core/common/autofill_payments_features.h"
#include "components/autofill/core/common/autofill_prefs.h"
#include "components/grit/components_scaled_resources.h"
#include "components/infobars/core/infobar.h"
#include "components/infobars/core/infobar_delegate.h"
#include "components/infobars/core/infobar_manager.h"
#include "components/prefs/pref_service.h"
#include "components/strings/grit/components_strings.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/window_open_disposition.h"
#include "url/gurl.h"
namespace autofill {
AutofillOfferNotificationInfoBarDelegateMobile::
AutofillOfferNotificationInfoBarDelegateMobile(const CreditCard& card)
: credit_card_identifier_string_(
card.CardIdentifierStringForAutofillDisplay()),
network_icon_id_(CreditCard::IconResourceId(card.network())) {}
AutofillOfferNotificationInfoBarDelegateMobile::
~AutofillOfferNotificationInfoBarDelegateMobile() {}
void AutofillOfferNotificationInfoBarDelegateMobile::OnOfferDeepLinkClicked(
GURL url) {
infobar()->owner()->OpenURL(url, WindowOpenDisposition::NEW_FOREGROUND_TAB);
}
int AutofillOfferNotificationInfoBarDelegateMobile::GetIconId() const {
return IDR_AUTOFILL_GOOGLE_PAY_WITH_DIVIDER;
}
base::string16 AutofillOfferNotificationInfoBarDelegateMobile::GetMessageText()
const {
return l10n_util::GetStringUTF16(IDS_AUTOFILL_OFFERS_REMINDER_TITLE);
}
infobars::InfoBarDelegate::InfoBarIdentifier
AutofillOfferNotificationInfoBarDelegateMobile::GetIdentifier() const {
return AUTOFILL_OFFER_NOTIFICATION_INFOBAR_DELEGATE;
}
int AutofillOfferNotificationInfoBarDelegateMobile::GetButtons() const {
return BUTTON_OK;
}
base::string16 AutofillOfferNotificationInfoBarDelegateMobile::GetButtonLabel(
InfoBarButton button) const {
if (button == BUTTON_OK) {
return l10n_util::GetStringUTF16(
IDS_AUTOFILL_OFFERS_REMINDER_POSITIVE_BUTTON_LABEL);
}
NOTREACHED() << "Unsupported button label requested: " << button;
return base::string16();
}
} // namespace autofill
// Copyright 2021 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.
#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_PAYMENTS_AUTOFILL_OFFER_NOTIFICATION_INFOBAR_DELEGATE_MOBILE_H_
#define COMPONENTS_AUTOFILL_CORE_BROWSER_PAYMENTS_AUTOFILL_OFFER_NOTIFICATION_INFOBAR_DELEGATE_MOBILE_H_
#include <memory>
#include "base/callback.h"
#include "base/macros.h"
#include "base/strings/string16.h"
#include "build/build_config.h"
#include "components/autofill/core/browser/autofill_client.h"
#include "components/autofill/core/browser/autofill_metrics.h"
#include "components/autofill/core/browser/payments/legal_message_line.h"
#include "components/infobars/core/confirm_infobar_delegate.h"
namespace autofill {
class CreditCard;
// An InfoBarDelegate that provides the information required to display an
// InfoBar when an offer is available on the merchant website.
class AutofillOfferNotificationInfoBarDelegateMobile
: public ConfirmInfoBarDelegate {
public:
AutofillOfferNotificationInfoBarDelegateMobile(const CreditCard& card);
~AutofillOfferNotificationInfoBarDelegateMobile() override;
AutofillOfferNotificationInfoBarDelegateMobile(
const AutofillOfferNotificationInfoBarDelegateMobile&) = delete;
AutofillOfferNotificationInfoBarDelegateMobile& operator=(
const AutofillOfferNotificationInfoBarDelegateMobile&) = delete;
const base::string16& credit_card_identifier_string() const {
return credit_card_identifier_string_;
}
int network_icon_id() { return network_icon_id_; }
const base::string16& deep_link_url() const { return deep_link_url_; }
// Called when the offer details deep link was clicked.
virtual void OnOfferDeepLinkClicked(GURL url);
// ConfirmInfoBarDelegate:
int GetIconId() const override;
base::string16 GetMessageText() const override;
infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const override;
int GetButtons() const override;
base::string16 GetButtonLabel(InfoBarButton button) const override;
private:
// Identifier for the credit card associated with the offer.
base::string16 credit_card_identifier_string_;
// Resource id for the icon representing the network of the credit card.
int network_icon_id_;
// URL that links to the offer details page in the Google Pay app.
base::string16 deep_link_url_;
};
} // namespace autofill
#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_PAYMENTS_AUTOFILL_OFFER_NOTIFICATION_INFOBAR_DELEGATE_MOBILE_H_
...@@ -505,5 +505,16 @@ ...@@ -505,5 +505,16 @@
<message name="IDS_AUTOFILL_OFFERS_CASHBACK" desc="Displays that a cashback offer will be rewarded if credit card is used on current page. Part of Autofill suggestions popup."> <message name="IDS_AUTOFILL_OFFERS_CASHBACK" desc="Displays that a cashback offer will be rewarded if credit card is used on current page. Part of Autofill suggestions popup.">
Cashback linked Cashback linked
</message> </message>
<message name="IDS_AUTOFILL_OFFERS_REMINDER_TITLE" desc="Title of the infobar shown on the merchant website when an offer is available to use.">
Don't forget your Google Pay offer
</message>
<message name="IDS_AUTOFILL_OFFERS_REMINDER_POSITIVE_BUTTON_LABEL" desc="Label for the positive button for the infobar shown on the merchant website when an offer is available to use.">
Got it
</message>
<message name="IDS_AUTOFILL_OFFERS_REMINDER_DESCRIPTION_TEXT" desc="Label for the positive button for the infobar shown on the merchant website when an offer is available to use." formatter_data="android_java">
Check out with
</message>
<message name="IDS_AUTOFILL_OFFERS_REMINDER_DEEP_LINK_TEXT" desc="Text to be linked to take the user to the offer in the Google Pay app." formatter_data="android_java">
See details.
</message>
</grit-part> </grit-part>
479d2c91dfda3d47d82243ac63a33c4189c3e9a1
\ No newline at end of file
479d2c91dfda3d47d82243ac63a33c4189c3e9a1
\ No newline at end of file
479d2c91dfda3d47d82243ac63a33c4189c3e9a1
\ No newline at end of file
...@@ -172,6 +172,7 @@ class InfoBarDelegate { ...@@ -172,6 +172,7 @@ class InfoBarDelegate {
EXPERIMENTAL_INFOBAR_DELEGATE_LACROS = 102, EXPERIMENTAL_INFOBAR_DELEGATE_LACROS = 102,
ROSETTA_REQUIRED_INFOBAR_DELEGATE = 103, ROSETTA_REQUIRED_INFOBAR_DELEGATE = 103,
WEBID_PERMISSION_INFOBAR_DELEGATE = 104, WEBID_PERMISSION_INFOBAR_DELEGATE = 104,
AUTOFILL_OFFER_NOTIFICATION_INFOBAR_DELEGATE = 105,
}; };
// Describes navigation events, used to decide whether infobars should be // Describes navigation events, used to decide whether infobars should be
......
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