diff --git a/weblayer/browser/java/BUILD.gn b/weblayer/browser/java/BUILD.gn
index 2096e9fe5317e..2a37ef2d211f4 100644
--- a/weblayer/browser/java/BUILD.gn
+++ b/weblayer/browser/java/BUILD.gn
@@ -96,7 +96,6 @@ android_library("java") {
     "org/chromium/weblayer_private/FragmentWindowAndroid.java",
     "org/chromium/weblayer_private/FullscreenCallbackProxy.java",
     "org/chromium/weblayer_private/InfoBar.java",
-    "org/chromium/weblayer_private/InfoBarCompactLayout.java",
     "org/chromium/weblayer_private/InfoBarContainer.java",
     "org/chromium/weblayer_private/InfoBarContainerLayout.java",
     "org/chromium/weblayer_private/InfoBarContainerView.java",
@@ -249,6 +248,7 @@ android_library("test_java") {
     ":java",
     ":weblayer_test_resources",
     "//base:jni_java",
+    "//components/infobars/android:java",
     "//components/location/android:location_java",
     "//components/permissions/android:java",
     "//content/public/test/android:content_java_test_support",
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/InfoBar.java b/weblayer/browser/java/org/chromium/weblayer_private/InfoBar.java
index 69e4754d98b79..be4b20c6bd89c 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/InfoBar.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/InfoBar.java
@@ -16,6 +16,7 @@ import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.chrome.browser.infobar.InfoBarIdentifier;
+import org.chromium.components.infobars.InfoBarCompactLayout;
 import org.chromium.components.infobars.InfoBarInteractionHandler;
 import org.chromium.components.infobars.InfoBarLayout;
 import org.chromium.ui.modelutil.PropertyModel;
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/InfoBarCompactLayout.java b/weblayer/browser/java/org/chromium/weblayer_private/InfoBarCompactLayout.java
deleted file mode 100644
index c2303eaea6b74..0000000000000
--- a/weblayer/browser/java/org/chromium/weblayer_private/InfoBarCompactLayout.java
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright 2017 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.weblayer_private;
-
-import android.content.Context;
-import android.content.res.ColorStateList;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Drawable;
-import android.text.SpannableString;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.method.LinkMovementMethod;
-import android.view.Gravity;
-import android.view.View;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import androidx.annotation.ColorRes;
-import androidx.annotation.StringRes;
-import androidx.appcompat.content.res.AppCompatResources;
-
-import org.chromium.base.ApiCompatibilityUtils;
-import org.chromium.base.Callback;
-import org.chromium.components.infobars.InfoBarInteractionHandler;
-import org.chromium.components.infobars.InfoBarLayout;
-import org.chromium.components.infobars.InfoBarMessageView;
-import org.chromium.ui.text.NoUnderlineClickableSpan;
-import org.chromium.ui.widget.ChromeImageButton;
-
-/**
- * Lays out controls along a line, sandwiched between an (optional) icon and close button.
- * This should only be used by the {@link InfoBar} class, and is created when the InfoBar subclass
- * declares itself to be using a compact layout via {@link InfoBar#usesCompactLayout}.
- */
-public class InfoBarCompactLayout extends LinearLayout implements View.OnClickListener {
-    private final InfoBarInteractionHandler mInfoBar;
-    private final int mCompactInfoBarSize;
-    private final int mIconWidth;
-    private final View mCloseButton;
-
-    /**
-     * Constructs a compat layout for the specified infobar.
-     * @param context The context used to render.
-     * @param infoBar {@link InfoBarInteractionHandler} that listens to events.
-     * @param iconResourceId Resource ID of the icon to use for the infobar.
-     * @param iconTintId The {@link ColorRes} used as tint for {@code iconResourceId}.
-     * @param iconBitmap Bitmap for the icon to use, if {@code iconResourceId} is not set.
-     */
-    // TODO(crbug/1056346): ctor is made public to allow access from InfoBar. Once
-    // InfoBar is modularized, restore access to package private.
-    public InfoBarCompactLayout(Context context, InfoBarInteractionHandler infoBar,
-            int iconResourceId, @ColorRes int iconTintId, Bitmap iconBitmap) {
-        super(context);
-        mInfoBar = infoBar;
-        mCompactInfoBarSize =
-                context.getResources().getDimensionPixelOffset(R.dimen.infobar_compact_size);
-        mIconWidth = context.getResources().getDimensionPixelOffset(R.dimen.infobar_big_icon_size);
-
-        setOrientation(LinearLayout.HORIZONTAL);
-        setGravity(Gravity.CENTER_VERTICAL);
-
-        prepareIcon(iconResourceId, iconTintId, iconBitmap);
-        mCloseButton = prepareCloseButton();
-    }
-
-    @Override
-    public void onClick(View view) {
-        if (view.getId() == R.id.infobar_close_button) {
-            mInfoBar.onCloseButtonClicked();
-        } else {
-            assert false;
-        }
-    }
-
-    /**
-     * Inserts a view before the close button.
-     * @param view   View to insert.
-     * @param weight Weight to assign to it.
-     */
-    // TODO(crbug/1056346): addContent is made public to allow access from InfoBar. Once
-    // InfoBar is modularized, restore access to protected.
-    public void addContent(View view, float weight) {
-        LinearLayout.LayoutParams params;
-        if (weight <= 0.0f) {
-            params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, mCompactInfoBarSize);
-        } else {
-            params = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, weight);
-        }
-        view.setMinimumHeight(mCompactInfoBarSize);
-        params.gravity = Gravity.BOTTOM;
-        addView(view, indexOfChild(mCloseButton), params);
-    }
-
-    /**
-     * Adds an icon to the start of the infobar, if the infobar requires one.
-     * @param iconResourceId Resource ID of the icon to use.
-     * @param iconTintId The {@link ColorRes} used as tint for {@code iconResourceId}.
-     * @param iconBitmap Raw {@link Bitmap} to use instead of a resource.
-     */
-    private void prepareIcon(int iconResourceId, @ColorRes int iconTintId, Bitmap iconBitmap) {
-        ImageView iconView =
-                InfoBarLayout.createIconView(getContext(), iconResourceId, iconTintId, iconBitmap);
-        if (iconView != null) {
-            LinearLayout.LayoutParams iconParams =
-                    new LinearLayout.LayoutParams(mIconWidth, mCompactInfoBarSize);
-            addView(iconView, iconParams);
-        }
-    }
-
-    /**
-     * Creates a close button that can be inserted into an infobar.
-     * NOTE: This was forked from //chrome's InfoBarLayout.java, as WebLayer supports only compact
-     * infobars and does not have a corresponding InfoBarLayout.java.
-     * @param context Context to grab resources from.
-     * @return {@link ImageButton} that represents a close button.
-     */
-    static ImageButton createCloseButton(Context context) {
-        final ColorStateList tint =
-                AppCompatResources.getColorStateList(context, R.color.default_icon_color);
-        TypedArray a =
-                context.obtainStyledAttributes(new int[] {android.R.attr.selectableItemBackground});
-        Drawable closeButtonBackground = a.getDrawable(0);
-        a.recycle();
-
-        ChromeImageButton closeButton = new ChromeImageButton(context);
-        closeButton.setId(R.id.infobar_close_button);
-        closeButton.setImageResource(R.drawable.btn_close);
-        ApiCompatibilityUtils.setImageTintList(closeButton, tint);
-        closeButton.setBackground(closeButtonBackground);
-        closeButton.setContentDescription(context.getString(R.string.weblayer_infobar_close));
-        closeButton.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
-
-        return closeButton;
-    }
-
-    /** Adds a close button to the end of the infobar. */
-    private View prepareCloseButton() {
-        ImageButton closeButton = createCloseButton(getContext());
-        closeButton.setOnClickListener(this);
-        LinearLayout.LayoutParams closeParams =
-                new LinearLayout.LayoutParams(mCompactInfoBarSize, mCompactInfoBarSize);
-        addView(closeButton, closeParams);
-        return closeButton;
-    }
-
-    /**
-     * Helps building a standard message to display in a compact InfoBar. The message can feature
-     * a link to perform and action from this infobar.
-     */
-    public static class MessageBuilder {
-        private final InfoBarCompactLayout mLayout;
-        private CharSequence mMessage;
-        private CharSequence mLink;
-
-        /** @param layout The layout we are building a message view for. */
-        public MessageBuilder(InfoBarCompactLayout layout) {
-            mLayout = layout;
-        }
-
-        public MessageBuilder withText(CharSequence message) {
-            assert mMessage == null;
-            mMessage = message;
-
-            return this;
-        }
-
-        public MessageBuilder withText(@StringRes int messageResId) {
-            assert mMessage == null;
-            mMessage = mLayout.getResources().getString(messageResId);
-
-            return this;
-        }
-
-        /** Appends a link after the main message, its displayed text being the specified string. */
-        public MessageBuilder withLink(CharSequence label, Callback<View> onTapCallback) {
-            assert mLink == null;
-
-            final Resources resources = mLayout.getResources();
-            SpannableString link = new SpannableString(label);
-            link.setSpan(new NoUnderlineClickableSpan(resources, onTapCallback), 0, label.length(),
-                    Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
-            mLink = link;
-
-            return this;
-        }
-
-        /**
-         * Appends a link after the main message, its displayed text being constructed from the
-         * given resource ID.
-         */
-        public MessageBuilder withLink(@StringRes int textResId, Callback<View> onTapCallback) {
-            final Resources resources = mLayout.getResources();
-            String label = resources.getString(textResId);
-            return withLink(label, onTapCallback);
-        }
-
-        /** Finalizes the message view as set up in the builder and inserts it into the layout. */
-        public void buildAndInsert() {
-            mLayout.addContent(build(), 1f);
-        }
-
-        /**
-         * Finalizes the message view as set up in the builder. The caller is responsible for adding
-         * it to the parent layout.
-         */
-        public View build() {
-            // TODO(dgn): Should be able to handle ReaderMode and Survey infobars but they have non
-            // standard interaction models (no button/link, whole bar is a button) or style (large
-            // rather than default text). Revisit after snowflake review.
-
-            assert mMessage != null;
-
-            final int messagePadding = mLayout.getResources().getDimensionPixelOffset(
-                    R.dimen.infobar_compact_message_vertical_padding);
-
-            SpannableStringBuilder builder = new SpannableStringBuilder();
-            builder.append(mMessage);
-            if (mLink != null) builder.append(" ").append(mLink);
-
-            TextView prompt = new InfoBarMessageView(mLayout.getContext());
-            ApiCompatibilityUtils.setTextAppearance(
-                    prompt, R.style.TextAppearance_TextMedium_Primary);
-            prompt.setText(builder);
-            prompt.setGravity(Gravity.CENTER_VERTICAL);
-            prompt.setPadding(0, messagePadding, 0, messagePadding);
-
-            if (mLink != null) prompt.setMovementMethod(LinkMovementMethod.getInstance());
-
-            return prompt;
-        }
-    }
-}
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/TranslateCompactInfoBar.java b/weblayer/browser/java/org/chromium/weblayer_private/TranslateCompactInfoBar.java
index a97315e6fa44d..16ff457dbe607 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/TranslateCompactInfoBar.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/TranslateCompactInfoBar.java
@@ -20,6 +20,7 @@ import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.NativeMethods;
 import org.chromium.base.metrics.RecordHistogram;
+import org.chromium.components.infobars.InfoBarCompactLayout;
 import org.chromium.ui.widget.Toast;
 
 /**
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/test/TestInfoBar.java b/weblayer/browser/java/org/chromium/weblayer_private/test/TestInfoBar.java
index 09bc5f02c66f4..d351b1b92f66b 100644
--- a/weblayer/browser/java/org/chromium/weblayer_private/test/TestInfoBar.java
+++ b/weblayer/browser/java/org/chromium/weblayer_private/test/TestInfoBar.java
@@ -9,9 +9,9 @@ import androidx.annotation.VisibleForTesting;
 import org.chromium.base.annotations.CalledByNative;
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.NativeMethods;
+import org.chromium.components.infobars.InfoBarCompactLayout;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.weblayer_private.InfoBar;
-import org.chromium.weblayer_private.InfoBarCompactLayout;
 import org.chromium.weblayer_private.TabImpl;
 
 /**
diff --git a/weblayer/browser/java/weblayer_strings.grd b/weblayer/browser/java/weblayer_strings.grd
index 79a4dcddd2784..a2c6595807e32 100644
--- a/weblayer/browser/java/weblayer_strings.grd
+++ b/weblayer/browser/java/weblayer_strings.grd
@@ -175,9 +175,6 @@
       <message name="IDS_WEBLAYER_BOTTOM_BAR_SCREEN_POSITION" desc="Accessibility label to inform users about the InfoBar location">
         Options available near bottom of the screen
       </message>
-      <message name="IDS_WEBLAYER_INFOBAR_CLOSE" desc="Accessibility label for the dismiss infobar Button">
-        Close
-      </message>
       <!-- TranslateInfoBar -->
       <message name="IDS_TRANSLATE_INFOBAR_ERROR">
         Oops. This page could not be translated.