camera: Use token to replace mojo channel manager instance

We want to hide the detail of the camera mojo channel manager and camera
hal also doesn't need it. Use a token to decouple it.

BUG=b:173033342
TEST=emerge
cros-camera
cros-camera-hal-usb
cros-camera-libcab
cros-camera-libcab_test
cros-camera-libcamera_common
cros-camera-libcamera_ipc
cros-camera-libjda
cros-camera-libjea_test
cros-camera-test
Check preview/take picture/recording on CCA on kukui.
Pass "*Camera3FrameTest/Camera3SingleFrameTest*" on kukui.

Cq-Depend: chromium:2546353
Cq-Depend: chromium:2550966
Cq-Depend: chromium:2550967
Cq-Depend: chromium:2550968
Cq-Depend: chromium:2550969
Change-Id: I3ea2d1af5aeeee498eff10a179be3f09e09f1e7b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2546676
Tested-by: Hsu Wei-Cheng <mojahsu@chromium.org>
Commit-Queue: Hsu Wei-Cheng <mojahsu@chromium.org>
Reviewed-by: Wei Lee <wtlee@chromium.org>
diff --git a/camera/camera3_test/camera3_module_test.cc b/camera/camera3_test/camera3_module_test.cc
index bd3441c..31da918 100644
--- a/camera/camera3_test/camera3_module_test.cc
+++ b/camera/camera3_test/camera3_module_test.cc
@@ -26,7 +26,7 @@
 #include "camera3_test/camera3_perf_log.h"
 #include "camera3_test/camera3_test_data_forwarder.h"
 #include "common/utils/camera_hal_enumerator.h"
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "cros-camera/cros_camera_hal.h"
 
 namespace camera3_test {
@@ -294,7 +294,7 @@
 // On successfully Initialized, |cam_module_| will pointed to valid
 // camera_module_t.
 static void InitCameraModule(const base::FilePath& camera_hal_path,
-                             cros::CameraMojoChannelManager* mojo_manager,
+                             cros::CameraMojoChannelManagerToken* token,
                              void** cam_hal_handle,
                              camera_module_t** cam_module,
                              cros::cros_camera_hal_t** cros_camera_hal) {
@@ -307,7 +307,7 @@
   // TODO(b/151270948): We should report error here if it fails to find the
   // symbol once all camera HALs have implemented the interface.
   if (*cros_camera_hal != nullptr) {
-    (*cros_camera_hal)->set_up(mojo_manager);
+    (*cros_camera_hal)->set_up(token);
   }
 
   camera_module_t* module = static_cast<camera_module_t*>(
@@ -329,19 +329,18 @@
 
 static void InitCameraModuleByHalPath(
     const base::FilePath& camera_hal_path,
-    cros::CameraMojoChannelManager* mojo_manager,
+    cros::CameraMojoChannelManagerToken* token,
     void** cam_hal_handle,
     cros::cros_camera_hal_t** cros_camera_hal) {
-  InitCameraModule(camera_hal_path, mojo_manager, cam_hal_handle, &g_cam_module,
+  InitCameraModule(camera_hal_path, token, cam_hal_handle, &g_cam_module,
                    cros_camera_hal);
 }
 
-static void InitCameraModuleByFacing(
-    int facing,
-    cros::CameraMojoChannelManager* mojo_manager,
-    void** cam_hal_handle,
-    cros::cros_camera_hal_t** cros_camera_hal,
-    base::FilePath* camera_hal_path) {
+static void InitCameraModuleByFacing(int facing,
+                                     cros::CameraMojoChannelManagerToken* token,
+                                     void** cam_hal_handle,
+                                     cros::cros_camera_hal_t** cros_camera_hal,
+                                     base::FilePath* camera_hal_path) {
   // Do cleanup when exit from ASSERT_XX
   struct CleanupModule {
     void operator()(void** cam_hal_handle) {
@@ -355,7 +354,7 @@
     }
   };
   for (const auto& hal_path : cros::GetCameraHalPaths()) {
-    InitCameraModule(hal_path, mojo_manager, cam_hal_handle, &g_cam_module,
+    InitCameraModule(hal_path, token, cam_hal_handle, &g_cam_module,
                      cros_camera_hal);
     std::unique_ptr<void*, CleanupModule> cleanup_ptr(cam_hal_handle);
     if (g_cam_module != NULL) {
@@ -1330,7 +1329,7 @@
 
 bool InitializeTest(int* argc,
                     char*** argv,
-                    cros::CameraMojoChannelManager* mojo_manager,
+                    cros::CameraMojoChannelManagerToken* token,
                     void** cam_hal_handle,
                     cros::cros_camera_hal_t** cros_camera_hal) {
   // Set up logging so we can enable VLOGs with -v / --vmodule.
@@ -1375,11 +1374,11 @@
   // Open camera HAL and get module
   if (facing != -ENOENT) {
     camera3_test::GetModuleThread().Start();
-    camera3_test::InitCameraModuleByFacing(facing, mojo_manager, cam_hal_handle,
+    camera3_test::InitCameraModuleByFacing(facing, token, cam_hal_handle,
                                            cros_camera_hal, &camera_hal_path);
   } else if (!camera_hal_path.empty()) {
     camera3_test::GetModuleThread().Start();
-    camera3_test::InitCameraModuleByHalPath(camera_hal_path, mojo_manager,
+    camera3_test::InitCameraModuleByHalPath(camera_hal_path, token,
                                             cam_hal_handle, cros_camera_hal);
   } else {
     if (camera3_test::CameraHalClient::GetInstance()->Start(
@@ -1418,10 +1417,10 @@
 
 extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) {
   void* cam_hal_handle = NULL;
-  std::unique_ptr<cros::CameraMojoChannelManager> mojo_manager =
-      cros::CameraMojoChannelManager::CreateInstance();
+  std::unique_ptr<cros::CameraMojoChannelManagerToken> mojo_manager_token(
+      cros::CameraMojoChannelManagerToken::CreateInstance());
   cros::cros_camera_hal_t* cros_camera_hal;
-  if (!InitializeTest(argc, argv, mojo_manager.get(), &cam_hal_handle,
+  if (!InitializeTest(argc, argv, mojo_manager_token.get(), &cam_hal_handle,
                       &cros_camera_hal)) {
     exit(EXIT_FAILURE);
   }
@@ -1450,9 +1449,9 @@
   message_loop.SetAsCurrent();
 
   cros::cros_camera_hal_t* cros_camera_hal = nullptr;
-  std::unique_ptr<cros::CameraMojoChannelManager> mojo_manager =
-      cros::CameraMojoChannelManager::CreateInstance();
-  if (InitializeTest(&argc, &argv, mojo_manager.get(), &cam_hal_handle,
+  std::unique_ptr<cros::CameraMojoChannelManagerToken> mojo_manager_token(
+      cros::CameraMojoChannelManagerToken::CreateInstance());
+  if (InitializeTest(&argc, &argv, mojo_manager_token.get(), &cam_hal_handle,
                      &cros_camera_hal)) {
     result = RUN_ALL_TESTS();
   }
@@ -1464,7 +1463,7 @@
   if (cros_camera_hal != nullptr) {
     cros_camera_hal->tear_down();
   }
-  mojo_manager.reset();
+  mojo_manager_token.reset();
 
   // Close Camera HAL
   if (cam_hal_handle && dlclose(cam_hal_handle) != 0) {
diff --git a/camera/common/camera_algorithm_bridge_impl.cc b/camera/common/camera_algorithm_bridge_impl.cc
index 8668520..95f215b 100644
--- a/camera/common/camera_algorithm_bridge_impl.cc
+++ b/camera/common/camera_algorithm_bridge_impl.cc
@@ -37,9 +37,10 @@
 
 // static
 std::unique_ptr<CameraAlgorithmBridge> CameraAlgorithmBridge::CreateInstance(
-    CameraAlgorithmBackend backend, CameraMojoChannelManager* mojo_manager) {
+    CameraAlgorithmBackend backend, CameraMojoChannelManagerToken* token) {
   VLOGF_ENTER();
-  return std::make_unique<CameraAlgorithmBridgeImpl>(backend, mojo_manager);
+  return std::make_unique<CameraAlgorithmBridgeImpl>(
+      backend, CameraMojoChannelManager::FromToken(token));
 }
 
 CameraAlgorithmBridgeImpl::CameraAlgorithmBridgeImpl(
diff --git a/camera/common/camera_mojo_channel_manager_impl.cc b/camera/common/camera_mojo_channel_manager_impl.cc
index 42c9839..04f0fc8 100644
--- a/camera/common/camera_mojo_channel_manager_impl.cc
+++ b/camera/common/camera_mojo_channel_manager_impl.cc
@@ -106,10 +106,8 @@
 }
 
 // static
-std::unique_ptr<CameraMojoChannelManager>
-CameraMojoChannelManager::CreateInstance() {
-  return base::WrapUnique<CameraMojoChannelManager>(
-      new CameraMojoChannelManagerImpl());
+CameraMojoChannelManagerToken* CameraMojoChannelManagerToken::CreateInstance() {
+  return new CameraMojoChannelManagerImpl();
 }
 
 // static
diff --git a/camera/common/jpeg/jpeg_decode_accelerator_impl.cc b/camera/common/jpeg/jpeg_decode_accelerator_impl.cc
index c636f74..727ee6e 100644
--- a/camera/common/jpeg/jpeg_decode_accelerator_impl.cc
+++ b/camera/common/jpeg/jpeg_decode_accelerator_impl.cc
@@ -69,9 +69,9 @@
 
 // static
 std::unique_ptr<JpegDecodeAccelerator> JpegDecodeAccelerator::CreateInstance(
-    CameraMojoChannelManager* mojo_manager) {
-  return base::WrapUnique<JpegDecodeAccelerator>(
-      new JpegDecodeAcceleratorImpl(mojo_manager));
+    CameraMojoChannelManagerToken* token) {
+  return base::WrapUnique<JpegDecodeAccelerator>(new JpegDecodeAcceleratorImpl(
+      CameraMojoChannelManager::FromToken(token)));
 }
 
 JpegDecodeAcceleratorImpl::JpegDecodeAcceleratorImpl(
diff --git a/camera/common/jpeg/jpeg_decode_accelerator_test.cc b/camera/common/jpeg/jpeg_decode_accelerator_test.cc
index ab768af..f77851c 100644
--- a/camera/common/jpeg/jpeg_decode_accelerator_test.cc
+++ b/camera/common/jpeg/jpeg_decode_accelerator_test.cc
@@ -106,21 +106,21 @@
 class JpegDecodeTestEnvironment : public ::testing::Environment {
  public:
   JpegDecodeTestEnvironment(const char* jpeg_filename1,
-                            const char* jpeg_filename2) {
+                            const char* jpeg_filename2)
+      : mojo_manager_token_(CameraMojoChannelManagerToken::CreateInstance()) {
     jpeg_filename1_ = jpeg_filename1 ? jpeg_filename1 : kDefaultJpegFilename1;
     jpeg_filename2_ = jpeg_filename2 ? jpeg_filename2 : kDefaultJpegFilename2;
-    mojo_manager_ = CameraMojoChannelManager::CreateInstance();
   }
 
   const char* jpeg_filename1_;
   const char* jpeg_filename2_;
-  std::unique_ptr<CameraMojoChannelManager> mojo_manager_;
+  std::unique_ptr<CameraMojoChannelManagerToken> mojo_manager_token_;
 };
 
 void JpegDecodeAcceleratorTest::SetUp() {
   for (size_t i = 0; i < kMaxDecoderNumber; i++) {
-    jpeg_decoder_[i] =
-        std::make_unique<JpegDecodeAcceleratorImpl>(g_env->mojo_manager_.get());
+    jpeg_decoder_[i] = std::make_unique<JpegDecodeAcceleratorImpl>(
+        g_env->mojo_manager_token_.get());
   }
 }
 
@@ -188,8 +188,8 @@
       output_size > frame->sw_out_shm_mapping.mapped_size()) {
     frame->sw_out_shm_region =
         base::WritableSharedMemoryRegion::Create(output_size);
-    frame->sw_out_shm_mapping = frame->ww_out_shm_region.Map();
-    LOG_ASSERT(frame->ww_out_shm_mapping.IsValid());
+    frame->sw_out_shm_mapping = frame->sw_out_shm_region.Map();
+    LOG_ASSERT(frame->sw_out_shm_mapping.IsValid());
   }
   memset(frame->sw_out_shm_mapping.memory(), 0, output_size);
 }
@@ -230,8 +230,8 @@
   memset(frame->hw_out_shm_mapping.memory(), 0,
          frame->hw_out_shm_mapping.mapped_size());
 
-  input_fd = in_platform_shm.GetPlatformHandle().fd;
-  output_fd = hw_out_platform_shm.GetPlatformHandle().fd;
+  input_fd = frame->in_shm_region.GetPlatformHandle().fd;
+  output_fd = frame->hw_out_shm_region.GetPlatformHandle().fd;
   VLOG(1) << "input fd " << input_fd << " output fd " << output_fd;
 
   // Pretend the shared memory as DMA buffer.
diff --git a/camera/common/jpeg/jpeg_encode_accelerator_impl.cc b/camera/common/jpeg/jpeg_encode_accelerator_impl.cc
index 1cb3c01..780378a 100644
--- a/camera/common/jpeg/jpeg_encode_accelerator_impl.cc
+++ b/camera/common/jpeg/jpeg_encode_accelerator_impl.cc
@@ -43,9 +43,9 @@
 
 // static
 std::unique_ptr<JpegEncodeAccelerator> JpegEncodeAccelerator::CreateInstance(
-    CameraMojoChannelManager* mojo_manager) {
-  return base::WrapUnique<JpegEncodeAccelerator>(
-      new JpegEncodeAcceleratorImpl(mojo_manager));
+    CameraMojoChannelManagerToken* token) {
+  return base::WrapUnique<JpegEncodeAccelerator>(new JpegEncodeAcceleratorImpl(
+      CameraMojoChannelManager::FromToken(token)));
 }
 
 JpegEncodeAcceleratorImpl::JpegEncodeAcceleratorImpl(
diff --git a/camera/common/jpeg/jpeg_encode_accelerator_test.cc b/camera/common/jpeg/jpeg_encode_accelerator_test.cc
index 7b233c3..8c3ddcb 100644
--- a/camera/common/jpeg/jpeg_encode_accelerator_test.cc
+++ b/camera/common/jpeg/jpeg_encode_accelerator_test.cc
@@ -19,6 +19,7 @@
 #include <libyuv.h>
 
 #include "cros-camera/camera_buffer_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "cros-camera/exif_utils.h"
 #include "cros-camera/future.h"
 #include "cros-camera/jpeg_compressor.h"
@@ -119,22 +120,22 @@
  public:
   JpegEncodeTestEnvironment(const char* yuv_filename1,
                             const char* yuv_filename2,
-                            bool save_to_file) {
+                            bool save_to_file)
+      : mojo_manager_token_(CameraMojoChannelManagerToken::CreateInstance()) {
     yuv_filename1_ = yuv_filename1 ? yuv_filename1 : kDefaultJpegFilename1;
     yuv_filename2_ = yuv_filename2 ? yuv_filename2 : kDefaultJpegFilename2;
     save_to_file_ = save_to_file;
-    mojo_manager_ = CameraMojoChannelManager::CreateInstance();
   }
 
   const char* yuv_filename1_;
   const char* yuv_filename2_;
   bool save_to_file_;
-  std::unique_ptr<CameraMojoChannelManager> mojo_manager_;
+  std::unique_ptr<CameraMojoChannelManagerToken> mojo_manager_token_;
 };
 
 void JpegEncodeAcceleratorTest::SetUp() {
   jpeg_encoder_ =
-      JpegEncodeAccelerator::CreateInstance(g_env->mojo_manager_.get());
+      JpegEncodeAccelerator::CreateInstance(g_env->mojo_manager_token_.get());
   buffer_manager_ = CameraBufferManager::GetInstance();
 }
 
@@ -251,7 +252,7 @@
 
 bool JpegEncodeAcceleratorTest::GetSoftwareEncodeResult(Frame* frame) {
   std::unique_ptr<JpegCompressor> compressor(
-      JpegCompressor::GetInstance(g_env->mojo_manager_.get()));
+      JpegCompressor::GetInstance(g_env->mojo_manager_token_.get()));
   if (!compressor->CompressImage(frame->data_str.data(), frame->width,
                                  frame->height, kJpegDefaultQuality, nullptr, 0,
                                  frame->sw_out_shm_mapping.mapped_size(),
diff --git a/camera/common/jpeg_compressor_impl.cc b/camera/common/jpeg_compressor_impl.cc
index 96c70af..1fb5aa9 100644
--- a/camera/common/jpeg_compressor_impl.cc
+++ b/camera/common/jpeg_compressor_impl.cc
@@ -18,6 +18,7 @@
 #include <base/memory/writable_shared_memory_region.h>
 #include <base/timer/elapsed_timer.h>
 #include "cros-camera/camera_buffer_manager.h"
+#include "cros-camera/camera_mojo_channel_manager.h"
 #include "cros-camera/common.h"
 #include "cros-camera/jpeg_encode_accelerator.h"
 
@@ -42,11 +43,11 @@
 
 // static
 std::unique_ptr<JpegCompressor> JpegCompressor::GetInstance(
-    CameraMojoChannelManager* mojo_manager) {
-  return std::make_unique<JpegCompressorImpl>(mojo_manager);
+    CameraMojoChannelManagerToken* token) {
+  return std::make_unique<JpegCompressorImpl>(token);
 }
 
-JpegCompressorImpl::JpegCompressorImpl(CameraMojoChannelManager* mojo_manager)
+JpegCompressorImpl::JpegCompressorImpl(CameraMojoChannelManagerToken* token)
     : camera_metrics_(CameraMetrics::New()),
       hw_encoder_(nullptr),
       hw_encoder_started_(false),
@@ -54,7 +55,7 @@
       out_buffer_size_(0),
       out_data_size_(0),
       is_encode_success_(false),
-      mojo_manager_(mojo_manager) {}
+      mojo_manager_token_(token) {}
 
 JpegCompressorImpl::~JpegCompressorImpl() {}
 
@@ -349,7 +350,8 @@
                                         uint32_t* out_data_size) {
   base::ElapsedTimer timer;
   if (!hw_encoder_) {
-    hw_encoder_ = cros::JpegEncodeAccelerator::CreateInstance(mojo_manager_);
+    hw_encoder_ =
+        cros::JpegEncodeAccelerator::CreateInstance(mojo_manager_token_);
     hw_encoder_started_ = hw_encoder_->Start();
   }
 
@@ -523,7 +525,8 @@
   }
 
   if (!hw_encoder_) {
-    hw_encoder_ = cros::JpegEncodeAccelerator::CreateInstance(mojo_manager_);
+    hw_encoder_ =
+        cros::JpegEncodeAccelerator::CreateInstance(mojo_manager_token_);
     hw_encoder_started_ = hw_encoder_->Start();
   }
 
diff --git a/camera/common/jpeg_compressor_impl.h b/camera/common/jpeg_compressor_impl.h
index a9e3fb0..c16da85 100644
--- a/camera/common/jpeg_compressor_impl.h
+++ b/camera/common/jpeg_compressor_impl.h
@@ -31,7 +31,7 @@
 // Implementation of JpegCompressor. This class is not thread-safe.
 class JpegCompressorImpl : public JpegCompressor {
  public:
-  explicit JpegCompressorImpl(CameraMojoChannelManager* mojo_manager);
+  explicit JpegCompressorImpl(CameraMojoChannelManagerToken* token);
   ~JpegCompressorImpl() override;
 
   // To be deprecated.
@@ -160,8 +160,8 @@
   // buffer is enough to encode or not.
   bool is_encode_success_;
 
-  // Mojo manager which is used for Mojo communication.
-  CameraMojoChannelManager* mojo_manager_;
+  // Mojo manager token which is used for Mojo communication.
+  CameraMojoChannelManagerToken* mojo_manager_token_;
 };
 
 }  // namespace cros
diff --git a/camera/common/libcab_test_main.cc b/camera/common/libcab_test_main.cc
index 7c31a57..674d028 100644
--- a/camera/common/libcab_test_main.cc
+++ b/camera/common/libcab_test_main.cc
@@ -26,12 +26,14 @@
  public:
   const size_t kShmBufferSize = 2048;
 
-  CameraAlgorithmBridgeFixture() : req_id_(0) {
-    mojo_manager_ = cros::CameraMojoChannelManager::CreateInstance();
+  CameraAlgorithmBridgeFixture()
+      : mojo_manager_token_(
+            cros::CameraMojoChannelManagerToken::CreateInstance()),
+        req_id_(0) {
     CameraAlgorithmBridgeFixture::return_callback =
         CameraAlgorithmBridgeFixture::ReturnCallbackForwarder;
     bridge_ = cros::CameraAlgorithmBridge::CreateInstance(
-        cros::CameraAlgorithmBackend::kTest, mojo_manager_.get());
+        cros::CameraAlgorithmBackend::kTest, mojo_manager_token_.get());
     if (!bridge_ || bridge_->Initialize(this) != 0) {
       ADD_FAILURE() << "Failed to initialize camera algorithm bridge";
       return;
@@ -53,8 +55,8 @@
     bridge_->Request(req_id_++, req_header, buffer_handle);
   }
 
-  cros::CameraMojoChannelManager* GetMojoManagerInstance() {
-    return mojo_manager_.get();
+  cros::CameraMojoChannelManagerToken* GetMojoManagerTokenInstance() {
+    return mojo_manager_token_.get();
   }
 
  protected:
@@ -87,7 +89,7 @@
 
   // |mojo_manager_| should only be destroyed after any usage of it. So it
   // should be declared first.
-  std::unique_ptr<cros::CameraMojoChannelManager> mojo_manager_;
+  std::unique_ptr<cros::CameraMojoChannelManagerToken> mojo_manager_token_;
 
   std::unique_ptr<cros::CameraAlgorithmBridge> bridge_;
 
@@ -210,7 +212,7 @@
   ASSERT_NE(0, sem_timedwait(&return_sem_, &timeout));
   // Reconnect the bridge.
   bridge_ = cros::CameraAlgorithmBridge::CreateInstance(
-      cros::CameraAlgorithmBackend::kTest, GetMojoManagerInstance());
+      cros::CameraAlgorithmBackend::kTest, GetMojoManagerTokenInstance());
   ASSERT_NE(nullptr, bridge_);
   ASSERT_EQ(0, bridge_->Initialize(this));
   base::WritableSharedMemoryRegion shm_region =
diff --git a/camera/hal/usb/cached_frame.cc b/camera/hal/usb/cached_frame.cc
index 29c3b19..6e85b56 100644
--- a/camera/hal/usb/cached_frame.cc
+++ b/camera/hal/usb/cached_frame.cc
@@ -83,13 +83,13 @@
       jda_available_(false),
       force_jpeg_hw_encode_(false),
       force_jpeg_hw_decode_(false) {
-  auto* mojo_manager = CameraHal::GetInstance().GetMojoManagerInstance();
+  auto* mojo_manager_token = CameraHal::GetInstance().GetMojoManagerToken();
 
-  jda_ = JpegDecodeAccelerator::CreateInstance(mojo_manager);
+  jda_ = JpegDecodeAccelerator::CreateInstance(mojo_manager_token);
   jda_available_ = jda_->Start();
   LOGF(INFO) << "JDA available: " << jda_available_;
 
-  jpeg_compressor_ = JpegCompressor::GetInstance(mojo_manager);
+  jpeg_compressor_ = JpegCompressor::GetInstance(mojo_manager_token);
 
   // Read force_jpeg_hw_(enc|dec) configs
   std::unique_ptr<CameraConfig> camera_config =
diff --git a/camera/hal/usb/camera_hal.cc b/camera/hal/usb/camera_hal.cc
index df0116b..5357ed4 100644
--- a/camera/hal/usb/camera_hal.cc
+++ b/camera/hal/usb/camera_hal.cc
@@ -128,8 +128,8 @@
   return camera_hal;
 }
 
-CameraMojoChannelManager* CameraHal::GetMojoManagerInstance() {
-  return mojo_manager_;
+CameraMojoChannelManagerToken* CameraHal::GetMojoManagerToken() {
+  return mojo_manager_token_;
 }
 
 int CameraHal::OpenDevice(int id,
@@ -303,12 +303,12 @@
   return 0;
 }
 
-void CameraHal::SetUp(CameraMojoChannelManager* mojo_manager) {
-  mojo_manager_ = mojo_manager;
+void CameraHal::SetUp(CameraMojoChannelManagerToken* token) {
+  mojo_manager_token_ = token;
 }
 
 void CameraHal::TearDown() {
-  mojo_manager_ = nullptr;
+  mojo_manager_token_ = nullptr;
 }
 
 void CameraHal::SetPrivacySwitchCallback(
@@ -584,8 +584,8 @@
   return CameraHal::GetInstance().Init();
 }
 
-static void set_up(CameraMojoChannelManager* mojo_manager) {
-  CameraHal::GetInstance().SetUp(mojo_manager);
+static void set_up(CameraMojoChannelManagerToken* token) {
+  CameraHal::GetInstance().SetUp(token);
 }
 
 static void tear_down() {
diff --git a/camera/hal/usb/camera_hal.h b/camera/hal/usb/camera_hal.h
index 3ccf7ae..87d9d5f 100644
--- a/camera/hal/usb/camera_hal.h
+++ b/camera/hal/usb/camera_hal.h
@@ -17,7 +17,7 @@
 #include <base/threading/thread_checker.h>
 #include <hardware/camera_common.h>
 
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "cros-camera/cros_camera_hal.h"
 #include "cros-camera/future.h"
 #include "cros-camera/udev_watcher.h"
@@ -44,7 +44,7 @@
 
   static CameraHal& GetInstance();
 
-  CameraMojoChannelManager* GetMojoManagerInstance();
+  CameraMojoChannelManagerToken* GetMojoManagerToken();
 
   // Implementations for camera_module_t.
   int OpenDevice(int id, const hw_module_t* module, hw_device_t** hw_device);
@@ -54,7 +54,7 @@
   int Init();
 
   // Implementations for cros_camera_hal_t.
-  void SetUp(CameraMojoChannelManager* mojo_manager);
+  void SetUp(CameraMojoChannelManagerToken* token);
   void TearDown();
   void SetPrivacySwitchCallback(PrivacySwitchStateChangeCallback callback);
 
@@ -121,8 +121,8 @@
   // integer here, and use the smallest free id when the camera is reconnected.
   std::map<std::string, std::set<int>> previous_ids_;
 
-  // Mojo manager which is used for Mojo communication.
-  CameraMojoChannelManager* mojo_manager_;
+  // Mojo manager token which is used for Mojo communication.
+  CameraMojoChannelManagerToken* mojo_manager_token_;
 };
 
 // Callback for camera_device.common.close().
diff --git a/camera/hal_adapter/camera_hal_adapter.cc b/camera/hal_adapter/camera_hal_adapter.cc
index 5168724..b04be15 100644
--- a/camera/hal_adapter/camera_hal_adapter.cc
+++ b/camera/hal_adapter/camera_hal_adapter.cc
@@ -43,7 +43,7 @@
 }  // namespace
 
 CameraHalAdapter::CameraHalAdapter(std::vector<camera_module_t*> camera_modules,
-                                   CameraMojoChannelManager* mojo_manager,
+                                   CameraMojoChannelManagerToken* token,
                                    CameraActivityCallback activity_callback)
     : camera_modules_(camera_modules),
       camera_module_thread_("CameraModuleThread"),
@@ -52,7 +52,7 @@
       callbacks_id_(0),
       vendor_tag_ops_id_(0),
       camera_metrics_(CameraMetrics::New()),
-      mojo_manager_(mojo_manager),
+      mojo_manager_token_(token),
       activity_callback_(activity_callback) {
   VLOGF_ENTER();
 }
@@ -479,7 +479,7 @@
   VLOGF_ENTER();
   DCHECK(camera_module_thread_.task_runner()->BelongsToCurrentThread());
 
-  if (reprocess_effect_manager_.Initialize(mojo_manager_) != 0) {
+  if (reprocess_effect_manager_.Initialize(mojo_manager_token_) != 0) {
     LOGF(ERROR) << "Failed to initialize reprocess effect manager";
     callback.Run(false);
     return;
diff --git a/camera/hal_adapter/camera_hal_adapter.h b/camera/hal_adapter/camera_hal_adapter.h
index c476288..264bc52 100644
--- a/camera/hal_adapter/camera_hal_adapter.h
+++ b/camera/hal_adapter/camera_hal_adapter.h
@@ -23,7 +23,7 @@
 #include "common/utils/common_types.h"
 #include "common/vendor_tag_manager.h"
 #include "cros-camera/camera_metrics.h"
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "cros-camera/future.h"
 #include "hal_adapter/reprocess_effect/reprocess_effect_manager.h"
 #include "mojo/camera3.mojom.h"
@@ -54,7 +54,7 @@
       int32_t, bool, cros::mojom::CameraClientType)>;
 
   CameraHalAdapter(std::vector<camera_module_t*> camera_modules,
-                   CameraMojoChannelManager* mojo_manager,
+                   CameraMojoChannelManagerToken* token,
                    CameraActivityCallback activity_callback);
 
   virtual ~CameraHalAdapter();
@@ -247,8 +247,8 @@
   // Metrics for camera service.
   std::unique_ptr<CameraMetrics> camera_metrics_;
 
-  // Mojo manager which is used for Mojo communication.
-  CameraMojoChannelManager* mojo_manager_;
+  // Mojo manager token which is used for Mojo communication.
+  CameraMojoChannelManagerToken* mojo_manager_token_;
 
   CameraActivityCallback activity_callback_;
 
diff --git a/camera/hal_adapter/camera_hal_server_impl.cc b/camera/hal_adapter/camera_hal_server_impl.cc
index 63f39a2..770d680 100644
--- a/camera/hal_adapter/camera_hal_server_impl.cc
+++ b/camera/hal_adapter/camera_hal_server_impl.cc
@@ -42,7 +42,8 @@
 namespace cros {
 
 CameraHalServerImpl::CameraHalServerImpl()
-    : mojo_manager_(CameraMojoChannelManager::CreateInstance()),
+    : mojo_manager_(CameraMojoChannelManager::FromToken(
+          CameraMojoChannelManagerToken::CreateInstance())),
       ipc_bridge_(new IPCBridge(this, mojo_manager_.get())) {
   VLOGF_ENTER();
 }
diff --git a/camera/hal_adapter/camera_hal_test_adapter.cc b/camera/hal_adapter/camera_hal_test_adapter.cc
index 7554e3e..abf075d 100644
--- a/camera/hal_adapter/camera_hal_test_adapter.cc
+++ b/camera/hal_adapter/camera_hal_test_adapter.cc
@@ -14,12 +14,12 @@
 
 CameraHalTestAdapter::CameraHalTestAdapter(
     std::vector<camera_module_t*> camera_modules,
-    CameraMojoChannelManager* mojo_manager,
+    CameraMojoChannelManagerToken* token,
     CameraActivityCallback activity_callback,
     bool enable_front,
     bool enable_back,
     bool enable_external)
-    : CameraHalAdapter(camera_modules, mojo_manager, activity_callback),
+    : CameraHalAdapter(camera_modules, token, activity_callback),
       enable_front_(enable_front),
       enable_back_(enable_back),
       enable_external_(enable_external) {
diff --git a/camera/hal_adapter/camera_hal_test_adapter.h b/camera/hal_adapter/camera_hal_test_adapter.h
index 35a63c2..75d7327 100644
--- a/camera/hal_adapter/camera_hal_test_adapter.h
+++ b/camera/hal_adapter/camera_hal_test_adapter.h
@@ -21,7 +21,7 @@
 class CameraHalTestAdapter : public CameraHalAdapter {
  public:
   CameraHalTestAdapter(std::vector<camera_module_t*> camera_modules,
-                       CameraMojoChannelManager* mojo_manager,
+                       CameraMojoChannelManagerToken* token,
                        CameraActivityCallback activity_callback,
                        bool enable_front,
                        bool enable_back,
diff --git a/camera/hal_adapter/reprocess_effect/gpu_algo_manager.cc b/camera/hal_adapter/reprocess_effect/gpu_algo_manager.cc
index 1479b85..48737a6 100644
--- a/camera/hal_adapter/reprocess_effect/gpu_algo_manager.cc
+++ b/camera/hal_adapter/reprocess_effect/gpu_algo_manager.cc
@@ -16,19 +16,19 @@
 
 // static
 GPUAlgoManager* GPUAlgoManager::GetInstance(
-    CameraMojoChannelManager* mojo_manager) {
-  static GPUAlgoManager* m = new GPUAlgoManager(mojo_manager);
+    CameraMojoChannelManagerToken* token) {
+  static GPUAlgoManager* m = new GPUAlgoManager(token);
   if (!m->bridge_) {
     return nullptr;
   }
   return m;
 }
 
-GPUAlgoManager::GPUAlgoManager(CameraMojoChannelManager* mojo_manager)
+GPUAlgoManager::GPUAlgoManager(CameraMojoChannelManagerToken* token)
     : camera_algorithm_callback_ops_t{}, req_id_(0) {
   return_callback = GPUAlgoManager::ReturnCallbackForwarder;
   bridge_ = cros::CameraAlgorithmBridge::CreateInstance(
-      cros::CameraAlgorithmBackend::kGoogleGpu, mojo_manager);
+      cros::CameraAlgorithmBackend::kGoogleGpu, token);
   if (!bridge_ || bridge_->Initialize(this) != 0) {
     LOGF(WARNING) << "Failed to initialize camera GPU algorithm bridge";
     bridge_ = nullptr;
diff --git a/camera/hal_adapter/reprocess_effect/gpu_algo_manager.h b/camera/hal_adapter/reprocess_effect/gpu_algo_manager.h
index 3daed44..5308655 100644
--- a/camera/hal_adapter/reprocess_effect/gpu_algo_manager.h
+++ b/camera/hal_adapter/reprocess_effect/gpu_algo_manager.h
@@ -15,13 +15,13 @@
 #include <base/synchronization/lock.h>
 
 #include "cros-camera/camera_algorithm_bridge.h"
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 
 namespace cros {
 
 class GPUAlgoManager final : public camera_algorithm_callback_ops_t {
  public:
-  static GPUAlgoManager* GetInstance(CameraMojoChannelManager* mojo_manager);
+  static GPUAlgoManager* GetInstance(CameraMojoChannelManagerToken* token);
 
   int32_t RegisterBuffer(int buffer_fd);
 
@@ -32,7 +32,7 @@
   void DeregisterBuffers(const std::vector<int32_t>& buffer_handles);
 
  private:
-  explicit GPUAlgoManager(CameraMojoChannelManager* mojo_manager);
+  explicit GPUAlgoManager(CameraMojoChannelManagerToken* token);
   GPUAlgoManager(const GPUAlgoManager&) = delete;
   GPUAlgoManager& operator=(const GPUAlgoManager&) = delete;
 
diff --git a/camera/hal_adapter/reprocess_effect/portrait_mode_effect.cc b/camera/hal_adapter/reprocess_effect/portrait_mode_effect.cc
index d5fbf87..3fa8a82 100644
--- a/camera/hal_adapter/reprocess_effect/portrait_mode_effect.cc
+++ b/camera/hal_adapter/reprocess_effect/portrait_mode_effect.cc
@@ -58,13 +58,13 @@
 int32_t PortraitModeEffect::InitializeAndGetVendorTags(
     std::vector<VendorTagInfo>* request_vendor_tags,
     std::vector<VendorTagInfo>* result_vendor_tags,
-    CameraMojoChannelManager* mojo_manager) {
+    CameraMojoChannelManagerToken* token) {
   VLOGF_ENTER();
   if (!request_vendor_tags || !result_vendor_tags) {
     return -EINVAL;
   }
 
-  gpu_algo_manager_ = GPUAlgoManager::GetInstance(mojo_manager);
+  gpu_algo_manager_ = GPUAlgoManager::GetInstance(token);
   if (!gpu_algo_manager_) {
     LOGF(WARNING)
         << "Cannot connect to GPU algorithm service. Disable portrait mode.";
diff --git a/camera/hal_adapter/reprocess_effect/portrait_mode_effect.h b/camera/hal_adapter/reprocess_effect/portrait_mode_effect.h
index 56d94cb..19c7387 100644
--- a/camera/hal_adapter/reprocess_effect/portrait_mode_effect.h
+++ b/camera/hal_adapter/reprocess_effect/portrait_mode_effect.h
@@ -36,7 +36,7 @@
   int32_t InitializeAndGetVendorTags(
       std::vector<VendorTagInfo>* request_vendor_tags,
       std::vector<VendorTagInfo>* result_vendor_tags,
-      CameraMojoChannelManager* mojo_manager);
+      CameraMojoChannelManagerToken* token);
 
   int32_t SetVendorTags(uint32_t request_vendor_tag_start,
                         uint32_t request_vendor_tag_count,
diff --git a/camera/hal_adapter/reprocess_effect/reprocess_effect.h b/camera/hal_adapter/reprocess_effect/reprocess_effect.h
index f9baab0..1f65731 100644
--- a/camera/hal_adapter/reprocess_effect/reprocess_effect.h
+++ b/camera/hal_adapter/reprocess_effect/reprocess_effect.h
@@ -16,7 +16,7 @@
 #include <hardware/gralloc.h>
 #include <system/camera_metadata.h>
 
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "hal_adapter/scoped_yuv_buffer_handle.h"
 
 struct VendorTagInfo {
@@ -41,13 +41,13 @@
   // Args:
   //    |request_vendor_tags|: names and types of request vendor tags
   //    |result_vendor_tags|: names and types of result vendor tags
-  //    |mojo_manager|: the mojo manager instance
+  //    |token|: the mojo manager token
   // Returns:
   //    0 on success; corresponding error code on failure.
   virtual int32_t InitializeAndGetVendorTags(
       std::vector<VendorTagInfo>* request_vendor_tags,
       std::vector<VendorTagInfo>* result_vendor_tags,
-      CameraMojoChannelManager* mojo_manager) = 0;
+      CameraMojoChannelManagerToken* token) = 0;
 
   // Sets the vendor tags that are allocated for the reprocessing effects.
   // Args:
diff --git a/camera/hal_adapter/reprocess_effect/reprocess_effect_manager.cc b/camera/hal_adapter/reprocess_effect/reprocess_effect_manager.cc
index 9ff77e1..0b4bed6 100644
--- a/camera/hal_adapter/reprocess_effect/reprocess_effect_manager.cc
+++ b/camera/hal_adapter/reprocess_effect/reprocess_effect_manager.cc
@@ -26,13 +26,13 @@
       buffer_manager_(CameraBufferManager::GetInstance()) {}
 
 int32_t ReprocessEffectManager::Initialize(
-    CameraMojoChannelManager* mojo_manager) {
+    CameraMojoChannelManagerToken* token) {
   VLOGF_ENTER();
   portrait_mode_ = std::make_unique<PortraitModeEffect>();
   std::vector<VendorTagInfo> request_vendor_tags;
   std::vector<VendorTagInfo> result_vendor_tags;
   if (portrait_mode_->InitializeAndGetVendorTags(
-          &request_vendor_tags, &result_vendor_tags, mojo_manager) != 0) {
+          &request_vendor_tags, &result_vendor_tags, token) != 0) {
     LOGF(ERROR) << "Failed to initialize portrait mode effect";
     return -ENODEV;
   }
diff --git a/camera/hal_adapter/reprocess_effect/reprocess_effect_manager.h b/camera/hal_adapter/reprocess_effect/reprocess_effect_manager.h
index 7a32fa2..b5eac7a 100644
--- a/camera/hal_adapter/reprocess_effect/reprocess_effect_manager.h
+++ b/camera/hal_adapter/reprocess_effect/reprocess_effect_manager.h
@@ -16,7 +16,7 @@
 #include <system/camera_vendor_tags.h>
 
 #include "cros-camera/camera_buffer_manager.h"
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "hal_adapter/reprocess_effect/portrait_mode_effect.h"
 #include "hal_adapter/reprocess_effect/reprocess_effect.h"
 
@@ -33,7 +33,7 @@
 
   ~ReprocessEffectManager() = default;
 
-  int32_t Initialize(CameraMojoChannelManager* mojo_manager);
+  int32_t Initialize(CameraMojoChannelManagerToken* token);
 
   // Check whether there are vendor tags for reprocessing effects
   bool HasReprocessEffectVendorTag(const camera_metadata_t& settings);
diff --git a/camera/include/cros-camera/camera_algorithm_bridge.h b/camera/include/cros-camera/camera_algorithm_bridge.h
index a6806b0..6c80fce 100644
--- a/camera/include/cros-camera/camera_algorithm_bridge.h
+++ b/camera/include/cros-camera/camera_algorithm_bridge.h
@@ -13,7 +13,7 @@
 #include <vector>
 
 #include "cros-camera/camera_algorithm.h"
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "cros-camera/export.h"
 
 namespace cros {
@@ -37,8 +37,8 @@
 // Example usage:
 //
 //  #include <cros-camera/camera_algorithm_bridge.h>
-//  auto* mojo_manager = GetMojoChannelManager();
-//  auto algo = CameraAlgorithmBridge::CreateInstance(backend, mojo_manager);
+//  auto* token = GetMojoChannelManagerToken();
+//  auto algo = CameraAlgorithmBridge::CreateInstance(backend, token);
 //  algo->Initialize(this);
 //  std::vector<int32_t> handles(2);
 //  handles[0] = algo->RegisterBuffer(buffer_fd0);
@@ -65,12 +65,12 @@
   // vendor algorithms.
   //
   // Args:
-  //    |mojo_manager|: The camera mojo channel manager instance which is used
-  //                    for mojo communication.
+  //    |token|: The camera mojo channel manager token which is used for mojo
+  //             communication.
   // Returns:
   //    Unique pointer to instance on success; nullptr on failure.
   static std::unique_ptr<CameraAlgorithmBridge> CreateInstance(
-      CameraAlgorithmBackend backend, CameraMojoChannelManager* mojo_manager);
+      CameraAlgorithmBackend backend, CameraMojoChannelManagerToken* token);
 
   virtual ~CameraAlgorithmBridge() {}
 
diff --git a/camera/include/cros-camera/camera_mojo_channel_manager.h b/camera/include/cros-camera/camera_mojo_channel_manager.h
index 4c42721..c9e16e4 100644
--- a/camera/include/cros-camera/camera_mojo_channel_manager.h
+++ b/camera/include/cros-camera/camera_mojo_channel_manager.h
@@ -14,7 +14,7 @@
 #include <base/callback_forward.h>
 #include <base/memory/ref_counted.h>
 
-#include "cros-camera/export.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "mojo/algorithm/camera_algorithm.mojom.h"
 #include "mojo/cros_camera_service.mojom.h"
 #include "mojo/gpu/jpeg_encode_accelerator.mojom.h"
@@ -28,12 +28,11 @@
 
 // There are many places that need to initialize Mojo and use related channels.
 // This class is used to manage them together.
-class CROS_CAMERA_EXPORT CameraMojoChannelManager {
+class CROS_CAMERA_EXPORT CameraMojoChannelManager
+    : public CameraMojoChannelManagerToken {
  public:
   using Callback = base::OnceCallback<void(void)>;
 
-  static std::unique_ptr<CameraMojoChannelManager> CreateInstance();
-
   virtual ~CameraMojoChannelManager() {}
 
   // TODO(b/151270948): Remove this method once all camera HALs implement
@@ -41,6 +40,11 @@
   // to them.
   static CameraMojoChannelManager* GetInstance();
 
+  static CameraMojoChannelManager* FromToken(
+      CameraMojoChannelManagerToken* token) {
+    return static_cast<CameraMojoChannelManager*>(token);
+  }
+
   // Gets the task runner that the CameraHalDispatcher interface is bound to.
   virtual scoped_refptr<base::SingleThreadTaskRunner> GetIpcTaskRunner() = 0;
 
diff --git a/camera/include/cros-camera/camera_mojo_channel_manager_token.h b/camera/include/cros-camera/camera_mojo_channel_manager_token.h
new file mode 100644
index 0000000..cf3766e
--- /dev/null
+++ b/camera/include/cros-camera/camera_mojo_channel_manager_token.h
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2020 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef CAMERA_INCLUDE_CROS_CAMERA_CAMERA_MOJO_CHANNEL_MANAGER_TOKEN_H_
+#define CAMERA_INCLUDE_CROS_CAMERA_CAMERA_MOJO_CHANNEL_MANAGER_TOKEN_H_
+
+#include "cros-camera/export.h"
+
+namespace cros {
+
+class CROS_CAMERA_EXPORT CameraMojoChannelManagerToken {
+ public:
+  static CameraMojoChannelManagerToken* CreateInstance();
+};
+
+}  // namespace cros
+
+#endif  // CAMERA_INCLUDE_CROS_CAMERA_CAMERA_MOJO_CHANNEL_MANAGER_TOKEN_H_
diff --git a/camera/include/cros-camera/cros_camera_hal.h b/camera/include/cros-camera/cros_camera_hal.h
index 3d1d01a..88763e7 100644
--- a/camera/include/cros-camera/cros_camera_hal.h
+++ b/camera/include/cros-camera/cros_camera_hal.h
@@ -10,7 +10,9 @@
 #define CROS_CAMERA_HAL_INFO_SYM CCHI
 #define CROS_CAMERA_HAL_INFO_SYM_AS_STR "CCHI"
 
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include <base/callback.h>
+
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 
 namespace cros {
 
@@ -25,10 +27,10 @@
 
 typedef struct cros_camera_hal {
   /**
-   * Sets up the camera HAL. The |mojo_manager| can be used for communication
-   * through Mojo.
+   * Sets up the camera HAL. The |token| can be used for communication through
+   * Mojo.
    */
-  void (*set_up)(CameraMojoChannelManager* mojo_manager);
+  void (*set_up)(CameraMojoChannelManagerToken* token);
 
   /**
    * Tears down the camera HAL.
diff --git a/camera/include/cros-camera/jpeg_compressor.h b/camera/include/cros-camera/jpeg_compressor.h
index 9074504..596c9b7 100644
--- a/camera/include/cros-camera/jpeg_compressor.h
+++ b/camera/include/cros-camera/jpeg_compressor.h
@@ -11,7 +11,7 @@
 
 #include <memory>
 
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "cros-camera/export.h"
 
 namespace cros {
@@ -39,7 +39,7 @@
   static std::unique_ptr<JpegCompressor> GetInstance();
 
   static std::unique_ptr<JpegCompressor> GetInstance(
-      CameraMojoChannelManager* mojo_manager);
+      CameraMojoChannelManagerToken* token);
 
   virtual ~JpegCompressor() {}
 
diff --git a/camera/include/cros-camera/jpeg_decode_accelerator.h b/camera/include/cros-camera/jpeg_decode_accelerator.h
index 8f4c778..fc50065 100644
--- a/camera/include/cros-camera/jpeg_decode_accelerator.h
+++ b/camera/include/cros-camera/jpeg_decode_accelerator.h
@@ -14,7 +14,7 @@
 
 #include <system/window.h>
 
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 
 namespace cros {
 
@@ -61,7 +61,7 @@
   static std::unique_ptr<JpegDecodeAccelerator> CreateInstance();
 
   static std::unique_ptr<JpegDecodeAccelerator> CreateInstance(
-      CameraMojoChannelManager* mojo_manager);
+      CameraMojoChannelManagerToken* token);
 
   virtual ~JpegDecodeAccelerator() {}
 
diff --git a/camera/include/cros-camera/jpeg_encode_accelerator.h b/camera/include/cros-camera/jpeg_encode_accelerator.h
index 8d065f2..31748ef 100644
--- a/camera/include/cros-camera/jpeg_encode_accelerator.h
+++ b/camera/include/cros-camera/jpeg_encode_accelerator.h
@@ -12,7 +12,7 @@
 #include <vector>
 
 #include <base/bind.h>
-#include "cros-camera/camera_mojo_channel_manager.h"
+#include "cros-camera/camera_mojo_channel_manager_token.h"
 #include "cros-camera/jpeg_compressor.h"
 
 namespace cros {
@@ -65,7 +65,7 @@
   };
 
   static std::unique_ptr<JpegEncodeAccelerator> CreateInstance(
-      CameraMojoChannelManager* mojo_manager);
+      CameraMojoChannelManagerToken* token);
 
   virtual ~JpegEncodeAccelerator() {}