Repository: electron/electron
Pull request: fix: cyclical #include dependency between autofill_popup.h and autofill_popup_view.h

Backport of #44705

See that PR for details.


Notes: none.

Changed files:
filename: shell/browser/ui/autofill_popup.cc
patch: @@ -15,6 +15,7 @@
 #include "shell/browser/osr/osr_render_widget_host_view.h"
 #include "shell/browser/osr/osr_view_proxy.h"
 #include "shell/browser/ui/autofill_popup.h"
+#include "shell/browser/ui/views/autofill_popup_view.h"
 #include "shell/common/api/api.mojom.h"
 #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
 #include "ui/color/color_id.h"
@@ -160,11 +161,7 @@ gfx::Rect CalculatePopupBounds(const gfx::Size& desired_size,
 
 }  // namespace
 
-AutofillPopup::AutofillPopup() {
-  bold_font_list_ = gfx::FontList().DeriveWithWeight(gfx::Font::Weight::BOLD);
-  smaller_font_list_ =
-      gfx::FontList().DeriveWithSizeDelta(kSmallerFontSizeDelta);
-}
+AutofillPopup::AutofillPopup() = default;
 
 AutofillPopup::~AutofillPopup() {
   Hide();

filename: shell/browser/ui/autofill_popup.h
patch: @@ -8,15 +8,18 @@
 #include <vector>
 
 #include "base/memory/raw_ptr.h"
-#include "shell/browser/ui/views/autofill_popup_view.h"
 #include "ui/gfx/font_list.h"
-#include "ui/views/view.h"
-#include "ui/views/widget/widget.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/views/view_observer.h"
 
 namespace content {
 class RenderFrameHost;
 }  // namespace content
 
+namespace gfx {
+class RectF;
+}  // namespace gfx
+
 namespace ui {
 using ColorId = int;
 }  // namespace ui
@@ -68,6 +71,10 @@ class AutofillPopup : private views::ViewObserver {
   const std::u16string& label_at(int i) const { return labels_.at(i); }
   int LineFromY(int y) const;
 
+  static constexpr int kNamePadding = 15;
+  static constexpr int kRowHeight = 24;
+  static constexpr int kSmallerFontSizeDelta = -1;
+
   int selected_index_;
 
   // Popup location
@@ -81,8 +88,10 @@ class AutofillPopup : private views::ViewObserver {
   std::vector<std::u16string> labels_;
 
   // Font lists for the suggestions
-  gfx::FontList smaller_font_list_;
-  gfx::FontList bold_font_list_;
+  const gfx::FontList smaller_font_list_ =
+      gfx::FontList{}.DeriveWithSizeDelta(kSmallerFontSizeDelta);
+  const gfx::FontList bold_font_list_ =
+      gfx::FontList{}.DeriveWithWeight(gfx::Font::Weight::BOLD);
 
   // For sending the accepted suggestion to the render frame that
   // asked to open the popup

filename: shell/browser/ui/views/autofill_popup_view.cc
patch: @@ -12,6 +12,7 @@
 #include "cc/paint/skia_paint_canvas.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_view_host.h"
+#include "shell/browser/ui/autofill_popup.h"
 #include "ui/accessibility/ax_enums.mojom.h"
 #include "ui/base/dragdrop/drag_drop_types.h"
 #include "ui/color/color_provider.h"

filename: shell/browser/ui/views/autofill_popup_view.h
patch: @@ -8,8 +8,6 @@
 #include <memory>
 #include <optional>
 
-#include "shell/browser/ui/autofill_popup.h"
-
 #include "base/memory/raw_ptr.h"
 #include "content/public/browser/render_widget_host.h"
 #include "electron/buildflags/buildflags.h"
@@ -31,11 +29,8 @@ struct AXNodeData;
 
 namespace electron {
 
-const int kPopupBorderThickness = 1;
-const int kSmallerFontSizeDelta = -1;
-const int kEndPadding = 8;
-const int kNamePadding = 15;
-const int kRowHeight = 24;
+constexpr int kPopupBorderThickness = 1;
+constexpr int kEndPadding = 8;
 
 class AutofillPopup;