permission_broker: Support USB device partial interface claim part 3

Add new Permission APIs OpenPathAndRegisterClient, DetachInterface, and
ReattachInterface for clients to have USB device interface level
detaching/reattaching control.

BUG=chromium:1258885
TEST=Unit tests and manual test with a composite USB camera device to
open, claim interface(s), release interface(s), and close.

Change-Id: I21e5f1d34315cc5f581111c93c5813459e3cc5c4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3658415
Reviewed-by: Jorge Lucangeli Obes <jorgelo@chromium.org>
Tested-by: Jack Hsieh <chengweih@chromium.org>
Commit-Queue: Jack Hsieh <chengweih@chromium.org>
NOKEYCHECK=True
GitOrigin-RevId: 888eb985dd7c4403693b096430ef55667124225a
1 file changed
tree: 848c917d21eb836dc4527f1513eb908de51023e3
  1. constants/
  2. dbus/
  3. src/
  4. switches/
  5. .gitignore
  6. BUILD.gn
  7. build.rs
  8. Cargo.toml
  9. LICENSE
  10. OWNERS
  11. README.md
  12. system_api.pc
README.md

This directory (platform2/system_api) contains constants and definitions like D-Bus service names that are shared between Chromium and Chromium OS.

This directory is only for things like headers and .proto files. No implementation should be added.

When writting a .proto file make sure to use:

option optimize_for = LITE_RUNTIME;

This will force usage of a lite protobuf instead of a full/heavy weight protobuf. The browser only links against the light version, so you will get cryptic link errors about missing parts of Message if you define a protobuf here and then try to use it in Chrome. Currently CrOS links against the full protobuffer library, but that might change in the future.

When declaring a protobuf, avoid use of required unless it is exactly what you mean. “Required is Forever” and very rarely should actually be used. Consult Protocol Buffer Basics: C++ for a detailed of this issue.