1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-21 18:53:29 +00:00

respond to review comments:

• replace usage of compile time flag with boolean for conditinal logic
• moved sandbox specific logic to contained module inside macos.rs
• remove redundant browser array from objc code and pass the target browser path as arg
This commit is contained in:
John Harrington
2025-11-29 19:11:52 -07:00
parent be86360ad8
commit 97223e6568
12 changed files with 98 additions and 100 deletions

View File

@@ -6,7 +6,7 @@
// Request user permission to access browser directory
// Returns base64-encoded bookmark data, or NULL if declined
// Caller must free returned string
char* requestBrowserAccess(const char* browserName);
char* requestBrowserAccess(const char* browserName, const char* relativePath);
// Check if we have stored bookmark (doesn't verify validity)
bool hasStoredBrowserAccess(const char* browserName);

View File

@@ -14,10 +14,11 @@ static BrowserAccessManager* getManager() {
return sharedManager;
}
char* requestBrowserAccess(const char* browserName) {
char* requestBrowserAccess(const char* browserName, const char* relativePath) {
@autoreleasepool {
NSString* name = [NSString stringWithUTF8String:browserName];
NSString* result = [getManager() requestAccessToBrowserDir:name];
NSString* path = [NSString stringWithUTF8String:relativePath];
NSString* result = [getManager() requestAccessToBrowserDir:name relativePath:path];
if (result == nil) {
return NULL;

View File

@@ -8,7 +8,7 @@ NS_ASSUME_NONNULL_BEGIN
/// Request access to a specific browser's directory
/// Returns security bookmark data (used to persist permissions) as base64 string, or nil if user declined
- (nullable NSString *)requestAccessToBrowserDir:(NSString *)browserName;
- (nullable NSString *)requestAccessToBrowserDir:(NSString *)browserName relativePath:(NSString *)relativePath;
/// Check if we have stored bookmark for browser (doesn't verify it's still valid)
- (BOOL)hasStoredAccess:(NSString *)browserName;

View File

@@ -3,31 +3,19 @@
@implementation BrowserAccessManager {
NSString *_bookmarkKey;
NSDictionary<NSString *, NSString *> *_browserPaths;
}
- (instancetype)init {
self = [super init];
if (self) {
_bookmarkKey = @"com.bitwarden.chromiumImporter.bookmarks";
_browserPaths = @{
@"Chrome": @"Library/Application Support/Google/Chrome",
@"Chromium": @"Library/Application Support/Chromium",
@"Microsoft Edge": @"Library/Application Support/Microsoft Edge",
@"Brave": @"Library/Application Support/BraveSoftware/Brave-Browser",
@"Arc": @"Library/Application Support/Arc/User Data",
@"Opera": @"Library/Application Support/com.operasoftware.Opera",
@"Vivaldi": @"Library/Application Support/Vivaldi"
};
}
return self;
}
- (NSString *)requestAccessToBrowserDir:(NSString *)browserName {
- (NSString *)requestAccessToBrowserDir:(NSString *)browserName relativePath:(NSString *)relativePath {
// NSLog(@"[OBJC] requestAccessToBrowserDir called for: %@", browserName);
NSString *relativePath = _browserPaths[browserName];
if (!relativePath) {
// NSLog(@"[OBJC] Unknown browser: %@", browserName);
return nil;