-
Notifications
You must be signed in to change notification settings - Fork 425
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Credential provider extension with credential list support #3658
Credential provider extension with credential list support #3658
Conversation
…er' into anya/credential-provider-extension # Conflicts: # DuckDuckGo.xcodeproj/project.pbxproj # DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
…er' into anya/credential-provider-extension # Conflicts: # DuckDuckGo.xcodeproj/project.pbxproj # DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
…ersion and adding vault to the entitlement groups
…tate, authentication handling
…er' into anya/credential-provider-extension # Conflicts: # DuckDuckGo.xcodeproj/project.pbxproj # DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks great, @amddg44, left a few minor comments. Also tested and works as expected.
guard let cacheUrl = FaviconsCacheType.fireproof.cacheLocation() else { return nil } | ||
|
||
// Slight leap here to avoid loading Kingisher as a library for the widgets. | ||
// Once dependency management is fixed, link it and use Favicons directly. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍🏼
guard let domain = domain else { return nil } | ||
|
||
let key = FaviconHasher.createHash(ofDomain: domain) | ||
guard let cacheUrl = FaviconsCacheType.fireproof.cacheLocation() else { return nil } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor: Maybe could slightly restructure this as:
guard let domain = domain,
let cacheUrl = FaviconsCacheType.fireproof.cacheLocation() else {
return nil
}
Just putting the two guards at the beginning.
import Core | ||
import SwiftUI | ||
|
||
class CredentialProviderListViewController: UIViewController { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor: Can prob make final
import BrowserServicesKit | ||
import Core | ||
|
||
class CredentialProviderViewController: ASCredentialProviderViewController { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor: Can prob make final
extension UIResponder { | ||
|
||
@discardableResult | ||
func openUrl(_ url: URL?) -> Bool { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think a small bit of documentation here explaining this would be helpful
Task/Issue URL: iOS PR: duckduckgo/iOS#3658 macOS PR: duckduckgo/macos-browser#3628 What kind of version bump will this require?: Minor **Description**: Migrates secure vault DB file to shared storage, and migrates the vault keychain items to shared keychain on iOS for usage by its new credential provider extension
611e9dc
into
feature/system-credential-provider
Task/Issue URL:
Tech Design URL:
CC:
Description:
Adds the Credential provider extension to the app, with functionality to view all + select from saved passwords for autofilling in 3rd party apps.
Steps to test this PR:
Note: Use the Alpha target for testing, as the extension has not been enabled on the main app target yet.
<!—
Before submitting a PR, please ensure you have tested the combinations you expect the reviewer to test, then delete configurations you know do not need explicit testing.
Using a simulator where a physical device is unavailable is acceptable.
—>
Definition of Done (Internal Only):
Copy Testing:
’
rather than’
Orientation Testing:
Device Testing:
OS Testing:
Theme Testing:
—
Internal references:
Software Engineering Expectations
Technical Design Template