Skip to content
This repository was archived by the owner on Feb 24, 2025. It is now read-only.

Commit 675bbb7

Browse files
authored
Prevent Dismissal of Autofill UI When Window Loses Focus (#2393)
Task/Issue URL: https://app.asana.com/0/276630244458377/1204870766898373/f Description: Currently, if we open the Autofill dialog and then tap out of the browser, the autofill window immediately dismisses. This is not a great UX. This change ensures that the Autofill dialog remains open until the user explicitly decides to close it. Note that the user can close the autofill dialog by selecting anywhere inside the DDG browser, but outside the Autofill dialog.
1 parent 7830b58 commit 675bbb7

17 files changed

+555
-107
lines changed

DuckDuckGo.xcodeproj/project.pbxproj

+44
Original file line numberDiff line numberDiff line change
@@ -2581,6 +2581,9 @@
25812581
B31055C427A1BA1D001AC618 /* AutoconsentUserScript.swift in Sources */ = {isa = PBXBuildFile; fileRef = B31055BC27A1BA1D001AC618 /* AutoconsentUserScript.swift */; };
25822582
B31055C627A1BA1D001AC618 /* userscript.js in Resources */ = {isa = PBXBuildFile; fileRef = B31055BE27A1BA1D001AC618 /* userscript.js */; };
25832583
B31055CB27A1BA1D001AC618 /* autoconsent-bundle.js in Resources */ = {isa = PBXBuildFile; fileRef = B31055C327A1BA1D001AC618 /* autoconsent-bundle.js */; };
2584+
B60293E62BA19ECD0033186B /* NetPPopoverManagerMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B60293E52BA19ECD0033186B /* NetPPopoverManagerMock.swift */; };
2585+
B60293E72BA19ECD0033186B /* NetPPopoverManagerMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B60293E52BA19ECD0033186B /* NetPPopoverManagerMock.swift */; };
2586+
B60293E82BA19ECD0033186B /* NetPPopoverManagerMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = B60293E52BA19ECD0033186B /* NetPPopoverManagerMock.swift */; };
25842587
B602E7CF2A93A5FF00F12201 /* WKBackForwardListExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B602E7CE2A93A5FF00F12201 /* WKBackForwardListExtension.swift */; };
25852588
B602E7D02A93A5FF00F12201 /* WKBackForwardListExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = B602E7CE2A93A5FF00F12201 /* WKBackForwardListExtension.swift */; };
25862589
B602E8162A1E2570006D261F /* URL+NetworkProtection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B602E8152A1E2570006D261F /* URL+NetworkProtection.swift */; };
@@ -3075,6 +3078,13 @@
30753078
C168B9AC2B31DC7E001AFAD9 /* AutofillNeverPromptWebsitesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C168B9AB2B31DC7E001AFAD9 /* AutofillNeverPromptWebsitesManager.swift */; };
30763079
C168B9AD2B31DC7F001AFAD9 /* AutofillNeverPromptWebsitesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C168B9AB2B31DC7E001AFAD9 /* AutofillNeverPromptWebsitesManager.swift */; };
30773080
C168B9AE2B31DC7F001AFAD9 /* AutofillNeverPromptWebsitesManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C168B9AB2B31DC7E001AFAD9 /* AutofillNeverPromptWebsitesManager.swift */; };
3081+
C17CA7AD2B9B52E6008EC3C1 /* NavigationBarPopoversTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17CA7AC2B9B52E6008EC3C1 /* NavigationBarPopoversTests.swift */; };
3082+
C17CA7AE2B9B52E6008EC3C1 /* NavigationBarPopoversTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17CA7AC2B9B52E6008EC3C1 /* NavigationBarPopoversTests.swift */; };
3083+
C17CA7B22B9B5317008EC3C1 /* MockAutofillPopoverPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17CA7B12B9B5317008EC3C1 /* MockAutofillPopoverPresenter.swift */; };
3084+
C17CA7B32B9B5317008EC3C1 /* MockAutofillPopoverPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17CA7B12B9B5317008EC3C1 /* MockAutofillPopoverPresenter.swift */; };
3085+
C1DAF3B52B9A44860059244F /* AutofillPopoverPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1DAF3B42B9A44860059244F /* AutofillPopoverPresenter.swift */; };
3086+
C1DAF3B62B9A44860059244F /* AutofillPopoverPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1DAF3B42B9A44860059244F /* AutofillPopoverPresenter.swift */; };
3087+
C1DAF3B72B9A44860059244F /* AutofillPopoverPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1DAF3B42B9A44860059244F /* AutofillPopoverPresenter.swift */; };
30783088
C1E961EB2B879E79001760E1 /* MockAutofillActionPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1E961E72B879E4D001760E1 /* MockAutofillActionPresenter.swift */; };
30793089
C1E961ED2B879ED9001760E1 /* MockAutofillActionExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1E961EC2B879ED9001760E1 /* MockAutofillActionExecutor.swift */; };
30803090
C1E961EF2B87AA29001760E1 /* AutofillActionBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1E961EE2B87AA29001760E1 /* AutofillActionBuilder.swift */; };
@@ -4161,6 +4171,7 @@
41614171
B31055BC27A1BA1D001AC618 /* AutoconsentUserScript.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoconsentUserScript.swift; sourceTree = "<group>"; };
41624172
B31055BE27A1BA1D001AC618 /* userscript.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = userscript.js; sourceTree = "<group>"; };
41634173
B31055C327A1BA1D001AC618 /* autoconsent-bundle.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "autoconsent-bundle.js"; sourceTree = "<group>"; };
4174+
B60293E52BA19ECD0033186B /* NetPPopoverManagerMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetPPopoverManagerMock.swift; sourceTree = "<group>"; };
41644175
B602E7CE2A93A5FF00F12201 /* WKBackForwardListExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WKBackForwardListExtension.swift; sourceTree = "<group>"; };
41654176
B602E8152A1E2570006D261F /* URL+NetworkProtection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URL+NetworkProtection.swift"; sourceTree = "<group>"; };
41664177
B602E81C2A1E25B0006D261F /* NEOnDemandRuleExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NEOnDemandRuleExtension.swift; sourceTree = "<group>"; };
@@ -4460,6 +4471,9 @@
44604471
C13909F32B85FD79001626ED /* AutofillDeleteAllPasswordsExecutorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillDeleteAllPasswordsExecutorTests.swift; sourceTree = "<group>"; };
44614472
C13909FA2B861039001626ED /* AutofillActionPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillActionPresenter.swift; sourceTree = "<group>"; };
44624473
C168B9AB2B31DC7E001AFAD9 /* AutofillNeverPromptWebsitesManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutofillNeverPromptWebsitesManager.swift; sourceTree = "<group>"; };
4474+
C17CA7AC2B9B52E6008EC3C1 /* NavigationBarPopoversTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarPopoversTests.swift; sourceTree = "<group>"; };
4475+
C17CA7B12B9B5317008EC3C1 /* MockAutofillPopoverPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAutofillPopoverPresenter.swift; sourceTree = "<group>"; };
4476+
C1DAF3B42B9A44860059244F /* AutofillPopoverPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillPopoverPresenter.swift; sourceTree = "<group>"; };
44634477
C1E961E72B879E4D001760E1 /* MockAutofillActionPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAutofillActionPresenter.swift; sourceTree = "<group>"; };
44644478
C1E961EC2B879ED9001760E1 /* MockAutofillActionExecutor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockAutofillActionExecutor.swift; sourceTree = "<group>"; };
44654479
C1E961EE2B87AA29001760E1 /* AutofillActionBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutofillActionBuilder.swift; sourceTree = "<group>"; };
@@ -6539,6 +6553,7 @@
65396553
4B8A4DFE27C83B29005F40E8 /* SaveIdentityViewController.swift */,
65406554
4BE4005227CF3DC3007D3161 /* SavePaymentMethodPopover.swift */,
65416555
4BE4005427CF3F19007D3161 /* SavePaymentMethodViewController.swift */,
6556+
C1DAF3B42B9A44860059244F /* AutofillPopoverPresenter.swift */,
65426557
);
65436558
path = View;
65446559
sourceTree = "<group>";
@@ -7220,6 +7235,7 @@
72207235
AAA0CC32252F181A0079BC96 /* NavigationButtonMenuDelegate.swift */,
72217236
85012B0129133F9F003D0DCC /* NavigationBarPopovers.swift */,
72227237
AA68C3D22490ED62001B8783 /* NavigationBarViewController.swift */,
7238+
B60293E52BA19ECD0033186B /* NetPPopoverManagerMock.swift */,
72237239
D64A5FF72AEA5C2B00B6D6E7 /* HomeButtonMenuFactory.swift */,
72247240
);
72257241
path = View;
@@ -7292,9 +7308,11 @@
72927308
AA91F83627076ED100771A0D /* NavigationBar */ = {
72937309
isa = PBXGroup;
72947310
children = (
7311+
C17CA7B02B9B52FF008EC3C1 /* Mocks */,
72957312
AA91F83727076EEE00771A0D /* ViewModel */,
72967313
4BF6961F28BEEE8B00D402D4 /* LocalPinningManagerTests.swift */,
72977314
56B234BE2A84EFD200F2A1CC /* NavigationBarUrlExtensionsTests.swift */,
7315+
C17CA7AF2B9B52EB008EC3C1 /* View */,
72987316
);
72997317
path = NavigationBar;
73007318
sourceTree = "<group>";
@@ -8300,6 +8318,22 @@
83008318
path = Tests;
83018319
sourceTree = "<group>";
83028320
};
8321+
C17CA7AF2B9B52EB008EC3C1 /* View */ = {
8322+
isa = PBXGroup;
8323+
children = (
8324+
C17CA7AC2B9B52E6008EC3C1 /* NavigationBarPopoversTests.swift */,
8325+
);
8326+
path = View;
8327+
sourceTree = "<group>";
8328+
};
8329+
C17CA7B02B9B52FF008EC3C1 /* Mocks */ = {
8330+
isa = PBXGroup;
8331+
children = (
8332+
C17CA7B12B9B5317008EC3C1 /* MockAutofillPopoverPresenter.swift */,
8333+
);
8334+
path = Mocks;
8335+
sourceTree = "<group>";
8336+
};
83038337
C1E961E62B879E2A001760E1 /* Mocks */ = {
83048338
isa = PBXGroup;
83058339
children = (
@@ -10252,6 +10286,7 @@
1025210286
4B9DB0452A983B24000927DB /* WaitlistModalViewController.swift in Sources */,
1025310287
B66CA41F2AD910B300447CF0 /* DataImportView.swift in Sources */,
1025410288
3706FC0C293F65D500E42796 /* NSAttributedStringExtension.swift in Sources */,
10289+
C1DAF3B62B9A44860059244F /* AutofillPopoverPresenter.swift in Sources */,
1025510290
3706FC0D293F65D500E42796 /* AnimationView.swift in Sources */,
1025610291
3706FC0E293F65D500E42796 /* NSRectExtension.swift in Sources */,
1025710292
3706FC0F293F65D500E42796 /* YoutubeOverlayUserScript.swift in Sources */,
@@ -10338,6 +10373,7 @@
1033810373
3706FC51293F65D500E42796 /* RecentlyVisitedView.swift in Sources */,
1033910374
B645D8F729FA95440024461F /* WKProcessPoolExtension.swift in Sources */,
1034010375
3706FC52293F65D500E42796 /* MouseOverAnimationButton.swift in Sources */,
10376+
B60293E72BA19ECD0033186B /* NetPPopoverManagerMock.swift in Sources */,
1034110377
3706FC53293F65D500E42796 /* TabBarScrollView.swift in Sources */,
1034210378
3706FC54293F65D500E42796 /* BookmarkListTreeControllerDataSource.swift in Sources */,
1034310379
3706FC55293F65D500E42796 /* AddressBarViewController.swift in Sources */,
@@ -10541,6 +10577,7 @@
1054110577
B6619EF72B10DFF700CD9186 /* InstructionsFormatParserTests.swift in Sources */,
1054210578
3706FE21293F661700E42796 /* DownloadsPreferencesTests.swift in Sources */,
1054310579
3706FE22293F661700E42796 /* FireproofDomainsTests.swift in Sources */,
10580+
C17CA7AE2B9B52E6008EC3C1 /* NavigationBarPopoversTests.swift in Sources */,
1054410581
3706FE23293F661700E42796 /* SuggestionLoadingMock.swift in Sources */,
1054510582
3706FE24293F661700E42796 /* PasteboardFolderTests.swift in Sources */,
1054610583
B603971229B9D67E00902A34 /* PublishersExtensions.swift in Sources */,
@@ -10578,6 +10615,7 @@
1057810615
3706FE3C293F661700E42796 /* FireproofDomainsStoreMock.swift in Sources */,
1057910616
3706FE3D293F661700E42796 /* DataEncryptionTests.swift in Sources */,
1058010617
3706FE3E293F661700E42796 /* ClickToLoadModelTests.swift in Sources */,
10618+
C17CA7B32B9B5317008EC3C1 /* MockAutofillPopoverPresenter.swift in Sources */,
1058110619
3706FE3F293F661700E42796 /* FileStoreMock.swift in Sources */,
1058210620
B6619F042B17123200CD9186 /* DataImportViewModelTests.swift in Sources */,
1058310621
1D8C2FE62B70F4C4005E4BBD /* TabSnapshotExtensionTests.swift in Sources */,
@@ -11169,6 +11207,7 @@
1116911207
4B957A3E2AC7AE700062CA31 /* EnableWaitlistFeatureView.swift in Sources */,
1117011208
4B957A3F2AC7AE700062CA31 /* GrammarFeaturesManager.swift in Sources */,
1117111209
4B957A402AC7AE700062CA31 /* WaitlistModalViewController.swift in Sources */,
11210+
B60293E82BA19ECD0033186B /* NetPPopoverManagerMock.swift in Sources */,
1117211211
B6BCC53E2AFD15DF002C5499 /* DataImportProfilePicker.swift in Sources */,
1117311212
4B957A412AC7AE700062CA31 /* WKMenuItemIdentifier.swift in Sources */,
1117411213
4B957A422AC7AE700062CA31 /* SafariFaviconsReader.swift in Sources */,
@@ -11523,6 +11562,7 @@
1152311562
4B957B7B2AC7AE700062CA31 /* DeviceAuthenticator.swift in Sources */,
1152411563
4B957B7C2AC7AE700062CA31 /* NetworkProtectionWaitlistFeatureFlagOverridesMenu.swift in Sources */,
1152511564
4B957B7D2AC7AE700062CA31 /* TabBarCollectionView.swift in Sources */,
11565+
C1DAF3B72B9A44860059244F /* AutofillPopoverPresenter.swift in Sources */,
1152611566
4B957B7E2AC7AE700062CA31 /* NetworkProtection+ConvenienceInitializers.swift in Sources */,
1152711567
7BA7CC502AD11F6F0042E5CE /* NetworkProtectionIPCTunnelController.swift in Sources */,
1152811568
4B957B7F2AC7AE700062CA31 /* NavigationActionExtension.swift in Sources */,
@@ -11955,6 +11995,7 @@
1195511995
4B9DB0442A983B24000927DB /* WaitlistModalViewController.swift in Sources */,
1195611996
B6DA06E8291401D700225DE2 /* WKMenuItemIdentifier.swift in Sources */,
1195711997
4B0AACAE28BC6FD0001038AC /* SafariFaviconsReader.swift in Sources */,
11998+
B60293E62BA19ECD0033186B /* NetPPopoverManagerMock.swift in Sources */,
1195811999
B6B3E0E12657EA7A0040E0A2 /* NSScreenExtension.swift in Sources */,
1195912000
B65E6BA026D9F10600095F96 /* NSBezierPathExtension.swift in Sources */,
1196012001
4B4D60E02A0C875F00BCD287 /* Bundle+VPN.swift in Sources */,
@@ -12309,6 +12350,7 @@
1230912350
4B9292AF26670F5300AD2C21 /* NSOutlineViewExtensions.swift in Sources */,
1231012351
AA585D82248FD31100E9A3E2 /* AppDelegate.swift in Sources */,
1231112352
7B1E81A027C8874900FF0E60 /* ContentOverlayViewController.swift in Sources */,
12353+
C1DAF3B52B9A44860059244F /* AutofillPopoverPresenter.swift in Sources */,
1231212354
B687B7CA2947A029001DEA6F /* ContentBlockingTabExtension.swift in Sources */,
1231312355
85B7184C27677C6500B4277F /* OnboardingViewController.swift in Sources */,
1231412356
4B379C1E27BDB7FF008A968E /* DeviceAuthenticator.swift in Sources */,
@@ -12431,6 +12473,7 @@
1243112473
569277C429DEE09D00B633EF /* ContinueSetUpModelTests.swift in Sources */,
1243212474
85F1B0C925EF9759004792B6 /* URLEventHandlerTests.swift in Sources */,
1243312475
4B9292BD2667103100AD2C21 /* BookmarkOutlineViewDataSourceTests.swift in Sources */,
12476+
C17CA7B22B9B5317008EC3C1 /* MockAutofillPopoverPresenter.swift in Sources */,
1243412477
4BF6961D28BE911100D402D4 /* RecentlyVisitedSiteModelTests.swift in Sources */,
1243512478
B6619F062B17138D00CD9186 /* DataImportSourceViewModelTests.swift in Sources */,
1243612479
4BBF0917282DD6EF00EE1418 /* TemporaryFileHandlerTests.swift in Sources */,
@@ -12642,6 +12685,7 @@
1264212685
B6C2C9EF276081AB005B7F0A /* DeallocationTests.swift in Sources */,
1264312686
B63ED0D826AE729600A9DAD1 /* PermissionModelTests.swift in Sources */,
1264412687
B69B504B2726CA2900758A2B /* MockStatisticsStore.swift in Sources */,
12688+
C17CA7AD2B9B52E6008EC3C1 /* NavigationBarPopoversTests.swift in Sources */,
1264512689
37CD54BD27F2ECAE00F1F7B9 /* AutofillPreferencesModelTests.swift in Sources */,
1264612690
C1E961ED2B879ED9001760E1 /* MockAutofillActionExecutor.swift in Sources */,
1264712691
37D23789288009CF00BCE03B /* TabCollectionViewModelTests+PinnedTabs.swift in Sources */,

DuckDuckGo/MainWindow/MainViewController.swift

+44-4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import Common
2323

2424
#if NETWORK_PROTECTION
2525
import NetworkProtection
26+
import NetworkProtectionIPC
2627
#endif
2728

2829
final class MainViewController: NSViewController {
@@ -56,14 +57,53 @@ final class MainViewController: NSViewController {
5657
fatalError("MainViewController: Bad initializer")
5758
}
5859

59-
init(tabCollectionViewModel: TabCollectionViewModel? = nil,
60-
bookmarkManager: BookmarkManager = LocalBookmarkManager.shared) {
60+
init(tabCollectionViewModel: TabCollectionViewModel? = nil, bookmarkManager: BookmarkManager = LocalBookmarkManager.shared, autofillPopoverPresenter: AutofillPopoverPresenter) {
6161
let tabCollectionViewModel = tabCollectionViewModel ?? TabCollectionViewModel()
6262
self.tabCollectionViewModel = tabCollectionViewModel
6363
self.isBurner = tabCollectionViewModel.isBurner
6464

6565
tabBarViewController = TabBarViewController.create(tabCollectionViewModel: tabCollectionViewModel)
66-
navigationBarViewController = NavigationBarViewController.create(tabCollectionViewModel: tabCollectionViewModel, isBurner: isBurner)
66+
67+
#if NETWORK_PROTECTION
68+
let networkProtectionPopoverManager: NetPPopoverManager = {
69+
#if DEBUG
70+
guard case .normal = NSApp.runType else {
71+
return NetPPopoverManagerMock()
72+
}
73+
#endif
74+
let vpnBundleID = Bundle.main.vpnMenuAgentBundleId
75+
let ipcClient = TunnelControllerIPCClient(machServiceName: vpnBundleID)
76+
ipcClient.register()
77+
78+
return NetworkProtectionNavBarPopoverManager(ipcClient: ipcClient)
79+
}()
80+
let networkProtectionStatusReporter: NetworkProtectionStatusReporter = {
81+
var connectivityIssuesObserver: ConnectivityIssueObserver!
82+
var controllerErrorMessageObserver: ControllerErrorMesssageObserver!
83+
#if DEBUG
84+
if ![.normal, .integrationTests].contains(NSApp.runType) {
85+
connectivityIssuesObserver = ConnectivityIssueObserverMock()
86+
controllerErrorMessageObserver = ControllerErrorMesssageObserverMock()
87+
}
88+
#endif
89+
connectivityIssuesObserver = connectivityIssuesObserver ?? DisabledConnectivityIssueObserver()
90+
controllerErrorMessageObserver = controllerErrorMessageObserver ?? ControllerErrorMesssageObserverThroughDistributedNotifications()
91+
92+
let ipcClient = networkProtectionPopoverManager.ipcClient
93+
return DefaultNetworkProtectionStatusReporter(
94+
statusObserver: ipcClient.ipcStatusObserver,
95+
serverInfoObserver: ipcClient.ipcServerInfoObserver,
96+
connectionErrorObserver: ipcClient.ipcConnectionErrorObserver,
97+
connectivityIssuesObserver: connectivityIssuesObserver,
98+
controllerErrorMessageObserver: controllerErrorMessageObserver
99+
)
100+
}()
101+
102+
navigationBarViewController = NavigationBarViewController.create(tabCollectionViewModel: tabCollectionViewModel, isBurner: isBurner, networkProtectionPopoverManager: networkProtectionPopoverManager, networkProtectionStatusReporter: networkProtectionStatusReporter, autofillPopoverPresenter: autofillPopoverPresenter)
103+
#else
104+
navigationBarViewController = NavigationBarViewController.create(tabCollectionViewModel: tabCollectionViewModel, isBurner: isBurner, autofillPopoverPresenter: AutofillPopoverPresenter)
105+
#endif
106+
67107
browserTabViewController = BrowserTabViewController(tabCollectionViewModel: tabCollectionViewModel, bookmarkManager: bookmarkManager)
68108
findInPageViewController = FindInPageViewController.create()
69109
fireViewController = FireViewController.create(tabCollectionViewModel: tabCollectionViewModel)
@@ -560,7 +600,7 @@ extension MainViewController {
560600
]))
561601
bkman.loadBookmarks()
562602

563-
let vc = MainViewController(bookmarkManager: bkman)
603+
let vc = MainViewController(bookmarkManager: bkman, autofillPopoverPresenter: DefaultAutofillPopoverPresenter())
564604
var c: AnyCancellable!
565605
c = vc.publisher(for: \.view.window).sink { window in
566606
window?.titlebarAppearsTransparent = true

DuckDuckGo/Menus/MainMenu.swift

+4-2
Original file line numberDiff line numberDiff line change
@@ -609,8 +609,10 @@ import SubscriptionUI
609609
#endif
610610

611611
#if NETWORK_PROTECTION
612-
NSMenuItem(title: "VPN")
613-
.submenu(NetworkProtectionDebugMenu())
612+
if case .normal = NSApp.runType {
613+
NSMenuItem(title: "VPN")
614+
.submenu(NetworkProtectionDebugMenu())
615+
}
614616
#endif
615617

616618
NSMenuItem(title: "Trigger Fatal Error", action: #selector(MainViewController.triggerFatalError))

0 commit comments

Comments
 (0)