Skip to content

Commit

Permalink
Migrate non-default ScopedObservation<> instantiations to
Browse files Browse the repository at this point in the history
ScopedObservationTraits<> in chrome/browser/ash

This CL converts all 4-parameter instantiations of ScopedObservation<>
to 2-parameter ones, defines the corresponding ScopedObservationTraits<>
and forward-declares things wherever possible.

Bug: 1380837
Change-Id: Ib645de8cad940ec101543c02171a6ccf3df92b83
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4016673
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Owners-Override: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: Andrew Rayskiy <greengrape@google.com>
Cr-Commit-Position: refs/heads/main@{#1069753}
  • Loading branch information
Andrew Rayskiy authored and Chromium LUCI CQ committed Nov 10, 2022
1 parent 3f8d825 commit 1648ac3
Show file tree
Hide file tree
Showing 27 changed files with 224 additions and 99 deletions.
Expand Up @@ -7,6 +7,7 @@
#include "ash/shell.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
#include "ui/events/event_source.h"

namespace arc {

Expand Down
18 changes: 9 additions & 9 deletions chrome/browser/ash/arc/input_overlay/key_event_source_rewriter.h
Expand Up @@ -8,16 +8,19 @@
#include "base/memory/raw_ptr.h"
#include "base/scoped_observation.h"
#include "ui/events/event_rewriter.h"
#include "ui/events/event_source.h"

namespace aura {
class Window;
} // namespace aura

namespace ui {
class EventSource;
} // namespace ui

namespace arc {
// KeyEventSourceRewriter forwards the key event from primary root window to the
// extended root window event source when the input-overlay enabled window is on
// the extended display.
// KeyEventSourceRewriter forwards the key event from primary root window to
// the extended root window event source when the input-overlay enabled window
// is on the extended display.
class KeyEventSourceRewriter : public ui::EventRewriter {
public:
explicit KeyEventSourceRewriter(aura::Window* top_level_window);
Expand All @@ -31,11 +34,8 @@ class KeyEventSourceRewriter : public ui::EventRewriter {
const Continuation continuation) override;

private:
base::ScopedObservation<ui::EventSource,
ui::EventRewriter,
&ui::EventSource::AddEventRewriter,
&ui::EventSource::RemoveEventRewriter>
observation_{this};
base::ScopedObservation<ui::EventSource, ui::EventRewriter> observation_{
this};

raw_ptr<aura::Window> top_level_window_;
};
Expand Down
1 change: 1 addition & 0 deletions chrome/browser/ash/arc/input_overlay/touch_injector.cc
Expand Up @@ -22,6 +22,7 @@
#include "ui/display/screen.h"
#include "ui/events/base_event_utils.h"
#include "ui/events/event_constants.h"
#include "ui/events/event_source.h"
#include "ui/views/controls/label.h"
#include "ui/views/widget/widget.h"
#include "ui/views/window/non_client_view.h"
Expand Down
12 changes: 6 additions & 6 deletions chrome/browser/ash/arc/input_overlay/touch_injector.h
Expand Up @@ -15,13 +15,16 @@
#include "chrome/browser/ash/arc/input_overlay/constants.h"
#include "chrome/browser/ash/arc/input_overlay/display_overlay_controller.h"
#include "ui/events/event_rewriter.h"
#include "ui/events/event_source.h"
#include "ui/gfx/geometry/rect_f.h"

namespace aura {
class Window;
} // namespace aura

namespace ui {
class EventSource;
} // namespace ui

namespace arc {
class ArcInputOverlayManagerTest;
namespace input_overlay {
Expand Down Expand Up @@ -250,11 +253,8 @@ class TouchInjector : public ui::EventRewriter {
gfx::RectF content_bounds_;
base::WeakPtr<ui::EventRewriterContinuation> continuation_;
std::vector<std::unique_ptr<Action>> actions_;
base::ScopedObservation<ui::EventSource,
ui::EventRewriter,
&ui::EventSource::AddEventRewriter,
&ui::EventSource::RemoveEventRewriter>
observation_{this};
base::ScopedObservation<ui::EventSource, ui::EventRewriter> observation_{
this};
std::unique_ptr<KeyCommand> mouse_lock_;
std::unique_ptr<gfx::Transform> rotation_transform_;
bool text_input_active_ = false;
Expand Down
24 changes: 20 additions & 4 deletions chrome/browser/ash/camera/camera_general_survey_handler.h
Expand Up @@ -10,6 +10,7 @@
#include "base/containers/flat_set.h"
#include "base/memory/weak_ptr.h"
#include "base/scoped_observation.h"
#include "base/scoped_observation_traits.h"
#include "base/timer/timer.h"
#include "media/capture/video/chromeos/camera_hal_dispatcher_impl.h"
#include "media/capture/video/chromeos/mojom/cros_camera_service.mojom.h"
Expand Down Expand Up @@ -78,13 +79,28 @@ class CameraGeneralSurveyHandler : public media::CameraActiveClientObserver {
const bool is_enabled_;
const std::unique_ptr<Delegate> delegate_;
bool has_triggered_ = false;
base::ScopedObservation<Delegate,
media::CameraActiveClientObserver,
&Delegate::AddActiveCameraClientObserver,
&Delegate::RemoveActiveCameraClientObserver>
base::ScopedObservation<Delegate, media::CameraActiveClientObserver>
camera_observer_{this};
base::WeakPtrFactory<CameraGeneralSurveyHandler> weak_ptr_factory_{this};
};

} // namespace ash

namespace base {

template <>
struct ScopedObservationTraits<ash::CameraGeneralSurveyHandler::Delegate,
media::CameraActiveClientObserver> {
static void AddObserver(ash::CameraGeneralSurveyHandler::Delegate* source,
media::CameraActiveClientObserver* observer) {
source->AddActiveCameraClientObserver(observer);
}
static void RemoveObserver(ash::CameraGeneralSurveyHandler::Delegate* source,
media::CameraActiveClientObserver* observer) {
source->RemoveActiveCameraClientObserver(observer);
}
};

} // namespace base

#endif // CHROME_BROWSER_ASH_CAMERA_CAMERA_GENERAL_SURVEY_HANDLER_H_
Expand Up @@ -11,12 +11,12 @@
#include "chrome/browser/ash/cert_provisioning/cert_provisioning_common.h"
#include "chrome/browser/invalidation/profile_invalidation_provider_factory.h"
#include "components/invalidation/impl/profile_invalidation_provider.h"
#include "components/invalidation/public/invalidation_service.h"
#include "components/invalidation/public/invalidator_state.h"
#include "components/invalidation/public/topic_invalidation_map.h"
#include "components/policy/core/common/cloud/cloud_policy_constants.h"

namespace ash {
namespace cert_provisioning {
namespace ash::cert_provisioning {

namespace {

Expand Down Expand Up @@ -271,5 +271,4 @@ void CertProvisioningDeviceInvalidator::OnInvalidationServiceSet(
}
}

} // namespace cert_provisioning
} // namespace ash
} // namespace ash::cert_provisioning
Expand Up @@ -12,13 +12,15 @@
#include "base/sequence_checker.h"
#include "chrome/browser/ash/policy/invalidation/affiliated_invalidation_service_provider.h"
#include "components/invalidation/public/invalidation_handler.h"
#include "components/invalidation/public/invalidation_service.h"
#include "components/invalidation/public/invalidation_util.h"

class Profile;

namespace ash {
namespace cert_provisioning {
namespace invalidation {
class InvalidationService;
} // namespace invalidation

namespace ash::cert_provisioning {

enum class CertScope;

Expand Down Expand Up @@ -103,11 +105,8 @@ class CertProvisioningInvalidationHandler
// Automatically unregisters `this` as an observer on destruction. Should be
// destroyed first so the other fields are still valid and can be used during
// the unregistration.
base::ScopedObservation<
invalidation::InvalidationService,
invalidation::InvalidationHandler,
&invalidation::InvalidationService::RegisterInvalidationHandler,
&invalidation::InvalidationService::UnregisterInvalidationHandler>
base::ScopedObservation<invalidation::InvalidationService,
invalidation::InvalidationHandler>
invalidation_service_observation_{this};
};

Expand Down Expand Up @@ -218,7 +217,6 @@ class CertProvisioningDeviceInvalidator
policy::AffiliatedInvalidationServiceProvider* service_provider_ = nullptr;
};

} // namespace cert_provisioning
} // namespace ash
} // namespace ash::cert_provisioning

#endif // CHROME_BROWSER_ASH_CERT_PROVISIONING_CERT_PROVISIONING_INVALIDATOR_H_
21 changes: 20 additions & 1 deletion chrome/browser/ash/crosapi/login_ash.h
Expand Up @@ -10,7 +10,7 @@
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
#include "base/observer_list_types.h"
#include "base/scoped_observation.h"
#include "base/scoped_observation_traits.h"
#include "chromeos/crosapi/mojom/login.mojom.h"
#include "components/user_manager/user_type.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
Expand Down Expand Up @@ -165,4 +165,23 @@ class LoginAsh : public mojom::Login {

} // namespace crosapi

namespace base {

template <>
struct ScopedObservationTraits<crosapi::LoginAsh,
crosapi::LoginAsh::ExternalLogoutDoneObserver> {
static void AddObserver(
crosapi::LoginAsh* source,
crosapi::LoginAsh::ExternalLogoutDoneObserver* observer) {
source->AddExternalLogoutDoneObserver(observer);
}
static void RemoveObserver(
crosapi::LoginAsh* source,
crosapi::LoginAsh::ExternalLogoutDoneObserver* observer) {
source->RemoveExternalLogoutDoneObserver(observer);
}
};

} // namespace base

#endif // CHROME_BROWSER_ASH_CROSAPI_LOGIN_ASH_H_
5 changes: 1 addition & 4 deletions chrome/browser/ash/crostini/crostini_manager.cc
Expand Up @@ -352,10 +352,7 @@ class CrostiniManager::CrostiniRestarter
base::ScopedObservation<chromeos::SchedulerConfigurationManagerBase,
chromeos::SchedulerConfigurationManagerBase::Observer>
scheduler_configuration_manager_observation_{this};
base::ScopedObservation<CrostiniManager,
ash::VmShutdownObserver,
&CrostiniManager::AddVmShutdownObserver,
&CrostiniManager::RemoveVmShutdownObserver>
base::ScopedObservation<CrostiniManager, ash::VmShutdownObserver>
vm_shutdown_observation_{this};

base::WeakPtrFactory<CrostiniRestarter> weak_ptr_factory_{this};
Expand Down
31 changes: 31 additions & 0 deletions chrome/browser/ash/crostini/crostini_manager.h
Expand Up @@ -16,6 +16,7 @@
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
#include "base/scoped_observation.h"
#include "base/scoped_observation_traits.h"
#include "base/time/time.h"
#include "base/unguessable_token.h"
#include "chrome/browser/ash/crostini/crostini_low_disk_notification.h"
Expand Down Expand Up @@ -977,4 +978,34 @@ class CrostiniManager : public KeyedService,

} // namespace crostini

namespace base {

template <>
struct ScopedObservationTraits<crostini::CrostiniManager,
crostini::ContainerShutdownObserver> {
static void AddObserver(crostini::CrostiniManager* source,
crostini::ContainerShutdownObserver* observer) {
source->AddContainerShutdownObserver(observer);
}
static void RemoveObserver(crostini::CrostiniManager* source,
crostini::ContainerShutdownObserver* observer) {
source->RemoveContainerShutdownObserver(observer);
}
};

template <>
struct ScopedObservationTraits<crostini::CrostiniManager,
ash::VmShutdownObserver> {
static void AddObserver(crostini::CrostiniManager* source,
ash::VmShutdownObserver* observer) {
source->AddVmShutdownObserver(observer);
}
static void RemoveObserver(crostini::CrostiniManager* source,
ash::VmShutdownObserver* observer) {
source->RemoveVmShutdownObserver(observer);
}
};

} // namespace base

#endif // CHROME_BROWSER_ASH_CROSTINI_CROSTINI_MANAGER_H_
1 change: 0 additions & 1 deletion chrome/browser/ash/crostini/crostini_mount_provider.cc
Expand Up @@ -7,7 +7,6 @@
#include <memory>

#include "base/bind.h"
#include "chrome/browser/ash/crostini/crostini_manager.h"
#include "chrome/browser/ash/crostini/crostini_util.h"
#include "chrome/browser/ash/guest_os/guest_os_session_tracker.h"
#include "chrome/browser/ash/guest_os/public/types.h"
Expand Down
8 changes: 3 additions & 5 deletions chrome/browser/ash/crostini/crostini_mount_provider.h
Expand Up @@ -7,13 +7,14 @@

#include "base/callback_list.h"
#include "base/memory/weak_ptr.h"
#include "base/scoped_observation.h"
#include "chrome/browser/ash/crostini/crostini_manager.h"
#include "chrome/browser/ash/crostini/crostini_simple_types.h"
#include "chrome/browser/ash/guest_os/public/guest_os_mount_provider.h"

namespace guest_os {
class GuestOsFileWatcher;
}
} // namespace guest_os

namespace crostini {

Expand Down Expand Up @@ -51,10 +52,7 @@ class CrostiniMountProvider : public guest_os::GuestOsMountProvider,

Profile* profile_;
guest_os::GuestId container_id_;
base::ScopedObservation<CrostiniManager,
ContainerShutdownObserver,
&CrostiniManager::AddContainerShutdownObserver,
&CrostiniManager::RemoveContainerShutdownObserver>
base::ScopedObservation<CrostiniManager, ContainerShutdownObserver>
container_shutdown_observer_{this};
base::CallbackListSubscription subscription_;

Expand Down
5 changes: 1 addition & 4 deletions chrome/browser/ash/crostini/crostini_sshfs.h
Expand Up @@ -108,10 +108,7 @@ class CrostiniSshfs : ContainerShutdownObserver {
};
Profile* profile_;

base::ScopedObservation<CrostiniManager,
ContainerShutdownObserver,
&CrostiniManager::AddContainerShutdownObserver,
&CrostiniManager::RemoveContainerShutdownObserver>
base::ScopedObservation<CrostiniManager, ContainerShutdownObserver>
container_shutdown_observer_{this};

std::unique_ptr<InProgressMount> in_progress_mount_;
Expand Down
Expand Up @@ -17,6 +17,7 @@
#include "chromeos/ash/components/login/session/session_termination_manager.h"
#include "chromeos/dbus/power/fake_power_manager_client.h"
#include "components/reporting/client/mock_report_queue.h"
#include "components/session_manager/core/session_manager.h"
#include "components/user_manager/scoped_user_manager.h"
#include "components/user_manager/user_names.h"
#include "content/public/test/browser_task_environment.h"
Expand Down
18 changes: 18 additions & 0 deletions chrome/browser/ash/login/session/user_session_manager.h
Expand Up @@ -20,6 +20,7 @@
#include "base/memory/singleton.h"
#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
#include "base/scoped_observation_traits.h"
#include "base/time/time.h"
#include "chrome/browser/ash/base/locale_util.h"
#include "chrome/browser/ash/child_accounts/child_policy_observer.h"
Expand Down Expand Up @@ -679,4 +680,21 @@ using ::ash::UserSessionManagerDelegate;
using ::ash::UserSessionStateObserver;
} // namespace chromeos

namespace base {

template <>
struct ScopedObservationTraits<ash::UserSessionManager,
ash::UserAuthenticatorObserver> {
static void AddObserver(ash::UserSessionManager* source,
ash::UserAuthenticatorObserver* observer) {
source->AddUserAuthenticatorObserver(observer);
}
static void RemoveObserver(ash::UserSessionManager* source,
ash::UserAuthenticatorObserver* observer) {
source->RemoveUserAuthenticatorObserver(observer);
}
};

} // namespace base

#endif // CHROME_BROWSER_ASH_LOGIN_SESSION_USER_SESSION_MANAGER_H_
2 changes: 1 addition & 1 deletion chrome/browser/ash/login/ui/login_display_host_mojo.h
Expand Up @@ -43,7 +43,7 @@ class WizardController;
// A LoginDisplayHost instance that sends requests to the views-based signin
// screen.
class LoginDisplayHostMojo : public LoginDisplayHostCommon,
public LoginScreenClientImpl::Delegate,
public ::LoginScreenClientImpl::Delegate,
public AuthStatusConsumer,
public OobeUI::Observer,
public views::ViewObserver,
Expand Down

0 comments on commit 1648ac3

Please sign in to comment.