Commit 248cd1bb authored by Jasmine Chen's avatar Jasmine Chen Committed by Commit Bot

ArcCameraBridge: Support RegisterCameraHalClient with callback

We deprecate the old RegisterCameraHalClient method, renaming it to
RegisterCameraHalClientLegacy and add a new RegisterCameraHalClient that
takes in a result callback that would indicate whether we've
successfully registered CameraHalClient.

BUG=b:170075468
TEST= \
  1. Build and deploy simplechrome
  2. Verify pi-arc (eve) could still use the old method to register.
  3. Apply ag/13017293 and ag/13026196 and verify the client is
     identified as Android.

Change-Id: Ib3e9cf137acea50d3d39601d31ef8a2c34f3df46
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2526650Reviewed-by: default avatarShik Chen <shik@chromium.org>
Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Reviewed-by: default avatarWei Lee <wtlee@chromium.org>
Commit-Queue: Jasmine Chen <lnishan@google.com>
Cr-Commit-Position: refs/heads/master@{#828688}
parent 95e3ef59
......@@ -136,10 +136,20 @@ void ArcCameraBridge::StartCameraService(StartCameraServiceCallback callback) {
fd.get(), token, base::BindOnce([](bool success) {}));
}
void ArcCameraBridge::RegisterCameraHalClient(
void ArcCameraBridge::RegisterCameraHalClientLegacy(
mojo::PendingRemote<cros::mojom::CameraHalClient> client) {
media::CameraHalDispatcherImpl::GetInstance()->RegisterClient(
std::move(client));
}
void ArcCameraBridge::RegisterCameraHalClient(
mojo::PendingRemote<cros::mojom::CameraHalClient> client,
RegisterCameraHalClientCallback callback) {
auto* dispatcher = media::CameraHalDispatcherImpl::GetInstance();
auto type = cros::mojom::CameraClientType::ANDROID;
dispatcher->RegisterClientWithToken(
std::move(client), type, dispatcher->GetTokenForTrustedClient(type),
std::move(callback));
}
} // namespace arc
......@@ -35,8 +35,11 @@ class ArcCameraBridge : public KeyedService, public mojom::CameraHost {
// mojom::CameraHost overrides:
void StartCameraService(StartCameraServiceCallback callback) override;
void RegisterCameraHalClient(
void RegisterCameraHalClientLegacy(
mojo::PendingRemote<cros::mojom::CameraHalClient> client) override;
void RegisterCameraHalClient(
mojo::PendingRemote<cros::mojom::CameraHalClient> client,
RegisterCameraHalClientCallback callback) override;
private:
class PendingStartCameraServiceResult;
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Next MinVersion: 3
// Next MinVersion: 4
module arc.mojom;
......@@ -92,15 +92,22 @@ interface CameraService {
GetCameraDeviceInfos@7() => (array<CameraDeviceInfo> device_infos);
};
// Next method ID: 2
// Next method ID: 3
interface CameraHost {
// Notifies Chrome that CameraService is requested and returns an interface
// pointer bound to a newly created service. Used by camera HAL v1.
StartCameraService@0() => (pending_remote<CameraService> service);
// [Deprecated in version 3]
// Registers the camera HAL client. Used by camera HAL v3.
[MinVersion=2] RegisterCameraHalClient@1(
[MinVersion=2] RegisterCameraHalClientLegacy@1(
pending_remote<cros.mojom.CameraHalClient> client);
// Registers the camera HAL client. Used by camera HAL v3. This method
// registers the camera HAL client with a token-based authentication mechanism
// and thus can fail when an authentication failure is encountered.
[MinVersion=3] RegisterCameraHalClient@2(
pending_remote<cros.mojom.CameraHalClient> client) => (int32 result);
};
// Next method ID: 1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment