mirror of
https://github.com/bitwarden/browser
synced 2026-01-01 16:13:27 +00:00
* feat: scaffold desktop_objc * feat: rename fido2 to autofill * feat: scaffold electron autofill * feat: auto call hello world on init * feat: scaffold call to basic objc function * feat: simple log that checks if autofill is enabled * feat: adding some availability guards * feat: scaffold services and allow calls from inspector * feat: create custom type for returning strings across rust/objc boundary * chore: clean up comments * feat: enable ARC * feat: add util function `c_string_to_nsstring` * chore: refactor and rename to `run_command` * feat: add try-catch around command execution * feat: properly implement command calling Add static typing. Add proper error handling. * feat: add autoreleasepool to avoid memory leaks * chore: change objc names to camelCase * fix: error returning * feat: extract some helper functions into utils class * feat: scaffold status command * feat: implement status command * feat: implement password credential mapping * wip: implement sync command This crashes because we are not properly handling the fact that `saveCredentialIdentities` uses callbacks, resulting in a race condition where we try to access a variable (result) that has already gotten dealloc'd. * feat: first version of callback * feat: make run_command async * feat: functioning callback returns * chore: refactor to make objc code easier to read and use * feat: refactor everything to use new callback return method * feat: re-implement status command with callback * fix: warning about CommandContext not being FFI-safe * feat: implement sync command using callbacks * feat: implement manual password credential sync * feat: add auto syncing * docs: add todo * feat: add support for passkeys * chore: move desktop autofill service to init service * feat: auto-add all .m files to builder * fix: native build on unix and windows * fix: unused compiler warnings * fix: napi type exports * feat: add corresponding dist command * feat: comment signing profile until we fix signing * fix: build breaking on non-macOS platforms * chore: cargo lock update * chore: revert accidental version change * feat: put sync behind feature flag * chore: put files in autofill folder * fix: obj-c code not recompiling on changes * feat: add `namespace` to commands * fix: linting complaining about flag * feat: add autofill as owner of their objc code * chore: make autofill owner of run_command in core crate * fix: re-add napi annotation * fix: remove dev bypass
48 lines
1.4 KiB
Objective-C
48 lines
1.4 KiB
Objective-C
#ifndef INTEROP_H
|
|
#define INTEROP_H
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
// Tips for developing Objective-C code:
|
|
// - Use the `NSLog` function to log messages to the system log
|
|
// - Example:
|
|
// NSLog(@"An example log: %@", someVariable);
|
|
// - Use the `@try` and `@catch` directives to catch exceptions
|
|
|
|
#if !__has_feature(objc_arc)
|
|
// Auto Reference Counting makes memory management easier for Objective-C objects
|
|
// Regular C objects still need to be managed manually
|
|
#error ARC must be enabled!
|
|
#endif
|
|
|
|
/// [Shared with Rust]
|
|
/// Simple struct to hold a C-string and its length
|
|
/// This is used to return strings created in Objective-C to Rust
|
|
/// so that Rust can free the memory when it's done with the string
|
|
struct ObjCString
|
|
{
|
|
char *value;
|
|
size_t size;
|
|
};
|
|
|
|
/// [Defined in Rust]
|
|
/// External function callable from Objective-C to return a string to Rust
|
|
extern bool commandReturn(void *context, struct ObjCString output);
|
|
|
|
/// [Callable from Rust]
|
|
/// Frees the memory allocated for an ObjCString
|
|
void freeObjCString(struct ObjCString *value);
|
|
|
|
// --- Helper functions to convert between Objective-C and Rust types ---
|
|
|
|
NSString *_success(NSDictionary *value);
|
|
NSString *_error(NSString *error);
|
|
NSString *_error_er(NSError *error);
|
|
NSString *_error_ex(NSException *error);
|
|
void _return(void *context, NSString *output);
|
|
|
|
struct ObjCString nsStringToObjCString(NSString *string);
|
|
NSString *cStringToNSString(char *string);
|
|
|
|
#endif
|