[Ash] Inject VideoConferenceManagerAsh to its clients as a dependency [chromium/src : main]

0 views
Skip to first unread message

Di Wu (Gerrit)

unread,
Feb 11, 2025, 7:31:51 PM2/11/25
to chromium...@chromium.org, feature-me...@chromium.org, ffred...@chromium.org, oshima...@chromium.org, tluk+...@chromium.org

Di Wu has uploaded the change for review

Commit message

[Ash] Inject VideoConferenceManagerAsh to its clients as a dependency

This CL needs to go after a previous CL crrev.com/c/6218261.

This CL formally dismantles the singleton design of
VideoConferenceManagerAsh. In other words, all four current clients of
VideoConferenceManagerAsh can no longer easily access the single and
globally shared VideoConferenceManagerAsh object through a static get
method.

The four currently known clients are:
1. video_conference::VideoConferenceManagerClientImpl
2. VideoConferenceAppServiceClient
3. VideoConferenceAshFeatureClient
4. ChromeCaptureModeDelegate

For 1, 2, and 3, the dependency will be injected through each client
class's constructor. For 4, the dependency will be injected through a
newly added setter method.

This Cl also updates affected browser tests of each client to reflect
this dependency injection change.
Bug: 354710097
Test: tryjob

Change diff


Change information

Files:
  • M chrome/browser/ash/crosapi/BUILD.gn
  • M chrome/browser/ash/crosapi/video_conference_ash_browsertest.cc
  • M chrome/browser/ash/main_parts/BUILD.gn
  • M chrome/browser/ash/main_parts/DEPS
  • M chrome/browser/ash/main_parts/chrome_browser_main_parts_ash.cc
  • M chrome/browser/ash/main_parts/chrome_browser_main_parts_ash.h
  • M chrome/browser/ash/video_conference/BUILD.gn
  • M chrome/browser/ash/video_conference/DEPS
  • M chrome/browser/ash/video_conference/video_conference_app_service_client_browsertest.cc
  • M chrome/browser/ash/video_conference/video_conference_ash_feature_client_browsertest.cc
  • M chrome/browser/ash/video_conference/video_conference_manager_ash.cc
  • M chrome/browser/ash/video_conference/video_conference_manager_ash.h
  • M chrome/browser/chromeos/video_conference/BUILD.gn
  • M chrome/browser/chromeos/video_conference/DEPS
  • M chrome/browser/chromeos/video_conference/video_conference_manager_client_browsertest.cc
  • M chrome/browser/chromeos/video_conference/video_conference_media_listener_browsertest.cc
  • M chrome/browser/ui/ash/capture_mode/BUILD.gn
  • M chrome/browser/ui/ash/capture_mode/DEPS
  • M chrome/browser/ui/ash/capture_mode/capture_mode_browsertest.cc
  • M chrome/browser/ui/ash/capture_mode/chrome_capture_mode_delegate.cc
  • M chrome/browser/ui/ash/capture_mode/chrome_capture_mode_delegate.h
  • M chrome/browser/ui/ash/main_extra_parts/BUILD.gn
  • M chrome/browser/ui/ash/main_extra_parts/DEPS
  • M chrome/browser/ui/ash/main_extra_parts/chrome_browser_main_extra_parts_ash.cc
  • M chrome/browser/ui/ash/main_extra_parts/chrome_browser_main_extra_parts_ash.h
  • M chrome/test/BUILD.gn
Change size: M
Delta: 26 files changed, 162 insertions(+), 80 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I678d727283a4e997560e347550e334e59981590c
Gerrit-Change-Number: 6256016
Gerrit-PatchSet: 1
Gerrit-Owner: Di Wu <di...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Di Wu (Gerrit)

unread,
Feb 12, 2025, 1:33:47 AM2/12/25
to chromium...@chromium.org, feature-me...@chromium.org, ffred...@chromium.org, oshima...@chromium.org, tluk+...@chromium.org
Delta: 26 files changed, 163 insertions(+), 80 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Iddd14d5b5d642f4b8751513d7b4110d46ed49102
Gerrit-Change-Number: 6256260
satisfied_requirement
unsatisfied_requirement
open
diffy

Di Wu (Gerrit)

unread,
Feb 12, 2025, 3:21:31 AM2/12/25
to Hidehiko Abe, Georg Neis, Kyle Horimoto, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ffred...@chromium.org, oshima...@chromium.org, tluk+...@chromium.org
Attention needed from Hidehiko Abe

Di Wu added 1 comment

File chrome/browser/ui/ash/main_extra_parts/chrome_browser_main_extra_parts_ash.cc
Line 585, Patchset 1 (Latest): ChromeCaptureModeDelegate::Get()->set_video_conference_manager_ash(
Di Wu . unresolved

@hide...@chromium.org Please note that I didn't use `ChromeShellDelegate` as a stepping stone to pass over the dependency from `ChromeBrowserMainPartsAsh` to `ChromeBrowserMainExtraPartsAsh` and finally to `ChromeCaptureModeDelegate`. And as you can see I definitely didn't pass it over through ctor injection, instead I created a dedicated setter to inject.

The reason is that the timing of the ctor for `ChromeShellDelegate` is earlier than the `PreProfileInit()` of both the `main parts` and the `main extra parts`. In addition, I cannot initialize `VideoConferenceManagerAsh` earlier than `PreProfileInit()` as `VideoConferenceManagerAsh` has its own dependency timing issues. What makes matters worse is, as `ChromeShellDelegate` itself has no static singleton access method, injecting a depedency to it at a later stage is not practical either.

So, as you see here, I opted for a tradeoff that piggybacks on the two static getter methods of `ChromeCaptureModeDelegate::Get()` and `ChromeBrowserMainExtraPartsAsh::Get()` to achieve the goal of injecting `VideoConferenceManagerAsh` at the right time.

I understand this whole chain of injection is convulted. I'm more than happy to keep revising this CL. Please let me know what you think.

Open in Gerrit

Related details

Attention is currently required from:
  • Hidehiko Abe
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Iddd14d5b5d642f4b8751513d7b4110d46ed49102
    Gerrit-Change-Number: 6256260
    Gerrit-PatchSet: 1
    Gerrit-Owner: Di Wu <di...@google.com>
    Gerrit-Reviewer: Di Wu <di...@google.com>
    Gerrit-Reviewer: Hidehiko Abe <hide...@chromium.org>
    Gerrit-CC: Georg Neis <ne...@chromium.org>
    Gerrit-CC: Kyle Horimoto <khor...@chromium.org>
    Gerrit-Attention: Hidehiko Abe <hide...@chromium.org>
    Gerrit-Comment-Date: Wed, 12 Feb 2025 08:21:21 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Di Wu (Gerrit)

    unread,
    12:06 AM (10 hours ago) 12:06 AM
    to Code Review Nudger, Hidehiko Abe, Kyle Horimoto, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ffred...@chromium.org, oshima...@chromium.org, tluk+...@chromium.org

    Di Wu abandoned this change

    Related details

    Attention set is empty
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: abandon
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Iddd14d5b5d642f4b8751513d7b4110d46ed49102
      Gerrit-Change-Number: 6256260
      Gerrit-PatchSet: 1
      Gerrit-Owner: Di Wu <di...@google.com>
      Gerrit-Reviewer: Di Wu <di...@google.com>
      Gerrit-Reviewer: Hidehiko Abe <hide...@chromium.org>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy
      Reply all
      Reply to author
      Forward
      0 new messages