Skip to content

Commit 09bf206

Browse files
committed
System authorization UI
1 parent 7b12a02 commit 09bf206

File tree

5 files changed

+305
-20
lines changed

5 files changed

+305
-20
lines changed

macOS/DuckDuckGo-macOS.xcodeproj/project.pbxproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4745,7 +4745,7 @@
47454745
4B1E6EEC27AB5E5100F51793 /* PasswordManagementListSection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasswordManagementListSection.swift; sourceTree = "<group>"; };
47464746
4B1E6EEF27AB5E5D00F51793 /* NSPopUpButtonView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSPopUpButtonView.swift; sourceTree = "<group>"; };
47474747
4B1E6EF027AB5E5D00F51793 /* PasswordManagementItemList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PasswordManagementItemList.swift; sourceTree = "<group>"; };
4748-
4B25375A2A11BE7300610219 /* com.duckduckgo.macos.vpn.network-extension.debug.systemextension */ = {isa = PBXFileReference; explicitFileType = "wrapper.system-extension"; includeInIndex = 0; path = "com.duckduckgo.macos.vpn.network-extension.debug.systemextension"; sourceTree = BUILT_PRODUCTS_DIR; };
4748+
4B25375A2A11BE7300610219 /* com.duckduckgo.macos.vpn.network-extension.debugg.systemextension */ = {isa = PBXFileReference; explicitFileType = "wrapper.system-extension"; includeInIndex = 0; path = "com.duckduckgo.macos.vpn.network-extension.debugg.systemextension"; sourceTree = BUILT_PRODUCTS_DIR; };
47494749
4B25376C2A11BF6D00610219 /* NetworkProtectionSystemExtension_SparkleDistribution.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = NetworkProtectionSystemExtension_SparkleDistribution.entitlements; sourceTree = "<group>"; };
47504750
4B25376D2A11BF6D00610219 /* NetworkProtectionSystemExtension.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = NetworkProtectionSystemExtension.entitlements; sourceTree = "<group>"; };
47514751
4B25376E2A11BF8B00610219 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -9661,7 +9661,7 @@
96619661
3706FEB2293F662100E42796 /* Integration Tests App Store.xctest */,
96629662
B6EC37E829B5DA2A001ACE79 /* tests-server */,
96639663
4B4D603D2A0B290200BCD287 /* NetworkProtectionAppExtension.appex */,
9664-
4B25375A2A11BE7300610219 /* com.duckduckgo.macos.vpn.network-extension.debug.systemextension */,
9664+
4B25375A2A11BE7300610219 /* com.duckduckgo.macos.vpn.network-extension.debugg.systemextension */,
96659665
4B2D06392A11CFBB00DE1F49 /* DuckDuckGo VPN.app */,
96669666
4B2D06692A13318400DE1F49 /* DuckDuckGo VPN App Store.app */,
96679667
9D9AE8D12AAA39A70026E7DC /* DuckDuckGo Personal Information Removal.app */,
@@ -12113,7 +12113,7 @@
1211312113
7BC15A1B2E1917D6000062C8 /* VPNNotifications */,
1211412114
);
1211512115
productName = NetworkProtectionSystemExtension;
12116-
productReference = 4B25375A2A11BE7300610219 /* com.duckduckgo.macos.vpn.network-extension.debug.systemextension */;
12116+
productReference = 4B25375A2A11BE7300610219 /* com.duckduckgo.macos.vpn.network-extension.debugg.systemextension */;
1211712117
productType = "com.apple.product-type.system-extension";
1211812118
};
1211912119
4B2D06382A11CFBA00DE1F49 /* DuckDuckGoVPN */ = {

macOS/DuckDuckGo/Common/Localizables/UserText.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,14 @@ struct UserText {
984984
static let privacyDashboardPermissionAlwaysDeny = NSLocalizedString("dashboard.permission.deny", value: "Always deny", comment: "Privacy Dashboard: Website can never access input media device")
985985
static let permissionPopoverDenyButton = NSLocalizedString("permission.popover.deny", value: "Deny", comment: "Permission Popover: Deny Website input media device access")
986986

987+
// Two-step permission authorization (geolocation)
988+
static let permissionSystemLocationEnable = NSLocalizedString("permission.system.location.enable", value: "Enable System Location", comment: "Button to enable system location services")
989+
static let permissionSystemLocationWaiting = NSLocalizedString("permission.system.location.waiting", value: "Waiting for system permission…", comment: "Text shown while waiting for user to respond to system location permission dialog")
990+
static let permissionSystemLocationEnabled = NSLocalizedString("permission.system.location.enabled", value: "System location enabled!", comment: "Text shown after system location permission has been granted")
991+
static let permissionSystemLocationDenied = NSLocalizedString("permission.system.location.denied", value: "System location denied", comment: "Text shown after system location permission has been denied")
992+
static let permissionGeolocationPromptFormat = NSLocalizedString("permission.geolocation.prompt.format", value: "Allow %@ to use your current location?", comment: "Prompt asking if domain %@ can use location")
993+
static let permissionPopupNeverAllowButton = NSLocalizedString("permission.popup.never.allow.button", value: "Never Allow", comment: "Button that denies permission and remembers the decision for future requests")
994+
987995
static let privacyDashboardPopupsAlwaysAsk = NSLocalizedString("dashboard.popups.ask", value: "Notify", comment: "Make pop-up windows always request permission for the current domain")
988996

989997
static let settings = NSLocalizedString("settings", value: "Settings", comment: "Menu item for opening settings")

macOS/DuckDuckGo/Localization/Localizable.xcstrings

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60546,6 +60546,18 @@
6054660546
}
6054760547
}
6054860548
},
60549+
"permission.geolocation.prompt.format" : {
60550+
"comment" : "Prompt asking if domain %@ can use location",
60551+
"extractionState" : "extracted_with_value",
60552+
"localizations" : {
60553+
"en" : {
60554+
"stringUnit" : {
60555+
"state" : "new",
60556+
"value" : "Allow %@ to use your current location?"
60557+
}
60558+
}
60559+
}
60560+
},
6054960561
"permission.microphone" : {
6055060562
"comment" : "Microphone input media device name",
6055160563
"extractionState" : "extracted_with_value",
@@ -61062,6 +61074,18 @@
6106261074
}
6106361075
}
6106461076
},
61077+
"permission.popup.never.allow.button" : {
61078+
"comment" : "Button that denies permission and remembers the decision for future requests",
61079+
"extractionState" : "extracted_with_value",
61080+
"localizations" : {
61081+
"en" : {
61082+
"stringUnit" : {
61083+
"state" : "new",
61084+
"value" : "Never Allow"
61085+
}
61086+
}
61087+
}
61088+
},
6106561089
"permission.popup.open.format" : {
6106661090
"comment" : "Menu action to open the blocked pop-up at the specified URL",
6106761091
"extractionState" : "extracted_with_value",
@@ -61523,6 +61547,54 @@
6152361547
}
6152461548
}
6152561549
},
61550+
"permission.system.location.denied" : {
61551+
"comment" : "Text shown after system location permission has been denied",
61552+
"extractionState" : "extracted_with_value",
61553+
"localizations" : {
61554+
"en" : {
61555+
"stringUnit" : {
61556+
"state" : "new",
61557+
"value" : "System location denied"
61558+
}
61559+
}
61560+
}
61561+
},
61562+
"permission.system.location.enable" : {
61563+
"comment" : "Button to enable system location services",
61564+
"extractionState" : "extracted_with_value",
61565+
"localizations" : {
61566+
"en" : {
61567+
"stringUnit" : {
61568+
"state" : "new",
61569+
"value" : "Enable System Location"
61570+
}
61571+
}
61572+
}
61573+
},
61574+
"permission.system.location.enabled" : {
61575+
"comment" : "Text shown after system location permission has been granted",
61576+
"extractionState" : "extracted_with_value",
61577+
"localizations" : {
61578+
"en" : {
61579+
"stringUnit" : {
61580+
"state" : "new",
61581+
"value" : "System location enabled!"
61582+
}
61583+
}
61584+
}
61585+
},
61586+
"permission.system.location.waiting" : {
61587+
"comment" : "Text shown while waiting for user to respond to system location permission dialog",
61588+
"extractionState" : "extracted_with_value",
61589+
"localizations" : {
61590+
"en" : {
61591+
"stringUnit" : {
61592+
"state" : "new",
61593+
"value" : "Waiting for system permission…"
61594+
}
61595+
}
61596+
}
61597+
},
6152661598
"permission.unmute" : {
6152761599
"comment" : "Resume input media device %@ access for %@ website",
6152861600
"extractionState" : "extracted_with_value",

0 commit comments

Comments
 (0)